code: def describe_read_support(channels: List[np.ndarray]) -> ReadSupport:
      """Calculates read support and describes it categorically.
  
      Computes read support as a fraction and returns a convenient descriptive term
      according to the following thresholds: LOW is [0, 0.3], HALF is (0.3, 0.8],
      and ALL is (0.8, 1].
  
      Args:
          channels: A list of channels of a DeepVariant pileup image. This only uses
            channels[4], the 'read supports variant' channel.
  
      Returns:
          A ReadSupport value.
      """
      fraction_support = fraction_read_support(channels)
      if fraction_support > 0.8:
          return ReadSupport.ALL
      elif fraction_support > 0.3:
          return ReadSupport.HALF
      else:
          return ReadSupport.LOW
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import enum
  import math
  from typing import List, NamedTuple, Tuple
  from etils import epath
  from IPython import display
  import numpy
  from PIL import Image
  from PIL import ImageDraw
  from third_party.nucleus.protos import variants_pb2
label_desc: Use image node_id 24 for calling a global function with example usage: describe_read_support(channels) and returns: ReadSupport, ReadSupport, ReadSupport