Measurement Constructors#
This section gives a highlevel overview of the measurements that are available in the library. Refer to the Measurement section for an explanation of what a measurement is.
As covered in the Chaining section, the intermediate domains and metrics need to match when chaining. This means you will need to choose a measurement that chains with your aggregator.
In the following table, the scalarvalued and vectorvalued versions of each measurement are listed separately.
You can choose whether to construct scalar or vectorvalued versions by setting the D
type argument when calling the constructor.
 Scalar:
D=AllDomain[T]
(default) Vector:
D=VectorDomain[AllDomain[T]]
Measurement 
Input Domain 
Output Metric 
Output Measure 




























FloatingPoint#
Given the context of measurements, this section goes into greater detail than Limitations on floatingpoint issues.
Be warned that opendp.meas.make_base_laplace()
, opendp.meas.make_base_gaussian()
and opendp.meas.make_base_stability()
depend on continuous distributions that are poorly approximated by finite computers.
At this time these mechanisms are present in the library, but require explicit optin:
>>> from opendp.mod import enable_features
>>> enable_features("floatingpoint")
The canonical paper on this and introduction of the snapping mechanism is here: On Significance of the Least Significant Bits For Differential Privacy.
Precautions have been made to sample noise using the MPFR library, to avoid artifacts in noise, but our noise postprocessing reintroduces artifacts. We are developing alternative mechanisms for answering continuous queries.
We acknowledge the snapping mechanism and have an implementation of it in PR #84.
We are also working towards adding support for fixedpoint data types in PR #184.