Exemplo n.º 1
0
def test_detection_full(tmpdir):
    tmpdir = str(tmpdir)

    cellfinder_args = [
        "cellfinder",
        "-s",
        signal_data,
        "-b",
        background_data,
        "-o",
        tmpdir,
        "-v",
        z_pix,
        y_pix,
        x_pix,
        "--orientation",
        "psl",
        "--n-free-cpus",
        "0",
        "--no-register",
        "--save-planes",
    ]
    sys.argv = cellfinder_args
    cellfinder_run()

    cells_test_xml = os.path.join(tmpdir, "points", "cell_classification.xml")

    cells_validation = cell_io.get_cells(cells_validation_xml)
    cells_test = cell_io.get_cells(cells_test_xml)

    num_non_cells_validation = sum(
        [cell.type == 1 for cell in cells_validation]
    )
    num_cells_validation = sum([cell.type == 2 for cell in cells_validation])

    num_non_cells_test = sum([cell.type == 1 for cell in cells_test])
    num_cells_test = sum([cell.type == 2 for cell in cells_test])

    assert isclose(
        num_non_cells_validation,
        num_non_cells_test,
        abs_tol=DETECTION_TOLERANCE,
    )
    assert isclose(
        num_cells_validation, num_cells_test, abs_tol=DETECTION_TOLERANCE
    )
Exemplo n.º 2
0
def test_register(tmpdir, test_config_path):
    output_directory = os.path.join(str(tmpdir), "output")
    cellfinder_args = [
        "cellfinder",
        "-s",
        data_dir,
        "-b",
        data_dir,
        "-o",
        output_directory,
        "-x",
        x_pix,
        "-y",
        y_pix,
        "-z",
        z_pix,
        "--n-free-cpus",
        "0",
        "--registration-config",
        test_config_path,
        "--register",
        "--no-detection",
        "--no-classification",
    ]

    sys.argv = cellfinder_args
    cellfinder_run()
    output_directory = os.path.join(output_directory, "registration")

    # a hack because testing on linux on travis is 100% identical to local,
    # but windows is not
    if platform.system() == "Linux":
        image_list = [
            "annotations.nii",
            "boundaries.nii",
            "brain_filtered.nii",
            "control_point_file.nii",
            "downsampled.nii",
            "hemispheres.nii",
            "inverse_control_point_file.nii",
            "registered_atlas.nii",
            "registered_hemispheres.nii",
            "downsampled_channel_0.nii",
        ]
    else:
        image_list = [
            "annotations.nii",
            # "boundaries.nii",
            "brain_filtered.nii",
            "control_point_file.nii",
            "downsampled.nii",
            "hemispheres.nii",
            "inverse_control_point_file.nii",
            # "registered_atlas.nii",
            "registered_hemispheres.nii",
            "downsampled_channel_0.nii",
        ]

    for image in image_list:
        are_images_equal(image, output_directory, test_output_dir)

    assert get_text_lines(os.path.join(
        output_directory, "affine_matrix.txt")) == get_text_lines(
            os.path.join(test_output_dir, "affine_matrix.txt"))

    assert get_text_lines(
        os.path.join(output_directory,
                     "invert_affine_matrix.txt")) == get_text_lines(
                         os.path.join(test_output_dir,
                                      "invert_affine_matrix.txt"))

    pd.testing.assert_frame_equal(
        pd.read_csv(os.path.join(output_directory, "volumes.csv")),
        pd.read_csv(os.path.join(test_output_dir, "volumes.csv")),
        check_exact=False,
        check_less_precise=check_less_precise_pd,
    )
Exemplo n.º 3
0
def test_registration_niftyreg(tmpdir):
    output_directory = os.path.join(str(tmpdir), "output")
    cellfinder_args = [
        "cellfinder",
        "-s",
        data_dir,
        "-b",
        data_dir,
        "-o",
        output_directory,
        "-v",
        z_pix,
        y_pix,
        x_pix,
        "--orientation",
        "psl",
        "--n-free-cpus",
        "0",
        "--atlas",
        "allen_mouse_100um",
        "--no-detection",
        "--no-classification",
        "--no-analyse",
        "--no-figures",
    ]

    sys.argv = cellfinder_args
    cellfinder_run()

    # none of this testing is ideal, as results seem to vary between systems

    if platform.system() == "Linux":
        image_list = [
            "boundaries.tiff",
            "deformation_field_0.tiff",
            "deformation_field_1.tiff",
            "deformation_field_2.tiff",
            "downsampled.tiff",
            "downsampled_channel_0.tiff",
            "downsampled_standard.tiff",
            "downsampled_standard_channel_0.tiff",
            "registered_atlas.tiff",
            "registered_hemispheres.tiff",
        ]
    else:
        image_list = [
            "boundaries.tiff",
            "deformation_field_0.tiff",
            "deformation_field_1.tiff",
            "deformation_field_2.tiff",
            "downsampled.tiff",
            "downsampled_channel_0.tiff",
            # "downsampled_standard.tiff",
            # "downsampled_standard_channel_0.tiff",
            # "registered_atlas.tiff",
            # "registered_hemispheres.tiff",
        ]
    output_directory = os.path.join(output_directory, "registration")
    for image in image_list:
        are_images_equal(image, output_directory, test_niftyreg_output)

    if platform.system() == "Linux":
        pd.testing.assert_frame_equal(
            pd.read_csv(os.path.join(output_directory, "volumes.csv")),
            pd.read_csv(os.path.join(test_niftyreg_output, "volumes.csv")),
        )