【陳巍翻譯】A13:近似匹配、漢明距離、和編輯距離

2021-02-20 陳巍學基因

(想看高清視頻,請用文章下方的高清視頻連結,在電腦上打開觀看)

字幕內容

到目前為止,我們已經討論了幾種不同的解決精確匹配問題的方法。簡單精確匹配、Boyer-Moore算法、和索引輔助的離線方法。但是精確匹配並不是我們很想要的。

 

測序序列不一定與基因組上原來位置的序列相匹配。有幾個原因,讓測序序列、與參考基因組的序列之間有差異。

 

測序序列、與參考序之間有差異的一個原因,是因為我們的測序序列會有錯誤,就像我們之前所討論的那樣,有時序列儀會在判讀一個測序序列時發生鹼基誤讀。當這種發生情況時,鹼基可能不再與參考基因組的序列相匹配。

 

另一個可能有差異的原因,是因為我們所研究的基因組、與參考基因組,是不一樣的基因組。

 

我們之前說過,兩個不相關的人,他們的基因組序列相似度是99%、或99.9%,但不是完全相同的,也就是說每一個基因組都會有一些不同。在測序得到的序列鹼基、和參考基因組的鹼基之間,會有差異。這是會有差異的另一個原因。

 

因此,僅僅只有精確匹配算法是不夠的。我們需要可以進行近似匹配的算法,允許文本、和模式之間有差異。

 

那麼,我們可能遇到什麼樣的差異?

 

這是一個例子,這是一個把P對齊到T的例子。用這種對齊方式,我們看到一個區別。而這種特殊的差別,被稱為「錯配」或「鹼基替代」。

 

這裡是另一種差別。這次的差別是,P對應到T時,多出一個額外的鹼基。可以看到在頂部的紅色的破折號,被稱為「gap」(差距)。因此,以紅色突出顯示的「G」,是模式P相對於文本T的一個「插入」。同樣,我們也可以認為這是在文本T相對於模式P的一個「缺失」。這是另一種我們可以找到的「gap」(差距)。就象這個。這其實就是我們以前看到的(插入的)鏡像。這就是文本T相對於模式P的一個「插入」,也就是模式P相對於文本T的一個「缺失」。

 

我們想要能夠描述兩個字符串之間的差距。換句話說,我們想要能夠描述它們之間有多少差別,差距是多大。這樣,我們必須要能夠準確地定義這個「距離」。

 

所以第一種差距,我們將之定義為「漢明距離」(Hamming distance)。所以如果你有兩個字符串,X和Y,這兩個字符串的長度相同,我們可以將X和Y之間的漢明距離定義為:我們需要做的最小的替代次數。也就是把一個字符串,通過替換其中的字符,將之轉換成另一個字符串。

 

在這個例子中,我們需要做1次、2次、3次替換,才能將X變成Y,反之亦然。這樣,我們就說,這兩個字符串之間的漢明距離為3。

 

現在,這裡有一個稍微不同的對「距離」的定義。這叫做「編輯距離」,有時也叫做「Levenshtein距離」。兩個字符串之間的「編輯距離」等於:要將一個字符串轉換為另一個字符串,所要做的、最少的編輯次數。

 

其中單個編輯可以是一個鹼基替換,也可以是插入或缺失一個鹼基,因此,讓我指出「編輯距離」和「漢明距離」之間的差別。

 

這在個例子中,首要的一點是,(兩個字符串之間的)差異不僅僅是鹼基替換。所以,如果是用編輯距離,我們可以象使用替換一樣,來用插入、缺失。

 

第二個區別是,對於編輯距離,X和Y不必要是相同的長度。這是有道理的,因為要把一個字符串變長或變短,只能通過插入或缺失。

 

這裡有一個例子,這個X和Y之間的編輯距離是多少?好。如果我們仔細看,我們可以在這裡看到一個替代,然後,如果我們再往前看一點,可以注意到:在這個位置,這個字符串比那個字符串多了一個A。這意味著有2次編輯,一次是替換,另一次是X相對於Y有一個插入。所以我們會說:編輯距離是2。

 

這是另一個例子,這個X和Y之間的編輯距離是多少?這個例子有點困難。實際上,編輯距離還是2,但是對比於原來的X和Y,看上去它的編輯距離象是更大。

 

我會在稍後的講座中,再回過頭來談這個關於找到「編輯距離」的算法。

 

但本節講座的其餘部分,和關於近似匹配的講座中,我會只談漢明距離和替換。關於插入和缺失,我們會在談編輯距離的時候再談。

 

這是我們之前看到的簡單精確匹配算法。我們想把簡單精確匹配算法,用到有錯配的情況中去。換句話說,我們想要在一定的漢明距離之內,找出模式P在文本T內的出現情況。

 

所以,精確匹配是在漢明距離為0(的條件下,找出匹配的情況)。但是現在,我們也要允許在漢明距離大於0的範圍之內,找到匹配的情況。所以我們是否可以通過修改這個算法,來做到這一點?

 

是的,它其實很簡單。主要要做的事情,是防止內循環一碰到一個錯配,就立即放棄。好。替代的方案是,我們讓內循環來跟蹤:已發現了多少次錯配。然後,只有當超過了最大可容許的錯配數時,才終止內部循環,放棄這個比對。這是實現這個想法的代碼。並將接下來的實踐中,我們將再次看到應用這個實現方法。

 

所以,我們可以很容易地把簡單精確匹配算法,改成能算做近似匹配的東西。

 

但如果你仔細地想想它,我想你會同意,要做到下面這一點是有難度的。就是要想把例如Boyer-Moore算法這類算法,適配到能做近似匹配算法。所以,接下來將要研究的,是想出一種用Boyer-Moore算近似匹配的通用算法。這將是一個令人驚訝的方法,它將允許我們使用所有我們已用過精確匹配方法,以作為解決近似匹配問題的工具。

-

高清視頻連結:http://v.qq.com/page/r/z/u/r0347njs4zu.html

原視頻連結:https://www.youtube.com/watch?v=MCvHeW13DsE&t=282s

原始碼連結:https://github.com/BenLangmead/ads1-notebooks

---

如果您有基因、測序、分子診斷方面的問題,可以到分答上來向我提問。

收費標準,目前是30元一個問題。



相關焦點

  • NN中常用的距離計算公式:歐式距離、曼哈頓距離、馬氏距離、餘弦、漢明距離
    馬氏距離和歐式距離的對比,見我的博文:https://blog.csdn.net/weixin_41770169/article/details/80759236cosine distance = 1 - cosine similarity5 Hammi漢明距離漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量
  • 513,漢明距離
    兩個整數之間的漢明距離指的是這兩個數字對應二進位位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意:0 ≤ x, y < 2^31.x和y都轉化為二進位的時候,在相同的位置上如果值都一樣,他們的漢明距離就是0。如果在相同的位置上值不一樣,有多少個不一樣的位置,那麼漢明距離就是多少。所以看到這道題,我們應該最容易想到的就是先異或運算,然後再計算這個異或運算的結果在二進位表示中1的個數。
  • 機器學習中距離和相似性度量方法
    由於皮爾遜係數具有的良好性質,在各個領域都應用廣泛,例如,在推薦系統根據為某一用戶查找喜好相似的用戶,進而提供推薦,優點是可以不受每個用戶評分標準不同和觀看影片數量不一樣的影響。4. 分類數據點間的距離漢明距離(Hamming distance)是指,兩個等長字符串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。
  • 常用的相似度和距離計算方法
    漢明距離又稱編輯距離,其定義:兩個等長字符串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。>編輯距離(Edit Distance),又稱Levenshtein距離,是指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。
  • 用Numpy手寫各種距離度量
    在二維和三維空間中的歐氏距離就是兩點之間的實際距離。實際駕駛距離就是這個「曼哈頓距離」。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。def minkowski(x, y, p):    return np.sum(np.abs(x - y) ** p) ** (1 / p)5.漢明距離(Hamming distance) 漢明距離是使用在數據傳輸差錯控制編碼裡面的,漢明距離是一個概念
  • 歐氏距離、閔氏距離和馬氏距離(閔可夫斯基軼事外一則)
    距離的定義很多,在數學上只需滿足三個基本條件即可以稱為距離,即非負性、對稱性和三角不等式性質。     我們最熟悉的莫過於歐幾裡得(Euclid)距離(簡稱歐氏距離),但距離還有很多其他定義方式,在不同情形下有不同的應用。
  • 【機器學習基礎】常見二分類損失函數、距離度量的 Python 實現
    在二維和三維空間中的歐氏距離就是兩點之間的實際距離。實際駕駛距離就是這個「曼哈頓距離」。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。def minkowski(x, y, p):    return np.sum(np.abs(x - y) ** p) ** (1 / p)5.漢明距離(Hamming distance) 漢明距離是使用在數據傳輸差錯控制編碼裡面的,漢明距離是一個概念
  • 【機器學習基礎】常見二分類損失函數、距離度量的Python實現
    在二維和三維空間中的歐氏距離就是兩點之間的實際距離。實際駕駛距離就是這個「曼哈頓距離」。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。def minkowski(x, y, p):    return np.sum(np.abs(x - y) ** p) ** (1 / p)5.漢明距離(Hamming distance) 漢明距離是使用在數據傳輸差錯控制編碼裡面的,漢明距離是一個概念
  • OpenCV-Python 特徵匹配|四十四
    它使用第一組中一個特徵的描述符,並使用一些距離計算將其與第二組中的所有其他特徵匹配。並返回最接近的一個。對於BF匹配器,首先我們必須使用cv.BFMatcher()創建BFMatcher對象。它需要兩個可選參數。第一個是normType,它指定要使用的距離測量。默認情況下為cv.NORM_L2。
  • CICC科普欄目|距離,原來還有這麼多類
    有一種類似的一種距離度量方法叫切比雪夫距離。(1)二維平面兩點a(x1,y1)與b(x2,y2)間的切比雪夫距離(2)兩個n維向量a(x11,x12,…,x1n)與b(x21,x22,…,x2n)間的切比雪夫距離       看不出兩個公式是等價的?提示一下:試試用放縮法和夾逼法則來證明。
  • 地月距離和日地距離是怎麼測出來的呢?
    首先我們先講下地月距離,地月距離對於我們這個時代的人們來說,只要學過高中的一點知識就可以比較準確的計算出來。月球可以近似看做繞地球做圓周運動,這個過程中月球受到萬有引力大小等於離心力的大小,這樣月球才能既不靠近地球也不遠離地球。
  • 蘋果a14比a13強多少
    打開APP 蘋果a14比a13強多少 網絡整理 發表於 2020-11-19 14:47:13   蘋果a14比a13強多少   A14比a13強多少?
  • 調頻發射機的輸出功率和發射距離的關係
    關於發射距離:影響發射距離的因素非常多,例如:1、發射機的輸出功率。
  • vlookup函數的使用方法,含查找多值、以某字開頭的值與近似匹配
    用vlookup函數查找時,既可以精確匹配又可以近似匹配。以下將先介紹vlookup函數的作用和函數表示,再列舉vlookup函數的使用方法,最後再分享它的幾個擴展應用實例,包含查找以某字或詞組開頭或結尾值、查找包含某個字或詞組的值,近似匹配和查找指定類下的所有產品價格。實例操作所用版本均為 Excel 2016。
  • 多元統計分析——歐式距離和馬氏距離
    今天介紹一下歐式距離和馬氏距離。歐式距離大家都比較熟悉,但是歐式距離在某些情境下不太適用,於是印度統計學家馬哈拉諾比斯(P. C. Mahalanobis)提出了馬氏距離,來解決不能直接使用歐式距離的問題。文章分為四個部分,第一部分簡單介紹歐式距離,第二部分給出不能直接使用歐式距離的例子,第三部分介紹馬氏距離,第四部分將歐式距離和馬氏距離的優缺點作比較。
  • 星系距離和空間膨脹的解讀
    哈勃掌握了測定河外星系距離的方法,因此他可以進一步研究河外星系和距離之間的關係。他將這些星系的紅移和它們的距離位置一一對應起來,畫在一張空間的疆域圖上。哈勃得出,星系退行速度和星系距離的比值幾乎是一個常數H,當時哈勃計算出為500,以km/s/Mpc為單位,這裡Mpc是百萬秒差距(1pc=3.26光年)。換句話說,哈勃的觀測意味著326萬光年外的星系正在以500km/s的速度遠離地球。
  • 遙感基於「距離感知」的傳統技術方案不可行
    距離感知無遺漏通過分析各種遙感數據,一些距離信息早期可以從三軸六軸等平面信息獲取,目前有無線電遙感手機觀測衛星導航獲取。用我的文獻綜述的一段話,傳達下意思:遙感基於「距離感知」的傳統技術方案不可行。簡而言之,遠看很美,近看不美。有幾種方法:第一個方法,把遙感圖像射向目標,只能被目標反射,不能被內部反射,如果把圖像遙感位移輸入雷射雷達,就可以有不同的效果。
  • 地球距離太陽有多少光年?或許我們更應該用另一個距離單位!
    如果你對地球太陽距離有個大致的了解,就不會問了。這種問題就好像你準備去果蔬市場買點蘋果回家吃,果蔬店老闆問你:要幾頓蘋果?你是不是一下子就懵了?地球與太陽的距離用光年表示太「浪費」光年這個詞語了!而且地球與太陽距離並不是固定不變的,因為地球圍繞太陽的軌道並不是正圓,距離太陽最遠為15210萬千米(遠日點),最近為14710萬千米(近日點)!而通常人們所說的地球太陽的距離是指的評論距離,為14960萬千米,也就是一個天文單位,近似情況下可以認為是1.5億千米,大約8.3光分,因為太陽光到達地球時間約為8分18秒!
  • 誰是距離地球最近的行星?
    正確的那一部分是,距離地球最近的行星不是固定的。由於地球和其他臨近的行星(水星、金星、火星)在各自的軌道上用不同的速度繞太陽運動,所以地球和這三顆行星的距離時刻發生改變。變化的規律簡單描述是:水星與地球的距離在1.387AU(上合日)和0.613AU(下合日)之間變動,完整的變動周期是115.93天;金星與地球的距離在1.725AU(上合日)和0.275AU(下合日)之間變動,完整的變動周期是583.92天;火星與地球的距離在2.524AU(合日)和0.524AU(衝日)之間變動,完整的變動周期是779.93天;
  • 誰是距離地球最近的行星?
    由於地球和其他臨近的行星(水星、金星、火星)在各自的軌道上用不同的速度繞太陽運動,所以地球和這三顆行星的距離時刻發生改變變化的規律簡單描述是:水星與地球的距離在1.387AU(上合日)和0.613AU(下合日)之間變動,完整的變動周期是115.93天;金星與地球的距離在1.725AU(上合日)和0.275AU(下合日)之間變動,完整的變動周期是583.92天;火星與地球的距離在2.524AU(合日)和0.524AU(衝日)之間變動,完整的變動周期是779.93