add resolve_rois to projectwrapper - #92
Conversation
There was a problem hiding this comment.
The README needs updating to describe the new functionality (and to describe existing functionality better too)...
I created a CSV that included an image column with names and a shape column with IDs. However, these both resulted in errors and the script only worked when they were removed. It would be nice if this was either fixed or at least documented.
The only example in the README currently is for a single image only.
This csv worked for me, but unfortunately all the columns ended up as type StringColumn (probably not due to this PR but still not ideal).
Also, since we're giving it IDs for every column, there's really no "lookup" happening, so I'm not sure what populate_metadata workflow really does for us? Even the "Fake" last row that I added didn't get edited or removed.
Why don't we just use https://github.com/glencoesoftware/omero2pandas upload_table()?
Roi,type,z,area,length,points,min,max,sum
862,polygon,1,19630.9118298339,,19634,5398.0,52621.0,316019519.0
863,polygon,1,19475.84766357460,,19498,4311.0,65535.0,335470489.0
868,line,1,,267.28439040925200,343,75.0,25288.0,3043523.0
879,point,1,,,1,2005.0,2005.0,2005.0
880,point,1,,,1,186.0,186.0,186.0
881,polyline,1,,739.60492568035,978,104.0,5298.0,2211625.0
882,polyline,1,,1798.5938954670500,2127,58.0,1262.0,378653.0
123,Fake,1,,,1,1.0,10.0,11.0
My first attempt with CSV like this:
image,Roi,shape,type,z,area,length,points,min,max,sum
ExperimentB_No08_Noc_09_10min__031.czi,862,991,polygon,1,19630.9118298339,,19634,5398.0,52621.0,316019519.0
ExperimentB_No08_Noc_09_10min__031.czi,863,992,polygon,1,19475.84766357460,,19498,4311.0,65535.0,335470489.0
ExperimentB_No08_Noc_09_10min__031.czi,864,993,polygon,1,168813.70565185600,,168827,112.0,63432.0,2643853129.0
gave me:
This Exception
Traceback (most recent call last):
File "/home/omero/omero/tmp/omero_omero/28686/processynzrj_1i.dir/./script", line 198, in <module>
run_script()
File "/home/omero/omero/tmp/omero_omero/28686/processynzrj_1i.dir/./script", line 190, in run_script
message = populate_metadata(client, conn, script_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/omero/omero/tmp/omero_omero/28686/processynzrj_1i.dir/./script", line 142, in populate_metadata
ctx.preprocess_from_handle(f1)
File "/home/omero/workspace/OMERO-server/.venv3/lib64/python3.11/site-packages/omero_metadata/populate.py", line 1205, in preprocess_from_handle
self.preprocess_data(reader)
File "/home/omero/workspace/OMERO-server/.venv3/lib64/python3.11/site-packages/omero_metadata/populate.py", line 1278, in preprocess_data
value = self.value_resolver.resolve(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/omero/workspace/OMERO-server/.venv3/lib64/python3.11/site-packages/omero_metadata/populate.py", line 440, in resolve
raise MetadataError(
omero_metadata.populate.MetadataError: Unable to locate Parent column in Row: [(object #0 (::omero::grid::ImageColumn)
{
name = Image
description =
values =
{
}
}, 'ExperimentB_No08_Noc_09_10min__031.czi'), (object #0 (::omero::grid::StringColumn)
{
name = Roi
description =
size = 1
values =
{
}
}, '862'), (object #0 (::omero::grid::StringColumn)
{
name = shape
description =
size = 1
values =
{
}
}, '991'), (object #0 (::omero::grid::StringColumn)
{
name = type
description =
size = 1
values =
{
}
}, 'polygon'), (object #0 (::omero::grid::StringColumn)
{
name = z
description =
size = 1
values =
{
}
}, '1'), (object #0 (::omero::grid::StringColumn)
{
name = area
description =
size = 1
values =
{
}
}, '19630.9118298339'), (object #0 (::omero::grid::StringColumn)
{
name = length
description =
size = 1
values =
{
}
}, ''), (object #0 (::omero::grid::StringColumn)
{
name = points
description =
size = 1
values =
{
}
}, '19634'), (object #0 (::omero::grid::StringColumn)
{
name = min
description =
size = 1
values =
{
}
}, '5398.0'), (object #0 (::omero::grid::StringColumn)
{
name = max
description =
size = 1
values =
{
}
}, '52621.0'), (object #0 (::omero::grid::StringColumn)
{
name = sum
description =
size = 1
values =
{
}
}, '316019519.0')]
So I removed the image column. With this csv
Roi,shape,type,z,area,length,points,min,max,sum
862,991,polygon,1,19630.9118298339,,19634,5398.0,52621.0,316019519.0
863,992,polygon,1,19475.84766357460,,19498,4311.0,65535.0,335470489.0
864,993,polygon,1,168813.70565185600,,168827,112.0,63432.0,2643853129.0
I got
this exception
Traceback (most recent call last):
File "/home/omero/omero/tmp/omero_omero/28686/processdu2vua96.dir/./script", line 198, in <module>
run_script()
File "/home/omero/omero/tmp/omero_omero/28686/processdu2vua96.dir/./script", line 190, in run_script
message = populate_metadata(client, conn, script_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/omero/omero/tmp/omero_omero/28686/processdu2vua96.dir/./script", line 142, in populate_metadata
ctx.preprocess_from_handle(f1)
File "/home/omero/workspace/OMERO-server/.venv3/lib64/python3.11/site-packages/omero_metadata/populate.py", line 1205, in preprocess_from_handle
self.preprocess_data(reader)
File "/home/omero/workspace/OMERO-server/.venv3/lib64/python3.11/site-packages/omero_metadata/populate.py", line 1278, in preprocess_data
value = self.value_resolver.resolve(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/omero/workspace/OMERO-server/.venv3/lib64/python3.11/site-packages/omero_metadata/populate.py", line 459, in resolve
return self.wrapper.resolve_shape(value)
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ProjectWrapper' object has no attribute 'resolve_shape'. Did you mean: 'resolve_dataset'?
So then I also removed the shape column (which worked).
|
Thanks Will. The problem with the image csv: I thought it has to either be "Image Name" (for the using name) or "Image" (for using id)? |
|
Yes, I should def add |
This allows adding a csv with ROI measurements as omero.table on the project level via
omero metadata populate .....