-
Notifications
You must be signed in to change notification settings - Fork 666
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
distopia 0.3.0 compatibility changes #4734
base: develop
Are you sure you want to change the base?
Conversation
Hello @hmacdope! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:
Comment last updated at 2025-01-06 18:00:18 UTC |
Linter Bot Results:Hi @hmacdope! Thanks for making this PR. We linted your code and found the following: Some issues were found with the formatting of your code.
Please have a look at the Please note: The |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #4734 +/- ##
===========================================
- Coverage 93.66% 93.62% -0.04%
===========================================
Files 177 189 +12
Lines 21796 22918 +1122
Branches 3067 3079 +12
===========================================
+ Hits 20415 21457 +1042
- Misses 929 1007 +78
- Partials 452 454 +2 ☔ View full report in Codecov by Sentry. |
@orbeckst @richardjgowers this is ready for a first look over. The failing tests are for a 180 degree dihedral where numpy returns np.pi and distopia returns -np.pi (equivalent in polar coordinates). Are we ok to change the test to account for this? There are also options for changing in distopia but at the cost of a lot of performance improvement. |
I'd be ok with changing tests but adding a note to docs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure if the tests are actually run — if we can confirm that they run then I have no blockers.
ALso updated CHANGELOG, please.
FYI, upstream distopia 0.3.0 release is currently breaking all tests, see #4739 . |
Co-authored-by: Oliver Beckstein <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the astype
required for distopia you may be creating a copy so that the top-level in-place operation is not actually in-place anymore. ... I think.
@hmacdope did you look further into the copy vs in-place issue? |
@orbeckst I'll try get back to this over holidays, sorry for delay. |
Ok! I think getting this one working will be important for a MDA paper. |
@hmacdope I resolved the merge conflicts but please double-check that I didn't miss anything. |
…s into distopia_0.3.0_compat
@orbeckst this is probably ready for another look. |
def test_selfdist(self, S_mol, box, tri_vec_box, backend): | ||
S_mol1, S_mol2 = S_mol | ||
R_coords = distances.transform_StoR(S_mol1, box, backend=backend) | ||
R_coords = distances.transform_StoR(S_mol1, box, backend="serial") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why hard-code serial here instead of using backend
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the comment below apply to the R_coords
line?
Maybe add a short comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quick first look (sorry for brevity), see minor comments and below:
- Could you please also make PEP8 happy?
- Coverage?
def test_selfdist(self, S_mol, box, tri_vec_box, backend): | ||
S_mol1, S_mol2 = S_mol | ||
R_coords = distances.transform_StoR(S_mol1, box, backend=backend) | ||
R_coords = distances.transform_StoR(S_mol1, box, backend="serial") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the comment below apply to the R_coords
line?
Maybe add a short comment.
@@ -948,7 +961,7 @@ def test_selfdist(self, S_mol, box, tri_vec_box, backend): | |||
) | |||
|
|||
# Do it again for input 2 (has wider separation in points) | |||
R_coords = distances.transform_StoR(S_mol2, box, backend=backend) | |||
R_coords = distances.transform_StoR(S_mol2, box, backend="serial") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same questions as above – explain why backend="serial"
Something is not right with the macos-13 tests — they timed out at 55 mins and they are again taking much longer than all the other runners. |
This is unrelated to this PR as far as I can tell (we probably should re-open #4781?). It's been a while but iirc the macos13 images had a sudden performance drop at some point in the last year-ish and it never was resolved. We could drop the tests to be "non optional deps only" that might help keep things a bit sane for now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple things, apparent missing test coverage is the biggest thing, otherwise (assuming @orbeckst's comments are addressed), lgtm.
has_distopia_020 = all([hasattr(distopia, func) for func in needed_funcs]) | ||
if not has_distopia_020: | ||
# check for compatibility: currently needs to be >=0.3.1, | ||
# some versions of `distopia` don't have a version attribute |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these versions known? I.e. if we know that this only affects a certain set of releases and they are all <0.3.1, then can we skip the warning altogther and just assume that this only happens in old versions we don't care about?
(intent: I'm trying to completly bypass the follow-up "there are no tests for line 50" with a blunt solution)
distopia.calc_bonds_triclinic(coords1, coords2, box, results=results) | ||
|
||
|
||
def calc_angle( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -353,6 +370,13 @@ def distance_array( | |||
backend=backend, | |||
) | |||
|
|||
if backend == 'distopia': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not for this PR, but you do this pattern enough that I wonder if life might be easier if you moved this into a decorator (or even just straight up into check_coords
?
# to float64, change for 3.0, see #3707 | ||
angles = angles.astype(np.float64) | ||
if result is not None: | ||
result[:] = angles |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For here and dihedrals codecov is reporting no coverage, is that true/expected?
Test implementation of distopia-0.3.0 distances API.
Changes made in this Pull Request:
PR Checklist
Developers certificate of origin
📚 Documentation preview 📚: https://mdanalysis--4734.org.readthedocs.build/en/4734/