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.0.tar.gz (134.3 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.0-cp312-cp312-win_amd64.whl (825.2 kB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-4.7.0-cp312-cp312-manylinux_2_39_x86_64.whl (899.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-4.7.0-cp312-cp312-macosx_15_0_arm64.whl (752.3 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-4.7.0-cp310-cp310-win_amd64.whl (822.8 kB view details)

Uploaded CPython 3.10Windows x86-64

dsf_mobility-4.7.0-cp310-cp310-manylinux_2_39_x86_64.whl (897.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-4.7.0-cp310-cp310-macosx_15_0_arm64.whl (749.2 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: dsf_mobility-4.7.0.tar.gz
  • Upload date:
  • Size: 134.3 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.0.tar.gz
Algorithm Hash digest
SHA256 1914e3b30c65e384f4ba391b7f28f9e22ca77502b4eda853a5d5171bb1d4d315
MD5 5de65d743a1ae5024f3ac5aa95448ae9
BLAKE2b-256 f4f871b7156e66d9ed686ce54c966bb321eeb66bc7eb1253073d1a8ae4d37074

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bb870e5cfca52fc13fb4ca26473ea66e57f5e4d24a7776aa33c98f8fabf7415b
MD5 5fbf30a1f626a6da395d5a7bbfe96588
BLAKE2b-256 ab09c3fe81bb4312e2f7cab4e46ab4895ab26eb7bae9e253613c887343b66ddc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.0-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 305b102b2b0f13887752f06d1f1f6e870d6336fbfc6b5fb142b152f649ab1e99
MD5 6471acb79a0e46085a3487609a90374b
BLAKE2b-256 22769916b6be79a3db702e7abf96ab588dd8bad7f2026494b37f12df0fa56893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a2e9f3326cd49da6232ba22ba307769cfeb6787a1ca7c3a8554bcc01a8500beb
MD5 d08791bff133b1c48e97592b618b4f81
BLAKE2b-256 826ce7643f0a2fe4d1539ee0657594dabe7b6f6cf7ed8ee15a7e46afc0d0ad2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4f23f5dee368dff2b859557b94f4796e83ef6f4c0509e520a028c1a7dd01c76d
MD5 6a32301b411dfd37aa27dc38745fa770
BLAKE2b-256 0d4f2311c3e2ca88b960a629964ce21901cb98dc1954042a2015959e7dfe9dd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.0-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 7715d63b49ca415a32b572b8bd01ac23afb3ce1c1518de3103e8b66e4ffb0dfa
MD5 9955486c68478ebe51e4309f6018762c
BLAKE2b-256 bc7352b6bd4fdd8e987f5edd1c87dd748f61d69f1f3eb9b07b8784b4798aa582

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.7.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9b12adf91b3e673e1ac468d56334bbbfc216e4319089a0230949ff0acbf93f99
MD5 1ff47e636ce2d93be5b56ad2174a05b7
BLAKE2b-256 13e787d8fee7b192a900b6c527dbd1693081fbc9c0a144ff8bb17b1d2f37015d

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