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.6.2.tar.gz (133.7 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.6.2-cp312-cp312-win_amd64.whl (822.7 kB view details)

Uploaded CPython 3.12Windows x86-64

dsf_mobility-4.6.2-cp312-cp312-manylinux_2_39_x86_64.whl (896.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

dsf_mobility-4.6.2-cp312-cp312-macosx_15_0_arm64.whl (748.4 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

dsf_mobility-4.6.2-cp310-cp310-win_amd64.whl (820.5 kB view details)

Uploaded CPython 3.10Windows x86-64

dsf_mobility-4.6.2-cp310-cp310-manylinux_2_39_x86_64.whl (893.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

dsf_mobility-4.6.2-cp310-cp310-macosx_15_0_arm64.whl (745.5 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: dsf_mobility-4.6.2.tar.gz
  • Upload date:
  • Size: 133.7 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.6.2.tar.gz
Algorithm Hash digest
SHA256 62415a0b65ec8482b2de08a519fed681c3f5fb056ee33b40972cdc1dec175112
MD5 1477dfa46c90b69baeb8afc34fb921df
BLAKE2b-256 9ee2150750d72e98e473687604588e2391fb52eade8624c4a78a0a5ce2df8909

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.6.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cff78b24f62e8e5e41c5f5683a6d7db35408c5871eb334c7037841318e795eae
MD5 1a7011071510840d375da8dc6860118b
BLAKE2b-256 fc5c43abfa4f37bb6127a77ed6a7e7e20669d4917316d1deead2efe6790c811b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.6.2-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 186c1fceff2818cedb3f970832935a6ef2a71d06b8927076e961f48432aa291f
MD5 dbefea2e632f97ad6c806f7df1087ee0
BLAKE2b-256 1045b236ffe77c5ebb46f1244cf8098196ef42cc89ce168d809ef51a8d579cb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.6.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3ef5315952abffcef2f082c28160f48c097a09451f244f13d564047426b7ef49
MD5 20857f4a2e81d78e648bb5d28261305c
BLAKE2b-256 bd63f528e21a8a5e19f82ab8c596b605126edd268b887b23cafc75b17486536c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.6.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b7a7b7d41045284959985a2deb6b72d2fdb8a40615fe961df2a78ad1a47c5b24
MD5 4bbb2a39913d1620594d496810c7e75e
BLAKE2b-256 b00fb818a4acbb80a82a331c592eea6ee6360830459e1c68e7b046f24e69db50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.6.2-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1760c5e168ace1482135f3a37fc76b0141d93f47c70592ea8ea16b5944bfc488
MD5 99fa97b10e8e44784c14febbcb43769d
BLAKE2b-256 5d4cfbd72aff4b0afc6be9d2700d78c8b73b581d7b82c1e7a4dd2e272565618b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsf_mobility-4.6.2-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b139524689973f611ed33daaf87de464373fc4e581c5df7229bd3ab8d2c0af24
MD5 efdb8838166f862ec50a89600e6a3fed
BLAKE2b-256 924304df6016faea120a9a81aad72efdaaf00bb00340054ff4f34969efa08cb3

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