Bioutils: Difference between revisions

From QiuLab
Jump to navigation Jump to search
imported>Weigang
imported>Weigang
 
(59 intermediate revisions by the same user not shown)
Line 1: Line 1:
<span style="color: Seagreen;font-weight:bold;font-size:large;">BioPerl-based Sequence Utilities<span>
<span style="color: Seagreen;font-weight:bold;font-size:large;"><u>B</u>io<u>P</u>erl-based Sequence <u>Util</u>ities<span>
[[File:Seq-util.png|thumbnail|600px|right|'''Figure 1'''. Design and Methods of ''bioutils'']]
[[File:Seq-util.png|thumbnail|600px|right|'''Figure 1'''. Design and Methods of ''bputils'']]
==What is ''bioutils''?==
==What is ''bputils''?==
''bioutils'' are a suite of Perl scripts that provide convenient command-line accesses to popular BioPerl methods. Designed as UNIX-like utilities, these tools aim to circumvent the need for composing one-off BioPerl scripts for routine manipulations of sequences, alignments and trees.
''bputils'' is a suite of Perl scripts that provide convenient command-line access to popular BioPerl methods. Designed as UNIX utilities, these tools aim to circumvent a constant need (and urge) to compose one-off BioPerl scripts for routine manipulations of sequences, alignments and trees.


The initial release of ''bioutils'' consists of four utilities ('''Fig 1'''):
The initial release of ''bputils'' consists of four inter-connected utilities ('''Figure 1'''):
* '''bioseq''': a wrapper of BioPerl class Bio::Seq, with additional methods
* '''bioseq''': a wrapper of BioPerl class Bio::Seq (with additional methods)
* '''bioaln''': a wrapper of Bio::SimpleAlign, with additional methods
* '''bioaln''': a wrapper of Bio::SimpleAlign (which inherits Bio::Seq; with additional methods)
* '''biopop''': a wrapper of Bio::PopGen, with additional methods
* '''biopop''': a wrapper of Bio::PopGen (which can be converted from Bio::SimpleAlign; with additional methods)
* '''biotree''': a wrapper of Bio::tree, with additional methods
* '''biotree''': a wrapper of Bio::tree (with additional methods)


These utilities have been in development since 2002 in [[Main Page|the lab of Dr Weigang Qiu]] at Hunter College of the City University of New York. They are the main code base of the Qiu Lab, which specializes in microbial evolutionary genomics. They proved to be convenient, efficient, and popular among students and researchers. By releasing ''bioutils'' as an Open Source tool, we hope to (1) share our experience and (2) invite other developers to join the effort of making BioPerl more accessible.
These utilities have been in development since 2002 in [[Main Page|the lab of Dr Weigang Qiu]] at Hunter College of the City University of New York. They are the main code base of the Qiu Lab, which specializes in microbial evolutionary genomics. They proved to be convenient, efficient, and popular among students and researchers passing through the lab. By releasing ''bioutils'' as an Open Source tool (perhaps as a part of bioperl distribution), we hope to (1) share our tools and (2) invite other developers to join the effort of making BioPerl more accessible.
----
----
==Other Unix utilities for genomics==
* [http://www.bioperl.org/wiki/Bioperl_scripts BioPerl scripts] (This is probably where these utilities will eventually be housed)
* EMBOSS: [http://emboss.sourceforge.net/apps/ Official site]; [http://manuals.bioinformatics.ucr.edu/home/emboss a third-party manual]
* NEWICK Utilities: [http://cegg.unige.ch/newick_utils Official website]; [http://www.ncbi.nlm.nih.gov/pubmed/20472542 A publication]


==Demos==
==Live Demos==
===Basic Usage===
===Basic Usage===
* bioseq
<syntaxhighlight lang=bash">
<syntaxhighlight lang=bash">
grep -v "Description" ../../bio425/data/ge.dat | wc -l; or: grep -vc "Description" ../../bio425/data/ge.dat
bioseq -l foo.fasta # print seq names and lengths from FASTA (default format) file
grep "Description" ../../bio425/data/ge.dat | tr '\t' '\n'| grep -v "Desc" | wc -l
bioseq -r foo.fasta # reverse complement
grep -Pw "ERBB2|PGR|ESR1" ../../bio425/data/ge.dat
bioseq -t1 foo.fasta # translate in the +1 frame
bioseq -t3 foo.fasta # translate in +1, +2, and +3 frames
bioseq -t6 foo.fasta # translate in all 6 frames
bioseq -p'id:seq_1' foo.fasta # pick a sequence by ID
bioseq -p'order:3' foo.fasta # pick the 3rd sequence
bioseq -p're:Human' foo.fasta # pick all sequences labeled as "Human" (by regular expression)
bioseq -g foo.fasta # remove gaps
bioseq -z'CP003201' -o'genbank' # retrieve a GenBank file with accession
bioseq -z'CP003201' -o'fasta' # same file in FASTA
</syntaxhighlight>
</syntaxhighlight>
===Power usage===
* bioaln
<syntaxhighlight lang=bash">
<syntaxhighlight lang=bash">
grep -v "Description" ../../bio425/data/ge.dat | wc -l; or:  grep -vc "Description" ../../bio425/data/ge.dat
bioaln -i'fasta' -o'phylip' foo.fasta # convert FASTA alignment to PHYLIP
grep "Description" ../../bio425/data/ge.dat | tr '\t' '\n'| grep -v "Desc" | wc -l
bioaln -l foo.aln # print alignment length of a CLUSTALW (default format) file
grep -Pw "ERBB2|PGR|ESR1" ../../bio425/data/ge.dat
bioaln -s'100, 200' foo.aln # obtain an alignment slice
bioaln -m foo.aln # show only variable sites
bioaln -r'seq_2' foo.aln # set "seq_2" as reference (first) sequence
bioaln -g foo.aln # remove gapped sites
bioaln -p'seq_1,seq_3,seq_6' foo.aln # pick a subset of sequences
bioaln -d'seq_1,seq_3,seq_6' foo.aln # delele a subset of sequences
</syntaxhighlight>
</syntaxhighlight>
===Creative usage===
* biotree
<syntaxhighlight lang=bash">
biotree -l foo.newick # total tree length
biotree -e 'outgroup' foo.newick # re-root on a "outgroup"
biotree -z foo.newick # print pair-wise tree distances between leafs
biotree -p 'node1' -p 'node2' foo.newick # remove "node1" and node2"
biotree -s 'node1' -s 'node2' -s 'node3' -s'node4' foo.newick # subtree consisting ONLY of these nodes
</syntaxhighlight>
* biopop
<syntaxhighlight lang=bash">
biopop --stats 'pi,theta' foo.aln # print pi and theta of population (default: CLUSTALW alignment)
biopop -m foo.aln # print mismatch distribution
biopop -d foo.aln # print distance matrix (default: Jukes-Cantor model; should be back-tracked into "bioaln")
biopop -s foo.aln # obtain number of segregating sites (i.e., SNPs)
biopop -a foo.aln # get heterozygosity for each SNP site
</syntaxhighlight>
 
===Power usage (with pipes)===
<syntaxhighlight lang=bash">
bioseq -p'order:5' foo.fasta | bioseq -s'100,200' | bioseq -r | bioseq -t1 # pick, subseq, revcom, and translate
bioaln -o'fasta' foo.aln | bioseq -g # remove gaps within individual sequences
bioaln -o'fasta' foo.aln | bioseq -t1 | bioaln -i'fasta' # turn a nucleotide alignment into a peptide alignment
biotree -s'otu1' -s'otu2' -s'otu3' foo.newick | biotree -l # subset a large tree and get total tree length
</syntaxhighlight>
 
===Creative usage (with BASH)===
<syntaxhighlight lang=bash">
<syntaxhighlight lang=bash">
echo -ne ">lookup\nATG\n" | bioseq -t1 # Lookup a codon product
echo -ne ">lookup\nATG\n" | bioseq -t1 # Lookup a codon product
len=$(bioaln -l foo.aln); len_degap=$(bioaln -g foo.aln | bioaln -l); echo "$len-$len_degap" | bc -l # count alignment gaps
for i in {1..100}; do bioaln --boot foo.aln >> foo.boot; done # bootstrap an alignment (with replacement)
</syntaxhighlight>
===Even-more powerful usage (with other applications)===
<syntaxhighlight lang=bash">
# Permutation Trait Probability test for tree-ness:
for i  in {1..100); do
    bioaln -P -i'fasta' -o'fasta' nt.fas > nt.permuted.fas;
    FastTree -nt nt.permuted.fas 2> /dev/null | biotree -l >> tree-length.txt # tree length of permuted alignment
done;
</syntaxhighlight>
</syntaxhighlight>
----
----


==Full documentation==
==Full documentation==
<div class="mw-collapsible mw-collapsed" style="width:100%">
POD document for '''bioseq'''
<div class="mw-collapsible-content">
* NAME
<p>bioseq - Fasta sequence editing module based on BioPerl.</p>
* SYNOPSIS
<p><b>bioseq</b> [options] [sequence file]</p>
* DESCRIPTION
<p><b>bioseq</b> will read a sequence file and act upon it by doing the following - reformat input (default is fasta) to Genbank or EMBL formats, delete specified sequences, generate overlapping subsequence with a specified window size, generate the reverese complementary sequence, for nucleic acid sequences only, take input list of sequences apart into individual sequence files, extract a specified subset of the sequence, linearize the sequence, remove gaps, find the longest open reading frame (ORF), remove stop codons, give percentage composition of specified amino acids or nuclic acid bases, split the sequences as specified by the user, translate a specific frame of input sequence, or extract a specific gene ID from multiple file sequences. By default, <b>bioseq</b> will assume that both the input and the output are in FASTA format.</p>
* OPTIONS
<dl>
<dt><b>--help, -h</b></dt>
<dd>
<p>Print a brief help message and exit.</p>
        Usage: bioseq -h &lt;keyword&gt;
</dd>
<dt><b>--man, -m</b></dt>
<dd>
<p>Prints the manual page and exit.</p>
        Usage: bioseq -m &lt;keyword&gt;
</dd>
<dt><b>--input, -i</b> &#39;format&#39;</dt>
<dd>
<p>Input file format. By default, this is &#39;fasta&#39;. For Genbank format, use &#39;genbank&#39;. For EMBL format, use &#39;embl&#39;.</p>
        Usage: bioseq -i &#39;genbank&#39; input_file
</dd>
<dt id="output--o-format"><b>--output, -o</b> &#39;format&#39;</dt>
<dd>
<p>Output file format. By default, this is &#39;fasta&#39;.For Genbank format, use &#39;genbank&#39;. For EMBL format, use &#39;embl&#39;.</p>
        Usage: bioseq -o &#39;EMBL&#39; input_file
</dd>
<dt id="noseq--n"><b>--noseq, -n</b></dt>
<dd>
<p>Print number of sequences specified by n.</p>
        Usage: bioseq -n input_file
</dd>
<dt id="sub--s-min-max"><b>--sub, -s</b> &#39;min,max&#39;</dt>
<dd>
<p>Select substring (of 1st sequence),</p>
        Usage: bioseq -s &#39;&lt;beginning index&gt;, &lt;ending index&gt;&#39; input_file
        Example:  bioseq -s&#39;20,80&#39; input_file (or --sub&#39;20,80&#39; or -s=&#39;20,80&#39; or --sub=&#39;20,80&#39;)
</dd>
<dt id="lengths--l"><b>--lengths, -l</b></dt>
<dd>
<p>Print all sequence lengths.</p>
        Usage: bioseq -l
</dd>
<dt id="leadgaps--y"><b>--leadgaps, -y</b></dt>
<dd>
<p>Count and return the number of leading gaps in each sequence.</p>
        Usage: bioseq -y
</dd>
<dt id="pick--p-tag:value"><b>--pick, -p</b> &#39;tag:value&#39;</dt>
<dd>
<p>Select a single sequence or a comma-separated list of sequences, e.g, --pick &#39;id:foo&#39; by id --pick &#39;order:2&#39; by order --pick &#39;re:REGEX&#39; using a regular expression (only one regex is expected)</p>
<p>Specifically for a list of sequences, --pick &#39;id:foo,bar&#39; list by id --pick &#39;order:2,3&#39; list by order --pick &#39;order:2-10&#39; list by range</p>
        Usage: bioseq -p &#39;id:&lt;number&gt;&#39; input_file
</dd>
<dt id="del--d-tag:value"><b>--del, -d</b> &#39;tag:value&#39;</dt>
<dd>
Delete a sequence or a comma-separated list of sequences, eg,
--del &#39;id:foo&#39;        by id
--del &#39;order:2&#39;        by order
--del &#39;length:n&#39;      by min length, where &#39;n&#39; is length
--del &#39;ambig:x&#39;        by min % ambiguous base/aa, where &#39;x&#39; is the %
--del &#39;id:foo,bar&#39;    list by id
--del &#39;re:REGEX&#39;      using a regular expression (only one regex is expected)
        Usage: bioseq --del &#39;id:&lt;number&gt;&#39; input_file
</dd>
<dt id="revcom--r"><b>--revcom, -r</b></dt>
<dd>
<p>Reverse complement</p>
        Usage: bioseq -r input_file
</dd>
<dt id="slidingwindow--k-window_size"><b>--slidingwindow, -k</b> &#39;window_size&#39;</dt>
<dd>
<p>Generate overlapping subsequence with a specified window size (default 1)</p>
        Usage: bioseq -k &#39;&lt;index of subsequence&gt;&#39; input_file
</dd>
<dt id="translate--t-1-3-6"><b>--translate, -t</b> [1|3|6]</dt>
<dd>
<p>Translate in 1, 3, or 6 frames. eg, -t1, -t3, or -t6.</p>
        Usage: bioseq -t3 input_file
</dd>
<dt id="shred--c"><b>--shred, -c</b></dt>
<dd>
<p>Shred into individual sequences</p>
        Usage: bioseq -c input_file
</dd>
<dt id="linearize--L"><b>--linearize, -L</b></dt>
<dd>
<p>Linearize FASTA.</p>
        Usage: bioseq -L fasta_file
</dd>
<dt id="extract--e"><b>--extract, -e</b></dt>
<dd>
<p>Extract in-frame sequences.</p>
        Usage: bioseq -e input_file
</dd>
<dt id="nogaps--g"><b>--nogaps, -g</b></dt>
<dd>
<p>Remove gaps</p>
        Usage: bioseq -g input_file
</dd>
<dt id="longest-orf--C"><b>--longest-orf, -C</b></dt>
<dd>
<p>Output the frame that gives the longest ORF.</p>
        Usage: bioseq -C input_file
</dd>
<dt id="removestop--x"><b>--removestop, -x</b></dt>
<dd>
<p>Remove stop codons (for e.g., PAML input)</p>
        Usage: bioseq -x input_file
</dd>
<dt id="anonymize--a-n"><b>--anonymize, -a</b> &#39;n&#39;</dt>
<dd>
<p>Replace sequence IDs with serial IDs &#39;n&#39; characters long, including a leading &#39;S&#39; (e.g., -a&#39;5&#39; gives S0001). Produces a sed script file with a &#39;.sed&#39; suffix that may be used with sed&#39;s &#39;-f&#39; argument. If the filename is &#39;-&#39;, the sed file is named STDOUT.sed instead. The sed filename is specified on STDERR.</p>
        Usage: bioseq -a &lt;number&gt; input_file
</dd>
<dt id="prefix-PREFIX"><b>--prefix</b> &#39;PREFIX&#39;</dt>
<dd>
<p>Used in conjunction with --anonymize. This lets you specify a custom prefix for the anonymized sequence IDs given when using the --anonymize option. If this is given, then the whole prefix will count toward the total ID length. For example: suppose the prefix chosen is SEQ, and that for --anonymize you supplied 5. Then the maximum id length is 5, so there is room for only two more digits. e.g., SEQ01 atg... SEQ02 atg... SEQ03 atc...</p>
<p>If there are enough sequences that the length of the prefix plus the length of the digit portion exceeds the length given to --anonymize, a warning will be given: aln-manipulations.pl -a 4 --prefix=SEQ # output SEQ1 atg... ... SEQ10 atc...</p>
# more output
WARNING: Anonymized ID length exceeded requested length: try a different length or prefix.
</dd>
<dt id="composition--w"><b>--composition, -w</b></dt>
<dd>
<p>Base or AA composition.</p>
        Usage: bioseq -w input_file
</dd>
<dt id="split--S-split_at"><b>--split, -S</b> &#39;split_at&#39;</dt>
<dd>
<p>Split the input sequence file into several smaller files with &#39;split_at&#39; sequences per file. For instance, to split a file into several smaller files with 100000 sequences each, you would run:</p>
bioseq -S 100000 seq.fasta
<p>The output files will be named with the label &quot;split_N&quot; according to the input file (or with the STDIN prefix if the file is read via standard in), where N denotes the &quot;part&quot; or &quot;split&quot; number.</p>
</dd>
<dt id="retrieveseq--z-sequence-retriever-using-GenBank-accession"><b>--retrieveseq, -z</b> &#39;sequence retriever using GenBank accession&#39;</dt>
<dd>
    Usage: bioseq -z [Accession]
    Retrieves the sequence from GenBank using the provided GenBank accession. Prints out text in a fasta file.
  EXAMPLE:
    bioseq -z X83553
  OUTPUT:
    &gt;X83553 B.garinii (PHei strain) opsC gene.
    ATGAAAAAGAATACATTAAGTGCGATATTAATGACTTTATTTTTATTTATATCTTGTAAT
    AATTCAGGTGGGGATACTGCATCTACTAATCCTGATGAGTCTGCGAAAGGACCTAATCTT
    ATAGAAATAAGCAAAAAAATTACAGATTCTAATGCATTTGTACTGGCTGTGAAAGAAGTT
    GAGGCTTTGATCTCATCTATAGATGAACTTGCTAATAAAGCTATTGGTAAAAAAATAAAT
    CAAAATGGTTTAGATGCTGATGCTAATCACAACGGATCATTGTTAGCAGGAGCCCATGCA
    ATATCAACTCTAATAAAACAAAAAACAGATGGATTGAAAGATCTAGAAGGGTTAAGTAAA
    GAAATTGCAAAGGTGAAGGAATGTTCCGATAAATTTACTAAAAAGCTAACAGATAGTCAT
    GCACAGCTTGGAGCAGTTGGTGGTGCTATTAATGATGATCGTGCAAAAGAAGCTATTTTA
    AAAACACATGGGACTAACGATAAGGGTGCTAAAGAACTTAAAGAGTTATCTGAATCAGTA
    GAAAGCTTGGCAAAAGCAGCTCAAGCAGCATTAGCTAATTCAGTTAAAGAGCTTACAAGT
    CCTGTTGTGGCAGAAAGTCCAAAAAAACCTTAA
</dd>
<dt id="dotplot--D-draw_dotplot"><b>--dotplot, -D</b> &#39;draw_dotplot&#39;</dt>
<dd>
<p>Extract two sequences from input file and generate a dotplot.</p>
    Usage: bioseq -D &#39;id1,id2,window_size,slider&#39; fasta_file
   
<p>Id1 and Id2 are extracted with their corresponding sequences. Be sure to use the entire sequence identifer, as this is a whole string match. Window_size corresponds to the number of character you would like to compare (Default window is 10). Slider is the number of windows to compare (Default slider is 10). The sequence corresponding to ID1 will appear on the X axis (row) and ID2 on the Y axis (column). This method will work on both DNA and Amino Acids.</p>
  Example:
    Sample Input:
    &gt;id1
    ATACGA
    &gt;id2
    ATACGA
    Command: bioseq -D &#39;id1,id2,3&#39;
    Output:
        A T A C G A
    A  *
    T    *
    A      *
    C
    G
    A
    A
    C
    A
    A
    T
    G
<p><b>--rename, -R</b> &#39;rename_id&#39;</p>
    Usage: bioseq -R [file_with_new_names] file_to_be_changed.fasta
    Ex: bioseq -D list.txt test-bioseq.nuc
  Input:
    list.txt:
    VS116:7:310:IGS:11      VS116
    B31:1:100:IGS:11        B31
    *Left column is the pattern to be replaced by the right column
    file_to_be_changed.fasta:
    &gt;VS116:7:310:IGS:11
    AATTTCAAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTGAAATTTTTCTAT
    TGGATAAATTCTATACAAGAAGGTAAATA
    &gt;B31:1:100:IGS:11
    AATTTTTAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTTAAAACTTTTCTA
    TTGGATAGATTTTATACAAAGAAGGTAATA
  Output:
    &gt;VS116
    AATTTCAAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTGAAATTTTTCTAT
    TGGATAAATTCTATACAAGAAGGTAAATA
    &gt;B31
    AATTTTTAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTTAAAACTTTTCTA
    TTGGATAGATTTTATACAAAGAAGGTAATA
</dd>
</dl>
* EXAMPLES
<p>Section under construction...</p>
* REQUIRES
<p>Perl 5.010, BioPerl</p>
* SEE ALSO
  perl(1)
* AUTHORS
** Weigang Qiu at genectr.hunter.cuny.edu
** Y&ouml;zen Hern&aacute;ndez yzhernand at gmail dot com
** Levy Vargas levy dot vargas at gmail dot com
</div>
</div>
<div class="mw-collapsible mw-collapsed" style="width:100%">
POD document for '''bioaln'''
<div class="mw-collapsible-content">This text should be hidden by default.</div>
</div>
<div class="mw-collapsible mw-collapsed" style="width:100%">
POD document for '''biopop'''
<div class="mw-collapsible-content">This text should be hidden by default.</div>
</div>
<div class="mw-collapsible mw-collapsed" style="width:100%">
POD document for '''biopop'''
<div class="mw-collapsible-content">This text should be hidden by default.</div>
</div>
----
----


==Release notes==
==Release 1.0 Notes==
* Installation
* Dependency
----
----


==Main contributors==
==Contributors==
* Yozen Hernandez
* Yozen Hernandez
* Levy Vargas
* Pedro Pagan
* Che Martin
* James Haven
* Girish Ramrattan
* Raymond Liang
* Saymon Akther
* Daniel Packer
* Weigang Qiu
* Weigang Qiu
* Pedro Pagan
* Levy Vargas
----
----

Latest revision as of 20:47, 8 October 2014

BioPerl-based Sequence Utilities

Figure 1. Design and Methods of bputils

What is bputils?

bputils is a suite of Perl scripts that provide convenient command-line access to popular BioPerl methods. Designed as UNIX utilities, these tools aim to circumvent a constant need (and urge) to compose one-off BioPerl scripts for routine manipulations of sequences, alignments and trees.

The initial release of bputils consists of four inter-connected utilities (Figure 1):

  • bioseq: a wrapper of BioPerl class Bio::Seq (with additional methods)
  • bioaln: a wrapper of Bio::SimpleAlign (which inherits Bio::Seq; with additional methods)
  • biopop: a wrapper of Bio::PopGen (which can be converted from Bio::SimpleAlign; with additional methods)
  • biotree: a wrapper of Bio::tree (with additional methods)

These utilities have been in development since 2002 in the lab of Dr Weigang Qiu at Hunter College of the City University of New York. They are the main code base of the Qiu Lab, which specializes in microbial evolutionary genomics. They proved to be convenient, efficient, and popular among students and researchers passing through the lab. By releasing bioutils as an Open Source tool (perhaps as a part of bioperl distribution), we hope to (1) share our tools and (2) invite other developers to join the effort of making BioPerl more accessible.


Other Unix utilities for genomics

Live Demos

Basic Usage

  • bioseq
bioseq -l foo.fasta # print seq names and lengths from FASTA (default format) file
bioseq -r foo.fasta # reverse complement
bioseq -t1 foo.fasta # translate in the +1 frame
bioseq -t3 foo.fasta # translate in +1, +2, and +3 frames
bioseq -t6 foo.fasta # translate in all 6 frames
bioseq -p'id:seq_1' foo.fasta # pick a sequence by ID
bioseq -p'order:3' foo.fasta # pick the 3rd sequence
bioseq -p're:Human' foo.fasta # pick all sequences labeled as "Human" (by regular expression)
bioseq -g foo.fasta # remove gaps
bioseq -z'CP003201' -o'genbank' # retrieve a GenBank file with accession
bioseq -z'CP003201' -o'fasta' # same file in FASTA
  • bioaln
bioaln -i'fasta' -o'phylip' foo.fasta # convert FASTA alignment to PHYLIP
bioaln -l foo.aln # print alignment length of a CLUSTALW (default format) file
bioaln -s'100, 200' foo.aln # obtain an alignment slice
bioaln -m foo.aln # show only variable sites
bioaln -r'seq_2' foo.aln # set "seq_2" as reference (first) sequence
bioaln -g foo.aln # remove gapped sites
bioaln -p'seq_1,seq_3,seq_6' foo.aln # pick a subset of sequences
bioaln -d'seq_1,seq_3,seq_6' foo.aln # delele a subset of sequences
  • biotree
biotree -l foo.newick # total tree length
biotree -e 'outgroup' foo.newick # re-root on a "outgroup"
biotree -z foo.newick # print pair-wise tree distances between leafs
biotree -p 'node1' -p 'node2' foo.newick # remove "node1" and node2"
biotree -s 'node1' -s 'node2' -s 'node3' -s'node4' foo.newick # subtree consisting ONLY of these nodes
  • biopop
biopop --stats 'pi,theta' foo.aln # print pi and theta of population (default: CLUSTALW alignment)
biopop -m foo.aln # print mismatch distribution
biopop -d foo.aln # print distance matrix (default: Jukes-Cantor model; should be back-tracked into "bioaln")
biopop -s foo.aln # obtain number of segregating sites (i.e., SNPs)
biopop -a foo.aln # get heterozygosity for each SNP site

Power usage (with pipes)

bioseq -p'order:5' foo.fasta | bioseq -s'100,200' | bioseq -r | bioseq -t1 # pick, subseq, revcom, and translate
bioaln -o'fasta' foo.aln | bioseq -g # remove gaps within individual sequences
bioaln -o'fasta' foo.aln | bioseq -t1 | bioaln -i'fasta' # turn a nucleotide alignment into a peptide alignment
biotree -s'otu1' -s'otu2' -s'otu3' foo.newick | biotree -l # subset a large tree and get total tree length

Creative usage (with BASH)

echo -ne ">lookup\nATG\n" | bioseq -t1 # Lookup a codon product
len=$(bioaln -l foo.aln); len_degap=$(bioaln -g foo.aln | bioaln -l); echo "$len-$len_degap" | bc -l # count alignment gaps
for i in {1..100}; do bioaln --boot foo.aln >> foo.boot; done # bootstrap an alignment (with replacement)

Even-more powerful usage (with other applications)

# Permutation Trait Probability test for tree-ness:
for i  in {1..100); do 
    bioaln -P -i'fasta' -o'fasta' nt.fas > nt.permuted.fas;
    FastTree -nt nt.permuted.fas 2> /dev/null | biotree -l >> tree-length.txt # tree length of permuted alignment
done;

Full documentation

POD document for bioseq

  • NAME

bioseq - Fasta sequence editing module based on BioPerl.

  • SYNOPSIS

bioseq [options] [sequence file]

  • DESCRIPTION

bioseq will read a sequence file and act upon it by doing the following - reformat input (default is fasta) to Genbank or EMBL formats, delete specified sequences, generate overlapping subsequence with a specified window size, generate the reverese complementary sequence, for nucleic acid sequences only, take input list of sequences apart into individual sequence files, extract a specified subset of the sequence, linearize the sequence, remove gaps, find the longest open reading frame (ORF), remove stop codons, give percentage composition of specified amino acids or nuclic acid bases, split the sequences as specified by the user, translate a specific frame of input sequence, or extract a specific gene ID from multiple file sequences. By default, bioseq will assume that both the input and the output are in FASTA format.

  • OPTIONS
--help, -h

Print a brief help message and exit.

       Usage: bioseq -h <keyword>
--man, -m

Prints the manual page and exit.

       Usage: bioseq -m <keyword> 
--input, -i 'format'

Input file format. By default, this is 'fasta'. For Genbank format, use 'genbank'. For EMBL format, use 'embl'.

       Usage: bioseq -i 'genbank' input_file
--output, -o 'format'

Output file format. By default, this is 'fasta'.For Genbank format, use 'genbank'. For EMBL format, use 'embl'.

       Usage: bioseq -o 'EMBL' input_file
--noseq, -n

Print number of sequences specified by n.

       Usage: bioseq -n input_file
--sub, -s 'min,max'

Select substring (of 1st sequence),

       Usage: bioseq -s '<beginning index>, <ending index>' input_file
       Example:  bioseq -s'20,80' input_file (or --sub'20,80' or -s='20,80' or --sub='20,80')
--lengths, -l

Print all sequence lengths.

       Usage: bioseq -l
--leadgaps, -y

Count and return the number of leading gaps in each sequence.

       Usage: bioseq -y
--pick, -p 'tag:value'

Select a single sequence or a comma-separated list of sequences, e.g, --pick 'id:foo' by id --pick 'order:2' by order --pick 're:REGEX' using a regular expression (only one regex is expected)

Specifically for a list of sequences, --pick 'id:foo,bar' list by id --pick 'order:2,3' list by order --pick 'order:2-10' list by range

       Usage: bioseq -p 'id:<number>' input_file
--del, -d 'tag:value'
Delete a sequence or a comma-separated list of sequences, eg, --del 'id:foo' by id --del 'order:2' by order --del 'length:n' by min length, where 'n' is length --del 'ambig:x' by min % ambiguous base/aa, where 'x' is the % --del 'id:foo,bar' list by id --del 're:REGEX' using a regular expression (only one regex is expected) Usage: bioseq --del 'id:<number>' input_file
--revcom, -r

Reverse complement

       Usage: bioseq -r input_file
--slidingwindow, -k 'window_size'

Generate overlapping subsequence with a specified window size (default 1)

       Usage: bioseq -k '<index of subsequence>' input_file
--translate, -t [1|3|6]

Translate in 1, 3, or 6 frames. eg, -t1, -t3, or -t6.

       Usage: bioseq -t3 input_file
--shred, -c

Shred into individual sequences

       Usage: bioseq -c input_file
--linearize, -L

Linearize FASTA.

       Usage: bioseq -L fasta_file
--extract, -e

Extract in-frame sequences.

       Usage: bioseq -e input_file
--nogaps, -g

Remove gaps

       Usage: bioseq -g input_file
--longest-orf, -C

Output the frame that gives the longest ORF.

       Usage: bioseq -C input_file
--removestop, -x

Remove stop codons (for e.g., PAML input)

       Usage: bioseq -x input_file
--anonymize, -a 'n'

Replace sequence IDs with serial IDs 'n' characters long, including a leading 'S' (e.g., -a'5' gives S0001). Produces a sed script file with a '.sed' suffix that may be used with sed's '-f' argument. If the filename is '-', the sed file is named STDOUT.sed instead. The sed filename is specified on STDERR.

       Usage: bioseq -a <number> input_file
--prefix 'PREFIX'

Used in conjunction with --anonymize. This lets you specify a custom prefix for the anonymized sequence IDs given when using the --anonymize option. If this is given, then the whole prefix will count toward the total ID length. For example: suppose the prefix chosen is SEQ, and that for --anonymize you supplied 5. Then the maximum id length is 5, so there is room for only two more digits. e.g., SEQ01 atg... SEQ02 atg... SEQ03 atc...

If there are enough sequences that the length of the prefix plus the length of the digit portion exceeds the length given to --anonymize, a warning will be given: aln-manipulations.pl -a 4 --prefix=SEQ # output SEQ1 atg... ... SEQ10 atc...

# more output
WARNING: Anonymized ID length exceeded requested length: try a different length or prefix.
--composition, -w

Base or AA composition.

       Usage: bioseq -w input_file
--split, -S 'split_at'

Split the input sequence file into several smaller files with 'split_at' sequences per file. For instance, to split a file into several smaller files with 100000 sequences each, you would run:

bioseq -S 100000 seq.fasta

The output files will be named with the label "split_N" according to the input file (or with the STDIN prefix if the file is read via standard in), where N denotes the "part" or "split" number.

--retrieveseq, -z 'sequence retriever using GenBank accession'
Usage: bioseq -z [Accession] Retrieves the sequence from GenBank using the provided GenBank accession. Prints out text in a fasta file. EXAMPLE: bioseq -z X83553 OUTPUT: >X83553 B.garinii (PHei strain) opsC gene. ATGAAAAAGAATACATTAAGTGCGATATTAATGACTTTATTTTTATTTATATCTTGTAAT AATTCAGGTGGGGATACTGCATCTACTAATCCTGATGAGTCTGCGAAAGGACCTAATCTT ATAGAAATAAGCAAAAAAATTACAGATTCTAATGCATTTGTACTGGCTGTGAAAGAAGTT GAGGCTTTGATCTCATCTATAGATGAACTTGCTAATAAAGCTATTGGTAAAAAAATAAAT CAAAATGGTTTAGATGCTGATGCTAATCACAACGGATCATTGTTAGCAGGAGCCCATGCA ATATCAACTCTAATAAAACAAAAAACAGATGGATTGAAAGATCTAGAAGGGTTAAGTAAA GAAATTGCAAAGGTGAAGGAATGTTCCGATAAATTTACTAAAAAGCTAACAGATAGTCAT GCACAGCTTGGAGCAGTTGGTGGTGCTATTAATGATGATCGTGCAAAAGAAGCTATTTTA AAAACACATGGGACTAACGATAAGGGTGCTAAAGAACTTAAAGAGTTATCTGAATCAGTA GAAAGCTTGGCAAAAGCAGCTCAAGCAGCATTAGCTAATTCAGTTAAAGAGCTTACAAGT CCTGTTGTGGCAGAAAGTCCAAAAAAACCTTAA
--dotplot, -D 'draw_dotplot'

Extract two sequences from input file and generate a dotplot.

   Usage: bioseq -D 'id1,id2,window_size,slider' fasta_file
   

Id1 and Id2 are extracted with their corresponding sequences. Be sure to use the entire sequence identifer, as this is a whole string match. Window_size corresponds to the number of character you would like to compare (Default window is 10). Slider is the number of windows to compare (Default slider is 10). The sequence corresponding to ID1 will appear on the X axis (row) and ID2 on the Y axis (column). This method will work on both DNA and Amino Acids.

 Example:
   Sample Input:
   >id1
   ATACGA
   >id2
   ATACGA
   Command: bioseq -D 'id1,id2,3'
   Output:
       A T A C G A
   A   *
   T     *
   A       *
   C
   G
   A
   A
   C
   A
   A
   T
   G

--rename, -R 'rename_id'

   Usage: bioseq -R [file_with_new_names] file_to_be_changed.fasta
   Ex: bioseq -D list.txt test-bioseq.nuc
 Input:
   list.txt:
   VS116:7:310:IGS:11      VS116
   B31:1:100:IGS:11        B31
   *Left column is the pattern to be replaced by the right column
   file_to_be_changed.fasta:
   >VS116:7:310:IGS:11
   AATTTCAAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTGAAATTTTTCTAT
   TGGATAAATTCTATACAAGAAGGTAAATA
   >B31:1:100:IGS:11
   AATTTTTAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTTAAAACTTTTCTA
   TTGGATAGATTTTATACAAAGAAGGTAATA
 Output:
   >VS116
   AATTTCAAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTGAAATTTTTCTAT
   TGGATAAATTCTATACAAGAAGGTAAATA
   >B31
   AATTTTTAAAATATAATATAAAAACAGCTAATCCAATAGAAAAATTTTAAAACTTTTCTA
   TTGGATAGATTTTATACAAAGAAGGTAATA
  • EXAMPLES

Section under construction...

  • REQUIRES

Perl 5.010, BioPerl

  • SEE ALSO
 perl(1)
  • AUTHORS
    • Weigang Qiu at genectr.hunter.cuny.edu
    • Yözen Hernández yzhernand at gmail dot com
    • Levy Vargas levy dot vargas at gmail dot com

POD document for bioaln

This text should be hidden by default.

POD document for biopop

This text should be hidden by default.

POD document for biopop

This text should be hidden by default.

Release 1.0 Notes

  • Installation
  • Dependency

Contributors

  • Yozen Hernandez
  • Levy Vargas
  • Pedro Pagan
  • Che Martin
  • James Haven
  • Girish Ramrattan
  • Raymond Liang
  • Saymon Akther
  • Daniel Packer
  • Weigang Qiu