Awesome ! Thanks again Mark :-) -- Hadrien Mary
Ph.D student in Biology Tournier-Gachet Team CNRS - LBCMCP - UMR 5088 Université de Toulouse - Bât. 4R3B1 118, route de Narbonne - 31062 Toulouse On Sun, Jan 25, 2015 at 7:53 PM, Mark Hiner <hi...@wisc.edu> wrote: > Hi Hadrien! > >>so I am not sure wether it's a bug or it's something not supported right >> now. > > It looks like it's a limitation of the DefaultDataset[1] right now. I > updated the message to suggest a workaround, at least[2]. > > So if you change your next to last line to: > > ds2 = ij.op().crop(interval, ds.getImgPlus()) > > to crop the ImgPlus that's wrapped by the Dataset, your script should work > (or at least not crash). > > Thanks, as always, for the report :) > > Best, > Mark > > [1] > https://github.com/imagej/imagej-common/blob/59bfc3cebf8204a48bc559adf079f227652514ed/src/main/java/net/imagej/DefaultDataset.java#L734-736 > [2] > https://github.com/imagej/imagej-common/commit/75330a95c66013390cf4b6b4511e08357a8a28b0 > > On Sun, Jan 25, 2015 at 9:14 AM, Hadrien Mary <hadrien.m...@gmail.com> > wrote: >> >> Hi, >> >> I am having an issue with a script which crop an image with >> imagej-ops. The error shows a "TODO" so I am not sure wether it's a >> bug or it's something not supported right now. >> >> ------------------------------- >> # @DatasetService data >> # @ImageJ ij >> >> from jarray import array >> >> from net.imglib2 import FinalInterval >> from net.imglib2.img.array import ArrayImgs >> from net.imagej.axis import Axes >> from net.imglib2.util import Intervals >> >> fname = "/home/hadim/test_small.ome.tif" >> ds = data.open(fname) >> >> # Initiate dimensions >> dims = {} >> dim_names = [None] * 5 >> for ax in [Axes.X, Axes.Y, Axes.Z, Axes.TIME, Axes.CHANNEL]: >> ax_index = ds.dimensionIndex(ax) >> dim_names[ax_index] = str(ax) >> if int(ds.dimension(ax_index)) == 1: >> dims[str(ax)] = (0, 0) >> else: >> dims[str(ax)] = (0, int(ds.dimension(ax_index)) - 1) >> >> # Set cropped regions >> dims['X'] = (10, 40) >> dims['Y'] = (5, 20) >> >> # Set crop intervals >> begin_interval = [dims[name][0] for name in dim_names] >> end_interval = [dims[name][1] for name in dim_names] >> interval = FinalInterval(begin_interval, end_interval) >> print(begin_interval) >> print(end_interval) >> print(Intervals.contains(ds, interval)) >> >> ds2 = ij.op().crop(interval, ds) >> ij.ui().show(ds2.getName(), ds2) >> ---------------------------------------------------- >> >> Error shows: >> >> ---------------------------------------------------- >> ds2 = ij.op().crop(interval, ds) >> at net.imagej.DefaultDataset.factory(DefaultDataset.java:735) >> at net.imagej.ImgPlus.factory(ImgPlus.java:280) >> at net.imagej.ops.crop.CropImgPlus.run(CropImgPlus.java:74) >> at org.scijava.command.CommandModule.run(CommandModule.java:201) >> at net.imagej.ops.DefaultOpService.run(DefaultOpService.java:363) >> at net.imagej.ops.DefaultOpService.run(DefaultOpService.java:78) >> at net.imagej.ops.DefaultOpService.crop(DefaultOpService.java:215) >> at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:606) >> >> java.lang.UnsupportedOperationException: >> java.lang.UnsupportedOperationException: TODO >> ------------------------------------------------------- >> >> Thank you >> >> -- >> Hadrien Mary >> >> Ph.D student in Biology >> Tournier-Gachet Team >> CNRS - LBCMCP - UMR 5088 >> >> Université de Toulouse - Bât. 4R3B1 >> 118, route de Narbonne - 31062 Toulouse >> >> _______________________________________________ >> ImageJ-devel mailing list >> ImageJ-devel@imagej.net >> http://imagej.net/mailman/listinfo/imagej-devel > > _______________________________________________ ImageJ-devel mailing list ImageJ-devel@imagej.net http://imagej.net/mailman/listinfo/imagej-devel