Skip to main content

efficient Subjective Logic IMplementation in C++ providing Python interfaces

Project description

For the Reviewers

To run the evaluation scripts reproducing the paper presentations, please refer to the following install/use instructions for Python and C++
For general use, please follow the instructions below.

eSLIM++ - efficient Subjective Logic IMplementation in C++

eSLIM++ is intended to provide fast subjective logic calculus that can be embedded into high-performance applications. For this reason, it was developed in C++, and its core functionality is compatible with CUDA. Nevertheless, to provide user-friendly access, Python bindings are provided, too.

Generally, eSLIM++ is developed to be used within the aduulm (Autonomous Driving @ Ulm University) framework at the Institut for Measurement-, Control-, and Microtechnology. Thus, some references, e.g., facilitating cmake macros, are contained, but should not hinder any use outside aduulm. Further, it can be built using standalone CMake or, if used within a ROS2 stack, using colon. A more detailed description and instructions for installation are below.

Installation

eSLIM++ is available as a Python package with Pypi and, for Python usage, can easily be installed with:

  pip install eslimpp

After installation, eSLIM++ provides an importable Python package called subjective_logic. (May change to eslimpp in the future)

For using the C++ interface, the repository can be cloned and built using cmake, e.g.,

  git clone [link to repo]
  cd eslimpp
  mkdir build
  cd build
  cmake ..
  # header-only build should be fairly fast; no multi-thread necessary
  make install

If the Python bindings should be built for testing or similar, simply create a build directory in library/src/bindings and proceed similarly. Here, some dependencies might be required, such as nanobind, and potentially, install paths must explicitly be defined. Alternatively, the Python package can be built from source using pip For this, run pip in the root directly

  pip install [-e] .

The library can also be packaged for Pypi or similar, for this refer to the description, which serves as a small reminder.

When there are no changes in C++ or the bindings made by the user, it is recommended to install the Python package using pip.

Dependencies and Requirements for Installation

To build eSLIM++, the minimum required cmake version is 3.16. If the python package was not already built for your system, cmake is required during the pip installation Further, Python 3.8 is required during the build process, running an existing build on older Python version has not been tested.

Uninstallation

To remove eslimpp from your system, simply uninstall the pip package. Or, in the case of C++, run the following in the build directory

  make uninstall

Documentation

eSLIM++ provides doxygen and sphinx documentation, which currently contains the docstrings from the source code. More sophisticated and detailed documentation is in progress, adding figures and latex-formated equations, etc. Information about how to build the documentation is available here.

Reproducable Publication Results

One of the core ideas behind eSLIM++ is to provide reproducible results of recent research results. For this, the publication directory includes reference implementations to obtain results from certain publications.
As of now (time of publication), only the two most recent submissions to the MfI are included to demonstrate the easy-to-use Python access and high-performance C++ application. However, everyone using eSLIM++ is welcome to contribute their own implementations for upcoming publications.
Instructions on how to run Python examples are provided here. If C++ implementations are available, a detailed description on how to run them should be available for each example separately, as, depending on the use case, the prerequisites may differ greatly.

References

Most of the functions and operations of eSLIM++ have been published by various authors. The list below is meant to provide an overview of works which introduce the functionality that is available within this library. The numbers are references within the code at several points, and the list is subject to change.

[1] Jøsang, A. (2016). Subjective Logic: A Formalism for Reasoning Under Uncertainty. Springer International Publishing.
[2] Jøsang, A., Zhang, J., & Wang, D. (2017). Multi-source trust revision. International Conference on Information Fusion (Fusion).
[3] van der Heijden, R. W., Kopp, H., & Kargl, F. (2018). Multi-Source Fusion Operations in Subjective Logic. International Conference on Information Fusion (FUSION).
[4] Wodtko, T., Griebel, T., Scheible, A., & Buchholz, M. (2024). Conflict Handling in Time-Dependent Subjective Networks. 27th International Conference on Information Fusion (FUSION).
[5] Kaplan, L., Şensoy, M., Chakraborty, S., & de Mel, G. (2015). Partial observable update for subjective logic and its application for trust estimation. Information Fusion, 26, 66–83.
[6] Scheible, A., Griebel, T., Herrmann, M., Hermann, C., & Buchholz, M. (2023). Track Classification for Random Finite Set Based Multi-Sensor Multi-Object Tracking. IEEE Symposium Sensor Data Fusion and International Conference on Multisensor Fusion and Integration (SDF-MFI).
[7] Josang, A., Cho, J.-H., & Chen, F. (2018). Uncertainty Characteristics of Subjective Opinions. 21st International Conference on Information Fusion (FUSION).

Applications

At the time of publication, eSLIM++ was already used internally (addulm) to solve modern research questions. Partly, the library was directly used during the evaluation of these works, partly, works have been implemented using eSLIM++ after the publication. The list below should give the reader an impression of possible applications of eSLIM++ and, at the same time, may also provide some food for thought.

[1] Wodtko, T., Griebel, T., Scheible, A., & Buchholz, M. (2024). Conflict Handling in Time-Dependent Subjective Networks. 27th International Conference on Information Fusion (FUSION).
[2] Schumann, O., Wodtko, T., Buchholz, M., & Dietmayer, K. (2024). Self-Assessment of Evidential Grid Map Fusion for Robust Motion Planning. IEEE International Conference on Intelligent Transportation Systems (ITSC).
[3] Scheible, A., Griebel, T., Herrmann, M., Hermann, C., & Buchholz, M. (2023). Track Classification for Random Finite Set Based Multi-Sensor Multi-Object Tracking. IEEE Symposium Sensor Data Fusion and International Conference on Multisensor Fusion and Integration (SDF-MFI).
[4] Scheible, A., Griebel, T., & Buchholz, M. (2024, September 24). Self-Monitored Detection Probability Estimation for the Labeled Multi-Bernoulli Filter. IEEE 27th International Conference on Intelligent Transportation Systems (ITSC).

Licence - Apache 2.0

The library is meant to be widely used in various applications; respectively, the licence was choosen. Community driven updates are highly welcomed, if doing so, please be aware of this licence, further details will follow (signing MR commits to accept license and copyright etc.)

Acompaning publication

Introducing this library, there is currently a paper under review at the IEEE International Conference on Multisensor Fusion and Integration. The reviewers are highly welcome to check out the code and run the example scripts producing the results presented in this work. Details of the publication will follow, if applicable.

Citation

I would be delighted if eSLIM++ were used in other projects that might get published at some point. In this case, please cite the library with its introduction paper. A citation description will be available upon publication.

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

eslimpp-0.1.1.tar.gz (230.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eslimpp-0.1.1-cp312-abi3-manylinux_2_39_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.39+ x86-64

File details

Details for the file eslimpp-0.1.1.tar.gz.

File metadata

  • Download URL: eslimpp-0.1.1.tar.gz
  • Upload date:
  • Size: 230.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for eslimpp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 94c4eb434582488e19a56038db41997bb16139fdd510d4cce062909677919f79
MD5 27e6691dcabb0c5033c79e1179241183
BLAKE2b-256 ce36d447cc925c38102edd2d28f8acc2fac228bc5e3192b7489605b39f54aa88

See more details on using hashes here.

File details

Details for the file eslimpp-0.1.1-cp312-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for eslimpp-0.1.1-cp312-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e8877c013ea11811d7ed35755810dce467b98f3cdd02e0644575e621f8d6ac91
MD5 780710c9c7aab4fc44a0627a9d13e266
BLAKE2b-256 f2a74f0521111e38d823d4a6774044b87fc3d1a525bb606ea28f14d844aa9ef4

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