macでインフォマティクス

macでインフォマティクス

NGS関連のインフォマティクス情報についてまとめています。

k-merカウンタ DSK

 

 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でテストした。

ビルド依存

  • CMake 3.1+
  • C++/11 capable compiler (e.g. gcc 4.7+, clang 3.5+, Apple/clang 6.0+)

Github

#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']

f:id:kazumaxneo:20200522231810p:plain

(以下省略)
出力はHDF5 フォーマットのファイルになる。 

 

2、 変換する。

dsk2ascii -file input.fq.h5 -out output.txt

> head output.txt

f:id:kazumaxneo:20200522234111p:plain

 

引用

DSK: k-mer counting with very low memory usage.

Rizk G, Lavenier D, Chikhi R.

Bioinformatics. 2013 Mar 1;29(5):652-3

 

関連