Swiss-Prot 與 ExPASy

解析 Swiss-Prot 檔案

Swiss-Prot (https://web.expasy.org/docs/swiss-prot_guideline.html) 是一個經過人工整理的蛋白質序列資料庫。Biopython 可以解析「純文字」Swiss-Prot 檔案格式,該格式仍用於結合 Swiss-Prot、TrEMBL 和 PIR-PSD 的 UniProt Knowledgebase。

儘管以下內容我們著重於較舊的人類可讀純文字格式,Bio.SeqIO 可以讀取此格式和用於帶註解的蛋白質序列的較新 UniProt XML 檔案格式。

解析 Swiss-Prot 紀錄

在第 從網路解析 SwissProt 序列節中,我們描述了如何將 Swiss-Prot 記錄的序列提取為 SeqRecord 物件。或者,您可以將 Swiss-Prot 紀錄儲存在 Bio.SwissProt.Record 物件中,它實際上儲存了 Swiss-Prot 紀錄中包含的完整資訊。在本節中,我們描述如何從 Swiss-Prot 檔案中提取 Bio.SwissProt.Record 物件。

要解析 Swiss-Prot 紀錄,我們首先取得 Swiss-Prot 紀錄的控制代碼。有幾種方法可以做到這一點,具體取決於 Swiss-Prot 紀錄的儲存位置和方式

  • 在本地開啟 Swiss-Prot 檔案

    >>> handle = open("SwissProt/F2CXE6.txt")
    
  • 開啟 gzipped 的 Swiss-Prot 檔案

    >>> import gzip
    >>> handle = gzip.open("myswissprotfile.dat.gz", "rt")
    
  • 透過網際網路開啟 Swiss-Prot 檔案

    >>> from urllib.request import urlopen
    >>> url = "https://raw.githubusercontent.com/biopython/biopython/master/Tests/SwissProt/F2CXE6.txt"
    >>> handle = urlopen(url)
    

    在呼叫 read 之前開啟儲存在網際網路上的檔案。

  • 透過網際網路從 ExPASy 資料庫開啟 Swiss-Prot 檔案(請參閱擷取 Swiss-Prot 紀錄一節)

    >>> from Bio import ExPASy
    >>> handle = ExPASy.get_sprot_raw("F2CXE6")
    

關鍵是對於解析器來說,控制代碼是如何建立的並不重要,只要它指向 Swiss-Prot 格式的資料即可。如果控制代碼以二進制模式開啟,則解析器將自動將資料解碼為 ASCII(Swiss-Prot 使用的編碼)。

我們可以按照第 從網路解析 SwissProt 序列節中的描述,使用 Bio.SeqIO 來取得檔案格式獨立的 SeqRecord 物件。或者,我們可以使用 Bio.SwissProt 取得 Bio.SwissProt.Record 物件,這些物件與底層檔案格式更為匹配。

要從控制代碼中讀取一個 Swiss-Prot 紀錄,我們使用函數 read()

>>> from Bio import SwissProt
>>> record = SwissProt.read(handle)

如果控制代碼指向剛好一個 Swiss-Prot 紀錄,則應使用此函數。如果未找到 Swiss-Prot 紀錄,以及找到多個紀錄,則會引發 ValueError

我們現在可以列印出有關此紀錄的一些資訊

>>> print(record.description)
SubName: Full=Plasma membrane intrinsic protein {ECO:0000313|EMBL:BAN04711.1}; SubName: Full=Predicted protein {ECO:0000313|EMBL:BAJ87517.1};
>>> for ref in record.references:
...     print("authors:", ref.authors)
...     print("title:", ref.title)
...
authors: Matsumoto T., Tanaka T., Sakai H., Amano N., Kanamori H., Kurita K., Kikuta A., Kamiya K., Yamamoto M., Ikawa H., Fujii N., Hori K., Itoh T., Sato K.
title: Comprehensive sequence analysis of 24,783 barley full-length cDNAs derived from 12 clone libraries.
authors: Shibasaka M., Sasano S., Utsugi S., Katsuhara M.
title: Functional characterization of a novel plasma membrane intrinsic protein2 in barley.
authors: Shibasaka M., Katsuhara M., Sasano S.
title:
>>> print(record.organism_classification)
['Eukaryota', 'Viridiplantae', 'Streptophyta', 'Embryophyta', 'Tracheophyta', 'Spermatophyta', 'Magnoliophyta', 'Liliopsida', 'Poales', 'Poaceae', 'BEP clade', 'Pooideae', 'Triticeae', 'Hordeum']

要解析包含多個 Swiss-Prot 紀錄的檔案,我們改為使用 parse 函數。此函數允許我們迭代檔案中的紀錄。

例如,讓我們解析完整的 Swiss-Prot 資料庫並收集所有描述。您可以從 ExPASy FTP 站點下載此內容,作為單一 gzipped 檔案 uniprot_sprot.dat.gz(約 300MB)。這是一個壓縮檔案,其中包含單一檔案 uniprot_sprot.dat(超過 1.5GB)。

如本節開頭所述,您可以使用 Python 程式庫 gzip 開啟和解壓縮 .gz 檔案,如下所示

>>> import gzip
>>> handle = gzip.open("uniprot_sprot.dat.gz", "rt")

但是,解壓縮大型檔案需要時間,而且每次您以這種方式開啟檔案進行讀取時,都必須即時解壓縮。因此,如果您可以空出磁碟空間,那麼如果您先將檔案解壓縮到磁碟,以取得裡面的 uniprot_sprot.dat 檔案,從長遠來看,您將節省時間。然後您可以像平常一樣開啟檔案進行讀取

>>> handle = open("uniprot_sprot.dat")

截至 2009 年 6 月,從 ExPASy 下載的完整 Swiss-Prot 資料庫包含 468851 個 Swiss-Prot 紀錄。使用列表推導式建立紀錄描述列表的一種簡潔方式是

>>> from Bio import SwissProt
>>> handle = open("uniprot_sprot.dat")
>>> descriptions = [record.description for record in SwissProt.parse(handle)]
>>> len(descriptions)
468851
>>> descriptions[:5]
['RecName: Full=Protein MGF 100-1R;',
 'RecName: Full=Protein MGF 100-1R;',
 'RecName: Full=Protein MGF 100-1R;',
 'RecName: Full=Protein MGF 100-1R;',
 'RecName: Full=Protein MGF 100-2L;']

或者,使用 for 迴圈遍歷紀錄迭代器

>>> from Bio import SwissProt
>>> descriptions = []
>>> handle = open("uniprot_sprot.dat")
>>> for record in SwissProt.parse(handle):
...     descriptions.append(record.description)
...
>>> len(descriptions)
468851

由於這是一個如此大型的輸入檔案,無論哪種方式,在我的新桌上型電腦上都需要大約 11 分鐘(使用未壓縮的 uniprot_sprot.dat 檔案作為輸入)。

從 Swiss-Prot 紀錄中提取您想要的任何類型的資訊都同樣容易。若要查看 Swiss-Prot 紀錄的成員,請使用

>>> dir(record)
['__doc__', '__init__', '__module__', 'accessions', 'annotation_update',
'comments', 'created', 'cross_references', 'data_class', 'description',
'entry_name', 'features', 'gene_name', 'host_organism', 'keywords',
'molecule_type', 'organelle', 'organism', 'organism_classification',
'references', 'seqinfo', 'sequence', 'sequence_length',
'sequence_update', 'taxonomy_id']

解析 Swiss-Prot 關鍵字和類別列表

Swiss-Prot 還發布了一個檔案 keywlist.txt,其中列出了 Swiss-Prot 中使用的關鍵字和類別。該檔案包含以下格式的項目

ID   2Fe-2S.
AC   KW-0001
DE   Protein which contains at least one 2Fe-2S iron-sulfur cluster: 2 iron
DE   atoms complexed to 2 inorganic sulfides and 4 sulfur atoms of
DE   cysteines from the protein.
SY   Fe2S2; [2Fe-2S] cluster; [Fe2S2] cluster; Fe2/S2 (inorganic) cluster;
SY   Di-mu-sulfido-diiron; 2 iron, 2 sulfur cluster binding.
GO   GO:0051537; 2 iron, 2 sulfur cluster binding
HI   Ligand: Iron; Iron-sulfur; 2Fe-2S.
HI   Ligand: Metal-binding; 2Fe-2S.
CA   Ligand.
//
ID   3D-structure.
AC   KW-0002
DE   Protein, or part of a protein, whose three-dimensional structure has
DE   been resolved experimentally (for example by X-ray crystallography or
DE   NMR spectroscopy) and whose coordinates are available in the PDB
DE   database. Can also be used for theoretical models.
HI   Technical term: 3D-structure.
CA   Technical term.
//
ID   3Fe-4S.
...

此檔案中的項目可以由 Bio.SwissProt.KeyWList 模組中的 parse 函數解析。然後,每個項目都儲存為 Bio.SwissProt.KeyWList.Record,這是一個 Python 字典。

>>> from Bio.SwissProt import KeyWList
>>> handle = open("keywlist.txt")
>>> records = KeyWList.parse(handle)
>>> for record in records:
...     print(record["ID"])
...     print(record["DE"])
...

這會列印

2Fe-2S.
Protein which contains at least one 2Fe-2S iron-sulfur cluster: 2 iron atoms
complexed to 2 inorganic sulfides and 4 sulfur atoms of cysteines from the
protein.
...

解析 Prosite 紀錄

Prosite 是一個包含蛋白質結構域、蛋白質家族、功能位點以及用於識別它們的模式和設定檔的資料庫。Prosite 與 Swiss-Prot 並行開發。在 Biopython 中,Prosite 紀錄由 Bio.ExPASy.Prosite.Record 類別表示,其成員對應於 Prosite 紀錄中的不同欄位。

一般來說,一個 Prosite 檔案可以包含多個 Prosite 紀錄。例如,整組 Prosite 紀錄可以從 ExPASy FTP 站點下載為單一檔案 (prosite.dat),其中包含 2073 個紀錄(2007 年 12 月 4 日發布的 20.24 版)。要解析此類檔案,我們再次使用迭代器

>>> from Bio.ExPASy import Prosite
>>> handle = open("myprositefile.dat")
>>> records = Prosite.parse(handle)

我們現在可以一次取得一個紀錄並列印出一些資訊。例如,使用包含完整 Prosite 資料庫的檔案,我們會發現

>>> from Bio.ExPASy import Prosite
>>> handle = open("prosite.dat")
>>> records = Prosite.parse(handle)
>>> record = next(records)
>>> record.accession
'PS00001'
>>> record.name
'ASN_GLYCOSYLATION'
>>> record.pdoc
'PDOC00001'
>>> record = next(records)
>>> record.accession
'PS00004'
>>> record.name
'CAMP_PHOSPHO_SITE'
>>> record.pdoc
'PDOC00004'
>>> record = next(records)
>>> record.accession
'PS00005'
>>> record.name
'PKC_PHOSPHO_SITE'
>>> record.pdoc
'PDOC00005'

等等。如果您有興趣知道有多少 Prosite 紀錄,可以使用

>>> from Bio.ExPASy import Prosite
>>> handle = open("prosite.dat")
>>> records = Prosite.parse(handle)
>>> n = 0
>>> for record in records:
...     n += 1
...
>>> n
2073

要從控制代碼中讀取剛好一個 Prosite,您可以使用 read 函數

>>> from Bio.ExPASy import Prosite
>>> handle = open("mysingleprositerecord.dat")
>>> record = Prosite.read(handle)

如果未找到 Prosite 紀錄,以及找到多個 Prosite 紀錄,此函數會引發 ValueError。

解析 Prosite 文件紀錄

在上面的 Prosite 範例中,record.pdoc 存取號碼 'PDOC00001''PDOC00004''PDOC00005' 等等是指 Prosite 文件。Prosite 文件紀錄可以從 ExPASy 取得,分為個別檔案和一個包含所有 Prosite 文件紀錄的檔案 (prosite.doc)。

我們使用 Bio.ExPASy.Prodoc 中的解析器來解析 Prosite 文件紀錄。例如,若要建立 Prosite 文件紀錄的所有存取號碼的列表,可以使用

>>> from Bio.ExPASy import Prodoc
>>> handle = open("prosite.doc")
>>> records = Prodoc.parse(handle)
>>> accessions = [record.accession for record in records]

同樣,提供了一個 read() 函數,用於從控制代碼中讀取剛好一個 Prosite 文件紀錄。

解析 Enzyme 紀錄

ExPASy 的 Enzyme 資料庫是關於酵素命名法資訊的儲存庫。典型的 Enzyme 紀錄如下所示

ID   3.1.1.34
DE   Lipoprotein lipase.
AN   Clearing factor lipase.
AN   Diacylglycerol lipase.
AN   Diglyceride lipase.
CA   Triacylglycerol + H(2)O = diacylglycerol + a carboxylate.
CC   -!- Hydrolyzes triacylglycerols in chylomicrons and very low-density
CC       lipoproteins (VLDL).
CC   -!- Also hydrolyzes diacylglycerol.
PR   PROSITE; PDOC00110;
DR   P11151, LIPL_BOVIN ;  P11153, LIPL_CAVPO ;  P11602, LIPL_CHICK ;
DR   P55031, LIPL_FELCA ;  P06858, LIPL_HUMAN ;  P11152, LIPL_MOUSE ;
DR   O46647, LIPL_MUSVI ;  P49060, LIPL_PAPAN ;  P49923, LIPL_PIG   ;
DR   Q06000, LIPL_RAT   ;  Q29524, LIPL_SHEEP ;
//

在此範例中,第一行顯示脂蛋白脂肪酶的 EC(酵素委員會)編號(第二行)。脂蛋白脂肪酶的其他名稱為「清除因子脂肪酶」、「二酰基甘油脂肪酶」和「雙甘油脂肪酶」(第 3 行至第 5 行)。以「CA」開頭的行顯示此酵素的催化活性。「CC」開頭的是註解行。「PR」行顯示對 Prosite 文件紀錄的參照,「DR」行顯示對 Swiss-Prot 紀錄的參照。這些項目不一定都出現在 Enzyme 紀錄中。

在 Biopython 中,Enzyme 紀錄由 Bio.ExPASy.Enzyme.Record 類別表示。此紀錄衍生自 Python 字典,並且具有對應於 Enzyme 檔案中使用的雙字母代碼的鍵。若要讀取包含一個 Enzyme 紀錄的 Enzyme 檔案,請使用 Bio.ExPASy.Enzyme 中的 read 函數

>>> from Bio.ExPASy import Enzyme
>>> with open("lipoprotein.txt") as handle:
...     record = Enzyme.read(handle)
...
>>> record["ID"]
'3.1.1.34'
>>> record["DE"]
'Lipoprotein lipase.'
>>> record["AN"]
['Clearing factor lipase.', 'Diacylglycerol lipase.', 'Diglyceride lipase.']
>>> record["CA"]
'Triacylglycerol + H(2)O = diacylglycerol + a carboxylate.'
>>> record["PR"]
['PDOC00110']
>>> record["CC"]
['Hydrolyzes triacylglycerols in chylomicrons and very low-density lipoproteins
(VLDL).', 'Also hydrolyzes diacylglycerol.']
>>> record["DR"]
[['P11151', 'LIPL_BOVIN'], ['P11153', 'LIPL_CAVPO'], ['P11602', 'LIPL_CHICK'],
['P55031', 'LIPL_FELCA'], ['P06858', 'LIPL_HUMAN'], ['P11152', 'LIPL_MOUSE'],
['O46647', 'LIPL_MUSVI'], ['P49060', 'LIPL_PAPAN'], ['P49923', 'LIPL_PIG'],
['Q06000', 'LIPL_RAT'], ['Q29524', 'LIPL_SHEEP']]

如果未找到 Enzyme 紀錄,以及找到多個 Enzyme 紀錄,read 函數會引發 ValueError。

整組 Enzyme 紀錄可以從 ExPASy FTP 站點下載為單一檔案 (enzyme.dat),其中包含 4877 個紀錄(2009 年 3 月 3 日發布)。若要解析包含多個 Enzyme 紀錄的此類檔案,請使用 Bio.ExPASy.Enzyme 中的 parse 函數來取得迭代器

>>> from Bio.ExPASy import Enzyme
>>> handle = open("enzyme.dat")
>>> records = Enzyme.parse(handle)

我們現在可以一次迭代這些紀錄。例如,我們可以建立所有有 Enzyme 紀錄可用的 EC 編號的列表

>>> ecnumbers = [record["ID"] for record in records]

存取 ExPASy 伺服器

Swiss-Prot、Prosite 和 Prosite 文件紀錄可以從 ExPASy 網站 https://www.expasy.org 下載。ExPASy 提供四種類型的查詢

get_prodoc_entry

以下載 HTML 格式的 Prosite 文件記錄

get_prosite_entry

以下載 HTML 格式的 Prosite 記錄

get_prosite_raw

以下載原始格式的 Prosite 或 Prosite 文件記錄

get_sprot_raw

以下載原始格式的 Swiss-Prot 記錄

要從 Python 腳本存取此 Web 伺服器,我們使用 Bio.ExPASy 模組。

檢索 Swiss-Prot 記錄

假設我們正在研究蘭花的查爾酮合成酶(請參閱 使用範例 章節,了解研究蘭花有趣之處的一些理由)。查爾酮合成酶參與植物中的類黃酮生物合成,而類黃酮會產生許多很棒的東西,例如色素顏色和紫外線保護劑。

如果您在 Swiss-Prot 上進行搜尋,您可以找到三種蘭花的查爾酮合成酶蛋白質,ID 編號分別是 O23729、O23730、O23731。現在,讓我們編寫一個腳本來抓取這些蛋白質,並解析出一些有趣的資訊。

首先,我們使用 Bio.ExPASyget_sprot_raw() 函式來抓取記錄。這個函式非常棒,因為您可以提供一個 ID,然後取得一個原始文字記錄的控制代碼(沒有 HTML 來干擾!)。然後,我們可以使用 Bio.SwissProt.read 來提取 Swiss-Prot 記錄,或是使用 Bio.SeqIO.read 來取得 SeqRecord。以下程式碼完成了我剛才寫的步驟

>>> from Bio import ExPASy
>>> from Bio import SwissProt

>>> accessions = ["O23729", "O23730", "O23731"]
>>> records = []

>>> for accession in accessions:
...     handle = ExPASy.get_sprot_raw(accession)
...     record = SwissProt.read(handle)
...     records.append(record)
...

如果您提供給 ExPASy.get_sprot_raw 的登錄編號不存在,則 SwissProt.read(handle) 將會引發 ValueError。您可以捕獲 ValueException 例外來偵測無效的登錄編號

>>> for accession in accessions:
...     handle = ExPASy.get_sprot_raw(accession)
...     try:
...         record = SwissProt.read(handle)
...     except ValueException:
...         print("WARNING: Accession %s not found" % accession)
...     records.append(record)
...

使用 UniProt 搜尋

現在,您可能會說我事先知道這些記錄的登錄編號。確實,get_sprot_raw() 需要條目名稱或登錄編號。當您手邊沒有這些資訊時,可以使用 UniProt 來搜尋它們。您也可以使用 UniProt 套件以程式化的方式搜尋蛋白質。

例如,讓我們搜尋來自特定生物(生物 ID:2697049)且已審查的蛋白質。我們可以使用以下程式碼來執行此操作

>>> from Bio import UniProt

>>> query = "(organism_id:2697049) AND (reviewed:true)"
>>> results = list(UniProt.search(query))

UniProt.search 方法會傳回搜尋結果的迭代器。該迭代器會一次傳回一個結果,並在需要時從 UniProt 中提取更多結果,直到傳回所有結果。我們可以從這個迭代器有效率地建立此特定查詢的清單,因為此查詢只會傳回幾個結果(撰寫時為 17 個)。

讓我們嘗試一個會傳回更多結果的搜尋。在撰寫本文時,查詢「Insulin AND (reviewed:true)」共有 5,147 個結果。我們可以使用切片來取得前 50 個結果的清單。

>>> from Bio import UniProt
>>> from itertools import islice

>>> query = "Insulin AND (reviewed:true)"
>>> results = UniProt.search(query, batch_size=50)[:50]

您可以使用 len 方法取得搜尋結果的總數(不論批次大小為何)

>>> from Bio import UniProt

>>> query = "Insulin AND (reviewed:true)"
>>> result_iterator = UniProt.search(query, batch_size=0)
>>> len(result_iterator)
5147

檢索 Prosite 和 Prosite 文件記錄

Prosite 和 Prosite 文件記錄可以 HTML 格式或原始格式檢索。若要使用 Biopython 解析 Prosite 和 Prosite 文件記錄,您應該以原始格式檢索記錄。但是,對於其他用途,您可能對 HTML 格式的這些記錄感興趣。

若要以原始格式檢索 Prosite 或 Prosite 文件記錄,請使用 get_prosite_raw()。例如,以下載 Prosite 記錄並以原始文字格式列印,請使用

>>> from Bio import ExPASy
>>> handle = ExPASy.get_prosite_raw("PS00001")
>>> text = handle.read()
>>> print(text)

若要檢索 Prosite 記錄並將其解析為 Bio.Prosite.Record 物件,請使用

>>> from Bio import ExPASy
>>> from Bio import Prosite
>>> handle = ExPASy.get_prosite_raw("PS00001")
>>> record = Prosite.read(handle)

相同的函式可用於檢索 Prosite 文件記錄,並將其解析為 Bio.ExPASy.Prodoc.Record 物件

>>> from Bio import ExPASy
>>> from Bio.ExPASy import Prodoc
>>> handle = ExPASy.get_prosite_raw("PDOC00001")
>>> record = Prodoc.read(handle)

對於不存在的登錄編號,ExPASy.get_prosite_raw 會傳回一個空字串的控制代碼。當遇到空字串時,Prosite.readProdoc.read 將會引發 ValueError。您可以捕獲這些例外來偵測無效的登錄編號。

函式 get_prosite_entry()get_prodoc_entry() 用於下載 HTML 格式的 Prosite 和 Prosite 文件記錄。若要建立顯示一則 Prosite 記錄的網頁,您可以使用

>>> from Bio import ExPASy
>>> handle = ExPASy.get_prosite_entry("PS00001")
>>> html = handle.read()
>>> with open("myprositerecord.html", "w") as out_handle:
...     out_handle.write(html)
...

Prosite 文件記錄也是如此

>>> from Bio import ExPASy
>>> handle = ExPASy.get_prodoc_entry("PDOC00001")
>>> html = handle.read()
>>> with open("myprodocrecord.html", "w") as out_handle:
...     out_handle.write(html)
...

對於這些函式,無效的登錄編號會傳回 HTML 格式的錯誤訊息。

掃描 Prosite 資料庫

ScanProsite 可讓您透過提供 UniProt 或 PDB 序列識別碼或序列本身,線上掃描蛋白質序列以對照 Prosite 資料庫。如需有關 ScanProsite 的更多資訊,請參閱 ScanProsite 文件以及 以程式化方式存取 ScanProsite 的文件

您可以使用 Biopython 的 Bio.ExPASy.ScanProsite 模組從 Python 掃描 Prosite 資料庫。此模組可協助您以程式化的方式存取 ScanProsite,並解析 ScanProsite 傳回的結果。若要在以下蛋白質序列中掃描 Prosite 模式

MEHKEVVLLLLLFLKSGQGEPLDDYVNTQGASLFSVTKKQLGAGSIEECAAKCEEDEEFT
CRAFQYHSKEQQCVIMAENRKSSIIIRMRDVVLFEKKVYLSECKTGNGKNYRGTMSKTKN

您可以使用以下程式碼

>>> sequence = (
...     "MEHKEVVLLLLLFLKSGQGEPLDDYVNTQGASLFSVTKKQLGAGSIEECAAKCEEDEEFT"
...     "CRAFQYHSKEQQCVIMAENRKSSIIIRMRDVVLFEKKVYLSECKTGNGKNYRGTMSKTKN"
... )
>>> from Bio.ExPASy import ScanProsite
>>> handle = ScanProsite.scan(seq=sequence)

透過執行 handle.read(),您可以取得原始 XML 格式的搜尋結果。讓我們改用 Bio.ExPASy.ScanProsite.read 將原始 XML 解析為 Python 物件

>>> result = ScanProsite.read(handle)
>>> type(result)
<class 'Bio.ExPASy.ScanProsite.Record'>

Bio.ExPASy.ScanProsite.Record 物件衍生自清單,清單中的每個元素都儲存一個 ScanProsite 命中。此物件也會儲存命中次數,以及 ScanProsite 傳回的搜尋序列數量。此 ScanProsite 搜尋產生了六次命中

>>> result.n_seq
1
>>> result.n_match
1
>>> len(result)
1
>>> result[0]
{'sequence_ac': 'USERSEQ1', 'start': 16, 'stop': 98, 'signature_ac': 'PS50948', 'score': '8.873', 'level': '0'}

其他 ScanProsite 參數可以關鍵字引數的形式傳遞;如需更多資訊,請參閱 以程式化方式存取 ScanProsite 的文件。例如,傳遞 lowscore=1 以包含低分比對,讓我們找到一個額外的命中

>>> handle = ScanProsite.scan(seq=sequence, lowscore=1)
>>> result = ScanProsite.read(handle)
>>> result.n_match
2