Пример #1
0
def output_image_patch_with_highest_predicted_nuclei_count(
        image_patches_path,
        output_diretory_path,
        all_image_patches_for_case_id_directory_path,
        image_mode,
        with_image_mask=False):
    image_patch_paths = path_utils.create_full_paths_to_files_in_directory_path(
        image_patches_path)
    image_patch_path_with_highest_nuclei_count = get_image_patch_path_with_highest_nuclei_count(
        image_patch_paths)

    image_patch_file = image_patch_path_with_highest_nuclei_count.split(
        '/')[-1]
    if (with_image_mask is True):
        new_image_patch_path = output_diretory_path + "/" + image_patch_file
        shutil.copy(image_patch_path_with_highest_nuclei_count,
                    new_image_patch_path)
        return

    all_image_patches_mode_paths = path_utils.create_full_paths_to_directories_in_directory_path(
        all_image_patches_for_case_id_directory_path)
    directory_path_for_all_image_patches_with_specific_image_mode = get_path_for_all_image_patches_with_specific_image_mode(
        all_image_patches_mode_paths, image_mode)

    all_image_patches_with_specific_image_mode_paths = path_utils.create_full_paths_to_files_in_directory_path(
        directory_path_for_all_image_patches_with_specific_image_mode)

    parse_target_image_patch_file_name_to_dict = image_patch_file_name_parser.parse_image_patch_file_name_to_dict(
        image_patch_file)
    target_image_patch_metadata_object = image_patch_metadata_object.image_patch_metadata_object_from_image_patch_dict(
        parse_target_image_patch_file_name_to_dict)

    target_image_patch_path = get_target_image_patch_path(
        all_image_patches_with_specific_image_mode_paths,
        target_image_patch_metadata_object)

    new_image_patch_path = output_diretory_path + "/" + image_patch_file

    shutil.copy(target_image_patch_path, new_image_patch_path)
input_folder_path = args.input_folder_path
input_folder_path_for_high_res_image_patches = args.input_folder_path + "/image_patches_with_highest_nuclei_count/images_original"

svs_input_folder_path = args.svs_input_folder_path
output_folder_path = args.output_folder_path
visualizations_output_path = output_folder_path + "/visualizations"
copy_tree(input_folder_path + "/visualizations", visualizations_output_path)
highest_nuclei_count_visualization_output_path = visualizations_output_path + "/highest_nuclei_count_annotations_on_most_salient_high_res_image_patch"

svs_loader = svs_l.SVSLoader(svs_input_folder_path)

path_utils.halt_script_if_path_does_not_exist(input_folder_path)
path_utils.create_directory_if_directory_does_not_exist_at_path(
    output_folder_path)

most_salient_image_patch_case_directory_paths = path_utils.create_full_paths_to_directories_in_directory_path(
    input_folder_path + "/visualizations/most_salient_image_patch_high_res")
CID_indexed_high_saliency_image_patch_metadata_objects_dict = image_patch_metadata_object_utils.case_directory_paths_containing_image_patches_to_dict_indexed_by_CID(
    most_salient_image_patch_case_directory_paths)

high_nuclei_count_case_directory_paths = path_utils.create_full_paths_to_directories_in_directory_path(
    input_folder_path_for_high_res_image_patches)

for high_nuclei_count_case_directory_path in high_nuclei_count_case_directory_paths:
    high_nuclei_count_case_image_patches_paths = path_utils.create_full_paths_to_files_in_directory_path(
        high_nuclei_count_case_directory_path)
    first_image_patch_path = high_nuclei_count_case_image_patches_paths[0]
    image_name = first_image_patch_path.split('/')[-1]
    image_patch_metadata_object_with_high_nucleus = image_patch_file_name_parser.parse_image_patch_file_name_into_image_patch_metadata_object(
        image_name)

    corresponding_image_patch_metadata_object_with_highest_saliency = CID_indexed_high_saliency_image_patch_metadata_objects_dict[
    required=True)

args = parser.parse_args()

svs_input_folder_path = args.svs_input_folder_path
csv_input_folder_path = args.csv_input_folder_path
output_folder_path = args.output_folder_path
accuracy_percentage_threshold = args.accuracy_percentage_threshold

path_utils.halt_script_if_path_does_not_exist(svs_input_folder_path)
path_utils.halt_script_if_path_does_not_exist(csv_input_folder_path)

path_utils.create_directory_if_directory_does_not_exist_at_path(
    output_folder_path)

full_tcga_download_directory_paths = path_utils.create_full_paths_to_directories_in_directory_path(
    svs_input_folder_path)

full_image_patch_data_dict_paths = path_utils.create_full_paths_to_files_in_directory_path(
    csv_input_folder_path)

for full_tcga_download_directories_path_index, full_tcga_download_directory_path in enumerate(
        full_tcga_download_directory_paths):
    full_image_name_paths = path_utils.create_full_paths_to_files_in_directory_path(
        full_tcga_download_directory_path)
    image_name = full_image_name_paths[0].split('/')[-1][:-4]
    output_path = output_folder_path + '/' + image_name + '/'
    path_utils.create_directory_if_directory_does_not_exist_at_path(
        output_path)
    thumbnail = create_jpeg_thumbnail_of_wsi(full_image_name_paths[0])
    thumbnail = thumbnail.convert("RGB")
    thumbnail.save(output_path + image_name + "_original.jpeg", 'JPEG')
    return selection_processing_log_image


parser = argparse.ArgumentParser(description='Create visual image patch selection process log.')
parser.add_argument("-i", "--input_folder_path", type=str, help="The path to the input folder.", required=True)
parser.add_argument("-o", "--output_folder_path", type=str, help="The path to the output folder."
                                                                 " If output folder doesn't exists at runtime "
                                                                 "the script will create it.", required=True)

args = parser.parse_args()

input_folder_path = args.input_folder_path
visualizations_input_folder_path = args.input_folder_path + "/visualizations"
output_folder_path = args.output_folder_path
visualizations_output_path = output_folder_path + "/visualizations/selection_process_log_image/"

path_utils.create_directory_if_directory_does_not_exist_at_path(output_folder_path)
path_utils.create_directory_if_directory_does_not_exist_at_path(visualizations_output_path)


saliency_prediction_overview_visualization_paths = path_utils.create_full_paths_to_directories_in_directory_path(
    input_folder_path + "/visualizations/saliency_prediction_overview_visualization")
list_of_case_ids = [case_id_path.split('/')[-1] for case_id_path in saliency_prediction_overview_visualization_paths]
for case_id in list_of_case_ids:
    image_patch_selection_process_log_image = create_image_patch_selection_process_log_image(case_id)
    image_patch_selection_process_log_image.save(visualizations_output_path + case_id +".png", 'PNG')
copy_tree(visualizations_input_folder_path, output_folder_path + "/visualizations")
copy_tree(input_folder_path + "/image_patches_with_highest_nuclei_count", output_folder_path + "/image_patches_with_highest_nuclei_count")


                    "--output_folder_path",
                    type=str,
                    help="The path to the output folder."
                    " If output folder doesn't exists at runtime "
                    "the script will create it.",
                    required=True)

args = parser.parse_args()

input_folder_path = args.input_folder_path
output_folder_path = args.output_folder_path

path_utils.halt_script_if_path_does_not_exist(input_folder_path)
path_utils.create_directory_if_directory_does_not_exist_at_path(
    output_folder_path)
case_directory_paths = path_utils.create_full_paths_to_directories_in_directory_path(
    input_folder_path)

for case_directory_path in case_directory_paths:
    full_image_patch_paths = path_utils.create_full_paths_to_files_in_directory_path(
        case_directory_path)
    for full_input_image_patch_path in full_image_patch_paths:
        case_id = full_input_image_patch_path.split('/')[-2]
        case_id_directory_path = output_folder_path + "/" + case_id
        path_utils.create_directory_if_directory_does_not_exist_at_path(
            case_id_directory_path)

        image_patch_file = full_input_image_patch_path.split('/')[-1][:-4]
        image_patch_root_path = case_id_directory_path + "/" + image_patch_file
        path_utils.create_directory_if_directory_does_not_exist_at_path(
            case_id_directory_path)
Пример #6
0
preprocessed_high_res_image_patches_path = args.input_folder_path + '/' + "preprocessed_high_res_image_patches" + "/"

output_folder_path = args.output_folder_path

image_mode = args.image_mode

path_utils.halt_script_if_path_does_not_exist(
    image_patches_with_nuclei_counts_path)
path_utils.create_directory_if_directory_does_not_exist_at_path(
    output_folder_path)
output_folder_path_for_images_with_highest_nuclei_count = output_folder_path + '/' + "image_patches_with_highest_nuclei_count"
path_utils.create_directory_if_directory_does_not_exist_at_path(
    output_folder_path_for_images_with_highest_nuclei_count)

case_directory_paths = path_utils.create_full_paths_to_directories_in_directory_path(
    image_patches_with_nuclei_counts_path)
for case_directory_path in case_directory_paths:
    path_to_image_patches = case_directory_path + "/" + "images_original"

    case_id = case_directory_path.split('/')[-1]
    case_id_output_path = output_folder_path_for_images_with_highest_nuclei_count + "/images_original/" + case_id
    path_utils.create_directory_if_directory_does_not_exist_at_path(
        case_id_output_path)
    all_image_patches_for_case_id_directory_path = preprocessed_high_res_image_patches_path + "/" + case_id
    output_image_patch_with_highest_predicted_nuclei_count(
        path_to_image_patches, case_id_output_path,
        all_image_patches_for_case_id_directory_path, image_mode)
for case_directory_path in case_directory_paths:
    path_to_image_patches = case_directory_path + "/" + "images_annotated"

    case_id = case_directory_path.split('/')[-1]