Теперь я думаю, что пришло время углубиться и объяснить, где находятся мои данные. список последовательностей ДНК взят из. Последовательности (от пары 1000 до более чем 1 миллиона) представляют собой случайные нуклеотиды между маркерами, которые я выделил с помощью функции, используя поиск по регулярным выражениям, записанной в текстовый файл. Структура этого файла выглядит следующим образом:
CACCAGAGTGAGAATAGAAA CCAAAAAAAAGGCTCCAAAAGGAGCCTTTAATTGTATC
TAAACAGCTTGATACCGATAGTTGCGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
CCAAAAAAAGGCTCCAAAAGGAGCTTTAATTGTATC
TAAACAGCTTGATACCGATAGTTGCGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
CCAAAAAAAGGCTCCAAAAGGAGTCTTTAATTGTATC
TAAACAGCTTGATACCGATAGTTGCGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
CCAAAAAAAGGCTCCAAAAGGAGCCTTTAATTGTATC
TAAACAGCTTGATACCGATAGTTGCGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
CCAAAAAAAGGCTCCAAAAGGAGCTTTAATTGTATC
TAAACAGCTTGATACCGATAGTTGCGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
CCAAAAAAAGGCTCCAAAAGGAGCCTTTAATTGTATC
TAAACAGCTTGATACCGATAGATGCGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
CAGCATTAGGAGCCGGCTGATGAGAGTGAGAATAGAAA
CCAAAAAAAGGCTCCAAAAGGAGCCTTTAATTGTATC
TAAACAGCTTGATACCGATAGTTGTGCCGACAATGACAACAACCATCGCCCACGCATAACCGATATATTC
Я попробовал прочитать файл и получить список всех последовательностей в виде строк, избавиться от пробелов, разрывов новой строки и тому подобного. Запустите функцию, в которой определяется использование кодона, и переберите список последовательностей для каждой последовательности в трехбуквенном формате, переводя их в аминокислоту, определенную кодоном в словаре.
Код, который я получил на данный момент:
Код: Выделить всё
input_file = 'inserts.txt'
with open(input_file, 'r') as f:
seq = f.readlines()
seq = [s.replace(" ", "").replace(",", "").replace("'", "").replace("\n", "") for s in seq]
print("\n".join(seq[:99]))
print("\nType lookup", type(seq))
# translation function and NNN codon table as a dict object
def translate(seq):
nnn_table = {'TTT': 'F', 'TCT': 'S', 'TAT': 'Y', 'TGT': 'C', 'TTC': 'F', 'TCC': 'S', 'TAC': 'Y', 'TGC': 'C',
'TTA': 'L',
'TCA': 'S', 'TAA': '*', 'TGA': '*', 'TTG': 'L', 'TCG': 'S', 'TAG': '*', 'TGG': 'W', 'CTT': 'L',
'CCT': 'P',
'CAT': 'H', 'CGT': 'R', 'CTC': 'L', 'CCC': 'P', 'CAC': 'H', 'CGC': 'R', 'CTA': 'L', 'CCA': 'P',
'CAA': 'Q',
'CGA': 'R', 'CTG': 'L', 'CCG': 'P', 'CAG': 'Q', 'CGG': 'R', 'ATT': 'I', 'ACT': 'T', 'AAT': 'N',
'AGT': 'S',
'ATC': 'I', 'ACC': 'T', 'AAC': 'N', 'AGC': 'S', 'ATA': 'I', 'ACA': 'T', 'AAA': 'K', 'AGA': 'R',
'ATG': 'M',
'ACG': 'T', 'AAG': 'K', 'AGG': 'R', 'GTT': 'V', 'GCT': 'A', 'GAT': 'D', 'GGT': 'G', 'GTC': 'V',
'GCC': 'A',
'GAC': 'D', 'GGC': 'G', 'GTA': 'V', 'GCA': 'A', 'GAA': 'E', 'GGA': 'G', 'GTG': 'V', 'GCG': 'A',
'GAG': 'E',
'GGG': 'G'}
# two loops, outer one to loop over the list of string sequences
# inner one loops over each sequence
nnn_aa_seq = []
# generate amino acid sequence
# add option for sequence or codon not divisible by three
print("\nStarting to translate:")
for dna in seq:
protein_seq = ""
for i in range(0, len(dna), 3):
if len(dna) % 3 == 0:
nnn_codon = nnn_table[dna[i:i + 3]]
protein_seq += nnn_codon
nnn_aa_seq.append(protein_seq)
return "".join(nnn_aa_seq)
translate_nnn = translate(seq)
print(tranlate_nnn)
# do other stuff
В качестве «выходных данных» я получаю следующее:
Код: Выделить всё
Starting to translate
**T*TA*TA**TA*Y*TA*YR*TA*YR**TA*YR*L*TA*YR*LR*TA*YR*LRR*TA*YR*LRRQ*TA*YR*LRRQ**TA*YR*LRRQ*Q*TA*YR*LRRQ*QQ*TA*YR*LRRQ*QQP*TA*YR*LRRQ*QQPS*TA*YR*LRRQ*QQPSP*TA*YR*LRRQ*QQPSPT*TA*YR*LRRQ*QQPSPTH*TA*YR*LRRQ*QQPSPTHN*TA*YR*
Редактировать:
Хорошо, я забыл распечатать результат, и он выглядит совсем не так, как я думал. Это одна неразличимая линия аминокислот, а не список аминокислотных последовательностей для каждой последовательности ДНК. В любом случае моя проблема все еще существует. Помощь и любая критика приветствуются!
Подробнее здесь: https://stackoverflow.com/questions/696 ... if-the-dna
Мобильная версия