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 its users to create and simulate System Dynamics (SD) models. It can also simulate SD models saved in the XMILE format, including advanced features such as arrays and conveyors. The support is being continuously improved.

In the library:

  • asdm/asdm.py consists of the main functionalities, including the lexer, parser, and interpreter.

  • asdm/utilities.py provies a data visualisation tool.

  • asdm/Inference consists of tools for model calibration.

Installation

Python version

The library is developed and used with Python 3.11. However, it should also work with other versions. If you encounter a problem and believe it is related to python version, please open an issue or contact me.

Operating system

The library is developed and used on macOS. Some tests have also been done on Windows and Ubuntu Linux, but they are not comprehensive. If you encounter a problem and believe it is related to the OS, please open an issue or contact me.

Create an environment

We recommend that you create a new environment to use the library, although this is not always necessary. For example, if you use anaconda, this can be done by:

conda create --name asdm

Usage

Option 1: Use ASDM directly from this repository

Clone this repository to your local computer

To clone this repository to your local environment, please ensure that git is installed in your system, then use the following command:

git clone https://github.com/wzh1895/ASDM.git

Install dependencies

ASDM relies on a number of other python libraries as dependencies. To install them, use the following commands:

cd asdm
conda install --file requirements.txt -c conda-forge

Import ASDM

At the root folder of this repository, execute the following code in the interactive Python environment or as a part of a script:

from asdm.asdm import sdmodel

Option 2: Install ASDM from PyPI

Install ASDM using pip

pip install asdm

ASDM and its required dependencies will be automatically installed.

Import ASDM

At any path, execute the following code in the interactive Python environment or as a part of a script:

from ASDM.asdm import sdmodel

Note: there is a difference in code between the above two ways of imports. We are working on making them consistent in future updates.

Functionalities

Please refer to Documentation for the commonly used functions.

Tutorial Jupyter Notebooks

We also use Jupyter Notebooks to provide demoes of ASDM's functionalities.

  1. SD Modelling
  • Creating an SD model from scratch
    • Adding stocks, flows, auxiliaries
    • Support for nonlinear functions (MIN, MAX, etc.)
    • Support for stochastic functions (random binomial trial, etc.)
  • Running simulations
  • Exporting and examing simulation outcomes
  • Displaying simulation outcomes as graph

We will add more tutorial notebooks.

You are welcomed to share your own tutorial notebooks through a pull request. When sharing notebooks, please make sure it does not contain sensitive data.

Licence

ASDM is made public under the MIT licence.

Contributors

Wang Zhao main author

PhD candidate & research assistant at University of Strathclyde, UK

Wang has given multiple talks on ASDM at different gatherings and conferences of modellers, operational researchers, and healthcare experts. This is the YouTube link to one of the talks.

Wang can be reached at wang.zhao@strath.ac.uk.

Matt Stammers contributor

Consultant Gastroenterologist & open-source software developer at University Hospital Southampton, UK

Matt created a webapp using streamlit to allow users to interact with a simulation dashboard in their web browsers or on smartphones, such as in this demo. The simulation of the SD model in the backend is powered by ASDM. This is a part of an initiative Really Useful Models.

Matt's GitHub 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.2.0.tar.gz (30.5 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.2.0-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file asdm-0.2.0.tar.gz.

File metadata

  • Download URL: asdm-0.2.0.tar.gz
  • Upload date:
  • Size: 30.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for asdm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a79dda0c27d759aab2dc54ec64b5e1d748efe26798a24f05bbd3b2525377ceff
MD5 4e25f3c5cf1c079b5032c6a6f206f814
BLAKE2b-256 9ff3f0134dbb1ca34003f0361920125f9327c8f66bd167c50ed80cdae5368801

See more details on using hashes here.

File details

Details for the file asdm-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: asdm-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for asdm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b20200c5cf1df094821ba55f178bcfe2fd5f6391bc60dbdd4280be784e470af9
MD5 d81e6ee18bb5ee657d278b149b9d781c
BLAKE2b-256 4f338a85502709db1302d8cb625d04b103a80dee7ba67d307b90083ed486e539

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