2016-03-17 5 views
0

У меня есть файл Excel, в котором указаны более 2000 организмов, где каждый из них имеет идентификатор Bioproject ID (например, PRJNA12997). Идея состоит в том, чтобы использовать эти идентификаторы для получения последовательности для последующего множественного выравнивания с другими пятью последовательностями, которые у меня есть в текстовом файле.Как использовать идентификатор Bioproject, например PRJNA12997, в биопитоне?

Может ли кто-нибудь помочь мне понять, как я могу это сделать, используя biopython? По крайней мере, часть с идентификатором биопроекта.

+1

Может быть более актуальной на: https://www.biostars.org/ – zx8754

ответ

2

Вы можете сначала получить информацию, используя Bio.Entrez:

from Bio import Entrez 
Entrez.email = "[email protected]" 

# This call to efetch fails sometimes with a 400 error. 
handle = Entrez.efetch(db="bioproject", id="PRJNA12997") 

Я пытался, и Entrez.read(handle) не похоже на работу. Но если вы сделаете record_xml = handle.read(), вы получите запись XML для этой записи. В этом XML вы можете получить идентификатор для организма, в данном случае 12997.

handle = Entrez.esearch(db="nuccore", term="12997[BioProject]") 
search_results = Entrez.read(handle) 

Теперь вы можете efecth в результатах поиска. На этом этапе вы должны использовать Biopython, чтобы разобрать, что вы получите в шаге efetch, играя с rettype http://www.ncbi.nlm.nih.gov/books/NBK25499/table/chapter4.T._valid_values_of__retmode_and/

for result in search_results["IdList"]: 
    entry = Entrez.efetch(db="nuccore", id=result, rettype="fasta") 
    this_seq_in_fasta = entry.read() 
+1

Кажется NCBI не соответствует типичному стилю XML, используемому в другом месте Entrez, что расстраивает парсер Biopython Entrez. Вместо этого вы можете использовать что-то вроде ElementTree из стандартной библиотеки Python. См. Также https://github.com/biopython/biopython/issues/805 – peterjc

 Смежные вопросы

  • Нет связанных вопросов^_^