Exemple #1
0
def test_target_assignment_point_in_poly_2d_points_outside_of_cells():
    """Create a set of intensities where no points fall into cells"""

    n = 10
    diagonal_intensities, regions = bifurcated_regions(n)
    diagonal_intensities[
        Indices.X.value] += 50  # now all x-values lie outside cell regions
    ta = TargetAssignment.PointInPoly2D()

    assigned_intensities = ta.run(diagonal_intensities, regions)

    assert np.array_equal(assigned_intensities[Features.CELL_ID].values,
                          np.full(n, fill_value=None, dtype=object))
Exemple #2
0
def test_target_assignment_point_in_poly_2d_all_points_in_cells():
    """Create a set of intensities where all points lie inside the defined cell regions"""

    diagonal_intensities, regions = bifurcated_regions(10)
    ta = TargetAssignment.PointInPoly2D()

    assigned_intensities = ta.run(diagonal_intensities, regions)

    target_counts = pd.Series(*np.unique(
        assigned_intensities[Features.CELL_ID], return_counts=True)[::-1])

    assert target_counts[0] == 5
    assert target_counts[1] == 5
def iss_pipeline(fov, codebook):
    primary_image = fov.primary_image

    # register the raw images
    registration = Registration.FourierShiftRegistration(
        upsampling=1000,
        reference_stack=fov['dots']
    )
    registered = registration.run(primary_image, in_place=False)

    # filter raw data
    masking_radius = 15
    filt = Filter.WhiteTophat(masking_radius, is_volume=False)
    filtered = filt.run(registered, verbose=True, in_place=False)

    # detect spots using laplacian of gaussians approach
    p = SpotFinder.GaussianSpotDetector(
        min_sigma=1,
        max_sigma=10,
        num_sigma=30,
        threshold=0.01,
        measurement_type='mean',
    )
    blobs_image = fov['dots'].max_proj(Indices.ROUND, Indices.Z)
    intensities = p.run(filtered, blobs_image=blobs_image)

    # decode the pixel traces using the codebook
    decoded = codebook.decode_per_round_max(intensities)

    # segment cells
    seg = Segmentation.Watershed(
        dapi_threshold=.16,
        input_threshold=.22,
        min_distance=57,
    )
    regions = seg.run(primary_image, fov['nuclei'])

    # assign spots to cells
    ta = TargetAssignment.PointInPoly2D()
    assigned = ta.run(decoded, regions)

    return assigned, regions