code: def test_NAN():
      """Regression test of IMG-762
  
      If objects have NAN values, the means are NAN and the
      z-factors are NAN too.
      """
      mdict = {
          "Image": {
              "Metadata_Controls": [1, 0, -1],
              "Metadata_Doses": [0, 0.5, 1],
          },
          INPUT_OBJECTS: {
              TEST_FTR: [
                  numpy.array([1.0, numpy.NaN, 2.3, 3.4, 2.9]),
                  numpy.array([5.3, 2.4, numpy.NaN, 3.2]),
                  numpy.array([numpy.NaN, 3.1, 4.3, 2.2, 1.1, 0.1]),
              ]
          },
      }
      workspace, module = make_workspace(
          mdict, "Metadata_Controls", ["Metadata_Doses"]
      )
      module.post_run(workspace)
      m = workspace.measurements
      assert isinstance(m, cellprofiler_core.measurement.Measurements)
      for category in ("Zfactor", "OneTailedZfactor", "Vfactor"):
          feature = "_".join((category, INPUT_OBJECTS, TEST_FTR))
          value = m.get_experiment_measurement(feature)
          assert not numpy.isnan(value)
  
file_path: CellProfiler/tests/frontend/modules/test_calculatestatistics.py
imports: import os
  import tempfile
  import numpy
  import six.moves
  import cellprofiler_core.image
  import cellprofiler_core.measurement
  import cellprofiler.modules.calculatestatistics
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.preferences
  import cellprofiler_core.setting
  import cellprofiler_core.workspace
  import tests.frontend.modules
label_desc: Use image node_id 3 for calling a global function with example usage: test_NAN() without return types