= PyMol =

[[Main/PyMol#load&save|Загрузка и сохранение файлов]]

[[Main/PyMol#load&eds|Загрузка файла с электронной плотностью (ААл)]]

[[Main/PyMol#selections|Множества]]

[[Main/PyMol#representation|Отображения]]

[[Main/PyMol#colors|Цвета]]

[[Main/PyMol#distances|Расстояния]]

[[Main/PyMol#operators|Операторы]]

[[Main/PyMol#macros|Макросы]]

[[Main/PyMol#scripts&logs|Скрипты и логи]]

[[Main/PyMol#help|Помощь]]

[[Main/PyMol#wininstall|Установка PyMol под Windows]]

[[Main/PyMol#otherinstalls|Другие варианты установки (С.А.С.)]]

[[Main/PyMol#extras|Дополнительные материалы]]

<<Anchor(load&save)>>
=== Загрузка и сохранение ===
Синтаксис:
{{{
load "имя файла"
}}}
Примеры:
{{{
PyMOL> load H:/term7/data/fc.pdb
PyMOL> load $PYMOL_PATH/test/dat/pept.pdb
}}}
То же можно сделать через меню графического окна.

{{{#!wiki comment
Также можно загружать структуры непосредственно из pdb, для этого есть команда `fetch`, например:

fetch 1rty
}}}

Сохранять файлы можно через меню, а можно в командной строке, так команда
{{{
PyMOL> save H:/term7/data/wat.pdb, resn HOH
}}}
сохранит только атомы воды в файл `H:/term7/data/wat.pdb` .
 
Чтобы не писать каждый раз полный путь к файлу, можно сделать активной рабочую директорию, например:
{{{
PyMOL> cd H:/term7/data
}}}
после чего писать только краткое имя файла.

<<Anchor(load&eds)>>

=== Загрузка файла с электронной плотностью ===
Файл с электронной плотностью можно получить на сайте 
[[http://www.ebi.ac.uk/pdbe/|PDBe]]. 
Найдите по PDB ID свою структуру и на странице структуры (например, `https://www.ebi.ac.uk/pdbe/entry/pdb/1crn` для структуры 1CRN) откройте меню Downloads. Если в этом меню нет пункта "EDS map", выберите другую структуру. Если есть, сохраните в рабочую директорию файл с электронной плотностью (с расширением ccp4). Туда же сохраните сам PDB-файл.

В примерах PDB код 1x01.

Сделайте активной рабочую директорию, например:
{{{
PyMOL> cd H:/term7/EDS
}}}
Загрузите PDB-файл командой load: 
{{{
PyMOL>  load pdb1x01.ent, 1x01
}}}
Загрузите файл с электронной плотностью той же командой load:
{{{
PyMOL>  load 1x01.ccp4, 1x01_map
}}}
Указывать "имя объекта" (после запятой) необходимо для того, чтобы объекты получили разные имена.

==== Визуализация электронной плотности ====
Для визуализации электронной плотности вокруг заданного множества атомов используются команды `isomesh` или `isodot`. Например:
{{{
PyMOL> isomesh new_surface, 1x01_map, 1.5, resi 15-17 and chain a, 2.5
}}}
Здесь: 
{{{
 new_surface              # имя нового объекта с изображением поверхности 
 1x01_map                 # имя объекта с электронной плотностью 
 1.5                      # уровень - значение электронной плотности (в сигмах), по которому строится поверхность
 resi 15-17 and chain a   # множество атомов, электронную плотность вокруг которого надо изобразить
 2.5                      # (необязательный) аргумент "buffer".
}}}
Если не задать buffer, то будет изображена электронная плотность в наименьшем параллелепипеде (со сторонами, параллельными координатным осям), в который помещаются центры атомов данного множества. Если же задать ему значение, скажем, 2.5, то этот параллелепипед будет расширен на 2.5 ангстрема в каждую сторону.

Команда `isodot` имеет точно такой же синтаксис.

Изображения можно красить командой `color` (или из правого меню) и уничтожать командой `delete`.

<<Anchor(selections)>>
=== Множества ===
'''Стандартные множества'''
||название||краткая форма||значение||примеры||
||all||*||все атомы|| ||
||none|| ||пустое множество|| ||
||visible||v.||Все атомы, тем или иным способом показанные в данный момент в графическом окне|| ||
||hydro||h.||Все атомы водорода||
||hetatm||het||Все атомы, помеченные в PDB файле, как HETATM|| ||
||resi|| ||Остатки с данными номерами||resi 15-20||
||resn|| ||Остатки с данными именами||resn lys+arg||
||chain|| ||Цепи с данными идентификаторами||chain a+b||
||symbol|| ||Атомы данных химических элементов||symbol c+s||
||name|| ||Атомы с данными именами||name ca||
Примеры:
{{{
PyMOL> color blue, all = PyMOL> color blue, *
PyMOL> hide hydro = PyMOL> hide h.
PyMOL> show spheres, hetatom = PyMOL> show spheres, het
}}}
'''Обозначения множеств'''

Синтаксис:
{{{
select "имя множества", "выделенное множество"
}}}
Примеры:
{{{
PyMOL> select akeeper, resi 1-10    #Выбирает 1-10 остатки и называет их akeeper
PyMOL> zoom akeeper                 #Взгляд камеры фиксируется на множестве akeeper
PyMOL> hide everything, akeeper     #множество akeeper не отображается
PyMOL> show spheres, akeeper        #Множество отображается в виде шаровой модели
}}}
В графическом окне справа есть меню, где отображаются множества, в нем можно делать с ними различные манипуляции

Можно манипулировать заданными множествами сколько угодно (пока вы их не удалите). В названиях могут быть только цифры, большие и маленькие латинские буквы и нижнее подчеркивание _

Когда удаляется группа, то атомы и связи остаются, просто они перестают так называться, когда же удаляются объекты, то они удаляются совсем, так что для их визуализации их необходимо снова загружать

Синтаксис:
{{{
delete "имя множества"
delete "имя объекта"
}}}
Примеры:
{{{
PyMOL> delete akeeper              # Множества akeeper нет, но все атомы на своих местах
PyMOL> delete resi 10-15           # Удаляются все атомы и связи остатков с 10 по 15
}}}
Группы атомов появляются в боковой панели вместе с объектами.

Выбранные группы атомов показаны россыпью розовых точек.

Группы продолжают работать даже после изменения в молекулярной структуре.
{{{
PyMOL> select bb, name c+o+n+ca     # создается множество bb
PyMOL> count_atoms bb               # PyMOL насчитал 52 атома в bb
PyMOL> remove resi 5                # все атомы из 5 остатка удаляются
PyMOL> count_atoms bb               # Теперь PyMOL насчитал 48 атомов в множестве bb
}}}
<<Anchor(representation)>>
=== Отображения ===
Синтаксис::
{{{
hide "отображение"
show "отображение"
}}}
Примеры:
{{{
PyMOL>hide lines       # Объект из линий исчезает из окна
PyMOL>show sticks      # В окне появляется объект из палочек
}}}
другие виды отображения: ribbon, surface, mesh, cartoon, spheres, cell, dots

<<Anchor(colors)>>
=== Цвета ===
Синтаксис:
{{{
color "цвет"
color "цвет", "выделенное множество"
}}}
Примеры:
{{{
PyMOL> color red               # Все отображаемые атомы красятся в красный цвет.
PyMOL> color red, name ca      # Только С-альфа атомы красятся в красный цвет.
}}}
Если нужно покрасить больше чем одно множество, их следует разделять запятыми.

<<Anchor(distances)>>
=== Расстояния ===
Измерение расстояний между атомами двух множеств короче Х ангстрем
{{{
distance "имя группы растояний", "1 множество", "2 множество", "макс. длина в Ангстремах"
distance hbonds, all, all, 3.2   # Отмечаются расстояния между любыми двумя атомами, если они меньше 3,2 ангстрем
}}}

<<Anchor(operators)>>
=== Операторы ===
||Оператор   ||         короткая запись|| Что выбирается||
||not s1       ||       ! s1            ||Атомы, не включенные в s1||
||s1 and s2      ||     s1 & s2         ||Атомы, включенные и в s1, и в s2||
||s1 or s2         ||   s1 | s2         ||Атомы из s1 и из s2||
||s1 like s2         || s1 l. s2        ||Атомы из s1 совпадающие именем с атомами из s2||
||s1 gap X          ||  s1 gap X        ||Атомы на расстоянии больше Х ангстрем от множества s1||
||s1 around X         ||s1 a. X         ||Атомы на расстоянии меньше Х ангстрем от множества s1||
||s1 expand X         ||s1 e. X         ||Расширяет s1, включая все атомы на расстоянии меньше Х ангстрем от s1||
||s1 within X of s2  || s1 w. X of s2   ||Атомы из s1 на расстоянии не большем, чем Х ангстрем от s2||
||neighbor s1      ||   nbr. s1         ||Атомы, непосредственно связанные с s1||
Примеры:
{{{
PyMOL> select bb, chain a and (not resi 125)           # Определяет множество bb как все атомы из цепи A, кроме 125 остатка
PyMOL> select bb, chain a gap 5 and chain a around 10  # Определяет множество bb как все атомы на расстоянии от 5 до 10 ангстрем от цепи A
}}}

<<Anchor(macros)>>
=== Макросы ===
Макросы позволяют записать длинные записи коротко, так, например
{{{
PyMOL> color red, pept and segi lig and chain b and resi 142 and name ca
}}}
можно записать, как
{{{
PyMOL> color red, /pept/lig/b/142/ca
}}}
Макросы задаются следующим путем:
{{{
/object-name/segi-identifier/chain-identifier/resi-identifier/name-identifier
}}}
!PyMol воспринимает макрос как одно слово, так что никаких пробелов между слэшами не должно быть.

Макросы иерархичны, и их можно начинать с любого подмножества
{{{
   /object-name/segi-identifier/chain-identifier/resi-identifier/name-identifier
   /object-name/segi-identifier/chain-identifier/resi-identifier
   /object-name/segi-identifier/chain-identifier
   /object-name/segi-identifier
   /object-name
}}}
Примеры:
{{{
PyMOL> zoom /pept
PyMOL> show spheres, /pept/lig/
PyMOL> show cartoon, /pept/lig/a
PyMOL> color pink, /pept/lig/a/10
PyMOL> color yellow, /pept/lig/a/10/ca
}}}
Если макрос не начинается со слэша, то иерархия идет в обратном порядке:
{{{
                                             resi-identifier/name-identifier
                            chain-identifier/resi-identifier/name-identifier
            segi-identifier/chain-identifier/resi-identifier/name-identifier
object-name/segi-identifier/chain-identifier/resi-identifier/name-identifier
}}}
также можно оставлять незаполненными промежуточные идентификаторы.

Примеры:
{{{
PyMOL> zoom 142/                     # Зум на остаток 142
PyMOL> show spheres, 156/ca          # С-альфа атом в 156 остатке отображается как сфера
PyMOL> show cartoon, a//             # Цепь А изображается в стиле cartoon
PyMOL> color pink, pept//b           # Цепь В из объекта pept красится в розовый цвет
}}}

<<Anchor(scripts&logs)>>
=== Скрипты и логи ===
Скрипты в !PyMol --- всего лишь текстовые файлы с расширением .pml, чтобы запустить скрипт под windows, необходимо открыть в панели отдел file &rarr; run
или же в командной строке. Синтаксис:
{{{
@script-file-name
}}}
Пример:
{{{
PyMOL> @my_script.pml
}}}
Лог файл --- это файл, записывающий все действия, произведенные в командной строке
Чтобы начать ведение лога, необходимо написать команду `log_open <log-file-name>`, и все действия будут записаны в этот лог-файл.

<<Anchor(help)>>
=== Помощь ===
Чтобы получить описание команды, надо набрать help "имя команды"
Полный список команд можно получить, введя в командной строке help и нажать Enter

<<Anchor(wininstall)>>
=== Установка PyMol под Windows ===
Читать тут http://www.pymolwiki.org/index.php/Windows_Install .

Вероятно, всё это лучше делать под административным аккаунтом..

 1. Поставить Python 2.7.15 (качать тут https://www.python.org/downloads/windows/ ). Если установлена более старая, чем 2.7.9, версия (например, 2.7.3) то можно вместо установки новой версии поставить программу pip:
  a. Cкачать тут https://pip.pypa.io/en/latest/installing.html скрипт get-pip.py.
  a. Запустить C:\Python27\python.exe get-pip.py
 1. Поставить Microsoft Visual C++ Compiler for Python 2.7 (качать тут http://www.microsoft.com/en-us/download/details.aspx?id=44266 ).
 1. Перезагрузить компьютер.
 1. Скачать подходящую версию с https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymol (имеет значение, 32-битная у вас система или 64-битная, в первом случае надо выбирать wheel-файлы, кончающиеся на `win32.whl`, во втором &mdash; на `‑win_amd64.whl`).
 1. Запустить C:\Python27\Scripts\pip.exe install <имя скачанного wheel-файла> .
 1. Создать ярлык к C:\Python27\Scripts\pymol.cmd, поместить его на рабочий стол или в меню Пуск.
 1. Проверить, что !PyMol запускается и работает.

<<Anchor(otherinstalls)>>
=== Другие варианты (С.А.С.) ===
Можно поставить себе "образовательный" вариант !PyMol, см. https://pymol.org/edu/ .

Я поставил себе дома !PyMol так: установил пакет Anaconda Python 2.7 version (см. https://www.anaconda.com/download/ ), затем запустил командную строку Anaconda под администратором и выполнил там команду: 
{{{
conda install -c schrodinger pymol
}}}
При первом запуске !PyMol предлагает купить лицензию, но этот этап можно пропустить, тогда в графическом окне постоянно присутствует надпись "No license file", которая, впрочем, совершенно не мешает. Как ни удивительно, после команд `ray` и `png` появляется картинка безо всяких надписей, так что этот вариант вполне годится для наших целей.

{{{#!wiki comment
Ну и наконец, можно выполнять все задания в компьютерном классе, см. часы его работы на доске объявлений. 
}}}

=== Дополнительно ===

[[https://kodomo.fbb.msu.ru/FBB/year_12/term7/help2.html|Ещё одно краткое руководство по PyMol]]

<<Anchor(extras)>>
Полный гайд по !PyMol содержится по ссылке [[http://pymol.sourceforge.net/newman/user/toc.html|PyMol Users Manual]]

Огромное количество примеров, настроек и дополнительных функций --- на [[http://www.pymolwiki.org/index.php/Main_Page|PyMolWiki]].