Cultivate your MSA to get better trees
Project description
Arbow: cultivate your multiple sequence aligment to get better trees
Name
We named this tool arbow as that would be the phonetic pronounciation of the short, endearing,
term for an arborist in Australia.
What it does
The goal of arbow is to automate and simplify the production of trees from multiple sequence alignments. The tool
has been developed in the context of viral phylogenomics.
NOTE SOME DEFAULTS HAVE CHANGED in v0.6.*:
- iqtree 2 is assumed by default, with an executable called iqtree (these come with new options to set your iqtree environment: -iv or --iqtree-version to specify the version (either 1 or 2), -ip or --iqtree-path to specify the path to the executable (assumes $PATH by default), and -ie or --iqtree-exec to define the executable (iqtree2 by default))
- no sites with missing data are filtered by default (use -mp or -mc to change this now)
- constant sites are by default those that have 100% of a single base (use -x or -c to change this)
In the current version (0.6.*) it:
- Reads an alignment in
multiFASTAformat - Calculates stats for each sequence in the alignment
- Trims 5/3 prime UTR regions --- defaults set to SARS-COV-2 (Genbank accession:
NC_045512.2) - Calculates stats per column in the alignment
- Allows the user to set a threshold of tolerable missing data in a column, and removes all non-conforming columns from the alignment. This can be defined in two ways:
- using the
-mpflag which defines a proportion of missing sites (e.g., 0.01 means at most 1% missing data) - using the
-mcflag which defines the count of missing sites (e.g., 2 means at most 2 missing sites) - one can still use
-mmoption, but that has been deprecated in favour of the-mcoption.-mmwill be removed in versionv0.8.0.
- using the
- From the remaining columns,
arbowfinds all theconstantcolumns according to twouserdefined criteria:allow missing data(i.e., a column with missing data can still count to towardsconstantsites if it meets other criteria), and a defined threshold of variation. This process one to smooth over any potential sequencing errors. This threshold can be defined in two ways:- the frequency of the major allow is equal to or larger than a threshold (i.e., if the threshold is set to 0.99 and there are 100 samples, 99 of which are
Aand one isG, that column would be counted as a constantA) --- use the-xoption. - if the total count of minor alleles is equal to or smaller than a threshold (i.e., if the threshold is 2 and there are 100 samples, 98 of which are
A, 1 isCand 1 isT, that column would be considered as a constantA) --- use the-coption.
- the frequency of the major allow is equal to or larger than a threshold (i.e., if the threshold is set to 0.99 and there are 100 samples, 99 of which are
- It then filters out all the
variablecolumns, and outputs the variable alignment as amultiFASTAalignment. - It runs
IQTreewith a few sensiblepresets--- it is now possible to run both IQTree1 and IQTree2.
Currently, in step 4 above, columns that have a single observed nucleotide (e.g., C) but still have missing data that were not filtered out in step 3 are counted towards the overall frequency of that base in the alignment. In other words, if a user specifies a maximum number of 20 missing bases, and a column with 5 missing bases but with A in all other samples, that column will count towards the overall frequency of A in the alignment (i.e., majority consensus imputation). This assumptions is less risky the larger the number of samples in the alignment.
For step 5, missing data (i.e., - and N) are all codes as N.
Tests are underway to figure out how these assumptions might affect the output.
Dependencies
- Python >=3.6
- IQTree 1.6+ or 2.0.4+
- BioPython
- Pandas
- NumPy
Installation
Brew
brew install iqtree
pip<3> install arbow
Conda
conda install -c bioconda iqtree
pip<3> install arbow
Running
- Generate a mulitple sequence alignment with your favourite aligner (e.g., MAFTT). Output a
multiFASTAfile. - Run
arbow <options> <aln.fa> - Open
tree-YYYY-MM-DD_HHMMSS.treefilein your favourite tree viewer (e.g, FigTree) - Open
tree-YYYY-MM-DD_HHMMSS_bb.treefileortree-YYYY-MM-DD_HHMMSS_alrt.treefilefor branches withultra-fast bootstrapsupport orSH-aLRTsupport only, respectively.
Data stream
When running arbow, by default a stream is output to the console (stdout).
Data about the each sequence in the alignment is prefixed with [SEQ], and is followed by:
- Count of each base (
A,C,G,T, andN–Nis any character other thanACGT) - Percent missing data
- A status column that has 0, 1, 2, or 3
*depending on whether the percent missing data is<0.5,>=0.5 and <1.0,>=1.0 and <5.0, or>=5, respectively.
Data about each column in the alignment is prefixed with [ALN], and is followed by:
- Position in the alignment
- Count of each base (bases counted will depend on whether all IUPAC codes are allowed or not - see below in usage)
Command line
Usage
Usage: arbow [OPTIONS] ALN
Options:
--version
-i, --all-iupac Print count of all IUPAC code for column
stats?
-s, --no-stream Stop streaming stats to console
-mm, --max-missing INTEGER Remove sites with 'mm' missing sites or more
[default: 20]
-x, --major-allele-freq FLOAT If major allele frequency is equal or larger
than consider the site constant. [default:
0.99]
-o, --out-var-aln TEXT Filename for alignment of variable sites.
[default: aln-2020-04-07-150443.aln]
-p, --prefix TEXT Prefix to append to IQTree output files.
[default: tree-2020-04-07-150443]
-iv, --iqtree-version [1|2] Version of IQTree to use. [default: 2]
-ip, --iqtree-path PATH Path to iqtree executable
-ie, --iqtree-exec TEXT The IQTree executable [default: iqtree2]
-t, --iqtree-threads INTEGER Number of cores to run IQtree [default: 4]
-m, --iqtree-models TEXT Substitution models to test. [default:
HKY,TIM2,GTR]
-f, --iqtree-freq TEXT Base frequency models to test. [default: F]
-r, --iqtree-rates TEXT Rate category models to test. [default: G,R]
-b, --iqtree-bb INTEGER Maximum number of UltraFast Bootstrap
iterations to attempt. [default: 1000]
-a, --iqtree-alrt INTEGER Number of replicates to perform SH-aLRT.
[default: 1000]
---iqtree-cmax INTEGER Maximum number of rate categories to test.
[default: 5]
-io, --iqtree-outgroup TEXT ID(s) of samples to be used as outgroup in
IQTree. (e.g., single: sample_1, multiple:
'sample_2,sample_3'. This option is ignore
if --use-ref-as-outgroup is selected.
-r, --ref-id TEXT Sequence ID of the reference [default:
MN908947.3]
-u, --use-ref-as-outgroup Use the reference sequence as the outgroup
in IQTree [default: False]
--five-prime-end INTEGER Last base of the 5' UTR region in 1-index in
the ref sequence [default: 265]
--three-prime-start INTEGER First base of the 3' UTR region in 1-index in
the ref sequence [default: 29675]
--include-const When outputting the clean alignment, leave
constant sites in the alignment. [default is
to remove]
-l, --log FILENAME Log file to store output. Use '-' to log to
stdout [default:
arbow-2020-05-05-153619.log]
--help Show this message and exit.
Default behaviour explained
By default, arbow will trim the 5' and 3' UTR regions.
Remove sites with any gaps in the alignment
Let us say that you wish to remove all sites in the alignment that have any missing data, and retain all complete columns:
arbow -x 1.0 -mc 0 <in.aln>
Keep all sites in an alignment (i.e., skip any filtering)
Let us say that you wish to keep all sites in the alignment, and you have an alignment with 200 sequences:
arbow <in.aln>
Keep constant sites in the clean alignment
arbow --include-const <in.aln>
Get help
arbow <-h|--help>
Get version
arbow --version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arbow-0.6.0.tar.gz.
File metadata
- Download URL: arbow-0.6.0.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3aafe7ceda73d38351f30386179022f13d2cbe8f06995109e6fbcaf60f02e88f
|
|
| MD5 |
a3573e6eff99315616f9235f33656f8c
|
|
| BLAKE2b-256 |
8e2b1dae92c575c05f637c93ae926610abab3ab4f515a6d359c26e27aa033f26
|
File details
Details for the file arbow-0.6.0-py3-none-any.whl.
File metadata
- Download URL: arbow-0.6.0-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ca894160b56a24f07c812374eb75563c16e0d3398cfd71e87774161997c35b3
|
|
| MD5 |
c94840689e69d67bbb09e9c367a942d2
|
|
| BLAKE2b-256 |
ca96634aea7442a1d63b7a0f96a915ca5e498b5cd4c65f5e64986327dce4ef3c
|