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

Method push_transform

monai/transforms/inverse.py:132–167  ·  view source on GitHub ↗

Push to a stack of applied transforms of ``data``. Args: data: dictionary of data or `MetaTensor`. args: additional positional arguments to track_transform_meta. kwargs: additional keyword arguments to track_transform_meta, set ``

(self, data, *args, **kwargs)

Source from the content-addressed store, hash-verified

130 return dict(zip(self.transform_info_keys(), vals))
131
132 def push_transform(self, data, *args, **kwargs):
133 """
134 Push to a stack of applied transforms of ``data``.
135
136 Args:
137 data: dictionary of data or `MetaTensor`.
138 args: additional positional arguments to track_transform_meta.
139 kwargs: additional keyword arguments to track_transform_meta,
140 set ``replace=True`` (default False) to rewrite the last transform infor in
141 applied_operation/pending_operation based on ``self.get_transform_info()``.
142 """
143 lazy_eval = kwargs.get("lazy", False)
144 transform_info = self.get_transform_info()
145 do_transform = transform_info.get(TraceKeys.DO_TRANSFORM, True)
146 kwargs = kwargs or {}
147 replace = kwargs.pop("replace", False) # whether to rewrite the most recently pushed transform info
148 if replace and get_track_meta() and isinstance(data, MetaTensor):
149 if not lazy_eval:
150 xform = self.pop_transform(data, check=False) if do_transform else {}
151 meta_obj = self.push_transform(data, orig_size=xform.get(TraceKeys.ORIG_SIZE), extra_info=xform)
152 return data.copy_meta_from(meta_obj)
153 if do_transform:
154 xform = data.pending_operations.pop()
155 extra = xform.copy()
156 xform.update(transform_info)
157 else: # lazy, replace=True, do_transform=False
158 xform, extra = transform_info, {}
159 meta_obj = self.push_transform(data, transform_info=xform, lazy=True, extra_info=extra)
160 return data.copy_meta_from(meta_obj)
161 kwargs["lazy"] = lazy_eval
162 if "transform_info" in kwargs and isinstance(kwargs["transform_info"], dict):
163 kwargs["transform_info"].update(transform_info)
164 else:
165 kwargs["transform_info"] = transform_info
166 meta_obj = TraceableTransform.track_transform_meta(data, *args, **kwargs)
167 return data.copy_meta_from(meta_obj) if isinstance(data, MetaTensor) else data
168
169 @classmethod
170 def track_transform_meta(

Callers 15

__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80
__call__Method · 0.80

Calls 8

get_transform_infoMethod · 0.95
pop_transformMethod · 0.95
get_track_metaFunction · 0.90
getMethod · 0.80
popMethod · 0.80
copy_meta_fromMethod · 0.80
track_transform_metaMethod · 0.80
updateMethod · 0.45

Tested by 3

__call__Method · 0.64
__call__Method · 0.64
__call__Method · 0.64