Практикум 8. Разметка вторичной структуры

Задание 1


В этом задании мы рассматриваем 10 записей из PDB. Соответствующие этим структурам последовательности демонстрируют не более 40% попарного сходства. Требуется найти сходства и различия в укладке.

super_overview.png

Загружаем pdb, накладываем их супером на референсную модель (1с47А01). И что видим? Даже убрав петли и сделав цилиндрические спирали, вообще ничего не понятно.

super_not_bad.png

Есть, правда, удачные выравнивания. Например 1с47А01 и 1tuoA01. 1с47А01 оранжевый, 1tuoA01 зеленый.

super_bad.png

А есть такая откровенная лажа. Это 1с47А01 с 1kfiA03. 1с47А01 оранжевый, 1kfiA03 циановый.
Алгоритм не справился. Но глазом-то видно, что что-то схожее есть! Попробуем подвигать координаты.

super_bad_fixed.png

Ну вот. Хоть что-то. Примерно совпал центральный бета-лист и несколько спиралей.

Как же так, почему ничего не выравнивается, если в целом структуры похожи? Дело все в том, что super – это топологический алгоритм. Он не может выделить общие элементы, если они будут идти не в том порядке по последовательности. А какие есть нетопологические алгоритмы? На лекции нам рассказывали, например, про Dali. Ну, погнали выравнивать.

dali_good.png

Лучше? Лучше. Для всех представителей налицо структура alpha-beta-alpha сэндвича. Есть 3-4 консервативных бета-тяжа, несколько консервативных альфа-спиралей (непосредственно примыкают к бета-листу).
В основном отличия касаются каких-то более периферических элементов. Иногда центральный бета-лист состоит меньшего числа тяжей, иногда из большего.

dali_bad_comp.png

Посмотрим, похоже ли Dali на меня выравнял 1с47А01 и 1kfiA03? 1с47А01 оранжевый, 1kfiA03 циановый.
Да, вполне. Даже лучше. Я более-менее выравнял одну альфа-спираль слева от бета-листа, а Dali целых две. Ту, которая справа от бета-листа вообще хорошо. Ну, у меня всегда есть отмазка, что я не старался...

Какой можно сделать вывод?

my-awesome-meme.jpeg

Вот я сначала так весело закончил это задание, а потом усомнился, точно ли дело в топологии? На примере все тех же 1с47А01 и 1kfiA03 посмотрим.

topology.png

topology_closeup.png

Тут в покраске rainbow изображены 1с47А01 и 1kfiA03, выравненные dali. Я проследил ход цепи (нас интересует регион от цианового до желтого) и в том участке, где структуры похожи, ход цепи оказался идентичным!
То есть не в топологии дело. Просто super почему-то плохо работает, а dali лучше справляется с задачей.

cealign.png

Выравнивание топологическим алгоритмом CEalign в pymol. CEalign справляется лучше с задачей, чем super. Дело точно не в топологии.

Задание 2


В этом задании мы смотрим на то, как работает dssp в pymol-е и убеждаемся, что мы понимаем, почему он размечает так, как он размечает.
Нужно выбрать две структуры из тех, с которыми мы работаем, и найти отличие во вторичной структуре в аналогичных позициях.

4hjh_beta_exists.png

4hjhA03. Внимание на нижний бета-тяж. Показана водородная связь терминальных остатков вторичной структуры (расстояние O-N).

1c47_beta_exists.png

1с47А01. Показана последняя водородная связь между двумя тяжами. В отличие от случая выше, указано расстояние между Н и О. Мне кажется, что это не очень уже и водородная связь, но для DSSP нормально: посчитав по формуле из презентации я получил значение "энергии" -0.811, что меньше порогового значения 0.5.
Нижний бета-тяж заканчивается на один остаток раньше, чем в случае 4hjhA03. Это связано с тем, что в DSSP остаток считается частью вторичной структуры только когда он не является последним во вторичной структуре. В 4hjhA03 бета-тяж продолжается таким образом, а вот в 1с47А01 остов резко идет вниз, поэтому нижний бета-тяж обрывается раньше.
Отличие верхних бета-тяжей объясняется тем, что "выше" в структуре есть еще один бета-тяж, и уже надо рассматривать, как ситуация обстоит там.

Задание 3


В этом задании мы рассчитываем склонности аминокислот образовывать те или иные вторичные структуры по данным из наших 10 структур.

Обработаем обработанные скриптом parse_dssp.py данные.

In [90]:
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).

In [89]:
E_counts["W"]
Out[89]:
0
In [108]:
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())))
In [109]:
import pandas as pd
table = pd.DataFrame({"Residue" : list(total_counts.keys()), "hel_prop" : hel_prop,
                                       "sheet_prop" : sheet_prop, "coil_prop" : coil_prop})

Таблица склонности к образованию вторичной структуры.

In [125]:
table
Out[125]:
Residue hel_prop sheet_prop coil_prop
0 V 0.954482 1.934416 0.648677
1 K 0.915474 1.108130 1.032956
2 F 0.838905 1.457754 0.945215
3 Q 1.430554 0.703302 0.819186
4 S 0.871855 0.458151 1.349635
5 Y 1.390816 1.096430 0.673903
6 A 1.665062 0.368627 0.745522
7 E 1.449583 0.650079 0.807648
8 N 0.592807 0.751654 1.446231
9 I 1.258358 1.535948 0.577631
10 P 0.632189 0.464791 1.537168
11 R 0.829610 1.692614 0.851246
12 M 1.545351 1.018114 0.612639
13 L 1.274030 1.116886 0.740779
14 T 0.892870 1.081746 1.061908
15 C 0.463605 2.138039 0.918959
16 D 0.618141 0.570144 1.500966
17 G 0.342941 1.363179 1.374662
18 H 0.927211 0.445425 1.336668
19 W 1.986880 0.534510 0.630143

Посмотрим на графики.

In [124]:
import seaborn as sns
sns.barplot(x = list(total_counts.keys()), y = hel_prop)
Out[124]:
<matplotlib.axes._subplots.AxesSubplot at 0x19c576f5d30>

Альфа-спирали.

In [112]:
sns.barplot(x = list(total_counts.keys()), y = sheet_prop)
Out[112]:
<matplotlib.axes._subplots.AxesSubplot at 0x19c55fa29a0>

Бета-листы.

In [123]:
sns.barplot(x = list(total_counts.keys()), y = coil_prop)
Out[123]:
<matplotlib.axes._subplots.AxesSubplot at 0x19c57618b20>

Петли.

  • Чаще всего образуют альфа-спирали, чем что-либо еще, глутамин, глутамат, аланин, метионин и триптофан;
  • Чаще всего образуют бета-листы, чем что-либо еще, валин, цистеин;
  • Чаще всего образуют петли, чем что-либо еще, серин, аспарагин, аспартат, пролин, глицин, гистидин.

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