Changeset 4775


Ignore:
Timestamp:
02/04/09 14:19:36 (11 years ago)
Author:
melissa
Message:

LIFReader now populates more metadata; closes #340.

Location:
trunk/components/bio-formats/src/loci/formats/in
Files:
2 edited

Legend:

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

    r4735 r4775  
    323323    Vector bits = handler.getBits(); 
    324324    Vector lutNames = handler.getLutNames(); 
     325    Vector stageX = handler.getXPosition(); 
     326    Vector stageY = handler.getYPosition(); 
     327    Vector stageZ = handler.getZPosition(); 
    325328 
    326329    numDatasets = widths.size(); 
     
    426429 
    427430    store.setInstrumentID("Instrument:0", 0); 
     431    store.setObjectiveImmersion("Unknown", 0, 0); 
     432    store.setObjectiveCorrection("Unknown", 0, 0); 
    428433 
    429434    for (int i=0; i<numDatasets; i++) { 
     
    445450      store.setImageName(seriesName, i); 
    446451      MetadataTools.setDefaultCreationDate(store, getCurrentFile(), i); 
     452 
     453      // populate StagePosition data 
     454 
     455      if (i < stageX.size()) { 
     456        for (int q=0; q<core[i].imageCount; q++) { 
     457          store.setStagePositionPositionX((Float) stageX.get(i), i, 0, q); 
     458        } 
     459      } 
     460      if (i < stageY.size()) { 
     461        for (int q=0; q<core[i].imageCount; q++) { 
     462          store.setStagePositionPositionY((Float) stageY.get(i), i, 0, q); 
     463        } 
     464      } 
     465      if (i < stageZ.size()) { 
     466        for (int q=0; q<core[i].imageCount; q++) { 
     467          store.setStagePositionPositionZ((Float) stageZ.get(i), i, 0, q); 
     468        } 
     469      } 
    447470 
    448471      // link Instrument and Image 
  • trunk/components/bio-formats/src/loci/formats/in/LeicaHandler.java

    r4750 r4775  
    5959 
    6060  private Vector nextPlane; 
     61  private int nextLaser, nextDetector; 
     62 
     63  private Vector laserNames, detectorNames; 
     64  private Vector xPosition, yPosition, zPosition; 
    6165 
    6266  // -- Constructor -- 
     
    8185    lutNames = new Vector(); 
    8286    nextPlane = new Vector(); 
     87    laserNames = new Vector(); 
     88    detectorNames = new Vector(); 
     89    xPosition = new Vector(); 
     90    yPosition = new Vector(); 
     91    zPosition = new Vector(); 
    8392    this.store = store; 
    8493  } 
     
    119128 
    120129  public Vector getLutNames() { return lutNames; } 
     130 
     131  public Vector getXPosition() { return xPosition; } 
     132 
     133  public Vector getYPosition() { return yPosition; } 
     134 
     135  public Vector getZPosition() { return zPosition; } 
    121136 
    122137  // -- DefaultHandler API methods -- 
     
    152167      numChannels = 0; 
    153168      extras = 1; 
     169      nextLaser = 0; 
     170      nextDetector = 0; 
    154171    } 
    155172  } 
     
    314331    } 
    315332    else if (qName.equals("FilterSettingRecord")) { 
    316       String key = attributes.getValue("ObjectName") + " - " + 
    317         attributes.getValue("Description") + " - " + 
     333      String object = attributes.getValue("ObjectName"); 
     334      String key = object + " - " + attributes.getValue("Description") + " - " + 
    318335        attributes.getValue("Attribute"); 
    319336      if (fullSeries != null && !fullSeries.equals("")) { 
     
    328345          if (key.endsWith("NumericalAperture")) { 
    329346            store.setObjectiveLensNA(new Float(value), 0, 0); 
    330             store.setObjectiveCorrection("Unknown", 0, 0); 
    331             store.setObjectiveImmersion("Unknown", 0, 0); 
    332347          } 
    333348          else if (key.endsWith("HighVoltage")) { 
    334349            store.setDetectorVoltage(new Float(value), 0, 0); 
    335350            store.setDetectorType("Unknown", 0, 0); 
     351 
     352            if (!detectorNames.contains(object)) { 
     353              detectorNames.add(object); 
     354            } 
     355            int detector = detectorNames.indexOf(object); 
     356            store.setDetectorSettingsDetector("Detector:" + detector, 
     357              seriesNames.size() - 1, nextDetector); 
     358 
     359            nextDetector++; 
    336360          } 
    337361          else if (key.endsWith("VideoOffset")) { 
    338362            store.setDetectorOffset(new Float(value), 0, 0); 
    339363            store.setDetectorType("Unknown", 0, 0); 
     364          } 
     365          else if (key.endsWith("OrderNumber")) { 
     366            store.setObjectiveSerialNumber(value, 0, 0); 
     367          } 
     368          else if (key.endsWith("Objective")) { 
     369            StringTokenizer tokens = new StringTokenizer(value, " "); 
     370            boolean foundMag = false; 
     371            StringBuffer model = new StringBuffer(); 
     372            while (!foundMag) { 
     373              String token = tokens.nextToken(); 
     374              if (token.indexOf("x") != -1) { 
     375                foundMag = true; 
     376 
     377                String mag = token.substring(0, token.indexOf("x")); 
     378                String na = token.substring(token.indexOf("x") + 1); 
     379 
     380                store.setObjectiveNominalMagnification( 
     381                  new Integer((int) Float.parseFloat(mag)), 0, 0); 
     382                store.setObjectiveLensNA(new Float(na), 0, 0); 
     383 
     384                break; 
     385              } 
     386              model.append(token); 
     387              model.append(" "); 
     388            } 
     389 
     390            if (tokens.hasMoreTokens()) { 
     391              store.setObjectiveImmersion(tokens.nextToken(), 0, 0); 
     392            } 
     393            if (tokens.countTokens() > 1) { 
     394              Float temperature = new Float(tokens.nextToken()); 
     395              tokens.nextToken(); 
     396            } 
     397            if (tokens.hasMoreTokens()) { 
     398              store.setObjectiveCorrection(tokens.nextToken(), 0, 0); 
     399            } 
     400 
     401            store.setObjectiveModel(model.toString(), 0, 0); 
     402          } 
     403          else if (key.endsWith("RefractionIndex")) { 
     404            store.setObjectiveID("Objective:0", 0, 0); 
     405            store.setObjectiveSettingsObjective("Objective:0", 
     406              seriesNames.size() - 1); 
     407            store.setObjectiveSettingsRefractiveIndex(new Float(value), 
     408              seriesNames.size() - 1); 
     409          } 
     410          else if (key.endsWith("Laser wavelength - Wavelength")) { 
     411            if (!laserNames.contains(object)) { 
     412              int index = laserNames.size(); 
     413              store.setLightSourceID("LightSource:" + index, 0, index); 
     414              store.setLaserWavelength(new Integer(value), 0, index); 
     415              laserNames.add(object); 
     416            } 
     417          } 
     418          else if (key.endsWith("Laser output power - Output Power")) { 
     419            if (!laserNames.contains(object)) { 
     420              laserNames.add(object); 
     421            } 
     422 
     423            int laser = laserNames.indexOf(object); 
     424            store.setLightSourcePower(new Float(value), 0, laser); 
     425            store.setLightSourceSettingsLightSource("LightSource:" + laser, 
     426              seriesNames.size() - 1, nextLaser); 
     427 
     428            nextLaser++; 
     429          } 
     430          else if (key.endsWith("Stage Pos x - XPos")) { 
     431            while (xPosition.size() < seriesNames.size() - 1) { 
     432              xPosition.add(null); 
     433            } 
     434            xPosition.add(new Float(value)); 
     435          } 
     436          else if (key.endsWith("Stage Pos y - YPos")) { 
     437            while (yPosition.size() < seriesNames.size() - 1) { 
     438              yPosition.add(null); 
     439            } 
     440            yPosition.add(new Float(value)); 
     441          } 
     442          else if (key.endsWith("Stage Pos z - ZPos")) { 
     443            while (zPosition.size() < seriesNames.size() - 1) { 
     444              zPosition.add(null); 
     445            } 
     446            zPosition.add(new Float(value)); 
    340447          } 
    341448        } 
     
    494601      String frame = attributes.getValue("Frame"); 
    495602      String time = attributes.getValue("Time"); 
    496       metadata.put(fullSeries + qName + " - " + frame, time); 
    497  
     603      metadata.put(fullSeries + " - " + qName + " - " + frame, time); 
     604 
     605      int originalPlane = Integer.parseInt(frame); 
    498606      int planeNum = 
    499607        ((Integer) nextPlane.get(seriesNames.size() - 1)).intValue(); 
     608      if (originalPlane < planeNum) return; 
     609 
    500610      store.setPlaneTimingDeltaT(new Float(time), seriesNames.size() - 1, 0, 
    501611        planeNum); 
Note: See TracChangeset for help on using the changeset viewer.