mev-4.0.01/source/org/tigr/remote/protocol/serializer/MAGESerializer.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: MAGESerializer.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 15:35:13 $
2 26 Feb 07 jari 9  * $Author: braistedj $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.remote.protocol.serializer;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.io.PrintStream;
2 26 Feb 07 jari 15 import java.util.Iterator;
2 26 Feb 07 jari 16 import java.util.Map;
2 26 Feb 07 jari 17
2 26 Feb 07 jari 18 import org.tigr.microarray.mev.cluster.Cluster;
2 26 Feb 07 jari 19 import org.tigr.microarray.mev.cluster.algorithm.AlgorithmData;
2 26 Feb 07 jari 20 import org.tigr.microarray.mev.cluster.algorithm.AlgorithmParameters;
2 26 Feb 07 jari 21 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 22
2 26 Feb 07 jari 23 class MAGESerializer {
2 26 Feb 07 jari 24
2 26 Feb 07 jari 25     private final static int BREAK_AFTER = 10*1024;
2 26 Feb 07 jari 26
2 26 Feb 07 jari 27     /**
2 26 Feb 07 jari 28      * Constructs a <code>MAGESerializer</code> with specified print stream.
2 26 Feb 07 jari 29      */
2 26 Feb 07 jari 30     public MAGESerializer( PrintStream out  ) {
2 26 Feb 07 jari 31         m_out = out;
2 26 Feb 07 jari 32     }
2 26 Feb 07 jari 33
2 26 Feb 07 jari 34     /**
2 26 Feb 07 jari 35      * Serialize an <code>AlgorithmData</code> into MAGE format.
2 26 Feb 07 jari 36      */
2 26 Feb 07 jari 37     public void serialize( AlgorithmData data ) {
2 26 Feb 07 jari 38         m_out.println( "<MAGE-ML identifier = \"TIGR:Clustering Request\">");
2 26 Feb 07 jari 39         m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 40
2 26 Feb 07 jari 41         if (( data.getMatrixes().size()   > 0 ) ||
2 26 Feb 07 jari 42             ( data.getProperties().size() > 0 )) {
2 26 Feb 07 jari 43             // MATRIXES START here
2 26 Feb 07 jari 44             m_out.println("<BioAssayData_package>");
2 26 Feb 07 jari 45             m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 46             m_out.println("<BioAssayData_assnlist>");
2 26 Feb 07 jari 47             m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 48
2 26 Feb 07 jari 49             for (Iterator iter = data.getMatrixes().entrySet().iterator(); iter.hasNext();) {
2 26 Feb 07 jari 50                 serializeMatrix( (Map.Entry)iter.next()  );
2 26 Feb 07 jari 51             }
2 26 Feb 07 jari 52
2 26 Feb 07 jari 53             serializeParams( data.getParams() );
2 26 Feb 07 jari 54
2 26 Feb 07 jari 55             m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 56             m_out.println("</BioAssayData_assnlist>");
2 26 Feb 07 jari 57             m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 58             m_out.println("</BioAssayData_package>");
2 26 Feb 07 jari 59             m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 60             m_out.println("</MAGE-ML>");
2 26 Feb 07 jari 61             // MATRIXES END here
2 26 Feb 07 jari 62         }
2 26 Feb 07 jari 63     }
2 26 Feb 07 jari 64
2 26 Feb 07 jari 65     /**
2 26 Feb 07 jari 66      * Serialize matrix of a microarray values.
2 26 Feb 07 jari 67      */
2 26 Feb 07 jari 68     private void serializeMatrix( Map.Entry  s ) {
2 26 Feb 07 jari 69         FloatMatrix mtx = (FloatMatrix)s.getValue();
2 26 Feb 07 jari 70         String name     =  Util.escape( (String)s.getKey() );
2 26 Feb 07 jari 71
2 26 Feb 07 jari 72         m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 73
2 26 Feb 07 jari 74         m_out.println("<DerivedBioAssayData identifier =\"" + name + "\" >");
2 26 Feb 07 jari 75         m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 76         m_out.println("<BioDataValues_assn>");
2 26 Feb 07 jari 77         m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 78         m_out.println("<BioDataCube>");
2 26 Feb 07 jari 79         m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 80         m_out.println("<PropertySets_assnlist>");
2 26 Feb 07 jari 81         m_ind.inc(); m_ind.print( m_out );
2 26 Feb 07 jari 82
2 26 Feb 07 jari 83         m_out.println("<NameValueType name=\"cols\" value=\"" + mtx.getColumnDimension() + "\" />" );
2 26 Feb 07 jari 84         m_ind.print( m_out );
2 26 Feb 07 jari 85
2 26 Feb 07 jari 86         m_out.println("<NameValueType name=\"rows\" value=\"" + mtx.getRowDimension() + "\" />" );
2 26 Feb 07 jari 87         m_ind.print( m_out );
2 26 Feb 07 jari 88
2 26 Feb 07 jari 89         m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 90         m_out.println("</PropertySets_assnlist>");
2 26 Feb 07 jari 91         m_out.println(
2 26 Feb 07 jari 92                      "         <BioAssayDimension_assnref> \n" +
2 26 Feb 07 jari 93                      "              <BioAssayDimension_ref identifier=\"UNDEFINED\"/> \n" +
2 26 Feb 07 jari 94                      "          </BioAssayDimension_assnref> \n" +
2 26 Feb 07 jari 95                      "          <DesignElementDimension_assnref> \n" +
2 26 Feb 07 jari 96                      "            <DesignElementDimension_ref identifier=\"UNDEFINED\"/> \n" +
2 26 Feb 07 jari 97                      "          </DesignElementDimension_assnref> \n" +
2 26 Feb 07 jari 98                      "          <QuantitationTypeDimension_assnref> \n" +
2 26 Feb 07 jari 99                      "             <QuantitationTypeDimension_ref identifier=\"UNDEFINED\"/> \n" +
2 26 Feb 07 jari 100                      "          </QuantitationTypeDimension_assnref> \n" +
2 26 Feb 07 jari 101                      "          <DataInternal_assn> \n" +
2 26 Feb 07 jari 102                      "             <DataInternal>");
2 26 Feb 07 jari 103
2 26 Feb 07 jari 104         float[][] arr = mtx.getArray();
2 26 Feb 07 jari 105
2 26 Feb 07 jari 106         int maxCols = mtx.getColumnDimension();
2 26 Feb 07 jari 107         int maxRows = mtx.getRowDimension();
2 26 Feb 07 jari 108         int br = 0;
2 26 Feb 07 jari 109         float toPrint;
2 26 Feb 07 jari 110
2 26 Feb 07 jari 111         for (int j = 0; j < maxRows; j++) {
2 26 Feb 07 jari 112             for (int i = 0; i < maxCols; i ++) {
2 26 Feb 07 jari 113                 toPrint = arr[j][i];
2 26 Feb 07 jari 114                 if (Float.isNaN( toPrint  ))
2 26 Feb 07 jari 115                     m_out.print("NaN ");
2 26 Feb 07 jari 116                 else {
2 26 Feb 07 jari 117                     m_out.print( toPrint ); m_out.print(' ');
2 26 Feb 07 jari 118                 }
2 26 Feb 07 jari 119                 br++;
2 26 Feb 07 jari 120                 if (br == BREAK_AFTER) {
2 26 Feb 07 jari 121                     br = 0;
2 26 Feb 07 jari 122                     m_out.print("\r\n<?break?>\r\n");
2 26 Feb 07 jari 123                 }
2 26 Feb 07 jari 124             }
2 26 Feb 07 jari 125         }
2 26 Feb 07 jari 126
2 26 Feb 07 jari 127         m_out.println(
2 26 Feb 07 jari 128                      "             </DataInternal> \n" +
2 26 Feb 07 jari 129                      "          </DataInternal_assn>"
2 26 Feb 07 jari 130                      );
2 26 Feb 07 jari 131         m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 132         m_out.println("</BioDataCube>");
2 26 Feb 07 jari 133         m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 134         m_out.println("</BioDataValues_assn>");
2 26 Feb 07 jari 135         m_ind.dec(); m_ind.print( m_out );
2 26 Feb 07 jari 136         m_out.println("</DerivedBioAssayData>");
2 26 Feb 07 jari 137     }
2 26 Feb 07 jari 138
2 26 Feb 07 jari 139     /**
2 26 Feb 07 jari 140      * Serialize an algorithm parameters.
2 26 Feb 07 jari 141      */
2 26 Feb 07 jari 142     private void serializeParams( AlgorithmParameters params ) {
2 26 Feb 07 jari 143         m_ind.print( m_out );
2 26 Feb 07 jari 144         m_out.println("<DerivedBioAssayData identifier=\"parameters\">");
2 26 Feb 07 jari 145         m_ind.print( m_out );
2 26 Feb 07 jari 146         m_out.println("   <PropertySets_assnlist>");
2 26 Feb 07 jari 147         m_ind.print( m_out );
2 26 Feb 07 jari 148         for (Iterator iter = params.entrySet().iterator(); iter.hasNext();) {
2 26 Feb 07 jari 149             Map.Entry entry = (Map.Entry)iter.next();
2 26 Feb 07 jari 150             String name  = Util.escape(  (String)entry.getKey()  );
2 26 Feb 07 jari 151             String value = Util.escape(  (String)entry.getValue()  );
2 26 Feb 07 jari 152
2 26 Feb 07 jari 153             m_ind.print( m_out );
2 26 Feb 07 jari 154             m_out.println("        <NameValueType name=\"" + name + "\" value=\"" + value + "\" />");
2 26 Feb 07 jari 155         }
2 26 Feb 07 jari 156         m_ind.print( m_out );
2 26 Feb 07 jari 157         m_out.println("   </PropertySets_assnlist>");
2 26 Feb 07 jari 158         m_ind.print( m_out );
2 26 Feb 07 jari 159         m_out.println("</DerivedBioAssayData>");
2 26 Feb 07 jari 160     }
2 26 Feb 07 jari 161
2 26 Feb 07 jari 162     // Not implemented since we are not going to pass clusters to a server
2 26 Feb 07 jari 163     private void serializeCluster( Cluster s ) {}
2 26 Feb 07 jari 164
2 26 Feb 07 jari 165     private PrintStream m_out;
2 26 Feb 07 jari 166     private XMLIndent m_ind = new XMLIndent();
2 26 Feb 07 jari 167 }
2 26 Feb 07 jari 168
2 26 Feb 07 jari 169