為了與 BioPerl 的命名方式保持一致,Biopython 有一個 SeqIO
模組用於序列檔案的輸入/輸出,以及 AlignIO
用於多重序列比對的輸入/輸出。BioPerl 三巨頭的第三個成員是 SearchIO,而 Biopython 的等效模組是在 2012 年夏季由 Google Summer of Code 的學生 Wibowo Arindrarto 編寫(網誌)。
這涵蓋了成對序列搜尋檔案的輸入/輸出,例如來自 BLAST、HMMER、BLAT 或 Bill Pearson 的 FASTA 套件。請參閱 BioPerl SearchIO HOWTO 以取得背景資訊。
Bio.SearchIO
從 Biopython 1.61 開始被納入為實驗性模組,該警告在 Biopython 1.72 中被刪除。
這個 wiki 描述了重要部分和一些小例子。如需完整的參考資訊,請查閱 API 文件。
下表列出了 Bio.SearchIO
支援的所有格式。請注意,對於寫入支援,寫入器假設要寫入的物件的所有必要屬性都存在。例如,不可能立即將 BLAST XML 資料寫入 HMMER 3.0 純文字輸出。
格式名稱 | 讀取 | 寫入 | 索引 | 備註 |
---|---|---|---|---|
blast-tab | 1.61 | 1.61 | 1.61 | BLAST+ 表格輸出(支援 -m 6 和 -m 7 標記)。 |
blast-text | 1.61 | 不適用 | 不適用 | BLAST+ 純文字輸出(最高至 2.2.26+ 版本)。較新版本可能不一定能正常運作。 |
blast-xml | 1.61 | 1.61 | 1.61 | BLAST+ XML 輸出。 |
blat-psl | 1.61 | 1.61 | 1.61 | BLAT 預設輸出(PSL 格式)。支援包含或不包含標頭的變體。也支援 PSLX(PSL + 序列)。 |
exonerate-text | 1.61 | 不適用 | 1.61 | Exonerate 純文字輸出。由於 Biopython 儲存序列的方式,目前支援僅限於沒有分割密碼子的文字輸出(對於蛋白質查詢)。如果您正在剖析包含分割密碼子比對的蛋白質查詢文字輸出(例如,來自 protein2genome 比對模式),剖析器將會失敗。 |
exonerate-cigar | 1.61 | 不適用 | 1.61 | Exonerate cigar 字串。 |
exonerate-vulgar | 1.61 | 不適用 | 1.61 | Exonerate vulgar 字串。 |
fasta-m10 | 1.61 | 不適用 | 1.61 | Bill Pearson 的 FASTA -m 10 輸出。 |
hmmer3-domtab | 1.61 | 1.61 | 1.61 | HMMER3.0 網域表格輸出格式。由於必須指定程式名稱,hmmer3-domtab 這個名稱本身實際上並未使用。例如,在剖析 hmmscan 輸出時,格式名稱會是 hmmscan-domtab 。 |
hmmer3-tab | 1.61 | 1.61 | 1.61 | HMMER 3.0 表格輸出格式。 |
hmmer3-text | 1.61 | 不適用 | 1.61 | HMMER 3.0 純文字輸出格式。 |
hmmer2-text | 1.61 | 不適用 | 1.61 | HMMER 2.x 純文字輸出格式。 |
interproscan-xml | 1.71 | 不適用 | 不適用 | InterProScan XML 輸出。 |
雖然與 Biopython 的 SeqIO
和 AlignIO
模組大多相似,但主要的 Bio.SearchIO
函式存在一些小差異。根據所使用的檔案格式,您可以傳遞額外的關鍵字引數,以決定剖析器/索引器/寫入器的行為。以下顯示一些接受額外關鍵字引數的格式。
格式名稱 | 引數名稱 | 預設值 | 適用於 | 說明 | |
---|---|---|---|---|---|
blast-tab | comments | False | 讀取、寫入、索引 | 布林值,指示輸入/輸出檔案是否為包含註解的變體。 | |
fields | 預設 BLAST 表格輸出欄位名稱 | 讀取、寫入、索引 | 以空格分隔的字串,輸入/輸出檔案中的欄位/資料行清單。 | ||
blast-xml | encoding | “utf-8” | 寫入 | XML 編碼名稱。 | |
indent | “ ”(空格) | 寫入 | 用於縮排 XML 的字元。 | ||
increment | 2 | 寫入 | 列印子元素時,印出 indent 中定義的字元次數。 |
||
blat-psl | pslx | False | 讀取、寫入、索引 | 布林值,指示輸入/輸出檔案是否包含序列。 | |
header | False | 寫入 | 布林值,指示是否寫入 PSL 標頭。 |
建立 Bio.SearchIO
的主要目標是針對不同的搜尋輸出檔案提供一個通用且易於使用的介面。因此,我們也為 Bio.SearchIO
建立了一些超出通用物件模型的慣例/標準。這些慣例適用於 Bio.SearchIO
剖析的所有檔案,無論其個別格式為何。
在儲存序列座標(起始和結束值)時,Bio.SearchIO
使用 Python 式的切片慣例:以零為基礎且半開區間。例如,如果 BLAST XML 輸出檔案中的 HSP 起始和結束座標為 10 和 28,則在 Bio.SearchIO
中它們將會變成 9 和 28。起始座標變成 9 是因為 Python 索引從零開始,而結束座標保持為 28,因為 Python 切片會省略區間中的最後一個項目。
除了讓您享有標準化的好處之外,這個慣例也使座標可用於切片序列。例如,給定一個完整的查詢序列和 HSP 的起始和結束座標,可以使用這些座標來提取導致資料庫命中的查詢序列部分。
當使用 Bio.SearchIO.write
將這些物件寫入輸出檔案時,座標值會還原為其各自格式的慣例。使用上述範例,如果將 HSP 寫入 XML 檔案,則起始和結束座標將會再次變成 10 和 28。
某些搜尋輸出格式會根據序列的股反轉起始和結束座標序列。例如,在 BLAST 純文字格式中,如果匹配的股位於負向,則起始座標將始終大於結束座標。
在 Bio.SearchIO
中,起始座標始終小於結束座標,無論它們的原始股為何。這確保了在使用座標切片完整序列時的一致性。
請注意,此座標順序慣例僅在 HSPFragment 層級強制執行。如果 HSP 物件有數個 HSPFragment 物件,則每個個別片段都會符合此慣例。但是,HSP 物件中片段的順序會遵循搜尋輸出檔案所使用的順序。
與座標樣式慣例類似,當使用 Bio.SearchIO.write
寫入物件時,起始和結束座標的順序會還原為其各自的格式。
Bio.SearchIO
僅允許 -1、0、1 和 None
作為股值。對於框架,唯一允許的值是 -3 到 3(包含)的整數和 None
。這兩者都是標準的 Biopython 慣例。
Bio.SearchIO
與 Bio.Blast.NCBIXML
有何不同?
這兩個模組基於完全不同的物件模型,並且彼此不相容。不僅如此,底層的剖析器和寫入器也不同(Bio.Blast.NCBIXML
無法進行索引)。最後,Bio.SearchIO
計劃取代 Bio.Blast.NCBIXML
。
Bio.SearchIO
與 Bio.Blast.NCBIStandalone
有何不同?
同樣地,它們提供不同的物件模型。但是,Bio.SearchIO
目前在內部使用 Bio.Blast.NCBIStandalone
中的剖析器,但舊模組將會被棄用。