示例#1
0
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)
示例#2
0
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)
示例#3
0
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)