uniprot蛋白id python的蛋白质序列

uniprot蛋白id python的蛋白质序列,python,bioinformatics,biopython,Python,Bioinformatics,Biopython,我想知道是否有办法从uniprot蛋白ID中获得蛋白质序列。我确实检查了一些在线软件,但它们允许一次获取一个序列,但我有5536个序列。biopython中有任何包可以这样做吗?您可能可以迭代您的值列表,每次都从库中调用所需的方法 在Python中从UniProt获取许多序列的最快、最简单的方法之一是使用包。它是一个简单但经过良好测试的工具,建立在SAMtools的著名算法之上。它也可用于学术出版物 只需从下载包含所有序列(或选定子集)的fasta文件,如果需要,解包该文件,安装pyfadix(

我想知道是否有办法从uniprot蛋白ID中获得蛋白质序列。我确实检查了一些在线软件,但它们允许一次获取一个序列,但我有5536个序列。biopython中有任何包可以这样做吗?

您可能可以迭代您的值列表,每次都从库中调用所需的方法

在Python中从UniProt获取许多序列的最快、最简单的方法之一是使用包。它是一个简单但经过良好测试的工具,建立在SAMtools的著名算法之上。它也可用于学术出版物

只需从下载包含所有序列(或选定子集)的fasta文件,如果需要,解包该文件,安装pyfadix(例如使用
pip安装pyfaidx--user
或bioconda),并使用
fasta
构造函数加载序列:

from pyfaidx import Fasta
sequences = Fasta('uniprot_sprot.fasta')
第一次加载可能需要一段时间,但之后所有操作都会非常快。现在,
sequences
是一个类似dict的对象,因此您可以使用以下工具访问所需的条目:

p53 = sequences['sp|P04637|P53_HUMAN']
print(p53)
其中显示了顺序:

MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD
然而,这个序列对象不仅仅是一个字符串,它提供了许多方便的实用函数和属性(
long\u name
unpadded\u len
,带有以下内容的片段:
start
end
complete()
reverse()
等等-有关更多信息,请参阅文档)

如果要通过UniprotID而不是fasta文件中的完整标识符访问序列,请使用:

def extract_id(header):
    return header.split('|')[1]

sequences = Fasta('uniprot_sprot.fasta', key_function=extract_id)
print(sequences['P04637'])

还有一个警告-注意基于1的索引。

尝试下面的代码以获得查询参数中提供的所有蛋白质序列

import urllib,urllib2
url = 'https://www.uniprot.org/uploadlists/'
params = {
    'from':'ACC+ID',
    'to':'ACC',
    'format':'txt',
    'query':'P13368 P20806 Q9UM73 P97793 Q17192'
}
data = urllib.urlencode(params)
request = urllib2.Request(url, data)
contact = "" # contact email address debug
request.add_header('User-Agent', 'Python %s' % contact)
response = urllib2.urlopen(request)
page = response.read()
print page

您还可以从SwissProt/UniProt数据库以及NCBI Entrez服务器获取序列。从NCBI Entrez获取文件并读取序列的一种方法是Python包
Habite

>>> import biotite.database.entrez as entrez
>>> import biotite.sequence as seq
>>> import biotite.sequence.io.fasta as fasta
>>> # Find UIDs for SwissProt/UniProt entries
>>> query =   entrez.SimpleQuery("Avidin", "Protein Name") \
...         & entrez.SimpleQuery("Gallus gallus", "Organism") \
...         & entrez.SimpleQuery("srcdb_swiss-prot", "Properties")
>>> print(query)
((Avidin[Protein Name]) AND ("Gallus gallus"[Organism])) AND (srcdb_swiss-prot[Properties])
>>> uids = entrez.search(query, db_name="protein")
>>> print(uids)
['158515411']
>>> # Download FASTA file containing the sequence(s)
>>> # from NCBI Entrez database
>>> file_name = entrez.fetch_single_file(
...     uids, "avidin.fa", db_name="protein", ret_type="fasta"
... )
>>> # Read file
>>> fasta_file = fasta.FastaFile()
>>> fasta_file.read(file_name)
>>> print(fasta_file)
>sp|P02701.3|AVID_CHICK RecName: Full=Avidin; Flags: Precursor
MVHATSPLLLLLLLSLALVAPGLSARKCSLTGKWTNDLGSNMTIGAVNSRGEFTGTYITAVTATSNEIKE
SPLHGTQNTINKRTQPTFGFTVNWKFSESTTVFTGQCFIDRNGKEVLKTMWLLRSSVNDIGDDWKATRVG
INIFTRLRTQKE
>>> # Convert first sequence in file to 'ProteinSequence' object
>>> seq = fasta.get_sequence(fasta_file)
>>> print(seq)
MVHATSPLLLLLLLSLALVAPGLSARKCSLTGKWTNDLGSNMTIGAVNSRGEFTGTYITAVTATSNEIKESPLHGTQNTINKRTQPTFGFTVNWKFSESTTVFTGQCFIDRNGKEVLKTMWLLRSSVNDIGDDWKATRVGINIFTRLRTQKE

uniprot的所有序列都可以从“+UniprotID+.fasta”访问。您可以使用

import requests as r
from Bio import SeqIO
from io import StringIO

cID='P04637'

baseUrl="http://www.uniprot.org/uniprot/"
currentUrl=baseUrl+cID+".fasta"
response = r.post(currentUrl)
cData=''.join(response.text)

Seq=StringIO(cData)
pSeq=list(SeqIO.parse(Seq,'fasta'))

cID可以是一个列表,也可以是一个条目,如果您在bug列表中循环,只需在下载之间添加一个延迟,尽量不要使服务器饱和。希望能有所帮助

我不知道有任何图书馆。我还在找一个。这就是我发布帮助的原因。如果您可以向在线应用程序发出HTTP/REST/SOAP请求,以获取某个特定项目所需的信息,那么您可以生成一个python脚本,该脚本迭代您拥有的每个数据块,并将其发送到该端点。我不知道您的具体问题,但它们是web应用程序,很可能通过接受POST或GET请求来工作。只需在对数据集进行迭代的同时从python生成,并存储结果。如果您有更多关于您谈论的应用程序的信息,我们可能会提供更多帮助。