Changeset 4739


Ignore:
Timestamp:
01/13/09 09:36:04 (11 years ago)
Author:
melissa
Message:

Improved metadata population for Leica LEI files; see #340.

File:
1 edited

Legend:

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

    r4668 r4739  
    106106 
    107107  private float[][] physicalSizes; 
     108  private float[] pinhole, exposureTime; 
    108109 
    109110  private int[][] channelMap; 
     
    218219      physicalSizes = null; 
    219220      seriesDescriptions = null; 
     221      pinhole = exposureTime = null; 
    220222    } 
    221223  } 
     
    535537 
    536538    physicalSizes = new float[headerIFDs.length][5]; 
     539    pinhole = new float[headerIFDs.length]; 
     540    exposureTime = new float[headerIFDs.length]; 
    537541 
    538542    for (int i=0; i<headerIFDs.length; i++) { 
     
    751755            addMeta(p + " filename", getString(stream, false)); 
    752756            luts[j] = getString(stream, false); 
    753             addMeta(prefix + p + " name", luts[j]); 
     757            addMeta(p + " name", luts[j]); 
    754758            luts[j] = luts[j].toLowerCase(); 
    755759            stream.skipBytes(8); 
     
    858862      store.setDimensionsTimeIncrement(new Float(physicalSizes[i][4]), i, 0); 
    859863 
    860       for (int j=0; j<core[i].imageCount; j++) { 
    861         if (timestamps[i] != null && j < timestamps[i].length) { 
    862           SimpleDateFormat parse = 
    863             new SimpleDateFormat("yyyy:MM:dd,HH:mm:ss:SSS"); 
    864           Date date = parse.parse(timestamps[i][j], new ParsePosition(0)); 
    865           float elapsedTime = (float) (date.getTime() - firstPlane) / 1000; 
    866           store.setPlaneTimingDeltaT(new Float(elapsedTime), i, 0, j); 
    867         } 
    868       } 
    869  
    870864      // parse instrument data 
    871865 
     
    879873          parseInstrumentData(stream, store, i); 
    880874          stream.close(); 
     875        } 
     876      } 
     877 
     878      for (int j=0; j<core[i].imageCount; j++) { 
     879        if (timestamps[i] != null && j < timestamps[i].length) { 
     880          SimpleDateFormat parse = 
     881            new SimpleDateFormat("yyyy:MM:dd,HH:mm:ss:SSS"); 
     882          Date date = parse.parse(timestamps[i][j], new ParsePosition(0)); 
     883          float elapsedTime = (float) (date.getTime() - firstPlane) / 1000; 
     884          store.setPlaneTimingDeltaT(new Float(elapsedTime), i, 0, j); 
     885          store.setPlaneTimingExposureTime(new Float(exposureTime[i]), i, 0, j); 
    881886        } 
    882887      } 
     
    980985          String mag = null, na = null; 
    981986          StringBuffer correction = new StringBuffer(); 
     987          String immersion = null; 
    982988          for (int i=0; i<objectiveData.length; i++) { 
    983989            if (objectiveData[i].indexOf("x") != -1 && mag == null && 
     
    992998              model.append(" "); 
    993999            } 
     1000            else if (immersion == null) { 
     1001              immersion = objectiveData[i]; 
     1002            } 
    9941003            else { 
    9951004              correction.append(objectiveData[i]); 
     
    9971006            } 
    9981007          } 
     1008          store.setObjectiveImmersion(immersion, 0, objective); 
    9991009          store.setObjectiveCorrection(correction.toString().trim(), 0, 
    10001010            objective); 
     
    10071017          store.setObjectiveSerialNumber(data, 0, objective); 
    10081018        } 
     1019        else if (tokens[2].equals("RefractionIndex")) { 
     1020          store.setObjectiveSettingsRefractiveIndex(new Float(data), series); 
     1021        } 
    10091022 
    10101023        // link Objective to Image 
    10111024        store.setObjectiveID("Objective:" + objective, 0, objective); 
    10121025        if (objective == 0) { 
    1013           store.setObjectiveSettingsObjective("Objective:" + objective, 0); 
     1026          store.setObjectiveSettingsObjective("Objective:" + objective, series); 
     1027          store.setImageObjective("Objective:" + objective, series); 
    10141028        } 
    10151029      } 
     
    10311045      } 
    10321046      else if (tokens[0].startsWith("CXYZStage")) { 
     1047        // NB: there is only one stage position specified for each series 
    10331048        if (tokens[2].equals("XPos")) { 
    10341049          for (int q=0; q<core[series].imageCount; q++) { 
     
    10561071      else if (contentID.equals("dblVoxelZ")) { 
    10571072        physicalSizes[series][2] = Float.parseFloat(data); 
     1073      } 
     1074      else if (contentID.equals("dblPinhole")) { 
     1075        pinhole[series] = Float.parseFloat(data); 
     1076      } 
     1077      else if (contentID.equals("dblZoom")) { 
     1078        store.setDisplayOptionsZoom(new Float(data), series); 
     1079      } 
     1080      else if (contentID.startsWith("nDelayTime")) { 
     1081        exposureTime[series] = Float.parseFloat(data); 
     1082        if (contentID.endsWith("_ms")) { 
     1083          exposureTime[series] /= 1000f; 
     1084        } 
    10581085      } 
    10591086 
     
    10751102        store.setLogicalChannelExWave((Integer) exWaves[i].get(channel), 
    10761103          i, nextChannel); 
     1104        store.setLogicalChannelPinholeSize(new Float(pinhole[i]), i, 
     1105          nextChannel); 
    10771106 
    10781107        nextChannel++; 
Note: See TracChangeset for help on using the changeset viewer.