Changeset 5135


Ignore:
Timestamp:
05/29/09 13:34:07 (11 years ago)
Author:
melissa
Message:

Fixed core metadata parsing bugs in FV1000Reader.

Location:
trunk/components
Files:
2 edited

Legend:

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

    r5128 r5135  
    727727    pinholeSizes = new Vector(); 
    728728 
     729    core[0].dimensionOrder = "XY"; 
     730 
    729731    for (int i=0, ii=0; ii<getImageCount(); i++, ii++) { 
    730732      String file = (String) filenames.get(new Integer(i)); 
     
    738740 
    739741      Location ptyFile = new Location(file); 
    740       if (!ptyFile.exists()) { 
     742      if (!isOIB && !ptyFile.exists()) { 
    741743        warn("Could not find .pty file (" + file + "); guessing at the " + 
    742744          "corresponding TIFF file."); 
     
    751753      st = new StringTokenizer(s, "\n"); 
    752754 
     755      boolean zAxis = false, cAxis = false, tAxis = false; 
     756 
    753757      while (st.hasMoreTokens()) { 
    754758        line = st.nextToken().trim(); 
     759        line = DataTools.stripString(line); 
     760 
     761        if (line.equals("[Axis 2 Parameters]")) cAxis = true; 
     762        else if (line.equals("[Axis 3 Parameters]")) zAxis = true; 
     763        else if (line.equals("[Axis 4 Parameters]")) tAxis = true; 
     764 
    755765        if (!line.startsWith("[") && (line.indexOf("=") > 0)) { 
    756           key = line.substring(0, line.indexOf("=") - 1).trim(); 
     766          key = line.substring(0, line.indexOf("=")).trim(); 
    757767          value = line.substring(line.indexOf("=") + 1).trim(); 
    758           key = DataTools.stripString(key); 
    759           value = DataTools.stripString(value); 
     768          value = value.replaceAll("\"", ""); 
    760769          if (key.equals("DataName")) { 
    761             value = value.substring(1, value.length() - 1); 
    762770            if (!isPreviewName(value)) { 
    763771              value = value.replaceAll("/", File.separator); 
     
    774782            } 
    775783          } 
    776           value = value.replaceAll("\"", ""); 
     784          else if (key.equals("Number")) { 
     785            boolean addAxis = Integer.parseInt(value) > 1; 
     786            if (zAxis) { 
     787              if (addAxis && getDimensionOrder().indexOf("Z") == -1) { 
     788                core[0].dimensionOrder += "Z"; 
     789              } 
     790              zAxis = false; 
     791            } 
     792            if (cAxis) { 
     793              if (addAxis && getDimensionOrder().indexOf("C") == -1) { 
     794                core[0].dimensionOrder += "C"; 
     795              } 
     796              cAxis = false; 
     797            } 
     798            if (tAxis) { 
     799              if (addAxis && getDimensionOrder().indexOf("T") == -1) { 
     800                core[0].dimensionOrder += "T"; 
     801              } 
     802              tAxis = false; 
     803            } 
     804          } 
     805 
    777806          addMeta("Image " + ii + " : " + key, value); 
    778807 
     
    879908    } 
    880909 
    881     if (getSizeZ() * getSizeT() * getSizeC() > getImageCount()) { 
     910    if (getSizeZ() * getSizeT() * getSizeC() != getImageCount()) { 
    882911      int diff = (getSizeZ() * getSizeC() * getSizeT()) - getImageCount(); 
    883       if (diff == previewNames.size()) { 
     912      if (diff == previewNames.size() || diff < 0) { 
     913        diff /= getSizeC(); 
    884914        if (getSizeT() > 1 && getSizeZ() == 1) core[0].sizeT -= diff; 
    885915        else if (getSizeZ() > 1 && getSizeT() == 1) core[0].sizeZ -= diff; 
     
    888918    } 
    889919 
    890     core[0].dimensionOrder = "XYCZT"; 
     920    if (getDimensionOrder().indexOf("C") == -1) core[0].dimensionOrder += "C"; 
     921    if (getDimensionOrder().indexOf("Z") == -1) core[0].dimensionOrder += "Z"; 
     922    if (getDimensionOrder().indexOf("T") == -1) core[0].dimensionOrder += "T"; 
    891923 
    892924    switch (imageDepth) { 
     
    967999    if (creationDate != null) { 
    9681000      creationDate = creationDate.replaceAll("'", ""); 
    969       SimpleDateFormat parse = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    970       Date date = parse.parse(creationDate, new ParsePosition(0)); 
    971       SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    972       creationDate = fmt.format(date); 
     1001      creationDate = DataTools.formatDate(creationDate, "yyyy-MM-dd HH:mm:ss"); 
    9731002    } 
    9741003 
  • trunk/components/common/src/loci/common/DataTools.java

    r5110 r5135  
    791791    SimpleDateFormat f = new SimpleDateFormat(format); 
    792792    Date d = f.parse(date, new ParsePosition(0)); 
     793    if (d == null) return null; 
    793794    f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    794795    return f.format(d); 
     
    798799    SimpleDateFormat f = new SimpleDateFormat(format); 
    799800    Date d = f.parse(date, new ParsePosition(0)); 
     801    if (d == null) return -1; 
    800802    return d.getTime(); 
    801803  } 
Note: See TracChangeset for help on using the changeset viewer.