2013-08-27 2 views
3

Мне нужно загрузить только полные последовательности геномов из NCBI (GenBank (полный) формат). Меня интересует «полная генеама», а не «весь геном».Как загрузить полную последовательность генома в biopython entrez.esearch

мой сценарий:

from Bio import Entrez 
Entrez.email = "[email protected]" 
gatunek='Escherichia[ORGN]' 
handle = Entrez.esearch(db='nucleotide', 
    term=gatunek, property='complete genome')#title='complete genome[title]') 
result = Entrez.read(handle) 

В качестве результатов я получаю лишь небольшие фрагменты геномов, ти размером около 484 п.н.:

LOCUS  NZ_KE350773    484 bp DNA  linear CON 23-AUG-2013 
DEFINITION Escherichia coli E1777 genomic scaffold scaffold9_G, whole genome 
     shotgun sequence. 

Я знаю, как сделать это вручную через веб-сайт NCBI, но это занимает очень много времени, запрос, который я использую там:

escherichia[orgn] AND complete genome[title] 

и в результате я получаю несколько геномов с siz es - около 5,154,862 bp, и это то, что мне нужно сделать через ENTREZ.esearch.

ответ

1

Вы сделали большую часть, и выработала запрос,

escherichia[orgn] AND complete genome[title] 

Так что использовать в качестве поискового запроса через Biopython, как хорошо!

from Bio import Entrez 
Entrez.email = "[email protected]" 
search_term = "escherichia[orgn] AND complete genome[title]" 
handle = Entrez.esearch(db='nucleotide', term=search_term) 
result = Entrez.read(handle) 
handle.close() 
print result['Count'] 

В настоящее время, что дает мне 140 результатов, начиная с 545778205, который является таким же, как веб-сайт: http://www.ncbi.nlm.nih.gov/nuccore/?term=escherichia%5Borgn%5D+AND+complete+genome%5Btitle%5D

1

Ваш вопрос ясен, но полный ответ длинный. Код, который я предоставляю, генерирует файл .fasta для каждой из ваших желательных последовательностей генома E.Coli, да только «Завершенные геномы» в NCBI.

Вы увидите там только шесть полных E.Coli ссылки геномы в NCBI (http://www.ncbi.nlm.nih.gov/genome/167):

enter image description here

Чтобы помочь вам, здесь/RefSeq ссылки GenBank, в их геномах:

  1. http://www.ncbi.nlm.nih.gov/nuccore/NC_000913.3

  2. http://www.ncbi.nlm.nih.gov/nuccore/NC_002695.1

  3. http://www.ncbi.nlm.nih.gov/nuccore/NC_011750.1

  4. http://www.ncbi.nlm.nih.gov/nuccore/NC_011751.1

  5. http://www.ncbi.nlm.nih.gov/nuccore/NC_017634.1

  6. http://www.ncbi.nlm.nih.gov/nuccore/NC_018658.1

Вот мой код Complete Genome Sequence Парсинг в .FASTA файлы ...

# Imports 
from Bio import Entrez 
from Bio import SeqIO 

############################# 
# Retrieve NCBI Data Online # 
############################# 

Entrez.email  = "[email protected]"    # Always tell NCBI who you are 
genomeAccessions = ['NC_000913', 'NC_002695', 'NC_011750', 'NC_011751', 'NC_017634', 'NC_018658'] 
search   = " ".join(genomeAccessions) 
handle   = Entrez.read(Entrez.esearch(db="nucleotide", term=search, retmode="xml")) 
genomeIds  = handle['IdList'] 
records   = Entrez.efetch(db="nucleotide", id=genomeIds, rettype="gb", retmode="text") 

############################### 
# Generate Genome Fasta files # 
############################### 

sequences = [] # store your sequences in a list 
headers  = [] # store genome names in a list (db_xref ids) 

for i,record in enumerate(records): 

    file_out = open("genBankRecord_"+str(i)+".gb", "w") # store each genomes .gb in separate files 
    file_out.write(record.read()) 
    file_out.close() 

    genomeGenbank = SeqIO.read("genBankRecord"+str(i)+".gb", "genbank") # parse in the genbank files 
    header   = genome.features[0].qualifiers['db_xref'][0]   # name the genome using db_xfred ID 
    sequence  = genome.seq.tostring()        # obtain genome sequence 

    headers.append('>'+header) # store genome name in list          
    sequences.append(sequence) # store sequence in list 

    fasta_out = open("genome"+str(i)+".fasta","w")  # store each genomes .fasta in separate files 
    fasta_out.write(header) # >header ... followed by: 
    fasta_out.write(sequence) # sequence ... 
    fasta_out.close()   # close that .fasta file and move on to next genome 
records.close() 

Позвольте мне знать, как она идет! Энди

0

Это работает для меня ...

search_term = 'escherichia coli[orgn] AND complete genome[title]' 
handle = Entrez.esearch(db='nucleotide', term=search_term) 
genome_ids = Entrez.read(handle)['IdList'] 

for genome_id in genome_ids: 
    record = Entrez.efetch(db="nucleotide", id=genome_id, rettype="gb", retmode="text") 

    filename = 'generated/genBankRecord_{}.gb'.format(genome_id) 
    print('Writing:{}'.format(filename)) 
    with open(filename, 'w') as f: 
     f.write(record.read())