Skip to content

Instantly share code, notes, and snippets.

@ravila4
Last active May 11, 2022 23:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ravila4/ef493e20ff9f35d4e1b83e21a97a7de7 to your computer and use it in GitHub Desktop.
Save ravila4/ef493e20ff9f35d4e1b83e21a97a7de7 to your computer and use it in GitHub Desktop.
Connecting to the Pharos MySQL database with Python
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Connecting to the Pharos MySQL Database with Python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Previously, I demonstrated how to use the SIFTS database to find UniProt to PDB mappings for proteins from the Pharos database. To do this, we downloaded csv format files for different receptor classes directly from the Pharos website. However, a much more efficient way to obtain this data is to connect directly through the Pharos's MySQL interface."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this notebook, we use MySQL Connector and Pandas to retrieve and manipulate the data.\n",
"To install mysql-connector, run: `pip install mysql-connector-python-rf`.\n",
"\n",
"Importing the necessary libraries:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"ename": "<class 'ModuleNotFoundError'>",
"evalue": "No module named 'mysql'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"Input \u001b[0;32mIn [1]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmysql\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconnector\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01msql\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyplot\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mplt\u001b[39;00m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'mysql'"
]
}
],
"source": [
"import mysql.connector as sql\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Connect to the database"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<mysql.connector.connection.MySQLConnection at 0x7f428fca0668>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db_connection = sql.connect(host='tcrd.kmc.io', db='tcrd540', user='tcrd')\n",
"db_connection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to use the new connnection, we need to create a cursor object. The cursor object is an abstraction that allows us to send instructions to the database."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"db_cursor = db_connection.cursor()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Executing database queries"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we execute the `SHOW TABLES;` MySQL command, to see which kind of tables we can collect information from. The `cursor.fetchall()` method returns a list."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('alias',), ('cmpd_activity',), ('cmpd_activity_type',), ('compartment',), ('compartment_type',), ('data_type',), ('dataset',), ('dbinfo',), ('disease',), ('disease_type',), ('do',), ('do_parent',), ('drug_activity',), ('dto',), ('expression',), ('expression_type',), ('feature',), ('gene_attribute',), ('gene_attribute_type',), ('generif',), ('goa',), ('hgram_cdf',), ('info_type',), ('kegg_distance',), ('kegg_nearest_tclin',), ('locsig',), ('mlp_assay_info',), ('ortholog',), ('ortholog_disease',), ('p2pc',), ('panther_class',), ('patent_count',), ('pathway',), ('pathway_type',), ('phenotype',), ('phenotype_type',), ('pmscore',), ('ppi',), ('ppi_type',), ('protein',), ('protein2pubmed',), ('provenance',), ('ptscore',), ('pubmed',), ('t2tc',), ('target',), ('tdl_info',), ('tdl_update_log',), ('techdev_contact',), ('techdev_info',), ('tinx_articlerank',), ('tinx_disease',), ('tinx_importance',), ('tinx_novelty',), ('tinx_target',), ('xref',), ('xref_type',)]\n"
]
}
],
"source": [
"db_cursor.execute('SHOW TABLES;')\n",
"tables = db_cursor.fetchall()\n",
"\n",
"print(tables)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the `DESCRIBE` query to obtain a list of the attrinutes of a table. We are interested in the `protein`, `target`, and `cmpd_activity` tables."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'),\n",
" ('name', 'varchar(255)', 'NO', 'UNI', None, ''),\n",
" ('description', 'text', 'NO', '', None, ''),\n",
" ('uniprot', 'varchar(20)', 'NO', 'UNI', None, ''),\n",
" ('up_version', 'int(11)', 'YES', '', None, ''),\n",
" ('geneid', 'int(11)', 'YES', '', None, ''),\n",
" ('sym', 'varchar(20)', 'YES', '', None, ''),\n",
" ('family', 'varchar(255)', 'YES', '', None, ''),\n",
" ('chr', 'varchar(255)', 'YES', '', None, ''),\n",
" ('seq', 'text', 'YES', '', None, ''),\n",
" ('dtoid', 'varchar(13)', 'YES', '', None, ''),\n",
" ('stringid', 'varchar(15)', 'YES', '', None, '')]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db_cursor.execute('DESCRIBE protein;')\n",
"\n",
"# Using list() on a cursor object is equivalent to .fetchall()\n",
"list(db_cursor)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Importing tables to a Pandas DataFrame"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we use Pandas to read the data from the tables. First the `cmpd_activity` table, which contains information about the binding affinity of compounds to targets in the database:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"query = \"SELECT id, target_id, cmpd_id_in_src, cmpd_name_in_src, \\\n",
" smiles, act_value, act_type \\\n",
" FROM cmpd_activity\"\n",
"cmpd_activity = pd.read_sql(query, con=db_connection)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(382291, 7)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>target_id</th>\n",
" <th>cmpd_id_in_src</th>\n",
" <th>cmpd_name_in_src</th>\n",
" <th>smiles</th>\n",
" <th>act_value</th>\n",
" <th>act_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>3006</td>\n",
" <td>CHEMBL365855</td>\n",
" <td>N-(5-Cyclobutyl-thiazol-2-yl)-2-phenyl-acetamide</td>\n",
" <td>O=C(Cc1ccccc1)Nc2ncc(s2)C3CCC3</td>\n",
" <td>7.60</td>\n",
" <td>IC50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>3006</td>\n",
" <td>CHEMBL3775677</td>\n",
" <td>3-Isopropyl-5-(2,3-dihydroxypropyl)amino-7-[4-...</td>\n",
" <td>CC(C)c1n[nH]c2c(NCc3ccc(cc3)c4ccccn4)nc(NCC(O)...</td>\n",
" <td>7.68</td>\n",
" <td>IC50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>3006</td>\n",
" <td>CHEMBL3775608</td>\n",
" <td>3-Isopropyl-5-(3-amino-2-hydroxypropyl)amino-7...</td>\n",
" <td>CC(C)c1n[nH]c2c(NCc3ccc(cc3)c4ccccn4)nc(NCC(N)...</td>\n",
" <td>7.77</td>\n",
" <td>IC50</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id target_id cmpd_id_in_src \\\n",
"0 1 3006 CHEMBL365855 \n",
"1 2 3006 CHEMBL3775677 \n",
"2 3 3006 CHEMBL3775608 \n",
"\n",
" cmpd_name_in_src \\\n",
"0 N-(5-Cyclobutyl-thiazol-2-yl)-2-phenyl-acetamide \n",
"1 3-Isopropyl-5-(2,3-dihydroxypropyl)amino-7-[4-... \n",
"2 3-Isopropyl-5-(3-amino-2-hydroxypropyl)amino-7... \n",
"\n",
" smiles act_value act_type \n",
"0 O=C(Cc1ccccc1)Nc2ncc(s2)C3CCC3 7.60 IC50 \n",
"1 CC(C)c1n[nH]c2c(NCc3ccc(cc3)c4ccccn4)nc(NCC(O)... 7.68 IC50 \n",
"2 CC(C)c1n[nH]c2c(NCc3ccc(cc3)c4ccccn4)nc(NCC(N)... 7.77 IC50 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(cmpd_activity.shape)\n",
"cmpd_activity.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We read in everything from the `protein` table:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"query = \"SELECT id, name, description, uniprot, family, seq \\\n",
" FROM protein\"\n",
"protein = pd.read_sql(query, con=db_connection)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(20244, 6)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>description</th>\n",
" <th>uniprot</th>\n",
" <th>family</th>\n",
" <th>seq</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1433E_HUMAN</td>\n",
" <td>14-3-3 protein epsilon</td>\n",
" <td>P62258</td>\n",
" <td>Belongs to the 14-3-3 family.</td>\n",
" <td>MDDREDLVYQAKLAEQAERYDEMVESMKKVAGMDVELTVEERNLLS...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1433F_HUMAN</td>\n",
" <td>14-3-3 protein eta</td>\n",
" <td>Q04917</td>\n",
" <td>Belongs to the 14-3-3 family.</td>\n",
" <td>MGDREQLLQRARLAEQAERYDDMASAMKAVTELNEPLSNEDRNLLS...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1433T_HUMAN</td>\n",
" <td>14-3-3 protein theta</td>\n",
" <td>P27348</td>\n",
" <td>Belongs to the 14-3-3 family.</td>\n",
" <td>MEKTELIQKAKLAEQAERYDDMATCMKAVTEQGAELSNEERNLLSV...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name description uniprot \\\n",
"0 1 1433E_HUMAN 14-3-3 protein epsilon P62258 \n",
"1 2 1433F_HUMAN 14-3-3 protein eta Q04917 \n",
"2 3 1433T_HUMAN 14-3-3 protein theta P27348 \n",
"\n",
" family \\\n",
"0 Belongs to the 14-3-3 family. \n",
"1 Belongs to the 14-3-3 family. \n",
"2 Belongs to the 14-3-3 family. \n",
"\n",
" seq \n",
"0 MDDREDLVYQAKLAEQAERYDEMVESMKKVAGMDVELTVEERNLLS... \n",
"1 MGDREQLLQRARLAEQAERYDDMASAMKAVTELNEPLSNEDRNLLS... \n",
"2 MEKTELIQKAKLAEQAERYDDMATCMKAVTEQGAELSNEERNLLSV... "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(protein.shape)\n",
"protein.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the target table, we are interested in filtering for targets that are in the `Tclin` or `Tchem` development classifications."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"query = \"SELECT id, name, tdl, fam, famext \\\n",
" FROM target \\\n",
" WHERE tdl='Tclin' OR tdl='Tchem'\"\n",
"target = pd.read_sql(query, con=db_connection)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(2211, 5)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>tdl</th>\n",
" <th>fam</th>\n",
" <th>famext</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2</td>\n",
" <td>14-3-3 protein eta</td>\n",
" <td>Tchem</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>14-3-3 protein theta</td>\n",
" <td>Tchem</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>23</td>\n",
" <td>3 beta-hydroxysteroid dehydrogenase/Delta 5--&gt;...</td>\n",
" <td>Tchem</td>\n",
" <td>Enzyme</td>\n",
" <td>3-beta-HSD</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name tdl fam \\\n",
"0 2 14-3-3 protein eta Tchem None \n",
"1 3 14-3-3 protein theta Tchem None \n",
"2 23 3 beta-hydroxysteroid dehydrogenase/Delta 5-->... Tchem Enzyme \n",
"\n",
" famext \n",
"0 None \n",
"1 None \n",
"2 3-beta-HSD "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(target.shape)\n",
"target.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since we have all the data in Data Frames, we no longer need the database connection."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# Closing the connection\n",
"db_connection.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Filter receptors by number of actives"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, we filter out receptors that contain less than 15 active molecules."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# Dictionary to store the number of actives for each target\n",
"num_actives = {}\n",
"target_ids = cmpd_activity.target_id.unique()\n",
"for i in target_ids:\n",
" num_actives[i] = len(cmpd_activity[cmpd_activity.target_id == i])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1067, 6)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"target['num_actives'] = target.id.apply(lambda x: num_actives.get(x))\n",
"target = target[target['num_actives'] >= 15]\n",
"target.num_actives = target.num_actives.apply(int) # Convert from float to int\n",
"target.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we create a pie chart to visualize the number of target familes we have:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"tchem_tclin_fams = {}\n",
"families = [fam for fam in target.fam.unique() if fam is not None]\n",
"\n",
"for f in sorted(families):\n",
" tchem_tclin_fams[f] = len(target[target.fam == f])\n",
"# Add a slice for None\n",
"tchem_tclin_fams['None'] = len(target[target.fam.isna()])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Enzyme': 348,\n",
" 'Epigenetic': 42,\n",
" 'GPCR': 189,\n",
" 'IC': 91,\n",
" 'Kinase': 205,\n",
" 'NR': 28,\n",
" 'TF': 6,\n",
" 'TF; Epigenetic': 5,\n",
" 'Transporter': 35,\n",
" 'None': 118}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tchem_tclin_fams"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 288x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(4, 4))\n",
"width = .6\n",
"explode = [0, 0, 0, 0, 0, .3, .2, .1, 0, 0]\n",
"labels = [\"{}: {}\".format(f, n) for f, n in zip(tchem_tclin_fams.keys(),\n",
" tchem_tclin_fams.values())]\n",
"plt.pie(tchem_tclin_fams.values(), labels=labels, radius=2, explode=explode,\n",
" wedgeprops=dict(width=width, edgecolor='w'), autopct='%1.0f%%',\n",
" pctdistance=.8, labeldistance=1.1)\n",
"\n",
"plt.savefig(\"pharos_targets.svg\", bbox_inches = 'tight')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From this target data, we could further filter down to receptors that have known protein structures, as shown in the SIFTS database post. In this case, we will simply concatenate the data from the Protein table to the Target table, in order to obtain information about the UniProt ID, protein ontology, and sequence. Finally, we will write the data to csv files for further analysis."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Joining the Target and Protein Data Frames"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1067, 6)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Filter protein Data Frame to match selected targets\n",
"protein = protein[protein.id.isin(target.id)]\n",
"protein.shape"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# Set the id as the index column to join both Data Frames.\n",
"protein = protein.set_index(\"id\")\n",
"target = target.set_index(\"id\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Concatenate target and protein dataframes:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"result = pd.concat([target, protein], axis=1, join='outer')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1067, 10)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>tdl</th>\n",
" <th>fam</th>\n",
" <th>famext</th>\n",
" <th>num_actives</th>\n",
" <th>name</th>\n",
" <th>description</th>\n",
" <th>uniprot</th>\n",
" <th>family</th>\n",
" <th>seq</th>\n",
" </tr>\n",
" <tr>\n",
" <th>id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>5-hydroxytryptamine receptor 2B</td>\n",
" <td>Tclin</td>\n",
" <td>GPCR</td>\n",
" <td>GPCR</td>\n",
" <td>777</td>\n",
" <td>5HT2B_HUMAN</td>\n",
" <td>5-hydroxytryptamine receptor 2B</td>\n",
" <td>P41595</td>\n",
" <td>Belongs to the G-protein coupled receptor 1 fa...</td>\n",
" <td>MALSYRVSELQSTIPEHILQSTFVHVISSNWSGLQTESIPEEMKQI...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>5-hydroxytryptamine receptor 2C</td>\n",
" <td>Tclin</td>\n",
" <td>GPCR</td>\n",
" <td>GPCR</td>\n",
" <td>1612</td>\n",
" <td>5HT2C_HUMAN</td>\n",
" <td>5-hydroxytryptamine receptor 2C</td>\n",
" <td>P28335</td>\n",
" <td>Belongs to the G-protein coupled receptor 1 fa...</td>\n",
" <td>MVNLRNAVHSFLVHLIGLLVWQCDISVSPVAAIVTDIFNTSDGGRF...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>5'-nucleotidase</td>\n",
" <td>Tchem</td>\n",
" <td>Enzyme</td>\n",
" <td>None</td>\n",
" <td>23</td>\n",
" <td>5NTD_HUMAN</td>\n",
" <td>5'-nucleotidase</td>\n",
" <td>P21589</td>\n",
" <td>Belongs to the 5'-nucleotidase family.</td>\n",
" <td>MCPRAARAPATLLLALGAVLWPAAGAWELTILHTNDVHSRLEQTSE...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name tdl fam famext num_actives \\\n",
"id \n",
"26 5-hydroxytryptamine receptor 2B Tclin GPCR GPCR 777 \n",
"27 5-hydroxytryptamine receptor 2C Tclin GPCR GPCR 1612 \n",
"30 5'-nucleotidase Tchem Enzyme None 23 \n",
"\n",
" name description uniprot \\\n",
"id \n",
"26 5HT2B_HUMAN 5-hydroxytryptamine receptor 2B P41595 \n",
"27 5HT2C_HUMAN 5-hydroxytryptamine receptor 2C P28335 \n",
"30 5NTD_HUMAN 5'-nucleotidase P21589 \n",
"\n",
" family \\\n",
"id \n",
"26 Belongs to the G-protein coupled receptor 1 fa... \n",
"27 Belongs to the G-protein coupled receptor 1 fa... \n",
"30 Belongs to the 5'-nucleotidase family. \n",
"\n",
" seq \n",
"id \n",
"26 MALSYRVSELQSTIPEHILQSTFVHVISSNWSGLQTESIPEEMKQI... \n",
"27 MVNLRNAVHSFLVHLIGLLVWQCDISVSPVAAIVTDIFNTSDGGRF... \n",
"30 MCPRAARAPATLLLALGAVLWPAAGAWELTILHTNDVHSRLEQTSE... "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(result.shape)\n",
"result.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Saving target class data to csv files"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We sepparate each target class into different Data Frames, and store these in a dictionary, and also save them to separate csv files."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"target_dfs = {}\n",
"for f in families:\n",
" target_dfs[f] = result[result.fam == f]\n",
" target_dfs[f].to_csv(f + \".csv\")"
]
}
],
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment