{ "metadata": { "name": "", "signature": "sha256:bb1c9132144b5ae30c062aaaa8a9de4a7f527dacdc3d0bf4e0dbe38f7cdc1f44" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "pandasVCFmulti" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "This example notebook describes simple usage of pandasVCFmulti, a module for parsing VCF files using the pandas library. pandasVCFmulti also handles single sample vcf files. " ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Libraries" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Import pdVCFsingle package\n", "import matplotlib as plt\n", "import sys\n", "sys.path.append( '../src/multi_sample/' )\n", "from pandasVCFmulti import *\n", "%config InlineBackend.figure_format = 'retina'\n", "pd.options.mode.chained_assignment = None #supressing the chained assignment warnings" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Example File Path" ] }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_path = '/Users/ers_vader/datasets_raw/1000genomes/phase3/CDS/ALL.chr21.phase3_shapeit2_mvncall_integrated_v4.20130502.genotypes_CDS.vcf.gz'\n", "#vcf_path = '/Users/ers_vader//Dropbox/TSRI/SWGR_titin.vcf.gz'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Creating Vcf object" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Initiate Vcf object by specifying the sample_id string and the columns the user wants to include for parsing. Only the CHROM, POS, REF, ALT, and FORMAT fields are required. A parser for the INFO field is in development. Some VCF files are quite large and will not fit in memory, therefore the user can specify the chunksize which allows iteration through the VCF. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk = Vcf(vcf_path, sample_id='all', cols=['#CHROM', 'POS', 'REF', 'ALT','FORMAT'], chunksize=1000, n_cores=20)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk.get_vcf_df_chunk()\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "0" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk.df.info()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "MultiIndex: 878 entries, (21, 10906922, C, T) to (21, 27945256, C, T)\n", "Columns: 2509 entries, CHROM to NA21144\n", "dtypes: int64(1), object(2508)\n", "memory usage: 16.8+ MB\n" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk.df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
CHROMPOSREFALTFORMATHG00096HG00097HG00099HG00100HG00101...NA21128NA21129NA21130NA21133NA21135NA21137NA21141NA21142NA21143NA21144
CHROMPOSREFALT
2110906922CT 21 10906922 C T GT 0|0 0|0 0|0 0|0 0|0... 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0
10906931TC 21 10906931 T C GT 0|0 0|0 0|0 0|0 0|0... 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0
10906933GA 21 10906933 G A GT 0|0 0|0 0|0 0|0 0|0... 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0
10906965GA 21 10906965 G A GT 0|0 0|0 0|0 0|0 0|0... 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0
10906982AG 21 10906982 A G GT 0|0 0|0 0|0 0|0 0|0... 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0
\n", "

5 rows \u00d7 2509 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ " CHROM POS REF ALT FORMAT HG00096 HG00097 HG00099 \\\n", "CHROM POS REF ALT \n", "21 10906922 C T 21 10906922 C T GT 0|0 0|0 0|0 \n", " 10906931 T C 21 10906931 T C GT 0|0 0|0 0|0 \n", " 10906933 G A 21 10906933 G A GT 0|0 0|0 0|0 \n", " 10906965 G A 21 10906965 G A GT 0|0 0|0 0|0 \n", " 10906982 A G 21 10906982 A G GT 0|0 0|0 0|0 \n", "\n", " HG00100 HG00101 ... NA21128 NA21129 NA21130 \\\n", "CHROM POS REF ALT ... \n", "21 10906922 C T 0|0 0|0 ... 0|0 0|0 0|0 \n", " 10906931 T C 0|0 0|0 ... 0|0 0|0 0|0 \n", " 10906933 G A 0|0 0|0 ... 0|0 0|0 0|0 \n", " 10906965 G A 0|0 0|0 ... 0|0 0|0 0|0 \n", " 10906982 A G 0|0 0|0 ... 0|0 0|0 0|0 \n", "\n", " NA21133 NA21135 NA21137 NA21141 NA21142 NA21143 NA21144 \n", "CHROM POS REF ALT \n", "21 10906922 C T 0|0 0|0 0|0 0|0 0|0 0|0 0|0 \n", " 10906931 T C 0|0 0|0 0|0 0|0 0|0 0|0 0|0 \n", " 10906933 G A 0|0 0|0 0|0 0|0 0|0 0|0 0|0 \n", " 10906965 G A 0|0 0|0 0|0 0|0 0|0 0|0 0|0 \n", " 10906982 A G 0|0 0|0 0|0 0|0 0|0 0|0 0|0 \n", "\n", "[5 rows x 2509 columns]" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "#checking stopIteration flag\n", "vcf_chunk.stopIteration" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "False" ] } ], "prompt_number": 28 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Adding Annotations" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%time vcf_chunk.add_variant_annotations(inplace=True) #split_columns={'AD':2, 'HQ':2}," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 813 ms, sys: 148 ms, total: 961 ms\n", "Wall time: 2.35 s\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "0" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk.df" ], "language": "python", "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
multiallelephaseGT1GT2a1a2zygosityvartype1vartype2GTFORMAThom_ref_counts
CHROMPOSREFALTsample_ids
2110906922CTNA19452 0 | 0 1 C T het-ref ref snp 0|1 GT 2499
HG02485 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
HG03520 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
NA19461 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
NA20287 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
10906931TCNA18995 0 | 1 0 C T het-ref snp ref 1|0 GT 2502
NA19078 0 | 1 0 C T het-ref snp ref 1|0 GT 2502
10906933GAHG01970 0 | 0 1 G A het-ref ref snp 0|1 GT 2503
10906965GAHG03673 0 | 0 1 G A het-ref ref snp 0|1 GT 2503
10906982AGHG00699 0 | 0 1 A G het-ref ref snp 0|1 GT 2503
10906985TGHG03900 0 | 0 1 T G het-ref ref snp 0|1 GT 2502
HG03021 0 | 1 0 G T het-ref snp ref 1|0 GT 2502
10906987CAHG02716 0 | 0 1 C A het-ref ref snp 0|1 GT 2502
HG03081 0 | 1 0 A C het-ref snp ref 1|0 GT 2502
10906989CTHG00096 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00101 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00116 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00120 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00128 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00137 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00239 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00258 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00275 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00280 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00320 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00327 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00342 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00380 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00404 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
HG00409 0 | 0 1 C T het-ref ref snp 0|1 GT 1245
10906989CT.......................................
27938630GAHG02629 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG02702 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03052 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03103 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03105 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03351 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03376 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03394 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03397 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03469 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03556 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
HG03559 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA18867 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA19113 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA19189 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA19307 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA19327 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA19346 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
NA19920 0 | 1 0 A G het-ref snp ref 1|0 GT 2460
27938652ATHG00611 0 | 0 1 A T het-ref ref snp 0|1 GT 2503
27945220GANA20332 0 | 0 1 G A het-ref ref snp 0|1 GT 2503
27945250GAHG03802 0 | 0 1 G A het-ref ref snp 0|1 GT 2503
27945254GANA19093 0 | 1 0 A G het-ref snp ref 1|0 GT 2503
27945256CTHG02481 0 | 0 1 C T het-ref ref snp 0|1 GT 2497
HG03139 0 | 0 1 C T het-ref ref snp 0|1 GT 2497
NA18877 0 | 0 1 C T het-ref ref snp 0|1 GT 2497
NA19130 0 | 0 1 C T het-ref ref snp 0|1 GT 2497
HG03114 0 | 1 0 T C het-ref snp ref 1|0 GT 2497
HG03352 0 | 1 0 T C het-ref snp ref 1|0 GT 2497
NA20287 0 | 1 0 T C het-ref snp ref 1|0 GT 2497
\n", "

67268 rows \u00d7 12 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ " multiallele phase GT1 GT2 a1 a2 zygosity \\\n", "CHROM POS REF ALT sample_ids \n", "21 10906922 C T NA19452 0 | 0 1 C T het-ref \n", " HG02485 0 | 1 0 T C het-ref \n", " HG03520 0 | 1 0 T C het-ref \n", " NA19461 0 | 1 0 T C het-ref \n", " NA20287 0 | 1 0 T C het-ref \n", " 10906931 T C NA18995 0 | 1 0 C T het-ref \n", " NA19078 0 | 1 0 C T het-ref \n", " 10906933 G A HG01970 0 | 0 1 G A het-ref \n", " 10906965 G A HG03673 0 | 0 1 G A het-ref \n", " 10906982 A G HG00699 0 | 0 1 A G het-ref \n", " 10906985 T G HG03900 0 | 0 1 T G het-ref \n", " HG03021 0 | 1 0 G T het-ref \n", " 10906987 C A HG02716 0 | 0 1 C A het-ref \n", " HG03081 0 | 1 0 A C het-ref \n", " 10906989 C T HG00096 0 | 0 1 C T het-ref \n", " HG00101 0 | 0 1 C T het-ref \n", " HG00116 0 | 0 1 C T het-ref \n", " HG00120 0 | 0 1 C T het-ref \n", " HG00128 0 | 0 1 C T het-ref \n", " HG00137 0 | 0 1 C T het-ref \n", " HG00239 0 | 0 1 C T het-ref \n", " HG00258 0 | 0 1 C T het-ref \n", " HG00275 0 | 0 1 C T het-ref \n", " HG00280 0 | 0 1 C T het-ref \n", " HG00320 0 | 0 1 C T het-ref \n", " HG00327 0 | 0 1 C T het-ref \n", " HG00342 0 | 0 1 C T het-ref \n", " HG00380 0 | 0 1 C T het-ref \n", " HG00404 0 | 0 1 C T het-ref \n", " HG00409 0 | 0 1 C T het-ref \n", "... ... ... ... ... .. .. ... \n", " 27938630 G A HG02629 0 | 1 0 A G het-ref \n", " HG02702 0 | 1 0 A G het-ref \n", " HG03052 0 | 1 0 A G het-ref \n", " HG03103 0 | 1 0 A G het-ref \n", " HG03105 0 | 1 0 A G het-ref \n", " HG03351 0 | 1 0 A G het-ref \n", " HG03376 0 | 1 0 A G het-ref \n", " HG03394 0 | 1 0 A G het-ref \n", " HG03397 0 | 1 0 A G het-ref \n", " HG03469 0 | 1 0 A G het-ref \n", " HG03556 0 | 1 0 A G het-ref \n", " HG03559 0 | 1 0 A G het-ref \n", " NA18867 0 | 1 0 A G het-ref \n", " NA19113 0 | 1 0 A G het-ref \n", " NA19189 0 | 1 0 A G het-ref \n", " NA19307 0 | 1 0 A G het-ref \n", " NA19327 0 | 1 0 A G het-ref \n", " NA19346 0 | 1 0 A G het-ref \n", " NA19920 0 | 1 0 A G het-ref \n", " 27938652 A T HG00611 0 | 0 1 A T het-ref \n", " 27945220 G A NA20332 0 | 0 1 G A het-ref \n", " 27945250 G A HG03802 0 | 0 1 G A het-ref \n", " 27945254 G A NA19093 0 | 1 0 A G het-ref \n", " 27945256 C T HG02481 0 | 0 1 C T het-ref \n", " HG03139 0 | 0 1 C T het-ref \n", " NA18877 0 | 0 1 C T het-ref \n", " NA19130 0 | 0 1 C T het-ref \n", " HG03114 0 | 1 0 T C het-ref \n", " HG03352 0 | 1 0 T C het-ref \n", " NA20287 0 | 1 0 T C het-ref \n", "\n", " vartype1 vartype2 GT FORMAT \\\n", "CHROM POS REF ALT sample_ids \n", "21 10906922 C T NA19452 ref snp 0|1 GT \n", " HG02485 snp ref 1|0 GT \n", " HG03520 snp ref 1|0 GT \n", " NA19461 snp ref 1|0 GT \n", " NA20287 snp ref 1|0 GT \n", " 10906931 T C NA18995 snp ref 1|0 GT \n", " NA19078 snp ref 1|0 GT \n", " 10906933 G A HG01970 ref snp 0|1 GT \n", " 10906965 G A HG03673 ref snp 0|1 GT \n", " 10906982 A G HG00699 ref snp 0|1 GT \n", " 10906985 T G HG03900 ref snp 0|1 GT \n", " HG03021 snp ref 1|0 GT \n", " 10906987 C A HG02716 ref snp 0|1 GT \n", " HG03081 snp ref 1|0 GT \n", " 10906989 C T HG00096 ref snp 0|1 GT \n", " HG00101 ref snp 0|1 GT \n", " HG00116 ref snp 0|1 GT \n", " HG00120 ref snp 0|1 GT \n", " HG00128 ref snp 0|1 GT \n", " HG00137 ref snp 0|1 GT \n", " HG00239 ref snp 0|1 GT \n", " HG00258 ref snp 0|1 GT \n", " HG00275 ref snp 0|1 GT \n", " HG00280 ref snp 0|1 GT \n", " HG00320 ref snp 0|1 GT \n", " HG00327 ref snp 0|1 GT \n", " HG00342 ref snp 0|1 GT \n", " HG00380 ref snp 0|1 GT \n", " HG00404 ref snp 0|1 GT \n", " HG00409 ref snp 0|1 GT \n", "... ... ... ... ... \n", " 27938630 G A HG02629 snp ref 1|0 GT \n", " HG02702 snp ref 1|0 GT \n", " HG03052 snp ref 1|0 GT \n", " HG03103 snp ref 1|0 GT \n", " HG03105 snp ref 1|0 GT \n", " HG03351 snp ref 1|0 GT \n", " HG03376 snp ref 1|0 GT \n", " HG03394 snp ref 1|0 GT \n", " HG03397 snp ref 1|0 GT \n", " HG03469 snp ref 1|0 GT \n", " HG03556 snp ref 1|0 GT \n", " HG03559 snp ref 1|0 GT \n", " NA18867 snp ref 1|0 GT \n", " NA19113 snp ref 1|0 GT \n", " NA19189 snp ref 1|0 GT \n", " NA19307 snp ref 1|0 GT \n", " NA19327 snp ref 1|0 GT \n", " NA19346 snp ref 1|0 GT \n", " NA19920 snp ref 1|0 GT \n", " 27938652 A T HG00611 ref snp 0|1 GT \n", " 27945220 G A NA20332 ref snp 0|1 GT \n", " 27945250 G A HG03802 ref snp 0|1 GT \n", " 27945254 G A NA19093 snp ref 1|0 GT \n", " 27945256 C T HG02481 ref snp 0|1 GT \n", " HG03139 ref snp 0|1 GT \n", " NA18877 ref snp 0|1 GT \n", " NA19130 ref snp 0|1 GT \n", " HG03114 snp ref 1|0 GT \n", " HG03352 snp ref 1|0 GT \n", " NA20287 snp ref 1|0 GT \n", "\n", " hom_ref_counts \n", "CHROM POS REF ALT sample_ids \n", "21 10906922 C T NA19452 2499 \n", " HG02485 2499 \n", " HG03520 2499 \n", " NA19461 2499 \n", " NA20287 2499 \n", " 10906931 T C NA18995 2502 \n", " NA19078 2502 \n", " 10906933 G A HG01970 2503 \n", " 10906965 G A HG03673 2503 \n", " 10906982 A G HG00699 2503 \n", " 10906985 T G HG03900 2502 \n", " HG03021 2502 \n", " 10906987 C A HG02716 2502 \n", " HG03081 2502 \n", " 10906989 C T HG00096 1245 \n", " HG00101 1245 \n", " HG00116 1245 \n", " HG00120 1245 \n", " HG00128 1245 \n", " HG00137 1245 \n", " HG00239 1245 \n", " HG00258 1245 \n", " HG00275 1245 \n", " HG00280 1245 \n", " HG00320 1245 \n", " HG00327 1245 \n", " HG00342 1245 \n", " HG00380 1245 \n", " HG00404 1245 \n", " HG00409 1245 \n", "... ... \n", " 27938630 G A HG02629 2460 \n", " HG02702 2460 \n", " HG03052 2460 \n", " HG03103 2460 \n", " HG03105 2460 \n", " HG03351 2460 \n", " HG03376 2460 \n", " HG03394 2460 \n", " HG03397 2460 \n", " HG03469 2460 \n", " HG03556 2460 \n", " HG03559 2460 \n", " NA18867 2460 \n", " NA19113 2460 \n", " NA19189 2460 \n", " NA19307 2460 \n", " NA19327 2460 \n", " NA19346 2460 \n", " NA19920 2460 \n", " 27938652 A T HG00611 2503 \n", " 27945220 G A NA20332 2503 \n", " 27945250 G A HG03802 2503 \n", " 27945254 G A NA19093 2503 \n", " 27945256 C T HG02481 2497 \n", " HG03139 2497 \n", " NA18877 2497 \n", " NA19130 2497 \n", " HG03114 2497 \n", " HG03352 2497 \n", " NA20287 2497 \n", "\n", "[67268 rows x 12 columns]" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk.df.info()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "MultiIndex: 10 entries, (21, 10906922, C, T) to (21, 10907033, G, A)\n", "Columns: 2509 entries, CHROM to NA21144\n", "dtypes: int64(1), object(2508)\n", "memory usage: 196.4+ KB\n" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "vcf_chunk.df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
multiallelephaseGT1GT2a1a2zygosityvartype1vartype2GTFORMAThom_ref_counts
CHROMPOSREFALTsample_ids
2110906922CTNA19452 0 | 0 1 C T het-ref ref snp 0|1 GT 2499
HG02485 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
HG03520 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
NA19461 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
NA20287 0 | 1 0 T C het-ref snp ref 1|0 GT 2499
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 47, "text": [ " multiallele phase GT1 GT2 a1 a2 zygosity \\\n", "CHROM POS REF ALT sample_ids \n", "21 10906922 C T NA19452 0 | 0 1 C T het-ref \n", " HG02485 0 | 1 0 T C het-ref \n", " HG03520 0 | 1 0 T C het-ref \n", " NA19461 0 | 1 0 T C het-ref \n", " NA20287 0 | 1 0 T C het-ref \n", "\n", " vartype1 vartype2 GT FORMAT \\\n", "CHROM POS REF ALT sample_ids \n", "21 10906922 C T NA19452 ref snp 0|1 GT \n", " HG02485 snp ref 1|0 GT \n", " HG03520 snp ref 1|0 GT \n", " NA19461 snp ref 1|0 GT \n", " NA20287 snp ref 1|0 GT \n", "\n", " hom_ref_counts \n", "CHROM POS REF ALT sample_ids \n", "21 10906922 C T NA19452 2499 \n", " HG02485 2499 \n", " HG03520 2499 \n", " NA19461 2499 \n", " NA20287 2499 " ] } ], "prompt_number": 47 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Unstacking the parsed dataframe by sample leads to sparsity due to rare variants" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#unstack dataframe by sample - QUITE SPARSE DUE TO RARE VARIANTS\n", "vcf_chunk.df.unstack(level=4).tail()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
multiallele...AD_1
sample_idsSHUFFLE_WELLDERLY_EA_0SHUFFLE_WELLDERLY_EA_1SHUFFLE_WELLDERLY_EA_10SHUFFLE_WELLDERLY_EA_100SHUFFLE_WELLDERLY_EA_101SHUFFLE_WELLDERLY_EA_102SHUFFLE_WELLDERLY_EA_103SHUFFLE_WELLDERLY_EA_104SHUFFLE_WELLDERLY_EA_105SHUFFLE_WELLDERLY_EA_106...SHUFFLE_WELLDERLY_EA_90SHUFFLE_WELLDERLY_EA_91SHUFFLE_WELLDERLY_EA_92SHUFFLE_WELLDERLY_EA_93SHUFFLE_WELLDERLY_EA_94SHUFFLE_WELLDERLY_EA_95SHUFFLE_WELLDERLY_EA_96SHUFFLE_WELLDERLY_EA_97SHUFFLE_WELLDERLY_EA_98SHUFFLE_WELLDERLY_EA_99
CHROMPOSREFALT
2179636668TCNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
179636679ACANaNNaNNaNNaNNaNNaNNaNNaNNaNNaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
179636928TATNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
179636983CTNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
179636989CGNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
\n", "

5 rows \u00d7 8626 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ " multiallele \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_0 SHUFFLE_WELLDERLY_EA_1 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_10 SHUFFLE_WELLDERLY_EA_100 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_101 SHUFFLE_WELLDERLY_EA_102 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_103 SHUFFLE_WELLDERLY_EA_104 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_105 SHUFFLE_WELLDERLY_EA_106 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " ... AD_1 \\\n", "sample_ids ... SHUFFLE_WELLDERLY_EA_90 \n", "CHROM POS REF ALT ... \n", "2 179636668 T C ... NaN \n", " 179636679 AC A ... NaN \n", " 179636928 TA T ... NaN \n", " 179636983 C T ... NaN \n", " 179636989 C G ... NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_91 SHUFFLE_WELLDERLY_EA_92 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_93 SHUFFLE_WELLDERLY_EA_94 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_95 SHUFFLE_WELLDERLY_EA_96 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \\\n", "sample_ids SHUFFLE_WELLDERLY_EA_97 SHUFFLE_WELLDERLY_EA_98 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN NaN \n", " 179636679 AC A NaN NaN \n", " 179636928 TA T NaN NaN \n", " 179636983 C T NaN NaN \n", " 179636989 C G NaN NaN \n", "\n", " \n", "sample_ids SHUFFLE_WELLDERLY_EA_99 \n", "CHROM POS REF ALT \n", "2 179636668 T C NaN \n", " 179636679 AC A NaN \n", " 179636928 TA T NaN \n", " 179636983 C T NaN \n", " 179636989 C G NaN \n", "\n", "[5 rows x 8626 columns]" ] } ], "prompt_number": 33 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "CONVENINCE FUNCTION FOR PARSING AN ENTIRE MULTISAMPLE FILE" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def get_whole_file(vcf_path, sample_ids='all', columns=['#CHROM', 'POS', 'REF', 'ALT', 'FORMAT'], \\\n", " add_variant_annotations=True, split_columns='', chunksize=5000, inplace=True, n_cores=1):\n", " '''\n", " This function will parse the whole multi-sample vcf file\n", " and return a dataframe.\n", " \n", " Note using multiple cores with add_variant_annotations will be \n", " very memory intensive as the parsed dataframe is copied to each process.\n", " '''\n", " \n", " vcf_df_obj = Vcf(vcf_path, sample_id=sample_ids, cols=columns, chunksize=chunksize, n_cores=n_cores) #initiate object\n", " stopIteration = False #initiating stopIteration flag\n", " data = [] #aggregation df list\n", " \n", " while stopIteration == False:\n", "\n", " vcf_df_obj.get_vcf_df_chunk() #retrieving df chunk\n", " if vcf_df_obj.stopIteration == True: break #checking for end of file\n", " \n", " if add_variant_annotations: \n", " vcf_df_obj.add_variant_annotations(split_columns=split_columns, inplace=inplace) #parsing df and adding annotations\n", " if inplace:\n", " data.append(vcf_df_obj.df)\n", " else:\n", " data.append(vcf_df_obj.df_annot) #aggregating annotation data\n", " else:\n", " vcf_df_obj.append(vcf_df_obj.df)\n", "\n", " df = pd.concat(data)\n", " return df" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "master_df = get_whole_file(vcf_path, sample_ids='all', columns=['#CHROM', 'POS', 'REF', 'ALT','FORMAT'], \\\n", " chunksize=5000, n_cores=4)\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "End of File Reached\n" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "master_df.zygosity.value_counts().plot(kind='bar', log=True)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "" ] }, { "metadata": { "png": { "height": 285, "width": 370 } }, "output_type": "display_data", "png": "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\n+fLl+tznPqdXX31VkpRMJvXSSy+prKxMl112mb761a/SkMcEx1cQKSUlJXr99df19NNP69VXX9WO\nHTs0aNAgjRw5Unfffbc++MEPui4RMOe1117TjTfeqLy8vPavHT9+XJKUnZ2thx56SI899pgee+wx\nPfPMM67KBMz50Y9+pNzcXD3zzDPtYw8TiYQ++clP6pOf/KTuuOMOlZSU6IorrtCXv/xlx9XiQqMp\nR2SkUikNGzZMU6dO1fTp012XA8TGnj179NnPfrb91zk5OWpubm7/9Yc+9CHdeeedevHFF12UB5j1\nxhtvqKSkpL0h79atm44cOdJ+/aabbtKVV16pn/3sZzTlMcDxFUTGY4891v72HYDMueyyyzo04QMH\nDtTrr7/e4Tm7d+/W73//+0yXBph2/PhxDRs2rP3Xl112mQ4ePNjhOaWlpXrllVcyXRocoClHZIwc\nOVKbNm1yXQYQO8OHD1ddXV37r8eNG6eamhrNnz9fx44d0/PPP681a9bozjvvdFglYM/AgQM7TDwa\nMmSI1q5d2+E5a9eu1cc+9rFMlwYHaMoRGaWlpVq9erXefPNN16UAsXLLLbeotrZWu3fvliQ9+OCD\n6tmzp7761a+qT58+mjRpko4fP6677rrLcaWALcXFxXrppZfafz1lyhRt3bpVo0aN0tKlSzV58mS9\n/vrr+tznPuewSmQKIxERGSdOnNBtt92m5uZm3XvvvbrlllvUr18/12UB5h0/flwHDhxQbm6uLrro\nIknv3fz56KOPasuWLZo4caK+9KUv6fLLL3dcKWBLVVWVHnvsMT355JMaOnSojh49qttuu02rV6+W\n9N5NnyUlJfrRj36kvn37Oq4WFxpNOSJj6NChOnbsmPbs2SPpvb+MBg0apG7dunV6bn19fabLAwDg\ngmtpadHq1au1ZcsW3XLLLbriiitcl4QMoSlHZOTn5yuRSOhsSzKRSGj79u0ZqgoAAODCoykHAHSw\nYMECLViwgHekgAxraGhQQ0ODxo4d67oUOMCNngCADt566y3t2LHDdRlA7CxevFglJSWuy4AjNOWI\nrIaGhk6joQAAsIwDDPFFU47IYscAAADEBU05Io0dAwBAnCQSCdclwJHurgsAAETL7bffrqFDh7ou\nA4glNqPii+kriKwgCDR79my1tLS4LgUAAOCC4vgKIo1/MwIArEqlUmcdaFBTU6NZs2ZlqCK4xE45\nAEBHjhzRL3/5S/385z/XmjVr9M4773T5PGaXA+HJyspSEAR65JFHTvucRx99VMlkkneNY4Az5YiM\nVCqlkpKSM35oQk1Njaqqqs74FxiA8/Pf//3fGjNmjI4ePSpJ6tu3ry6++OJOz+MGNCDz3n77bXXv\nTrsWB/wpIzJSqZQSicQZm/I1a9YolUrRlAMh+upXv6qjR49q3rx5uv322/WRj3zEdUkAJJ04cUJr\n167VgAEDXJeCDKAph1fYMQDCt3HjRt1www362te+5roUwLySkpIO7zotWbJE1dXVnZ737rvvatOm\nTTp69Kjuu+++DFYIV+hu4A12DIAL44orrtBVV13lugwgFtasWdPh1zt27NCOHTs6Pa9bt24aMGCA\nxo8frzlz5mSoOrhEUw6n2DEA3CspKdHChQv1+OOPq0+fPq7LAUxrbW1t/++srCwlk0klk0mHFSEq\nmL4Cp7Kyzm0q56k7Bt/61rd06aWXXuDKgPg4fPiwJk2apIEDB+qhhx7SjTfe6LokIBaWLFmigoIC\nXX/99a5LQQTQlCMy2DEA3Dlw4ICuuuoqvfXWWxo8eLCGDRvW5fN+9atfZbgyAIgHjq8gMhYtWqSC\nggLXZQCxs3XrVt1xxx06ePCgJKmxsVGNjY2OqwLi4wc/+IEWL16suro6NTU1tc8k37Bhg77//e/r\nwQcf1JVXXum4Slxo7JQDQMzdd999+rd/+zd95Stf0W233abCwsIu55QDCN/EiRP1wgsvKJFIqE+f\nPjp48GD7ufO33npL/fv314wZM/hUzxg4twO9QAb94Ac/UGlpqQYOHKhu3bq1f33Dhg3667/+a73x\nxhsOqwPsef7553XVVVfp8ccf180330xDDmTIggUL9MILL+iv/uqvtHXrVn3lK1/pcL1Pnz4aM2aM\nVq1a5ahCZBLHVxApf7pjcOobOfn5+Vq0aJH69u3LjgEQol69eqmoqMh1GUDs/PjHP1bv3r1VUVGh\nHj16dPmcoUOHavny5RmuDC6wU47IYMcAcKOoqEjPPvus3nnnHdelALHy2muv6TOf+cxpG3JJ+sAH\nPqDm5uYMVgVXaMoRGafuGJxu8sPQoUO5AQ0I2T/8wz8oLy9P5eXlampqcl0OEBt9+vTRtm3bzvic\nn//85xo6dGiGKoJLHF9BZLz22mu688472TEAMuyb3/ym8vPztWDBAn3ve99TUVGRPvKRj3T53EWL\nFmW4OsCua6+9VitXrtT+/fvVt2/fTte3bNmiN954Q5/5zGccVIdMoylHZLBjALjx9NNPt/93a2ur\nampqVFNT0+VzacqB8JSVlWnFihW68847NWvWrA6fcL1371498MADSiQS+vrXv+6wSmQKTTkigx0D\nwI36+nrXJQCxNH78eD3wwANasGCBxo0bp169ekmSPvaxj+nNN99US0uL/u7v/o5P2Y0JmnJEBjsG\ngBv5+fmuSwBi67vf/a7Gjx+vVCql1157TZLU0NCgUaNGKZlM6pZbbnFcITKFDw9CpDz00ENasGCB\nEomEevXqpcOHD+uqq67qsGMwd+5c12UCABC6trY27d+/X5deeqmyspjFETc05YicF154oX3H4MiR\nI+rZs6dGjBjBjgFwgW3ZskXf+973VFdXp507d2rQoEG6+uqr9ZWvfEVXX3216/IAwDSackQWOwZA\n5nzrW9/SI488ohMnTnS6lp2drWQyqYcffthBZYBtr7zyiubMmaNNmzZp586dnTLY1tamRCKhlpYW\nRxUiU2jKASDmfvnLX2r8+PHq16+f7rjjDt1yyy36xCc+oV//+td64YUX9LOf/UxNTU1auXKlPvWp\nT7kuFzCjtrZW48aNU0tLi7p166aCggJdfPHFnZ6XSCRUVVXloEJkEk05IoUdAyDzJk6cqN/85jf6\n7W9/q8svv7zT9d/97ncqKCjQjTfeqOeff95BhYBNN910k2pqarRkyRLdcccd+tCHPuS6JDjE9BVE\nxvnsGAAIz+bNmzVx4sQuG3JJGjx4sD796U9r9erVGa4MsG3z5s264YYbdPfdd7suBRFAU47IePjh\nh9XS0sKOAZBh77zzTvt85NP54Ac/qHfeeSdDFQHx0K9fP11zzTWuy0BEcPccIuPUHQMaciBzrr32\nWq1atUrvvvtul9d///vf6xe/+IWGDx+e4coA24qLi/XTn/5Ub7/9tutSEAE05YgMdgwANyZPnqyt\nW7dq4sSJ+slPfqLDhw9Lkg4fPqxnn31Wt956q7Zu3arJkyc7rhSwZc6cORowYIAefvhh7d6923U5\ncIwbPREZ9913n/7jP/5Du3fvZqccyKC2tjZNnDhRK1eulCR1795dV155pbZu3arjx49Leu/jwE9e\nB/D+3HPPPZ3ui9q5c6dWr16trKwsjR49Wh/96Ee7/N5FixZlokQ4RFOOyNi3b5/GjBmj8ePH6xvf\n+IYGDBjguiQgNlpbW7Vo0SLNnz9fb775po4dO6aLLrpIV1xxhR544AHde++93GQNpCmdz9xobW0N\nsZTZ8m4AAAEVSURBVBJEEU05nGHHAIim1tZW7du3T3l5eXxwFxCiHTt2vO/vzc/PD60ORBNNOZxh\nxwAAAOA9jESEM/X19a5LAPAHfHAXALhFUw5neCsOiAY+uAsA3KMpB4CY44O7AMA9zpQDQMz16dNH\nV1xxhX7zm9+4LgUAYovb6gEg5vjgLgBwj6YcAGKOj/oGAPdoygEg5viobwBwjzPlABAzfHAXAEQP\nTTkAxAwf3AUA0cNIRACIGT64CwCih51yAAAAwDFu9AQAAAAcoykHAAAAHKMpBwAAAByjKQcAAAAc\noykHAAAAHKMpBwAAAByjKQcAAAAcoykHAAAAHKMpBwAAAByjKQcAAAAcoykHAAAAHKMpBwAAABz7\nf8ULpbbC8cwPAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "master_df.vartype2.value_counts()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "ref 31553\n", "snp 24159\n", "ins 681\n", "mnp 367\n", "del 215\n", "indel 63\n", "dtype: int64" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "len(master_df)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "57038" ] } ], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "master_df.head(20)" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
multiallelephaseGT1GT2a1a2zygosityvartype1vartype2GTFORMAThom_ref_countsFTGQHQDPAD
CHROMPOSREFALTsample_ids
2179392051CACAASHUFFLE_WELLDERLY_EA_170 0 / 1 0 CAA CA het-ref ins ref 1/0 GT:FT:GQ:HQ:DP:AD 448 VQLOW 20 20,20 30 3,27
179392075GAGAASHUFFLE_WELLDERLY_EA_52 0 / 1 0 GAA GA het-ref ins ref 1/0 GT:FT:GQ:HQ:DP:AD 447 VQLOW 20 20,20 34 6,28
179392080ATSHUFFLE_WELLDERLY_EA_8 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 359 454,359 49 26,23
SHUFFLE_WELLDERLY_EA_12 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 248 248,248 30 14,16
SHUFFLE_WELLDERLY_EA_13 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 206 206,206 28 12,16
SHUFFLE_WELLDERLY_EA_19 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 463 629,463 56 31,25
SHUFFLE_WELLDERLY_EA_28 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 273 388,273 38 23,15
SHUFFLE_WELLDERLY_EA_29 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 344 344,344 34 17,17
SHUFFLE_WELLDERLY_EA_30 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 240 240,277 52 17,35
SHUFFLE_WELLDERLY_EA_39 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 423 423,423 67 24,43
SHUFFLE_WELLDERLY_EA_41 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 481 481,481 59 26,33
SHUFFLE_WELLDERLY_EA_42 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 298 494,298 40 24,16
SHUFFLE_WELLDERLY_EA_44 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 180 180,180 28 10,18
SHUFFLE_WELLDERLY_EA_45 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 354 354,354 56 22,34
SHUFFLE_WELLDERLY_EA_47 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 644 644,644 74 33,41
SHUFFLE_WELLDERLY_EA_54 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 210 210,210 44 15,29
SHUFFLE_WELLDERLY_EA_60 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 355 656,355 50 33,17
SHUFFLE_WELLDERLY_EA_65 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 340 340,340 33 17,16
SHUFFLE_WELLDERLY_EA_75 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 897 897,897 104 53,51
SHUFFLE_WELLDERLY_EA_81 0 / 1 0 T A het-ref snp ref 1/0 GT:FT:GQ:HQ:DP:AD 337 PASS 454 456,454 49 25,24
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ " multiallele phase GT1 GT2 \\\n", "CHROM POS REF ALT sample_ids \n", "2 179392051 CA CAA SHUFFLE_WELLDERLY_EA_170 0 / 1 0 \n", " 179392075 GA GAA SHUFFLE_WELLDERLY_EA_52 0 / 1 0 \n", " 179392080 A T SHUFFLE_WELLDERLY_EA_8 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_12 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_13 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_19 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_28 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_29 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_30 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_39 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_41 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_42 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_44 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_45 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_47 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_54 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_60 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_65 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_75 0 / 1 0 \n", " SHUFFLE_WELLDERLY_EA_81 0 / 1 0 \n", "\n", " a1 a2 zygosity vartype1 \\\n", "CHROM POS REF ALT sample_ids \n", "2 179392051 CA CAA SHUFFLE_WELLDERLY_EA_170 CAA CA het-ref ins \n", " 179392075 GA GAA SHUFFLE_WELLDERLY_EA_52 GAA GA het-ref ins \n", " 179392080 A T SHUFFLE_WELLDERLY_EA_8 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_12 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_13 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_19 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_28 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_29 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_30 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_39 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_41 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_42 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_44 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_45 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_47 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_54 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_60 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_65 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_75 T A het-ref snp \n", " SHUFFLE_WELLDERLY_EA_81 T A het-ref snp \n", "\n", " vartype2 GT \\\n", "CHROM POS REF ALT sample_ids \n", "2 179392051 CA CAA SHUFFLE_WELLDERLY_EA_170 ref 1/0 \n", " 179392075 GA GAA SHUFFLE_WELLDERLY_EA_52 ref 1/0 \n", " 179392080 A T SHUFFLE_WELLDERLY_EA_8 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_12 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_13 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_19 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_28 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_29 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_30 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_39 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_41 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_42 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_44 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_45 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_47 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_54 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_60 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_65 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_75 ref 1/0 \n", " SHUFFLE_WELLDERLY_EA_81 ref 1/0 \n", "\n", " FORMAT \\\n", "CHROM POS REF ALT sample_ids \n", "2 179392051 CA CAA SHUFFLE_WELLDERLY_EA_170 GT:FT:GQ:HQ:DP:AD \n", " 179392075 GA GAA SHUFFLE_WELLDERLY_EA_52 GT:FT:GQ:HQ:DP:AD \n", " 179392080 A T SHUFFLE_WELLDERLY_EA_8 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_12 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_13 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_19 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_28 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_29 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_30 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_39 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_41 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_42 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_44 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_45 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_47 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_54 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_60 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_65 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_75 GT:FT:GQ:HQ:DP:AD \n", " SHUFFLE_WELLDERLY_EA_81 GT:FT:GQ:HQ:DP:AD \n", "\n", " hom_ref_counts FT GQ \\\n", "CHROM POS REF ALT sample_ids \n", "2 179392051 CA CAA SHUFFLE_WELLDERLY_EA_170 448 VQLOW 20 \n", " 179392075 GA GAA SHUFFLE_WELLDERLY_EA_52 447 VQLOW 20 \n", " 179392080 A T SHUFFLE_WELLDERLY_EA_8 337 PASS 359 \n", " SHUFFLE_WELLDERLY_EA_12 337 PASS 248 \n", " SHUFFLE_WELLDERLY_EA_13 337 PASS 206 \n", " SHUFFLE_WELLDERLY_EA_19 337 PASS 463 \n", " SHUFFLE_WELLDERLY_EA_28 337 PASS 273 \n", " SHUFFLE_WELLDERLY_EA_29 337 PASS 344 \n", " SHUFFLE_WELLDERLY_EA_30 337 PASS 240 \n", " SHUFFLE_WELLDERLY_EA_39 337 PASS 423 \n", " SHUFFLE_WELLDERLY_EA_41 337 PASS 481 \n", " SHUFFLE_WELLDERLY_EA_42 337 PASS 298 \n", " SHUFFLE_WELLDERLY_EA_44 337 PASS 180 \n", " SHUFFLE_WELLDERLY_EA_45 337 PASS 354 \n", " SHUFFLE_WELLDERLY_EA_47 337 PASS 644 \n", " SHUFFLE_WELLDERLY_EA_54 337 PASS 210 \n", " SHUFFLE_WELLDERLY_EA_60 337 PASS 355 \n", " SHUFFLE_WELLDERLY_EA_65 337 PASS 340 \n", " SHUFFLE_WELLDERLY_EA_75 337 PASS 897 \n", " SHUFFLE_WELLDERLY_EA_81 337 PASS 454 \n", "\n", " HQ DP AD \n", "CHROM POS REF ALT sample_ids \n", "2 179392051 CA CAA SHUFFLE_WELLDERLY_EA_170 20,20 30 3,27 \n", " 179392075 GA GAA SHUFFLE_WELLDERLY_EA_52 20,20 34 6,28 \n", " 179392080 A T SHUFFLE_WELLDERLY_EA_8 454,359 49 26,23 \n", " SHUFFLE_WELLDERLY_EA_12 248,248 30 14,16 \n", " SHUFFLE_WELLDERLY_EA_13 206,206 28 12,16 \n", " SHUFFLE_WELLDERLY_EA_19 629,463 56 31,25 \n", " SHUFFLE_WELLDERLY_EA_28 388,273 38 23,15 \n", " SHUFFLE_WELLDERLY_EA_29 344,344 34 17,17 \n", " SHUFFLE_WELLDERLY_EA_30 240,277 52 17,35 \n", " SHUFFLE_WELLDERLY_EA_39 423,423 67 24,43 \n", " SHUFFLE_WELLDERLY_EA_41 481,481 59 26,33 \n", " SHUFFLE_WELLDERLY_EA_42 494,298 40 24,16 \n", " SHUFFLE_WELLDERLY_EA_44 180,180 28 10,18 \n", " SHUFFLE_WELLDERLY_EA_45 354,354 56 22,34 \n", " SHUFFLE_WELLDERLY_EA_47 644,644 74 33,41 \n", " SHUFFLE_WELLDERLY_EA_54 210,210 44 15,29 \n", " SHUFFLE_WELLDERLY_EA_60 656,355 50 33,17 \n", " SHUFFLE_WELLDERLY_EA_65 340,340 33 17,16 \n", " SHUFFLE_WELLDERLY_EA_75 897,897 104 53,51 \n", " SHUFFLE_WELLDERLY_EA_81 456,454 49 25,24 " ] } ], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }