converters#

Wrappers for changing a measurements’s output measure.

Classes#

PureDPToRhoZCDP

Measurement for converting pure DP to zCDP.

PureDPToApproxDP

Measurement for converting pure DP to approximate DP.

RhoZCDPToApproxDP

Measurement for converting zCDP to approximate DP.

class PureDPToRhoZCDP(pure_dp_measurement)#

Bases: tmlt.core.measurements.base.Measurement

Measurement for converting pure DP to zCDP.

Parameters

pure_dp_measurement (tmlt.core.measurements.base.Measurement) –

__init__(pure_dp_measurement)#

Constructor.

Parameters

pure_dp_measurement (MeasurementMeasurement) – The pure DP measurement to convert.

property pure_dp_measurement#

Return the wrapped pure DP measurement.

Return type

tmlt.core.measurements.base.Measurement

privacy_function(d_in)#

Returns the smallest d_out satisfied by the measurement.

The returned d_out (\(\rho\)) is \(\rho=\frac{\epsilon^2}{2}\)

where \(\epsilon\) is the d_out returned by pure_dp_measurement’s privacy_function() on d_in.

Parameters

d_in (Any) – Distance between inputs under input_metric.

Raises

NotImplementedError – If self.pure_dp_measurement.privacy_function(d_in) raises NotImplementedError.

Return type

tmlt.core.utils.exact_number.ExactNumber

privacy_relation(d_in, d_out)#

Return True if close inputs produce close outputs.

Let \(\epsilon = \sqrt{2 \cdot \rho}\)

Returns self.pure_dp_measurement.privacy_relation(d_in, \(\epsilon\))

where \(\rho\) is the input argument “d_out”.

Parameters
  • d_in (Any) – Distance between inputs under input_metric.

  • d_out (tmlt.core.utils.exact_number.ExactNumberInput) – Distance between outputs under output_measure.

Return type

bool

__call__(data)#

Apply measurement.

Parameters

data (Any) –

Return type

Any

property input_domain#

Return input domain for the measurement.

Return type

tmlt.core.domains.base.Domain

property input_metric#

Distance metric on input domain.

Return type

tmlt.core.metrics.Metric

property output_measure#

Distance measure on output.

Return type

tmlt.core.measures.Measure

property is_interactive#

Returns true iff the measurement is interactive.

Return type

bool

class PureDPToApproxDP(pure_dp_measurement)#

Bases: tmlt.core.measurements.base.Measurement

Measurement for converting pure DP to approximate DP.

Parameters

pure_dp_measurement (tmlt.core.measurements.base.Measurement) –

__init__(pure_dp_measurement)#

Constructor.

Parameters

pure_dp_measurement (MeasurementMeasurement) – The pure DP measurement to convert.

property pure_dp_measurement#

Return the wrapped pure DP measurement.

Return type

tmlt.core.measurements.base.Measurement

privacy_function(d_in)#

Returns the smallest d_out satisfied by the measurement.

Returns (self.pure_dp_measurement.privacy_function(d_in), 0).

Every (\(\epsilon\))-DP measurement is also (\(\epsilon\), 0)-DP.

Parameters

d_in (Any) – Distance between inputs under input_metric.

Raises

NotImplementedError – If pure_dp_measurement’s privacy_function() raises NotImplementedError.

Return type

Tuple[tmlt.core.utils.exact_number.ExactNumber, tmlt.core.utils.exact_number.ExactNumber]

privacy_relation(d_in, d_out)#

Returns the smallest d_out satisfied by the measurement.

Returns self.pure_dp_measurement.privacy_relation(d_in, d_out[0])

Parameters
  • d_in (Any) – Distance between inputs under input_metric.

  • d_out (Tuple[tmlt.core.utils.exact_number.ExactNumberInput, tmlt.core.utils.exact_number.ExactNumberInput]) – Distance between outputs under output_measure.

Return type

bool

__call__(data)#

Apply measurement.

Parameters

data (Any) –

Return type

Any

property input_domain#

Return input domain for the measurement.

Return type

tmlt.core.domains.base.Domain

property input_metric#

Distance metric on input domain.

Return type

tmlt.core.metrics.Metric

property output_measure#

Distance measure on output.

Return type

tmlt.core.measures.Measure

property is_interactive#

Returns true iff the measurement is interactive.

Return type

bool

class RhoZCDPToApproxDP(zcdp_measurement)#

Bases: tmlt.core.measurements.base.Measurement

Measurement for converting zCDP to approximate DP.

Parameters

zcdp_measurement (tmlt.core.measurements.base.Measurement) –

__init__(zcdp_measurement)#

Constructor.

Parameters

zcdp_measurement (MeasurementMeasurement) – The zCDP measurement to convert.

property zcdp_measurement#

Return the wrapped zCDP measurement.

Return type

tmlt.core.measurements.base.Measurement

privacy_relation(d_in, d_out)#

Return True if close inputs produce close outputs.

Special cases:

  • Every measurement is (\(\infty, \delta\))-DP for any \(\delta \ge 0\)

  • Every measurement is (\(epsilon, 1\))-DP for any \(\epsilon \ge 0\)

  • RhoZCDP with \(\rho \gt 0\) cannot be converted to (\(\epsilon, 0\))-DP for any finite \(\epsilon\)

General case:

Let \(\rho\) be the unique solution to \(\rho + 2 * \sqrt{\rho * log(\frac{1}{\delta})} - \epsilon = 0\)

where:

  • \(\delta\) is the first element of the input argument “d_out”

  • \(\epsilon\) is the second element of the input argument “d_out”

Returns self.zcdp_measurement.privacy_relation(d_in, \(\rho\))

See Proposition 1.3 in [BS16] for more information.

Parameters
  • d_in (Any) – Distance between inputs under input_metric.

  • d_out (Tuple[tmlt.core.utils.exact_number.ExactNumberInput, tmlt.core.utils.exact_number.ExactNumberInput]) – Distance between outputs under output_measure.

Return type

bool

__call__(data)#

Apply measurement.

Parameters

data (Any) –

Return type

Any

property input_domain#

Return input domain for the measurement.

Return type

tmlt.core.domains.base.Domain

property input_metric#

Distance metric on input domain.

Return type

tmlt.core.metrics.Metric

property output_measure#

Distance measure on output.

Return type

tmlt.core.measures.Measure

property is_interactive#

Returns true iff the measurement is interactive.

Return type

bool

privacy_function(d_in)#

Returns the smallest d_out satisfied by the measurement.

See the privacy and stability tutorial (add link?) for more information.

Parameters

d_in (Any) – Distance between inputs under input_metric.

Raises

NotImplementedError – If not overridden.

Return type

Any