Metadata-Version: 2.4
Name: graphevol
Version: 0.0.1
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
License-File: LICENSE
Summary: Evolutionary graph-based optimization library with Python bindings
License-Expression: Apache-2.0
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# graphevol
A scalable topology-evolution engine powered by a high-performance Rust backend.

`graphevol` provides fast graph-based neuroevolution in Python, with structural mutations, pruning, configurable operations, and a JAX/PyTorch/NumPy-friendly workflow.

---

## Features

- Fast Rust backend for graph topology evolution  
- Six structural mutation operators  
- Configurable GA via YAML (population, mutation rates, pruning, crossover, etc.)  
- Customizable unary & binary operations (`ops.yaml`)  
- Clean Python API for research workflows  
- Good performance with JAX, NumPy, PyTorch

---

## Installation

```bash
pip install graphevol
```

(Optional) Install Graphviz for visualization:

**Linux**
```bash
sudo apt install graphviz
```

**macOS**
```bash
brew install graphviz
```

---

## Quick Start

```python
import graphevol as ge

# Generate default YAML configs
ge.generate_default_settings("ga.yaml", "ops.yaml")

genus = ge.PyGenus(
    seed=0,
    input_dim=4,
    output_dim=2,
    ga_config_path="ga.yaml",
    ops_path="ops.yaml",
)

genomes = genus.next_generation() # weights and function's expression (str)
scores = rollout_fn(genomes)

genus.selection(scores)
```

---

## ⚙ Configuration

`graphevol` uses two YAML files:

### **ga_config.yaml**
### **ops.yaml**

---

## Documentation

Full documentation & examples:  
https://github.com/otyanokosaisai/graphevol

---

## License

MIT License.

---

## Contributions

Issues & PRs are welcome.

