Changeset 7122


Ignore:
Timestamp:
10/24/10 14:08:57 (9 years ago)
Author:
melissa
Message:

Fixed TIFF file ordering problems.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/4.2/components/bio-formats/src/loci/formats/in/BDReader.java

    r7007 r7122  
    7272  private Vector<String> wellLabels = new Vector<String>(); 
    7373  private String plateName, plateDescription; 
    74   private String[] tiffs; 
     74  private String[][] tiffs; 
    7575  private MinimalTiffReader reader; 
    7676 
     
    132132 
    133133    if (!noPixels && tiffs != null) { 
    134       int offset = getSeries() * getImageCount(); 
    135       for (int i = 0; i<getImageCount(); i++) { 
    136         if (offset + i < tiffs.length) { 
    137           if (tiffs[offset + i] != null) { 
    138             files.add(tiffs[offset + i]); 
    139           } 
    140         } 
     134      for (int i = 0; i<tiffs[getSeries()].length; i++) { 
     135        files.add(tiffs[getSeries()][i]); 
    141136      } 
    142137    } 
     
    178173    FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); 
    179174 
    180     int index = getSeries() * getImageCount() + no; 
    181     if (tiffs[index] != null) { 
    182       reader.setId(tiffs[index]); 
     175    String file = getFilename(getSeries(), no); 
     176 
     177    if (file != null) { 
     178      reader.setId(file); 
    183179      reader.openBytes(0, buf, x, y, w, h); 
    184180      reader.close(); 
     
    242238 
    243239    reader = new MinimalTiffReader(); 
    244     reader.setId(tiffs[0]); 
     240    reader.setId(tiffs[0][0]); 
    245241 
    246242    int sizeX = reader.getSizeX(); 
     
    442438 
    443439    Location dir = new Location(id).getAbsoluteFile().getParentFile(); 
    444     for (String filename : dir.list()) { 
     440    String[] wellList = dir.list(); 
     441    Arrays.sort(wellList); 
     442    for (String filename : wellList) { 
    445443      if (filename.startsWith("Well ")) { 
    446444        wellLabels.add(filename.split("\\s|\\.")[1]); 
     
    473471    Location well = new Location(dir.getAbsolutePath(), 
    474472      "Well " + wellLabels.get(1)); 
    475     for (String filename : well.list()) { 
    476       if (filename.startsWith(channelNames.get(0)) && filename.endsWith(".tif")) 
    477       { 
    478         core[0].sizeT++; 
     473    for (String channelName : channelNames) { 
     474      int timepoints = 0; 
     475      for (String filename : well.list()) { 
     476        if (filename.startsWith(channelName) && filename.endsWith(".tif")) { 
     477          timepoints++; 
     478        } 
     479      } 
     480      if (timepoints > getSizeT()) { 
     481        core[0].sizeT = timepoints; 
    479482      } 
    480483    } 
     
    512515  } 
    513516 
    514   private String[] getTiffs(String dir) { 
     517  private String[][] getTiffs(String dir) { 
    515518    Location f = new Location(dir); 
    516     Vector<String> files = new Vector<String>(); 
    517  
    518     for (String filename : f.list(true)) { 
     519    Vector<Vector<String>> files = new Vector<Vector<String>>(); 
     520 
     521    String[] wells = f.list(true); 
     522    Arrays.sort(wells); 
     523 
     524    for (String filename : wells) { 
    519525      Location file = new Location(f, filename).getAbsoluteFile(); 
    520526      if (file.isDirectory() && filename.startsWith("Well ")) { 
    521         for (String tiff : file.list(true)) { 
     527        String[] list = file.list(true); 
     528        Vector<String> tiffList = new Vector<String>(); 
     529        Arrays.sort(list); 
     530        for (String tiff : list) { 
    522531          if (tiff.matches(".* - n\\d\\d\\d\\d\\d\\d\\.tif")) { 
    523             files.add(new Location(file, tiff).getAbsolutePath()); 
     532            tiffList.add(new Location(file, tiff).getAbsolutePath()); 
    524533          } 
    525534        } 
    526       } 
    527     } 
    528  
    529     String[] tiffFiles = files.toArray(new String[files.size()]); 
    530     Arrays.sort(tiffFiles); 
     535        files.add(tiffList); 
     536      } 
     537    } 
     538 
     539    String[][] tiffFiles = new String[files.size()][]; 
     540    for (int i=0; i<tiffFiles.length; i++) { 
     541      tiffFiles[i] = files.get(i).toArray(new String[0]); 
     542    } 
    531543    return tiffFiles; 
    532544  } 
     
    559571  } 
    560572 
     573  private String getFilename(int series, int no) { 
     574    int[] zct = getZCTCoords(no); 
     575    String channel = channelNames.get(zct[1]); 
     576 
     577    for (int i=0; i<tiffs[series].length; i++) { 
     578      String name = tiffs[series][i]; 
     579      name = name.substring(name.lastIndexOf(File.separator) + 1); 
     580      name = name.substring(0, name.lastIndexOf(".")); 
     581 
     582      String index = name.substring(name.lastIndexOf("n") + 1); 
     583 
     584      if (name.startsWith(channel) && Integer.parseInt(index) == zct[2]) { 
     585        return tiffs[series][i]; 
     586      } 
     587    } 
     588    return null; 
     589  } 
     590 
    561591} 
  • trunk/components/bio-formats/src/loci/formats/in/BDReader.java

    r6881 r7122  
    7272  private Vector<String> wellLabels = new Vector<String>(); 
    7373  private String plateName, plateDescription; 
    74   private String[] tiffs; 
     74  private String[][] tiffs; 
    7575  private MinimalTiffReader reader; 
    7676 
     
    132132 
    133133    if (!noPixels && tiffs != null) { 
    134       int offset = getSeries() * getImageCount(); 
    135       for (int i = 0; i<getImageCount(); i++) { 
    136         if (offset + i < tiffs.length) { 
    137           if (tiffs[offset + i] != null) { 
    138             files.add(tiffs[offset + i]); 
    139           } 
    140         } 
     134      for (int i = 0; i<tiffs[getSeries()].length; i++) { 
     135        files.add(tiffs[getSeries()][i]); 
    141136      } 
    142137    } 
     
    178173    FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); 
    179174 
    180     int index = getSeries() * getImageCount() + no; 
    181     if (tiffs[index] != null) { 
    182       reader.setId(tiffs[index]); 
     175    String file = getFilename(getSeries(), no); 
     176 
     177    if (file != null) { 
     178      reader.setId(file); 
    183179      reader.openBytes(0, buf, x, y, w, h); 
    184180      reader.close(); 
     
    242238 
    243239    reader = new MinimalTiffReader(); 
    244     reader.setId(tiffs[0]); 
     240    reader.setId(tiffs[0][0]); 
    245241 
    246242    int sizeX = reader.getSizeX(); 
     
    442438 
    443439    Location dir = new Location(id).getAbsoluteFile().getParentFile(); 
    444     for (String filename : dir.list()) { 
     440    String[] wellList = dir.list(); 
     441    Arrays.sort(wellList); 
     442    for (String filename : wellList) { 
    445443      if (filename.startsWith("Well ")) { 
    446444        wellLabels.add(filename.split("\\s|\\.")[1]); 
     
    473471    Location well = new Location(dir.getAbsolutePath(), 
    474472      "Well " + wellLabels.get(1)); 
    475     for (String filename : well.list()) { 
    476       if (filename.startsWith(channelNames.get(0)) && filename.endsWith(".tif")) 
    477       { 
    478         core[0].sizeT++; 
     473    for (String channelName : channelNames) { 
     474      int timepoints = 0; 
     475      for (String filename : well.list()) { 
     476        if (filename.startsWith(channelName) && filename.endsWith(".tif")) { 
     477          timepoints++; 
     478        } 
     479      } 
     480      if (timepoints > getSizeT()) { 
     481        core[0].sizeT = timepoints; 
    479482      } 
    480483    } 
     
    512515  } 
    513516 
    514   private String[] getTiffs(String dir) { 
     517  private String[][] getTiffs(String dir) { 
    515518    Location f = new Location(dir); 
    516     Vector<String> files = new Vector<String>(); 
    517  
    518     for (String filename : f.list(true)) { 
     519    Vector<Vector<String>> files = new Vector<Vector<String>>(); 
     520 
     521    String[] wells = f.list(true); 
     522    Arrays.sort(wells); 
     523 
     524    for (String filename : wells) { 
    519525      Location file = new Location(f, filename).getAbsoluteFile(); 
    520526      if (file.isDirectory() && filename.startsWith("Well ")) { 
    521         for (String tiff : file.list(true)) { 
     527        String[] list = file.list(true); 
     528        Vector<String> tiffList = new Vector<String>(); 
     529        Arrays.sort(list); 
     530        for (String tiff : list) { 
    522531          if (tiff.matches(".* - n\\d\\d\\d\\d\\d\\d\\.tif")) { 
    523             files.add(new Location(file, tiff).getAbsolutePath()); 
     532            tiffList.add(new Location(file, tiff).getAbsolutePath()); 
    524533          } 
    525534        } 
    526       } 
    527     } 
    528  
    529     String[] tiffFiles = files.toArray(new String[files.size()]); 
    530     Arrays.sort(tiffFiles); 
     535        files.add(tiffList); 
     536      } 
     537    } 
     538 
     539    String[][] tiffFiles = new String[files.size()][]; 
     540    for (int i=0; i<tiffFiles.length; i++) { 
     541      tiffFiles[i] = files.get(i).toArray(new String[0]); 
     542    } 
    531543    return tiffFiles; 
    532544  } 
     
    559571  } 
    560572 
     573  private String getFilename(int series, int no) { 
     574    int[] zct = getZCTCoords(no); 
     575    String channel = channelNames.get(zct[1]); 
     576 
     577    for (int i=0; i<tiffs[series].length; i++) { 
     578      String name = tiffs[series][i]; 
     579      name = name.substring(name.lastIndexOf(File.separator) + 1); 
     580      name = name.substring(0, name.lastIndexOf(".")); 
     581 
     582      String index = name.substring(name.lastIndexOf("n") + 1); 
     583 
     584      if (name.startsWith(channel) && Integer.parseInt(index) == zct[2]) { 
     585        return tiffs[series][i]; 
     586      } 
     587    } 
     588    return null; 
     589  } 
     590 
    561591} 
Note: See TracChangeset for help on using the changeset viewer.