|
11 | 11 | from openpathsampling.tests.test_helpers import \ |
12 | 12 | make_1d_traj, CalvinistDynamics |
13 | 13 |
|
14 | | - |
15 | 14 | class TestEnsembleSatisfiedContinueConditions(object): |
16 | 15 | def setup(self): |
17 | 16 | cv = paths.CoordinateFunctionCV('x', lambda x: x.xyz[0][0]) |
@@ -81,3 +80,63 @@ def test_generate(self): |
81 | 80 | init_snap = self.trajectory[0] |
82 | 81 | traj = self.engine.generate(init_snap, self.conditions) |
83 | 82 | assert len(traj) == 8 |
| 83 | + |
| 84 | + |
| 85 | +@pytest.fixture() |
| 86 | +def md_fixture(tps_fixture): |
| 87 | + _, _, engine, sample_set = tps_fixture |
| 88 | + snapshot = sample_set[0].trajectory[0] |
| 89 | + ensemble = paths.LengthEnsemble(5).named('len5') |
| 90 | + return engine, ensemble, snapshot |
| 91 | + |
| 92 | +def print_test(output_storage, engine, ensembles, nsteps, initial_frame): |
| 93 | + print(isinstance(output_storage, paths.Storage)) |
| 94 | + print(engine.__uuid__) |
| 95 | + print([e.__uuid__ for e in ensembles]) # only 1? |
| 96 | + print(nsteps) |
| 97 | + print(initial_frame.__uuid__) |
| 98 | + |
| 99 | +@patch('paths_cli.commands.md.md_main', print_test) |
| 100 | +def test_md(md_fixture): |
| 101 | + engine, ensemble, snapshot = md_fixture |
| 102 | + runner = CliRunner() |
| 103 | + with runner.isolated_filesystem(): |
| 104 | + storage = paths.Storage("setup.nc", 'w') |
| 105 | + storage.save([ensemble, snapshot, engine]) |
| 106 | + storage.tags['initial_snapshot'] = snapshot |
| 107 | + storage.close() |
| 108 | + |
| 109 | + results = runner.invoke( |
| 110 | + md, |
| 111 | + ["setup.nc", '-o', 'foo.nc', '--ensemble', 'len5', '-f', |
| 112 | + 'initial_snapshot'] |
| 113 | + ) |
| 114 | + expected_output = "\n".join([ "True", str(engine.__uuid__), |
| 115 | + '[' + str(ensemble.__uuid__) + ']', |
| 116 | + 'None', str(snapshot.__uuid__)]) + "\n" |
| 117 | + |
| 118 | + assert results.output == expected_output |
| 119 | + assert results.exit_code == 0 |
| 120 | + |
| 121 | +def test_md_main(md_fixture): |
| 122 | + tempdir = tempfile.mkdtemp() |
| 123 | + try: |
| 124 | + store_name = os.path.join(tempdir, "md.nc") |
| 125 | + storage = paths.Storage(store_name, mode='w') |
| 126 | + engine, ensemble, snapshot = md_fixture |
| 127 | + traj, foo = md_main( |
| 128 | + output_storage=storage, |
| 129 | + engine=engine, |
| 130 | + ensembles=[ensemble], |
| 131 | + nsteps=None, |
| 132 | + initial_frame=snapshot |
| 133 | + ) |
| 134 | + assert isinstance(traj, paths.Trajectory) |
| 135 | + assert foo is None |
| 136 | + assert len(traj) == 5 |
| 137 | + assert len(storage.trajectories) == 1 |
| 138 | + storage.close() |
| 139 | + finally: |
| 140 | + os.remove(store_name) |
| 141 | + os.rmdir(tempdir) |
| 142 | + |
0 commit comments