Diese Frage bezieht sich auf Bioinformatik. Ich habe keine Vorschläge in entsprechenden Foren erhalten, also schreibe ich es hier.Fehler "Ungültige Sequenz" in seqio.write() von biopython
Ich muss Nicht-ACTG-Nukleotide in der Fasta-Datei entfernen und die Ausgabe in eine neue Datei schreiben, indem ich seqio von biopython verwende.
Mein Code ist
import re
import sys
from Bio import SeqIO
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq
from Bio.Alphabet import IUPAC
seq_list=[]
for seq_record in SeqIO.parse("test.fasta", "fasta",IUPAC.ambiguous_dna):
sequence=seq_record.seq
sequence=sequence.tomutable()
seq_record.seq = re.sub('[^GATC]',"",str(sequence).upper())
seq_list.append(seq_record)
SeqIO.write(seq_list,"test_out","fasta")
diesen Code Lauffehler ergibt:
Traceback (most recent call last):
File "remove.py", line 18, in <module>
SeqIO.write(list,"test_out","fasta")
File "/home/ghovhannisyan/Software/anaconda2/lib/python2.7/site-packages/Bio/SeqIO/__init__.py", line 481, in write
count = writer_class(fp).write_file(sequences)
File "/home/ghovhannisyan/Software/anaconda2/lib/python2.7/site-packages /Bio/SeqIO/Interfaces.py", line 209, in write_file
count = self.write_records(records)
File "/home/ghovhannisyan/Software/anaconda2/lib/python2.7/site-packages/Bio/SeqIO/Interfaces.py", line 194, in write_records
self.write_record(record)
File "/home/ghovhannisyan/Software/anaconda2/lib/python2.7/site-packages/Bio/SeqIO/FastaIO.py", line 202, in write_record
data = self._get_seq_string(record) # Catches sequence being None
File "/home/ghovhannisyan/Software/anaconda2/lib/python2.7/site-packages/Bio/SeqIO/Interfaces.py", line 100, in _get_seq_string
% record.id)
TypeError: SeqRecord (id=CALB_TCONS_00001015) has an invalid sequence.
Wenn ich diese Zeile ändern
seq_record.seq = re.sub('[^GATC]',"",str(sequence).upper())
zu zum Beispiel seq_record.seq = sequence + "A"
alles funktioniert. Jedoch sollte auch theoretisch funktionieren.
Dank
Danke, funktioniert perfekt! – Hrant