# Launch PyMOL with the "-R" option (pymol -R),
# open a Python 3 notebook, then execute
# remote control of PyMOL (RPC) with XML-RPC:
# https://pymolwiki.org/index.php/Jupyter
# https://pymolwiki.org/index.php/RPC
import xmlrpc.client as xmlrpclib
cmd = xmlrpclib.ServerProxy('http://localhost:9123')
from IPython import display
import prody as pd
import matplotlib.pyplot as plt
import numpy as np
In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The text.latex.preview rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The mathtext.fallback_to_cm rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: Support for setting the 'mathtext.fallback_to_cm' rcParam is deprecated since 3.3 and will be removed two minor releases later; use 'mathtext.fallback : 'cm' instead. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The validate_bool_maybe_none function was deprecated in Matplotlib 3.3 and will be removed two minor releases later. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The savefig.jpeg_quality rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The keymap.all_axes rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The animation.avconv_path rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later. In /home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: The animation.avconv_args rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.
# NMR PDB: 5MQX
# X-ray PDB: 3GQO
cmd.fetch('5mqx')
cmd.fetch('3gqo')
'3gqo'
#cmd.hide('everything')
cmd.bg_color('white')
#cmd.remove('solvent')
cmd.show('cartoon', 'all')
cmd.color('gray80', '(elem C and model 5mqx)')
cmd.color('yelloworange', '(elem C and model 3gqo)')
cmd.select('rem','model 3gqo and (chain B or chain C or chain D)')
cmd.remove('rem')
cmd.super('3gqo', '5mqx')
cmd.zoom('all')
cmd.do('''
set_view (\
0.654681802, -0.739243746, -0.157822624,\
-0.547638357, -0.607766747, 0.575070441,\
-0.521038115, -0.290060312, -0.802733839,\
0.000046985, 0.000116952, -114.230972290,\
24.474639893, 23.814620972, 24.296352386,\
85.205001831, 143.256057739, -20.000000000 )
set cartoon_transparency, 0.3
set ray_trace_mode, 1
''')
В данном задании проводилось сравнения двух структур макродомена вируса венесуэльского конского энцефалита (VEEV) в комплексе с АДФ-рибозой, полученных двумя разными методами (РСА и ЯМР). У РСА-структуры (3GQO) разрешение 2.60 Å, ЯМР-структура (5MQX) имеет 21 модель. Для того, чтобы понять разницу между моделями, РСА-структура была наслоена на структуру ЯМР.
На макроуровне (рисунок 1) расположение и типы вторичной структуры совпадают у обеих моделей. На структурированных участках отличия видны не сильно (альфа-спирали почти идентичны, бета-тяжи очень похожи, но различаются слегка сильнее, чем альфа-спирали), но в районах петель и концов эти различия заметнее. Это может быть связано с тем, что геометрические и физико-химические ограничений больше для элементов вторичной структуры, чем для петель: для петель известны общехимические призникаи, т. к. длины связей, значения обычных и двугранных унлов, а для вторичной структуры добавляются еще те признаки, которые ее формиру (предпочтительные взаимодействия и типы остатков, расположение друг относительно друга). Положение аденозин-5-дифосфорибоза (APR) в РСА-структуре не похоже ни на одно из 21 моделей в ЯМР-структуре. Возможно, это связано с тем, что в РСА положение лигандов плохо разрешается из-за того, что наиболее часто для решения фазовой проблемы применяют метод молекулярного замещения с помощью которого можно получить положение лиганда только в гомологичной структуре, но не в исследуемой. В слчае ЯМР различия в положении лиганда могут быть объяснены менее строгими ограничениями на его положение в месте связвания.
На микроуровне видно (рисунок 2), что молекулы воды присутствуют только в РСА-структуре, т. к. в методе ЯМР либо просто гасят сигналы от обычной воды, либо используеют дейтерированную воду, чтобы убрать шумы от диполь-дипольных взаимодействий. Также только в ЯМР-структуре видны протоны. В РСА-структуре такого разрешения не могут быть протоны из эксперимента. Последовательности остатков совпадают, однако ротамеры различаются. Так, например триада HIS5/ASP138/SER3 в РСА-модели развернута так, что теряются 3 водородные свзяи, которые есть в ЯМР-модели. Наличие водородных связей кажется более адекватным с биологической точки зрения в данном месте структуры, чем их отсутствие.
display.Image('/home/eva/pymol/5mqx_3qpo_macro.png')
Рисунок 1. Отличия на макроуровне структур макродомена вируса венесуэльского конского энцефалита (VEEV) в комплексе с АДФ-рибозой, полученных разными методами: желтая структура (3GQO) - РСА, серая (5MQX) - ЯМР.
display.Image('/home/eva/pymol/5mqx_3qpo_micro.png')
Рисунок 2. Отличия на микроуровне структур макродомена вируса венесуэльского конского энцефалита (VEEV) в комплексе с АДФ-рибозой, полученных разными методами: желтая структура (3GQO) - РСА, серая (5MQX) - ЯМР.
nmr_model = pd.parsePDB('5mqx')
xray_model = pd.parsePDB('3gqo', chain='A')
@> PDB file is found in working directory (5mqx.pdb.gz). @> 2500 atoms and 21 coordinate set(s) were parsed in 0.19s. @> PDB file is found in working directory (3gqo.pdb.gz). @> 1293 atoms and 1 coordinate set(s) were parsed in 0.05s.
nmr_model
<AtomGroup: 5mqx (2500 atoms; active #0 of 21 coordsets)>
RMSFs = [np.mean(pd.calcRMSF(res)) for res in nmr_model.iterResidues()]
mean_betas = [[residue, np.mean(residue.getBetas())] for residue in xray_model.iterResidues() if residue in xray_model.select('protein')]
mean_min = sorted(mean_betas, key=lambda x:x[1])[0]
mean_max = sorted(mean_betas, key=lambda x:x[1], reverse=True)[0]
print('{} = > остаток с наименьшим средним B-фактором - {} {} {}'.format(mean_min, mean_min[0].getResname(), mean_min[0].getResnum(), mean_min[0].getChain()))
print('{} = > остаток с наибольшим средним B-фактором - {} {} {}'.format(mean_max, mean_max[0].getResname(), mean_max[0].getResnum(), mean_max[0].getChain()))
[<Residue: PHE 114 from Chain A from 3gqoA (11 atoms)>, 7.323636363636364] = > остаток с наименьшим средним B-фактором - PHE 114 Chain A [<Residue: ARG 158 from Chain A from 3gqoA (11 atoms)>, 37.93818181818182] = > остаток с наибольшим средним B-фактором - ARG 158 Chain A
betas = [b[1] for b in mean_betas]
fig, axes = plt.subplots(figsize=(8,6))
axes.scatter(RMSFs, betas, s=7)
axes.set_xlabel('RMSF')
axes.set_ylabel('B-factor')
fig.show()
/home/eva/miniconda/envs/py3.6/lib/python3.6/site-packages/ipykernel_launcher.py:5: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. """
Рисунок 3. Scatter plot зависимости B-фактора от RMSF.
По графику видно, что в среднем большим значеням RMSF соответствуют большие значения B-фактора. Эта зависимоть прослеживается не всегда: есть точки с малым RMSF и большим B-фактором, и наоборот. Первых точек больше, чем вторых, поэтому можно предположить, что вероятность высоких значений B-фактора при высоких значениях RMSF больше, чем вероятность высоких значений RMSF при высоких значениях B-фактора. Таким образом, можно грубо прикинуть, в какой мере ансамбль моделей в записи PDB, полученной методом ЯМР, действительно можно принять за отражение подвижности белка, взяв для сравнения значения B-факторов из модели РСА.
def mmm(data):
return(np.min(data), np.max(data), round(np.mean(data), 1))
# Расстояния между атомами, образующими водородную связь, в в ЯМР-структурах
hb1 = [2.1, 2.3, 2.4, 2.4, 2.2, 2.3, 2.1,
2.4, 2.0, 3.0, 2.1, 2.2, 2.7, 2.1,
2.2, 2.4, 2.5, 2.7, 2.1, 2.7, 2.4]
hb2 = [4.6, 10.0, 10.7, 9.0, 5.6, 5.0, 5.4,
5.6, 2.6, 9.8, 6.2, 8.8, 4.6, 5.3,
4.8, 5.6, 4.5, 8.7, 9.6, 5.0, 9.9]
hb3 = [2.8, 3.0, 2.3, 2.6, 2.2, 2.0, 3.0,
4.8, 4.2, 2.3, 2.3, 3.4, 3.9, 4.0,
2.0, 2.7, 5.1, 3.8, 4.8, 5.0, 4.6]
print(mmm(hb1))
print(mmm(hb2))
print(mmm(hb3))
(2.0, 3.0, 2.3) (2.6, 10.7, 6.7) (2.0, 5.1, 3.4)
По результатам таблицы 1 видно, что наличие водородной связи в определенной позиции в структуре, полученной методом РСА, не всегда говорит о том, что в ЯМР-структуре на том же месте тоже будет водородная связи. Как мне кажетя, наличие водородной связи в моделях, полученных разными методами наиболее вероятны в тех случаях, когда эти водородные структурно важны или малоподвижны. Так водородная связь между backbone VAL104 и AVA140 в бета-листе (рисунок 4) присутствовала и в РСА-структуре, и во всех моделях ЯМР. Боковые цепи аминокислот подвижны, из-за этого не во всех моделях ЯМР может присутствовать водородная связь, которая была в РСА-моделе. В случае водородной связи между SER44 альфа-спирали и HIS67 бета-листа (рисунок 5) всего 5% моделей ЯМР имеют водородную связь. Это может быть связано с неправильным определением РСА структуры в данном месте (в электронную плотность остатки вписаны либо неправильно, либо не те), а также с неполнотой данных об ограничениях на расстояния и ковалентную связность, получаемых из ЯМР-эксперимента. В каких-то случаях неполнота данных вызвана шумом в данных и неидеальностью эксперимента или является следствием подвижности атомов. В случае водородных связей между остатками петель неполнота скорее всего связана с подвижностью. Этим может быть обусловлено наличие водородной связи только примерно в половине моделей ЯМР между HIS64 и TYR101 (рисунок 6).
Таблица 1. Сравнение параметров водородных свзяей в структурах, полученных методами ЯМР и РСА.
Номера остатков | Типы остатков | Атомы, образующие водородную связь | Элементы вторичной структуры | Расположение | Расстояние в РСА | Процент моделей ЯМР, в которых есть водородная связь | Минимальное, максимальное и медианное значение расстояния в ЯМР | Номер рисунка |
---|---|---|---|---|---|---|---|---|
104-140 | VAL-ALA | =O - - H-N- | Бета-лист-бета-лист | В ядре | 2.8 Å | 100% | 2.0 Å, 3.0 Å, 2.3 Å | 4 |
44-67 | SER-HIS | =O - - H-N- | Альфа-спираль-бета-лист | В ядре | 2.5 Å | 5% | 2.6 Å, 10.7 Å, 6.7 Å | 5 |
64-101 | HIS-TYR | -N - - H-O- | Петля-петля | На поверхности | 2.8 Å | 57% | 2.0 Å, 5.1 Å, 3.4 Å | 6 |
display.Image('/home/eva/pymol/hb_1.png')
Рисунок 4. Водородная связь между атомами остова в ядре белка.
display.Image('/home/eva/pymol/hb_2.png')
Рисунок 5. Водородная связь боковых цепей в ядре белка.
display.Image('/home/eva/pymol/hb_3.png')
Рисунок 6. Водородная связь в петлях, выходящих на поверхность глобулы.