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)
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]