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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14Windows x86

dsf_mobility-5.8.6-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.6-cp314-cp314-macosx_15_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

dsf_mobility-5.8.6-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.6-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.6.tar.gz.

File metadata

  • Download URL: dsf_mobility-5.8.6.tar.gz
  • Upload date:
  • Size: 151.5 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.6.tar.gz
Algorithm Hash digest
SHA256 acfff383ccfe041820ab0f84021e00f7651f9ebe431f7bc1ccf6486a0fb5f9da
MD5 4205423912fa898d5ce47d923d0826b2
BLAKE2b-256 0b7b827f3c4ad9b68eb1c422623d705b5f1220a67f230cfb76eff265b518909b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c1a4b9ba467a17aa78476bb459d3cdcd4532730a36ef2b9070100a4dd7249a3e
MD5 f2d34343db54942bedc49ee4633e0302
BLAKE2b-256 3024ab11e54a8905b533f34e8c03747f62f1a463f931ae1c66284b4d0c11bc4b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_mobility-5.8.6-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.4

File hashes

Hashes for dsf_mobility-5.8.6-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 b5f87be48393899f268d69da8c833703cbc699bbe16f125562a9a5031420e348
MD5 9c73550770ba3131432496d1d26b299d
BLAKE2b-256 56325cf119cc688054bbe8280fce029da492d164571be78d86bfe6dd45749e9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.6-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca2cb0a0f6233e9020d5d2a209ca6f72060de930d22bb0334cce8768e0f7537d
MD5 cef86e55150ae98dedc18b076cb160b9
BLAKE2b-256 8dd31f58d14853f29fcc45313344efa70bdf619ba3ecc804e1bef10baf2abf4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.6-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4e93d53bfc3fe4b125df4646588108ce08525304cb1d7e8f9cf9c0193c17aab4
MD5 4ef9b08b253c486f34e55d32328fb2f1
BLAKE2b-256 adace66c76106f8c40ff3108968c2bdbc73a04105ff60743f88d6c9f7b2fa111

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3d45d369adad49f6cc933ff5f790c395d4e7fa33da93f4cca18dab87f2fefde2
MD5 566898efcf442b49d4ebcb596ff9ce7d
BLAKE2b-256 88c360716c48c686d411067df3def53a95be70314757ed802501887589ad2b03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_mobility-5.8.6-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.4

File hashes

Hashes for dsf_mobility-5.8.6-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 dc6d1bf45027b85c51fd157caea27ccfe1d7ea19b25fab202f4e244c84067bea
MD5 907d8ba2e6d5c914499a9ec82719d508
BLAKE2b-256 ad0fe63649e2f92d749713be56c11f057c76aed6ad92dc5d4cb50de890031553

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.6-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5685061636a07a31a2e7eee7a2ed482030e98951aea14125cf7c28cd6cf01d34
MD5 f6e2534fea4c7a7577c0f0e517c9dd86
BLAKE2b-256 19ed95b2dff7693887ccbc717df53a1af785d546edca0b07009ca3e5cb54abb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.8.6-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 83a026e3923fb9b1c00802fe72c5eef14f29ce5c8978635698366a936052f66c
MD5 adf693a58d3e759f9c2cf33a76f23fa1
BLAKE2b-256 3fb4bb501f663317e8466c84c57af9abbce50660032ed50e2e0fedb5a218dfe3

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