Для данного задания я выбрал домен Head_binding (AC: PF09008; число последовательностей в seed - 4, full - 71; средняя длина - 108.5 (длина HMM профиля - 113); среднее покрытие - 17.86%). Выбранная двухдоменная архитектура содержит также домен PhageP22-tail (15 последовательностей).
Далее я скачал все последовательности выборки full, которым соответствуют следующие AC. Идентификаторы двухдоменных арихитектур я скопировал со страницы с архитектурами в PFAM.
Чтобы выровнять последовательности белков с данной двухдоменной архитектурой, был создан файл, объединяющий последовательности этих белков, который затем был подан на множественное выравнивание программе muscle (выдача). Из выравнивания были убраны 3 последовательности. Белки не обрезал, так как участки слишком короткие и довольно консервативные (первый домен вообще начинается с первой аминокислоты). Отфильтрованное выравнивание.
# Создаём файл с последовательностями выбранных двухдоменных структур
with open('./data/double.txt', 'r') as AC, open('./data/seq_dom.fasta', 'w') as w:
for line in AC:
seq = ''
c = 0
with open('./data/full.fasta', 'r') as f:
for l in f:
if l.startswith('>'+line.strip().split()[0]):
c = 1
elif l.startswith('>'):
c = 0
elif c == 1:
seq += l.strip()
w.write('>'+line.strip().split()[0]+'\n')
w.write(seq+'\n')
Далее я воспользовался пакетом HMMER 2.3.2 для создания HMM профиля (полученная длина профиля - 667), откалибровал его и запустил поиск доменов в белках.
hmm2build HMM filt_seq.fas
hmm2calibrate HMM
hmmsearch --cpu=1 HMM full.fasta &> log.txt
Выдача - log. Во всех последовательностях с довольно маленьким значением E-value (не более 10^(-4)) была найдена данная двухдоменная архитектура.
С помощью скрипта[1], была составлена таблица, содержащая информацию о последовательностях, в которых проводился поиск домена(AC, найдена ли архитектура, участвовала ли в потроении профиля, был ли найден hmm2search, score, E-value, длина). Для получения порога, дающего наименьшее значение параметра F1 и построения ROC кривой, был использован ещё один скрипт[2]. Значение порогового веса получилось равным 434,9.
Выражаю благодарность Беляеву Геннадию и Мурзину Владиславу за любезно предоставленные скрипты 1 и 2.