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.1.0.tar.gz (138.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.1.0-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-5.1.0-cp312-cp312-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

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

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

dsf_mobility-5.1.0-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.1.0-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.1.0.tar.gz.

File metadata

  • Download URL: dsf_mobility-5.1.0.tar.gz
  • Upload date:
  • Size: 138.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.1.0.tar.gz
Algorithm Hash digest
SHA256 6a6bca49c3b874803a34bc65a07262731636f8ff7c4584feae54cc4021b1e2f3
MD5 0b1bdedf0d092490d929b2dd945fe23b
BLAKE2b-256 d509b725b80307ed1f95b254229af3d571aeeab91ecf615cf5d360a46046cb23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f0d0ffadbd88455ceba1107bba6937bb8613f4b5bb5877021f695177105cce0c
MD5 a1fc90cc7847beaac3c5ebd16d7fe0f3
BLAKE2b-256 b412cb46fca38a0cdbd94d2166650f35c31d5fca181467e96be454df4427c4e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.1.0-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 027f30c59d81ab64e8945cf4eb17853646460c16a2e0103e53a7643ab66afc44
MD5 46d15f5f1271d024f0f2f47867bd198f
BLAKE2b-256 e4ccd47ddf6a2035f60c9f9a919fdcd95426b12f3ae5e2d8a1172f4e45d242df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.1.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 bf016a328b9add535c623204532f3770b149ef5b177e7ef6d6bece5a4ffd6884
MD5 960740457efd1138dbddbf9e41fcb6ad
BLAKE2b-256 83101261330f93c951984817f36b1e73d14f0414b897e74e0dcabfad7d8ffdf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2cd5fef505d1685d66fa00d6b5952ca75c8c6c884e7c0dd42e4fc93971f93189
MD5 9814b04b4ee6f5707a49a97ed7f8154b
BLAKE2b-256 1362c6e8ac0106a257b9c3e3b53bac6fd39a4ac1eca9ed4e13e33f89d6fa5802

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.1.0-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 822ec5edc55eac723a2c5292785f65b7ef0299208e72c051cc3d828adcee2d1c
MD5 4fa84084df60628f846d925d00adb18d
BLAKE2b-256 15c75ced1adfc8fa3924fb8e091703746bf13b2f8149ba5c4a4ad3c535864056

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-5.1.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8c8b068ac40931f41f64c34402af792470cf539b5b12e68f0c8324f067f04eb3
MD5 7743d0961cc8f4780f8cc268e24e8b5d
BLAKE2b-256 e4f167e4bf7d42271e5dd6ad37dd0a4acba0cfb6ac4fde36dc8b9d9b7ee5fa99

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