======
AquDeM
======
.. image:: https://img.shields.io/pypi/v/aqudem.svg
:target: https://pypi.python.org/pypi/aqudem
.. image:: https://readthedocs.org/projects/aqudem/badge/?version=latest
:target: https://aqudem.readthedocs.io
:alt: Documentation Status
Activity and Sequence Detection Evaluation Metrics: A Comprehensive Tool for Event Log Comparison.
* Documentation: https://aqudem.readthedocs.io
Installation
------------
.. code-block:: bash
pip install aqudem
Usage
-----
.. code-block:: python
import aqudem
aqu_context = aqudem.Context("ground_truth_log.xes", "detected_log.xes")
aqu_context.activity_names # get all activity names present in log
aqu_context.case_ids # get all case IDs present in log
aqu_context.cross_correlation() # aggregate over all cases and activites
aqu_context.event_analysis(activity_name="Pack", case_id="1") # filter on case and activity
ts = aqu_context.two_set(activity_name="Pack") # filter on activity, aggregate over cases
ts_f1_score = ts.f1 # get the F1 score of the Two Set metric
For a more detailed description of the available methods, please refer to the rest of the documentation.
Preface
--------
* Metrics to evaluate activity detection results
* Input: two XES files, one with the ground truth and one with the detection results
* Output: a set of metrics to evaluate the detection results
* Prerequisites for the input files: the XES files must...
* ... have a ``sampling_freq`` in Hz associated with each case (only detected file), and each case must have the same sampling frequency
* ... have a ``concept:name`` attribute for each case (case ID), with a matching case ID in both files (ground truth and detected)
* ... have a ``time:timestamp`` attribute for each event
* ... have an ``concept:name`` attribute for each event (activity name)
* ... have a ``lifecycle:transition`` attribute for each event
* ... each ``start`` event must have a corresponding ``complete`` event; and only these two types of events are relevant for the analysis currently; activity executions with a duration of exactly zero are removed
An ACTIVITY_METRIC is a metric that is calculated for each activity type
in each case separately.
Available ACTIVITY_METRICs are:
* Cross-Correlation
* Event Analysis by `Ward et al. (2011)`_
* Two Set Metrics by `Ward et al. (2011)`_
A SEQUENCE_METRIC is a metric that is calculated for each
case separately.
Available SEQUENCE_METRICs are:
* Damerau-Levenshtein Distance
* Levenshtein Distance
All metrics are also available in appropriately normalized versions.
For requests that span multiple cases, the results are aggregated. The default and only aggregation method is currently the mean.
For more detailed definitions of the metrics, please refer to the documentation.
.. _`Ward et al. (2011)`: https://doi.org/10.1145/1889681.1889687
=======
History
=======
0.2.0 (2024-10-11)
------------------
Added additional properties for the EventAnalysis and TwoSet classes, for a better overview of the performance of methods.
The main additions are:
* The TwoSet class now offers the properties precision, recall, f1, and balanced_accuracy.
* The EventAnalysis class now offers the properties precision, recall, and f1 (balanced_accuracy does not make sense here, since there is no notion of true negative events).
0.1.1 (2024-08-14)
------------------
* Added additional validations and checks for the input logs, with helpful tips in errors in case of non-compliance.
* Minor bug fixes.
0.1.0 (2024-06-19)
------------------
* First release on PyPI.
Raw data
{
"_id": null,
"home_page": "https://github.com/ics-unisg/aqudem",
"name": "aqudem",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "activity detection, sequence detection, performance measures, activity recognition, sequence recognition",
"author": "ICS, Universit\u00e4t St. Gallen",
"author_email": "aaron.kurz@unisg.ch",
"download_url": "https://files.pythonhosted.org/packages/49/0c/0e14229ffa2e3f2944ed5c6c7982add563376c0ba31e3c462e45df63b55a/aqudem-0.2.0.tar.gz",
"platform": null,
"description": "======\nAquDeM\n======\n\n\n.. image:: https://img.shields.io/pypi/v/aqudem.svg\n :target: https://pypi.python.org/pypi/aqudem\n\n.. image:: https://readthedocs.org/projects/aqudem/badge/?version=latest\n :target: https://aqudem.readthedocs.io\n :alt: Documentation Status\n\n\n\nActivity and Sequence Detection Evaluation Metrics: A Comprehensive Tool for Event Log Comparison.\n\n* Documentation: https://aqudem.readthedocs.io\n\nInstallation\n------------\n.. code-block:: bash\n\n pip install aqudem\n\nUsage\n-----\n.. code-block:: python\n\n import aqudem\n\n aqu_context = aqudem.Context(\"ground_truth_log.xes\", \"detected_log.xes\")\n\n aqu_context.activity_names # get all activity names present in log\n aqu_context.case_ids # get all case IDs present in log\n\n aqu_context.cross_correlation() # aggregate over all cases and activites\n aqu_context.event_analysis(activity_name=\"Pack\", case_id=\"1\") # filter on case and activity\n ts = aqu_context.two_set(activity_name=\"Pack\") # filter on activity, aggregate over cases\n ts_f1_score = ts.f1 # get the F1 score of the Two Set metric\n\nFor a more detailed description of the available methods, please refer to the rest of the documentation.\n\nPreface\n--------\n\n* Metrics to evaluate activity detection results\n* Input: two XES files, one with the ground truth and one with the detection results\n* Output: a set of metrics to evaluate the detection results\n* Prerequisites for the input files: the XES files must...\n\n * ... have a ``sampling_freq`` in Hz associated with each case (only detected file), and each case must have the same sampling frequency\n * ... have a ``concept:name`` attribute for each case (case ID), with a matching case ID in both files (ground truth and detected)\n * ... have a ``time:timestamp`` attribute for each event\n * ... have an ``concept:name`` attribute for each event (activity name)\n * ... have a ``lifecycle:transition`` attribute for each event\n * ... each ``start`` event must have a corresponding ``complete`` event; and only these two types of events are relevant for the analysis currently; activity executions with a duration of exactly zero are removed\n\n\nAn ACTIVITY_METRIC is a metric that is calculated for each activity type\nin each case separately.\nAvailable ACTIVITY_METRICs are:\n\n* Cross-Correlation\n* Event Analysis by `Ward et al. (2011)`_\n* Two Set Metrics by `Ward et al. (2011)`_\n\nA SEQUENCE_METRIC is a metric that is calculated for each\ncase separately.\nAvailable SEQUENCE_METRICs are:\n\n* Damerau-Levenshtein Distance\n* Levenshtein Distance\n\n\nAll metrics are also available in appropriately normalized versions.\nFor requests that span multiple cases, the results are aggregated. The default and only aggregation method is currently the mean.\nFor more detailed definitions of the metrics, please refer to the documentation.\n\n\n\n.. _`Ward et al. (2011)`: https://doi.org/10.1145/1889681.1889687\n\n=======\nHistory\n=======\n\n0.2.0 (2024-10-11)\n------------------\n\nAdded additional properties for the EventAnalysis and TwoSet classes, for a better overview of the performance of methods.\nThe main additions are:\n\n* The TwoSet class now offers the properties precision, recall, f1, and balanced_accuracy.\n* The EventAnalysis class now offers the properties precision, recall, and f1 (balanced_accuracy does not make sense here, since there is no notion of true negative events).\n\n0.1.1 (2024-08-14)\n------------------\n\n* Added additional validations and checks for the input logs, with helpful tips in errors in case of non-compliance.\n* Minor bug fixes.\n\n0.1.0 (2024-06-19)\n------------------\n\n* First release on PyPI.\n",
"bugtrack_url": null,
"license": "GNU General Public License v3 or later (GPLv3+)",
"summary": "Activity and Sequence Detection Performance Measures: A package to evaluate activity detection results, including the sequence of events given multiple activity types.",
"version": "0.2.0",
"project_urls": {
"Bug Tracker": "https://github.com/ics-unisg/aqudem/issues",
"Documentation": "https://aqudem.readthedocs.io",
"Homepage": "https://github.com/ics-unisg/aqudem"
},
"split_keywords": [
"activity detection",
" sequence detection",
" performance measures",
" activity recognition",
" sequence recognition"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "36387a3ecdbfbc66f92f7e7bf2a54dbcfb892e17a964be2d381fd42209771afc",
"md5": "0de5bb42baa495615913275069f915dd",
"sha256": "5ab688167efd7652826bcb09ea2f718e1a2b756433122d0c0eba564049517887"
},
"downloads": -1,
"filename": "aqudem-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0de5bb42baa495615913275069f915dd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 33393,
"upload_time": "2024-10-11T15:08:36",
"upload_time_iso_8601": "2024-10-11T15:08:36.578333Z",
"url": "https://files.pythonhosted.org/packages/36/38/7a3ecdbfbc66f92f7e7bf2a54dbcfb892e17a964be2d381fd42209771afc/aqudem-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "490c0e14229ffa2e3f2944ed5c6c7982add563376c0ba31e3c462e45df63b55a",
"md5": "6a4ff3c509b0ebe0475b5c2f3e50d5e0",
"sha256": "58e38ca391860246f62ee98af3dd315eb92cab2367067163a48c2245f453c338"
},
"downloads": -1,
"filename": "aqudem-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "6a4ff3c509b0ebe0475b5c2f3e50d5e0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 41361,
"upload_time": "2024-10-11T15:08:38",
"upload_time_iso_8601": "2024-10-11T15:08:38.544321Z",
"url": "https://files.pythonhosted.org/packages/49/0c/0e14229ffa2e3f2944ed5c6c7982add563376c0ba31e3c462e45df63b55a/aqudem-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-11 15:08:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ics-unisg",
"github_project": "aqudem",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "aqudem"
}