This package contains several tools for quickly setting up worlds and agents for Grammatical Evolution Projects.
Project description
Grammatical Evolution Tools
Table of Contents
Introduction
GrammaticalEvolutionTools is a Python package designed to simplify the setup and execution of Grammatical Evolution (GE) and other Agent-Based Modeling (ABM) projects. It provides a suite of tools for quickly spinning up worlds, defining grammars, setting up agents, and running and animating simulations. It includes a number of abstract classes you can easily inherit from and customize, with much of the underlying functionality already implemented.
Whether you're building complex simulation environments or simple test cases, getools streamlines the boilerplate, enabling faster iteration and more effective research in grammatical evolution.
Note: This project is still in development. Code has been refactored and not all docstrings may reflect this yet.
Features
Currently Available:
- World Environment Setup: Easily define and configure custom environments for GE agents.
- Grammar Definition: Inherit from common classes to create custom grammars with specific functionalities.
- Agent Management: Logic for running Agent programs and having them interact with their world.
- Evolution: Common methods for cross over and mutation, built to work with program trees.
- Animation: Create customizable animations for simulations.
Coming Soon:
- Asynchronous Behavior Trees!
Installation
PyPI
This package is available on PyPI. You can install it with:
pip install GrammaticalEvolutionTools
For pre-releases, you may need to specify the version:
pip install GrammaticalEvolutionTools==<VERSION>
After installation:
import getools
from getools.worlds.grid_world import GridWorld
from getools.grammars import Grammar
...
world = GridWorld(...)
Local Development
Prerequisites
This project uses Poetry for dependency management and packaging. Before installing the package, ensure you have Poetry installed on your system.
The recommended way to install Poetry is using pipx, which installs Python applications in isolated environments.
# 1. Install pipx (if you don't have it)
python -m pip install --user pipx
python -m pipx ensurepath
# 2. Install Poetry using pipx
pipx install poetry
You can find more detailed installation instructions for Poetry on their official website: Poetry Installation Guide
Core Package
To install the core package with only its essential dependencies (for integrating it into your own projects):
# Clone the repository
git clone https://github.com/n-smith-byu/GrammaticalEvolutionTools.git
cd GrammaticalEvolutionTools
# Install the core package
poetry install
For Notebooks and Examples
If you plan to explore the provided examples or run the Jupyter notebooks, you'll need to install the package with the examples dependency group.
# Install the package with examples dependencies
poetry install --with examples
For Development (Tests and Docs)
If you intend to modify the code, run tests, or build the documentation, install with the dev dependency group.
# Install in editable mode with dev dependencies
poetry install --with dev
Examples
The examples/ directory in this repository contains various Jupyter notebooks and scripts demonstrating how to use getools for different scenarios.
To run these examples, make sure you have installed the package with the examples dependency group:
# Ensure you are in the project root directory
cd examples/
jupyter lab # or jupyter notebook
Examples include an implementation of the Santa Fe problem and a basic grammatical evolution algorithm.
Running Tests
NOTE: Incomplete
If you are developing the package, you can run the test suite using pytest. Ensure you have installed the dev dependencies.
# From the project root directory
pytest
Documentation
NOTE: Incomplete
The project's documentation is built using Sphinx. To generate the HTML documentation locally, ensure you have installed the dev dependencies.
First, navigate to the docs/ directory from the project root:
cd docs/
Then, run the appropriate command for your operating system:
For Linux / macOS / WSL:
make html
For Windows (Command Prompt / PowerShell):
poetry run sphinx-build -b html . _build/html
The generated HTML documentation will be located in docs/_build/html/index.html. You can open this file in your web browser to view the documentation.
License
This project is licensed under the MIT License.
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 grammaticalevolutiontools-1.1.0a2.tar.gz.
File metadata
- Download URL: grammaticalevolutiontools-1.1.0a2.tar.gz
- Upload date:
- Size: 53.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c68ea8c040e0de71637d367b806892ef9fe5e37ceddd164e4c5f033472a30082
|
|
| MD5 |
755a42419f765f17c3f2150fb08e7a36
|
|
| BLAKE2b-256 |
68d2038f9593ada5d8a2217a803d5164cc94efc82fecbb8491a635751f905c75
|
Provenance
The following attestation bundles were made for grammaticalevolutiontools-1.1.0a2.tar.gz:
Publisher:
python-publish.yml on n-smith-byu/GrammaticalEvolutionTools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grammaticalevolutiontools-1.1.0a2.tar.gz -
Subject digest:
c68ea8c040e0de71637d367b806892ef9fe5e37ceddd164e4c5f033472a30082 - Sigstore transparency entry: 1523648100
- Sigstore integration time:
-
Permalink:
n-smith-byu/GrammaticalEvolutionTools@bf08a9fdd504005d371f854a8f74a97a77800f26 -
Branch / Tag:
refs/tags/v1.1.0a2 - Owner: https://github.com/n-smith-byu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@bf08a9fdd504005d371f854a8f74a97a77800f26 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grammaticalevolutiontools-1.1.0a2-py3-none-any.whl.
File metadata
- Download URL: grammaticalevolutiontools-1.1.0a2-py3-none-any.whl
- Upload date:
- Size: 71.2 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 |
22677f8a04d54e5454c07e3c620f1367ad49a1e6056e4bf2d09b81c64b43d20e
|
|
| MD5 |
4f8f3980e80e70810a251550784ad9e7
|
|
| BLAKE2b-256 |
8b85133905556ebf233fea07968cf4035db87b2a7b08cd697653745d1474bae5
|
Provenance
The following attestation bundles were made for grammaticalevolutiontools-1.1.0a2-py3-none-any.whl:
Publisher:
python-publish.yml on n-smith-byu/GrammaticalEvolutionTools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grammaticalevolutiontools-1.1.0a2-py3-none-any.whl -
Subject digest:
22677f8a04d54e5454c07e3c620f1367ad49a1e6056e4bf2d09b81c64b43d20e - Sigstore transparency entry: 1523648113
- Sigstore integration time:
-
Permalink:
n-smith-byu/GrammaticalEvolutionTools@bf08a9fdd504005d371f854a8f74a97a77800f26 -
Branch / Tag:
refs/tags/v1.1.0a2 - Owner: https://github.com/n-smith-byu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@bf08a9fdd504005d371f854a8f74a97a77800f26 -
Trigger Event:
push
-
Statement type: