{"id":19093441,"url":"https://github.com/imagej/imagej-omero","last_synced_at":"2025-04-30T12:44:16.701Z","repository":{"id":9055759,"uuid":"10822741","full_name":"imagej/imagej-omero","owner":"imagej","description":"Server- and client-side communication between ImageJ and OMERO","archived":false,"fork":false,"pushed_at":"2023-10-05T14:17:21.000Z","size":1468,"stargazers_count":11,"open_issues_count":53,"forks_count":10,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-04-19T02:23:16.175Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"kristoferjoseph/flexboxgrid","license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imagej.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-06-20T15:18:39.000Z","updated_at":"2024-08-02T02:18:52.000Z","dependencies_parsed_at":"2023-01-11T17:32:10.440Z","dependency_job_id":"1ded6637-bba5-43f7-ad39-049432c3ff2c","html_url":"https://github.com/imagej/imagej-omero","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-omero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-omero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-omero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-omero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imagej","download_url":"https://codeload.github.com/imagej/imagej-omero/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251703012,"owners_count":21630143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T03:24:41.629Z","updated_at":"2025-04-30T12:44:16.682Z","avatar_url":"https://github.com/imagej.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![](https://github.com/imagej/imagej-omero/actions/workflows/build-main.yml/badge.svg)](https://github.com/imagej/imagej-omero/actions/workflows/build-main.yml)\n[![developer chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://imagesc.zulipchat.com/#narrow/stream/327236-ImageJ2)\n\n[ImageJ-OMERO Presentation Slides](https://imagej.github.io/presentations/2018-05-30-imagej-omero/#/)\n\n## Overview\n\nThis project provides interoperability between\n[ImageJ](http://imagej.net/) and the [OMERO server](http://imagej.net/OMERO).\n\nImageJ-OMERO is ___one of two___ official integration mechanisms combining the\ntwo tools. The other project is\n[OMERO.imagej](https://omero-guides.readthedocs.io/projects/fiji/en/latest/).\n\nThe two mechanisms work differently and have different features:\n\n* __ImageJ-OMERO__ is built on ImageJ2. It is maintained by the ImageJ team.\n  You can install it using one of the OMERO-x.y update sites, replacing `x.y`\n  with your version of the OMERO server. The paradigm is to download complete\n  5-D images from OMERO as ImageJ2 datasets, with blocks of pixels loaded on\n  demand via the ImgLib2 cached cell image mechanism. It also supports\n  transferring ROIs to/from OMERO as\n  [imglib2-roi](https://github.com/imglib/imglib2-roi) objects, and results\n  tables to/from OMERO as\n  [scijava-table](https://github.com/scijava/scijava-table) objects.\n\n* __OMERO.imagej__ is built on ImageJ 1.x. It is maintained by the OMERO team.\n  It must be installed manually; it does not have an ImageJ update site.\n  The plugin is a thin wrapper of the OMERO.insight client, enabling you to\n  connect to OMERO via the OMERO.insight GUI, browse your database as usual,\n  and send images to ImageJ on demand. It also supports transferring ROIs\n  to/from OMERO. The ImageJ ROIs are converted into OMERO ROIs when uploaded\n  to OMERO. The supported workflow is to do your analysis in ImageJ as usual,\n  then upload results tables as attachments on the OMERO side.\n\nA third way to integrate OMERO with ImageJ, if you are comfortable writing\nscripts, is via [PyImageJ](https://github.com/imagej/pyimagej), as [described\nin the OMERO\ndocumentation](https://omero-guides.readthedocs.io/en/latest/fiji/docs/imagej_python.html).\n\nWhich approach works best for you will depend on your requirements. For help,\nplease post on the [Image.sc Forum](https://forum.image.sc/) using the `imagej`\nand `omero` tags.\n\n## ImageJ commands for working with OMERO\n\nThere are ImageJ commands for accessing images from a remote OMERO server,\nas well as uploading image data from ImageJ to OMERO as a new image.\n\n### Installation\n\nTo try it out, enable the appropriate\n[update site](http://imagej.net/Update_Sites):\n\n* __OMERO-5.5-5.6__ If your OMERO server version is \u003e= 5.5\n* __OMERO-5.4__ If your OMERO server is version 5.4.x.\n* __OMERO-5.2__ If your OMERO server is version 5.2.x.\n* __OMERO-5.1__ If your OMERO server is version 5.1.x.\n* __OMERO-5.0__ If your OMERO server is version 5.0.x.\n\nYou will then have the following new menu items:\n\n* File \u003e Import \u003e OMERO...\n* File \u003e Export \u003e OMERO...\n\n### OMERO Setup\n\nIf you do not already have access to a local OMERO server, the quickest method\nto get one up and running is [to use the Docker\nexample](https://github.com/ome/docker-example-omero). This will create a\nserver + web client.\n\n### Demonstration Video\n\n[![](resources/ij2-update-roi-demo-icon.PNG)](https://www.youtube.com/watch?v=st1E9Qxu0-s)\n\n## Calling ImageJ commands as OMERO scripts\n\nYou can execute ImageJ modules (commands, scripts, etc.) on the server side as\nOMERO scripts.\n\nCurrently images, tables, and ROIs are supported. However, only ROIs can be\nupdated on the server. Images and tables must be uploaded as new objects.\n\nAdditionally, it is possible to dictate where in OMERO outputs get stored by\nusing special parameter properties.\n\n*   `attachToOMERODatasetIDs` - This is used for output images to specify which\n    OMERO Datasets they should be associated with. The OMERO Dataset must be\n    specified by ID, and each output image can be associated with multiple\n    OMERO Datasets.\n*   `attachToImages` - This is used to dictate to which **input images** output\n    ROIs/tables should be attached. These images must be inputs to the script,\n    and should be referenced by their name (not ID).\n\nIf you wish to give it a test drive, the steps are:\n\n### Prerequisites\n\n*   [OMERO 5](http://www.openmicroscopy.org/site/support/omero5/sysadmins/unix/server-installation.html)\n*   Python 2.7 or later\n\n### Installation\n\nDownload the\n[ImageJ-OMERO installer](https://raw.githubusercontent.com/imagej/imagej-omero/master/bin/install-imagej),\nand run it:\n\n```shell\nsh install-imagej \u003cpath/to/omero\u003e\n```\n\nThe installer will:\n\n*   Download and install ImageJ into OMERO's `lib/ImageJ.app` folder,\n    with the __Fiji__ and __OMERO-5.x__ update sites enabled.\n*   Install OMERO script wrappers for all available ImageJ commands\n    into OMERO's `lib/scripts/imagej` folder.\n\n### Using an existing ImageJ installation\n\nIf you already have ImageJ installed on the OMERO server machine,\nyou can use that, rather than installing a new copy of ImageJ:\n\n1.  Enable the __OMERO-5.x__ [update site](http://imagej.net/Update_Sites).\n\n    ```shell\n    \u003cpath-to-imagej\u003e/\u003cimagej-launcher\u003e --update add-update-site OMERO-5.x http://sites.imagej.net/OMERO-5.x\n    \u003cpath-to-imagej\u003e/\u003cimagej-launcher\u003e --update update-force-pristine\n    ```\n\n    Where x is your OMERO version, \u0026lt;path-to-imagej\u0026gt; is a path to your ImageJ directory (i.e. ImageJ.app or Fiji.app), and \u0026lt;imagej-launcher\u0026gt; is the launcher for your operating system (i.e. ImageJ-linux64)\n\n2.  Run `gen-scripts` in ImageJ's `lib` directory.\n\n### Take it for a spin\n\n*   Fire up OMERO:\n\n    ```shell\n    omero admin start\n    ```\n\n*   List available scripts:\n\n    ```shell\n    omero script list\n    ```\n\n*   List parameters of \"System Information\" command:\n\n    ```shell\n    omero script params $(omero script list | grep 'System_Info' | sed 's/|.*//')\n    ```\n\n*   Execute the \"System Information\" command:\n\n    ```shell\n    omero script launch $(omero script list | grep 'System_Info' | sed 's/|.*//')\n    ```\n\n*   Repeat with any other desired commands.\n    Also try from OMERO.web and OMERO.insight!\n\n### Uninstalling\n\nIf you wish to remove ImageJ support from OMERO:\n\n```shell\nOMERO_PREFIX=\"/path/to/omero\"\nrm -rf \"$OMERO_PREFIX/lib/scripts/imagej\" \"$OMERO_PREFIX/lib/ImageJ.app\"\n```\n\n### Demonstration Videos\n\n[![](resources/ij2-invert-image-demo-icon.PNG)](https://www.youtube.com/watch?v=gpu2NdidBHQ)\n\n[![](resources/ij1-analyze-particles-demo-icon.PNG)](https://www.youtube.com/watch?v=CQP_cIYt00U)\n\n## Under the hood: a SCIFIO format for OMERO data\n\nThis component provides a [SCIFIO](http://imagej.net/SCIFIO) `Format`\nimplementation which offers transparent read and write access to image pixels\non an OMERO server.\n\nWith this format implementation, SCIFIO's `ImgOpener` class can be used to\n\"open\" (i.e., download on demand) an ImgLib2 `ImgPlus` directly from an OMERO\nserver. The `ImgPlus` will be backed by a `SCIFIOCellImg`, which is backed by\nan `OMEROFormat.Reader`, which is backed by an `omero.client` connection.\n\nThe `ImgPlus` can then be wrapped as an ImageJ2 `Dataset`, enabling ImageJ2\ncommands to operate upon it directly.\n\nWhen changes are made to the local `ImgPlus`'s pixels, those changes happen in\nmemory, to the `Img`'s \"cells\"; i.e., paged blocks. As new cells are requested\nwhich push memory consumption beyond desired limits, old dirty cells are cached\nout to disk. These cached cells, when present, are used in preference to data\nfrom the original source. In this way, it is possible to iterate over a massive\nremote dataset and apply image processing filters, with all changes recorded to\nthe disk cache, as long as there is sufficient disk space.\n\nFinally, once processing is complete, SCIFIO's `ImgSaver` class can be used to\n\"save\" (i.e., upload) the `ImgPlus` back to OMERO as a new pixels object.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimagej%2Fimagej-omero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimagej%2Fimagej-omero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimagej%2Fimagej-omero/lists"}