salvați secvențe din NCBI în format rapid utilizând o listă de ID-uri în Excel

Sunt destul de nou folosind python și îmi place. Cu toate acestea, sunt blocat de această problemă și sper că puteți să-mi dați o părere despre ceea ce am lipsit.

Am o listă de ID-uri de gene într-un fișier excel și încerc să folosesc xrld și biopython pentru a prelua secvențe și a salva (în format rapid) rezultatele mele într-un document text. până acum, codul meu permite să văd rezultatele în coajă, dar salvează ultima secvență într-un document.

acesta este codul meu:

import xlrd
import re
book = xlrd.open_workbook('ids.xls')
sh = book.sheet_by_index(0)
for rx in range(sh.nrows):
    if sh.row(rx)[0].value:
        from Bio import Entrez
        from Bio import SeqIO
        Entrez.email = "[email protected]"
        in_handle = Entrez.efetch(db="nucleotide", rettype="fasta", id=sh.row(rx)[0].value)
        record = SeqIO.parse(in_handle, "fasta")
        for record in SeqIO.parse(in_handle, "fasta"):
            print record.format("fasta")
        out_handle = open("example.txt", "w")
        SeqIO.write(record, out_handle, "fasta")
        in_handle.close()
        out_handle.close() 

Așa cum am menționat, fișierul "example.txt" are doar ultima secvență (în format rapid) care arată shell-ul.

ar putea cineva să mă ajute cum să obțin toate secvențele pe care le recuperez de la NCBI în același document?

Mulțumesc foarte mult

Antonio

0

2 răspunsuri

Sunt, de asemenea, destul de nou pentru python și, de asemenea, o iubesc! aceasta este prima mea încercare de a răspunde la o întrebare, dar poate că este din cauza structurii buclă și a modului "w"? încercați probabil să schimbați ("example.txt", "w") pentru a adăuga modul ("example.txt", "a") după cum urmează?

import xlrd
import re
book = xlrd.open_workbook('ids.xls')
sh = book.sheet_by_index(0)
for rx in range(sh.nrows):
    if sh.row(rx)[0].value:
        from Bio import Entrez
        from Bio import SeqIO
        Entrez.email = "[email protected]"
        in_handle = Entrez.efetch(db="nucleotide", rettype="fasta", id=sh.row(rx)[0].value)
        record = SeqIO.parse(in_handle, "fasta")
        for record in SeqIO.parse(in_handle, "fasta"):
            print record.format("fasta")
        out_handle = open("example.txt", "a")
        SeqIO.write(record, out_handle, "fasta")
        in_handle.close()
        out_handle.close() 
0
adăugat

Aproape prietenii mei!

Problema principală este că bucla dvs. For continuă să închidă fișierul în fiecare buclă. Am rezolvat de asemenea câteva probleme minore care ar trebui să accelereze doar codul (de exemplu, ați continuat să importați Bio fiecare buclă).

Use this new code:

out_handle = open("example.txt", "w")
import xlrd
import re
from Bio import Entrez
from Bio import SeqIO
book = xlrd.open_workbook('ids.xls')
sh = book.sheet_by_index(0)
for rx in range(sh.nrows):
    if sh.row(rx)[0].value:
        Entrez.email = "[email protected]"
        in_handle = Entrez.efetch(db="nucleotide", rettype="fasta", id=rx)
        record = SeqIO.parse(in_handle, "fasta")
        SeqIO.write(record, out_handle, "fasta")
        in_handle.close()
out_handle.close()

Dacă încă mai există erori, aceasta trebuie să fie o problemă în fișierul dvs. Excel. Trimiteți-mi acest lucru dacă eroarea persistă și vă voi ajuta:)

0
adăugat