Пример использования 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

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

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

Для контроля за временем надо импортировать модуль time

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 [ ]: