CellEvoX is a simulation system for modeling population dynamics, incorporating mutation types and probabilistic distributions. The project is designed with a modular and scalable architecture, leveraging modern C++ standards and libraries such as Qt6, TBB, and Eigen3 for high performance and ease of extensibility.
- Stochastic and Deterministic Simulation: Supports tau-leap simulation based on Gillespie's algorithm and provides extensibility for new methods.
- Entity-Component-System (ECS) Architecture: Decouples data and behavior for flexible simulation management.
- Mutation Modeling: Implements various mutation types with configurable probabilities and effects.
- Statistical Reporting: Generates detailed statistical snapshots, including mutation histograms and fitness distributions.
- Graphical User Interface (GUI): Developed using QML for real-time visualization and user-friendly interaction.
- Containerized Deployment: Ensures reproducibility and ease of deployment using Docker.
- C++23 compatible compiler
- CMake 3.16 or higher
- Qt6 (Quick, QuickControls2, Qml, Core, Gui)
- Intel TBB
- Eigen3
- spdlog
- nlohmann_json
- Python3 with NumPy (for additional utilities)
- Log in to GitHub Container Registry:
docker login ghcr.io
- Pull the Docker image:
docker pull ghcr.io/dxrgrabowski/cellevox:main
- Run the container:
docker run -it ghcr.io/dxrgrabowski/cellevox:main
- Follow the instructions of builing on source
- Clone the repository:
git clone https://github.com/dxrgrabowski/cellevox.git cd cellevox
- Build the Docker image:
docker build -t cellevox:local .
- Run the locally built container:
docker run -it cellevox:local
- Follow the instructions of builing on source
- Create a build directory and run CMake:
mkdir build && cd build cmake .. make
- Run the program:
./bin/CellEvoX
- Configure the simulation by editing the provided configuration file.
- Run the simulation executable with --config pointing to config file localization.
- View the generated data and statistical reports created in output directory specified in config. (Docker needs a write permission to output dir)
- include/: Header files defining core components.
- src/: Source files implementing the program logic.
- qml/: QML files for the GUI.
- build/: Directory for compiled binaries.
Contributions are welcome! Please fork the repository and submit a pull request with your changes.
For questions or support, contact Dawid Grabowski at dxrsoftware@gmail.com.