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
Example #2
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)
Example #4
0
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)
Example #5
0
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")
Example #6
0
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,
    )
Example #7
0
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
Example #8
0
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
Example #10
0
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]]
Example #11
0
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)
Example #14
0
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"
Example #15
0
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
Example #16
0
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
Example #17
0
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)
Example #22
0
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
    )
Example #23
0
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)
Example #24
0
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
    )
Example #26
0
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
Example #27
0
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
    )
Example #28
0
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")
Example #29
0
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)