openfe.setup.ligand_network_planning.generate_radial_network(ligands: Iterable[SmallMoleculeComponent], central_ligand: SmallMoleculeComponent | str | int, mappers: AtomMapper | Iterable[AtomMapper], scorer: Callable[[LigandAtomMapping], float] | None = None) LigandNetwork#

Plan a radial network with all ligands connected to a central node.

Also known as hub and spoke or star-map, this plans a LigandNetwork where all ligands are connected via a central ligand.

Parameters:
  • ligands (iterable of SmallMoleculeComponents) – the ligands to arrange around the central ligand. If the central ligand is present it will be ignored (i.e. avoiding a self edge)

  • central_ligand (SmallMoleculeComponent or str or int) – the ligand to use as the hub/central ligand. If this is a string, this should match to one and only one ligand name. If this is an integer, this refers to the index from within ligands

  • mappers (AtomMapper or iterable of AtomMappers) – mapper(s) to use, at least 1 required

  • scorer (scoring function, optional) – a callable which returns a float for any LigandAtomMapping. Used to assign scores to potential mappings; higher scores indicate better mappings.

Raises:

ValueError – if no mapping between the central ligand and any other ligand can be found

Returns:

network – will have an edge between each ligand and the central ligand, with the mapping being the best possible mapping found using the supplied atom mappers. If no scorer is supplied, the first mapping provided by the iterable of mappers will be used.

Return type:

LigandNetwork