Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"import argparse\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pylab as plt\n",
"from matplotlib.patches import Rectangle\n",
"from matplotlib.backends.backend_pdf import PdfPages\n",
"\n",
"colors=['#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4', '#46f0f0',\n",
" '#f032e6', '#bcf60c', '#fabebe', '#008080', '#e6beff', '#9a6324', '#fffac8', \n",
" '#800000', '#aaffc3', '#808000', '#ffd8b1', '#000075', '#808080', '#ffffff']\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def calculateStatistics(df,conds,nreps):\n",
" for cond in conds: \n",
" df['mean'+cond]=df.filter(like=cond+'_').mean(1)\n",
" df['stdn'+cond]=df.filter(like=cond+'_').std(1)/np.sqrt(nreps[cond])\n",
" df=df.sort_index()\n",
" return df"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def chooseIsoforms2Plot(df,minTPM,minPct,maxIso,annotation):\n",
" df['minimum']=df.filter(regex='^mean').min(axis=1)\n",
" df=df[df['minimum']>minTPM]\n",
" df['maximumPct']=df.filter(regex='^Pct').min(axis=1)\n",
" df=df[df['maximumPct']>minPct]\n",
" df['maximum']=df.filter(regex='^mean').max(axis=1)\n",
" df=df.sort_values('maximum',ascending=False)\n",
" df=df.head(maxIso)\n",
" return df"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def prepareAnnotation(annotation,df):\n",
" cut=annotation[annotation['transcript_id'].isin(df['transcript_id'].values)]\n",
" strand=cut.iloc[0]['strand']\n",
" if strand=='+':\n",
" start=cut['start'].min()\n",
" cut['plot_start']=cut['start']-start\n",
" cut['plot_stop']=cut['stop']-start\n",
" else:\n",
" start=cut['stop'].max()\n",
" cut['plot_start']=(cut['start']-start)*(-1)\n",
" cut['plot_stop']=(cut['stop']-start)*(-1) \n",
" return cut"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def plotProfiles(x, df, df_gene, ax, colors, total=True):\n",
" if total:\n",
" plt.errorbar(x,df_gene.filter(like='mean').iloc[0],yerr=df_gene.filter(like='stdn').iloc[0],color='black',linewidth=2, label = \"Total Expression\")\n",
" for j in range(df.shape[0]):\n",
" row=df.iloc[j]\n",
" plt.errorbar(x+np.random.normal(0, 0.03, len(x)),row.filter(regex='^mean'),yerr=row.filter(like='stdn'),color=colors[j],linewidth=2, label = \"\")\n",
" ax.spines['top'].set_visible(False)\n",
" ax.spines['right'].set_visible(False)\n",
" ax.spines['left'].set_bounds(0,ax.get_yticks()[-2])\n",
" ax.spines['bottom'].set_bounds(min(x),max(x))\n",
" plt.xlabel(\"Day\")\n",
" plt.ylabel(\"Normalized DeSeq2 TPM\")\n",
" plt.legend(loc = \"upper center\", bbox_to_anchor=(0.5,1), frameon=False)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def plotStacked(x,df,ax,colors):\n",
" plt.stackplot(x,df.filter(regex='^Pct').values,colors=colors[:df.shape[0]])\n",
" ax.spines['top'].set_visible(False)\n",
" ax.spines['right'].set_visible(False)\n",
" ax.spines['left'].set_bounds(0,100)\n",
" ax.spines['bottom'].set_bounds(min(x),max(x))\n",
" ax.axis([min(x),max(x),0,100])\n",
" plt.xlabel(\"Day\")\n",
" plt.ylabel(\"TPM Percentage (out of 100%)\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def plotAnnotation(annotation, df, ax, colors): \n",
"\ttranscripts_ids = []\n",
"\ttranscripts_pos = []\n",
"\tchrm = \"\"\n",
"\tfor j in range(df.shape[0]):\n",
"\t\ttranscript_annotation=annotation[annotation['transcript_id']==df.iloc[j][\"transcript_id\"]] \n",
"\t\ttranscripts_ids.append(df.iloc[j][\"transcript_id\"])\n",
"\t\ttranscripts_pos.append(df.shape[0]-j) \n",
"\t\tif (transcript_annotation.shape[0] > 2): \n",
"\t\t\tfor idx,row in transcript_annotation.iterrows(): \n",
"\t\t\t\tchrm = row[\"chrm\"] \n",
"\t\t\t\tif row['type']=='transcript': \n",
"\t\t\t\t\tplt.plot([row['plot_start'],row['plot_stop']],[df.shape[0]-j,df.shape[0]-j],color=colors[j],linewidth=2) \n",
"\t\t\t\telse:\n",
"\t\t\t\t\tplt.plot([row['plot_start'],row['plot_stop']],[df.shape[0]-j,df.shape[0]-j],color=colors[j],linewidth=10) \n",
"\t\t\tax.spines['top'].set_visible(False)\n",
"\t\t\tax.spines['right'].set_visible(False)\n",
"\t\t\tax.spines['left'].set_visible(False)\n",
"\t\t\tax.spines['bottom'].set_bounds(0,ax.get_xticks()[-2]) \n",
"\t\t\tplt.yticks(transcripts_pos,transcripts_ids)\n",
"\t\t\tplt.xlabel(chrm)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"#def getarg():\n",
"# parser = argparse.ArgumentParser(description = \"To be added\")\n",
"# parser.add_argument(\"-i\", \"--inFile\", help = \"Example: /path/nameofthefile without the suffix [pos|neg].sig\", required = True)\n",
"# parser.add_argument(\"-l\", \"--targetList\", help = \"Example: /path/nameofthefile without the suffix [pos|neg].sig\")\n",
"# parser.add_argument(\"-t\", \"--targetType\", help = \"Example: /path/nameofthefile without the suffix [pos|neg].sig\")\n",
"# parser.add_argument(\"-m\", \"--tpmMin\", help = \"Example: /path/nameofthefile without the suffix [pos|neg].sig\")\n",
"# parser.add_argument(\"-o\", \"--outFile\", help = \"Example: /path/\", required = True)\n",
"# arg = parser.parse_args()\n",
"# return arg.inFile, arg.targetList, arg.targetType, arg.outFile, arg.tpmMin\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def preprocessArguments(args):\n",
" if args.geneNames != '':\n",
" gene_id='gene_name'\n",
" with open(args.geneNames,'r') as f:\n",
" targets=[i.strip() for i in f]\n",
" elif args.geneIDs != '':\n",
" gene_id='gene_id'\n",
" with open(args.geneIDs,'r') as f:\n",
" targets=[i.strip() for i in f]\n",
" annotation=pd.read_csv(args.gtf, delimiter='\\t', header=None, usecols=[0,2,3,4,6,8],\n",
" names=['chrm','type','start','stop','strand','more'])\n",
" annotation['transcript_id']=annotation.apply(lambda x:\n",
" x['more'].split('transcript_id \"')[1].split('\"')[0],1)\n",
" annotation=annotation.drop(columns='more')\n",
" data=pd.read_csv(args.csv)\n",
" samples=data.columns[~(data.columns.str.startswith('feature')|data.columns.str.startswith('gene')|data.columns.str.startswith('transcript'))]\n",
" #conditions=list(set([x.split('_')[0] for x in samples]))\n",
" #conditions = [\"0\",\"3\",\"5\"]\n",
" conditions = [\"day0\",\"day3\",\"day5\"]\n",
" conditions.sort()\n",
" number_replicates={}\n",
" numerical=True\n",
" for cond in conditions:\n",
" number_replicates[cond]=samples.str.startswith(cond).sum()\n",
" try:\n",
" float(cond)\n",
" except:\n",
" numerical=False\n",
" x=np.arange(len(conditions))\n",
" if numerical:\n",
" x=[float(cond) for cond in conditions]\n",
" return gene_id, targets, annotation, data, samples, conditions, number_replicates, x "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"class Parser(object):\n",
" def __init__(self, csv, gtf, geneIDs, geneNames, outDir, minTPM, maxIso, minPct):\n",
" self.csv = csv\n",
" self.gtf = gtf\n",
" self.geneIDs = geneIDs\n",
" self.geneNames = geneNames\n",
" self.outDir = outDir\n",
" self.minTPM = minTPM\n",
" self.maxIso = maxIso\n",
" self.minPct = minPct\n",
"\n",
"args = Parser('/project/owlmayerTemporary/Sid/nanopore-analysis/Results_5_1/Quantification/all_counts_deseq2norm.txt',\n",
" '/project/owlmayerTemporary/Sid/nanopore-analysis/Results_5_1/GffCompare/nanopore.combined.gtf',\n",
" '', '/home/annaldas/projects/isoform_differentiation/test/list.txt',\n",
" '/home/annaldas/projects/isoform_differentiation/test/',0,18,0)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"#Parameters\n",
"outdir=args.outDir\n",
"minimumTPM = args.minTPM\n",
"minimumPct = args.minPct\n",
"maximumIso = args.maxIso\n",
"(identifier, targets, annotation, data, samples, conditions, number_replicates, x) = preprocessArguments(args)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RPS24\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/pkg/python-3.7.4-0/lib/python3.7/site-packages/ipykernel_launcher.py:6: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" \n",
"/pkg/python-3.7.4-0/lib/python3.7/site-packages/ipykernel_launcher.py:7: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" import sys\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAJXCAYAAAAD07KdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXwV9fX/8de5ufdmD5CIVkQQhWpxAS2iolRtraKCYrVFRAWXilYQhQrUWq1bC6i0CPq1VqsoFmxt64bLz60VN9QqRVwQRIK4sW8J2c/vj5mESwwQIOEmue/n4zGPO/czc2fOJZp8zsznc8bcHRERERERkfqIJDsAERERERFpPpRAiIiIiIhIvSmBEBERERGRelMCISIiIiIi9aYEQkRERERE6k0JhIiIiIiI1JsSCBERaRBmNsTMPGEpM7NPzex3ZpaRsN9xtfbbaGYfmtl1ZpaZsF+6mV1lZv8zs/Vmts7MPjazqWbWJWG/n5vZ02b2hZkVmdk8M7vazOLbiPfZ8Pw3N86/iIhIyxRNdgAiItLi/BRYCuQCZwC/CteH19rvCuBtIAs4Cbge6AycH26fDpwITADeBNKA74XH7wosCPe7Dnge+AuwEjgGuAnoGe77LWY2EOi2U99SRCRFKYEQEZGGNsfdF4brz4d3Cy40sxHuXpWw30fu/ma4/pKZ7Q4MMbMrgdYEyceV7j4p4TPPABPNLPEO+mHuvjzh/ctmZsANZravuy9KDM7M2gB/AK4C/rqzX1ZEJNVoCJOIiDS2dwnuMuy2jf3eDl87A/nh+td17ZiYiNRKHmofa686to0H5rn79G3EIyIiddAdCBERaWz7AGsJhhdtTafwdQ3wJbAOGGdmMeB5d/9mO855LFAFfJLYaGbHEAyR0vAlEZEdpDsQIiLS0NLMLGpmbczsQuBM4Fp3r6y1XyTcL8/MzgIuIxj+9Im7bwDOBXKAh4CvwwnZU8zsgK2d3MwOAUYAf0lMOsJJ1X8CbnP3+Q32bUVEUozuQIiISEP7uNb7u9x9Sh37PVfr/VPAsOo37v6kme1DMJH6eOBo4BfARWbWz91fqH1AM9sTeBz4FBhZa/NoIBO4pd7fREREvkUJhIiINLQzCKowtSXoxP/CzGa7+4O19rsceAvYCCx296LaBwrb/hUumNmRwAvAOKBH4r5mVkBQjcmAk9x9fcK2DsCvgYuBdDNLT/houpm1BtbXcZdERERqMXdPdgwiItICmNkQ4H6gS3UVprCjPpegqtK+7l5kZscBLwM/rusuQj3O80+gj7tnJbTlAS8RTJrunVAFqnp79Tm35lB3n7O98YiIpBrNgRARkUbj7qXA1cDuBMOP6sXMcs0su472NKAL8FVCWxYwk2AS9om1k4fQHIJhULUXgGnhel2fExGRWjSESUREGpW7P2FmbwOjzKyuuRB12R941symA/8GlgF7EgxBOojNk5F/EMyPGAFkh8Ocqn3q7svdfU14nM0Ej4ug0N2/tU1EROqmBEJERHaFawkmTV8KvFeP/RcCdwAnAGcRPENiA8GdhJ+6+6MJ+/YJX++o4zgXAA/sWMgiIlIXzYEQEREREZF60xwIERERERGpNyUQIiIiIiJSb0ogRERERESk3pRAiIiIiIhIvSmBEBERERGRelMCISIiIiIi9aYEQkRERERE6k0JhIiIiIiI1JsSCBERERERqTclECIiIiIiUm9KIEREREREpN6UQIiIiIiISL0pgRARERERkXpTAiEiIiIiIvWmBEJEREREROpNCYSIiIiIiNSbEggREREREak3JRAiIiIiIlJvSiBERERERKTelECIiIiIiEi9KYEQEREREZF6UwIhIiIiIiL1pgRCRERERETqTQmEiIiIiIjUmxIIERERERGpNyUQIiIiIiJSb0ogRERERESk3pRAiIiIiIhIvSmBEBERERGRelMCISIiIiIi9aYEQkRERERE6k0JhIiIiIiI1JsSCBERERERqTclECIiIiIiUm9KIEREREREpN6UQIiISMows7+Y2TIzm5fQlm9mz5vZgvC1TdhuZnaHmS00s7lmdljyIhcRaTqUQIiISCp5AOhTq20s8KK7dwFeDN8DnAx0CZdLgP/bRTGKiDRpSiBERCRluPsrwKpazacDU8P1qUD/hPYHPfAm0NrM9tw1kYqINF1KIEREJNXt4e5fhetfA3uE63sBnyfstzRsExFJadFkByDb5MkOQERkB1myA9he7u5mtl2/d83sEoIhTrQ94IDvH/rmm40Sm4hIYzo6GuW67Ox6/d5WAiEiIqnuGzPb092/CocoLQvbvwD2Ttivfdi2GXe/B7gHoGO3Q71LcUL+kfCneEtZidexj9Xav3qfb7XX7G91Hudb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\n",
"text/plain": [
"<Figure size 864x648 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"with PdfPages(outdir+'test.pdf') as pdf:\n",
" for gene_ensembl in targets:\n",
" gene = gene_ensembl.split(\"_\")[0]\n",
" print(gene)\n",
" df=data[data[identifier]==gene]\n",
" if not df.shape[0]:\n",
" continue\n",
" df_temp = df\n",
" for j in range(df.shape[0]):\n",
" transcript_annotation=annotation[annotation['transcript_id']==df.iloc[j][\"transcript_id\"]] \n",
" if (transcript_annotation.shape[0] < 3):\n",
" df_temp = df_temp[df_temp[\"transcript_id\"] != df.iloc[j][\"transcript_id\"]]\n",
" \n",
" # total gene expression calculation\n",
" data_gene=df_temp[samples].sum().to_frame().transpose()\n",
" data_gene=calculateStatistics(data_gene,conditions,number_replicates)\n",
" # mean transcript expression calculation\n",
" df_temp=calculateStatistics(df_temp,conditions,number_replicates)\n",
" # isoform percentage calculation\n",
" df_temp=(df_temp.filter(like='mean').div(data_gene.filter(like='mean').values[0],1)*100).add_prefix('Pct_').join(df_temp)\n",
" #choose isoforms to plot\n",
" df_temp=chooseIsoforms2Plot(df_temp,minimumTPM,minimumPct,maximumIso,annotation)\n",
" x = [0,3,5]\n",
" if df_temp.shape[0]:\n",
" panels = 2\n",
" if (df_temp.shape[0] > 9):\n",
" panels += 1\n",
" fig,axes = plt.subplots(panels,2,figsize = (12,9)) \n",
" fig.subplots_adjust(top = 0.9) \n",
" fig.suptitle(gene_ensembl,fontsize=16) \n",
" #plot isoform expression \n",
" axg=plt.subplot(panels,2,1) \n",
" plotProfiles(x, df_temp, data_gene, axg, colors) \n",
" #plot isoform expression percentage \n",
" axt=plt.subplot(panels,2,2) \n",
" plotStacked(x,df_temp,axt,colors) \n",
" #prepare annotation\n",
" annotation_cut=prepareAnnotation(annotation,df_temp) \n",
" #plot annotation \n",
" if (panels == 2): axa=plt.subplot(panels,2,(3,4)) \n",
" else: axa=plt.subplot(panels,2,(3,6)) \n",
" plotAnnotation(annotation_cut, df_temp, axa, colors) \n",
" pdf.savefig()"
]
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}