{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GeneScreenPlateProjectDatasetImagePhenotypePhenotype Term NamePhenotype Term AccessionPhenotype Term Accession URL
0CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_04--1554140polylobed (automatic)polylobed nuclear phenotypeCMPO_0000357http://www.ebi.ac.uk/cmpo/CMPO_0000357
1CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_04--1554140dynamic changes (automatic)increased variability of nuclear shape in popu...CMPO_0000345http://www.ebi.ac.uk/cmpo/CMPO_0000345
2CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_05--1554429polylobed (automatic)polylobed nuclear phenotypeCMPO_0000357http://www.ebi.ac.uk/cmpo/CMPO_0000357
3CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_05--1554429dynamic changes (automatic)increased variability of nuclear shape in popu...CMPO_0000345http://www.ebi.ac.uk/cmpo/CMPO_0000345
4CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_06--1554686polylobed (automatic)polylobed nuclear phenotypeCMPO_0000357http://www.ebi.ac.uk/cmpo/CMPO_0000357
5CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_06--1554686dynamic changes (automatic)increased variability of nuclear shape in popu...CMPO_0000345http://www.ebi.ac.uk/cmpo/CMPO_0000345
6CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884816protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
7CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884821protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
8CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884837protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
9CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884813protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
10CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884831protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
11CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884811protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
12CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884815protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
13CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884829protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
14CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884822protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
15CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884814protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
16CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884819protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
17CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884830protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
18CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884826protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
19CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884823protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
20CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884812protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
21CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884827protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
22CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884820protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
23CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884828protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
24CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884833protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
25CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884807protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
26CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884834protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
27CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884825protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
28CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884836protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
29CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884808protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
30CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884835protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
31CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884810protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
32CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884824protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
33CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884818protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
34CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884839protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
35CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884832protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
36CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884809protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
37CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884838protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
38CDK5RAP2--idr0021-lawo-pericentriolarmaterial/experiment...CDK5RAP2-C1884817protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
39CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884861protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
40CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884859protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
41CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884844protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
42CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884842protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
43CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884858protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
44CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884857protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
45CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884848protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
46CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884852protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
47CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884849protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
48CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884856protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
49CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884845protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
50CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884851protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
51CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884843protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
52CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884850protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
53CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884840protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
54CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884846protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
55CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884841protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
56CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884854protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
57CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884860protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
58CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884853protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
59CETN2--idr0021-lawo-pericentriolarmaterial/experiment...CENT21884855protein localized to centrosomeprotein localized in centrosome phenotypeCMPO_0000425http://www.ebi.ac.uk/cmpo/CMPO_0000425
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GeneScreenPlateProjectDatasetImagePhenotypePhenotype Term NamePhenotype Term AccessionPhenotype Term Accession URL
0CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_04--1554140polylobed (automatic)polylobed nuclear phenotypeCMPO_0000357http://www.ebi.ac.uk/cmpo/CMPO_0000357
2CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_05--1554429polylobed (automatic)polylobed nuclear phenotypeCMPO_0000357http://www.ebi.ac.uk/cmpo/CMPO_0000357
4CDK5RAP2idr0013-neumann-mitocheck/screenA (6)LT0065_06--1554686polylobed (automatic)polylobed nuclear phenotypeCMPO_0000357http://www.ebi.ac.uk/cmpo/CMPO_0000357
\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 }