macでインフォマティクス

macでインフォマティクス

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

k-mer カウントして、配列も出力するツール jellyfish、BFCounter

K-merカウントを行うjellyfishと、k-merの全配列を書き出すBFCounterを紹介する。

 

Jellyfish

公式サイト

JELLYFISH - Fast, Parallel k-mer Counting for DNA

Github

https://github.com/gmarcais/Jellyfish

 

ビルド

 ./configure 
make sudo
make install

またはbrewでも導入できる。

 

ラン

k-merカウントする。

jellyfish count -m 77 -s 100M -t 20 input.fasta/fastq
  • -m Length of mer
  • -s Initial hash size
  • -t Number of threads (1)

インプットファイルはfasta ,fastqとも対応している。

 

k-merの配列を全て出力する。

jellyfish dump mer_counts.jf > k77.fasta

中身を見てみる。

user-no-MacBook-Pro: user$ less -S k77.fa

>1

CCCAGGGTCTGGAACTATCGCCGGTGGAAAATATCGAAACGGAAGCGGGGCAAGGGGTTCAGGGTTGGTACCAAGGC

>15

AATGCCCTGGGGAGTAACTGAAAGGAAACGAAAAAATAATCTTCTTCCTATTCTATTCCTTCTGATTGAGTAACCAG

>1

CCTTGTTTGACAGTGCAGTCCGGGTTCCTAAAAGGTTGCAAGGGGATTTATTCATTCGCAGTACCCAAACGGACACC

>1

GGTGGAATAAATACCTGTGGTGAAGGTATTAACGCCAAAATATTGCACTGTGCCAAAATCGTTCAGAGTCCCCATCA

>1

AGAACGTCGTGGACGGCGTCCCCGTCGTGAGGGAACGGTGGAGGTCAAAGGGCGATCGGGAAGGGCGGCGGAACTAT

>16

TGGTGGACGGAAATCTTAAACATTGCCTAGAGAAAAGTTGGGAATTGACGGTGGTGGGGGCAGGGCAAGGAGTGGAA

>15

GGTTTCCTGGGCAAACTCGATGGAACCTGGACAATCGAGGAAATTTAAGCGCAAATTTTCATAATCAATCCCTGCCA

 

指定のk-merサイズの全塩基配列が出力されている。数値は登場回数である。重複させながら元の配列を分解しているので、元のfastqよりサイズははるかに大きくなる。

 

ヒストグラムデータを出力。

jellyfish histo mer_counts.jf > histogram.txt

出力の中身を見てみる。

user-no-MacBook-Pro: user$ less -S histogram.txt

1 3101726

2 8283

3 5424

4 12735

5 29386

6 61451

7 103516

8 164603

9 230629

10 291824

11 347466

Rに読み込めばすぐにグラフ化できそうである。

  

k-mer coverageの貧弱なものを除きたいなら、この後khmeを使えばよい。khmerはk-merグラフの分布から低頻度k-mer配列を除去したり様々な機能をもつde novo assemblyをアシストするツールである。(pipでインストール可能

load-into-counting.py -T 20 -k 20 -x 3e6 output1 input.fastq
  • T スレッド数
  • k k-merサイズ
  • x 大まかなゲノムサイズ。
filter-abund.py -C 2 -T 20 output1 input.fastq

注 khmrは別途記事にします。

 

 

BFCounter

BFCounterは k-merを数えて、全部の配列を出力するツール。

 

Github

https://github.com/pmelsted/BFCounter

ビルドはソースコードをダウンロードしてmakeするだけである。パスを通しておく。

 

ラン

BFCounter count -n 1000 -k 127 -o single_out -t 12 input.fq
  • -n Estimated number of k-mers
  • -k Size of k-mers, at most 301
  • -t Number of threads to use (default 1)

出力はbinaryファイルである。ここからk-mer長の配列を抽出する。

BFCounter dump -i single_out -k 127 -o k-127_output
  • -i Filename for input file from count
  • -k Size of k-mers, at most 301
  • -o Filename for output

出力の中身を見てみる。

f:id:kazumaxneo:20170627225750j:plain

 このように全k-mer配列が出力されている。あとはスクリプトを使い自由にいじることができる。

このツールの機能はこれだけであるが、シンプルでなため使いやすい。

 

 

 

 引用

Guillaume Marcais and Carl Kingsford, A fast, lock-free approach for efficient parallel counting of occurrences of k-mers.

Bioinformatics (2011) 27(6): 764-770 (first published online January 7, 2011) doi:10.1093/bioinformatics/btr011)

 

Efficient counting of k-mers in DNA sequences using a bloom filter.

BMC Bioinformatics. 2011 Aug 10;12:333. doi: 10.1186/1471-2105-12-333.

Melsted P1, Pritchard JK.