Сейчас работаю над проектом по биоинформатике для дипломной работы. Я написал Python-скрипт, который должен переводить список строк из 1000 ДНК-последовательностей в белки по 1152 различным codontables (генетическим кодам). Эти кодонтаблицы содержатся в списке словарей, которые были получены путем перетасовки ключей и значений (кодонов и аминокислот). Я хочу, чтобы этот скрипт переводил 1000 последовательностей 1152 способами за один раз в консоли IPython или просто в Python-3.6 IDLE. Этот скрипт был написан в Spyder 3.2.7. Я пробовал много способов исправить свой код, но мой скрипт не запускается. Вот мой код:
file = open('F:\\біоінформатика\\DNA_Sequence72 - Копія.py', 'r')
DNA = file.read()
DNA_Sequences = DNA.split(',')
Genetic_Codes = open('F:\\біоінформатика\\Genetic_Codes.py', 'r')
Genetic_Codes = Genetic_Codes.read()
Genetic_Codes_list = Genetic_Codes.split('\n')
for row in Genetic_Codes_list: #for str in list[Genetic_Codes_list] in range(1152):
Alternative_Genetic_Codes = Genetic_Codes_list.pop(0)
for dna in range(1000):
dna = DNA_Sequences.pop(0)
codontable = Alternative_Genetic_Codes
codontable_sequence = ""
for i in range(0, len(dna)-(3+len(dna)%3), 3):
if codontable[dna[i:i+3]] == "_":
break
codontable_sequence += codontable[dna[i:i+3]]
print(list([codontable_sequence]))
После запуска получаю такую ошибку:
Файл "", строка 8, в
if codontable[dna[i:i+3]] == "_":
TypeError: строковые индексы должны быть целыми числами. Скриншот переменных после запуска скрипта: введите здесь описание изображения Буду очень благодарен за помощь.
dna = DNA_Sequences.pop(0)
иDNA_Sequences
- это список строк. Так чтоdna[i:i+3]
тоже строка. И бац, ошибка. - person pawamoy   schedule 04.04.2018if codontable[dna[i:i+3]] == "_":
. Зная, чтоi
является целым числом, ошибка возникает из-заcodontable[...]
, а неdna[...]
. Это потому, чтоdna[i:i+3]
— это строка, иcodontable
— тоже строка. Вы не можете сделатьstring[other_string]
. - person pawamoy   schedule 04.04.2018codontable
нужно целое число в качестве индекса, ноdna[i:i+3]
- это не целое число, это строка. - person Vince   schedule 05.04.2018codontable
. Добавьте несколько операторовprint
в цикл, чтобы увидеть, что происходит в деталях. - person pawamoy   schedule 07.04.2018codontable
элементам, но не понимаете, почему и как это исправить, предлагаю начать заново с самого начала. Это всего лишь 10-строчный цикл, это не должно быть сложно. - person pawamoy   schedule 11.04.2018obj.union[]
не является допустимым синтаксисом, ниobj.append[]
. Думаю, вам стоит еще раз прочитать туториал на основе Python. - person pawamoy   schedule 18.04.2018for item in range(0, len(dna)-(3+len(dna)%3), 3): if codontable.index(dna[item:item + 3]) == "_": break codontable_sequence += codontable.index(dna[item:item + 3]) print(list([codontable_sequence]))
. Но PyCharm и IPython выдали эту ошибку:codontable_sequence += codontable.index(dna[item:item + 3]) TypeError: must be str, not int
. - person Niels Isaacson   schedule 20.04.2018