feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feature: IMDReader Integration - #4923

Merged
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev
Sep 23, 2025
Merged

feature: IMDReader Integration#4923
hmacdope merged 119 commits into
MDAnalysis:developfrom
amruthesht:imdv3-dev

Conversation

@amruthesht

@amrutheshtamruthesht commented Feb 19, 2025

Copy link
Copy Markdown
Contributor

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/

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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.

@codecov

codecovBot commented Feb 19, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.53179% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.88%. Comparing base (5d48c5c) to head (ea85bb5).
⚠️ Report is 48 commits behind head on develop.

Files with missing linesPatch %Lines
package/MDAnalysis/coordinates/IMD.py93.02%0 Missing and 6 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## develop #4923 +/- ##
===========================================
+ Coverage 93.86% 93.88% +0.02% 
===========================================
Files 179 180 +1 Lines 22249 22422 +173 Branches 3161 3186 +25 ===========================================
+ Hits 20885 21052 +167 
Misses 902 902 - Partials 462 468 +6 

☔ 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
Copy Markdown
ContributorAuthor

Your thoughts on this are appreciated - @orbeckst

@orbeckstorbeckst left a comment

Copy link
Copy Markdown
Member

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

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/MDAnalysis/coordinates/util.py Outdated
Comment threadpackage/pyproject.toml Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py
@orbeckst
orbeckst marked this pull request as draft February 19, 2025 23:48
@orbeckst

Copy link
Copy Markdown
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.

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A first quick look

Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated

@jaclark5jaclark5 left a comment

Copy link
Copy Markdown
Contributor

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...

@hmacdopehmacdope left a comment

Copy link
Copy Markdown
Member

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.

Comment threadpackage/MDAnalysis/coordinates/IMD.py
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/IMD.py Outdated
Comment threadpackage/MDAnalysis/coordinates/base.py
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
Comment threadtestsuite/MDAnalysisTests/coordinates/test_imd.py Outdated
@hmacdope

Copy link
Copy Markdown
Member

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

@amruthesht

Copy link
Copy Markdown
ContributorAuthor

@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!

amrutheshtand 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
Copy Markdown
Member

@amruthesht kicking CI here.

@hmacdope

Copy link
Copy Markdown
Member

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

@hmacdope
hmacdope requested a review from yuxuanzhuangMay 5, 2025 15:12
@yuxuanzhuang

Copy link
Copy Markdown
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
Copy Markdown
Member

Need to figure out tests also @amruthesht

@jaclark5
jaclark5 self-requested a review May 24, 2025 23:52
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
Comment threadpackage/MDAnalysis/coordinates/timestep.pyx
1. API doc on multiple connections
2. Jupyter usage of `close()` for secure closure of connections
Replace `IMDModuleStateManager` with standard pytest patterns
@hmacdope

Copy link
Copy Markdown
Member

@amruthesht I think cd21d6bf4892bc8172f905816beffc1b6fff8369 has messed up the import guard somehow. I would consider reverting possibly.

@orbeckst

Copy link
Copy Markdown
Member

@hmacdope@yuxuanzhuang what needs to be done to get the PR merged from your end?

(I had a cursory look at @IAlibay 's #4923 (review) and it seems to have been addressed but it's ultimately up to @IAlibay .)

- move details on which engines support multiple connections to imdclient docs (only update one place) and link
- rearranged warning/seealso boxes
orbeckst added a commit to Becksteinlab/imdclient that referenced this pull request Sep 8, 2025
- state for each engine if they support concurrent connections
- minor markup/link reformatting
- moved information from MDAnalysis/mdanalysis#4923 to here
@hmacdope

Copy link
Copy Markdown
Member

Quick weigh in from @IAlibay either way and I think we are good to go @orbeckst

@IAlibayIAlibay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry for the delay, pings didn't show up in my github feed.

Couple of cosmetic things and then this is good from me.

Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment thread.github/actions/setup-deps/action.yaml Outdated
Comment threadpackage/CHANGELOG Outdated
coordinates/GSD
coordinates/GRO
coordinates/H5MD
coordinates/IMD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remember to open up a PR in the userguide to update the tables.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Updated current Issue #427 with a note about it. I'll work on a PR to make necessary updates to the UserGuide based on it.

Comment threadpackage/pyproject.toml Outdated
@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Once this is merged, we (= @amruthesht@HeydenLab@orbeckst ) would like to have a rc on pypi so that we can have at least one installable package for the workshop. We also need to update the codespace/docker images so the sooner we can have it, the better.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

rc on pypi

@orbeckst RC of MDAnalysis?

@orbeckst

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

@IAlibay

ghost commented Sep 19, 2025

Copy link
Copy Markdown
Member

Yes – a 2.10.0-rc1 pypi package so that we can have a "normal" pip install everywhere and when we get 2.10.0 out just before the UGM we have a simple update to the installation instructions (EDIT: and all the scripts inside the containers for the workshop that is supposed to run in codespace).

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

1. Alphabetical order for `imclcient` as optional dependency
2. Changed order in `CHANGELOG`
@amruthesht

ghost commented Sep 19, 2025

Copy link
Copy Markdown
ContributorAuthor

@orbeckst - All remaining requested changes are done. Please let me know if there is anything else

@hmacdope

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

Congratulations @MDAnalysis/streaming!

@hmacdope
hmacdope merged commit 519ac56 into MDAnalysis:developSep 23, 2025
@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

@IAlibay ,

How about just cutting a new release? At that point it would be the same amount of work I think. -- edit: I misread what you meant, sorry! I'm not super sure about doing a pypi rc, it's doable for a tarball but we won't be able to do wheels.

Maybe TBD in a call at some point?

A proper 2.10.0 would also work, of course.

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

@orbeckst

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

And: hooray 🎉 !

Thank you everyone for all your hard work.

@IAlibay

ghost commented Sep 23, 2025

Copy link
Copy Markdown
Member

I assume a tarball would also work but perhaps we'll move the initial discussion to discord.

Yes, let's do that (move to discord), we're overdue a new release I think, python 3.14 is out in two-ish weeks.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

@amruthesht@orbeckst@hmacdope@yuxuanzhuang@ljwoods2@IAlibay@jaclark5