Ino de Bruijn Compare kraken kmer purity against nucmer purity  almost 10 years ago

Commit id: 1687da3740e4f2551e70f72c690932938e60641c

deletions | additions      

       

{  "metadata": {  "name": "",  "signature": "sha256:8180f95c83656d8cb3be7b1cd8732d3d4cba2b7bff6b492c07494694b2ca889a" "sha256:10f14b9bf6562047d87d9e2be9792d99fc9f392b424d7323a54a2e12fa4ae198"  },  "nbformat": 3,  "nbformat_minor": 0, 

"language": "python",  "metadata": {},  "outputs": [],  "prompt_number": 214 2  },  {  "cell_type": "code", 

],  "metadata": {},  "output_type": "pyout",  "prompt_number": 215, 3,  "text": [  " tax_id parent_tax_id rank embl_code division_id \\\n",  "0 1 1 no rank 8 \n", 

]  }  ],  "prompt_number": 215 3  },  {  "cell_type": "markdown", 

{  "metadata": {},  "output_type": "pyout",  "prompt_number": 91, 4,  "text": [  "array(['no rank', 'superkingdom', 'genus', 'species', 'order', 'family',\n",  " 'subspecies', 'subfamily', 'tribe', 'phylum', 'class', 'forma',\n", 

]  }  ],  "prompt_number": 91 4  },  {  "cell_type": "markdown", 

"kraken = pd.read_csv(\"/media/milou/glob/projects/masmvali-partdeux/reassembly-filtered-reads/Sample_1ng_even/kraken/ma-contigs-velvetnoscaf31-kraken.tsv\", sep=\"\\t\",\n",  " true_values=[\"C\"], false_values=[\"U\"],\n",  " names=[\"classified\",\"seq_id\",\"tax_id\",\"length\",\"lca\"],\n",  " converters={\"lca\":list_it})" converters={\"lca\":list_it}).sort(\"seq_id\").reset_index().set_index(\"seq_id\")"  ],  "language": "python",  "metadata": {},  "outputs": [],  "prompt_number": 152 33  },  {  "cell_type": "code", 

" \n",  " \n",  " \n",  " index\n",  " classified\n",  " seq_id\n",  " tax_id\n",  " length\n",  " lca\n",  " \n",  " \n",  " seq_id\n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " 0 \n", NODE_100002_length_1265_cov_13.065613\n",  " 65222\n",  " True\n",  " NODE_1_length_4050_cov_8.365432\n", 380749\n",  " 395495\n", 1295\n",  " 4080\n",  " [(395495, 4050)]\n", [(380749, 1265)]\n",  " \n",  " \n",  " 2 \n", NODE_100003_length_914_cov_11.903720\n",  " 65223\n",  " True\n",  " NODE_3_length_532_cov_4.377820\n", 1132507\n",  " 436114\n", 944\n",  " 562\n",  " [(436114, 532)]\n", [(1132507, 914)]\n",  " \n",  " \n",  " 9 \n", NODE_100006_length_2564_cov_10.472309\n",  " 65226\n",  " True\n",  " NODE_13_length_1513_cov_13.944481\n", 243090\n",  " 521460\n", 2594\n",  " 1543\n",  " [(521460, 1513)]\n", [(243090, 2564)]\n",  " \n",  " \n",  " 10\n", NODE_100007_length_725_cov_8.630344\n",  " 65227\n",  " True\n",  " NODE_14_length_1118_cov_24.495527\n", 243090\n",  " 351627\n", 755\n",  " 1148\n",  " [(351627, 1118)]\n", [(243090, 725)]\n",  " \n",  " \n",  " 15\n", NODE_100008_length_3591_cov_30.379004\n",  " 65228\n",  " True\n",  " NODE_23_length_777_cov_7.725869\n", 295405\n",  " 395495\n", 3621\n",  " 807\n",  " [(395495, 777)]\n", [(295405, 3591)]\n",  " \n",  " \n",  "\n", 

],  "metadata": {},  "output_type": "pyout",  "prompt_number": 266, 34,  "text": [  " index  classifiedseq_id  tax_id length \\\n", "0 "seq_id \n",  "NODE_100002_length_1265_cov_13.065613 65222  True NODE_1_length_4050_cov_8.365432 395495 4080 380749 1295  \n", "2 "NODE_100003_length_914_cov_11.903720 65223  True NODE_3_length_532_cov_4.377820 436114 562 1132507 944  \n", "9 "NODE_100006_length_2564_cov_10.472309 65226  True NODE_13_length_1513_cov_13.944481 521460 1543 243090 2594  \n", "10 "NODE_100007_length_725_cov_8.630344 65227  True NODE_14_length_1118_cov_24.495527 351627 1148 243090 755  \n", "15 "NODE_100008_length_3591_cov_30.379004 65228  True NODE_23_length_777_cov_7.725869 395495 807 295405 3621  \n", "\n", " lca \n", "0 [(395495, 4050)] "seq_id \n",  "NODE_100002_length_1265_cov_13.065613 [(380749, 1265)]  \n", "2 [(436114, 532)] "NODE_100003_length_914_cov_11.903720 [(1132507, 914)]  \n", "9 [(521460, 1513)] "NODE_100006_length_2564_cov_10.472309 [(243090, 2564)]  \n", "10 [(351627, 1118)] "NODE_100007_length_725_cov_8.630344 [(243090, 725)]  \n", "15 [(395495, 777)] "NODE_100008_length_3591_cov_30.379004 [(295405, 3591)]  \n", "\n",  "[5 rows x 5 columns]"  ]  }  ],  "prompt_number": 266 34  },  {  "cell_type": "markdown", 

{  "metadata": {},  "output_type": "pyout",  "prompt_number": 23, 35,  "text": [  "True 54467\n",  "dtype: int64"  ]  }  ],  "prompt_number": 23 35  },  {  "cell_type": "markdown", 

"output_type": "stream",  "stream": "stdout",  "text": [  "CPU times: user 27.3 26.7  s, sys: 16 128  ms, total: 27.4 26.8  s\n", "Wall time: 27.5 26.9  s\n" ]  },  { 

" 126740\n",  " \n",  " \n",  " \n",  " seq_id\n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " 0 \n", NODE_100002_length_1265_cov_13.065613\n",  " 0\n",  " 0\n",  " 0\n", 

" ...\n",  " \n",  " \n",  " 2 \n", NODE_100003_length_914_cov_11.903720\n",  " 0\n",  " 0\n",  " 0\n", 

" ...\n",  " \n",  " \n",  " 9 \n", NODE_100006_length_2564_cov_10.472309\n",  " 0\n",  " 0\n",  " 0\n", 

" ...\n",  " \n",  " \n",  " 10\n", NODE_100007_length_725_cov_8.630344\n",  " 0\n",  " 0\n",  " 0\n", 

" ...\n",  " \n",  " \n",  " 15\n", NODE_100008_length_3591_cov_30.379004\n",  " 0\n",  " 0\n",  " 0\n", 

],  "metadata": {},  "output_type": "pyout",  "prompt_number": 376, 36,  "text": [  " 0 2 816 1091 12242157 2182 2276 2335  \\\n", "0 "seq_id \n",  "NODE_100002_length_1265_cov_13.065613 0  0 0 0 0 \n",  "NODE_100003_length_914_cov_11.903720  0 0 0 0 0 \n", "2 "NODE_100006_length_2564_cov_10.472309 0  0 0 0 0 \n",  "NODE_100007_length_725_cov_8.630344  0 0 0 0 0 \n", "9 "NODE_100008_length_3591_cov_30.379004  0 0 0 0 0 \n",  "\n",  " 2157 2182 2276 2335 31989 \\\n",  "seq_id \n",  "NODE_100002_length_1265_cov_13.065613 0  0 0 0 0 \n", "10 "NODE_100003_length_914_cov_11.903720  0 0 0 0 0 \n",  "NODE_100006_length_2564_cov_10.472309 0  0 0 0 0 \n", "15 "NODE_100007_length_725_cov_8.630344  0 0 0 0 0 \n",  "NODE_100008_length_3591_cov_30.379004 0  0 0 0 0 \n", "\n", "31989  39152 44000 52598 60136 6232268295 100226 103690  \\\n", "0 "seq_id \n",  "NODE_100002_length_1265_cov_13.065613 0  0 0 0 0 \n",  "NODE_100003_length_914_cov_11.903720  0 0 0 0 0 \n", "2 "NODE_100006_length_2564_cov_10.472309  0 0 0 0 0 \n",  "NODE_100007_length_725_cov_8.630344 0  0 0 0 0 \n", "9 "NODE_100008_length_3591_cov_30.379004  0 0 0 0 0 \n",  "\n",  " 68295 100226 103690 123214 126740 \\\n",  "seq_id \n",  "NODE_100002_length_1265_cov_13.065613 0  0 0 0 0 \n", "10 "NODE_100003_length_914_cov_11.903720 0  0 0 0 0 \n",  "NODE_100006_length_2564_cov_10.472309  0 0 0 0 0 \n", "15 "NODE_100007_length_725_cov_8.630344  0 0 0 0 0 \n",  "NODE_100008_length_3591_cov_30.379004 0  0 0 0 0 \n", "\n", "123214 126740  \n", "0 0 0 "seq_id \n",  "NODE_100002_length_1265_cov_13.065613  ... \n", "2 0 0 "NODE_100003_length_914_cov_11.903720  ... \n", "9 0 0 "NODE_100006_length_2564_cov_10.472309  ... \n", "10 0 0 "NODE_100007_length_725_cov_8.630344  ... \n", "15 0 0 "NODE_100008_length_3591_cov_30.379004  ... \n", "\n",  "[5 rows x 73 columns]"  ]  }  ],  "prompt_number": 376 36  },  {  "cell_type": "markdown", 

"language": "python",  "metadata": {},  "outputs": [],  "prompt_number": 381 37  },  {  "cell_type": "code", 

" superkingdom\n",  " correct\n",  " \n",  " \n",  " seq_id\n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " \n",  " 0 \n", NODE_100002_length_1265_cov_13.065613\n",  " 0\n",  " 0\n",  " 0\n", 

" 0\n",  " 0\n",  " 0\n",  " 4050\n", 1265\n",  " \n",  " \n",  " 2 \n", NODE_100003_length_914_cov_11.903720\n",  " 0\n",  " 0\n",  " 0\n", 

" 0\n",  " 0\n",  " 0\n",  " 532\n", 914\n",  " \n",  " \n",  " 9 \n", NODE_100006_length_2564_cov_10.472309\n",  " 0\n",  " 0\n",  " 0\n", 

" 0\n",  " 0\n",  " 0\n",  " 1513\n", 2564\n",  " \n",  " \n",  " 10\n", NODE_100007_length_725_cov_8.630344\n",  " 0\n",  " 0\n",  " 0\n", 

" 0\n",  " 0\n",  " 0\n",  " 1118\n", 725\n",  " \n",  " \n",  " 15\n", NODE_100008_length_3591_cov_30.379004\n",  " 0\n",  " 0\n",  " 0\n", 

" 0\n",  " 0\n",  " 0\n",  " 777\n", 3591\n",  " \n",  " \n",  "\n", 

],  "metadata": {},  "output_type": "pyout",  "prompt_number": 383, 38,  "text": [  " class domain family genusnon-existent order phylum species  \\\n", "0 "seq_id \n",  "NODE_100002_length_1265_cov_13.065613  0 0 0 0 \n",  "NODE_100003_length_914_cov_11.903720  0 0 0 0 \n", "2 "NODE_100006_length_2564_cov_10.472309  0 0 0 0 \n",  "NODE_100007_length_725_cov_8.630344  0 0 0 0 \n", "9 "NODE_100008_length_3591_cov_30.379004  0 0 0 0 \n",  "\n",  " non-existent order phylum species \\\n",  "seq_id \n",  "NODE_100002_length_1265_cov_13.065613  0 0 0 0 \n", "10 "NODE_100003_length_914_cov_11.903720  0 0 0 0 \n",  "NODE_100006_length_2564_cov_10.472309  0 0 0 0 \n", "15 "NODE_100007_length_725_cov_8.630344  0 0 0 0 \n",  "NODE_100008_length_3591_cov_30.379004  0 0 0 0 \n", "\n", " subspecies superkingdom correct \n", "0 "seq_id \n",  "NODE_100002_length_1265_cov_13.065613  0 0 4050 1265  \n", "2 "NODE_100003_length_914_cov_11.903720  0 0 532 914  \n", "9 "NODE_100006_length_2564_cov_10.472309  0 0 1513 2564  \n", "10 "NODE_100007_length_725_cov_8.630344  0 0 1118 725  \n", "15 "NODE_100008_length_3591_cov_30.379004  0 0 777 3591  \n", "\n",  "[5 rows x 11 columns]"  ]  }  ],  "prompt_number": 383 38  },  {  "cell_type": "code", 

"language": "python",  "metadata": {},  "outputs": [],  "prompt_number": 385 39  },  {  "cell_type": "markdown", 

{  "metadata": {},  "output_type": "pyout",  "prompt_number": 386, 40,  "text": [  "0x7f03971afe10>" 0x2a849190>"  ]  },  { 

"output_type": "display_data",  "png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAE8CAYAAAAxL51GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucVWW9x/HP6HgpFYdBU0RziPCW1iSRVmojiuLJQEtB\nKmTsco5yrDxaqXkK0I6ZlaWeU5oXBjuB9wA7gKCyTTNFhzZQiAwkJiaYISCVF3LOH79nudfs2cPe\ns2c9a++91vf9eq3Xuuy9128/c1nPWs/vWc8CERERERERERERERERERERERERERERAW4FNgDLC7x2\nEfAW0BjadinQAawETgptH+b20QFcG9q+C3CH2/44cGDotYnAKjedHdo+GHjCfeZ2YKdelklERCJ2\nLPBBulcWBwDzgWfJVRaHAVns4N0ErAbq3GuLgQ+75bnAKLc8CfiJWx6HHfxx+1wDNLhpDbCne+1O\nYKxb/ilwbpllExGRCDXRvbK4C3g/XSuLS4GLQ++ZDxwNDASeDm0/C7gh9J6j3HI98Be3PB6rCAI3\nuM/Vuffs4LYf7fYhIiIe7VD8Ld2MAdYBy/K27+e2B9YBgwpsf8Ftx82fd8vbgM3AgO3sqxHYhDV/\n5e9LREQ8qe/l+98JfBMYGdpW18N7o9bZmzcPGTKkc82aNb6+i4hIUi0FmvM39vbKYgjWLLUUa4La\nH2gH9sHO8g8IvXd/7IrgBbecvx332rvdcj2Wl/hrgX0d4LZtxHIYwffe323vZs2aNXR2dkYyTZ48\nObJ9VXNMxU1uTMVNbsyo4wIfKHRM7W1lsRyrGAa7aR1wJNZjag6WV9jZvTYUS2yvB7ZguYk6YAIw\n2+1vDtbrCeAM4EG3vADrTdUA9MeuZO7Hri4WAWe6900EZvWyDCIi0kvFKouZwGPAQVhu4Zy818NN\nQyuwnkorgHlYT6fg9UnAzVh319XkktK3YDmKDuAC4BK3fSNwBfAkVuFMxXIVYEn0C91n+rt99Eq/\nfo3U1dWVPE2dOrXk9/br11j8C5Rg7dq1kexHcasvbprKmra4SS5rsZzF+CKvvydv/Uo35WsHjiiw\n/XVy3WDzTXNTvmfJ9aAqy6uvvkLvUiA/xuqyUvYdTQqnublbk2EsFDeZMRU3uTHjihtXcroSOl37\nWzd1dXX0Ml/eC3X0FFdEpNrZ8bF73VBO11kREUkZVRYlycQfMRN/TMVNbkzFTW7MuOKqshARkaKU\ns4icchYiUruUsxARkbKpsihJJv6ICW77THvcNJU1bXGTXFZVFiIiUpRyFpFTzkJEapdyFiIiUjZV\nFiXJxB8xwW2faY+bprKmLW6Sy6rKQkREilLOInLKWYhI7VLOogr0dmj0uIdFFxHpiSqLkmQi2Utu\naPRSpkUlv9f2G40kt7lWS9w0lTVtcZNcVlUWIiJSlHIWkes5Z+EvrvIkIhIN5SxERKRsqixKkklJ\nzGS3uVZL3DSVNW1xk1xWVRYiIlKUchaRU85CRGqXchYiIlI2VRYlyaQkZrLbXKslbprKmra4SS5r\nscriVmADsDy07fvA08BS4F5gz9BrlwIdwErgpND2YW4fHcC1oe27AHe47Y8DB4ZemwisctPZoe2D\ngSfcZ24HdipSBhER6aNiOYtjga3AbcARbttI4EHgLeAqt+0S4DBgBjAcGAQ8AAzFGukXA+e7+Vzg\nOmA+MAk43M3HAacDZwGNwJNYJQPQDhwJbAbuBO52859ildYNBb67chYiIr1Ubs7iESB/LImFWEUB\ndoa/v1seA8wE3gTWAquBo4CBwB5YRQFW8ZzmlkcD093yPcAJbvlkYAGwyU0LgVNcAY7HKgvcZ4N9\niYiIJ33NWXweu1IA2A9YF3ptHXaFkb/9BbcdN3/eLW/DrhwGbGdfjVjlEVRW4X15lPEfoipiJrvN\ntVripqmsaYub5LLW9+GzlwFvYE1Pceh1O0traytNTU0ANDQ00NzcTEtLi3s14+ZRr7s198sL4nX/\nZRbbX7ZX8XuK19v1Yt/f13o2m401XqXLW4n1bDZbVd8nieUN1NL/TyaToa2tDeDt42Uhpdxn0QTc\nRy5nAdAKfAlrNnrNbbvEzYM8xnxgMvAcNoTqoW77eOA44Dz3nilYcrseeBHYG8tbtADnus/cCDyE\n5SleAvbBri4+4mKMKvC9lbMQEemlKO+zGAV8HctRvBbaPgc7yO+M9VgaiuUp1gNbsPxFHTABmB36\nzES3fAaWOAfLV5wENAD9saT6/eTG7j7TvW8iMKuMMoiISC8UqyxmAo8BB2O5hc8D1wO7Y0nn3wE/\nce9dgZ35rwDmYT2cgtPdScDNWHfX1dgVBcAtWI6iA7iA3NXJRuAKrEfUYmAqlqsAuBi40H2mv9uH\nZxn/IaoiZrLbXKslbprKmra4SS5rsZzF+ALbbt3O+690U752ujZjBV4Hxvawr2luyvcsdpUiIiIx\n0dhQkVPOQkRql8aGEhGRsqmyKEkmJTGT3eZaLXHTVNa0xU1yWVVZiIhIUcpZRE45CxGpXcpZiIhI\n2VRZlCSTkpjJbnOtlrhpKmva4ia5rKosRESkKOUsIqechYjULuUsRESkbKosSpJJScxkt7lWS9w0\nlTVtcZNcVlUWIiJSlHIWkVPOQkRql3IWIiJSNlUWJcmkJGay21yrJW6aypq2uEkuqyoLEREpSjmL\nyClnISK1SzkLEREpmyqLkmRSEjPZba7VEjdNZU1b3CSXVZWFiIgUpZxF5JSzEJHapZyFiIiUTZVF\nSTIpiZnsNtdqiZumsqYtbpLLWqyyuBXYACwPbWsEFgKrgAVAQ+i1S4EOYCVwUmj7MLePDuDa0PZd\ngDvc9seBA0OvTXQxVgFnh7YPBp5wn7kd2KlIGUREpI+K5SyOBbYCtwFHuG1XAy+7+cVAf+AS4DBg\nBjAcGAQ8AAzFGukXA+e7+VzgOmA+MAk43M3HAacDZ2EV0pNYJQPQDhwJbAbuBO52858CS4EbCnx3\n5SxERHqp3JzFI8AredtGA9Pd8nTgNLc8BpgJvAmsBVYDRwEDgT2wigKs4jmtwL7uAU5wyydjVy2b\n3LQQOMUV4HisssiPLyIinpSTs9gHa5rCzfdxy/sB60LvW4ddYeRvf8Ftx82fd8vbsCuHAdvZVyNW\nebxVYF8eZfyHqIqYyW5zrZa4aSpr2uImuaz1ffx8J/7acwrF6pXW1laampoAaGhooLm5mZaWFvdq\nxs2jXndr7pcXxOv+yyy2v2yv4vcUr7frxb6/r/VsNhtrvEqXtxLr2Wy2qr5PEssbqKX/n0wmQ1tb\nG8Dbx8tCSrnPogm4j1zOYiV2hFqPNTEtAg7B8hYAV7n5fGAy8Jx7z6Fu+3jgOOA8954pWHK7HngR\n2BvLW7QA57rP3Ag8hOUpXsKuZt4CPuJijCrwvZWzEBHppSjvs5iD9VTCzWeFtp8F7Iz1WBqK5SnW\nA1uw/EUdMAGYXWBfZwAPuuUFWG+qBiyBPhK4HzvSLgLOLBBfREQ8KVZZzAQeAw7GcgvnYFcOI7Eu\nrSPIXUmswM78VwDzsB5OwenuJOBmrLvrauyKAuAWLEfRAVxA7upkI3AF1iNqMTAVy1WA9cC60H2m\nv9uHZxn/IaoiZrLbXKslbprKmra4SS5rsZzF+B62n9jD9ivdlK+dXDNW2OvA2B72Nc1N+Z7FrlJE\nRCQmGhsqcspZiEjt0thQIiJSNlUWJcmkJGay21yrJW6aypq2uEkuqyoLEREpSjmLyClnISK1SzkL\nEREpmyqLkmRSEjPZba7VEjdNZU1b3CSXVZWFiIgUpZxF5JSzEJHapZyFiIiUTZVFSTIpiZnsNtdq\niZumsqYtbpLLqspCRESKUs4icspZiEjtUs5CRETKpsqiJJmUxEx2m2u1xE1TWdMWN8llVWUhIiJF\nKWcROeUsRKR2KWchIiJlU2VRkkxKYia7zbVa4qaprGmLm+SyqrIQEZGilLOInHIWIlK7lLMQEZGy\nqbIoSSYlMZPd5lotcdNU1rTFTXJZ+1JZXAr8AVgOzAB2ARqBhcAqYAHQkPf+DmAlcFJo+zC3jw7g\n2tD2XYA73PbHgQNDr010MVYBZ/ehDCIiUoJycxZNwEPAocDr2EF9LvA+4GXgauBioD9wCXAYVqEM\nBwYBDwBDsQb8xcD5bj4XuA6YD0wCDnfzccDpwFlYhfQkVskAtLvlTXnfUTkLEZFeijpnsQV4E3gn\nUO/mfwZGA9Pde6YDp7nlMcBM95m1wGrgKGAgsAdWUQDcFvpMeF/3ACe45ZOxq5ZNbloIjCqzHCIi\nUoJyK4uNwA+BP2GVRHDQ3gfY4N6zwa0D7AesC31+HXaFkb/9BbcdN3/eLW8DNgMDtrMvjzJ+d181\nMZPd5lotcdNU1rTFTXJZ68v83BDgAqw5ajNwF/C5vPd04q+tpyStra00NTUB0NDQQHNzMy0tLe7V\njJtHve7W3C8viNf9l1lsf9lexe8pXm/Xi31/X+vZbDbWeJUubyXWs9lsVX2fJJY3UEv/P5lMhra2\nNoC3j5eFlJuzGAeMBL7o1icARwMjgOOB9VgT0yLgECxvAXCVm88HJgPPufcc6raPB44DznPvmYIl\nt+uBF4G9sbxFC3Cu+8yNWP7kjrzvqJyFiEgvRZ2zWIlVDu9wOz0RWAHch/VUws1nueU52EF+Z2Aw\nltxejFUqW7D8RR1W6cwOfSbY1xnAg255AdabqgFLoI8E7i+zHCIiUoJyK4ulWDL6KWCZ2/Yz7Mph\nJNaldQS5K4kVwJ1uPg/r4RScCk8Cbsa6yK7GrigAbsFyFB1Yk1dwdbIRuALrEbUYmEr3nlARy/jd\nfdXETHaba7XETVNZ0xY3yWUtN2cB1j326rxtG7GrjEKudFO+duCIAttfB8b2sK9pbhIRkRhobKjI\nKWchIrVLY0OJiEjZVFmUJJOSmMluc62WuGkqa9riJrmsqixERKQo5Swip5yFiNQu5SxERKRsqixK\nkklJzGS3uVZL3DSVNW1xk1xWVRYiIlKUchaRU85CRGqXchYiIlI2VRYlyaQkZrLbXKslbprKmra4\nSS6rKgsRESlKOYvIKWchIrVLOQsRESmbKouSZFISM9ltrtUSN01lTVvcJJdVlYWIiBSlnEXklLMQ\nkdqlnIWIiJRNlUVJMimJmew212qJm6aypi1uksuqykJERIpSziJyylmISO1SzkJERMqmyqIkmZTE\nTHaba7XETVNZ0xY3yWXtS2XRANwNPA2sAI4CGoGFwCpggXtP4FKgA1gJnBTaPgxY7l67NrR9F+AO\nt/1x4MDQaxNdjFXA2X0og4iIlKAvOYvpwMPArUA9sBtwGfAycDVwMdAfuAQ4DJgBDAcGAQ8AQ7EG\n/MXA+W4+F7gOmA9MAg5383HA6cBZWIX0JFbJALS75U153085CxGRXoo6Z7EncCxWUQBsAzYDo7FK\nBDc/zS2PAWYCbwJrgdXYlchAYA+sogC4LfSZ8L7uAU5wyydjVy2b3LQQGFVmOUREpATlVhaDgb8A\n04AlwE3YlcU+wAb3ng1uHWA/YF3o8+uwK4z87S+47bj58245qIwGbGdfHmX87r5qYia7zbVa4qap\nrGmLm+Sy1vfhc0dizUdPAj/GmpvCOvHX1lOS1tZWmpqaAGhoaKC5uZmWlhb3asbNo153a+6XF8Tr\n/ssstr9sr+L3FK+368W+v6/1bDYba7xKl7cS69lstqq+TxLLG6il/59MJkNbWxvA28fLQsrNWewL\n/Ba7wgA4Bktgvwc4HliPNTEtAg4hV5Fc5ebzgcnAc+49h7rt44HjgPPce6Zgye164EVgbyxv0QKc\n6z5zI/AQlgwPU85CRKSXos5ZrMeaiA5y6ycCfwDuw3oq4eaz3PIc7CC/M1bBDMXyFOuBLVj+og6Y\nAMwOfSbY1xnAg255AdabqgFLoI8E7i+zHCIiUoK+dJ39MvALYCnwfuC/sCuHkViX1hHkriRWAHe6\n+Tysh1NwKjwJuBnrIrsau6IAuAXLUXQAF5C7OtkIXIE1fy0GptK9J1TEMn53XzUxk93mWi1x01TW\ntMVNclnLzVmAVRLDC2w/sYf3X+mmfO3AEQW2vw6M7WFf09wkIiIx0NhQkVPOQkRql8aGEhGRsqmy\n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\nTkSuQmCC\n",  "text": [  "0x7f03971b4d90>" 0x1f14de10>"  ]  }  ],  "prompt_number": 386 40  },  {  "cell_type": "code", 

{  "metadata": {},  "output_type": "pyout",  "prompt_number": 387, 41,  "text": [  "0x7f039be5e410>" 0x24fca050>"  ]  },  { 

"output_type": "display_data",  "png": "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\nRERE2vX/CZBsVkakLsUAAAAASUVORK5CYII=\n",  "text": [  "0x7f039be487d0>" 0x21c5b910>"  ]  }  ],  "prompt_number": 387 41  },  {  "cell_type": "markdown", 

"Note to self: check with only pure contigs to see if that is different from impure contigs"  ]  },  {  "cell_type": "markdown",  "metadata": {},  "source": [  "## Compare to nucmer alignment purity"  ]  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "cpurity = pd.read_csv(\"/media/milou/glob/projects/masmvali-partdeux/reassembly-filtered-reads/Sample_1ng_even/metassemble/assemblies/velvet/noscaf/noscaf_31/val/contig-purity.tsv\", \n",  " sep=\"\\t\").sort(\"contig\").reset_index().set_index(\"contig\")"  ],  "language": "python",  "metadata": {},  "outputs": [],  "prompt_number": 42  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "cpurity.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",  "
indexcontig_lengthmax_aln_strainmax_aln_puritycov_meanunamb_dominant_strainunamb_dom_nr_readsunamb_read_level_purityunamb_tot_nr_readsunamb_nr_reads_strainunamb_nr_reads_speciesunamb_nr_reads_genusunamb_nr_reads_familyunamb_nr_reads_orderunamb_nr_reads_classunamb_nr_reads_phylumunamb_nr_reads_superphylumunamb_nr_reads_superkingdomunamb_nr_reads_lifeamb_dominant_strain
contig
NODE_100002_length_1265_cov_13.065613 319595 1295 Hydrogenobaculum_sp_Y04AAS1 1.0000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...
NODE_100003_length_914_cov_11.903720 22443 944 Gemmatimonas_aurantiaca_T-27_DNA 1.0000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...
NODE_100004_length_31_cov_9.096774 199219 61 NaN NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...
NODE_100005_length_352_cov_11.269886 176568 382 Sulfurihydrogenibium_yellowstonense_SS-5 0.9895NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...
NODE_100006_length_2564_cov_10.472309 25076 2594 Bordetella_bronchiseptica_strain_RB50 1.0000NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...
\n",
  "

5 rows \u00d7 33 columns

\n",
  "
"
  ],  "metadata": {},  "output_type": "pyout",  "prompt_number": 43,  "text": [  " index contig_length \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 319595 1295 \n",  "NODE_100003_length_914_cov_11.903720 22443 944 \n",  "NODE_100004_length_31_cov_9.096774 199219 61 \n",  "NODE_100005_length_352_cov_11.269886 176568 382 \n",  "NODE_100006_length_2564_cov_10.472309 25076 2594 \n",  "\n",  " max_aln_strain \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 Hydrogenobaculum_sp_Y04AAS1 \n",  "NODE_100003_length_914_cov_11.903720 Gemmatimonas_aurantiaca_T-27_DNA \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 Sulfurihydrogenibium_yellowstonense_SS-5 \n",  "NODE_100006_length_2564_cov_10.472309 Bordetella_bronchiseptica_strain_RB50 \n",  "\n",  " max_aln_purity cov_mean \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 1.0000 NaN \n",  "NODE_100003_length_914_cov_11.903720 1.0000 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN NaN \n",  "NODE_100005_length_352_cov_11.269886 0.9895 NaN \n",  "NODE_100006_length_2564_cov_10.472309 1.0000 NaN \n",  "\n",  " unamb_dominant_strain \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_dom_nr_reads \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_read_level_purity \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_tot_nr_reads \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_strain \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_species \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_genus \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_family \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_order \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_class \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_phylum \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_superphylum \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_superkingdom \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " unamb_nr_reads_life \\\n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN \n",  "NODE_100003_length_914_cov_11.903720 NaN \n",  "NODE_100004_length_31_cov_9.096774 NaN \n",  "NODE_100005_length_352_cov_11.269886 NaN \n",  "NODE_100006_length_2564_cov_10.472309 NaN \n",  "\n",  " amb_dominant_strain \n",  "contig \n",  "NODE_100002_length_1265_cov_13.065613 NaN ... \n",  "NODE_100003_length_914_cov_11.903720 NaN ... \n",  "NODE_100004_length_31_cov_9.096774 NaN ... \n",  "NODE_100005_length_352_cov_11.269886 NaN ... \n",  "NODE_100006_length_2564_cov_10.472309 NaN ... \n",  "\n",  "[5 rows x 33 columns]"  ]  }  ],  "prompt_number": 43  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "len(cpurity[cpurity.contig_length > 500])"  ],  "language": "python",  "metadata": {},  "outputs": [  {  "metadata": {},  "output_type": "pyout",  "prompt_number": 20,  "text": [  "54467"  ]  }  ],  "prompt_number": 20  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "len(rank_kmer_short)"  ],  "language": "python",  "metadata": {},  "outputs": [  {  "metadata": {},  "output_type": "pyout",  "prompt_number": 18,  "text": [  "54467"  ]  }  ],  "prompt_number": 18  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "rank_kmer_purity = rank_kmer.copy()\n",  "rank_kmer_purity.max_aln_purity = cpurity.max_aln_purity\n",  "pure = rank_kmer_purity.max_aln_purity == 1\n",  "impure = rank_kmer_purity.max_aln_purity < 1"  ],  "language": "python",  "metadata": {},  "outputs": [],  "prompt_number": 51  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "(rank_kmer_purity[pure].sum() / rank_kmer_purity[pure].sum().sum() * 100.0).plot(kind='bar', ylim=[0,100])"  ],  "language": "python",  "metadata": {},  "outputs": [  {  "metadata": {},  "output_type": "pyout",  "prompt_number": 52,  "text": [  ""  ]  },  {  "metadata": {},  "output_type": "display_data",  "png": "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\n",  "text": [  ""  ]  }  ],  "prompt_number": 52  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "(rank_kmer_purity[impure].sum() / rank_kmer_purity[impure].sum().sum() * 100.0).plot(kind='bar', ylim=[0,100])"  ],  "language": "python",  "metadata": {},  "outputs": [  {  "metadata": {},  "output_type": "pyout",  "prompt_number": 53,  "text": [  ""  ]  },  {  "metadata": {},  "output_type": "display_data",  "png": "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\n",  "text": [  ""  ]  }  ],  "prompt_number": 53  },  {  "cell_type": "code",  "collapsed": false,  "input": [  "rank_kmer_purity[(rank_kmer_purity.max_aln_purity == 1) & (rank_kmer_purity.genus > 1)].head(1)"  ],  "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",  "
classdomainfamilygenusnon-existentorderphylumspeciessubspeciessuperkingdomcorrect
seq_id
NODE_10005_length_507_cov_15.684418 0 0 0 300 0 0 0 0 0 0 207
\n",
  "

1 rows \u00d7 11 columns

\n",
  "
"
  ],  "metadata": {},  "output_type": "pyout",  "prompt_number": 61,  "text": [  " class domain family genus \\\n",  "seq_id \n",  "NODE_10005_length_507_cov_15.684418 0 0 0 300 \n",  "\n",  " non-existent order phylum species \\\n",  "seq_id \n",  "NODE_10005_length_507_cov_15.684418 0 0 0 0 \n",  "\n",  " subspecies superkingdom correct \n",  "seq_id \n",  "NODE_10005_length_507_cov_15.684418 0 0 207 \n",  "\n",  "[1 rows x 11 columns]"  ]  }  ],  "prompt_number": 61  },  {  "cell_type": "markdown",  "metadata": {},  "source": [  "Oops. Turns out the kmer LCA of Kraken is not based on the classification of the contig. It is simply the LCA of a kmer in case it is not specific enough to be assigned to a lower rank in the taxonomy. The way to fix this would be to get the full taxonomic line for each genome in the reference and write some functions that give the LCA of two taxonomy ids."  ]  },  {  "cell_type": "code",  "collapsed": false,