code: def test_linspace(self, exact, start_low, geometric, tree):
      # 100 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 = _make_quantile_estimator_query(
          initial_estimate=(1.0 if start_low else 10.0),
          target_quantile=0.5,
          learning_rate=1.0,
          below_estimate_stddev=(0.0 if exact else 1e-2),
          expected_num_records=(None if exact else num_records),
          geometric_update=geometric,
          tree_aggregation=tree,
      )
  
      global_state = query.initial_global_state()
  
      for t in range(50):
          _, global_state = test_utils.run_query(
              query, records, global_state
          )
  
          actual_estimate = global_state.current_estimate
  
          if t > 40:
              self.assertNear(actual_estimate, 5.0, 0.25)
  
file_path: privacy/tensorflow_privacy/privacy/dp_query/quantile_estimator_query_test.py
imports: from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import quantile_estimator_query
  from tensorflow_privacy.privacy.dp_query import test_utils
label_desc: Use image node_id 5 for calling the QuantileEstimatorQueryTest obj's underlying member method code with example usage: obj.test_linspace(exact, start_low, geometric, tree) without return types