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 )
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, )
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")), )