Skip to main content

DSF C++ core with Python bindings via pybind11

Project description

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-mobility

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

Utilities are written in python. To install their dependencies:

pip install -r ./requirements.txt

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.

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.

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

dsf_mobility-5.8.8.tar.gz (151.6 kB view details)

Uploaded Source

Built Distributions

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

dsf_mobility-5.8.8-cp314-cp314-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_mobility-5.8.8-cp314-cp314-win32.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86

dsf_mobility-5.8.8-cp314-cp314-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

dsf_mobility-5.8.8-cp314-cp314-macosx_15_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

dsf_mobility-5.8.8-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.8.8-cp312-cp312-win32.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86

dsf_mobility-5.8.8-cp312-cp312-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

dsf_mobility-5.8.8-cp312-cp312-macosx_15_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

File details

Details for the file dsf_mobility-5.8.8.tar.gz.

File metadata

  • Download URL: dsf_mobility-5.8.8.tar.gz
  • Upload date:
  • Size: 151.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for dsf_mobility-5.8.8.tar.gz
Algorithm Hash digest
SHA256 cd7d28c049afd1d63cff02d5028ad04aa08e44ffa515e265d8c83031e47c5666
MD5 9efecfd159b5630ca5810cc15db7332b
BLAKE2b-256 e12bc1d0b076f21bad9fe2f173477b83e5b7ddaf4793e66bbb638705e96c63b6

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0b4bbd02df3cb6bd8f871d9cf80550d4779d110d40213db386d57c34ccf962f4
MD5 ba6056b58c6435c9d066c682b89ebaa0
BLAKE2b-256 8b504fcf93029ae1249ebb9e8e34c684b23560e8cb6c9b1235d3f72cbf2c503e

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp314-cp314-win32.whl.

File metadata

  • Download URL: dsf_mobility-5.8.8-cp314-cp314-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for dsf_mobility-5.8.8-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 aacb9a98a4d8ab7dc380d4171b17deb80550cbd876fef45b457ca03cf36b3f3f
MD5 bc1f26d50e2a409c9b59775c3f251677
BLAKE2b-256 9391bd137c4ce6c3bb99e5db6b78467851fc61b02259a607958fc54b8f13e358

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.8-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f8882392cda387a8df9afe347443f0db7d26bdb570a94de17cb09fef943b95e
MD5 7d64e40376aa02058151c936de73b481
BLAKE2b-256 f78a13591154426194e93b85d6e5a4b10249a8bb6743735c3e8ba886cb19fbff

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.8-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 34ecdaea354369b7c5daf7acb108ac62e79329251c234c517af3e4db8c04e935
MD5 7f7002f1f483528c073d0d550898509a
BLAKE2b-256 0c040ee6607971d764f45c711b3be490993755ed239508ea6000f59898935f25

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 70634306793708873294871d0bfe7a87b2891333724d27b6ca3d9551d250d5e9
MD5 32ae94fc46dc5dac1b7a87949efb1f7a
BLAKE2b-256 8298f09859c2a91634b065af8a41262e9d4da98a4b4487848fa3cc213e9ad66f

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp312-cp312-win32.whl.

File metadata

  • Download URL: dsf_mobility-5.8.8-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for dsf_mobility-5.8.8-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0d04d8402bbb0e9bf4166fb527292b2c6112aea82ceadde9f4e630ffcd634973
MD5 a5131c79b72c19c517f4c48d259d8029
BLAKE2b-256 0daf1078893b573533f161bc56a35664811aafefe27f1f936758fea9059aeb8f

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94e31d73717f4e1a765809535c4a89b70346b2404ce8474e0e236c062201b5df
MD5 59cfc568f677bad8ad41f779c0dec2fa
BLAKE2b-256 ab6cf794174c1a04c3d31a380f69930637b1dadd8c10a660badcd86ef37bc430

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.8-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.8-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 637c8ec1ad59c69b11dfce53cacfd29688b16fe766a15c9cb56d53beda275910
MD5 93d2ec538699c282d3986a85bc759c2c
BLAKE2b-256 bf187d46c09151bccf2006b2ad416da6280a754852886e67b85a9c355c9d5a8d

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