-
- 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'
-