MCPcopy Create free account
hub / github.com/Project-MONAI/MONAI / inverse

Method inverse

monai/transforms/compose.py:803–827  ·  view source on GitHub ↗
(self, data)

Source from the content-addressed store, hash-verified

801
802 # From RandomOrder
803 def inverse(self, data):
804 if len(self.transforms) == 0:
805 return data
806
807 applied_order = None
808 if isinstance(data, monai.data.MetaTensor):
809 applied_order = self.pop_transform(data)[TraceKeys.EXTRA_INFO]["applied_order"]
810 elif isinstance(data, Mapping):
811 for key in data:
812 if isinstance(data[key], monai.data.MetaTensor) or self.trace_key(key) in data:
813 applied_order = self.pop_transform(data, key)[TraceKeys.EXTRA_INFO]["applied_order"]
814 else:
815 raise RuntimeError(
816 f"Inverse only implemented for Mapping (dictionary) or MetaTensor data, got type {type(data)}."
817 )
818 if applied_order is None:
819 # no invertible transforms have been applied
820 return data
821
822 # loop backwards over transforms
823 for o in reversed(applied_order):
824 if isinstance(self.transforms[o], InvertibleTransform):
825 data = _inverse_one(self.transforms[o], data, self.map_items, self.unpack_items, self.log_stats)
826
827 return data

Callers 1

Calls 3

_inverse_oneFunction · 0.85
pop_transformMethod · 0.80
trace_keyMethod · 0.80

Tested by 1