MTSV工具是一套核心工具,用于元基因组测序读取的分类分类。 MTSV使用FM-Index辅助Q-Gram过滤器进行完整对准,然后使用SIMD加速史密斯 - 水手对齐。
conda安装mtsv -tools -c bioconda
MTSV建立在生锈。您需要:
rustc
和cargo
> = 1.29.0(Rustup.rs是最简单的安装方法)进行测试:
$ cargo test
要生成代码覆盖报告,请确保在PATH
上安装KCOV> = 26,然后安装cargo-kcov
:
$ cargo install cargo-kcov
运行覆盖范围:
$ cargo kcov -- --exclude-pattern="/.cargo,vendor/,tests/,bench/,include/,bin/,ssw/"
这将根据target/kcov/index.html
放置代码覆盖范围报告。
建造MTSV二进制文件:
$ cargo build --release
它们将在target/release/mtsv-*
下提供。
生成内部文档:
$ cargo doc [--open]
(如果您想立即在浏览器中打开文档,请传递--open
标志)
MTSV建造了几种二进制文件:
mtsv-chunk
mtsv-binner
mtsv-build
mtsv-collapse
所有这些都接受--help
标志以在其使用情况下打印帮助消息。有关特定使用说明,请参见下文。
MTSV基于FM-Index数据结构实现自定义元基因组索引(MG-INDEX)。参考指数必须在执行分类学分类之前构建。
要构建MG-Indices,您将需要所有参考序列的多-Fasta文件,并具有格式SEQID-TAXID
的标头。因此,序列具有独特的整数ID 12345,属于NCBI分类学ID 987,该序列的标题应读取12345-987
。参考序列可以从任何DNA序列集合(即,GenBank,RefSeq等)中采购,并自定义以适合您的项目。
由于MTSV被设计为高度可行的,因此我们建议从较小的参考序列构建多个索引。这有助于减少内存要求,并允许更快地处理索引构建和分配。
$ mtsv-chunk -i PATH_TO_FASTA -o PATH_TO_CHUNK_FOLDER -g NUM_GBS_PER_CHUNK
这将使参考FastA分为一系列较小的文件,并将它们放入指定的目录中。有关更多信息,请参见帮助消息。
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]
现在,您已经拥有了FASTA数据库的n个块,需要将它们处理成MTSV可以用于查询的索引。在索引构建过程中,在记录序列边界的位置以及与每个序列相关的标本化的位置时,将块中的FastA文件中的序列连接在一起。使用Rust-Bio v0.39.1软件包,由串联序列构建后缀阵列,Burrows-wheeler变换(BWT)和FM索引。 FM索引和相关的序列元数据构成MG索引。每个FASTA文件创建一个mg索引,随着参考集合的增长而无需重建任何现有索引,就可以添加新索引。
$ mtsv-build --fasta /path/to/chunkN.fasta --index /path/to/write/chunkN.index
使用默认设置,索引将比参考文件的大小约3.6倍,并且需要大约这样的RAM才能运行binning步骤。 BWT出现阵列的默认采样间隔为64,后缀阵列为32。可以通过传递--sample-interval <FM_SAMPLE_INTERVAL>
--sa-sample <SA_SAMPLE_RATE>
情况来覆盖这一点。较低的值将增加索引的大小,并可以减少查询时间。增加标志将使索引的大小降低到一个点,同时接受较慢的查询时间。
有关其他选项,请参见帮助消息。
$ 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]
mtsv-binner
命令将读取分配给提供的MG索引中的参考序列(对于每个所需的MG-Indices,应运行单独的binning命令)。它将从每个查询序列及其反向补体中提取相同大小( --seed-size
)的重叠子字(种子)的重叠子字( --seed-interval
)。然后,它使用MG索引来搜索每个种子的精确匹配。种子匹配按位置排序,并使用指定的窗口分组为候选区域。每位候选人的命中次数被计入,并且任何不符合最小种子命中次数的候选人都会被过滤掉。其余的候选位置按降序排序按种子命中量的数量进行排序,以便首先评估最有希望的区域。
对于每个候选区域,MTSV提取了从参考序列的相应范围,并查找与MG索引中该区域相关的类似物的类似物。如果当前的查询已经与与候选区域相关的类似物的标本界有成功对齐,则不会尝试其他对齐,并检查了下一个候选区域。否则,将在提取的参考序列和查询序列之间执行SIMD加速史密斯 - 水对齐(使用1分为1的评分,而对不匹配,间隙打开和间隙扩展的得分为-1)。如果对齐得分足够高,则有一项最终检查来确定编辑距离是否小于或等于用户指定的编辑距离截止( --edit-rate
)。如果一致性被认为是成功的,则不会尝试对同一标本的进一步的对齐。跳过所有其他对齐方式,可以避免许多昂贵的操作并减少计算时间。
候选过滤步骤基于Q-Gram过滤算法,该算法定义了精确的K-MER匹配的最小数量(来自所有N-K+1重叠K -MER,可以在N长度读取和参考序列之间预期的重叠k-mers在最坏的情况下,所有不匹配在整个比对均匀均匀的情况下,匹配k -mers的最小数量为:M =(n + 1)-k(e+1) / (e+ 1 --seed-size
> k 。 --seed-size
)和间隔L ( --seed-interval
),将种子的数量确定为n_seeds = ceil(((n -k + 1)/l),并且由于它根据读取大小而变化,因此所需的最小读数数量为了将这些种子地板的百分比(最小者 * n_seeds)提供给分配( --edit-rate
--min-seed
)。和1)以及读取的长度, 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
有关其他选项,请参见帮助消息。
$ 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
写入每行读取的结果。例如,如果带有标题R1_123
读数为分类10
IDS IDS 562
和100
, 9062
带有编辑距离5
和11
:
R1_123:562=5,9062=10,100=11
由于mtsv-binner
命令中的每个输出文件仅表示对单个MG索引中参考的分配,因此所有MG-Indices的结果必须合并到单个结果文件中以进行进一步分析。
$ mtsv-collapse /path/to/chunk1_results.txt /path/to/chunk2_results.txt ...
--output /path/to/collapsed_results.txt
确保包含所有块文件。虽然折叠板可以以多个阶段运行,但同时完成所有操作通常要快得多。如果将相同的标本化分配给了多个文件中的同一读取,则将最低的编辑距离记录在最终输出中。
有关其他选项,请参见帮助消息。
$ 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