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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.3.1-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.1-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.3.1.tar.gz.

File metadata

  • Download URL: dsf_suite-6.3.1.tar.gz
  • Upload date:
  • Size: 170.9 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.1.tar.gz
Algorithm Hash digest
SHA256 75b72e17806d43d32a136b019d2f02ca60a36cc1de1dd2366ac6429aa9d61587
MD5 09f03717eb7f787bfde5c7a343ed9498
BLAKE2b-256 57f8f5eb5eccdd51353e57596f045416ad40e3b566af55542c63a842e923dc0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.3.1-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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c9dfc1fa994d03628e46d3ebb21b07447b1bf42da173c8f8ff7c0f764a753d35
MD5 c2003ba137666e52ff166b371cb0c271
BLAKE2b-256 4c382d98ba4c22d00b5a0ca5b05e1f85657ea7df89f562ff6ee18d850ec7ec6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8033ead2f8da82303ef9dabf66c7a3bc5561af04749a8226ae9e38d13dfea045
MD5 d5cb20e423e6c54f38b6f88bfd03bf3c
BLAKE2b-256 65be393f77c0e283c837f03770f42b97c58f039f1bc899d774298b8148669ab9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.1-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f8bdeb89f02d3b2946f2864346f26e596edb933bf7dc0adb178fa958c703cc03
MD5 f458de23cb093a4894b753a85f0c67fa
BLAKE2b-256 102acef9eb895adfb12bf34138ed17e96756c1bdf99a1fb4d1a7d705ecf2a706

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.3.1-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.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f9a002c3a2f32d900da9bbbd4db8a88938c5e5edb4644cc9ea84151ec2ed6fa2
MD5 fc8dda3c5c685dd08cc5ec709d46cbb4
BLAKE2b-256 32d54ddbfd40c475344ff89011ca3ab8d3da0726be977c499fbc2dc89e9bb8fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c09b1c33dfdc6352b563bdd8f09c1b85b0c65903074b342397a280b9dd137ca9
MD5 833e4a92c50e3341a1dae5af27c68683
BLAKE2b-256 b8795fe5562b4f6b677eb5fa5688f1c43e1e1304497ec3479a6d0f5c14549c9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ee4506954a91e5f4038b19d4342b77a6b7992eb3a2f5ea9d2a36d2143840ecaa
MD5 4474ca10689d5b374dbb6edeac55526c
BLAKE2b-256 546788dadce723de642ac7801ef07ba4c7af34507d057f442d603b79da1c18a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.3.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e62561f44278d2da2fb941934b4bd8501bb07e4c1a616d8184edf928af7d98b6
MD5 6a5459972eff7640424cabd1a42e5e8a
BLAKE2b-256 ed6df5f36186d82cebe96933a0fa2e7ab7dce6770e07d9a212fb0d509849b36e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8632c964ce883f3bde2a490ec84c7998929a33875b995fce7fe8f2ce77ce42fb
MD5 0dcc156ac2dfad5fcbb67b3f9ef1a13d
BLAKE2b-256 81f7813cbb15e2b688c72b6dea69c3aa0a50e82d0bd2b196140088424f264c12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.3.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 41da231a998f4d5541e721933abe781692fb0e6606736be160b983769a702647
MD5 bc336b8e8c7945a53368a1e17236329c
BLAKE2b-256 5dbff2b2d31a6e15a7dc73d4bfb210f3a62b483d3ca36fa169d7f127db9a8375

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