-
Notifications
You must be signed in to change notification settings - Fork 9
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
Adjust Gufe Abstractness in order to enable more protocols then RBFE with SmallMoleculeComponents #342
Comments
@dotsdl - what @RiesBen is saying here about Thoughts we had in offline conversation about limitations of
It looks like @RiesBen has already made progress on this and other item in #346, and I'm happy to pick it up if it's not within your plans before leaving openfe. |
Just chiming in that Konnektor should definitely not be creating AlchemicalNetworks. Re: NetworkPlan, I do agree with the idea of having a base class above LigandNetwork, my only caveat here is that the name NetworkPlan is not intuitive enough for that purpose. We do need to workshop a better name. |
Yes for sure, it serves more as a counter-example. I also agree we should be intentional with naming, I expect that PR will take more work to close. |
The current gufe cufe for setting up FE networks (AlchemicalNetworks) is very specifically tailored for the RBFE protocol using
SmallMoleculeComponents
.However this conceptual structure is not limited to that single use case and can be used for various approaches as well or even mixtures (portein mutations, sep-top, etc.).
Therefore we discussed this PR content and wanted to provide a more abstract layer to setup, in order to allow the development of new use cases for OpenFE and collaborators.
Here is the current workflow in setup:
Therefore here we introduce the following classes as discussed (pseudo definitions, to indicate the relations between the classes):
ComponentMapper(Component, Component)->ComponentMapping
LigandAtomMapper(SmallMoleculeComponent, SmallMoleculeComponent)->LigandAtomMapping
, but this logic only works for hybridTopology approaches, wherease the structure is much more universal.ComponentMappingScorer(ComponentMapping)->float
AtomMappingScorer(LigandAtomMapping)->float
, but in the future a mapping less shape overlap comparison could be interesting for e.g. Sep-TopNetworkPlanner(ComponentMapper, ComonentMappingScorer, Components)->NetworkPlan
generate_maximal_network(ligands: Iterable[SmallMoleculeComponent], mappers: AtomMapper, scorer: Callable[[LigandAtomMapping], float]] = None,) -> LigandNetwork:
but this process actually is totally independent of the type of components, mappers and scorers, as the algorithms life in an abstract graph world.
NetworkPlan
:LigandNetwork
, which again is very specific and does not represent the step in the process (plan) at all.Part 2 (see issue: ):
The text was updated successfully, but these errors were encountered: