code: def test_image_conditioning_py_callback(self):
      model = mock.Mock()
      model.embed_image = mock.Mock(
          return_value=(None, None, np.zeros((2, 4)))
      )
      model.embed_image_query = mock.Mock(
          return_value=(np.zeros(512), np.zeros((), dtype=np.int32))
      )
      model.get_scores = mock.Mock(
          return_value=(np.array([0, 1]), np.array([0.9, 0.0]))
      )
  
      out = interactive._image_conditioning_py_callback(
          {"x0": 0.1, "x1": 0.2, "y0": 0.3, "y1": 0.4},
          model=model,
          query_image=np.zeros((128, 64, 3), dtype=np.uint8),
          target_image=np.zeros((128, 128, 3), dtype=np.uint8),
      )
  
      expected_out = (
          '{"color_updates": [[0, "#ff0003ff"], [1, "#008cff00"]], '
          '"selected_box": {"x": 0.0, "y": 0.0, "w": 0.0, "h": 0.0}}'
      )
  
      self.assertEqual(out, expected_out)
  
file_path: scenic/scenic/projects/owl_vit/notebooks/tests/interactive_test.py
imports: from unittest import mock
  from absl.testing import absltest
  from bokeh.models import callbacks
  import numpy
  from scenic.projects.owl_vit.notebooks import interactive
label_desc: Use image node_id 3 for calling the InteractiveTest obj's underlying member method code with example usage: obj.test_image_conditioning_py_callback() without return types