Padding all var types to have same #features
| 277 | |
| 278 | |
| 279 | class 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 | |
| 311 | class LayerEdgesAndLevelNodesGraph(EdgesAndNodesTransforms, OnlyLevelsAreNodesTransforms): |
nothing calls this directly
no outgoing calls
no test coverage detected