Skip to main content

DSF C++ core with Python bindings via pybind11

Project description

DynamicalSystemFramework

Latest Release 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

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

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
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 via Pybind11

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

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

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

  • 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.
  • 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.
  • Mungai, Veronica (2024) Studio dell'ottimizzazione di una rete semaforica. 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.9.4.tar.gz (112.4 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.9.4-cp312-cp312-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

dsf_mobility-3.9.4-cp312-cp312-macosx_15_0_arm64.whl (746.4 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-3.9.4-cp311-cp311-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

dsf_mobility-3.9.4-cp310-cp310-manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

dsf_mobility-3.9.4-cp310-cp310-macosx_15_0_arm64.whl (743.5 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: dsf_mobility-3.9.4.tar.gz
  • Upload date:
  • Size: 112.4 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.9.4.tar.gz
Algorithm Hash digest
SHA256 6df562bb809ebd841ecb4ede711f4a1fff1f15132f7bba5e84e40423d2ae7fc4
MD5 66f20f8484c05626055ca6f0c9281bdc
BLAKE2b-256 84ac26d3ba22400bb6e83b4a5e54d47b20d8fadc2d533c251bbc4c6dbb05f32f

See more details on using hashes here.

File details

Details for the file dsf_mobility-3.9.4-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-3.9.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ba26ddb4fea33797361f6d8b2f53f0b0b0edbd65ed05d27fbf6f0de1d24fb44
MD5 f625605021207ec17f3281cd2be12268
BLAKE2b-256 944d83d404d241e062ad8591d024130344748b8979a03e6e2a75ae4a4bfa3749

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-3.9.4-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 457e2ca7d9bc2f82dbbecb9bfdf50d64149f4cdc6c1ef25cc3a0b312fa61dc8b
MD5 4a389c6b90891d786b3ed74781ec3ff9
BLAKE2b-256 f128f636b2b2e5daf592d428cd06e8352a59c75290a5a64b3191d505f06a16bf

See more details on using hashes here.

File details

Details for the file dsf_mobility-3.9.4-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-3.9.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eec6abbaa121f5ca324cf33fcc028f3eec6f9d84d60f1224e8eb9e32b0f7397a
MD5 5b0fa4db42053d2df4504e2e7edf731b
BLAKE2b-256 53648dbbce8afd8436aa394a57cf19b902c9925edfc02f285301fb98f4fec13a

See more details on using hashes here.

File details

Details for the file dsf_mobility-3.9.4-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dsf_mobility-3.9.4-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 176113d331e3300fc8ef17489f6f38961a3b49cca4768b3650c4b6315048a001
MD5 2e03d4dbd76f03ea6c38225b440f0ecb
BLAKE2b-256 6e4ad74e6a9d694cac15766e955955768788f3ffbcab4b3060f2e6401da1522a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-3.9.4-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 fa816a164f5b188502d5866607faecd78868e1e735b4ba8bdfffc7a4e3aaab3a
MD5 42b9b572093803c85373e812a423ec12
BLAKE2b-256 5150ff50bf3bda4ef8142949d6780f3a7fe907faeb78a67f87676b9698317f0b

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