一、Jellyfish简介
JELLYFISH是CBCB(Center for Bioinformatics and Computational Biology)的Guillaume Marçais 和 Carl Kingsford 研发的一款计数 DNA 的 k-mers 的软件。该软件运用 Hash 表来存储数据,同时能多线程运行,速度快,内存消耗小。该软件只能运行在64位的Linux系统下。其文章于2011年发表在杂志 Bioinformatics 上。
二、Jellyfish安装
1 | $ wget http://www.cbcb.umd.edu/software/jellyfish/jellyfish-1.1.10.tar.gz |
三、Jellyfish的使用
1. jellyfish的使用方法
jellyfish的功能有:kmer计数;融合二进制的Hash结果;统计Hash结果;通过Hash结果来画直方图;将Hash结果输出成文本格式;查询指定k-mer的数目。
1 | $ jellyfish count [-o prefix] [-m merlength] [-t threads] [-s hashsize] [--both-strands] fasta [fasta ...] |
2. k-mer的计数
使用count的命令来执行计数功能,例子:
1 | $ jellyfish count -m 16 -s 100M -t 24 -o mer_counts -c 7 input.fastq |
常用参数:
1 | -m | --mer-len=<num> |
3. 融合二进制的输出结果
上一步的输出结果为二进制文件,可能输出了多个hash文件,因此需要将这些hash文件合并成一个文件,此时用到 merge 命令。使用方法:
1 | $ jellyfish merge -o mer_counts_merged.jf hash1 hash2 ... |
常用参数:
1 | -o | --output=<string> default: mer_counts_merged.jf |
4. 对hash结果进行统计
k-mer的结果以hash的二进制文件结果给出,需要统计出k-mer总数,特异的k-mer数目,只出现过一次的kmer数,出现了最多的k-mer的数目等信息。以stats命令来运行。使用方法:
1 | $ jellyfish stats hash |
常用参数:
1 | -L | --lower-count=<num> |
5. 通过Hash结果来画直方图
对k-mer的计数结果有个直观的认识,则需要统计出现了x(x=1,2,3…)次的kmer的数目y,以x,y为横纵坐标画出直方图。使用 histo 命令能给出 x 和 y 对应的值,将结果默认输出到标准输出。其使用方法为
1 | $ jellyfish histo -l 1 -h 1000 hash |
常用参数:
1 | -l | --low=<num> default: 1 |
6. 将二进制Hash结果转换成文本文件
由于count命令生成的结果为二进制的,如有需要,则可以转换成可读文本文件。使用 dump 命令,使用方法:
1 | $ jellyfish dump -c -t -U 1000 hash |
常用参数:
1 | -c | --colum default: false |
7. 查询指定的k-mer出现的次数
如果需要从Hash结果中查询指定的k-mer出现的次数,则要是用 query 命令。从标准输入读取k-mer的序列,从标准输出得到k-mer对应的数目。使用方法
1 | $ jellyfish query hash |
常用参数:
1 | -C | --both-strands default: false |
四、思考
对Illumina paired-end测序结果进行jellyfish分析
由于paired-end序列有一定的顺序,需要将第2个文件的序列进行反向重复后,在和第一个文件的序列合到一起进行分析。可以使用Trinity中附带的软件fastool来将fastq文件转换成fasta文件,以及反向重复的转换。
1 | $ $Trinity_Home/trinity-plugins/fastool/fastool --illumina-trinity --to-fasta reads_1.fastaq > reads_1.fasta |