Metadata-Version: 2.4
Name: synkit
Version: 1.6.5
Summary: Utility for reaction modeling using graph grammar
Project-URL: homepage, https://github.com/TieuLongPhan/SynKit
Project-URL: source, https://github.com/TieuLongPhan/SynKit
Project-URL: issues, https://github.com/TieuLongPhan/SynKit/issues
Project-URL: documentation, https://tieulongphan.github.io/SynKit/
Author-email: Tieu Long Phan <tieu@bioinf.uni-leipzig.de>
License-Expression: MIT
License-File: LICENSE
License-File: synkit/Chem/Mapper/solvers/native/cpp/src/symmetry/vendor/nauty/COPYRIGHT
License-File: synkit/Chem/Mapper/solvers/native/cpp/src/symmetry/vendor/nauty/LICENSE-2.0.txt
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: joblib>=1.2.0
Requires-Dist: matplotlib>=3.9
Requires-Dist: networkx>=3.3
Requires-Dist: numpy>=2.2.0
Requires-Dist: pandas>=2.2.2
Requires-Dist: pillow
Requires-Dist: rdkit>=2025.3.1
Requires-Dist: regex>=2024.11.6
Requires-Dist: requests>=2.32.3
Requires-Dist: scikit-learn>=1.4.2
Requires-Dist: scipy>=1.14.0
Requires-Dist: seaborn>=0.13.2
Requires-Dist: tomli>=2.0; python_version < '3.11'
Requires-Dist: tqdm
Requires-Dist: typing-extensions>=4.4; python_version < '3.11'
Provides-Extra: all
Requires-Dist: pulp; extra == 'all'
Requires-Dist: sympy>=1.13.1; extra == 'all'
Requires-Dist: torch>=2.2.0; extra == 'all'
Provides-Extra: docs
Requires-Dist: graphviz; extra == 'docs'
Requires-Dist: myst-parser; extra == 'docs'
Requires-Dist: pydata-sphinx-theme; extra == 'docs'
Requires-Dist: sphinx-copybutton; extra == 'docs'
Requires-Dist: sphinx-design; extra == 'docs'
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
Requires-Dist: sphinx-togglebutton; extra == 'docs'
Requires-Dist: sphinx>=6.0; extra == 'docs'
Requires-Dist: sphinxcontrib-bibtex; extra == 'docs'
Provides-Extra: milp
Requires-Dist: pulp; extra == 'milp'
Provides-Extra: test
Requires-Dist: flake8; extra == 'test'
Requires-Dist: psutil<8,>=5.9; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Description-Content-Type: text/markdown

# SynKit

[![PyPI version](https://img.shields.io/pypi/v/synkit.svg)](https://pypi.org/project/synkit/)
[![License](https://img.shields.io/github/license/tieulongphan/synkit.svg)](https://github.com/tieulongphan/synkit/blob/main/LICENSE)
[![Zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.15269901.svg)](https://doi.org/10.5281/zenodo.15269901)
[![CI](https://github.com/tieulongphan/synkit/actions/workflows/test-and-lint.yml/badge.svg?branch=main)](https://github.com/tieulongphan/synkit/actions/workflows/test-and-lint.yml)

**Graph-native reaction informatics and executable electron-flow models**

SynKit is a Python toolkit for atom mapping, chemical graph transformations,
reaction rules, stereochemistry, and chemical reaction networks. It also
represents Lewis-labelled graphs and verifies user-supplied electron-flow
mechanisms. It does not predict the kinetically or thermodynamically preferred
mechanism.

![SynKit graphical abstract](https://raw.githubusercontent.com/TieuLongPhan/SynKit/main/Data/Figure/synkit_graphical_abstract.svg)

## Installation

Requires Python 3.10 or later.

```bash
python -m pip install synkit
```

See [Getting Started](doc/getting_started.rst) for examples, optional
dependencies, and Docker installation.

Platform wheels include the C++ PABS–SLAP atom mapper. It searches heavy-atom
classes with hydrogen changes included in the Lewis score:

```python
from synkit.Chem.Mapper import map_reaction_implicit

result = map_reaction_implicit("CCO>>COC", time_limit_seconds=10)
print(result.minimum_cost, result.complete)
print(result.mapped_reactions)
```

See [Atom mapping](doc/mapper.rst) for exact-CD enumeration, solver selection
and custom builds. Older releases may require an explicit native build.

The same wheel also bundles exact CRN analysis and the graph canonicalization
backend used by native stereograph analysis. Select native CRN analysis with:

```python
from synkit.CRN import SynCRN, crnt_summary, native_backend

model = SynCRN.from_reaction_strings(["A>>B", "B>>A"])
with native_backend():
    print(crnt_summary(model).to_dict())
```

Platform wheels need no local compiler or Boost installation. Source builders
can compile all native components together using the
[shared build instructions](scripts/README.md#native-builds).

## Documentation

- [Documentation](https://tieulongphan.github.io/SynKit/)
- [API reference](https://tieulongphan.github.io/SynKit/api/index.html)
- [Issue tracker](https://github.com/TieuLongPhan/SynKit/issues)
- [Changelog](doc/changelog.rst)

## Publications

- [Lewis-labeled graphs: curly arrows and fishhooks as executable electron
  transfers](https://arxiv.org/abs/2607.26088), submitted (2026).
- [SynKit: A Graph-Based Python Framework for Rule-Based Reaction Modeling and
  Analysis](https://pubs.acs.org/doi/full/10.1021/acs.jcim.5c02123), *Journal
  of Chemical Information and Modeling* (2025).

## Contributing

Contributions and bug reports are welcome. Create a branch from the current
mainline, make a focused change, and run the repository checks before opening
a pull request:

```bash
git switch -c feature/short-description
bash scripts/lint.sh
bash scripts/pytest.sh
```

Questions can be sent to [tieu@bioinf.uni-leipzig.de](mailto:tieu@bioinf.uni-leipzig.de).

## Contributors

- [Tieu-Long Phan](https://tieulongphan.github.io/)
- [Klaus Weinbauer](https://github.com/klausweinbauer)
- [Phuoc-Chung Nguyen Van](https://github.com/phuocchung123)
- [Tuyet-Minh Phan](https://github.com/tuyetminhphan)

## License

SynKit is distributed under the MIT License. See [LICENSE](LICENSE).

## Acknowledgments

This project received funding from the European Union’s Horizon Europe
Doctoral Network programme under Marie Skłodowska-Curie grant agreement
No. 101072930 ([TACsy](https://tacsy.eu/)).
