Skip to content

Adjust Gufe Abstractness in order to enable more protocols then RBFE with SmallMoleculeComponents #342

@RiesBen

Description

@RiesBen

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:
RBFE_setup_pipeline drawio

Therefore here we introduce the following classes as discussed (pseudo definitions, to indicate the relations between the classes):

  • ComponentMapper(Component, Component)->ComponentMapping
    • A class that finds some kind of mapping between two molecules
    • this is currently LigandAtomMapper(SmallMoleculeComponent, SmallMoleculeComponent)->LigandAtomMapping, but this logic only works for hybridTopology approaches, wherease the structure is much more universal.
  • ComponentMappingScorer(ComponentMapping)->float
    • A class that evaluates a ComponentMapping
    • Currently we have here no class definition, but function signaures like: AtomMappingScorer(LigandAtomMapping)->float, but in the future a mapping less shape overlap comparison could be interesting for e.g. Sep-Top
  • NetworkPlanner(ComponentMapper, ComonentMappingScorer, Components)->NetworkPlan
    • Currently we have here no Class, however this changes with Konnektor. General function signature right now is (simplified): 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:
    • currently this is represented by LigandNetwork, which again is very specific and does not represent the step in the process (plan) at all.

Part 2 (see issue: ):

  • AlchemicalNetworkPlanner
  • AbstractChemicalSystemGenerator

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions