Esempio n. 1
0
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
Esempio n. 2
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
Esempio n. 3
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,
    )
Esempio n. 4
0
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
Esempio n. 5
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
Esempio n. 6
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]]
Esempio n. 7
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")
Esempio n. 8
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
Esempio n. 9
0
def test_change_platform():
    from transformato.constants import (
        change_platform_to_test_platform,
        test_platform_openMM,
        test_platform_CHARMM,
    )

    configuration = load_config_yaml(
        config=f"{get_testsystems_dir()}/config/test-toluene-methane-rsfe.yaml",
        input_dir=".",
        output_dir=get_test_output_dir(),
    )

    change_platform_to_test_platform(configuration, engine="openMM")
    print(configuration["simulation"]["GPU"])
    print(test_platform_openMM)
    if test_platform_openMM.upper() == "CPU":
        assert configuration["simulation"]["GPU"] == False
    else:
        assert configuration["simulation"]["GPU"] == True

    change_platform_to_test_platform(configuration, engine="CHARMM")
    print(configuration["simulation"]["GPU"])
    print(test_platform_openMM)
    if test_platform_CHARMM.upper() == "CPU":
        assert configuration["simulation"]["GPU"] == False
    else:
        assert configuration["simulation"]["GPU"] == True
Esempio n. 10
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
Esempio n. 11
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)
Esempio n. 12
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
    )
Esempio n. 13
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
Esempio n. 14
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)
Esempio n. 15
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
Esempio n. 16
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")
Esempio n. 17
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)
Esempio n. 19
0
def test_run_2OJ9_tautomer_pair_with_openMM(caplog):
    caplog.set_level(logging.WARNING)
    from .test_mutation import setup_2OJ9_tautomer_pair_rbfe

    workdir = get_test_output_dir()

    conf = f"{get_testsystems_dir()}/config/test-2oj9-tautomer-pair-rsfe.yaml"
    configuration = load_config_yaml(
        config=conf, input_dir="data/", output_dir=workdir
    )  # NOTE: for preprocessing input_dir is the output dir
    change_platform_to_test_platform(configuration=configuration, engine="openMM")

    (output_files_t1, output_files_t2), _, _ = setup_2OJ9_tautomer_pair_rbfe(
        configuration=configuration
    )
    run_simulation(output_files_t1)
    run_simulation(output_files_t2)
Esempio n. 20
0
def test_run_acetylacetone_tautomer_pair(caplog):
    caplog.set_level(logging.WARNING)
    from .test_mutation import setup_acetylacetone_tautomer_pair

    workdir = get_test_output_dir()

    configuration = load_config_yaml(
        config=f"{get_testsystems_dir()}/config/test-acetylacetone-tautomer-rsfe.yaml",
        input_dir="data/",
        output_dir=workdir,
    )
    change_platform_to_test_platform(configuration=configuration, engine="openMM")
    (output_files_t1, output_files_t2), _, _ = setup_acetylacetone_tautomer_pair(
        configuration=configuration
    )
    run_simulation(output_files_t1)
    run_simulation(output_files_t2)
Esempio n. 21
0
def test_run_acetylacetone_tautomer_pair_only_in_vacuum(caplog):
    caplog.set_level(logging.WARNING)
    from .test_mutation import setup_acetylacetone_tautomer_pair

    workdir = get_test_output_dir()

    conf = f"{get_testsystems_dir()}/config/test-acetylacetone-tautomer-rsfe.yaml"
    configuration = load_config_yaml(
        config=conf, input_dir="data/", output_dir=workdir
    )  # NOTE: for preprocessing input_dir is the output dir
    change_platform_to_test_platform(configuration=configuration, engine="openMM")

    (output_files_t1, output_files_t2), _, _ = setup_acetylacetone_tautomer_pair(
        configuration=configuration, nr_of_bonded_windows=16
    )

    run_simulation(output_files_t1, only_vacuum=True)
    run_simulation(output_files_t2, only_vacuum=True)
def test_run_28_1h1q_rbfe_with_openMM():
    # Generating output for a run of the CDK2 Ligand System

    configuration = load_config_yaml(
        config=f"{get_testsystems_dir()}/config/test-28_1h1q_rbfe.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()
    print(mutation_list.keys())
    i = IntermediateStateFactory(
        system=s1,
        configuration=configuration,
    )

    perform_mutations(
        configuration=configuration,
        i=i,
        mutation_list=mutation_list,
        nr_of_mutation_steps_charge=2,
        nr_of_mutation_steps_cc=2,
    )

    run_simulation(i.output_files, engine="charmm")
    from transformato.utils import postprocessing

    ddG_openMM, dddG, f_openMM = postprocessing(
        configuration,
        name="cdk2-28",
        engine="openMM",
        max_snapshots=50,
        num_proc=4,
        analyze_traj_with="mda",
    )
    print(f"Free energy difference: {ddG_openMM} +- {dddG} [kT")
Esempio n. 23
0
def test_generate_alchemical_path_for_1a0q_1a07(caplog):

    # Test that TF can handel multiple dummy regions
    caplog.set_level(logging.INFO)
    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)
    assert i.current_step == 24
Esempio n. 24
0
def test_run_28_1h1q_rbfe_production_with_CHARMM():
    # Generating output for a run of the CDK2 Ligand System
    from transformato import (
        IntermediateStateFactory,
        ProposeMutationRoute,
        SystemStructure,
        load_config_yaml,
    )

    from transformato.mutate import perform_mutations

    configuration = load_config_yaml(
        config=f"{get_testsystems_dir()}/config/test-28_1h1q_rbfe.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()
    print(mutation_list.keys())
    i = IntermediateStateFactory(
        system=s1,
        configuration=configuration,
    )

    perform_mutations(
        configuration=configuration,
        i=i,
        mutation_list=mutation_list,
        nr_of_mutation_steps_charge=1,
        nr_of_mutation_steps_cc=1,
    )
Esempio n. 25
0
def test_reading_of_coords():

    env = "vacuum"
    output_files_t1, _ = get_output_files_2oj9_tautomer_pair()

    conf = f"{get_testsystems_dir()}/config/test-2oj9-tautomer-pair-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

    b = output_files_t1[0]
    print(b)
    traj_load = md.load_dcd(
        f"{b}/lig_in_{env}.dcd",
        f"{b}/lig_in_{env}.psf",
    )
    print(traj_load.xyz[0])

    traj_open = md.open(f"{b}/lig_in_{env}.dcd")
    xyz, unitcell_lengths, _ = traj_open.read()
    xyz = xyz / 10
    print(xyz[0])
    assert np.allclose(xyz[0], traj_load.xyz[0])
Esempio n. 26
0
def test_run_28_1h1q_rsfe_analysis_with_CHARMM():
    # 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

    configuration = load_config_yaml(
        input_dir=get_testsystems_dir(),
        output_dir=get_test_output_dir(),
        config=f"{get_testsystems_dir()}/config/test-28_1h1q_rbfe.yaml",
    )

    ddG_openMM, dddG, f_openMM = postprocessing(
        configuration,
        name="cdk2-28",
        engine="CHARMM",
        max_snapshots=10,
        num_proc=1,
        analyze_traj_with="mdtraj",
    )
    print(f"Free energy difference: {ddG_openMM} +- {dddG} [kT")