<?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/27696?offset=730</link>
	<atom:link href="https://bioinformaticsonline.com/related/27696?offset=730" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/35418/karyoploter-plot-whole-genomes-with-arbitrary-data</guid>
	<pubDate>Fri, 02 Feb 2018 03:24:28 -0600</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/35418/karyoploter-plot-whole-genomes-with-arbitrary-data</link>
	<title><![CDATA[karyoploteR: plot whole genomes with arbitrary data]]></title>
	<description><![CDATA[<p><span><a href="http://bioconductor.org/packages/karyoploteR">karyoploteR</a></span><span>&nbsp;is an R package to create karyoplots, that is, representations of whole genomes with arbitrary data plotted on them. It is inspired by the R base graphics system and does not depend on other graphics packages. The aim of karyoploteR is to offer the user an easy way to plot data along the genome to get broad genome-wide view to facilitate the identification of genome wide relations and distributions.</span></p><p>Address of the bookmark: <a href="https://bernatgel.github.io/karyoploter_tutorial/" rel="nofollow">https://bernatgel.github.io/karyoploter_tutorial/</a></p>]]></description>
	<dc:creator>Abhimanyu Singh</dc:creator>
</item>

<item>
  <guid isPermaLink='true'>https://bioinformaticsonline.com/opportunity/view/20958/ra-bioinformatics-at-ciba</guid>
  <pubDate>Mon, 02 Feb 2015 22:52:50 -0600</pubDate>
  <link></link>
  <title><![CDATA[RA Bioinformatics at CIBA]]></title>
  <description><![CDATA[
<p>The following posts are to be filled purely on temporary basis under CIBA Component of “Centre for Agricultural Bioinformatics (CABin)” project at this Institute.</p>

<p>Research Associate – one post</p>

<p>Date &amp; Time of Interview 18th Feb 2015 at 10.00 a.m.</p>

<p>Essential Qualification Ph.d / M.Sc./ M.Phil (Bioinformatics) With 1st division or 60% marks or equivalent overall grade point average with at least two years of research experience in the relevant subject.</p>

<p>Desirable qualification: Experience in Java/ C++/ PHP/ PERL/ Python etc. based application development using Linux, Apache and MySQL/Oracle.</p>

<p>Emoluments Rs.24000/- p.m. + 30% HRA for Ph.D holders / Rs.23000/- p.m. + 30% HRA for Master Degree holders A consolidated pay Rs.25000/- per month.</p>

<p>Age Limit Maximum 40 years for men and 45 years for women as on date of interview. Age limits are relaxable for SC / ST / OBC candidates as per rules. Maximum 40 years for men and 45 years for women as on date of interview. Age limits are relaxable for SC / ST / OBC candidates as per rules.</p>

<p>Eligible Candidates may appear for the Walk-in-interview with original Certificate of Ph.D. / Master’s / relevant degree, passport size photograph and bio-data enclosing attested copies of educational qualification &amp; experience certificates. TA / DA will not be paid for attending the interview.</p>

<p>Advertisement: www.ciba.res.in/attachments/jobs/CABin-3006.pdf</p>
]]></description>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/32946/grass-a-generic-algorithm-for-scaffolding-next-generation-sequencing-assemblies</guid>
	<pubDate>Tue, 23 May 2017 05:20:32 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/32946/grass-a-generic-algorithm-for-scaffolding-next-generation-sequencing-assemblies</link>
	<title><![CDATA[GRASS: a generic algorithm for scaffolding next-generation sequencing assemblies.]]></title>
	<description><![CDATA[<p><span>GRASS (GeneRic ASsembly Scaffolder)-a novel algorithm for scaffolding second-generation sequencing assemblies capable of using diverse information sources. GRASS offers a mixed-integer programming formulation of the contig scaffolding problem, which combines contig order, distance and orientation in a single optimization objective. The resulting optimization problem is solved using an expectation-maximization procedure and an unconstrained binary quadratic programming approximation of the original problem. We compared GRASS with existing HTS scaffolders using Illumina paired reads of three bacterial genomes. Our algorithm constructs a comparable number of scaffolds, but makes fewer errors. This result is further improved when additional data, in the form of related genome sequences, are used.</span></p><p>Address of the bookmark: <a href="https://github.com/AlexeyG/GRASS" rel="nofollow">https://github.com/AlexeyG/GRASS</a></p>]]></description>
	<dc:creator>Abhimanyu Singh</dc:creator>
</item>

<item>
  <guid isPermaLink='true'>https://bioinformaticsonline.com/opportunity/view/20957/jrf-in-bioinformatics-tezpur-university</guid>
  <pubDate>Mon, 02 Feb 2015 22:50:14 -0600</pubDate>
  <link></link>
  <title><![CDATA[JRF in Bioinformatics @ Tezpur University]]></title>
  <description><![CDATA[
<p>Applications are invited for one temporary position of Junior Research Fellow (JRF) in the DBT Twinning Project entitled ‘In-Silico design and evaluation of sequences for γD crystalline protein’ under the Principal Investigator Dr. Anupam Nath Jha, Assistant Professor, Department of Molecular Biology and Biotechnology, Tezpur University.</p>

<p>Educational Qualification: Candidate must possess a M.Sc. in Bioinformatics/ Biotechnology/ Computer Science/ Physics/ Chemistry or B.Tech. or M.Tech. in Bioinformatics/ Biotechnology/ Computer Science from a recognized University/ Institute with minimum 60% marks or equivalent CGPA for general category and for SC/ST/OBC relaxation will be given as per Govt. of India rules.</p>

<p>Fellowship: Rs 16,000/- (Rupees sixteen thousand) only + 10% HRA per month for NET/GATE/BET/BINC qualified candidates. Rs. 12,000/- (Rupees twelve thousand) only + 10% HRA per month for other candidates.</p>

<p>Duration: Initially for a period of six (06) months which may be extended depending upon status of the project or until further order, whichever is earlier.</p>

<p>Age: Candidate should not be more than 28 years of age on the date of interview. Upper age limit may be relaxed up to 5 years in the case of candidate belonging to SC/ ST /OBC /Women / Physically Challenged.</p>

<p>Interested candidates may send their application on plain paper by post along with his/her educational qualifications, recent passport/stamp size photograph and contact phone number to Dr. Anupam Nath Jha, Principal Investigator, Department of Molecular Biology and Biotechnology, Tezpur University, Napaam – 784028 or mail it to anjha@tezu.ernet.in within 20 days of publication of this advertisement.</p>

<p>Only shortlisted candidates will be informed by e-mail or phone for an interview. N.B. No TA/DA will be paid for attending the interview. For further details contact: Dr. Anupam Nath Jha, Assistant Professor, Principal Investigator Department of Molecular Biology &amp; Biotechnology Tezpur University, Napaam, Tezpur-784028 (Assam)</p>

<p>Advertisement: www.tezu.ernet.in/ProjectWalkin/Advt-ANJ-5323-A.pdf</p>
]]></description>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/35621/bbtools-for-bioinformatician</guid>
	<pubDate>Thu, 15 Feb 2018 16:45:52 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/35621/bbtools-for-bioinformatician</link>
	<title><![CDATA[BBTools for bioinformatician !]]></title>
	<description><![CDATA[<p><span></span><br /><strong>BBMap.sh</strong><br /><br /></p><ul>
<li><strong>Mapping Nanopore reads</strong></li>
</ul><p><br /><span>BBMap.sh has a length cap of 6kbp. Reads longer than this will be broken into 6kbp pieces and mapped independently.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ mapPacBio.sh -Xmx20g k=7 in=reads.fastq ref=reference.fa maxlen=1000 minlen=200 idtag ow int=f qin=33 out=mapped1.sam minratio=0.15 ignorequality slow ordered maxindel1=40 maxindel2=400</pre></div><p><br /><span>The "maxlen" flag shreds them to a max length of 1000; you can set that up to 6000. But I found 1000 gave a higher mapping rate.&nbsp;&nbsp;</span><br /><br /></p><ul>
<li><strong>Using Paired-end and single-end reads at the same time</strong></li>
</ul><p><br /><span>BBMap itself can only run single-ended or paired-ended in a single run, but it has a wrapper that can accomplish it, like this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ bbwrap.sh in1=read1.fq,singletons.fq in2=read2.fq,null out=mapped.sam append</pre></div><p><span>This will write all the reads to the same output file but only print the headers once. I have not tried that for bam output, only sam output</span><br /><br /><span>Note about alignment stats: For paired reads, you can find the total percent mapped by adding the read 1 percent (where it says "mapped: N%") and read 2 percent, then dividing by 2. The different columns tell you the count/percent of each event. Considering the cigar strings from alignment, "Match Rate" is the number of symbols indicating a reference match (=) and error rate is the number indicating substitution, insertion, or deletion (X, I, D).</span><br /><br /></p><ul>
<li><strong>Exact matches when mapping small reads (e.g. miRNA)</strong></li>
</ul><p><br /><span>When mapping small RNA's with BBMap use the following flags to report only perfect matches.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">ambig=all vslow perfectmode maxsites=1000</pre></div><p><span>It should be very fast in that mode (despite the vslow flag). Vslow mainly removes masking of low-complexity repetitive kmers, which is not usually a problem but can be with extremely short sequences like microRNAs.</span></p><ul>
<li><strong>Important note about BBMap alignments</strong></li>
</ul><p><br /><span>BBMap is always nondeterministic when run in paired-end mode with multiple threads, because the insert-size average is calculated on a per-thread basis, which affects mapping; and which reads are assigned to which thread is nondeterministic. The only way to avoid that would be to restrict it to a single thread (threads=1), or map the reads as single-ended and then fix pairing afterward:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">bbmap.sh in=reads.fq outu=unmapped.fq int=f
repair.sh in=unmapped.fq out=paired.fq fint outs=singletons.fq</pre></div><p><span>In this case you'd want to only keep the paired output.&nbsp;</span><br /><br /><span>BBSplit is based on BBMap, so it is also nondeterministic in paired mode with multiple threads. BBDuk and Seal (which can be used similarly to BBSplit) are always deterministic.&nbsp;</span><br /><br /><span>--------------------------------------------------------</span><br /><br /><strong>Reformat.sh</strong></p><ul>
<li><strong>Count k-mers/find unknown primers</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.fq out=trimmed.fq ftr=19</pre></div><p><span>This will trim all but the first 20 bases (all bases after position 19, zero-based).</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ kmercountexact.sh in=trimmed.fq out=counts.txt fastadump=f mincount=10 k=20 rcomp=f</pre></div><p><span>This will generate a file containing the counts of all 20-mers that occurred at least 10 times, in a 2-column format that is easy to sort in Excel.&nbsp;</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">ACCGTTACCGTTACCGTTAC	100
AAATTTTTTTCCCCCCCCCC	85</pre></div><p><span>...etc. If the primers are 20bp long, they should be pretty obvious.&nbsp;&nbsp;</span></p><ul>
<li><strong>Convert SAM format from 1.4 to 1.3 (required for many programs)</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.sam out=out.sam sam=1.3</pre></div><ul>
<li><strong>Removing N basecalls</strong></li>
</ul><p><br /><span>You can use BBDuk or Reformat with "qtrim=rl trimq=1". That will only trim trailing and leading bases with Q-score below 1, which means Q0, which means N (in either fasta or fastq format). The BBMap package automatically changes q-scores of Ns that are above 0 to 0 and called bases with q-scores below 2 to 2, since occasionally some Illumina software versions produces odd things like a handful of Q0 called bases or Ns with Q&gt;0, neither of which make any sense in the Phred scale.</span></p><ul>
<li><strong>Sampling reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.fq out=sampled.fq sample=3000</pre></div><div><div>Code:</div><pre dir="ltr">To sample 10% of the reads:
reformat.sh in1=reads1.fq in2=reads2.fq out1=sampled1.fq out2=sampled2.fq samplerate=0.1

or more concisely:
reformat.sh in=reads#.fq out=sampled#.fq samplerate=0.1

and for exact sampling:
reformat.sh in=reads#.fq out=sampled#.fq samplereadstarget=100k</pre></div><ul>
<li><strong>Changing fasta headers</strong></li>
</ul><p><br /><span>Remove anything after the first space in fasta header.&nbsp;</span><br /><br /></p><div><div>Code:</div><pre dir="ltr"> reformat.sh in=sequences.fasta out=renamed.fasta trd</pre></div><p><span>"trd" stands for "trim read description" and will truncate everything after the first whitespace.</span></p><ul>
<li><strong>Extract reads from a sam file</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.sam out=reads.fastq</pre></div><ul>
<li><strong>Verify pairing and optionally de-interleave the reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.fastq verifypairing</pre></div><ul>
<li><strong>Verify pairing if the reads are in separate files</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in1=r1.fq in2=r2.fq vpair</pre></div><p><span>If that completes successfully and says the reads were correctly paired, then you can simply de-interleave reads into two files like this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.fastq out1=r1.fastq out2=r2.fastq</pre></div><ul>
<li><strong>Base quality histograms</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=reads.fq qchist=qchist.txt</pre></div><p><span>That stands for "quality count histogram".&nbsp;</span></p><ul>
<li><strong>Filter SAM/BAM file by read length</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=x.sam out=y.sam minlength=50 maxlength=200</pre></div><ul>
<li><strong>Filter SAM/BAM file to detect/filter spliced reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=mapped.bam out=filtered.bam maxdellen=50</pre></div><p><span>You can set "maxdellen" to whatever length deletion event you consider the minimum to signify splicing, which depends on the organism.</span><br /><span>-------------------------------------------------------------</span><br /><strong>Repair.sh</strong></p><ul>
<li><strong>"Re-pair" out-of-order reads from paired-end data files</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ repair.sh in1=r1.fq.gz in2=r2.fq.gz out1=fixed1.fq.gz out2=fixed2.fq.gz outsingle=singletons.fq.gz</pre></div><p><span>--------------------------------------------------------------</span><br /><strong>BBMerge.sh</strong><br /><br /><span>BBMerge now has a new flag - "outa" or "outadapter". This allows you to automatically detect the adapter sequence of reads with short insert sizes, in case you don't know what adapters were used. It works like this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ bbmerge.sh in=reads.fq outa=adapters.fa reads=1m</pre></div><p><span>Of course, it will only work for paired reads! The output fasta file will look like this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">&gt;Read1_adapter
GATCGGAAGAGCACACGTCTGAACTCCAGTCACATCACGATCTCGTATGCCGTCTTCTGCTTG
&gt;Read2_adapter
GATCGGAAGAGCACACGTCTGAACTCCAGTCACCGATGTATCTCGTATGCCGTCTTCTGCTTG</pre></div><p><span>If you have multiplexed things with different barcodes in the adapters, the part with the barcode will show up as Ns, like this:</span><br /><br /><span>GATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG&nbsp;&nbsp;</span><br /><br /><span>Note: For BBMerge with micro-RNA, you need to add the flag&nbsp;</span><strong>mininsert=17</strong><span>. The default is 35, which is too long for micro-RNA libraries.&nbsp;</span></p><ul>
<li><strong>Identifying adapters</strong></li>
</ul><p><span>If you have paired reads, and enough of the reads have inserts shorter than read length, you can identify adapter sequences with BBMerge, like this (they will be printed to adapters.fa):</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ bbmerge.sh in1=r1.fq in2=r2.fq outa=adapters.fa</pre></div><p><br /><span>-----------------------------------------------------------------</span><br /><br /><strong>BBDuk.sh</strong><br /><br /><span>Note: BBDuk is strictly deterministic on a per-read basis, however it does by default reorder the reads when run multithreaded. You can add the flag "ordered" to keep output reads in the same order as input reads</span></p><ul>
<li><strong>Finding reads with a specific sequence at the beginning of read</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ bbduk.sh -Xmx1g in=reads.fq outm=matched.fq outu=unmatched.fq restrictleft=25 k=25 literal=AAAAACCCCCTTTTTGGGGGAAAAA</pre></div><p><span>In this case, all reads starting with "AAAAACCCCCTTTTTGGGGGAAAAA" will end up in "matched.fq" and all other reads will end up in "unmatched.fq". Specifically, the command means "look for 25-mers in the leftmost 25 bp of the read", which will require an exact prefix match, though you can relax that if you want.</span><br /><br /><span>So you could bin all the reads with your known sequence, then look at the remaining reads to see what they have in common. You can do the same thing with the tail of the read using "restrictright" instead, though you can't use both restrictions at the same time.&nbsp;&nbsp;</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ bbduk.sh in=reads.fq outm=matched.fq literal=NNNNNNCCCCGGGGGTTTTTAAAAA k=25 copyundefined</pre></div><p><span>With the "copyundefined" flag, a copy of each reference sequence will be made representing every valid combination of defined letter. So instead of increasing memory or time use by 6^75, it only increases them by 4^6 or 4096 which is completely reasonable, but it only allows substitutions at predefined locations. You can use the "copyundefined", "hdist", and "qhdist" flags together for a lot of flexibility - for example, hdist=2 qhdist=1 and 3 Ns in the reference would allow a hamming distance of 6 with much lower resource requirements than hdist=6. Just be sure to give BBDuk as much memory as possible.</span></p><ul>
<li><strong>Removing illumina adapters (if exact adapters not known)</strong></li>
</ul><p><br /><span>If you're not sure which adapters are used, you can add "ref=truseq.fa.gz,truseq_rna.fa.gz,nextera.fa.gz" and get them all (this will increase the amount of overtrimming, though it should still be negligible).&nbsp;</span></p><ul>
<li><strong>Removing illumina control sequences/phiX reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">bbduk.sh in=trimmed.fq.gz out=filtered.fq.gz k=31 ref=artifacts,phix ordered cardinality</pre></div><ul>
<li><strong>Identify certain reads that contain a specific sequence</strong></li>
</ul><div><div>Code:</div><pre dir="ltr">$ bbduk.sh in=reads.fq out=unmatched.fq outm=matched.fq literal=ACGTACGTACGTACGTAC k=18 mm=f hdist=2</pre></div><p><span>Make sure "k" is set to the exact length of the sequence. "hdist" controls the number of substitutions allowed. "outm" gets the reads that match. By default this also looks for the reverse-complement; you can disable that with "rcomp=f".&nbsp;&nbsp;</span></p><ul>
<li><strong>Extract sequences that share kmers with your sequences with BBDuk</strong></li>
</ul><div><div>Code:</div><pre dir="ltr">$ bbduk.sh in=a.fa ref=b.fa out=c.fa mkf=1 mm=f k=31</pre></div><p><span>This will print to C all the sequences in A that share 100% of their 31-mers with sequences in B.&nbsp;</span><br /><br /></p><ul>
<li><strong>Extract sequences that contain N's with BBDuk</strong></li>
</ul><div><div>Code:</div><pre dir="ltr">bbduk.sh in=reads.fq out=readsWithoutNs.fq outm=readsWithNs.fq maxns=0</pre></div><p><span>If you have, say, 100bp reads and only want to separate reads containing all 100 Ns, change that to "maxns=99".</span><br /><br /><strong>General notes for BBDuk.sh</strong><span>&nbsp;</span><br /><br /><span>BBDuk can operate in one of 4 kmer-matching modes:</span><br /><span>Right-trimming (ktrim=r), left-trimming (ktrim=l), masking (ktrim=n), and filtering (default). But it can only do one at a time because all kmers are stored in a single table. It can still do non-kmer-based operations such as quality trimming at the same time.</span><br /><br /><span>BBDuk2 can do all 4 kmer operations at once and is designed for integration into automated pipelines where you do contaminant removal and adapter-trimming in a single pass to minimize filesystem I/O. Personally, I never use BBDuk2 from the command line. Both have identical capabilities and functionality otherwise, but the syntax is different.</span><br /><br /><span>------------------------------------------------------------------</span><br /><br /><strong>Randomreads.sh</strong></p><ul>
<li><strong>Generate random reads in various formats</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ randomreads.sh ref=genome.fasta out=reads.fq len=100 reads=10000</pre></div><p><span>You can specify paired reads, an insert size distribution, read lengths (or length ranges), and so forth. But because I developed it to benchmark mapping algorithms, it is specifically designed to give excellent control over mutations. You can specify the number of snps, insertions, deletions, and Ns per read, either exactly or probabilistically; the lengths of these events is individually customizable, the quality values can alternately be set to allow errors to be generated on the basis of quality; there's a PacBio error model; and all of the reads are annotated with their genomic origin, so you will know the correct answer when mapping.</span><br /><br /><span>Bear in mind that 50% of the reads are going to be generated from the plus strand and 50% from the minus strand. So, either a read will match the reference perfectly, OR its reverse-complement will match perfectly.</span><br /><br /><span>You can generate the same set of reads with and without SNPs by fixing the seed to a positive number, like this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ randomreads.sh maxsnps=0 adderrors=false out=perfect.fastq reads=1000 minlength=18 maxlength=55 seed=5

$ randomreads.sh maxsnps=2 snprate=1 adderrors=false out=2snps.fastq reads=1000 minlength=18 maxlength=55 seed=5</pre></div><p><span>[As of BBmap v. 36.59] rendomreads.sh gains the ability to simulate metagenomes.&nbsp;</span><br /><br /><span>coverage=X will automatically set "reads" to a level that will give X average coverage (decimal point is allowed).</span><br /><br /><span>metagenome will assign each scaffold a random exponential variable, which decides the probability that a read be generated from that scaffold. So, if you concatenate together 20 bacterial genomes, you can run randomreads and get a metagenomic-like distribution. It could also be used for RNA-seq when using a transcriptome reference.</span><br /><br /><span>The coverage is decided on a per-reference-sequence level, so if a bacterial assembly has more than one contig, you may want to glue them together first with fuse.sh before concatenating them with the other references.&nbsp;</span><br /><br /></p><ul>
<li><strong>Simulate a jump library</strong></li>
</ul><p><br /><span>You can simulate a 4000bp jump library from your existing data like this.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ cat assembly1.fa assembly2.fa &gt; combined.fa
$ bbmap.sh ref=combined.fa
$ randomreads.sh reads=1000000 length=100 paired interleaved mininsert=3500 maxinsert=4500 bell perfect=1 q=35 out=jump.fq.gz</pre></div><p><span>--------------------------------------------------------------</span><br /><strong>Shred.sh</strong><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ shred.sh in=ref.fasta out=reads.fastq length=200</pre></div><p><span>The difference is that RandomReads will make reads in a random order from random locations, ensuring flat coverage on average, but it won't ensure 100% coverage unless you generate many fold depth. Shred, on the other hand, gives you exactly 1x depth and exactly 100% coverage (and is not capable of modelling errors). So, the use-cases are different.&nbsp;</span><br /><span>---------------------------------------------------------------</span><br /><strong>Demuxbyname.sh</strong></p><ul>
<li><strong>Demultiplex fastq files when the tag is present in the fastq read header (illumina)</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ demuxbyname.sh in=r#.fq out=out_%_#.fq prefixmode=f names=GGACTCCT+GCGATCTA,TAAGGCGA+TCTACTCT,...
outu=filename</pre></div><p><span>"Names" can also be a text file with one barcode per line (in exactly the format found in the read header). You do have to include all of the expected barcodes, though.</span><br /><br /><span>In the output filename, the "%" symbol gets replaced by the barcode; in both the input and output names, the "#" symbol gets replaced by 1 or 2 for read 1 or read 2. It's optional, though; you can leave it out for interleaved input/output, or specify in1=/in2=/out1=/out2= if you want custom naming.</span><br /><br /><span>----------------------------------------------------------------</span><br /><br /><strong>Readlength.sh</strong></p><ul>
<li><strong>Plotting the length distribution of reads</strong></li>
</ul><div><div>Code:</div><pre dir="ltr">$ readlength.sh in=file out=histogram.txt bin=10 max=80000</pre></div><p><span>That will plot the result in bins of size 10, with everything above 80k placed in the same bin. The defaults are set for relatively short sequences so if they are many megabases long you may need to add the flag "-Xmx8g" and increase "max=" to something much higher.</span><br /><br /><span>Alternatively, if these are assemblies and you're interested in continuity information (L50, N50, etc), you can run stats on each or statswrapper on all of them:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">stats.sh in=file</pre></div><p><span>or</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">statswrapper.sh in=file,file,file,file&hellip;</pre></div><p><span>----------------------------------------------------------------</span><br /><strong>Filterbyname.sh</strong><br /><br /><span>By default, "filterbyname" discards reads with names in your name list, and keeps the rest. To include them and discard the others, do this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ filterbyname.sh in=003.fastq out=filter003.fq names=names003.txt include=t</pre></div><p><span>----------------------------------------------------------------</span><br /><strong>getreads.sh</strong><br /><br /><span>If you only know the number(s) of the fasta/fastq record(s) in a file (records start at 0) then you can use the following command to extract those reads in a new file.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ getreads.sh in= id=&lt;number,number,number...&gt; out=</pre></div><p><span>The first read (or pair) has ID 0, the second read (or pair) has ID 1, etc.</span><br /><br /><span>Parameters:</span><br /><span>in= Specify the input file, or stdin.</span><br /><span>out= Specify the output file, or stdout.</span><br /><span>id= Comma delimited list of numbers or ranges, in any order.</span><br /><span>For example: id=5,93,17-31,8,0,12-13&nbsp;</span><br /><span>----------------------------------------------------------------</span><br /><strong>Splitsam.sh</strong></p><ul>
<li><strong>Splits a sam file into forward and reverse reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">splitsam.sh mapped.sam plus.sam minus.sam unmapped.sam
reformat.sh in=plus.sam out=plus.fq
reformat.sh in=minus.sam out=minus.fq rcomp</pre></div><p><span>----------------------------------------------------------------</span><br /><strong>BBSplit.sh</strong><br /><br /><span>BBSplit now has the ability to output paired reads in dual files using the # symbol. For example:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ bbsplit.sh ref=x.fa,y.fa in1=read1.fq in2=read2.fq basename=o%_#.fq</pre></div><p><span>will produce ox_1.fq, ox_2.fq, oy_1.fq, and oy_2.fq</span><br /><br /><span>You can use the # symbol for input also, like "in=read#.fq", and it will get expanded into 1 and 2.&nbsp;&nbsp;</span><br /><br /><strong>Added feature:&nbsp;</strong><span>One can specify a directory for the "ref=" argument. If anything in the list is a directory, it will use all fasta files in that directory. They need a fasta extension, like .fa or .fasta, but can be compressed with an additional .gz after that. Reason this is useful is to use BBSplit is to have it split input into one output file per reference file.</span><br /><br /><br /><strong>NOTE: 1</strong><span>&nbsp;By default BBSplit uses fairly strict mapping parameters; you can get the same sensitivity as BBMap by adding the flags "minid=0.76 maxindel=16k minhits=1". With those parameters it is extremely sensitive.</span><br /><br /><strong>NOTE: 2</strong><span>&nbsp;BBSplit has different ambiguity settings for dealing with reads that map to multiple genomes. In any case, if the alignment score is higher to one genome than another, it will be associated with that genome only (this considers the combined scores of read pairs - pairs are always kept together). But when a read or pair has two identically-scoring mapping locations, on different genomes, the behavior is controlled by the "ambig2" flag - "ambig2=toss" will discard the read, "all" will send it to all output files, and "split" will send it to a separate file for ambiguously-mapped reads (one per genome to which it maps).</span><br /><br /><strong>NOTE: 3</strong><span>&nbsp;Zero-count lines are suppressed by default, but they should be printed if you include the flag "nzo=f" (nonzeroonly=false).&nbsp;</span><br /><br /><strong>NOTE: 4</strong><span>&nbsp;BBSplit needs multiple reference files as input; one per organism, or one for target and another for everything else. It only outputs one file per reference file.</span><br /><br /><span>Seal.sh, on the other hand, which is similar, can use a single concatenated file, as it (by default) will output one file per reference sequence within a concatenated set of references.&nbsp;</span><br /><span>--------------------------------------------------------------</span><br /><strong>Pileup.sh</strong></p><ul>
<li><strong>To generate transcript coverage stats</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ pileup.sh in=mapped.sam normcov=normcoverage.txt normb=20 stats=stats.txt</pre></div><p><span>That will generate coverage per transcript, with 20 lines per transcript, each line showing the coverage for that fraction of the transcript. "stats" will contain other information like the fraction of bases in each transcript that was covered.&nbsp;</span></p><ul>
<li><strong>To calculate physical coverage stats (region covered by paired-end reads)&nbsp;</strong></li>
</ul><p><span>BBMap has a "physcov" flag that allows it to report physical rather than sequenced coverage. It can be used directly in BBMap, or with pileup, if you already have a sam file. For example:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ pileup.sh in=mapped.sam covstats=coverage.txt</pre></div><ul>
<li><strong>Calculating coverage of the genome</strong></li>
</ul><p><br /><span>Program will take sam or bam, sorted or unsorted.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ pileup.sh in=mapped.sam out=stats.txt hist=histogram.txt</pre></div><p><span>stats.txt will contain the average depth and percent covered of each reference sequence; the histogram will contain the exact number of bases with a each coverage level. You can also get per-base coverage or binned coverage if you want to plot the coverage. It also generates median and standard deviation, and so forth.</span><br /><br /><span>It's also possible to generate coverage directly from BBMap, without an intermediate sam file, like this:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ bbmap.sh in=reads.fq ref=reference.fasta nodisk covstats=stats.txt covhist=histogram.txt</pre></div><p><span>We use this a lot in situations where all you care about is coverage distributions, which is somewhat common in metagenome assemblies. It also supports most of the flags that pileup.sh supports, though the syntax is slightly different to prevent collisions. In each case you can see all the possible flags by running the shellscript with no arguments.</span></p><ul>
<li><strong>To bin aligned reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ pileup.sh in=mapped.sam out=stats.txt bincov=coverage.txt binsize=1000</pre></div><p><span>That will give coverage within each bin. For read density regardless of read length, add the "startcov=t" flag.&nbsp;&nbsp;</span><br /><br /><span>--------------------------------------------------------------</span><br /><strong>Dedupe.sh</strong><br /><br /><span>Dedupe ensures that there is at most one copy of any input sequence, optionally allowing contaminants (substrings) to be removed, and a variable hamming or edit distance to be specified. Usage:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ dedupe.sh in=assembly1.fa,assembly2.fa out=merged.fa</pre></div><p><span>That will absorb exact duplicates and containments. You can use "hdist" and "edist" flags to allow mismatches, or get a complete list of flags by running the shellscript with no arguments.&nbsp;&nbsp;</span><br /><br /><span>Dedupe&nbsp;</span><span style="text-decoration: underline;">will merge assemblies</span><span>, but it&nbsp;</span><span style="text-decoration: underline;">will not produce consensus sequences or join overlapping reads</span><span>; it only removes sequences that are fully contained within other sequences (allowing the specified number of mismatches or edits).</span><br /><br /><span>Dedupe can remove duplicate reads from multiple files simultaneously, if they are comma-delimited (e.g. in=file1.fastq,file2.fastq,file3.fastq). And if you set the flag "uniqueonly=t" then ALL copies of duplicate reads will be removed, as opposed to the default behavior of leaving one copy of duplicate reads.</span><br /><br /><span>However, it does not care which file a read came from; in other words, it can't remove only reads that are duplicates across multiple files but leave the ones that are duplicates within a file. That can still be accomplished, though, like this:</span><br /><br /><span>1) Run dedupe on each sample individually, so now there are at most 1 copy of a read per sample.</span><br /><span>2) Run dedupe again on all of the samples together, with "uniqueonly=t". The only remaining duplicate reads will be the ones duplicated between samples, so that's all that will be removed.&nbsp;&nbsp;</span><br /><br /><span>--------------------------------------------------------------</span></p><ul>
<li><strong>Generate ROC curves from any aligner</strong></li>
</ul><p><br /><strong>[*]index the reference<br /><br /></strong></p><div><div>Code:</div><pre dir="ltr">$ bbmap.sh ref=reference.fasta</pre></div><p><br /><strong>[*]Generate random reads</strong><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ randomreads.sh reads=100000 length=100 out=synth.fastq maxq=35 midq=25 minq=15</pre></div><p><strong>[*]Map to produce a sam file</strong><br /><br /><span>...substitute this command with the appropriate one from your aligner of choice</span></p><div><div>Code:</div><pre dir="ltr">$ bbmap.sh in=synth.fq out=mapped.sam</pre></div><p><strong>[*]Generate ROC curve</strong><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ samtoroc.sh in=mapped.sam reads=100000</pre></div><p><span>--------------------------------------------------------------</span></p><ul>
<li><strong>Calculate heterozygous rate for sequence data</strong></li>
</ul><p><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ kmercountexact.sh in=reads.fq khist=histogram.txt peaks=peaks.txt</pre></div><p><span>You can examine the histogram manually, or use the "peaks" file which tells you the number of unique kmers in each peak on the histogram. For a diploid, the first peak will be the het peak, the second will be the homozygous peak, and the rest will be repeat peaks. The peak caller is not perfect, though, so particularly with noisy data I would only rely on it for the first two peaks, and try to quantify the higher-order peaks manually if you need to (which you generally don't).</span><br /><br /><span>-----------------------------------------------------------------</span></p><ul>
<li><strong>Compare mapped reads between two files</strong></li>
</ul><p><br /><span>To see how many mapped reads (can be mapped concordant or discordant, doesn't matter) are shared between the two alignment files and how many mapped reads are unique to one file or the other.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ reformat.sh in=file1.sam out=mapped1.sam mappedonly
$ reformat.sh in=file2.sam out=mapped2.sam mappedonly</pre></div><p><span>That gets you the mapped reads only. Then:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ filterbyname.sh in=mapped1.sam names=mapped2.sam out=shared.sam include=t</pre></div><p><span>...which gets you the set intersection;</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ filterbyname.sh in=mapped1.sam names=mapped2.sam out=only1.sam include=f
$ filterbyname.sh in=mapped2.sam names=mapped1.sam out=only2.sam include=f</pre></div><p><span>...which get you the set subtractions.&nbsp;&nbsp;</span><br /><br /><span>--------------------------------------------------------------</span><br /><br /><strong>BBrename.sh</strong></p><div><div>Code:</div><pre dir="ltr">$ bbrename.sh in=old.fasta out=new.fasta</pre></div><p><span>That will rename the reads as 1, 2, 3, 4, ... 222.</span><br /><br /><span>You can also give a custom prefix if you want. The input has to be text format, not .doc.&nbsp;&nbsp;</span><br /><br /><span>---------------------------------------------------------------------</span><br /><br /><strong>BBfakereads.sh</strong></p><ul>
<li><strong>Generating &ldquo;fake&rdquo; paired end reads from a single end read file</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ bfakereads.sh in=reads.fastq out1=r1.fastq out2=r2.fastq length=100</pre></div><p><span>That will generate fake pairs from the input file, with whatever length you want (maximum of input read length). We use it in some cases for generating a fake LMP library for scaffolding from a set of contigs. Read 1 will be from the left end, and read 2 will be reverse-complemented and from the right end; both will retain the correct original qualities. And " /1" " /2" will be suffixed after the read name.&nbsp;&nbsp;</span><br /><br /><span>------------------------------------------------------------------</span><br /><strong>Randomreads.sh</strong></p><ul>
<li><strong>Generate random reads</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ randomreads.sh ref=genome.fasta out=reads.fq len=100 reads=10000</pre></div><p><span>"seed=-1" will use a random seed; any other value will use that specific number as the seed</span><br /><br /><span>You can specify paired reads, an insert size distribution, read lengths (or length ranges), and so forth. But because I developed it to benchmark mapping algorithms, it is specifically designed to give excellent control over mutations. You can specify the number of snps, insertions, deletions, and Ns per read, either exactly or probabilistically; the lengths of these events is individually customizable, the quality values can alternately be set to allow errors to be generated on the basis of quality; there's a PacBio error model; and all of the reads are annotated with their genomic origin, so you will know the correct answer when mapping.</span><br /><br /><span>--------------------------------------------------------------------</span></p><ul>
<li><strong>Generate saturation curves to assess sequencing depth</strong></li>
</ul><p>&nbsp;</p><div><div>Code:</div><pre dir="ltr">$ bbcountunique.sh in=reads.fq out=histogram.txt</pre></div><p><span>It works by pulling kmers from each input read, and testing whether it has been seen before, then storing it in a table.</span><br /><br /><span>The bottom line, "first", tracks whether the first kmer of the read has been seen before (independent of whether it is read 1 or read 2).</span><br /><br /><span>The top line, "pair", indicates whether a combined kmer from both read 1 and read 2 has been seen before. The other lines are generally safe to ignore but they track other things, like read1- or read2-specific data, and random kmers versus the first kmer.</span><br /><br /><span>It plots a point every X reads (configurable, default 25000).</span><br /><br /><span>In noncumulative mode (default), a point indicates "for the last X reads, this percentage had never been seen before". In this mode, once the line hits zero, sequencing more is not useful.</span><br /><br /><span>In cumulative mode, a point indicates "for all reads, this percentage had never been seen before", but still only one point is plotted per X reads.</span><br /><br /><span>-----------------------------------------------------------------</span><br /><strong>CalcTrueQuality.sh</strong><br /><br /><a href="http://seqanswers.com/forums/showthread.php?p=170904" target="_blank">http://seqanswers.com/forums/showthread.php?p=170904</a><br /><br /><span>In light of the quality-score issues with the NextSeq platform, and the possibility of future Illumina platforms (HiSeq 3000 and 4000) also using quantized quality scores, I developed it for recalibrating the scores to ensure accuracy and restore the full range of values.</span><br /><br /><span>-----------------------------------------------------------------</span><br /><br /><strong>BBMapskimmer.sh</strong><br /><br /><span>BBMap is designed to find the best mapping, and heuristics will cause it to ignore mappings that are valid but substantially worse. Therefore, I made a different version of it, BBMapSkimmer, which is designed to find all of the mappings above a certain threshold. The shellscript is bbmapskimmer.sh and the usage is similar to bbmap.sh or mapPacBio.sh. For primers, which I assume will be short, you may wish to use a lower than default K of, say, 10 or 11, and add the "slow" flag.</span><br /><br /><span>--------------------------------------------------------------</span><br /><br /><strong>msa.sh and curprimers.sh</strong><br /><br /><span>Quoted from Brian's response directly.</span><br /><br /><span>I also wrote another pair of programs specifically for working with primer pairs, msa.sh and cutprimers.sh. msa.sh will forcibly align a primer sequence (or a set of primer sequences) against a set of reference sequences to find the single best matching location per reference sequence - in other words, if you have 3 primers and 100 ref sequences, it will output a sam file with exactly 100 alignments - one per ref sequence, using the primer sequence that matched best. Of course you can also just run it with 1 primer sequence.</span><br /><br /><span>So you run msa twice - once for the left primer, and once for the right primer - and generate 2 sam files. Then you feed those into cutprimers.sh, which will create a new fasta file containing the sequence between the primers, for each reference sequence. We used these programs to synthetically cut V4 out of full-length 16S sequences.</span><br /><br /><span>I should say, though, that the primer sites identified are based on the normal BBMap scoring, which is not necessarily the same as where the primers would bind naturally, though with highly conserved regions there should be no difference.</span><br /><br /><span>------------------------------------------------------</span><br /><strong>testformat.sh</strong><br /><br /><strong>Identify type of Q-score encoding in sequence files</strong><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ testformat.sh in=seq.fq.gz
sanger    fastq    gz    interleaved    150bp</pre></div><p><span>--------------------------------------------------</span><br /><strong>kcompress.sh</strong><br /><br /><span>Newest member of BBTools. Identify constituent k-mers.&nbsp;</span><br /><a href="http://seqanswers.com/forums/showthread.php?t=63258" target="_blank">http://seqanswers.com/forums/showthread.php?t=63258</a><br /><br /><span>----------------------------------------------------</span><br /><strong>commonkmers.sh</strong><br /><br /><span>Find all k-mers for a given sequence.</span></p><div><div>Code:</div><pre dir="ltr">$ commonkmers.sh in=reads.fq out=kmers.txt k=4 count=t display=999</pre></div><p><span>Will produce output that looks like</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">MISEQ05:239:000000000-A74HF:1:2110:14788:23085	ATGA=8	ATGC=6	GTCA=6	AAAT=5	AAGC=5	AATG=5	AGCA=5	ATAA=5	ATTA=5	CAAA=5	CATA=5	CATC=5	CTGC=5	AACC=4	AACG=4	AAGA=4	ACAT=4	ACCA=4	AGAA=4	ATCA=4	ATGG=4	CAAG=4	CCAA=4	CCTC=4	CTCA=4	CTGA=4	CTTC=4	GAGC=4	GGTA=4	GTAA=4	GTTA=4	AAAA=3	AAAC=3	AAGT=3	ACCG=3	ACGG=3	ACTG=3	AGAT=3	AGCT=3	AGGA=3	AGTA=3	AGTC=3	CAGC=3	CATG=3	CGAG=3	CGGA=3	CGTC=3	CTAA=3	CTCC=3	CTTA=3	GAAA=3	GACA=3	GACC=3	GAGA=3	GCAA=3	GGAC=3	TCAA=3	TGCA=3	AAAG=2	AACA=2	AATA=2	AATC=2	ACAA=2	ACCC=2	ACCT=2	ACGA=2	ACGC=2	AGAC=2	AGCG=2	AGGC=2	CAAC=2	CAGG=2	CCGC=2	GCCA=2	GCTA=2	GGAA=2	GGCA=2	TAAA=2	TAGA=2	TCCA=2	TGAA=2	AAGG=1	AATT=1	ACGT=1	AGAG=1	AGCC=1	AGGG=1	ATAC=1	ATAG=1	ATTG=1	CACA=1	CACG=1	CAGA=1	CCAC=1	CCCA=1	CCGA=1	CCTA=1	CGAC=1	CGCA=1	CGCC=1	CGCG=1	CGTA=1	CTAC=1	GAAC=1	GCGA=1	GCGC=1	GTAC=1	GTGA=1	TTAA=1</pre></div><p><span>-----------------------------------------------------</span><br /><strong>Mutate.sh</strong><br /><br /><span>Simulate multiple mutants from a known reference (e.g.&nbsp;</span><em>E. coli</em><span>).</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">$ mutate.sh in=e_coli.fasta out=mutant.fasta id=99 
$ randomreads.sh ref=mutant.fasta out=reads.fq.gz reads=5m length=150 paired adderrors</pre></div><p><span>That will create a mutant version of E.coli with 99% identity to the original, and then generate 5 million simulated read pairs from the new genome. You can repeat this multiple times; each mutant will be different.</span><br /><br /><span>------------------------------------</span><br /><br /><strong>Partition.sh</strong><br /><br /><span>One can partition a large dataset with partition.sh into smaller subsets (example below splits data into 8 chunks).</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">partition.sh in=r1.fq in2=r2.fq out=r1_part%.fq out2=r2_part%.fq ways=8</pre></div><p><span>-----------------------------------</span><br /><strong>clumpify.sh</strong><br /><br /><span>If you are concerned about file size and want the files to be as small as possible, give Clumpify a try. It can reduce filesize by around 30% losslessly by reordering the reads. I've found that this also typically accelerates subsequent analysis pipelines by a similar factor (up to 30%). Usage:</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">clumpify.sh in=reads.fastq.gz out=clumped.fastq.gz</pre></div><div><div>Code:</div><pre dir="ltr">clumpify.sh in1=reads_R1.fastq.gz in2=reads_R2.fastq.gz out1=clumped_R1.fastq.gz out2=clumped_R2.fastq.gz</pre></div><ul>
<li><strong>Clumpify.sh can now mark/remove sequence duplicates (optical/PCR/otherwise) from NGS data</strong></li>
</ul><p><br /><span>This does NOT require alignments so it should prove more useful compared to Picard MarkDuplicates. Relevant options for clumpify.sh command are listed below.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">dedupe=f optical=f (default)
Nothing happens with regards to duplicates.

dedupe=t optical=f
All duplicates are detected, whether optical or not.  All copies except one are removed for each duplicate.

dedupe=f optical=t
Nothing happens.

dedupe=t optical=t

Only optical duplicates (those with an X or Y coordinate within dist) are detected.  All copies except one are removed for each duplicate.
The allduplicates flag makes all copies of duplicates removed, rather than leaving a single copy.  But like optical, it has no effect unless dedupe=t.

Note: If you set "dupedist" to anything greater than 0, "optical" gets enabled automatically.</pre></div><p><span>-------------------------------------</span><br /><strong>fuse.sh</strong><br /><br /><span>Fuse will automatically reverse-complement read 2. Pad (N) amount can be adjusted as necessary. This will for example create a full size amplicon that can be used for alignments.</span><br /><br /></p><div><div>Code:</div><pre dir="ltr">fuse.sh in1=r1.fq in2=r2.fq pad=130 out=fused.fq fusepairs</pre></div>]]></description>
	<dc:creator>Surabhi Chaudhary</dc:creator>
</item>

<item>
  <guid isPermaLink='true'>https://bioinformaticsonline.com/opportunity/view/21064/jrf-project-assistant-recruitment-at-shillong-%E2%80%93-bioinformatics-centre-dic</guid>
  <pubDate>Sat, 07 Feb 2015 06:00:23 -0600</pubDate>
  <link></link>
  <title><![CDATA[JRF / Project Assistant Recruitment at Shillong – Bioinformatics Centre (DIC)]]></title>
  <description><![CDATA[
<p>3 Vacancies at Bioinformatics Centre (DIC) For M.Tech/M.Sc. Degree Candidates. Apply Before 15th February,2015</p>

<p>Bioinformatics Centre (DIC) invites applications for the following posts:</p>

<p>Job Number: 01<br />Job Designation: Junior Research Fellow (JRF)<br />Number of Vacancy: 02 (Two)<br />Educational Qualification:<br />M.Tech/M.Sc. in Life Sciences/Botany/Zoology/Biochemistry/Biotechnology/Bioinformatics.<br />Desirable Qualification:<br />Aptitude for Bioinformatics and Computer Programming/Next generation sequencing data analysis.</p>

<p>Job Number: 02<br />Job Designation: Project Assistant<br />Number of Vacancy: 01 (One)<br />Educational Qualification:<br />Graduation in Science.<br />Desirable Qualification:<br />Experience of working in a Life Science/Plant Biotechnology Lab.</p>

<p>Place of Work: Shillong</p>

<p>How To Apply For Opening:<br />The applications through email bicnehu@gmail.com or post must reach the undersigned within 15 days from the date of publication of this advertisement.</p>

<p>Last Date To Apply: 15th February,2015</p>

<p>Contact Address: Bioinformatics Centre (DIC),Shillong-793022</p>

<p>Advertisement Details: Employment News (31 January – 6 February) Page 28</p>
]]></description>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/36884/halc-high-throughput-algorithm-for-long-read-error-correction</guid>
	<pubDate>Fri, 08 Jun 2018 10:47:41 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/36884/halc-high-throughput-algorithm-for-long-read-error-correction</link>
	<title><![CDATA[HALC: High throughput algorithm for long read error correction]]></title>
	<description><![CDATA[HALC, a high throughput algorithm for long read error correction. HALC aligns the long reads to short read contigs from the same species with a relatively low identity requirement so that a long read region can be aligned to at least one contig region, including its true genome region’s repeats in the contigs sufficiently similar to it (similar repeat based alignment approach)

HALC was able to obtain 6.7-41.1% higher throughput than the existing algorithms while maintaining comparable accuracy. The HALC corrected long reads can thus result in 11.4-60.7% longer assembled contigs than the existing algorithms.<p>Address of the bookmark: <a href="https://github.com/lanl001/halc" rel="nofollow">https://github.com/lanl001/halc</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/blog/view/21257/bioinformatics-phds-cover-letter</guid>
	<pubDate>Mon, 16 Feb 2015 12:48:52 -0600</pubDate>
	<link>https://bioinformaticsonline.com/blog/view/21257/bioinformatics-phds-cover-letter</link>
	<title><![CDATA[Bioinformatics PhDs - Cover Letter]]></title>
	<description><![CDATA[<p><strong>Overview</strong><br />The reception your cover letter will receive is more varied and unpredictable than the other elements of your application packet.&nbsp; Some readers, especially at large research universities, will skip it entirely, and focus instead on more direct indicators of your academic achievements and potential: the CV, letters, and writing sample.&nbsp; Most often, however, your cover letter works in tandem with your CV, and represents your best opportunity to communicate directly with your target audience prior to an interview.<br /><br />The cover letter should not simply repeat the information contained in the CV; rather it should elaborate and frame the aspects of your academic training and background that you want search committee members to have uppermost in their minds as they consider your candidacy.&nbsp; At a minimum, it should contain a clear statement of your research and teaching interests, and how your qualifications match the requirements of the job description. Many disciplines have their own conventions and protocols for application materials including the cover letter. Be sure to show a draft of your letter to your chair or the department's placement advisor.<br /><br />There is no perfect or even preferred style of cover letter save that tone should be that of a confident professional.&nbsp; Departments aren't interested in hiring graduate students (they already have enough of those).&nbsp; They are looking for serious scholars/teachers who will make interesting, congenial, and productive colleagues. While it is probably not a good use of your time to tailor your letter for each opening, you will probably need at least two base versions that emphasize different elements (You would not want to use the same cover letter to apply to Oberlin as UC Irvine). You may want to customize the letters for the three to five jobs most attractive to you.<br /><br />Your cover letter should not exceed a page and a half or two at the most.&nbsp; No one will read a four-page letter, and your apparent inability to communicate your credentials in a concise manner is not to your advantage. Every line of your letter should serve a demonstrable purpose. Some people have gotten excellent jobs with a brief, boilerplate letter containing no more than a short intro, a paragraph on their research, and a couple of sentences on their teaching. Others use letters that discuss in very specific terms how they, their research, and their teaching would "fit" within the existing department and institutional setting. The choice of style is up to you, and should reflect what makes you feel most comfortable and most positive about your credentials.<br /><br />There are, however, circumstances where a longer, more annotated version is more likely to be helpful. The issues you should take into account when making this decision are:<br /><br />&nbsp;&nbsp;&nbsp; The size of the department/institution<br />&nbsp;&nbsp;&nbsp; The extent to which your research is mainstream and its significance readily apparent<br />&nbsp;&nbsp;&nbsp; The extent to which your qualifications diverge from those mentioned in the job ad<br />&nbsp;&nbsp;&nbsp; The extent to which the institution to which you are applying differs from UC Berkeley and the relative importance of teaching versus research<br />&nbsp;&nbsp;&nbsp; Unusual circumstances or career paths<br /><br />Size matters. The larger the department, the less detailed your letter needs to be.&nbsp; If there are already six people working in your sub-field, they can assess and translate the significance of your work to others in the department.&nbsp; If, however, you will be the only history of science person or the only physical anthropologist in the department, the search committee and others will likely need more help from you to understand the import of your work.&nbsp; Remember, if they are searching for your specialty they are understaffed in your area, and even if there is more than one person in your sub-field she/he may be on leave or otherwise uninvolved in the search.<br /><br />Similarly, smaller departments are more likely to be concerned than larger ones about the specific courses you are prepared to teach.&nbsp; If there are certain core courses your position needs to cover, make it unambiguously clear that you are prepared to do so even if you haven't taught them already.<br /><br />As a rule of thumb, the more your profile diverges from the specifics of the job description (or the norm, such that it exists), the more likely you will want to say more about why you are nonetheless a strong candidate.&nbsp; By doing so you can turn a question mark into an advantage.&nbsp; Highlight your strengths, and if you have time perform a little research on the department (see below) so you can explain how you would add to the department in ways that they might otherwise not have considered.&nbsp; Job descriptions are not always etched in stone. If you're very interested in the job, call the department and ask to speak to someone on the search committee.&nbsp; If that's too intimidating, call the departmental assistant or secretary. They can at least tell you if it&rsquo;s a new position or replacement which in turn can indicate whether they really need someone who can teach The Politics of Southern Africa or if Middle Eastern Politics would do just as well.&nbsp; They may well be willing to sacrifice a course in an area that the ad specified in order to get the extra teaching experience or innovative research that you have to offer, but only if you give them the opportunity and explain what they'd get in return.<br /><br />&nbsp;If you've taken an unusually long time to finish because you spent three years learning a new language in order to prepare for two years of original research or some other factor that enriches what you have to offer as a teacher or a scholar, let them know about it.&nbsp; Learning a new language, for example, is an indicator of your commitment to serious scholarship.&nbsp; Think of a way to put a positive valence on an aspect of your CV that you believe is likely to raise questions or doubts.<br /><br />As hard as it may be for not-yet-employed-but-soon-to-be academics like yourselves to believe, there are some individuals and departments that are intimidated by you and your institutional pedigree.&nbsp; There are many fine schools and departments that are convinced that every Berkeley graduate student is only interested in a position at Harvard, Princeton, or (hold your nose) Stanford.&nbsp; If it is a small liberal arts college, they may also assume that you view teaching and advising undergraduates strictly as a necessary evil. Ergo, why interview someone who will either look down their nose at us, and/or desert us for greener pastures as soon as their third book has been published and Yale comes calling.&nbsp; They often don't seem to realize that Berkeley graduate students are sincerely interested in a wide range of academic settings for a variety of reasons personal and professional, and, perhaps more to the point, Yale rarely "comes calling."&nbsp; An even greater burden of proof exists if a quick scan of your CV reveals that your all of your experience in higher education has occurred in a large, elite, research-oriented setting. How can you overcome this potential obstacle especially if you're very interested in a school that you have reason to believe may be suspicious of Berkeley PhDs?<br /><br />It's probably not advisable to write in a cover letter that they shouldn't be intimidated by lil' old you (i.e., "I'm really not very good; in fact, my advisor says I'm her worst graduate student in twenty years."), but there are ways to indicate a sincere interest in their department.&nbsp; One means is to do a little research, and briefly discuss how you might fit into the department and the institutional community-at-large.&nbsp; There are numerous articles written by faculty about the search process that state explicitly the positive impact it can have on their impression of a candidate to see evidence that that he/she has taken the time to learn something about them. Researching a department and its associated programs/research centers has never been easier.&nbsp; Virtually all colleges and universities are online, and their web addresses can be easily located using Education/Universities link.<br /><br />A second way to address fears of imminent flight is to provide evidence of ties to the area, the university, or lifestyle.&nbsp;&nbsp; If you are from the Midwest, have family nearby, or even if you just spent an enjoyable summer there, add a line about it and your desire to return to your cover letter for Purdue or Wayne State.&nbsp; If you did your undergraduate work at a similar type of institution, draw their attention to that link.&nbsp; Don't assume that they will notice where you got your BA on your CV, and make the connection.<br /><br />If you are applying to small, liberal arts colleges, don't just list the courses you've taught with a line of boilerplate about how important you take your teaching responsibilities to be. These days, a good, small college has a list price of about $30,000 a year, and close contact with people like you is one of their key selling points to parents and potential students. You are expected to be more than a lecturer, and your ability to convey your recognition of that fact and a sincere interest in working closely with students matters. Advising, participating in non-academic activities, watching your students grow and mature inside the classroom and out (and having an influence on that process) can be among the most rewarding aspects of the profession.&nbsp; If you value these broader elements of being a professor, let them know. In particular, if your own experience has been limited to large universities, think about describing an episode where you had a positive impact on the development of a student and the satisfaction you derived from helping him or her. At many small colleges, and large universities (including Berkeley) as well, one of the most significant pedagogical trends is fostering greater student involvement in faculty research.&nbsp; If you can articulate how this might occur for you and their students in a brief but thoughtful manner, it can alleviate some of the concerns occasioned by your Berkeley background.<br /><br />Your letter typically will have four segments: the introduction, research, teaching, and the closing.<br /><br /><strong>Introduction</strong><br />Be sure to identify the position you are applying for by rank and sub-field in the first sentence or two.&nbsp; It is not uncommon for departments to be engaged in more than one search in a given year, and large departments may have more than one in your sub-field.&nbsp; If it is an open rank position and you are applying as an assistant professor, in most cases you and your record of accomplishments will not be directly compared with those of more experienced candidates applying for it at the associate or full professor level.&nbsp; Rather, applicants are assessed based on where they are in their career path, and you have every chance of successfully competing against them.<br /><br />If you have finished, mention it up front. If not, state when you expect to file - no later than June 2003.&nbsp; Many readers will view your optimistic prediction with a skeptical eye, and anything you can say that makes the claim appear more credible (e.g., "I have written and my chair has reviewed four of the six chapters.") can help mitigate their concerns.&nbsp; You can put such a statement in the introduction or wait until you discuss the dissertation itself.<br /><br />If your discipline holds its annual meeting in the summer or early fall (i.e., before application deadlines) and you had an excellent conference interview, make reference to it in the cover letter including the names of the faculty with whom you spoke.&nbsp; By the time people actually start to read files, months may have passed and even the strongest of impressions can fade.&nbsp; But they can be rehabilitated and revived, especially if you can remind them of a specific strength, ability, or issue that seemed particularly salient during the interview.<br />Research<br />Unless you are applying to a school that cares only about your teaching (increasingly rare), a description of your research generally follows next.&nbsp; The challenge here is not simply to describe your research, but to frame it in terms of your sub-field and discipline. The search committee, hasn't lived, eaten and breathed Post-Edwardian Hermeneutics for the past five years the way you have. And they haven't been there every step of the torturous process like your friends and significant others. So forgive them for not immediately recognizing your research at first blush for the path-breaking work that it is.<br /><br />Departments want to know that in hiring you, they are adding someone who will make a future contribution to the discipline and enhance the reputation of the department. However, they are often ill-equipped to understand exactly how that will be true in your particular case. Many disciplines are sufficiently broad that leading or cutting-edge research in one sub-field is barely intelligible to those in others.&nbsp; In addition, when you became a candidate for the short list, your file will be read by department members outside your specialty, and, oftentimes later on in the process, by individuals outside your discipline as well. You need to describe the forest in which your tree resides, and explain why it matters in terms of the broader trends and issues within your discipline. Obviously, if your work is focused on one of the classic conundrums of your field, much less in the way of providing perspective is necessary than if you are addressing an emergent issue or employing an unconventional approach.<br /><br />If your research is particularly novel or cutting-edge, any markers of broader acceptance by other, more established scholars or scholarly organs in your field can ameliorate possible concerns about its relevance and potential importance.&nbsp; In discussing your work, note the recognition it has received in the form of competitive grants, awards, publications in refereed journals, and/or presentations at major conferences.<br /><br />It is also important to mention where you expect your research to go after the completion of your dissertation and the publications that will flow from it.&nbsp; They, especially at research-oriented institutions, want to know at least in broad terms where you expect to go from here.&nbsp; They want to see evidence of a scholarly agenda that extends beyond the dissertation.&nbsp; You don't need to have pages written or titles blocked out, but you need to tell them in a paragraph, (two at the most) about what questions intrigue you, and how you expect to go about finding the answers to them.&nbsp; These questions for future research may have been generated by the findings of your dissertation, unusual data uncovered during your fieldwork, or interesting side issues that you were forced to put off in order to keep your dissertation taut and focused.&nbsp; Think twice about mentioning future projects that appear entirely unrelated to your current work. Departments will want you to be firmly established in one area before you go off into another.<br /><br />The relative importance of teaching versus research is a continuous and not a discrete variable.&nbsp; Even schools that emphasize teaching in their job listing will generally want evidence of scholarly engagement and publishing potential. It is a very competitive market for students out there, and virtually all institutions are under pressure to sell themselves via the quality of their faculty to the limited number of good students in the applicant pool.&nbsp; A good marker for the relative importance of teaching versus research is the teaching load.&nbsp; An institution with a 3-2 teaching load (a total of five courses taught per two-semester year) will expect more in the way of and value research more highly than one with a 3-3 load.<br /><br />If you work in a capital-intensive area, mention your track record of gaining grants and other sources of external funding.<br /><strong>Teaching</strong><br />In a similar fashion, the more the institution you are applying to diverges from Berkeley and the more your profile differs from the job description, the more expansive you should be in talking about your teaching and what you have to offer their students.&nbsp; If you have won a teaching award at Berkeley, don't make them wait until they read your CV to discover that fact.<br /><br />For letters sent to large universities where you will be expected to teach large, lecture courses and graduate seminars, little is needed except to convey that you have the necessary experience and/or background.&nbsp; Since the dominant pedagogical style is the same as that found at Berkeley, it will be assumed that you will be able to do the same for them.<br /><br />If you have TA'd some of the courses that (based on the job description) you would be expected to offer, let them know.&nbsp; If you have not had that opportunity, but your fields and research fall within the domain of the job description, you may want to add a line about how well prepared you are to teach such courses based on your training and research.<br /><br />If your profile does not correspond exactly to the description found in the job announcement, but you believe that you could nonetheless teach the required courses, explain the basis for your confidence. What strength would you bring to the department that would more than make up for your "otherness"?&nbsp; Departments may decide that they don't "need" another conventional European historian if you can convince them that you can handle the core courses and offer something new that they don't currently cover as well. In this case especially, think about doing some research so you can speak in more specific terms about how you would fit into and enhance the department's offerings. Help them visualize how you would strengthen them as a department.<br /><br />Small colleges will want to know that you are able to teach on a more intimate basis and are prepared to take the time to do it well. If you give them three generic lines about how "important" you consider your teaching responsibilities, don't expect much of a positive response.&nbsp; Spend a couple of paragraphs describing your teaching experience and philosophy, and how you would take advantage of the opportunity to create you own courses.<br /><br />If you've had the opportunity to design and teach your own course, tell them, briefly, how you went about it and the choices you made. Don't just say you're a good teacher, tell them why. Look over your teaching evaluations and pick out one or two consistent strengths to highlight. Drawing on your experience, talk about how you engage students and enhance their skills (especially writing) and intellectual development.<br /><br />For good, small colleges, the quality of the teaching offered to students is their stock-in- trade.&nbsp; Even the most research-oriented, small colleges take teaching undergraduates very seriously. You need to demonstrate that you take it seriously as well, and can talk about it using more than vague generalities and shop-worn cliches.<br />Closing/Enclosures<br />Wrap it up quickly.&nbsp; If you are going to be traveling for any significant portion of the job search season be sure to let them know how they can contact you (email, cellphone and/or a Pacific Bell message center account are particularly good options).<br /><br />Before closing, include a sentence where you list the materials you have enclosed (e.g., CV, dissertation abstract, transcripts, teaching statement/portfolio, writing samples, etc.) and are having sent separately (letters of recommendation).&nbsp; You will often be assembling multiple packets at the same time (as in midnight October 14th, midnight November 14th, etc.) for jobs that ask for different combinations of enclosures.&nbsp; In addition to telling them what they should have received, it serves as a handy list for you to check before sealing the envelope.<br /><br />Should you send a writing sample, even if they haven't asked for one? Unless the norm in your discipline is to never send more than they ask for, if you've been smart and have already run off thirty copies at two cents per page (that's only sixty cents for a thirty page chapter) by all means send it.&nbsp; That way it's in the file should someone become interested in you and want to read more.</p>]]></description>
	<dc:creator>Martin Jones</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/bookmarks/view/37457/nanofilt-filtering-and-trimming-of-long-read-sequencing-data</guid>
	<pubDate>Mon, 30 Jul 2018 12:01:52 -0500</pubDate>
	<link>https://bioinformaticsonline.com/bookmarks/view/37457/nanofilt-filtering-and-trimming-of-long-read-sequencing-data</link>
	<title><![CDATA[nanofilt: Filtering and trimming of long read sequencing data]]></title>
	<description><![CDATA[<p>Filtering on quality and/or read length, and optional trimming after passing filters.<br>Reads from stdin, writes to stdout.</p>
<p>Intended to be used:</p>
<ul>
<li>directly after fastq extraction</li>
<li>prior to mapping</li>
<li>in a stream between extraction and mapping</li>
</ul>
<p>https://github.com/wdecoster/nanofilt</p><p>Address of the bookmark: <a href="https://github.com/wdecoster/nanofilt" rel="nofollow">https://github.com/wdecoster/nanofilt</a></p>]]></description>
	<dc:creator>Jit</dc:creator>
</item>
<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/news/view/21312/r-for-microsoft-excel</guid>
	<pubDate>Wed, 18 Feb 2015 00:43:27 -0600</pubDate>
	<link>https://bioinformaticsonline.com/news/view/21312/r-for-microsoft-excel</link>
	<title><![CDATA[R for Microsoft Excel]]></title>
	<description><![CDATA[<div><p>If you currently use a spreadsheet like Microsoft Excel for data analysis, you might be interested in taking a look at this <a href="https://districtdatalabs.silvrback.com/intro-to-r-for-microsoft-excel-users" target="_blank">tutorial on how to transition from Excel to R</a>&nbsp;by Tony Ojeda. The tutorial explains how to use R functions in place of Excel formulas, including tools like =AVERAGE and =VLOOKUP. For the most part, it uses modern R packages to keep the R code clear and concise.</p><p>You'll likely still be using Excel as a data source, though, so you'll also want to check out this <a href="http://www.milanor.net/blog/?p=779" target="_blank">guide to importing data from Excel to R</a> from MilanoR.</p></div><p>Reference http://www.r-bloggers.com/an-r-tutorial-for-microsoft-excel-users/</p>]]></description>
	<dc:creator>Jitendra Narayan</dc:creator>
</item>

</channel>
</rss>