o  i @sNddlmZddlmZmZddlmZddlmZddl m Z dd d Z dS)) annotations)CallableHashable)Any)KeysCollection ensure_tuplekeysr nested_keystrreturnCallable[[Any], Any]cst|fdd}|S)a Since the output of HoVerNet is a dictionary, this function is to extend `monai.handlers.from_engine` to work with HoVerNet. If data is a list of nested dictionaries after decollating, extract nested value with expected keys and construct lists respectively, for example, if data is `[{"A": {"C": 1, "D": 2}, "B": {"C": 2, "D": 2}}, {"A": {"C": 3, "D": 2}, "B": {"C": 4, "D": 2}}]`, from_engine_hovernet(["A", "B"], "C"): `([1, 3], [2, 4])`. Here is a simple example:: from monai.handlers import MeanDice, from_engine_hovernet metric = MeanDice( include_background=False, output_transform=from_engine_hovernet(keys=["pred", "label"], nested_key=HoVerNetBranch.NP.value) ) Args: keys: specified keys to extract data from dictionary or decollated list of dictionaries. nested_key: specified key to extract nested data from dictionary or decollated list of dictionaries. csrttrtfddDSttr5tdtr7fddD}t|dkr1t|S|dSdSdS)Nc3s|] }|VqdS)N).0kdatar re/home/dell461/cl/sdc2/last_ska_mid/HISourceFinder-master-l/src/monai/apps/pathology/handlers/utils.py 1sz9from_engine_hovernet.._wrapper..rcs g|] fddDqS)csg|]}|qSrr)ri)rr rr 4szEfrom_engine_hovernet.._wrapper...r)rr)rrr4s z:from_engine_hovernet.._wrapper..) isinstancedicttuplelistlen)rret_keysr )rr_wrapper/s z&from_engine_hovernet.._wrapperr)r r r rrrfrom_engine_hovernetsr!N)r rr r r r ) __future__rcollections.abcrrtypingr monai.configr monai.utilsrr!rrrrs