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


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.2.tar.gz (152.3 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.2-cp314-cp314-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_mobility-5.8.2-cp314-cp314-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

dsf_mobility-5.8.2-cp314-cp314-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.8.2-cp312-cp312-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-5.8.2-cp312-cp312-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for dsf_mobility-5.8.2.tar.gz
Algorithm Hash digest
SHA256 515e3478a5ed902dc414a410fd1a837e199b50e4c453f406269ca46ebf23dc72
MD5 498278e0922bac46ac06c00ead62007b
BLAKE2b-256 e9103649c299a94bc137d33baab518a8e33e0846d8de6b0459a473aa95b92fee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f86c1460ff4f42ef983ee5ecb4f075528fa4fab88aff44d34c7dd5dbd0ebb668
MD5 fd391e56020bd3cb6fae63c08fe0d298
BLAKE2b-256 96132777230fd76beb497ba89decb327a23f9d7ee15bd50cd6b948038c1ae959

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.2-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.2-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d2f6da133ffdd2aba88d6931bd99be250b9399d43b5b14509622631ab29690c2
MD5 f3a1362d976ab22aa6cac36aba03608c
BLAKE2b-256 c4111d36c11128f7ff89e474234581af47cfdbdccb93e5d3b05815ad377219a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.2-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 2243b329cf4d6152608942b28a4bd8c538654605790c5605e04c94c3f4517ec8
MD5 d33462bdd4470a773225eeb5877048a3
BLAKE2b-256 af3f8e6b279e3ec8534525b4e9b535b872b30976fe2a27130b1c09902a301aa5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 17e9b8bb053da1a4ac984558d5593c1a1461c0c46aeb02d82a007fd0e513ccf4
MD5 15237c33875e91584168f4f4e88521d0
BLAKE2b-256 c55c149f7fdc57f92b70c8ccc314753d218ba72d954090593cc710e9d4d7053b

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.2-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.2-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a477b87e2dce65c2c9716416b6803721300e8699daa2d687a7a81ae8841a1211
MD5 9b86d4c7d8d12ca10ebd449e5b1f785c
BLAKE2b-256 2519ef33e540228cbdee1e46e63a2d3984d9c4cf903039f9f81b1aadcef6990f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 6c9a07b2889b20c5ba08ba291b13ce4a2a2f3f643cfd61ddb93cc6681be0c5b5
MD5 b06154d357f192d8e5074c62be543ce1
BLAKE2b-256 3bde002b4102dd94ba9319ebd5b6f1da1caf2380744f9b707b74fc71cf35aa02

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