Exemplo n.º 1
0
def test_group_on_two():
    groups, workspace = make_image_sets(
        (
            ("Plate", ("P-12345", "P-23456")),
            ("Well", ("A01", "A02", "A03")),
            ("Site", ("1", "2", "3", "4")),
        ),
        (
            (
                "DNA",
                "Wavelength",
                "1",
                cellprofiler.pipeline.Pipeline.ImageSetChannelDescriptor.
                CT_GRAYSCALE,
            ),
            (
                "GFP",
                "Wavelength",
                "1",
                cellprofiler.pipeline.Pipeline.ImageSetChannelDescriptor.
                CT_GRAYSCALE,
            ),
        ),
    )
    groups.wants_groups.value = True
    groups.grouping_metadata[0].metadata_choice.value = "Plate"
    groups.add_grouping_metadata()
    groups.grouping_metadata[1].metadata_choice.value = "Site"
    assert groups.prepare_run(workspace)
    m = workspace.measurements
    assert isinstance(m, cellprofiler.measurement.Measurements)
    image_numbers = m.get_image_numbers()

    pipeline = workspace.pipeline
    assert isinstance(pipeline, cellprofiler.pipeline.Pipeline)
    key_list, groupings = pipeline.get_groupings(workspace)
    assert len(key_list) == 2
    assert key_list[0] == "Metadata_Plate"
    assert key_list[1] == "Metadata_Site"
    assert len(groupings) == 8

    idx = 0
    for plate in ("P-12345", "P-23456"):
        for site in ("1", "2", "3", "4"):
            grouping, image_set_list = groupings[idx]
            idx += 1
            assert grouping["Metadata_Plate"] == plate
            assert grouping["Metadata_Site"] == site
            assert len(image_set_list) == 3
            ftr = "_".join((cellprofiler.measurement.C_FILE_NAME, "DNA"))
            for image_number in image_set_list:
                file_name = m[cellprofiler.measurement.IMAGE, ftr,
                              image_number]
                p, w, s, rest = file_name.split("_")
                assert p == plate
                assert s == site
Exemplo n.º 2
0
def test_compute_no_groups():
    groups, workspace = make_image_sets(
        (
            ("Plate", ("P-12345", "P-23456")),
            ("Well", ("A01", "A02", "A03")),
            ("Site", ("1", "2", "3", "4")),
        ),
        (
            (
                "DNA",
                "Wavelength",
                "1",
                cellprofiler.pipeline.Pipeline.ImageSetChannelDescriptor.CT_GRAYSCALE,
            ),
            (
                "GFP",
                "Wavelength",
                "1",
                cellprofiler.pipeline.Pipeline.ImageSetChannelDescriptor.CT_GRAYSCALE,
            ),
        ),
    )
    groups = cellprofiler.modules.groups.Groups()
    groups.wants_groups.value = False
    m = workspace.measurements
    assert isinstance(m, cellprofiler.measurement.Measurements)
    image_numbers = m.get_image_numbers()
    expected_file_names = m[
        cellprofiler.measurement.IMAGE,
        cellprofiler.measurement.C_FILE_NAME + "_" + "DNA",
        image_numbers,
    ]
    assert groups.prepare_run(workspace)
    assert len(image_numbers) == 2 * 3 * 4
    output_file_names = m[
        cellprofiler.measurement.IMAGE,
        cellprofiler.measurement.C_FILE_NAME + "_" + "DNA",
        image_numbers,
    ]
    assert list(expected_file_names) == list(output_file_names)
Exemplo n.º 3
0
def test_group_on_one():
    groups = cellprofiler.modules.groups.Groups()
    groups, workspace = make_image_sets(
        (
            ("Plate", ("P-12345", "P-23456")),
            ("Well", ("A01", "A02", "A03")),
            ("Site", ("1", "2", "3", "4")),
        ),
        (
            (
                "DNA",
                "Wavelength",
                "1",
                cellprofiler.pipeline.Pipeline.ImageSetChannelDescriptor.CT_GRAYSCALE,
            ),
            (
                "GFP",
                "Wavelength",
                "1",
                cellprofiler.pipeline.Pipeline.ImageSetChannelDescriptor.CT_GRAYSCALE,
            ),
        ),
    )
    groups.wants_groups.value = True
    groups.grouping_metadata[0].metadata_choice.value = "Plate"
    groups.prepare_run(workspace)
    m = workspace.measurements
    assert isinstance(m, cellprofiler.measurement.Measurements)
    image_numbers = m.get_image_numbers()
    assert len(image_numbers) == 24
    numpy.testing.assert_array_equal(
        numpy.hstack([numpy.ones(12, int), numpy.ones(12, int) * 2]),
        m[
            cellprofiler.measurement.IMAGE,
            cellprofiler.measurement.GROUP_NUMBER,
            image_numbers,
        ],
    )
    numpy.testing.assert_array_equal(
        numpy.hstack([numpy.arange(1, 13)] * 2),
        m[
            cellprofiler.measurement.IMAGE,
            cellprofiler.measurement.GROUP_INDEX,
            image_numbers,
        ],
    )

    pipeline = workspace.pipeline
    assert isinstance(pipeline, cellprofiler.pipeline.Pipeline)
    key_list, groupings = pipeline.get_groupings(workspace)
    assert len(key_list) == 1
    assert key_list[0] == "Metadata_Plate"
    assert len(groupings) == 2

    for group_number, plate, (grouping, image_set_list) in zip(
        (1, 2), ("P-12345", "P-23456"), groupings
    ):
        assert grouping == dict(Metadata_Plate=plate)
        assert len(image_set_list) == 3 * 4
        assert list(image_set_list) == list(
            range((group_number - 1) * 12 + 1, group_number * 12 + 1)
        )
        for image_number in range(1 + (group_number - 1) * 12, 1 + group_number * 12):
            for image_name in ("DNA", "GFP"):
                ftr = "_".join((cellprofiler.measurement.C_FILE_NAME, image_name))
                assert m[cellprofiler.measurement.IMAGE, ftr, image_number].startswith(
                    plate
                )