MCPcopy Create free account
hub / github.com/PathologyDataScience/HiPS / SlideRegionFeatureExtractor

Class SlideRegionFeatureExtractor

hips/SlideFeatureExtractor.py:641–1372  ·  view source on GitHub ↗

Extracts region features from MuTIsWSIRunner ouput.

Source from the content-addressed store, hash-verified

639
640
641class SlideRegionFeatureExtractor(object):
642 """
643 Extracts region features from MuTIsWSIRunner ouput.
644 """
645 def __init__(
646 self,
647 slide_dir: str,
648 output_dir: str,
649 *,
650 feature_sets: Set[str] = None,
651 region_prop_names: Iterable[str] = None,
652 neighborhood_distances: Iterable[int] = (64, 128),
653 slide_name: str = None,
654 mpp: float = 2.0,
655 monitor: str = "",
656 logger: Any = None,
657 _discrete_regions: Iterable[str] = ('TUMOR', 'TILS'),
658 _relevant_regions: Iterable[str] = None,
659 _relevant_nuclei: Iterable[str] = None,
660 _min_discrete_region_area: int = 64 ** 2,
661 _min_region_hole_area: Union[int, None] = 24 ** 2,
662 _region_class_map: Dict[str, str] = None,
663 _nucleus_class_map: Dict[str, str] = None,
664 ):
665 """
666 This represents the slide as a feature matrix summarizing
667 its semantic segmantation mask.
668 """
669 self.slide_dir = slide_dir
670 self.output_dir = output_dir
671 self.slide_name = slide_name or os.path.basename(slide_dir)
672 self.mpp = mpp
673 self.monitor = monitor
674 self.logger = logger or logging.getLogger(__name__)
675
676 self.features_aware_of_center = {
677 "nuclear_composition",
678 }
679 self.features_aware_of_surround = {
680 "neighborhood_composition_regions",
681 "neighborhood_composition_nuclei",
682 }
683 self.features_aware_of_cs = self.features_aware_of_center.union(
684 self.features_aware_of_surround
685 )
686 available_feature_sets = {
687 "morphology",
688 }.union(self.features_aware_of_cs)
689 self.feature_sets = feature_sets or available_feature_sets
690 not_recognized = self.feature_sets.difference(available_feature_sets)
691 assert len(not_recognized) < 1, (
692 "These feature sets you requested are not recognized: "
693 f"{not_recognized}"
694 )
695 self._region_prop_names = region_prop_names or (
696 'label',
697 'area',
698 'convex_area',

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected