Левин И., 4-й семестр, практикум 9

HMM-профиль семейства белков

Выбранная мною доменная архитектура

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

domain_architecture.png
Рис. 1. Выбранная мною доменная архитектура с участием домена Bac_rhodopsin

Выбор упал именно на эту, так как все остальные варианты доменных архитектур с участием Bac_rhodopsin представленны в UniprotKB очень слабо (находилось менее 100 последовательностей).

Далее с помощью следующего запроса я нашел в UniProtKB все белки, в доменной архитектуре которых есть мой домен, при этом ограничившись лишь бактериями:

database:(type:pfam pf01036) taxonomy:bacteria

По таксону я отфильтровал потому, что всего в UniProtKB белков, в доменной архитектуре которых присутствует Bac_rhodopsin, больше 10000 (после фильтрации - 4725).

Добавив к полученной на выходе таблице находок нужные колонки и убрав лишние, я сохранил всё в файл, который позже обрабатывал с помощью Python, так как счёл это более удобным, чем электронные таблицы.

prot_len_hist.png
Рис. 2. Гистограмма распределения длин белков, имеющих выбранную мной доменную архитектуру

Как можно заметить, на мой гистограмме большая часть белков сконцентрирована в отрезке длин [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

Проверка работы полученного HMM-профиля

Для того, чтобы начать собственно проверку, надо было скачать все имеющие мой домен белки из UniProt (с ограничением по Bacteria). Сделал я это с помощью кода на Python (см. мой jupyter notebook), а здесь вы сможете найти fasta-файл с ними.

Далее я запустил hmm2search:

$ hmm2search -E 0.1 my_profile.hmm bacrho_prots.fasta > hmm_search_result.txt

Здесь вы сможете найти выход hmm2search, который я потом перевел в табличный формат и анализировал. Здесь вы сможете найти отформатированную мной табличку.

На основе полученных данных получаем вот такое распределение весов:

score_graph.png
Рис. 3. График распределения весов

Как мы можем заметить, в районе веса 170 находится достаточно высокий порог. Возьмем значение 170 как пороговое и построим табличку с ROC-кривой нашего профиля:

Таблица 1. Предсказание против "истины"
uniprot+ uniprot-
hmm+ 2700 0
hmm- 2025 1
roc-curve
Рис. 4. ROC-кривая

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