Changeset 4683


Ignore:
Timestamp:
12/09/08 22:23:10 (11 years ago)
Author:
melissa
Message:

Some improvements to MicroManager metadata support. Still need to parse timestamps.

File:
1 edited

Legend:

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

    r4674 r4683  
    2525 
    2626import java.io.*; 
     27import java.text.*; 
    2728import java.util.*; 
    2829import loci.common.*; 
     
    5657 
    5758  private String[] channels; 
     59 
     60  private String comment, time; 
     61  private Float exposureTime, sliceThickness, pixelSize; 
     62  private Float[] timestamps; 
    5863 
    5964  // -- Constructor -- 
     
    133138    tiffReader = null; 
    134139    tiffs = null; 
     140    comment = time = null; 
     141    exposureTime = sliceThickness = pixelSize = null; 
     142    timestamps = null; 
    135143  } 
    136144 
     
    196204    } 
    197205 
     206    Vector stamps = new Vector(); 
     207 
    198208    StringTokenizer st = new StringTokenizer(s, "\n"); 
    199209    int[] slice = new int[3]; 
     
    244254          core[0].sizeZ = Integer.parseInt(value); 
    245255        } 
     256        else if (key.equals("PixelSize_um")) { 
     257          pixelSize = new Float(value); 
     258        } 
     259        else if (key.equals("z-step_um")) { 
     260          sliceThickness = new Float(value); 
     261        } 
     262        else if (key.equals("Time")) time = value; 
     263        else if (key.equals("Comment")) comment = value; 
    246264      } 
    247265 
     
    265283 
    266284          addMeta(key, value); 
     285 
     286          if (key.equals("Exposure-ms")) { 
     287            exposureTime = new Float(value); 
     288          } 
     289          else if (key.equals("ElapsedTime-ms")) { 
     290            stamps.add(new Float(value)); 
     291          } 
     292 
    267293          token = st.nextToken().trim(); 
    268294        } 
    269295      } 
    270  
    271     } 
     296    } 
     297 
     298    timestamps = (Float[]) stamps.toArray(new Float[0]); 
     299    Arrays.sort(timestamps); 
    272300 
    273301    // build list of TIFF files 
     
    332360    MetadataStore store = 
    333361      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    334     MetadataTools.populatePixels(store, this); 
     362    MetadataTools.populatePixels(store, this, true); 
    335363    store.setImageName("", 0); 
    336     MetadataTools.setDefaultCreationDate(store, id, 0); 
     364    store.setImageDescription(comment, 0); 
     365    if (time != null) { 
     366      SimpleDateFormat parser = 
     367        new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); 
     368      try { 
     369        long stamp = parser.parse(time).getTime(); 
     370        store.setImageCreationDate( 
     371          DataTools.convertDate(stamp, DataTools.UNIX), 0); 
     372      } 
     373      catch (ParseException e) { 
     374        MetadataTools.setDefaultCreationDate(store, id, 0); 
     375      } 
     376    } 
     377    else MetadataTools.setDefaultCreationDate(store, id, 0); 
     378 
     379    for (int i=0; i<channels.length; i++) { 
     380      store.setLogicalChannelName(channels[i], 0, i); 
     381    } 
     382 
     383    store.setDimensionsPhysicalSizeX(pixelSize, 0, 0); 
     384    store.setDimensionsPhysicalSizeY(pixelSize, 0, 0); 
     385    store.setDimensionsPhysicalSizeZ(sliceThickness, 0, 0); 
     386 
     387    for (int i=0; i<getImageCount(); i++) { 
     388      store.setPlaneTimingExposureTime(exposureTime, 0, 0, i); 
     389      // TODO : timestamps not correctly parsed 
     390      //store.setPlaneTimingDeltaT(timestamps[i], 0, 0, i); 
     391    } 
    337392  } 
    338393 
Note: See TracChangeset for help on using the changeset viewer.