{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import os" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from tqdm import tqdm" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "#!cat /cellar/users/btsui/Data/ucsc_chains_human_homo_snps/hg38ToMm10.over.chain.gz.human_homo.bed | head" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "liftOverDir='/cellar/users/btsui/Data/ucsc_chains_human_homo_snps/'\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "fnames=pd.Series(os.listdir(liftOverDir))\n", "inFnameS=fnames[~fnames.str.contains('unmapped')]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 157/157 [01:07<00:00, 2.32it/s]\n" ] } ], "source": [ "myDict={}\n", "for fname in tqdm(inFnameS):\n", " liftOverFDir=liftOverDir+fname\n", " liftUnmappedDir=liftOverFDir.replace('.human_homo.bed','.human_homo.unmapped.bed')\n", "\n", " #os.listdir(liftOverDir)\n", "\n", " colOrder=['Chr','Start','End','Rs']\n", "\n", " liftOverDf=pd.read_csv(liftOverFDir,sep='\\t',header=None,)\n", "\n", " liftOverDf.columns=colOrder\n", "\n", " #unmappedS=pd.read_csv(liftUnmappedDir,header=None,)[0]\n", "\n", " #unmappedDf=unmappedS[(unmappedS.index%2)==1].str.split('\\t',expand=True)\n", "\n", " #unmappedDf.columns=colOrder\n", " #mapped=liftOverDf.groupby('Chr').size().sum()\n", " myDict[fname ]=liftOverDf.shape[0]\n", " \n", " #print (total)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "unmappedS=pd.read_csv(liftUnmappedDir,header=None,)[0]\n", "\n", "unmappedDf=unmappedS[(unmappedS.index%2)==1].str.split('\\t',expand=True)\n", "\n", "unmappedDf.columns=colOrder\n", "mapped=liftOverDf.groupby('Chr').size().sum()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "total=liftOverDf.groupby('Chr').size().sum()+unmappedDf.groupby('Chr').size().sum()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "#liftOverDf" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "tmpDf=(pd.Series(myDict)).reset_index()\n", "tmpDf.columns=['Ucsc Chain Filename','Number of Human Snps Lifted Over']\n", "#.sort_values(ascending=False).to_frame(name='PercentLiftedOver')" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "tmpDf['Percent of Human Snps Lifted Over']=tmpDf['Number of Human Snps Lifted Over']/total" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "ucscChainEfficiency=tmpDf.sort_values('Number of Human Snps Lifted Over',ascending=False)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "#!ls" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "ucscChainEfficiency.to_csv('./Data/Human_Snps_Lifted_Over_efficiency.csv',index=False)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "#!head ./Data/Human_Snps_Lifted_Over_efficiency.csv" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'unmappedDf' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0munmappedDf\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[0m", "\u001b[0;31mNameError\u001b[0m: name 'unmappedDf' is not defined" ] } ], "source": [ "unmappedDf.head()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Deleted in new\r\n", "chr1\t817185\t817186\trs3094315\r\n", "#Deleted in new\r\n", "chr1\t833067\t833068\trs12562034\r\n", "#Deleted in new\r\n", "chr1\t842132\t842133\trs6672353\r\n", "#Deleted in new\r\n", "chr1\t843941\t843942\trs4040617\r\n", "#Deleted in new\r\n", "chr1\t850608\t850609\trs2980300\r\n" ] } ], "source": [ "!head $liftUnmappedDir" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "Length mismatch: Expected axis has 4 elements, new values have 1 elements", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mliftOverDf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m__setattr__\u001b[0;34m(self, name, value)\u001b[0m\n\u001b[1;32m 4387\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4388\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4389\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__setattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4390\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4391\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32mpandas/_libs/properties.pyx\u001b[0m in \u001b[0;36mpandas._libs.properties.AxisProperty.__set__\u001b[0;34m()\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m_set_axis\u001b[0;34m(self, axis, labels)\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 645\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_set_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 646\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 647\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_clear_item_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mset_axis\u001b[0;34m(self, axis, new_labels)\u001b[0m\n\u001b[1;32m 3321\u001b[0m raise ValueError(\n\u001b[1;32m 3322\u001b[0m \u001b[0;34m'Length mismatch: Expected axis has {old} elements, new '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3323\u001b[0;31m 'values have {new} elements'.format(old=old_len, new=new_len))\n\u001b[0m\u001b[1;32m 3324\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3325\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_labels\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: Length mismatch: Expected axis has 4 elements, new values have 1 elements" ] } ], "source": [ "liftOverDf.columns=['']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0chr176611910466119105rs1045587
1chrM50855086rs9783068
2chrM50945095rs9701099
3chr4156244135156244136rs267598747
4chr4156239438156239439rs267598748
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 chr17 66119104 66119105 rs1045587\n", "1 chrM 5085 5086 rs9783068\n", "2 chrM 5094 5095 rs9701099\n", "3 chr4 156244135 156244136 rs267598747\n", "4 chr4 156239438 156239439 rs267598748" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "liftOverDf.head()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "#!ls -laht /cellar/users/btsui/Data/ucsc_chains_human_homo_snps/" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "#!ls -lah /cellar/users/btsui/Data/ucsc_chains_human_homo_snps/hg38ToMm10.over.chain.gz.human_homo.bed" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
0chr176611910466119105rs1045587
1chrM50855086rs9783068
2chrM50945095rs9701099
3chr4156244135156244136rs267598747
4chr4156239438156239439rs267598748
5chr4156225156156225157rs267598759
6chr4156199912156199913rs786201005
7chr4156199827156199828rs1921
8chr4156199739156199740rs672601345
9chr4156199696156199697rs672601312
10chr4156197369156197370rs115173026
11chr4156197365156197366rs1057523287
12chr4156197347156197348rs201073369
13chr4156195516156195517rs115704555
14chr4156195480156195481rs756623659
15chr4156195445156195446rs6657048
16chr4156195392156195393rs879253787
17chr4156179593156179594rs544749044
18chr4156179320156179321rs191270495
19chr4156179311156179312rs536085218
20chr4156179276156179277rs200607541
21chr4156179245156179246rs113789806
22chr4156178902156178903rs587777299
23chr4156178901156178902rs150359724
24chr4156178836156178837rs138031468
25chr4156178640156178641rs2799066
26chr4156178454156178455rs879253788
27chr4156178405156178406rs2710876
28chr4156177431156177432rs116586548
29chr4156177391156177392rs147346337
...............
280826chr82233365322333654rs207482105
280827chr82233366722333668rs207482106
280828chr82233374222333743rs207482107
280829chr82233374722333748rs207482108
280830chr82233379822333799rs207482109
280831chr82233443922334440rs207482111
280832chr82233445822334459rs207482112
280833chr82233459022334591rs207482113
280834chr82233469922334700rs207482114
280835chr82233484222334843rs207482115
280836chr82233500622335007rs207482116
280837chr82233637622336377rs207482117
280838chr82233943722339438rs207482131
280839chr82233946922339470rs207482132
280840chr82234507322345074rs207482133
280841chr82234795322347954rs207482136
280842chr82234986622349867rs207482155
280843chr82234989522349896rs207482156
280844chr82235172522351726rs207482159
280845chr82236023122360232rs207482168
280846chr82236025822360259rs207482169
280847chr82236027322360274rs207482170
280848chr82236039922360400rs207482171
280849chr82236041922360420rs207482172
280850chr82236047922360480rs207482173
280851chr82236099322360994rs207482175
280852chr82236108822361089rs207482176
280853chr82236121922361220rs207482177
280854chr82236124022361241rs207482178
280855chr82237050822370509rs207482182
\n", "

280856 rows × 4 columns

\n", "
" ], "text/plain": [ " 0 1 2 3\n", "0 chr17 66119104 66119105 rs1045587\n", "1 chrM 5085 5086 rs9783068\n", "2 chrM 5094 5095 rs9701099\n", "3 chr4 156244135 156244136 rs267598747\n", "4 chr4 156239438 156239439 rs267598748\n", "5 chr4 156225156 156225157 rs267598759\n", "6 chr4 156199912 156199913 rs786201005\n", "7 chr4 156199827 156199828 rs1921\n", "8 chr4 156199739 156199740 rs672601345\n", "9 chr4 156199696 156199697 rs672601312\n", "10 chr4 156197369 156197370 rs115173026\n", "11 chr4 156197365 156197366 rs1057523287\n", "12 chr4 156197347 156197348 rs201073369\n", "13 chr4 156195516 156195517 rs115704555\n", "14 chr4 156195480 156195481 rs756623659\n", "15 chr4 156195445 156195446 rs6657048\n", "16 chr4 156195392 156195393 rs879253787\n", "17 chr4 156179593 156179594 rs544749044\n", "18 chr4 156179320 156179321 rs191270495\n", "19 chr4 156179311 156179312 rs536085218\n", "20 chr4 156179276 156179277 rs200607541\n", "21 chr4 156179245 156179246 rs113789806\n", "22 chr4 156178902 156178903 rs587777299\n", "23 chr4 156178901 156178902 rs150359724\n", "24 chr4 156178836 156178837 rs138031468\n", "25 chr4 156178640 156178641 rs2799066\n", "26 chr4 156178454 156178455 rs879253788\n", "27 chr4 156178405 156178406 rs2710876\n", "28 chr4 156177431 156177432 rs116586548\n", "29 chr4 156177391 156177392 rs147346337\n", "... ... ... ... ...\n", "280826 chr8 22333653 22333654 rs207482105\n", "280827 chr8 22333667 22333668 rs207482106\n", "280828 chr8 22333742 22333743 rs207482107\n", "280829 chr8 22333747 22333748 rs207482108\n", "280830 chr8 22333798 22333799 rs207482109\n", "280831 chr8 22334439 22334440 rs207482111\n", "280832 chr8 22334458 22334459 rs207482112\n", "280833 chr8 22334590 22334591 rs207482113\n", "280834 chr8 22334699 22334700 rs207482114\n", "280835 chr8 22334842 22334843 rs207482115\n", "280836 chr8 22335006 22335007 rs207482116\n", "280837 chr8 22336376 22336377 rs207482117\n", "280838 chr8 22339437 22339438 rs207482131\n", "280839 chr8 22339469 22339470 rs207482132\n", "280840 chr8 22345073 22345074 rs207482133\n", "280841 chr8 22347953 22347954 rs207482136\n", "280842 chr8 22349866 22349867 rs207482155\n", "280843 chr8 22349895 22349896 rs207482156\n", "280844 chr8 22351725 22351726 rs207482159\n", "280845 chr8 22360231 22360232 rs207482168\n", "280846 chr8 22360258 22360259 rs207482169\n", "280847 chr8 22360273 22360274 rs207482170\n", "280848 chr8 22360399 22360400 rs207482171\n", "280849 chr8 22360419 22360420 rs207482172\n", "280850 chr8 22360479 22360480 rs207482173\n", "280851 chr8 22360993 22360994 rs207482175\n", "280852 chr8 22361088 22361089 rs207482176\n", "280853 chr8 22361219 22361220 rs207482177\n", "280854 chr8 22361240 22361241 rs207482178\n", "280855 chr8 22370508 22370509 rs207482182\n", "\n", "[280856 rows x 4 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.read_csv('/cellar/users/btsui/Data/ucsc_chains_human_homo_snps/hg38ToMm10.over.chain.gz.human_homo.bed',sep='\\t',header=None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }