imdclient 0.1.3__tar.gz → 0.2.0b0__tar.gz

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 (72) hide show
  1. {imdclient-0.1.3 → imdclient-0.2.0b0}/AUTHORS.md +4 -1
  2. imdclient-0.2.0b0/CHANGELOG.md +148 -0
  3. {imdclient-0.1.3 → imdclient-0.2.0b0}/LICENSE +3 -1
  4. {imdclient-0.1.3 → imdclient-0.2.0b0}/PKG-INFO +60 -39
  5. imdclient-0.2.0b0/README.md +119 -0
  6. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/IMDClient.py +43 -12
  7. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/IMDProtocol.py +1 -0
  8. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/__init__.py +0 -5
  9. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_v3_nst1.mdp +3 -3
  10. imdclient-0.2.0b0/imdclient/data/namd/md/namd3 +0 -0
  11. imdclient-0.2.0b0/imdclient/data/namd/md/namd_v3_nst_1.namd +59 -0
  12. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/base.py +108 -83
  13. imdclient-0.2.0b0/imdclient/tests/conftest.py +3 -0
  14. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/datafiles.py +16 -1
  15. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/docker_testing/docker.md +1 -1
  16. imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/README.md +112 -0
  17. imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.mdp +58 -0
  18. imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.top +11764 -0
  19. imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/struct.gro +21151 -0
  20. imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/validate_gmx.sh +90 -0
  21. imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/README.md +62 -0
  22. imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/lammps_v3_nst_1.in +71 -0
  23. imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/topology_after_min.data +8022 -0
  24. imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/validate_lmp.sh +66 -0
  25. imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/README.md +147 -0
  26. imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/alanin.params +402 -0
  27. imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/alanin.pdb +77 -0
  28. imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/alanin.psf +206 -0
  29. {imdclient-0.1.3/imdclient/data/namd/md → imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd}/namd_v3_nst_1.namd +0 -0
  30. imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/validate_namd.sh +71 -0
  31. imdclient-0.2.0b0/imdclient/tests/minimalreader.py +86 -0
  32. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/server.py +6 -14
  33. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_gromacs.py +15 -3
  34. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_imdclient.py +26 -7
  35. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_lammps.py +22 -19
  36. imdclient-0.2.0b0/imdclient/tests/test_manual.py +251 -0
  37. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_namd.py +39 -16
  38. imdclient-0.2.0b0/imdclient/tests/test_utils.py +31 -0
  39. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/utils.py +50 -17
  40. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/PKG-INFO +60 -39
  41. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/SOURCES.txt +19 -8
  42. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/requires.txt +4 -3
  43. {imdclient-0.1.3 → imdclient-0.2.0b0}/pyproject.toml +11 -9
  44. imdclient-0.1.3/CHANGELOG.md +0 -37
  45. imdclient-0.1.3/README.md +0 -105
  46. imdclient-0.1.3/imdclient/IMD.py +0 -130
  47. imdclient-0.1.3/imdclient/backends.py +0 -352
  48. imdclient-0.1.3/imdclient/results.py +0 -332
  49. imdclient-0.1.3/imdclient/streamanalysis.py +0 -1056
  50. imdclient-0.1.3/imdclient/streambase.py +0 -199
  51. imdclient-0.1.3/imdclient/tests/conftest.py +0 -42
  52. imdclient-0.1.3/imdclient/tests/test_imdreader.py +0 -658
  53. imdclient-0.1.3/imdclient/tests/test_manual.py +0 -93
  54. imdclient-0.1.3/imdclient/tests/test_stream_analysis.py +0 -61
  55. {imdclient-0.1.3 → imdclient-0.2.0b0}/CODE_OF_CONDUCT.md +0 -0
  56. {imdclient-0.1.3 → imdclient-0.2.0b0}/MANIFEST.in +0 -0
  57. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/__init__.py +0 -0
  58. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_struct.gro +0 -0
  59. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_v3.top +0 -0
  60. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_v3_nst8.mdp +0 -0
  61. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/lammps/md/lammps_topol.data +0 -0
  62. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/lammps/md/lammps_v3_nst_1.in +0 -0
  63. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/lammps/md/lammps_v3_nst_8.in +0 -0
  64. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/alanin.params +0 -0
  65. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/alanin.pdb +0 -0
  66. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/alanin.psf +0 -0
  67. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/namd_v3_nst_8.namd +0 -0
  68. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/__init__.py +0 -0
  69. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/utils.py +0 -0
  70. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/dependency_links.txt +0 -0
  71. {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/top_level.txt +0 -0
  72. {imdclient-0.1.3 → imdclient-0.2.0b0}/setup.cfg +0 -0
@@ -4,7 +4,7 @@ IMDClient was created by Lawson in 2024.
4
4
 
5
5
 
6
6
  <!-- All contributing authors are listed in this file below.
7
- The repository history at https://github.com/becksteinlab/imdreader
7
+ The repository history at https://github.com/becksteinlab/imdclient
8
8
  and the CHANGELOG show individual code contributions. -->
9
9
 
10
10
  ## Chronological list of authors
@@ -19,5 +19,8 @@ The rules for this file:
19
19
  * Don't ever delete anything
20
20
  -->
21
21
 
22
+ **2025**
23
+ - Amruthesh Thirumalaiswamy <@amruthesht>
24
+
22
25
  **2024**
23
26
  - Lawson <@ljwoods2>
@@ -0,0 +1,148 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ <!--
8
+ The rules for this file:
9
+ * entries are sorted newest-first.
10
+ * summarize sets of changes - don't reproduce every git log comment here.
11
+ * don't ever delete anything.
12
+ * keep the format consistent:
13
+ * do not use tabs but use spaces for formatting
14
+ * 79 char width
15
+ * YYYY-MM-DD date format (following ISO 8601)
16
+ * accompany each entry with github issue/PR number (Issue #xyz)
17
+ -->
18
+
19
+ ## [v0.2.0] - 2025-??-??
20
+
21
+ ### Authors
22
+ <!-- GitHub usernames of contributors to this release -->
23
+ @amruthesht @ljwoods2
24
+
25
+ ### Added
26
+ <!-- New added features -->
27
+ * Updated installation instructions by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/74
28
+ * MD engine links updated in IMDClient documnetation by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/73
29
+ * Parse input files for DT when not in traj by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/71
30
+
31
+ ### Fixed
32
+ <!-- Bug fixes -->
33
+
34
+ ### Changed
35
+ <!-- Changes in existing functionality -->
36
+ * IMDReader removed from imdclient by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/54
37
+
38
+ ### Deprecated
39
+ <!-- Soon-to-be removed features -->
40
+
41
+ ### Removed
42
+ <!-- Removed features -->
43
+
44
+
45
+
46
+ ## [v0.1.5-alpha] - 2025-06-24
47
+
48
+ ### Authors
49
+ <!-- GitHub usernames of contributors to this release -->
50
+ @orbeckst @amruthesht @hcho38 @ljwoods2
51
+
52
+ ### Added
53
+ <!-- New added features -->
54
+ * NAMD Testing with private image + Docs by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/46
55
+ * Lammps usage docs by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/49
56
+ * Instructions for various namd builds by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/51
57
+ * chore: added client.py files and cleaned uo output data from examples by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/52
58
+ * add codecov token to workflow by @orbeckst in https://github.com/Becksteinlab/imdclient/pull/60
59
+ * add sphinx.configuration for RTD by @orbeckst in https://github.com/Becksteinlab/imdclient/pull/62
60
+ * Updated CHANGELOG based on the release notes of IMDClient by @hcho38 in https://github.com/Becksteinlab/imdclient/pull/67
61
+ * `IMD_TIME` packet definitions modified by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/68
62
+
63
+ ### Changed
64
+ <!-- Changes in existing functionality -->
65
+ * Run all simulation enegine tests regardless of failed tests by @amruthesht in https://github.com/Becksteinlab/imdclient/pull/69
66
+
67
+
68
+
69
+ ## [v0.1.4] - 2024-12-13
70
+
71
+ ### Authors
72
+ <!-- GitHub usernames of contributors to this release -->
73
+ @ljwoods2 @hcho38
74
+
75
+ ### Added
76
+ <!-- New added features -->
77
+ * Simulation engine GPU + MPI testing by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/21
78
+ * Add continue_after_disconnect option (wait packet implementation) by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/44
79
+ * Reader test by @hcho38 in https://github.com/Becksteinlab/imdclient/pull/16
80
+
81
+
82
+ ## [v0.1.3] - 2024-11-29
83
+
84
+ ### Authors
85
+ <!-- GitHub usernames of contributors to this release -->
86
+ @ljwoods2 @orbeckst
87
+
88
+ ### Added
89
+ <!-- New added features -->
90
+ * Docker by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/30
91
+
92
+ ### Fixed
93
+ <!-- Bug fixes -->
94
+ * Better error messages, Context manager by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/34
95
+
96
+ ### Changed
97
+ <!-- Changes in existing functionality -->
98
+ * Renamed IMDREADER to IMD by @orbeckst in https://github.com/Becksteinlab/imdclient/pull/38
99
+
100
+
101
+ ## [v0.1.2] - 2024-10-28
102
+
103
+ ### Authors
104
+ <!-- GitHub usernames of contributors to this release -->
105
+ @ljwoods2
106
+
107
+ ### Added
108
+ <!-- New added features -->
109
+ * Wait flag writeup by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/28
110
+
111
+ ### Fixed
112
+ <!-- Bug fixes -->
113
+ * URI, Docstring fixes by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/29
114
+
115
+
116
+ ## [v0.1.1] - 2024-10-14
117
+
118
+ ### Authors
119
+ <!-- GitHub usernames of contributors to this release -->
120
+ @ljwoods2
121
+
122
+ ### Changed
123
+ <!-- Changes in existing functionality -->
124
+ * Changed license from MIT to GPLv3 for compatibility with MDAnalysis by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/25
125
+
126
+
127
+ ## [v0.1.0] - 2024-10-13
128
+
129
+ ### Authors
130
+ <!-- GitHub usernames of contributors to this release -->
131
+ @ljwoods2 @hcho38
132
+
133
+ ### Added
134
+ <!-- New added features -->
135
+ * New order by @hcho38 in https://github.com/Becksteinlab/imdclient/pull/14
136
+ * Manual integration test tool by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/18
137
+ * Installation instructions by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/19
138
+ * New protocol writeup by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/17
139
+ * Stackable, streamable analysis by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/20
140
+ * Prepare CI for 0.1.0 release by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/22
141
+
142
+ ### Fixed
143
+ <!-- Bug fixes -->
144
+ * StreamReaderBase, GROMACS fixes by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/15
145
+
146
+ ### Changed
147
+ <!-- Changes in existing functionality -->
148
+ * LAMMPS updates by @ljwoods2 in https://github.com/Becksteinlab/imdclient/pull/13
@@ -2,4 +2,6 @@ Copyright 2024 Lawson Woods
2
2
 
3
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
4
 
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,29 +1,36 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: imdclient
3
- Version: 0.1.3
3
+ Version: 0.2.0b0
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
- Maintainer-email: Lawson <ljwoods2@asu.edu>
6
+ Maintainer-email: Lawson <ljwoods2@asu.edu>, Amruthesh Thirumalaiswamy <athiru12@asu.edu>
7
7
  License: Copyright 2024 Lawson Woods
8
8
 
9
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:
10
10
 
11
11
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14
+
15
+ Project-URL: source, https://github.com/becksteinlab/imdclient
16
+ Project-URL: documentation, https://imdclient.readthedocs.io
12
17
  Keywords: molecular simulations
13
- Requires-Python: >=3.9
18
+ Requires-Python: >=3.10
14
19
  Description-Content-Type: text/markdown
15
20
  License-File: LICENSE
16
21
  License-File: AUTHORS.md
17
- Requires-Dist: MDAnalysis>=2.7.0
22
+ Requires-Dist: numpy
18
23
  Provides-Extra: test
19
24
  Requires-Dist: pytest>=6.0; extra == "test"
20
25
  Requires-Dist: pytest-xdist>=2.5; extra == "test"
21
26
  Requires-Dist: pytest-cov>=3.0; extra == "test"
22
- Requires-Dist: MDAnalysisTests>=2.7.0; extra == "test"
27
+ Requires-Dist: MDAnalysis; extra == "test"
28
+ Requires-Dist: MDAnalysisTests; extra == "test"
23
29
  Requires-Dist: docker-py; extra == "test"
24
30
  Provides-Extra: doc
25
31
  Requires-Dist: sphinx; extra == "doc"
26
- Requires-Dist: sphinx_rtd_theme; extra == "doc"
32
+ Requires-Dist: mdanalysis-sphinx-theme>=1.0.1; extra == "doc"
33
+ Dynamic: license-file
27
34
 
28
35
  IMDClient
29
36
  ==============================
@@ -32,86 +39,99 @@ IMDClient
32
39
  | **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]|
33
40
  | :----------------- | :------- |
34
41
  | **Status** | [![GH Actions Status][badge_actions]][url_actions] [![codecov][badge_codecov]][url_codecov] |
35
- | **Community** | [![License: MIT][badge_license]][url_license] [![Powered by MDAnalysis][badge_mda]][url_mda]|
42
+ | **Community** | [![License: MIT][badge_license]][url_license]
36
43
 
37
44
  [badge_actions]: https://github.com/becksteinlab/imdclient/actions/workflows/gh-ci.yaml/badge.svg
38
45
  [badge_codecov]: https://codecov.io/gh/becksteinlab/imdclient/branch/main/graph/badge.svg
39
46
  [badge_commits_since]: https://img.shields.io/github/commits-since/becksteinlab/imdclient/latest
40
47
  [badge_docs]: https://readthedocs.org/projects/imdclient/badge/?version=latest
41
48
  [badge_license]: https://img.shields.io/badge/License-MIT-blue.svg
42
- [badge_mda]: https://img.shields.io/badge/powered%20by-MDAnalysis-orange.svg?logoWidth=16&logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD+XwCY/fEAkf3uAJf97wGT/a+HfHaoiIWE7n9/f+6Hh4fvgICAjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT/yYAlP//AJ///wCg//8JjvOchXly1oaGhv+Ghob/j4+P/39/f3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH8aQCY/8wAkv2kfY+elJ6al/yVlZX7iIiI8H9/f7h/f38UAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38egYF/noqAebF8gYaagnx3oFpUUtZpaWr/WFhY8zo6OmT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAn46Ojv+Hh4b/jouJ/4iGhfcAAADnAAAA/wAAAP8AAADIAAAAAwCj/zIAnf2VAJD/PAAAAAAAAAAAAAAAAICAgNGHh4f/gICA/4SEhP+Xl5f/AwMD/wAAAP8AAAD/AAAA/wAAAB8Aov9/ALr//wCS/Z0AAAAAAAAAAAAAAACBgYGOjo6O/4mJif+Pj4//iYmJ/wAAAOAAAAD+AAAA/wAAAP8AAABhAP7+FgCi/38Axf4fAAAAAAAAAAAAAAAAiIiID4GBgYKCgoKogoB+fYSEgZhgYGDZXl5e/m9vb/9ISEjpEBAQxw8AAFQAAAAAAAAANQAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6Mb5iYmP+cnJz/jY2N95CQkO4pKSn/AAAA7gAAAP0AAAD7AAAAhgAAAAEAAAAAAAAAAACL/gsAkv2uAJX/QQAAAAB9fX3egoKC/4CAgP+NjY3/c3Nz+wAAAP8AAAD/AAAA/wAAAPUAAAAcAAAAAAAAAAAAnP4NAJL9rgCR/0YAAAAAfX19w4ODg/98fHz/i4uL/4qKivwAAAD/AAAA/wAAAP8AAAD1AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxsVyqqqr/mpqa/6mpqf9KSUn/AAAA5QAAAPkAAAD5AAAAhQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkUFBSuZ2dn/3V1df8uLi7bAAAATgBGfyQAAAA2AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAADoAAAA/wAAAP8AAAD/AAAAWgC3/2AAnv3eAJ/+dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9AAAA/wAAAP8AAAD/AAAA/wAKDzEAnP3WAKn//wCS/OgAf/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAANwAAADtAAAA7QAAAMAAABUMAJn9gwCe/e0Aj/2LAP//AQAAAAAAAAAA
43
49
  [badge_release]: https://img.shields.io/github/release-pre/becksteinlab/imdclient.svg
44
50
  [url_actions]: https://github.com/becksteinlab/imdclient/actions?query=branch%3Amain+workflow%3Agh-ci
45
51
  [url_codecov]: https://codecov.io/gh/becksteinlab/imdclient/branch/main
46
52
  [url_docs]: https://imdclient.readthedocs.io/en/latest/?badge=latest
47
53
  [url_latest_release]: https://github.com/becksteinlab/imdclient/releases
48
54
  [url_license]: https://opensource.org/license/mit
49
- [url_mda]: https://www.mdanalysis.org
50
55
 
51
56
  Receiver for [IMDv3 protocol](https://imdclient.readthedocs.io/en/latest/protocol_v3.html) from simulation engines like Gromacs, LAMMPS, and NAMD.
52
57
 
53
- IMDClient is bound by a [Code of Conduct](https://github.com/becksteinlab/imdreader/blob/main/CODE_OF_CONDUCT.md).
58
+ IMDClient is bound by a [Code of Conduct](https://github.com/becksteinlab/imdclient/blob/main/CODE_OF_CONDUCT.md).
54
59
 
55
60
  ### Installation
56
61
 
57
- IMDClient is available via PyPi and can be installed with pip:
58
- ```bash
62
+ #### Install via mamba (recommended)
63
+ To install the latest release of IMDClient from conda-forge:
64
+
65
+ ```
66
+ mamba install -c conda-forge imdclient
67
+ ```
68
+
69
+ #### Install via pip
70
+ To install the latest release of IMDClient from PyPI:
71
+
72
+ ```
59
73
  pip install imdclient
60
74
  ```
61
75
 
62
- To build IMDClient from source,
63
- we highly recommend using virtual environments.
64
- If possible, we strongly recommend that you use
65
- [Anaconda](https://docs.conda.io/en/latest/) as your package manager.
66
- Below we provide instructions both for `conda` and
67
- for `pip`.
76
+ ---
68
77
 
69
- #### With conda
78
+ ### Building from Source
79
+ To build IMDClient from source, we highly recommend using virtual environments.
80
+ If possible, we recommend that you use [mamba](https://mamba.readthedocs.io/en/latest/) as your package manager through [miniforge](https://github.com/conda-forge/miniforge). (You can substitute `conda` for `mamba` in the commands below if you prefer.)
70
81
 
71
- Ensure that you have [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html) installed.
82
+ Below we provide instructions both for `mamba` and for `pip`.
72
83
 
73
- Create a virtual environment and activate it:
84
+ #### Source build with mamba
85
+ 1. Ensure you have [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) installed.
86
+
87
+ 2. Create and activate a new environment:
74
88
 
75
89
  ```
76
- conda create --name imdclient
77
- conda activate imdclient
90
+ mamba create --name imdclient
91
+ mamba activate imdclient
78
92
  ```
79
93
 
80
- <!-- Install the development and documentation dependencies:
94
+ 3. (Recommended) Install all dependencies using the provided environment YAML files for a clean and reproducible environment:
81
95
 
82
96
  ```
83
- conda env update --name imdreader --file devtools/conda-envs/test_env.yaml
84
- conda env update --name imdreader --file docs/requirements.yaml
85
- ``` -->
97
+ mamba env update --name imdclient --file devtools/conda-envs/test_env.yaml
98
+ mamba env update --name imdclient --file docs/requirements.yaml
99
+ ```
86
100
 
87
- Build this package from source:
101
+ 4. Build and install IMDClient in editable mode:
88
102
 
89
103
  ```
90
104
  pip install -e .
91
105
  ```
92
106
 
93
- If you want to update your dependencies (which can be risky!), run:
107
+ 5. (Optional) Update dependencies:
94
108
 
95
109
  ```
96
- conda update --all
110
+ mamba update --all
97
111
  ```
98
112
 
99
- And when you are finished, you can exit the virtual environment with:
113
+ 6. Deactivate the environment when finished:
100
114
 
101
115
  ```
102
- conda deactivate
116
+ mamba deactivate
103
117
  ```
104
118
 
105
- #### With pip
119
+ #### Source build with pip
106
120
 
107
- To build the package from source, run:
121
+ 1. (Optional) Create and activate a virtual environment:
122
+
123
+ ```
124
+ python -m venv venv
125
+ source venv/bin/activate
126
+ ```
127
+
128
+ 2. Install IMDClient from source:
108
129
 
109
130
  ```
110
131
  pip install .
111
132
  ```
112
133
 
113
- If you want to create a development environment, install
114
- the dependencies required for tests and docs with:
134
+ 3. (Optional) For development (tests and docs):
115
135
 
116
136
  ```
117
137
  pip install ".[test,doc]"
@@ -122,11 +142,12 @@ pip install ".[test,doc]"
122
142
  The IMDClient source code is hosted at https://github.com/becksteinlab/imdclient
123
143
  and is available under the MIT license (see the file [LICENSE](https://github.com/becksteinlab/imdclient/blob/main/LICENSE)).
124
144
 
125
- Copyright (c) 2024, Lawson
145
+ Copyright (c) 2024-2025, imdclient [AUTHORS](https://github.com/Becksteinlab/imdclient/blob/main/AUTHORS.md)
126
146
 
127
147
 
128
148
  #### Acknowledgements
129
149
 
130
150
  Project based on the
131
151
  [MDAnalysis Cookiecutter](https://github.com/MDAnalysis/cookiecutter-mda) version 0.1.
132
- <!-- Please cite [MDAnalysis](https://github.com/MDAnalysis/mdanalysis#citation) when using IMDReader in published work. -->
152
+
153
+ **If you use IMDClient in your research, please cite [IMDClient](https://github.com/Becksteinlab/imdclient) in your publications.**
@@ -0,0 +1,119 @@
1
+ IMDClient
2
+ ==============================
3
+ [//]: # (Badges)
4
+
5
+ | **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]|
6
+ | :----------------- | :------- |
7
+ | **Status** | [![GH Actions Status][badge_actions]][url_actions] [![codecov][badge_codecov]][url_codecov] |
8
+ | **Community** | [![License: MIT][badge_license]][url_license]
9
+
10
+ [badge_actions]: https://github.com/becksteinlab/imdclient/actions/workflows/gh-ci.yaml/badge.svg
11
+ [badge_codecov]: https://codecov.io/gh/becksteinlab/imdclient/branch/main/graph/badge.svg
12
+ [badge_commits_since]: https://img.shields.io/github/commits-since/becksteinlab/imdclient/latest
13
+ [badge_docs]: https://readthedocs.org/projects/imdclient/badge/?version=latest
14
+ [badge_license]: https://img.shields.io/badge/License-MIT-blue.svg
15
+ [badge_release]: https://img.shields.io/github/release-pre/becksteinlab/imdclient.svg
16
+ [url_actions]: https://github.com/becksteinlab/imdclient/actions?query=branch%3Amain+workflow%3Agh-ci
17
+ [url_codecov]: https://codecov.io/gh/becksteinlab/imdclient/branch/main
18
+ [url_docs]: https://imdclient.readthedocs.io/en/latest/?badge=latest
19
+ [url_latest_release]: https://github.com/becksteinlab/imdclient/releases
20
+ [url_license]: https://opensource.org/license/mit
21
+
22
+ Receiver for [IMDv3 protocol](https://imdclient.readthedocs.io/en/latest/protocol_v3.html) from simulation engines like Gromacs, LAMMPS, and NAMD.
23
+
24
+ IMDClient is bound by a [Code of Conduct](https://github.com/becksteinlab/imdclient/blob/main/CODE_OF_CONDUCT.md).
25
+
26
+ ### Installation
27
+
28
+ #### Install via mamba (recommended)
29
+ To install the latest release of IMDClient from conda-forge:
30
+
31
+ ```
32
+ mamba install -c conda-forge imdclient
33
+ ```
34
+
35
+ #### Install via pip
36
+ To install the latest release of IMDClient from PyPI:
37
+
38
+ ```
39
+ pip install imdclient
40
+ ```
41
+
42
+ ---
43
+
44
+ ### Building from Source
45
+ To build IMDClient from source, we highly recommend using virtual environments.
46
+ If possible, we recommend that you use [mamba](https://mamba.readthedocs.io/en/latest/) as your package manager through [miniforge](https://github.com/conda-forge/miniforge). (You can substitute `conda` for `mamba` in the commands below if you prefer.)
47
+
48
+ Below we provide instructions both for `mamba` and for `pip`.
49
+
50
+ #### Source build with mamba
51
+ 1. Ensure you have [mamba](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html) installed.
52
+
53
+ 2. Create and activate a new environment:
54
+
55
+ ```
56
+ mamba create --name imdclient
57
+ mamba activate imdclient
58
+ ```
59
+
60
+ 3. (Recommended) Install all dependencies using the provided environment YAML files for a clean and reproducible environment:
61
+
62
+ ```
63
+ mamba env update --name imdclient --file devtools/conda-envs/test_env.yaml
64
+ mamba env update --name imdclient --file docs/requirements.yaml
65
+ ```
66
+
67
+ 4. Build and install IMDClient in editable mode:
68
+
69
+ ```
70
+ pip install -e .
71
+ ```
72
+
73
+ 5. (Optional) Update dependencies:
74
+
75
+ ```
76
+ mamba update --all
77
+ ```
78
+
79
+ 6. Deactivate the environment when finished:
80
+
81
+ ```
82
+ mamba deactivate
83
+ ```
84
+
85
+ #### Source build with pip
86
+
87
+ 1. (Optional) Create and activate a virtual environment:
88
+
89
+ ```
90
+ python -m venv venv
91
+ source venv/bin/activate
92
+ ```
93
+
94
+ 2. Install IMDClient from source:
95
+
96
+ ```
97
+ pip install .
98
+ ```
99
+
100
+ 3. (Optional) For development (tests and docs):
101
+
102
+ ```
103
+ pip install ".[test,doc]"
104
+ ```
105
+
106
+ ### Copyright
107
+
108
+ The IMDClient source code is hosted at https://github.com/becksteinlab/imdclient
109
+ and is available under the MIT license (see the file [LICENSE](https://github.com/becksteinlab/imdclient/blob/main/LICENSE)).
110
+
111
+ Copyright (c) 2024-2025, imdclient [AUTHORS](https://github.com/Becksteinlab/imdclient/blob/main/AUTHORS.md)
112
+
113
+
114
+ #### Acknowledgements
115
+
116
+ Project based on the
117
+ [MDAnalysis Cookiecutter](https://github.com/MDAnalysis/cookiecutter-mda) version 0.1.
118
+
119
+ **If you use IMDClient in your research, please cite [IMDClient](https://github.com/Becksteinlab/imdclient) in your publications.**
@@ -1,18 +1,27 @@
1
1
  """
2
-
3
- IMDClient
4
- ^^^^^^^^^
2
+ IMDClient module
3
+ ================
5
4
 
6
5
  .. autoclass:: IMDClient
7
6
  :members:
8
7
 
8
+ .. autoclass:: BaseIMDProducer
9
+ :members:
10
+ :inherited-members:
11
+
12
+ .. autoclass:: IMDProducerV2
13
+ :members:
14
+ :inherited-members:
15
+
9
16
  .. autoclass:: IMDProducerV3
10
17
  :members:
11
18
  :inherited-members:
12
19
 
13
20
  .. autoclass:: IMDFrameBuffer
14
21
  :members:
15
-
22
+
23
+ .. autoclass:: IMDFrame
24
+ :members:
16
25
  """
17
26
 
18
27
  import socket
@@ -43,9 +52,13 @@ class IMDClient:
43
52
  socket_bufsize : int, (optional)
44
53
  Size of the socket buffer in bytes. Default is to use the system default
45
54
  buffer_size : int (optional)
46
- IMDFramebuffer will be filled with as many :class:`IMDFrame` fit in `buffer_size` bytes [``10MB``]
55
+ :class:`IMDFrameBuffer` will be filled with as many :class:`IMDFrame` fit in `buffer_size` bytes [``10MB``]
47
56
  timeout : int, optional
48
57
  Timeout for the socket in seconds [``5``]
58
+ continue_after_disconnect : bool, optional [``None``]
59
+ If True, the client will attempt to change the simulation engine's waiting behavior to
60
+ non-blocking after the client disconnects. If False, the client will attempt to change it
61
+ to blocking. If None, the client will not attempt to change the simulation engine's behavior.
49
62
  **kwargs : dict (optional)
50
63
  Additional keyword arguments to pass to the :class:`BaseIMDProducer` and :class:`IMDFrameBuffer`
51
64
  """
@@ -57,6 +70,7 @@ class IMDClient:
57
70
  n_atoms,
58
71
  socket_bufsize=None,
59
72
  multithreaded=True,
73
+ continue_after_disconnect=None,
60
74
  **kwargs,
61
75
  ):
62
76
 
@@ -64,6 +78,7 @@ class IMDClient:
64
78
  self._conn = self._connect_to_server(host, port, socket_bufsize)
65
79
  self._imdsinfo = self._await_IMD_handshake()
66
80
  self._multithreaded = multithreaded
81
+ self._continue_after_disconnect = continue_after_disconnect
67
82
 
68
83
  if self._multithreaded:
69
84
  self._buf = IMDFrameBuffer(
@@ -132,10 +147,11 @@ class IMDClient:
132
147
 
133
148
  self._producer.start()
134
149
 
135
- def signal_handler(self, sig, frame):
136
- """Catch SIGINT to allow clean shutdown on CTRL+C
150
+ def signal_handler(self):
151
+ """Catch SIGINT to allow clean shutdown on CTRL+C.
152
+
137
153
  This also ensures that main thread execution doesn't get stuck
138
- waiting in buf.pop_full_imdframe()"""
154
+ waiting in ``buf.pop_full_imdframe()``"""
139
155
  logger.debug("Intercepted signal")
140
156
  self.stop()
141
157
  logger.debug("Shutdown success")
@@ -292,6 +308,17 @@ class IMDClient:
292
308
  self._conn.sendall(go)
293
309
  logger.debug("IMDClient: Sent go packet to server")
294
310
 
311
+ if self._continue_after_disconnect is not None:
312
+ wait_behavior = (int)(not self._continue_after_disconnect)
313
+ wait_packet = create_header_bytes(
314
+ IMDHeaderType.IMD_WAIT, wait_behavior
315
+ )
316
+ self._conn.sendall(wait_packet)
317
+ logger.debug(
318
+ "IMDClient: Attempted to change wait behavior to %s",
319
+ not self._continue_after_disconnect,
320
+ )
321
+
295
322
  def _disconnect(self):
296
323
  # MUST disconnect before stopping execution
297
324
  # if simulation already ended, this method will do nothing
@@ -499,7 +526,14 @@ class BaseIMDProducer(threading.Thread):
499
526
 
500
527
  class IMDProducerV2(BaseIMDProducer):
501
528
  def __init__(
502
- self, conn, buffer, sinfo, n_atoms, multithreaded, error_queue, **kwargs
529
+ self,
530
+ conn,
531
+ buffer,
532
+ sinfo,
533
+ n_atoms,
534
+ multithreaded,
535
+ error_queue,
536
+ **kwargs,
503
537
  ):
504
538
  super(IMDProducerV2, self).__init__(
505
539
  conn, buffer, sinfo, n_atoms, multithreaded, error_queue, **kwargs
@@ -713,9 +747,6 @@ class IMDProducerV3(BaseIMDProducer):
713
747
  ).reshape((self._n_atoms, 3)),
714
748
  )
715
749
 
716
- def __del__(self):
717
- logger.debug("IMDProducer: I am being deleted")
718
-
719
750
 
720
751
  class IMDFrameBuffer:
721
752
  """
@@ -34,6 +34,7 @@ class IMDHeaderType(Enum):
34
34
  IMD_BOX = 13
35
35
  IMD_VELOCITIES = 14
36
36
  IMD_FORCES = 15
37
+ IMD_WAIT = 16
37
38
 
38
39
 
39
40
  def parse_energy_bytes(data, endianness):
@@ -6,9 +6,4 @@ IMDClient
6
6
  from .IMDClient import IMDClient
7
7
  from importlib.metadata import version
8
8
 
9
- from .streamanalysis import AnalysisBase, StackableAnalysis
10
- from MDAnalysis.analysis import base
11
-
12
- base.AnalysisBase = AnalysisBase
13
-
14
9
  __version__ = version("imdclient")
@@ -1,5 +1,5 @@
1
1
  title = PRODUCTION IN NPT
2
- ld-seed = 1
2
+ ld-seed = 1
3
3
  ; Run parameters
4
4
  integrator = md ; leap-frog integrator
5
5
  nsteps = 100 ; 1 * 1000 = 1 ps
@@ -7,9 +7,9 @@ dt = 0.001 ; 1 fs
7
7
  ; Output control
8
8
  nstxout = 1 ; save coordinates every 1 fs
9
9
  nstvout = 1 ; save velocities every 1 fs
10
- nstfout = 1
10
+ nstfout = 1 ; save forces every 1 fs
11
11
  nstenergy = 1 ; save energies every 1 fs
12
- nstlog = 10 ; update log file every 1 ps
12
+ nstlog = 10
13
13
  ; Center of mass (COM) motion
14
14
  nstcomm = 10 ; remove COM motion every 10 steps
15
15
  comm-mode = Linear ; remove only COM translation (liquids in PBC)