Utility for reaction modeling using graph grammar
Project description
SynDE
SynDE is a fast, graph-first heuristic for ranking molecular and reaction candidates. It combines local graph features with π-system, generalized Hückel, frontier-orbital, and HSAB descriptors.
SynDE is designed for transparent screening and prioritization. Its default
outputs are model score units—not kcal/mol, absolute molecular energies, or
activation barriers. A physical-energy claim requires a named external method
or a calibrated model with held-out validation.
What it provides
- Molecule-level graph scores.
- Product-minus-reactant reaction-state scores.
- Atom-pair ranking using FMO, HSAB, charge complementarity, and graph accessibility.
- Atom-mapped ITS (imaginary transition-state) reaction-centre scoring.
- Optional RDKit conformer refinement and xTB shortlist workflows.
- Explicit, inspectable components and initial heuristic weights for future calibration.
Install
Conda
conda env create -f env.yml
conda activate synde
python -m pip install -e .
Pip
python -m pip install -r requirements.txt
python -m pip install -e .
SynDE requires Python 3.11 or newer, RDKit, NumPy, and Synkit 1.5 or newer.
Quick start
from synde.energy import GraphEnergy
energy = GraphEnergy()
molecule = energy.score_molecule_from_smiles("c1ccccc1")
print(molecule.score, molecule.units) # model score, not kcal/mol
reaction = energy.score_reaction(
"[CH2:1]=[CH2:2]>>[CH3:1][CH3:2]"
)
print(reaction.reaction_delta_score)
For a fully atom-mapped reaction, inspect the reaction centre with the ITS heuristic:
its = energy.score_its("[CH2:1]=[CH2:2]>>[CH3:1][CH3:2]")
print(its.state_delta_score)
print(its.components)
print(its.its_score)
score_its() requires complete atom mapping. It reports an explicit
unsupported result for missing or inconsistent maps rather than guessing a
reaction centre.
Package layout
synde.graph graph construction and electronic descriptors
synde.energy molecule, reaction-state, calibration, and ITS scoring
synde.geometry optional conformer-aware refinement
synde.external external backends, including xTB
synde.integration workflow adapters and graph-to-xTB cascade
Scientific scope
SynDE currently supports a graph-only, closed-shell organic chemistry model. It does not replace quantum chemistry, transition-state search, or experimental validation. Treat scores as ranking features and calibrate them separately for each target, such as reaction ΔE, activation barrier, yield, or selectivity.
Development checks
conda run -n synde python -m pytest -q
conda run -n synde bash lint.sh
conda run -n synde sphinx-build -W -b html doc /tmp/synde-docs
Documentation
Build the local documentation with build_doc.sh, or start with
doc/getting_started.rst.
License
SynDE is licensed under the MIT License.
Acknowledgements
This project has received funding from the European Union's Horizon Europe Doctoral Network programme under Marie Skłodowska-Curie grant agreement No. 101072930 (TACsy).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file synde-0.1.0.tar.gz.
File metadata
- Download URL: synde-0.1.0.tar.gz
- Upload date:
- Size: 114.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
118604f5021675bb8922298b0a3f5cdde84e54bb7b9b853a3e6acebcbca40f62
|
|
| MD5 |
635a4737a06dc98e543610d71678852e
|
|
| BLAKE2b-256 |
c5d81c869f623459ffe51e2421155f8838fe6f5918f06026adbac9f9252cf20f
|
Provenance
The following attestation bundles were made for synde-0.1.0.tar.gz:
Publisher:
publish-package.yml on TieuLongPhan/SynDE
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synde-0.1.0.tar.gz -
Subject digest:
118604f5021675bb8922298b0a3f5cdde84e54bb7b9b853a3e6acebcbca40f62 - Sigstore transparency entry: 2137851849
- Sigstore integration time:
-
Permalink:
TieuLongPhan/SynDE@dbe48600614ed99d26a9bf794281c1c74825d383 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TieuLongPhan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@dbe48600614ed99d26a9bf794281c1c74825d383 -
Trigger Event:
release
-
Statement type:
File details
Details for the file synde-0.1.0-py3-none-any.whl.
File metadata
- Download URL: synde-0.1.0-py3-none-any.whl
- Upload date:
- Size: 124.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d72e84e2cea91e69abb820cb1f1033c43ca0ac2152b7b3d9630114b5a1627527
|
|
| MD5 |
560c939a7b31dcfd855676f9f965d133
|
|
| BLAKE2b-256 |
f70e6cef3c495df461ff533209567a9e1401f1d22c0cf063a7198117f29bedbf
|
Provenance
The following attestation bundles were made for synde-0.1.0-py3-none-any.whl:
Publisher:
publish-package.yml on TieuLongPhan/SynDE
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synde-0.1.0-py3-none-any.whl -
Subject digest:
d72e84e2cea91e69abb820cb1f1033c43ca0ac2152b7b3d9630114b5a1627527 - Sigstore transparency entry: 2137851911
- Sigstore integration time:
-
Permalink:
TieuLongPhan/SynDE@dbe48600614ed99d26a9bf794281c1c74825d383 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TieuLongPhan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@dbe48600614ed99d26a9bf794281c1c74825d383 -
Trigger Event:
release
-
Statement type: