[top] [up] [previous] [next]

PyCellChemistry Online Documentation


About PyCellChemistry

PyCellChemistry is a software package for the design and development of Artificial Chemistries (ACs) and for the exploration of their behavior. It is intended to facilitate people to program their own artificial chemistries in Python, a programming language that is especially accessible and easy to learn. The package illustrates how to implement artificial chemistries through simple examples.

Beware that in contrast with related AC packages, PyCellChemistry does not focus on the usage a specific chemistry, but on the implementation of a variety of chemistries. Therefore the user of PyCellChemistry must have at least some notions of programming, especially object-oriented programming. Some guidelines for beginners are available here.

The package has been designed with a minimalistic philosophy in mind. Our main concerns were an easy installation and programming, enabling a quick start for new users. Therefore we have tried to reduce the amount of external libraries and packages required to a minimum. Hence the basic package does not offer fancy graphics and user interfaces, in order to avoid dependency on elaborated graphics support.

However, since graphics and visualization are also important in artificial chemistries, they are being integrated into the system in an incremental way: first of all, a few optional shell scripts are included in the package, that visualize various results using gnuplot and python matplotlib. Version 2.0 includes examples of reaction-diffusion chemstries that can be visualized interactively on top of VPython.

Disclaimer: The package is provided as is, without any guarantees. Although we have done our best to offer a functional package, it is still possible that bugs persist to date. Beware that the package has been designed for maximum ease of use and didactic content, and not necessarily for maximum efficiency. We believe that the main usage of this package is as a rapid prototyping tool to test and compare a variety of ACs.

Getting started

Warming up

The first step to build an artificial chemistry is to decide whether it should be constructive or not:

Building a nonconstructive chemistry:

A constructive chemistry:

Adding the notion of space:

The examples above showed well-mixed chemistries, but these have limited applicability. Most of the more realisitc chemistries live in a two- or three-dimensional space, or in networks of interconnected computers. In PyCellChemistry version 2.0 we have included a few examples of reaction-diffusion systems, that extend upon the basic reaction system of PyCellChemistry with a two-dimensional grid where chemicals can diffuse and react, forming various patterns.

A very well-known example of reaction-diffusion is the Gray-Scott system, where various patterns may form, including self-replicating spots, stripes, and spirals [Pearson1993] [Mazin1996]:

Delving deeper into the chemistries:

More details about the other chemistries in the package will appear in this section soon...
Meanwhile a reference page for each module is available in the manual below.

Reference Manuals

Reference Manual for PyCellChemistry-2.0

Reference Manual for PyCellChemistry-1.0

Writing your own AC

The tutorials and examples provided are intended to provide some basic concepts and initial ideas about ways to program new ACs. One of the best ways to learn is via examples, hence we suggest that after playing with the examples, you start your own chemistry by modifying or extending some of these examples. We believe that once the core elements of your chemistry operate well in Python, it will be easier for you to move on to a computationally more efficient implementation in C, C++, Java or other programming languages.


We welcome any ideas and contributions. PyCellChemistry is free software, under the terms of the GNU General Public License (GPL). It has primarily an educational goal. We hope that it will foster a community of developers around common methods and best-practice procedures to program ACs, to learn how to program ACs, and to improve their accessibility, such that new and relevant applications can be more easily constructed based on the AC concept.

In the future we should set up a repository for collaborative software development, for instance from github or sourceforge. For now however, please send any bug reports or other remarks concerning the software or the web site to Lidia Yamamoto.


Last updated: September 30, 2015, by Lidia Yamamoto