Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
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)