Jellyfish v2.2.10 安装及使用 (2022.02.25)

安装步骤

conda install -c bioconda jellyfish=2.2.10

计算测序数据中的k-mer

示例命令:

$ jellyfish count -m 21 -s 100M -t 10 -C -o /home/user/jellyfish/result/mer_counts.jf R1.fq R2.fq

参数说明:
count 计数模式
-m 21 k-mer值设定为21
-s 100M 储存在Hash中的k-mer数量为100M
-t 10 线程数10
-C 同时计算正负链k-mer
-o 输出文件名

-s 参数详解:该参数仅是一个估计值,与物种基因组大小相关,如人类基因组为3G,则 -s 3G。对于测序reads,这个大小应该是基因组的大小加上测序错误产生的 k-mer。例如,如果错误率为 e(例如 Illumina 读取,通常为 e~1%),估计基因组大小为 G,覆盖率为 c,则预期 k-mer 的数量为 G+Gcek。对于jellyfish2来说,当该值设置太小而无法容纳所有的k-mer,则Hash大小会自动增加或部分写入磁盘中,并最终将其自动合并,而对于jellyfish1是需要额外运行jellyfish merge命令

-C 参数详解:k-mer及其反向互补序列本质上是相等的,对于k-mer A来说,A或A的反向互补序列均是典型代表序列,因此在设置 -C 时,Hash仅记录A或A的反向互补序列中的其中一个,以先出现顺序为准,但对于k-mer的次数计算,则是A和A的反向互补序列共两次

计算基因组中的k-mer

对于实际的基因组(actual genome)或完成序列(finished sequence),k-mer A及其反向互补是不等价的,因此 -C 没有意义,Hash大小可直接设置为基因组大小

若对主要由测序错误引起的低频k-mer(仅出现1次)不感兴趣,可考虑仅计算高频k-mer,所需内存更少且更快

计算高频k-mer

jellyfish提供两种仅计算高频k-mer的方法,可显著减少内存使用量。第一种方法称为One pass method,它提供一定百分比的k-mer的近似计数;第二种方法称为Two passes method,它提供k-mer的精确计数

One pass method

$ jellyfish count -m 25 -s 3G --bf-size 100G -t 16 homo_sapiens.fa

-s 3G 预期高频k-mer的总数为3G
--bf-size 100G 预期整个输入数据集中的k-mer总数为100G(包括仅出现1次的低频k-mer)

这种方法的缺点是会记录某些不应该被报告的k-mer百分比,原因是Bloom过滤器数据结构的随机性,默认情况下,百分比为<1%,可通过 --bf -fp 进行调整

Two passes method

$ jellyfish bc -m 25 -s 100G -t 16 -o homo_sapiens.bc homo_sapiens.fa
$ jellyfish count -m 25 -s 3G -t 16 --bc homo_sapiens.bc homo_sapiens.fa

在该方法中,先从 jellyfish bc 中创建一个Bloom计数器,再将通过该计数器的高频k-mer(出现次数>1)提供给 jellyfish count,并记录在Hash中

这种方法的优点是除1-mer以外的k-mer计数都是正确的,大多数的1-mer不会被记录,除了一小部分(假阳性率,通过 bc -f 进行调整),缺点是需要对整个reads数据集进行两次解析

自定义k-mer的集合的计算

$ jellyfish count -m 20 -s 100M -C -t 10 -o 20and1.jf --if chr20.fa chr1.fa

该命令可先从chr20.fa文件中提取所有非冗余的20-mer,并将其形成一个集合,计算该集合中的20-mer在chr1.fa文件中出现的次数

上述提供给 --if 的文件必须是Fasta文件,如果是k-mer清单,则需自行转换

其他模式

histo 模式

可输出k-mer频率直方图数据,如:

$ jellyfish histo 20and1.jf | head -5
0 49401674
1 1116213
2 425471
3 250702
4 170160

显示k-mer的出现次数,如出现0次的20-mer有49401674个

dump 模式

输出带有计数信息的k-mer清单,如:

$ jellyfish dump mer_counts.jf > mer_counts_dumps.fa

默认为Fasta格式,标题行包含k-mer计数,序列部分为k-mer序列。对于低频和高频k-mer可分别通过 -L-U 进行跳过,还可通过添加 -c -t 输出为人类易读格式

query 模式

查询特定的k-mer出现的次数,如:

$ jellyfish query mer_counts.jf AACGTTG
AACGTTG 10

info 模式

获取结果文件的生成方式,时间地点等信息,如:

$ jellyfish info mer_counts.jf

stats 模式

快速汇总k-mer信息,如:

$ jellyfish stats mer_counts.jf
Unique(仅出现一次的k-mer数量):6377643
Distinct(非冗余的k-mer个数):8454759
Total(k-mer总数):24323454
Max_count(k-mer的最大出现次数):58964

mem 模式

预估count命令需要的内存量,如:

$ jellyfish mem -m 24 -s 1G
4521043056 (4G)

仅需将计数模式命令的 count 替换为 mem 即可

参考资料:

https://github.com/gmarcais/Jellyfish/blob/master/doc/Readme.md
https://www.jianshu.com/p/6c10b958fddb
https://www.jianshu.com/p/f86b30617772

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容