code: def test_adaptation_linspace(self, start_low, geometric):
      # `num_records` records equally spaced from 0 to 10 in 0.1 increments.
      # Test that we converge to the correct median value and bounce around it.
      num_records = 21
      records = [
          tf.constant(x)
          for x in np.linspace(
              0.0, 10.0, num=num_records, dtype=np.float32
          )
      ]
  
      query = (
          quantile_adaptive_clip_sum_query.QuantileAdaptiveClipSumQuery(
              initial_l2_norm_clip=(1.0 if start_low else 10.0),
              noise_multiplier=0.0,
              target_unclipped_quantile=0.5,
              learning_rate=1.0,
              clipped_count_stddev=0.0,
              expected_num_records=num_records,
              geometric_update=geometric,
          )
      )
  
      global_state = query.initial_global_state()
  
      for t in range(50):
          _, global_state = test_utils.run_query(
              query, records, global_state
          )
  
          actual_clip = global_state.sum_state.l2_norm_clip
  
          if t > 40:
              self.assertNear(actual_clip, 5.0, 0.25)
  
file_path: privacy/tensorflow_privacy/privacy/dp_query/quantile_adaptive_clip_sum_query_test.py
imports: from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import quantile_adaptive_clip_sum_query
  from tensorflow_privacy.privacy.dp_query import test_utils
label_desc: Use image node_id 8 for calling the QuantileAdaptiveClipSumQueryTest obj's underlying member method code with example usage: obj.test_adaptation_linspace(start_low, geometric) without return types