BoolFilter-package {BoolFilter}R Documentation

Optimal Estimation of Partially-Observed Boolean Dynamical Systems


Tools for optimal and approximate state estimation as well as network inference of Partially-Observed Boolean Dynamical Systems.


Package: BoolFilter
Type: Package
Version: 1.0
Date: 2017-01-08
License: Artistic-2.0

Estimation of Partially-Observed Boolean Dynamical Systems (POBDS) is handled by various algorithms, revolving primarily around the Boolean Kalman Filter (BKF). Other similar algorithms have been developed and documented in the BoolFilter package, including BKS for batch datasets and the SIR_BKF for large POBDS.

These algorithms can be run on data with various types of noise including:

These types of noise models are included to handle different potential observation noise that could be encountered in real applications.

These observation noise models can be simulated in the simulateNetwork function, which can generate both state and observation trajectories of user defined length and observation model preference.

Additionally, the plotTrajectory function can be implemented to visualize the trajectories of state variables.


Levi McClenny, Mahdi Imani, Ulisses Braga-Neto

Maintainer: Levi McClenny <>


Braga-Neto U. Optimal state estimation for Boolean dynamical systems. In 2011 Conference Record of the Forty Fifth Asilomar Conference on Signals, Systems and Computers (ASILOMAR) 2011 Nov 6 (pp. 1050-1054). IEEE.

Imani, M., & Braga-Neto, U. Maximum-likelihood adaptive filter for partially-observed boolean dynamical systems. IEEE transaction on Signal Processing, 65:359-371, 2017.

Further references are listed in the corresponding reference sections


#Simulate data from a Bernoulli observation model
data <- simulateNetwork(p53net_DNAdsb0, = 100, p = 0.02,
                        obsModel = list(type = "Bernoulli",
                                          p = 0.02))
#Derive an estimate of the network using a BKF approach
Results <- BKF(data$Y, p53net_DNAdsb0, .02,
                        obsModel = list(type = "Bernoulli",
                                          p = 0.02))
#View network approximation vs. correct trajectory
                labels = p53net_DNAdsb0$genes,
                dataset2 = data$X,
                compare = TRUE)

[Package BoolFilter version 1.0.0 Index]