воскресенье, 18 июля 2010 г.

PyMOL и Python


Чем хороша программа PyMOL - она хорошо дружит с python. Можно написать что-то на питоне и вызывать из PyMOL, а можно наоборот. Сегодня я кратко расскажу про второй вариант.

Допустим, захотелось для какого-то фрагмента белка посчитать доступную площадь. Например, для остатков с 35 по 49 цепи A. Это в PyMOL легко:

select sel1, chain A and resi 35-49
get_area sel1


А теперь надо то же самое сделать для нескольких тысяч структур. Это бывает необходимо, например, для фильтрации результатов белок-белкового докинга.

Пишем простенькую программку, которая вызывает PyMOL, принимает в качестве аргумента файл со списком файлов для обработки, и выводит посчитанную площадь вместе с именем файла. Эта программка должна запускаться из командной строки, как и любой питоновский скрипт.

import sys
import pymol
from pymol import cmd

flist_file = open(sys.argv[1])

fname = flist_file.readline().strip()

pymol.finish_launching()

while fname:
    area = 0
    cmd.load(fname)
    cmd.select("sel1","chain A and resi 35-49")
    area = cmd.get_area("sel1")
    print fname, area
    cmd.reinitialize()
    fname = flist_file.readline().strip()

pymol.cmd.quit()

Тут надо обратить внимание на совершенно необходимую функцию pymol.finish_launching(). PyMOL начинает запускаться, когда выполнение скрипта доходит до import pymol, но надо подождать, когда он закончит запускаться. Что, собственно, эта функция и делает. А дальше все понятно: то что в PyMOL было команда параметр1, параметр2 в питоновском скрипте превращается в cmd.команда("параметр1","параметр2")

Это просто, попробуйте сами.

2 комментария:

  1. а видели такой викикурс? неплохо вроде бы
    http://ru.wikiversity.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%BD%D0%B0%D1%83%D1%87%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5_Python

    ОтветитьУдалить
  2. Совсем для начала - неплохо, но лучше потом почитать дополнительные материалы по Python, например вот это: http://www.siafoo.net/article/52 (русский перевод есть на хабре, тут первая часть: http://habrahabr.ru/blogs/python/85238/ , остальное можно легко найти).
    Пусть даже поначалу не все будет понятно, но будут общие представления о возможностях языка.

    ОтветитьУдалить