code-loader 1.0.150.dev1__tar.gz → 1.0.151__tar.gz

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.
Files changed (36) hide show
  1. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/PKG-INFO +1 -1
  2. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/inner_leap_binder/leapbinder_decorators.py +1 -2
  3. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/leaploader.py +19 -2
  4. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/leaploaderbase.py +25 -0
  5. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/pyproject.toml +1 -1
  6. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/LICENSE +0 -0
  7. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/README.md +0 -0
  8. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/__init__.py +0 -0
  9. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/__init__.py +0 -0
  10. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/datasetclasses.py +0 -0
  11. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/enums.py +0 -0
  12. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/exceptions.py +0 -0
  13. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/mapping.py +0 -0
  14. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/responsedataclasses.py +0 -0
  15. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/contract/visualizer_classes.py +0 -0
  16. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/default_losses.py +0 -0
  17. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/default_metrics.py +0 -0
  18. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/__init__.py +0 -0
  19. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/api.py +0 -0
  20. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/cli_config_utils.py +0 -0
  21. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/client.py +0 -0
  22. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/epoch.py +0 -0
  23. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/experiment.py +0 -0
  24. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/experiment_context.py +0 -0
  25. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/types.py +0 -0
  26. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/utils.py +0 -0
  27. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  28. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/inner_leap_binder/__init__.py +0 -0
  29. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  30. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/mixpanel_tracker.py +0 -0
  31. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/plot_functions/__init__.py +0 -0
  32. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/plot_functions/plot_functions.py +0 -0
  33. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/plot_functions/visualize.py +0 -0
  34. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/utils.py +0 -0
  35. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/visualizers/__init__.py +0 -0
  36. {code_loader-1.0.150.dev1 → code_loader-1.0.151}/code_loader/visualizers/default_visualizers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.150.dev1
3
+ Version: 1.0.151
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -132,8 +132,7 @@ def validate_output_structure(result, func_name: str, expected_type_name="np.nda
132
132
 
133
133
 
134
134
  def batch_warning(result, func_name):
135
- return
136
- if result.shape[0] == 1:
135
+ if len(result.shape) > 0 and result.shape[0] == 1:
137
136
  warnings.warn(
138
137
  f"{func_name} warning: Tensorleap will add a batch dimension at axis 0 to the output of {func_name}, "
139
138
  f"although the detected size of axis 0 is already 1. "
@@ -163,7 +163,7 @@ class LeapLoader(LeapLoaderBase):
163
163
  if state == DataStateEnum.unlabeled and sample_id not in preprocess_result[state].sample_ids:
164
164
  self._preprocess_result(update_unlabeled_preprocess=True)
165
165
 
166
- metadata, metadata_is_none = self._get_metadata(state, sample_id)
166
+ metadata, metadata_is_none = self.get_metadata(state, sample_id)
167
167
 
168
168
  custom_latent_space = None
169
169
  if global_leap_binder.setup_container.custom_latent_space is not None:
@@ -521,21 +521,38 @@ class LeapLoader(LeapLoaderBase):
521
521
 
522
522
  return converted_value, is_none
523
523
 
524
- def _get_metadata(self, state: DataStateEnum, sample_id: Union[int, str]) -> Tuple[
524
+ def get_metadata(self, state: DataStateEnum, sample_id: Union[int, str], requested_metadata_names: Optional[List[str]] = None) -> Tuple[
525
525
  Dict[str, Union[str, int, bool, float]], Dict[str, bool]]:
526
+
527
+ def is_metadata_name_starts_with_handler_name(_handler):
528
+ for metadata_name in requested_metadata_names:
529
+ if metadata_name.startswith(_handler.name + '_') or metadata_name == _handler.name:
530
+ return True
531
+ return False
532
+
526
533
  result_agg = {}
527
534
  is_none = {}
528
535
  preprocess_result = self._preprocess_result()
529
536
  preprocess_state = preprocess_result[state]
530
537
  for handler in global_leap_binder.setup_container.metadata:
538
+ if requested_metadata_names:
539
+ if not is_metadata_name_starts_with_handler_name(handler):
540
+ continue
541
+
531
542
  handler_result = handler.function(sample_id, preprocess_state)
532
543
  if isinstance(handler_result, dict):
533
544
  for single_metadata_name, single_metadata_result in handler_result.items():
534
545
  handler_name = f'{handler.name}_{single_metadata_name}'
546
+ if requested_metadata_names:
547
+ if handler_name not in requested_metadata_names:
548
+ continue
535
549
  result_agg[handler_name], is_none[handler_name] = self._convert_metadata_to_correct_type(
536
550
  handler_name, single_metadata_result)
537
551
  else:
538
552
  handler_name = handler.name
553
+ if requested_metadata_names:
554
+ if handler_name not in requested_metadata_names:
555
+ continue
539
556
  result_agg[handler_name], is_none[handler_name] = self._convert_metadata_to_correct_type(
540
557
  handler_name, handler_result)
541
558
 
@@ -68,6 +68,24 @@ class LeapLoaderBase:
68
68
  def get_instances_data(self, state: DataStateEnum) -> Tuple[Dict[str, List[str]], Dict[str, str]]:
69
69
  pass
70
70
 
71
+ def get_metadata_multiple_samples(self, state: DataStateEnum, sample_ids: Union[List[int], List[str]],
72
+ requested_metadata_names: Optional[List[str]] = None
73
+ ) -> Tuple[Dict[str, Union[List[str], List[int], List[bool],
74
+ List[float]]], Dict[str, List[bool]]]:
75
+ aggregated_results: Dict[str, List[Union[str, int, bool, float]]] = {}
76
+ aggregated_is_none: Dict[str, List[bool]] = {}
77
+ sample_id_type = self.get_sample_id_type()
78
+ for sample_id in sample_ids:
79
+ sample_id = sample_id_type(sample_id)
80
+ metadata_result, is_none_result = self.get_metadata(state, sample_id, requested_metadata_names)
81
+ for metadata_name, metadata_value in metadata_result.items():
82
+ if metadata_name not in aggregated_results:
83
+ aggregated_results[metadata_name] = []
84
+ aggregated_is_none[metadata_name] = []
85
+ aggregated_results[metadata_name].append(metadata_value)
86
+ aggregated_is_none[metadata_name].append(is_none_result[metadata_name])
87
+ return aggregated_results, aggregated_is_none
88
+
71
89
  @abstractmethod
72
90
  def check_dataset(self) -> DatasetIntegParseResult:
73
91
  pass
@@ -87,6 +105,13 @@ class LeapLoaderBase:
87
105
  input_tensors_by_arg_name: Dict[str, npt.NDArray[np.float32]]):
88
106
  pass
89
107
 
108
+ @abstractmethod
109
+ def get_metadata(
110
+ self, state: DataStateEnum, sample_id: Union[int, str],
111
+ requested_metadata_names: Optional[List[str]] = None
112
+ ) -> Tuple[Dict[str, Union[str, int, bool, float]], Dict[str, bool]]:
113
+ pass
114
+
90
115
  @abstractmethod
91
116
  def run_heatmap_visualizer(self, visualizer_name: str, sample_ids: np.array, state: DataStateEnum,
92
117
  input_tensors_by_arg_name: Dict[str, npt.NDArray[np.float32]]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.150.dev1"
3
+ version = "1.0.151"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"