Skip to main content

DSF C++ core with Python bindings via pybind11

Project description

DynamicalSystemFramework

Latest Release PyPI version Standard TBB SPDLOG CSV JSON 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, and spdlog (with fmt). To install requirements on Ubuntu:

sudo apt install libtbb-dev libspdlog-dev libsimdjson-dev cmake

To install requirements on macOS:

brew install tbb simdjson spdlog cmake

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

Then, the installation is automatic via 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.

To compile tests run:

cd test
cmake -B build && make -C build -j$(nproc)

To run all the tests together use the command:

./dsf_tests.out

Benchmarking

Some functionalities of the library have been benchmarked in order to assess their efficiency.
The benchmarks are performed using a small toolkit developed by @sbaldu, in order to keep them simple and without needing to rely on large external libraries.
To compile the benchmarks use the commands:

cd benchmark
cmake -B build && make -C build

To run all the benchmarks together use the command:

for f in ./*.out ; do ./$f ; done

Citing

@misc{DSF,
  author = {Berselli, Gregorio and Balducci, Simone},
  title = {Framework for modelling dynamical complex systems.},
  year = {2023},
  url = {https://github.com/physycom/DynamicalSystemFramework},
  publisher = {GitHub},
  howpublished = {\url{https://github.com/physycom/DynamicalSystemFramework}}
}

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-3.13.5.tar.gz (116.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-3.13.5-cp312-cp312-manylinux_2_39_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-3.13.5-cp312-cp312-macosx_15_0_arm64.whl (815.1 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-3.13.5-cp310-cp310-manylinux_2_39_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-3.13.5-cp310-cp310-macosx_15_0_arm64.whl (812.1 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for dsf_mobility-3.13.5.tar.gz
Algorithm Hash digest
SHA256 0dc8e932c12d9535eb59f09fa6ef711e766ba02485b63b43c990225e3ddc7fd5
MD5 3156e4e700f473ce91cb89219b8472c0
BLAKE2b-256 776cd1c3167810c03d7c6c60f67c5c829ec6bd39660c28ad1a874ff71078d5e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-3.13.5-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1f5541ed7c8f1d494052d72f62b91ec2ab3d86c01f270b318964f888c4e807b4
MD5 6e74b87429ffd9abbdbc5afec255993b
BLAKE2b-256 7cb48fd02fb7c8cfdced348ed657939a2205787d784060950c8fd128194e32fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-3.13.5-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e9436c215cb9fe94d56c66e3635ff349f415398732d27f9786be754c1b525ca4
MD5 35f5ddaa8ec031d72f5fad0013372b95
BLAKE2b-256 969425d585586d818c0c5ed7e690b34617e39766953299aa4d6321118dad4a74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-3.13.5-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 51a95a4c8b1178ebc4550434d0ff65b66c2c5fef144c4bf5741fca7607abee00
MD5 4faae7863db7672cd67196773fa647c1
BLAKE2b-256 3c1e8a5d062f602be6ea7b15acf9333add7bcd4273e0d8c10c4c3ecd05fa63c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-3.13.5-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3961ea2ff1d4789d5ae2bc09c1c988ad7b9ba39412e9d7593be69f241b15e330
MD5 71cff842d76403fdf1b56515a844f513
BLAKE2b-256 2c838682c7724bb9246661ed7ddeeb9f895b68054647d90b991ae7b2e59f73c0

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