Source code for pyarxaas.models.anonymization_metrics

import copy
from collections.abc import Mapping


[docs]class AnonymizationMetrics: """ Understand metrics from a anonymization process""" def __init__(self, metrics: Mapping): self._elapsed_time = self._fetch_elapsed_time(metrics) self._attribute_generalization = self._fetch_attribute_generalization(metrics) self._privacy_models = self._fetch_privacy_models(metrics) def _fetch_elapsed_time(self, metrics): return metrics["processTimeMillisecounds"] def _fetch_attribute_generalization(self, metrics): return metrics["attributeGeneralization"] def _fetch_privacy_models(self, metrics): return metrics["privacyModels"] @property def attribute_generalization(self): """ Property for getting the attribute generalization :return: Returns a dict containing all the quasi-identifying attributes and the transformation level used to anonymize the dataset. """ return copy.deepcopy(self._attribute_generalization) @property def privacy_models(self): """ Property for getting the privacy models with the configurations used in the anonymization process. :return: Returns a dict containing all the privacy models with the configuration used. """ return copy.deepcopy(self._privacy_models) @property def elapsed_time(self): """ Property for getting the elapsed time for the anonymization process :return: Returns the elapsed time in miliseconds """ return self._elapsed_time def __eq__(self, other): if not isinstance(other, self.__class__): return False return hash(self) == hash(other) def __hash__(self): am_hash = hash(self.elapsed_time) for list_of_maps in (self._privacy_models, self._attribute_generalization): am_hash = hash(am_hash + self._hash_from_list_with_map(list_of_maps)) return am_hash def _hash_from_list_with_map(self, list_of_items): am_hash = hash("") for mapping in list_of_items: am_hash = hash(am_hash + self._hash_from_mapping(mapping)) return am_hash def _hash_from_mapping(self, mapping): am_hash = hash("") for metric, value in mapping.items(): am_hash = hash(am_hash + hash(metric) + hash(str(value))) return am_hash