-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
354 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
categories: | ||
- Imaging | ||
description: Get omero id of children of an omero object id | ||
name: omero_get_children_ids | ||
owner: lldelisle | ||
long_description: Uses a python script to get the ids of children of an omero object. | ||
remote_repository_url: https://github.com/lldelisle/tools-lldelisle/tree/master/tools/omero_get_children_ids |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
import argparse | ||
import json | ||
|
||
import omero | ||
from omero.gateway import BlitzGateway | ||
|
||
|
||
def get_omero_credentials(config_file): | ||
if config_file is None: # IDR connection | ||
omero_username = "public" | ||
omero_password = "public" | ||
else: # other omero instance | ||
with open(config_file) as f: | ||
cfg = json.load(f) | ||
omero_username = cfg["username"] | ||
omero_password = cfg["password"] | ||
|
||
if omero_username == "" or omero_password == "": | ||
omero_username = "public" | ||
omero_password = "public" | ||
return (omero_username, omero_password) | ||
|
||
|
||
def recursive_get_children_id(parent_object, final_object_type): | ||
output = [] | ||
if parent_object.OMERO_CLASS == 'WellSample': | ||
return [parent_object.getImage().id] | ||
for children in parent_object.listChildren(): | ||
if children.OMERO_CLASS == final_object_type.title(): | ||
output.append(children.id) | ||
else: | ||
# We need to go one step further | ||
output += recursive_get_children_id(children, final_object_type) | ||
return output | ||
|
||
|
||
def get_children_ids( | ||
parent_object_type, | ||
omero_id, | ||
final_object_type, | ||
omero_username, | ||
omero_password, | ||
omero_host="idr.openmicroscopy.org", | ||
omero_secured=False, | ||
): | ||
## Connect to omero: | ||
with BlitzGateway( | ||
omero_username, omero_password, host=omero_host, secure=omero_secured | ||
) as conn: | ||
# Retrieve omero object | ||
parent_object = conn.getObject(parent_object_type.title(), omero_id) | ||
return recursive_get_children_id(parent_object, final_object_type) | ||
|
||
|
||
if __name__ == "__main__": | ||
p = argparse.ArgumentParser() | ||
p.add_argument("-oh", "--omero-host", type=str, | ||
default="idr.openmicroscopy.org") | ||
p.add_argument("--omero-secured", action="store_true", default=True) | ||
p.add_argument("-cf", "--config-file", dest="config_file", | ||
default=None) | ||
p.add_argument("--parent-object-type", dest="parent_object_type", | ||
type=str, default=None, required=True) | ||
p.add_argument("--omero-id", dest="omero_id", | ||
type=int, default=None, required=True) | ||
p.add_argument("--final-object-type", dest="final_object_type", | ||
type=str, default=None, required=True) | ||
p.add_argument("--output", type=str, default=None, required=True) | ||
args = p.parse_args() | ||
children_ids = get_children_ids( | ||
args.parent_object_type, | ||
args.omero_id, | ||
args.final_object_type, | ||
*get_omero_credentials(args.config_file), | ||
omero_host=args.omero_host, | ||
omero_secured=args.omero_secured, | ||
) | ||
with open(args.output, 'w') as fo: | ||
fo.write('\n'.join([str(id) for id in children_ids])) | ||
fo.write('\n') |
267 changes: 267 additions & 0 deletions
267
tools/omero_get_children_ids/omero_get_children_ids.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,267 @@ | ||
<tool id="omero_get_children_ids" name="Omero" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.01" license="MIT"> | ||
<description>Get children ids</description> | ||
<macros> | ||
<token name="@TOOL_VERSION@">0.1.0</token> | ||
<token name="@VERSION_SUFFIX@">0</token> | ||
</macros> | ||
<requirements> | ||
<requirement type="package" version="5.17.0">omero-py</requirement> | ||
</requirements> | ||
<command detect_errors="exit_code"><![CDATA[ | ||
#if $omero_instance_type.omero_instance == "priv": | ||
## the user wants to use a non-public OMERO instance | ||
## check if credentials are set in the user-preferences, if not warn the user and exit | ||
#set $username = $__user__.extra_preferences.get('omero_account|username', "") | ||
#set $password = $__user__.extra_preferences.get('omero_account|password', "") | ||
#if $omero_instance_type.galaxy_test_param != 'true' and ($username == "" or $password ==""): | ||
echo "OMERO connection credentials are empty. Set your credentials via: User -> Preferences -> Manage Information" 1>&2 && | ||
exit 1 && | ||
#end if | ||
#end if | ||
python '$__tool_directory__/omero_get_children_ids.py' | ||
#if $omero_instance_type.omero_instance =='priv': | ||
-oh '$omero_instance_type.omero_host' | ||
$omero_instance_type.omero_secured | ||
-cf '$credentials' | ||
#end if | ||
--parent-object-type '$omero_object.parent_object_type' | ||
--omero-id '$omero_object.omero_id' | ||
--final-object-type '$omero_object.final_object_type' | ||
--output '$output' | ||
]]></command> | ||
<configfiles> | ||
<configfile name="credentials"><![CDATA[ | ||
#if $omero_instance_type.omero_instance =='priv' and $omero_instance_type.galaxy_test_param == 'true': | ||
## as a test for a private instance we actually use a public instance, but with credentials | ||
#set $username = 'public' | ||
#set $password = 'public' | ||
#else: | ||
#set $username = $__user__.extra_preferences.get('omero_account|username', "") | ||
#set $password = $__user__.extra_preferences.get('omero_account|password', "") | ||
#end if | ||
{ | ||
"username": "$username", | ||
"password": "$password" | ||
} | ||
]]></configfile> | ||
</configfiles> | ||
<inputs> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" type="select" label="Which OMERO instance to connect?" | ||
help="By default, the tool will request children ID from IDR. If you | ||
need to connect to your own instance, set your connection username and password from User->Preference->Manage Information" > | ||
<option value="idr">IDR</option> | ||
<option value="priv">other OMERO instance</option> | ||
</param> | ||
<when value="priv"> | ||
<param name="omero_host" type="text" label="OMERO host URL"> | ||
<validator type="regex" message="Enter a valid host location, for example, your.omero.server">^[a-zA-Z0-9._-]*$</validator> | ||
<validator type="expression" message="No two dots (..) allowed">'..' not in value</validator> | ||
</param> | ||
<param name="omero_secured" type="boolean" label="Secured connection?" checked="true" truevalue="--omero-secured" falsevalue="" | ||
help="Select Yes if your OMERO instance is running with SSL, otherwise select No"> | ||
</param> | ||
<param name="galaxy_test_param" type="hidden" value="false" /> | ||
</when> | ||
<when value="idr" /> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" type="select" label="Type of parent object"> | ||
<option value="well">Well</option> | ||
<option value="plate">Plate</option> | ||
<option value="screen">Screen</option> | ||
<option value="dataset">Dataset</option> | ||
<option value="project">Project</option> | ||
</param> | ||
<when value="well"> | ||
<param name="omero_id" type="integer" value="" label="Well ID on omero" /> | ||
<param name="final_object_type" type="hidden" value="image"/> | ||
</when> | ||
<when value="plate"> | ||
<param name="omero_id" type="integer" value="" label="Plate ID on omero" /> | ||
<param name="final_object_type" type="select" label="Type of children object for which you want the id"> | ||
<option value="image">All Omero Image Ids</option> | ||
<option value="well">All Omero Well Ids</option> | ||
</param> | ||
</when> | ||
<when value="screen"> | ||
<param name="omero_id" type="integer" value="" label="Screen ID on omero" /> | ||
<param name="final_object_type" type="select" label="Type of children object for which you want the id"> | ||
<option value="image">All Omero Image Ids</option> | ||
<option value="well">All Omero Well Ids</option> | ||
<option value="plate">All Omero Plate Ids</option> | ||
</param> | ||
</when> | ||
<when value="dataset"> | ||
<param name="omero_id" type="integer" value="" label="Dataset ID on omero" /> | ||
<param name="final_object_type" type="hidden" value="image"/> | ||
</when> | ||
<when value="project"> | ||
<param name="omero_id" type="integer" value="" label="Project ID on omero" /> | ||
<param name="final_object_type" type="select" label="Type of children object for which you want the id"> | ||
<option value="image">All Omero Image Ids</option> | ||
<option value="dataset">All Omero Dataset Ids</option> | ||
</param> | ||
</when> | ||
</conditional> | ||
</inputs> | ||
<outputs> | ||
<data name="output" format="tabular" label="All ${omero_object.final_object_type} from ${omero_object.parent_object_type} ID ${omero_object.omero_id}" /> | ||
</outputs> | ||
<tests> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="well"/> | ||
<param name="omero_id" value="2184933"/> | ||
<param name="final_object_type" value="image"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="14263182"/> | ||
<has_n_lines n="4"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="plate"/> | ||
<param name="omero_id" value="10055"/> | ||
<param name="final_object_type" value="image"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="14263182"/> | ||
<has_n_lines n="1300"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="plate"/> | ||
<param name="omero_id" value="10055"/> | ||
<param name="final_object_type" value="well"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="2184933"/> | ||
<has_n_lines n="325"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="screen"/> | ||
<param name="omero_id" value="3302"/> | ||
<param name="final_object_type" value="image"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="14263182"/> | ||
<has_n_lines n="9100"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="screen"/> | ||
<param name="omero_id" value="3302"/> | ||
<param name="final_object_type" value="plate"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="10055"/> | ||
<has_n_lines n="7"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="screen"/> | ||
<param name="omero_id" value="3302"/> | ||
<param name="final_object_type" value="well"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="2184933"/> | ||
<has_n_lines n="2275"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="dataset"/> | ||
<param name="omero_id" value="18101"/> | ||
<param name="final_object_type" value="image"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="15148237"/> | ||
<has_n_lines n="199"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="project"/> | ||
<param name="omero_id" value="2801"/> | ||
<param name="final_object_type" value="image"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="15148237"/> | ||
<has_n_lines n="494"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
<test expect_num_outputs="1"> | ||
<conditional name="omero_instance_type"> | ||
<param name="omero_instance" value="idr"/> | ||
</conditional> | ||
<conditional name="omero_object"> | ||
<param name="parent_object_type" value="project"/> | ||
<param name="omero_id" value="2801"/> | ||
<param name="final_object_type" value="dataset"/> | ||
</conditional> | ||
<output name="output"> | ||
<assert_contents> | ||
<has_line line="18101"/> | ||
<has_n_lines n="2"/> | ||
</assert_contents> | ||
</output> | ||
</test> | ||
</tests> | ||
<help><![CDATA[ | ||
.. class:: infomark | ||
**What it does** | ||
This tool will create a file with the list of all children ids of a given omero object. | ||
]]></help> | ||
</tool> |