Учебная страница курса биоинформатики,
год поступления 2014
Вычисление параметров для молекулярной механики
Отчёт по заданию должен появиться на сайте к следующему занятию. Отчёт должен иметь ссылки на файлы с результатами счёта.
Необходимые сведения о работе с ORCA см. здесь. или https://sites.google.com/site/orcainputlibrary/home
Суть задания состоит в определении констант ковалентных взаимодействий для молекулярной механики на основе квантово-химических расчётов. Пример подобной работы представлен в статье о разработке поля gaff.
- Вам предоставлена оптимизированная структура этана в виде z-matrix :
Как вы видите, вместо значений длин и углов связей можно вставить значение. Наша цель состоит в том, что бы рассчитать 20 разных длинн связи с шагом 0.02 ангстрема для расчёта энергии в ORCA с разными значениями по длине одной из связей (C-C).
Конечно можно сделать эти файлы вручную, но ожидается, что вы сделаете это средствами python .
- Предлагаю следующую функцию по запуску ORCA
1 def run_orca(inp):
2 with open('orca.inp', 'w') as outfile:
3 outfile.write(inp)
4 p = subprocess.Popen("/srv/databases/orca/orca orca.inp",
5 shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
6 out=p.communicate()[0]
7 out.splitlines()
8
9 # extract energy: FINAL SINGLE POINT ENERGY'
10 # and return it as float
11
12 return ....
У вас есть зависимость энергии молекулы от длины одной связи. Эту зависимость можно построить в Excel. Вам предлагается сделать это в matplotlib в Jupyter Notebook.
Для matplotlib:
1 # fake x array , replace with real one
2 x_o=np.arange(1,2,0.1)
3 # fake y array, replace with energies
4 y_o=-70+2*(x_o -1.58)**2
5
6 #function is f(x)=k(b-x)^2 + a
7 fitfunc = lambda p, x: p[0]*pow(p[1]-x,2) + p[2] # Target function
8 errfunc = lambda p, x, y: fitfunc(p, x) - y # Error function
9
10 p0 = [1,1, -79] # Initial guess for the parameters
11 p1, success = optimize.leastsq(errfunc, p0[:], args=(x_o, y_o))
12 print "Optimized params:", p1
13
14 #Plot it
15 plt.plot(x_o, y_o, "ro", x_o,fitfunc(p1,x_o),"r-",c='blue',alpha=0.5)
16 plt.xlim(1,2)
17 plt.show()
- Проделайте аналогичные операции для валентного угла HCС, его значения должны изменяться от 109.2 до 113.2. Сохраните полученные коэффициенты в отчёт. Примечание: не перезаписывайте файл со значениями энергий они Вам нужны для отчёта. Сравните полученные константы с данными из статьи о GAFF. Укажите возможные причины расхождений ваших результатов и публикацией.
- Проделайте аналогичные операции для торсионного угла CC, его значения должны изменяться от -180 до 180 c шагом 12. Сохраните изображение и укажите в отчёте количество минимумов функции.
- * Увеличьте шаг до 0.1 ангстрема при расчёте связи. Постройте зависимость. Укажите какой функцией можно было бы аппроксимировать наблюдаемую зависимость.