Diagnosis plugin
The diagnosis plugin extends the PySAT metamodel with conflict detection and diagnosis capabilities, explaining why a configuration is inconsistent with a feature model.
Table of contents
Official repository
https://www.github.com/flamapy/pysat_metamodel
pysat_diagnosis metamodel plugin of flamapy framework
The pysat_diagnosis_metamodel plugin builds on top of the PySAT metamodel to support automated debugging of feature models and configurations. Given a configuration and a test case, it computes conflict sets (minimal subsets of constraints that are inconsistent) and diagnoses (minimal sets of constraints whose removal restores consistency). It is shipped together with the flamapy-sat package.
Features of the Diagnosis Metamodel Plugin
- Conflict and Diagnosis Algorithms
- Implements QuickXPlain for computing minimal conflict sets.
- Implements FastDiag for computing minimal diagnoses.
- Uses an HSDAG (Hitting Set Directed Acyclic Graph) to enumerate multiple conflicts/diagnoses.
- Metamodel Classes
- Provides the
DiagnosisModel(extensionpysat_diagnosis) to represent the knowledge base, the constraints set, and the diagnosis task.
- Provides the
- Operations
- Conflict detection and diagnosis given a configuration and a test case.
- Transformations
- Model-to-Model (M2M): Transforms feature models (
fm) into the diagnosis model (pysat_diagnosis).
- Model-to-Model (M2M): Transforms feature models (
Installation instructions
The diagnosis metamodel is distributed together with the PySAT plugin:
-
Install Python: Ensure that Python 3.9 or later is installed on your system.
-
Install the PySAT Metamodel Plugin (which includes the diagnosis metamodel):
pip install flamapy-sat
Links
- PyPI: pysat_metamodel on PyPI
- GitHub Repository: pysat_metamodel on GitHub
Operations
Currently, this plugin enables the following operations: