From 029652d715712cff74e47abf77d0f1d5d30ee6fa Mon Sep 17 00:00:00 2001 From: Matea Turalija Date: Tue, 3 Jun 2025 15:48:06 +0200 Subject: [PATCH] Added mdengine test --- .../gromacs/capped_alanine_dipeptide/test.cpt | Bin 0 -> 40576 bytes tests/gromacs/test_mdengine.py | 54 ++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 examples/resources/gromacs/capped_alanine_dipeptide/test.cpt create mode 100644 tests/gromacs/test_mdengine.py diff --git a/examples/resources/gromacs/capped_alanine_dipeptide/test.cpt b/examples/resources/gromacs/capped_alanine_dipeptide/test.cpt new file mode 100644 index 0000000000000000000000000000000000000000..5fc0a74e5405ed71c9265adabb5cc384e4914921 GIT binary patch literal 40576 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. + +import os + +import pytest + +from asyncmd.gromacs.mdconfig import MDP +from asyncmd.gromacs.mdengine import GmxEngine + + +@pytest.mark.asyncio +async def test_prepare_simulation(): + mdconfig = MDP("tests/test_data/gromacs/empty.mdp") + gro = "examples/resources/gromacs/capped_alanine_dipeptide/conf.gro" + top = "examples/resources/gromacs/capped_alanine_dipeptide/topol_amber99sbildn.top" + cpt = "examples/resources/gromacs/capped_alanine_dipeptide/test.cpt" + + assert os.path.isfile(cpt) + + mdconfig._config = { + "nstxout-compressed": 100, + "simulation-part": 2, + } + + workdir = os.path.dirname(gro) + mdp = os.path.join(workdir, "test.mdp") + mdout_mdp = os.path.join(workdir, "test_mdout.mdp") + tpr = os.path.join(workdir, "test.tpr") + + engine = GmxEngine(mdconfig=mdconfig, gro_file=gro, top_file=top) + + await engine.prepare(None, workdir, "test") + + assert os.path.isfile(mdp) + os.remove(mdp) + + assert os.path.isfile(mdout_mdp) + os.remove(mdout_mdp) + + assert os.path.isfile(tpr) + os.remove(tpr)