Tautomer Workflow
End-to-end tautomer generation, ranking, and conformer ensemble search.
This job chains several building blocks into a single composite workflow:
- Tautomer enumeration — RDKit enumerates all chemically reasonable tautomers for the input structure
- Geometry optimisation — each tautomer is geometry-optimised; duplicate minima are automatically removed
- Single-point energy ranking — optimised tautomers are ranked by absolute energy at the single-point level of theory
- Energy-window filter — high-energy tautomers are discarded according to the selected mode
- Conformer search — a conformer ensemble is generated for each surviving tautomer
from atomiverse import Atoms, TautomerWorkflow, TautomerWorkflowMode
atoms = Atoms.from_smiles("CC(=O)CC")
job = TautomerWorkflow(
atoms=atoms,
charge=0,
multiplicity=1,
optimization_level_of_theory=GFN2_XTB,
single_point_energy_level_of_theory=B97_3C,
mode=TautomerWorkflowMode.STANDARD,
)
job.submit()
result = job.require_result()
print(f"{len(result.tautomers)} tautomers found")
for i, (tautomer, energy, pop) in enumerate(
zip(result.tautomers, result.tautomer_energies_hartree, result.tautomer_populations)
):
print(
f" Tautomer {i + 1}: "
f"E = {energy:.6f} E₁₀, "
f"population = {pop * 100:.1f}%"
)
print(f" {len(result.tautomer_conformer_ensembles[i])} conformers")
Inputs
| Field | Type | Default | Description |
|---|---|---|---|
atoms | Atoms | (required) | Input molecular geometry |
charge | int | 0 | Total charge of the system |
multiplicity | int | 1 | Spin multiplicity (2S + 1) |
optimization_level_of_theory | LevelOfTheory | (required) | Method for geometry optimisations |
single_point_energy_level_of_theory | LevelOfTheory | (required) | Method for single-point evaluations |
mode | TautomerWorkflowMode | STANDARD | Controls the energy-window filter |
Modes
The mode parameter controls how aggressively high-energy tautomers are
filtered after single-point evaluation. The energy window is measured
from the most stable tautomer.
| Mode | Window (kcal/mol) | Use case |
|---|---|---|
LOOSE | 10.0 | Exploratory searches; keep most tautomers |
STANDARD | 6.0 | General-purpose tautomer analysis |
TIGHT | 3.0 | Focused studies near the global minimum |
VERYTIGHT | 1.0 | Only the most stable tautomeric form(s) |
Results
result.tautomers is a list of Atoms objects for the surviving
tautomers, ranked by single-point energy (most stable first).
result.tautomer_energies_hartree contains the single-point energies
in Hartree for each tautomer in the same order.
result.tautomer_populations is a list of Boltzmann populations at
298.15 K, computed from the lowest conformer free energy of each
tautomer. The values sum to 1.0.
result.tautomer_conformer_ensembles is a list of lists — one
conformer ensemble per tautomer. Each inner list contains Atoms
objects for the conformers, sorted by free energy (most stable first).
result.tautomer_conformer_energies_hartree mirrors the ensemble
layout with the corresponding free energies in Hartree.
Count fields
result.n_tautomers_generated, .n_tautomers_optimized,
.n_tautomers_ranked, and .n_tautomers_filtered track how many
tautomers survived each stage of the pipeline.
Compute Resources
The tautomer workflow is assigned to the medium tier for small molecules and promoted for larger systems or tighter modes. The walltime multiplier is 960 (approximately 2× the conformer workflow budget) to account for evaluating multiple tautomers.
Each sub-step (enumeration, optimisation, ranking) is cached independently, so repeating the workflow with different modes or levels of theory may benefit from partial cache hits.