<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[BOL: Related items]]></title>
	<link>https://bioinformaticsonline.com/related/88?offset=360</link>
	<atom:link href="https://bioinformaticsonline.com/related/88?offset=360" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/37590/parallel-processing-with-perl</guid>
	<pubDate>Sat, 25 Aug 2018 11:32:40 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/37590/parallel-processing-with-perl</link>
	<title><![CDATA[Parallel Processing with Perl !]]></title>
	<description><![CDATA[<p>Here is a small tutorial on how to make best use of multiple processors for bioinformatics analysis. One best way is using perl threads and forks. Knowing how these threads and forks work is very important before implementing them. Getting to know how these work would be really useful before reading this tutorial.</p><p>Many times in bioinformatics we need to deal with huge datasets which&nbsp; are more than 100GB size. The traditional way to analysis a file is using the while loop</p><p>while (FILE){</p><p>Do something;</p><p>}</p><p>This is very slow(since we are using only one processor) and if we have 500 million lines in the dataset it takes more than a day to iterate through the whole dataset. So how do we make best use of all our processors and get the work done quickly?</p><p>Here is a very simple and efficient technique with perl which i have been using. I am&nbsp; more inclined towards using perl fork than perl threads.</p><p>One of the oldest way to fork is</p><blockquote><p>my $fork = fork();<br />if($fork){&nbsp;&nbsp;&nbsp;<br />push (@childs,$fork);&nbsp;<br />}<br />elseif($fork==0){<br /><strong>your code here;</strong><br />exit(0);<br />}<br />else{die &ldquo;Couldnt fork : $!&rdquo;;}</p><p>## wait for the child process to finish<br />foreach(@childs){<br />my $tmp=waitid($_,0);<br />}</p></blockquote><p>what a fork does is it creates a child process and takes the variables and code with it to analyze it separately (detached from the parent process) and thus a separate process is created( which usually runs on a separate processor). Thats it!! One big disadvantage of forking is its very difficult to share variables among the different processes. I will show you how to do it easily but still it has its own drawbacks.</p><blockquote><p>Okie, now if you really do not want to use fork in your code, that&rsquo;s okie too..There are many useful modules which do it for you very efficiently. One really useful module is Parallel::ForkManager. You can use Parallel::ForkManager to manage the number of forks you want to generate (number of processors you want to use).</p><p><strong>Simple usage:</strong><br />use Parallel::ForkManager;<br />my $max_processors=8;<br />my $fork= new Parallel::ForkManager($max_processors);<br />foreach (@dna) {<br />$fork-&gt;start and next; # do the fork<br /><strong>you code here;</strong><br />$fork-&gt;finish; # do the exit in the child process<br />}<br />$pm-&gt;wait_all_children;</p></blockquote><p>so you will be generating 8 forks which do the same thing for your each element of array. when one child finishes, Parallel::ForkManager generates a new one and thus you will be using all your processors to analyze the data. Now, if you have generated 8 child processes and want to write the data to one file. You need to lock the file to do this, because you will have problems with the buffering. You can lock the file using flock command.</p><blockquote><p>open (my $QUAL, &ldquo;myfile.txt&rdquo;);<br />flock $QUAL, LOCK_EX or die &ldquo;cant lock file $!&rdquo;;<br />print $QUAL &ldquo;$output&rdquo;;<br />flock $QUAL, LOCK_UN or die &ldquo;$!&rdquo;;<br />close $QUAL;</p></blockquote><p>I would not suggest using flock when dealing with multiple processes because it will decrease the processing efficiency( each child process must wait for the lock to be released by the other child process). Instead, I would suggest each fork writing to a separate file and after the processing just concatenating them.</p><p><strong>Putting it all together, If you have 100GB data you can do this</strong></p><blockquote><p><strong>step 1</strong>&nbsp;: split the dataset equally according to number of processors you have. this may take a few hours(about 2-3 hrs for 100GB file)<br />You can use unix &ldquo;split&rdquo; command for this<br />for example:<br />my $number_split=int($number_of_entries_in_your_dataset/$max_processors);<br />my $split_Files=`split -l $number_split &ldquo;your_file.fasta&rdquo; &ldquo;file_name&rdquo;`;</p><p><strong>step2</strong>: open you directory comtaining you split files and start Parallel::ForkManager.<br /><strong>For example:</strong><br />opendir(DIRECTORY, $split_files_directory) or die $!; ### open the directory<br />my $fork= new Parallel::ForkManager($max_processors);<br />while (my $file = readdir(DIRECTORY)) { ### read the directory<br />if($file=~/^\./){next;}<br />print $file,&rdquo;\n&rdquo;;<br />########## Start fork ##########<br />my $pid= $super_fork-&gt;start and next;<br /><strong>Whatever you want to do with the split file ;</strong><br /><strong>analyze my piece of $file;</strong><br />######### end fork ###############<br />$super_fork-&gt;finish;<br />}<br />$super_fork-&gt;wait_all_children;</p></blockquote><p>So basically each processor will be active with its piece of data (split file) and thus you have created 8 processes at one time which run without interfering with the other process. I again will not suggest writing output from each child process to one file(for reasons above). Write output from each fork to a separate file and finally concatenate them. Thats it, you have just increased your program speed by 8 times!! Isnt it easy?</p><p><strong>Note:</strong><br />You may worry about concatenation of the output each child generates, since it does take some time(remember 100GB). I think now you can use a mysql database LOAD DATA LOCAL INFILE command to load all the files into a single table(Should take about 3hrs for 100Gb dataset) and then export the whole table into one file. This should be faster than just concatenating them using &ldquo;cat&rdquo; command.(correct me if I am wrong)</p><p>Or much simpler way is to use pipes</p><p>cat output_dir/* | my_pipe or my_pipe &lt;(file1) final_file;</p><p>Thats it guys!! Enjoy programming and please do comment. I am not a computer scientist so forgive me for any mistakes and if any please report them. Thank you.</p>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/40736/list-of-perl-special-symbols</guid>
	<pubDate>Tue, 28 Jan 2020 06:44:27 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/40736/list-of-perl-special-symbols</link>
	<title><![CDATA[List of perl special symbols !]]></title>
	<description><![CDATA[<p><span>There are some variables which have a predefined and special meaning in Perl. They are the variables that use punctuation characters after the usual variable indicator ($, @, or %), such as $_ ( explained below ).</span></p><p>Special Symbols &ndash; File handlers</p><blockquote><p>$@ Perl error string</p><p>$! Error number from C, &lsquo;errno&rsquo;</p><p>$^E Extended OS error info, such as &lsquo;CDROM tray not closed&rsquo;</p><p>$? Exit status from last process</p><p>$AGRV &ndash; name of current file</p><p>@ARGV &ndash; command line arguments</p><p>$ARGV &ndash; special file handle for command line filenames</p><p>$. &ndash; current line number</p><p>$/ - input line delimiter</p><p>$\ - output line delimiter</p><p>$% - current page number</p><p>$&amp;/${^MATCH} &ndash; last successful matching string</p><p>$`/${^PREMATCH} &ndash; the string preceding the last matching string</p><p>$&rsquo;/${^POSTMATCH} &ndash; the string following the last matching string</p><p>$1, $2, &hellip; - matching groups in the parentheses in pattern</p></blockquote><p>More at&nbsp;<a href="https://www.tutorialspoint.com/perl/perl_special_variables.htm">https://www.tutorialspoint.com/perl/perl_special_variables.htm</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/2727/download-mutliple-fasta-file-from-ncbi-in-one-go</guid>
	<pubDate>Wed, 21 Aug 2013 08:13:30 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/2727/download-mutliple-fasta-file-from-ncbi-in-one-go</link>
	<title><![CDATA[Download mutliple fasta file from NCBI in one GO!!]]></title>
	<description><![CDATA[<p>if you have less time, then use three ways mentioned in bookmark link to extract/download all fasta sequences in single click given that you already have a list of GIs or accession IDs .</p>
<p>Alternatively, use one liner perl script:</p>
<p>perl -ne 'if(/^&gt;(\S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' GIs.txt &gt;sequence.fasta</p>
<p>where GIs.txt contains&nbsp;a list of GIs or accession IDs.</p>
<p>(from :<a href="http://edwards.sdsu.edu/labsite/index.php/robert?start=5">http://edwards.sdsu.edu/labsite/index.php/robert?start=5</a>)</p><p>Address of the bookmark: <a href="http://edwards.sdsu.edu/labsite/index.php/robert/380-ncbi-sequence-or-fasta-batch-download-using-entrez" rel="nofollow">http://edwards.sdsu.edu/labsite/index.php/robert/380-ncbi-sequence-or-fasta-batch-download-using-entrez</a></p>]]></description>
	<dc:creator>Rahul Agarwal</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/pages/view/33842/awesome-perl-frameworks-libraries-and-software-part-5</guid>
	<pubDate>Fri, 07 Jul 2017 04:12:47 -0500</pubDate>
	<link>https://bioinformaticsonline.com/pages/view/33842/awesome-perl-frameworks-libraries-and-software-part-5</link>
	<title><![CDATA[Awesome perl frameworks, libraries and software - PART 5]]></title>
	<description><![CDATA[<ul>
<li><a href="https://github.com/robelix/sub2srt">robelix/sub2srt</a>&nbsp;- subtitle converter</li>
<li><a href="https://github.com/reyjrar/graphite-scripts">reyjrar/graphite-scripts</a>&nbsp;- A Collections of Scripts for Working with Graphite</li>
<li><a href="https://github.com/regilero/check_nginx_status">regilero/check_nginx_status</a>&nbsp;- Nagios check for nginx status report</li>
<li><a href="https://github.com/omniti-labs/resmon">omniti-labs/resmon</a>&nbsp;- resmon</li>
<li><a href="https://github.com/motemen/App-htmlcat">motemen/App-htmlcat</a>&nbsp;- redirect stdin to web browser</li>
<li><a href="https://github.com/moose/Moo">moose/Moo</a>&nbsp;- Minimalist Object Orientation (with Moose compatibility)</li>
<li><a href="https://github.com/miyagawa/fastpass">miyagawa/fastpass</a>&nbsp;- Tiny, XS free, standalone and preforking FastCGI daemon for PSGI</li>
<li><a href="https://github.com/miyagawa/Filesys-Notify-Simple">miyagawa/Filesys-Notify-Simple</a>&nbsp;- Simple and dumb file system watcher</li>
<li><a href="https://github.com/mhop/fhem-mirror">mhop/fhem-mirror</a>&nbsp;- Branch 'master' is a read-only-mirror of svn://svn.code.sf.net/p/fhem/code which is updated once a day. On branch 'enocean' I am going to add some Enocean-Devices</li>
<li><a href="https://github.com/lopnor/Plack-App-DAV">lopnor/Plack-App-DAV</a>&nbsp;- simple DAV server for Plack</li>
<li><a href="https://github.com/kazuho/url_compress">kazuho/url_compress</a>&nbsp;- a static PPM-based URL compressor / decompressor</li>
<li><a href="https://github.com/jnthn/6model">jnthn/6model</a>&nbsp;- Just a place that I'm keeping some meta-model prototyping; anything that matters will make it to another repo (e.g. nqp-rx one or Rakudo one) at some point.</li>
<li><a href="https://github.com/jasonhancock/nagios-puppetdb">jasonhancock/nagios-puppetdb</a>&nbsp;- Nagios plugins and pnp4nagios templates related to Puppetlab's PuppetDB project.</li>
<li><a href="https://github.com/goccy/p5-Compiler-Parser">goccy/p5-Compiler-Parser</a>&nbsp;- Create Abstract Syntax Tree for Perl5</li>
<li><a href="https://github.com/cgutteridge/Grinder">cgutteridge/Grinder</a>&nbsp;- Create RDF data from spreadsheets or CSV</li>
<li><a href="https://github.com/c9s/Plack-Middleware-OAuth">c9s/Plack-Middleware-OAuth</a>&nbsp;- Plack Middleware for OAuth1 and OAuth2</li>
<li><a href="https://github.com/bzip2-cuda/bzip2-cuda">bzip2-cuda/bzip2-cuda</a>&nbsp;- Parallel implementation of bzip2 using cuda</li>
<li><a href="https://github.com/alanstevens/ChocoPackages">alanstevens/ChocoPackages</a>&nbsp;- Chocolatey Nuget Packages</li>
<li><a href="https://github.com/SoylentNews/slashcode">SoylentNews/slashcode</a>&nbsp;- The slashcode repository for SoylentNews. The initial code base was uploaded as it appeared on Sourceforge as of the last commit in September 2009</li>
<li><a href="https://github.com/Miserlou/XSS-Harvest">Miserlou/XSS-Harvest</a>&nbsp;- XSS Weaponization</li>
</ul>]]></description>
	<dc:creator>Neel</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/39913/twinblast-when-two-is-better-than-one</guid>
	<pubDate>Sat, 07 Sep 2019 08:50:08 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/39913/twinblast-when-two-is-better-than-one</link>
	<title><![CDATA[TwinBLAST: When Two Is Better than One]]></title>
	<description><![CDATA[<p>TwinBLAST is a web-based tool for viewing 2 BLAST reports simultaneouslyside-by-side. It uses ExtJS (www.sencha.com/products/extjs/) to provide 2independently scrollable panels. BioPerl (www.bioperl.org) is used to indexraw BLAST reports and Bio::Graphics is used to draw pictograms of the BLASThits.</p>
<p><a href="https://github.com/IGS/twinblast">https://github.com/IGS/twinblast</a></p>
<p><a href="https://mra.asm.org/content/8/35/e00842-19">https://mra.asm.org/content/8/35/e00842-19</a></p><p>Address of the bookmark: <a href="https://github.com/IGS/twinblast" rel="nofollow">https://github.com/IGS/twinblast</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/33960/mgra-breakpoint-graphs-and-ancestral-genome-reconstructions</guid>
	<pubDate>Tue, 25 Jul 2017 08:48:25 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/33960/mgra-breakpoint-graphs-and-ancestral-genome-reconstructions</link>
	<title><![CDATA[MGRA: Breakpoint graphs and ancestral genome reconstructions]]></title>
	<description><![CDATA[<p>MGRA (Multiple Genome Rearrangements and Ancestors) is a tool for reconstruction of ancestor genomes and evolutionary history of extant genomes.</p>
<p>It takes as an input a set of genomes represented as sequences of genes (or synteny blocks) and produces such sequences for ancestral genomes at the internal nodes of the phylogenetic tree.</p>
<p>The phylogenetic tree may be also specified completely or partially, in the latter case MGRA can reconstruct conserved ancestral regions (CARs) of the ancestral genome of interest.</p>
<p>Since version 2 MGRA supports gene insertion and deletions in addition to genome rearrangements and allows the input genomes to have different gene content.</p>
<p>It also can reconstruct most plausible phylogenetic tree based on the rearrangement characters.</p><p>Address of the bookmark: <a href="http://mgra.cblab.org/" rel="nofollow">http://mgra.cblab.org/</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/34377/genomicus-genome-browser-that-enables-users-to-navigate-in-genomes-in-several-dimensions</guid>
	<pubDate>Sat, 18 Nov 2017 16:10:16 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/34377/genomicus-genome-browser-that-enables-users-to-navigate-in-genomes-in-several-dimensions</link>
	<title><![CDATA[Genomicus: genome browser that enables users to navigate in genomes in several dimensions]]></title>
	<description><![CDATA[<p>Genomicus is a genome browser that enables users to navigate in genomes in several dimensions: linearly along chromosome axes, transversaly across different species, and chronologicaly along evolutionary time.</p>
<p>Once a query gene has been entered, it is displayed in its genomic context in parallel to the genomic context of all its orthologous and paralogous copies in all the other sequenced metazoan genomes. Moreover, Genomicus stores and displays the predicted ancestral genome structure in all the ancestral species within the phylogenetic range of interest.</p>
<p>All the data on extant species displayed in this browser are from&nbsp;<a href="http://www.ensembl.org/">Ensembl</a>.</p><p>Address of the bookmark: <a href="http://genomicus.biologie.ens.fr/genomicus-90.01/cgi-bin/search.pl" rel="nofollow">http://genomicus.biologie.ens.fr/genomicus-90.01/cgi-bin/search.pl</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/34488/scripts-for-the-analysis-of-hgt-in-genome-sequence-data</guid>
	<pubDate>Wed, 29 Nov 2017 16:44:10 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/34488/scripts-for-the-analysis-of-hgt-in-genome-sequence-data</link>
	<title><![CDATA[Scripts for the analysis of HGT in genome sequence data.]]></title>
	<description><![CDATA[<p><span>Scripts for the analysis of HGT in genome sequence data</span></p><p>Address of the bookmark: <a href="https://github.com/reubwn/hgt" rel="nofollow">https://github.com/reubwn/hgt</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/34569/ksnp30-snp-detection-and-phylogenetic-analysis-of-genomes-without-genome-alignment-or-reference-genome</guid>
	<pubDate>Fri, 08 Dec 2017 16:48:40 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/34569/ksnp30-snp-detection-and-phylogenetic-analysis-of-genomes-without-genome-alignment-or-reference-genome</link>
	<title><![CDATA[kSNP3.0: SNP detection and phylogenetic analysis of genomes without genome alignment or reference genome]]></title>
	<description><![CDATA[<p><span>Sept. 20, 2017 Version 3.1 released. Major upgrade. Version 3.1 fixes the problems with SNP annotation that arose when NCBI discontinued use of GI numbers. Please read carefully the Preface (page 3) and the File of annotated genomes section (pages 9-10) in the version 3.1 User Guide. Thanks to Tom Slezak for revsing the get_genbank_file3 script and to Tod Stuber (USDA) for testing version 3.1 even though he doesn't need the annotation feature. All users are encouraged to upgrade to version 3.1.&nbsp;<br></span></p><p>Address of the bookmark: <a href="https://sourceforge.net/projects/ksnp/files/" rel="nofollow">https://sourceforge.net/projects/ksnp/files/</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/34707/string-graph-based-genome-assembly-software-and-tools</guid>
	<pubDate>Tue, 19 Dec 2017 17:17:38 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/34707/string-graph-based-genome-assembly-software-and-tools</link>
	<title><![CDATA[String graph based genome assembly software and tools !]]></title>
	<description><![CDATA[<p>In&nbsp;<a href="https://en.wikipedia.org/wiki/Graph_theory" title="Graph theory">graph theory</a>, a&nbsp;<strong>string graph</strong>&nbsp;is an&nbsp;<a href="https://en.wikipedia.org/wiki/Intersection_graph" title="Intersection graph">intersection graph</a>&nbsp;of&nbsp;<a href="https://en.wikipedia.org/wiki/Curve" title="Curve">curves</a>&nbsp;in the plane; each curve is called a "string".&nbsp; String graphs were first proposed by E. W. Myers in a&nbsp;<a href="http://bioinformatics.oxfordjournals.org/content/21/suppl_2/ii79.full.pdf+html">2005 publication</a>.&nbsp;In&nbsp;recent&nbsp;<a href="http://genome.cshlp.org/content/early/2012/01/22/gr.126953.111">Genome Research paper</a>&nbsp;describing an innovative approach for assembling large genomes from NGS data caught our attention for several reasons. i) it give different "string graph" prospective of long lasting genome assembly problem ii) the&nbsp;paper is coauthored by Jared Simpson, the developer of&nbsp;<a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2694472/">ABySS assembler</a>&nbsp;and Richard Durbin. iii)&nbsp;Simpson-Durbin algorithm is that it does not rely on de Bruijn graphs, and instead employs a different graph construction approach called &lsquo;string graph&rsquo;.</p><p>Following are the genome assembly tools based on string graph:</p><p>1.SGA (String Graph Assembler)&nbsp;https://github.com/jts/sga</p><p>Assembles large genomes from high coverage short read data. SGA is designed as a modular set of programs, which are used to form an assembly pipeline. SGA implements a set of assembly algorithms based on the FM-index. As the FM-index is a compressed data structure, the algorithms are very memory efficient. The SGA assembly has three distinct phases. The first phase corrects base calling errors in the reads. The second phase assembles contigs from the corrected reads. The third phase uses paired end and/or mate pair data to build scaffolds from the contigs. The output of this software is a PDF report that allows the properties of the genome and data quality to be visually explored. By providing more information to the user at the start of an assembly project, this software will help increase awareness of the factors that make a given assembly easy or difficult, assist in the selection of software and parameters and help to troubleshoot an assembly if it runs into problems.</p><p>2.&nbsp;SAGE: String-overlap Assembly of GEnomes&nbsp;https://github.com/lucian-ilie/SAGE2</p><p>SAGE, for de novo genome assembly. As opposed to most assemblers, which are de Bruijn graph based, SAGE uses the string-overlap graph. SAGE builds upon great existing work on string-overlap graph and maximum likelihood assembly, bringing an important number of new ideas, such as the efficient computation of the transitive reduction of the string overlap graph, the use of (generalized) edge multiplicity statistics for more accurate estimation of read copy counts, and the improved use of mate pairs and min-cost flow for supporting edge merging. The assemblies produced by SAGE for several short and medium-size genomes compared favourably with those of existing leading assemblers.</p><p>3. FSG: Fast String Graph</p><p>The new integrated assembler has been assessed on a standard benchmark, showing that fast string graph (FSG) is significantly faster than SGA while maintaining a moderate use of main memory, and showing practical advantages in running FSG on multiple threads. Moreover, we have studied the effect of coverage rates on the running times.</p><p>4.&nbsp;&nbsp;BASE&nbsp;https://github.com/dhlbh/BASE</p><p>It enhances the classic seed-extension approach by indexing the reads efficiently to generate adaptive seeds that have high probability to appear uniquely in the genome. Such seeds form the basis for BASE to build extension trees and then to use reverse validation to remove the branches based on read coverage and paired-end information, resulting in high-quality consensus sequences of reads sharing the seeds. Such consensus sequences are then extended to contigs.&nbsp;BASE is a practically efficient tool for constructing contig, with significant improvement in quality for long NGS reads. It is relatively easy to extend BASE to include scaffolding.</p><p>5.&nbsp;Fermi&nbsp;https://github.com/lh3/fermi/</p><p>Fermi is a de novo assembler with a particular focus on assembling Illumina&nbsp;short sequence reads from a mammal-sized genome. In addition to the role of a&nbsp;typical assembler, fermi also aims to preserve heterozygotes which are often&nbsp;collapsed by other assemblers. Its ultimate goal is to find a minimal set of&nbsp;unitigs to represent all the information in raw reads.</p><p>If you want to learn about String Graph assembler, please read the following papers -</p><p>i)&nbsp;<a href="http://bioinformatics.oxfordjournals.org/content/21/suppl_2/ii79.full.pdf+html">The Fragment Assembly String Graph - E. W. Myers</a></p><p>This paper describes the String Graph concept.</p><p>ii)&nbsp;<a href="http://bioinformatics.oxfordjournals.org/content/26/12/i367.full#ref-20">Efficient construction of an assembly string graph using the FM-index - Jared T. Simpson and Richard Durbin</a></p><p>This earlier paper from Simpson and Durbin</p><p>iii)&nbsp;<a href="http://genome.cshlp.org/content/early/2012/01/22/gr.126953.111">Efficient de novo assembly of large genomes using compressed data structures - Jared T. Simpson and Richard Durbin</a></p><p>&nbsp;</p>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>

</channel>
</rss>