关注我们并在后台回复 “进群”,即可加入农心生信工作室学习交流群,群内不定时分享源代码及示例文件,并在线交流答疑。我们在农心生信,等你!
由于微信改版,乱序推送,很多朋友反映收不到公众号推文。快跟着图片步骤,将农心生信公众号设为星标,不错过每一条精彩内容!!
本公众号已开通留言功能,欢迎大家直接在文末留言交流!
软件简介
CD-HIT (Cluster Database at High Identity with Tolerance) 是一种广泛使用的生物信息学工具,主要用于快速聚类生物序列数据,如蛋白质或核酸序列,以减少数据冗余和简化数据分析。其开发者是来自伯纳姆研究所Burnham Institute(现为桑福德伯纳姆医学研究所Sanford-Burnham Medical Research Institute)Adam Godzik实验室的李伟忠博士团队。
其基本原理涉及比较序列之间的相似性,将高度相似的序列分组到同一个聚类中,从而减少数据集的复杂性。工作原理可概述为:将所有序列按照参数设定进行聚类,并将每一组聚类中的最长序列作为代表序列进行输出,同时给出每组聚类下的每个序列名可供相似度分析使用。可以用于构建多个样品间的非冗余基因集、分析样品间的相似程度等。
CD-HIT的算法原理主要包括以下几个方面:
• 序列比较和相似性评分:CD-HIT通过比较序列之间的相似性来进行聚类,通常使用序列对的全局相似性或局部相似性作为衡量标准。序列相似性通常通过比对序列对中的氨基酸或核苷酸并计算相同的比例来确定。
• 贪婪聚类算法:CD-HIT使用一种贪婪算法来快速聚类序列。它首先将最长的序列作为聚类的代表,然后将与该代表序列相似度超过一定阈值的序列分配到同一聚类中,并从数据集中移除这些序列。接着,它选择下一个最长的序列作为新聚类的代表,重复此过程,直到所有序列都被处理。
• 分层聚类:为了处理大规模数据集,CD-HIT可以采用分层聚类方法,先用较高的相似度阈值进行快速聚类,然后在这些聚类的基础上使用较低的相似度阈值进行更细致的聚类。
• 内存和计算效率:CD-HIT设计了高效的数据结构和算法来优化内存使用和计算效率,允许它处理大型数据集,如整个微生物组或蛋白质数据库。
软件安装
方法一:使用源码安装
wget https://github.com/weizhongli/cdhit/releases/download/V4.6.8/cd-hit-v4.6.8-2017-1208-source.tar.gz
cd ~/software/cd-hit
tar -zxvf cd-hit-v4.6.8-2017-1208-source.tar.gz
cd cd-hit-v4.6.8-2017-1208
make
cd cd-hit-auxtools
make
echo 'PATH=$PATH:~/software/ cd-hit' >> ~/.bashrc
source ~/.bashrc
方法二:使用编译好的二进制版本安装
wget https://github.com/weizhongli/cdhit/releases/download/V4.6.7/cd-hit-v4.6.7-2017-0501-Linux-binary.tar.gz
tar -zxvf cd-hit-v4.6.7-2017-0501-Linux-binary.tar.gz
软件参数介绍
首先了解一下软件的帮助文档:
下面简单介绍一下重要的几个参数:
-i:输入文件,fasta格式。
-o:输出文件前缀,输出文件有两个,分别为fasta格式序列文件和以.clstr结尾的聚类信息文件。
-c:较短序列比对到长序列的bp与自身bp数的比值超过该数值则聚类为一组,默认为0.9。
-d:聚类信息文件中各个聚类组中序列名的长度,设为0则将取完整序列名。
-n:两两序列进行序列比对时选择的 word size
-n 5 for thresholds 0.7 ~ 1.0
-n 4 for thresholds 0.6 ~ 0.7
-n 3 for thresholds 0.5 ~ 0.6
-n 2 for thresholds 0.4 ~ 0.5
-M:16000,16GB RAM
-T:使用的线程数
-aL:控制代表序列比对严格程度的参数,默认为0,若设为0.8则表示比对区间要占到代表(长)序列的80%。
-AL:控制代表序列比对严格程度的参数,默认为99999999,若设为40则表示代表序列的非比对区间要短于40bp。
-aS:控制短序列比对严格程度的参数,默认为0,若设为0.8则表示比对区间要占到短序列的80%。
-AS:控制短序列比对严格程度的参数,默认为99999999,若设为40则表示短序列的非比对区间要短于40bp。
这里需要注意-aL,-AL,-aS,-AS这四个参数的使用,具体含义如图所示:
软件使用示例
准备输入文件
以fasta文件input.fa为例
运行命令
cd-hit -i input.fa -o output.fa -c 0.8 -aS 0.8 -d 0
输出文件
CD-HIT有两个输出文件:一个是只含有所有代表序列(即去冗余后的序列)的fasta文件;另一个是以.clstr结尾的聚类信息文件。
(1)输出文件output.fa
(2)输出文件output.fa.clstr
以“>”开头的是一个聚类组。每组下面按序号排列,如上图中Cluster 18组有2个聚类序列。每个聚类序列有一个百分比或 “*”,百分比代表该序列与代表序列的相似度,“*” 代表该序列即为代表序列。
结果解读
total seq: 输入文件input.fa共包含193条序列
longest and shortest: 输入序列最长长度1398,最短长度318
Total letters: 输入文件总长度为108652 bp
Approximated minimal memory consumption: 运行内存情况
comparing sequences from 0 to 193:将193条序列逐个进行比对
193 finished:完成了193条输入序列的比对
177 clusters:共聚成了177个簇
其他
、
软件基本思路详解
首先对所有序列按照其长度进行排序,然后从最长的序列开始,形成第一个序列类,然后依次对序列进行处理,如果新的序列与已有的序列类的代表序列的相似性在cutoff以上则把该序列加到该序列类中,否则形成新的序列类。
之所以快主要是两个方面的原因:一个是使用了word过滤方法,即如果两条序列之间的相似性在80%(假设序列长度为100),那么它们至少有60个相同的长度为2的word,至少有40个相同的长度为3的word,至少有20个相同的长度为4的word。基于这个原则,在处理新的序列的时候,如果新的序列与已有序列的相同word的长度不能满足这些要求则不需要进行比对了,这极大的降低了时间消耗;另外一个速度快的原因是使用了index table,可以很快的计算序列之间相同word的数目。
当序列相似性在80%时,有20个位点是有差异的,极端的情况就是这20个位点对应的长度为2的字符串都不一样,因此是40个不一样,当有更多的不一样时,两条序列的相似性不可能在80%;同理,如果这20个位点对应的长度为4的字符串都不一样,则有80个不一样。
软件缺点
• 它不能保证同一个序列类中的序列的相似性都在threshold之上,因为每次比对都是用新序列与序列类的代表序列进行,这就有可能使得序列类中除了代表序列外其他序列之间的相似性在threshold之下。
• 基于word filter的方法使得使用每个长度的word能够处理的冗余性水平有限,如使用长度为2的word只能够得到相似性在50%以上的序列,长度为3的word只能够得到相似性在66.7%以上的序列类,类似的,长度为5的word只能够得到相似性在80%以上的序列。在实际应用的时候需要注意选择的word长度与threshold的匹配。
参考资料
https://github.com/weizhongli/cdhit
http://cd-hit.org
http://www.bioinformatics.org/cd-hit/
https://blog.csdn.net/weixin_41481113/article/details/83824743
" Cd-hit: a fast program for clustering and comparing large sets of protein or nucleotide sequences ", Weizhong Li & Adam Godzik Bioinformatics, (2006) 22:1658-9.
END
编辑 | Narcissus
供稿 | littleslug
审核 | 农心生信工作室