Skip to content

Repository files navigation

OMAmer - tree-driven and alignment-free protein assignment to subfamilies

OMAmer is a novel alignment-free protein family assignment method, which limits over-specific subfamily assignments and is suited to phylogenomic databases with thousands of genomes. It is based on an innovative method using evolutionary-informed k-mers for alignment-free mapping to ancestral protein subfamilies. Whilst able to reject non-homologous family-level assignments, it has provided better and quicker subfamily-level assignments than a method based on closest sequences (using DIAMOND).

Installation

Requires Python >= 3.8. Download the package from the PyPI, resolving the dependencies by using pip install omamer.

Alternatively, clone this repository and install manually.

Note: Python 3.12 is currently not supported, until the numba package is updated (issue).

Pre-Built Databases

Pre-built databases are available for the latest OMA release from the download section on the OMA Browser website.

Their names indicate the root-taxon parameter used. Other non-required parameters were left to default.

Note: databases included in the Zenodo upload from the manuscript are not supported by the most recent version of OMAmer. We recommend using the most recent release with databases built on the most recent OMA browser release.

omamer search - Searching a Database

Assign proteins to families and subfamilies in a pre-existing database.

Usage

Required arguments: --db, --query

usage: omamer search [-h] -d DB -q QUERY [--threshold THRESHOLD] [--family_alpha FAMILY_ALPHA] [-fo] [-n TOP_N_FAMS] [--reference_taxon REFERENCE_TAXON]
[-o OUT] [--include_extant_genes] [-c CHUNKSIZE] [-t {0,1,2,3,4,5,6,7,8}] [--log_level {debug,info,warning}] [--silent]

Arguments

Quick reference table

Short FlagFlagDefaultDescription
-d--dbPath to existing database (including filename)
-q--queryPath to FASTA formatted sequences
--threshold0.1Threshold applied on the OMAmer-score that is used to vary the specificity of predicted HOGs. The lower the theshold the more (over-)specific predicted HOGs will be.
--family_alpha1e-6Significance threshold used when filtering families.
-fo--family_onlyFalseIf set, only place at the family level. Useful for certain analysis. Note: subfamily_medianseqlen in the results is for the family level.
-n--top_n_fams1Number of top level families to place into. By default, placed into only the best scoring family.
-o--outstdoutPath to output. If not set, defaults to stdout.
--include_extant_genesInclude extant gene IDs as comma separated entry in results
-c--chunksize10000Number of queries to process at once.
-t--nthreads1Number of threads to use
--log_levelinfoLogging level (options debug, info, warning)
--silentSet to silence the output.

Output

Output is in the form of a tab-seperated value file (TSV), with metadata added to the header using !<tag>: <value>. A parser can be imported for further analysis in python as from omamer.results_reader import results_reader.

Output Columns

Query sequence identifier (qseqid)

The sequence identifier from the input FASTA-formatted sequences.

Predicted HOG identifier (hogid)

The identifier of the hierarchical orthologous group (HOG) in OMA, which you can access through the OMA browser search bar or its REST API (https://omabrowser.org/api/docs).

A HOG identifier is composed of the root-HOG identifier (following “HOG:” and before the first dot), which is followed by its sub-HOGs (before each subsequent dot). For example, for subfamily HOG:0487954.3l.27l, HOG:0487954 is the root-HOG (HOG without-parent), HOG:0487954.3l is its child and HOG:0487954.3l.27l its grandchild.

Predicted HOG taxonomic level (hoglevel)

The taxonomic level that the predicted HOG is defined at.

Family p-value (family_p)

p-value of having as many or more of k-mers in common under a binomial distribution. Reported in negative natural log units.

Family count (family_count)

Count of k-mers in common with the family / root level HOG.

Family normalised count (family_normcount)

Family count, normalised by the expected number of hits for the query's sequence length, with the family's k-mer content.

Sub-Family score (subfamily_score)

The OMAmer-score of the predicted HOG. At the subfamily level, this score captures the excess of similarity that is shared between the query and a given HOG, thus excluding the similarity with regions conserved in more ancestral HOGs.

Sub-Family count (subfamily_count)

Count of k-mers in common with the sub-family / HOG.

Query sequence length (qseqlen)

Count of k-mers in common with the sub-family / HOG.

Sub-Family median sequence length (subfamily_medianseqlen)

Median length of the sequences that are present in the predicted HOG. In the case of family-only placement, this is instead reported at the root-HOG level.

Query sequence overlap (qseq_overlap)

The proportion of the query sequence overlapping with k-mers of reference root-HOGs. This may be helpful to reject partially homologous matches that are problematic in some applications.

Sub-Family gene set (subfamily_geneset)

Optionally printed (see --include_extant_genes). Comma-seperated list of extant gene IDs of predicted HOG. The OMA browser can be used to find out more information. In particular, using the REST API, or via the Python API Client.

omamer mkdb - Building a Database

This is currently reliant on the OMA browser's database file and the species phylogeny of HOGs. Building using OrthoXML files available shortly.

Usage

Required arguments: --db, --oma_path

usage: omamer mkdb [-h] --db DB [--nthreads NTHREADS] [--min_fam_size MIN_FAM_SIZE] [--min_fam_completeness MIN_FAM_COMPLETENESS] [--logic {AND,OR}]
[--root_taxon ROOT_TAXON] [--hidden_taxa HIDDEN_TAXA] [--species SPECIES] [--reduced_alphabet] [--k K] --oma_path OMA_PATH
[--log_level {debug,info,warning}]

Arguments

FlagDefaultDescription
--dbPath to new database (including filename)
--nthreads1Number of threads to use
--min_fam_size6Only root-HOGs with a protein count passing this threshold are used.
--min_fam_completeness0.5Only root-HOGs passing this threshold are used. The completeness of a HOG is defined as the number of observed species divided by the expected number of species at the HOG taxonomic level.
--logicORLogic used between the two above arguments to filter root-HOGs. Options are "AND" or "OR".
--root_taxonroot of speciestree.nwkHOGs defined at, or descending from, this taxon are uses as root-HOGs.
--hidden_taxaThe proteins from these taxa are removed before the database computation. Usage: a file containing taxa on seperate lines (scientific name). These must match EXACTLY with the node name in the tree given.
--reduced_alphabetUse reduced alphabet from Linclust paper
--k6k-mer length
--oma_pathPath to a directory with both OmaServer.h5 and speciestree.nwk
--log_levelinfoLogging level

License

OMAmer is a free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

OMAmer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with OMAmer. If not, see http://www.gnu.org/licenses/.

Citation

Victor Rossier, Alex Warwick Vesztrocy, Marc Robinson-Rechavi, Christophe Dessimoz, OMAmer: tree-driven and alignment-free protein assignment to subfamilies outperforms closest sequence approaches, Bioinformatics, 2021;, btab219, https://doi.org/10.1093/bioinformatics/btab219

Code used for that paper is available here: DOI

About

OMAmer - tree-driven and alignment-free protein assignment to sub-families

Resources

Stars

23 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages