我想知道是否有办法从uniprot蛋白质id中获得蛋白质序列。我确实检查了很少的在线软件,但它们一次只能获得一个序列,但是我有5536个vlues。 biopython中是否有任何软件包可以做到这一点?
答案 0 :(得分:0)
您可能可以遍历值列表,每次都从库中调用所需的方法。
答案 1 :(得分:0)
在Python中从UniProt提取许多序列的最快,最简单的方法之一就是使用pyfaidx包。它是一个简单但经过测试的工具,建立在SAMtools的知名算法之上。学术出版物也可以引用。
只需从https://www.uniprot.org/downloads下载包含所有序列(或只是选定的子集)的fasta文件,如果需要,解压缩该文件,安装pyfadix(例如,使用pip install pyfaidx --user
或bioconda)并使用{{ 1}}构造函数:
Fasta
第一次加载可能需要一段时间,但之后所有操作将非常快。现在from pyfaidx import Fasta
sequences = Fasta('uniprot_sprot.fasta')
是一个类似dict的对象,因此您可以使用以下命令访问所需的条目:
sequences
显示顺序:
p53 = sequences['sp|P04637|P53_HUMAN']
print(p53)
然而,此序列对象不仅仅是一个字符串-它提供了许多方便的实用函数和属性(MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD
,long_name
,带有以下内容的切片:unpadded_len
,start
,end
和complement()
等-有关更多信息,请参阅文档。)
如果要通过UniprotID而不是fasta文件中的完整标识符访问序列,请使用:
reverse()
PS。只是一个警告-注意基于1的索引。
答案 2 :(得分:0)
尝试以下代码以获取查询参数中提供的所有蛋白质序列
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
答案 3 :(得分:0)
您还可以从NCBI Entrez服务器从SwissProt / UniProt数据库中获取序列。从NCBI Entrez获取文件并读取序列的一种方法是Python软件包biotite
:
>>> 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
答案 4 :(得分:0)
来自uniprot的所有序列都可以通过“ {http://www.uniprot.org/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可以是一个列表,也可以是一个条目,如果您循环通过错误列表,则只需在下载之间添加延迟,以免使服务器饱和。希望对您有帮助