Skip to content

add resolve_rois to projectwrapper - #92

Open
dominikl wants to merge 1 commit into
ome:masterfrom
dominikl:proj_rois
Open

add resolve_rois to projectwrapper#92
dominikl wants to merge 1 commit into
ome:masterfrom
dominikl:proj_rois

Conversation

@dominikl

@dominikl dominikl commented Jan 15, 2026

Copy link
Copy Markdown
Member

This allows adding a csv with ROI measurements as omero.table on the project level via omero metadata populate .....

@dominikl
dominikl requested a review from will-moore January 15, 2026 20:02

@will-moore will-moore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

@dominikl

Copy link
Copy Markdown
Member Author

Thanks Will. The problem with the image csv:

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...

I thought it has to either be "Image Name" (for the using name) or "Image" (for using id)?

@dominikl

Copy link
Copy Markdown
Member Author

Yes, I should def add resolve_shape to ProjectWrapper to be consistant with the Dataset workflow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants