Automatisation de PyMOL

publicité
Automatisation de PyMOL
Jérôme Pansanel
Toulouse, 18 et 19 janvier 2016
1
Sommaire
18 et 19 janvier 2015
●
Le langage de script de PyMOL
●
Le script pymolrc
●
Le mode batch
●
Python dans PyMOL
●
PyMOL dans Python
●
Les plugins
Automatisation de PyMOL / J. Pansanel
2
Le langage PyMOL
L'ensemble des actions PyMOL peut être réaliser à l'aide de la ligne de
commande en utilisant le langage PyMOL en utilisant l'invite de commande.
Invite de commande
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
3
Documentation
Quelques ressources documentaires :
●
http://www.pymolwiki.org/index.php/Main_Page
●
http://www.pymolwiki.org/index.php/CheatSheet
●
http://pymol.sourceforge.net/newman/user/S0210start_cmds.html
●
Log…
●
help
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
4
Le fichier pymolrc
Le lancement de PyMOL peut être modifié avec le fichier pymolrc.
L'emplacement de ce fichier est :
● ${HOME}/.pymolrc sous Linux et Mac OS X
● notepad %HOMEDRIVE%%HOMEPATH%\pymolrc.pml sous MS Windows
en utilisant le menu Démarrer → Exécuter…
Ce fichier contient des éléments du langage de script PyMOL.
Il est possible également d'utiliser le langage Python pour automatiser certaines
tâches à l'ouverture de la session. Dans ce cas, le code est stocké dans le
fichier pymolrc.py.
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
5
Le fichier pymolrc : exemple
# Suppression de la brume
set depth_cue, 0
# Un meilleur rendu pour le ray tracing
set antialias, 2
# Un fond blanc
bg_color white
# Fond transparent lors du ray-tracing
set ray_opaque_background, 0
# Rendu realiste des loops
set cartoon_smooth_loops, 0
# Rendu realiste des feuillets
set cartoon_flat_sheets, 0
# Limitation de la couleur des structures secondaires
set cartoon_discrete_colors, 1
Note : pas de caractère accentué dans ce fichier
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
6
Les scripts
fetch 3DV3, async=0
hide everything
select mg, resn MG
select atp, resn ATP
select mek, resn MEK
select protein, chain a & !(mg | atp | mek)
show spheres, (atp or mek or mg)
set sphere_scale, 0.1, atp
show lines, atp
set sphere_scale, 0.3, mek
show sticks, mek
set sphere_transparency, 0.2, mg
show cartoon, protein
color red, ss h & protein
color lime, ss s & protein
color grey70, ss '' & protein
color red, elem o & (atp | mek)
color blue, elem n & (atp | mek)
color white, elem c & (atp | mek)
color orange, elem p & (atp | mek)
color aquamarine, mg
deselect ; orient ; ray
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
7
Les scripts
Pour lancer les scripts :
PyMOL> @script.pml
Ou via l'interface graphique :
File → Run…
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
8
Les scripts au démarrage
Il est très simple de lancer un script au démarrage de PyMOL :
localhost:~ user$ pymol script.pml
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
9
Mode batch
Pour ne pas lancer l'interface graphique (mode batch) :
localhost:~ user$ pymol -qc script2.pml
Pour lancer PyMOL avec une (ou plusieurs commandes) :
localhost:~ user$ pymol -d 'fetch 3dv3'
Autres commandes :
-c
-q
-e
-X -Y -W -H -V
-r <file.py>
...
ligne de commande uniquement
pas d'écran de démarrage
démarrage en mode plein écran
ajuster la géométrie de l'écran
exécuter le fichier Python file.py
Plus de détails sur :
http://pymolwiki.org/index.php/Command_Line_Options
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
10
Python dans PyMOL
●
Possibilité d'exécuter directement du code Python dans l'invite de commande
●
Possibilité d'exécuter langage PyMOL et Python simultanément
Un exemple simple et pratique :
PyMOL> liste=[]
PyMOL> iterate 3DV3,liste.append((resi,resn))
PyMOL> print liste
Pour aller plus loin en Python :
PyMOL> python
PyMOL> print sys.version
PyMOL> python end
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
11
Fonction Python dans PyMOL
Possibilité d'ajouter une fonction en exécutant du code Python :
python
def fasta(selection):
print('> ' + str(selection))
stored.aaList = []
cmd.iterate("%s" % selection, "stored.aaList.append(resn)")
print(''.join(stored.aaList))
cmd.extend('fasta',fasta)
python end
Résultat :
PyMOL> fasta('3DV3')
> 3DV3
MGMETMETMETMETMETMETMETMETGLUGLUGLUGLUGLUGLUGLUGLUGLULEULEUL
EULEULEULEULEULEULYSLYSLYSLYSLYSLYSLYSLYSLYSASPAS…
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
12
Fonction PyMOL dans Python
Possibilité également d'utiliser PyMOL dans du code Python ...
# -*- coding: utf-8 -*# Un simple script pour charger une molécule et enregistrer une
# image.
import __main__
__main__.pymol_argv = ['pymol','-qc'] # Pymol: quiet and no GUI
import pymol
pymol.finish_launching()
pymol.cmd.fetch('3DV3', async=0)
Pymol.cmd.do('as cartoon')
pymol.cmd.ray()
pymol.cmd.png('3dv3')
pymol.cmd.quit()
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
13
Fonction PyMOL dans Python
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
14
Gestion des plugins
Extension par des plugins :
Plugin → Plugin Manager
def __init__(self):
self.menuBar.addmenuitem('Plugin', 'command',
'PDB Loader Service',
label = 'PDB Loader Service',
command = lambda s=self : fetchPDBDialog(s))
def remote(pdbCode):
pdbCode = pdbCode.upper()
try:
pdbFile = urllib2.urlopen('http://www.rcsb.org/pdb/cgi/export.cgi/' +
pdbCode + '.pdb.gz?format=PDB&pdbId=' +
pdbCode + '&compression=gz')
cmd.read_pdbstr(zlib.decompress(pdbFile.read()[22:], -zlib.MAX_WBITS),
pdbCode)
except:
print "Unexpected error:", sys.exc_info()[0]
...
18 et 19 janvier 2015
Automatisation de PyMOL / J. Pansanel
15
Téléchargement