Skip to content

feature: IMDReader Integration #4923

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 54 commits into
base: develop
Choose a base branch
from

Conversation

amruthesht
Copy link

@amruthesht amruthesht commented Feb 19, 2025

Fixes #4827

This draft PR addresses the feature request discussed in #4827.

Note:
The IMDReader feature which was previously a part of the imdclient package has been moved into MDAnalysis below. Any other modules have been in retained in imdclient, which has been added as an optional dependency here. We are currently in the process of splitting the imdclient package as mentioned above. (Issue, PR)

Major changes made in this Pull Request:

  • IMDReader, other associated base classes and a utility function were added to coordinates in the main package.
  • Appropriate test cases for the reader were added as a part of test-imd.py
  • Other corresponding changes were made to CI and environment *.yaml files
  • imdclient was added as an optional dependency

PR Checklist

  • Issue raised/referenced?
  • Tests updated/added?
  • Documentation updated/added?
  • package/CHANGELOG file updated?
  • Is your name in package/AUTHORS? (If it is not, add it!)

Developers Certificate of Origin

I certify that I can submit this code contribution as described in the Developer Certificate of Origin, under the MDAnalysis LICENSE.


📚 Documentation preview 📚: https://mdanalysis--4923.org.readthedocs.build/en/4923/

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello there first time contributor! Welcome to the MDAnalysis community! We ask that all contributors abide by our Code of Conduct and that first time contributors introduce themselves on GitHub Discussions so we can get to know you. You can learn more about participating here. Please also add yourself to package/AUTHORS as part of this PR.

Copy link

codecov bot commented Feb 19, 2025

Codecov Report

Attention: Patch coverage is 67.25146% with 56 lines in your changes missing coverage. Please review.

Project coverage is 85.84%. Comparing base (c4af00b) to head (27597e7).

Files with missing lines Patch % Lines
package/MDAnalysis/coordinates/IMD.py 47.72% 45 Missing and 1 partial ⚠️
package/MDAnalysis/coordinates/base.py 87.80% 5 Missing and 5 partials ⚠️

❗ There is a different number of reports uploaded between BASE (c4af00b) and HEAD (27597e7). Click for more details.

HEAD has 3 uploads less than BASE
Flag BASE (c4af00b) HEAD (27597e7)
6 3
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #4923      +/-   ##
===========================================
- Coverage    93.85%   85.84%   -8.01%     
===========================================
  Files          178      179       +1     
  Lines        22122    22293     +171     
  Branches      3129     3153      +24     
===========================================
- Hits         20763    19138    -1625     
- Misses         902     2702    +1800     
+ Partials       457      453       -4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@amruthesht
Copy link
Author

Your thoughts on this are appreciated - @orbeckst

Copy link
Member

@orbeckst orbeckst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the initial PR.

  • The first big step is to get the tests running properly so that the CI uses an imdclient without IMDReader. Otherwise we are not sure we're testing the code here.
  • Minor initial comments while I skimmed.
  • Simple thing: run black over all files to get the formatting and ordering of imports right

@orbeckst orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst
Copy link
Member

I set the PR to Work in progress for the time being, just to indicate that we're not yet at the stage where the CI is working. Once the tests run properly, we can update the status.

Obviously, this shouldn't discourage anyone from contributing and commenting.

Copy link
Member

@IAlibay IAlibay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A first quick look

Copy link
Contributor

@jaclark5 jaclark5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I read through and nothing jumped out at me that wasn't already mentioned, except that I didn't see these changes in the documentation that was linked. The following needs to be added:

Add doc/sphinx/source/documentation_pages/coordinates/IMD.rst
.. automodule:: MDAnalysis.coordinates.IMD

doc/sphinx/source/documentation_pages/coordinate_modules.rst
coordinates/IMD

doc/sphinx/source/documentation_pages/references.rst
If you use IMD capability...

Copy link
Member

@hmacdope hmacdope left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay, had a lookover, I will try and push some changes addressing some of these myself also, but would be good to pick up the momentum here again if possible.

@hmacdope
Copy link
Member

@amruthesht do we have a plan for pushing ahead with suggested changes?

@amruthesht
Copy link
Author

@amruthesht do we have a plan for pushing ahead with suggested changes?

Working on the imdclient repository right now. I had a few small issues there with using the IMDReader, but getting them fixed soon.
And then I'll wrap up some small changes on the mdanalysis end and we should be good to go!

amruthesht and others added 2 commits April 9, 2025 17:12
1. Moved `parse_host_port` to `IMD.py` and deleted `util.py`
2. Cleaned up `test_imd.py` - changes to `assert_*` functions and simplified non-applicable test to pass automatically
@hmacdope
Copy link
Member

hmacdope commented May 5, 2025

@amruthesht kicking CI here.

@hmacdope
Copy link
Member

hmacdope commented May 5, 2025

@yuxuanzhuang would you be able to have a run through?

@hmacdope hmacdope requested a review from yuxuanzhuang May 5, 2025 15:12
@yuxuanzhuang
Copy link
Contributor

I will have another look at the PR this week. One immediate thing is to add documentation.

Please refer to the comments below.

I read through and nothing jumped out at me that wasn't already mentioned, except that I didn't see these changes in the documentation that was linked. The following needs to be added:

Add doc/sphinx/source/documentation_pages/coordinates/IMD.rst .. automodule:: MDAnalysis.coordinates.IMD

doc/sphinx/source/documentation_pages/coordinate_modules.rst coordinates/IMD

doc/sphinx/source/documentation_pages/references.rst If you use IMD capability...

@hmacdope
Copy link
Member

hmacdope commented May 5, 2025

Need to figure out tests also @amruthesht

@jaclark5 jaclark5 self-requested a review May 24, 2025 23:52
@yuxuanzhuang
Copy link
Contributor

I’ve added tests to cover most of the newly introduced code. I had to separate the test for the IMD version into its own file, as it modifies sys.modules and interferes with other tests. If someone can find a way to make it work without causing side effects, that would be preferable.

One other point worth discussing is the division of attributes between StreamReaderBase and IMDReader. I moved the initialization of self._frame to StreamReaderBase because some functions assume this attribute exists in the base class. Not sure about whether n_atoms should also be moved.

@hmacdope
Copy link
Member

hmacdope commented Jul 21, 2025

@orbeckst I have updated pins here for 0.2.2 and added the requisite minimum versions where appropriate. I think we might be almost good to go here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Adopt a reader for live-streamed Interactive MD (IMD) version 3 trajectories
7 participants