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 Doxygen installed to generate the docstrings:

sudo apt install doxygen 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.7.0.tar.gz (150.8 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.7.0-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.7.0-cp312-cp312-manylinux_2_39_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

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

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

dsf_mobility-5.7.0-cp310-cp310-manylinux_2_39_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-5.7.0-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.7.0.tar.gz.

File metadata

  • Download URL: dsf_mobility-5.7.0.tar.gz
  • Upload date:
  • Size: 150.8 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.7.0.tar.gz
Algorithm Hash digest
SHA256 95da17f2197815815e9f56cf4e800e5be30c89cee0f81b89c77324356242e0ff
MD5 e18d17855e645750ea910e78e481e8e8
BLAKE2b-256 54cbfbfe49d7f0714e464a65426eee5214db63974979f686cb5a22a5d32abcb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4fcba9819a1823d00b2e4bf96e3b8133c96fc3b1d50b31fedd277b42e189639e
MD5 682222b9d23df9f912e023d0684f1c4a
BLAKE2b-256 2c4658e2321b521217b2636c01b9251618c3702ba11d35c93c69f3e7feb76861

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.7.0-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1ccc9afd7249d7bad2077db2a79a8b3503d9dd88c2afa3442795d940f1a58c16
MD5 c2f836e563d7f6b65cb6e5932c6c2335
BLAKE2b-256 08aad22ee4cbb7978532af5b7f8692f4357b3527a5e028ddf68cf02327c83dea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.7.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 dc5e0f88a3e4a576f38ccf8e202549e7c7804e7e5a102b232ce3bcb587af4cfb
MD5 37d6f793f7d6c6fce2ef7a2a58e1b8c3
BLAKE2b-256 4dc9ce9eb8fb1f6f8be66a08e07fbe671c347b2730ee0c758f3baeacf5166fe3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ab0c15c2afde4308eff41b79cabbff9b43d04ee46ce4faf320867efa82fb384e
MD5 72212db10d6abee1e0f69243f062f70c
BLAKE2b-256 a53df600a56f864add17c43100de082ce8eac789f7f6d071542373bf0f0e5066

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.7.0-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b396e8f3f6e92c57e989c285e402530646e985bbd8a1638f6e4f7ead517a41ef
MD5 86db8205ce124a9819e9dfa999fd11e8
BLAKE2b-256 4de8eeaaaa43dc7e98a0fdd0e04c1c08c96c05ece97f95952b5aabdf6562ab20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.7.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 153bfcc2910ea139e12b549fb07b8ce499576288e80407ab06c3c78490f66377
MD5 a35bd3db7369e8a1225e611c5a28abb0
BLAKE2b-256 0b6de6e934084e56235d759013f45f1640e85226b4aef28c4adc2dc8cc405faf

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