def test_load_objects(): r = numpy.random.RandomState() r.seed(1101) labels = r.randint(0, 10, size=(30, 20)).astype(numpy.uint8) handle, name = tempfile.mkstemp(".png") bioformats.write_image(name, labels, bioformats.PT_UINT8) os.close(handle) png_path, png_file = os.path.split(name) sbs_dir = os.path.join(tests.modules.example_images_directory(), "ExampleSBSImages") csv_text = """%s_%s,%s_%s,%s_DNA,%s_DNA %s,%s,Channel2-01-A-01.tif,%s """ % ( cellprofiler_core.measurement.C_OBJECTS_FILE_NAME, OBJECTS_NAME, cellprofiler_core.measurement.C_OBJECTS_PATH_NAME, OBJECTS_NAME, cellprofiler_core.measurement.C_FILE_NAME, cellprofiler_core.measurement.C_PATH_NAME, png_file, png_path, sbs_dir, ) pipeline, module, csv_name = make_pipeline(csv_text) assert isinstance(pipeline, cellprofiler_core.pipeline.Pipeline) assert isinstance(module, cellprofiler.modules.loaddata.LoadData) module.wants_images.value = True try: image_set_list = cellprofiler_core.image.ImageSetList() measurements = cellprofiler_core.measurement.Measurements() workspace = cellprofiler_core.workspace.Workspace( pipeline, module, None, None, measurements, image_set_list) pipeline.prepare_run(workspace) key_names, g = pipeline.get_groupings(workspace) assert len(g) == 1 module.prepare_group(workspace, g[0][0], g[0][1]) image_set = image_set_list.get_image_set(g[0][1][0] - 1) object_set = cellprofiler_core.object.ObjectSet() workspace = cellprofiler_core.workspace.Workspace( pipeline, module, image_set, object_set, measurements, image_set_list) module.run(workspace) objects = object_set.get_objects(OBJECTS_NAME) assert numpy.all(objects.segmented == labels) assert (measurements.get_current_image_measurement( cellprofiler_core.measurement.FF_COUNT % OBJECTS_NAME) == 9) for feature in ( cellprofiler_core.measurement.M_LOCATION_CENTER_X, cellprofiler_core.measurement.M_LOCATION_CENTER_Y, cellprofiler_core.measurement.M_NUMBER_OBJECT_NUMBER, ): value = measurements.get_current_measurement(OBJECTS_NAME, feature) assert len(value) == 9 finally: bioformats.formatreader.clear_image_reader_cache() os.remove(name) os.remove(csv_name)
def test_divide_with_clip(): """Test correction by division""" numpy.random.seed(0) image = numpy.random.uniform(size=(10, 10)).astype(numpy.float32) illum = numpy.random.uniform(size=(10, 10)).astype(numpy.float32) expected = image / illum expected = numpy.where(expected < 0, 0, expected) expected = numpy.where(expected > 1, 1, expected) pipeline = cellprofiler_core.pipeline.Pipeline() pipeline.add_listener(error_callback) input_module = cellprofiler_core.modules.injectimage.InjectImage( "InputImage", image ) input_module.set_module_num(1) pipeline.add_module(input_module) illum_module = cellprofiler_core.modules.injectimage.InjectImage( "IllumImage", illum ) illum_module.set_module_num(2) pipeline.add_module(illum_module) module = cellprofiler.modules.correctilluminationapply.CorrectIlluminationApply() module.set_module_num(3) pipeline.add_module(module) image = module.images[0] image.image_name.value = "InputImage" image.illum_correct_function_image_name.value = "IllumImage" image.corrected_image_name.value = "OutputImage" image.divide_or_subtract.value = ( cellprofiler.modules.correctilluminationapply.DOS_DIVIDE ) image.rescale_option = cellprofiler.modules.correctilluminationapply.RE_NONE image_set_list = cellprofiler_core.image.ImageSetList() measurements = cellprofiler_core.measurement.Measurements() workspace = cellprofiler_core.workspace.Workspace( pipeline, None, None, None, measurements, image_set_list ) pipeline.prepare_run(workspace) input_module.prepare_group(workspace, {}, [1]) illum_module.prepare_group(workspace, {}, [1]) module.prepare_group(workspace, {}, [1]) image_set = image_set_list.get_image_set(0) object_set = cellprofiler_core.object.ObjectSet() workspace = cellprofiler_core.workspace.Workspace( pipeline, input_module, image_set, object_set, measurements, image_set_list ) input_module.run(workspace) illum_module.run(workspace) module.run(workspace) output_image = workspace.image_set.get_image("OutputImage") assert numpy.all(output_image.pixel_data == expected)
def test_color_by_bw(): """Correct a color image with a black & white illumination fn""" numpy.random.seed(0) image = numpy.random.uniform(size=(10, 10, 3)).astype(numpy.float32) illum = numpy.random.uniform(size=(10, 10)).astype(numpy.float32) expected = image - illum[:, :, numpy.newaxis] expected[expected < 0] = 0 pipeline = cellprofiler_core.pipeline.Pipeline() pipeline.add_listener(error_callback) input_module = cellprofiler_core.modules.injectimage.InjectImage( "InputImage", image ) input_module.set_module_num(1) pipeline.add_module(input_module) illum_module = cellprofiler_core.modules.injectimage.InjectImage( "IllumImage", illum ) illum_module.set_module_num(2) pipeline.add_module(illum_module) module = cellprofiler.modules.correctilluminationapply.CorrectIlluminationApply() module.set_module_num(3) pipeline.add_module(module) image = module.images[0] image.image_name.value = "InputImage" image.illum_correct_function_image_name.value = "IllumImage" image.corrected_image_name.value = "OutputImage" image.divide_or_subtract.value = ( cellprofiler.modules.correctilluminationapply.DOS_SUBTRACT ) image.rescale_option = cellprofiler.modules.correctilluminationapply.RE_NONE measurements = cellprofiler_core.measurement.Measurements() image_set_list = cellprofiler_core.image.ImageSetList() measurements = cellprofiler_core.measurement.Measurements() workspace = cellprofiler_core.workspace.Workspace( pipeline, None, None, None, measurements, image_set_list ) pipeline.prepare_run(workspace) input_module.prepare_group(workspace, {}, [1]) illum_module.prepare_group(workspace, {}, [1]) module.prepare_group(workspace, {}, [1]) image_set = image_set_list.get_image_set(0) object_set = cellprofiler_core.object.ObjectSet() workspace = cellprofiler_core.workspace.Workspace( pipeline, input_module, image_set, object_set, measurements, image_set_list ) input_module.run(workspace) illum_module.run(workspace) module.run(workspace) output_image = workspace.image_set.get_image("OutputImage") assert numpy.all(output_image.pixel_data == expected)