Skip to content
Snippets Groups Projects
Mahmoud Bentriou's avatar
Bentriou Mahmoud authored
This commit groups the change operated to the creation of models and
simulate function of a ContinuousTimeModel.
The general idea is to create a concrete type and a simulate function
 per model creation by metaprogramming.
- Now, ContinuousTimeModel is an abstract type. Each creation of a model
defines a concrete type T <: ContinuousTimeModel by meta programming.
- f! and isabsorbing ContinuousTimeModel fields are Symbols.
- simulate(::ContinuousTimeModel) is run by multiple dispatch, according
to the type of the model.

Can't run the whole tests for now but unit/simulate_available_models.jl
runs properly (i've updated the list of models in this commit), and I've
manually checked in the repl that simulations run correctly (distributed
/ plots).
5d886fc4
History
Name Last commit Last update
algorithms
automata
bench
core
examples
models
tests
README.md

MarkovProcesses.jl

A Julia package for efficient simulation, statistical inference and verification of Continuous Time Markov Chains.

It implements:

  • A core of simulation for Markov Processes.
  • A simple interface for Biochemical Networks / Stochastic Petri Nets.
  • Synchronized simulation with Linear Hybrid Automata.
  • Approximate Bayesian Computation (a likelihood-free inference method)
  • Automaton-ABC: a statistical method for verification of parametric CTMC (cite paper)

Install

This package is not yet accessible via the Julia package manager. For the install of the package:

  1. Clone this git repository on your computer.

  2. Add the "core" directory of this repository to your LOAD_PATH. This can be done by two different ways:

    • Add the Julia line code
    import Distributed: @everywhere
    @everywhere push!(LOAD_PATH, /path/to/markovprocesses.jl/core")

    on your Julia startup file which is often located in ~/.julia/config/startup.jl in Unix systems.

    • If you don't want to add this in your startup file, you can add these lines in your Julia script before using MarkovProcesses.

Getting started

A few notebooks are available in examples/notebooks for a quick presentation of the different features of the package.

Tests

Execution tests and statistical tests are available. It can be run by:

julia tests/run_all.jl

⚠️ The statistical tests run by tests/run_cosmos.jl needs Cosmos in your PATH environment variable.

Benchmarks

Benchmarks have been made to test the performance of the package compared to well-known efficient other packages such as DifferentialEquations.jl.

Info

This package was written during my PhD thesis. The mathematical fundations and the package archtecture are presented in it.