Plugindirectory

From PyMOLWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This page describes how to set up a personal plugin directory. It supports single python files as well as directories which contain a __init__.py file.

1) Create a directory $HOME/.pymol/pymolplugins, this will be your personal plugin directory. Copy plugins here instead of using the "Plugin > Manage Plugins > Install..." menu.

2) Create a file $HOME/.pymol/pymolplugins/__init__.py with the folling content:

'''
PyMOL personal plugin directory
Recommended location of this file: ~/.pymol/pymolplugins/__init__.py
'''

import os, sys, traceback

# import pymolplugins (allow different name)
pymolplugins = sys.modules[__name__]

import pmg_tk.PMGApp
x__initializePlugins = pmg_tk.PMGApp.initializePlugins

def initializePlugins(self):
    '''
    Overloaded version of pmg_tk.PMGApp.initializePlugins
    See pmg_tk/PMGApp.py
    '''
    # load global plugins
    x__initializePlugins(self)

    # load user plugins
    modules = set()
    for path in pymolplugins.__path__:
        for filename in os.listdir(path):
            name, _, ext = filename.partition('.')
            if ext not in ['py', 'pyc', 'pyo']:
                if os.path.isdir(os.path.join(path, filename)):
                    modules.add(filename)
            elif name != '__init__':
                modules.add(name)
    for name in modules:
        mod_name = pymolplugins.__name__ + '.' + name
        try:
            __import__(mod_name, level=0)
            mod = sys.modules[mod_name]
            if hasattr(mod,'__init_plugin__'):
                mod.__init_plugin__(self)
            elif hasattr(mod,'__init__'):
                mod.__init__(self)
        except:
            print "Exception in plugin '%s' -- Traceback follows..."%name
            traceback.print_exc()
            print "Error: unable to initialize plugin '%s'."%name

# overload method
pmg_tk.PMGApp.initializePlugins = initializePlugins

3) We need to import pymolplugins before the GUI launches, so insert into your $HOME/.pymolrc file:

python
import sys, os
sys.path.append(os.path.expanduser('~/.pymol'))
import pymolplugins
python end

= This script is used in

To use in the Pymol-script-repo

Python Code

This code has been put under version control. In the project, Pymol-script-repo.

For a color coded view:

https://github.com/Pymol-Scripts/Pymol-script-repo/blob/master/colorbydisplacement.py

See the raw code or download manually, by right clicking the following link here -> Save as: colorbydisplacement.py

https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/colorbydisplacement.py