opendp.measurements module#
- opendp.measurements.make_base_discrete_gaussian(scale, D='AtomDomain<int>', MO='ZeroConcentratedDivergence<QO>', QI='int')[source]#
Make a Measurement that adds noise from the discrete_gaussian(
scale
) distribution to the input.Set
D
to change the input data type and input metric:D
input type
D::InputMetric
AtomDomain<T>
(default)T
AbsoluteDistance<QI>
VectorDomain<AtomDomain<T>>
Vec<T>
L2Distance<QI>
make_base_discrete_gaussian in Rust documentation.
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MO
- Parameters:
scale – Noise scale parameter for the gaussian distribution.
scale
== standard_deviation.D (Type Argument) – Domain of the data type to be privatized. Valid values are
VectorDomain<AtomDomain<T>>
orAtomDomain<T>
.MO (Type Argument) – Output measure. The only valid measure is
ZeroConcentratedDivergence<QO>
, but QO can be any float.QI (Type Argument) – Input distance. The type of sensitivities. Can be any integer or float.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_discrete_laplace(scale, D='AtomDomain<int>', QO=None)[source]#
Make a Measurement that adds noise from the discrete_laplace(
scale
) distribution to the input.Set
D
to change the input data type and input metric:D
input type
D::InputMetric
AtomDomain<T>
(default)T
AbsoluteDistance<T>
VectorDomain<AtomDomain<T>>
Vec<T>
L1Distance<T>
This uses
make_base_discrete_laplace_cks20
if scale is greater than 10, otherwise it usesmake_base_discrete_laplace_linear
.make_base_discrete_laplace in Rust documentation.
Citations:
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MaxDivergence<QO>
- Parameters:
scale – Noise scale parameter for the laplace distribution.
scale
== sqrt(2) * standard_deviation.D (Type Argument) – Domain of the data type to be privatized. Valid values are
VectorDomain<AtomDomain<T>>
orAtomDomain<T>
QO (Type Argument) – Data type of the output distance and scale.
f32
orf64
.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_discrete_laplace_cks20(scale, D='AtomDomain<int>', QO=None)[source]#
Make a Measurement that adds noise from the discrete_laplace(
scale
) distribution to the input, using an efficient algorithm on rational bignums.Set
D
to change the input data type and input metric:D
input type
D::InputMetric
AtomDomain<T>
(default)T
AbsoluteDistance<T>
VectorDomain<AtomDomain<T>>
Vec<T>
L1Distance<T>
make_base_discrete_laplace_cks20 in Rust documentation.
Citations:
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MaxDivergence<QO>
- Parameters:
scale – Noise scale parameter for the laplace distribution.
scale
== sqrt(2) * standard_deviation.D (Type Argument) – Domain of the data type to be privatized. Valid values are
VectorDomain<AtomDomain<T>>
orAtomDomain<T>
QO (Type Argument) – Data type of the output distance and scale.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_discrete_laplace_linear(scale, bounds=None, D='AtomDomain<int>', QO=None)[source]#
Make a Measurement that adds noise from the discrete_laplace(
scale
) distribution to the input, using a linear-time algorithm on finite data types.This algorithm can be executed in constant time if bounds are passed. Set
D
to change the input data type and input metric:D
input type
D::InputMetric
AtomDomain<T>
(default)T
AbsoluteDistance<T>
VectorDomain<AtomDomain<T>>
Vec<T>
L1Distance<T>
make_base_discrete_laplace_linear in Rust documentation.
Citations:
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MaxDivergence<QO>
- Parameters:
scale – Noise scale parameter for the distribution.
scale
== sqrt(2) * standard_deviation.bounds (Any) – Set bounds on the count to make the algorithm run in constant-time.
D (Type Argument) – Domain of the data type to be privatized. Valid values are
VectorDomain<AtomDomain<T>>
orAtomDomain<T>
QO (Type Argument) – Data type of the scale and output distance.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_gaussian(scale, k=-1074, D='AtomDomain<T>', MO='ZeroConcentratedDivergence<T>')[source]#
Make a Measurement that adds noise from the gaussian(
scale
) distribution to the input.Set
D
to change the input data type and input metric:D
input type
D::InputMetric
AtomDomain<T>
(default)T
AbsoluteDistance<T>
VectorDomain<AtomDomain<T>>
Vec<T>
L2Distance<T>
This function takes a noise granularity in terms of 2^k. Larger granularities are more computationally efficient, but have a looser privacy map. If k is not set, k defaults to the smallest granularity.
make_base_gaussian in Rust documentation.
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MO
- Parameters:
scale – Noise scale parameter for the gaussian distribution.
scale
== standard_deviation.k (int) – The noise granularity in terms of 2^k.
D (Type Argument) – Domain of the data type to be privatized. Valid values are
VectorDomain<AtomDomain<T>>
orAtomDomain<T>
.MO (Type Argument) – Output Measure. The only valid measure is
ZeroConcentratedDivergence<T>
.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_geometric(scale, bounds=None, D='AtomDomain<int>', QO=None)[source]#
Deprecated. Use
make_base_discrete_laplace
instead (more efficient).make_base_discrete_laplace_linear
has a similar interface with the optional constant-time bounds.make_base_geometric in Rust documentation.
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MaxDivergence<QO>
- Parameters:
scale –
bounds (Any) –
D (Type Argument) –
QO (Type Argument) –
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_laplace(scale, k=-1074, D='AtomDomain<T>')[source]#
Make a Measurement that adds noise from the laplace(
scale
) distribution to a scalar value.Set
D
to change the input data type and input metric:D
input type
D::InputMetric
AtomDomain<T>
(default)T
AbsoluteDistance<T>
VectorDomain<AtomDomain<T>>
Vec<T>
L1Distance<T>
This function takes a noise granularity in terms of 2^k. Larger granularities are more computationally efficient, but have a looser privacy map. If k is not set, k defaults to the smallest granularity.
make_base_laplace in Rust documentation.
Supporting Elements:
Input Domain:
D
Output Type:
D::Carrier
Input Metric:
D::InputMetric
Output Measure:
MaxDivergence<D::Atom>
- Parameters:
scale – Noise scale parameter for the laplace distribution.
scale
== sqrt(2) * standard_deviation.k (int) – The noise granularity in terms of 2^k.
D (Type Argument) – Domain of the data type to be privatized. Valid values are
VectorDomain<AtomDomain<T>>
orAtomDomain<T>
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_base_ptr(scale, threshold, TK, k=-1074, TV=None)[source]#
Make a Measurement that uses propose-test-release to privatize a hashmap of counts.
This function takes a noise granularity in terms of 2^k. Larger granularities are more computationally efficient, but have a looser privacy map. If k is not set, k defaults to the smallest granularity.
make_base_ptr in Rust documentation.
Supporting Elements:
Input Domain:
MapDomain<AtomDomain<TK>, AtomDomain<TV>>
Output Type:
HashMap<TK, TV>
Input Metric:
L1Distance<TV>
Output Measure:
SmoothedMaxDivergence<TV>
- Parameters:
scale – Noise scale parameter for the laplace distribution.
scale
== sqrt(2) * standard_deviation.threshold – Exclude counts that are less than this minimum value.
k (int) – The noise granularity in terms of 2^k.
TK (Type Argument) – Type of Key. Must be hashable/categorical.
TV (Type Argument) – Type of Value. Must be float.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_randomized_response(categories, prob, constant_time=False, T=None, QO=None)[source]#
Make a Measurement that implements randomized response on a categorical value.
make_randomized_response in Rust documentation.
Supporting Elements:
Input Domain:
AtomDomain<T>
Output Type:
T
Input Metric:
DiscreteDistance
Output Measure:
MaxDivergence<QO>
- Parameters:
categories (Any) – Set of valid outcomes
prob – Probability of returning the correct answer. Must be in
[1/num_categories, 1)
constant_time (bool) – Set to true to enable constant time. Slower.
T (Type Argument) – Data type of a category.
QO (Type Argument) – Data type of probability and output distance.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library
- opendp.measurements.make_randomized_response_bool(prob, constant_time=False, QO=None)[source]#
Make a Measurement that implements randomized response on a boolean value.
make_randomized_response_bool in Rust documentation.
Supporting Elements:
Input Domain:
AtomDomain<bool>
Output Type:
bool
Input Metric:
DiscreteDistance
Output Measure:
MaxDivergence<QO>
- Parameters:
prob – Probability of returning the correct answer. Must be in
[0.5, 1)
constant_time (bool) – Set to true to enable constant time. Slower.
QO (Type Argument) – Data type of probability and output distance.
- Return type:
- Raises:
TypeError – if an argument’s type differs from the expected type
UnknownTypeError – if a type argument fails to parse
OpenDPException – packaged error from the core OpenDP library