В этом задании мы рассматриваем 10 записей из PDB. Соответствующие этим структурам последовательности демонстрируют не более 40% попарного сходства. Требуется найти сходства и различия в укладке.
Загружаем pdb, накладываем их супером на референсную модель (1с47А01). И что видим? Даже убрав петли и сделав цилиндрические спирали, вообще ничего не понятно.
Есть, правда, удачные выравнивания. Например 1с47А01 и 1tuoA01. 1с47А01 оранжевый, 1tuoA01 зеленый.
А есть такая откровенная лажа. Это 1с47А01 с 1kfiA03. 1с47А01 оранжевый, 1kfiA03 циановый.
Алгоритм не справился. Но глазом-то видно, что что-то схожее есть! Попробуем подвигать координаты.
Ну вот. Хоть что-то. Примерно совпал центральный бета-лист и несколько спиралей.
Как же так, почему ничего не выравнивается, если в целом структуры похожи? Дело все в том, что super – это топологический алгоритм. Он не может выделить общие элементы, если они будут идти не в том порядке по последовательности. А какие есть нетопологические алгоритмы? На лекции нам рассказывали, например, про Dali. Ну, погнали выравнивать.
Лучше? Лучше. Для всех представителей налицо структура alpha-beta-alpha сэндвича. Есть 3-4 консервативных бета-тяжа, несколько консервативных альфа-спиралей (непосредственно примыкают к бета-листу).
В основном отличия касаются каких-то более периферических элементов. Иногда центральный бета-лист состоит меньшего числа тяжей, иногда из большего.
Посмотрим, похоже ли Dali на меня выравнял 1с47А01 и 1kfiA03? 1с47А01 оранжевый, 1kfiA03 циановый.
Да, вполне. Даже лучше. Я более-менее выравнял одну альфа-спираль слева от бета-листа, а Dali целых две. Ту, которая справа от бета-листа вообще хорошо. Ну, у меня всегда есть отмазка, что я не старался...
Какой можно сделать вывод?
Вот я сначала так весело закончил это задание, а потом усомнился, точно ли дело в топологии? На примере все тех же 1с47А01 и 1kfiA03 посмотрим.
Тут в покраске rainbow изображены 1с47А01 и 1kfiA03, выравненные dali. Я проследил ход цепи (нас интересует регион от цианового до желтого) и в том участке, где структуры похожи, ход цепи оказался идентичным!
То есть не в топологии дело. Просто super почему-то плохо работает, а dali лучше справляется с задачей.
Выравнивание топологическим алгоритмом CEalign в pymol. CEalign справляется лучше с задачей, чем super. Дело точно не в топологии.
В этом задании мы смотрим на то, как работает dssp в pymol-е и убеждаемся, что мы понимаем, почему он размечает так, как он размечает.
Нужно выбрать две структуры из тех, с которыми мы работаем, и найти отличие во вторичной структуре в аналогичных позициях.
4hjhA03. Внимание на нижний бета-тяж. Показана водородная связь терминальных остатков вторичной структуры (расстояние O-N).
1с47А01. Показана последняя водородная связь между двумя тяжами. В отличие от случая выше, указано расстояние между Н и О. Мне кажется, что это не очень уже и водородная связь, но для DSSP нормально: посчитав по формуле из презентации я получил значение "энергии" -0.811, что меньше порогового значения 0.5.
Нижний бета-тяж заканчивается на один остаток раньше, чем в случае 4hjhA03. Это связано с тем, что в DSSP остаток считается частью вторичной структуры только когда он не является последним во вторичной структуре. В 4hjhA03 бета-тяж продолжается таким образом, а вот в 1с47А01 остов резко идет вниз, поэтому нижний бета-тяж обрывается раньше.
Отличие верхних бета-тяжей объясняется тем, что "выше" в структуре есть еще один бета-тяж, и уже надо рассматривать, как ситуация обстоит там.
В этом задании мы рассчитываем склонности аминокислот образовывать те или иные вторичные структуры по данным из наших 10 структур.
Обработаем обработанные скриптом parse_dssp.py данные.
from collections import Counter
H_counts = Counter()
E_counts = Counter()
C_counts = Counter()
files = os.listdir()
for file in files:
inp = open(file, "r")
for line in inp:
line = line.split()
if line[2] == "H":
H_counts[line[1]] += 1
elif line[2] == "E":
E_counts[line[1]] += 1
elif line[2] == "C":
C_counts[line[1]] += 1
inp.close()
total_counts = Counter()
total_counts.update(H_counts)
total_counts.update(E_counts)
total_counts.update(C_counts)
Посмотрев на количества остатков, обнаружил, что в бета-листах в наших белках нет ни одного триптофана. Придется использовать псевдокаунты для бета-листов. Не будем сильно заморачиваться и по правилу Лапласа их сделаем (просто +1).
E_counts["W"]
hel_prop = list()
sheet_prop = list()
coil_prop = list()
for res in total_counts.keys():
hel_prop.append((H_counts[res] / total_counts[res]) / (sum(H_counts.values()) / sum(total_counts.values())))
sheet_prop.append(( (E_counts[res] + 1) / (total_counts[res] + 3)) / (sum(E_counts.values()) / sum(total_counts.values())))
coil_prop.append((C_counts[res] / total_counts[res]) / (sum(C_counts.values()) / sum(total_counts.values())))
import pandas as pd
table = pd.DataFrame({"Residue" : list(total_counts.keys()), "hel_prop" : hel_prop,
"sheet_prop" : sheet_prop, "coil_prop" : coil_prop})
Таблица склонности к образованию вторичной структуры.
table
Посмотрим на графики.
import seaborn as sns
sns.barplot(x = list(total_counts.keys()), y = hel_prop)
Альфа-спирали.
sns.barplot(x = list(total_counts.keys()), y = sheet_prop)
Бета-листы.
sns.barplot(x = list(total_counts.keys()), y = coil_prop)
Петли.
Пролин и глицин в петлях прокомментировать легко: глицин слишком гибкий, чтобы лезть во вторичную структуру, пролин вторичную структуру не может поддерживать. Вот и остаются в петлях.
Гораздо более удивительно, что аспарагин и аспартат оказались в основном в петлях, а глутамат и глутамин – в альфа-спиралях.