本研究では、配列の索引付けを行い、データセットのコレクションに渡ってその豊富さを記録する新しい計算手法であるREINDEERを紹介する。これまでのところ、他の方法では、大規模なデータセットに対して効率的なインデックス付けを行うことができなかったが、本研究では、REINDEERを用いて、大規模なデータセットに対して効率的なインデックス付けを行うことができる。REINDEERを用いて、わずか56GBのRAMを使用して、2,585件のヒトRNA-seq実験から得られた配列の豊富さを45時間でインデックス化した。これにより、REINDEERは、2,585件のデータセットに渡って40億のk-mer規模の配列を記録した初めての方法となった。また、REINDEERはk-merの正確なpresence / absenceクエリもサポートしている。簡単に説明すると、REINDEERは各データセットの圧縮de Bruijnグラフ(DBG)を構築し、それらのDBGを一つのグローバルなものに統合する。そして、REINDEERはmonotigsを構築し、インデックスを作成する。
REINDEERは、データセット(例えば、生のRNA-seqやメタゲノムリード)のコレクションのk-merとその豊富さをインデックス化するデータ構造を構築する。その後、FASTA配列は、インデックス化された各データセットにおけるその存在と豊富さを検索することができる。他のツール(SBT、BIGSIなど)も大規模なk-merの有無検索用に設計されているが、豊富さの検索はこれまでのところサポートされていなかった(単一のデータセットでKMC、Jellyfishなどのk-merカウンタを使用して調べるケースを除いて)。REINDEERは、高速なクエリ、小さなインデックスサイズ、インデックス作成とクエリ時のメモリフットプリントの低さを兼ね備えてる。
インストール
ubntu18.04でテストした。
ビルド依存
- GCC >= 4.8
- CMAKE > 3.10.0
本体 Github
git clone --recursive https://github.com/kamimrcht/REINDEER.git
cd REINDEER
sh install.sh
> ./Reindeer
# ./Reindeer
############# REINDEER version v1.0.2 #############
Command line was: ./Reindeer
You must choose: either indexing (--index) or querying (--query)
******************* REINDEER v1.0.2**********************************
******************* REad Index for abuNDancE quERy ******************
INDEX BUILDING
* Mandatory parameters
--index : Indexing mode
-f <file> : File of file for colors. Either:
i) you've already computed each DBG on your samples, in this case the fof is a list of unitig files
OR ii) you need Bcalm to be run to obtain unitigs per sample, in this case use --bcalm option
* Optional parameters
-k : k-mer size (default 31)
--nocount : Only compute presence/absence, not abundance
--bcalm : Launch bcalm on each single read dataset
--paired-end : Index using paired-end files (provide pairs of files one after another in the fof). Works only with --bcalm.
--disk-query : Index for on-disk query (default: in-memory). To be used for large indexes that won't fit in RAM.
--quantization : Quantize the abundances in bins (to use only with --count).
--log-count : Record the log of the counts, gives approximate counts that save space (to use only with --count).
* Output options
-o <file> : Directory to write output files (default: output_reindeer)
* Advanced parameters (we recommend not to change these values unless you are very aware of REINDEER's inner components)
--minimizer-size <integer> : MPHF option: minimizer size
--buckets <integer> : MPHF option: number of buckets (log)
QUERY
* Mandatory parameters
--query : Query mode
-l : Reindeer index directory (should be output_reindeer if you've not used -o during indexing)
-q <FASTA> : FASTA query file with query sequences
* Optional parameters
-P : Threshold: at least P% of the positions in the query must be covered by k-mers present in a dataset for the dataset to be reported (default: 40%)
-o <file> : Directory to write output files (default: output_reindeer/)
--disk-query : On-disk query (default: in-memory). To be used for large indexes that won't fit in RAM, if the index was constructed with the same option.
General
-t <integer> : Number of threads (default 1)
--help : Show help
(base) root@336d73c32c08:/data/REINDEER#
thread 'main' panicked at 'McFly error: "/var/folders/dy/5_xmxfts2jbdzlc1pb92j8mw0000gn/T/mcfly.XXXXXXXX.LVBfNWio" file not found: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/libcore/result.rs:1009:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.
テストラン
1、build index
Reindeer --index -f test/fof_unitigs.txt -o quick_out
#or
sh test.sh
fof_unitigs.txtは2つのFASTAファイルのパスを記載したファイル。
出力されるindex
quick_out
2、query
クエリの配列とindexを指定する。
Reindeer --query -q test/query_test.fa -l quick_out -o quick_query
引用
REINDEER: efficient indexing of k-mer presence and abundance in sequencing datasets
Camille Marchet, Zamin Iqbal, Daniel Gautheret, Mikael Salson, Rayan Chikhi
bioRxiv, Posted March 30, 2020