Skip to content
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

atom selection/filtering backend refactor #291

Merged
merged 41 commits into from
Jan 31, 2024
Merged

Conversation

ChiCheng45
Copy link
Collaborator

@ChiCheng45 ChiCheng45 commented Jan 30, 2024

Description of work
The way that atom selection are done has now been changed. Previously a complicated parsing system was implemented which selected molecules based on a string which included set operations in it. I have simplified the approach so that it simply applies specific filters to remove specific atoms. This also makes the setting of the atom filtering more human json string e.g. '{"water": true, "elements": {"S": true}}' which will remove water molecules and sulfur atoms.

FilterSelection settings can be updated with the update_settings method e.g.

filter = FilterSelection(protein_chemical_system)
filter.update_settings({"elements": {"S": True}, "water": True})
atm_idxs = filter.get_idxs()

setting can be dumped to a json string with settings_to_json

filter = FilterSelection(protein_chemical_system)
filter.update_settings({"elements": {"S": True}, "water": True})
json_dump = filter.settings_to_json()  # '{"water": true, "elements": {"S": true}}'

and updated with update_from_json.

For molecule or molecular group filtering it now uses smarts pattern matching. This will make it much easier if we want to add matches for larger molecular groups or molecules. See the select_water function.

def select_water(system: ChemicalSystem) -> set[int]:
    ...
    patterns = ["[#8X2;H2](~[H])~[H]"]
    return system.get_substructure_matches(patterns)

To test
Run units tests to ensure passing, test GUI loads up without issues.

…ert default string setting to fix unit tests
Copy link
Collaborator

@MBartkowiakSTFC MBartkowiakSTFC left a comment

Choose a reason for hiding this comment

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

Thank you for the changes to the code. A definite improvement to the way we handle trajectory information.

@MBartkowiakSTFC MBartkowiakSTFC merged commit a3e3186 into protos Jan 31, 2024
54 checks passed
@ChiCheng45 ChiCheng45 deleted the chi/atom-parsing branch January 31, 2024 22:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants