darrenjw / scala-smfsb   1.0

GNU General Public License v3.0 only Website GitHub

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

Scala versions: 3.x 2.13 2.12 2.11

scala-smfsb

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 "1.0", for Scala 2.13 and Scala 3
  • Use version "0.7" for Scala 2.11 and 2.12
  • The current unstable snapshot release of this library is "1.1-SNAPSHOT" (cross-built for Scala 2.13 and Scala 3)

Binaries are published to Sonatype.

Quickstart

  • To use this software library, you should first install a recent JDK and sbt.
  • Run sbt from an empty/temp directory:
sbt "-Dsbt.version=1.8.0"
set libraryDependencies += "com.github.darrenjw" %% "scala-smfsb" % "1.0"
set libraryDependencies += "org.scalanlp" %% "breeze-viz" % "2.1.0"
set scalaVersion := "3.2.1"
console
  • 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)
Sim.plotTs(ts)
  • 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.

Documentation

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.

Stable:

Just add:

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

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

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

Snapshot:

Just add something like:

libraryDependencies += "com.github.darrenjw" %% "scala-smfsb" % "1.1-SNAPSHOT"
resolvers += "Sonatype Snapshots" at
    "https://oss.sonatype.org/content/repositories/snapshots/"

to your sbt build file.

Building from source

Download or clone the repo and do something like:

sbt clean compile doc mdoc test +package

from the top-level directory (the directory containing build.sbt).