class_docstr: Manages the privacy budget for privacy loss distributions.
  
  It manages the privacy budget for the pipeline using the
  Privacy Loss Distribution (PLD) implementation from Google's
  dp_accounting library.
  
  This class is experimental. It is not yet compatible with DPEngine.
class_docstr_tok: ["Manages","the","privacy","budget","for","privacy","loss","distributions",".","It","manages","the","privacy","budget","for","the","pipeline","using","the","Privacy","Loss","Distribution","(","PLD",")","implementation","from","Google's","dp_accounting","library",".","This","class","is","experimental",".","It","is","not","yet","compatible","with","DPEngine","."]
docstr: Finds the minimum noise which satisfies the total budget.
  
  Use binary search to find a minimum noise value that gives a
  new epsilon close to the given epsilon (within a threshold).
  By increasing the noise we can decrease the epsilon.
  
  Returns:
      The noise value adjusted for the given epsilon.
docstr_tok: ["Finds","the","minimum","noise","which","satisfies","the","total","budget",".","Use","binary","search","to","find","a","minimum","noise","value","that","gives","a","new","epsilon","close","to","the","given","epsilon","(","within","a","threshold",")",".","By","increasing","the","noise","we","can","decrease","the","epsilon",".","Returns",":","The","noise","value","adjusted","for","the","given","epsilon","."]
code: def _find_minimum_noise_std(self) -> float:
      """Finds the minimum noise which satisfies the total budget.
  
      Use binary search to find a minimum noise value that gives a
      new epsilon close to the given epsilon (within a threshold).
      By increasing the noise we can decrease the epsilon.
  
      Returns:
          The noise value adjusted for the given epsilon.
      """
      threshold = 1e-4
      maximum_noise_std = self._calculate_max_noise_std()
      low, high = 0, maximum_noise_std
      while low + threshold < high:
          mid = (high - low) / 2 + low
          pld = self._compose_distributions(mid)
          pld_epsilon = pld.get_epsilon_for_delta(self._total_delta)
          if pld_epsilon <= self._total_epsilon:
              high = mid
          elif pld_epsilon > self._total_epsilon:
              low = mid
  
      return high
  
imports: import abc
  import collections
  import logging
  import math
  from typing import Optional
  from dataclasses import dataclass
  import pipeline_dp.aggregate_params
  from pipeline_dp import input_validators
label_desc: Use image node_id 4 for calling the PLDBudgetAccountant obj's underlying member method code with example usage: obj._find_minimum_noise_std() and returns: high