簡介

什麼是 Biopython?

Biopython 是一組免費提供的 Python (https://www.python.org) 模組,用於計算分子生物學。 Python 是一種物件導向、直譯、靈活的語言,廣泛用於科學計算。 Python 易於學習,語法非常清晰,並且可以很容易地使用 C、C++ 或 FORTRAN 編寫的模組進行擴展。自 2000 年成立以來 [Chapman2000],Biopython 一直由全球一大群志願者不斷開發和維護。

Biopython 網站 (http://www.biopython.org) 為開發用於生物資訊學使用和研究的基於 Python 的軟體的開發人員提供模組、腳本和網路連結的線上資源。 Biopython 包括各種生物資訊學檔案格式 (BLAST、Clustalw、FASTA、Genbank、...) 的解析器、對線上服務 (NCBI、Expasy、...) 的存取、標準序列類別、序列比對和模體分析工具、聚類演算法、結構生物學模組和親緣關係分析模組。

我可以在 Biopython 套件中找到什麼

主要的 Biopython 版本具有許多功能,包括

  • 能夠將生物資訊學檔案解析為 Python 可用的資料結構,包括對以下格式的支援

    • Blast 輸出 – 來自獨立和 WWW Blast

    • Clustalw

    • FASTA

    • GenBank

    • PubMed 和 Medline

    • ExPASy 檔案,如 Enzyme 和 Prosite

    • SCOP,包括 'dom' 和 'lin' 檔案

    • UniGene

    • SwissProt

  • 可以逐筆記錄迭代或索引並通過字典介面存取支援格式的檔案。

  • 用於處理流行的線上生物資訊學目的地的程式碼,例如

    • NCBI – Blast、Entrez 和 PubMed 服務

    • ExPASy – Swiss-Prot 和 Prosite 條目,以及 Prosite 搜尋

  • 與常見生物資訊學程式的介面,例如

    • 來自 NCBI 的獨立 Blast

    • Clustalw 比對程式

    • EMBOSS 命令列工具

  • 處理序列、序列 ID 和序列特徵的標準序列類別。

  • 用於對序列執行常見操作的工具,例如轉譯、轉錄和權重計算。

  • 使用 k 最近鄰、樸素貝葉斯或支援向量機執行資料分類的程式碼。

  • 用於處理比對的程式碼,包括創建和處理取代矩陣的標準方法。

  • 使分割可並行化任務為獨立進程變得容易的程式碼。

  • 用於執行基本序列操作、轉譯、BLAST 等的基於 GUI 的程式。

  • 大量關於使用模組的文件和幫助,包括此檔案、線上維基文件、網站和郵件列表。

  • 與 BioSQL 的整合,BioSQL 是一種也由 BioPerl 和 BioJava 專案支援的序列資料庫架構。

我們希望這能給你足夠的理由下載並開始使用 Biopython!

安裝 Biopython

Biopython 的所有安裝資訊都與本文檔分開,以便更容易保持更新。

簡短版本是使用 pip install biopython,請參閱 主要 README 檔案以取得其他選項。

常見問題 (FAQ)

  1. 我如何在科學出版物中引用 Biopython?
    請引用我們的應用說明 [Cock2009] 作為 Biopython 的主要參考文獻。此外,如果合適,請引用以下列表中的任何出版物,特別是作為 Biopython 中特定模組的參考文獻(更多資訊可以在我們的網站上找到)
    • 關於官方專案公告:Chapman 和 Chang, 2000 [Chapman2000]

    • 關於 Bio.PDB:Hamelryck 和 Manderick, 2003 [Hamelryck2003A]

    • 關於 Bio.Cluster:De Hoon et al., 2004 [DeHoon2004]

    • 關於 Bio.Graphics.GenomeDiagram:Pritchard et al., 2006 [Pritchard2006]

    • 關於 Bio.PhyloBio.Phylo.PAML:Talevich et al. 2012 [Talevich2012]

    • 關於 Biopython、BioPerl、BioRuby、BioJava 和 EMBOSS 中支援的 FASTQ 檔案格式:Cock et al., 2010 [Cock2010]

  2. 我應該如何大寫「Biopython」?「BioPython」可以嗎?
    正確的大小寫是「Biopython」,而不是「BioPython」(即使那樣會與 BioPerl、BioJava 和 BioRuby 相符)。
  3. Biopython 軟體是如何授權的?
    Biopython 是在Biopython 授權協議下發布的。 但是,自 Biopython 1.69 發布以來,某些檔案已明確以您選擇的Biopython 授權協議BSD 3 條款授權進行雙重授權。 這旨在稍後在此雙重授權方法下提供所有 Biopython。
  4. Biopython 標誌是什麼?它是如何授權的?
    截至 2017 年 7 月和 Biopython 1.70 版本,Biopython 標誌是一條黃色和藍色蛇,在小寫的「biopython」字樣上方形成雙螺旋。 它由 Patrick Kunzmann 設計,並且此標誌以您選擇的Biopython 授權協議BSD 3 條款授權進行雙重授權。
    new-logo
    在此之前,Biopython 標誌是兩條黃色蛇,在「BIOPYTHON」字樣周圍形成雙螺旋,由 Henrik Vestergaard 和 Thomas Hamelryck 在 2003 年作為公開競賽的一部分設計。
    old-logo
  5. 您是否有列出每個版本中新增內容的變更日誌?
    請參閱原始程式碼中包含的檔案 NEWS.rst(最初僅稱為 NEWS),或閱讀 GitHub 上的最新 NEWS 檔案
  6. 我的列印命令發生了什麼問題?
    從 Biopython 1.77 開始,我們僅支援 Python 3,因此本教學課程使用 Python 3 風格的列印函數
  7. 我如何找出我安裝的 Biopython 版本?
    請使用這個
    >>> import Bio
    >>> print(Bio.__version__)
    

    如果「import Bio」行失敗,則表示未安裝 Biopython。請注意,版本前後都有雙底線。如果第二行失敗,則表示您的版本非常過時。

    如果版本字串以加號結尾,例如「1.66+」,則表示您沒有正式版本,而是該版本發布的開發中程式碼的舊快照。 此命名方式在 2016 年 6 月 Biopython 1.68 發布之前使用。

    如果版本字串以「.dev<number>」結尾,例如「1.68.dev0」,則表示您沒有正式版本,而是該版本發布之前的開發中程式碼的快照。

  8. 此文件的最新版本在哪裡?
    如果您下載 Biopython 原始程式碼存檔,它將包含 HTML 和 PDF 格式的相關版本。 本文件的最新發布版本(每次發布時都會更新)在線上
  9. 我的序列比較有什麼問題?
    在 Biopython 1.65 中進行了重大變更,使 SeqMutableSeq 類別(和子類別)使用基於簡單字串的比較,您可以使用 str(seq1) == str(seq2) 明確執行此操作。

    舊版本的 Biopython 會使用基於實例的比較來處理 Seq 物件,您可以使用 id(seq1) == id(seq2) 顯式地進行比較。

    如果您仍然需要支援舊版本的 Biopython,請使用這些顯式形式以避免問題。請參閱第 比較 Seq 物件 節。

  10. Bio.SeqIOBio.AlignIO 讀取和寫入哪些檔案格式?
    請查看內建的 docstrings(from Bio import SeqIO,然後 help(SeqIO)),或查看 wiki 上的 https://biopython.dev.org.tw/wiki/SeqIOhttps://biopython.dev.org.tw/wiki/AlignIO 以取得最新的清單。
  11. 為什麼 Bio.SeqIOBio.AlignIO 函數 parsereadwrite 不接受檔案名稱?它們堅持使用 handles!
    您需要 Biopython 1.54 或更高版本,或直接顯式地使用 handles(請參閱第 什麼是 handle? 節)。尤其重要的是,在寫入資料後,記得顯式地關閉輸出 handles。
  12. 為什麼 Bio.SeqIO.write()Bio.AlignIO.write() 函數不接受單一記錄或比對?它們堅持使用列表或迭代器!
    您需要 Biopython 1.54 或更高版本,或直接使用 [...] 將項目包裝起來,以建立包含一個元素的列表。
  13. 為什麼 str(...) 沒有給我 Seq 物件的完整序列?
    您需要 Biopython 1.45 或更高版本。
  14. 為什麼 Bio.Blast 無法與最新的純文字 NCBI blast 輸出一起使用?
    NCBI 不斷調整 BLAST 工具的純文字輸出,而保持我們的解析器為最新版本是一項持續的挑戰。如果您沒有使用最新版本的 Biopython,您可以嘗試升級。然而,我們(和 NCBI)建議您改用 XML 輸出,該輸出旨在由電腦程式讀取。
  15. 為什麼我使用 Bio.Entrez.efetch() 的腳本停止運作?
    這可能是由於 NCBI 在 2012 年 2 月引入 EFetch 2.0 所做的變更。首先,他們變更了預設的回傳模式 - 您可能需要將 retmode="text" 新增到您的呼叫中。其次,他們現在對如何提供 ID 列表更加嚴格 - Biopython 1.59 及更高版本會自動將列表轉換為逗號分隔的字串。
  16. 為什麼 Bio.Blast.NCBIWWW.qblast() 給出的結果與 NCBI BLAST 網站上的結果不同?
    您需要指定相同的選項 - NCBI 經常調整網站上的預設設定,它們不再與 QBLAST 的預設值相符。請檢查像是 gap penalties 和 expectation threshold 之類的項目。
  17. 為什麼我無法將 SeqRecord 物件加在一起?
    您需要 Biopython 1.53 或更高版本。
  18. 為什麼 Bio.SeqIO.index_db() 無法運作?該模組匯入沒有問題,但沒有 ``index_db`` 函數!
    您需要 Biopython 1.57 或更高版本(以及支援 SQLite3 的 Python)。
  19. MultipleSeqAlignment 物件在哪裡?Bio.Align 模組匯入沒有問題,但這個類別不存在!
    您需要 Biopython 1.54 或更高版本。或者,較舊的 Bio.Align.Generic.Alignment 類別支援它的某些功能,但不建議現在使用它。
  20. 為什麼我無法直接從應用程式封裝器執行命令列工具?
    您需要 Biopython 1.55 或更高版本,但這些在 Biopython 1.78 中已被棄用。請考慮直接使用 Python subprocess 模組。
  21. 我查看了一個目錄以尋找程式碼,但我找不到執行某項操作的程式碼。它藏在哪裡?
    需要了解的一件事是,我們將程式碼放在 __init__.py 檔案中。如果您不習慣在該檔案中尋找程式碼,這可能會讓人困惑。我們這樣做的原因是要讓使用者更容易匯入。例如,您可以直接使用 from Bio import GenBank,而不必執行像 from Bio.GenBank import GenBank 這樣「重複」的匯入。
  22. 為什麼 Bio.Fasta 無法運作?
    我們在 Biopython 1.51(2009 年 8 月)中棄用了 Bio.Fasta 模組,並在 Biopython 1.55(2010 年 8 月)中將其刪除。在 DEPRECATED.rst 檔案中有一個簡短的範例說明如何將舊程式碼轉換為使用 Bio.SeqIO

對於更常見的問題,Python FAQ 頁面 https://docs.python.org/3/faq/index.html 可能會有幫助。