A Petri net modeling framework for the Julia programming language https://mehalter.github.io/Petri.jl/stable/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Micah Halter a3b2c79029
Added support for Catlab v0.9 (#39)
2 weeks ago
.github/workflows [WIP] Documentation dependency fix (#36) 1 month ago
docs [WIP] Documentation dependency fix (#36) 1 month ago
examples [WIP] Documentation dependency fix (#36) 1 month ago
src Fixed transition array support (#38) 1 month ago
test Fixed transition array support (#38) 1 month ago
.gitignore Documentation Update (#28) 3 months ago
LICENSE Updated compatibility and version bump (#10) 11 months ago
Project.toml Added support for Catlab v0.9 (#39) 2 weeks ago
README.md [WIP] Documentation dependency fix (#36) 1 month ago

README.md

Petri.jl

Documentation Tests codecov DOI

Petri.jl is a Petri net modeling framework for the Julia programming language. Petri makes it easy to build complex reaction networks using a simple DSL. Once a model is defined, Petri.jl has support to generate ODE solutions and stochastic simulations using DifferentialEquations.jl. Examples and basic usage can be found in the documentation.

Goals

This is related to the DiffeqBiological Reaction DSL, but takes a different implementation approach. Instead of building our framework around symbolic algebra and standard chemical notion, we are working off the Applied Category Theory approach to reaction networks [Baez Pollard, 2017].

There are operations that are easy to do on the Petri.Model like “add a transition from R to S” that require simultaneously changing multiple parts of the algebraic formulation. Applied Category Theory gives a sound theoretical framework for manipulating Petri Nets as a model in terms of the given domain. Petri is a Julia package primarily intended to investigate how we can operationalize this theory into practical scientific software.

See AlgebraicPetri for tools that work with Petri net models and manipulating them with higher level APIs based on Applied Category Theory.