Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
.claude/skills/omero-integration/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✓→✓ | = Same ✓ | — | — |
| case-05 | ✗→✗ | = Same ✗ | — | — |
| case-10 | ✗→✗ | = Same ✗ | — | — |
| case-15 | ✗→✗ | = Same ✗ | — | — |
OMERO is an open-source platform for managing, visualizing, and analyzing microscopy images and metadata. Access images via Python API, retrieve datasets, analyze pixels, manage ROIs and annotations, for high-content screening and microscopy workflows.
This skill should be used when:
This skill covers eight major capability areas. Each is documented in detail in the references/ directory:
File: references/connection.md
Establish secure connections to OMERO servers, manage sessions, handle authentication, and work with group contexts. Use this for initial setup and connection patterns.
Common scenarios:
File: references/data_access.md
Navigate OMERO's hierarchical data structure (Projects → Datasets → Images) and screening data (Screens → Plates → Wells). Retrieve objects, query by attributes, and access metadata.
Common scenarios:
File: references/metadata.md
Create and manage annotations including tags, key-value pairs, file attachments, and comments. Link annotations to images, datasets, or other objects.
Common scenarios:
File: references/image_processing.md
Access raw pixel data as NumPy arrays, manipulate rendering settings, create derived images, and manage physical dimensions.
Common scenarios:
File: references/rois.md
Create, retrieve, and analyze ROIs with various shapes (rectangles, ellipses, polygons, masks, points, lines). Extract intensity statistics from ROI regions.
Common scenarios:
File: references/tables.md
Store and query structured tabular data associated with OMERO objects. Useful for analysis results, measurements, and metadata.
Common scenarios:
File: references/scripts.md
Create OMERO.scripts that run server-side for batch processing, automated workflows, and integration with OMERO clients.
Common scenarios:
File: references/advanced.md
Covers permissions, filesets, cross-group queries, delete operations, and other advanced functionality.
Common scenarios:
bashuv pip install omero-py
Requirements:
Basic connection pattern:
pythonfrom omero.gateway import BlitzGateway # Connect to OMERO server conn = BlitzGateway(username, password, host=host, port=port) connected = conn.connect() if connected: # Perform operations for project in conn.listProjects(): print(project.getName()) # Always close connection conn.close() else: print("Connection failed")
Recommended pattern with context manager:
pythonfrom omero.gateway import BlitzGateway with BlitzGateway(username, password, host=host, port=port) as conn: # Connection automatically managed for project in conn.listProjects(): print(project.getName()) # Automatically closed on exit
For data exploration:
references/connection.md to establish connectionreferences/data_access.md to navigate hierarchyreferences/metadata.md for annotation detailsFor image analysis:
references/image_processing.md for pixel data accessreferences/rois.md for region-based analysisreferences/tables.md to store resultsFor automation:
references/scripts.md for server-side processingreferences/data_access.md for batch data retrievalFor advanced operations:
references/advanced.md for permissions and deletionreferences/connection.md for cross-group queriesreferences/connection.md)references/data_access.md)references/data_access.md)references/image_processing.md)references/tables.md or references/metadata.md)references/rois.md)references/rois.md)references/tables.md)references/scripts.md)Always wrap OMERO operations in try-except blocks and ensure connections are properly closed:
pythonfrom omero.gateway import BlitzGateway import traceback try: conn = BlitzGateway(username, password, host=host, port=port) if not conn.connect(): raise Exception("Connection failed") # Perform operations except Exception as e: print(f"Error: {e}") traceback.print_exc() finally: if conn: conn.close()
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-24 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-25 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +4 percentage points is the difference between those two pass rates over the 25 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.