blast啟發式算法概述

2021-02-15 生物信息應用與算法

    啟發式算法是一種來自於經驗的算法,區別於有精確數學推理的算法。

         blast的啟發式算法源於一種什麼樣的經驗呢?下面的視頻也許能給你一些啟發。

        在學習blast啟發式算法之前, 我們首先了解一下使用exact local alignment算法到資料庫中查找特定序列的過程。下圖左側,一條是query sequence,另一條是來自於database sequence的序列;右側是local alignment需要的打分規則。

        根據打分規則和Smith-waterman recursion,我們得到了exact local alignments結果。下圖是兩個比對序列的dynamic programming array。

        根據上圖, 通過回溯,我們得到如下的exact local alignment結果。

        根據dynamic programming array 計算局部比對結果的時間與query和target database sequence的序列長度的乘積成正比。隨著大資料庫的出現, 例如GenBank, 到資料庫查找特定序列就需要更快的算法。

        Basic local alignment search tool使用的就是一種比smith-waterman更快的算法,該算法速度比較快,但是不能保證精確性。

而smith-waterman算法雖然花費時間比較長,但是能夠保證結果的精確性。

Indexation

        blast和其他速度比較快的aligner,mapper使用的核心技術是indexation。indexation是一種在字典中查找words的方法。在這裡, words指的是k-mer, 一個k-mer就是一條長度為k的序列。

        在這裡我們使用長度為3的k-mer:

        在blast第一步, 生成資料庫中所有序列的k-mer, 並建立索引。

        這些k-mer隨後和query sequence的k-mer進行比對,從中篩選出比對分值大於等於某個閾值的所有比對。

Seeding

        首先,介紹一個縮寫的含義。HSSP(high-scoring segment pair):來自query sequence的k-mer和來自database sequence的k-mer之間無gap的一個高分比對結果。那麼什麼樣的比對結果算是高分的比對結果呢?這就需要定一個閾值,也就是HSSP threshold。

        同時比對還需要一個記分的規則,local alignment都需要的一個規則。這裡用的記分規則和閾值如下:

        接下來就是通過k-mer比對確定HSSP的過程,具體過程如下所示:

        下表就是查找到的HSSP:

        對應到dynamic programming array中的結果如下:

上述過程被稱為seeding。

Extension

        extension是一個在seed處通過gap local alignment進行擴展的過程,當比對的分值小於等於某個閾值時,擴展終止。

小結:blast過程中使用到的主要參數:

                word length, 

                HSSP threshold, 

                extension threshold。

相關焦點

  • 啟發式算法 --數學化的經驗
    這篇來聊一下,理論上是依賴經驗人人都能做的: 網絡規劃中的啟發式算法。但人人能做不代表結果能做好,啟發式算法有高效的地方,也能把人帶溝裡。先看定義,啟發式算法(heuristic algorithm):一個基於直觀或經驗構造的算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每一個實例的一個可行解,該可行解與最優解的偏離程度一般不能被預計。
  • 【平臺】啟發式算法簡談(一)
    對於那些受大自然的運行規律或者面向具體問題的經驗、規則啟發出來的方法,人們常常稱之為啟發式算法(Heuristic Algorithm)。現在的啟發式算法也不是全部來自然的規律,也有來自人類積累的工作經驗。啟發式算法的發展: 啟發式算法的計算量都比較大,所以啟發式算法伴隨著計算機技術的發展,取得了巨大的成就。
  • 再談啟發式搜索算法
    啟發式搜索算法有點像廣度優先搜索,不同的是,它會優先順著有啟發性和具有特定信息的節點搜索下去,這些節點可能是到達目標的最好路徑。作為例子,下面介紹一個包括最優搜索版本的一般圖搜索算法(為了更詳細地了解啟發式搜索,可以參考引用的文章和Pearl寫的書[pearl 1984])。二、一個通用的圖搜索算法為了更準確地解釋啟發式搜索過程,這裡提出一個通用的圖搜索算法,它允許各種用戶—偏愛啟發式的或盲目的,進行定製。
  • 網絡規劃中的啟發式算法 --數學化的經驗
    上一篇聊了《網絡規劃中的重心法--人人能懂的算法》,所謂人人能懂得前提是你沒完全忘記初中數學。所幸的是會點開這類標題讀的小夥伴,果然都能想起來勾股定理,算是人人能懂了。這篇來聊一下,理論上是依賴經驗人人都能做的: 網絡規劃中的啟發式算法。但人人能做不代表結果能做好,啟發式算法有高效的地方,也能把人帶溝裡。
  • 自我代碼提升之啟發式算法(番外篇)
    作者:數據取經團——JQstyle   Python愛好者社區專欄作者     數據取經團(公眾號:zlx19930503)     專注R、Python數據分析挖掘、可視化、機器學習本文代碼及數據獲取方式:關注Python愛好者社區,在公眾號中回復旅行商本期給大家帶來一些啟發式算法的介紹和代碼實現
  • 啟發式算法之遞歸與去遞歸
    啟發式算法之遞歸與去遞歸一個問題的複雜性
  • 自動駕駛路徑規劃技術-A*啟發式搜索算法
    1968年發明的A*算法就是把啟發式方法(heuristic approaches)如BFS,和常規方法如Dijsktra算法結合在一起的算法。有點不同的是,類似BFS的啟發式方法經常給出一個近似解而不是保證最佳解。然而,儘管A*基於無法保證最佳解的啟發式方法,A*卻能保證找到一條最短路徑。1.3 A*算法我將集中討論A*算法。
  • 什麼是啟發式?什麼是產生式?
    一般而言,​機器常常被設定從已知推未知,而人們不時會從未知(假設)推未知,特殊情形下也有從未知推已知的,這些推導中常見的有產生式和啟發式,那麼究竟什麼是產生式和啟發式呢?!例如它常能發現很不錯的解,但也沒辦法證明它不會得到較壞的解;它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。有時候人們會發現在某些特殊情況下,啟發式算法會得到很壞的答案或效率極差,然而造成那些特殊情況的數據組合,也許永遠不會在現實世界出現。因此現實世界中啟發式算法常用來解決問題。啟發式算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。
  • 論文精選|利用有效的啟發式和迭代貪婪算法實現分布式環境中阻塞流程車間的生產調度
    圖2 NEH2EE啟發式程序PW啟發式算法考慮了機器空閒時間和由處理作業j引起的阻塞時間,以及作業j對下一個作業的影響。本文將PW啟發式對DBFSP的擴展。DPW啟發式算法有兩個步驟:第一步是檢測所有工廠中完工時間最小的工廠,第二步是通過索引函數選擇一個作業附加到檢測到的工廠。其偽代碼如圖3所示:
  • Igblast的安裝與使用
    下載並解壓igblast,並檢查文件的md5mkdir igblast && cd igblast# 下載安裝包wget ftp://ftp.ncbi.nih.gov/blast/executables/igblast/release/1.8.0/ncbi-igblast-1.8.0-x64-linux.tar.gz#
  • A*算法簡介
    啟發式算法(heuristic algorithm),是相對於最優算法的一種算法類型。在許多算法 中,我們最終得到了一個問題的最優解;但在有些算法中,我們通過我們構造的方法, 最終得到了一個在我們的邏輯內認為可行的解,但這個解並不一定是最優解,甚至其相 對於最優解的偏離程度都是我們難以評估的。這種算法被我們稱作啟發式算法。(詳見百度百科「啟發式算法」)    2.
  • 【算法】混合整數規劃/離散優化的精確算法--分支定界法及優化求解器
    本文提綱:1,整數規劃回顧 2,算法複雜度 3,精確解--分支定界法4,分支定界法的「收斂」 5,啟發式/近似算法5啟發式/近似算法(Heuristic/Approximation Algorithms)作為研究世界上最難問題的學者,想出了解決整數規劃問題的各種其他途徑,例如近似算法(Approximation Algorithms),啟發式算法(Heuristic Algorithms),遺傳算法(Generic
  • 十五個經典算法研究與總結(1)-A*搜索算法
    A*搜尋算法,俗稱A星算法,作為啟發式搜索算法中的一種,這是一種在圖形平面上,有多個節點的路徑,求出最低通過成本的算法。常用於遊戲中的NPC的移動計算,或線上遊戲的BOT的移動計算上。該算法像Dijkstra算法一樣,可以找到一條最短路徑;也像BFS一樣,進行啟發式的搜索。
  • 生信入門:序列比對之blast在線和本地使用
    主要內容1  背景2  在線blast3  本地blast    3.1  老版本blast    3.2  新版本blast背景序列比對(Sequenceblast作為一種序列相似性比對工具,是生物信息分析最常用的一款軟體,必須掌握。不管是做兩序列相似性的簡單比對,還是引物特異性、序列的來源等個性化分析,都會用到blast比對。許多看似高大上的基因分析,都可歸類於序列間的比較,因此blast是生信分析中基礎性的工具。
  • 非root權限的blast2go的安裝和使用(二)· blast2go的數據和軟體準備及使用
    blast2go的數據和軟體準備及使用blast2go,顧名思義,就是先將需要注釋的序列,用blast和資料庫比對,得到相似性比較高的序列,如果該序列在資料庫中有對應的GO,那麼我們就將它的GO作為我們想要注釋的序列的GO。所以,本地的blast2go第一個步驟是,先把blast資料庫構建好,對序列進行相似性比對,獲得該序列的必要信息。
  • 如何進行可用性啟發式評估
    作為用戶體驗專家,你可以自由選擇調研的方法,甚至可以使用超越傳統工具的方法,但是今天,我想回歸簡單,談一談啟發式評估方法。什麼是啟發式評估?「啟發式評估是指安排一組評估人員檢查界面,並判斷其是否與公認的可用性原則相符(「啟發法」)。」
  • 模擬退火算法
    現代優化算法是80年代初興起的啟發式算法。
  • A*算法
    A*算法是一個目標導向的算法。
  • 關於尋路算法的一些思考(3):A*算法的實現
    (點擊上方公眾號,可快速關注)英文:theory.stanford.edu譯者:伯樂在線 - hf_cherish 連結:http://blog.jobbole.com/85676/概述然而在遊戲中,經常會得到不可信的啟發式函數。請點擊這裡 查看Python和C++實現.連通性如果遊戲中起點和終點在圖上根本就不連通,此時A*算法會耗時很久,因為從起點開始,它需要查探所有的節點,直到它意識到根本沒有可行的路徑。因此,我們可以先確定連通分支,僅當起點和終點在同一個連通分支時,才使用A*算法。
  • 拆解Megablast:聲控和無線通信最牛的防水智能音箱
    Ultimate Ears是羅技(Logitech)旗下的耳機品牌,針對上述三項關鍵指標設計了Megablast,同時提供防水防塵達IP67級(圖1),據稱可以在深達1公尺的水中浸入30分鐘。Megablast內建Amazon Alexa,以及Wi-Fi與藍牙;僅需5分鐘即可完成設定並開始運作,從Amazon Music串流音樂。