imdclient 0.1.1__py3-none-any.whl → 0.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- imdclient/{IMDREADER.py → IMD.py} +16 -15
- imdclient/IMDClient.py +146 -71
- imdclient/data/gromacs/md/gromacs_v3_nst8.mdp +58 -0
- imdclient/data/lammps/md/{lammps_v3.in → lammps_v3_nst_1.in} +3 -3
- imdclient/data/lammps/md/lammps_v3_nst_8.in +71 -0
- imdclient/data/namd/md/{namd_v3.namd → namd_v3_nst_1.namd} +17 -5
- imdclient/data/namd/md/namd_v3_nst_8.namd +59 -0
- imdclient/tests/base.py +133 -45
- imdclient/tests/conftest.py +14 -10
- imdclient/tests/datafiles.py +17 -9
- imdclient/tests/docker_testing/docker.md +25 -0
- imdclient/tests/test_gromacs.py +32 -10
- imdclient/tests/test_imdclient.py +51 -0
- imdclient/tests/test_imdreader.py +20 -6
- imdclient/tests/test_lammps.py +57 -12
- imdclient/tests/test_manual.py +52 -29
- imdclient/tests/test_namd.py +101 -14
- imdclient/tests/test_stream_analysis.py +2 -2
- imdclient/tests/utils.py +0 -1
- imdclient/utils.py +8 -8
- imdclient-0.1.3.dist-info/LICENSE +5 -0
- {imdclient-0.1.1.dist-info → imdclient-0.1.3.dist-info}/METADATA +21 -32
- imdclient-0.1.3.dist-info/RECORD +42 -0
- {imdclient-0.1.1.dist-info → imdclient-0.1.3.dist-info}/WHEEL +1 -1
- imdclient/data/gromacs/md/gromacs_v3_nst1.tpr +0 -0
- imdclient/data/gromacs/md/gromacs_v3_nst1.trr +0 -0
- imdclient/data/lammps/md/lammps_trj.h5md +0 -0
- imdclient/data/namd/md/alanin.dcd +0 -0
- imdclient-0.1.1.dist-info/LICENSE +0 -21
- imdclient-0.1.1.dist-info/RECORD +0 -42
- {imdclient-0.1.1.dist-info → imdclient-0.1.3.dist-info}/AUTHORS.md +0 -0
- {imdclient-0.1.1.dist-info → imdclient-0.1.3.dist-info}/top_level.txt +0 -0
imdclient/tests/test_manual.py
CHANGED
@@ -1,18 +1,24 @@
|
|
1
|
-
from imdclient.
|
1
|
+
from imdclient.IMD import IMDReader
|
2
2
|
import pytest
|
3
3
|
import MDAnalysis as mda
|
4
4
|
from MDAnalysisTests.coordinates.base import assert_timestep_almost_equal
|
5
5
|
from numpy.testing import (
|
6
|
-
assert_array_almost_equal,
|
7
|
-
assert_almost_equal,
|
8
6
|
assert_allclose,
|
9
7
|
)
|
10
8
|
import numpy as np
|
11
9
|
from .base import assert_allclose_with_logging
|
10
|
+
from pathlib import Path
|
12
11
|
|
13
12
|
import logging
|
14
13
|
|
15
14
|
logger = logging.getLogger("imdclient.IMDClient")
|
15
|
+
file_handler = logging.FileHandler("manual_test.log")
|
16
|
+
formatter = logging.Formatter(
|
17
|
+
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
18
|
+
)
|
19
|
+
file_handler.setFormatter(formatter)
|
20
|
+
logger.addHandler(file_handler)
|
21
|
+
logger.setLevel(logging.DEBUG)
|
16
22
|
|
17
23
|
|
18
24
|
class TestIMDv3Manual:
|
@@ -23,48 +29,65 @@ class TestIMDv3Manual:
|
|
23
29
|
and then run this command relative to the root of the cloned respository:
|
24
30
|
|
25
31
|
pytest -s imdclient/tests/test_manual.py \
|
26
|
-
--
|
27
|
-
--
|
32
|
+
--topol_path_arg <path/to/topology> \
|
33
|
+
--traj_path_arg <path/to/trajectory> \
|
28
34
|
--first_frame_arg <first traj frame to compare to IMD>
|
29
35
|
|
30
|
-
Where the topology is the same topology as the IMD system, the trajectory is the
|
31
|
-
|
36
|
+
Where the topology is the same topology as the IMD system, the trajectory is the path where
|
37
|
+
the trajectory of the running simulation is being written, and the first frame is the first frame of the
|
32
38
|
trajectory which should be compared to IMD data read from the socket (0 for GROMACS and NAMD, 1 for LAMMPS)
|
33
39
|
"""
|
34
40
|
|
35
41
|
@pytest.fixture()
|
36
|
-
def
|
37
|
-
return mda.Universe(
|
42
|
+
def true_u(self, imd_u, topol_path_arg, traj_path_arg):
|
43
|
+
return mda.Universe(topol_path_arg, traj_path_arg)
|
38
44
|
|
39
45
|
@pytest.fixture()
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
|
46
|
+
def imd_u(self, topol_path_arg, tmp_path):
|
47
|
+
tmp_u = mda.Universe(topol_path_arg, "imd://localhost:8888")
|
48
|
+
with mda.Writer(
|
49
|
+
f"{tmp_path.as_posix()}/imd_test_traj.trr", tmp_u.atoms.n_atoms
|
50
|
+
) as w:
|
51
|
+
for ts in tmp_u.trajectory:
|
52
|
+
w.write(tmp_u.atoms)
|
53
|
+
imd_u = mda.Universe(
|
54
|
+
topol_path_arg, f"{tmp_path.as_posix()}/imd_test_traj.trr"
|
55
|
+
)
|
56
|
+
yield imd_u
|
44
57
|
|
45
|
-
def test_compare_imd_to_true_traj(self,
|
46
|
-
imdsinfo = client.get_imdsessioninfo()
|
58
|
+
def test_compare_imd_to_true_traj(self, true_u, imd_u, first_frame_arg):
|
47
59
|
|
48
|
-
for
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
60
|
+
for i in range(first_frame_arg, len(true_u.trajectory)):
|
61
|
+
assert_allclose(
|
62
|
+
true_u.trajectory[i].time,
|
63
|
+
imd_u.trajectory[i - first_frame_arg].time,
|
64
|
+
atol=1e-03,
|
65
|
+
)
|
66
|
+
assert_allclose(
|
67
|
+
true_u.trajectory[i].data["step"],
|
68
|
+
imd_u.trajectory[i - first_frame_arg].data["step"],
|
69
|
+
)
|
70
|
+
if true_u.trajectory[i].dimensions is not None:
|
54
71
|
assert_allclose_with_logging(
|
55
|
-
|
56
|
-
|
72
|
+
true_u.trajectory[i].dimensions,
|
73
|
+
imd_u.trajectory[i - first_frame_arg].dimensions,
|
57
74
|
atol=1e-03,
|
58
75
|
)
|
59
|
-
if
|
76
|
+
if true_u.trajectory[i].has_positions:
|
60
77
|
assert_allclose_with_logging(
|
61
|
-
|
78
|
+
true_u.trajectory[i].positions,
|
79
|
+
imd_u.trajectory[i - first_frame_arg].positions,
|
80
|
+
atol=1e-03,
|
62
81
|
)
|
63
|
-
if
|
82
|
+
if true_u.trajectory[i].has_velocities:
|
64
83
|
assert_allclose_with_logging(
|
65
|
-
|
84
|
+
true_u.trajectory[i].velocities,
|
85
|
+
imd_u.trajectory[i - first_frame_arg].velocities,
|
86
|
+
atol=1e-03,
|
66
87
|
)
|
67
|
-
if
|
88
|
+
if true_u.trajectory[i].has_forces:
|
68
89
|
assert_allclose_with_logging(
|
69
|
-
|
90
|
+
true_u.trajectory[i].forces,
|
91
|
+
imd_u.trajectory[i - first_frame_arg].forces,
|
92
|
+
atol=1e-03,
|
70
93
|
)
|
imdclient/tests/test_namd.py
CHANGED
@@ -1,11 +1,21 @@
|
|
1
1
|
import MDAnalysis as mda
|
2
2
|
import pytest
|
3
3
|
import logging
|
4
|
-
from .base import IMDv3IntegrationTest
|
5
|
-
from .datafiles import
|
4
|
+
from .base import IMDv3IntegrationTest, assert_allclose_with_logging
|
5
|
+
from .datafiles import (
|
6
|
+
NAMD_TOPOL,
|
7
|
+
NAMD_CONF_NST_1,
|
8
|
+
NAMD_CONF_NST_8,
|
9
|
+
NAMD_PARAMS,
|
10
|
+
NAMD_PSF,
|
11
|
+
)
|
12
|
+
from pathlib import Path
|
13
|
+
from numpy.testing import (
|
14
|
+
assert_allclose,
|
15
|
+
)
|
6
16
|
|
7
17
|
logger = logging.getLogger("imdclient.IMDClient")
|
8
|
-
file_handler = logging.FileHandler("
|
18
|
+
file_handler = logging.FileHandler("namd_test.log")
|
9
19
|
formatter = logging.Formatter(
|
10
20
|
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
11
21
|
)
|
@@ -16,23 +26,100 @@ logger.setLevel(logging.DEBUG)
|
|
16
26
|
|
17
27
|
class TestIMDv3NAMD(IMDv3IntegrationTest):
|
18
28
|
|
29
|
+
@pytest.fixture(params=[NAMD_CONF_NST_1, NAMD_CONF_NST_8])
|
30
|
+
def inp(self, request):
|
31
|
+
return request.param
|
32
|
+
|
33
|
+
@pytest.fixture()
|
34
|
+
def simulation_command(self, inp):
|
35
|
+
return f"namd3 {Path(inp).name}"
|
36
|
+
|
37
|
+
@pytest.fixture()
|
38
|
+
def input_files(self, inp):
|
39
|
+
return [NAMD_TOPOL, inp, NAMD_PARAMS, NAMD_PSF]
|
40
|
+
|
41
|
+
@pytest.fixture()
|
42
|
+
def topol(self):
|
43
|
+
return Path(NAMD_TOPOL).name
|
44
|
+
|
19
45
|
@pytest.fixture()
|
20
|
-
def
|
21
|
-
|
22
|
-
|
46
|
+
def true_u(self, topol, imd_u, tmp_path):
|
47
|
+
u = mda.Universe(
|
48
|
+
(tmp_path / topol),
|
49
|
+
(tmp_path / "alanin.dcd"),
|
23
50
|
)
|
51
|
+
yield u
|
24
52
|
|
25
53
|
@pytest.fixture()
|
26
|
-
def
|
27
|
-
|
54
|
+
def true_u_vel(self, topol, imd_u, tmp_path):
|
55
|
+
u = mda.Universe(
|
56
|
+
(tmp_path / topol),
|
57
|
+
(tmp_path / "alanin.vel.dcd"),
|
58
|
+
)
|
59
|
+
yield u
|
60
|
+
|
61
|
+
@pytest.fixture()
|
62
|
+
def true_u_force(self, topol, imd_u, tmp_path):
|
63
|
+
u = mda.Universe(
|
64
|
+
(tmp_path / topol),
|
65
|
+
(tmp_path / "alanin.force.dcd"),
|
66
|
+
)
|
67
|
+
yield u
|
68
|
+
|
69
|
+
# @pytest.fixture()
|
70
|
+
# def match_string(self):
|
71
|
+
# return "INTERACTIVE MD AWAITING CONNECTION"
|
28
72
|
|
29
73
|
@pytest.fixture()
|
30
74
|
def first_frame(self):
|
31
75
|
return 0
|
32
76
|
|
33
|
-
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
77
|
+
# Compare coords, box, time, dt, step
|
78
|
+
def test_compare_imd_to_true_traj(self, imd_u, true_u, first_frame):
|
79
|
+
for i in range(first_frame, len(true_u.trajectory)):
|
80
|
+
assert_allclose(
|
81
|
+
true_u.trajectory[i].time,
|
82
|
+
imd_u.trajectory[i - first_frame].time,
|
83
|
+
atol=1e-03,
|
84
|
+
)
|
85
|
+
assert_allclose(
|
86
|
+
true_u.trajectory[i].dt,
|
87
|
+
imd_u.trajectory[i - first_frame].dt,
|
88
|
+
atol=1e-03,
|
89
|
+
)
|
90
|
+
assert_allclose(
|
91
|
+
true_u.trajectory[i].data["step"],
|
92
|
+
imd_u.trajectory[i - first_frame].data["step"],
|
93
|
+
)
|
94
|
+
assert_allclose_with_logging(
|
95
|
+
true_u.trajectory[i].dimensions,
|
96
|
+
imd_u.trajectory[i - first_frame].dimensions,
|
97
|
+
atol=1e-03,
|
98
|
+
)
|
99
|
+
assert_allclose_with_logging(
|
100
|
+
true_u.trajectory[i].positions,
|
101
|
+
imd_u.trajectory[i - first_frame].positions,
|
102
|
+
atol=1e-03,
|
103
|
+
)
|
104
|
+
|
105
|
+
# Compare velocities
|
106
|
+
def test_compare_imd_to_true_traj_vel(
|
107
|
+
self, imd_u, true_u_vel, first_frame
|
108
|
+
):
|
109
|
+
for i in range(first_frame, len(true_u_vel.trajectory)):
|
110
|
+
assert_allclose_with_logging(
|
111
|
+
true_u_vel.trajectory[i].positions,
|
112
|
+
imd_u.trajectory[i - first_frame].velocities,
|
113
|
+
atol=1e-03,
|
114
|
+
)
|
115
|
+
|
116
|
+
# Compare forces
|
117
|
+
def test_compare_imd_to_true_traj_forces(
|
118
|
+
self, imd_u, true_u_force, first_frame
|
119
|
+
):
|
120
|
+
for i in range(first_frame, len(true_u_force.trajectory)):
|
121
|
+
assert_allclose_with_logging(
|
122
|
+
true_u_force.trajectory[i].positions,
|
123
|
+
imd_u.trajectory[i - first_frame].forces,
|
124
|
+
atol=1e-03,
|
125
|
+
)
|
@@ -15,7 +15,7 @@ from numpy.testing import (
|
|
15
15
|
)
|
16
16
|
import numpy as np
|
17
17
|
import pytest
|
18
|
-
from imdclient.
|
18
|
+
from imdclient.IMD import IMDReader
|
19
19
|
|
20
20
|
|
21
21
|
class TestStreamAnalysis:
|
@@ -38,7 +38,7 @@ class TestStreamAnalysis:
|
|
38
38
|
server.set_imdsessioninfo(imdsinfo)
|
39
39
|
server.handshake_sequence("localhost", port, first_frame=True)
|
40
40
|
|
41
|
-
imd_universe = mda.Universe(COORDINATES_TOPOLOGY, f"localhost:{port}")
|
41
|
+
imd_universe = mda.Universe(COORDINATES_TOPOLOGY, f"imd://localhost:{port}")
|
42
42
|
server.send_frames(1, 5)
|
43
43
|
|
44
44
|
yield imd_universe
|
imdclient/tests/utils.py
CHANGED
imdclient/utils.py
CHANGED
@@ -43,22 +43,22 @@ class timeit(object):
|
|
43
43
|
# always propagate exceptions forward
|
44
44
|
return False
|
45
45
|
|
46
|
-
|
47
46
|
# NOTE: think of other edge cases as well- should be robust
|
48
47
|
def parse_host_port(filename):
|
48
|
+
if not filename.startswith("imd://"):
|
49
|
+
raise ValueError("IMDReader: URL must be in the format 'imd://host:port'")
|
50
|
+
|
49
51
|
# Check if the format is correct
|
50
|
-
parts = filename.split(":")
|
52
|
+
parts = filename.split("imd://")[1].split(":")
|
51
53
|
if len(parts) == 2:
|
52
|
-
host = parts[0]
|
54
|
+
host = parts[0]
|
53
55
|
try:
|
54
|
-
port = int(parts[1])
|
56
|
+
port = int(parts[1])
|
55
57
|
return (host, port)
|
56
58
|
except ValueError:
|
57
|
-
|
58
|
-
raise ValueError("Port must be an integer")
|
59
|
+
raise ValueError("IMDReader: Port must be an integer")
|
59
60
|
else:
|
60
|
-
|
61
|
-
raise ValueError("Filename must be in the format 'host:port'")
|
61
|
+
raise ValueError("IMDReader: URL must be in the format 'imd://host:port'")
|
62
62
|
|
63
63
|
|
64
64
|
def approximate_timestep_memsize(
|
@@ -0,0 +1,5 @@
|
|
1
|
+
Copyright 2024 Lawson Woods
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
4
|
+
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
@@ -1,45 +1,29 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: imdclient
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.3
|
4
4
|
Summary: Receiver for IMD v2 and v3 data from simulation engines like Gromacs, LAMMPS, and NAMD
|
5
5
|
Author-email: Lawson <ljwoods2@asu.edu>
|
6
6
|
Maintainer-email: Lawson <ljwoods2@asu.edu>
|
7
|
-
License:
|
7
|
+
License: Copyright 2024 Lawson Woods
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
12
|
-
of this software and associated documentation files (the "Software"), to deal
|
13
|
-
in the Software without restriction, including without limitation the rights
|
14
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
15
|
-
copies of the Software, and to permit persons to whom the Software is
|
16
|
-
furnished to do so, subject to the following conditions:
|
17
|
-
|
18
|
-
The above copyright notice and this permission notice shall be included in all
|
19
|
-
copies or substantial portions of the Software.
|
20
|
-
|
21
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
23
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
24
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
25
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
26
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27
|
-
SOFTWARE.
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
28
10
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
29
12
|
Keywords: molecular simulations
|
30
13
|
Requires-Python: >=3.9
|
31
14
|
Description-Content-Type: text/markdown
|
32
15
|
License-File: LICENSE
|
33
16
|
License-File: AUTHORS.md
|
34
|
-
Requires-Dist: MDAnalysis
|
35
|
-
Provides-Extra: doc
|
36
|
-
Requires-Dist: sphinx ; extra == 'doc'
|
37
|
-
Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
|
17
|
+
Requires-Dist: MDAnalysis>=2.7.0
|
38
18
|
Provides-Extra: test
|
39
|
-
Requires-Dist: pytest
|
40
|
-
Requires-Dist: pytest-xdist
|
41
|
-
Requires-Dist: pytest-cov
|
42
|
-
Requires-Dist: MDAnalysisTests
|
19
|
+
Requires-Dist: pytest>=6.0; extra == "test"
|
20
|
+
Requires-Dist: pytest-xdist>=2.5; extra == "test"
|
21
|
+
Requires-Dist: pytest-cov>=3.0; extra == "test"
|
22
|
+
Requires-Dist: MDAnalysisTests>=2.7.0; extra == "test"
|
23
|
+
Requires-Dist: docker-py; extra == "test"
|
24
|
+
Provides-Extra: doc
|
25
|
+
Requires-Dist: sphinx; extra == "doc"
|
26
|
+
Requires-Dist: sphinx_rtd_theme; extra == "doc"
|
43
27
|
|
44
28
|
IMDClient
|
45
29
|
==============================
|
@@ -48,7 +32,7 @@ IMDClient
|
|
48
32
|
| **Latest release** | [![Last release tag][badge_release]][url_latest_release] ![GitHub commits since latest release (by date) for a branch][badge_commits_since] [![Documentation Status][badge_docs]][url_docs]|
|
49
33
|
| :----------------- | :------- |
|
50
34
|
| **Status** | [![GH Actions Status][badge_actions]][url_actions] [![codecov][badge_codecov]][url_codecov] |
|
51
|
-
| **Community** | [![License:
|
35
|
+
| **Community** | [![License: MIT][badge_license]][url_license] [![Powered by MDAnalysis][badge_mda]][url_mda]|
|
52
36
|
|
53
37
|
[badge_actions]: https://github.com/becksteinlab/imdclient/actions/workflows/gh-ci.yaml/badge.svg
|
54
38
|
[badge_codecov]: https://codecov.io/gh/becksteinlab/imdclient/branch/main/graph/badge.svg
|
@@ -61,15 +45,20 @@ IMDClient
|
|
61
45
|
[url_codecov]: https://codecov.io/gh/becksteinlab/imdclient/branch/main
|
62
46
|
[url_docs]: https://imdclient.readthedocs.io/en/latest/?badge=latest
|
63
47
|
[url_latest_release]: https://github.com/becksteinlab/imdclient/releases
|
64
|
-
[url_license]: https://
|
48
|
+
[url_license]: https://opensource.org/license/mit
|
65
49
|
[url_mda]: https://www.mdanalysis.org
|
66
50
|
|
67
|
-
Receiver for IMDv3 protocol from simulation engines like Gromacs, LAMMPS, and NAMD.
|
51
|
+
Receiver for [IMDv3 protocol](https://imdclient.readthedocs.io/en/latest/protocol_v3.html) from simulation engines like Gromacs, LAMMPS, and NAMD.
|
68
52
|
|
69
53
|
IMDClient is bound by a [Code of Conduct](https://github.com/becksteinlab/imdreader/blob/main/CODE_OF_CONDUCT.md).
|
70
54
|
|
71
55
|
### Installation
|
72
56
|
|
57
|
+
IMDClient is available via PyPi and can be installed with pip:
|
58
|
+
```bash
|
59
|
+
pip install imdclient
|
60
|
+
```
|
61
|
+
|
73
62
|
To build IMDClient from source,
|
74
63
|
we highly recommend using virtual environments.
|
75
64
|
If possible, we strongly recommend that you use
|
@@ -0,0 +1,42 @@
|
|
1
|
+
imdclient/IMD.py,sha256=-ySUiRBumVEKyZU3UXXNywajtVnERQhtP4ama3guCR4,3767
|
2
|
+
imdclient/IMDClient.py,sha256=6p8nLe70d-eUdsJ6QNcpc8V1Mp-ozD7mhB35_p6Owuc,33330
|
3
|
+
imdclient/IMDProtocol.py,sha256=jm7ehwfDCcs-zWHjZ2V2KpAWdGhD4JSy7RVtCSF0818,4045
|
4
|
+
imdclient/__init__.py,sha256=Pa5h6Fjyvyxf3ECzO43pcmLm3Vk-vOuEb5Gi6TDWhds,339
|
5
|
+
imdclient/backends.py,sha256=QmHjwYbmvFVHz-uFgpSOA0UmZTZqiMGqWMO7B8wr1zs,10368
|
6
|
+
imdclient/results.py,sha256=2MyjFdQMW7BfiHhG5X6wQwMVrF_0mKYFnv907lgLMas,9920
|
7
|
+
imdclient/streamanalysis.py,sha256=Qq0h_WPO-wb0_lP8jTRHe0HX7UDZNgJFA6C4PZdUmK8,38385
|
8
|
+
imdclient/streambase.py,sha256=rwhdyC2V3_9pSz_6rNwjSc4MNToI9S318OH7AH0arHA,6176
|
9
|
+
imdclient/utils.py,sha256=VWxk4vQ6hzxoYRu-8Ge8fJG-EitJwgJR93wOWCvzY-0,3308
|
10
|
+
imdclient/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
+
imdclient/data/gromacs/md/gromacs_struct.gro,sha256=kt4vE10iF_1RbeyTogmYmIY9yKJacofrzNT-hPHGyL8,1459301
|
12
|
+
imdclient/data/gromacs/md/gromacs_v3.top,sha256=AXFEDjvz5Qqq-VECffimdeEvhD6L-H0SFPILW-6Sums,348329
|
13
|
+
imdclient/data/gromacs/md/gromacs_v3_nst1.mdp,sha256=3ZStLxoeQo7k5R3C6EY2oRxet_FAccDEIwVsymbN8f4,3053
|
14
|
+
imdclient/data/gromacs/md/gromacs_v3_nst8.mdp,sha256=CYz5gKFApeJMrJyCmd3kgPFzRjahgaLRNyIomuVyY0w,3053
|
15
|
+
imdclient/data/lammps/md/lammps_topol.data,sha256=u4osSkn7yG9p2Egz9ovLW4eVmdaThPxeZ0L218J3-V0,172948
|
16
|
+
imdclient/data/lammps/md/lammps_v3_nst_1.in,sha256=AcvkgNNDtTkB7RlFZwpUEKKp6W_7o_UFgrX_LwC3HXI,2586
|
17
|
+
imdclient/data/lammps/md/lammps_v3_nst_8.in,sha256=gpdAp1dDhJbG06wZVDtBGUs6biJNz8EStV341S0uJ2s,2594
|
18
|
+
imdclient/data/namd/md/alanin.params,sha256=zWw-UfqYD3-xpdA_8R8T-0OYBbUM6py7jKAq_uyu8HE,17389
|
19
|
+
imdclient/data/namd/md/alanin.pdb,sha256=eccDD-ledUXjbB2s1fxY40lmAKWWDpxkxANbsOkqjHc,5615
|
20
|
+
imdclient/data/namd/md/alanin.psf,sha256=VhCZeGFhpUa8yN5iEL19zlVjqIJg2JIdPzhazpRForY,12953
|
21
|
+
imdclient/data/namd/md/namd_v3_nst_1.namd,sha256=EZU7PGyytZdGixrBnmpAcwonN0n_JTk9U-Q82FoqO7k,983
|
22
|
+
imdclient/data/namd/md/namd_v3_nst_8.namd,sha256=WJmwj0E4nJVhYRr_ALBlTax6kyNkdRE1krPsmY-QFLM,984
|
23
|
+
imdclient/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
+
imdclient/tests/base.py,sha256=CoU6oZanTnWrASxY5aRJdICtj4yz5PfYwh9iqQ_o8WE,6461
|
25
|
+
imdclient/tests/conftest.py,sha256=ERj5d4roxWGqpXS8-W-LFB_INEkb_4oz5ous92u2yK4,1377
|
26
|
+
imdclient/tests/datafiles.py,sha256=NtLuk1P4vk1h4b5Hb71vne2RMmWKGRV9RaIfRvLOfIc,1262
|
27
|
+
imdclient/tests/server.py,sha256=7KqzDg74d7Oe617jctB-rDGvEUNSaT9agkp9SiEtiME,6978
|
28
|
+
imdclient/tests/test_gromacs.py,sha256=rXkabRB40xX7LRdF2_nrPgeNpfFF9J7m-5LeRNMA5TM,1454
|
29
|
+
imdclient/tests/test_imdclient.py,sha256=hhfvI1wGocE5e38tfbsNW9w2uotUXtedhq3FOQC68EM,7030
|
30
|
+
imdclient/tests/test_imdreader.py,sha256=bD2we7TBJwM4wcHJh9ob6Ap8hNsGu1KTkc_tQ_5IzrU,23532
|
31
|
+
imdclient/tests/test_lammps.py,sha256=hwZBVvhclN1mtPuYLyODUaWjlaZaAkhAFqX-mpQvWk4,2244
|
32
|
+
imdclient/tests/test_manual.py,sha256=BR8MCdCUxcaDKSFyR-jLhJ4mk9s9CIS5MIAf5dR4PBE,3557
|
33
|
+
imdclient/tests/test_namd.py,sha256=dFOJUQl9ByekuuYgUOIirf6qFj5_qaKfgQq4Qimtotw,3671
|
34
|
+
imdclient/tests/test_stream_analysis.py,sha256=qqsm_Bv8qCXyNwgdSKZM8bLyiEO5nlpqJ-XtEn-YKew,1723
|
35
|
+
imdclient/tests/utils.py,sha256=_x1gVQ3AmhaMurpcEPLKBG5BTGu4ZMy5EGUpr0P6D6g,854
|
36
|
+
imdclient/tests/docker_testing/docker.md,sha256=SxHEpSA1mXAvzYzsxL0EesGqPCVC8qdRMbvxGz5R0Yo,840
|
37
|
+
imdclient-0.1.3.dist-info/AUTHORS.md,sha256=R4JTI7mrgL1WYgfyuAv4quw0e0oLQGVjWcMQa-UXJlE,652
|
38
|
+
imdclient-0.1.3.dist-info/LICENSE,sha256=28aS5DC2LCwcOVe3VN0g2L-Dooqof34T9TMGJ6jqMig,593
|
39
|
+
imdclient-0.1.3.dist-info/METADATA,sha256=6Vl27FFPSTPCa1MDlSDCsk9rrGCdGY6wKGJ1G1pvHJM,6531
|
40
|
+
imdclient-0.1.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
41
|
+
imdclient-0.1.3.dist-info/top_level.txt,sha256=40W62GWiXUT2CbDm-No7GTeJG160wyIMpk1hBNrdkkE,10
|
42
|
+
imdclient-0.1.3.dist-info/RECORD,,
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,21 +0,0 @@
|
|
1
|
-
MIT License
|
2
|
-
|
3
|
-
Copyright (c) 2024 ljwoods2
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
imdclient-0.1.1.dist-info/RECORD
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
imdclient/IMDClient.py,sha256=2P4wgv8fZjZ_3JFLsm3L2JxxAlTAiWTZtXr5vRWJHf0,30687
|
2
|
-
imdclient/IMDProtocol.py,sha256=jm7ehwfDCcs-zWHjZ2V2KpAWdGhD4JSy7RVtCSF0818,4045
|
3
|
-
imdclient/IMDREADER.py,sha256=V8yfkQkKYyWwYh0V2m7EOg0yzdsUKmQAqDmIlzgiiIY,3712
|
4
|
-
imdclient/__init__.py,sha256=Pa5h6Fjyvyxf3ECzO43pcmLm3Vk-vOuEb5Gi6TDWhds,339
|
5
|
-
imdclient/backends.py,sha256=QmHjwYbmvFVHz-uFgpSOA0UmZTZqiMGqWMO7B8wr1zs,10368
|
6
|
-
imdclient/results.py,sha256=2MyjFdQMW7BfiHhG5X6wQwMVrF_0mKYFnv907lgLMas,9920
|
7
|
-
imdclient/streamanalysis.py,sha256=Qq0h_WPO-wb0_lP8jTRHe0HX7UDZNgJFA6C4PZdUmK8,38385
|
8
|
-
imdclient/streambase.py,sha256=rwhdyC2V3_9pSz_6rNwjSc4MNToI9S318OH7AH0arHA,6176
|
9
|
-
imdclient/utils.py,sha256=kd1e5nqEOb46hCR_9ITjDB30j56mXFbV0u_wMv0pMco,3330
|
10
|
-
imdclient/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
-
imdclient/data/gromacs/md/gromacs_struct.gro,sha256=kt4vE10iF_1RbeyTogmYmIY9yKJacofrzNT-hPHGyL8,1459301
|
12
|
-
imdclient/data/gromacs/md/gromacs_v3.top,sha256=AXFEDjvz5Qqq-VECffimdeEvhD6L-H0SFPILW-6Sums,348329
|
13
|
-
imdclient/data/gromacs/md/gromacs_v3_nst1.mdp,sha256=3ZStLxoeQo7k5R3C6EY2oRxet_FAccDEIwVsymbN8f4,3053
|
14
|
-
imdclient/data/gromacs/md/gromacs_v3_nst1.tpr,sha256=YDXlSFxUmvRBuo2za7By7QYzcdQ6Z0agypl3V5Hqt4Q,912932
|
15
|
-
imdclient/data/gromacs/md/gromacs_v3_nst1.trr,sha256=deehbC7X_HvJj_DDRptoePNhjKy70w8n_myWsxoPWMQ,76906248
|
16
|
-
imdclient/data/lammps/md/lammps_topol.data,sha256=u4osSkn7yG9p2Egz9ovLW4eVmdaThPxeZ0L218J3-V0,172948
|
17
|
-
imdclient/data/lammps/md/lammps_trj.h5md,sha256=9J5dCVznJQKDFCSCS73p0YMR0hYDzyQC4WPVEsopw4s,30116656
|
18
|
-
imdclient/data/lammps/md/lammps_v3.in,sha256=4MF-lXcVoFVTjuqAy5Z9o5ukj3qhZ3cK3hKc8em-050,2592
|
19
|
-
imdclient/data/namd/md/alanin.dcd,sha256=UJIjQBjv6oZTn5CnJNwU_5mur_KrD69iV5TOvq935lo,8436
|
20
|
-
imdclient/data/namd/md/alanin.params,sha256=zWw-UfqYD3-xpdA_8R8T-0OYBbUM6py7jKAq_uyu8HE,17389
|
21
|
-
imdclient/data/namd/md/alanin.pdb,sha256=eccDD-ledUXjbB2s1fxY40lmAKWWDpxkxANbsOkqjHc,5615
|
22
|
-
imdclient/data/namd/md/alanin.psf,sha256=VhCZeGFhpUa8yN5iEL19zlVjqIJg2JIdPzhazpRForY,12953
|
23
|
-
imdclient/data/namd/md/namd_v3.namd,sha256=KWH3RXsa0aeA9dYSz9CnUFHcDGbAFnB3yLoYaLtCiBs,720
|
24
|
-
imdclient/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
imdclient/tests/base.py,sha256=OsoZm4T5E7p4XEQ6F4Je0g3vgpa8wcPQgKbWaC2AttQ,3761
|
26
|
-
imdclient/tests/conftest.py,sha256=k_QOYMf8Q70ebP1tRKclIYYM9DE6XKvP5NiJgllu8w8,1255
|
27
|
-
imdclient/tests/datafiles.py,sha256=36Mip1wx_LHukJIaHu0Ew-F0XFIEXNEyXg2wRzQLDaM,1118
|
28
|
-
imdclient/tests/server.py,sha256=7KqzDg74d7Oe617jctB-rDGvEUNSaT9agkp9SiEtiME,6978
|
29
|
-
imdclient/tests/test_gromacs.py,sha256=4HbgK6lnE6G35bvYDpFiQbLVz7-q9BB9FKsgjeCa9do,942
|
30
|
-
imdclient/tests/test_imdclient.py,sha256=99u_xIHNMCCJSew5IoPndxAa5N3F-r37jqFProkl4Ts,5336
|
31
|
-
imdclient/tests/test_imdreader.py,sha256=TID3iFOZRY3wrHobYkP5FNYIYwAt3c2SIc8ACkTSotY,22954
|
32
|
-
imdclient/tests/test_lammps.py,sha256=NZqX0Hj65I3A33LpejZThZTo-0PuI_4x_wODzJ9o490,957
|
33
|
-
imdclient/tests/test_manual.py,sha256=2YNRkpaGdI5-Pro6xSCujhwZHsHf0C1Ehu2v2dk3lbM,2507
|
34
|
-
imdclient/tests/test_namd.py,sha256=69F27qUH2GmdQMvm3RQHQFS1aAl8JiNz16SN8D6mp-E,962
|
35
|
-
imdclient/tests/test_stream_analysis.py,sha256=BS3U-FwBc2shYAsDHvUX8H6Zioo_tUNGirkzWcuMXEY,1723
|
36
|
-
imdclient/tests/utils.py,sha256=i5GviFFdIaDsAOv8giP_jVJUeGww86nD0l2brB4_jRM,890
|
37
|
-
imdclient-0.1.1.dist-info/AUTHORS.md,sha256=R4JTI7mrgL1WYgfyuAv4quw0e0oLQGVjWcMQa-UXJlE,652
|
38
|
-
imdclient-0.1.1.dist-info/LICENSE,sha256=cERlftlPR1Vka6DmjkIosLRBZTXXhOsLFU3jw1ELcXs,1065
|
39
|
-
imdclient-0.1.1.dist-info/METADATA,sha256=O5rAMU1eSnDZDqxHFkRyocftSD92MP0k-6s7u9V251Y,6952
|
40
|
-
imdclient-0.1.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
41
|
-
imdclient-0.1.1.dist-info/top_level.txt,sha256=40W62GWiXUT2CbDm-No7GTeJG160wyIMpk1hBNrdkkE,10
|
42
|
-
imdclient-0.1.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|