Мой профиль linkedin: www.linkedin.com/in/ashwin-singh-403116173

Мой профиль Github: https://github.com/ashwin4glory

В этом блоге будут описаны шаги, которые необходимо предпринять для решения проблемы классификации доменов белков с использованием глубокого обучения. Мы будем иметь дело с данными PFAM, которые предоставляет kaggle. Мы сообщаем о модели глубокого обучения, которая изучает взаимосвязь между невыровненными аминокислотными последовательностями и их функциональной классификацией в 17929 семействах базы данных Pfam. Несмотря на шестидесятилетний прогресс, современные методы не могут аннотировать 1/3 последовательностей микробных белков, что ограничивает нашу способность использовать последовательности, полученные от различных организмов. Таким образом, эта проблема является сложной, поскольку у нас нет ничего, кроме невыровненной последовательности доменов, с помощью которой мы должны определить класс домена.

Задача

Поставленная задача состоит в том, чтобы предсказать семейство последовательности домена аминокислоты.

описание проблемы

Эта проблема возникает в соревновании Kaggle под названием PFAM seed random split. Данные предоставлены самим kaggle. На конкурсе нас просят аннотировать последовательности с максимальной точностью. Ссылку на проблему можно найти здесь.

Данные

Домены - это функциональные части белков; Подобно тому, как изображения в ImageNet предварительно сегментированы, чтобы содержать ровно один класс объектов, эти данные предварительно сегментированы, чтобы содержать точно и только один домен. Цель набора данных - сохранить исходный набор данных PFam как задачу машинного обучения классификации по мультиклассам.

Данные предоставляются самим kaggle. Данные поступают в zip-файл на веб-сайте kaggle, который затем извлекается и превращается в файлы для обучения, разработки и тестирования. Нам предоставляются уже разделенные данные. Подход, используемый для разделения данных на свертки обучения / разработки / тестирования, представляет собой случайное разделение.

  • Данные обучения следует использовать для обучения ваших моделей.
  • Данные разработки (разработки) следует использовать в тесном цикле проверки (возможно, для настройки гиперпараметров или проверки модели).
  • Тестовые данные следует зарезервировать для гораздо менее частых оценок - это помогает избежать переобучения тестовых данных, поскольку их следует использовать нечасто.

Содержимое файла

Посмотрим, что содержится в файлах. В каждой свертке (train, dev, test) есть несколько файлов. Каждый из этих файлов содержит csv в каждой строке, которая имеет следующие поля:

Последовательность: HWLQMRDSMNTYNNMVNRCFATCIRSFQEKKVNAEEMDCTKRCVTKFVGYSQRVALRFAE
family_accession: PF02953.15
sequence_name: C5K6N5_PERM5 / 28-87
aligned_sequence: ... .HWLQMRDSMNTYNNMVNRCFATCI ......... ..RS.F ... .QEKKVNAEE ... ..MDCT ... .KRCVTKFVGYSQRVALRFAE
family_id: zf-Tim10_DDP

Описание полей:

Последовательность. Обычно это входные элементы вашей модели. Аминокислотная последовательность для этого домена. Существует 20 очень распространенных аминокислот (частота ›1,000,000) и 4 аминокислоты, которые встречаются довольно редко: X, U, B, O, Z.
family_accession: Обычно это метки для вашей модели. Регистрационный номер в форме PFxxxxx.y (Pfam), где xxxxx - это принадлежность к семейству, а y - номер версии. Некоторые значения y больше десяти, поэтому y состоит из двух цифр.
family_id: Одно слово для семьи.
имя_последовательности: имя последовательности в форме «uniprotaccession_id / start_index-end_index».
align_sequence: содержит единственную последовательность из множественного выравнивания последовательностей (с остальными членами семейства в начальных числах, с сохраненными пробелами.

Обычно поле family_accession - это метка, а последовательность (или выровненная последовательность) - это обучающая функция.

Эта последовательность соответствует домену, а не полноценному белку.

Сопоставление проблемы реального мира с проблемой глубокого обучения

Поскольку существует почти 18 000 выходных классов, это проблема мультиклассовой классификации. Мы будем использовать точность в качестве показателя эффективности.

Ограничения:

  • Нет требований к низкой задержке.
  • Получите приличную точность.
  • Используйте в качестве входных данных только данные последовательности.

Теперь перейдем к коду:

Начнем с импорта библиотек

Мы будем загружать данные из файлов в отдельные фреймы данных.

Данные

Исследовательский анализ данных

Служебные функции

Теперь мы напишем несколько служебных функций, которые будем использовать в будущем.

Поскольку между последовательностями доменов нет пробелов, мы будем помещать между ними пробелы. И мы дадим family_accessions индекс, сформировав словарь, и это то, что делается в приведенном ниже коде.

Featurization

Модель здания

Сначала мы строим модели LSTM, но в этом случае точность была слишком низкой, возможно, потому, что мы использовали очень простые модели, как и аналогичные результаты, которые мы получили с простыми моделями CNN. Затем мы построили несколько сложных моделей с помощью CNN.

Ниже приведен график модели, который мы использовали для построения нашей модели. Эта модель построена с использованием тензорной доски.

Ниже приведен код keras для нашей модели.

Теперь мы обучаем нашу модель, используя одни данные горячего кодирования для 30 эпох. Здесь на изображении показано только 20 эпох, это связано с ограничением места.

Теперь мы оцениваем нашу обученную модель на тестовых данных и строим график зависимости эпох от потерь.

Мы сообщаем о точности и потерях наших тестовых данных, используя модель, которую мы обучили.

Заключение

Таким образом, мы можем сделать вывод, что, просто используя последовательности доменов аминокислот, мы можем построить несколько моделей глубокого обучения, чтобы получить довольно приличную точность. Нам не нужно было выполнять какие-либо сложные разработки функций для создания некоторых функций, мы просто использовали информацию о последовательности и преобразовали их в функции. Однако для использования моделей машинного обучения потребовались бы некоторые полезные функции, но при глубоком обучении мы использовали только необработанные данные.

Если вам понравился мой блог, пожалуйста, хлопните в ладоши. Спасибо

Вы можете войти в мой профиль в linkedin здесь: www.linkedin.com/in/ashwin-singh-403116173

Вы можете увидеть код прямо в моем профиле github: https://github.com/ashwin4glory/PFAM-amino-acid-domain-classification

Использованная литература:

Www.appliedaicourse.com

Arxiv.org/pdf/1606.01781



Профиль Github MrJaggu



Https://mbi.nus.edu.sg/wp-content/uploads/2018/06/2018-predicting-DNA-protein-interactions_800by600.png