mev-4.0.01/source/org/tigr/microarray/mev/persistence/PersistenceObjectFactory.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1
2 26 Feb 07 jari 2 package org.tigr.microarray.mev.persistence;
2 26 Feb 07 jari 3
2 26 Feb 07 jari 4 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 5 import java.io.*;
2 26 Feb 07 jari 6 import java.util.Hashtable;
2 26 Feb 07 jari 7 import java.util.Vector;
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9 import javax.imageio.ImageIO;
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 import org.tigr.microarray.mev.AffySlideDataElement;
2 26 Feb 07 jari 12 import org.tigr.microarray.mev.CGHSlideDataElement;
2 26 Feb 07 jari 13 import org.tigr.microarray.mev.FloatSlideData;
2 26 Feb 07 jari 14 import org.tigr.microarray.mev.ISlideData;
2 26 Feb 07 jari 15 import org.tigr.microarray.mev.ISlideDataElement;
2 26 Feb 07 jari 16 import org.tigr.microarray.mev.ISlideMetaData;
2 26 Feb 07 jari 17 import org.tigr.microarray.mev.MultipleArrayViewer;
2 26 Feb 07 jari 18 import org.tigr.microarray.mev.SlideData;
2 26 Feb 07 jari 19 import org.tigr.microarray.mev.SlideDataElement;
2 26 Feb 07 jari 20 import org.tigr.microarray.mev.SpotInformationData;
2 26 Feb 07 jari 21 import org.tigr.microarray.mev.cluster.gui.IData;
2 26 Feb 07 jari 22 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 23
2 26 Feb 07 jari 24 /**
2 26 Feb 07 jari 25  * Writes FloatMatrix objects out to binary files and reads from those files to re-created
2 26 Feb 07 jari 26  * the saved FloatMatrix.  
2 26 Feb 07 jari 27  * 
2 26 Feb 07 jari 28  * @author eleanora
2 26 Feb 07 jari 29  *
2 26 Feb 07 jari 30  */
2 26 Feb 07 jari 31 public class PersistenceObjectFactory {
2 26 Feb 07 jari 32
2 26 Feb 07 jari 33   /**
2 26 Feb 07 jari 34    * Reads a binary file written by writeMatrix(File outputFile, FloatMatrix fm) and
2 26 Feb 07 jari 35    * returns a FloatMatrix object created from the data in outputFile.  
2 26 Feb 07 jari 36    * 
2 26 Feb 07 jari 37    * @param inputFile The name of the file to be read from. Assumed to be found in the System
2 26 Feb 07 jari 38    *   temp directory in a folder named by MultipleArrayViewer.CURRENT_TEMP_DIR
2 26 Feb 07 jari 39    * @return a new FloatMatrix containing the data from inputFile
2 26 Feb 07 jari 40    * @throws IOException
2 26 Feb 07 jari 41    */
2 26 Feb 07 jari 42   public static FloatMatrix readFloatMatrix(String inputFile) throws IOException{
2 26 Feb 07 jari 43       //get location of tempfiles for this sytem, append directory name for temp unzipping directory
2 26 Feb 07 jari 44       //use this as the path for inputFile
2 26 Feb 07 jari 45     String javaTempDir = System.getProperty("java.io.tmpdir");
2 26 Feb 07 jari 46     if(!javaTempDir.endsWith(System.getProperty("file.separator")))
2 26 Feb 07 jari 47       javaTempDir = javaTempDir + System.getProperty("file.separator");
2 26 Feb 07 jari 48     File binFile = new File(javaTempDir + MultipleArrayViewer.CURRENT_TEMP_DIR + System.getProperty("file.separator") + inputFile);
2 26 Feb 07 jari 49     FloatMatrix fm = new FloatMatrix(readMatrix(binFile));
2 26 Feb 07 jari 50     return fm;
2 26 Feb 07 jari 51   }
2 26 Feb 07 jari 52   
2 26 Feb 07 jari 53   /**
2 26 Feb 07 jari 54    * Writes a FloatMatrix out to a binary file specified by the name outputFile.  
2 26 Feb 07 jari 55    * @param outputFile This file is assumed to be located in the System temp directory
2 26 Feb 07 jari 56    *   in the folder MultipleArrayViewer.CURRENT_TEMP_DIR
2 26 Feb 07 jari 57    * @param fm the FloatMatrix to be written to file
2 26 Feb 07 jari 58    * @throws IOException
2 26 Feb 07 jari 59    */
2 26 Feb 07 jari 60     public static void writeMatrix(File outputFile, FloatMatrix fm) throws IOException {
2 26 Feb 07 jari 61         
2 26 Feb 07 jari 62         DataOutputStream dos = new DataOutputStream(new FileOutputStream(outputFile));
2 26 Feb 07 jari 63         
2 26 Feb 07 jari 64     int numRows = fm.getRowDimension();
2 26 Feb 07 jari 65     int numCols = fm.getColumnDimension();
2 26 Feb 07 jari 66     
2 26 Feb 07 jari 67     dos.writeInt(numRows);
2 26 Feb 07 jari 68     dos.writeInt(numCols);
2 26 Feb 07 jari 69     for(int i=0; i<numRows; i++){
2 26 Feb 07 jari 70       for(int j=0; j<numCols; j++){
2 26 Feb 07 jari 71         dos.writeFloat(fm.A[i][j]);
2 26 Feb 07 jari 72       }
2 26 Feb 07 jari 73     }
2 26 Feb 07 jari 74     dos.close();
2 26 Feb 07 jari 75     }
2 26 Feb 07 jari 76     
2 26 Feb 07 jari 77
2 26 Feb 07 jari 78     private static float[][] readMatrix(File binFile) throws IOException{
2 26 Feb 07 jari 79
2 26 Feb 07 jari 80       DataInputStream dis = new DataInputStream(new FileInputStream(binFile));
2 26 Feb 07 jari 81         
2 26 Feb 07 jari 82     int id, numRows, numCols;
2 26 Feb 07 jari 83     float[][] matrix;
2 26 Feb 07 jari 84     numRows = dis.readInt();
2 26 Feb 07 jari 85     numCols = dis.readInt();
2 26 Feb 07 jari 86     matrix = new float[numRows][numCols];
2 26 Feb 07 jari 87     for(int i=0; i<numRows; i++){
2 26 Feb 07 jari 88       for(int j=0; j<numCols; j++){
2 26 Feb 07 jari 89         matrix[i][j] = dis.readFloat();
2 26 Feb 07 jari 90       }
2 26 Feb 07 jari 91     }      
2 26 Feb 07 jari 92     dis.close();
2 26 Feb 07 jari 93       return matrix;
2 26 Feb 07 jari 94     }
2 26 Feb 07 jari 95
2 26 Feb 07 jari 96     public static FloatSlideData makeFloatSlideData(Vector sampleLabelKeys, Hashtable sampleLabels, 
2 26 Feb 07 jari 97         String filename, String name, Boolean isNonZero,
2 26 Feb 07 jari 98       Integer normalizedState, Integer sortState, SpotInformationData spotInfoData, 
2 26 Feb 07 jari 99       Integer dataType, ISlideMetaData ismd, String intensityFileName) throws IOException {
2 26 Feb 07 jari 100       FloatSlideData fsd;
2 26 Feb 07 jari 101       fsd = new FloatSlideData(sampleLabelKeys, sampleLabels, 
2 26 Feb 07 jari 102           filename, name, isNonZero.booleanValue(), 
2 26 Feb 07 jari 103         normalizedState.intValue(), sortState.intValue(), spotInfoData, 
2 26 Feb 07 jari 104         dataType, ismd);
2 26 Feb 07 jari 105
2 26 Feb 07 jari 106     String javaTempDir = System.getProperty("java.io.tmpdir");
2 26 Feb 07 jari 107     if(!javaTempDir.endsWith(System.getProperty("file.separator")))
2 26 Feb 07 jari 108       javaTempDir = javaTempDir + System.getProperty("file.separator");
2 26 Feb 07 jari 109       String filePath = javaTempDir + MultipleArrayViewer.CURRENT_TEMP_DIR + System.getProperty("file.separator") + intensityFileName;
2 26 Feb 07 jari 110 //      System.out.println("read FloatSlideData from " + filePath);
2 26 Feb 07 jari 111       DataInputStream dis = new DataInputStream(new FileInputStream(filePath));
2 26 Feb 07 jari 112       
2 26 Feb 07 jari 113       float[] currentCY3 = new float[dis.readInt()];
2 26 Feb 07 jari 114       for(int i=0; i<currentCY3.length; i++){
2 26 Feb 07 jari 115         currentCY3[i] = dis.readFloat();
2 26 Feb 07 jari 116       }
2 26 Feb 07 jari 117       fsd.setCurrentCY3(currentCY3);
2 26 Feb 07 jari 118       float[] currentCY5 = new float[dis.readInt()];
2 26 Feb 07 jari 119       for(int i=0; i<currentCY5.length; i++){
2 26 Feb 07 jari 120         currentCY5[i] = dis.readFloat();
2 26 Feb 07 jari 121       }
2 26 Feb 07 jari 122       fsd.setCurrentCY5(currentCY5);
2 26 Feb 07 jari 123       float[] trueCY3 = new float[dis.readInt()];
2 26 Feb 07 jari 124       for(int i=0; i<trueCY3.length; i++){
2 26 Feb 07 jari 125         trueCY3[i] = dis.readFloat();
2 26 Feb 07 jari 126       }
2 26 Feb 07 jari 127       fsd.setTrueCY3(trueCY3);
2 26 Feb 07 jari 128       float[] trueCY5 = new float[dis.readInt()];
2 26 Feb 07 jari 129       for(int i=0; i<trueCY5.length; i++){
2 26 Feb 07 jari 130         trueCY5[i] = dis.readFloat();
2 26 Feb 07 jari 131       }
2 26 Feb 07 jari 132       fsd.setTrueCY5(trueCY5);
2 26 Feb 07 jari 133       char[] detection = new char[dis.readInt()];
2 26 Feb 07 jari 134       for(int i=0; i<detection.length; i++){
2 26 Feb 07 jari 135         detection[i] = dis.readChar();
2 26 Feb 07 jari 136       }
2 26 Feb 07 jari 137       fsd.setDetection(detection);
2 26 Feb 07 jari 138       
2 26 Feb 07 jari 139       float[] pvalues = new float[dis.readInt()];
2 26 Feb 07 jari 140       for(int i=0; i<pvalues.length; i++){
2 26 Feb 07 jari 141         pvalues[i] = dis.readFloat();
2 26 Feb 07 jari 142       }
2 26 Feb 07 jari 143       fsd.setPvalues(pvalues);
2 26 Feb 07 jari 144       
2 26 Feb 07 jari 145       int[] flags = new int[dis.readInt()];
2 26 Feb 07 jari 146       for(int i=0; i<flags.length; i++){
2 26 Feb 07 jari 147         flags[i] = dis.readInt();
2 26 Feb 07 jari 148       }
2 26 Feb 07 jari 149       fsd.setGenePixFlags(flags);
2 26 Feb 07 jari 150       
2 26 Feb 07 jari 151       dis.close();
2 26 Feb 07 jari 152       return fsd;
2 26 Feb 07 jari 153     }
2 26 Feb 07 jari 154
2 26 Feb 07 jari 155     public static SlideData makeSlideData(String slideDataName, Vector sampleLabelKeys, String sampleLabelKey,
2 26 Feb 07 jari 156         Hashtable sampleLabels, String slideFileName, Boolean isNonZero, Integer rows, Integer columns,
2 26 Feb 07 jari 157       Integer normalizedState, Integer sortState, SpotInformationData spotInfoData, 
2 26 Feb 07 jari 158       String[] fieldNames, Integer dataType,
2 26 Feb 07 jari 159       String annotationFileName, String dataFile) throws IOException {
2 26 Feb 07 jari 160
2 26 Feb 07 jari 161     String javaTempDir = System.getProperty("java.io.tmpdir");
2 26 Feb 07 jari 162     if(!javaTempDir.endsWith(System.getProperty("file.separator")))
2 26 Feb 07 jari 163       javaTempDir = javaTempDir + System.getProperty("file.separator");
2 26 Feb 07 jari 164     
2 26 Feb 07 jari 165       SlideData aSlideData;
2 26 Feb 07 jari 166       aSlideData = new SlideData(slideDataName, sampleLabelKeys, sampleLabelKey,
2 26 Feb 07 jari 167             sampleLabels, slideFileName, isNonZero, rows, columns,
2 26 Feb 07 jari 168         normalizedState, sortState, spotInfoData, 
2 26 Feb 07 jari 169         fieldNames, dataType);
2 26 Feb 07 jari 170       
2 26 Feb 07 jari 171       //load annotation
2 26 Feb 07 jari 172       DataInputStream dis = new DataInputStream(new FileInputStream(javaTempDir + MultipleArrayViewer.CURRENT_TEMP_DIR + System.getProperty("file.separator") + annotationFileName));
2 26 Feb 07 jari 173       Vector allSlideDataElements = loadSlideDataAnnotation(dis, dataType.intValue());
2 26 Feb 07 jari 174       dis.close();
2 26 Feb 07 jari 175       
2 26 Feb 07 jari 176       //load intensities
2 26 Feb 07 jari 177       dis = new DataInputStream(new FileInputStream(javaTempDir + MultipleArrayViewer.CURRENT_TEMP_DIR + System.getProperty("file.separator") + dataFile));
2 26 Feb 07 jari 178       ISlideDataElement sde;
2 26 Feb 07 jari 179       int numSlideDataElements = dis.readInt();
2 26 Feb 07 jari 180       for(int i=0; i<numSlideDataElements; i++){
2 26 Feb 07 jari 181         sde = (ISlideDataElement)allSlideDataElements.get(i);
2 26 Feb 07 jari 182         sde.setIntensity(0, dis.readFloat());
2 26 Feb 07 jari 183         sde.setIntensity(1, dis.readFloat());
2 26 Feb 07 jari 184         sde.setTrueIntensity(0, dis.readFloat());
2 26 Feb 07 jari 185         sde.setTrueIntensity(1, dis.readFloat());
2 26 Feb 07 jari 186         if(dataType.intValue() != IData.DATA_TYPE_TWO_INTENSITY && dataType.intValue() != IData.DATA_TYPE_RATIO_ONLY){
2 26 Feb 07 jari 187             sde.setDetection(new Character(dis.readChar()).toString());
2 26 Feb 07 jari 188         }   
2 26 Feb 07 jari 189       }
2 26 Feb 07 jari 190       dis.close();
2 26 Feb 07 jari 191       
2 26 Feb 07 jari 192     aSlideData.setAllElements(allSlideDataElements);
2 26 Feb 07 jari 193       return aSlideData;
2 26 Feb 07 jari 194     }
2 26 Feb 07 jari 195     
2 26 Feb 07 jari 196     private static Vector loadSlideDataAnnotation(DataInputStream dis, int dataType) throws IOException {
2 26 Feb 07 jari 197       int numSlideDataElements = dis.readInt();
2 26 Feb 07 jari 198       Vector allSlideDataElements = new Vector(numSlideDataElements);
2 26 Feb 07 jari 199       boolean isCGHData = dis.readBoolean();
2 26 Feb 07 jari 200       
2 26 Feb 07 jari 201       int[] rows, cols;
2 26 Feb 07 jari 202       String[] extraFields;
2 26 Feb 07 jari 203       String uid;
2 26 Feb 07 jari 204       int temp;
2 26 Feb 07 jari 205       boolean isNull, isNonZero;
2 26 Feb 07 jari 206       for(int i=0; i<numSlideDataElements; i++){
2 26 Feb 07 jari 207
2 26 Feb 07 jari 208         temp = dis.readInt();
2 26 Feb 07 jari 209         char[] buff = new char[temp];
2 26 Feb 07 jari 210         for(int j=0; j<temp; j++) {
2 26 Feb 07 jari 211           buff[j] = dis.readChar();
2 26 Feb 07 jari 212         }
2 26 Feb 07 jari 213         uid = new String(buff);
2 26 Feb 07 jari 214
2 26 Feb 07 jari 215         rows = new int[dis.readInt()];
2 26 Feb 07 jari 216         for(int j=0; j<rows.length; j++){
2 26 Feb 07 jari 217           rows[j] = dis.readInt();
2 26 Feb 07 jari 218         }
2 26 Feb 07 jari 219     
2 26 Feb 07 jari 220         cols = new int[dis.readInt()];
2 26 Feb 07 jari 221         for(int j=0; j<cols.length; j++){
2 26 Feb 07 jari 222           cols[j] = dis.readInt();
2 26 Feb 07 jari 223         }
2 26 Feb 07 jari 224     
2 26 Feb 07 jari 225         extraFields = new String[dis.readInt()];
2 26 Feb 07 jari 226         for(int j=0; j<extraFields.length; j++){
2 26 Feb 07 jari 227           buff = new char[dis.readInt()];
2 26 Feb 07 jari 228             for(int k=0; k<buff.length; k++){
2 26 Feb 07 jari 229               buff[k] = dis.readChar();
2 26 Feb 07 jari 230             }
2 26 Feb 07 jari 231             extraFields[j] = new String(buff);
2 26 Feb 07 jari 232         }
2 26 Feb 07 jari 233       isNull = dis.readBoolean();
2 26 Feb 07 jari 234       isNonZero = dis.readBoolean();
2 26 Feb 07 jari 235       if(dataType == IData.DATA_TYPE_TWO_INTENSITY || dataType == IData.DATA_TYPE_RATIO_ONLY){
2 26 Feb 07 jari 236         if(isCGHData){
2 26 Feb 07 jari 237           allSlideDataElements.add(i, new CGHSlideDataElement(rows, cols, extraFields, uid, isNull, isNonZero));
2 26 Feb 07 jari 238         } else {
2 26 Feb 07 jari 239           allSlideDataElements.add(i, new SlideDataElement(rows, cols, extraFields, uid, isNull, isNonZero));
2 26 Feb 07 jari 240         }
2 26 Feb 07 jari 241       } else {    //IData has affy data
2 26 Feb 07 jari 242         char detection = dis.readChar();
2 26 Feb 07 jari 243         float pValue = dis.readFloat();
2 26 Feb 07 jari 244         int flags = dis.readInt();
2 26 Feb 07 jari 245         allSlideDataElements.add(i, new AffySlideDataElement(rows, cols, extraFields, uid, isNull, isNonZero, detection, pValue, flags));
2 26 Feb 07 jari 246
2 26 Feb 07 jari 247       }
2 26 Feb 07 jari 248       }
2 26 Feb 07 jari 249
2 26 Feb 07 jari 250       return allSlideDataElements;
2 26 Feb 07 jari 251       
2 26 Feb 07 jari 252     }
2 26 Feb 07 jari 253
2 26 Feb 07 jari 254   /**
2 26 Feb 07 jari 255    * Writes the annotation contained in SlideData sd to binary file outputFile.
2 26 Feb 07 jari 256    * @param outputFile
2 26 Feb 07 jari 257    * @param sd
2 26 Feb 07 jari 258    */
2 26 Feb 07 jari 259   public static void writeSlideDataAnnotation(DataOutputStream dos, SlideData sd) throws IOException {
2 26 Feb 07 jari 260     Vector allSlideDataElements = sd.getAllElements();
2 26 Feb 07 jari 261       int numSlideDataElements = allSlideDataElements.size();
2 26 Feb 07 jari 262       ISlideDataElement sde;
2 26 Feb 07 jari 263       dos.writeInt(numSlideDataElements);
2 26 Feb 07 jari 264        dos.writeBoolean(sd.isCGHData());
2 26 Feb 07 jari 265             
2 26 Feb 07 jari 266       for(int i=0; i<numSlideDataElements; i++){
2 26 Feb 07 jari 267          sde = (ISlideDataElement)allSlideDataElements.get(i);
2 26 Feb 07 jari 268         
2 26 Feb 07 jari 269         String uid = sde.getUID();
2 26 Feb 07 jari 270         char[] temp = uid.toCharArray();
2 26 Feb 07 jari 271         dos.writeInt(temp.length);
2 26 Feb 07 jari 272         for(int j=0; j<temp.length; j++){
2 26 Feb 07 jari 273           dos.writeChar(temp[j]);
2 26 Feb 07 jari 274         }
2 26 Feb 07 jari 275     
2 26 Feb 07 jari 276         int rowsize = sde.getRows().length;
2 26 Feb 07 jari 277         dos.writeInt(rowsize);
2 26 Feb 07 jari 278         for(int j=0; j<rowsize; j++){
2 26 Feb 07 jari 279           dos.writeInt(sde.getRows()[j]);
2 26 Feb 07 jari 280         }
2 26 Feb 07 jari 281         int colsize = sde.getColumns().length;
2 26 Feb 07 jari 282         dos.writeInt(colsize);
2 26 Feb 07 jari 283         for(int j=0; j<colsize; j++){
2 26 Feb 07 jari 284           dos.writeInt(sde.getColumns()[j]);
2 26 Feb 07 jari 285         }
2 26 Feb 07 jari 286     
2 26 Feb 07 jari 287         int numFields = sde.getExtraFields().length;
2 26 Feb 07 jari 288         dos.writeInt(numFields);
2 26 Feb 07 jari 289         for(int j=0; j<numFields; j++){
2 26 Feb 07 jari 290           try {
2 26 Feb 07 jari 291             temp = sde.getExtraFields()[j].toCharArray();
2 26 Feb 07 jari 292               dos.writeInt(temp.length);
2 26 Feb 07 jari 293               for(int k=0; k<temp.length; k++){
2 26 Feb 07 jari 294                 dos.writeChar(temp[k]);
2 26 Feb 07 jari 295               }
2 26 Feb 07 jari 296           } catch (NullPointerException npe){
2 26 Feb 07 jari 297             dos.writeInt(0);
2 26 Feb 07 jari 298           }
2 26 Feb 07 jari 299         }
2 26 Feb 07 jari 300
2 26 Feb 07 jari 301         dos.writeBoolean(sde.getIsNull());
2 26 Feb 07 jari 302         dos.writeBoolean(sde.isNonZero());
2 26 Feb 07 jari 303         int dataType = sd.getDataType();
2 26 Feb 07 jari 304       if(dataType == IData.DATA_TYPE_TWO_INTENSITY || dataType == IData.DATA_TYPE_RATIO_ONLY){
2 26 Feb 07 jari 305         
2 26 Feb 07 jari 306       } else {    //IData has affy data
2 26 Feb 07 jari 307         dos.writeChar(((AffySlideDataElement)sde).getDetection().charAt(0));
2 26 Feb 07 jari 308         dos.writeFloat(((AffySlideDataElement)sde).getPvalue());
2 26 Feb 07 jari 309         dos.writeInt(((AffySlideDataElement)sde).getGenePixFlags());
2 26 Feb 07 jari 310       }
2 26 Feb 07 jari 311       }
2 26 Feb 07 jari 312   }
2 26 Feb 07 jari 313
2 26 Feb 07 jari 314
2 26 Feb 07 jari 315
2 26 Feb 07 jari 316   /**
2 26 Feb 07 jari 317    * @param outputFile
2 26 Feb 07 jari 318    */
2 26 Feb 07 jari 319     public static void writeSlideDataIntensities(DataOutputStream dos, SlideData sd) throws IOException {
2 26 Feb 07 jari 320         ISlideDataElement sde;
2 26 Feb 07 jari 321         Vector allSlideDataElements = sd.getAllElements();
2 26 Feb 07 jari 322         int numSlideDataElements = sd.size();
2 26 Feb 07 jari 323         dos.writeInt(numSlideDataElements);
2 26 Feb 07 jari 324         for(int i=0; i<numSlideDataElements; i++){
2 26 Feb 07 jari 325           sde = (ISlideDataElement)allSlideDataElements.get(i);
2 26 Feb 07 jari 326           dos.writeFloat(sde.getIntensity(0));
2 26 Feb 07 jari 327           dos.writeFloat(sde.getIntensity(1));
2 26 Feb 07 jari 328           dos.writeFloat(sde.getTrueIntensity(0));
2 26 Feb 07 jari 329           dos.writeFloat(sde.getTrueIntensity(1));  
2 26 Feb 07 jari 330           if(sd.getDataType() != IData.DATA_TYPE_TWO_INTENSITY && sd.getDataType() != IData.DATA_TYPE_RATIO_ONLY){
2 26 Feb 07 jari 331             dos.writeChar(sde.getDetection().toCharArray()[0]);
2 26 Feb 07 jari 332           } 
2 26 Feb 07 jari 333         }
2 26 Feb 07 jari 334     }
2 26 Feb 07 jari 335
2 26 Feb 07 jari 336   /**
2 26 Feb 07 jari 337    * @param dos
2 26 Feb 07 jari 338    * @param fsd
2 26 Feb 07 jari 339    */
2 26 Feb 07 jari 340   public static void writeFloatSlideDataIntensities(DataOutputStream dos, FloatSlideData fsd) throws IOException {
2 26 Feb 07 jari 341     float[] currentCY3 = fsd.getCurrentCY3();
2 26 Feb 07 jari 342       if(currentCY3 != null){
2 26 Feb 07 jari 343         dos.writeInt(currentCY3.length);
2 26 Feb 07 jari 344         for(int i=0; i<currentCY3.length; i++){
2 26 Feb 07 jari 345           dos.writeFloat(currentCY3[i]);
2 26 Feb 07 jari 346         }
2 26 Feb 07 jari 347       } else 
2 26 Feb 07 jari 348         dos.writeInt(0);
2 26 Feb 07 jari 349
2 26 Feb 07 jari 350       float[] currentCY5 = fsd.getCurrentCY5();
2 26 Feb 07 jari 351       if(currentCY5 != null){
2 26 Feb 07 jari 352         dos.writeInt(currentCY5.length);
2 26 Feb 07 jari 353         for(int i=0; i<currentCY5.length; i++){
2 26 Feb 07 jari 354           dos.writeFloat(currentCY5[i]);
2 26 Feb 07 jari 355         }
2 26 Feb 07 jari 356       } else
2 26 Feb 07 jari 357         dos.writeInt(0);
2 26 Feb 07 jari 358       
2 26 Feb 07 jari 359       float[] trueCY3 = fsd.getTrueCY3();
2 26 Feb 07 jari 360       dos.writeInt(trueCY3.length);
2 26 Feb 07 jari 361       for(int i=0; i<trueCY3.length; i++){
2 26 Feb 07 jari 362         dos.writeFloat(trueCY3[i]);
2 26 Feb 07 jari 363       }
2 26 Feb 07 jari 364       
2 26 Feb 07 jari 365       float[] trueCY5 = fsd.getTrueCY5();
2 26 Feb 07 jari 366       dos.writeInt(trueCY5.length);
2 26 Feb 07 jari 367       for(int i=0; i<trueCY5.length; i++){
2 26 Feb 07 jari 368         dos.writeFloat(trueCY5[i]);
2 26 Feb 07 jari 369       }
2 26 Feb 07 jari 370       
2 26 Feb 07 jari 371       char[] detection = fsd.getDetection();
2 26 Feb 07 jari 372       dos.writeInt(detection.length);
2 26 Feb 07 jari 373       for(int i=0; i<detection.length; i++){
2 26 Feb 07 jari 374         dos.writeChar(detection[i]);
2 26 Feb 07 jari 375       }
2 26 Feb 07 jari 376       
2 26 Feb 07 jari 377       float[] pvalues = fsd.getPvalue();
2 26 Feb 07 jari 378       dos.writeInt(pvalues.length);
2 26 Feb 07 jari 379       for(int i=0; i<pvalues.length; i++){
2 26 Feb 07 jari 380         dos.writeFloat(pvalues[i]);
2 26 Feb 07 jari 381       }
2 26 Feb 07 jari 382       
2 26 Feb 07 jari 383     int[] flags = fsd.getGenePixFlags();
2 26 Feb 07 jari 384       dos.writeInt(flags.length);
2 26 Feb 07 jari 385       for(int i=0; i<flags.length; i++){
2 26 Feb 07 jari 386         dos.writeInt(flags[i]);
2 26 Feb 07 jari 387       }
2 26 Feb 07 jari 388       
2 26 Feb 07 jari 389   }
2 26 Feb 07 jari 390
2 26 Feb 07 jari 391   public static void writeBufferedImage(DataOutputStream dos, BufferedImage bi) throws IOException {
2 26 Feb 07 jari 392     try{
2 26 Feb 07 jari 393       ImageIO.write(bi, "jpg", dos);
2 26 Feb 07 jari 394     } catch (Exception e){
2 26 Feb 07 jari 395       e.printStackTrace();
2 26 Feb 07 jari 396     }
2 26 Feb 07 jari 397   }
2 26 Feb 07 jari 398   public static BufferedImageWrapper readBufferedImage(String inputFile) throws IOException {
2 26 Feb 07 jari 399
2 26 Feb 07 jari 400     String javaTempDir = System.getProperty("java.io.tmpdir");
2 26 Feb 07 jari 401     if(!javaTempDir.endsWith(System.getProperty("file.separator")))
2 26 Feb 07 jari 402       javaTempDir = javaTempDir + System.getProperty("file.separator");
2 26 Feb 07 jari 403     
2 26 Feb 07 jari 404     File binFile = new File(javaTempDir + MultipleArrayViewer.CURRENT_TEMP_DIR + System.getProperty("file.separator") + inputFile);
2 26 Feb 07 jari 405     DataInputStream dis = new DataInputStream(new FileInputStream(binFile));
2 26 Feb 07 jari 406     BufferedImage bi = ImageIO.read(binFile);
2 26 Feb 07 jari 407     dis.close();
2 26 Feb 07 jari 408     return new BufferedImageWrapper(bi);
2 26 Feb 07 jari 409   }
2 26 Feb 07 jari 410 }
2 26 Feb 07 jari 411
2 26 Feb 07 jari 412
2 26 Feb 07 jari 413
2 26 Feb 07 jari 414
2 26 Feb 07 jari 415
2 26 Feb 07 jari 416
2 26 Feb 07 jari 417
2 26 Feb 07 jari 418
2 26 Feb 07 jari 419
2 26 Feb 07 jari 420
2 26 Feb 07 jari 421
2 26 Feb 07 jari 422
2 26 Feb 07 jari 423
2 26 Feb 07 jari 424
2 26 Feb 07 jari 425
2 26 Feb 07 jari 426
2 26 Feb 07 jari 427
2 26 Feb 07 jari 428
2 26 Feb 07 jari 429
2 26 Feb 07 jari 430
2 26 Feb 07 jari 431
2 26 Feb 07 jari 432
2 26 Feb 07 jari 433
2 26 Feb 07 jari 434
2 26 Feb 07 jari 435
2 26 Feb 07 jari 436
2 26 Feb 07 jari 437
2 26 Feb 07 jari 438
2 26 Feb 07 jari 439