{ "metadata": { "name": "assembly" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "# Change what's inside the quotes into your MBL STAMPS server username, or something else unique\n", "# reminder! hit shift-ENTER to execute cell & move onto next cell\n", "username=\"CHANGEME\"" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "cd /mnt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/mnt\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "mkdir -p $username" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mkdir: cannot create directory `CHANGEME': File exists\r\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "cd $username" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/mnt/CHANGEME\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# get a small E. coli data set\n", "!curl -O http://public.ged.msu.edu.s3.amazonaws.com/ecoli-500k.fq.gz" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " % Total % Received % Xferd Average Speed Time Time Time Current\r\n", " Dload Upload Total Spent Left Speed\r\n", "\r", " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\r", " 9 40.8M 9 3926k 0 0 17.1M 0 0:00:02 --:--:-- 0:00:02 17.4M" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\r", "100 40.8M 100 40.8M 0 0 37.7M 0 0:00:01 0:00:01 --:--:-- 37.9M\r\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "!velveth k.31 31 -short -fastq.gz ecoli-500k.fq.gz" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0.000000] Reading FastQ file ecoli-500k.fq.gz;\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[4.069341] 500000 sequences found\r\n", "[4.069379] Done\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[4.268264] Reading read set file k.31/Sequences;\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[4.483652] 500000 sequences found\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[5.476888] Done\r\n", "[5.476934] 500000 sequences in total.\r\n", "[5.483106] Writing into roadmap file k.31/Roadmaps...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[6.097592] Inputting sequences...\r\n", "[6.112510] Inputting sequence 0 / 500000\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[55.859540] === Sequences loaded in 49.761966 s\r\n", "[55.859733] Done inputting sequences\r\n", "[55.859753] Destroying splay table\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[56.057223] Splay table destroyed\r\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "!velvetg k.31 -exp_cov auto" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0.000001] Reading roadmap file k.31/Roadmaps\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[1.616374] 500000 roadmaps read\r\n", "[1.619179] Creating insertion markers\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[1.915542] Ordering insertion markers\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[2.197360] Counting preNodes\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[2.356534] 963682 preNodes counted, creating them now\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[5.541818] Adjusting marker info...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[5.698421] Connecting preNodes\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[6.496145] Cleaning up memory\r\n", "[6.503573] Done creating preGraph\r\n", "[6.503613] Concatenation...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[7.154593] Renumbering preNodes\r\n", "[7.154662] Initial preNode count 963682\r\n", "[7.187705] Destroyed 847030 preNodes\r\n", "[7.187769] Concatenation over!\r\n", "[7.187784] Clipping short tips off preGraph\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[7.284335] Concatenation...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[7.424245] Renumbering preNodes\r\n", "[7.424489] Initial preNode count 116652\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[7.500170] Destroyed 40613 preNodes\r\n", "[7.500420] Concatenation over!\r\n", "[7.500438] 20554 tips cut off\r\n", "[7.500451] 76039 nodes left\r\n", "[7.500533] Writing into pregraph file k.31/PreGraph...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[8.419802] Reading read set file k.31/Sequences;\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[8.631457] 500000 sequences found\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[9.613768] Done\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[10.220623] Reading pre-graph file k.31/PreGraph\r\n", "[10.220870] Graph has 76039 nodes and 500000 sequences\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[10.683820] Scanning pre-graph file k.31/PreGraph for k-mers\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[10.925013] 5289776 kmers found\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[11.765411] Sorting kmer occurence table ... \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[15.942495] Sorting done.\r\n", "[15.942547] Computing acceleration table... \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[16.272995] Computing offsets... \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[16.317274] Ghost Threading through reads 0 / 500000\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[26.043235] === Ghost-Threaded in 9.726299 s\r\n", "[26.043331] Threading through reads 0 / 500000\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[36.589290] === Threaded in 10.545980 s\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[36.758596] Correcting graph with cutoff 0.200000\r\n", "[36.764111] Determining eligible starting points\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[36.951321] Done listing starting nodes\r\n", "[36.951381] Initializing todo lists\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[36.980292] Done with initilization\r\n", "[36.980555] Activating arc lookup table\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[37.105083] Done activating arc lookup table\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[37.314470] 10000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[37.580561] 20000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[37.930400] 30000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[38.177996] 40000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[38.416655] 50000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[38.705646] 60000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[38.846620] 70000 / 76039 nodes visited\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[38.948188] Concatenation...\r\n", "[38.952225] Renumbering nodes\r\n", "[38.952287] Initial node count 76039\r\n", "[38.954147] Removed 60123 null nodes\r\n", "[38.954215] Concatenation over!\r\n", "[38.954229] Clipping short tips off graph, drastic\r\n", "[38.961144] Concatenation...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[39.004904] Renumbering nodes\r\n", "[39.004981] Initial node count 15916\r\n", "[39.006151] Removed 4252 null nodes\r\n", "[39.006187] Concatenation over!\r\n", "[39.006216] 11664 nodes left\r\n", "[39.006314] Writing into graph file k.31/Graph2...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[40.398103] Measuring median coverage depth...\r\n", "[40.404214] Median coverage depth = 6.684325\r\n", "[40.404405] Removing contigs with coverage < 3.342162...\r\n", "[40.409395] Concatenation...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[40.503582] Renumbering nodes\r\n", "[40.503727] Initial node count 11664\r\n", "[40.504116] Removed 8967 null nodes\r\n", "[40.504141] Concatenation over!\r\n", "[40.504270] Concatenation...\r\n", "[40.504477] Renumbering nodes\r\n", "[40.504496] Initial node count 2697\r\n", "[40.504514] Removed 0 null nodes\r\n", "[40.504527] Concatenation over!\r\n", "[40.504540] Clipping short tips off graph, drastic\r\n", "[40.505090] Concatenation...\r\n", "[40.505564] Renumbering nodes\r\n", "[40.505591] Initial node count 2697\r\n", "[40.505717] Removed 119 null nodes\r\n", "[40.505736] Concatenation over!\r\n", "[40.505749] 2578 nodes left\r\n", "[40.505763] Read coherency...\r\n", "[40.505863] Identifying unique nodes\r\n", "[40.505982] Done, 1829 unique nodes counted\r\n", "[40.506005] Trimming read tips\r\n", "[40.506168] Renumbering nodes\r\n", "[40.506187] Initial node count 2578\r\n", "[40.506205] Removed 0 null nodes\r\n", "[40.506219] Confronted to 0 multiple hits and 0 null over 0\r\n", "[40.506232] Read coherency over!\r\n", "[40.508914] Starting pebble resolution...\r\n", "[40.513490] Computing read to node mapping array sizes\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[40.540875] Computing read to node mappings\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[40.678131] Estimating library insert lengths...\r\n", "[40.682042] Done\r\n", "[40.682100] Computing direct node to node mappings\r\n", "[40.703919] Scaffolding node 0\r\n", "[40.704882] === Nodes Scaffolded in 0.022765 s\r\n", "[40.712154] Preparing to correct graph with cutoff 0.200000\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[40.736251] Cleaning memory\r\n", "[40.736308] Deactivating local correction settings\r\n", "[40.736367] Pebble done.\r\n", "[40.736386] Concatenation...\r\n", "[40.739241] Renumbering nodes\r\n", "[40.739270] Initial node count 2578\r\n", "[40.739402] Removed 251 null nodes\r\n", "[40.739450] Concatenation over!\r\n", "[40.739468] Removing reference contigs with coverage < 3.342162...\r\n", "[40.739618] Concatenation...\r\n", "[40.739737] Renumbering nodes\r\n", "[40.739755] Initial node count 2327\r\n", "[40.739773] Removed 0 null nodes\r\n", "[40.739813] Concatenation over!\r\n", "[40.744302] Writing contigs into k.31/contigs.fa...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[41.606408] Writing into stats file k.31/stats.txt...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[41.683751] Writing into graph file k.31/LastGraph...\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[42.941745] Estimated Coverage = 6.684325\r\n", "[42.941901] Estimated Coverage cutoff = 3.342162\r\n", "Final graph has 2327 nodes and n50 of 4865, max 24714, total 4451317, using 490991/500000 reads\r\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "!head k.31/contigs.fa" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ ">NODE_8_length_8205_cov_6.415600\r\n", "GTCGCCTTCTACGGTGATCAGCGACTGTTCGGCTTCAACTTTGTCGCCCACTTTGACCAG\r\n", "GATCTCGGTGATTTCAACTTCATCAGCCCCGATGTCCGGTACTTTGATTTCGATAGCCAT\r\n", "TATTCTTTTACCTCTTACGCCAGACGCGGGTTAACTTTATCTGCATCGATGTTGAATTTG\r\n", "GCGATTGCGTCAGCAACCACTTTCTTATCGATTTCGCCACGTTTAGCCAGTTCGCCCAGC\r\n", "GCCGCAACCACGACATAAGAAGCATCAACTTCGAAGTGGTGACGCAGGTTCTCACGGCTG\r\n", "TCGGGACGGCCGAAGCCATCAGTACCCAGTACGCGGTAGTCGTCAGCCGGTACGTAAGTA\r\n", "CGGACCTGCTCAGCGAACAGTTTCATATAGTCGGTAGATGCCACTGCCGGAGCGTCGTTC\r\n", "ATCACCTGAGCGATATACGGAACGCGCGGAGTTTCCAGCGGGTGCAGCATGTTCCAGCGT\r\n", "TCACAATCCTGACCATCACGCGCCAGCTCGGTGAAGGAGGTCACGCTATAAACGTCAGAA\r\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "import screed\n", "contig_lengths = [ len(record.sequence) for record in screed.open('k.31/contigs.fa') ]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "hist(contig_lengths, bins=20);" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nfWzM+Hcxzad3JMx/PYSPRqNqaWlRUVGRmpubk+2ORCKqr6+X0+lUbW2tjDHJ/0W99dZb2rJli26/\n/XY9+OCDs6KvampqtGTJkhvmZbLtkUhETU1N+sxnPqNvfetbed0ntr6Q7AM05npfrFixQpWVlZKk\nZcuWafXq1YrFYvPy2LhZX0gze2zMeEDMl3ckHA6H6urq1NjYqOeff17SjW13u92KRqOSpn6RFRUV\nybIul0uRSETDw8Navnx5cv5s7qtMtj0ajcrj8UiSli5dqnPnzum9997LVVMyYu/evaqurlZHR4cS\niYSkqXbNl74YHh7WwMCA/H7/vD82rvXFtYE8M3lszHhAzBd//vOf9cYbb2jXrl36/ve/r7Nnz05r\nWK/tS++mUz7fZKLt1+YbY27Y3mzrl9bWVp06dUq9vb3629/+pp6eHkn2dszFvkgkEtqyZYuefvpp\nLVy4cF4fGx/ti89+9rMzfmzMeED4fD4NDQ0lPw8MDKi6unoGa5Qdd9xxhySpoqJCDzzwgF544QX5\nfD7F43FJUw+WfD6fJCkQCGhwcDBZdmhoSD6fT6tWrdK5c+eS8wcHB2dtX2Wi7df+h/XRMhcuXFBJ\nSYmKiopy1ZS0LV++XA6HQ4sXL9a2bdt06NAhSfOjL65cuaLNmzdr69atamhokDR/jw1bX8z0sTHj\nATEf3pG4fPly8tLw/Pnz6u3tVX19vQKBgEKhkCYmJhQKhZIne7/fr97eXo2MjCgcDqugoEDFxcWS\npi65Dx48qLGxMR06dGjW9lUm2x4IBPTcc8/p0qVL+sUvfjHrQvPMmTOSpA8++EAHDhzQl7/8ZUlz\nvy+MMWppadGaNWu0ffv25Pz5eGzcrC9m/Nj4hA/ZsyocDhu3223uvvtu09nZOdPVybi///3vZt26\ndWbdunWmrq7OPPvss8YYYy5evGgeeOABs3LlStPQ0GASiUSyzDPPPGPuvvtuU1FRYY4dO5acPzAw\nYLxerykrKzM//vGPc96WVDz88MPmjjvuMIWFhaa0tNSEQqGMtv399983jzzyiFm5cqWpra01Z86c\nyWn7puNaX9x2222mtLTUPPvss2br1q1m7dq15t577zU7duy4YbTbXO6L48ePG4fDYdatW2cqKytN\nZWWlOXLkyLw8Nmx9cfjw4Rk/NvLqb1IDAPLHjN9iAgDkJwICAGBFQAAArAgIAIAVAQEAsCIgAABW\n/w+DkAvGZmr4IwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Try running with several different k.\n", "\n", "How does bigger (or smaller) k affect things? Note, k must be odd." ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 } ], "metadata": {} } ] }