From ed4d7c70764da757af6a99f14ff67fd156fbd5e2 Mon Sep 17 00:00:00 2001
From: Petr Walczysko
Date: Wed, 3 Jun 2020 19:16:20 +0100
Subject: [PATCH 01/17] Add metadata import section
---
docs/index.rst | 1 +
docs/metadata.rst | 98 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 99 insertions(+)
create mode 100644 docs/metadata.rst
diff --git a/docs/index.rst b/docs/index.rst
index 32d4838..077d8a6 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -8,3 +8,4 @@ Contents:
import
render
+ metadata
diff --git a/docs/metadata.rst b/docs/metadata.rst
new file mode 100644
index 0000000..2123aff
--- /dev/null
+++ b/docs/metadata.rst
@@ -0,0 +1,98 @@
+Import metadata using the Command Line Interface (CLI)
+=======================================================
+
+Description:
+------------
+
+This chapter will show how to import metadata starting from a local CSV file and ending with OMERO.tables on images or Key-Value pairs on images using the Command Line Interface (CLI) and the OMERO server-side scripts.
+
+This action is typically done after a successful import of images.
+
+We will show:
+
+- How to import metadata from local CSV file in a bulk manner and turn them into OMERO.tables on images using CLI
+
+- How to turn the OMERO.tables on images into Key-Value pair annotations on images in bulk manner using CLI
+
+- How to import metadata from local CSV file and use a server-side script in OMERO to turn these into OMERO.tables on images
+
+- How to construct a simple file to turn the metadata stored in OMERO.tables into Key-Value pairs on images using CLI
+
+**Resources:**
+--------------
+
+- Documentation:
+
+ - https://docs.openmicroscopy.org/latest/omero/users/cli/installation.html
+
+ - `https://docs.openmicroscopy.org/omero/latest/users/cli/index.html `__
+
+- Data: example images from
+
+ - IDR data http://idr.openmicroscopy.org/webclient/?show=project-51
+
+- Metadata plugin for OMERO
+
+ - https://pypi.org/project/omero-metadata/
+
+- Bulkmap config yml files defining the various Key-Value pairs parameters, such as the groups and other parameters.
+
+ - https://github.com/IDR/idr0021-lawo-pericentriolarmaterial/blob/9479af85f19487f215e3dfdd31a1b587370ed3cf/experimentA/idr0021-experimentA-bulkmap-config.yml
+
+- Annotation csv file defines the content of OMERO.tables for each image.
+
+ - https://github.com/IDR/idr0021-lawo-pericentriolarmaterial/blob/9479af85f19487f215e3dfdd31a1b587370ed3cf/experimentA/idr0021-experimentA-annotation.csv
+
+Setup:
+------
+
+**Metadata plugin installation**
+
+- Go to the environment where you installed your OMERO.cli as specified under - https://docs.openmicroscopy.org/latest/omero/users/cli/installation.html.
+
+- Activate the virtual environment.
+
+- Run::
+
+ $ pip install omero-metadata
+
+**Step-by-step:**
+-----------------
+
+#. On your local machine, open a terminal
+
+#. Activate the virtual environment where ``omero-py`` is installed or add it to ``PATH`` e.g.::
+
+ $ export PATH=/opt/omero/server/venv3/bin:$PATH
+
+#. Download the csv from https://github.com/IDR/idr0021-lawo-pericentriolarmaterial/blob/9479af85f19487f215e3dfdd31a1b587370ed3cf/experimentA/idr0021-experimentA-annotation.csv
+
+#. The variable ``$ID`` below is the ID of the Project, in this example case it is the Project containing the idr0021 study. To add annotations from a local csv file to the images in the said Project in the form of OMERO.tables, run::
+
+ $ omero metadata populate --report --batch 1000 --file local/path/to/idr0021-experimentA-annotation.csv Project:$ID
+
+#. Open your browser and login to the OMERO.web. Navigate to the Project you just worked with, expand the "Attachments" harmonica in the right-hand pane and verify that a new attachment is on that Project named ``bulk_annotations``.
+
+#. You can inspect its content by clicking on the "eye" icon inside the annotation.
+
+#. Select an image inside the Project and expand the "Tables" harmonica in the right-hand pane. These tables contain the appropriate line from the ``bulk_annotations`` attachment you just created for that particular image.
+
+#. Go back to your terminal. Download the idr0021-experimentA-bulkmap-config.yml file https://github.com/IDR/idr0021-lawo-pericentriolarmaterial/blob/9479af85f19487f215e3dfdd31a1b587370ed3cf/experimentA/idr0021-experimentA-bulkmap-config.yml.
+
+#. Open the downloaded file in a text editor and delete the ``Advanced options...`` section. Save the file and run::
+
+ $ omero metadata populate --context bulkmap --cfg local/path/to/idr0021-experimentA-bulkmap-config.yml --batch 100 Project:$ID
+
+#. Go to your browser and OMERO.web, select the images in the Project you targeted and verify that they have now new Key-Value pair annotations displayed in the right-hand pane.
+
+#. Still in OMERO.web, create a new Dataset and copy into it 4 images, preferably images which have nor OMERO.tables on them neither any Key-Value pairs attached. Note the names of the images you are copying in.
+
+#. Go to the https://pypi.org/project/omero-metadata/ and find the section named ``populate``. Copy the ``project.csv`` from that section and paste it locally, either into your text editor, or into Microsoft Excel. Edit the names of the images in the first column to match the names of the images you copied into your Dataset in the previous step. Also, edit the name of the Dataset in the second column to match the name of your Dataset in OMERO.web. Save the file locally as csv.
+
+#. In your OMERO.web, upload the csv you just saved and attach it onto the Dataset you created previously.
+
+#. Select the Dataset you created and attached to it the csv. Find the script icon above the central pane, expand it and find the ``Import scripts`` section. In there, select the ``Populate metadata`` script.
+
+#. Run the script.
+
+#. Go back to the Dataset and observe that there is a new Attachment in the right hand pane under "Attachments" harmonica. Click on single images inside the Dataset and observe that in the "Tables" harmonica in the right-hand pane there are new values coming originally from your edited csv.
\ No newline at end of file
From c8dd50cdc1d40ab0d13ab86c88e93ae71fc3ea12 Mon Sep 17 00:00:00 2001
From: Petr Walczysko
Date: Thu, 4 Jun 2020 13:53:58 +0100
Subject: [PATCH 02/17] Add simple annotation csv
---
docs/simple-annotation.csv | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 docs/simple-annotation.csv
diff --git a/docs/simple-annotation.csv b/docs/simple-annotation.csv
new file mode 100644
index 0000000..f6aea95
--- /dev/null
+++ b/docs/simple-annotation.csv
@@ -0,0 +1,34 @@
+Dataset Name,Image Name,Characteristics [Organism],Characteristics [Cell Line],Characteristics [Cell Cycle Phase],Experimental Condition [Antibody Target],Comment [Targeted Protein],Comment [Gene Identifier],Comment [Gene Symbol],Comment [Gene Symbol Synonyms],Has Phenotype,Phenotype Annotation Level,Phenotype 1,Phenotype 1 Term Name,Phenotype 1 Term Accession
+siRNAi-HeLa,CSFV_10.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENST00000394818.8,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,CSFV_11.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENST00000394818.9,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,CSFV_12.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENST00000394818.10,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_01.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_02.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_02.r3d_D3D.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_02.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_03.r3d_D3D.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_03.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_01.r3d,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_01.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_02.r3d,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_05.r3d,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_06.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_06.r3d_D3D.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_06.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,V-out_01.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,V-out_03.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,V-out_04.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,V-out_04.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,V-out_06.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_01.r3d,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_01.r3d_D3D.dv,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_01.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_02.r3d,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_02.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_03.r3d_D3D.dv,Homo sapiens,HeLa,Anaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_04.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_04.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_06.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_06.r3d_D3D.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_07.r3d,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_07.r3d_D3D.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
\ No newline at end of file
From 53af69dbf2497d5aae91a2e190dc72a1ceb0573c Mon Sep 17 00:00:00 2001
From: Petr Walczysko
Date: Thu, 4 Jun 2020 15:34:53 +0100
Subject: [PATCH 03/17] Delete the "undefined" items, empty cells will be
ignored
---
docs/simple-annotation.csv | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/docs/simple-annotation.csv b/docs/simple-annotation.csv
index f6aea95..9a23b03 100644
--- a/docs/simple-annotation.csv
+++ b/docs/simple-annotation.csv
@@ -1,17 +1,17 @@
Dataset Name,Image Name,Characteristics [Organism],Characteristics [Cell Line],Characteristics [Cell Cycle Phase],Experimental Condition [Antibody Target],Comment [Targeted Protein],Comment [Gene Identifier],Comment [Gene Symbol],Comment [Gene Symbol Synonyms],Has Phenotype,Phenotype Annotation Level,Phenotype 1,Phenotype 1 Term Name,Phenotype 1 Term Accession
siRNAi-HeLa,CSFV_10.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENST00000394818.8,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,CSFV_11.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENST00000394818.9,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
-siRNAi-HeLa,CSFV_12.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENST00000394818.10,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,CSFV_12.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,,INCENP,INCENP,ENST00000394818.10,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,IN_01.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,IN_02.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,IN_02.r3d_D3D.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,IN_02.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
-siRNAi-HeLa,IN_03.r3d_D3D.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
-siRNAi-HeLa,IN_03.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_03.r3d_D3D.dv,Homo sapiens,HeLa,,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,IN_03.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,scram_01.r3d,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,scram_01.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,scram_02.r3d,Homo sapiens,HeLa,Metaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
-siRNAi-HeLa,scram_05.r3d,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,scram_05.r3d,Homo sapiens,HeLa,,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,scram_06.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,scram_06.r3d_D3D.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,scram_06.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
@@ -30,5 +30,5 @@ siRNAi-HeLa,VRAQ_04.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG0000014
siRNAi-HeLa,VRAQ_04.r3d_D3D_PRJ.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,VRAQ_06.r3d,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
siRNAi-HeLa,VRAQ_06.r3d_D3D.dv,Homo sapiens,HeLa,Prometaphase,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
-siRNAi-HeLa,VRAQ_07.r3d,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
-siRNAi-HeLa,VRAQ_07.r3d_D3D.dv,Homo sapiens,HeLa,undefined,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
\ No newline at end of file
+siRNAi-HeLa,VRAQ_07.r3d,Homo sapiens,HeLa,,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
+siRNAi-HeLa,VRAQ_07.r3d_D3D.dv,Homo sapiens,HeLa,,INCENP,INCENP,ENSG00000149503,INCENP,FLJ31633,yes,protein,protein localized to centrosome,protein localized in centrosome phenotype,CMPO_0000425
\ No newline at end of file
From d9acb71c5f3a1406f7454820e475095795407067 Mon Sep 17 00:00:00 2001
From: Simon Li
Date: Thu, 4 Jun 2020 18:06:29 +0100
Subject: [PATCH 04/17] Add example simple-annotation-bulkmap-config.yml
This corresponds to simple-annotation.csv
For example, run:
omero metadata populate --context bulkmap --cfg simple-annotation-bulkmap-config.yml Dataset:2066
To delete the map-annotations added by the above config file run:
omero metadata populate --context deletemap --cfg simple-annotation-bulkmap-config.yml Dataset:2066
---
docs/simple-annotation-bulkmap-config.yml | 135 ++++++++++++++++++++++
1 file changed, 135 insertions(+)
create mode 100644 docs/simple-annotation-bulkmap-config.yml
diff --git a/docs/simple-annotation-bulkmap-config.yml b/docs/simple-annotation-bulkmap-config.yml
new file mode 100644
index 0000000..d65f253
--- /dev/null
+++ b/docs/simple-annotation-bulkmap-config.yml
@@ -0,0 +1,135 @@
+---
+name: simple-annotation
+version: 1
+
+defaults:
+ # Should the column be processed when creating bulk-annotations (yes/no)
+ include: no
+ # Columns type of the bulk-annotations column
+ type: string
+
+ # If non-empty a string used to separate multiple fields in a column
+ # White space will be stripped
+ split:
+ # Should this column be included in the clients (yes/no)
+ includeclient: yes
+ # Should this column be visible in the clients, if no the column should be
+ # hidden in the client but will still be indexed by the searcher (yes/no)
+ visible: yes
+ # Should empty values be omitted from the client display
+ omitempty: yes
+
+# This is the list of column names taken from simple-annotation.csv:
+#
+# Dataset Name
+# Image Name
+# Characteristics [Organism]
+# Characteristics [Cell Line]
+# Characteristics [Cell Cycle Phase]
+# Experimental Condition [Antibody Target]
+# Comment [Targeted Protein]
+# Comment [Gene Identifier]
+# Comment [Gene Symbol]
+# Comment [Gene Symbol Synonyms]
+# Has Phenotype
+# Phenotype Annotation Level
+# Phenotype 1
+# Phenotype 1 Term Name
+# Phenotype 1 Term Accession
+#
+# You can choose which of these appear in the default map annotations.
+# In the defaults section of this configuration "include" is set to
+# "no" which means if you do not add a column it won't be displayed in
+# the map annotations.
+
+columns:
+
+ ######################################################################
+ # These columns will appear in the default map annotation namespace
+ # openmicroscopy.org/omero/bulk_annotations
+ ######################################################################
+ - name: Dataset Name
+ include: yes
+ - name: Image Name
+ include: yes
+ - name: Characteristics [Cell Cycle Phase]
+ # "clientname" can be used to override the column name in the
+ # key of the map-annotation key-value. The default is to use
+ # the column name
+ clientname: Cell Cycle Phase
+ include: yes
+ - name: Experimental Condition [Antibody Target]
+ clientname: Antibody Target
+ include: yes
+ - name: Comment [Targeted Protein]
+ clientname: Targeted Protein
+ include: yes
+ - name: Has Phenotype
+ include: yes
+ - name: Phenotype Annotation Level
+ include: yes
+
+ ######################################################################
+ # The columns in these groups will appear as separate namespaced map-
+ # annotations. Mapr can be configured to restrict a query to one of
+ # these namespaces.
+ ######################################################################
+
+ - group:
+ namespace: openmicroscopy.org/mapr/organism
+ columns:
+ - name: Characteristics [Organism]
+ clientname: Organism
+ include: yes
+
+ - group:
+ namespace: openmicroscopy.org/mapr/cell_line
+ columns:
+ - name: Characteristics [Cell Line]
+ clientname: Cell Line
+ include: yes
+
+ - group:
+ namespace: openmicroscopy.org/mapr/gene
+ columns:
+ # If mapr finds two sets of key-value pairs with names
+ # "Column Name" and "Column Name URL" it will automatically
+ # combine them into one hyperlinked value
+ # This is why "Comment [Gene Identifier]" is listed twice, the
+ # first indicates the text, the second indicates the hyperlink
+ - name: Comment [Gene Identifier]
+ clientname: Gene Identifier
+ include: yes
+ omitempty: no
+ - name: Comment [Gene Identifier]
+ clientname: Gene Identifier URL
+ # "clientvalue" can be used to override the value of the map-
+ # annotation key-value. The "value" is substituted using
+ # Jinja2 templates.
+ clientvalue: http://www.ensembl.org/id/{{ value|urlencode }}
+ include: yes
+ - name: Comment [Gene Symbol]
+ clientname: Gene Symbol
+ include: yes
+ omitempty: no
+ - name: Comment [Gene Symbol Synonyms]
+ clientname: Gene Symbol Synonyms
+ include: yes
+ omitempty: no
+
+ - group:
+ namespace: openmicroscopy.org/mapr/phenotype
+ columns:
+ - name: Phenotype 1
+ clientname: Phenotype
+ include: yes
+ - name: Phenotype 1 Term Name
+ clientname: Phenotype Term Name
+ include: yes
+ - name: Phenotype 1 Term Accession
+ clientname: Phenotype Term Accession
+ include: yes
+ - name: Phenotype 1 Term Accession
+ clientname: Phenotype Term Accession URL
+ clientvalue: http://www.ebi.ac.uk/cmpo/{{ value|urlencode }}
+ include: yes
From 1156874bc1137b93864395bcb19f201d9e8db942 Mon Sep 17 00:00:00 2001
From: pwalczysko
Date: Fri, 5 Jun 2020 14:20:17 +0100
Subject: [PATCH 05/17] Update docs/metadata.rst
Co-authored-by: Mark Carroll
---
docs/metadata.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/metadata.rst b/docs/metadata.rst
index 2123aff..65c1947 100644
--- a/docs/metadata.rst
+++ b/docs/metadata.rst
@@ -1,5 +1,5 @@
Import metadata using the Command Line Interface (CLI)
-=======================================================
+======================================================
Description:
------------
@@ -95,4 +95,4 @@ Setup:
#. Run the script.
-#. Go back to the Dataset and observe that there is a new Attachment in the right hand pane under "Attachments" harmonica. Click on single images inside the Dataset and observe that in the "Tables" harmonica in the right-hand pane there are new values coming originally from your edited csv.
\ No newline at end of file
+#. Go back to the Dataset and observe that there is a new Attachment in the right hand pane under "Attachments" harmonica. Click on single images inside the Dataset and observe that in the "Tables" harmonica in the right-hand pane there are new values coming originally from your edited csv.
From 79b3691bfb31cd302d1cacfeca6d31bd04ca8438 Mon Sep 17 00:00:00 2001
From: pwalczysko
Date: Fri, 5 Jun 2020 14:20:36 +0100
Subject: [PATCH 06/17] Update docs/metadata.rst
Co-authored-by: Mark Carroll
---
docs/metadata.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/metadata.rst b/docs/metadata.rst
index 65c1947..d90cc5d 100644
--- a/docs/metadata.rst
+++ b/docs/metadata.rst
@@ -10,7 +10,7 @@ This action is typically done after a successful import of images.
We will show:
-- How to import metadata from local CSV file in a bulk manner and turn them into OMERO.tables on images using CLI
+- How to import metadata from local CSV file in a bulk manner and turn them into OMERO.tables on images using CLI
- How to turn the OMERO.tables on images into Key-Value pair annotations on images in bulk manner using CLI
From 14c2c3cc2823c709feb1fc68d21813c437a8ccdc Mon Sep 17 00:00:00 2001
From: pwalczysko
Date: Fri, 5 Jun 2020 14:20:54 +0100
Subject: [PATCH 07/17] Update docs/metadata.rst
Co-authored-by: Mark Carroll
---
docs/metadata.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/metadata.rst b/docs/metadata.rst
index d90cc5d..6358277 100644
--- a/docs/metadata.rst
+++ b/docs/metadata.rst
@@ -85,7 +85,7 @@ Setup:
#. Go to your browser and OMERO.web, select the images in the Project you targeted and verify that they have now new Key-Value pair annotations displayed in the right-hand pane.
-#. Still in OMERO.web, create a new Dataset and copy into it 4 images, preferably images which have nor OMERO.tables on them neither any Key-Value pairs attached. Note the names of the images you are copying in.
+#. Still in OMERO.web, create a new Dataset and copy into it 4 images, preferably images which have neither OMERO.tables on them nor any Key-Value pairs attached. Note the names of the images you are copying in.
#. Go to the https://pypi.org/project/omero-metadata/ and find the section named ``populate``. Copy the ``project.csv`` from that section and paste it locally, either into your text editor, or into Microsoft Excel. Edit the names of the images in the first column to match the names of the images you copied into your Dataset in the previous step. Also, edit the name of the Dataset in the second column to match the name of your Dataset in OMERO.web. Save the file locally as csv.
From 4554098849c4eb991f81408df8dfce8d3cfcc0ae Mon Sep 17 00:00:00 2001
From: Petr Walczysko
Date: Mon, 8 Jun 2020 17:45:05 +0100
Subject: [PATCH 08/17] Add downloadable csv cf. Simons comment
---
docs/four-images.csv | 6 ++++++
docs/metadata.rst | 5 +++--
2 files changed, 9 insertions(+), 2 deletions(-)
create mode 100644 docs/four-images.csv
diff --git a/docs/four-images.csv b/docs/four-images.csv
new file mode 100644
index 0000000..d41e3c0
--- /dev/null
+++ b/docs/four-images.csv
@@ -0,0 +1,6 @@
+# header s,s,d,l,s
+Image Name,Dataset Name,ROI_Area,Channel_Index,Channel_Name
+Centrin_PCNT_Cep215_20110506_Fri-1608_0_SIR_PRJ.dv,dataset01,0.0469,1,DAPI
+Cep215_PCNT_gtub_20110506_Fri-1721_0_SIR_PRJ.dv,dataset01,0.142,2,GFP
+Cep215_PCNT_NEDD1_20110505_Thu-1403_0_SIR_PRJ.dv,dataset01,0.093,3,TRITC
+siControl_N20_Cep215_I_20110411_Mon-1509_0_SIR_PRJ.dv,dataset01,0.429,4,Cy5
\ No newline at end of file
diff --git a/docs/metadata.rst b/docs/metadata.rst
index 6358277..ef8faa2 100644
--- a/docs/metadata.rst
+++ b/docs/metadata.rst
@@ -39,9 +39,10 @@ We will show:
- https://github.com/IDR/idr0021-lawo-pericentriolarmaterial/blob/9479af85f19487f215e3dfdd31a1b587370ed3cf/experimentA/idr0021-experimentA-bulkmap-config.yml
-- Annotation csv file defines the content of OMERO.tables for each image.
+- Annotation csv files define the content of OMERO.tables for each image.
- https://github.com/IDR/idr0021-lawo-pericentriolarmaterial/blob/9479af85f19487f215e3dfdd31a1b587370ed3cf/experimentA/idr0021-experimentA-annotation.csv
+ - :download:`four-images.csv `
Setup:
------
@@ -87,7 +88,7 @@ Setup:
#. Still in OMERO.web, create a new Dataset and copy into it 4 images, preferably images which have neither OMERO.tables on them nor any Key-Value pairs attached. Note the names of the images you are copying in.
-#. Go to the https://pypi.org/project/omero-metadata/ and find the section named ``populate``. Copy the ``project.csv`` from that section and paste it locally, either into your text editor, or into Microsoft Excel. Edit the names of the images in the first column to match the names of the images you copied into your Dataset in the previous step. Also, edit the name of the Dataset in the second column to match the name of your Dataset in OMERO.web. Save the file locally as csv.
+#. Go to the https://pypi.org/project/omero-metadata/ and find the section named ``populate``. Study the ``project.csv``. You can either take the ``project.csv`` file from there, or more conveniently, you can download directly its copy :download:`four-images.csv `. Open the csv in Excel and edit the names of the images in the first column to match the names of the images you copied into your Dataset in the previous step. Also, edit the name of the Dataset in the second column to match the name of your Dataset in OMERO.web. Save the file locally as csv.
#. In your OMERO.web, upload the csv you just saved and attach it onto the Dataset you created previously.
From 1bc11c6f15b0ec38439312ed1560292b7de57d68 Mon Sep 17 00:00:00 2001
From: Petr Walczysko
Date: Mon, 8 Jun 2020 17:50:20 +0100
Subject: [PATCH 09/17] Unify links order cf. Josh comment
---
docs/metadata.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/metadata.rst b/docs/metadata.rst
index ef8faa2..3bc0cc5 100644
--- a/docs/metadata.rst
+++ b/docs/metadata.rst
@@ -23,7 +23,7 @@ We will show:
- Documentation:
- - https://docs.openmicroscopy.org/latest/omero/users/cli/installation.html
+ - https://docs.openmicroscopy.org/omero/latest/users/cli/installation.html
- `https://docs.openmicroscopy.org/omero/latest/users/cli/index.html `__
@@ -49,7 +49,7 @@ Setup:
**Metadata plugin installation**
-- Go to the environment where you installed your OMERO.cli as specified under - https://docs.openmicroscopy.org/latest/omero/users/cli/installation.html.
+- Go to the environment where you installed your OMERO.cli as specified under - https://docs.openmicroscopy.org/omero/latest/users/cli/installation.html.
- Activate the virtual environment.
From 0d70b401dceedbf0977bd618a8da4ee69d1506f8 Mon Sep 17 00:00:00 2001
From: Petr Walczysko
Date: Tue, 9 Jun 2020 12:31:08 +0100
Subject: [PATCH 10/17] Add screenshots, improve text
---
docs/images/metadata1.png | Bin 0 -> 15145 bytes
docs/images/metadata2.png | Bin 0 -> 4065 bytes
docs/images/metadata3.png | Bin 0 -> 44063 bytes
docs/images/metadata4.png | Bin 0 -> 28310 bytes
docs/images/metadata5.png | Bin 0 -> 12608 bytes
docs/images/metadata6.png | Bin 0 -> 4078 bytes
docs/images/metadata7.png | Bin 0 -> 8048 bytes
docs/images/metadata8.png | Bin 0 -> 16196 bytes
docs/images/metadata9.png | Bin 0 -> 21715 bytes
docs/metadata.rst | 61 ++++++++++++++++++++++++++++++++++++--
10 files changed, 58 insertions(+), 3 deletions(-)
create mode 100644 docs/images/metadata1.png
create mode 100644 docs/images/metadata2.png
create mode 100644 docs/images/metadata3.png
create mode 100644 docs/images/metadata4.png
create mode 100644 docs/images/metadata5.png
create mode 100644 docs/images/metadata6.png
create mode 100644 docs/images/metadata7.png
create mode 100644 docs/images/metadata8.png
create mode 100644 docs/images/metadata9.png
diff --git a/docs/images/metadata1.png b/docs/images/metadata1.png
new file mode 100644
index 0000000000000000000000000000000000000000..da97b624a44ee1946dfafb7bb92d5df7bb6556c3
GIT binary patch
literal 15145
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
literal 0
HcmV?d00001
diff --git a/docs/images/metadata2.png b/docs/images/metadata2.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb872a7044e6a2c942b423282c29913f0918e78a
GIT binary patch
literal 4065
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
literal 0
HcmV?d00001
diff --git a/docs/images/metadata3.png b/docs/images/metadata3.png
new file mode 100644
index 0000000000000000000000000000000000000000..c385cdc8aaef48ae5c70a8bc678c249387af8920
GIT binary patch
literal 44063
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