Skip to main content

Overview

ChemLactica models understand and can predict a wide range of molecular properties. These properties are encoded using special tags in the training data and can be used to guide molecule generation and optimization.

Core Properties

These are the most commonly used properties in ChemLactica:

QED (Quantitative Estimate of Drug-likeness)

float
required
A measure of how drug-like a molecule is, ranging from 0 to 1.
chemlactica/generation/rejection_sampling_utils.py
Higher QED values (closer to 1) indicate more drug-like molecules. Typically, values above 0.5 are considered favorable for drug candidates.
Tag format: [QED]0.95[/QED]

SAS (Synthetic Accessibility Score)

float
required
Estimates how difficult it is to synthesize a molecule, ranging from 1 (easy) to 10 (very difficult).
Tag format: [SAS]2.25[/SAS] Example from README:

TPSA (Topological Polar Surface Area)

float
required
The surface area of polar atoms in a molecule (Ų), important for predicting drug absorption.
chemlactica/mol_opt/example_run.py
TPSA values under 140 Ų typically indicate good oral bioavailability. Lower TPSA generally means better membrane permeability.
Tag format: [TPSA]63.06[/TPSA]

CLogP (Partition Coefficient)

float
required
Measures lipophilicity (how well a molecule dissolves in fats vs water). Important for drug absorption and distribution.
Tag format: [CLOGP]2.45[/CLOGP]
Optimal CLogP values for drugs typically range from 0 to 5. Too high indicates poor water solubility; too low indicates poor membrane permeability.

Molecular Weight

float
required
The exact molecular weight in Daltons (Da).
chemlactica/mol_opt/example_run.py
Tag format: [WEIGHT]325.10[/WEIGHT]

Structural Properties

These properties describe the molecular structure:

Hydrogen Bond Donors and Acceptors

int
Number of hydrogen bond donor groups (like -OH, -NH)
int
Number of hydrogen bond acceptor groups (like =O, -N-)
Tag format:

Atom Counts

int
Number of non-carbon, non-hydrogen atoms (heteroatoms)
int
Total number of non-hydrogen atoms
int
Number of nitrogen and oxygen atoms
int
Number of NH and OH groups
Tag format:

Bond Properties

int
Number of rotatable bonds, indicates molecular flexibility
float
Fraction of sp³ hybridized carbons (saturated carbons)
Tag format:

Ring Properties

Detailed information about ring systems in molecules:

Basic Ring Counts

chemlactica/mol_opt/example_run.py
int
Total number of rings in the molecule
int
Number of aromatic rings (like benzene)
int
Number of saturated (non-aromatic) rings
int
Number of aliphatic (non-aromatic) rings

Hetero vs Carbocyclic Rings

int
Aromatic rings containing heteroatoms (like pyridine)
int
Aromatic rings with only carbon atoms (like benzene)
int
Saturated rings containing heteroatoms (like piperidine)
int
Saturated rings with only carbon atoms (like cyclohexane)
int
Aliphatic rings containing heteroatoms
int
Aliphatic rings with only carbon atoms

Molecular Similarity

Tanimoto Similarity

ChemLactica uses Tanimoto similarity over Morgan fingerprints (ECFC4) to measure molecular similarity:
chemlactica/mol_opt/utils.py
Morgan fingerprints (also called ECFC4 - Extended Connectivity Fingerprints, diameter 4) capture the local chemical environment around each atom up to 2 bonds away.
Tag format: [SIMILAR]CC(=O)OC1=CC=CC=C1C(=O)O 0.62[/SIMILAR]

Similarity Ranges

  • 0.0 - 0.3: Very different molecules
  • 0.3 - 0.5: Some structural similarity
  • 0.5 - 0.7: Moderate similarity
  • 0.7 - 0.9: High similarity
  • 0.9 - 1.0: Very similar (1.0 = identical)

Property Tags Reference

Complete list from the codebase:
chemlactica/utils/text_format_utils.py

Custom Properties

You can also define custom properties for fine-tuning and optimization:

Property-Guided Generation

Example: Generate High QED Molecule

chemlactica/generation/rejection_sampling_utils.py

Example: TPSA + Weight Oracle

From the optimization example:
chemlactica/mol_opt/example_run.py

Property Formatting

Float properties are always formatted to 2 decimal places in the training data:
chemlactica/utils/text_format_utils.py

Next Steps

Molecular Optimization

Use properties for optimization

SMILES Format

Learn about molecular representation

Model Architectures

Explore the models

Property Prediction

Fine-tune for predictions