opendp.combinators module#

The combinators module provides functions for combining transformations and measurements. For more context, see combinators in the User Guide.

For convenience, all the functions of this module are also available from opendp.prelude. We suggest importing under the conventional name dp:

>>> import opendp.prelude as dp

The methods of this module will then be accessible at dp.c.

opendp.combinators.make_basic_composition(measurements)[source]#

Construct the DP composition [measurement0, measurement1, …]. Returns a Measurement that when invoked, computes [measurement0(x), measurement1(x), ...]

All metrics and domains must be equivalent.

Composition Properties

  • sequential: all measurements are applied to the same dataset

  • basic: the composition is the linear sum of the privacy usage of each query

  • noninteractive: all mechanisms specified up-front (but each can be interactive)

  • compositor: all privacy parameters specified up-front (via the map)

make_basic_composition in Rust documentation.

Parameters:

measurements – A vector of Measurements to compose.

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_chain_mt(measurement1, transformation0)[source]#

Construct the functional composition (measurement1transformation0). Returns a Measurement that when invoked, computes measurement1(transformation0(x)).

make_chain_mt in Rust documentation.

Parameters:
Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_chain_pm(postprocess1, measurement0)[source]#

Construct the functional composition (postprocess1measurement0). Returns a Measurement that when invoked, computes postprocess1(measurement0(x)). Used to represent non-interactive postprocessing.

make_chain_pm in Rust documentation.

Parameters:
  • postprocess1 (Function) – outer postprocessor

  • measurement0 (Measurement) – inner measurement/mechanism

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_chain_tt(transformation1, transformation0)[source]#

Construct the functional composition (transformation1transformation0). Returns a Transformation that when invoked, computes transformation1(transformation0(x)).

make_chain_tt in Rust documentation.

Parameters:
Return type:

Transformation

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_fix_delta(measurement, delta)[source]#

Fix the delta parameter in the privacy map of a measurement with a SmoothedMaxDivergence output measure.

make_fix_delta in Rust documentation.

Parameters:
  • measurement (Measurement) – a measurement with a privacy curve to be fixed

  • delta – parameter to fix the privacy curve with

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_population_amplification(measurement, population_size)[source]#

Construct an amplified measurement from a measurement with privacy amplification by subsampling. This measurement does not perform any sampling. It is useful when you have a dataset on-hand that is a simple random sample from a larger population.

The DIA, DO, MI and MO between the input measurement and amplified output measurement all match.

Protected by the “honest-but-curious” feature flag because a dishonest adversary could set the population size to be arbitrarily large.

make_population_amplification in Rust documentation.

Parameters:
  • measurement (Measurement) – the computation to amplify

  • population_size (int) – the size of the population from which the input dataset is a simple sample

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_pureDP_to_fixed_approxDP(measurement)[source]#

Constructs a new output measurement where the output measure is casted from MaxDivergence<QO> to FixedSmoothedMaxDivergence<QO>.

make_pureDP_to_fixed_approxDP in Rust documentation.

Parameters:

measurement (Measurement) – a measurement with a privacy measure to be casted

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_pureDP_to_zCDP(measurement)[source]#

Constructs a new output measurement where the output measure is casted from MaxDivergence<QO> to ZeroConcentratedDivergence<QO>.

make_pureDP_to_zCDP in Rust documentation.

Citations:

Parameters:

measurement (Measurement) – a measurement with a privacy measure to be casted

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_sequential_composition(input_domain, input_metric, output_measure, d_in, d_mids)[source]#

Construct a Measurement that when invoked, returns a queryable that interactively composes measurements.

Composition Properties

  • sequential: all measurements are applied to the same dataset

  • basic: the composition is the linear sum of the privacy usage of each query

  • interactive: mechanisms can be specified based on answers to previous queries

  • compositor: all privacy parameters specified up-front

If the privacy measure supports concurrency, this compositor allows you to spawn multiple interactive mechanisms and interleave your queries amongst them.

make_sequential_composition in Rust documentation.

Supporting Elements:

  • Input Domain: DI

  • Output Type: Queryable<Measurement<DI, TO, MI, MO>, TO>

  • Input Metric: MI

  • Output Measure: MO

Parameters:
  • input_domain (Domain) – indicates the space of valid input datasets

  • input_metric (Metric) – how distances are measured between members of the input domain

  • output_measure (Measure) – how privacy is measured

  • d_in – maximum distance between adjacent input datasets

  • d_mids – maximum privacy expenditure of each query

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.make_zCDP_to_approxDP(measurement)[source]#

Constructs a new output measurement where the output measure is casted from ZeroConcentratedDivergence<QO> to SmoothedMaxDivergence<QO>.

make_zCDP_to_approxDP in Rust documentation.

Parameters:

measurement (Measurement) – a measurement with a privacy measure to be casted

Return type:

Measurement

Raises:
  • TypeError – if an argument’s type differs from the expected type

  • UnknownTypeException – if a type argument fails to parse

  • OpenDPException – packaged error from the core OpenDP library

opendp.combinators.then_sequential_composition(output_measure, d_in, d_mids)[source]#

partial constructor of make_sequential_composition

See also

Delays application of input_domain and input_metric in opendp.combinators.make_sequential_composition()

Parameters:
  • output_measure (Measure) – how privacy is measured

  • d_in – maximum distance between adjacent input datasets

  • d_mids – maximum privacy expenditure of each query