Для проведения 3DQSAR анализа мы будем использовать программы Open3DQSAR и Open3DALIGN (open3dqsar.sourceforge.net)! Эти программы поддерживают как работу в интерактивном режиме, так и выполнение скриптов.
Нам дан набор из 88 веществ – ингибиторов тромбина compounds.sdf. Для 85 из них активность известна, для трех – нам предстоит предсказать. Для начала необходимо построить пространственное выравнивание активных конформаций исследуемых веществ. Будем считать активной конформацией (то есть конформацией, в которой вещество-ингибитор взаимодействует с белком-мишенью) наиболее энергетически выгодную конформацию (часто это вполне соответствует истине). Попробуем сгенерировать эти конформации, используя программу obconformer из пакета OpenBabel. Я взял уже готовый файл compounds_best_conformer.sdf. Далее делаем выравнивание полученных конформеров. Попробуем сделать это с помощью программы Open3DALIGN (open3dalign.sourceforge.net). Чтобы сделать выравнивание нужно загрузить наш SDF файл со структурами веществ, используя следующий синтаксис:
import type=SDF file=compounds_best_conformer.sdfИ выполнить выравнивание:
align object_list=1 save file=aligned.sdfВроде получилось, но PyMol не открывает aligned.sdf. Попробуем разобраться с кодировкой:
iconv -c -f utf-8 -t ascii aligned.sdf > aligned_ascii.sdf sed -e 's/.*HEADER.*\([0-9][0-9]\).*/\1/' -e 's/\(.*M END.*\)/\1\n$$$$/' aligned_ascii.sdf > temp sed -n '/^[0-9a-zA-Z \$\.-]*$/ p' temp > aligned_ok.sdf rm tempПолучился файл aligned_ok.sdf. И уже этот файл можно открыть и проанализировать!

Теперь мы можем попробовать выполнить непосредственно 3DQSAR анализ и посмотреть, получается ли построить регрессионную модель с помощью такого выравнивания. Запускаем программу:
open3dqsar.shЗагружаем файл со структурами:
import type=sdf file=aligned_ok.sdfЗагружаем файл с данными об активности исследуемых соединений (activity.txt):
import type=dependent file=activity.txtАктивности трех последних соединений нам предстоит предсказать, поэтому для них пока что указана нулевая активность. Задаем решетку вокруг исследуемых соединений:
boxОставим часть наших соединений в качестве тестового набора, и не будем использовать их для построения модели, а также исключим (пока что) соединения с неизвестной активностью:
set object_list=60-85 attribute=TEST set object_list=86-88 attribute=EXCLUDEDРассчитаем значения энергии ван-дер-Ваальсовых взаимодействий в узлах решетки:
calc_field type=VDW force_field=MMFF94 probe_type=CRВ некоторых узлах решетки псевдо-атом зонда (probe) находится слишком близко к атомам исследуемых содеинений, и дает слишком большую по модулю энергию. Установим ограничения на значения энергии:
cutoff type=max level=5.0 field_list=1 cutoff type=min level=-5.0 field_list=1Слишком маленькие значения энергии приравняем к 0:
zero type=all level=0.05Исключим из анализа ячейки, в которых вариабельность в энергии взаимодействия с зондом для разных соединений мала:
sdcut level=0.1 Nlevel remove_x_vars type=nlevelНаконец, построим регрессионную модель:
plsВ результате выполнения этой программы мы получите коэффициенты корреляции для разного количества компонент, выделенных PLS.
Exp. Cum. exp. Exp. Cum. exp.
PC var. X % var. X % var. Y % var. Y % SDEC r2
--------------------------------------------------------------------------
0 0.0000 0.0000 0.0000 0.0000 0.9494 0.0000
1 7.3852 7.3852 39.6551 39.6551 0.7375 0.3966
2 4.5272 11.9123 34.6556 74.3107 0.4812 0.7431
3 4.0303 15.9427 15.9744 90.2851 0.2959 0.9029
4 4.6388 20.5814 4.8265 95.1116 0.2099 0.9511
5 4.4540 25.0354 2.9577 98.0692 0.1319 0.9807
Elapsed time: 0.4846 seconds.
Все коэффициенты корреляции получились больше 0! Четыре коэффициента стремятся к 1. Модель можно считать хорошей. Модель устраивает.
Попробуем выполнить кросс-валидацию!
cv type=loo runs=20Результаты кросс-валидации:
PC SDEP q2 -------------------------- 0 0.9658 -0.0348 1 1.0194 -0.1529 2 1.1152 -0.3798 3 1.0963 -0.3334 4 1.0994 -0.3410 5 1.0744 -0.2808 Elapsed time: 1.7347 seconds.q2 - это коэффициенты корреляции? Тогда все они отрицательные. Не могу сказать, насколько это хорошо... Предскажем активность для тестовой выборки!
predictПривожу предсказанные коэффициенты корреляции:
PC r2(pred) SDEP -------------------------- 0 0.0000 1.0362 1 -0.0525 1.0631 2 0.0627 1.0032 3 -0.0352 1.0543 4 -0.0669 1.0703 5 0.0162 1.0278 Elapsed time: 0.0266 seconds.Ну что тут можно сказать... Полученные коэффициенты корреляции близки к 0. Они что-то среднее между оценками коэффициентов корреляции кросс-валидации и нашей модели.
Теперь попробуем выполнить тот же анализ, но используя выравнивание и конформации, полученные с учетом структуры активного центра белка-мишени (на самом деле они находятся в исходном файле compounds.sdf). Посмотрим на выравнивание в PyMOL! Но для этого надо проделать те же процедуры, что были сделаны выше:
open3dalign.sh import type=SDF file=compounds.sdf align object_list=1 save file=aligned_2.sdfСнова модифицируем для просмотра в Pymol:
iconv -c -f utf-8 -t ascii aligned_2.sdf > aligned_ascii_2.sdf sed -e 's/.*HEADER.*\([0-9][0-9]\).*/\1/' -e 's/\(.*M END.*\)/\1\n$$$$/' aligned_ascii_2.sdf > temp sed -n '/^[0-9a-zA-Z \$\.-]*$/ p' temp > aligned_ok_2.sdf rm tempПолучаем выравнивание с учетом структуры активного центра белка-мишени:

open3dqsar.sh import type=sdf file=aligned_ok_2.sdf import type=dependent file=activity.txt box set object_list=60-85 attribute=TEST set object_list=86-88 attribute=EXCLUDED calc_field type=VDW force_field=MMFF94 probe_type=CR cutoff type=max level=5.0 field_list=1 cutoff type=min level=-5.0 field_list=1 zero type=all level=0.05 sdcut level=0.1 nlevel remove_x_vars type=nlevel pls cv type=loo runs=20 predictРезультаты PLS:
Exp. Cum. exp. Exp. Cum. exp.
PC var. X % var. X % var. Y % var. Y % SDEC r2
--------------------------------------------------------------------------
0 0.0000 0.0000 0.0000 0.0000 0.9494 0.0000
1 12.1342 12.1342 48.4736 48.4736 0.6815 0.4847
2 13.2295 25.3637 14.5885 63.0621 0.5770 0.6306
3 7.6412 33.0049 13.2040 76.2661 0.4625 0.7627
4 8.0257 41.0305 4.3684 80.6345 0.4178 0.8063
5 6.0521 47.0827 3.8642 84.4987 0.3738 0.8450
Elapsed time: 0.1540 seconds.
Результаты кросс-валидации:
PC SDEP q2 -------------------------- 0 0.9658 -0.0348 1 0.8027 0.2851 2 0.7664 0.3484 3 0.7061 0.4468 4 0.6735 0.4968 5 0.6401 0.5454 Elapsed time: 0.1026 seconds.Предсказанные коэффициенты корреляции:
PC r2(pred) SDEP -------------------------- 0 0.0000 1.0362 1 0.3451 0.8385 2 0.3226 0.8529 3 0.2998 0.8671 4 0.3012 0.8662 5 0.2693 0.8858 Elapsed time: 0.0065 seconds.Коэффициенты корреляции, полученные по PLS оказались меньше, чем для первого случая, однако не такие уж и плохие, есть близкие к 1. Результаты кросс-валидации получились лучше, чем в первом случае - здесь только одно отрицательное значение (коэффициенты стремятся близки в основном к 0.5). Предсказанные коэффициенты также отличаются от первого раза (они больше нуля, близки к 0.3, более хороший показатель, но они также далеки от 1). Подозреваю, что учет структуры активного центра белка-мишени, использованный для получения выравнивания, положительно сказался на подсчете коэффициентов корреляции.
Теперь давайте попробуем использовать получившуюся модель для предсказания активности.Для начала, переделаем модель с использованием всех имеющихся данных, а вещества с неизвестной активностью обозначим как тестовую выборку:
set object_list=60-85 attribute=TRAINING set object_list=86-88 attribute=TESTПостроим модель и предскажем активность трех веществ:
pls predictРезультаты pls:
Exp. Cum. exp. Exp. Cum. exp.
PC var. X % var. X % var. Y % var. Y % SDEC r2
--------------------------------------------------------------------------
0 0.0000 0.0000 0.0000 0.0000 0.9749 0.0000
1 12.8375 12.8375 44.4004 44.4004 0.7269 0.4440
2 14.5264 27.3638 14.3748 58.7753 0.6260 0.5878
3 6.9607 34.3245 11.2007 69.9760 0.5342 0.6998
4 8.4659 42.7904 5.4939 75.4699 0.4828 0.7547
5 4.7600 47.5503 5.7466 81.2166 0.4225 0.8122
Elapsed time: 0.2641 seconds.
Результаты predict:
PC r2(pred) SDEP -------------------------- 0 0.0000 6.6604 1 0.0294 6.5616 2 -0.0102 6.6942 3 0.0265 6.5717 4 -0.0480 6.8183 5 -0.0950 6.9696 Elapsed time: 0.0161 seconds.Среди выдачи predict есть и такая табличка:
-----------------------------------------------------------------------------------------------------
N ID Name Actual 1 2 3 4 5 Opt PC n
-----------------------------------------------------------------------------------------------------
86 86 01 0.0000 7.0954 7.5090 7.3772 7.6623 7.8822 1
87 87 44 0.0000 6.9300 7.0808 6.9883 7.1990 7.4119 1
88 88 72 0.0000 5.5493 5.2836 5.1285 5.3788 5.3537 3
Ну, если мы посмотрим на коэффициенты корреляции, полученные по предсказанию, то наиболее близкие значения должны получаться
при использовании первой компоненты.
Таким образом, активности искомых трех соединений:
N Activity ================ 86 7.0954 87 6.9300 88 5.5493Все файлы находятся здесь.