DE-Sim: a Python-based object-oriented discrete-event simulator for modeling complex systems
DE-Sim is an open-source, Python-based object-oriented discrete-event simulation (DES) tool that makes it easy to use large, heterogeneous datasets and high-level data science tools such as NumPy, Scipy, pandas, and SQLAlchemy to build and simulate complex computational models. Similar to Simula, DE-Sim models are implemented by defining logical process objects which read the values of a set of variables and schedule events to modify their values at discrete instants in time.
To help users build and simulate complex, data-driven models, DE-Sim provides the following features:
- High-level, object-oriented modeling: DE-Sim makes it easy for users to use object-oriented Python programming to build models. This makes it easy to use large, heterogeneous datasets and high-level data science packages such as NumPy, pandas, SciPy, and SQLAlchemy to build complex models.
- Stop conditions: DE-Sim makes it easy to terminate simulations when specific criteria are reached. Researchers can specify stop conditions as functions that return true when a simulation should conclude.
- Results checkpointing: DE-Sim makes it easy to record the results of simulations by using a configurable checkpointing module.
- Reproducible simulations: To help researchers debug simulations, repeated executions of the same simulation with the same configuration and same random number generator seed produce the same results.
- Space-time visualizations: DE-Sim generates space-time visualizations of simulation trajectories. These diagrams can help researchers understand and debug simulations.
Projects that use DE-Sim
- Minimal simulation: a minimal example of a simulation
- Random walk: a random one-dimensional walk which increments or decrements a variable with equal probability at each event
- Parallel hold (PHOLD): model developed by Richard Fujimoto for benchmarking parallel DES simulators
- Epidemic: an SIR model of an epidemic of an infectious disease
Please see sandbox.karrlab.org for interactive tutorials on creating and executing models with DE-Sim.
Template for models and simulations
de_sim/examples/minimal_simulation.py contains a template for implementing and simulating a model with DE-Sim.
- Python >= 3.7
- pip >= 19
Install this package using one of these methods
Install the latest release from PyPI
pip install de_sim
Install a Docker image with the latest release from DockerHub
docker pull karrlab/de_sim
Install the latest version from GitHub
pip install git+https://github.com/KarrLab/de_sim.git#egg=de_sim
Please see the API documentation.
Please see the DE-Sim article for information about the performance of DE-Sim.
Strengths and weaknesses compared to other DES tools
Please see the DE-Sim article for a comparison of DE-Sim with other DES tools.
The package is released under the MIT license.
Please use the following reference to cite DE-Sim:
Arthur P. Goldberg & Jonathan Karr. (2020). DE-Sim: an object-oriented, discrete-event simulation tool for data-intensive modeling of complex systems in Python. Journal of Open Source Software, 5(55), 2685.
Contributing to DE-Sim
This package was developed by the Karr Lab at the Icahn School of Medicine at Mount Sinai in New York, USA by the following individuals:
This work was supported by National Science Foundation award 1649014, National Institutes of Health award R35GM119771, and the Icahn Institute for Data Science and Genomic Technology.