Created
April 26, 2019 15:51
-
-
Save 3dimaging/a1532428d045fedde89de60ec55891c9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import multiresolutionimageinterface as mir | |
import matplotlib.pyplot as plt | |
import os.path as osp | |
import openslide | |
import matplotlib.pyplot as plt | |
from pathlib import Path | |
import glob | |
import re | |
#please make sure the same number of files in the folder of tumor file and folder of annotation files | |
#please change the slide_path, anno_path, mask_path accordingly, and leave everything else untouched. | |
slide_path = '/home/wli/Downloads/CAMELYON16/testing/images' | |
#anno_path = '/home/wli/Downloads/CAMELYON16/testing/Lesion_annotations' | |
anno_path = '/home/wli/Downloads/CAMELYON16/testing/lesion_annotations_new_download' | |
mask_path = '/home/wli/Downloads/CAMELYON16/testing/masking_new' | |
tumor_paths = glob.glob(osp.join(slide_path, '*.tif')) | |
tumor_paths.sort() | |
anno_tumor_paths = glob.glob(osp.join(anno_path, '*.xml')) | |
anno_tumor_paths.sort() | |
#image_pair = zip(tumor_paths, anno_tumor_paths) | |
#image_pair = list(image_mask_pair) | |
reader = mir.MultiResolutionImageReader() | |
i=0 | |
while i < len(anno_tumor_paths): | |
new_slide_path = [x for x in tumor_paths if re.search( | |
osp.basename(anno_tumor_paths[i]).replace('.xml', '.tif'), x)] | |
new_tumor_path = new_slide_path[0] | |
print(new_tumor_path) | |
mr_image = reader.open(new_tumor_path) | |
annotation_list=mir.AnnotationList() | |
xml_repository = mir.XmlRepository(annotation_list) | |
xml_repository.setSource(anno_tumor_paths[i]) | |
xml_repository.load() | |
annotation_mask=mir.AnnotationToMask() | |
camelyon17_type_mask = False | |
label_map = {'metastases': 1, 'normal': 2} if camelyon17_type_mask else {'_0': 1, '_1': 1, '_2': 0} | |
#label_map = {'metastases': 1, 'normal': 2} if camelyon17_type_mask else {'_0': 255, '_1': 255, '_2': 0} | |
conversion_order = ['metastases', 'normal'] if camelyon17_type_mask else ['_0', '_1', '_2'] | |
output_path= osp.join(mask_path, osp.basename(new_tumor_path).replace('.tif', '_mask.tif')) | |
annotation_mask.convert(annotation_list, output_path, mr_image.getDimensions(), mr_image.getSpacing(), label_map, conversion_order) | |
i=i+1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment