darrenjw / scala-smfsb

Scala library for biochemical network simulation, associated with the 3rd edition of the textbook Stochastic Modelling for Systems Biology

Version Matrix


Scala library for stochastic kinetic modelling, biochemical network simulation, and parameter inference, associated with the 3rd edition of the textbook Stochastic Modelling for Systems Biology

  • The current stable version of this library is "0.6"
  • The current unstable snapshot release of this library is "0.7-SNAPSHOT"

Binaries are published to Sonatype, cross-built for Scala 2.11.x and 2.12.x.


  • To use this software library, you should first install a recent JDK and Sbt.
  • Run sbt from an empty/temp directory
  • At the sbt prompt, enter:
set libraryDependencies += "com.github.darrenjw" %% "scala-smfsb" % "0.6"
set libraryDependencies += "org.scalanlp" %% "breeze-viz" % "0.13.2"
set scalaVersion := "2.12.6"
  • You should now have a Scala REPL with a dependency on this library. At the Scala REPL, enter the following:
import smfsb._
import breeze.linalg._
val model = SpnModels.lv[IntState]()
val step = Step.gillespie(model)
val ts = Sim.ts(DenseVector(50, 40), 0.0, 20.0, 0.1, step)
  • This should simulate a trajectory from a Lotka-Volterra model and plot the result in a window on the console which looks a little bit like the following:

Lotka-Volterra trajectory

To get the most out of this library, it will be helpful if you are already familiar with the R package smfsb associated with the (2nd or) 3rd edition of the textbook Stochastic modelling for systems biology, and have a basic familiarity with Scala and Breeze. For those new to Scala, my course on Scala for statistical computing is a good place to start.


Using the library in your own Scala projects

giter8 template:

To create a new Scala sbt project template, just use:

sbt new darrenjw/scala-smfsb.g8

This will create a new project including a dependence on the stable version of the library.


Just add:

"com.github.darrenjw" %% "scala-smfsb" % "0.6"

to your Sbt dependencies. You might also need to add an explicit dependence on breeze-viz:

"org.scalanlp" %% "breeze-viz" % "0.13.2"


Just add something like:

libraryDependencies += "com.github.darrenjw" %% "scala-smfsb" % "0.7-SNAPSHOT"
resolvers += "Sonatype Snapshots" at

to your Sbt build file.

Building from source

Download or clone the repo and do:

sbt clean compile test doc package

from the top-level directory.