Repository URL to install this package:
|
Version:
4.5.4.dev1 ▾
|
import typing as t
from sarus_differential_privacy.query import (
ComposedQuery,
LaplaceQuery,
PrivateQuery,
)
from sarus_data_spec.path import path
from sarus_data_spec.sarus_statistics.tasks.base import get_is_public
import sarus_data_spec.typing as st
def links_query(dataset: st.Dataset, noise: float) -> PrivateQuery:
private_queries: t.List[PrivateQuery] = []
f_ks = dataset.foreign_keys()
data_type = dataset.schema().data_type()
for pointing, pointed in f_ks.items():
path_pointing_struct = path(
paths=dataset.schema().data_type().get(pointing).structs()
)
path_pointed_struct = path(
paths=(dataset.schema().data_type().get(pointed).structs())
)
if not get_is_public(
data_type.sub_types(path_pointing_struct)[0].properties()
) or not get_is_public(
data_type.sub_types(path_pointed_struct)[0].properties()
):
# histograms
private_queries.append(LaplaceQuery(noise))
return ComposedQuery(private_queries)