Skip to main content

DeepMicroClass, a deep learning based contig prediction tool

Project description

DeepMicroClass

This is the repository for DeepMicroClass, a deep learning based method that classifies metagenomic contigs into five sequence classes, e.g., viruses infecting prokaryotic or eukaryotic hosts, eukaryotic or prokaryotic chromosomes.

The paper corresponding to this repository has been published at NAR Genomics and Bioinformatics. The exact code version used in the paper can be found at DOI. If you find DeepMicroClass useful, please consider to cite:

  • Shengwei Hou, Tianqi Tang, Siliangyu Cheng, Yuanhao Liu, Tian Xia, Ting Chen, Jed A Fuhrman, Fengzhu Sun, DeepMicroClass sorts metagenomic contigs into prokaryotes, eukaryotes and viruses, NAR Genomics and Bioinformatics, Volume 6, Issue 2, June 2024, lqae044, https://doi.org/10.1093/nargab/lqae044

Please direct any questions to Dr. Fengzhu Sun.

Installation

Consider using virtualenv or conda to create a virtual environment for clean environment. The following workflow works on our tested server with GPU Nvidia Quadro RTX 6000 and CUDA version 10.1. Since DeepMicroClass is using Pytorch, it is possible that our Pytorch version is not compiled with the version of your CUDA drive. Therefore, we suggest you install Pytorch compiled with your own device.

You can find the Pytorch that has been compiled with your version of the CUDA driver from Previous PyTorch Versions | PyTorch. Most Pytorch versions are available only for specific CUDA versions. For example, pytorch=1.0.1 is not available for CUDA=9.2

Or, you can update your CUDA driver. To query the CUDA version that matches your driver, just open a terminal and run:

nvidia-smi

To check the CUDA version in your environment variables, which is the CUDA version you are probably using, just run:

nvcc -V

To use GPU (CPU is also optional)

Create a new environment:

conda create -n DeepMicroClass_python=3.10 python=3.10
conda activate DeepMicroClass_python=3.10

Check if pip is under the new environment:

which pip

Your pip should be under the new environment:

/home/xiatian/anaconda3/envs/DeepMicroClass_python=3.10/bin/pip

If not, install pip under the new environment:

conda install pip

Then check it again.

After that, install DeepMicroClass by running:

pip install DeepMicroClass

Then, install Pytorch packages suitable for CUDA=11.6 and python=3.10.13.

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

These versions are compatible with some Python versions like 3.10.13 and 3.9.18. If you were going to install Pytorch packages suitable for your CUDA, you should try other versions of Python in the first step.

If you encountered errors like:

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package torchvision-0.14.1-py310_cpu requires python >=3.10,<3.11.0a0, but none of the providers can be installed
  - package torchaudio-0.13.1-py310_cpu requires python >=3.10,<3.11.0a0, but none of the providers can be installed

Could not solve for environment specs
The following packages are incompatible
...

You may need to try other versions of Python.

To use CPU ONLY

CPU mode works for python=3.9-3.12. The workflow is likely the same.

conda create -n DeepMicroClass_python=3.10 python=3.10
conda activate DeepMicroClass_python=3.10

Check if pip is under the new environment:

which pip

Your pip should be under the new environment:

/home/your_username/anaconda3/envs/DeepMicroClass_python=3.10/bin/pip

If not, install pip under the new environment:

conda install pip

Then check it again.

After that, install DeepMicroClass by:

pip install DeepMicroClass

Install module requests:

pip install requests

Testing

To test DeepMicroClass, You can simply run:

DeepMicroClass test

It will use test.fa as input, and use all default settings to classify the input sequences, then write the test result in the current working directory.

To find the expected output, You can run:

DeepMicroClass -h

Usage

Prediction

usage: DeepMicroClass predict [-h] --input INPUT --output_dir OUTPUT_DIR [--model MODEL] [--encoding {onehot,embedding}] [--mode {hybrid,single}] [--single-len SINGLE_LEN] [--device {cpu,cuda}]

options:
  -h, --help            show this help message and exit
  --input INPUT, -i INPUT
                        Path to the input fasta file
  --output_dir OUTPUT_DIR, -o OUTPUT_DIR
                        Path to the output directory
  --model MODEL, -m MODEL
                        Path to the trained model
  --encoding {onehot,embedding}, -e {onehot,embedding}
                        Encoding method
  --mode {hybrid,single}, -md {hybrid,single}
                        Prediction mode
  --single-len SINGLE_LEN, -sl SINGLE_LEN
                        Length to use in the single mode
  --device {cpu,cuda}, -d {cpu,cuda}
                        Device to use

The most straightforward way to run the prediction is to use the following command:

DeepMicroClass predict -i <input_fasta> -o <output_dir>

Prediction File Format

Each row of the output prediction file contains the scores from the neural network for class label assignment. The higher the score, the more likely the class label for a given sequence.

  • Sequence Name: the name of the sequence in the input fasta file
  • Eukaryote: the score of the current sequence being Eukaryote.
  • EukaryoteVirus: the score of the current sequence being EukaryoteVirus
  • Plasmid: the score of the current sequence being Plasmid
  • Prokaryote: the score of the current sequence being prokaryote
  • ProkaryoteVirus: the score of the current sequence being ProkaryoteVirus

As an example:

Sequence Name   Eukaryote       EukaryoteVirus  Plasmid Prokaryote      ProkaryoteVirus
NC_008199#3k#12001#15000        0.0001718740027172454   1.2298997305038642e-05  0.1367506879128939      0.4601334227976679      5.402931783348322

To assign a label to a given sequence, we find the maximum of all the assigned scores. In the above case, ProkaryoteVirus has the highest score, so the sequence is assigned as belonging to the class ProkaryoteVirus.

Sequence Extraction

You can extract sequences from a given class of your interest with the following command

DeepMicroClass extract --tsv <output.tsv> --fasta <input.fa> --class <class of interest> --output <output.fa>

The naming of class of interest follows the header of the output.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepmicroclass-1.0.6.1.tar.gz (5.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

DeepMicroClass-1.0.6.1-py3-none-any.whl (5.8 MB view details)

Uploaded Python 3

File details

Details for the file deepmicroclass-1.0.6.1.tar.gz.

File metadata

  • Download URL: deepmicroclass-1.0.6.1.tar.gz
  • Upload date:
  • Size: 5.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.13

File hashes

Hashes for deepmicroclass-1.0.6.1.tar.gz
Algorithm Hash digest
SHA256 3a8f8470cb3479aafef06d1037095bb68036f515bd3cca78d3b03b834333c9e7
MD5 b2d52467fa5a2a6d325fa5b257925ea1
BLAKE2b-256 3c14f4671bdcd3bfc01ef12500d39baf3879422a89f0a4afeb05dda776e8c3f2

See more details on using hashes here.

File details

Details for the file DeepMicroClass-1.0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for DeepMicroClass-1.0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7c5b95c6dd071974d01875b71075c7f555968fc4501a48b935f6471d7eaf9390
MD5 a141766e1fcde0c8ab1306ad727e3bf4
BLAKE2b-256 1cf7d6e7ef6fb4da99f47bc76fca1dab7baf6b7105a74b4d1f034bb7a4fa3772

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page