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.2.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.2-cp314-cp314-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

dsf_suite-6.2.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.2.2-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.2.tar.gz.

File metadata

  • Download URL: dsf_suite-6.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 e707499dc0badc20e1a475ffc2714dc6b3fa274e7ed6d56d1c02ff907ab73b37
MD5 5f48b9e261ecbd6f3e06223d6c39d33a
BLAKE2b-256 ed19d78057e251d55a3ce3a80fa0941ff1df478212ff52c767d13987669a51ff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.2.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.2.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b45ec8476003b55ef24e967dde7dfdaeae488405879fa8be0897bf54c41d148c
MD5 81dab151c69f961dbb7a26f0e319d8a5
BLAKE2b-256 f271ae304369b6e94074c0e60440642df3213602e20540bdeee5a7e080ef6d40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c2dbde988d18bad1192070c3d723bb86c1efc997dad0511b04827181238c8dea
MD5 b79de8ee1e74c8772ba45c0309cd36d1
BLAKE2b-256 47f310ae7f9d57f883bf3f4a7efff6dad638db85664c7cb7becfabfce31afa42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.2-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9c0a983d8e2f4939e55abb4cb84a6df19aa848150e6147e64c804f67790d88cc
MD5 f904caf14a54ed912bdac37dbdc36782
BLAKE2b-256 e4eadec42f3b9284dc5626d63b8aef5abb61534553f87559a1e3e50b0f158ada

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.2.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 55b63a8f44519302e4043efa20d7d96236da46aaf1c31725bff111502fddade5
MD5 9b4786ee8041e57412f57f7f80bba118
BLAKE2b-256 983cb7d7188f80a48aa2c301fb997658b01eb5e7ed6e21cc291d903ac0ff7b0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4c07c7726d21afdbe477e5bfc34898c674c65945509747c6ad4280fe797a76d
MD5 c9d740f70d1f82ac1e9eec1a475a246c
BLAKE2b-256 83b1f4e1fa1cb1a1ebe06243c9c1db6876d3f376e0f9faaa0947d51cbb3db0d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.2-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1b3169a7294c47fdd8d0f546c5c10bfabf8a0bb4f6072b45a0510a7f7880bfa2
MD5 9901d701ac6f9838b56b9e179857d666
BLAKE2b-256 d777d4b657053ad0dda36198789a5dea79a4472e068e0a975369022ee3b3d40e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsf_suite-6.2.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 35470f4a2d1d1a0bd7f3361bd78c550eebd9a3e8619180cf9fc440389d266990
MD5 585fa0b6278bebb09c6c0f2984a6c4fc
BLAKE2b-256 f09cffda20a1ef3e14bdead9baa61742416d1afb3ae76b83535ef9bd0a4c7211

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 063cf931e14ee899c093285afb388a1e740588ad7485b8495788901da4806460
MD5 7aead6d824ae6de27d18dcbfdd343c97
BLAKE2b-256 d31b7d62505c9d13426c0ab9a538be5c431a08a9b786564f9494a08a7203ca84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_suite-6.2.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 6200950f67d29fcf5874c00abd1ca0314e5d942b595bcdf3fb4adbf6b5630eca
MD5 71e7831463df30070a1a85cf25ac9e94
BLAKE2b-256 6c69233157c230f2d1fc1ddfaa749d352f7b01a87240b531c7513c1bdb619bce

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