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

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.

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_suite-6.2.3.tar.gz (169.4 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.2.3-cp314-cp314-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_suite-6.2.3-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.2.3-cp314-cp314-macosx_15_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

dsf_suite-6.2.3-cp313-cp313-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows x86-64

dsf_suite-6.2.3-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.2.3-cp313-cp313-macosx_15_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

dsf_suite-6.2.3-cp312-cp312-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.2.3-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.2.3-cp312-cp312-macosx_15_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: dsf_suite-6.2.3.tar.gz
  • Upload date:
  • Size: 169.4 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.2.3.tar.gz
Algorithm Hash digest
SHA256 3a007e634cd1273501728b78c38c3b279b6272334d516cd42748077fd31d7a17
MD5 65c599550e4631de1aa468f0eb2d7929
BLAKE2b-256 a72eac7a0d89b6df2dc3283a2dd9414a65a24eda2efda3873587cd99145ec4eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.2.3-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.2.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 143c9ffd6be9751663b0756806f6860ab97100ece0539bc30b84aa4481a04f60
MD5 6ffb9c214bd90949f994cde0a4524ca4
BLAKE2b-256 be727d3e6a0bf0ebf3e47bf0995aebd6deb6543807ee0d71be2ce227a1e4758a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1476fb60d2984841ebb59a762a79f01c55bc4ee7c2b6e4d6147f67bcfaf942fc
MD5 c0617e2aed838b9cacb75efd277df5cd
BLAKE2b-256 d2c256e479402c29a8eae86d6c63c9e85a36d9f59d071e4694be159083c1eb40

See more details on using hashes here.

File details

Details for the file dsf_suite-6.2.3-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.2.3-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c565546dd9cd970425bd424b96b86c67669a8c971990b39e81bb69e539c028f3
MD5 fc08dce5ccd9293739d76d099557e880
BLAKE2b-256 2b9738eae743b5cdf56892d9bdbeb5a5159d529b8483880c0d00a53899e50ec8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.2.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.2.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 43e3d81c75ff37eae7351175705fa85c48c8d7d21ea533345fa6ec6dc3548ff3
MD5 61a64192677c195e0b24b3db2c05c5a9
BLAKE2b-256 ef60c0f64fdd8c9899fa8f28626e819ed7e34074988ba76bcd2709192aa25e29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e3af26cefb8e99176610f609626b86df3d2758b03f18b49359ef015e1cba9829
MD5 3fa6e0d243ce8724fd3de4038624cf43
BLAKE2b-256 745ac0ad3e365f9c5e55fe1d3f8d91a7bae9bae896862a699260737af71e80c9

See more details on using hashes here.

File details

Details for the file dsf_suite-6.2.3-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.2.3-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0276f5d47a42b7722dcbb115f38f9975b793f95e456f35026a6803e9b29697c0
MD5 6a679524b0a888b7ee712959f7843f59
BLAKE2b-256 fcc6985a9272079b7d90e7896b2367c3ad1d20dfb34ebbaebb644443a8891326

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.2.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.2.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c8f486f7ff7067e1cd2489dff795c5bc042138e9940432978055e13e07f6ecef
MD5 4a6db3d841cc93de48b011d0a5655249
BLAKE2b-256 ed6e95104fe7c74507d42902b6ed12923409485e058cc763b641dda89911fdd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f0209173475cbe826d25edd2bd8993c4253fb2ca5be2dd509e9fb0895963145
MD5 c7afbd22d3d1a157fb3348abaad68cc2
BLAKE2b-256 efbb2f1100ed4b3eabe372486b79563bf192a66c59c1e0f9f77fe8ede831502e

See more details on using hashes here.

File details

Details for the file dsf_suite-6.2.3-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.2.3-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 26a539b63a4040229c21fbf8473f692026cc61cdb3a23d66184834c0032ea364
MD5 6a11ed42ca305cdee308a9216ce657f4
BLAKE2b-256 5c82f7a917db43deac5215ddd1f235967cb10e81622aa741e5761cb43925ecf8

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