code: def __apply_shader(self, dict_element):
      decl = """
              uniform float selected;
              """
  
      impl = """
              if (selected == 1)
              {
                  fragOutput0 += vec4(.2, .2, .2, 0);
              }
              """
      shader_to_actor(dict_element["actor"], "fragment", decl_code=decl)
      shader_to_actor(
          dict_element["actor"],
          "fragment",
          impl_code=impl,
          block="light",
      )
  
      @calldata_type(VTK_OBJECT)
      def uniform_selected_callback(caller, event, calldata=None):
          program = calldata
          if program is not None:
              program.SetUniformf("selected", dict_element["selected"])
  
      add_shader_callback(
          dict_element["actor"], uniform_selected_callback, priority=100
      )
  
file_path: dipy/dipy/viz/horizon/visualizer/cluster.py
imports: import numpy
  from dipy.segment.clustering import qbx_and_merge
  from dipy.tracking.streamline import length
  from dipy.utils.optpkg import optional_package
label_desc: Use image node_id 2 for calling the ClustersVisualizer obj's underlying member method code with example usage: obj.__apply_shader(dict_element) without return types