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.
- {imdclient-0.1.3 → imdclient-0.2.0b0}/AUTHORS.md +4 -1
- imdclient-0.2.0b0/CHANGELOG.md +148 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/LICENSE +3 -1
- {imdclient-0.1.3 → imdclient-0.2.0b0}/PKG-INFO +60 -39
- imdclient-0.2.0b0/README.md +119 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/IMDClient.py +43 -12
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/IMDProtocol.py +1 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/__init__.py +0 -5
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_v3_nst1.mdp +3 -3
- imdclient-0.2.0b0/imdclient/data/namd/md/namd3 +0 -0
- imdclient-0.2.0b0/imdclient/data/namd/md/namd_v3_nst_1.namd +59 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/base.py +108 -83
- imdclient-0.2.0b0/imdclient/tests/conftest.py +3 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/datafiles.py +16 -1
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/docker_testing/docker.md +1 -1
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/README.md +112 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.mdp +58 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/gmx_gpu_test.top +11764 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/struct.gro +21151 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/gromacs/validate_gmx.sh +90 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/README.md +62 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/lammps_v3_nst_1.in +71 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/topology_after_min.data +8022 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/lammps/validate_lmp.sh +66 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/README.md +147 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/alanin.params +402 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/alanin.pdb +77 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/alanin.psf +206 -0
- {imdclient-0.1.3/imdclient/data/namd/md → imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd}/namd_v3_nst_1.namd +0 -0
- imdclient-0.2.0b0/imdclient/tests/hpc_testing/namd/validate_namd.sh +71 -0
- imdclient-0.2.0b0/imdclient/tests/minimalreader.py +86 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/server.py +6 -14
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_gromacs.py +15 -3
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_imdclient.py +26 -7
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_lammps.py +22 -19
- imdclient-0.2.0b0/imdclient/tests/test_manual.py +251 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/test_namd.py +39 -16
- imdclient-0.2.0b0/imdclient/tests/test_utils.py +31 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/utils.py +50 -17
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/PKG-INFO +60 -39
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/SOURCES.txt +19 -8
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/requires.txt +4 -3
- {imdclient-0.1.3 → imdclient-0.2.0b0}/pyproject.toml +11 -9
- imdclient-0.1.3/CHANGELOG.md +0 -37
- imdclient-0.1.3/README.md +0 -105
- imdclient-0.1.3/imdclient/IMD.py +0 -130
- imdclient-0.1.3/imdclient/backends.py +0 -352
- imdclient-0.1.3/imdclient/results.py +0 -332
- imdclient-0.1.3/imdclient/streamanalysis.py +0 -1056
- imdclient-0.1.3/imdclient/streambase.py +0 -199
- imdclient-0.1.3/imdclient/tests/conftest.py +0 -42
- imdclient-0.1.3/imdclient/tests/test_imdreader.py +0 -658
- imdclient-0.1.3/imdclient/tests/test_manual.py +0 -93
- imdclient-0.1.3/imdclient/tests/test_stream_analysis.py +0 -61
- {imdclient-0.1.3 → imdclient-0.2.0b0}/CODE_OF_CONDUCT.md +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/MANIFEST.in +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/__init__.py +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_struct.gro +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_v3.top +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/gromacs/md/gromacs_v3_nst8.mdp +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/lammps/md/lammps_topol.data +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/lammps/md/lammps_v3_nst_1.in +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/lammps/md/lammps_v3_nst_8.in +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/alanin.params +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/alanin.pdb +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/alanin.psf +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/data/namd/md/namd_v3_nst_8.namd +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/__init__.py +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient/tests/utils.py +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/dependency_links.txt +0 -0
- {imdclient-0.1.3 → imdclient-0.2.0b0}/imdclient.egg-info/top_level.txt +0 -0
- {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/
|
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
|
+
Metadata-Version: 2.4
|
2
2
|
Name: imdclient
|
3
|
-
Version: 0.
|
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.
|
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:
|
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:
|
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:
|
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]
|
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/
|
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
|
-
|
58
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
82
|
+
Below we provide instructions both for `mamba` and for `pip`.
|
72
83
|
|
73
|
-
|
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
|
-
|
77
|
-
|
90
|
+
mamba create --name imdclient
|
91
|
+
mamba activate imdclient
|
78
92
|
```
|
79
93
|
|
80
|
-
|
94
|
+
3. (Recommended) Install all dependencies using the provided environment YAML files for a clean and reproducible environment:
|
81
95
|
|
82
96
|
```
|
83
|
-
|
84
|
-
|
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
|
101
|
+
4. Build and install IMDClient in editable mode:
|
88
102
|
|
89
103
|
```
|
90
104
|
pip install -e .
|
91
105
|
```
|
92
106
|
|
93
|
-
|
107
|
+
5. (Optional) Update dependencies:
|
94
108
|
|
95
109
|
```
|
96
|
-
|
110
|
+
mamba update --all
|
97
111
|
```
|
98
112
|
|
99
|
-
|
113
|
+
6. Deactivate the environment when finished:
|
100
114
|
|
101
115
|
```
|
102
|
-
|
116
|
+
mamba deactivate
|
103
117
|
```
|
104
118
|
|
105
|
-
####
|
119
|
+
#### Source build with pip
|
106
120
|
|
107
|
-
|
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
|
-
|
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,
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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,
|
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
|
"""
|
@@ -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
|
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
|
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)
|
Binary file
|