HMM-профиль семейства белков
Выбранная мною доменная архитектура
Я решил остановиться на домене, который я описывал в 13-м практикуме 2-го семестра, это Bac_rhodopsin, а доменную архитектуру выбрал такую:

Выбор упал именно на эту, так как все остальные варианты доменных архитектур с участием Bac_rhodopsin представленны в UniprotKB очень слабо (находилось менее 100 последовательностей).
Далее с помощью следующего запроса я нашел в UniProtKB все белки, в доменной архитектуре которых есть мой домен, при этом ограничившись лишь бактериями:
database:(type:pfam pf01036) taxonomy:bacteria
По таксону я отфильтровал потому, что всего в UniProtKB белков, в доменной архитектуре которых присутствует Bac_rhodopsin, больше 10000 (после фильтрации - 4725).
Добавив к полученной на выходе таблице находок нужные колонки и убрав лишние, я сохранил всё в файл, который позже обрабатывал с помощью Python, так как счёл это более удобным, чем электронные таблицы.
Как можно заметить, на мой гистограмме большая часть белков сконцентрирована в отрезке длин [230; 270], так что рассматривать в дальнейшем исследовании я буду именно её.
Далее с помощью Python я составил представительную выборку белков, имеющих подходящую длину (отрезок которой я определил ранее). Отбирал я из наиболее часто встречающихся отделов в данном отрезке длин белков: Proteobacteria, Bacteroidetes, Actinobacteria, Cyanobacteria, Firmicutes, Verrucomicrobia, Planctomycetes, Chloroflexi, да таким образом, чтобы в итоговой выборке у меня было хотя бы по одному белку из каждого отдела. После всех манипуляций, я скачал последовательности выборки в один fasta-файл.
Строим HMM-профиль семейства белков
Для начала я построил множественное выравнивание моей выборки белков и провел его ревизию, здесь вы сможете найти результат.
Далее я построил и откалибровал HMM-профиль двумя последовательными командами:
$ hmm2build my_profile.hmm sample_align.fasta $ hmm2calibrate my_profile.hmm
my_profile.hmm - мой полученный и откалиброванный HMM-профиль;sample_align.fasta - файл с множественным выравниванием белков.
Проверка работы полученного HMM-профиля
Для того, чтобы начать собственно проверку, надо было скачать все имеющие мой домен белки из UniProt (с ограничением по Bacteria). Сделал я это с помощью кода на Python (см. мой jupyter notebook), а здесь вы сможете найти fasta-файл с ними.
Далее я запустил
$ hmm2search -E 0.1 my_profile.hmm bacrho_prots.fasta > hmm_search_result.txt
Здесь вы сможете найти выход
На основе полученных данных получаем вот такое распределение весов:

Как мы можем заметить, в районе веса 170 находится достаточно высокий порог. Возьмем значение 170 как пороговое и построим табличку с ROC-кривой нашего профиля:
Таблица 1. Предсказание против "истины" | ||
---|---|---|
uniprot+ | uniprot- | |
hmm+ | 2700 | 0 |
hmm- | 2025 | 1 |

Почему ROC-кривая получилась в виде прямой линии? Потому что я с самого начала взял неудачную для доменную архитектуру (которая состоит из одного домена), что не позволило появиться TN и FP и сделать ROC-кривую действительно кривой, так как все белки, скачанные из UniProtKB, имели одну и ту же доменную архитектуру, и TN и FP просто неоткуда было появляться.