Пример #1
0
def test_grid_automatic():
    image = np.zeros((50, 100))
    labels = np.zeros((50, 100), int)
    ii, jj = np.mgrid[0:50, 0:100]
    #
    # Make two circles at 10,11 and 40, 92
    #
    first_x, first_y = (11, 10)
    second_x, second_y = (92, 40)
    rows = 4
    columns = 10
    spacing_y = 10
    spacing_x = 9
    for i in range(rows):
        for j in range(columns):
            center_i = first_y + spacing_y * i
            center_j = first_x + spacing_x * j
            labels[(ii - center_i)**2 +
                   (jj - center_j)**2 <= 9] = (i * columns + j + 1)
    workspace, module = make_workspace(image, labels)
    assert isinstance(module, cellprofiler.modules.definegrid.DefineGrid)
    assert isinstance(workspace, cellprofiler_core.workspace.Workspace)
    module.grid_rows.value = rows
    module.grid_columns.value = columns
    module.ordering.value = cellprofiler.modules.definegrid.NUM_BY_COLUMNS
    module.auto_or_manual.value = cellprofiler.modules.definegrid.AM_AUTOMATIC
    module.wants_image.value = True
    module.run(workspace)
    gridding = workspace.get_grid(GRID_NAME)
    assert isinstance(gridding, cellprofiler.grid.Grid)
    assert gridding.rows == rows
    assert gridding.columns == columns
    assert gridding.x_spacing == spacing_x
    assert gridding.y_spacing == spacing_y
    assert gridding.x_location_of_lowest_x_spot == first_x
    assert gridding.y_location_of_lowest_y_spot == first_y
    assert np.all(gridding.x_locations == first_x +
                  np.arange(columns) * spacing_x)
    assert np.all(gridding.y_locations == first_y +
                  np.arange(rows) * spacing_y)
    spot_table = np.arange(rows * columns) + 1
    spot_table.shape = (rows, columns)
    assert np.all(gridding.spot_table == spot_table)

    m = workspace.measurements
    assert isinstance(m, cellprofiler_core.measurement.Measurements)
    for feature, value in (
        (cellprofiler.modules.definegrid.F_COLUMNS, columns),
        (cellprofiler.modules.definegrid.F_ROWS, rows),
        (cellprofiler.modules.definegrid.F_X_LOCATION_OF_LOWEST_X_SPOT,
         first_x),
        (cellprofiler.modules.definegrid.F_Y_LOCATION_OF_LOWEST_Y_SPOT,
         first_y),
        (cellprofiler.modules.definegrid.F_X_SPACING, spacing_x),
        (cellprofiler.modules.definegrid.F_Y_SPACING, spacing_y),
    ):
        measurement = "_".join(
            (cellprofiler.modules.definegrid.M_CATEGORY, GRID_NAME, feature))
        assert m.has_feature("Image", measurement)
        assert m.get_current_image_measurement(measurement) == value

    image = workspace.image_set.get_image(OUTPUT_IMAGE_NAME)
    assert image is not None
Пример #2
0
def test_coordinates_plus_savedimagesize():
    image = np.zeros((50, 100))
    labels = np.zeros((50, 100), int)
    first_x, first_y = (11, 10)
    second_x, second_y = (92, 40)
    rows = 4
    columns = 10
    spacing_y = 10
    spacing_x = 9
    workspace, module = make_workspace(image, labels)
    assert isinstance(module, cellprofiler.modules.definegrid.DefineGrid)
    assert isinstance(workspace, cellprofiler_core.workspace.Workspace)
    module.grid_rows.value = rows
    module.grid_columns.value = columns
    module.ordering.value = cellprofiler.modules.definegrid.NUM_BY_COLUMNS
    module.auto_or_manual.value = cellprofiler.modules.definegrid.AM_MANUAL
    module.manual_choice.value = cellprofiler.modules.definegrid.MAN_COORDINATES
    module.first_spot_coordinates.value = "%d,%d" % (first_x, first_y)
    module.second_spot_coordinates.value = "%d,%d" % (second_x, second_y)
    module.first_spot_col.value = 1
    module.first_spot_row.value = 1
    module.second_spot_col.value = columns
    module.second_spot_row.value = rows
    module.grid_rows.value = rows
    module.grid_columns.value = columns
    module.wants_image.value = True
    module.run(workspace)
    gridding = workspace.get_grid(GRID_NAME)
    assert isinstance(gridding, cellprofiler.grid.Grid)
    assert gridding.rows == rows
    assert gridding.columns == columns
    assert gridding.x_spacing == spacing_x
    assert gridding.y_spacing == spacing_y
    assert gridding.x_location_of_lowest_x_spot == first_x
    assert gridding.y_location_of_lowest_y_spot == first_y
    assert np.all(gridding.x_locations == first_x +
                  np.arange(columns) * spacing_x)
    assert np.all(gridding.y_locations == first_y +
                  np.arange(rows) * spacing_y)
    spot_table = np.arange(rows * columns) + 1
    spot_table.shape = (rows, columns)
    assert np.all(gridding.spot_table == spot_table)

    m = workspace.measurements
    assert isinstance(m, cellprofiler_core.measurement.Measurements)
    for feature, value in (
        (cellprofiler.modules.definegrid.F_COLUMNS, columns),
        (cellprofiler.modules.definegrid.F_ROWS, rows),
        (cellprofiler.modules.definegrid.F_X_LOCATION_OF_LOWEST_X_SPOT,
         first_x),
        (cellprofiler.modules.definegrid.F_Y_LOCATION_OF_LOWEST_Y_SPOT,
         first_y),
        (cellprofiler.modules.definegrid.F_X_SPACING, spacing_x),
        (cellprofiler.modules.definegrid.F_Y_SPACING, spacing_y),
    ):
        measurement = "_".join(
            (cellprofiler.modules.definegrid.M_CATEGORY, GRID_NAME, feature))
        assert m.has_feature("Image", measurement)
        assert m.get_current_image_measurement(measurement) == value

    image = workspace.image_set.get_image(OUTPUT_IMAGE_NAME)
    assert image is not None
    shape = image.pixel_data.shape
    assert shape[0] == 50
    assert shape[1] == 100