запускаем 'ipython notebook' и 'pymol -R' из рабочей директории.
Форматирование задаётся Markdown: http://daringfireball.net/projects/markdown/basics
сведения о Морас можно получить здесь: http://openmopac.net/manual/index.html
Работа проводится с помощью putty и обработки pymol. Команды для bash выделены табуляцией.
сперва установим переменные:
export PATH=${PATH}:/home/preps/golovin/progs/bin
export MOPAC_LICENSE=/home/preps/golovin/progs/bin
#Для работы с Pymol: прокси и загрузка картинок:
from xmlrpclib import ServerProxy
from IPython.display import Image
import time
cmd = ServerProxy(uri="http://localhost:9123/RPC2")
фишка в том, что я запускаю ipython c Windows, в виду того, что порты на кодомо закрыты, это не предосудительно. У меня нет Bash, потому я просто копирую строки из скрипта ниже в putty, и они выполняются по мере готовности. Тем не менее, тэг "%%bash" я поставлю, вдруг из класса будет запускаться.
сделаем файл из заголовка с прошлого практикума, где заменим COORD=CART на COORD=ZMT, после чего пропишем полностью нормальную z-матрицу этана.
%%bash
BASE="\$CONTRL COORD=ZMT UNITS=ANGS dfttyp=b3lyp RUNTYP=ENERGY \$END\n\
\$BASIS GBASIS=N31 NGAUSS=6\n\
POLAR=POPN31 NDFUNC=1 \$END\n\
\$GUESS GUESS=HUCKEL \$END\n\
\$system mwords=2 \$end\n\
\$DATA\n\
eth\n\
C1\n\
C \n\
C 1 cc \n\
H 2 ch 1 cchv \n\
H 2 ch 1 cch 3 d1 0\n\
H 2 ch 1 cch 3 d2 0\n\
H 1 ch 2 cch 3 d3 0\n\
H 1 ch 2 cch 5 d3 0\n\
H 1 chv 2 cch 4 d3 0\n\
\n\
cc=1.52986\n\
ch=1.08439\n\
chv=1.08439\n\
cch=111.200\n\
cchv=111.200\n\
d1=120\n\
d2=-120\n\
d3=180\n\
\$END"
#запишем это в файл
echo -en " " > et.inp
echo -e $BASE >> et.inp
#и проверим, работает ли наша химера
gms et.inp 1 >& et.log
#у меня работает, файл по сравнению с прошлыми log-файлами, запущенными с другими параметрами получился короче, считается быстрее,
#наверное, дело в меньшем числе атомов, все-таки это этан.
#ниже вы видите, что bash у меня нет, см. комментарий вверху страницы курсивом.
далее сделаем скрипт на bash , чтобы создать 21 файл с варьируемой длиной связи СС по образцу на https://kodomo.fbb.msu.ru/wiki/2011/8/task5 , изменив длины связей на подходящие для этана в соответствии с реальной z-матрицей (выше).
В коде скрипта строки до закомменченного запуска GAMESS отвечают за создание 21 файла с разной длиной связи сс, активированная строка с GAMESS в цикле запускает создание файлов .log с вычислениями, а строки под строкой GAMESS используют эти файлы для того, чтобы вывесли длину связи СС и через несколько пробелов общую энергию. Эту выдачу мы записываем в файл командой
bash ./make_b.bash > bond.txt
Проблема с windows возникает, если писать скрипт и сохранять файл не через системы linux, тогда переносы строк содержат еще символ , который не видно, и надо скрипт после сохранения прогнать например через
sed -e 's/\r$//' inputfile > outputfile
альтернативно люди предлагают использовать dos2unix.
Теперь используем Xming->XLaunch -> Multiple windows -> Start Program -> Putty -> kodomo, username -> Переходим в рабочую директорию, Запускаем Gnuplot:
gnuplot
Строим зависимость энергии от длины связи:
plot "bond.txt"
Появились точки, похожие на параболу. Теперь нам надо найти коэффициенты в функции f(x)=a+k(x-b)^2 которые бы позволили наиболее близко описать наблюдаемую зависимость. Для этого воспользуемся возможностями Gnuplot. Сначала зададим функцию в развернутом виде, в строке gnuplot введём:
f(x)=a + k*x*x - 2*k*x*b + k*b*b
И зададим стартовые значения коэффициентов:
a=-80
k=1
b=1.5
Настроим gnuplot для сохранения изображения в файл (название файла и параметры задаются, файл сохраняется в рабочую директорию).
set terminal png size 1000,700 enhanced font "Helvetica,16"
set output 'output.png'
Проведём подгонку коэффициентов под имеющиеся точки в файле bond:
fit f(x) "bond.txt" via a,k,b
В результате получаем параметры
a = -79.7652 k = 0.5636 b = 1.5543
Для совместного изображения линии и графика используем
plot "bond.txt", f(x)
from IPython.display import display_html
Image(url='http://kodomo.cmm.msu.su/~aleshin_vasily/projects/Term8/images/output_cc.png')
Рис. 1. Зависимость общей энергии этана от длины связи СС (значения отмечены точками). Зеленым показана аппроксимирующая квадратичная функция (коэффициенты приведены выше).
Чтобы проделать то же с углом НСН заменим в скрипте переменную сс на chv (см. исходную матрицу выше). Исходно все углы HCH принимают значение 111.2, мы же проварьируем их от 109.2 до 113.2. Возьмем шаг 0.2 градуса.
Переделаем и используем новый скрипт для создания 21 файла с разными углами и их обсчета в GAMESS.
bash ./make_ch.bash
Далее лишь закомментируем строку с использование GAMESS в этом скрипте и откроем две строки под ней для того, чтобы выписать значения энергии из файлов.
bash ./make_ch.bash > angle.txt
Новый файл со значениями одного угла НСН и энергией этана визуализируем:
Снова воспользуемся Xming->XLaunch для запуска Gnuplot.
gnuplot
График снова похож на параболу, потому снова можно аппроксимировать той же функцией, но начальные параметры слегка изменим:
f(x)=a + k*x*x - 2*k*x*b + k*b*b
a=-80
k=1
b=111.2
fit f(x) "bond.txt" via a,k,b
В результате получаем параметры
a = -79.7647 k = 3.56076e-05 b = 111.38
set terminal png size 1000,700 enhanced font "Helvetica,16"
set output 'output2.png'
plot "angle.txt", f(x)
from IPython.display import display_html
Image(url='http://kodomo.cmm.msu.su/~aleshin_vasily/projects/Term8/images/output2.png')
Можно заметить странную вещь - минимум энергии при расчете пришелся на значение угла 111.38, а не 111.2, как это приведено в изначальной молекуле. Возможно, дело в том, что мы использовали лишь один из углов, но скорее дело в разных использованных полях при расчете энергии GAMESS.
Напоследок варьируем один из торсионных углов - d3 от -180 до 180 с шагом 12 используя скрипт, где сперва используем строку с запуском GAMESS:
bash ./make-tor.bash
затем закомменченные строки вместо GAMESS:
bash ./make-tor.bash > angle_tor.txt
И получаем файл с углами и энергиями.
Используем Х-сервер и gnuplot:
set terminal png size 1000,700 enhanced font "Helvetica,16"
set output 'output-tor.png'
plot "angle-tor.txt"
from IPython.display import display_html
Image(url='http://kodomo.cmm.msu.su/~aleshin_vasily/projects/Term8/images/output_tr.png')
в финале конвертируем файл ipython в html:
ipython nbconvert --to html pract4.ipynb