Продолжаю. Поставил юноша
GATK (Genome Analysis Toolkit) и даже сумел его запустить.
А ещё в дистрибутиве GATK (в целом написанного на Джаве) лежат дистрибутивы TensorFlow и Keras. Молекула ДНК - это 3 миллиарда нуклеотидных пар. Целиком её никто не секвенирует - нет настолько быстрых приборов. Секвенируют небольшими сегментами, миллиона по 3. Но даже получив табличку на 3 миллиона пар, никто в ней глазками отклонения не углядит. Тут-то и пригождаются Методы Анализа Больших Данных.
Беда в том, что в дистрибутиве GATK дистрибутивы TensorFlow и Keras а) старых версий, и б) несовместимых между собой. Юноша лезет в Интернет, находит нужные слова и пишет pip install --upgrade tensorflow keras. И получает самые свежие версии… опять несовместимые между собой. Последний Keras всё ещё не работает с TensorFlow 2.0. Юноша опять пишет pip install -U tensorflow==1.15 и, наконец, получает работающий пайплайн.
Молекула ДНК расплетается на 2 полуспирали, нарезается на сегменты, сегменты секвенируются и последовательности нуклеотидов пишутся в файлы - каждая полуспираль в свой. Потом эти файлы склеиваются; поскольку полуспирали на секвенировании могут не полностью совпадать, то склеить 2 файла полуспиралей в один файл с двумя колонками не вполне тривиально - в каждой колонке нужно смотреть, какие нуклеотиды стоят в начале/конце цепочки, и если в другом файле их не хватает, забивать часть колонки нулями. Для этого, конечно, есть свои программы.
Потом полученный гигантский двухколоночный файл обрабатывается на предмет поиска отклонений. Поскольку сын работает в хирургической клинике, то первое, что ищется - маркеры болезней, влияющих на свёртываемость крови. В дистрибутиве GATK есть натренированная модель, ну и в каждой лаборатории её дотренировывают или перетренировывают заново на собственных чистых данных.
Для того, чтобы этот пайплайн мне объяснить, сын прочитал мне лекцию часа на полтора. Во время которой я убедился, что он уже хорошо разбирается в теме. Я восхищён!
Upd. Вспомнил из лекции: все 3 миллиарда и не нужны. За 4 с половиной миллиарда лет эволюции накопилось много мусора. Поэтому одна из задач секвенирования - нарезать молекулу ДНК на интересные сегменты, содержащие работающие (кодирующие) последовательности.
X-Post:
https://phd-ru.dreamwidth.org/311474.html