{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Get phenotypes associated with a list of genes from high content screens\n",
"This notebook takes a list of gene symbols and queries the IDR\n",
"for phenotypes associated with the genes in high content screens."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Install dependencies if required\n",
"\n",
"The cell below will install dependencies if you choose to run the notebook in [Google Colab](https://colab.research.google.com/notebooks/intro.ipynb#recent=true)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%pip install idr-py"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"import os\n",
"import pandas as pd\n",
"from tempfile import NamedTemporaryFile\n",
"\n",
"import scipy\n",
"import numpy\n",
"from skimage import filters\n",
"import matplotlib.pyplot as plt\n",
"from idr import connection\n",
"\n",
"import requests\n",
"import tifffile"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Set up where to query and session"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"INDEX_PAGE = \"https://idr.openmicroscopy.org/webclient/?experimenter=-1\"\n",
"\n",
"# create http session\n",
"with requests.Session() as session:\n",
" request = requests.Request('GET', INDEX_PAGE)\n",
" prepped = session.prepare_request(request)\n",
" response = session.send(prepped)\n",
" if response.status_code != 200:\n",
" response.raise_for_status()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Get list of genes to query either from file (one gene symbol per line)\n",
"or enter directly in list in notebook."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['CDK5RAP2', 'CETN2']"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# uncomment the next two lines if you would rather read gene list\n",
"# in from a file\n",
"# with open('./includes/FiveExampleGenes.txt') as f:\n",
"# genes = f.read().splitlines()\n",
"\n",
"# comment out the next line if you have read in the gene list from a file\n",
"#genes = ['ASH2L', 'ash2', '85441']\n",
"genes = ['CDK5RAP2','CETN2']\n",
"# check the gene list has been read in\n",
"genes[:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Set up base URLS so can use shorter variable names later on"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"URL = \"https://idr.openmicroscopy.org/mapr/api/{key}/?value={value}&case_sensitive=false&orphaned=true\"\n",
"SCREENS_PROJECTS_URL = \"https://idr.openmicroscopy.org/mapr/api/{key}/?value={value}\"\n",
"PLATES_URL = \"https://idr.openmicroscopy.org/mapr/api/{key}/plates/?value={value}&id={screen_id}\"\n",
"DATASETS_URL = \"https://idr.openmicroscopy.org/mapr/api/{key}/datasets/?value={value}&id={project_id}\"\n",
"IMAGES_URL = \"https://idr.openmicroscopy.org/mapr/api/{key}/images/?value={value}&node={parent_type}&id={parent_id}\"\n",
"ATTRIBUTES_URL = \"https://idr.openmicroscopy.org/webclient/api/annotations/?type=map&image={image_id}\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Find images for each gene specified\n",
"For each gene, search of images either in plates or datasets then search for phenotypes associated with the images.\n",
"The results are saved in a CSV file."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"TYPE = \"gene\"\n",
"KEYS = {\"phenotype\":\n",
" (\"Phenotype\",\n",
" \"Phenotype Term Name\",\n",
" \"Phenotype Term Accession\",\n",
" \"Phenotype Term Accession URL\")\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Helper method\n",
"Parse the output of the json and save it into the CVS file."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def parse_annotation(writer, json_data, name, data_type):\n",
" screen_name = \"-\"\n",
" plate_name = \"-\"\n",
" project_name = \"-\"\n",
" dataset_name = \"-\"\n",
" if data_type == 'datasets':\n",
" project_name = name\n",
" else:\n",
" screen_name = name\n",
" \n",
" for p in json_data[data_type]:\n",
" parent_id = p['id']\n",
" if data_type == 'datasets':\n",
" dataset_name = p['name']\n",
" else:\n",
" plate_name = p['name']\n",
" qs3 = {'key': TYPE, 'value': gene,\n",
" 'parent_type': data_type[:-1], 'parent_id': parent_id}\n",
" url3 = IMAGES_URL.format(**qs3)\n",
" for i in session.get(url3).json()['images']:\n",
"\n",
" image_id = i['id']\n",
" url4 = ATTRIBUTES_URL.format(**{'image_id': image_id})\n",
" for a in session.get(url4).json()['annotations']:\n",
" ontologies = [] # for ontology terms for a phenotype\n",
" row = {}\n",
" for v in a['values']:\n",
" if str(v[0]) in KEYS['phenotype']:\n",
" if str(v[0]) in ['Phenotype']: # has phenotype\n",
" row[str(v[0])] = v[1] # so create row\n",
"\n",
" # if there are ontology mappings for the\n",
" # phenotype, add them to the ontologies list\n",
" ontList = ['Phenotype Term Name',\n",
" 'Phenotype Term Accession',\n",
" 'Phenotype Term Accession URL']\n",
"\n",
" if str(v[0]) in ontList:\n",
" ontologies.extend([str(v[0]), str(v[1])])\n",
" if row:\n",
" if (len(ontologies) > 0): # 1+ ontology mapping\n",
" row.update({'Gene': gene,\n",
" 'Screen': screen_name,\n",
" 'Plate': plate_name,\n",
" 'Image': image_id,\n",
" 'Project' : project_name,\n",
" 'Dataset': dataset_name})\n",
" # we have the start of a row now\n",
" # but we want to print out as many rows\n",
" # as there are ontology mappings\n",
" # so if there is mapping to 1 ontology term\n",
" # print 1 row, if there are 2 ontology terms\n",
" # print 2 rows etc\n",
" numberOfRows = len(ontologies)/6\n",
" # this is 3 pairs of ontology values per\n",
" # mapping, add the ontology mappings and print\n",
" n = 1\n",
" while (n <= numberOfRows):\n",
" row.update({ontologies[0]: ontologies[1],\n",
" ontologies[2]: ontologies[3],\n",
" ontologies[4]: ontologies[5]})\n",
" # remove that set of ontology mappings\n",
" ontologies = ontologies[6:]\n",
" writer.writerow(row)\n",
" n = n + 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Retrieve data \n",
"A CSV file is first created in the ``home`` directory. The CSV file can then be downloaded to your local machine. To download it, click ``File > Open``, select the CSV file and open it, then click ``File > Download``."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"home = os.path.expanduser(\"~\")\n",
"csvfile = NamedTemporaryFile(\"w\", delete=False, newline='', dir=home, suffix=\".csv\")\n",
"try:\n",
" fieldnames = [\n",
" 'Gene', 'Screen', 'Plate', 'Project', 'Dataset', 'Image',\n",
" 'Phenotype', 'Phenotype Term Name', 'Phenotype Term Accession',\n",
" 'Phenotype Term Accession URL']\n",
" writer = csv.DictWriter(csvfile, fieldnames=fieldnames)\n",
" writer.writeheader()\n",
" new_genes = []\n",
" for g in genes:\n",
" qs1 = {'key': TYPE, 'value': g}\n",
" url1 = URL.format(**qs1)\n",
" json = session.get(url1).json()\n",
" for m in json['maps']: \n",
" new_genes.append(m['id'])\n",
" \n",
" for gene in new_genes:\n",
" qs1 = {'key': TYPE, 'value': gene}\n",
" url1 = URL.format(**qs1)\n",
" json = session.get(url1).json()\n",
" for m in json['maps']:\n",
" qs2 = {'key': TYPE, 'value': gene, 'compound_id': m['id']}\n",
" url2 = SCREENS_PROJECTS_URL.format(**qs2)\n",
" json = session.get(url2).json()\n",
" for s in json['screens']:\n",
" gene = s['extra']['value']\n",
" qs3 = {'key': TYPE, 'value': gene, 'screen_id': s['id']}\n",
" url3 = PLATES_URL.format(**qs3)\n",
" parse_annotation(writer, session.get(url3).json(), s['name'], 'plates')\n",
" for p in json['projects']:\n",
" gene = s['extra']['value']\n",
" qs3 = {'key': TYPE, 'value': gene, 'project_id': p['id']}\n",
" url3 = DATASETS_URL.format(**qs3)\n",
" parse_annotation(writer, session.get(url3).json(), p['name'], 'datasets') \n",
"finally:\n",
" csvfile.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load output into a data frame\n",
"View a subset of the data."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Gene
\n",
"
Screen
\n",
"
Plate
\n",
"
Project
\n",
"
Dataset
\n",
"
Image
\n",
"
Phenotype
\n",
"
Phenotype Term Name
\n",
"
Phenotype Term Accession
\n",
"
Phenotype Term Accession URL
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_04
\n",
"
-
\n",
"
-
\n",
"
1554140
\n",
"
polylobed (automatic)
\n",
"
polylobed nuclear phenotype
\n",
"
CMPO_0000357
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000357
\n",
"
\n",
"
\n",
"
1
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_04
\n",
"
-
\n",
"
-
\n",
"
1554140
\n",
"
dynamic changes (automatic)
\n",
"
increased variability of nuclear shape in popu...
\n",
"
CMPO_0000345
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000345
\n",
"
\n",
"
\n",
"
2
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_05
\n",
"
-
\n",
"
-
\n",
"
1554429
\n",
"
polylobed (automatic)
\n",
"
polylobed nuclear phenotype
\n",
"
CMPO_0000357
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000357
\n",
"
\n",
"
\n",
"
3
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_05
\n",
"
-
\n",
"
-
\n",
"
1554429
\n",
"
dynamic changes (automatic)
\n",
"
increased variability of nuclear shape in popu...
\n",
"
CMPO_0000345
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000345
\n",
"
\n",
"
\n",
"
4
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_06
\n",
"
-
\n",
"
-
\n",
"
1554686
\n",
"
polylobed (automatic)
\n",
"
polylobed nuclear phenotype
\n",
"
CMPO_0000357
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000357
\n",
"
\n",
"
\n",
"
5
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_06
\n",
"
-
\n",
"
-
\n",
"
1554686
\n",
"
dynamic changes (automatic)
\n",
"
increased variability of nuclear shape in popu...
\n",
"
CMPO_0000345
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000345
\n",
"
\n",
"
\n",
"
6
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884816
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
7
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884821
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
8
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884837
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
9
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884813
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
10
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884831
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
11
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884811
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
12
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884815
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
13
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884829
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
14
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884822
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
15
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884814
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
16
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884819
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
17
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884830
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
18
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884826
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
19
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884823
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
20
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884812
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
21
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884827
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
22
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884820
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
23
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884828
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
24
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884833
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
25
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884807
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
26
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884834
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
27
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884825
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
28
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884836
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
29
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884808
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
30
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884835
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
31
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884810
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
32
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884824
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
33
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884818
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
34
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884839
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
35
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884832
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
36
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884809
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
37
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884838
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
38
\n",
"
CDK5RAP2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CDK5RAP2-C
\n",
"
1884817
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
39
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884861
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
40
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884859
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
41
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884844
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
42
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884842
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
43
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884858
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
44
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884857
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
45
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884848
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
46
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884852
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
47
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884849
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
48
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884856
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
49
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884845
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
50
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884851
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
51
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884843
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
52
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884850
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
53
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884840
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
54
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884846
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
55
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884841
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
56
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884854
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
57
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884860
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
58
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884853
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
"
\n",
"
59
\n",
"
CETN2
\n",
"
-
\n",
"
-
\n",
"
idr0021-lawo-pericentriolarmaterial/experiment...
\n",
"
CENT2
\n",
"
1884855
\n",
"
protein localized to centrosome
\n",
"
protein localized in centrosome phenotype
\n",
"
CMPO_0000425
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000425
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Gene Screen Plate \\\n",
"0 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_04 \n",
"1 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_04 \n",
"2 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_05 \n",
"3 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_05 \n",
"4 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_06 \n",
"5 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_06 \n",
"6 CDK5RAP2 - - \n",
"7 CDK5RAP2 - - \n",
"8 CDK5RAP2 - - \n",
"9 CDK5RAP2 - - \n",
"10 CDK5RAP2 - - \n",
"11 CDK5RAP2 - - \n",
"12 CDK5RAP2 - - \n",
"13 CDK5RAP2 - - \n",
"14 CDK5RAP2 - - \n",
"15 CDK5RAP2 - - \n",
"16 CDK5RAP2 - - \n",
"17 CDK5RAP2 - - \n",
"18 CDK5RAP2 - - \n",
"19 CDK5RAP2 - - \n",
"20 CDK5RAP2 - - \n",
"21 CDK5RAP2 - - \n",
"22 CDK5RAP2 - - \n",
"23 CDK5RAP2 - - \n",
"24 CDK5RAP2 - - \n",
"25 CDK5RAP2 - - \n",
"26 CDK5RAP2 - - \n",
"27 CDK5RAP2 - - \n",
"28 CDK5RAP2 - - \n",
"29 CDK5RAP2 - - \n",
"30 CDK5RAP2 - - \n",
"31 CDK5RAP2 - - \n",
"32 CDK5RAP2 - - \n",
"33 CDK5RAP2 - - \n",
"34 CDK5RAP2 - - \n",
"35 CDK5RAP2 - - \n",
"36 CDK5RAP2 - - \n",
"37 CDK5RAP2 - - \n",
"38 CDK5RAP2 - - \n",
"39 CETN2 - - \n",
"40 CETN2 - - \n",
"41 CETN2 - - \n",
"42 CETN2 - - \n",
"43 CETN2 - - \n",
"44 CETN2 - - \n",
"45 CETN2 - - \n",
"46 CETN2 - - \n",
"47 CETN2 - - \n",
"48 CETN2 - - \n",
"49 CETN2 - - \n",
"50 CETN2 - - \n",
"51 CETN2 - - \n",
"52 CETN2 - - \n",
"53 CETN2 - - \n",
"54 CETN2 - - \n",
"55 CETN2 - - \n",
"56 CETN2 - - \n",
"57 CETN2 - - \n",
"58 CETN2 - - \n",
"59 CETN2 - - \n",
"\n",
" Project Dataset Image \\\n",
"0 - - 1554140 \n",
"1 - - 1554140 \n",
"2 - - 1554429 \n",
"3 - - 1554429 \n",
"4 - - 1554686 \n",
"5 - - 1554686 \n",
"6 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884816 \n",
"7 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884821 \n",
"8 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884837 \n",
"9 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884813 \n",
"10 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884831 \n",
"11 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884811 \n",
"12 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884815 \n",
"13 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884829 \n",
"14 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884822 \n",
"15 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884814 \n",
"16 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884819 \n",
"17 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884830 \n",
"18 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884826 \n",
"19 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884823 \n",
"20 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884812 \n",
"21 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884827 \n",
"22 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884820 \n",
"23 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884828 \n",
"24 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884833 \n",
"25 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884807 \n",
"26 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884834 \n",
"27 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884825 \n",
"28 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884836 \n",
"29 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884808 \n",
"30 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884835 \n",
"31 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884810 \n",
"32 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884824 \n",
"33 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884818 \n",
"34 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884839 \n",
"35 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884832 \n",
"36 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884809 \n",
"37 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884838 \n",
"38 idr0021-lawo-pericentriolarmaterial/experiment... CDK5RAP2-C 1884817 \n",
"39 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884861 \n",
"40 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884859 \n",
"41 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884844 \n",
"42 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884842 \n",
"43 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884858 \n",
"44 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884857 \n",
"45 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884848 \n",
"46 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884852 \n",
"47 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884849 \n",
"48 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884856 \n",
"49 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884845 \n",
"50 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884851 \n",
"51 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884843 \n",
"52 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884850 \n",
"53 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884840 \n",
"54 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884846 \n",
"55 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884841 \n",
"56 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884854 \n",
"57 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884860 \n",
"58 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884853 \n",
"59 idr0021-lawo-pericentriolarmaterial/experiment... CENT2 1884855 \n",
"\n",
" Phenotype \\\n",
"0 polylobed (automatic) \n",
"1 dynamic changes (automatic) \n",
"2 polylobed (automatic) \n",
"3 dynamic changes (automatic) \n",
"4 polylobed (automatic) \n",
"5 dynamic changes (automatic) \n",
"6 protein localized to centrosome \n",
"7 protein localized to centrosome \n",
"8 protein localized to centrosome \n",
"9 protein localized to centrosome \n",
"10 protein localized to centrosome \n",
"11 protein localized to centrosome \n",
"12 protein localized to centrosome \n",
"13 protein localized to centrosome \n",
"14 protein localized to centrosome \n",
"15 protein localized to centrosome \n",
"16 protein localized to centrosome \n",
"17 protein localized to centrosome \n",
"18 protein localized to centrosome \n",
"19 protein localized to centrosome \n",
"20 protein localized to centrosome \n",
"21 protein localized to centrosome \n",
"22 protein localized to centrosome \n",
"23 protein localized to centrosome \n",
"24 protein localized to centrosome \n",
"25 protein localized to centrosome \n",
"26 protein localized to centrosome \n",
"27 protein localized to centrosome \n",
"28 protein localized to centrosome \n",
"29 protein localized to centrosome \n",
"30 protein localized to centrosome \n",
"31 protein localized to centrosome \n",
"32 protein localized to centrosome \n",
"33 protein localized to centrosome \n",
"34 protein localized to centrosome \n",
"35 protein localized to centrosome \n",
"36 protein localized to centrosome \n",
"37 protein localized to centrosome \n",
"38 protein localized to centrosome \n",
"39 protein localized to centrosome \n",
"40 protein localized to centrosome \n",
"41 protein localized to centrosome \n",
"42 protein localized to centrosome \n",
"43 protein localized to centrosome \n",
"44 protein localized to centrosome \n",
"45 protein localized to centrosome \n",
"46 protein localized to centrosome \n",
"47 protein localized to centrosome \n",
"48 protein localized to centrosome \n",
"49 protein localized to centrosome \n",
"50 protein localized to centrosome \n",
"51 protein localized to centrosome \n",
"52 protein localized to centrosome \n",
"53 protein localized to centrosome \n",
"54 protein localized to centrosome \n",
"55 protein localized to centrosome \n",
"56 protein localized to centrosome \n",
"57 protein localized to centrosome \n",
"58 protein localized to centrosome \n",
"59 protein localized to centrosome \n",
"\n",
" Phenotype Term Name \\\n",
"0 polylobed nuclear phenotype \n",
"1 increased variability of nuclear shape in popu... \n",
"2 polylobed nuclear phenotype \n",
"3 increased variability of nuclear shape in popu... \n",
"4 polylobed nuclear phenotype \n",
"5 increased variability of nuclear shape in popu... \n",
"6 protein localized in centrosome phenotype \n",
"7 protein localized in centrosome phenotype \n",
"8 protein localized in centrosome phenotype \n",
"9 protein localized in centrosome phenotype \n",
"10 protein localized in centrosome phenotype \n",
"11 protein localized in centrosome phenotype \n",
"12 protein localized in centrosome phenotype \n",
"13 protein localized in centrosome phenotype \n",
"14 protein localized in centrosome phenotype \n",
"15 protein localized in centrosome phenotype \n",
"16 protein localized in centrosome phenotype \n",
"17 protein localized in centrosome phenotype \n",
"18 protein localized in centrosome phenotype \n",
"19 protein localized in centrosome phenotype \n",
"20 protein localized in centrosome phenotype \n",
"21 protein localized in centrosome phenotype \n",
"22 protein localized in centrosome phenotype \n",
"23 protein localized in centrosome phenotype \n",
"24 protein localized in centrosome phenotype \n",
"25 protein localized in centrosome phenotype \n",
"26 protein localized in centrosome phenotype \n",
"27 protein localized in centrosome phenotype \n",
"28 protein localized in centrosome phenotype \n",
"29 protein localized in centrosome phenotype \n",
"30 protein localized in centrosome phenotype \n",
"31 protein localized in centrosome phenotype \n",
"32 protein localized in centrosome phenotype \n",
"33 protein localized in centrosome phenotype \n",
"34 protein localized in centrosome phenotype \n",
"35 protein localized in centrosome phenotype \n",
"36 protein localized in centrosome phenotype \n",
"37 protein localized in centrosome phenotype \n",
"38 protein localized in centrosome phenotype \n",
"39 protein localized in centrosome phenotype \n",
"40 protein localized in centrosome phenotype \n",
"41 protein localized in centrosome phenotype \n",
"42 protein localized in centrosome phenotype \n",
"43 protein localized in centrosome phenotype \n",
"44 protein localized in centrosome phenotype \n",
"45 protein localized in centrosome phenotype \n",
"46 protein localized in centrosome phenotype \n",
"47 protein localized in centrosome phenotype \n",
"48 protein localized in centrosome phenotype \n",
"49 protein localized in centrosome phenotype \n",
"50 protein localized in centrosome phenotype \n",
"51 protein localized in centrosome phenotype \n",
"52 protein localized in centrosome phenotype \n",
"53 protein localized in centrosome phenotype \n",
"54 protein localized in centrosome phenotype \n",
"55 protein localized in centrosome phenotype \n",
"56 protein localized in centrosome phenotype \n",
"57 protein localized in centrosome phenotype \n",
"58 protein localized in centrosome phenotype \n",
"59 protein localized in centrosome phenotype \n",
"\n",
" Phenotype Term Accession Phenotype Term Accession URL \n",
"0 CMPO_0000357 http://www.ebi.ac.uk/cmpo/CMPO_0000357 \n",
"1 CMPO_0000345 http://www.ebi.ac.uk/cmpo/CMPO_0000345 \n",
"2 CMPO_0000357 http://www.ebi.ac.uk/cmpo/CMPO_0000357 \n",
"3 CMPO_0000345 http://www.ebi.ac.uk/cmpo/CMPO_0000345 \n",
"4 CMPO_0000357 http://www.ebi.ac.uk/cmpo/CMPO_0000357 \n",
"5 CMPO_0000345 http://www.ebi.ac.uk/cmpo/CMPO_0000345 \n",
"6 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"7 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"8 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"9 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"10 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"11 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"12 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"13 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"14 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"15 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"16 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"17 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"18 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"19 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"20 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"21 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"22 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"23 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"24 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"25 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"26 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"27 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"28 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"29 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"30 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"31 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"32 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"33 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"34 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"35 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"36 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"37 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"38 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"39 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"40 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"41 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"42 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"43 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"44 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"45 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"46 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"47 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"48 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"49 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"50 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"51 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"52 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"53 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"54 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"55 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"56 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"57 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"58 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 \n",
"59 CMPO_0000425 http://www.ebi.ac.uk/cmpo/CMPO_0000425 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(csvfile.name)\n",
"df.head(60)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Filter by a specified phenotype "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Gene
\n",
"
Screen
\n",
"
Plate
\n",
"
Project
\n",
"
Dataset
\n",
"
Image
\n",
"
Phenotype
\n",
"
Phenotype Term Name
\n",
"
Phenotype Term Accession
\n",
"
Phenotype Term Accession URL
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_04
\n",
"
-
\n",
"
-
\n",
"
1554140
\n",
"
polylobed (automatic)
\n",
"
polylobed nuclear phenotype
\n",
"
CMPO_0000357
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000357
\n",
"
\n",
"
\n",
"
2
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_05
\n",
"
-
\n",
"
-
\n",
"
1554429
\n",
"
polylobed (automatic)
\n",
"
polylobed nuclear phenotype
\n",
"
CMPO_0000357
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000357
\n",
"
\n",
"
\n",
"
4
\n",
"
CDK5RAP2
\n",
"
idr0013-neumann-mitocheck/screenA (6)
\n",
"
LT0065_06
\n",
"
-
\n",
"
-
\n",
"
1554686
\n",
"
polylobed (automatic)
\n",
"
polylobed nuclear phenotype
\n",
"
CMPO_0000357
\n",
"
http://www.ebi.ac.uk/cmpo/CMPO_0000357
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Gene Screen Plate Project Dataset \\\n",
"0 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_04 - - \n",
"2 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_05 - - \n",
"4 CDK5RAP2 idr0013-neumann-mitocheck/screenA (6) LT0065_06 - - \n",
"\n",
" Image Phenotype Phenotype Term Name \\\n",
"0 1554140 polylobed (automatic) polylobed nuclear phenotype \n",
"2 1554429 polylobed (automatic) polylobed nuclear phenotype \n",
"4 1554686 polylobed (automatic) polylobed nuclear phenotype \n",
"\n",
" Phenotype Term Accession Phenotype Term Accession URL \n",
"0 CMPO_0000357 http://www.ebi.ac.uk/cmpo/CMPO_0000357 \n",
"2 CMPO_0000357 http://www.ebi.ac.uk/cmpo/CMPO_0000357 \n",
"4 CMPO_0000357 http://www.ebi.ac.uk/cmpo/CMPO_0000357 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"value = 'CMPO_0000357'\n",
"df_filtered = df[df['Phenotype Term Accession'] == value]\n",
"df_filtered.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Select the image\n",
"Select the first image if any"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1554140\n"
]
}
],
"source": [
"image_id = -1\n",
"if ~df_filtered.empty:\n",
" image_id = df_filtered.head(1)['Image'].values[0]\n",
"else:\n",
" image_id = df.head(1)['Image'].values[0]\n",
"print(image_id)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Connect to IDR "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Connected to IDR ...\n"
]
}
],
"source": [
"conn = connection('idr.openmicroscopy.org')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load the image "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LT0065_04 [Well F24, Field 1] \n"
]
}
],
"source": [
"image = conn.getObject(\"Image\", image_id)\n",
"print(image.getName(), image.getDescription())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load the first plane, pre-process it and segment it."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"pixels = image.getPrimaryPixels()\n",
"image_plane = pixels.getPlane(0, 0, 0)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'median filtered image')"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"filtered = scipy.ndimage.median_filter(image_plane, size=3)\n",
"plt.imshow(filtered, cmap='gray')\n",
"plt.axis('off')\n",
"plt.title('median filtered image')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Threshold value is 53\n"
]
},
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'otsu predicted binary image')"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"threshold = filters.threshold_otsu(filtered)\n",
"print('Threshold value is {}'.format(threshold))\n",
"predicted = numpy.uint8(filtered > threshold) * 255\n",
"plt.imshow(predicted, cmap='gray')\n",
"plt.axis('off')\n",
"plt.title('otsu predicted binary image')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Save the predicted Image \n",
"Save the predicted image as TIFF in the ``home`` directory, the ID of the image as the name of the TIFF file.\n",
"To download it, click ``File > Open``, select the file and open it (ignore the errror in the text editor), then click ``File > Download``."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"name=\"%s/%s.tif\" % (home, image_id)\n",
"tifffile.imsave(name, predicted)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Close the connection "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"conn.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercises\n",
"\n",
"To run the exercises below, you will need to be connected to IDR. If you have run the cell in the notebook closing the connection to IDR i.e. ``conn.close()``, you will first need to \n",
" * re-run the cell connection to IDR or alternatively\n",
" * add a new cell using ``Insert > Cell below``, paste in ``conn = connection('idr.openmicroscopy.org')`` and run the cell.\n",
"\n",
"For each exercise, create a new cell by clicking on ``Insert > Cell below``, write the code then run the cell.\n",
"\n",
"Exercise 1:\n",
"Iterate through the ``df_filtered`` data frame to threshold each image and save it as a TIFF file.\n",
"\n",
"See [Solution](solutions/GenesToPhenotypesSolutions.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### License (BSD 2-Clause)ΒΆ\n",
"\n",
"Copyright (C) 2017-2021 University of Dundee. All Rights Reserved.\n",
"\n",
"Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n",
"\n",
"Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}