Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Draft PR for integrating the IMD (Interactive Molecular Dynamics) new v3 protocol into MDAnalysis.
The IMDReader hooks into the IMDClient API, which is comprised of 4 methods:
There are a few different alternatives for how the IMDReader is integrated into MDAnalysis.
IMDReader in main codebase, IMDClient in a separate (non-MDAKit) repo
The first rule of MDAKits is don't talk about MDAKits. The second first rule is that an MDAKit has to actually use MDAnalysis, so if the IMDReader is in this codebase, IMDClient can't be an MDAKit.
The advantage of splitting up the classes like this is that:
This is the solution I'm most excited about and that this PR illustrates, but I can see that having the IMDReader and IMDClient in separate repos could create an integration challenge if the IMDClient needs to change significantly in ways that impact the API.
IMDReader & IMDClient in an MDAKit
This option still allows the client to be distributed separately from MDAnalysis and still allows more complex CI usage to stay out of the main codebase, but makes it so that users of MDA will have to install an additional package to use the IMDReader
IMDReader & IMDClient in MDAnalysis main codebase
I feel strongly that this is not a good idea. The IMDClient tests would add complexity and runtime to an already complex MDA CI/CD pipeline, add a (very annoying, multithreaded) maintenance burden to core MDA developers, makes IMDClient unusable by other groups, and makes it more difficult to make rapid future changes to the IMDClient (like potentially replacing the implementation of socket interaction codes with Cython while keeping the API the same).
PR Checklist
Developers certificate of origin
📚 Documentation preview 📚: https://mdanalysis--4694.org.readthedocs.build/en/4694/