Белковая последовательность из белка uniprot id питона - PullRequest
0 голосов
/ 29 сентября 2018

Мне было интересно, есть ли способ получить последовательность белков из идентификаторов белков uniprot.Я проверил несколько онлайн-программ, но они позволяют получать одну последовательность за раз, но у меня есть 5536 значений.Есть ли в биопионе пакет для этого?

Ответы [ 5 ]

0 голосов
/ 30 января 2019

Все последовательности из 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 может быть списком или одной записью,если вы перебираете список ошибок, просто добавьте задержку между загрузками, стараясь не насыщать сервер. Надеюсь, это поможет

0 голосов
/ 09 октября 2018

Вы можете получить последовательности из базы данных SwissProt / UniProt также с сервера NCBI Entrez.Для извлечения файлов из 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
0 голосов
/ 30 сентября 2018

Один из самых быстрых и простых способов получения многих последовательностей из UniProt в Python - это использование пакета pyfaidx .Это простой, но хорошо проверенный инструмент, основанный на хорошо известном алгоритме от SAMtools.Он также пригоден для академических публикаций.

Просто загрузите файл fasta со всеми последовательностями (или только выбранным подмножеством) из https://www.uniprot.org/downloads,, при необходимости распакуйте файл, установите pyfadix (например, с pip install pyfaidx --user илиbioconda) и загрузите последовательности с помощью конструктора Fasta:

from pyfaidx import Fasta
sequences = Fasta('uniprot_sprot.fasta')

Первая загрузка может занять некоторое время, но после этого все операции будут очень быстрыми.Теперь sequences является объектом, похожим на диктовку, поэтому вы можете получить доступ к нужной записи с помощью:

p53 = sequences['sp|P04637|P53_HUMAN']
print(p53)

, которая показывает последовательность:

MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD

Этот объект последовательности, однако, оченьбольше, чем строка - он предоставляет множество полезных служебных функций и атрибутов (long_name, unpadded_len, фрагменты с: start, end, complement() и reverse() и т. д. - см. документацию для получения дополнительной информации.).

Если вы хотите получить доступ к последовательности по UniprotID вместо полного идентификатора из файла fasta, используйте:

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

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

PS.Только одно предостережение - следите за индексацией на основе 1.

0 голосов
/ 01 октября 2018

Попробуйте следующий код, чтобы получить всю последовательность белка, указанную в параметре запроса

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
0 голосов
/ 29 сентября 2018

Вероятно, вы можете перебирать свой список значений, каждый раз вызывая требуемый метод из библиотеки.

...