Пакет SOP-GPU

Пакет SOP-GPU, где SOP обозначает модель самоорганизующегося полимера (Self Organized Polymer), реализованная на графическом процессоре (GPU) — это научный программный пакет для проведения симуляций динамики Ланжевена процессов механического или температурного развертывания белков и механического сдавливания больших биомолекулярных систем в пределах экспериментальной временной шкалы от миллисекунды до секунды. Пакет SOP-GPU использует приближенное представление белков на основе Cα-углерода (coarse-grained) в сочетании с вычислительной мощностью современных графических процессоров (ГП).

Документация

Для детального объяснения всех постоянных параметров, формата входных и выходных данных обращайтесь к руководству по SOP-GPU. Некоторые технические детали алгоритмов описаны здесь. Также ниже описаны примеры, показывающие как запускать симуляции с использованием пакета SOP-GPU.

Загрузки

Последнюю версию исходного кода можно загрузить отсюда. Пожалуйста, пишите нам, если у вас есть вопросы или комментарии, или если вам бы хотелось получить текущую версию кода SOP-GPU. Мы будем признательны, если вы сможете помочь нам сделать пакет лучше.

Инструкции по установке

  1. Вам потребуется NVIDIA Developer Driver и Toolkit. При установке в Linux (Ubuntu) воспользуйтесь этой инструкцией.
  2. Загрузите этот архив с программой.
  3. Распакуйте его.
  4. Зайдите в терминале (cd) в папку SOP-GPU с программой, и запустите ‘make’. Это скомпилирует программу и создаст два исполняемых файла: sop-gpu и sop-top.
  5. Для инсталляции программы, скопируйте исполняемые файлы в папку /usr/bin, или выполните команду ‘sudo make install’.

Использование SOP-GPU

Подготовка начальной полноатомной pdb структуры

  1. Загрузите структурный файл белка из Protein Data Bank. Один из простейших примеров — WW-домен, который можно получить из PDB файла 1PIN.
  2. Отформатируйте вручную PDB файл, оставив только часть необходимую для симуляции. В случае 1PIN.pdb (для WW-домена) надо удалить почти всё, оставив только остатки с 6 по 39 из цепи А*.

*Замечание: текущая версия программы sop-top из пакета SOP-GPU читает только секции “ATOM” и “SSBOND” из pdb файла. Если в вашей системе есть дисульфидные связи, убедитесь, что в урезанном файле есть соответствующие поля “SSBOND”.

Создание файла топологии и упрощенного pdb файла.

  1. Для создания молекулярной топологии вам потребуется конфигурационный файл**. Простой пример можно взять здесь.
  2. Измените имя белка в конфигурационном файле так, чтобы оно соответствовало имени усеченного pdb файла.
  3. Если требуется измените имя входного (полноатомного pdb) файла, выходных файлов (топологии и sop-структуры), радиус действия для нативных контактов, т.е. между парой Cα-атомов углерода (простая Go-модель) или между аминокислотными остатками (полная Go-модель), а также константы взаимодействия (εh)***.
  4. Используйте утилиту sop-top при помощи команды:
    $ sop-top top.sop

Это создаст файлы топологии и sop-pdb. Эти файлы будут использоваться на следующем шаге программой sop-gpu. Вы можете изучить pdb файл, загрузив его в программу для визуализации, например VMD.

**Замечание: конфигурационный файл — это набор пар: имя — значение параметра. Каждая строка sop файла содержит одну такую пару, где значение параметра отделено от его имени пробелом или табуляцией. Символы «<» и «>» можно использовать для подстановки значений ранее определённых параметров, например так:  name 1PIN  structure <name>.pdb здесь параметр structure получит значение “1PIN.pdb”. Также символ “#“ можно использовать для комментариев.
***Замечание: в общем случае нет точного правила для определения значения εh и радиус действия, включая R_limit_bond и SC_limit_bond (см. ниже). Однако важно, что эти параметры определяют нативные контакты и то, насколько они сильны. Один из способов определения их значений — пропробовать несколько комбинаций, пока результаты симуляций и эксперимента не сойдутся. Для такого простого белка как WW-домен, образованного мз 34 аминокислот, базовые значение εh, R_limit_bond, и SC_limit_bond достаточно хороши, т.е. εh=1,5 ккал/моль, R_limit_bond=8,0Å и SC_limit_bond=5,2Å. В общем случае, εh должно быть в пределах от 1,0 до 1,5 ккал/моль. Стандартные значения радиуса действия соответственно 8 Å и 0 Å для R_limit_bond и SC_limit_bond в случае простой Go-модели, и 8 Å и 5.2 Å в случае полной Go-модели. Утилита sop-top позволяет создавать более сложные топологии, включая конструирование белковых тандемов или использование собственных значений εh для каждого остатка из входного pdb файла. Обращайтесь к примерам ниже или руководству по SOP-GPU для получения более подробной информации. Если необходимо разделить папки для входных и выходных файлов, то эти папки должны быть созданы перед запуском утилиты sop-top.

Равновесные симуляции

Чтобы запустить равновесные симуляции, необходимо сделать следующее.

  1. Используйте этот конфигурационный файл. Для примера с WW-доменом далее можно переходить к шагу 4.
  2. В конфигурационном файле измените имя белка.
  3. Измените там же параметры: число шагов интегрирования numsteps и начальное состояние генератора seed.
  4. После подготовки конфигурационного файла, запустите команду:
    $ sop-gpu equil.sop

Начнётся симуляция равновесного процесса. В консоль будут выводиться текущий номер итерации, энергии и температура Максвелла-Больцмана для системы, а также некоторые оценки времени, требуемого для завершения симуляции. Все энергии и температура также сохраняются в выходной файл в текстовом формате dat (TAB-sepatated table). Программа также сохранит dcd файл с координатами Cα-частиц. Имена этих выходных файлов указываются заранее в конфигурационном файле. Используя VMD или аналогичный пакет можно визуализовать текущую структуру, загрузив этот dcd файл вместе с sop-pdb. Можно использовать как начальный pdb файл (созданный утилитой sop-top), так и ссылочный файл, сохранённый программой sop-gpu. Подробное описание формата dat файла можно найти в руководстве по SOP-GPU.

Растяжение белка

Чтобы запуска симуляции растяжения белка нужно сделать следующее:

  1. Используйте этот конфигурационный файл. Для примера c WW-доменом далее можно переходить к шагу 6.
  2. Как говорилось ранее, нужно поменять имя белка (параметр name).
  3. Обновите число фиксированных аминокислотных остатков и остатков, за которые происходит растяжение, а также их идентификаторы. Например, если требуется зафиксировать и тянуть только по одному остатку, то приравняйте параметры fixed1 и pulled1 идентификаторам этих остатков. Нумерация остатков начинается с нуля, и не соответствует действительному номеру аминокислоты. Идентификатор равен порядковому номеру аминокислоты (вторая колонка sop-pdb файла) минус единица.
  4. Скорость растяжения задаётся параметром deltax, а константа жесткости кантилевра — k_trans. По умолчанию эти параметры равны стандартным экспериментальным значениям 2,5 мкм/c и 35 пН/нм соответственно.
  5. Установите число шагов интегрирования numsteps.
  6. Для запуска симуляции выполните команду:
    $ sop-gpu pull.sop
    Дополнительно к энергиям и координатам, в отдельный выходной текстовый файл будут сохранены координаты конца кантеливра (в Å), и значения молекулярной силы и силы натяжения кантеливра (в ккал/мольÅ). Подробное описание формата этого файла можно найти в руководстве по SOP-GPU.
  7. Для получения кривой растяжения, постройте на графика зависимость данных колонки 4 от данных колонки 2 из выходного файла симуляции. Замечание: значение силы дано в единицах (в ккал/мольÅ), а смещение — в Å.

Подход «множество-тректорий-на-одном-ГП»

Этот способ позволяет запускать много одновременных симуляций на одном ГП для того чтобы получить множество независимых траекторий для одной и той же системы. Здесь приводиться пример запуска симуляции равновесия (шаги 1-3), в также симуляции растяжения (шаги 4 и 5), используя подход “множество-тректорий-на-одном-ГП”. Необходимо сделать следующее:

  1. Вернитесь к equil.sop и измените параметр “run 1” на “firstrun 1” в файле конфигураций.****
  2. Добавьте параметр “runnum 100” в том же файле конфигураций
  3. Начнется расчёт 100 траекторий, и программа создаст множество выходных файлов. Чтобы расположить эти файлы в различных папках, нужно создать все папки до запуска симуляций. Если, к примеру, вы меняете параметр «DCDfile» на dcd/<name>_<run>_<stage>.dcd”, то потребуется создать подпапку dcd в папке симуляции.
  4. Сделайте аналогичные изменения в файле pull.sop. Так как симуляции растяжения используют последний кадр из файла траектории симуляции равновесия, убедитесь в том, что параметр coordinates изменён соответствующем образом.
  5. Для запуска симуляций растяжения вслед за симуляциями равновесия используйте этот скрипт. Запуск скрпта производится простой коммандой:
    $sh runall.sh

****Когда параметр run удалён из конфигурационного файла, макрос «<run>» теперь пердставляется множеством runnum чисел (100 в этом случае), начиная с числа firstrun (1 в этом случае). Если используется, к примеру, «<run>.dcd» для вывода DCD данных, SOP-GPU создаст файлы «1.dcd»…»100.dcd», т.е. по файлу на каждую траекторию. Убедитесь, что для всех выходных файлов используется макрос «<run>», чтобы они не перезаписывали друг друга

Примеры:

  1. WW-домен и тандем WW-мономеров с использованием подхода «множество-тректорий-на-одном-ГП» [архив].
  2. Сдавливание бактериофага HK97 [архив].

Пожалуйста, цитируя SOP-GPU в ваших публикациях, ссылайтесь на наши статьи:

A. Zhmurov, R. I. Dima, Y. Kholodov, and V. Barsegov, «SOP-GPU: Accelerating biomolecular simulations in the centisecond timescale using graphics processors», Proteins78, 2984-2999 (2010),

A.А. Жмуров, В.А. Барсегов, С.В. Трифонов, Я.А. Холодов, А.С. Холодов. Моделирование микромеханики на графических процессорах с использованием динамики Ланжевена // Математическое моделирование. 2011, т. 23, № 10, с. 133-156.