Skip to main content

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.py contains the main functionalities, including the lexer, parser, and interpreter.
  • asdm/utilities.py provides 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 .stmx or .xmile models for simulation.
  • Download simulation results as a CSV file.
  • Select variables and visualise them on an interactive chart.

ASDM Simulator

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 .stmx or .xmile model 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 .stmx models.
  • 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)

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asdm-0.4.1.tar.gz (42.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asdm-0.4.1-py3-none-any.whl (40.5 kB view details)

Uploaded Python 3

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

Hashes for asdm-0.4.1.tar.gz
Algorithm Hash digest
SHA256 0bf3e29c7f564976efb383820c735a9c6e608ac398378ea5e42582589eec497c
MD5 05ad556b6677dad54da46b07fed7b4b1
BLAKE2b-256 1401f4144fa4ea0cab1cbfae0ec98d8d290a2281627fcdb4ab2b550281efe9d7

See more details on using hashes here.

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

Hashes for asdm-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c914fe43fd3850d2f998af7797af250017f4aaab6c8386dd88c05877252366d
MD5 b553f72a2f01b9eff21f3980722135f7
BLAKE2b-256 5ac0e789cb5dfec8bbdd6d9400b7c8eddc949d8a1337029737a2dfe9a6b0cc36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page