使用 Biopython 检索 Swissprot 条目的亚型序列?
Using Biopython to Retrieve Isoform Sequences of a Swissprot Entry?
如果我有一种带有亚型的蛋白质,并且我想检索每个亚型的序列,我该怎么做呢?
from Bio import ExPASy
from Bio import SwissProt
accessions = ["Q16620"]
handle = ExPASy.get_sprot_raw(accessions)
record = SwissProt.read(handle)
biopython 教程中的这个示例将检索具有 record.sequence
的第一个亚型的序列。
我发现简单地制作一个加入列表以在 uniprot["Q16620-1", "Q16620-2", "Q16620-3", ...]
上列出的异构体条目的形式进行迭代是行不通的。
您可以使用 EBML-EBI 的 Proteins API 和几行 Python 代码。
这只会为您提供字符串形式的序列,而不是完全成熟的 BioPython 对象。
import requests
import xml.etree.ElementTree as ET
accession = "Q16620"
# a dictionary storing the sequence of your isoforms, key: accesion number, value: sequence
isoforms = dict()
# make a call to EBI API
r = requests.get('https://www.ebi.ac.uk/proteins/api/proteins/{}/isoforms'.format(accession))
# parse the returned XML
uniprot = ET.fromstring(r.text)
for isoform in uniprot:
# get the sequence
seq = isoform.find('{http://uniprot.org/uniprot}sequence')
# get the accession number
iso_accession = isoform.find('{http://uniprot.org/uniprot}accession')
# add the values to the dictionary
if seq.text and iso_accession.text:
isoforms[iso_accession.text] = seq.text
如果我有一种带有亚型的蛋白质,并且我想检索每个亚型的序列,我该怎么做呢?
from Bio import ExPASy
from Bio import SwissProt
accessions = ["Q16620"]
handle = ExPASy.get_sprot_raw(accessions)
record = SwissProt.read(handle)
biopython 教程中的这个示例将检索具有 record.sequence
的第一个亚型的序列。
我发现简单地制作一个加入列表以在 uniprot["Q16620-1", "Q16620-2", "Q16620-3", ...]
上列出的异构体条目的形式进行迭代是行不通的。
您可以使用 EBML-EBI 的 Proteins API 和几行 Python 代码。
这只会为您提供字符串形式的序列,而不是完全成熟的 BioPython 对象。
import requests
import xml.etree.ElementTree as ET
accession = "Q16620"
# a dictionary storing the sequence of your isoforms, key: accesion number, value: sequence
isoforms = dict()
# make a call to EBI API
r = requests.get('https://www.ebi.ac.uk/proteins/api/proteins/{}/isoforms'.format(accession))
# parse the returned XML
uniprot = ET.fromstring(r.text)
for isoform in uniprot:
# get the sequence
seq = isoform.find('{http://uniprot.org/uniprot}sequence')
# get the accession number
iso_accession = isoform.find('{http://uniprot.org/uniprot}accession')
# add the values to the dictionary
if seq.text and iso_accession.text:
isoforms[iso_accession.text] = seq.text