Changeset 2036


Ignore:
Timestamp:
01/05/07 15:49:58 (13 years ago)
Author:
curtis
Message:

Whitespace.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/OmeisImporter.java

    r1882 r2036  
    146146    if (DEBUG) log("Reading file '" + id + "' --> " + path); 
    147147 
    148       // verify that all given file IDs were grouped by the file stitcher 
    149       FilePattern fp = reader.getFilePattern(id); 
    150       if (!fp.isValid()) { 
    151         throw new FormatException("Invalid file pattern for " + path); 
    152       } 
    153       String[] files = fp.getFiles(); 
    154       if (files == null) { 
    155         throw new FormatException("Invalid file list for " + path); 
    156       } 
    157       if (files.length != ids.length) { 
    158         throw new FormatException("File list length mismatch for " + path); 
    159       } 
    160       boolean[] done = new boolean[ids.length]; 
    161       int numLeft = ids.length; 
    162       for (int i=0; i<files.length; i++) { 
    163         for (int j=0; j<ids.length; j++) { 
    164           if (done[j]) continue; 
    165           if (files[i].equals(ids[j])) { 
    166             done[j] = true; 
    167             numLeft--; 
    168             break; 
     148    // verify that all given file IDs were grouped by the file stitcher 
     149    FilePattern fp = reader.getFilePattern(id); 
     150    if (!fp.isValid()) { 
     151      throw new FormatException("Invalid file pattern for " + path); 
     152    } 
     153    String[] files = fp.getFiles(); 
     154    if (files == null) { 
     155      throw new FormatException("Invalid file list for " + path); 
     156    } 
     157    if (files.length != ids.length) { 
     158      throw new FormatException("File list length mismatch for " + path); 
     159    } 
     160    boolean[] done = new boolean[ids.length]; 
     161    int numLeft = ids.length; 
     162    for (int i=0; i<files.length; i++) { 
     163      for (int j=0; j<ids.length; j++) { 
     164        if (done[j]) continue; 
     165        if (files[i].equals(ids[j])) { 
     166          done[j] = true; 
     167          numLeft--; 
     168          break; 
     169        } 
     170      } 
     171    } 
     172    if (numLeft > 0) { 
     173      throw new FormatException( 
     174        "File list does not correspond to ID list for " + path); 
     175    } 
     176 
     177    int seriesCount = reader.getSeriesCount(id); 
     178 
     179    // get DOM and Pixels elements for the file's OME-XML metadata 
     180    OMENode ome = (OMENode) store.getRoot(); 
     181    Document omeDoc = null; 
     182    try { 
     183      omeDoc = ome.getOMEDocument(false); 
     184    } 
     185    catch (javax.xml.transform.TransformerException exc) { 
     186      throw new FormatException(exc); 
     187    } 
     188    catch (org.xml.sax.SAXException exc) { 
     189      throw new FormatException(exc); 
     190    } 
     191    catch (javax.xml.parsers.ParserConfigurationException exc) { 
     192      throw new FormatException(exc); 
     193    } 
     194    Vector pix = DOMUtil.findElementList("Pixels", omeDoc); 
     195    if (pix.size() != seriesCount) { 
     196      throw new FormatException("Pixels element count (" + 
     197        pix.size() + ") does not match series count (" + 
     198        seriesCount + ") for '" + id + "'"); 
     199    } 
     200    if (DEBUG) log(seriesCount + " series detected."); 
     201 
     202    for (int s=0; s<seriesCount; s++) { 
     203      reader.setSeries(id, s); 
     204 
     205      // gather pixels information for this series 
     206      int sizeX = reader.getSizeX(id); 
     207      int sizeY = reader.getSizeY(id); 
     208      int sizeZ = reader.getSizeZ(id); 
     209      int sizeC = reader.getSizeC(id); 
     210      int sizeT = reader.getSizeT(id); 
     211      int pixelType = reader.getPixelType(id); 
     212      int bytesPerPixel; 
     213      boolean isSigned, isFloat; 
     214      switch (pixelType) { 
     215        case FormatReader.INT8: 
     216          bytesPerPixel = 1; 
     217          isSigned = true; 
     218          isFloat = false; 
     219          break; 
     220        case FormatReader.UINT8: 
     221          bytesPerPixel = 1; 
     222          isSigned = false; 
     223          isFloat = false; 
     224          break; 
     225        case FormatReader.INT16: 
     226          bytesPerPixel = 2; 
     227          isSigned = true; 
     228          isFloat = false; 
     229          break; 
     230        case FormatReader.UINT16: 
     231          bytesPerPixel = 2; 
     232          isSigned = false; 
     233          isFloat = false; 
     234          break; 
     235        case FormatReader.INT32: 
     236          bytesPerPixel = 4; 
     237          isSigned = true; 
     238          isFloat = false; 
     239          break; 
     240        case FormatReader.UINT32: 
     241          bytesPerPixel = 4; 
     242          isSigned = false; 
     243          isFloat = false; 
     244          break; 
     245        case FormatReader.FLOAT: 
     246          bytesPerPixel = 4; 
     247          isSigned = true; 
     248          isFloat = true; 
     249          break; 
     250        case FormatReader.DOUBLE: 
     251          bytesPerPixel = 8; 
     252          isSigned = true; 
     253          isFloat = true; 
     254          break; 
     255        default: 
     256          throw new FormatException("Unknown pixel type for '" + 
     257            id + "' series #" + s + ": " + pixelType); 
     258      } 
     259      boolean little = reader.isLittleEndian(id); 
     260      boolean swap = doLittle != little; 
     261 
     262      // ask OMEIS to allocate new pixels file 
     263      int pixelsId = newPixels(sizeX, sizeY, sizeZ, sizeC, sizeT, 
     264        bytesPerPixel, isSigned, isFloat); 
     265      String pixelsPath = getLocalPixelsPath(pixelsId); 
     266      if (DEBUG) { 
     267        log("Series #" + s + ": id=" + pixelsId + ", path=" + pixelsPath); 
     268      } 
     269 
     270      // write pixels to file 
     271      FileOutputStream out = new FileOutputStream(pixelsPath); 
     272      int imageCount = reader.getImageCount(id); 
     273      if (DEBUG) { 
     274        log("Processing " + imageCount + " planes (sizeZ=" + sizeZ + 
     275          ", sizeC=" + sizeC + ", sizeT=" + sizeT + "): "); 
     276      } 
     277      for (int j=0; j<imageCount; j++) { 
     278        if (DEBUG) log("  Reading plane #" + j); 
     279        byte[] plane = reader.openBytes(id, j); 
     280        if (swap && bytesPerPixel > 1 && !isFloat) { // swap endianness 
     281          for (int b=0; b<plane.length; b+=bytesPerPixel) { 
     282            for (int k=0; k<bytesPerPixel/2; k++) { 
     283              int i1 = b + k; 
     284              int i2 = b + bytesPerPixel - k - 1; 
     285              byte b1 = plane[i1]; 
     286              byte b2 = plane[i2]; 
     287              plane[i1] = b2; 
     288              plane[i2] = b1; 
     289            } 
    169290          } 
    170291        } 
    171       } 
    172       if (numLeft > 0) { 
    173         throw new FormatException( 
    174           "File list does not correspond to ID list for " + path); 
    175       } 
    176  
    177       int seriesCount = reader.getSeriesCount(id); 
    178  
    179       // get DOM and Pixels elements for the file's OME-XML metadata 
    180       OMENode ome = (OMENode) store.getRoot(); 
    181       Document omeDoc = null; 
    182       try { 
    183         omeDoc = ome.getOMEDocument(false); 
    184       } 
    185       catch (javax.xml.transform.TransformerException exc) { 
    186         throw new FormatException(exc); 
    187       } 
    188       catch (org.xml.sax.SAXException exc) { 
    189         throw new FormatException(exc); 
    190       } 
    191       catch (javax.xml.parsers.ParserConfigurationException exc) { 
    192         throw new FormatException(exc); 
    193       } 
    194       Vector pix = DOMUtil.findElementList("Pixels", omeDoc); 
    195       if (pix.size() != seriesCount) { 
    196         throw new FormatException("Pixels element count (" + 
    197           pix.size() + ") does not match series count (" + 
    198           seriesCount + ") for '" + id + "'"); 
    199       } 
    200       if (DEBUG) log(seriesCount + " series detected."); 
    201  
    202       for (int s=0; s<seriesCount; s++) { 
    203         reader.setSeries(id, s); 
    204  
    205         // gather pixels information for this series 
    206         int sizeX = reader.getSizeX(id); 
    207         int sizeY = reader.getSizeY(id); 
    208         int sizeZ = reader.getSizeZ(id); 
    209         int sizeC = reader.getSizeC(id); 
    210         int sizeT = reader.getSizeT(id); 
    211         int pixelType = reader.getPixelType(id); 
    212         int bytesPerPixel; 
    213         boolean isSigned, isFloat; 
    214         switch (pixelType) { 
    215           case FormatReader.INT8: 
    216             bytesPerPixel = 1; 
    217             isSigned = true; 
    218             isFloat = false; 
    219             break; 
    220           case FormatReader.UINT8: 
    221             bytesPerPixel = 1; 
    222             isSigned = false; 
    223             isFloat = false; 
    224             break; 
    225           case FormatReader.INT16: 
    226             bytesPerPixel = 2; 
    227             isSigned = true; 
    228             isFloat = false; 
    229             break; 
    230           case FormatReader.UINT16: 
    231             bytesPerPixel = 2; 
    232             isSigned = false; 
    233             isFloat = false; 
    234             break; 
    235           case FormatReader.INT32: 
    236             bytesPerPixel = 4; 
    237             isSigned = true; 
    238             isFloat = false; 
    239             break; 
    240           case FormatReader.UINT32: 
    241             bytesPerPixel = 4; 
    242             isSigned = false; 
    243             isFloat = false; 
    244             break; 
    245           case FormatReader.FLOAT: 
    246             bytesPerPixel = 4; 
    247             isSigned = true; 
    248             isFloat = true; 
    249             break; 
    250           case FormatReader.DOUBLE: 
    251             bytesPerPixel = 8; 
    252             isSigned = true; 
    253             isFloat = true; 
    254             break; 
    255           default: 
    256             throw new FormatException("Unknown pixel type for '" + 
    257               id + "' series #" + s + ": " + pixelType); 
    258         } 
    259         boolean little = reader.isLittleEndian(id); 
    260         boolean swap = doLittle != little; 
    261  
    262         // ask OMEIS to allocate new pixels file 
    263         int pixelsId = newPixels(sizeX, sizeY, sizeZ, sizeC, sizeT, 
    264           bytesPerPixel, isSigned, isFloat); 
    265         String pixelsPath = getLocalPixelsPath(pixelsId); 
    266         if (DEBUG) { 
    267           log("Series #" + s + ": id=" + pixelsId + ", path=" + pixelsPath); 
    268         } 
    269  
    270         // write pixels to file 
    271         FileOutputStream out = new FileOutputStream(pixelsPath); 
    272         int imageCount = reader.getImageCount(id); 
    273         if (DEBUG) { 
    274           log("Processing " + imageCount + " planes (sizeZ=" + sizeZ + 
    275             ", sizeC=" + sizeC + ", sizeT=" + sizeT + "): "); 
    276         } 
    277         for (int j=0; j<imageCount; j++) { 
    278           if (DEBUG) log("  Reading plane #" + j); 
    279           byte[] plane = reader.openBytes(id, j); 
    280           if (swap && bytesPerPixel > 1 && !isFloat) { // swap endianness 
    281             for (int b=0; b<plane.length; b+=bytesPerPixel) { 
    282               for (int k=0; k<bytesPerPixel/2; k++) { 
    283                 int i1 = b + k; 
    284                 int i2 = b + bytesPerPixel - k - 1; 
    285                 byte b1 = plane[i1]; 
    286                 byte b2 = plane[i2]; 
    287                 plane[i1] = b2; 
    288                 plane[i2] = b1; 
    289               } 
    290             } 
    291           } 
    292           out.write(plane); 
    293         } 
    294         out.close(); 
    295         reader.close(); 
    296         if (DEBUG) log("[done]"); 
    297  
    298         // tell OMEIS we're done 
    299         pixelsId = finishPixels(pixelsId); 
    300         if (DEBUG) log("finishPixels called (new id=" + pixelsId + ")"); 
    301  
    302         // get SHA1 hash for finished pixels 
    303         String sha1 = getPixelsSHA1(pixelsId); 
    304         if (DEBUG) log("SHA1=" + sha1); 
    305  
    306         // inject important extra attributes into proper Pixels element 
    307         Element pixels = (Element) pix.elementAt(s); 
    308         pixels.setAttribute("FileSHA1", sha1); 
    309         pixels.setAttribute("ImageServerID", "" + pixelsId); 
    310         if (DEBUG) log("Pixel attributes injected."); 
    311       } 
    312  
    313       // accumulate XML into buffer 
    314       ByteArrayOutputStream xml = new ByteArrayOutputStream(); 
    315       try { 
    316         DOMUtil.writeXML(xml, omeDoc); 
    317       } 
    318       catch (javax.xml.transform.TransformerException exc) { 
    319         throw new FormatException(exc); 
    320       } 
    321  
    322       // output OME-XML to standard output 
    323       xml.close(); 
    324       String xmlString = new String(xml.toByteArray()); 
    325       if (DEBUG) log(xmlString); 
    326       if (http) printHttpResponseHeader(); 
    327       System.out.println(xmlString); 
     292        out.write(plane); 
     293      } 
     294      out.close(); 
     295      reader.close(); 
     296      if (DEBUG) log("[done]"); 
     297 
     298      // tell OMEIS we're done 
     299      pixelsId = finishPixels(pixelsId); 
     300      if (DEBUG) log("finishPixels called (new id=" + pixelsId + ")"); 
     301 
     302      // get SHA1 hash for finished pixels 
     303      String sha1 = getPixelsSHA1(pixelsId); 
     304      if (DEBUG) log("SHA1=" + sha1); 
     305 
     306      // inject important extra attributes into proper Pixels element 
     307      Element pixels = (Element) pix.elementAt(s); 
     308      pixels.setAttribute("FileSHA1", sha1); 
     309      pixels.setAttribute("ImageServerID", "" + pixelsId); 
     310      if (DEBUG) log("Pixel attributes injected."); 
     311    } 
     312 
     313    // accumulate XML into buffer 
     314    ByteArrayOutputStream xml = new ByteArrayOutputStream(); 
     315    try { 
     316      DOMUtil.writeXML(xml, omeDoc); 
     317    } 
     318    catch (javax.xml.transform.TransformerException exc) { 
     319      throw new FormatException(exc); 
     320    } 
     321 
     322    // output OME-XML to standard output 
     323    xml.close(); 
     324    String xmlString = new String(xml.toByteArray()); 
     325    if (DEBUG) log(xmlString); 
     326    if (http) printHttpResponseHeader(); 
     327    System.out.println(xmlString); 
    328328  } 
    329329 
Note: See TracChangeset for help on using the changeset viewer.