class_docstr: Implements DPQuery for discrete Gaussian sum queries.
  
  For each local record, we check the L2 norm bound and add discrete Gaussian
  noise. In particular, this DPQuery does not perform L2 norm clipping and the
  norms of the input records are expected to be bounded.
docstr: Adds discrete Gaussian noise to the aggregate.
code: def get_noised_result(self, sample_state, global_state):
      """Adds discrete Gaussian noise to the aggregate."""
      # Round up the noise as the TF discrete Gaussian sampler only takes
      # integer noise stddevs for now.
      ceil_stddev = tf.cast(tf.math.ceil(global_state.stddev), tf.int32)
  
      def add_noise(v):
          noised_v = (
              v
              + discrete_gaussian_utils.sample_discrete_gaussian(
                  scale=ceil_stddev, shape=tf.shape(v), dtype=v.dtype
              )
          )
          # Ensure shape as TF shape inference may fail due to custom noise sampler.
          return tf.ensure_shape(noised_v, v.shape)
  
      result = tf.nest.map_structure(add_noise, sample_state)
      event = dp_accounting.UnsupportedDpEvent()
      return result, global_state, event
  
file_path: privacy/tensorflow_privacy/privacy/dp_query/discrete_gaussian_query.py
imports: import collections
  import dp_accounting
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import discrete_gaussian_utils
  from tensorflow_privacy.privacy.dp_query import dp_query
label_desc: Use image node_id 5 for calling the DiscreteGaussianSumQuery obj's underlying member method code with example usage: obj.get_noised_result(sample_state, global_state) and returns: result,  global_state,  event, tf