class_docstr: Performs utility analysis for DP aggregations.
  
  This class reuses the computation graph from the DP computation code by
  subclassing from pipeline_dp.DPEngine and by replacing some nodes of the
  computational graph from DP computation to analysis.
class_docstr_tok: ["Performs","utility","analysis","for","DP","aggregations",".","This","class","reuses","the","computation","graph","from","the","DP","computation","code","by","subclassing","from","pipeline_dp.DPEngine","and","by","replacing","some","nodes","of","the","computational","graph","from","DP","computation","to","analysis","."]
docstr: Performs utility analysis for DP aggregations per partition.
  
  Args:
    col: collection where all elements are of the same type.
    options: options for utility analysis.
    data_extractors: functions that extract needed pieces of information
      from elements of 'col'. In case if the analysis performed on
      pre-aggregated data, it should have type PreAggregateExtractors
      otherwise DataExtractors.
    public_partitions: A collection of partition keys that will be present
      in the result. If not provided, the utility analysis with private
      partition selection will be performed.
  
  Returns:
    A collection with elements (partition_key, utility analysis metrics).
docstr_tok: ["Performs","utility","analysis","for","DP","aggregations","per","partition",".","Args",":","col",":","collection","where","all","elements","are","of","the","same","type",".","options",":","options","for","utility","analysis",".","data_extractors",":","functions","that","extract","needed","pieces","of","information","from","elements","of","'col","'",".","In","case","if","the","analysis","performed","on","pre-aggregated","data",",","it","should","have","type","PreAggregateExtractors","otherwise","DataExtractors",".","public_partitions",":","A","collection","of","partition","keys","that","will","be","present","in","the","result",".","If","not","provided",",","the","utility","analysis","with","private","partition","selection","will","be","performed",".","Returns",":","A","collection","with","elements","(","partition_key",",","utility","analysis","metrics",")","."]
code: def analyze(
      self,
      col,
      options: analysis.UtilityAnalysisOptions,
      data_extractors: Union[
          pipeline_dp.DataExtractors, pipeline_dp.PreAggregateExtractors
      ],
      public_partitions=None,
  ):
      """Performs utility analysis for DP aggregations per partition.
  
      Args:
        col: collection where all elements are of the same type.
        options: options for utility analysis.
        data_extractors: functions that extract needed pieces of information
          from elements of 'col'. In case if the analysis performed on
          pre-aggregated data, it should have type PreAggregateExtractors
          otherwise DataExtractors.
        public_partitions: A collection of partition keys that will be present
          in the result. If not provided, the utility analysis with private
          partition selection will be performed.
  
      Returns:
        A collection with elements (partition_key, utility analysis metrics).
      """
      _check_utility_analysis_params(options, data_extractors)
      self._options = options
      self._is_public_partitions = public_partitions is not None
  
      # Build the computation graph from the parent class by calling
      # aggregate().
      self._add_report_generator(options.aggregate_params, "analyze")
      result = super()._aggregate(
          col,
          options.aggregate_params,
          data_extractors,
          public_partitions,
      )
  
      self._is_public_partitions = None
      self._options = None
      return result
  
imports: import copy
  from typing import Optional, Union
  import pipeline_dp
  from pipeline_dp import budget_accounting
  from pipeline_dp import combiners
  from pipeline_dp import contribution_bounders
  from pipeline_dp import pipeline_backend
  import analysis
  import analysis.contribution_bounders
  from analysis import per_partition_combiners
  from analysis import data_structures
label_desc: Use image node_id 3 for calling the UtilityAnalysisEngine obj's underlying member method code with example usage: obj.analyze(col, options, data_extractors, public_partitions) and returns: result