References
For more information, please check our paper:
Clarisse Descamps, Vincent Bouttier, Juan Sanz García, Maoussi Lhuillier-Akakpo, Quentin Perron, Hamza Tajmouati, Growing and linking optimizers: synthesis-driven molecule design, Briefings in Bioinformatics, Volume 26, Issue 5, September 2025, bbaf482, https://doi.org/10.1093/bib/bbaf482
Introduction
The Fragment Growing generates molecules block by block, combining commercially available building blocks (1 million) using the rules defined by organic reaction templates. Molecules are then scored on a set of user-defined characteristics, and this information is used to guide the generator towards optimized molecules. The Fragment Growing generator is particularly useful to guide molecule generation in the hit discovery and hit-to-lead phases.
This generator is purely chemistry driven, so a good understanding of organic chemistry is required. For instance, being able to draw the appropriate leaving group for a SN2 reaction to happen is important, otherwise the molecules won't be generated as expected.
To access the Fragment Growing generator, click on the New Generator box in the "Generator" tab. Specify a name for this generator, and under "Generator Engine" select Fragment Growing.
Example Use-Cases
- Hit-To-Lead using Fragment Growing
- Growing around a hinge binding central core (kinase inhibitor)
- Growing around a fragment using a 3D reference molecule
- Growing around a fragment using 3D structure-based design
Set-Up
-
Exit Vectors (Optional): In the text field below "Enter Fragment", specify the fragment that molecules are grown from. You can either sketch the intermediate (by clicking on the pen icon) or copy-paste the SMILES sequence. If you don't specify a starting fragment, the generator will freely explore starting options.
Specifying a starting fragment can be extremely powerful when using scoring functions that require a reference structure for alignment (anchor), such as 3D scores.
How to select a proper Exit Vector
NOTES ON EXIT VECTORS:
The fragment should not contain charged atoms. Protonation is performed directly inside Makya where needed.
When you select the exit vectors, the atoms in red are the ones that will be involved in the reaction. The Fragment Growing generator is chemistry-driven and the choice of exit vectors need to be informed by organic chemistry knowledge.
-
Option 1: with exit vector(s) specification:
- Click on Set in the first panel, and in the box provided below the structure, type atom IDs to start filtering possible exit vectors. Type one ID at a time and then press Enter. The two panels allow for specifying up to 2 exit vectors.
- For instance in the example below the boronic acid function is selected as an exit vector in order to perform cross coupling reactions.
-
Note that only one exit vector is configured in this example. If you want to grow on another position at the same time, click on Set on the second exit vector and then you can define it as well.
-
Option 2: without exit vector specification:
- Setting up an exit vector is optional. If you don't set one, Makya will use our predictor of reaction synthesis to select not only the building block, but also the reaction and the reaction site on the fragment, that will maximize the fitness function. In that case, the generator can propose molecules grown from diverse points of the initial fragment.
Advanced search options in the Exit Vectors tab
-
In the bottom of the exit vector tab, you can find the "Advanced search" section. All features here are optional. The "Advanced search" lets you set the following options:
1) Macrocyclization
- See more details in the generation with macrocyclization section. When a macrocyclization option is selected, the number of reactions is necessarily ≥ 2.
2) Generation steps:
Define here the number of modification steps that Makya will use to generate a new molecule. Steps can be single-reactant (a modification on a fragment or intermediate, without addition of a building block; for example, protection and deprotection steps discovered automatically, and much more) or double-reactant (the combination of two fragments). By playing on this parameter, you can influence the generator to explore simpler or more complex structures.
NOTE: this limit is only a suggestion of a maximum limit for the generation process; Makya may choose to stop adding steps before reaching the specified maximum, with the goal to optimize the fitness function.
NOTE: we recommend starting with a small maximum number of steps, such as 2, to see if you are satisfied with the results; if not, you can increase the number to give more freedom of exploration to the generator.
Example of a reaction tree generating a molecule through one double-reactant step.
3) Name reactions:
Choose here one or more name reactions from the list of 2000+ available name reactions to drive the generation to your liking. You can specify reactions you want to use, or reactions you want to forbid.
4) Initial fragment protection:
Choose here whether the generator is allowed to perform reactions on atoms of the initial fragment that are not selected as an exit vector, if such reactions can generate molecules with interesting properties. If the button is not checked, the starting fragment will be protected and only the atoms selected as exit vectors will be modified by the generation process.
Example of generation with fragment protection (Option = "No")
Example of generation without fragment protection (Option = "Yes")
Optional parameters:
- Building Blocks: In this panel, add constraints on the building blocks that are plugged on your intermediate. For each compound, specify structural constraints based on RDKit descriptors in the "Descriptors" tab, or input the SMARTS for required and/or forbidden substructures in the "Substructures" tab. For instance you can add a Bromine atom as substructure match if you want to do a Suzuki type reaction (with the boronic acid on your initial fragment). You can also prevent some substructures.
NOTE: compound filters will drastically accelerate the generation by reducing the size of the catalog of commercially available building blocks that is explored by the algorithm.

- API: Plug in external scores or models that can be accessed to guide this generation (see Scoring APIs).
-
Scorers: Select any scores that will be calculated during the generation and available in post-processing (see Scorers).
- QSAR: Select among trained QSAR Models to guide the generation around a defined target product profile (see QSAR). (Be careful to select Models whose applicability domain covers the chemical space you are exploring!)
- Products: In this panel, add constraints on the final generated molecules. Specify structural constraints based on RDKit descriptors in the "Descriptors" tab; input the SMARTS for required and/or forbidden substructures in the "Substructures" tab; or upload a csv file with custom Pains/Tox list of SMILES in the "Pains/Tox" tab.
NOTE: substructure constraints on the final product are applied after molecule generation, to filter the results. As such, it is slower and less computationally efficient than substructure constraints in building block filters (see above). If appropriate, we recommend using substructure constraints on the building block catalogue.
- Chemical Space: Select one or several datasets, or specify SMILES that can be used to guide the generation in terms of Tanimoto Similarity to the chemical space.
- 3D Ligand based / 3D Structure based: Select 3D parameters to optimize docking score, contact score, shape similarity to a reference ligand, or other 3D objectives.
Example of an output
Advanced
The Fragment Growing generator is a deep-learning algorithm that has been trained to generate molecules block by block. This generation is guided by reinforcement learning so that the selection of plugged building blocks is optimized for a combination of given rewards.
The Fragment Growing generator is very complementary to the fine-tuning generator. If an advanced intermediate is available, either use the Fragment Growing on this intermediate (with suitable descriptors to avoid undesirable fragments) or the fine-tuning generator with the intermediate as a substructure constraint. The fine-tuning will generate more conservative compounds, while the Fragment Growing (which has no inherent applicability domain constraint) can be more creative.
NOTE: the output of the Fragment Growing generator can be used as a chemical space of the fine-tuning generator. It’s a way to enrich a selection of interesting compounds and optimize them.