Skip to main content

DynamicalSystemFramework

Latest Release PyPI version DOI

Standard TBB SPDLOG CSV JSON SQLite codecov

The aim of this project is to rework the original Traffic Flow Dynamics Model. This rework consists of a full code rewriting, in order to implement more features (like intersections) and get advantage from the latest C++ updates.

Table of Contents

Installation

The library is available on PyPI:

pip install dsf-suite

To check the installation you can simply run

import dsf

print(dsf.__version__)

Installation (from source)

Requirements

The project requires C++20 or greater, cmake, tbb simdjson, spdlog, csv-parser and SQLiteCpp. To install requirements on Ubuntu:

sudo apt install cmake libtbb-dev

To install requirements on macOS:

brew install cmake tbb

Installation (C++)

The library can be installed using CMake. To build and install the project in the default folder run:

cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j$(nproc)
sudo cmake --install build

Otherwise, it is possible to customize the installation path:

cmake -B build -DCMAKE_INSTALL_PREFIX=/path/to/install

then building and installing it (eventually in sudo mode) with:

cmake --build build
cmake --install build

Installation (Python)

If you want to use the library from Python, you can build the Python bindings using pybind11. Make sure you have tbb installed:

sudo apt install libtbb-dev

Then, the installation is automatic via uv:

uv build

or you can just use the classic pip:

pip install .

After installation, you should be able to import the module in Python:

import dsf

print(dsf.__version__)

If you encounter issues, ensure that the installation path is in your PYTHONPATH environment variable.

Examples

Examples in this repository are (slowly) being deprecated. You can build them by adding the cmake flag -DDSF_EXAMPLES=ON and you will find the exectuables under the examples folder. You can also find some Python examples.

New examples are being updated on dsf-examples.

GUI

If you need a visualization tool there is one available on dsf-gui. It is still in alpha stage but is already useful for some purposes.

For Developers

This project as a pre-commit configuration. To use it properly, please install:

pip install pre-commit
pre-commit install

Testing

This project uses Doctest for testing.

If the project is compiled in Debug or Coverage mode, tests are always built. Otherwise, you can add the -DDSF_TESTS=ON flag to enable test build.

cmake -B build -DDSF_TESTS=ON
cmake --build build -j$(nproc)

To run the tests use the command:

ctest --test-dir build -j$(nproc) --output-on-failure

Benchmarking

Some functionalities of the library have been benchmarked in order to assess their efficiency.
The benchmarks are performed using Google Benchmarks.

To build the benchmarks add the flag -DDSF_BENCHMARKS=ON :

cmake -B build -DDSF_BENCHMARKS=ON
cmake --build build -j$(nproc)

To run all the benchmarks together use the command:

cd benchmark
for f in ./*.out ; do ./$f ; done

Citing

@software{berselli_2026_18745492,
  author       = {Berselli, Gregorio},
  title        = {DynamicalSystemFramework},
  month        = mar,
  year         = 2026,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.18745492},
  url          = {https://doi.org/10.5281/zenodo.18745492},
}

Bibliography

  • Mungai, Veronica (2024) Studio dell'ottimizzazione di una rete semaforica. University of Bologna, Bachelor's Degree in Physics [L-DM270]. Link to Thesis.
  • Berselli, Gregorio (2024) Advanced queuing traffic model for accurate congestion forecasting and management. University of Bologna, Master's Degree in Physics [LM-DM270]. Link to Thesis.
  • Berselli, Gregorio (2022) Modelli di traffico per la formazione della congestione su una rete stradale. University of Bologna, Bachelor's Degree in Physics [L-DM270]. Link to Thesis.

Download files

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

Source Distribution

dsf_suite-6.7.0.tar.gz (177.2 kB view details)

Uploaded Source

Built Distributions

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

dsf_suite-6.7.0-cp314-cp314-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_suite-6.7.0-cp314-cp314-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

dsf_suite-6.7.0-cp314-cp314-macosx_26_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

dsf_suite-6.7.0-cp313-cp313-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.13Windows x86-64

dsf_suite-6.7.0-cp313-cp313-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

dsf_suite-6.7.0-cp313-cp313-macosx_26_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

dsf_suite-6.7.0-cp312-cp312-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.7.0-cp312-cp312-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

dsf_suite-6.7.0-cp312-cp312-macosx_26_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 26.0+ ARM64

File details

Details for the file dsf_suite-6.7.0.tar.gz.

File metadata

  • Download URL: dsf_suite-6.7.0.tar.gz
  • Upload date:
  • Size: 177.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsf_suite-6.7.0.tar.gz
Algorithm Hash digest
SHA256 c7b7f6d3de2c64450d69ff13d320630d01bc7733a17273ae0250c54fbaeaf3aa
MD5 c5648a04da1d4b52a06c36b9c833bee8
BLAKE2b-256 0ec056c204c49646e1fdc780a1763d3052fe161c018eacb3532fc10e61f9d90a

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: dsf_suite-6.7.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsf_suite-6.7.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ed7493ea5aa103d8377de67900f4b595f92689ea0700cb12af9610382711a7e9
MD5 e005fb314521053bc9494d218f8f1b05
BLAKE2b-256 85077fd325e8610f699c63c3258895bb903e2af839e68385ca9bc8f4fb23f1e4

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.7.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 edd1f05b16f95bed8fe634afc529688fd3fc88ca2ae20c0f7b2aad4b97bac529
MD5 932be5e768099c90f44f7beafd244a1a
BLAKE2b-256 0acc78bf610c33e5479f6f27700ca18b303ec43d89245fa19b0b820f25cf6a4f

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.7.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 a3633b56dd7f1fc22e713f21806397508d56a739d0bf05082360f4fde2f3a512
MD5 0170a73caa1ee291c95178ba436fe11c
BLAKE2b-256 318702d3a2abc07dd88cdac8e78ecd15b42d507ec1549aed3a2e3200d50cf905

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dsf_suite-6.7.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsf_suite-6.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 60f4cce7db09073e55b7645189eea7d51e75df2c64edc2a4939a8926e4c7ba24
MD5 7bbf887893813091476dc7e84b28eede
BLAKE2b-256 5e39490eb692a29191ca9b37fe6ca296d064fe8b09d5c1f20c52edc1bfb91edb

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.7.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 06ae12b195a9a8cf97e3271c7015443979fd87659a179c47a79c1b2bc72f84a1
MD5 0cef60c1329d9489d17113db7995c391
BLAKE2b-256 b303df9b2da3ba5ff4006a3c23f2a4277ce060db90d6bdeba148f28202b6c802

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.7.0-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 31155fcc63c68b83faac8f02846ded1837942dcdd41a46f6d52a2d1f5276e9aa
MD5 2f940be3bd9c25d0314aa76d1f932257
BLAKE2b-256 a6b3bcdc8fd98ae2c811b8d334d44aac0dce7756a2fcc272769573c4f256395e

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dsf_suite-6.7.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsf_suite-6.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 390b24a39fec9b41878d74372267a27815b2282daca77d2d71ca351f1c444614
MD5 b70a7b1b94cf610898745cc13799c5c1
BLAKE2b-256 526f64d2b59ea24a105a87e3606fddfc002c29a82c34032a97ddc713c34edf3f

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 90e905911eb2ae9d6ef44198597c40292ea334bd951c214d5bf164b36eb95599
MD5 562d18b2c5f064e5c713cf8c6357317f
BLAKE2b-256 027fbb848c01966c988858d27a816bad918ef84de757d693ee73e903cceb9db7

See more details on using hashes here.

File details

Details for the file dsf_suite-6.7.0-cp312-cp312-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.7.0-cp312-cp312-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 47195d1bd758381e47ec9c8912c5628a5722641ece9c782005abd1c70b2ced48
MD5 4fd766e02842844050c84c61e8fdc086
BLAKE2b-256 3a91a768a7ee57a30c00408ca2dbf8b35b0cf5fe4640dca29150c10a056ec985

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 Sentry Error logging StatusPage Status page