<bin_edge><whitespace><count>
...
- For example:
-
-
`<bin_edge>` should mark the left-hand side of the bin, and
all bins should be of equal width (so we know where the last
one ends).
The input `histogram_stream` should contain a series of
experimental histograms with '#HISTOGRAM: <params>` lines starting
- each histogram. `<params>` should list the `sawsim` parameters
- that are unique to that experiment.
+ each histogram. `<params>` lists the `sawsim` parameters that are
+ unique to that experiment.
>>> from .manager.thread import ThreadManager
>>> velocity_stream = StringIO(EXAMPLE_HISTOGRAM_FILE_CONTENTS)
sr = SawsimRunner()
- usage = "%prog [options] velocity_file"
-
- parser = OptionParser(usage)
+ usage = '%prog [options] histogram_file'
+ epilog = '\n'.join([
+ 'Compare simulated results against experimental values over a',
+ 'range of parameters. Generates a plot of fit quality over',
+ 'the parameter space. The histogram file should look something',
+ 'like:',
+ '',
+ EXAMPLE_HISTOGRAM_FILE_CONTENTS,
+ ''
+ '`#HISTOGRAM: <params>` lines start each histogram. `params`',
+ 'lists the `sawsim` parameters that are unique to that',
+ 'experiment.',
+ '',
+ 'Each histogram line is of the format:',
+ '',
+ '<bin_edge><whitespace><count>',
+ '',
+ '`<bin_edge>` should mark the left-hand side of the bin, and',
+ 'all bins should be of equal width (so we know where the last',
+ 'one ends).',
+ ])
+ parser = OptionParser(usage, epilog=epilog)
+ parser.format_epilog = lambda formatter: epilog+'\n'
for option in sr.optparse_options:
if option.dest == 'param_string':
continue
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)
sr = SawsimRunner()
- usage = "%prog [options] velocity_file"
- parser = OptionParser(usage)
+ usage = '%prog [options]'
+ epilog = '\n'.join([
+ 'Generate an unfolding force histogram from a series of `sawsim`',
+ 'runs.',
+ ])
+ parser = OptionParser(usage, epilog=epilog)
for option in sr.optparse_options:
parser.add_option(option)
parser.add_option("-w", "--bin-width", dest="bin_width",