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.9.tar.gz (161.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_suite-6.0.9-cp314-cp314-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_suite-6.0.9-cp314-cp314-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

dsf_suite-6.0.9-cp314-cp314-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

dsf_suite-6.0.9-cp313-cp313-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

dsf_suite-6.0.9-cp313-cp313-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.0.9-cp312-cp312-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

dsf_suite-6.0.9-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.9.tar.gz.

File metadata

  • Download URL: dsf_suite-6.0.9.tar.gz
  • Upload date:
  • Size: 161.3 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.9.tar.gz
Algorithm Hash digest
SHA256 58b9e2062e08f709d34a3ddadfd3a4534dedd25ae06e9b5344ff9d7a11a91e64
MD5 5a201059de0a9baaedc6b2c1290bf074
BLAKE2b-256 fa414488c2cbd29e40f849ca48358cc36fea0fe0ba08f5318c0868666dbf9d17

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.0.9-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.9-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 31117c6e760ea442e7192accd607d2892e85201c4a12afb41f10e0c56a451a69
MD5 04f05742c9396ab561649dab9c931bae
BLAKE2b-256 49770738fb05ddceacbf301f4dff922329c2a49d6a3af1fb8add7bc3cdeec031

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.9-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 75c5c037e77ee63cc183cc6a38233f1620836247c365c7b1aac588f9fdb8a1eb
MD5 6e4cc1fc526071a1cc44859729dd6649
BLAKE2b-256 67a2d32555d02b77c7f2d82551e272a25d4dcbf526f797f0b3b4de0dd5f07f47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.9-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 50cde1cb899228a4aceed3fcbbac2591364e10329b086e838275d48e44db1860
MD5 2fcc02291d62d2bdda3fe30bd621611a
BLAKE2b-256 12a44390ab6b1395ff4fbcfcf81932afff5ac8b89d85e673498aea5423f380be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.0.9-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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 edf04c9b79165148c58c3eac81789e0531dbf5c28861f913395687a51be91cc8
MD5 30c71c165e035f912fec1862f0bad50a
BLAKE2b-256 8910376c04807ea335a62bad4a73d0ad6ae1328b30593169ee4dbdd085d1362b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.9-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 35609756adbae921e0c2ef7bee543c6de853006179bb11da0c1dd14e680e9752
MD5 ed8c8d7ca493eed0e6837021496c722d
BLAKE2b-256 a017dc861a53fc348fa3a4d4a21b1b69ef9e3d844b13682dea3466914a224aa5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.9-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9619397afec3bfd8f5ff81573fabe616b09a8277adc035c1c3fc79d8fba1fa8f
MD5 9f778499ea7a708c52f5991319115131
BLAKE2b-256 5f51ecd92c7e4b00e90e06d748f30d0c4288cc3a91988a004335313a8d9a2f81

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.0.9-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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f6559f58c3fb5b2f53e152a8b44d9a55fbc71e376b429b2fbdd1fa5aa8ab7a7b
MD5 dba2f63a597c49495b133d238ea878c5
BLAKE2b-256 19a21ba9af6d7d7fb2491dfef0c87f3d4824c1c97e764e8379dd9a1240709772

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.9-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a139cc787bdaa66f26ee0f73d0064f53a9f3c30c19fbd65a81845f7dfe98563a
MD5 4b87207ee5f278f9261b9b37d382e4e3
BLAKE2b-256 cdf2091c81cef7d64235ecef671bbd375040c0bd06e79ede899568a8b1aa3dc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.0.9-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 dc7f6e239d0a96ea351e5ad3bdb85e31b25e935dabe4c3400ec1d541af1dbe4f
MD5 3ddb4463628ff89c4856de67ca137138
BLAKE2b-256 b9193f75d2533e98cf01f1081545e2997b632ffbef1d5de1de9de2fea1066135

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