code: def test_circle_model_estimate():
      # generate original data without noise
      model0 = CircleModel()
      model0.params = (10, 12, 3)
      t = np.linspace(0, 2 * np.pi, 1000)
      data0 = model0.predict_xy(t)
  
      # add gaussian noise to data
      rng = np.random.default_rng(1234)
      data = data0 + rng.normal(size=data0.shape)
  
      # estimate parameters of noisy data
      model_est = CircleModel()
      model_est.estimate(data)
  
      # test whether estimated parameters almost equal original parameters
      assert_almost_equal(model0.params, model_est.params, 0)
  
imports: import numpy
  import pytest
  from skimage._shared import testing
  from skimage._shared._warnings import expected_warnings
  from skimage._shared.testing import arch32, assert_almost_equal, assert_array_less, assert_equal, xfail
  from skimage.measure import CircleModel, EllipseModel, LineModelND, ransac
  from skimage.measure.fit import _dynamic_max_trials
  from skimage.transform import AffineTransform
label_desc: Use image node_id 8 for calling a global function with example usage: test_circle_model_estimate() without return types