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.

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.0.12.tar.gz (163.2 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.0.12-cp314-cp314-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_suite-6.0.12-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.0.12-cp314-cp314-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

dsf_suite-6.0.12-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.0.12-cp313-cp313-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.0.12-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.0.12-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_suite-6.0.12.tar.gz.

File metadata

  • Download URL: dsf_suite-6.0.12.tar.gz
  • Upload date:
  • Size: 163.2 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.0.12.tar.gz
Algorithm Hash digest
SHA256 3571b08d361fe90e6b3fe04fe664b465fefa4a52118c62a8c841018dfecc6c4e
MD5 d158aa866adbdb2b574999be28626132
BLAKE2b-256 653a7e577e14173cf922f2a3eb4668bac91e2cb4cadf1658d8ac40d6480eaad4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.0.12-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.0.12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e87b3c9a2b2228c2ad239d824522cc3ecba6374a396df7a2c9e499d8dbfa5dfc
MD5 68ebd0738e8456510a4c98fc25807b01
BLAKE2b-256 1241873c7865e42e83a76935c3235e9962bac053b5d544437673d57bbf6f6b69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.12-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ce4ba641bf3134ae625cd4cb56a785faa875eabbe772c4066c086e53c213f7bc
MD5 969e12cd84d4dee8680c60ae60b34c89
BLAKE2b-256 811373545f47ae613db6d0c1cf8b72e8b819f898617694adadcf8e074ddacc62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.12-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0d6a232699b63253698e30a65f83cd084fc73e03212b582337046b2ab01f1249
MD5 1429b60b0f45bd18f161111af580f4d2
BLAKE2b-256 de2923f22cb60b9a9d311324711d4bc30614391668dac6fe15de8a2a5fc2ca54

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.0.12-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.0.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 570a5dc5d849549e4cbc3ff853e71c2bee2665150b1c152846ca9f42920bd8dd
MD5 b382b783ee46e0b17f7d0ebf3471c582
BLAKE2b-256 68b20000558f6e6a7679b9e52935f4dd7a0cbff81328402553100c05301b01c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.12-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7810f549f1e3b2792fc9b02362f8dc43c19541ba2dbe6aec366faaf894ea820d
MD5 7baaba20321b232c7ff8ac506eca9cf9
BLAKE2b-256 9ce27560d109234b44cb4de6c09cf8678e9a70060be7ed15a75e2d5a80af8707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.12-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cc3a8f7dabf94b4379e79cf3340ee34d57e5d7be449fc231cf801f6b3daec289
MD5 e65b89a2cab6cc79ef07fc9d61d7f001
BLAKE2b-256 07069bfb1dfd3d29b0f006c7e0d836b53bee9df10463fcef2817bb33d708557f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.0.12-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.0.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 21b9bbb8d8448e7f1761cbc4380383283eae0b2897779737545fcb89adf155dd
MD5 9fe336c88f0a1cb644ef5cdbd8d6270e
BLAKE2b-256 0cf41ffc0b3508c8f55f026215f6075069e7c2d3fb51c7911a42ec91bc3dc415

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.12-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c0ace97839bb416d4c4f89d6cc24c5dec11c2977c1b92a5b0dd03fdad0343fd5
MD5 5b5b5b0224bb395af3465873fd84ed59
BLAKE2b-256 57f84521b2eed2cd68183d17a8a2cacc9f09f5cdb3d460d8a483a612d1ee20fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.12-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b605cb550f321b5c046024fff8d288c84d980a20e780cbef9a91c25ea7cd6aa3
MD5 00e0bcdd1136374dfae1bddf1ad7bf67
BLAKE2b-256 bc112495a4700e7f5385fbf97a28d4a7d4e19c6b8b3efb4e7a36683bb81d677d

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