Changeset 2373


Ignore:
Timestamp:
03/01/07 15:59:18 (13 years ago)
Author:
curtis
Message:

Better slice labels (display ZCT coords), fix some bugs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/Importer.java

    r2352 r2373  
    130130        gd = new GenericDialog("LOCI Bio-Formats Dataset Location"); 
    131131        gd.addChoice("Location: ", 
    132           new String[] {LOCATION_LOCAL, LOCATION_OME, LOCATION_HTTP},  
     132          new String[] {LOCATION_LOCAL, LOCATION_OME, LOCATION_HTTP}, 
    133133            LOCATION_LOCAL); 
    134134        gd.showDialog(); 
     
    190190    if (!LOCATION_OME.equals(location)) { 
    191191      IJ.showStatus("Identifying " + fileName); 
    192       ImageReader reader = new ImageReader();  
     192      ImageReader reader = new ImageReader(); 
    193193      try { r = reader.getReader(id); } 
    194194      catch (Exception exc) { 
     
    293293    // -- Step 4: open file -- 
    294294 
    295     IJ.showStatus("Analyzing " + r.getCurrentFile()); 
     295    IJ.showStatus("Analyzing " + id); 
    296296 
    297297    try { 
     
    304304      int pixelType = r.getPixelType(id); 
    305305      r.setColorTableIgnored(ignoreTables); 
     306      String currentFile = r.getCurrentFile(); 
    306307 
    307308      if (stitchFiles) { 
     
    319320        } 
    320321        id = gd.getNextString(); 
    321       } 
    322       if (fs != null) { 
    323         if (!ignoreTables && r.isRGB(id)) r = new ChannelSeparator(fs); 
    324       } 
    325       else { 
    326         if (!ignoreTables && r.isRGB(id)) r = new ChannelSeparator(r); 
    327       } 
     322        r = fs; 
     323      } 
     324      if (!ignoreTables) r = new ChannelSeparator(r); 
    328325      r.setColorTableIgnored(ignoreTables); 
    329326      r.close(); 
     
    377374        cStep[i] = zStep[i] = tStep[i] = 1; 
    378375        StringBuffer sb = new StringBuffer(); 
    379         sb.append("Series_"); 
    380         sb.append(i + 1); 
    381         sb.append(" - "); 
     376        if (seriesCount > 1) { 
     377          sb.append("Series_"); 
     378          sb.append(i + 1); 
     379          sb.append(" - "); 
     380        } 
    382381        String name = store.getImageName(new Integer(i)); 
    383382        if (name != null && name.length() > 0) { 
     
    457456          return; 
    458457        } 
    459          
     458 
    460459        int[] widths = new int[seriesCount]; 
    461460        int[] heights = new int[seriesCount]; 
     
    476475            if (!series[i]) { 
    477476              for (int j=0; j<seriesCount; j++) { 
    478                 if ((j != i) && series[j] && (widths[j] == widths[i]) &&  
    479                   (heights[j] == heights[i]) && (types[j] == types[i]) &&  
     477                if ((j != i) && series[j] && (widths[j] == widths[i]) && 
     478                  (heights[j] == heights[i]) && (types[j] == types[i]) && 
    480479                  (channels[j] == channels[i])) 
    481480                { 
     
    502501            if (!series[i]) continue; 
    503502            gd.addMessage(seriesStrings[i].replaceAll("_", " ")); 
    504             String s = "_" + (i + 1); 
     503            String s = seriesCount > 1 ? "_" + (i + 1) : ""; 
    505504            if (certain[i]) { 
    506505              if (sizeC[i] > 1) { 
     
    575574        } 
    576575      } 
     576      int[] cCount = new int[seriesCount]; 
     577      int[] zCount = new int[seriesCount]; 
     578      int[] tCount = new int[seriesCount]; 
     579      for (int i=0; i<seriesCount; i++) { 
     580        cCount[i] = (cEnd[i] - cBegin[i] + cStep[i]) / cStep[i]; 
     581        zCount[i] = (zEnd[i] - zBegin[i] + zStep[i]) / zStep[i]; 
     582        tCount[i] = (tEnd[i] - tBegin[i] + tStep[i]) / tStep[i]; 
     583      } 
    577584 
    578585      // -- Step 4c: display metadata, when appropriate -- 
     
    583590        // display standard metadata in a table in its own window 
    584591        Hashtable meta = r.getMetadata(id); 
    585         meta.put("\t\t" + idType, r.getCurrentFile()); 
     592        meta.put("\t\t" + idType, currentFile); 
    586593        int digits = digits(seriesCount); 
    587594        for (int i=0; i<seriesCount; i++) { 
     
    614621        } 
    615622        MetadataPane mp = new MetadataPane(meta); 
    616         JFrame frame = new JFrame("Metadata - " + r.getCurrentFile()); 
     623        JFrame frame = new JFrame("Metadata - " + currentFile); 
    617624        frame.setContentPane(mp); 
    618625        frame.pack(); 
     
    626633      // only read data explicitly if not using 4D Data Browser 
    627634      if (!stackFormat.equals(VIEW_BROWSER)) { 
    628         IJ.showStatus("Reading " + r.getCurrentFile()); 
     635        IJ.showStatus("Reading " + currentFile); 
    629636 
    630637        for (int i=0; i<seriesCount; i++) { 
     
    633640          r.setColorTableIgnored(ignoreTables); 
    634641 
    635           String name = store.getImageName(new Integer(i)); 
    636           String imageName = r.getCurrentFile(); 
    637           if (name != null && name.length() > 0) imageName += " - " + name; 
     642          String imageName = store.getImageName(new Integer(i)); 
     643          if (imageName == null) imageName = currentFile; 
    638644 
    639645          boolean[] load = new boolean[num[i]]; 
     
    665671          ImageStack stackB = null, stackS = null, stackF = null, stackO = null; 
    666672 
     673          int w = r.getSizeX(id); 
     674          int h = r.getSizeY(id); 
     675          int c = r.getRGBChannelCount(id); 
     676          int type = r.getPixelType(id); 
     677 
    667678          int q = 0; 
    668679          for (int j=0; j<num[i]; j++) { 
     
    679690            IJ.showProgress((double) q++ / total); 
    680691 
     692            // construct label for this slice 
     693            int[] zct = r.getZCTCoords(id, j); 
     694            StringBuffer sb = new StringBuffer(); 
     695            sb.append(imageName); 
     696            sb.append(": "); 
     697            if (certain[i]) { 
     698              boolean first = true; 
     699              if (cCount[i] > 1) { 
     700                if (first) first = false; 
     701                else sb.append("; "); 
     702                sb.append("ch:"); 
     703                sb.append(zct[1] + 1); 
     704                sb.append("/"); 
     705                sb.append(sizeC[i]); 
     706              } 
     707              if (zCount[i] > 1) { 
     708                if (first) first = false; 
     709                else sb.append("; "); 
     710                sb.append("z:"); 
     711                sb.append(zct[0] + 1); 
     712                sb.append("/"); 
     713                sb.append(sizeZ[i]); 
     714              } 
     715              if (tCount[i] > 1) { 
     716                if (first) first = false; 
     717                else sb.append("; "); 
     718                sb.append("t:"); 
     719                sb.append(zct[2] + 1); 
     720                sb.append("/"); 
     721                sb.append(sizeT[i]); 
     722              } 
     723            } 
     724            else { 
     725              sb.append(j + 1); 
     726              sb.append("/"); 
     727              sb.append(num[i]); 
     728            } 
     729            String label = sb.toString(); 
     730 
    681731            byte[] b = r.openBytes(id, j); 
    682  
    683             int w = r.getSizeX(id); 
    684             int h = r.getSizeY(id); 
    685             int c = r.getRGBChannelCount(id); 
    686             int type = r.getPixelType(id); 
    687732 
    688733            // construct image processor and add to stack 
     
    690735 
    691736            int bpp = FormatReader.getBytesPerPixel(type); 
    692              
     737 
    693738            if (b.length != w * h * c * bpp && b.length != w * h * bpp) { 
    694739              // HACK - byte array dimensions are incorrect - image is probably 
     
    714759              ip = new ByteProcessor(w, h, bytes, null); 
    715760              if (stackB == null) stackB = new ImageStack(w, h); 
    716               stackB.addSlice(imageName + ":" + (j + 1), ip); 
     761              stackB.addSlice(label, ip); 
    717762            } 
    718763            else if (pixels instanceof short[]) { 
     
    726771              ip = new ShortProcessor(w, h, s, null); 
    727772              if (stackS == null) stackS = new ImageStack(w, h); 
    728               stackS.addSlice(imageName + ":" + (j + 1), ip); 
     773              stackS.addSlice(label, ip); 
    729774            } 
    730775            else if (pixels instanceof int[]) { 
     
    738783              ip = new FloatProcessor(w, h, s); 
    739784              if (stackF == null) stackF = new ImageStack(w, h); 
    740               stackF.addSlice(imageName + ":" + (j + 1), ip); 
     785              stackF.addSlice(label, ip); 
    741786            } 
    742787            else if (pixels instanceof float[]) { 
     
    754799                if (stackB != null) { 
    755800                  ip = ip.convertToByte(true); 
    756                   stackB.addSlice(imageName + ":" + (j + 1), ip); 
     801                  stackB.addSlice(label, ip); 
    757802                  stackF = null; 
    758803                } 
    759804                else if (stackS != null) { 
    760805                  ip = ip.convertToShort(true); 
    761                   stackS.addSlice(imageName + ":" + (j + 1), ip); 
     806                  stackS.addSlice(label, ip); 
    762807                  stackF = null; 
    763808                } 
    764                 else stackF.addSlice(imageName + ":" + (j + 1), ip); 
     809                else stackF.addSlice(label, ip); 
    765810              } 
    766811              else { 
     
    789834                ((ColorProcessor) ip).setRGB(bytes[0], bytes[1], 
    790835                  pix.length >= 3 ? bytes[2] : new byte[w*h]); 
    791                 stackO.addSlice(imageName + ":" + (j + 1), ip); 
     836                stackO.addSlice(label, ip); 
    792837              } 
    793838            } 
     
    802847              ip = new FloatProcessor(w, h, d); 
    803848              if (stackF == null) stackF = new ImageStack(w, h); 
    804               stackF.addSlice(imageName + ":" + (j + 1), ip); 
     849              stackF.addSlice(label, ip); 
    805850            } 
    806851          } 
     
    814859                fi, r, fs, specifyRanges, colorize); 
    815860            } 
    816             else imp = new ImagePlus(imageName, stackB); 
     861            else imp = new ImagePlus(currentFile, stackB); 
    817862          } 
    818863          if (stackS != null) { 
     
    821866                fi, r, fs, specifyRanges, colorize); 
    822867            } 
    823             else imp = new ImagePlus(imageName, stackS); 
     868            else imp = new ImagePlus(currentFile, stackS); 
    824869          } 
    825870          if (stackF != null) { 
     
    828873                fi, r, fs, specifyRanges, colorize); 
    829874            } 
    830             else imp = new ImagePlus(imageName, stackF); 
     875            else imp = new ImagePlus(currentFile, stackF); 
    831876          } 
    832877          if (stackO != null) { 
     
    835880                fi, r, fs, specifyRanges, colorize); 
    836881            } 
    837             else imp = new ImagePlus(imageName, stackO); 
     882            else imp = new ImagePlus(currentFile, stackO); 
    838883          } 
    839884 
     
    855900            fi.description = tmp.dumpXML(); 
    856901            imp.setFileInfo(fi); 
    857             imp.setDimensions((cEnd[i] - cBegin[i] + 1) / cStep[i],  
    858               (zEnd[i] - zBegin[i] + 1) / zStep[i],  
    859               (tEnd[i] - tBegin[i] + 1) / tStep[i]); 
     902            imp.setDimensions(cCount[i], zCount[i], tCount[i]); 
    860903            displayStack(imp, r, fs, id); 
    861904            r.close(); 
     
    891934              int height = ((Integer) heights.get(j)).intValue(); 
    892935              int t = ((Integer) types.get(j)).intValue(); 
    893                
    894               if (width == w && height == h && type == t) {  
     936 
     937              if (width == w && height == h && type == t) { 
    895938                ImagePlus oldImp = (ImagePlus) newImps.get(j); 
    896939                ImageStack is = oldImp.getStack(); 
    897940                ImageStack newStack = imp.getStack(); 
    898941                for (int k=0; k<newStack.getSize(); k++) { 
    899                   is.addSlice(newStack.getSliceLabel(k+1),  
     942                  is.addSlice(newStack.getSliceLabel(k+1), 
    900943                    newStack.getProcessor(k+1)); 
    901944                } 
     
    913956            } 
    914957          } 
    915         
     958 
    916959          for (int i=0; i<newImps.size(); i++) { 
    917960            ((ImagePlus) newImps.get(i)).show(); 
     
    11421185        int sizeZ = r.getSizeZ(id); 
    11431186        int sizeT = r.getSizeT(id); 
    1144          
     1187 
    11451188        int extraC = 1; 
    11461189        if (c > 4) { 
     
    11571200                bytes[ch2] = (byte[]) s.getProcessor(ndx).getPixels(); 
    11581201              } 
    1159               ColorProcessor cp =  
     1202              ColorProcessor cp = 
    11601203                new ColorProcessor(s.getWidth(), s.getHeight()); 
    11611204              cp.setRGB(bytes[0], bytes[1], bytes.length == 3 ? bytes[2] : 
     
    11701213 
    11711214      imp.setDimensions( 
    1172         imp.getStackSize() / (imp.getNSlices() * imp.getNFrames()),  
     1215        imp.getStackSize() / (imp.getNSlices() * imp.getNFrames()), 
    11731216        imp.getNSlices(), imp.getNFrames()); 
    11741217      if (stackFormat.equals(VIEW_STANDARD)) { 
    11751218        if (!stitchStack) imp.show(); 
    1176         else imps.add(imp);  
     1219        else imps.add(imp); 
    11771220      } 
    11781221      else if (stackFormat.equals(VIEW_BROWSER)) {} 
Note: See TracChangeset for help on using the changeset viewer.