No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Latest commit a4a8a4d Sep 4, 2018
Failed to load latest commit information.
examples update fibonacci example Jul 23, 2018
packages adding more examples Jul 23, 2018
.gitignore adding initial example code Jul 12, 2018
LICENSE.txt add license Jul 12, 2018 update readme Sep 4, 2018

CRN++: Molecular Programming Language

This project contains implementation of the CRN++ language. CRN++ is a language for programming deterministic (mass-action) chemical kinetics to perform computation. This project contains a compiler, translating CRN++ programs into chemical reactions, as well as simulation framework for simulation of the Chemical Reaction Networks. We rely on the Mathematica package developed by David Soloveichik for the simulation of Chemical Reaction Networks.


If you are interested in knowing more about the project, please check our publication. If you would like to reference CRN++ in an academic publication, please cite our DNA publication:

	title = {CRN++: Molecular Programming Language},
	author = {Vasic, Marko and Soloveichik, David and Khurshid, Sarfraz},
        booktitle = {Proceedings of the 24th International Conference on {DNA} Computing and Molecular Programming},
        year = {2018}


Mathematica version 11.2 or higher. Earlier versions of Mathematica might be supported, but project was not tested under earlier versions.

Project Structure

Examples of the CRN++ programs are under the examples directory. Each example is divided into two files, mathematica ('.m') file containing the core part of the code (actual program), and notebook ('.nb') file containing the 'glue' code for simulating and plotting the results. User can simply open the notebook file, see simulation results of the program, and update the simulation parameters if desired. The CRN++ compiler and simulation framework are stored in the packages directory.

Writing New Programs

If you would like to develop and test new CRN++ programs, please follow the structure of examples under the examples directory.