code: def binary_tteesstt(
      function_name,
      function,
      gray_out=False,
      scale=None,
      custom_repeats=None,
  ):
      numpy.random.seed(list(map(ord, function_name)))
      input = numpy.random.uniform(size=(20, 20)) > 0.7
      output = execute(
          input,
          function_name,
          scale=scale,
          custom_repeats=custom_repeats,
      )
      if scale is None:
          expected = function(input)
      else:
          footprint = centrosome.cpmorphology.strel_disk(
              float(scale) / 2.0
          )
          expected = function(input, footprint=footprint)
      if not gray_out:
          expected = expected > 0
          assert numpy.all(output == expected)
      else:
          assert numpy.all(
              numpy.abs(output - expected)
              < numpy.finfo(numpy.float32).eps
          )
  
imports: import io
  import centrosome.cpmorphology
  import centrosome.filter
  import numpy
  import pytest
  import scipy.ndimage
  import cellprofiler_core.image
  import cellprofiler_core.measurement
  import cellprofiler.modules.morph
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.setting
  import cellprofiler_core.workspace
  import tests.frontend.modules
label_desc: Use image node_id 4 for calling a global function with example usage: binary_tteesstt(function_name, function, gray_out, scale, custom_repeats) without return types