+
+
+def main():
+ import optparse
+ import sys
+
+ global SAWSIM, CACHE_DIR
+
+ usage = "%prog [options] velocity_file"
+
+ parser = optparse.OptionParser(usage)
+ parser.add_option("-s","--sawsim", dest="sawsim",
+ metavar="PATH",
+ help="Set sawsim binary (%default).",
+ default=SAWSIM)
+ parser.add_option("-p","--params", dest="params",
+ metavar="PARAMS",
+ help="Initial params for fitting (%default).",
+ default=DEFAULT_PARAM_STRING)
+ parser.add_option("-N", "--number-of-runs", dest="N",
+ metavar="INT", type='int',
+ help="Number of sawsim runs at each point in parameter space (%default).",
+ default=400)
+ parser.add_option("-w", "--bin-width", dest="bin_width",
+ metavar="FLOAT", type='float',
+ help="Histogram bin width in newtons (%default).",
+ default=None)
+ parser.add_option("-m", "--manager", dest="manager",
+ metavar="STRING",
+ help="Job manager name (one of %s) (%%default)."
+ % (', '.join(MANAGERS)),
+ default=MANAGERS[0])
+ parser.add_option("-C","--use-cache", dest="use_cache",
+ help="Use cached simulations if they exist (vs. running new simulations) (%default)",
+ default=False, action="store_true")
+ parser.add_option("--clean-cache", dest="clean_cache",
+ help="Remove previously cached simulations if they exist (%default)",
+ default=False, action="store_true")
+ parser.add_option("-d","--cache-dir", dest="cache_dir",
+ metavar="STRING",
+ help="Cache directory for sawsim unfolding forces (%default).",
+ default=CACHE_DIR)
+ options,args = parser.parse_args()
+
+ SAWSIM = options.sawsim
+ CACHE_DIR = options.cache_dir
+
+ sh = SawsimHistogram(use_cache=options.use_cache,
+ clean_cache=options.clean_cache)
+
+ manager = get_manager(options.manager)()
+ try:
+ events = sh(param_string=options.params, N=options.N, manager=manager)
+ finally:
+ manager.teardown()
+
+ if options.bin_width == None:
+ sys.stdout.write('# Unfolding force (N)\n')
+ events.tofile(sys.stdout, sep='\n')
+ sys.stdout.write('\n')
+ else:
+ h = Histogram()
+ h.from_data(events, bin_edges=h.calculate_bin_edges(
+ events, options.bin_width))
+ h.headings = ['Force (N)', 'Unfolding events']
+ h.to_stream(sys.stdout)