graphatoms
The Chemical Core Class for Graph Theory Analysis.
Overview
The graphatoms is a Python library designed for chemical graph theory analysis. It provides core classes for representing chemical systems and reactions with graph-based data structures.
Features
- Graph-based Chemical System Representation: Represent chemical systems, clusters, and gas molecules using graph theory
- Reaction Modeling: Support for reaction classes, KMC (Kinetic Monte Carlo) events, and MC (Monte Carlo) moves
- Geometry Operations: Bond lists, distance calculations, neighbor lists, rotations, MIC (Minimum Image Convention), and sampling
- Data Storage: Support for HDF5 and SQLite databases for efficient data persistence
- Dataclasses: Pydantic-based data models for type-safe data handling
- Array API Compatibility: Full support for array API standard for cross-framework compatibility (NumPy, PyTorch, JAX, CuPy, etc.)
- Subgraph Operations: Backend-agnostic subgraph extraction with relabeling support using array-api-compat and array-api-extra
- CLI Entry Points: Three console scripts for configuration, execution, and inspection:
graphatoms-config: Resolve and print the Hydra/OmegaConf run configurationgraphatoms-run: Launch a runrun_type=otfkmcfor on-the-fly kinetic Monte Carlo simulationrun_type=rxngenfor reaction network generation
graphatoms-network: Inspect and visualize a stored reaction network
- Hydra-driven Configuration: Composable, override-friendly config via Hydra/OmegaConf with grouped groups (
atoms,bonds,calculator) - Pluggable Parallel Backends: Switch executors at the config level —
serial,multiprocessing,ray,dask,executorlib— for distributed/on-the-fly KMC workflows
Module Structure
src/graphatoms/
├── arrayapi/ # Array API compatibility layer
├── dataclasses/ # Pydantic-based data models
├── enterpoint/ # Entry points: CLI, config, runners, network, parallel
│ ├── config/ # Hydra/OmegaConf configuration (atoms, bonds, calculator)
│ ├── network/ # Reaction network: scheduler, recorder, metadata
│ ├── parallel/ # Pluggable executors (serial, multiprocessing, ray, dask, executorlib)
│ ├── runner/ # Runners (otfkmc, rxngen) and helpers
│ ├── steps/ # Step primitives for runners
│ └── view.py # CLI viewer for reactions
├── geometry/ # Geometric operations
├── reaction/ # Reaction classes and KMC events
│ ├── _event.py # Event base and event info
│ ├── reaction.py # Reaction class
│ └── xxsorption.py # Adsorption/Desorption events
├── system/ # Core system classes
│ ├── atoms.py # Atomic structure handling
│ ├── bonds.py # Bond list operations
│ ├── graph.py # Graph-based system representation
│ ├── system.py # System abstract base
│ ├── sysCluster.py # Cluster system
│ ├── sysGas.py # Gas molecule system
│ └── database/ # Database storage backends (HDF5, SQLite, folder)
└── utils/ # Utility functions
├── adsorption.py # Adsorption site helper
├── asetools.py # ASE-related tools
├── bytestool.py # Byte-level helpers
├── logger.py # Logging setup
├── parser.py # Hydra argument parsing
├── rdutils.py # RDKit utilities
└── subgraph.py # Array API compatible subgraph operations
Requirements
- Python >= 3.12
- ase
- pymatgen > 2023.6
- rdkit >= 2025
- scikit-learn >= 1.5
- array-api-compat >= 1.15.0
- array-api-extra >= 0.11.0
- pyarrow
- igraph >= 0.11
- h5py >= 3.16
- hydra-core
- numpy >= 2.0.0
- numpydantic
- ovld
- pydantic >= 2.10
- python-snappy >= 0.7.3
- loguru
- pandas >= 2
- scipy >= 1.10
- typer
- executorlib
Installation
pip install graphatoms
Or with conda:
conda install -c conda-forge graphatoms
Development
For development setup with pixi:
pixi install
pixi run test
Running Tests
Run all tests
pytest src/tests/ -v
Run benchmark tests
pytest src/tests-benchmark/ -v
Array API Compatibility
The library leverages array-api-compat and array-api-extra for backend-agnostic array operations. Key utilities include:
subgraph(): Extracts induced subgraphs from edge indicesmap_index(): Maps indices across arraysindex_to_mask(): Converts index arrays to boolean masksmaybe_num_nodes(): Determines the number of nodes from edge indices
These functions work seamlessly with NumPy, PyTorch, JAX, and other array API compliant libraries.
License
GPL-3.0-or-later
Authors
- LiuGaoyong (liugaoyong_88@163.com)
Links
- Homepage: https://github.com/LiuGaoyong/GraphAtoms
- Repository: https://github.com/LiuGaoyong/GraphAtoms
- Issues: https://github.com/LiuGaoyong/GraphAtoms/issues/
Metadata
Release files for graphatoms 2.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| graphatoms-2.1.1.tar.gz | 204.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| graphatoms-2.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 442.3 kB
Release files / graphatoms-2.1.1.tar.gz
| Download URL | graphatoms-2.1.1.tar.gz |
|---|---|
| Size | 204.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83c0edb14c50b84561f921c981efc93188bb6ea2fed6c31bd7077122f286b8d6
|
|
BLAKE2b-256 checksum How to use checksums |
edc76d89099d081960534ef9e8d427a7c7ec83d6b20a57cc5cf889ed3b581028
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / graphatoms-2.1.1-py3-none-any.whl
| Download URL | graphatoms-2.1.1-py3-none-any.whl |
|---|---|
| Size | 237.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c5f4ba617ea57c9d7618aec123c015bd3a44455c86436951168505f9054970e
|
|
BLAKE2b-256 checksum How to use checksums |
d199eff3383603122aceb8a751db55c40085d5b657e9a35a24650a0c42427811
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency log