imdclient 0.1.3__py3-none-any.whl → 0.1.4__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.
Files changed (33) hide show
  1. imdclient/IMD.py +3 -1
  2. imdclient/IMDClient.py +37 -8
  3. imdclient/IMDProtocol.py +1 -0
  4. imdclient/data/gromacs/md/gromacs_v3_nst1.mdp +3 -3
  5. imdclient/tests/base.py +46 -0
  6. imdclient/tests/conftest.py +0 -39
  7. imdclient/tests/datafiles.py +16 -1
  8. imdclient/tests/hpc_testing/gromacs/README.md +112 -0
  9. imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.mdp +58 -0
  10. imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.top +11764 -0
  11. imdclient/tests/hpc_testing/gromacs/struct.gro +21151 -0
  12. imdclient/tests/hpc_testing/gromacs/validate_gmx.sh +90 -0
  13. imdclient/tests/hpc_testing/lammps/README.md +62 -0
  14. imdclient/tests/hpc_testing/lammps/lammps_v3_nst_1.in +71 -0
  15. imdclient/tests/hpc_testing/lammps/topology_after_min.data +8022 -0
  16. imdclient/tests/hpc_testing/lammps/validate_lmp.sh +66 -0
  17. imdclient/tests/hpc_testing/namd/README.md +73 -0
  18. imdclient/tests/hpc_testing/namd/alanin.params +402 -0
  19. imdclient/tests/hpc_testing/namd/alanin.pdb +77 -0
  20. imdclient/tests/hpc_testing/namd/alanin.psf +206 -0
  21. imdclient/tests/hpc_testing/namd/namd_v3_nst_1.namd +59 -0
  22. imdclient/tests/hpc_testing/namd/validate_namd.sh +71 -0
  23. imdclient/tests/server.py +2 -11
  24. imdclient/tests/test_imdclient.py +18 -0
  25. imdclient/tests/test_imdreader.py +60 -1
  26. imdclient/tests/test_manual.py +221 -65
  27. {imdclient-0.1.3.dist-info → imdclient-0.1.4.dist-info}/METADATA +1 -1
  28. imdclient-0.1.4.dist-info/RECORD +57 -0
  29. imdclient-0.1.3.dist-info/RECORD +0 -42
  30. {imdclient-0.1.3.dist-info → imdclient-0.1.4.dist-info}/AUTHORS.md +0 -0
  31. {imdclient-0.1.3.dist-info → imdclient-0.1.4.dist-info}/LICENSE +0 -0
  32. {imdclient-0.1.3.dist-info → imdclient-0.1.4.dist-info}/WHEEL +0 -0
  33. {imdclient-0.1.3.dist-info → imdclient-0.1.4.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,11 @@
1
+ import imdclient
1
2
  from imdclient.IMD import IMDReader
2
- import pytest
3
3
  import MDAnalysis as mda
4
- from MDAnalysisTests.coordinates.base import assert_timestep_almost_equal
5
- from numpy.testing import (
6
- assert_allclose,
7
- )
4
+ from numpy.testing import assert_allclose
8
5
  import numpy as np
9
- from .base import assert_allclose_with_logging
10
6
  from pathlib import Path
11
-
7
+ import time
8
+ import argparse
12
9
  import logging
13
10
 
14
11
  logger = logging.getLogger("imdclient.IMDClient")
@@ -20,74 +17,233 @@ file_handler.setFormatter(formatter)
20
17
  logger.addHandler(file_handler)
21
18
  logger.setLevel(logging.DEBUG)
22
19
 
20
+ """
21
+ Tool for running IMDv3 integration tests via the command line.
23
22
 
24
- class TestIMDv3Manual:
25
- """
26
- Tool for running IMDv3 integration tests via the command line.
23
+ To use, start the simulation, wait for it to be ready for an IMD connection,
24
+ and then run this command relative to the root of the cloned respository:
27
25
 
28
- To use, start the simulation, wait for it to be ready for an IMD connection,
29
- and then run this command relative to the root of the cloned respository:
26
+ python imdclient/tests/test_manual.py \
27
+ --topol_path <path/to/topology> \
28
+ --traj_path <path/to/trajectory> \
29
+ --first_frame <first frame to compare> \
30
+ --tmp_path <temporary directory for IMD trajectory>
30
31
 
31
- pytest -s imdclient/tests/test_manual.py \
32
- --topol_path_arg <path/to/topology> \
33
- --traj_path_arg <path/to/trajectory> \
34
- --first_frame_arg <first traj frame to compare to IMD>
32
+ Where the topology is the same topology as the IMD system, the trajectory is the path where
33
+ the trajectory of the running simulation is being written, and the first frame is the first frame of the
34
+ trajectory which should be compared to IMD data read from the socket (0 for GROMACS and NAMD, 1 for LAMMPS)
35
+ """
36
+
37
+
38
+ def assert_allclose_with_logging(a, b, rtol=1e-07, atol=0, equal_nan=False):
39
+ """
40
+ Custom function to compare two arrays element-wise, similar to np.testing.assert_allclose,
41
+ but logs all non-matching values.
35
42
 
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
38
- trajectory which should be compared to IMD data read from the socket (0 for GROMACS and NAMD, 1 for LAMMPS)
43
+ Parameters:
44
+ a, b : array_like
45
+ Input arrays to compare.
46
+ rtol : float
47
+ Relative tolerance.
48
+ atol : float
49
+ Absolute tolerance.
50
+ equal_nan : bool
51
+ Whether to compare NaNs as equal.
39
52
  """
53
+ # Convert inputs to numpy arrays
54
+ a = np.asarray(a)
55
+ b = np.asarray(b)
56
+
57
+ # Compute the absolute difference
58
+ diff = np.abs(a - b)
59
+
60
+ # Check if values are within tolerance
61
+ not_close = diff > (atol + rtol * np.abs(b))
62
+
63
+ # Check if there are any NaNs and handle them if necessary
64
+ if equal_nan:
65
+ nan_mask = np.isnan(a) & np.isnan(b)
66
+ not_close &= ~nan_mask
67
+
68
+ # Log all the values that are not close
69
+ if np.any(not_close):
70
+ print("The following values do not match within tolerance:")
71
+ for idx in np.argwhere(not_close):
72
+ logger.debug(
73
+ f"a[{tuple(idx)}]: {a[tuple(idx)]}, b[{tuple(idx)}]: {b[tuple(idx)]}, diff: {diff[tuple(idx)]}"
74
+ )
75
+ # Optionally raise an error after logging if you want it to behave like assert
76
+ raise AssertionError("Arrays are not almost equal.")
77
+ else:
78
+ print("All values are within tolerance.")
79
+
40
80
 
41
- @pytest.fixture()
42
- def true_u(self, imd_u, topol_path_arg, traj_path_arg):
43
- return mda.Universe(topol_path_arg, traj_path_arg)
44
-
45
- @pytest.fixture()
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"
81
+ def load_true_universe(topol_path, traj_path):
82
+ if topol_path.endswith(".data"):
83
+ return mda.Universe(
84
+ topol_path,
85
+ traj_path,
86
+ atom_style="id type x y z",
87
+ convert_units=False,
55
88
  )
56
- yield imd_u
89
+ return mda.Universe(topol_path, traj_path)
57
90
 
58
- def test_compare_imd_to_true_traj(self, true_u, imd_u, first_frame_arg):
59
91
 
60
- for i in range(first_frame_arg, len(true_u.trajectory)):
92
+ def load_imd_universe(topol_path, tmp_path):
93
+ # Pass atom_style (ignored if not using LAMMPS topol)
94
+ tmp_u = mda.Universe(
95
+ topol_path,
96
+ "imd://localhost:8888",
97
+ atom_style="id type x y z",
98
+ )
99
+ tmp_traj_file = f"{tmp_path}/imd_test_traj.trr"
100
+ with mda.Writer(tmp_traj_file, tmp_u.atoms.n_atoms) as w:
101
+ for ts in tmp_u.trajectory:
102
+ w.write(tmp_u.atoms)
103
+ time.sleep(10) # Give MPI ranks a chance to release FD
104
+ return mda.Universe(topol_path, tmp_traj_file, atom_style="id type x y z")
105
+
106
+
107
+ def test_compare_imd_to_true_traj_vel(imd_u, true_u_vel, first_frame):
108
+ for i in range(first_frame, len(true_u_vel.trajectory)):
109
+ # Manually convert unit
110
+ assert_allclose_with_logging(
111
+ true_u_vel.trajectory[i].positions * 20.45482706,
112
+ imd_u.trajectory[i - first_frame].velocities,
113
+ atol=1e-03,
114
+ )
115
+
116
+
117
+ def test_compare_imd_to_true_traj_forces(imd_u, true_u_force, first_frame):
118
+ for i in range(first_frame, len(true_u_force.trajectory)):
119
+ assert_allclose_with_logging(
120
+ true_u_force.trajectory[i].positions,
121
+ imd_u.trajectory[i - first_frame].forces,
122
+ atol=1e-03,
123
+ )
124
+
125
+
126
+ def test_compare_imd_to_true_traj(imd_u, true_u, first_frame, vel, force, dt):
127
+ for i in range(first_frame, len(true_u.trajectory)):
128
+ assert_allclose(
129
+ true_u.trajectory[i].time,
130
+ imd_u.trajectory[i - first_frame].time,
131
+ atol=1e-03,
132
+ )
133
+ if dt:
61
134
  assert_allclose(
62
- true_u.trajectory[i].time,
63
- imd_u.trajectory[i - first_frame_arg].time,
135
+ true_u.trajectory[i].dt,
136
+ imd_u.trajectory[i - first_frame].dt,
64
137
  atol=1e-03,
65
138
  )
66
- assert_allclose(
67
- true_u.trajectory[i].data["step"],
68
- imd_u.trajectory[i - first_frame_arg].data["step"],
139
+ assert_allclose(
140
+ true_u.trajectory[i].data["step"],
141
+ imd_u.trajectory[i - first_frame].data["step"],
142
+ )
143
+ assert_allclose_with_logging(
144
+ true_u.trajectory[i].dimensions,
145
+ imd_u.trajectory[i - first_frame].dimensions,
146
+ atol=1e-03,
147
+ )
148
+ assert_allclose_with_logging(
149
+ true_u.trajectory[i].positions,
150
+ imd_u.trajectory[i - first_frame].positions,
151
+ atol=1e-03,
152
+ )
153
+ if vel:
154
+ assert_allclose_with_logging(
155
+ true_u.trajectory[i].velocities,
156
+ imd_u.trajectory[i - first_frame].velocities,
157
+ atol=1e-03,
69
158
  )
70
- if true_u.trajectory[i].dimensions is not None:
71
- assert_allclose_with_logging(
72
- true_u.trajectory[i].dimensions,
73
- imd_u.trajectory[i - first_frame_arg].dimensions,
74
- atol=1e-03,
75
- )
76
- if true_u.trajectory[i].has_positions:
77
- assert_allclose_with_logging(
78
- true_u.trajectory[i].positions,
79
- imd_u.trajectory[i - first_frame_arg].positions,
80
- atol=1e-03,
81
- )
82
- if true_u.trajectory[i].has_velocities:
83
- assert_allclose_with_logging(
84
- true_u.trajectory[i].velocities,
85
- imd_u.trajectory[i - first_frame_arg].velocities,
86
- atol=1e-03,
87
- )
88
- if true_u.trajectory[i].has_forces:
89
- assert_allclose_with_logging(
90
- true_u.trajectory[i].forces,
91
- imd_u.trajectory[i - first_frame_arg].forces,
92
- atol=1e-03,
93
- )
159
+ if force:
160
+ assert_allclose_with_logging(
161
+ true_u.trajectory[i].forces,
162
+ imd_u.trajectory[i - first_frame].forces,
163
+ atol=1e-03,
164
+ )
165
+
166
+
167
+ def main():
168
+ parser = argparse.ArgumentParser(description="IMDv3 Integration Test Tool")
169
+ parser.add_argument(
170
+ "--topol_path", required=True, help="Path to topology file"
171
+ )
172
+ parser.add_argument(
173
+ "--traj_path", required=True, help="Path to trajectory file"
174
+ )
175
+ parser.add_argument(
176
+ "--vel_path",
177
+ required=False,
178
+ help="Path to velocities trajectory file (NAMD only)",
179
+ )
180
+ parser.add_argument(
181
+ "--force_path",
182
+ required=False,
183
+ help="Path to forces trajectory file (NAMD only)",
184
+ )
185
+ parser.add_argument(
186
+ "--first_frame",
187
+ type=int,
188
+ required=True,
189
+ help="First frame to compare (0 for GROMACS and NAMD, 1 for LAMMPS)",
190
+ )
191
+ parser.add_argument(
192
+ "--tmp_path", default=".", help="Temporary directory for IMD traj"
193
+ )
194
+
195
+ args = parser.parse_args()
196
+
197
+ print(
198
+ "Writing IMD trajectory to temporary directory...\n===================="
199
+ )
200
+ imd_u = load_imd_universe(args.topol_path, args.tmp_path)
201
+
202
+ print("Loading source of truth trajectory...\n====================")
203
+ true_u = load_true_universe(args.topol_path, args.traj_path)
204
+
205
+ try:
206
+ print("Comparing trajectories...\n====================")
207
+ vel_in_trr = args.vel_path is None
208
+ force_in_trr = args.force_path is None
209
+ dt_in_trr = not args.topol_path.endswith(".data")
210
+
211
+ test_compare_imd_to_true_traj(
212
+ imd_u,
213
+ true_u,
214
+ args.first_frame,
215
+ vel_in_trr,
216
+ force_in_trr,
217
+ dt_in_trr,
218
+ )
219
+
220
+ if args.vel_path is not None:
221
+ print(
222
+ "Loading source of truth velocity trajectory...\n===================="
223
+ )
224
+ true_vel = load_true_universe(args.topol_path, args.vel_path)
225
+ print("Comparing velocities...")
226
+ test_compare_imd_to_true_traj_vel(
227
+ imd_u, true_vel, args.first_frame
228
+ )
229
+
230
+ if args.force_path is not None:
231
+ print(
232
+ "Loading source of truth force trajectory...\n===================="
233
+ )
234
+ true_force = load_true_universe(args.topol_path, args.force_path)
235
+ print("Comparing forces...")
236
+ test_compare_imd_to_true_traj_forces(
237
+ imd_u, true_force, args.first_frame
238
+ )
239
+
240
+ print("All tests passed!")
241
+
242
+ except AssertionError as e:
243
+ logger.error("Comparison failed!")
244
+ print(f"Test failed: {e}")
245
+ raise e
246
+
247
+
248
+ if __name__ == "__main__":
249
+ main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imdclient
3
- Version: 0.1.3
3
+ Version: 0.1.4
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>
@@ -0,0 +1,57 @@
1
+ imdclient/IMD.py,sha256=QkYU0OUxrrjKVxumeEju3Jcewkj46K7DBk_J3vO5m1E,3842
2
+ imdclient/IMDClient.py,sha256=9AMKniQaCNDgWO2esF_SXEgdf3fp_4pcZ5fUNpzewcY,34349
3
+ imdclient/IMDProtocol.py,sha256=wePIuFlKGIULWXHJPCmzRVWBGlBiyDOJXgjxyQb7ssY,4063
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=VFAS3uM0oifxuX5WLz85vvRlwmzR-BhQbMCzjweaJcU,3040
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=gbu39CpII5mc9-rDSEZoQNv8JmNFwW1vviYkfOQmbD4,8043
25
+ imdclient/tests/conftest.py,sha256=Xqz9ZjBXpnViSryR4CXjJdOyqZ1MOCAjuA0sRVwAVfk,31
26
+ imdclient/tests/datafiles.py,sha256=0wAg1q5oB3Ve6XnSfnB6oGzbh7JvVpSGpj-ba0H2Z5w,1515
27
+ imdclient/tests/server.py,sha256=x3IY5FDDS4z99_UyuuRe56CHd_XtfINJRolGbkNyOl8,6629
28
+ imdclient/tests/test_gromacs.py,sha256=rXkabRB40xX7LRdF2_nrPgeNpfFF9J7m-5LeRNMA5TM,1454
29
+ imdclient/tests/test_imdclient.py,sha256=FQwuNbJwOLgK33v5mFmbhaGaPSqXA8byTWFtYCpYyJo,7716
30
+ imdclient/tests/test_imdreader.py,sha256=-DEFcwef87CZPXut45I2gpZPg_K3XXPFFreBqsW3ciE,25433
31
+ imdclient/tests/test_lammps.py,sha256=hwZBVvhclN1mtPuYLyODUaWjlaZaAkhAFqX-mpQvWk4,2244
32
+ imdclient/tests/test_manual.py,sha256=t5NeT1oPit9EMGxH4yG7hxnKQ24UEzZtR-vC1WOQAkc,8118
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/tests/hpc_testing/gromacs/README.md,sha256=2SHVtIu5EyS8bwCMeWTZFgQoh1mmOwcBFjijzYDkj6k,2847
38
+ imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.mdp,sha256=BZl554WoHVi0bQq-Eb8UeYrdfum2TBHhtWFj4DxReCY,3050
39
+ imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.top,sha256=AXFEDjvz5Qqq-VECffimdeEvhD6L-H0SFPILW-6Sums,348329
40
+ imdclient/tests/hpc_testing/gromacs/struct.gro,sha256=uT_Je8Jc37-o8gfkhFRH0PWcg3LOGkQj4ErSCkLMk00,1459301
41
+ imdclient/tests/hpc_testing/gromacs/validate_gmx.sh,sha256=dszRgiWu-_9b4DxQP4u5x4Hi1liedjMG2YXQNURZQsQ,1938
42
+ imdclient/tests/hpc_testing/lammps/README.md,sha256=Ek5z8H3gSxCoHg-gymMfmqKqi1URFvgRH4dYZuaC8Ro,1594
43
+ imdclient/tests/hpc_testing/lammps/lammps_v3_nst_1.in,sha256=AcvkgNNDtTkB7RlFZwpUEKKp6W_7o_UFgrX_LwC3HXI,2586
44
+ imdclient/tests/hpc_testing/lammps/topology_after_min.data,sha256=6CXJTFiVnnK6rKGK541sFYZ_6xjlkjebeWu0KPQl8Gc,172948
45
+ imdclient/tests/hpc_testing/lammps/validate_lmp.sh,sha256=gqNFUvxLojBM1yrUHloL4FJm8pl4CNjTvgSYwh11pTc,1402
46
+ imdclient/tests/hpc_testing/namd/README.md,sha256=fNnhQPcVS-wkG4aCtj7ru2CpoIMmxJFA9-9bGa9NQ2o,2103
47
+ imdclient/tests/hpc_testing/namd/alanin.params,sha256=zWw-UfqYD3-xpdA_8R8T-0OYBbUM6py7jKAq_uyu8HE,17389
48
+ imdclient/tests/hpc_testing/namd/alanin.pdb,sha256=eccDD-ledUXjbB2s1fxY40lmAKWWDpxkxANbsOkqjHc,5615
49
+ imdclient/tests/hpc_testing/namd/alanin.psf,sha256=VhCZeGFhpUa8yN5iEL19zlVjqIJg2JIdPzhazpRForY,12953
50
+ imdclient/tests/hpc_testing/namd/namd_v3_nst_1.namd,sha256=EZU7PGyytZdGixrBnmpAcwonN0n_JTk9U-Q82FoqO7k,983
51
+ imdclient/tests/hpc_testing/namd/validate_namd.sh,sha256=oMZNkY2p13q_4TJwepS5WjlT4xwxCoaZbDiWfLIWIvs,1543
52
+ imdclient-0.1.4.dist-info/AUTHORS.md,sha256=R4JTI7mrgL1WYgfyuAv4quw0e0oLQGVjWcMQa-UXJlE,652
53
+ imdclient-0.1.4.dist-info/LICENSE,sha256=28aS5DC2LCwcOVe3VN0g2L-Dooqof34T9TMGJ6jqMig,593
54
+ imdclient-0.1.4.dist-info/METADATA,sha256=Uu9wpmeThDtEKtLPeqElgkG9R_DZSyxsIxzQUOjchds,6531
55
+ imdclient-0.1.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
56
+ imdclient-0.1.4.dist-info/top_level.txt,sha256=40W62GWiXUT2CbDm-No7GTeJG160wyIMpk1hBNrdkkE,10
57
+ imdclient-0.1.4.dist-info/RECORD,,
@@ -1,42 +0,0 @@
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,,