Speed up symmetry functions with faster is_periodic_image
algorithm
#4433
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I noticed that in some of our
doped
testing workflows,SpacegroupAnalyzer.get_primitive_standard_structure()
is one of the main bottlenecks (as to be expected). One of the dominant cost factors here is the usage ofis_periodic_image
, which can be expensive for large structures due to manynp.allclose()
calls.This PR implements a small change to instead use an equivalent (but faster) pure Python loop, which also breaks early if the tolerance is exceeded.
In my test case, this reduced the time spent on
is_periodic_image
(and thusSpacegroupAnalyzer.get_primitive_standard_structure()
) from 35s to 10s.