序列相似度定義

序列相似度(identity)是兩個序列之間相似度的度量值。在測序數據中一般是測序錯誤率的反面。當我們說“兩個物種的差異是。。”或者“測序錯誤是。。”,事實上有不同的相似度的計算方法,這裏我們討論了集中算法,每次在說相似度時,要搞清楚用的是那種算法。

首先舉個例子說明,下面兩條序列的相似度是多少呢?

CCAGTGTGGCCGATACCCCAGGTTGGCACGCATCGTTGCCTTGGTAAGC

CCAGTGTGGCCGATGCCCGTGCTACGCATCGTTGCCTTGGTAAGC

計算相似度,通常先要進行比對,我們使用match=1,mismatch=-2, gapOpen=-2 and gapExt=-1的參數進行比對,得到如下結果

有43個matching的鹼基,1個mismatch,5個deletion,1個insertion,CIGAR是18M3D2M2D2M1I22M.

Gap-excluded identity

 

這種計算法,我們首先排除比對中gapped列,也就是隻保留match,和mismatch,相似度就=matches / (matches + mismatches)。上面例子的相似度就是43/(43+1)=97.7%.

這種計算方法明顯的問題就是沒有考慮gaps。然而這還是一種經常使用的定義。經常有人說“人和大猩猩基因組只有百分之幾的差異”,這種說法就是使用的這種計算方法。論文(first chimpanzee genomepaper)中的原句是“Single-nucleotide substitutions occur at a mean rate of 1.23% between copies of the human and chimpanzee genome”,意思是“任何大猩猩基因組的單鹼基替換率平均爲1.23%”

BLAST identity

BLAST相似度定義爲matching的鹼基佔總的比對列數的比例。上例中,比對的列數一共50列,相似度爲43/50=86%。在Sam格式中,比對的列數可以用CIGAR字符串計算(M/I/D的綜述),matching鹼基等於比對總列數減去NM tag,可以用下面Perl一行命令計算BLAST特異性

perl -ane 'if(/NM:i:(\d+)/){$n=$1;$l=0;$l+=$1 while/(\d+)[MID]/g;print(($l-$n)/$l,"\n")}'

$n是Mismath/I/D的總和,$l是比對的長度。PAF格式中,第10列初一第11列就是BLAST相似度

BLAST相似度也許是最普遍的定義,但是我們也必須謹慎的用它來過濾比對數據。假設我們用一條帶有~300bp 插入偏大的1000bp序列進行比對。相似度大約70%,我們可能就把他過濾掉了。但是在進化過程中這個插入可能只是一次插入事件,而不是300次,因此把他當成300bp的差異就會有一些問題。

Gap-compressed identity

對於過濾這也許是比較好的定義:我們把連續的gaps認爲是一個差異,把連續的gap壓縮成一個,例如把握們的例子壓縮成如下的比對。

相似度爲43/(50-2-1)=91.5%。我已經在幾個任務中使用這種定義。最新版的minimap2在de:f tag裏輸出這種特異性。也可以用下面的perl命令計算

perl -ane 'if(/NM:i:(\d+)/){$n=$1;$m=$g=$o=0;$m+=$1 while/(\d+)M/g;$g+=$1,++$o while/(\d+)[ID]/g;print(1-($n-$g+$o)/($m+$o),"\n")}'

$m是M的綜合,$g是I和D的和,$o是gap open的數字。

罰分的影響

罰分會影響比對的結果和相似度。如果我們使用gapOpen=-4比對上面的兩條序列,會得到如下的比對結果

 

BLAST 相似度 83.7% ,gap-compressed相似度89.1%。即使我們使用同一定義,不同的罰分也會得到不同的特異性。

結論

不同的定義和不同的罰分都會得到不同的相似度或錯誤率。所有當和別人討論“測序錯誤”或“相似度”等的時候,先問清楚採用的那種定義,罰分怎麼設置的,這樣纔有可比性。如果自己評估可以使用下面的命令

minimap2 -c ref.fa query.fa  | perl -ane 'if(/tp:A:P/&&/NM:i:(\d+)/){$n+=$1;$m+=$1 while/(\d+)M/g;$g+=$1,++$o while/(\d+)[ID]/g}END{print(($n-$g+$o)/($m+$o),"\n")}'

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章