Итак, сегодня я продолжу свой путь к биоинформатике с помощью машинного обучения. И я попытаюсь выполнить самую основную задачу биоинформатики, а именно преобразование последовательности ДНК в белок. Кроме того, это слишком усложняет задачу, мы можем просто построить словарь для сопоставления значений, как это сделал Виджини Маллаваараччи в этом посте.

Также обратите внимание, что мы собираемся предварительно обработать последовательность ДНК / белка в векторах, если вы не знаете, как это сделать, см. Этот пост.

Наконец, я собираюсь выполнить Расширенное обратное распространение, чтобы обучить нашу сеть.

Сетевая архитектура и прямая связь

Черный вектор → закодированные данные последовательности ДНК
Красный вектор → Каждый слой в нашей сети состоит из 4 слоев (50 нейронов)
Синий Vector → Soft Max Layer для выполнения мультиклассовой классификации
Розоватый? Стрелка → Стандартная операция прямой подачи

Как видно, выше нет ничего особенного в операции с прямой связью, это очень простая полностью подключенная нейронная сеть. Кроме того, у нас будет 50 нейронов в каждом слое.

Операция обратного распространения

Желтая стрелка → Стандартный градиентный поток
Черная изогнутая стрелкаРасширенное соединение для обратного распространения

Как видно выше, процесс обучения также очень прост, просто стандартное обратное распространение с некоторым расширенным соединением с каждым другим слоем для создания плотного соединения.

Результаты тренировки

Левый график → Средняя точность с течением времени
Правый график → Стоимость с течением времени

Итак, в эпоху 1201 года мы будем отслеживать, как работает наша сеть, и, как видно выше, в самом конце она смогла достичь 100-процентной точности.

Преобразование последовательности ДНК в белок

Красный прямоугольник → Модель предсказывала, что последовательность ДНК CTT / TTA / CTA должна находиться в классе 9 или протеине «L»

После завершения обучения мы собираемся передать модели каждую последовательность ДНК и сказать ей, чтобы она предсказывала, к какому классу она принадлежит, и, как показано выше, она правильно предсказывает каждый класс. Мы можем проверить результаты, посмотрев на таблицу ниже.

Интерактивный код

Я перешел на Google Colab для интерактивных кодов! Таким образом, вам понадобится учетная запись Google для просмотра кодов, а также вы не можете запускать сценарии только для чтения в Google Colab, поэтому сделайте копию на своей игровой площадке. Наконец, я никогда не буду спрашивать разрешения на доступ к вашим файлам на Google Диске, просто к сведению. Удачного кодирования!

Для доступа к коду нажмите здесь.

Заключительные слова

Преобразование ДНК в белок можно просто выполнить с помощью словаря, но я просто хотел попробовать это.

Если будут обнаружены какие-либо ошибки, пожалуйста, напишите мне на [email protected], если вы хотите увидеть список всех моих писем, пожалуйста, просмотрите мой сайт здесь.

Тем временем подпишитесь на меня в моем твиттере здесь и посетите мой веб-сайт или мой канал Youtube для получения дополнительной информации. Я также сделал сравнение Decoupled Neural Network здесь, если вам интересно.

Ссылка

  1. Символ ‹-› Преобразование Int в numpy. (2018). Суть. Получено 6 марта 2018 г. с сайта https://gist.github.com/tkf/2276773.
  2. печать, стр. (2018). python: печать по горизонтали, а не по умолчанию. Stackoverflow.com. Получено 6 марта 2018 г. с сайта https://stackoverflow.com/questions/8437964/python-printing-horizontally-rather-than-current-default-printing.
  3. Начало в биоинформатике - превращение последовательностей ДНК в последовательности белков. (2017). К науке о данных. Получено 6 марта 2018 г. с сайта https://towardsdatascience.com/starting-off-in-bioinformatics-turning-dna-sequences-into-protein-sequences-c771dc20b89f.
  4. диапазон ?, Х. (2018). Как нормализовать данные до диапазона 0–1 ?. Stats.stackexchange.com. Получено 7 марта 2018 г. с сайта https://stats.stackexchange.com/questions/70801/how-to-normalize-data-to-0-1-range.
  5. tf.reset_default_graph | TensorFlow. (2018). TensorFlow. Получено 10 марта 2018 г. с сайта https://www.tensorflow.org/api_docs/python/tf/reset_default_graph \
  6. Представление ДНК / белка для задачи машинного обучения с интерактивным кодом. (2018). К науке о данных. Получено 10 марта 2018 г. с сайта https://towardsdatascience.com/dna-protein-presentation-for-machine-learning-task-with-interactive-code-6aa065b69227
  7. массив ?, И. (2018). Есть ли функция Numpy для возврата первого индекса чего-либо в массиве ?. Stackoverflow.com. Получено 10 марта 2018 г. с сайта https://stackoverflow.com/questions/432112/is-there-a-numpy-function-to-return-the-first-index-of-something-in-an-array.
  8. numpy.argmax - Руководство по NumPy v1.13. (2018). Docs.scipy.org. Получено 10 марта 2018 г. с сайта https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.argmax.html.
  9. Генетический код. (2018). Geneinfinity.org. Получено 10 марта 2018 г. с сайта http://www.geneinfinity.org/sp/sp_gencode.html.