最近一篇NG中使用到的軟件,用來去除冗余的contigs,現簡單記錄。
CD-HIT早先是一個蛋白聚類的軟件,其主要的特定就是快!(ps:不是所有快的都是好的)
其去除冗余序列的大概思路就是:
首先對所有序列長度進行排序,從最長的開始,形成一個序列類,然后依次對序列進行處理,如果下一條序列和代表的序列相似性在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個不一樣。
安裝
點擊該處進行下載https://github.com/weizhongli/cdhit/archive/V4.6.2.tar.gz
tar -zxf cdhit-4.6.2.tar.gz
cd tar -zxf cdhit-4.6.2.tar.gz
make
其輸入格式為fasta的格式
簡單使用
cd-hit -i all.fasta -o new.fa -c 0.9 -aS 0.8 -d 0
參數
-i : 輸入文件,fasta
-o: 輸出文件
-c: 類似比對相似性高於0.9 則聚為一類,一般為0.9
-d: 當為0時,利用fasta文件完整名稱
還有其它一些參數,可以利用下面進行理解
- aL=Ra /R
- AL = R - Ra
- aS=Sa /S
- AS = S - Sa
- s=Sa /Ra
- S=R/S
- U=S1 +S2
- uL = U / R
- uS = U / S
輸出
兩個結果
- 去冗余后的fasta文件
- 說明文檔,其內容大概如下
其中“>” cluster, '*' 該序列是這個cluster的代表序列,'%',相似性
歡迎掃碼交流