def test_initialize_systems(caplog): caplog.set_level(logging.DEBUG) configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) s1 = SystemStructure(configuration, "structure1") assert int(s1.offset["waterbox"]) == 0 assert int(s1.offset["vacuum"]) == 0 s2 = SystemStructure(configuration, "structure2") assert int(s2.offset["waterbox"]) == 0 assert int(s2.offset["vacuum"]) == 0 assert "vacuum" in s1.envs and "vacuum" in s2.envs assert "waterbox" in s1.envs and "waterbox" in s2.envs configuration = load_config_yaml( config= f"{get_testsystems_dir()}/config/test-2oj9-tautomer-pair-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) s1 = SystemStructure(configuration, "structure1") assert int(s1.offset["waterbox"]) == 0 assert int(s1.offset["vacuum"]) == 0 s2 = SystemStructure(configuration, "structure2") assert int(s2.offset["waterbox"]) == 0 assert int(s2.offset["vacuum"]) == 0
def test_generate_alchemical_path_for_toluene_commmon_core(): from transformato_testsystems.testsystems import \ mutate_toluene_to_methane_cc configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) output_files = mutate_toluene_to_methane_cc(configuration=configuration) assert len(output_files) == 16 with open( f"{get_test_output_dir()}/toluene-methane-rsfe/toluene/intst1/openmm_run.py", "r", ) as f: i = 0 for line in f.readlines(): if "# Set platform" in line and i == 0: i += 1 elif i == 1: assert "CPU" in line print(line) i += 1
def test_postprocessing_toluene_methane_rsfe_with_mda(): from transformato import ( load_config_yaml, ) from transformato.utils import postprocessing conf = f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir="data/", output_dir="data" ) # NOTE: for preprocessing input_dir is the output dir # methane ddG_openMM_mda, dddG, f_openMM = postprocessing( configuration, name="methane", engine="openMM", max_snapshots=600, num_proc=4, analyze_traj_with="mda", ) print(f"Free energy difference: {ddG_openMM_mda} +- {dddG} [kT") ddG_openMM_mdtraj, dddG, f_openMM = postprocessing( configuration, name="methane", engine="openMM", max_snapshots=600, num_proc=4, analyze_traj_with="mdtraj", ) print(f"Free energy difference: {ddG_openMM_mdtraj} +- {dddG} [kT]") assert np.isclose(ddG_openMM_mdtraj, ddG_openMM_mda) assert np.isclose(ddG_openMM_mdtraj, -1.3682027088661721) assert np.isclose(ddG_openMM_mda, -1.3682018563018001)
def test_analyse_1a0q_1a07_rsfe_with_openMM(caplog): # Running the analysis, first the productions script needs to be finisehd # Change output dir # Check transformato/bin/charmm_eval_energy.sh for the correct name of the charmm # executable! from transformato import load_config_yaml from transformato.utils import postprocessing from transformato.utils import postprocessing workdir = "/site/raid4/johannes/test" conf = "transformato/tests/config/test-1a0q-1a07-rsfe.yaml" configuration = load_config_yaml(config=conf, input_dir="data/", output_dir=workdir) ddG_openMM, dddG = postprocessing( configuration, name="1a0q", engine="CHARMM", max_snapshots=10, num_proc=1, analyze_traj_with="mdtraj", ) print(ddG_openMM, dddG)
def test_run_1a0q_1a07_rsfe_with_openMM(caplog): import logging # Test that TF can handel multiple dummy regions caplog.set_level(logging.DEBUG) import warnings from transformato import ( load_config_yaml, SystemStructure, IntermediateStateFactory, ProposeMutationRoute, ) from transformato.mutate import perform_mutations warnings.filterwarnings("ignore", module="parmed") workdir = get_test_output_dir() conf = f"{get_testsystems_dir()}/config/test-1a0q-1a07-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir="data/test_systems_mutation", output_dir=workdir ) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.propose_common_core() s1_to_s2.finish_common_core() # generate the mutation list for the original mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol1() print(mutation_list.keys()) i = IntermediateStateFactory( system=s1, configuration=configuration, ) perform_mutations(configuration=configuration, i=i, mutation_list=mutation_list) run_simulation(i.output_files, engine="openMM")
def test_run_1a0q_1a07_rsfe_production_with_CHARMM(caplog): from transformato import ( IntermediateStateFactory, ProposeMutationRoute, SystemStructure, load_config_yaml, ) from transformato.mutate import perform_mutations workdir = get_test_output_dir conf = f"{get_testsystems_dir()}/config/test-1a0q-1a07-rsfe.yaml" configuration = load_config_yaml(config=conf, input_dir="data/", output_dir=workdir) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.propose_common_core() s1_to_s2.finish_common_core() # generate the mutation list for the original mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol1() print(mutation_list.keys()) i = IntermediateStateFactory( system=s1, configuration=configuration, ) perform_mutations( configuration=configuration, nr_of_mutation_steps_cc=2, nr_of_mutation_steps_charge=1, i=i, mutation_list=mutation_list, )
def test_generate_alchemical_path_for_methanol_common_core(): from transformato_testsystems.testsystems import perform_generic_mutation configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-methanol-methane-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.calculate_common_core() mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol1() i = IntermediateStateFactory( system=s1, configuration=configuration, ) perform_mutations( configuration=configuration, i=i, mutation_list=mutation_list, nr_of_mutation_steps_charge=3, ) assert len(i.output_files) == 11
def test_rbfe_mutate_2oj9(): from transformato import (ProposeMutationRoute, SystemStructure, load_config_yaml) from ..mutate import mutate_pure_tautomers conf = f"{get_testsystems_dir()}/config/test-2oj9-tautomer-pair-rbfe.yaml" configuration = load_config_yaml( config=conf, input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.calculate_common_core() return ( mutate_pure_tautomers( s1_to_s2, s1, s2, configuration, nr_of_bonded_windows=4, ), configuration, s1_to_s2, )
def test_lonepairs_in_common_core(): configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/tyk2-ejm_45_ejm_42.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.propose_common_core() s1_to_s2.finish_common_core() mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol1() i = IntermediateStateFactory( system=s1, configuration=configuration, ) # check for ligand 1 cc_region = s1_to_s2.get_common_core_idx_mol1() assert (39 in cc_region and 40 in cc_region) == True perform_mutations(configuration=configuration, i=i, mutation_list=mutation_list) # check for ligand 2 cc_region2 = s1_to_s2.get_common_core_idx_mol2() assert (35 in cc_region2 and 36 in cc_region2) == True
def test_lonepairs_in_dummy_region(): configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/jnk1-17124-18631.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.propose_common_core() s1_to_s2.finish_common_core() mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol1() i = IntermediateStateFactory( system=s1, configuration=configuration, ) assert s1_to_s2.dummy_region_cc1.connected_dummy_regions == [ [46, 22], [45, 44, 43, 26, 25], ] perform_mutations(configuration=configuration, i=i, mutation_list=mutation_list) mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol2() assert s1_to_s2.dummy_region_cc2.connected_dummy_regions == [[39], [40]]
def test_setup_system_for_methane_common_core_with_HMR(): from transformato_testsystems.testsystems import perform_generic_mutation configuration = load_config_yaml( config= f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe-HMR.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) output_files = perform_generic_mutation(configuration=configuration) assert len(output_files) == 3 # set up openMM system base = f"{get_test_output_dir()}/toluene-methane-rsfe/methane/intst3/" import sys # sys.path is a list of absolute path strings sys.path.append(base) system, psf = generate_openMM_system_using_cgui_scripts(base) # enumearte and iterate over all constraints in the system for cons_idx in range(system.getNumConstraints()): idx1, idx2, value = system.getConstraintParameters(cons_idx) print( f"{psf.atom_list[idx1]}: {system.getParticleMass(idx1)}; {psf.atom_list[idx2]}: {system.getParticleMass(idx2)}" ) print(value) print("Finsihed.") assert system.getNumConstraints() == 2557
def test_postprocessing_thinning(): from transformato import FreeEnergyCalculator conf = f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir=get_testsystems_dir(), output_dir=get_testsystems_dir() ) # NOTE: for preprocessing input_dir is the output dir f = FreeEnergyCalculator(configuration, "methane") f.load_trajs(nr_of_max_snapshots=300) assert len(f.snapshots.keys()) == 2 # entry for vacuum and waterbox assert f.nr_of_states == 3 # nr of lambda states print(f.snapshots["vacuum"]) assert len(f.snapshots["vacuum"]) == 900 assert len(f.snapshots["waterbox"]) == 900 f = FreeEnergyCalculator(configuration, "methane") f.load_trajs(nr_of_max_snapshots=200) print(f.snapshots["vacuum"]) assert len(f.snapshots["vacuum"]) == 600 assert len(f.snapshots["waterbox"]) == 600 f = FreeEnergyCalculator(configuration, "toluene") f.load_trajs(nr_of_max_snapshots=200) assert len(f.snapshots.keys()) == 2 # entry for vacuum and waterbox assert f.nr_of_states == 13 # nr of lambda states print(f.snapshots["vacuum"]) assert len(f.snapshots["vacuum"]) == 1950 assert len(f.snapshots["waterbox"]) == 1950
def test_2oj9_postprocessing_with_different_engines(): conf = f"{get_testsystems_dir()}/config/test-2oj9-tautomer-pair-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir="data/", output_dir="data" ) # NOTE: for preprocessing input_dir is the output dir # 2OJ9-original to tautomer common core ddG_charmm, dddG, f_charmm = postprocessing( configuration, name="2OJ9-original", engine="CHARMM", max_snapshots=600 ) ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="2OJ9-original", engine="openMM", max_snapshots=600 ) assert np.isclose( f_charmm.vacuum_free_energy_differences[0, -1], f_openMM.vacuum_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose( f_charmm.waterbox_free_energy_differences[0, -1], f_openMM.waterbox_free_energy_differences[0, -1], rtol=1e-2, ) assert np.isclose(ddG_openMM, ddG_charmm, rtol=1e-2) assert np.isclose(ddG_openMM, 1.6615831380721744) assert np.isclose(ddG_charmm, 1.6579906682671464) print(ddG_openMM, ddG_charmm) # 2OJ9-tautomer to tautomer common core ddG_charmm, dddG, f_charmm = postprocessing( configuration, name="2OJ9-tautomer", engine="CHARMM", max_snapshots=600 ) ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="2OJ9-tautomer", engine="openMM", max_snapshots=600 ) assert np.isclose( f_charmm.vacuum_free_energy_differences[0, -1], f_openMM.vacuum_free_energy_differences[0, -1], atol=1e-2, ) assert np.isclose( f_charmm.waterbox_free_energy_differences[0, -1], f_openMM.waterbox_free_energy_differences[0, -1], rtol=1e-2, ) assert np.isclose(ddG_openMM, ddG_charmm, rtol=1e-2) print(ddG_openMM, ddG_charmm) assert np.isclose(ddG_openMM, -0.4446282802464623) assert np.isclose(ddG_charmm, -0.4459798541540181)
def test_read_yaml(): """Sample test, will check ability to read yaml files""" settingsMap = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir=".", output_dir="data/", ) assert settingsMap["system"]["name"] == "toluene-methane-rsfe" assert settingsMap["system"]["structure1"]["tlc"] == "UNL"
def test_generate_alchemical_path_for_7_CPI_to_common_core(): from transformato_testsystems.testsystems import mutate_7_CPI_to_2_CPI_cc configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-7-CPI-2-CPI-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) output_files = mutate_7_CPI_to_2_CPI_cc(configuration=configuration) assert len(output_files) == 13
def test_generate_alchemical_path_for_neopentane_common_core(): from transformato_testsystems.testsystems import \ mutate_neopentane_to_methane_cc configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-neopentane-methane-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) output_files = mutate_neopentane_to_methane_cc(configuration=configuration) assert len(output_files) == 16
def calculate_rbfe_mp(): conf = "config/test-2oj9-tautomer-pair-rbfe.yaml" configuration = load_config_yaml( config=conf, input_dir="../../data/", output_dir="../../data" ) # NOTE: for preprocessing input_dir is the output dir # 2OJ9-original to tautomer common core ddG_openMM, dddG, f_openMM = postprocessing(configuration, name="2OJ9-original", engine="openMM", max_snapshots=1000)
def run_2OJ9_tautomer_pair_rbfe(): conf_path = "config/test-2oj9-tautomer-pair-rbfe.yaml" configuration = load_config_yaml( config=conf_path, input_dir="../../data/", output_dir=get_test_output_dir() ) (output_files_t1, output_files_t2), _, _ = setup_2OJ9_tautomer_pair_rbfe( configuration=configuration ) run_simulation(output_files_t1) run_simulation(output_files_t2)
def test_acetylacetone_postprocessing_different_engines(): conf = f"{get_testsystems_dir()}/config/test-acetylacetone-tautomer-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir="data/", output_dir="data" ) # NOTE: for preprocessing input_dir is the output dir # enol ddG_charmm, dddG, f_charmm = postprocessing( configuration, name="acetylacetone-enol", engine="CHARMM", max_snapshots=500 ) ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="acetylacetone-enol", engine="openMM", max_snapshots=500 ) assert np.isclose( f_charmm.vacuum_free_energy_differences[0, -1], f_openMM.vacuum_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose( f_charmm.waterbox_free_energy_differences[0, -1], f_openMM.waterbox_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose(ddG_openMM, ddG_charmm, rtol=1e-1) print(ddG_openMM) print(ddG_charmm) assert np.isclose(ddG_openMM, -0.6532604462065663, rtol=1e-3) assert np.isclose(ddG_charmm, -0.6591611245563769, rtol=1e-3) # keto ddG_charmm, dddG, f_charmm = postprocessing( configuration, name="acetylacetone-keto", engine="CHARMM", max_snapshots=600 ) ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="acetylacetone-keto", engine="openMM", max_snapshots=600 ) assert np.isclose( f_charmm.vacuum_free_energy_differences[0, -1], f_openMM.vacuum_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose( f_charmm.waterbox_free_energy_differences[0, -1], f_openMM.waterbox_free_energy_differences[0, -1], rtol=0.01, ) assert np.isclose(ddG_openMM, ddG_charmm, rtol=1e-1) print(ddG_openMM) print(ddG_charmm) assert np.isclose(ddG_openMM, 2.691482858438775, rtol=0.01) assert np.isclose(ddG_charmm, 2.699116266252545, rtol=0.01)
def run_acetylacetone_tautomer_pair_rsfe(): conf_path = "config/test-acetylacetone-tautomer-rsfe.yaml" configuration = load_config_yaml( config=conf_path, input_dir="../../data/", output_dir=get_test_output_dir() ) (output_files_t1, output_files_t2), _, _ = setup_acetylacetone_tautomer_pair( configuration=configuration ) run_simulation(output_files_t1) run_simulation(output_files_t2)
def test_toluene_to_methane_calculate_rsfe_with_different_engines(): conf = f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir="data/", output_dir="data" ) # NOTE: for preprocessing input_dir is the output dir # methane ddG_charmm, dddG, f_charmm = postprocessing( configuration, name="methane", engine="CHARMM", max_snapshots=600 ) ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="methane", engine="openMM", max_snapshots=600 ) assert np.isclose( f_charmm.vacuum_free_energy_differences[0, -1], f_openMM.vacuum_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose( f_charmm.waterbox_free_energy_differences[0, -1], f_openMM.waterbox_free_energy_differences[0, -1], rtol=1e-3, ) assert np.isclose(ddG_openMM, ddG_charmm, rtol=1e-1) print(f_charmm.vacuum_free_energy_differences[0, -1]) print(f_openMM.vacuum_free_energy_differences[0, -1]) assert np.isclose(ddG_openMM, -1.3681988336807516) assert np.isclose(ddG_charmm, -1.3674494407692004) # toluene ddG_charmm, dddG, f_charmm = postprocessing( configuration, name="toluene", engine="CHARMM", max_snapshots=600 ) ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="toluene", engine="openMM", max_snapshots=600 ) assert np.isclose( f_charmm.vacuum_free_energy_differences[0, -1], f_openMM.vacuum_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose( f_charmm.waterbox_free_energy_differences[0, -1], f_openMM.waterbox_free_energy_differences[0, -1], rtol=1e-4, ) assert np.isclose(ddG_openMM, ddG_charmm, rtol=1e-1) print(f_charmm.vacuum_free_energy_differences[0, -1]) print(f_openMM.vacuum_free_energy_differences[0, -1]) assert np.isclose(ddG_openMM, 5.651522313536532, rtol=1e-3) assert np.isclose(ddG_charmm, 5.651678173410401, rtol=1e-3)
def test_generate_alchemical_path_for_acetylacetone_tautomer_pair(caplog): caplog.set_level(logging.WARNING) from .test_mutation import setup_acetylacetone_tautomer_pair conf = f"{get_testsystems_dir()}/config/test-acetylacetone-tautomer-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir=get_testsystems_dir(), output_dir=get_test_output_dir() ) (output_files_t1, output_files_t2), _, _ = setup_acetylacetone_tautomer_pair( configuration=configuration, nr_of_bonded_windows=8 )
def test_generate_alchemical_path_acetylaceton_methyl_common_core(): from transformato_testsystems.testsystems import \ mutate_acetylaceton_methyl_common_core conf = f"{get_testsystems_dir()}/config/test-acetylacetone-tautomer-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) # NOTE: for preprocessing input_dir is the output dir mutate_acetylaceton_methyl_common_core(configuration=configuration)
def test_run_methane_to_methane_cc_with_openMM(): from transformato.testsystems import mutate_methane_to_methane_cc workdir = get_test_output_dir() configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir="data/", output_dir=workdir, ) change_platform_to_test_platform(configuration=configuration, engine="openMM") output_files = mutate_methane_to_methane_cc(configuration=configuration) run_simulation(output_files)
def test_2oj9_postprocessing_with_openMM(): initialize_NUM_PROC(1) conf = f"{get_testsystems_dir()}/config/test-2oj9-tautomer-pair-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir="data/", output_dir="data" ) # NOTE: for preprocessing input_dir is the output dir # 2OJ9-original to tautomer common core ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="2OJ9-original", engine="openMM", max_snapshots=200 )
def test_setup_system_for_methane_common_core(): from transformato_testsystems.testsystems import perform_generic_mutation print(get_testsystems_dir()) configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) print(configuration) output_files = perform_generic_mutation(configuration=configuration) assert len(output_files) == 3
def calculate_rbfe(): system_name = "1oi9" conf = f"/data/shared/projects/rbfe-tf/config/cdk2/{system_name}.yaml" configuration = load_config_yaml( config=conf, input_dir="../../data/", output_dir="/data/shared/projects/rbfe-tf/cdk2/run1/", ) # NOTE: for preprocessing input_dir is the output dir # 2OJ9-original to tautomer common core ddG_openMM, dddG, f_openMM = postprocessing( configuration, name="1oi9", engine="openMM", max_snapshots=2_000 )
def test_io_psf_files(): from openmm.app import CharmmPsfFile from transformato_testsystems.testsystems import mutate_toluene_to_methane_cc configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir=get_testsystems_dir(), output_dir=get_test_output_dir(), ) output_files = mutate_toluene_to_methane_cc(configuration=configuration) output_path = output_files[0] print(output_path) CharmmPsfFile(f"{output_path}/lig_in_waterbox.psf") CharmmPsfFile(f"{output_path}/lig_in_waterbox_corr.psf")
def test_run_methane_to_methane_common_core_with_CHARMM(): from transformato.testsystems import mutate_methane_to_methane_cc workdir = get_test_output_dir() configuration = load_config_yaml( config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml", input_dir="data/", output_dir=workdir, ) change_platform_to_test_platform(configuration=configuration, engine="CHARMM") output_files = mutate_methane_to_methane_cc(configuration=configuration) run_simulation(output_files, engine="CHARMM") f = "/".join(output_files[0].split("/")[:-3]) print(f) shutil.rmtree(f)
def test_run_1a0q_1a07_rsfe_with_openMM(caplog): # Test that TF can handel multiple dummy regions caplog.set_level(logging.DEBUG) conf = f"{get_testsystems_dir()}/config/test-1a0q-1a07-rsfe.yaml" configuration = load_config_yaml( config=conf, input_dir=get_testsystems_dir(), output_dir=get_test_output_dir() ) s1 = SystemStructure(configuration, "structure1") s2 = SystemStructure(configuration, "structure2") s1_to_s2 = ProposeMutationRoute(s1, s2) s1_to_s2.propose_common_core() s1_to_s2.finish_common_core() # generate the mutation list for the original mutation_list = s1_to_s2.generate_mutations_to_common_core_for_mol1() print(mutation_list.keys()) i = IntermediateStateFactory( system=s1, configuration=configuration, ) perform_mutations(configuration=configuration, i=i, mutation_list=mutation_list) run_simulation(i.output_files, engine="openMM") # Analysis with mda ddG_openMM_mda, dddG_mda, f_openMM_mda = postprocessing( configuration, name="1a0q", engine="openMM", analyze_traj_with="mda", num_proc=4, max_snapshots=50, ) print(f"Free energy difference using mda: {ddG_openMM_mda} +- {dddG_mda} [kT") # Analysis with mdtraj ddG_openMM_mtraj, dddG_mtraj, f_openMM_mtraj = postprocessing( configuration, name="1a0q", engine="openMM", max_snapshots=50, ) print( f"Free energy difference using mdtraj: {ddG_openMM_mtraj} +- {dddG_mtraj} [kT" ) assert np.isclose(ddG_openMM_mda, ddG_openMM_mda, rtol=0.2) assert np.isclose(dddG_mda, dddG_mda, rtol=0.2)