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.
До следующего раза