A Python package for System Dynamics Modeling
Project description
asdm
Agile System Dynamics Modelling
ASDM is a Python library that enables users to create and simulate System Dynamics (SD) models. It also supports SD models saved in the XMILE format, including advanced features such as arrays and conveyors. The support is being continuously improved.
ASDM's Contribution & Impact
Check out this presentation: Project Care Home Demand, given by Sally Thompson, Senior Healthcare Analyst at The Strategy Unit (part of NHS Midlands and Lancashire CSU). The presentation highlights the role of ASDM in developing an online SD model-based simulator.
Library Structure
asdm/asdm.pycontains the main functionalities, including the lexer, parser, and interpreter.asdm/utilities.pyprovides a data visualisation tool.asdm/inference/consists of tools for model calibration.asdm/simulator/provides a web-based simulation interface for easy model execution, result downloading, and visualisation.
Installation
Install from PyPi
pip install asdm
ASDM and its required dependencies will be automatically installed.
Basic Usage
To create a new SD model using ASDM:
from asdm import sdmodel
model = sdmodel()
sdmodel is the core class for System Dynamics models.
Alternatively, you can load an SD model saved in XMILE format, including .stmx models:
model = sdmodel(from_xmile='example_model.stmx')
Run the simulation:
model.simulate()
Export simulation results:
- As a pandas DataFrame:
result = model.export_simulation_result(format='df')
- As a Python dictionary:
result = model.export_simulation_result(format='dict')
Web-Based Simulation Interface
ASDM now includes a web-based simulation interface that allows users to:
- Upload
.stmxor.xmilemodels for simulation. - Download simulation results as a CSV file.
- Select variables and visualise them on an interactive chart.
Quick Start
Run the ASDM web simulator with:
asdm.simulator
By default, this starts a local server at http://127.0.0.1:8080. If port 8080 is unavailable, specify a different port, for example:
asdm.simulator --port 8081
You can also bind to all network interfaces to allow access from others:
asdm.simulator --host 0.0.0.0
Once started, the browser will automatically open the simulator page.
Features
- Drag-and-drop file upload: Upload your
.stmxor.xmilemodel file. - Simulation results in a table: Automatically display after the model runs.
- CSV download: You can download simulation results as a CSV file.
- Interactive charting:
- Select variables from a dropdown list.
- Automatically detects the time column name (e.g., "Years", "Months", etc.).
- Uses Plotly.js to generate interactive line charts.
Functionalities
Please refer to Documentation for detailed function descriptions.
Tutorial Jupyter Notebooks
Jupyter Notebooks demonstrate ASDM's functionalities:
SD Modelling
- Creating an SD model from scratch:
- Adding stocks, flows, auxiliaries.
- Support for nonlinear and stochastic functions.
- Running simulations.
- Exporting and examining simulation results.
- Visualising results.
Support for .stmx Models
- Load and simulate
.stmxmodels. - Support for arrays.
- Modify equations and re-run simulations.
More tutorial notebooks will be added.
Feel free to contribute your own via pull requests—please ensure they do not contain sensitive data.
Licence
ASDM is open-source and released under the MIT licence.
Contributors
Wang Zhao (main author)
- Postgraduate research student & research assistant at University of Strathclyde, UK.
- Software engineer at Newcastle Marine Services, UK.
- Speaker at multiple conferences on SD modelling.
- Contact: wang.zhao@strath.ac.uk; wzh1895@outlook.com
- Conference talk: Watch Here on YouTube.
Matt Stammers (contributor)
- Consultant Gastroenterologist & open-source developer at University Hospital Southampton, UK.
- Developed Streamlit-powered web apps using ASDM for healthcare modelling.
- Part of the Really Useful Models initiative: Learn More.
- GitHub: Matt's Homepage.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file asdm-0.4.1.tar.gz.
File metadata
- Download URL: asdm-0.4.1.tar.gz
- Upload date:
- Size: 42.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bf3e29c7f564976efb383820c735a9c6e608ac398378ea5e42582589eec497c
|
|
| MD5 |
05ad556b6677dad54da46b07fed7b4b1
|
|
| BLAKE2b-256 |
1401f4144fa4ea0cab1cbfae0ec98d8d290a2281627fcdb4ab2b550281efe9d7
|
File details
Details for the file asdm-0.4.1-py3-none-any.whl.
File metadata
- Download URL: asdm-0.4.1-py3-none-any.whl
- Upload date:
- Size: 40.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c914fe43fd3850d2f998af7797af250017f4aaab6c8386dd88c05877252366d
|
|
| MD5 |
b553f72a2f01b9eff21f3980722135f7
|
|
| BLAKE2b-256 |
5ac0e789cb5dfec8bbdd6d9400b7c8eddc949d8a1337029737a2dfe9a6b0cc36
|