Skip to main content

DSF C++ core with Python bindings via pybind11

Project description

DynamicalSystemFramework

Latest Release PyPI version 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 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-5.0.3.tar.gz (136.0 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.0.3-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.0.3-cp312-cp312-manylinux_2_39_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-5.0.3-cp312-cp312-macosx_15_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-5.0.3-cp310-cp310-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10Windows x86-64

dsf_mobility-5.0.3-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.0.3-cp310-cp310-macosx_15_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for dsf_mobility-5.0.3.tar.gz
Algorithm Hash digest
SHA256 234b3d90879213a7b60e4f212cb3822fc8238eccc75e87e9c8385c3813704e97
MD5 c07b1f01e4ee7a0ba9088f23f77ae1d6
BLAKE2b-256 ff507187ee3f3b70608d6f31593c38f68c7dc6b12891c0e35d38f365ce927e38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 330574c55f91b230d5af6f480c874f05a90ecaddd64368cc36c8d9b6f0f9b5ed
MD5 bf35abfe65e1f72e940173d251b1863d
BLAKE2b-256 6feea8a1c169c4950e2c724632145f623ddc5a94c14a126bee4e3c4bcc0ae8d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.3-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2b65083aeaeba83e10a9971bdf410d4a4373d812bce3e7d51ed2b6a2919ac825
MD5 3a4a66f8045398f816438a6192f55a33
BLAKE2b-256 65d615cbfac1a4c8925310200c6ed39390e2423de07adecd6e20166045711cb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.3-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 bded1697e56009a3e7ecb076fd31063c7ae37e136c7d87318f3a929d8f9d21e9
MD5 91863007970d206f15dd68473a4b22fd
BLAKE2b-256 fb56b304f060bcde2bbdb2ef43ea1ff4294a6ec72f10cd99c99b3bc1651210fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 48ed15412e8211e4296a8594a7303775598b4e0ea33d33eaef679efe630210cf
MD5 7b76b791c0307507bf5a0acaa61d28b3
BLAKE2b-256 a279c5a5141f00679b5184e03291a0ee8a891c8fe4fec89c20080907ef416c34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.3-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 86b3a7749e9038b177b9dbb803948dd08b2e5f5e8fe64573997b56cd51469766
MD5 c654512f23259cdc9a0b6e369481088e
BLAKE2b-256 f5ddccc42f927b63b272fa6c7ede4ae6a49f22659ca1a5a2a7bc6536670188d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.3-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9b2d0fff6fd49e18fc797187f95288fc65707016f870a3b5a5545740cd2bb7a9
MD5 82a2bc488e9a970e26182ba9dd081439
BLAKE2b-256 7f7d5b4ce0c50131e27b96e20d1a41f4b8b013df33961ff34237ee094baba4a5

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