DNA/RNAシーケンシングのリード中のすべてのk-mer(長さkの部分文字列)をカウントすることは、多くのバイオインフォマティクスアプリケーションの前段階である。しかし、最新のk-merカウント方法では、大きなデータ構造がメモリ内に存在する必要がある。このようなデータ構造は、通常、カウントするk-merの数に応じて大きくなる。本著者らは、DSK (disk streaming of k-mer)と呼ばれるk-merカウントのための新しいストリーミングアルゴリズムを提示する。このアプローチは、メモリ、時間、ディスクのトレードオフを実現する。リードに含まれるすべてのk-merのマルチセットはパーティション化され、パーティションはディスクに保存される。その後、各パーティションは一時的なハッシュテーブルに個別にメモリにロードされる。k-merカウントは、各ハッシュテーブルをトラバースすることで返される。低密度のk-merはオプションでフィルタリングされる。DSKは、わずか4.0GBのメモリと160GBの適度なディスク容量を用いて、ヒトゲノムデータセットの27 k-merを17.9時間でカウントすることができる最初のアプローチである。(論文執筆時点)
インストール
ubuntu18.04LTSでテストした。
ビルド依存
#bioconda (link)
conda install -c bioconda -y dsk
#from soruce
git clone --recursive https://github.com/GATB/dsk.git
cd dsk
sh INSTALL
> dsk
$ dsk
ERROR: Option '-file' is mandatory
[dsk options]
-nb-cores (1 arg) : number of cores [default '0']
-verbose (1 arg) : verbosity level [default '1']
-version (0 arg) : version
-help (0 arg) : help
-file (1 arg) : reads file
-kmer-size (1 arg) : size of a kmer [default '31']
-abundance-min (1 arg) : min abundance threshold for solid kmers [default '2']
-abundance-max (1 arg) : max abundance threshold for solid kmers [default '2147483647']
-abundance-min-threshold (1 arg) : min abundance hard threshold (only used when min abundance is "auto") [default '2']
-histo-max (1 arg) : max number of values in kmers histogram [default '10000']
-solidity-kind (1 arg) : way to compute counts of several files (sum, min, max, one, all, custom) [default 'sum']
-solidity-custom (1 arg) : when solidity-kind is custom, specifies list of files where kmer must be present [default '']
-max-memory (1 arg) : max memory (in MBytes) [default '5000']
-max-disk (1 arg) : max disk (in MBytes) [default '0']
-solid-kmers-out (1 arg) : output file for solid kmers (only when constructing a graph) [default '']
-out (1 arg) : output file [default '']
-out-dir (1 arg) : output directory [default '.']
-out-tmp (1 arg) : output directory for temporary files [default '.']
-out-compress (1 arg) : h5 compression level (0:none, 9:best) [default '0']
-storage-type (1 arg) : storage type of kmer counts ('hdf5' or 'file') [default 'hdf5']
-histo2D (1 arg) : compute the 2D histogram (with first file = genome, remaining files = reads) [default '0']
-histo (1 arg) : output the kmer abundance histogram [default '0']
[kmer count, advanced performance tweaks options]
-minimizer-type (1 arg) : minimizer type (0=lexi, 1=freq) [default '0']
-minimizer-size (1 arg) : size of a minimizer [default '10']
-repartition-type (1 arg) : minimizer repartition (0=unordered, 1=ordered) [default '0']
実行方法
1、31-merをカウント
dsk -file input.fq -kmer-size 31
#listとして与える
ls -1 *.fastq > list_reads
dsk -file list_reads
- -kmer-size size of a kmer [default '31']
(以下省略)
出力はHDF5 フォーマットのファイルになる。
2、 変換する。
dsk2ascii -file input.fq.h5 -out output.txt
> head output.txt
引用
DSK: k-mer counting with very low memory usage.
Rizk G, Lavenier D, Chikhi R.
Bioinformatics. 2013 Mar 1;29(5):652-3
関連