Skip to content

marko-vasic/crnPlusPlus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Publication

If you want to gain a more in-depth understanding of how our technique works, please take a look at our publication. Also, If you would like to reference CRN++ in an academic publication, please cite our journal publication by including the following bibtex entry:

@article{vasic2020crn++,
  title={CRN++: Molecular programming language},
  author={Vasi{\'c}, Marko and Soloveichik, David and Khurshid, Sarfraz},
  journal={Natural Computing},
  volume={19},
  number={2},
  pages={391--407},
  year={2020},
  publisher={Springer}
}

Requirements

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.

Acknowledgments

Yaroslav Sergienko contributed to CRN++ by writing a 3D Engine using a ray marching technique! It is located in the files engine.m and engine.nb.

About

Implementation of a first imperative molecular programming language (CRN++)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published