Changeset 4043


Ignore:
Timestamp:
05/14/08 12:52:51 (12 years ago)
Author:
melissa
Message:

Improved init time for JP2K ND2 files - files that previously took 10+ minutes to initialize now take less than 1 minute.

File:
1 edited

Legend:

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

    r4018 r4043  
    530530      if (offsets.length != core.imageCount.length && core.imageCount[0] == 1) { 
    531531        core.imageCount[0] = offsets.length; 
     532        if (core.sizeC[0] == 0) core.sizeC[0] = 1; 
    532533        core.sizeT[0] = offsets.length / core.sizeC[0]; 
     534        if (core.sizeT[0] == 0) core.sizeT[0] = 1; 
    533535        core.sizeZ[0] = 1; 
    534536        long[][] tmpOffsets = offsets; 
     
    549551        Arrays.fill(core.sizeX, x); 
    550552        Arrays.fill(core.sizeY, y); 
    551         Arrays.fill(core.sizeC, c); 
     553        Arrays.fill(core.sizeC, c == 0 ? 1 : c); 
    552554        Arrays.fill(core.pixelType, pixelType); 
    553555        Arrays.fill(core.rgb, rgb); 
     
    559561          } 
    560562          core.sizeT[i] = (offsets[i].length - invalid) / core.sizeC[i]; 
     563          if (core.sizeT[i] == 0) core.sizeT[i] = 1; 
    561564          core.imageCount[i] = offsets[i].length - invalid; 
    562565        } 
     
    572575      } 
    573576 
    574       if (core.sizeZ[0] == 0) Arrays.fill(core.sizeZ, 1); 
    575       if (core.sizeC[0] == 0) Arrays.fill(core.sizeC, 1); 
    576       if (core.sizeT[0] == 0) Arrays.fill(core.sizeT, 1); 
    577577      Arrays.fill(core.currentOrder, "XYCZT"); 
    578578      Arrays.fill(core.rgb, core.sizeC[0] > 1); 
     
    611611        store.setImageCreationDate( 
    612612          DataTools.convertDate(System.currentTimeMillis(), DataTools.UNIX), i); 
    613        
     613 
    614614        if (tsT.size() > 0) { 
    615615          setSeries(i); 
     
    620620            store.setPlaneTheT(new Integer(coords[2]), i, 0, n); 
    621621            float stamp = ((Double) tsT.get(coords[2])).floatValue(); 
    622             store.setPlaneTimingDeltaT(new Float(stamp), i, 0, n);  
     622            store.setPlaneTimingDeltaT(new Float(stamp), i, 0, n); 
    623623          } 
    624624        } 
     
    654654 
    655655      if (box == 0x6a703263) { 
    656         vs.add(new Long(in.getFilePointer())); 
    657       } 
    658       if (!lastBoxFound) in.seek(pos + length); 
     656        vs.add(new Long(pos)); 
     657      } 
     658      if (!lastBoxFound) in.skipBytes(length); 
    659659    } 
    660660 
     
    667667    boolean found = false; 
    668668    long off = -1; 
    669     byte[] buf = new byte[2048]; 
     669    byte[] buf = new byte[8192]; 
    670670    while (!found && in.getFilePointer() < in.length()) { 
    671671      int read = 0; 
     
    705705 
    706706      while (st.hasMoreTokens()) { 
    707         String token = st.nextToken(); 
    708         token = token.replaceAll("<!--.*-->", ""); 
    709         token = token.replaceAll(".*xml", "").trim(); 
    710         token = token.substring(0, token.lastIndexOf(">") + 1); 
     707        String token = st.nextToken().trim(); 
     708        if (token.indexOf("<!--") != -1) continue; 
    711709        if (token.startsWith("<")) sb.append(token); 
    712710      } 
     711 
    713712      sb.append("</NIKON>"); 
    714713      xml = sb.toString(); 
     714 
     715      status("Finished assembling XML string"); 
    715716 
    716717      ND2Handler handler = new ND2Handler(); 
     
    822823    int numBands = img.getRaster().getNumBands(); 
    823824    int c = numBands > 1 ? numBands : core.sizeC[0]; 
     825    if (numBands == 1 && core.imageCount[0] == 1) c = 1; 
    824826    Arrays.fill(core.sizeC, c); 
    825827    Arrays.fill(core.rgb, numBands > 1); 
    826828    Arrays.fill(core.pixelType, ImageTools.getPixelType(img)); 
    827  
    828     if (!core.rgb[0] && core.imageCount[0] == 1) { 
    829       Arrays.fill(core.sizeC, 1); 
    830     } 
    831829 
    832830    if (core.rgb[0] && core.imageCount[0] > core.sizeZ[0] * core.sizeT[0]) { 
     
    875873//      } 
    876874    } 
    877  
    878     String prefix = "MetadataSeq _SEQUENCE_INDEX=\"0\" "; 
    879875 
    880876    /* 
     
    1003999      pixelSizeY = pixelSizeX; 
    10041000    } 
    1005     else if (key.endsWith("dAspect")) { 
    1006       pixelSizeZ = Float.parseFloat(value); 
    1007     } 
    1008     else if (key.endsWith("dGain")) { 
    1009       gain = value; 
    1010     } 
    1011     else if (key.endsWith("dLampVoltage")) { 
    1012       voltage = value; 
    1013     } 
    1014     else if (key.endsWith("dObjectiveMag")) { 
    1015       mag = value; 
    1016     } 
    1017     else if (key.endsWith("dObjectiveNA")) { 
    1018       na = value; 
    1019     } 
     1001    else if (key.endsWith("dAspect")) pixelSizeZ = Float.parseFloat(value); 
     1002    else if (key.endsWith("dGain")) gain = value; 
     1003    else if (key.endsWith("dLampVoltage")) voltage = value; 
     1004    else if (key.endsWith("dObjectiveMag")) mag = value; 
     1005    else if (key.endsWith("dObjectiveNA")) na = value; 
    10201006    else if (key.endsWith("dTimeMSec")) { 
    10211007      long v = (long) Double.parseDouble(value); 
     
    10601046                Arrays.fill(core.sizeX, x); 
    10611047                Arrays.fill(core.sizeY, y); 
    1062                 Arrays.fill(core.sizeZ, z); 
    1063                 Arrays.fill(core.sizeC, c); 
    1064                 Arrays.fill(core.sizeT, tSize); 
     1048                Arrays.fill(core.sizeZ, z == 0 ? 1 : z); 
     1049                Arrays.fill(core.sizeC, c == 0 ? 1 : c); 
     1050                Arrays.fill(core.sizeT, tSize == 0 ? 1 : tSize); 
    10651051              } 
    10661052            } 
    10671053            else if (dim.startsWith("T")) { 
    1068               Arrays.fill(core.sizeT, v); 
     1054              Arrays.fill(core.sizeT, v == 0 ? 1 : v); 
    10691055            } 
    10701056            else if (dim.startsWith("Z")) { 
    1071               Arrays.fill(core.sizeZ, v); 
     1057              Arrays.fill(core.sizeZ, v == 0 ? 1 : v); 
    10721058            } 
    10731059            else { 
    1074               Arrays.fill(core.sizeC, v); 
    1075             } 
    1076           } 
    1077  
    1078           if (core.sizeZ[0] == 0) Arrays.fill(core.sizeZ, 1); 
    1079           if (core.sizeC[0] == 0) Arrays.fill(core.sizeC, 1); 
    1080           if (core.sizeT[0] == 0) Arrays.fill(core.sizeT, 1); 
     1060              Arrays.fill(core.sizeC, v == 0 ? 1 : v); 
     1061            } 
     1062          } 
    10811063 
    10821064          int count = core.sizeZ[0] * core.sizeC[0] * core.sizeT[0]; 
Note: See TracChangeset for help on using the changeset viewer.