This is a read-only mirror of pymolwiki.org
Difference between revisions of "User:Speleo3"
Jump to navigation
Jump to search
m (21 revisions) |
(load_mtz_cctbx) |
||
Line 3: | Line 3: | ||
I was awarded the [http://pymol.org/fellowship Warren L. DeLano Memorial PyMOL Open-Source Fellowship] for 2011-2012. | I was awarded the [http://pymol.org/fellowship Warren L. DeLano Memorial PyMOL Open-Source Fellowship] for 2011-2012. | ||
− | + | == Contact == | |
* speleo3/users.sourceforge.net | * speleo3/users.sourceforge.net | ||
* thomas.holder/schrodinger.com | * thomas.holder/schrodinger.com | ||
− | |||
− | + | == Scripts written by me == | |
* [[AAindex]] | * [[AAindex]] | ||
Line 24: | Line 23: | ||
* [[Supercell]] | * [[Supercell]] | ||
− | + | == Scripts Pastebin == | |
Some random scripts with no dedicated PyMOLWiki page. | Some random scripts with no dedicated PyMOLWiki page. | ||
Line 176: | Line 175: | ||
$MENCODER "$pattern" $MPEG1ARGS:vpass=1 -o /dev/null | $MENCODER "$pattern" $MPEG1ARGS:vpass=1 -o /dev/null | ||
$MENCODER "$pattern" $MPEG1ARGS:vpass=2 -o "$outfile" | $MENCODER "$pattern" $MPEG1ARGS:vpass=2 -o "$outfile" | ||
+ | </source> | ||
+ | |||
+ | === load_mtz_cctbx: Load MTZ files with a [[CCTBX]] wrapper (3 files) === | ||
+ | |||
+ | 1) ~/bin/mtz2ccp4.sh | ||
+ | |||
+ | <source lang="bash"> | ||
+ | #!/bin/bash | ||
+ | export PATH=/opt/ccp4/ccp4-6.5/bin:$PATH | ||
+ | exec cctbx.python ~/bin/mtz2ccp4.py "$@" | ||
+ | </source> | ||
+ | |||
+ | 2) ~/bin/mtz2ccp4.py | ||
+ | |||
+ | <source lang="python"> | ||
+ | #!/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:]) | ||
+ | </source> | ||
+ | |||
+ | 3) ~/.pymolrc.py | ||
+ | |||
+ | <source lang="python"> | ||
+ | @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) | ||
</source> | </source> |
Revision as of 15:35, 13 July 2015
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)