Pymol-script-repo

From PyMOLWiki
Revision as of 21:41, 6 December 2011 by Tlinnet (talk | contribs) (External modules - numeric)
Jump to: navigation, search

Introduction

In November 2011, a group of PyMOL users initiated together with Jason Vertrees, a project to let PyMOL scripts be under version control system (VCS) called Git.

We hope that script authors and PyMOL users would be interested in this option.

Benefits

The benefits from this project, is

  1. A convenient way, to let PyMOL users download all scripts at the PyMOL wiki, with a minimum of effort.
  2. The possibility to let script authors push changes to their script out to PyMOL users.
  3. Easier requiring assistance from the PyMOL mailing list.
  4. Script will be tested for malicious code before added to the official repository.

Read here to install: http://www.pymolwiki.org/index.php/git_install

Official repository

The official repository is located at:

https://github.com/Pymol-Scripts/Pymol-script-repo

And the Git Read-Only access is:

git://github.com/Pymol-Scripts/Pymol-script-repo.git

Same namespace

As a part of this project, we recommend that the name for script filename and pagename at the PyMOL wiki are the same. All letters should also be small for both.
This will ease the use of the script

Example: colorbydisplacement

Example of namespace

For a description of use

http://www.pymolwiki.org/index.php/colorbydisplacement

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

In the users local script library

/home/tlinnet/Software/pymol/Pymol-script-repo/colorbydisplacement.py

To import in PyMOL

import colorbydisplacement

To print the available functions in PyMOL

help(colorbydisplacement)

This means, that if a PyMOL user look in their local repo directory, and wonder what colorbydisplacement.py does. Then user can write: http://www.pymolwiki.org/index.php/colorbydisplacement

Here a description of the of script is presented, with example of use and images. When the user then wants to use the script, one can simply write: import colorbydisplacement

To find out the defined functions, one can then either look at the wiki page, OR write in PyMOL. help(colorbydisplacement) which automatically returns the functions.

Read more here

  1. Simple install instructions for all PyMOL users.
    http://www.pymolwiki.org/index.php/git_install
  2. Information how to contribute scripts to the repository. It's easy!
    http://www.pymolwiki.org/index.php/git_authors
  3. Guidelines how to make a good PyMOL wiki script page.
    http://www.pymolwiki.org/index.php/git_script_guidelines
  4. Information how Repository admins handle the contributions
    http://www.pymolwiki.org/index.php/git_admin

Know problems

The slash "\" and "/" problem

Windows uses backslash \, and Linux uses forwardslash / in folder and path definitions.
This give sometimes problems, when joining paths in script and plugins, if the author has not foreseen this.
We hope windows users can help report this suggest a solution, so scripts can be used on both systems.

It could get solved, by implementing something like this

import sys,os,platform
print sys.path
for path in sys.path:
    if platform.system() == 'Windows':
        path_desc = "\\"
    if platform.system() == 'Linux':
        path_desc = "/"
    else:
        pass
sys.path.append(os.getcwd()+path_desc+"Pymol-script-repo")
print sys.path

def add_to_path():
    for path in sys.path:
        if 'Pymol-script-repo' in path:
            if platform.system() == 'Windows':
                modules_path = path + "\\modules"
                path_desc = "\\"
            if platform.system() == 'Linux':
                modules_path = path + "/modules"
                path_desc = "/"
            break
        else:
            pass
    return(modules_path,path_desc)

print "\n", add_to_path()

External modules - numeric

Numeric is sometimes used in scripts. This module is easy to install in Linux, but not so easy to make part of a PyMOL installation.

One could put in some "try" statements, to solve the problem.

import os,sys
os.chdir("/home/tlinnet/Software/pymol/Pymol-script-repo")
sys.path.append(os.getcwd())
try:
    import mechanize
except ImportError:
    print("Could not import mechanize, trying again")
    try:
        import modules.mechanize
        print("I succeded importing mechanize")
    except:
        print("I am sorry, no mechanize for you today")
#help(modules.mechanize)