Skip to content

Instantly share code, notes, and snippets.

@armish
Created May 24, 2016 01:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save armish/9e0694cf297514dc0e6457fb6acb53b8 to your computer and use it in GitHub Desktop.
Save armish/9e0694cf297514dc0e6457fb6acb53b8 to your computer and use it in GitHub Desktop.
TCGA - purity estimation from VAF
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import glob\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"sns.set(color_codes=True)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38,81,82,83,84) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38,50,81,82,83,84) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (4,29,30,32,33) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (37) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (17,18,19,20,21,22,23,29,30) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38,67,81,82,83,84) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38,50,67) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38,50,67,73,81,82,83,84) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (38,50,67,81,82,83,84) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (4) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Study</th>\n",
" <th>Tumor_Sample_Barcode</th>\n",
" <th>VAF</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J1</td>\n",
" <td>0.447761</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J1</td>\n",
" <td>0.269231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J1</td>\n",
" <td>0.371134</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J1</td>\n",
" <td>0.092593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J1</td>\n",
" <td>0.312500</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Study Tumor_Sample_Barcode VAF\n",
"0 ACC TCGA-OR-A5J1 0.447761\n",
"1 ACC TCGA-OR-A5J1 0.269231\n",
"2 ACC TCGA-OR-A5J1 0.371134\n",
"3 ACC TCGA-OR-A5J1 0.092593\n",
"4 ACC TCGA-OR-A5J1 0.312500"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"folder = \"/Users/arman/Desktop/icgc/tcga/mafs\"\n",
"df = pd.DataFrame()\n",
"for maf_file in glob.glob(\"{}/*.maf\".format(folder)):\n",
" mdf = pd.read_csv(maf_file, delimiter=\"\\t\", comment=\"#\")\n",
" if \"t_alt_count\" in mdf.columns:\n",
" file_name = maf_file.split(\"/\")[-1].split(\"_\")[1].upper()\n",
" mdf['Study'] = file_name\n",
" mdf['Tumor_Sample_Barcode'] = [\"-\".join(s.split(\"-\")[0:3]) for s in mdf['Tumor_Sample_Barcode']]\n",
" mdf['read_count'] = mdf.t_alt_count + mdf.t_ref_count\n",
" mdf['VAF'] = mdf.t_alt_count / mdf.read_count\n",
" mdf = mdf[['Study', 'Tumor_Sample_Barcode', 'VAF']]\n",
" df = df.append(mdf)\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"purities = df.groupby(['Study', 'Tumor_Sample_Barcode']).median()\n",
"purities['Purity'] = [min(v, 1) for v in (purities.VAF / 0.5)]\n",
"purities['Study'] = [i[0] for i in purities.index]\n",
"purities['Sample'] = [i[1] for i in purities.index]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>VAF</th>\n",
" <th>Purity</th>\n",
" <th>Study</th>\n",
" <th>Sample</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Study</th>\n",
" <th>Tumor_Sample_Barcode</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"5\" valign=\"top\">ACC</th>\n",
" <th>TCGA-OR-A5J1</th>\n",
" <td>0.333333</td>\n",
" <td>0.666667</td>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TCGA-OR-A5J2</th>\n",
" <td>0.203896</td>\n",
" <td>0.407792</td>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TCGA-OR-A5J3</th>\n",
" <td>0.119048</td>\n",
" <td>0.238095</td>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TCGA-OR-A5J4</th>\n",
" <td>0.246575</td>\n",
" <td>0.493151</td>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TCGA-OR-A5J5</th>\n",
" <td>0.333333</td>\n",
" <td>0.666667</td>\n",
" <td>ACC</td>\n",
" <td>TCGA-OR-A5J5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" VAF Purity Study Sample\n",
"Study Tumor_Sample_Barcode \n",
"ACC TCGA-OR-A5J1 0.333333 0.666667 ACC TCGA-OR-A5J1\n",
" TCGA-OR-A5J2 0.203896 0.407792 ACC TCGA-OR-A5J2\n",
" TCGA-OR-A5J3 0.119048 0.238095 ACC TCGA-OR-A5J3\n",
" TCGA-OR-A5J4 0.246575 0.493151 ACC TCGA-OR-A5J4\n",
" TCGA-OR-A5J5 0.333333 0.666667 ACC TCGA-OR-A5J5"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"purities.head()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1294dca50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.factorplot(y=\"Study\", x=\"Purity\", hue=\"Study\", data=purities, kind=\"violin\", aspect=3, orient='h')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "UnboundLocalError",
"evalue": "local variable 'archive_path' referenced before assignment",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-15-48da91d6f8c6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mstudy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"cntl\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0msmuts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpytcga\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_mutation_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstudy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0msmuts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0msmuts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/pytcga/tcga_mutations.pyc\u001b[0m in \u001b[0;36mload_mutation_data\u001b[0;34m(disease_code, with_clinical, variant_type, wait_time)\u001b[0m\n\u001b[1;32m 54\u001b[0m archive_path = prefetch_mutation_data(disease_code,\n\u001b[1;32m 55\u001b[0m \u001b[0mwait_time\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwait_time\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 56\u001b[0;31m cache=True)\n\u001b[0m\u001b[1;32m 57\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[0;31m# Unpack tar file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/arman/miniconda2/envs/vaf/lib/python2.7/site-packages/pytcga/tcga_mutations.pyc\u001b[0m in \u001b[0;36mprefetch_mutation_data\u001b[0;34m(disease_code, wait_time, cache)\u001b[0m\n\u001b[1;32m 28\u001b[0m disease_code, center))\n\u001b[1;32m 29\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 30\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0marchive_path\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 31\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m def load_mutation_data(disease_code,\n",
"\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'archive_path' referenced before assignment"
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Hugo_Symbol A1BG\n",
"Entrez_Gene_Id 0\n",
"Center genome.wustl.edu\n",
"Ncbi_Build 37\n",
"Chrom 19\n",
"Start_Position 58862784\n",
"End_Position 58862784\n",
"Strand +\n",
"Variant_Classification Missense_Mutation\n",
"Variant_Type SNP\n",
"Reference_Allele C\n",
"Tumor_Seq_Allele1 C\n",
"Tumor_Seq_Allele2 T\n",
"Dbsnp_Rs novel\n",
"Dbsnp_Val_Status NaN\n",
"Tumor_Sample_Barcode TCGA-E9-A22B-01A-11D-A159-09\n",
"Matched_Norm_Sample_Barcode TCGA-E9-A22B-10A-01D-A159-09\n",
"Match_Norm_Seq_Allele1 C\n",
"Match_Norm_Seq_Allele2 C\n",
"Tumor_Validation_Allele1 NaN\n",
"Tumor_Validation_Allele2 NaN\n",
"Match_Norm_Validation_Allele1 NaN\n",
"Match_Norm_Validation_Allele2 NaN\n",
"Verification_Status Unknown\n",
"Validation_Status Untested\n",
"Mutation_Status Somatic\n",
"Sequencing_Phase Phase_IV\n",
"Sequence_Source WXS\n",
"Validation_Method none\n",
"Score 1\n",
"Bam_File dbGAP\n",
"Sequencer Illumina GAIIx\n",
"Tumor_Sample_UUID e46a5d19-2dd7-4c34-8fff-6276278c58b3\n",
"Matched_Norm_Sample_UUID f948182a-f814-4e3c-83ee-82b78aa423c1\n",
"File_Name genome.wustl.edu_BRCA.IlluminaHiSeq_DNASeq_aut...\n",
"Archive_Name genome.wustl.edu_BRCA.IlluminaHiSeq_DNASeq_aut...\n",
"Line_Number 3\n",
"TCGA_ID TCGA-E9-A22B\n",
"SampleID 01A\n",
"PortionID 11D\n",
"PlateID A159\n",
"CenterID 09\n",
"Name: 0, dtype: object"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smuts.iloc[0]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment