code-loader 1.0.87.dev1__py3-none-any.whl → 1.0.87.dev2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,4 +39,14 @@ class NodeMapping:
39
39
  class NodeConnection:
40
40
  node: NodeMapping
41
41
  node_inputs: Optional[Dict[str, NodeMapping]]
42
- prediction_type_name: Optional[str] = None
42
+ prediction_type_name: Optional[str] = None
43
+
44
+
45
+ def leap_output(idx):
46
+ def dummy():
47
+ return None
48
+
49
+ node_mapping_type = NodeMappingType(f'Prediction{str(idx)}')
50
+ dummy.node_mapping = NodeMapping('', node_mapping_type)
51
+
52
+ return dummy
@@ -16,6 +16,16 @@ from code_loader.contract.visualizer_classes import LeapImage, LeapImageMask, Le
16
16
  LeapHorizontalBar, LeapImageWithBBox, LeapImageWithHeatmap
17
17
 
18
18
 
19
+ def _add_mapping_connections(connects_to, arg_names, node_mapping_type, name):
20
+ for user_unique_name, connection_destinations in connects_to.items():
21
+ main_node_mapping = NodeMapping(name, node_mapping_type, user_unique_name, arg_names=arg_names)
22
+ node_inputs = {}
23
+ for arg_name, destination in zip(arg_names, connection_destinations):
24
+ node_inputs[arg_name] = destination.node_mapping
25
+
26
+ leap_binder.mapping_connections.append(NodeConnection(main_node_mapping, node_inputs))
27
+
28
+
19
29
  def tensorleap_custom_metric(name: str,
20
30
  direction: Union[MetricDirection, Dict[str, MetricDirection]] = MetricDirection.Downward,
21
31
  compute_insights: Optional[Union[bool, Dict[str, bool]]] = None,
@@ -32,15 +42,7 @@ def tensorleap_custom_metric(name: str,
32
42
 
33
43
  if connects_to is not None:
34
44
  arg_names = leap_binder.setup_container.metrics[-1].metric_handler_data.arg_names
35
- for user_unique_name, connection_destinations in connects_to.items():
36
- main_node_mapping = NodeMapping(name, NodeMappingType.Metric, user_unique_name, arg_names=arg_names)
37
- node_inputs = {}
38
- for arg_name, destination in zip(arg_names, connection_destinations):
39
- node_inputs[arg_name] = destination.node_mapping
40
-
41
- leap_binder.mapping_connections.append(NodeConnection(main_node_mapping, node_inputs))
42
-
43
-
45
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.Metric, name)
44
46
 
45
47
  def _validate_input_args(*args, **kwargs) -> None:
46
48
  for i, arg in enumerate(args):
@@ -130,7 +132,8 @@ def tensorleap_custom_metric(name: str,
130
132
 
131
133
 
132
134
  def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
133
- heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None):
135
+ heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None,
136
+ connects_to=None):
134
137
  def decorating_function(user_function: VisualizerCallableInterface):
135
138
  for viz_handler in leap_binder.setup_container.visualizers:
136
139
  if viz_handler.visualizer_handler_data.name == name:
@@ -139,6 +142,10 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
139
142
 
140
143
  leap_binder.set_visualizer(user_function, name, visualizer_type, heatmap_function)
141
144
 
145
+ if connects_to is not None:
146
+ arg_names = leap_binder.setup_container.visualizers[-1].visualizer_handler_data.arg_names
147
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.Visualizer, name)
148
+
142
149
  def _validate_input_args(*args, **kwargs):
143
150
  for i, arg in enumerate(args):
144
151
  assert isinstance(arg, (np.ndarray, SamplePreprocessResponse)), (
@@ -328,6 +335,8 @@ def tensorleap_input_encoder(name: str, channel_dim=-1):
328
335
  _validate_result(result)
329
336
  return result
330
337
 
338
+ inner.node_mapping = NodeMapping(name, NodeMappingType.Input)
339
+
331
340
  return inner
332
341
 
333
342
  return decorating_function
@@ -377,7 +386,7 @@ def tensorleap_gt_encoder(name: str):
377
386
  return decorating_function
378
387
 
379
388
 
380
- def tensorleap_custom_loss(name: str):
389
+ def tensorleap_custom_loss(name: str, connects_to=None):
381
390
  def decorating_function(user_function: CustomCallableInterface):
382
391
  for loss_handler in leap_binder.setup_container.custom_loss_handlers:
383
392
  if loss_handler.custom_loss_handler_data.name == name:
@@ -386,6 +395,11 @@ def tensorleap_custom_loss(name: str):
386
395
 
387
396
  leap_binder.add_custom_loss(user_function, name)
388
397
 
398
+ if connects_to is not None:
399
+ arg_names = leap_binder.setup_container.custom_loss_handlers[-1].custom_loss_handler_data.arg_names
400
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.CustomLoss, name)
401
+
402
+
389
403
  valid_types = (np.ndarray, SamplePreprocessResponse)
390
404
  try:
391
405
  import tensorflow as tf
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.87.dev1
3
+ Version: 1.0.87.dev2
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -4,7 +4,7 @@ code_loader/contract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
4
4
  code_loader/contract/datasetclasses.py,sha256=ZN6XC-tg0qaT-GF4YiV2SsM2dUQW4fc1akLF-J4YT0w,7964
5
5
  code_loader/contract/enums.py,sha256=GEFkvUMXnCNt-GOoz7NJ9ecQZ2PPDettJNOsxsiM0wk,1622
6
6
  code_loader/contract/exceptions.py,sha256=jWqu5i7t-0IG0jGRsKF4DjJdrsdpJjIYpUkN1F4RiyQ,51
7
- code_loader/contract/mapping.py,sha256=j9xqgnDrQJZtNG00a3JnpoSEm2ezMCgE4TQdZC-NwkE,939
7
+ code_loader/contract/mapping.py,sha256=qYTTw-UZUVGnyy2Coei0zxhsqM1XwWEn4JkLy_WswBU,1144
8
8
  code_loader/contract/responsedataclasses.py,sha256=RSx9m_R3LawhK5o1nAcO3hfp2F9oJYtxZr_bpP3bTmw,4005
9
9
  code_loader/contract/visualizer_classes.py,sha256=_nlukRfW8QeQaQG7G5HfAUSeCuoqslB4xJS2AGI_Nz8,15156
10
10
  code_loader/default_losses.py,sha256=NoOQym1106bDN5dcIk56Elr7ZG5quUHArqfP5-Nyxyo,1139
@@ -21,13 +21,13 @@ code_loader/experiment_api/utils.py,sha256=XZHtxge12TS4H4-8PjV3sKuhp8Ud6ojAiIzTZ
21
21
  code_loader/experiment_api/workingspace_config_utils.py,sha256=DLzXQCg4dgTV_YgaSbeTVzq-2ja_SQw4zi7LXwKL9cY,990
22
22
  code_loader/inner_leap_binder/__init__.py,sha256=koOlJyMNYzGbEsoIbXathSmQ-L38N_pEXH_HvL7beXU,99
23
23
  code_loader/inner_leap_binder/leapbinder.py,sha256=4mC6wvSKwfarDQbdSrISBG3uvDUIus_laXh1LlyCgK8,30932
24
- code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=6HRHVgLZuYBBssF_nreehaqKeB6V8gwvENBXHexpj4I,23434
24
+ code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=sesjIgQ6fRFtNNEnKvxZHjX0l1uzkPqzvqB-DEomy5w,24170
25
25
  code_loader/leaploader.py,sha256=QPBG7xrNdzhnOiRtwUlVosyYcFNC_ivWgoS8nWOZ_5M,25768
26
26
  code_loader/leaploaderbase.py,sha256=VH0vddRmkqLtcDlYPCO7hfz1_VbKo43lUdHDAbd4iJc,4198
27
27
  code_loader/utils.py,sha256=aw2i_fqW_ADjLB66FWZd9DfpCQ7mPdMyauROC5Nd51I,2197
28
28
  code_loader/visualizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  code_loader/visualizers/default_visualizers.py,sha256=f95WzLYO2KU8endWxrmtwjHx7diDfm8AaWjucYHT7GI,2439
30
- code_loader-1.0.87.dev1.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
31
- code_loader-1.0.87.dev1.dist-info/METADATA,sha256=w9bosTgQZfkgg7SUfGLk8thr6vZM9glFr-LCYqOkvJc,854
32
- code_loader-1.0.87.dev1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
33
- code_loader-1.0.87.dev1.dist-info/RECORD,,
30
+ code_loader-1.0.87.dev2.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
31
+ code_loader-1.0.87.dev2.dist-info/METADATA,sha256=WybWXrCev_1iopPHq08ykW4iCW2Uzrr881ELfqxDrJE,854
32
+ code_loader-1.0.87.dev2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
33
+ code_loader-1.0.87.dev2.dist-info/RECORD,,