Changeset 5614


Ignore:
Timestamp:
10/19/09 05:28:30 (10 years ago)
Author:
melissa
Message:

Fixed several bugs exposed during testing.

Files:
22 edited

Legend:

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

    r5584 r5614  
    10391039        store.setLogicalChannelEmWave(channel.emWave, 0, channelIndex); 
    10401040      } 
    1041       store.setLogicalChannelExWave(channel.exWave, 0, channelIndex); 
     1041      if (channel.exWave.intValue() > 0) { 
     1042        store.setLogicalChannelExWave(channel.exWave, 0, channelIndex); 
     1043      } 
    10421044      store.setLogicalChannelFilterSet(filterSet, 0, channelIndex); 
    10431045 
     
    10451047        MetadataTools.createLSID("LightSource", 0, channelIndex); 
    10461048      store.setLightSourceSettingsLightSource(lightSourceID, 0, channelIndex); 
    1047       store.setLightSourceSettingsWavelength(channel.exWave, 0, channelIndex); 
     1049      if (channel.exWave.intValue() > 0) { 
     1050        store.setLightSourceSettingsWavelength(channel.exWave, 0, channelIndex); 
     1051      } 
    10481052 
    10491053      // populate Filter data 
  • branches/4.1/components/bio-formats/src/loci/formats/in/IPLabReader.java

    r5596 r5614  
    7373    if (!FormatTools.validStream(stream, blockLen, false)) return false; 
    7474    String s = stream.readString(4); 
    75     boolean big = s.equals("iiii"); 
    76     boolean little = s.equals("mmmm"); 
     75    boolean little = s.equals("iiii"); 
     76    boolean big = s.equals("mmmm"); 
    7777    if (!big && !little) return false; 
    7878    stream.order(little); 
  • branches/4.1/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r5597 r5614  
    172172    if (stks[series].length == 1) ndx = 0; 
    173173    String file = stks[series][ndx]; 
     174    if (file == null) return buf; 
    174175 
    175176    // the original file is a .nd file, so we need to construct a new reader 
     
    406407      for (int s=0; s<stks.length; s++) { 
    407408        for (int f=0; f<stks[s].length; f++) { 
    408           String original = stks[s][f]; 
    409409          Location l = new Location(ndfile.getParent(), stks[s][f]); 
    410           debug("Looking for file: " + stks[s][f]); 
    411410          if (!l.exists()) { 
    412411            // '%' can be converted to '-' 
     
    414413              stks[s][f] = stks[s][f].replaceAll("%", "-"); 
    415414              l = new Location(ndfile.getParent(), stks[s][f]); 
    416               debug("Looking for file: " + stks[s][f]); 
    417415              if (!l.exists()) { 
    418416                // try replacing extension 
     
    420418                  stks[s][f].lastIndexOf(".")) + ".TIF"; 
    421419                l = new Location(ndfile.getParent(), stks[s][f]); 
    422                 debug("Looking for file: " + stks[s][f]); 
    423420                if (!l.exists()) { 
    424421                  stks[s][f] = stks[s][f].substring(0, 
    425422                    stks[s][f].lastIndexOf(".")) + ".tif"; 
    426423                  l = new Location(ndfile.getParent(), stks[s][f]); 
    427                   debug("Looking for file: " + stks[s][f]); 
    428424                  if (!l.exists()) { 
    429                     stks = null; 
    430                     throw new FormatException("Missing pixels file: " + 
    431                       original); 
     425                    stks[s][f] = null; 
    432426                  } 
    433427                } 
     
    440434                stks[s][f].lastIndexOf(".")) + ".TIF"; 
    441435              l = new Location(ndfile.getParent(), stks[s][f]); 
    442               debug("Looking for file: " + stks[s][f]); 
    443436              if (!l.exists()) { 
    444437                stks[s][f] = stks[s][f].substring(0, 
    445438                  stks[s][f].lastIndexOf(".")) + ".tif"; 
    446439                l = new Location(ndfile.getParent(), stks[s][f]); 
    447                 debug("Looking for file: " + stks[s][f]); 
    448440                if (!l.exists()) { 
    449                   stks = null; 
    450                   throw new FormatException("Missing pixels file: " + 
    451                     original); 
     441                  stks[s][f] = null; 
    452442                } 
    453443              } 
    454444            } 
    455445          } 
    456           if (stks != null) stks[s][f] = l.getAbsolutePath(); 
    457           else break; 
     446          if (stks != null && l.exists()) stks[s][f] = l.getAbsolutePath(); 
     447          else if (stks == null) break; 
    458448        } 
    459449        if (stks == null) break; 
    460450      } 
    461451 
    462       RandomAccessInputStream s = new RandomAccessInputStream(stks[0][0]); 
     452      int q = 0; 
     453      int f = 0; 
     454      String file = stks[q][f]; 
     455      while (file == null) { 
     456        if (f < stks[q].length - 1) f++; 
     457        else if (q < stks.length - 1) { 
     458          q++; 
     459          f = 0; 
     460        } 
     461        file = stks[q][f]; 
     462      } 
     463 
     464      RandomAccessInputStream s = new RandomAccessInputStream(file); 
    463465      TiffParser tp = new TiffParser(s); 
    464466      IFD ifd = tp.getFirstIFD(); 
     
    507509    } 
    508510 
    509     if (getSizeZ() * getSizeT() * (isRGB() ? 1 : getSizeC()) != getImageCount()) 
    510     { 
    511       for (int i=0; i<getSeriesCount(); i++) { 
    512         core[i].sizeZ = getImageCount(); 
    513         core[i].sizeT = 1; 
    514         if (!isRGB()) core[i].sizeC = 1; 
    515       } 
    516     } 
    517  
    518511    Vector<String> timestamps = null; 
    519512    MetamorphHandler handler = null; 
     
    534527      String comment = null; 
    535528 
    536       if (stks != null) { 
     529      if (stks != null && stks[i][0] != null) { 
    537530        RandomAccessInputStream stream = 
    538531          new RandomAccessInputStream(stks[i][0]); 
     
    658651        Float exposureTime = 0f; 
    659652 
    660         if (coords[2] > 0 && stks != null) { 
     653        if (coords[2] > 0 && stks != null && lastFile >= 0 && 
     654          stks[i][lastFile] != null) 
     655        { 
    661656          int fileIndex = getIndex(0, 0, coords[2]) / getSizeZ(); 
    662657          if (fileIndex != lastFile) { 
     
    898893    if (getSizeZ() == 0) core[0].sizeZ = 1; 
    899894    if (getSizeT() == 0) core[0].sizeT = 1; 
     895 
     896    if (getSizeZ() * getSizeT() * (isRGB() ? 1 : getSizeC()) != getImageCount()) 
     897    { 
     898      core[0].sizeZ = getImageCount(); 
     899      core[0].sizeT = 1; 
     900      if (!isRGB()) core[0].sizeC = 1; 
     901    } 
    900902  } 
    901903 
  • branches/4.1/components/bio-formats/src/loci/formats/in/NikonReader.java

    r5550 r5614  
    192192    options.bitsPerSample = dataSize; 
    193193    options.curve = curve; 
    194     options.vPredictor = new int[vPredictor.length]; 
     194    if (vPredictor != null) { 
     195      options.vPredictor = new int[vPredictor.length]; 
     196    } 
    195197    options.lossy = lossyCompression; 
    196198    options.split = split; 
     
    356358                new RandomAccessInputStream(buf); 
    357359              TiffParser tp = new TiffParser(makerNote); 
    358               IFD note = tp.getFirstIFD(); 
     360              IFD note = null; 
     361              try { 
     362                note = tp.getFirstIFD(); 
     363              } 
     364              catch (Exception e) { 
     365                traceDebug(e); 
     366              } 
    359367              if (note != null) { 
    360368                for (Integer nextKey : note.keySet()) { 
  • branches/4.1/components/bio-formats/src/loci/formats/in/NikonTiffReader.java

    r5607 r5614  
    223223    store.setObjectiveSettingsObjective(objectiveID, 0); 
    224224    store.setObjectiveNominalMagnification(new Integer(magnification), 0, 0); 
     225 
     226    if (correction == null) correction = "Unknown"; 
    225227    store.setObjectiveCorrection(correction, 0, 0); 
    226228    store.setObjectiveLensNA(new Float(lensNA), 0, 0); 
    227229    store.setObjectiveWorkingDistance(new Float(workingDistance), 0, 0); 
     230    if (immersion == null) immersion = "Unknown"; 
    228231    store.setObjectiveImmersion(immersion, 0, 0); 
    229232 
    230233    for (int i=0; i<wavelength.size(); i++) { 
    231       store.setLightSourceID("LightSource:" + laserIDs.get(i), 0, i); 
     234      String laser = MetadataTools.createLSID("LightSource", 0, i); 
     235      store.setLightSourceID(laser, 0, i); 
     236      store.setLightSourceModel(laserIDs.get(i), 0, i); 
    232237      store.setLaserWavelength(wavelength.get(i), 0, i); 
    233238      store.setLaserType("Unknown", 0, i); 
  • branches/4.1/components/bio-formats/src/loci/formats/in/PerkinElmerReader.java

    r5544 r5614  
    138138 
    139139    Location htmlFile = new Location(prefix + ".htm"); 
     140    if (ext.toLowerCase().equals("htm")) { 
     141      htmlFile = new Location(name).getAbsoluteFile(); 
     142    } 
    140143    if (!htmlFile.exists()) { 
    141144      htmlFile = new Location(prefix + ".HTM"); 
  • branches/4.1/components/bio-formats/src/loci/formats/in/ScanrReader.java

    r5574 r5614  
    2525 
    2626import java.io.IOException; 
    27 import java.util.Arrays; 
    2827import java.util.Vector; 
    2928 
     
    114113    Vector<String> files = new Vector<String>(); 
    115114    for (String file : metadataFiles) { 
    116       files.add(file); 
     115      if (file != null) files.add(file); 
    117116    } 
    118117 
     
    120119      int offset = getSeries() * getImageCount(); 
    121120      for (int i=0; i<getImageCount(); i++) { 
    122         files.add(tiffs[offset + i]); 
     121        if (tiffs[offset + i] != null) { 
     122          files.add(tiffs[offset + i]); 
     123        } 
    123124      } 
    124125    } 
     
    217218 
    218219    int next = 0; 
    219     for (int i=0; i<getSeriesCount(); i++) { 
     220    for (int i=0; i<nSeries; i++) { 
    220221      int well = i / (fieldRows * fieldColumns); 
    221222      String wellPos = String.valueOf(well + 1); 
  • branches/4.1/components/bio-formats/src/loci/formats/in/TCSReader.java

    r5517 r5614  
    379379    core[0].interleaved = tiffReaders[0].isInterleaved(); 
    380380    core[0].falseColor = true; 
     381    core[0].indexed = tiffReaders[0].isIndexed(); 
    381382 
    382383    if (isRGB()) core[0].imageCount /= (getSizeC() / channelCount); 
  • branches/4.1/components/bio-formats/src/loci/formats/in/ZeissZVIReader.java

    r5553 r5614  
    760760        else if (key.startsWith("Emission Wavelength")) { 
    761761          if (cIndex != -1 && nextEmWave < effectiveSizeC) { 
    762             store.setLogicalChannelEmWave(new Integer(value), 0, nextEmWave); 
    763             nextEmWave++; 
     762            Integer wave = new Integer(value); 
     763            if (wave.intValue() > 0) { 
     764              store.setLogicalChannelEmWave(wave, 0, nextEmWave); 
     765              nextEmWave++; 
     766            } 
    764767          } 
    765768        } 
    766769        else if (key.startsWith("Excitation Wavelength")) { 
    767770          if (cIndex != -1 && nextExWave < effectiveSizeC) { 
    768             store.setLogicalChannelExWave(new Integer(value), 0, nextExWave); 
    769             nextExWave++; 
     771            Integer wave = new Integer(value); 
     772            if (wave.intValue() > 0) { 
     773              store.setLogicalChannelExWave(wave, 0, nextExWave); 
     774              nextExWave++; 
     775            } 
    770776          } 
    771777        } 
  • trunk/components/bio-formats/src/loci/formats/gui/AWTImageTools.java

    r5590 r5614  
    11031103    byte[][] pix = getPixelBytes(img, false); 
    11041104    return makeImage(pix, img.getWidth(), img.getHeight(), 
    1105       bpp, fp, false, signed); 
     1105      bpp, fp, false, false); 
    11061106  } 
    11071107 
     
    14891489    } 
    14901490 
     1491    int pixelType = getPixelType(source); 
     1492 
    14911493    BufferedImage result = null; 
    14921494    ColorModel sourceModel = source.getColorModel(); 
     
    15141516    } 
    15151517    else { 
     1518      if (FormatTools.isSigned(pixelType)) { 
     1519        source = makeUnsigned(source); 
     1520        sourceModel = null; 
     1521      } 
    15161522      Image scaled = 
    15171523        scaleAWT(source, width, height, Image.SCALE_AREA_AVERAGING); 
  • trunk/components/bio-formats/src/loci/formats/in/FV1000Reader.java

    r5584 r5614  
    10391039        store.setLogicalChannelEmWave(channel.emWave, 0, channelIndex); 
    10401040      } 
    1041       store.setLogicalChannelExWave(channel.exWave, 0, channelIndex); 
     1041      if (channel.exWave.intValue() > 0) { 
     1042        store.setLogicalChannelExWave(channel.exWave, 0, channelIndex); 
     1043      } 
    10421044      store.setLogicalChannelFilterSet(filterSet, 0, channelIndex); 
    10431045 
     
    10451047        MetadataTools.createLSID("LightSource", 0, channelIndex); 
    10461048      store.setLightSourceSettingsLightSource(lightSourceID, 0, channelIndex); 
    1047       store.setLightSourceSettingsWavelength(channel.exWave, 0, channelIndex); 
     1049      if (channel.exWave.intValue() > 0) { 
     1050        store.setLightSourceSettingsWavelength(channel.exWave, 0, channelIndex); 
     1051      } 
    10481052 
    10491053      // populate Filter data 
  • trunk/components/bio-formats/src/loci/formats/in/IPLabReader.java

    r5596 r5614  
    7373    if (!FormatTools.validStream(stream, blockLen, false)) return false; 
    7474    String s = stream.readString(4); 
    75     boolean big = s.equals("iiii"); 
    76     boolean little = s.equals("mmmm"); 
     75    boolean little = s.equals("iiii"); 
     76    boolean big = s.equals("mmmm"); 
    7777    if (!big && !little) return false; 
    7878    stream.order(little); 
  • trunk/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r5597 r5614  
    509509    } 
    510510 
    511     if (getSizeZ() * getSizeT() * (isRGB() ? 1 : getSizeC()) != getImageCount()) 
    512     { 
    513       for (int i=0; i<getSeriesCount(); i++) { 
    514         core[i].sizeZ = getImageCount(); 
    515         core[i].sizeT = 1; 
    516         if (!isRGB()) core[i].sizeC = 1; 
    517       } 
    518     } 
    519  
    520511    Vector<String> timestamps = null; 
    521512    MetamorphHandler handler = null; 
     
    902893    if (getSizeZ() == 0) core[0].sizeZ = 1; 
    903894    if (getSizeT() == 0) core[0].sizeT = 1; 
     895 
     896    if (getSizeZ() * getSizeT() * (isRGB() ? 1 : getSizeC()) != getImageCount()) 
     897    { 
     898      core[0].sizeZ = getImageCount(); 
     899      core[0].sizeT = 1; 
     900      if (!isRGB()) core[0].sizeC = 1; 
     901    } 
    904902  } 
    905903 
  • trunk/components/bio-formats/src/loci/formats/in/NikonReader.java

    r5550 r5614  
    192192    options.bitsPerSample = dataSize; 
    193193    options.curve = curve; 
    194     options.vPredictor = new int[vPredictor.length]; 
     194    if (vPredictor != null) { 
     195      options.vPredictor = new int[vPredictor.length]; 
     196    } 
    195197    options.lossy = lossyCompression; 
    196198    options.split = split; 
     
    356358                new RandomAccessInputStream(buf); 
    357359              TiffParser tp = new TiffParser(makerNote); 
    358               IFD note = tp.getFirstIFD(); 
     360              IFD note = null; 
     361              try { 
     362                note = tp.getFirstIFD(); 
     363              } 
     364              catch (Exception e) { 
     365                traceDebug(e); 
     366              } 
    359367              if (note != null) { 
    360368                for (Integer nextKey : note.keySet()) { 
  • trunk/components/bio-formats/src/loci/formats/in/NikonTiffReader.java

    r5607 r5614  
    223223    store.setObjectiveSettingsObjective(objectiveID, 0); 
    224224    store.setObjectiveNominalMagnification(new Integer(magnification), 0, 0); 
     225 
     226    if (correction == null) correction = "Unknown"; 
    225227    store.setObjectiveCorrection(correction, 0, 0); 
    226228    store.setObjectiveLensNA(new Float(lensNA), 0, 0); 
    227229    store.setObjectiveWorkingDistance(new Float(workingDistance), 0, 0); 
     230    if (immersion == null) immersion = "Unknown"; 
    228231    store.setObjectiveImmersion(immersion, 0, 0); 
    229232 
    230233    for (int i=0; i<wavelength.size(); i++) { 
    231       store.setLightSourceID("LightSource:" + laserIDs.get(i), 0, i); 
     234      String laser = MetadataTools.createLSID("LightSource", 0, i); 
     235      store.setLightSourceID(laser, 0, i); 
     236      store.setLightSourceModel(laserIDs.get(i), 0, i); 
    232237      store.setLaserWavelength(wavelength.get(i), 0, i); 
    233238      store.setLaserType("Unknown", 0, i); 
  • trunk/components/bio-formats/src/loci/formats/in/PerkinElmerReader.java

    r5544 r5614  
    138138 
    139139    Location htmlFile = new Location(prefix + ".htm"); 
     140    if (ext.toLowerCase().equals("htm")) { 
     141      htmlFile = new Location(name).getAbsoluteFile(); 
     142    } 
    140143    if (!htmlFile.exists()) { 
    141144      htmlFile = new Location(prefix + ".HTM"); 
  • trunk/components/bio-formats/src/loci/formats/in/ScanrReader.java

    r5605 r5614  
    113113    Vector<String> files = new Vector<String>(); 
    114114    for (String file : metadataFiles) { 
    115       files.add(file); 
     115      if (file != null) files.add(file); 
    116116    } 
    117117 
     
    119119      int offset = getSeries() * getImageCount(); 
    120120      for (int i=0; i<getImageCount(); i++) { 
    121         files.add(tiffs[offset + i]); 
     121        if (tiffs[offset + i] != null) { 
     122          files.add(tiffs[offset + i]); 
     123        } 
    122124      } 
    123125    } 
     
    216218 
    217219    int next = 0; 
    218     for (int i=0; i<getSeriesCount(); i++) { 
     220    for (int i=0; i<nSeries; i++) { 
    219221      int well = i / (fieldRows * fieldColumns); 
    220222      String wellPos = String.valueOf(well + 1); 
  • trunk/components/bio-formats/src/loci/formats/in/TCSReader.java

    r5517 r5614  
    379379    core[0].interleaved = tiffReaders[0].isInterleaved(); 
    380380    core[0].falseColor = true; 
     381    core[0].indexed = tiffReaders[0].isIndexed(); 
    381382 
    382383    if (isRGB()) core[0].imageCount /= (getSizeC() / channelCount); 
  • trunk/components/bio-formats/src/loci/formats/in/ZeissZVIReader.java

    r5553 r5614  
    760760        else if (key.startsWith("Emission Wavelength")) { 
    761761          if (cIndex != -1 && nextEmWave < effectiveSizeC) { 
    762             store.setLogicalChannelEmWave(new Integer(value), 0, nextEmWave); 
    763             nextEmWave++; 
     762            Integer wave = new Integer(value); 
     763            if (wave.intValue() > 0) { 
     764              store.setLogicalChannelEmWave(wave, 0, nextEmWave); 
     765              nextEmWave++; 
     766            } 
    764767          } 
    765768        } 
    766769        else if (key.startsWith("Excitation Wavelength")) { 
    767770          if (cIndex != -1 && nextExWave < effectiveSizeC) { 
    768             store.setLogicalChannelExWave(new Integer(value), 0, nextExWave); 
    769             nextExWave++; 
     771            Integer wave = new Integer(value); 
     772            if (wave.intValue() > 0) { 
     773              store.setLogicalChannelExWave(wave, 0, nextExWave); 
     774              nextExWave++; 
     775            } 
    770776          } 
    771777        } 
  • trunk/components/bio-formats/src/loci/formats/out/OMETiffWriter.java

    r5611 r5614  
    199199  public void setId(String id) throws FormatException, IOException { 
    200200    if (id.equals(currentId)) return; 
    201     if (new Location(id).exists()) { 
     201    Location file = new Location(id); 
     202    if (file.exists() && file.length() > 0) { 
    202203      // FIXME 
    203204      throw new FormatException( 
  • trunk/components/test-suite/src/loci/tests/testng/FormatReaderTest.java

    r5533 r5614  
    3636import java.io.File; 
    3737import java.io.FileWriter; 
     38import java.io.IOException; 
    3839import java.util.Arrays; 
    3940import java.util.LinkedList; 
     
    428429        // if CreationDate is before 1995, it's probably invalid 
    429430        String date = retrieve.getImageCreationDate(i); 
    430         if (DateTools.getTime(date, DateTools.ISO8601_FORMAT) < 
     431        if (date != null && DateTools.getTime(date, DateTools.ISO8601_FORMAT) < 
    431432          DateTools.getTime("1995-01-01T00:00:00", DateTools.ISO8601_FORMAT)) 
    432433        { 
     
    834835        int imageCount = reader.getImageCount(); 
    835836        totalPlanes += imageCount; 
    836         for (int j=0; j<imageCount; j++) reader.openImage(j); 
     837        try { 
     838          for (int j=0; j<imageCount; j++) reader.openImage(j); 
     839        } 
     840        catch (IOException e) { 
     841          LogTools.trace(e); 
     842        } 
    837843      } 
    838844      long t2 = System.currentTimeMillis(); 
     
    854860    catch (Throwable t) { 
    855861      try { 
     862        LogTools.trace(t); 
    856863        File f = new File(new Location(file).getParent(), ".bioformats"); 
    857864        BufferedWriter w = new BufferedWriter(new FileWriter(f, true)); 
    858         w.write("\"" + file + "\" test=false\n"); 
     865        w.write("\"" + new Location(file).getName() + "\" test=false\n"); 
    859866        w.close(); 
    860867      } 
  • trunk/components/test-suite/src/loci/tests/testng/FormatWriterTest.java

    r5605 r5614  
    9999      reader.setId(id); 
    100100    } 
    101     catch (FormatException e) { } 
    102     catch (IOException e) { } 
     101    catch (FormatException e) { LogTools.trace(e); } 
     102    catch (IOException e) { LogTools.trace(e); } 
     103    config.setId(id); 
    103104  } 
    104105 
     
    162163    String msg = null; 
    163164    try { 
    164       config.setId(id); 
    165  
    166165      int type = reader.getPixelType(); 
    167166      if (!writer.isSupportedType(type)) { 
     
    170169        return; 
    171170      } 
     171 
     172      /* debug */ System.out.println("id = " + id); 
    172173 
    173174      String prefix = id.substring(id.lastIndexOf(File.separator) + 1, 
     
    184185      writer.close(); 
    185186      writer.setMetadataRetrieve((MetadataRetrieve) meta); 
     187      /* debug */ System.out.println("metadata says there are " + meta.getImageCount() + " series"); 
    186188 
    187189      // convert the input file 
Note: See TracChangeset for help on using the changeset viewer.