Пример использования Pymol локально (Linux)

Форматирование задаётся Markdown: http://daringfireball.net/projects/markdown/basics

Я пишу отчет об интеполяции и добавил формулу в Latex: $$c=\sqrt{a^2-b^2}$$

или :

  • $ U_{cov}=\sum_{bonds}{ \frac{k_i}{2} ( l_i - l_0)^2} + \sum_{angles}{ \frac{k_i}{2} ( \phi_i - \phi_0)^2} + \sum_{torsions} { \frac{V_n}{2} (1 + cos(n\omega - \gamma))} + $

  • $ U_{noncov}= \sum_{i=1}^N \sum_{j=i+1}^N \left ( 4 \epsilon_{ij} \left [ \left ( \frac{\sigma_{ij}}{r_{ij}} \right )^{12} - \left ( \frac{\sigma_{ij}}{r_{ij}} \right )^6 \right ] + \frac{q_i q_j}{ 4\pi \epsilon_0 r_{ij}} \right ) $

Для работы с Pymol я импортировал прокси и загрузку картинок:

In [27]:
from xmlrpclib import ServerProxy
from IPython.display import Image

Подключился к Pymol, который предварительно запущен как RPC сервер командой :

pymol -R
killall pymol 

и скачал с PDB структур белка 1LMP

In [40]:
cmd = ServerProxy(uri="http://localhost:9123/RPC2")
In [41]:
cmd.fetch('1lmp')
Out[41]:
'1lmp'

GGGG

Для контроля за временем надо импортировать модуль time $$ \sqrt{aa} $$

In [30]:
import time
cmd.hide("everything")

И пишу основной скрипт

In [5]:
for i in range (1,50):
     cmd.show_as("cartoon",str(i-1)+"+"+str(i)+"+"+str(i+1)+'/CA')
     time.sleep(.1)
     cmd.show_as("ribbon",str(i-1)+"+"+str(i)+"+"+str(i+1)+'/CA')
In [38]:
cmd.do('''
hide everything
show cartoon
''')
In [39]:
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode", '4')
cmd.bg_color('white')
#cmd.show_as("lines")
cmd.zoom('i. 100-103')
#cmd.ray(600,400)
cmd.png('/tmp/mypng.png')
time.sleep(2)
Image(filename='/tmp/mypng.png')
Out[39]:

Но я могу также нарисовать график чего-то там. Для этого импортируем модули и строим что-то, подробнее читаем на странице : http://matplotlib.org/gallery.html

In [11]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
In [12]:
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radiuses

plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

А теперь надо все это как-то сохранить, надо сохранять как notebook (см. меню), и можно html:

ipython nbconvert --to html intro.ipynb

в результате имеем intro.html, забавно, что картинки уже встрены в html :)

In [11]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
In [37]:
a = np.loadtxt("bond")
x_o=a[:,0]
y_o=a[:,1]
print "initial data:", y_o

fitfunc = lambda p, x: p[0]*pow(p[1]-x,2) + p[2] # Target function
errfunc = lambda p, x, y: fitfunc(p, x) - y # Error function

p0 = [1,1, -79] # Initial guess for the parameters
p1, success = optimize.leastsq(errfunc, p0[:], args=(x_o, y_o))
print "Optimized params:", p1

#Plot it
plt.plot(x_o, y_o, "ro", x_o,fitfunc(p1,x_o),"r-",c='blue',alpha=0.75)
plt.xlim(1.3,1.8)
plt.show()
initial data: [-79.73393153 -79.74061737 -79.74628686 -79.75103318 -79.75494129
 -79.75808863 -79.76054578 -79.76237713 -79.76364138 -79.76439208
 -79.76467808 -79.76454395 -79.7640304  -79.76317457 -79.76201041
 -79.76056892 -79.75887846 -79.75696494 -79.75485209 -79.75256157
 -79.75011326]
Optimized params: [  0.56360732   1.55431773 -79.76518585]
In [ ]: