Учебная страница курса биоинформатики,
год поступления 2018
Python для структур и не только
[ Туториал ProDy ]
NB: я привык импортировать prody как pd. Если для вас pd значит pandas, спокойно используйте любое другое удобное для вас сокращение, это вообще не принципиально.
Задание 1. Prody и B-факторы часть 1
1 балл
Возьмите ваш PDB3 из Практикума 2.. С помощью Prody найдите остаток, средний B-фактор атомов которого максимален. Чему он равен? Что это за остаток, где он находится? Насколько велик разброс значений B-факторов его атомов? Есть ли тут какие-то закономерности?
Также найдите остаток, средний B-фактор атомов которого минимален. Чему он равен? Что это за остаток, где он находится?
Покажите эти два остатка на одном изображении в контексте всей структуры белка (например, белок можно показать в виде cartoon, и только эти два остатка в виде sticks. Полупрозрачность cartoon и использование Sidechain Helper сделают картинку еще чище). Как связан их B-фактор и их расположение, их окружение?
Задание 2. Prody и B-факторы часть 2
1 балл
Для каждого остатка вашего белка вычислите средний B-фактор по его атомам и его центр масс. Вычислите центр масс всего белка. Найдите для каждого остатка расстояние от его центра масс до центра масс белка. Постройте scatter plot зависимости B-фактора от расстояния до центра белка. Обсудите, какие закономерности вы видите на этом графике.
+0.5 баллов: опишите распределение какой-то осмысленной моделью, приведите показатели качества описания. Внимание: для оценки этого задания возможен призыв Пензара!
Задание 3. Как работает восстановление функции электронной плотности по экспериментальным данным
3 балла
В этом задании мы воспользовались возможностями питона и напрограммировали игрушечный одномерный пример, иллюстрирующий восстановление функции ЭП по экспериментальным данным.
Задание включает следующие этапы.
- Создание модельной функции ЭП в одномерной элементарной ячейке
- Расчет параметров сигнала, моделирующих экспериментальные данные: амплитуды и фазы
- Восстановление функции ЭП по модельным ("экспериментальным") данным
- Оценка качества восстановления функции ЭП
Cкрипты для выполнения задания
- Скрипты проверены для python 2.7. Под python 3.0 не проверял.
- Для запуска дома необходимы библиотеки numpy и matplotlib. Скачайте и установите.
- Скопировать к себе обязательно надо файл fourier.py. Все скрипты используют этот модуль.
Запуск без параметров python <имя скрипта> выдает информацию о том, что делает скрипт.
- Запуск с параметром -h сообщает какие есть параметры и как их задавать.
Описание задания
Также см. пояснение
Введение
В обычном мире, мы делаем кристалл, который состоит из молекул имеющих электроны, которые распределены так, что мы можем описать их электронной плотностью. Эту электронную плотность мы хотим узнать в ходе рентгеноструктурного анализа. Проводим эксперимент, получаем амплитуды, берем откуда-то фазы, проводим синтез Фурье и восстанавливаем электронную плотность, надеясь, что эта полученная “восстановленная” электронная плотность максимально близка к реальной.
Цель практикума попытаться воспроизвести ход кристаллографического эксперимента на умозрительном и крайне упрощенном примере. Мы сами сгенерируем электронную плотность, разложим ее в ряд Фурье, а затем будем восстанавливать исходную функцию, имитируя ту или иную степень потери данных в ходе эксперимента.
Упрощения, которые вводятся в этом практикуме:
- Мы условно рассматриваем одномерную вселенную, в которой атомы находятся на одном отрезке длиной 30 ангстрем.
- Электронная плотность атома описывается гауссовой кривой. За высоту колокола принимаем количество электронов этого атома. Максимум колокола находится в центре атома.
- В молекулах атомы располагаются на расстоянии 1-1.5 ангстрема (ковалентная связь), молекулы на расстоянии 3-5 ангстрем.
Нужно задать расположение 2 или 3 молекул состоящих из двух или трех атомов (желательно в сумме иметь не больше семи атомов). Раскидать по отрезку в 30 ангстрем 5-7 точек.
Задание функции
Прежде чем моделировать проведение рентгеноструктурного эксперимента сгенерируем функцию электронной плотности.
Функция задается на интервале [0,30]. Моделируется в 1D график электронной плотности молекулы. 30 следует понимать как 30 ангстрем. Функция имеет вид суммы нескольких гауссовых кривых с центром в разных точках. Иногда - на расстоянии 1-1.5 ангстрем - модель ковалентно связанных атомов; иногда 3-5 ангстрем (расстояние между молекулами).
Формат файла с функцией, примененной ко всем значениям интервала:
#X Y [строка с # в первой колонке игнорируется]
0.00 1.01
0.01 1.07
... ....
29.97 1.00
(пример графика такой функции в пояснении в вверху этой страницы.)
Функцию можно создать с помощью скрипта compile-func.py. Гауссова функция определяется числами lambda, beta, gamma по формуле: gauss = lambda*exp(-(beta^2)*(X-gamma)^2) Здесь a^2=a*a.
Lambda задает высоту гауссиана, через которую мы имитируем число электронов у атома.
Beta задает ширину гауссиана, значение 3 соответствует релевантной нам ширине колокола плотности около 1 ангстрем, что похоже на реальную ситуацию.
Gamma задает положение центра атома.
Пример задания параметров скрипта: -g 30,3,3+40,3,4.3+2,3.5,6.5+30,3,7.5
Это сумма четырех гауссовых функций: их максимумы в точках 3, 4.3, 6.5, 7.5, высота 30, 40, 2, 30 соответственно; третий - низкий - пик моделирует атом водорода.
Вам нужно придумать свою "молекулярную систему", подобрав эти параметры! Не берите их значения из примера.
Расчет амплитуд и фаз сигналов, моделирующих экспериментальные данные
Теперь у нас есть электронная плотность, смоделируем получение экспериментальных данных. Амплитуды и фазы рассчитываются однозначно по входной функции ЭП (в реальности, не зная исходной электронной плотности, мы бы из эксперимента получили только амплитуды, а фазы восстанавливали бы из других экспериментов).
При моделировании экспериментальных данных учитывается, что в эксперименте, во-первых, определяются амплитуды не для всех сигналов; во-вторых, интенсивности сигналов (следовательно, и амплитуды) определяются с ошибкой; в-третьих, фазы определяется для всех измененных сигналов, но тоже с ошибкой.
Коэффициенты Фурье рассчитываются с помощью скрипта func2fourier.py Входной файл – функция, полученная как выходной файл скрипта compile-func.py. Выходной файл имеет формат: <номер гармоники> <амплитуда> <фаза>
Добавление гауссового шума к амплитудам (параметр -F <число>) и фазам (-P <число>) искажает все вычисленные амплитуды и фазы. Пример: -F 20 (шум 20%) приводит к тому, что к каждой амплитуде прибавляется случайное число, распределенное нормально с параметрами: среднее = 0, среднее квадратичное отклонение (сигма)=0.2*F. Аналогично действует параметр -P <число>
Отбор гармоник можно сделать одним из способов:
- Скопировать файл с коэффициентами Фурье и убрать лишние строки.
- Пометить лишние строки знаком "#" в первой позиции строки (такие строки при чтении игнорируются).
- Запустить скрипт fourier-filter.py , который отфильтрует нужные строки (как задать, какие, читайте в help'е этой функции).
Таким образом мы получаем наборы смоделированных экспериментальных данных, по которым можем начать восстанавливать нашу исходную электронную плотность, с целью сравнить ее с исходной (идеально), и определить как именно неполнота данных из эксперимента влияет на качество восстановления электронной плотности.
Восстановление функции ЭП по амплитудам и фазам части сигналов
Восстановление функции по отобранным гармоникам (вспомните, что такое гармоника) выполняется скриптом fourier2func.py. Кроме графика, выдается также файл с исходной и восстановленной функцией. Для отключения графика исходной функции служит параметр `-s' (если захотите экспериментировать с коллегой). Используйте возможности графического окна для выделения нужной части графика и его сохранения.
Как сравнить восстановленную функцию с исходной
- Отличное восстановление – по графику восстановленной функции можно определить положение максимума всех гауссовых слагаемых функции ("атомов")
- Хорошее восстановление – можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума
- Среднее восстановление – положение каких-то атомов определить по восстановленной функции нельзя, других - можно
- Плохое восстановление – положение атомов определить не представляется возможным; можно только предсказать примерный размер "молекулы"
Можете привлечь коллегу: покажите график восстановленной функции, не показывая графика исходной, и попросите определить положение атомов.
При приведении значения разрешения неполного набора гармоник, указывайте, пожалуйста, номер гармоники, чье разрешение вы взяли за общее.