O MTSV Tools é um conjunto de ferramentas principais para classificação taxonômica de leituras de sequenciamento metagenômico. O MTSV realiza um alinhamento completo usando um filtro Q-Gram assistido por Index FM, seguido pelo alinhamento SIMD acelerado de Smith-Waterman.
CONDA Instale MTSV -Tools -C Bioconda
MTSV é construído em ferrugem. Você precisará:
rustc
e cargo
> = 1.29.0 (Rustup.RS é o método de instalação mais fácil)Para executar testes:
$ cargo test
Para gerar um relatório de cobertura de código, verifique se o KCOV> = 26 está instalado no seu PATH
e instale cargo-kcov
:
$ cargo install cargo-kcov
Para executar a cobertura:
$ cargo kcov -- --exclude-pattern="/.cargo,vendor/,tests/,bench/,include/,bin/,ssw/"
Isso colocará um relatório de cobertura de código em target/kcov/index.html
.
Para construir os binários do MTSV:
$ cargo build --release
Eles estarão disponíveis em target/release/mtsv-*
.
Para gerar a documentação interna:
$ cargo doc [--open]
(Passe a bandeira --open
se quiser abrir imediatamente os documentos em seu navegador)
MTSV constrói vários binários:
mtsv-chunk
mtsv-binner
mtsv-build
mtsv-collapse
Tudo isso aceita o sinalizador --help
para imprimir uma mensagem de ajuda em seu uso. Veja abaixo para obter instruções de uso específicas.
O MTSV implementa um índice metagenômico personalizado (MG-Index) com base na estrutura de dados do índice FM. Os índices de referência devem ser construídos antes da execução da classificação taxonômica.
Para construir os Índices MG, você precisará de um arquivo multifasta de todas as sequências de referência, com cabeçalhos no formato SEQID-TAXID
. Portanto, uma sequência possui um ID inteiro único 12345 e pertence ao ID taxonômico do NCBI 987, o cabeçalho dessa sequência deve ler 12345-987
. As seqüências de referência podem ser obtidas de qualquer coleção de sequência de DNA (ou seja, Genbank, Refseq, etc.) e personalizadas para se adequar ao seu projeto.
Como o MTSV foi projetado para ser altamente paralelável, recomendamos a criação de vários índices a partir de pedaços menores das seqüências de referência. Isso ajuda a reduzir os requisitos de memória e permite um processamento mais rápido para a construção e a atribuição de índices.
$ mtsv-chunk -i PATH_TO_FASTA -o PATH_TO_CHUNK_FOLDER -g NUM_GBS_PER_CHUNK
Isso dividirá a referência FASTA em uma série de arquivos menores e os colocará no diretório especificado. Veja a mensagem de ajuda para obter mais informações.
mtsv-chunk 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Split a FASTA reference database into chunks for index generation.
USAGE:
mtsv-chunk [FLAGS] --input <INPUT> --output <OUTPUT> --gb <SIZE_GB>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-i, --input <INPUT> Path(s) to vedro results files to collapse
-o, --output <OUTPUT> Folder path to write split outupt files to.
-g, --gb <SIZE_GB> Chunk size (in gigabytes). [default: 1.0]
Agora que você tem n pedaços do seu banco de dados FASTA, eles precisam ser processados em índices que o MTSV pode usar para consultar. Durante a compilação do índice, as seqüências no arquivo fasta rastreadas são concatenadas ao gravar a localização dos limites da sequência e o taxid associado a cada sequência. Uma matriz de sufixo, transformada de rodas de tocas (BWT) e índice FM são construídos a partir das sequências concatenadas usando o pacote Rust-bio v0.39.1. O índice FM e os metadados da sequência associada constituem o índice MG. Um índice MG é criado por arquivo fasta e novos índices podem ser adicionados à medida que a coleção de referência cresce sem a necessidade de reconstruir nenhum dos índices existentes.
$ mtsv-build --fasta /path/to/chunkN.fasta --index /path/to/write/chunkN.index
Usando configurações padrão, os índices terão ~ 3,6x o tamanho do arquivo de referência e exigirão que tanta RAM executa a etapa de binning. O intervalo de amostragem padrão é de 64 para a matriz de ocorrência BWT e 32 para a matriz de sufixo. Isso pode ser substituído pela passagem --sample-interval <FM_SAMPLE_INTERVAL>
para a matriz de ocasião ou --sa-sample <SA_SAMPLE_RATE>
para a matriz de sufixo. Os valores mais baixos aumentarão o tamanho do índice e podem fornecer uma redução no tempo de consulta. Aumentar a bandeira diminuirá o tamanho do índice até um ponto enquanto aceita um tempo de consulta mais lento.
Veja a mensagem de ajuda para outras opções.
$ mtsv-build --help
mtsv-build 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Index construction for mtsv metagenomics binning tool.
USAGE:
mtsv-build [FLAGS] [OPTIONS] --fasta <FASTA> --index <INDEX>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-f, --fasta <FASTA> Path to FASTA database file.
--sample-interval <FM_SAMPLE_INTERVAL>
BWT occurance sampling rate. If sample interval is k, every k-th entry will be kept. [default: 64]
-i, --index <INDEX> Absolute path to mtsv index file.
--sa-sample <SA_SAMPLE_RATE>
Suffix array sampling rate. If sampling rate is k, every k-th entry will be kept. [default: 32]
O comando mtsv-binner
atribui as leituras às seqüências de referência no Index MG fornecido (um comando de binning separado deve ser executado para cada um dos Índices MG desejados). Começará extraindo substâncias sobrepostas (sementes) do mesmo tamanho ( --seed-size
) com certos compensações ( --seed-interval
) de cada sequência de consulta e seu complemento reverso. Em seguida, ele usa o MG-Index para procurar correspondências exatas e ungadas para cada semente. As correspondências de sementes são classificadas por local e agrupadas em regiões candidatas usando janelas especificadas. O número de acertos por candidato é registrado e qualquer candidato que não atenda ao número mínimo de acertos de sementes é filtrado. As posições restantes do candidato são classificadas em ordem decrescente pelo número de acertos de sementes, para que as regiões mais promissoras sejam avaliadas primeiro.
Para cada região candidata, o MTSV extrai o intervalo correspondente da sequência de referência e procura o taxid associado à região no índice MG. Se a consulta atual já estiver alinhada com o sucesso do taxidado associado à região candidata, nenhum alinhamento adicional é tentado e a próxima região candidata será verificada. Caso contrário, um alinhamento de Smith-Waterman acelerado por SIMD é realizado entre a sequência de referência extraída e a sequência de consultas (usando uma pontuação de 1 para correspondências e -1 para incompatibilidades, abertura de lacunas e extensão de gap). Se a pontuação do alinhamento for suficientemente alta, existe uma verificação final para determinar se a distância de edição é menor ou igual ao corte de distância de edição especificado pelo usuário ( --edit-rate
). Se o alinhamento for considerado bem -sucedido, não serão tentados outros alinhamentos para essa consulta contra o mesmo táxido. Ignorar todos os alinhamentos adicionais a um taxid evita muitas operações caras e reduz o tempo de computação.
A etapa de filtragem do candidato é baseada em um algoritmo de filtragem Q-Gram que define o número mínimo de correspondências exatas de K-Mer (de todos os n-n- depositores n que podem ser esperados entre uma leitura n -comprimento e uma sequência de referência Com no máximo E incompatibilidades E. No pior caso, onde todas as incompatibilidades são espaçadas uniformes no alinhamento, o número mínimo de k -mers correspondentes é: M = (n+1) - K (e+1) e M é positivo quando n / (e+ 1 --seed-size
> k . --seed-size
) e o intervalo L ( --seed-interval
) que estabelece o número de sementes como n_seeds = teto ((n -k + 1)/l) e porque isso varia com base no tamanho da leitura, o número mínimo de leituras necessárias necessárias necessárias Para --edit-rate
uma atribuição ( --min-seed
), é fornecida como uma porcentagem dessas sementes (sementes * N_seeds) . e 1) e o comprimento da leitura, n .
$ mtsv-binner --edit-rate 0.13 --seed-size 18
--seed-interval 2 --threads 8
--index /path/to/chunk1.index
--fastq /path/to/reads.fastq
--results /path/to/write/chunk1_results.txt
Veja a mensagem de ajuda para outras opções.
$ mtsv-binner --help
mtsv 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Metagenomics binning tool.
USAGE:
mtsv-binner [FLAGS] [OPTIONS] --fasta <FASTA> --fastq <FASTQ> --index <INDEX>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-e, --edit-rate <EDIT_TOLERANCE> The maximum proportion of edits allowed for alignment. [default: 0.13]
-f, --fasta <FASTA> Path to FASTA reads.
-f, --fastq <FASTQ> Path to FASTQ reads.
-i, --index <INDEX> Path to MG-index file.
--max-hits <MAX_HITS> Skip seeds with more than MAX_HITS hits. [default: 20000]
--min-seed <MIN_SEED> Set the minimum percentage of seeds required to perform an alignment.
[default: 0.015]
-t, --threads <NUM_THREADS> Number of worker threads to spawn. [default: 4]
-m, --results <RESULTS_PATH> Path to write results file.
--seed-interval <SEED_INTERVAL> Set the interval between seeds used for initial exact match. [default: 2]
--seed-size <SEED_SIZE> Set seed size. [default: 18]
mtsv-binner
escreve resultados para uma única leitura por linha. Por exemplo, se uma leitura com o cabeçalho R1_123
mapear os IDs de taxon 562
, 9062
e 100
com as distâncias de edição 5
, 10
e 11
:
R1_123:562=5,9062=10,100=11
Como cada arquivo de saída do comando mtsv-binner
representará apenas atribuições para referências em um único índice MG, os resultados de todos os Índices MG devem ser combinados em um único arquivo de resultados para análise posterior.
$ mtsv-collapse /path/to/chunk1_results.txt /path/to/chunk2_results.txt ...
--output /path/to/collapsed_results.txt
Certifique -se de incluir todos os arquivos de chunk. Embora o colapso possa ser executado em várias fases, geralmente é muito mais rápido fazê -las de uma só vez. Se o mesmo taxid foi atribuído à mesma leitura em vários arquivos, aquele com a menor distância de edição será registrado na saída final.
Veja a mensagem de ajuda para outras opções.
$ mtsv-collapse --help
mtsv-collapse 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Tool for combining the output of multiple separate mtsv runs.
USAGE:
mtsv-collapse [FLAGS] <FILES>... --output <OUTPUT>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-o, --output <OUTPUT> Path to write combined outupt file to.
ARGS:
<FILES>... Path(s) to mtsv results files to collapse