User:Speleo3
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.
My name is Thomas Holder and I work for PyMOL at Schrödinger.
I was awarded the Warren L. DeLano Memorial PyMOL Open-Source Fellowship for 2011-2012.
Contact
- speleo3/users.sourceforge.net
- thomas.holder/schrodinger.com
Scripts written by me
- AAindex
- AngleBetweenHelices
- Extra fit
- PluginDirectory
- Pml2py
- Polarpairs
- Save settings
- Show bumps
- Sidechaincenters
- Spectrumany
- Spectrum states
- Supercell
Scripts Pastebin
Some random scripts with no dedicated PyMOLWiki page.
Launch interactive python terminal with PyMOL process: (see also Launching From a Script)
#!/usr/bin/python2.6 -i
import sys, os
# autocompletion
import readline
import rlcompleter
readline.parse_and_bind('tab: complete')
# pymol environment
moddir='/opt/pymol-svn/modules'
sys.path.insert(0, moddir)
os.putenv('PYMOL_PATH', os.path.join(moddir, 'pymol/pymol_path'))
# pymol launching
import pymol
pymol.pymol_argv = ['pymol','-qc'] + sys.argv[1:]
pymol.finish_launching()
cmd = pymol.cmd
Build PyMOL: (see also Linux Install)
#!/bin/bash -e
src=/tmp
prefix=/opt/pymol-git
pyinstall() {
cd $src
name=$(basename $2)
if [[ -e $name ]]; then
cd $name && $1 pull
else
$1 clone $2 && cd $name
fi
python setup.py build install \
--home=$prefix \
--install-lib=$prefix/modules \
--install-scripts=$prefix
}
pyinstall git git@github.com:speleo3/pymol
pyinstall git git@github.com:speleo3/pymol-psico
pyinstall hg https://hg.codeplex.com/csb
Build FREEMOL (see also MovieSchool 6)
#!/bin/bash -e
src=/tmp
prefix=/opt/pymol-git
export FREEMOL=$prefix/freemol
freemoltrunk=$src/freemol-trunk
if [[ ! -e $freemoltrunk ]]; then
svn co svn://bioinformatics.org/svnroot/freemol/trunk $freemoltrunk
fi
cd $freemoltrunk
sed -i 's/vdwtype\[11\]/vdwtype[14]/' src/mengine/src/field.h
for name in mpeg_encode mengine apbs pdb2pqr; do
(cd src/$name && ./configure && make && make install)
done
cp -na freemol/libpy/freemol $prefix/modules/
ln -sfT $FREEMOL $prefix/modules/pymol/pymol_path/freemol
Download all PyMOL scripts from Robert L. Campbell's website:
wget -r -np -nd --level=1 -A .py \
http://pldserver1.biochem.queensu.ca/~rlc/work/pymol/
Render movie from PNG files (save as png2mpeg1.sh
):
#!/bin/bash
set -e
usage="usage: $(basename $0) [-w width] [-f fps] [-b vbitrate] <indir> <outfile.mpeg>"
width=""
fps=25
vbitrate=16000
args="$(getopt w:f:b:h "$@")" || args="-h"
set -- $args
while [[ $# > 0 ]]; do
case "$1" in
--) shift; break ;;
-w) width=$2; shift 2 ;;
-f) fps=$2; shift 2 ;;
-b) vbitrate=$2; shift 2 ;;
-h) echo $usage; exit 1 ;;
*) echo "argument error: $1"; exit 1 ;;
esac
done
if [[ $# > 2 ]]; then
echo "too many arguments: $3 ..."
echo $usage
exit 1
fi
indir="$1"
outfile="$2"
if [[ -z "$indir" ]]; then
echo "error: indir missing"
echo $usage
exit 2
fi
if [[ -z "$outfile" ]]; then
echo "error: outfile missing"
echo $usage
exit 3
fi
MENCODER="mencoder -quiet"
MPEG1ARGS="-mf type=png:fps=$fps -ovc lavc -forceidx -noskip \
-of rawvideo -mpegopts format=mpeg1 \
-lavcopts vcodec=mpeg1video:vbitrate=$vbitrate:vhq:trell:keyint=25"
if [[ -n "$width" ]]; then
MPEG1ARGS="-zoom -xy $width -sws 9 $MPEG1ARGS"
fi
pattern="mf://$indir/*.png"
$MENCODER "$pattern" $MPEG1ARGS:vpass=1 -o /dev/null
$MENCODER "$pattern" $MPEG1ARGS:vpass=2 -o "$outfile"
load_mtz_cctbx: Load MTZ files with a CCTBX wrapper (3 files)
1) ~/bin/mtz2ccp4.sh
#!/bin/bash
export PATH=/opt/ccp4/ccp4-6.5/bin:$PATH
exec cctbx.python ~/bin/mtz2ccp4.py "$@"
2) ~/bin/mtz2ccp4.py
#!/opt/ccp4/ccp4-6.5/bin/cctbx.python
import os
import sys
import tempfile
def mtz2ccp4maps(filename, prefix='map'):
'''
Creates a temporary directory and dumps all maps from the given MTZ file
into this directory as CCP4 maps files. Returns the path of the temporary
directory.
'''
from iotbx.reflection_file_reader import any_reflection_file
hkl_in = any_reflection_file(file_name=filename)
temp_dir = tempfile.mkdtemp()
for i_map, array in enumerate(hkl_in.as_miller_arrays()):
if array.is_complex_array():
fft_map = array.fft_map(resolution_factor=0.25).apply_sigma_scaling()
map_filename = os.path.join(temp_dir,
prefix + '_' + '_'.join(array.info().labels) + '.ccp4')
fft_map.as_ccp4_map(file_name=map_filename)
return temp_dir
# print the name of the temporary directory to standard output
print mtz2ccp4maps(*sys.argv[1:])
3) ~/.pymolrc.py
@cmd.extend
def load_mtz_cctbx(filename, prefix=''):
'''
DESCRIPTION
Load all maps from an MTZ file, using the mtz2ccp4.sh wrapper which
uses iotbx (cctbx).
'''
import subprocess
import glob
import shutil
if not prefix:
prefix = os.path.basename(filename).rpartition('.')[0]
outdir = subprocess.Popen([os.path.expanduser('~/bin/mtz2ccp4.sh'),
filename, prefix], stdout=subprocess.PIPE).stdout.readlines()[0].strip()
for mapfilename in glob.glob(os.path.join(outdir, '*.ccp4')):
cmd.load(mapfilename)
shutil.rmtree(outdir)