序列比對在biopython中的處理

2021-01-07 騰訊網

歡迎關注」生信修煉手冊」!

序列比對是生物信息學分析中的常見任務,包含局部比對和全局比對兩大算法,局部比對最經典的代表是blast, 全局比對則用於多序列比對。在biopython中,支持對序列比對的結果進行讀寫,解析,以及運行序列比對的程序。

首先來看下多序列比對,多序列比對的軟體較多,比如clustalw, muscle, mafft等,輸出結果的格式也很多,比如clustal, fasta, phylip等。在biopython中,為不同格式,不同軟體提供了統一的接口,方便我們的使用

1. 讀取多序列比對結果

通過Bio.AlignIO模塊來對多序列比對結果進行讀寫,其中的parse方法用於從文件句柄中讀取多序列比對的內容,用法如下

該方法的返回值是一個迭代器,每次迭代,返回的是一個SeqRecord對象。

2. 輸出多序列比對結果

通過write方法將多序列比對的結果輸出到文件中,可以指定輸出文件的格式,用法如下

和Bio.SeqIO相同,針對格式轉換,也體用了convert方法,用法如下

3. 運行多序列比對程序

為了簡化調用,在Bio.Applicaitons模塊中,提供了各種應有的調用接口。對於多序列比對結果,默認調用位於本地PATH環境變量下的可執行程序,來執行對應的命令,以clustalw為例,用法如下

第一個參數指定可執行程序,如果可執行程序位於PATH變量下,指定可執行程序的名稱即可,否則需要指定可執行程序的完整路徑。clustalw會根據輸入文件的名稱,自動確定輸出文件的名字。當然,也可以通過參數指定輸出文件的名字。

Bio.Applicaitons模塊通過subprocess來調用程序,我們可以藉此來讀取程序的標準輸出和標準錯誤流信息。比如以muscle為例,通過直接讀取標準輸出,避免了創建臨時文件,示例如下

對於局部比對而言,biopython可以運行blast並解析其輸出

1. 運行blast

支持聯網運行和本地運行兩種模式,聯網運行時調用NCBI網站的blast程序,用法如下

在線運行只需要我們提供查詢序列即可,用的資料庫是NCBI的公共資料庫,而本地運行則要求我們在本地安裝好blast可執行程序,構建本地版本的blast資料庫才行,本地運行的用法如下

2. 解析blast的輸出

biopython中blast默認的輸出格式為xml, 解析其輸出的用法如下

對於序列比對結果的運行和解析,通過biopython可以很好的將其整合到python生態中,對於用python構建一套完整的pipeline,非常的方便。

·end·

—如果喜歡,快分享給你的朋友們吧—

原創不易,歡迎收藏,點讚,轉發!生信知識浩瀚如海,在生信學習的道路上,讓我們一起並肩作戰!

本公眾號深耕耘生信領域多年,具有豐富的數據分析經驗,致力於提供真正有價值的數據分析服務,擅長個性化分析,歡迎有需要的老師和同學前來諮詢。

相關焦點

  • 使用biopython處理序列數據
    通過biopython, 我們可以方便的讀取這些格式的文件,並提取其中的信息。具體地,通過以下3個子模塊來處理序列數據1. Bio.Seq2. Bio.SeqRecore3.Seq('ATCGTACGATCT')在該模塊中,為序列對象提供了python字符的基礎操作,比如比較,大小寫轉換,切片,切分,連接, 格式化等操作,具體用法如# 切片>>> my_seq[1]'T'
  • Biopython-- 免費強大簡潔的生物信息學工具
    關於Biopython的更多背景,大家可以訪問項目的主頁https://biopython .org/。英文過關的同學可以參考biopython的在線文檔http:// biopython. org /DIST/docs/tutorial/Tutorial.html。
  • 如何進行基因組序列比對?
    至於具體分析過程中使用哪個版本的參考基因組序列,可根據自己需求進行選擇。 SAM文件格式是Heng Li於2009年提出的用於存儲比對結果信息的文本文件(以tab鍵分割),並同時發布了一款用於處理SAM文件的軟體SAMtools(PMID:19505943)。SAM文件包括兩部分內容:注釋信息(header section)和比對結果部分(alignment section)。
  • 我的Python筆記·BioPython(一)
    簡介Biopython(https://biopython.org/)是一個計算分子生物學模塊的集合,用它可以實現許多生物信息學項目中的基本任務
  • 序列比對綜合分析軟體
    Geneious 8.0.3序列綜合分析軟體;MACAW 2.05多序列構建與分析軟體。Clustal W 2.1用來對核酸與蛋白序列進行多序列比對(multiple sequence alignment)的軟體。FASTA 36.3.6f。將一條序列與另一條序列進行比較或在資料庫中查找同源序列並輸出。
  • 序列比對原理
    序列比對是非常基礎的工作,生物信息學分析大多涉及到這一步驟,雖然大部分人不做相關算法或軟體的開發,但是了解總體的算法原理還是需要的。    本文主要分為兩部分。第一部分介紹簡單的 2 條序列比對(多重序列比對不考慮),了解動態規劃策略如何尋找全局比對的解;第二部分介紹二代測序的 BWT + FM-index 策略如何實現降低資源消耗下的大規模數據比對。
  • python序列處理場景案例
    ## 序列的例子有限序列(C, Y, R)是一個字母序列,順序是C第一,Y第二,R第三。無限序列(a1, a2, .., an) 無限個元素按一定順序的排列空序列() 不包括任何元素的序列案例一:將序列分解為單獨的變量我們有一個包含N個元素的元組或序列,現在想將它分解為N個單獨的變量解決方案任何序列或可迭代對象都可以通過簡單的賦值操作來分解為單獨的變量
  • 使用biopython可視化染色體和基因元件
    基因組結構元件的可視化有多種方式,比如IGV等基因組瀏覽器中以track為單位的展示形式,亦或以circos為代表的圈圖形式,比如在細胞器基因組組裝中,基因元件常用圈圖形式展示,示例如下
  • Python中的時間序列處理 中篇
    # Pandas時間序列:按時間索引Pandas時間序列工具非常適合用來處理
  • 生信攻略--比對軟體的安裝與使用
    軟體:最常用的序列比對軟體,利用局部比對的方式進行序列和序列之間的同源性比較,一般用於基因注釋。:blastn -task blastn -query query.fna -db db.fa -out blastn.out        -query:需要進行比對的數據        -db:比對資料庫,必須是經過makeblastdb處理過的        -out:輸出        -evalue:比對率e值,
  • 【科研工具】做序列比對,這個工具最好用!
    BLAST很常用,但在實際工作中,BLAST做序列比對有一些不足之處,例如比對分析速度偏慢,比對結果不直觀、難於處理,比對不能顯示基因內含子及其基因定位等等。相比之下,BLAT比對簡單方便,速度更快,可以做單一或多個序列的同時比對,還可以輸出直觀的比對結果。
  • python辦公-比對微信群學生到家報到
    如何通過python比對兩份學生名單,找出沒有報導的學生呢?實例告訴大家。
  • python的模塊和序列
    前言概要本章節主要講述python中的模塊和序列的概念以及如何使用模塊和序列化方面的知識。模塊的概念在python中有個關鍵詞是import,代表的是導入、加載的意思。假設我們推出python解釋器再重新進入,那麼我們之前定義的函數或變量都將丟失,因此我們通常將程序寫入到文件中永久保存,如果需要運行,在以python xxx.py的方式去執行,此時xxx.py被稱為腳本script。
  • Python語言基礎50課(3)​|一行代碼統計序列ATCG含量
    我將例子簡化到核心,需求為 統計一條序列的中 ATCG的含量,直接上代碼:myseq = 'CTAGCGCcttagcatcctatcatgttcacNNNATCTCTAGCGCGGCAT'print([x+'% :{:.2%}'.format(myseq.count(x)/len(myseq)) for x in set
  • 將序列比對的結果保存為漂亮的圖片
    多序列比對在分子生物學中是一個基本方法,用來發現特徵序列,進行蛋白分類,證明序列間的同源性,幫助預測新序列二級結構與三級結構,確定PCR引物,以及在分子進化分析方面均有很大幫助
  • Fluent Python - Part2 序列構成的數組
    序列Python 使用統一的風格去處理序列數據,不管是哪種數據結構,它們都共用一套豐富的操作:迭代,切片,排序和拼接。
  • 手把手教你用DNAMAN進行多序列比對
    今天,小白君繼續給大家講解前天分享的SCI文章(可點擊公眾號-查看歷史消息,閱讀此文章)中所用到的另一個入門級生物信息學技能——用DNAMAN進行多序列比對
  • 如何用 Python 執行單行命令
    一般來說,面對日常處理的一些小任務,直接用 sed,grep 之類的就可以搞定,更複雜一點的就會考慮 awk 或者用一些現成的輪子,要是 awk
  • Fluent Python - Part4 文本和字節序列
    人類使用文本,計算機使用字節序列--- Esther Nam 和 Travis Fischer本章內容基本沒啥用,平常也基本接觸不到多編碼類型的文本處理
  • 集合:Python最後一類序列,序列知識點匯總
    主題Python基礎知識點「序列」已經進入第十一個章節,學完最後一類序列「集合」後,再對序列知識點進行總結。1、何為集合?3、列表、元組、字典、集合四類序列間的異常?集合定義:集合是Python中一種無序可變、元素不能重複的序列。