from optparse import Option
import os
import os.path
+from random import shuffle
import shutil
from uuid import uuid4
SAWSIM = 'sawsim' # os.path.expand(os.path.join('~', 'bin', 'sawsim'))
-CACHE_DIR = os.path.expanduser(os.path.join('~', '.sawsim_cache'))
+CACHE_DIR = os.path.expanduser(os.path.join('~', '.sawsim-cache'))
DEFAULT_PARAM_STRING = (
'-s cantilever,hooke,0.05 -N1 '
'-s folded,null -N8 '
"""
>>> s = SawsimRunner()
>>> s._param_cache_dir(DEFAULT_PARAM_STRING) # doctest: +ELLIPSIS
- '/.../.sawsim_cache/...'
+ '/.../.sawsim-cache/...'
"""
return os.path.join(
self._cache_dir, hashlib.sha256(param_string).hexdigest())
def _load_cached_data(self, param_string):
pcd = self._param_cache_dir(param_string)
- for filename in os.listdir(pcd):
+ for filename in shuffle(os.listdir(pcd)):
if not filename.endswith('.dat'):
continue
with open(os.path.join(pcd, filename), 'r') as f:
sr = SawsimRunner()
- usage = "%prog [options]"
- parser = OptionParser(usage)
+ usage = '%prog [options]'
+ epilog = '\n'.join([
+ 'Python wrapper around `sawsim`. Distribute `N` runs using',
+ 'one of the possible job "managers". Also supports caching',
+ 'results to speed future runs.'
+ ])
+ parser = OptionParser(usage, epilog=epilog)
for option in sr.optparse_options:
parser.add_option(option)