nanoCAT.recipes.bulk

A short recipe for accessing the ligand-bulkiness workflow.

Index

bulk_workflow(smiles_list[, anchor, ...])

Start the CAT ligand bulkiness workflow with an iterable of smiles strings.

fast_bulk_workflow(smiles_list[, anchor, ...])

Start the ligand fast-bulkiness workflow with an iterable of smiles strings.

API

nanoCAT.recipes.bulk_workflow(smiles_list, anchor='O(C=O)[H]', *, anchor_condition=None, diameter=4.5, height_lim=10.0, optimize=True)[source]

Start the CAT ligand bulkiness workflow with an iterable of smiles strings.

Examples

>>> from CAT.recipes import bulk_workflow

>>> smiles_list = [...]
>>> mol_list, bulk_array = bulk_workflow(smiles_list, optimize=True)
Parameters:
  • smiles_list (Iterable[str]) – An iterable of SMILES strings.

  • anchor (str) – A SMILES string representation of an anchor group such as "O(C=O)[H]". The first atom will be marked as anchor atom while the last will be dissociated. Used for filtering molecules in smiles_list.

  • anchor_condition (Callable[[int], bool], optional) – If not None, filter ligands based on the number of identified functional groups. For example, anchor_condition = lambda n: n == 1 will only accept ligands with a single anchor group, anchor_condition = lambda n: n >= 3 requires three or more anchors and anchor_condition = lambda n: n < 2 requires fewer than two anchors.

  • diameter (float, optional) – The lattice spacing, i.e. the average nearest-neighbor distance between the anchor atoms of all ligads. Set to None to ignore the lattice spacing. Units should be in Angstrom.

  • height_lim (float, optional) – A cutoff above which all atoms are ignored. Set to None to ignore the height cutoff. Units should be in Angstrom.

  • optimize (bool) – Enable or disable the ligand geometry optimization.

Returns:

A list of plams Molecules and a matching array of \(V_{bulk}\) values.

Return type:

list[plams.Molecule] and np.ndarray[np.float64]

nanoCAT.recipes.fast_bulk_workflow(smiles_list, anchor='O(C=O)[H]', *, anchor_condition=None, diameter=4.5, height_lim=10.0, func=<ufunc 'exp'>)[source]

Start the ligand fast-bulkiness workflow with an iterable of smiles strings.

Examples

>>> from CAT.recipes import fast_bulk_workflow

>>> smiles_list = [...]
>>> mol_list, bulk_array = fast_bulk_workflow(smiles_list, optimize=True)
Parameters:
  • smiles_list (Iterable[str]) – An iterable of SMILES strings.

  • anchor (str) – A SMILES string representation of an anchor group such as "O(C=O)[H]". The first atom will be marked as anchor atom while the last will be dissociated. Used for filtering molecules in smiles_list.

  • anchor_condition (Callable[[int], bool], optional) – If not None, filter ligands based on the number of identified functional groups. For example, anchor_condition = lambda n: n == 1 will only accept ligands with a single anchor group, anchor_condition = lambda n: n >= 3 requires three or more anchors and anchor_condition = lambda n: n < 2 requires fewer than two anchors.

  • diameter (float, optional) – The lattice spacing, i.e. the average nearest-neighbor distance between the anchor atoms of all ligads. Set to None to ignore the lattice spacing. Units should be in Angstrom.

  • height_lim (float, optional) – A cutoff above which all atoms are ignored. Set to None to ignore the height cutoff. Units should be in Angstrom.

  • func (Callable[[np.float64], Any]) – A function for weighting each radial distance. Defaults to np.exp.

Returns:

A list of plams Molecules and a matching array of \(V_{bulk}\) values.

Return type:

list[plams.Molecule] and np.ndarray[np.float64]

Raises:

RuntimeWarning – Issued if an exception is encountered when constructing or traversing one of the molecular graphs. The corresponding bulkiness value will be set to nan in such case.