If you have a net.imagej.Dataset with an attached net.imagej.roi.DefaultROITree and ask for an xarray.DataArray via ij.py.to_xarray() the conversion will fail with:
...
File "/home/edward/Documents/repos/loci/scyjava/src/scyjava/_convert.py", line 82, in _raise_type_exception
raise TypeError("Unsupported type: " + str(type(obj)))
TypeError: Unsupported type: <java class 'net.imagej.roi.DefaultROITree'>
This happens because at some point during the Dataset to DataArray step we look through the dataset's properties, which contains the DefaultROITree. This DefaultROITree is passed on to scyjava where it then fails to convert.
Here is a minimal example using the test data in the PyimageJ repo.
import imagej
import scyjava as sj
# init pyimagej
ij = imagej.init(mode='interactive')
print(f"ImageJ Version: {ij.getVersion()}")
# get ImageJ resources
OvalRoi = sj.jimport('ij.gui.OvalRoi')
ov = sj.jimport('ij.gui.Overlay')()
# load data
imp = ij.IJ.openImage('/doc/sample-data/test_timeseries.tif')
# draw ROI
roi = OvalRoi(56, 79, 102, 100)
imp.setRoi(roi)
ov.add(roi)
imp.setOverlay(ov)
imp.show()
# convert imp to dataset
ds = ij.py.to_dataset(imp)
# this call fails
# ij.ui().show(ds)
If you have a
net.imagej.Dataset
with an attachednet.imagej.roi.DefaultROITree
and ask for anxarray.DataArray
viaij.py.to_xarray()
the conversion will fail with:This happens because at some point during the
Dataset
toDataArray
step we look through the dataset's properties, which contains theDefaultROITree
. ThisDefaultROITree
is passed on toscyjava
where it then fails to convert.Here is a minimal example using the test data in the PyimageJ repo.