[Biopython] error writing fasta file using SeqIO
A M Torres, Hugo
mnemonico at posthocergopropterhoc.net
Fri Jul 8 04:19:20 UTC 2011
Hi. Can someone spot why I can't create a fasta file here? I tried following
the cookbook tutorial but something goes wrong when I try to write the
sequence from a SeqRecord object to a fasta file:
Lodge It
- New <http://paste.pound-python.org/>
- All <http://paste.pound-python.org/all/>
- About <http://paste.pound-python.org/about/>
- ? <http://paste.pound-python.org/help/>
Paste #9205
Paste Details
reply <http://paste.pound-python.org/?reply_to=9205> |
raw<http://paste.pound-python.org/raw/9205/>
posted on Jul 8, 2011 4:12:16 AM
- reply to this paste <http://paste.pound-python.org/?reply_to=9205>
- download paste <http://paste.pound-python.org/raw/9205/>
- compare with paste
- select different colorscheme Autumn Borland Bw Colorful Default Emacs
Friendly Fruity Manni Monokai Murphy Native Pastie Perldoc Tango Trac Vs
- toggle line numbers<http://paste.pound-python.org/show/9205/?linenos=no>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import abifpy
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Emboss.Applications import NeedleCommandline
import os #uso a funcao listdir
from Bio import SeqIO
def acessa_ab1(arquivo,trim=True): #generalizar depois
"""acessa um arquivo ab1 e retorna um objeto SeqRecord"""
dado = abifpy.Trace(arquivo)
if trim:
cortado = dado.trim(dado.seq(ambig=True))
return SeqRecord(cortado, id=arquivo, description='dado cortado')
else:
return dado.seqrecord()
def abre_ref(arquivo):
"""acessa um arquivo contendo uma sequencia de referencia
retorna um objeto SeqRecord"""
with open(arquivo, 'rUb') as dado:
referencia = SeqIO.read(dado, 'genbank')
return referencia
def salva_fasta(obj_SeqRecord):
"""Pega um objeto SeqRecord e cria um fasta com a sua sequencia"""
SeqIO.write([obj_SeqRecord], obj_SeqRecord + '.fasta','fasta')
def processar_lote(diretorio, ref):
"""abre os arquivos ab1 de uma pasta, apara, salva em fasta, faz o
alinhamento com
o fasta de referencia e salva o alinhamento em um arquivo para analise
posterior.
diretorio --> uma string representando o caminho da pasta contendo
os arquivos
ref --> uma string representando o caminho absoluto + genbank com a
sequencia de referencia.
"""
referencia = abre_ref(ref)
referencia.id = 'sequencia de referencia'
salva_fasta(referencia)
ab1files = [x for x in os.listdir(diretorio) if x.endswith('.ab1')]
for file in ab1files:
dado = acessa_ab1(diretorio + file)
salva_fasta(dado)
needle_cline = NeedleCommandline(asequence='referencia.fasta',
bsequence= file + '.fasta',
gapopen=10, gapextend=0.5,
outfile=file + "_aligned.txt")
stdout, stderr = needle_cline()
#pasta = '/home/mercutio22/Dropbox/My scripts/Fabi/vs/Seq_placa273 analisada/'
#referencia = '/home/mercutio22/Dropbox/My
scripts/Fabi/vs/Seq_placa273 analisada/BRCA1 (total) - Frag 3450.gb'
#processar_lote(pasta, referencia)
dado = acessa_ab1('/home/mercutio22/Dropbox/My
scripts/Fabi/vs/Seq_placa273 analisada/1174411_3450F_A01.ab1')
print type(dado)
salva_fasta(dado)
===============================error msg==============
<class 'Bio.SeqRecord.SeqRecord'>
Traceback (most recent call last):
File "louise.py", line 59, in <module>
salva_fasta(dado)
File "louise.py", line 26, in salva_fasta
SeqIO.write([obj_SeqRecord], obj_SeqRecord + '.fasta','fasta')
File "/usr/lib/pymodules/python2.6/Bio/SeqIO/__init__.py", line 412, in write
count = writer_class(handle).write_file(sequences)
File "/usr/lib/pymodules/python2.6/Bio/SeqIO/Interfaces.py", line
271, in write_file
count = self.write_records(records)
File "/usr/lib/pymodules/python2.6/Bio/SeqIO/Interfaces.py", line
256, in write_records
self.write_record(record)
File "/usr/lib/pymodules/python2.6/Bio/SeqIO/FastaIO.py", line 134,
in write_record
self.handle.write(">%s\n" % title)
AttributeError: 'SeqRecord' object has no attribute 'write'
More information about the Biopython
mailing list