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 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 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.7.4.tar.gz (135.2 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.7.4-cp312-cp312-win_amd64.whl (839.1 kB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-4.7.4-cp312-cp312-manylinux_2_39_x86_64.whl (915.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-4.7.4-cp312-cp312-macosx_15_0_arm64.whl (767.8 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-4.7.4-cp310-cp310-win_amd64.whl (836.8 kB view details)

Uploaded CPython 3.10Windows x86-64

dsf_mobility-4.7.4-cp310-cp310-manylinux_2_39_x86_64.whl (913.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-4.7.4-cp310-cp310-macosx_15_0_arm64.whl (765.8 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: dsf_mobility-4.7.4.tar.gz
  • Upload date:
  • Size: 135.2 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.7.4.tar.gz
Algorithm Hash digest
SHA256 d2194293331b0fcde05ae421ef7e06578a3d8c215c5421bb294ddd425f58fa3a
MD5 86528061cb649c960e53c7bd7e8e0092
BLAKE2b-256 1b1cc0038d7d27166dd909dee3ef4ec9d9fa3ce2562b244690c8440b46790759

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f19df186f483715045653b8a0947ef724ea3067b751e6469bc5e374ff55407ae
MD5 328d23f6c5b7867cf21dcaae928f377d
BLAKE2b-256 968c4448c22ee4adb480d417b9215dfb8b2333441c47b7c34f7296071067abea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.4-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f5aa88a366694a596f0adc4242c4269c618c6b9f555891f24af8900e3026d6a1
MD5 4c59dd9e42d5e91345beef70f0b7e6e1
BLAKE2b-256 d7ebf14fd603e85ee587570badf4cf50d300d4aa0f10c99c3257a28481538cd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.4-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 488386ab6b9c765ee6424ee5da1189fafa4e259b2b425c1e0d8545a1b8c2d847
MD5 8a44b75aba5cd4795b61f8ea61c7395c
BLAKE2b-256 7ea6ac184e899f7860e07e0ba17c80df088786f8ee785633c05ee3d405c71c9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 08ad575c505da3c38b9a28b34e2dca013b64e6770e54215bdfc18610b5655731
MD5 cf57d1e01f451221ef606eca68986f2b
BLAKE2b-256 e682c863f6573774d424785eaffbaf023d3fe67dd27d8a7dcaf0d678a7af81d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.4-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 0da0b005d4f7574b4ff02ca59667a5d266fc65141940599a11d9714a58299eff
MD5 c635c18a280529a48b1e794fb8535c84
BLAKE2b-256 09226bf7b771899673f999e55cdb93ab46eccf404b07fdd3b640942699970c23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.4-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 451443841966d9e835abad32e3b2ae5ad81ec054aad2cf4a57c6f745980602e0
MD5 a725286a970f152d93c9b44a433cbf08
BLAKE2b-256 b36fdef55254631531b4565f6d8412c3ebe068684db0a9b23cfea210d3bdeff7

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