Load all files of the suffix suff from the directory dirName, where suff and dirName are function parameters.
- copy the source below to the a file called "loadDir.pml" somewhere on your computer
- load the file with "run /your/path/toLoadDir/loadDir.pml"
- run loadDir. See examples below.
# load the script run ~/loadDir.pml # load all SD files from /tmp loadDir /tmp, sdf loadDir /tmp, .sdf loadDir /tmp, *.sdf # even stupid stuff works; hopefully as one would want. # load all PDBs from /tmp loadDir /tmp, foo.woo.pdb # load all the PDBs in all the directories under ./binders/ERK loadDir ./binders/ERK/*, .pdb # load the PDBs into groups: now we can load all the files in the tree under # ./ERK into the group "ERK" and the files from ./SYK into the group "SYK" loadDir ./binders/ERK/*, .pdb, group=ERKb loadDir ./binders/SYK/*, .pdb, group=SYKb
from glob import glob from os.path import sep, basename def loadDir(dirName=".", suff="pdb", group=None): """ Loads all files with the suffix suff (the input parameter) from the directory dirName). dirName: directory path suff: file suffix. Should be simply "pdb" or "sdf" or similar. Will accept the wildcard and dot in case the user doesn't read this. So, "*.pdb", ".pdb", and "pdb" should work. The suffix can be anything valid that PyMOL knows how to natively load. group: groupName to add the files to. example: # load all the PDBs in the current directory loadDir # load all SD files from /tmp loadDir /tmp, "sdf" notes: make sure you call this script w/o quotes around your parameters: loadDir ., .pdb as opposed to loadDir ".", "*.pdb" Use the former. """ g = dirName + sep + "*." + suff.split(".")[-1] for c in glob( g ): cmd.load(c) if ( group != None ): cmd.group( group, basename(c).split("."), "add" ) cmd.extend("loadDir", loadDir)