Запрос NCBI для последовательности из ncbi через Biopython

Как я могу запросить у NCBI последовательности с заданным идентификатором Genbank хромосомы, а также начать и остановить позиции с помощью Biopython?

CP001665    NAPP    TILE    6373    6422    .   +   .   cluster=9; 
CP001665    NAPP    TILE    6398    6447    .   +   .   cluster=3; 
CP001665    NAPP    TILE    6423    6472    .   +   .   cluster=3; 
CP001665    NAPP    TILE    6448    6497    .   +   .   cluster=3;
CP001665    NAPP    TILE    7036    7085    .   +   .   cluster=10; 
CP001665    NAPP    TILE    7061    7110    .   +   .   cluster=3; 
CP001665    NAPP    TILE    7073    7122    .   +   .   cluster=3;

person user3744999    schedule 27.06.2014    source источник


Ответы (3)


from Bio import Entrez
from Bio import SeqIO

Entrez.email = "[email protected]"

handle = Entrez.efetch(db="nuccore",
                       id="CP001665",
                       rettype="gb",
                       retmode="text")

whole_sequence = SeqIO.read(handle, "genbank")

print whole_sequence[6373:6422]

Как только вы узнаете id и базу данных для выборки, используйте Entrez.efetch, чтобы получить дескриптор этого файла. Вы должны указать возвращаемый тип (rettype="gb") и режим (retmode="text"), чтобы получить обработчик файловых данных.

Затем передайте этот обработчик SeqIO, который должен вернуть объект SeqRecord. Одна приятная особенность SeqRecord заключается в том, что их можно аккуратно нарезать как списки. Если вы можете откуда-то получить начальную и конечную точки, приведенный выше оператор print возвращает:

ID: CP001665.1
Name: CP001665
Description: Escherichia coli 'BL21-Gold(DE3)pLysS AG', complete genome.
Number of features: 0
Seq('GCGCTAACCATGCGAGCGTGCCTGATGCGCTACGCTTATCAGGCCTACG', IUPACAmbiguousDNA())
person xbello    schedule 01.07.2014
comment
@user3744999 user3744999 В качестве побочного комментария: не злоупотребляйте efetch: NCBI может ограничить или забанить вас. Если у вас много строк с одним и тем же идентификатором, извлеките его только один раз, а затем используйте один и тот же SeqRecord для каждой второй строки с этим идентификатором. - person xbello; 02.07.2014

Наверное, что-то похожее на это?

    from Bio import Entrez
    Entrez.email = "[email protected]"
    handle = Entrez.efetch(db="genome", id="56", rettype="fasta")

Вам нужно будет определить правильную базу данных и запросить ее. Я бы предложил использовать сборщик Advanced Search Builder для создания вашего запроса и посмотреть, сможете ли вы обойти проблему таким образом:

http://www.ncbi.nlm.nih.gov/assembly/advanced

person resimmons    schedule 28.06.2014

Для загрузки последовательностей нуклеотидов/белков нет необходимости использовать Biopython. Вместо этого вы можете использовать urllib2 или Biopython или Bioperl. Здесь список содержит идентификаторы NCBI GI.

import urllib2
List = ['440906003','440909279','440901052']
for gi in List:
    url = 'https://www.ncbi.nlm.nih.gov/sviewer/viewer.cgi?    tool=portal&sendto=on&log$=seqview&db=protein&dopt=fasta&sort=&val='+gi+'&from=begin&to=end&maxplex=1'
    resp = urllib2.urlopen(url)
    page = resp.read()
    print (page),
person Community    schedule 26.08.2016