Мне нужно перевести последовательности ДНК (A1, A2, ... A10), перечисленные в файле .txt, в формат FASTA и выровнять их два на два с общей данной последовательностью белка (B). Последовательности A_i почти идентичны C. Единственное отличие - это индекс, состоящий из 1, 2 или 3 нуклеотидов. Перевод должен быть таким, чтобы после стоп-кодона перевод завершался. Мне также нужно представить буквы B, окрашенные (например, зеленый), и парную выровненную последовательность (A_i), окрашенную в тот же цвет, что и B, до положения, в котором последовательности белков идентичны, в то время как остальная часть транслированной последовательности до стоп-кодон был бы окрашен другим цветом. Мне не нужна оценка выравнивания.
Для перевода ниже приведен код. Что касается расклада, я не знаю, как действовать. Любая помощь приветствуется.
def transcribe(sequence):
rna_seq = sequence.replace('T', 'U')
return(rna_seq)
def translate_rna(sequence):
codon_table = {"AAA":"K", "AAC":"N", "AAG":"K", "AAU":"N",
"ACA":"T", "ACC":"T", "ACG":"T", "ACU":"T",
"AGA":"R", "AGC":"S", "AGG":"R", "AGU":"S",
"AUA":"I", "AUC":"I", "AUG":"M", "AUU":"I",
"CAA":"Q", "CAC":"H", "CAG":"Q", "CAU":"H",
"CCA":"P", "CCC":"P", "CCG":"P", "CCU":"P",
"CGA":"R", "CGC":"R", "CGG":"R", "CGU":"R",
"CUA":"L", "CUC":"L", "CUG":"L", "CUU":"L",
"GAA":"E", "GAC":"D", "GAG":"E", "GAU":"D",
"GCA":"A", "GCC":"A", "GCG":"A", "GCU":"A",
"GGA":"G", "GGC":"G", "GGG":"G", "GGU":"G",
"GUA":"V", "GUC":"V", "GUG":"V", "GUU":"V",
"UAC":"Y", "UAU":"T", "UCA":"S", "UCC":"S",
"UCG":"S", "UCU":"S", "UGC":"C", "UGG":"W",
"UGU":"C", "UUA":"L", "UUC":"F", "UUG":"L",
"UUU":"F"}
stop_codons={"UAA","UGA","UAG"}
protein_seq = ''
for n in range(0, len(sequence), 3):
if sequence[n:n+3] in codon_table:
protein_seq += codon_table[sequence[n:n+3]]
else:
protein_seq = protein_seq
return protein_seq
ids, sequences = [], []
n = -1
with open('82202P-34-seq1.txt') as fh:
for line in fh:
line = line.strip()
if line[0] == '>':
id = line.split()[0][1:]
ids.append(id)
sequences.append('')
n += 1
else:
sequences[n] += line
for id, seq in zip(ids, sequences):
print('>'+id)
rna = transcribe(seq)
protein = translate_rna(rna)
print(protein)