def test_entropy_barrier_timescale_elber(toy_elber_model): """ Test entropy barrier system for if it recreates reasonable kinetics timescales. """ num_steps = 100000 fwd_rev_interval = 100 long_timescale_residence_time_in_ps = 1263.06 toy_elber_model.openmm_settings.cuda_platform_settings = None toy_elber_model.openmm_settings.reference_platform = True toy_elber_model.openmm_settings.langevin_integrator.friction_coefficient \ = 100.0 toy_elber_model.calculation_settings.num_umbrella_stage_steps = num_steps toy_elber_model.calculation_settings.fwd_rev_interval = fwd_rev_interval run.run(toy_elber_model, "any") analysis = analyze.analyze(toy_elber_model, num_error_samples=100, skip_checks=False) #assert np.isclose(analysis.MFPTs[('anchor_0', 'bulk')], # long_timescale_residence_time_in_ps, # rtol=0.5) assert analysis.MFPTs is not None assert analysis.k_off is not None analysis.print_results() image_directory = common_analyze.make_image_directory(toy_elber_model, None) analysis.save_plots(image_directory) return
def test_converge_incomplete_md_only_mmvt(toy_mmvt_model): num_steps = 100000 toy_mmvt_model.openmm_settings.cuda_platform_settings = None toy_mmvt_model.openmm_settings.reference_platform = True toy_mmvt_model.openmm_settings.langevin_integrator.friction_coefficient \ = 100.0 toy_mmvt_model.calculation_settings.num_production_steps = num_steps toy_mmvt_model.calculation_settings.energy_reporter_interval = num_steps run.run(toy_mmvt_model, "any", force_overwrite=True) runner_openmm.cleanse_anchor_outputs(toy_mmvt_model, toy_mmvt_model.anchors[3]) cutoff = 0.1 minimum_anchor_transitions = 100 image_directory = common_analyze.make_image_directory(toy_mmvt_model, None) k_on_state = None data_sample_list = converge.converge(toy_mmvt_model, k_on_state, image_directory=image_directory, verbose=True) rmsd_convergence_results = common_converge.calc_RMSD_conv_amount( toy_mmvt_model, data_sample_list) transition_minima, transition_prob_results, transition_time_results \ = common_converge.calc_transition_steps( toy_mmvt_model, data_sample_list[-1]) bd_transition_counts = data_sample_list[-1].bd_transition_counts converge.print_convergence_results(toy_mmvt_model, rmsd_convergence_results, cutoff, transition_prob_results, transition_time_results, minimum_anchor_transitions, bd_transition_counts) return
def test_converge_default_bd_only_mmvt(host_guest_mmvt_model): model = host_guest_mmvt_model bd_directory = os.path.join(host_guest_mmvt_model.anchor_rootdir, "b_surface") runner_browndye2.run_bd_top(model.browndye_settings.browndye_bin_dir, bd_directory, force_overwrite=True) runner_browndye2.run_nam_simulation( model.browndye_settings.browndye_bin_dir, bd_directory, model.k_on_info.bd_output_glob) cutoff = 0.1 minimum_anchor_transitions = 100 image_directory = common_analyze.make_image_directory( host_guest_mmvt_model, None) k_on_state = 0 data_sample_list = converge.converge(host_guest_mmvt_model, k_on_state, image_directory=image_directory, verbose=True) rmsd_convergence_results = common_converge.calc_RMSD_conv_amount( host_guest_mmvt_model, data_sample_list) transition_minima, transition_prob_results, transition_time_results \ = common_converge.calc_transition_steps( host_guest_mmvt_model, data_sample_list[-1]) bd_transition_counts = data_sample_list[-1].bd_transition_counts converge.print_convergence_results(host_guest_mmvt_model, rmsd_convergence_results, cutoff, transition_prob_results, transition_time_results, minimum_anchor_transitions, bd_transition_counts) return
def test_converge_default_md_only_elber(toy_elber_model): num_steps = 100000 fwd_rev_interval = 100 toy_elber_model.openmm_settings.cuda_platform_settings = None toy_elber_model.openmm_settings.reference_platform = True toy_elber_model.openmm_settings.langevin_integrator.friction_coefficient \ = 100.0 toy_elber_model.calculation_settings.num_umbrella_stage_steps = num_steps toy_elber_model.calculation_settings.fwd_rev_interval = fwd_rev_interval run.run(toy_elber_model, "any") cutoff = 0.1 minimum_anchor_transitions = 100 image_directory = common_analyze.make_image_directory( toy_elber_model, None) k_on_state = None data_sample_list = converge.converge(toy_elber_model, k_on_state, image_directory=image_directory, verbose=True) rmsd_convergence_results = common_converge.calc_RMSD_conv_amount( toy_elber_model, data_sample_list) transition_minima, transition_prob_results, transition_time_results \ = common_converge.calc_transition_steps( toy_elber_model, data_sample_list[-1]) bd_transition_counts = data_sample_list[-1].bd_transition_counts converge.print_convergence_results(toy_elber_model, rmsd_convergence_results, cutoff, transition_prob_results, transition_time_results, minimum_anchor_transitions, bd_transition_counts) return
def test_calc_RMSD_conv_amount_elber(toy_elber_model): for anchor in toy_elber_model.anchors: runner_openmm.cleanse_anchor_outputs(toy_elber_model, anchor) anchor1 = toy_elber_model.anchors[1] anchor1_output_filename = os.path.join(toy_elber_model.anchor_rootdir, anchor1.directory, anchor1.production_directory, "forward.restart1.out") copyfile(test_output_filename_elber, anchor1_output_filename) image_directory = common_analyze.make_image_directory( toy_elber_model, None) data_sample_list = converge.converge(toy_elber_model, 0, image_directory=image_directory, verbose=True) convergence_results = common_converge.calc_RMSD_conv_amount( toy_elber_model, data_sample_list) for alpha, anchor in enumerate(toy_elber_model.anchors): if anchor.bulkstate: continue if anchor.index == 1: assert convergence_results[alpha] < 1.0 else: assert convergence_results[alpha] == 1e99 return
def test_calc_transition_steps_elber(toy_elber_model): for anchor in toy_elber_model.anchors: runner_openmm.cleanse_anchor_outputs(toy_elber_model, anchor) anchor1 = toy_elber_model.anchors[1] anchor1_output_filename = os.path.join(toy_elber_model.anchor_rootdir, anchor1.directory, anchor1.production_directory, "forward.restart1.out") copyfile(test_output_filename_elber, anchor1_output_filename) image_directory = common_analyze.make_image_directory( toy_elber_model, None) data_sample_list = converge.converge(toy_elber_model, 0, image_directory=image_directory, verbose=True) transition_minima, transition_prob_results, transition_time_results \ = common_converge.calc_transition_steps( toy_elber_model, data_sample_list[-1]) for alpha, anchor in enumerate(toy_elber_model.anchors): if anchor.bulkstate: continue if anchor.index == 1: assert transition_minima[alpha] == 3 assert transition_prob_results[alpha][(1, 2)] == 5 assert transition_prob_results[alpha][(1, 0)] == 3 assert np.isclose(transition_time_results[alpha][1], (1.324 / 5)) else: assert transition_minima[alpha] == 0 for key in transition_prob_results[alpha]: assert transition_prob_results[alpha][key] == 0 for key in transition_time_results[alpha]: assert transition_time_results[alpha][key] == 0 return
argparser.add_argument( "-T", "--maximum_time", dest="maximum_time", default=None, type=float, help="A user may wish to stop the analysis of simulation time for "\ "each anchor at a particular time. Enter the time (in ps) at which to "\ "end the analysis at a given anchor if the simulation time exceeds it.") args = argparser.parse_args() # parse the args into a dictionary args = vars(args) model_file = args["model_file"] force_warning = args["force_warning"] num_error_samples = args["num_error_samples"] stride_error_samples = args["stride_error_samples"] skip_error_samples = args["skip_error_samples"] image_directory = args["image_directory"] skip_checks = args["skip_checks"] min_time = args["minimum_time"] max_time = args["maximum_time"] model = base.load_model(model_file) image_directory = common_analyze.make_image_directory( model, image_directory) if not skip_checks: check.check_post_simulation_all(model, long_check=True) analysis = analyze(model, force_warning=force_warning, num_error_samples=num_error_samples, stride_error_samples=stride_error_samples, skip_error_samples=skip_error_samples, skip_checks=skip_checks, min_time=min_time, max_time=max_time) analysis.print_results() print("All plots being saved to:", image_directory) analysis.save_plots(image_directory)