Changeset 3491


Ignore:
Timestamp:
12/20/07 10:23:59 (12 years ago)
Author:
melissa
Message:

Smarter series name parsing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/LeicaReader.java

    r3456 r3491  
    439439          Location test = new Location((String) f.get(f.size() - 1)); 
    440440          if (tiffsExist) tiffsExist = test.exists(); 
    441  
    442           // get the series name from the stored file name 
    443           int firstUnderscore = prefix.indexOf("_") + 1; 
    444           int secondUnderscore = prefix.indexOf("_", firstUnderscore); 
    445           String name = null; 
    446           if (firstUnderscore < 0 || secondUnderscore < 0) name = prefix; 
    447           else { 
    448             String s = prefix.substring(firstUnderscore, secondUnderscore); 
    449             if (seriesNames.contains(s)) { 
    450               int suffix = 2; 
    451               do { 
    452                 name = s + "-" + suffix; 
    453                 suffix++; 
    454               } 
    455               while (seriesNames.contains(name)); 
    456             } 
    457             else name = s; 
    458           } 
    459           seriesNames.add(name); 
    460441        } 
    461442 
     
    616597    if (headerIFDs == null) headerIFDs = ifds; 
    617598 
     599    int fileLength = 0; 
     600 
    618601    for (int i=0; i<headerIFDs.length; i++) { 
    619602      byte[] temp = (byte[]) headerIFDs[i].get(new Integer(10)); 
     
    625608        addMeta("Number of Series", 
    626609          new Integer(DataTools.bytesToInt(temp, 4, 4, core.littleEndian[0]))); 
    627         addMeta("Length of filename", 
    628           new Integer(DataTools.bytesToInt(temp, 8, 4, core.littleEndian[0]))); 
     610        fileLength = DataTools.bytesToInt(temp, 8, 4, core.littleEndian[0]); 
     611        addMeta("Length of filename", new Integer(fileLength)); 
    629612        Integer fileExtLen = 
    630613          new Integer(DataTools.bytesToInt(temp, 12, 4, core.littleEndian[0])); 
     
    638621        // the image data 
    639622        // ID_IMAGES 
    640  
    641         core.sizeZ[i] = DataTools.bytesToInt(temp, 0, 4, core.littleEndian[0]); 
    642         core.sizeX[i] = DataTools.bytesToInt(temp, 4, 4, core.littleEndian[0]); 
    643         core.sizeY[i] = DataTools.bytesToInt(temp, 8, 4, core.littleEndian[0]); 
     623        RandomAccessStream s = new RandomAccessStream(temp); 
     624        s.order(core.littleEndian[0]); 
     625 
     626        core.sizeZ[i] = s.readInt(); 
     627        core.sizeX[i] = s.readInt(); 
     628        core.sizeY[i] = s.readInt(); 
    644629 
    645630        addMeta("Number of images", new Integer(core.sizeZ[i])); 
    646631        addMeta("Image width", new Integer(core.sizeX[i])); 
    647632        addMeta("Image height", new Integer(core.sizeY[i])); 
    648         addMeta("Bits per Sample", 
    649           new Integer(DataTools.bytesToInt(temp, 12, 4, core.littleEndian[0]))); 
    650         addMeta("Samples per pixel", 
    651           new Integer(DataTools.bytesToInt(temp, 16, 4, core.littleEndian[0]))); 
     633        addMeta("Bits per Sample", new Integer(s.readInt())); 
     634        addMeta("Samples per pixel", new Integer(s.readInt())); 
     635 
     636        String prefix = DataTools.stripString(s.readString(fileLength * 2)); 
     637        s.close(); 
     638 
     639        StringTokenizer st = new StringTokenizer(prefix, "_"); 
     640        StringBuffer buf = new StringBuffer(); 
     641        st.nextToken(); 
     642        while (st.hasMoreTokens()) { 
     643          String token = st.nextToken(); 
     644          String lcase = token.toLowerCase(); 
     645          if (!lcase.endsWith(".tif") && !lcase.endsWith(".tiff") && 
     646            !lcase.startsWith("ch0") && !lcase.startsWith("c0") && 
     647            !lcase.startsWith("z0")) 
     648          { 
     649            if (buf.length() > 0) buf.append("_"); 
     650            buf.append(token); 
     651          } 
     652        } 
     653        seriesNames.add(buf.toString()); 
    652654      } 
    653655 
Note: See TracChangeset for help on using the changeset viewer.