MCPcopy Create free account
hub / github.com/RolnickLab/climart / PadTransform

Class PadTransform

climart/data_transform/transforms.py:279–308  ·  view source on GitHub ↗

Padding all var types to have same #features

Source from the content-addressed store, hash-verified

277
278
279class PadTransform(AllAreNodesTransforms):
280 """
281 Padding all var types to have same #features
282 """
283
284 def __init__(self, exp_type: str, use_level_features: bool = True, padding_value: float = 0.0):
285 super().__init__(exp_type, use_level_features=use_level_features)
286 self._out_dim = max(*[var_indim for var_indim in self.input_dim.values()])
287 self.padding_value = padding_value
288
289 def transform(self, X: Dict[str, np.ndarray]) -> np.ndarray:
290 global_node, levels, layers = X[GLOBALS], X[LEVELS], X[LAYERS]
291 # set all values to padding by default
292 padded_data = self.padding_value * np.ones((self.n_nodes, self.output_dim))
293 padded_data[self.GLOBAL_NODE, :self.input_dim[GLOBALS]] = global_node
294 padded_data[self.LAYER_NODES, :self.input_dim[LAYERS]] = layers
295 if self.use_level_features:
296 padded_data[self.LEVEL_NODES, :self.input_dim[LEVELS]] = levels
297 return padded_data
298
299 def batched_transform(self, X: Dict[str, np.ndarray]) -> np.ndarray:
300 global_node, levels, layers = X[GLOBALS], X[LEVELS], X[LAYERS]
301 data_size = global_node.shape[0]
302 # set all values to padding by default
303 padded_data = self.padding_value * np.ones((data_size, self.n_nodes, self.output_dim))
304 padded_data[:, self.GLOBAL_NODE, :self.input_dim[GLOBALS]] = global_node
305 padded_data[:, self.LAYER_NODES, :self.input_dim[LAYERS]] = layers
306 if self.use_level_features:
307 padded_data[:, self.LEVEL_NODES, :self.input_dim[LEVELS]] = levels
308 return padded_data
309
310
311class LayerEdgesAndLevelNodesGraph(EdgesAndNodesTransforms, OnlyLevelsAreNodesTransforms):

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected