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 Doxygen installed to generate the docstrings:

sudo apt install doxygen 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.3.4.tar.gz (141.0 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.3.4-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.3.4-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.3.4-cp312-cp312-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-5.3.4-cp310-cp310-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.10Windows x86-64

dsf_mobility-5.3.4-cp310-cp310-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-5.3.4-cp310-cp310-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for dsf_mobility-5.3.4.tar.gz
Algorithm Hash digest
SHA256 8bf663cdead6aa3531d7d3a7cdff2f4e205267d40335bab6f775aa6a255f6448
MD5 202a80da7dbf0b34db0c93097c554827
BLAKE2b-256 74fcf4167e0688c105b09cdf16c76250a1525690a7ea88f468b8035756abc4d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.3.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2cec0dafb4a9887cb0fbbffab9550ac7b68854ba0e6a61e72cf89a526cab5aba
MD5 15d4895ae96416611bd196e39c3b9c1e
BLAKE2b-256 5acfb49fe93083f29398779dc1e376b84f0d3ae5f86bd63f0bdd09bb6a0aa565

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.3.4-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 ce9a2e3c01613e3532aaa9b5dc6928a808c33245324f99fee19feba7a5d9a8b0
MD5 778d926cd4bd708cf7fefe542d1709db
BLAKE2b-256 d06c6367dc9989f21d43e521c45ca47d3e61b6334d2a3ed9da6d526cad23a3bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.3.4-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8ee6ab9f21ed48fe09756740c378478c0f55f8ccad1fca8f55ae33628b8e8a11
MD5 636c793a42a6007571aa0008bcecbe44
BLAKE2b-256 e79b4c13bfc3054da4828fe3c36f1096bafe107dc9498664865a6cbe67b0ad59

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.3.4-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.3.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3a46021e62eee55b8bca1156104544abc86c699b91b216451f3bc446e3159fe8
MD5 d4705dc53be0de827924226b9d36ca0c
BLAKE2b-256 b0e694513f5055fd4e8bf7387584d122978177ee6b73411959eab3a8ee6e3f8b

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.3.4-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.3.4-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 decbc69b88dfadd40f4a72fb75dd1814e4a38cae9bf99372598eddabea7bd7a9
MD5 a069db4e9eebabf574bdad045d3834e5
BLAKE2b-256 246b28fc4f6512133dd07dfd7bca938949629f54475ca80d62bc6444e10af4b5

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.3.4-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.3.4-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4b4e4bfd379f1ea3b7ba7b686bb8ad2f35925f4b0c37b9e93afcdfd5dc50b72e
MD5 ca614f9046255e52233c6af3798cc9e3
BLAKE2b-256 284b133c68daf53da53ac09333b5a9d524d76989a4ac3006d672ed211ca99056

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