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, rapidcsv 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.1.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.1-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.0.1-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.1-cp312-cp312-macosx_15_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

dsf_mobility-5.0.1-cp310-cp310-manylinux_2_39_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-5.0.1-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.1.tar.gz.

File metadata

  • Download URL: dsf_mobility-5.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 a4f6a5b0b47cb7bcaa7cacb8ef727ac4e5c080b0391163eeb980c47511242821
MD5 daa4e9b0d415cba8e7523d180dd75b71
BLAKE2b-256 49b7e3a7c65e7103800b682ab4bce938a4ceaa3704b202d5e1302a9a3f6e02d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8f5bf1396fd8200e4ad635d28bba0debc6924f9fde4f80394c98f203514b7bae
MD5 c0dfe27fd434f41a60763afe78893043
BLAKE2b-256 131b8fea4fddf23de81a3cd8005f6ffc93697b9666a14fa655c889f2c524053a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.1-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 07f98fcc6a13dff8a50f80df2b7b4a3687800080d85371c4c64132d5924e840c
MD5 53a706dff2a33ad74668c6a8a6bee1cf
BLAKE2b-256 1b1463b2e82114d67997e7bc1596e0533ba6d8963de0e91d6dd1aac586f63e5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0765469e01636ae0138c6ef97d470377c0677c2a73f5bbc662b169edadcdad52
MD5 fec9659fbd4ed943c0d7f39e60021a9a
BLAKE2b-256 f9426fc2e6641cecdaa8adcee9cd3a5d6cc0f734660ec7c6ff8ed3247acc707d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 54cccdc085dbcf8256ac063e52bad66c67f9792e8624ff8c245f119005e992ad
MD5 393a035be9638538f778a72b0610eb77
BLAKE2b-256 81fc03edd1cde1e2e9c8397202795e5aedb76ea060e1717a2348f5ce5a6033bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.1-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2c6523cc0b6e4b6f5fe6d1a30b1ae401fb2694d0fb37faf30207951c820a6838
MD5 ed2c65d01f6a767545798ea05f7d0691
BLAKE2b-256 eb2910b199164790f36c4570bef80c4a95804c191cc01fc8bfcfda0754bd823d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.0.1-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4fd470f12217f5463d97f30d465bb510e2dab71248d8ed40186ce294610f8d2f
MD5 e15917bb14578a5f36f73c9858440a4b
BLAKE2b-256 ea7c98a8779c2bbd9e93c649dc8ec366e94328804dca50fb1c6e5cb0bad41792

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