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-mobility

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

Utilities are written in python. To install their dependencies:

pip install -r ./requirements.txt

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_mobility-5.8.1.tar.gz (152.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_mobility-5.8.1-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.8.1-cp312-cp312-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-5.8.1-cp312-cp312-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-5.8.1-cp310-cp310-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.10Windows x86-64

dsf_mobility-5.8.1-cp310-cp310-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-5.8.1-cp310-cp310-macosx_15_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file dsf_mobility-5.8.1.tar.gz.

File metadata

  • Download URL: dsf_mobility-5.8.1.tar.gz
  • Upload date:
  • Size: 152.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsf_mobility-5.8.1.tar.gz
Algorithm Hash digest
SHA256 b2c21b46440da3a913a7e31f0469518f3aad67dcad06633b98dfd202c0194e3e
MD5 65d822321f2b1a8a2b639c2e99105dfd
BLAKE2b-256 88bdfc71afcabf935bffc2ea3b94ea77b850ba6b3002fb0bb2482839e55e182a

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 22d52eea4db1babc5a00258eb7934c082f8267942e8b92b9c4186177defb3899
MD5 7a3e0c72e73010816baa9b86dfa168dd
BLAKE2b-256 74ae90ef252377691fd432a5a60f369ffaab4bf475147bd3090a0224e32375f6

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.1-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.1-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f5871117ae7f911f6ea8d26decad9a44210adaad1ea46148ba177955f1d185e2
MD5 94ac5970a560ef0f6359d856cc39ff36
BLAKE2b-256 f607fbc160b91f885cb666dddbc8b496a0f87eface654b6159d725f720f53525

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.1-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 285b9139a3ea261c7149d62ee16f3937ca40157f5ce4575fd6903093f630eff2
MD5 aa0e5483ffbacbe7f806d43d4fe1d000
BLAKE2b-256 419a77d65a175d187f512b2535e43de5fa6082c2f59ad0e609e3f16c9d4c56d6

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b7cb615010d81147dcf9c1b5bc870f5bf6d057a3e6d647a63c135bd5807d8dea
MD5 298d631a6b89efa98f36a423c41719c5
BLAKE2b-256 517691d5868fc72cdb18436fbfe5bc940d6fa15a709e9d8fd892c279c73b1e15

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.1-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.1-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 5bd7e0478d4a4abe89fc6271338f7709851e94ce042c894a0809f2842cb5862e
MD5 1501c53bf6aa57a3f261cf63b7ae1651
BLAKE2b-256 0bd37ab56939fe47d6dcacfe7bd48233a68ae20830ea2104d7807f665a3b2b00

See more details on using hashes here.

File details

Details for the file dsf_mobility-5.8.1-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dsf_mobility-5.8.1-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 968f6429dd7cb493d2b25d6dbaee98047ce272ca4112e1c785f6193209c04bfb
MD5 d1f386eaef2bf4328cb9d138a2857101
BLAKE2b-256 a5e4a4b8aa5345939912c201f5603bb576d25aaf9bb65dabcd2b2a4264313715

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