This project aims to provide a set of function to define, manipulate, and analyse qualitative dynamical models based on logical functions. It is basically a playground for a more efficient implementation of bioLQM using rust instead of java.
The core data structures for Boolean expressions have been extracted into the bokit crate (rust library).
The logical-model part will be reconstructed based on this new foundation, the new version will be publishedon the GINsim organization.
Beyond being faster, the use of rust will enable the integration of clean python bindings, to improve the CoLoMoTo notebook (bioLQM and GINsim rely on py4j for this).
Here are the main underlying objects.
Boolean variables are identified by integer UIDs. A variable "group" can be used to associate them to human-readable names.
Functions can be stored as boolean expressions or prime implicants, with dedicated data structures. An abstract function is an enum holding one of the supported formats, it provides accessor methods to retrieve the function in any format, performing on-demand conversion when needed.
A formula contains an abstract function as main representation, and provides similar accessors to retrieve any supported format, but it will cache a copy of each requested format to avoid repeating the same conversion.
TODO: Assignments will be lists of Boolean functions associated to target values. They will be used to represent multi-valued functions, through the creation of implicit Boolean variables for each activity threshold.
A model is a list of assignments (currently of simple Boolean functions), where each variable is associated to a rule cntrolling it's target value.
A format handles parsing and exporting models.