code: def __change_threshold(self, istyle, obj, slider):
      value = int(np.rint(slider.value))
      if value != self.__selected_threshold:
          self.__visualizer.recluster_tractograms(value)
  
          sizes = self.__visualizer.sizes
          self.__selected_size = np.percentile(sizes, 50)
  
          lengths = self.__visualizer.lengths
          self.__selected_length = np.percentile(lengths, 25)
  
          self.__update_clusters()
  
          # Updating size slider
          self.__slider_size.min_value = np.min(sizes)
          self.__slider_size.max_value = np.percentile(sizes, 98)
          self.__slider_size.value = self.__selected_size
          self.__slider_size.update()
  
          # Updating length slider
          self.__slider_length.min_value = np.min(lengths)
          self.__slider_length.max_value = np.percentile(lengths, 98)
          self.__slider_length.value = self.__selected_length
          self.__slider_length.update()
  
          self.__selected_threshold = value
          istyle.force_render()
  
file_path: dipy/dipy/viz/horizon/tab/cluster.py
imports: import numpy
  from dipy.utils.optpkg import optional_package
  from dipy.viz.horizon.tab import HorizonTab, build_label, color_single_slider
label_desc: Use image node_id 4 for calling the ClustersTab obj's underlying member method code with example usage: obj.__change_threshold(istyle, obj, slider) without return types