# 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
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
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.