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.3.2.tar.gz (171.7 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.3.2-cp314-cp314-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.14Windows x86-64

dsf_suite-6.3.2-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.3.2-cp314-cp314-macosx_26_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

dsf_suite-6.3.2-cp313-cp313-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.13Windows x86-64

dsf_suite-6.3.2-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.3.2-cp313-cp313-macosx_26_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

dsf_suite-6.3.2-cp312-cp312-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.3.2-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.3.2-cp312-cp312-macosx_26_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 26.0+ ARM64

File details

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

File metadata

  • Download URL: dsf_suite-6.3.2.tar.gz
  • Upload date:
  • Size: 171.7 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.3.2.tar.gz
Algorithm Hash digest
SHA256 9389f5eb096e2ccbf47c8852cd5960c7166564f86ab83351600cb923ee2950e4
MD5 7bebb0160372249537642e4ac6d666de
BLAKE2b-256 2762b7d86ca1b33c0efc670bb8cb3b384544205aa6cb5021bc234995483a92c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.3.2-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.3.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0a6bba2f0bdad8e7d7c87b6f0b1c0e8b5d56d40caf2faccabc68c4cd531d7818
MD5 f276445cd1781c42dc53cc0f28d16548
BLAKE2b-256 89d13c24b36e92f250aabdce85399afcf5a5a27d6077ccf1ec1191e8ec5cf79b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 410c4f0189275dff5f7313bc270e98498268a1b400becf975c00d0d185068a71
MD5 80fecce887bb8b2ef5d0020cff7c73b8
BLAKE2b-256 2ad48c8066016ba97340339de86b34c0b05af4edc6ae500a12f9d3f1294ca825

See more details on using hashes here.

File details

Details for the file dsf_suite-6.3.2-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.3.2-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 b3f67d260899dd3bb42629163f84bd85c069ed5d816ba59f7761842bdba87910
MD5 28e0e00ba50a6100a70d2036291a0ab7
BLAKE2b-256 df9c4ea4bf429e311b22c44188a00d4d4c109c918adb827d697052ffa403cbe1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.3.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.7 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.3.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 50b8bbe3c07a6463371557a7760c47c1941382d2266eb2afabec0b5356e12cb4
MD5 d6ad699571e50206b02da6eb02eee9a2
BLAKE2b-256 972ad40c097d5d4e17a9693f1c45f5a269b2676a00536da052d593b64ccb99a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b467f37d7c38e1086903c97e6c693df12a4075675643d5c411eddb01a8a4d03
MD5 940c82ec5b33c914e97a14f9c9e6b8f4
BLAKE2b-256 b3cd5cabec07ee620a0286e3c837d1dfe233d8512ab9fefde984ac0e07fd7158

See more details on using hashes here.

File details

Details for the file dsf_suite-6.3.2-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.3.2-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 c72e8e16d5b68ed75dba9b26ab59b1bfb37ed6a19c665285b62fcbb6d726001f
MD5 afedb84bf0b65ea825b5f5d01bbdf1b7
BLAKE2b-256 52719369bbed018b30fa4962e9e61dc0e5f47f912dd785250d07abebe6da631c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.3.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.7 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.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d83600d5604a7630d56bad8aef8e916d002cbae26db1d916db2d54704368f952
MD5 b7ced8f7f2566b28e653ad05650695ca
BLAKE2b-256 1d326bf2209ef174e52951e8d08ed8d7032f2f90a18cf62fdb9bce2e0b0c483a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 34ebea949aafe22f022f600a2dd43cdf047d24ef3811644b7237a362d5130d57
MD5 7b18be3b2e4af5c437097f6a0aaeb85b
BLAKE2b-256 bd5b16710f4d9d13349ad0ad960de5a7924a8f52640ca7e499192891299b780a

See more details on using hashes here.

File details

Details for the file dsf_suite-6.3.2-cp312-cp312-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_suite-6.3.2-cp312-cp312-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 2173dd963df8d24ede1d6be2f5888c731271f3f7a8dd3996a361a8349b938269
MD5 025d99a16ca827e6ae4c3d28c178fa4a
BLAKE2b-256 52f02f491b04963db11fa7c931e47ab047a5050809a48721ed405abf12658b7c

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