Введение

Материал из md
Перейти к: навигация, поиск

Введение и справочная информация в pdf-формате: 00_Introduction.pdf.

Вводная часть

Для выполнения практических заданий необходимо знать основы метода классической молекулярной динамики, желательно иметь опыт программирования и знакомство с операционной системой Linux. В данном варианте практических занятий использован пакет Gromacs версии 4.6. Однако пособие подходит для работы и в других версиях (в 3-ей и в 5-ой). С точки зрения пользователя между ними нет принципиального различия, базовая идеология работы и основные команды сохранились. Могут быть только некоторые различия в особенностях работы отдельных команд и используемых ключей, что можно легко узнать в каждом конкретном случае. Мы работаем в операционной системе Linux, в которой пакет Gromacs был создан и развивается. Поэтому нужно иметь представление об этой системе, знать основные команды. Для визуализации моделей применяется известный пакет VMD. Для построения графиков предлагается работать с программой qtiplot. Для автоматизации повторяющихся расчётов полезно использовать сценарии (скрипты). Ниже мы приводим необходимую вспомогательную информацию, прежде чем приступить к работе с Gromacs'ом.

Метод молекулярной динамики

В самом общем виде — это метод, имитирующий движение атомов (молекул) с помощью решения классических уравнений движения с учетом межатомных взаимодействий. Стартуя с некой начальной конфигурации молекулярной системы, мы рассчитываем новые положения и скорости всех атомов в последующие моменты времени с заданным временным шагом Δt. Полученная последовательность конфигураций системы представляет собой «молекулярно-динамическую траекторию» исследуемой системы и может использоваться для расчёта средних (термодинамических) характеристик системы, а также для изучения её структуры и динамического поведения.

Ограничением метода классической молекулярной динамики является использование эмпирических потенциалов межатомного взаимодействия. Обычно считается, что они не зависят от температуры и изменений в структуре. К счастью, для большинства важных задач физической химии и молекулярной биологии это допущение вполне приемлемо. В настоящее время для самых разных молекулярных систем разработаны достаточно надежные потенциалы взаимодействия (поля сил). С другой стороны, использование эмпирических взаимодействий является важным преимуществом метода. С ними легче проводить расчёты, они позволяют работать с большим числом атомов. Типичные современные модели состоят из десятков тысяч атомов, а специальные — из миллионов. Это отличает классическую молекулярную динамику от, так называемых, «первопринципных» (ab initio) подходов, где трудоемкость резко возрастает с числом атомов.

Результаты молекулярно-динамического моделирования обычно переносят на макроскопические системы, хотя система моделируется внутри сравнительно небольшого бокса (обычно куб или параллелепипед). Как было в свое время показано, для моделирования макроскопических (термодинамических) свойств, нет необходимости в макроскопическом (огромном) числе атомов, если использовать периодические граничные условия. Считается, что модельный бокс окружен своими «периодическими образами», которые получаются его трансляцией. Каждый такой образ модельного бокса содержит «образы» всех атомов, находящихся в модельном боксе. В результате мы имеем систему атомов, заполняющую всё пространство, но при этом оперируем только атомами исходного модельного бокса. При таком подходе удаётся, в значительной мере, исключить влияние границы на поведение модельной системы, поскольку приграничные атомы взаимодействуют не со стенкой, а с атомами-образами из соседнего бокса.

Поскольку метод применяется для моделирования молекулярных систем, то имеет значение, какому термодинамическому ансамблю соответствует наша система. В оригинальном варианте метода решаются классические уравнения движения, т.е. моделируемая система представляет собой обычную консервативную систему, в которой сохраняется полная энергия системы. В статистической физике она называется «микроканоническим ансамблем» и обозначается как NVE (постоянное число частиц, объём и полная энергия). Однако большинство реальных систем вокруг нас находятся при постоянном давлении и температуре (NPT). Кроме того, бывают состояния системы при постоянном объёме и температуре (NVT), что соответствует, так называемому, каноническому ансамблю. Понятно, что разработчики метода уделили внимание моделированию таких ансамблей. Для этого пришлось разработать приёмы и алгоритмы, которые поддерживают постоянными температуру или давление. В первом случае алгоритм выполняет функцию термостата, во втором — баростата.

Наконец, немаловажным является реализация численного решения уравнений движения. Здесь приходится искать оптимум между точностью расчёта молекулярно-динамической траектории, надежностью (достаточностью) модели и вычислительными затратами. Важным параметром здесь является оптимальный шаг интегрирования Δt. Кроме этого, нужно задать разумный размер модели (число атомов). Для достаточно больших моделей следует определить предельное расстояние, за которым взаимодействие между атомами можно не учитывать. Это существенно влияет на скорость вычислений, поскольку именно расчёт силы взаимодействия атома с его окружением потребляет основное время. Поэтому для межатомных потенциалов взаимодействия всегда указывают такую границу, как «радиус обрезания потенциала».

Основные команды Linux

Для данного практикума нужно знать основные команды операционной системы Linux, уметь работать с файлами и директориями. Современные варианты этой операционной системы имеют оконный интерфейс, в котором нужно оперировать мышью. Однако Gromacs ориентирован на работу в режиме командной строки, поскольку командная строка даёт больше возможностей для организации вычислений. Поэтому в данном практикуме мы предпочитаем работать с командной строкой. Ниже приведён список полезных команд Linux с кратким описанием. Однако всегда можно воспользоваться справочной информацией, содержащейся в самой операционной системе, для этого достаточно набрать команду:

man command

Команда man обращается к описанию системы (manual), а параметр command — это имя той команды Linux'a, о которой мы хотим получить информацию.

Работа с директориями:

Pwd
показывает текущую директорию
ls
ls -l
ls –t
– показывает содержимое директории (список файлов и директорий внутри текущей директории

– содержимое директории в подробном виде с датой, размером и др. Отметим, что ключ -l это строчная латинская буква l.

– содержимое директории, отсортированное по времени.

Ключи можно комбинировать, например, -lh задаёт вывод в подробном виде (-l) и в удобочитаемом формате (-h), и т.п.

cd
переход в домашнюю директорию пользователя
cd name
переход в директорию name
cd ..
переход в вышележащую директорию
mkdir namedir
cоздание директории с именем namedir
rmdir namedir

rmdir -r namedir

удаление пустой директории с именем namedir

удаление непустой директории с её содержимым

rm name
удаление файла name
cp name1 name2
копирование файла name1 в name2
cp name1 namedir/
копирование файла name1 в папку namedir
mv name1 name2
переименование директории или файла name1 в name2


Работа с файлами

less file1
просмотр содержимого файла (для выхода – команда q (quit)‏
cp file1 file2
копирование файла file1 в file2
mv file1 file2
переименование файла file1 в file2
rm file1

rm -f file??

удаление файла. Ключ -f позволяет игнорировать несуществующие файлы.

Вопросительный знак (?) означает любой символ. Можно ставить несколько вопросительных знаков подряд, каждый из них соответствует своему символу.

find -name file
поиск всех файлов с именем file
find dir1/ -name f*.txt
поиск всех файлов с именем, начинающимся на f и заканчивающимся на .txt в директории dir1 и в её поддиректориях.

Звёздочка в имени файла * означает любое количество любых символов.

ln -s dir1/file linkname


создание ссылки на файл file в директории dir1.

С помощью этой команды в текущей директории создается файл-ссылка с именем linkname, обращаясь к которой, мы оперируем файлом file в директории dir1.

Ключ -s означает, что ссылка символьная, т.е. определяет файл, находящийся в указанной директории, по имени.

Узнать, куда ссылается данный файл можно командой ls -l.

echo "text" > file1
Направить текст “text” в файл file1. Если файл не существует, то будет создан, если уже существует, то будет перезаписан.
echo "text2" >> file1
Добавить текст text2 в файл file1. В отличие от предыдущего способа, здесь файл не будет перезаписан, но в него будет добавлена новая запись после имеющейся.
cat file2 >> file1
Добавить содержимое файла file2 в конец файла file1
paste file1 file2 > file3
Склеить построчно. К каждой строчке первого файла добавляется соответствующая строчка второго файла и записывается в файл file3


Редактирование

kate file1
запуск файла file1 в текстовом редакторе kate (оконный интерфейс)
vi file1
запуск файла file1 в текстовом редакторе vi. Этот редактор удобен для тех, кто любит работать с командной строкой. Включение подсветки синтаксиса (разыми цветами) осуществляется командой Esc, затем: sy on, выход Esc:q . Режим вставки символов включается клавишей Ins

отмена действия: Esc, затем u

выход с записью изменений wq

mc
запуск файлового менеджера «midnight commander». Он подобен широко известному менеджеру far
F4

(в файловом менеджере mc)

По нажатию клавиши F4 в файловом менеджере mc запускается встроенный текстовый редактор (также как в far).


Некоторые «хитрости» при работе с Linux

;
mkdir dir1; cd dir1
Знак ; (точка с запятой) служит разделителем между последовательно запускаемыми командами.

Таким образом, несколько команд можно записывать в одной командной строке.

nice 19 mdrun
установка приоритета для выполнения команды. Например, для команды mdrun при запуске МД расчётов в фоновом режиме можно задать самый низкий приоритет 19. Диапазон приоритетов задается числами от -20 до 19, где -20 означает наибольший приоритет. По умолчанию у всех команд приоритет соответствует 10.
./filename
запуск исполняемого файла (например, скрипта)
chmod +x filename
сделать файл filename исполняемым
ssh username@compname
соединиться по ssh с другим компьютером с именем compname, используя имя пользователя username. ssh – сетевой протокол, позволяющий производить удалённое управление другим компьютером (например, для запуска расчётов на вычислительном кластере). При запуске потребуется ввести пароль пользователя.
tar -xvzf archive.tar.gz


распаковать архив archive.tar.gz в текущей директории с выводом информации об извлекаемых файлах


scp -r username@comp:/path/name .


скопировать папку path/name с компьютера comp под именем пользователя username в текущую директорию (точка в конце команды). При запуске потребуется ввести пароль пользователя.
cat file | sed -e "s/abc/defg/"
sed – построчный редактор, может, например, заменить набор символов abc на defg . В данном примере программа cat читает построчно файл file и передаёт содержимое программе sed.

Перенаправление выхода программы cat на вход программы sed осуществляется при помощи вертикальной черты | (pipe).

cat file | awk '/Kinetics Energy/ {print $0}' >> file2
Если требуется извлечь информацию из файла (например, величину кинетической энергии из отчёта программы g_energy), то удобно пользоваться программой awk.

Здесь файл file читается программой cat и построчно передаётся на вход программе awk. Она разбивает каждую входную строчку на «слова», разделённые пробелом. В данном способе записи тело программы заключено в кавычки и состоит из шаблона, Kinetics Energy, записанного между двумя слэшами /…/, что означает, что среди строчек мы ищем запись, в которой имеется данная фраза. Затем программа выполняет действие, заключённое в фигурные скобки { … } . В данном случае производится вывод (print) всей строчки целиком ($0 ) и результат направляется (добавляется) в файл file2

Полезно знать следующее:

(а) При наборе с клавиатуры имени файла или команды можно воспользоваться автоматическим дополнением окончания. Для этого после того, как введены первые символы, надо нажать [Tab] – и появится нужное окончание. В случае, если введённые первые символы не определяют команду однозначно, то после первого нажатия [Tab] ничего не происходит. Можно также ввести следующую букву, и снова нажать [Tab]. При повторном нажатии выдаются возможные варианты.

(б) Все команды, запускаемые в командной строке, сохраняются и могут быть использованы повторно. При нажатии стрелки вверх появляется предыдущая команда. История команд хранится в файле ~/.bash_history в домашней директории.

(в) В системе Linux расширению файлов обычно не придаётся большого значения (как например в Windows), к примеру, текстовый и исполняемый файлы могут иметь любое расширение или быть без расширения совсем. Тем не менее иногда используются некоторые предпочтения, например, скриптам обычно дают расширение .sh. Однако это расширение ещё не делает файл исполняемым. Оконные версии Linux’а также могут ориентироваться на расширения — при клике на файл он запускается той программой, которая ассоциирована с данным расширением.

Программа VMD

VMD (Visual Molecular Dynamics) является удобной программой для визуализации, анимации и анализа молекулярных систем. Она создана группой теоретической и вычислительной биофизики из университета Иллиноиса и Бекмановского Института, имеет доступный код и распространяется бесплатно: http://www.ks.uiuc.edu/Research/vmd/ (однако для этого необходимо зарегистрироваться на сайте). VMD исходно переназначена для работы с биологическими системами, может работать со стандартными PDB (Protein Data Bank) файлами и представляет большой выбор способов для изображения молекул. Однако она позволяет визуализовать любые молекулярно-динамические траектории, полученные независимо. Запуск программы осуществляется командой:

vmd

При запуске появляется окно, в котором будет отображаться молекулярная система, а также окно основного меню «VMD Main», Рис. 1. Кроме того, остаётся активной командная строка, в которую также выводится текущая информация. Через основное окно можно открывать другие окна, загружать и сохранять файлы, контролировать отображение траектории, устанавливать настройки, а также закрывать программу.

Файл молекулярно-динамической траектории необходимо подгрузить дополнительно. Для этого нужно активировать в окне основного меню кнопку Molecule и выбрать load data into molecule. После чего в поле filename можно записать путь и имя файла с траекторией, либо нажать чуть правее «Browse» и выбрать файл из списка. После этого можно указать, какие кадры загружать, к примеру, каждый десятый (по умолчанию подразумевается загрузка всех кадров из выбранной траектории).

Можно загрузить траекторию сразу при запуске VMD, для этого надо после имени файла координат (conf.gro) системы указать имя файла её молекулярно-динамической траектории (traj.xtc):

vmd conf.gro traj.xtc

По умолчанию атомы показаны в перспективе, но можно включить ортографическую проекцию, выбрав в меню Display, Ortographic. Атомы изображаются сферами, радиусы которых равны ван дер Ваальсовским радиусам атомов. Однако в окне настроек Representations из меню Graphics можно найти поле Drawing Method и выбрать в нём удобное представление молекулы: «Lines» — связи в виде линий, «Licorice» — связи в виде палочек, «CPK» — шарики и палочки, «NewCartoon» — третичная структура белка в виде α-спиралей и β-складок.

Fig1.jpg
Рис. 1. Окна программы VMD. Окно основного меню (слева), окно для изображения (в центре), всплывающее окно меню (справа).

В окне, где нарисована система, можно приблизить или отдалить какой-то участок. Для этого надо воспользоваться колесом мыши. Чтобы восстановить масштаб по умолчанию, достаточно нажать на клавиатуре знак «=» (равно).

Графический пакет qtiplot

Программа для построения и работы с графиками и функциями запускается командой

qtiplot


Fig2.jpg
Рис. 2. Окно программы qtiplot

Функционально она очень похожа на всем известную программу Origin. Содержит большое количество функций для анализа данных.

Cкрипты

Имеется возможность написать последовательность команд и сохранить её в отдельный файл. Такой файл (набор команд) называется сценарием или скриптом. Команды можно оформлять в циклы, использовать переменные, массивы, if-конструкции, и т.п., как в языке программирования. Полный набор элементов и операторов используемых для написания скриптов можно найти по команде

man bash

Ниже показаны примеры операторов, которые могут пригодиться в дальнейшей работе.

echo Text
echo "Text text"
echo $a
print $a
– echo (эхо) – выводит текст Text. Если в нём есть пробелы, то его необходимо помещать в кавычки.

– выводит значение переменной a. Обращение к адресу переменной обозначается при помощи знака доллара $.

Печать выводится на стандратный вывод (консоль, монитор)

seq 1 10
seq 1 2 20
выдаёт последовательность чисел от 1 до 10

аналогично, от 1 до 20 с шагом 2

for i in $(seq 1 10)
do
print $i
done
пример использования цикла.

Печатает числа от 1 до 10. Печать выводится на экран монитора.



if [ $i = 2 ]
then
…
else …;
fi
условный оператор

Скрипт запускает другие программы, работая с готовыми программными компонентами. Интерпретацией операторов (переводом их на язык компьютера) занимается, в нашем случае, оболочка bash, поэтому часто скриптам дают расширение .sh . В начале файла-скрипта должна стоять запись, указывающая какая программа используется для запуска файла. Поскольку мы используем bash, то первой строчкой скрипта должно стоять: #!/bin/bash .

Пример простого скрипта:

#!/bin/bash
echo "This script creates a set of directories"
for i in $(seq 250 10 300)
do
mkdir $i
done

Скрипт сначала выводит надпись "This script creates a set of directories", а затем, в цикле, переменной i присваивает значения от 250 до 300 с шагом 10 и создаёт директории с именем, соответствующим значению переменной i, т.е. 250, 260, …., 300.

Важно! Прежде чем запускать скрипт-файл, надо сделать его исполняемым с помощью команды Linux: chmod +x filename, см.выше. После этого можно запустить исполняемый файл командой ./filename.