Changeset 4674


Ignore:
Timestamp:
12/04/08 09:48:24 (11 years ago)
Author:
melissa
Message:

Instead of assuming that all TIFF files are present in the metadata file, generate the list using the first TIFF file and the axis sizes.

File:
1 edited

Legend:

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

    r4648 r4674  
    5555  private String metadataFile; 
    5656 
    57   private String base; 
    5857  private String[] channels; 
    5958 
     
    114113    FormatTools.checkPlaneNumber(this, no); 
    115114    int[] coords = getZCTCoords(no); 
    116     tiffReader.setId(base + coords[0] + "_" + channels[coords[1]] + "_" + 
    117       coords[2] + ".tif"); 
     115    tiffReader.setId((String) tiffs.get(no)); 
    118116    return tiffReader.openBytes(0, buf, x, y, w, h); 
    119117  } 
     
    164162    status("Finding image file names"); 
    165163 
    166     // first find the name of each TIFF file 
     164    // find the name of a TIFF file 
     165    String baseTiff = null; 
    167166    tiffs = new Vector(); 
    168167    int pos = 0; 
     
    171170      if (pos == -1 || pos >= in.length()) break; 
    172171      String name = s.substring(s.indexOf(":", pos), s.indexOf(",", pos)); 
    173       tiffs.add(0, parent + name.substring(3, name.length() - 1)); 
     172      baseTiff = parent + name.substring(3, name.length() - 1); 
    174173      pos++; 
    175174    } 
    176  
    177     base = (String) tiffs.get(0); 
    178     base = base.substring(0, base.indexOf("_", 
    179       base.lastIndexOf(File.separator)) + 1); 
    180175 
    181176    // now parse the rest of the metadata 
     
    225220          value = value.replaceAll("\n", ""); 
    226221        } 
    227         else { 
    228           value = token.substring(token.indexOf("[") + 1, token.indexOf("]")); 
    229         } 
     222 
     223        int startIndex = value.indexOf("["); 
     224        int endIndex = value.indexOf("]"); 
     225        if (endIndex == -1) endIndex = value.length(); 
     226 
     227        value = value.substring(startIndex + 1, endIndex); 
    230228        value = value.trim(); 
    231229        value = value.substring(0, value.length() - 1); 
     
    272270 
    273271    } 
     272 
     273    // build list of TIFF files 
     274 
     275    String prefix = ""; 
     276    if (baseTiff.indexOf(File.separator) != -1) { 
     277      prefix = baseTiff.substring(0, baseTiff.lastIndexOf(File.separator) + 1); 
     278      baseTiff = baseTiff.substring(baseTiff.lastIndexOf(File.separator) + 1); 
     279    } 
     280 
     281    String[] blocks = baseTiff.split("_"); 
     282    StringBuffer filename = new StringBuffer(); 
     283    for (int t=0; t<getSizeT(); t++) { 
     284      for (int c=0; c<getSizeC(); c++) { 
     285        for (int z=0; z<getSizeZ(); z++) { 
     286          // file names are of format: 
     287          // img_<T>_<channel name>_<T>.tif 
     288          filename.append(prefix); 
     289          filename.append(blocks[0]); 
     290          filename.append("_"); 
     291 
     292          int zeros = blocks[1].length() - String.valueOf(t).length(); 
     293          for (int q=0; q<zeros; q++) { 
     294            filename.append("0"); 
     295          } 
     296          filename.append(t); 
     297          filename.append("_"); 
     298 
     299          filename.append(channels[c]); 
     300          filename.append("_"); 
     301 
     302          zeros = blocks[3].length() - String.valueOf(z).length() - 4; 
     303          for (int q=0; q<zeros; q++) { 
     304            filename.append("0"); 
     305          } 
     306          filename.append(z); 
     307          filename.append(".tif"); 
     308 
     309          tiffs.add(filename.toString()); 
     310          filename.delete(0, filename.length()); 
     311        } 
     312      } 
     313    } 
     314 
    274315    tiffReader.setId((String) tiffs.get(0)); 
    275316 
     
    284325    core[0].interleaved = false; 
    285326    core[0].littleEndian = tiffReader.isLittleEndian(); 
    286     core[0].imageCount = tiffs.size(); 
     327    core[0].imageCount = getSizeZ() * getSizeC() * getSizeT(); 
    287328    core[0].indexed = false; 
    288329    core[0].falseColor = false; 
Note: See TracChangeset for help on using the changeset viewer.