Changeset 6780


Ignore:
Timestamp:
08/09/10 11:54:41 (9 years ago)
Author:
melissa
Message:

More thoroughly parse Z position values from single-file datasets.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r6726 r6780  
    178178    if (!noPixels) { 
    179179      for (String stk : stks[getSeries()]) { 
    180         if (new Location(stk).exists()) { 
     180        if (stk != null && new Location(stk).exists()) { 
    181181          v.add(stk); 
    182182        } 
     
    634634      int lastFile = -1; 
    635635      IFD lastIFD = null; 
     636      long[] lastOffsets = null; 
    636637 
    637638      double distance = zStart; 
     
    641642        Double deltaT = new Double(0); 
    642643        Double exposureTime = new Double(0); 
    643  
    644         if (coords[2] > 0 && stks != null && lastFile >= 0 && 
    645           stks[i][lastFile] != null) 
    646         { 
    647           int fileIndex = getIndex(0, 0, coords[2]) / getSizeZ(); 
    648           if (fileIndex != lastFile) { 
    649             lastFile = fileIndex; 
    650             RandomAccessInputStream stream = 
    651               new RandomAccessInputStream(stks[i][lastFile]); 
     644        Double xmlZPosition = null; 
     645 
     646        int fileIndex = getIndex(0, 0, coords[2]) / getSizeZ(); 
     647        if (fileIndex >= 0) { 
     648          String file = stks == null ? currentId : stks[i][fileIndex]; 
     649          if (file != null) { 
     650            RandomAccessInputStream stream = new RandomAccessInputStream(file); 
    652651            TiffParser tp = new TiffParser(stream); 
    653             lastIFD = tp.getFirstIFD(); 
     652            tp.checkHeader(); 
     653            if (fileIndex != lastFile) { 
     654              lastFile = fileIndex; 
     655              lastOffsets = tp.getIFDOffsets(); 
     656            } 
     657 
     658            lastIFD = tp.getIFD(lastOffsets[p % lastOffsets.length]); 
    654659            stream.close(); 
    655           } 
    656           comment = lastIFD.getComment(); 
    657           handler = new MetamorphHandler(getSeriesMetadata()); 
    658           if (comment != null && comment.startsWith("<MetaData>")) { 
    659             XMLTools.parseXML(comment, handler); 
    660           } 
    661           timestamps = handler.getTimestamps(); 
    662           exposureTimes = handler.getExposures(); 
     660            comment = lastIFD.getComment().trim(); 
     661            handler = new MetamorphHandler(getSeriesMetadata()); 
     662            if (comment != null && comment.startsWith("<MetaData>")) { 
     663              XMLTools.parseXML(comment, handler); 
     664            } 
     665            timestamps = handler.getTimestamps(); 
     666            exposureTimes = handler.getExposures(); 
     667            Vector<Double> zPositions = handler.getZPositions(); 
     668            if (zPositions != null && zPositions.size() > 0) { 
     669              xmlZPosition = zPositions.get(0); 
     670            } 
     671          } 
    663672        } 
    664673 
     
    696705          } 
    697706          store.setPlanePositionZ(distance, i, p); 
     707        } 
     708        else if (xmlZPosition != null) { 
     709          store.setPlanePositionZ(xmlZPosition, i, p); 
    698710        } 
    699711      } 
Note: See TracChangeset for help on using the changeset viewer.