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

adds LigandNetwork.remove_edges #320

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

richardjgowers
Copy link
Contributor

move this from Konnektor into gufe, it's very useful

@pep8speaks
Copy link

pep8speaks commented May 7, 2024

Hello @richardjgowers! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 187:80: E501 line too long (102 > 79 characters)
Line 214:1: E305 expected 2 blank lines after class or function definition, found 0
Line 217:15: W291 trailing whitespace
Line 218:9: E113 unexpected indentation

Comment last updated at 2024-05-15 06:22:37 UTC

Copy link

codecov bot commented May 7, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 98.94%. Comparing base (12bc644) to head (1a33b8c).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #320   +/-   ##
=======================================
  Coverage   98.94%   98.94%           
=======================================
  Files          36       36           
  Lines        1988     1997    +9     
=======================================
+ Hits         1967     1976    +9     
  Misses         21       21           

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

@@ -0,0 +1,23 @@
**Added:**

* added LigandNetwork.remove_edges
Copy link
Contributor

Choose a reason for hiding this comment

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

+1 to this getting into the change log

def remove_edges(self, edges: Union[LigandAtomMapping, list[LigandAtomMapping]]) -> LigandNetwork:
"""Create a new copy of this network with some edges removed

Note that this will not remove any nodes, potentially resulting in
Copy link
Contributor

Choose a reason for hiding this comment

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

How big of deal is this? Is it worth adding the complexity of checking to make sure we don't allow that? I can't remember what the rules are, if we allow creating a network that is disconnected, then I don't think we need a check, but if we require a connected network, then we want to make sure we don't let users put things into a inconsistent state.

Copy link
Contributor

Choose a reason for hiding this comment

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

This is a good suggestion, I think :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah I was 50/50 on what is best here. Currently disconnected graphs are "allowed" in a data structure sense, but they're often undesirable. It wouldn't be impossible to find and remove orphan nodes, but then the method isn't strictly "remove edges". I think I'll chicken out and add a kwarg that allows either, default being remove orphans.

Copy link
Contributor

Choose a reason for hiding this comment

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

It wouldn't be impossible to find and remove orphan nodes

Ah yes, I was suggesting a more gentle "throw an error if removing this edge creates an orphan" or something so it can stay focused and do what it says on the tin, so I would be happy with kwargs that control things like, raising an error or not if it would create an orphan, and/or remove orphan(s) (this will be tricking if removing a edge creates 2 disconnect graphs, which one gets remove? the one with more nodes? -- maybe we can support the case where if it creates a single orphan, the default is to raise an error, but that can be suppressed, and additionally with another kwarg the orphan can be removed)

gufe/ligandnetwork.py Outdated Show resolved Hide resolved
Co-authored-by: Benjamin Ries <[email protected]>
Copy link
Contributor

@RiesBen RiesBen left a comment

Choose a reason for hiding this comment

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

last suggestion, after that beautiful :)

gufe/ligandnetwork.py Show resolved Hide resolved
@dotsdl dotsdl added this to the Release 1.2 milestone Oct 4, 2024
@dotsdl dotsdl self-assigned this Oct 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Sprint - Available
Development

Successfully merging this pull request may close these issues.

5 participants