Transcript Identification and Selection (TIdeS) is a machine learning approach to discern pORFs in the correct reading frame with substantial improvement over other popular tools, while providing support for additional non-standard genetic codes. Additionally, TIdeS can be used to classify ORFs into several user-defined categories from highly contaminated datasets (e.g., parasite + host, kleptoplasts, big "dirty" protists) or broadly into "eukaryotic" versus "non-eukaryotic" using the metagenomic classifier Kraken2.
Note that TIdeS is only supported on UNIX systems (linux and MacOS).
Install with mamba (recommended)
mamba create -n tides-ml
mamba activate tides-ml
mamba install -c bioconda tides-ml
pip install tides-ml
Afterwards, ensure that the following dependencies are installed and in your path:
Dependencies
Feel free to use your own if you choose! Alternatively, we provide a bash script to create a database from six diverse eukaryotes, representing a broad yet compact database.
./TIdeS/util/prep_tides_db.sh
- FASTA formatted transcriptome assembly
- Taxon name (e.g., Homo sapiens, Op_me_Hsap)
- Protein database (can be prepared by "prep_tides_db.sh" in the util folder)
- Note: examplar commands can be found in the orf_call_and_decontam.sh script found in the examples folder.
tides -i <transcriptome-assembly> -o <taxon-name> -d <protein-database>
TIdeS does support several alternative genetic codes (i.e., reassigned stop-to-sense codons) For example, using 'ciliate' genetic code (translation table 6; NCBI translation tables:
tides -i <transcriptome-assembly> -o <taxon-name> -d <protein-database> -g 6
Inputs
- FASTA formatted transcriptome assembly
- Taxon/project name (e.g., Durisnkia baltica, Dinotoms)
- Table of annotated sequence names (see examples folder) OR path to a formatted Kraken2 database
- Python scripts for generating composition plots (
orf_composition.py
) and selection of sequences based on composition metrics (seqs_by_composition.py
) can be found in the util folder - Note: examplar commands can be found in the
orf_call_and_decontam.sh
script found in the examples folder.
Using user-defined table of annotated sequences:
tides -i <Predicted-ORFs> -o <taxon-name> -c <annotated-seqs-table>
Using Kraken2 to identify non-eukaryotic sequences:
tides -i <Predicted-ORFs> -o <taxon-name> -c -k <kraken2-database>
Please note that there must be at least 25 annotated sequences for each class (this includes automatic classification with Kraken2).
The <annotated-seqs-table>
should include sequence names and their category separated by tabs. Note that these sequences should be present within the input FASTA file as well. Please aim to include at least 25 sequences for each category, although more (up to ~200) is great!
seq1 human
seq2 lunch
seq3 lunch
seq4 human
seq5 lunch
...
Inputs
- FASTA formatted transcriptome assembly
- Taxon/project name (e.g., Durisnkia baltica, Dinotoms)
- Path to a trained TIdeS model ('.pkl' file)
- Note: examplar commands for using a prior ORF-prediction model and prior ORF classification model are provided
tides -i <transcriptome-assembly> -o <taxon-name> -m <TIdeS.pkl-file>
Command | Comment |
---|---|
-h , --help |
Print the help message |
-i , --fin <STRING> |
FASTA formatted file. |
-o , --taxon <STRING> |
Name for your taxon, project, outputs. |
-t , --threads <INTEGER> |
Number of available threads to use. Default value is 4 . |
-d , --db <STRING> |
Path to FASTA or DIAMOND formatted proteome database. |
-p , --partials |
Include partial ORFs for ORF calling. |
-id , --id <INTEGER> |
Minimum % identity to remove redundant transcripts. Default value is 97 . |
-l , --min-orf <INTEGER> |
Minimum transcript length (bp) for ORF calling. Default value is 300 . |
-ml , --max-orf <INTEGER> |
Maximum transcript length (bp) for ORF calling. Default value is 10000 . |
-e , --evalue <REAL> |
Maximum e-value to infer reference ORFs. Default value is 1e-30 . |
--memory <INTEGER> |
memory limit (MB) for CD-HIT. Default value is 2000 , unlimited is 0 . |
-g , --gencode <STRING/INTEGER> |
Genetic code to use to for ORF calling and translation. Default is 1 . |
-s , --strand <STRING> |
Strands to call ORFs (both/minus/plus). Default value is both . |
-c , --contam <STRING> |
Path to annotated sequence table. If unset, TIdeS will assume a prior model is provided as well. |
-k , --kraken <STRING> |
kraken2 database to identify and filter non-eukaryotic sequences. |
--no-filter |
Skip the rRNA and transcript clustering steps. |
m , --model <STRING> |
Path to a prior TIdeS run's model. These are the ".pkl" files. |
--kmer <INTEGER> |
kmer length to use. Default value is 3 . |
--overlap |
Permit overlapping kmers. |
--step <INTEGER> |
Step-size for overlapping kmers. Default value is kmer-length/2 . |
--clean |
Remove intermediate filter-step files. |
-gz , --gzip |
Compress TIdeS outputs when finished. |
More on how to run TIdeS and its uses can be found in the examples
folder, including:
- ORF Prediction
- ORF Classification
- ORF prediction and classification with a previously trained model
- Preparing a simple proteome database and ORF-calling
- Naive approaches to inferring contamination
- Example FASTA and
<annotated-seqs-table>
files