jellyfish:快速計算kmer分布

歡迎關注"生信修煉手冊"!

jellyfish可以統(tǒng)計DNA序列中Kmer的分布,它運行速度快,內(nèi)存消耗低,支持并行,是最常用的kmer統(tǒng)計軟件之一。

官網(wǎng)如下:

http://www.genome.umd.edu/jellyfish.html

jellyfish有兩個大版本,1.0版本和2.0版本,1.0版本最多支持kmer長度為31, 2.0版本對kmer長度沒有任何的限制。在下載時,注意下載2.0版本。

github鏈接如下:

https://github.com/gmarcais/Jellyfish

直接下載編譯好的linux可執(zhí)行文件就可以了,代碼如下

wget https://github.com/gmarcais/Jellyfish/releases/download/v1.1.12/jellyfish-linux
mv jellyfish-linux jellyfish
chmod +x jellyfish

jellyfish有很多個子命令,下面介紹常用的子命令

1. 計算kmer分布

count子命令用來計算kmer分布,用法如下

jellyfish count -m 31 -t 10 -s 1G test.fq

-m參數(shù)指定kmer的長度,-t指定并行的線程數(shù),-s指定內(nèi)存中hash的大小,這個參數(shù)可以根據(jù)基因組的大小適當調整,比如人類基因組3G,這里就設置成3G;test.fq是輸入的序列文件。

需要注意的是,jellysifh 只能接受fastq或者fasta文件作為輸入,而且不能是壓縮文件。

默認情況下會生成名為mer_counts.jf的文件,該文件是一個二進制文件,可以通過其他命令來查看該文件中的內(nèi)容。

2. 生成kmer 統(tǒng)計表

dump子命令可以將上述步驟生成的二進制文件轉換成純文本的文件,用法如下

jellyfish dump mer_counts.jf > kmer_count.fasta

kmer_count.fasta文件中每一條序列就是一個kmer,序列標識符是該kmer出現(xiàn)的次數(shù),示意如下

>1150
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>20
GCTACCATGATAGCCAAGGAAATCCCACAAA

也支持輸出成表格的形式,只需要添加-c-t兩個參數(shù),用法如下

jellyfish dump ?-c -t mer_counts.jf > kmer_count.tsv

輸出內(nèi)容如下

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1150
GCTACCATGATAGCCAAGGAAATCCCACAAA 20
TATTTGCGGAGCTTGTTAGATAACAATCAAA 18

第一列為kmer,第二列為該kmer頻數(shù)。

3. 查詢某個kmer出現(xiàn)的次數(shù)

query 子命令可以快速查詢某個kmer的頻數(shù),用法如下

jellyfish query mer_counts.jf GCTACCATGATAGCCAAGGAAATCCCACAAA

輸出結果:

GCTACCATGATAGCCAAGGAAATCCCACAAA 20

4. 統(tǒng)計kmer基本信息

stats子命令會給出kmer的基本統(tǒng)計信息,用法如下

jellyfish stats mer_counts.jf

會在命令行輸出如下統(tǒng)計結果

Unique: ? ?130512636
Distinct: ?260032104
Total: ? ? 3502352808
Max_count: 43395

unique 代表只出現(xiàn)了1次的kmer個數(shù);Distinct 代表kmer的個數(shù),Total 代表所有kmer頻數(shù)總和,Max count 代表kmer的最大頻數(shù)。

5. 統(tǒng)計kmer頻數(shù)分布

histo子命令可以給出kmer的頻數(shù)分布,用法如下

jellyfish histo mer_counts.jf > kmer_hist.tsv

輸出內(nèi)容如下

1 130512636
2 24879103
3 12766220
4 8746042

第一列代表kmer的頻數(shù),第二列代表出現(xiàn)該頻數(shù)的kmer的總數(shù)。利用這個數(shù)據(jù),可以畫出kmer頻數(shù)分布曲線,對應的R語言代碼如下

x <- read.table(input, header = F, sep = " ", stringsAsFactors = F)
pdf("kmer_hist.pdf")
plot(x, type = "l")
dev.off()

最終的效果圖如下

掃描關注微信號,更多精彩內(nèi)容等著你!


?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,302評論 2 89
  • 第十章 使用序列數(shù)據(jù) 生物信息學的核心問題之一是處理大量的(通常定義糟糕或模糊)文件格式。久而久之,一些特定的簡單...
    yangliunk1987閱讀 5,449評論 3 53
  • File類幫我們讀取文件夾的屬性信息。 SimpleDateFormat類: format(Date 對象):將...
    我是邱邱閱讀 308評論 0 0
  • 4月30日6:30,,我全家和小姨家共五人駕車去了新鄉(xiāng)八里溝游玩,大約三個小時的高速公路,終于到了八里溝景區(qū)...
    張彥偉閱讀 1,083評論 0 1

友情鏈接更多精彩內(nèi)容