簡介
什麼是 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)
- 我如何在科學出版物中引用 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.Phylo
和Bio.Phylo.PAML
:Talevich et al. 2012 [Talevich2012];關於 Biopython、BioPerl、BioRuby、BioJava 和 EMBOSS 中支援的 FASTQ 檔案格式:Cock et al., 2010 [Cock2010]。
- 我應該如何大寫「Biopython」?「BioPython」可以嗎?正確的大小寫是「Biopython」,而不是「BioPython」(即使那樣會與 BioPerl、BioJava 和 BioRuby 相符)。
- Biopython 軟體是如何授權的?Biopython 是在Biopython 授權協議下發布的。 但是,自 Biopython 1.69 發布以來,某些檔案已明確以您選擇的Biopython 授權協議或BSD 3 條款授權進行雙重授權。 這旨在稍後在此雙重授權方法下提供所有 Biopython。
- 您是否有列出每個版本中新增內容的變更日誌?
- 我的列印命令發生了什麼問題?從 Biopython 1.77 開始,我們僅支援 Python 3,因此本教學課程使用 Python 3 風格的列印函數。
- 我如何找出我安裝的 Biopython 版本?請使用這個
>>> import Bio >>> print(Bio.__version__)
如果「
import Bio
」行失敗,則表示未安裝 Biopython。請注意,版本前後都有雙底線。如果第二行失敗,則表示您的版本非常過時。如果版本字串以加號結尾,例如「
1.66+
」,則表示您沒有正式版本,而是該版本發布後的開發中程式碼的舊快照。 此命名方式在 2016 年 6 月 Biopython 1.68 發布之前使用。如果版本字串以「
.dev<number>
」結尾,例如「1.68.dev0
」,則表示您沒有正式版本,而是該版本發布之前的開發中程式碼的快照。 - 此文件的最新版本在哪裡?如果您下載 Biopython 原始程式碼存檔,它將包含 HTML 和 PDF 格式的相關版本。 本文件的最新發布版本(每次發布時都會更新)在線上
- 我的序列比較有什麼問題?在 Biopython 1.65 中進行了重大變更,使
Seq
和MutableSeq
類別(和子類別)使用基於簡單字串的比較,您可以使用str(seq1) == str(seq2)
明確執行此操作。舊版本的 Biopython 會使用基於實例的比較來處理
Seq
物件,您可以使用id(seq1) == id(seq2)
顯式地進行比較。如果您仍然需要支援舊版本的 Biopython,請使用這些顯式形式以避免問題。請參閱第 比較 Seq 物件 節。
Bio.SeqIO
和Bio.AlignIO
讀取和寫入哪些檔案格式?請查看內建的 docstrings(from Bio import SeqIO
,然後help(SeqIO)
),或查看 wiki 上的 https://biopython.dev.org.tw/wiki/SeqIO 和 https://biopython.dev.org.tw/wiki/AlignIO 以取得最新的清單。- 為什麼
Bio.SeqIO
和Bio.AlignIO
函數parse
、read
和write
不接受檔案名稱?它們堅持使用 handles!您需要 Biopython 1.54 或更高版本,或直接顯式地使用 handles(請參閱第 什麼是 handle? 節)。尤其重要的是,在寫入資料後,記得顯式地關閉輸出 handles。 - 為什麼
Bio.SeqIO.write()
和Bio.AlignIO.write()
函數不接受單一記錄或比對?它們堅持使用列表或迭代器!您需要 Biopython 1.54 或更高版本,或直接使用[...]
將項目包裝起來,以建立包含一個元素的列表。 - 為什麼
str(...)
沒有給我Seq
物件的完整序列?您需要 Biopython 1.45 或更高版本。 - 為什麼
Bio.Blast
無法與最新的純文字 NCBI blast 輸出一起使用?NCBI 不斷調整 BLAST 工具的純文字輸出,而保持我們的解析器為最新版本是一項持續的挑戰。如果您沒有使用最新版本的 Biopython,您可以嘗試升級。然而,我們(和 NCBI)建議您改用 XML 輸出,該輸出旨在由電腦程式讀取。 - 為什麼我使用
Bio.Entrez.efetch()
的腳本停止運作?這可能是由於 NCBI 在 2012 年 2 月引入 EFetch 2.0 所做的變更。首先,他們變更了預設的回傳模式 - 您可能需要將retmode="text"
新增到您的呼叫中。其次,他們現在對如何提供 ID 列表更加嚴格 - Biopython 1.59 及更高版本會自動將列表轉換為逗號分隔的字串。 - 為什麼
Bio.Blast.NCBIWWW.qblast()
給出的結果與 NCBI BLAST 網站上的結果不同?您需要指定相同的選項 - NCBI 經常調整網站上的預設設定,它們不再與 QBLAST 的預設值相符。請檢查像是 gap penalties 和 expectation threshold 之類的項目。 - 為什麼我無法將
SeqRecord
物件加在一起?您需要 Biopython 1.53 或更高版本。 - 為什麼
Bio.SeqIO.index_db()
無法運作?該模組匯入沒有問題,但沒有 ``index_db`` 函數!您需要 Biopython 1.57 或更高版本(以及支援 SQLite3 的 Python)。 MultipleSeqAlignment
物件在哪裡?Bio.Align
模組匯入沒有問題,但這個類別不存在!您需要 Biopython 1.54 或更高版本。或者,較舊的Bio.Align.Generic.Alignment
類別支援它的某些功能,但不建議現在使用它。- 為什麼我無法直接從應用程式封裝器執行命令列工具?您需要 Biopython 1.55 或更高版本,但這些在 Biopython 1.78 中已被棄用。請考慮直接使用 Python
subprocess
模組。 - 我查看了一個目錄以尋找程式碼,但我找不到執行某項操作的程式碼。它藏在哪裡?需要了解的一件事是,我們將程式碼放在
__init__.py
檔案中。如果您不習慣在該檔案中尋找程式碼,這可能會讓人困惑。我們這樣做的原因是要讓使用者更容易匯入。例如,您可以直接使用from Bio import GenBank
,而不必執行像from Bio.GenBank import GenBank
這樣「重複」的匯入。 - 為什麼
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 可能會有幫助。