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
)和間隔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