Для назначения мне нужно написать код, который переводит последовательность РНК из файла фаста в последовательность аминокислот.Однако я продолжаю получать следующее предупреждающее сообщение: «BiopythonWarning: Частичный кодон, len (последовательность) не кратен трем. Явно обрежьте последовательность или добавьте конечный N перед трансляцией. Это может стать ошибкой в будущем».
Я пытался добавить конечный N, но он все еще не работает.Я думаю, что в моем коде, возможно, есть ошибка, но я не уверен, где.
Это мой код:
from Bio.Seq import Seq
from Bio import SeqIO
seq_records = SeqIO.parse('rna.fasta', 'fasta')
amino_acids1 = []
amino_acids2 = []
amino_acids3 = []
for record in seq_records:
# starting from nucleotide 1
if len(record) %3 ==0:
amino_acids1.append(record.translate())
elif (len(record)+1) %3 ==0:
recordN = record + Seq('N')
amino_acids1.append(recordN.translate())
elif (len(record)+2) %3 ==0:
recordNN = record + Seq('N') + Seq('N')
amino_acids1.append(recordNN.translate())
print("FIRST")
print(amino_acids1)
with open('rna_out.fasta', 'w') as p_file:
SeqIO.write(amino_acids1, p_file, 'fasta')
# starting from nucleotide 2
record2 = record[1:]
if len(record2) %3 ==0:
amino_acids2.append(record2.translate())
elif (len(record2)+1) %3 ==0:
record2N = record + Seq('N')
amino_acids2.append(record2N.translate())
elif (len(record2)+2) %3 ==0:
record2NN = record + Seq('N') + Seq('N')
amino_acids2.append(record2NN.translate() )
print("SECOND")
print(amino_acids2)
with open('rna_out.fasta', 'w') as p_file:
SeqIO.write(amino_acids2, p_file, 'fasta')
# starting from nucleotide 3
record3 = record[2:]
if len(record3) %3 ==0:
amino_acids3.append(record3.translate())
elif (len(record3)+1) %3 ==0:
record3N = record + Seq('N')
amino_acids3.append(record3N.translate())
elif (len(record3)+2) %3 ==0:
record3NN = record + Seq('N') + Seq('N')
amino_acids3.append(record3NN.translate())
print("THIRD")
print(amino_acids3)
with open('rna_out.fasta', 'w') as p_file:
SeqIO.write(amino_acids3, p_file, 'fasta')
Обычно это даст 3 возможных перевода для каждого изпоследовательности из файла fasta.Однако вывод не выглядит правильным.
Это первые 3 строки, которые должны быть 3 различными переводами первой последовательности в файле fasta:
FIRST [SeqRecord (seq = Seq ('GAKRTDRT S VINKLSLLYTSCETIDCYIFFL', HasStopCodon (ExtendedIUPACProtein (), '')), id = '', name = '', description = '', dbxrefs = [])] ВТОРОЙ [SeqRecord (seq = Seq ('GAKRTDRT S VINKLSLLYTSCETIDCYIFFL', HasStopCodon (ExtendedIUPACProtein (), '')), id = '', name = '', description = '',dbxrefs = [])] THIRD [SeqRecord (seq = Seq ('CQKN SDVVVGH QTVVALHVMRND LLYLFP', HasStopCodon (ExtendedIUPACProtein (), '')), id = ''= '', description = '', dbxrefs = [])]
Я не знаю, где это пошло не так, но это определенно неверный перевод.Если вы знаете, где я допустил ошибку, буду очень признателен за вашу помощь !!