Kappa is a rule-based language for modeling systems of interacting agents. While its current development is primarily motivated by molecular systems biology, its range of applications is quite broad.
To run Kappa models, use our Python package PyKappa or KaSim, a compiled version written in OCaml. These and related tools are under open source development.
If you are a frequent visitor, keep an eye on the →News.
What does rule-based mean?
Rule-based modeling languages for molecular biology, such as Kappa and BNGL, or organic chemistry, such as Mød, can be used to write mechanistic models of complex reaction systems.
In these models, an agent represents an atomic entity—such as a protein or an atom—with a minimal interaction signature, which make up complexes through their connections. Rules specify local graph-rewrite operations on complexes: they state which pattern of agents is required for an interaction and how that pattern is transformed, without committing to the entire surrounding context. Because many concrete configurations can match the same rule pattern, a small set of rules can implicitly represent a very large reaction network whose behavior can then be explored by stochastic simulation.
Because of the systematic internal structure of Kappa models, we call Kappa "rule-based" instead of "agent-based," which often refers to models in which the behavior of agents is specified in a more ad hoc way.
Manuals
A complete language manual is available and is continually updated. It also contains sections pertaining to simulation and usage, and we are working on a tool section. If you use Kappa, please cite this document as
P. Boutillier, J. Feret, J. Krivine, and W. Fontana. The Kappa Language and Tools (version of <insert date on cover>), kappalanguage.org.
An older reference manual is available as an HTML version. Manuals that are less tightly curated are available in pdf with the stable releases of KaSim.
News
Version 4 of KaSim
The Kappa syntax will change with this release. Other than cosmetics, the two major changes concern an explicit mention of the unbound (free) state of a site and a more explicit mapping between agents on the left of a rule to agents on the right (thus replacing the old "longest prefix" convention). By making the meaning of syntax less implicit than it used to be, rookie errors should be easier to avoid and Kappa rules easier to read. Please see the changes file or this example in the UI.
In addition to the usual chemistry-inspired "arrow" notation for rules (LHS → RHS), there is an "edit" notation in which a rule is expressed directly in terms of the changes it causes.