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, spdlog and rapidcsv. To install requirements on Ubuntu:

sudo apt install cmake libhwloc-dev

To install requirements on macOS:

brew install 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.

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

@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-4.4.4.tar.gz (131.6 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-4.4.4-cp312-cp312-manylinux_2_39_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-4.4.4-cp312-cp312-macosx_15_0_arm64.whl (794.5 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-4.4.4-cp310-cp310-manylinux_2_39_x86_64.whl (1000.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-4.4.4-cp310-cp310-macosx_15_0_arm64.whl (792.1 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for dsf_mobility-4.4.4.tar.gz
Algorithm Hash digest
SHA256 21bb70670bd4c771a8e31b90b4d9e20fe7f60b701f7178fcd01412e90c02e397
MD5 01658b2436af74461b69c5ea8ec65bd5
BLAKE2b-256 da3f12ca1bff50a83d78038beac6c06e82e8a4a83fd5a3465a6424abfa7f7eb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.4.4-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d915771402e3449f233f6db71a63e0e1e5b326ac52e6d69c9ffc28df78257ece
MD5 3f7161d28cee474429fdc35bfd3be615
BLAKE2b-256 822c0094b4b490dcb7fdd8481ca09bc2905c375b2355e6c5133295eb241193fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.4.4-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a406c20423fba4652c78e3f7cd09f86e0842d2337ccd82d49b0f895540cb9754
MD5 c4ba60f116b8e519250184e6f2d65d15
BLAKE2b-256 16a72e6ba55df02964024a9e0914e9e1873e33c307870a296b6f8d8e60e9ac7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.4.4-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1aa4d840597e715e0fd18dfd8c5cd74b809e943b01a1f6670c078e5085377cae
MD5 a79bab1e814f2b851a8b50423f7dd917
BLAKE2b-256 dcfcfa017cb2199bbbcb644da349a68b28cb5e668633dc9b65782ffe51802338

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.4.4-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 70a2c09c59e48eb82d3afc6cd05d85af58560c3e2c6cff284846a0c1dd876d92
MD5 d0f51f2bf7ea63c5b4d16e07789e136f
BLAKE2b-256 10568b7524f5394ad19339c5ad4a34f410e2cb8eac857401a35e28b4e4299a2f

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