В настоящее время я изучаю многомерные массивы, и мне было поручено проанализировать цепи последовательностей РНК (данные из файла .txt). Вот пример цепи:
AUGCUUAUUAACUGAAAACAUAUGGGUAGUCGAUGA
Учитывая эту строку, я должен выяснить, какой белок может создать эта цепь РНК. Для этого я должен разбить каждую нить на кодоны (группы по 3). Поэтому для этого примера мне нужно взглянуть на AUG CUU AUU AAC UGA и т. Д. Каждый из этих кодонов представляет собой аминокислоту. Таким образом, AUG — это метионин (обозначен буквой «M»), CUU — лейцин (обозначен буквой «L»), и так далее, и так далее. Поэтому мой вывод должен быть новой цепочкой аминокислот (M-L-I …)
Как лучше всего подойти к этой проблеме? Насколько я понимаю, я должен создать массив 3-D, скажем,
int aminoAcid[4][4][4]
Так как есть 4 возможных выбора для каждой базы (A, U, G, C). Я не совсем уверен, куда идти отсюда, так как определенные комбинации дают одну и ту же аминокислоту.
РЕДАКТИРОВАТЬ: я иду в правильном направлении, если бы сначала преобразовать строку в числовые представления (A = 0, U = 1, G = 2, C = 3). Оттуда я могу лучше работать с 3D-массивом, верно?
Вы можете использовать массив 3d, чтобы соединить аминокислоты с различными последовательностями. Вы должны узнать о enum
и выяснить, как вы можете использовать enum
с вашими индексами массива, так что вы можете сделать что-то вроде
aminoAcid['A']['U']['G'] = 24
где 24 также соответствует метионину, что означает, что вы можете использовать другой enum
там. использование enums
всякий раз, когда у вас есть ограниченная известная группа предметов, которые вы хотите обозначить цифрами.
Похоже, что это только начало более крупного проекта, поэтому вы должны с самого начала следовать передовым методам, думая о том, как вы можете создавать компоненты, которые представляют вашу проблему.