---
title: Interpreting GenMol outputs
description: >-
  Generated molecules, quality metrics, SAFE fragments, and downloadable
  artifacts from GenMol.
tags:
  - genmol
  - outputs
---

GenMol returns each generated molecule as SMILES and SAFE notation with RDKit-computed properties (QED, molecular weight, logP, TPSA and counts) plus run-level quality metrics. Use QED and your own filters to decide which molecules move on — the candidates you keep feed into ADMET-AI for property screening, DiffDock for a pose hypothesis, and [AiZynthFinder](/docs/aizynthfinder) for synthetic feasibility.

> **What these numbers are not**

> Every value below is computed from the structure. None of them is a measurement, and none of them is evidence that a molecule is active or makeable. `sa_score` is a heuristic estimate from the structure, not a synthesis route. For a makeability judgement use a retrosynthesis plan and a chemist. See [how GenMol results compare to the bench](/docs/genmol/translatability).

## Output artifacts

Each completed GenMol job returns structured results containing generated molecules, computed properties, and quality metrics.

## Primary output fields

| Field | Type | Description |
|-------|------|-------------|
| **smiles** | string | Canonical SMILES for each generated molecule |
| **safe** | string | SAFE notation with fragment decomposition |
| **qed** | float (0-1) | Quantitative Estimate of Drug-likeness, from RDKit |
| **sa_score** | float (1-10) | Synthetic accessibility from RDKit's SA_Score, 1 (easy) to 10 (hard). Absent, never 0.0, when the scorer could not run, and the result's caveats then say so |
| **molecular_weight** | float | Molecular weight in Daltons |
| **logp** | float | Calculated octanol-water partition coefficient |
| **tpsa** | float | Topological polar surface area in square angstroms |
| **hbd** | integer | Hydrogen bond donor count |
| **hba** | integer | Hydrogen bond acceptor count |
| **rotatable_bonds** | integer | Number of rotatable bonds |
| **validity** | boolean | Whether the molecule passed chemical validity checks |
| **unique** | boolean | Whether the molecule is unique within the generated set |

## Quality summary metrics

The results panel displays aggregate statistics for the entire generation run:

- **Validity rate**: percentage of generated molecules that are chemically valid. With `enforce_validity` on (the default), invalid molecules are removed from the returned set; with it off they stay in with `is_valid: false`
- **Uniqueness rate**: percentage of non-duplicate molecules among the valid ones. With `enforce_uniqueness` on (the default), repeated SMILES are removed from the returned set
- **Diversity index**: mean pairwise Tanimoto distance across the valid molecules (higher = more diverse). Returns null when fewer than two molecules are valid
- **QED mean and standard deviation**: distribution of the RDKit drug-likeness estimate across the set

The validity and uniqueness rates describe everything the model generated. The property means (including `sa_score_mean` and `sa_score_std`) and the diversity index describe the molecules you receive after filtering. A `quality_filters` block in the result reports how many molecules went in, how many came out, and how many each filter removed.

## Mode-specific outputs

### De novo generation
- Full property profile for each molecule
- No similarity score (no reference molecule)

### Lead optimization
- **tanimoto_similarity**: Similarity to the seed molecule (0-1)
- Molecules sorted by similarity descending
- Seed molecule included for comparison

### Scaffold decoration
- **r_groups**: Enumeration of attached R-group fragments
- Core scaffold highlighted in the molecule visualization
- Attachment points annotated in the SAFE notation

### Linker design
- **linker_smiles**: SMILES of the generated linker substructure
- **linker_length**: Number of heavy atoms in the linker
- Full molecule with both fragments and linker shown

### PMO (goal-directed)
- **oracle_score**: Score from the target oracle function
- Molecules sorted by oracle score descending
- Optimization trajectory showing score improvement over iterations

## SAFE fragment auto-ingestion

Generated molecules are automatically decomposed into SAFE fragments and ingested into the project fragment library:

- **Fragment extraction**: Each molecule is broken into its constituent SAFE fragments
- **Deduplication**: Duplicate fragments across molecules are merged
- **Metadata**: Each fragment records its source job, parent molecule, and attachment point topology
- **Reuse**: Ingested fragments appear in the project fragment library for use in subsequent generation runs

## Downloading artifacts

- **CSV export**: SMILES, SAFE notation, and all computed properties in tabular format
- **SDF file**: 3D coordinates for all generated molecules (conformer generated automatically)
- **JSON export**: Full structured results with metadata, parameters, and quality metrics
- **Fragment library export**: SAFE fragments as a separate CSV for fragment-level analysis

## Canvas visualization

When a GenMol job completes, a result card appears on the canvas.

- **Visualization**: 2D molecule grid with property histograms and SAFE fragment decomposition

### Tier 2 metrics

- Molecules generated count
- Drug-like percentage
- Diversity index
- Unique scaffold count

### Interpreting the molecule grid

The canvas card shows a 2D grid of generated molecules with:
- **Structure thumbnails**: 2D depictions of each molecule rendered via RDKit
- **QED badges**: Color-coded drug-likeness scores (green &gt;0.6, yellow 0.3-0.6, red &lt;0.3)
- **Sort controls**: sort by QED, molecular weight, or similarity
- **SAFE/SMILES toggle**: Switch between SAFE fragment view and SMILES display

### Generation mode indicators

| Mode | Input | Output |
|------|-------|--------|
| denovo | None (random generation) | Novel molecules |
| scaffold_decoration | Fragment SMILES | Decorated scaffolds |
| linker_design | Two fragments | Linked molecules |
| motif_extension | Core motif | Extended molecules |
| pmo | Oracle name | Optimized molecules |
| lead_optimization | Starting molecule + similarity | Improved analogs |

## Interpreting quality scores

### QED (Quantitative Estimate of Drug-likeness)

| QED Range | Interpretation |
|-----------|----------------|
| 0.7-1.0 | High drug-likeness; suitable for lead optimization |
| 0.5-0.7 | Moderate drug-likeness; may need property optimization |
| 0.3-0.5 | Low drug-likeness; review specific property violations |
| &lt;0.3 | Poor drug-likeness; likely needs significant modification |

### Synthetic accessibility

Each molecule carries `sa_score` from RDKit's SA_Score (Ertl and Schuffenhauer), 1 easy to 10 hard, and the run reports `sa_score_mean` and `sa_score_std` over the returned set. Set `max_sa_score` to drop molecules above a ceiling; a molecule with no score is dropped by that filter rather than passed through, and if the scorer could not run at all the filter is reported as not applied instead of silently letting everything through.

⚠︎ It is a heuristic over fragment frequencies and structural complexity, not a route. It ranks molecules **within** a chemical series far better than across series, so treat makeability as unsettled until you have a retrosynthesis plan from [AiZynthFinder](/docs/aizynthfinder) and a chemist's read. The published literature on this question is in [how GenMol results compare to the bench](/docs/genmol/translatability).

### Diversity index

- **>0.8**: Highly diverse set covering broad chemical space
- **0.5-0.8**: Moderate diversity; some structural clustering
- **&lt;0.5**: Low diversity; molecules are structurally similar (expected in lead optimization mode)

## Read next
