CNN + встраивающий слой для предсказания генов в метагеномике читает.

В этом поражении я продемонстрирую, как мы можем использовать глубокое обучение для вызова предсказания ORF кодирования из некодирования. Мы собираемся использовать методологию, разработанную в рамках структуры обработки естественного языка (NLP), и применить ее к ORF, рассматривая последовательность ДНК как биологический молекулярный текст.

Мы собираемся реализовать четыре разных алгоритма CNN, RNN, LTSM, GRU и сравнить их производительность, чтобы увидеть, какой из них превосходит другой.

Предварительная обработка алгоритмов такая же, мы используем данные, предоставленные в этой статье, которая содержит около 4 миллионов ORF, я извлек 600000 ORF для обучения и тестирования.

Данные, доступные на моем диске

Предварительная обработка данных

Первый шаг - загрузка данных в Google Colab.

После загрузки данных в tmpdata мы конвертируем этот список в фреймворк pandas.

Рассмотрение последовательности ДНК как «языка», также известного как подсчет k-мер

Последовательности ДНК и белков можно метафорически рассматривать как язык жизни. Язык кодирует инструкции, а также функции для молекул, которые встречаются во всех формах жизни. Аналогия языка последовательностей продолжается с геномом в виде книги, подпоследовательности (гены и семейства генов) - это предложения и главы, k-меры и пептиды (мотивы) - это слова, а нуклеотидные основания и аминокислоты - это алфавит. Поскольку аналогия кажется такой уместной, понятно, что удивительная работа, проделанная в области обработки естественного языка, должна также применяться к естественному языку ДНК и белковых последовательностей.

Метод, который мы здесь будем использовать, прост и удобен. Сначала я беру длинную биологическую последовательность и разбиваю ее на перекрывающиеся по длине k-мерные «слова». Например, если я использую «слова» длиной 6 (гексамеры), «ATGCATGCA» превращается в «ATGCAT», «TGCATG», «GCATGC», «CATGCA». Следовательно, наш пример последовательности разбит на 4 гексамерных слова.

Теперь нам нужно преобразовать списки k-мер для каждого гена в строковые предложения

Мы видим, что у нас есть достаточно сбалансированные данные.

Здесь мы будем использовать класс Tokenizer от Kears для преобразования слов / K-мер в целые числа, а затем применить заполнение для обработки стандартизации длины входных данных.

Последний шаг перед созданием моделей - разделение данных на обучение и тестирование, а также определение размера словаря.

CNN + слой встраивания

Давайте создадим нашу модель и посмотрим, как она работает.

Когда модель готова, настало время для обучения.

Похоже, наша модель не научилась различать ORF при кодировании и без кодирования.

Мы получили точность 82,51%, чувствительность 80,39%, специфичность 79,17% и среднее гармоническое значение 79,78%.

резюме

В этом уроке мы исследовали использование NLP в предсказании генов, следующий пост будет последним в предсказании генов, я собираюсь сравнить производительность RNN, LSTM и GRU и посмотреть, какая модель дает нам лучшие результаты.

проверьте меня в LinkedIn и GitHub.

До следующего раза