code-loader 1.0.91__tar.gz → 1.0.91.dev0__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.
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/PKG-INFO +1 -1
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/datasetclasses.py +10 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/inner_leap_binder/leapbinder_decorators.py +68 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/pyproject.toml +1 -1
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/LICENSE +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/README.md +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/__init__.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/utils.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/visualizers/default_visualizers.py +0 -0
@@ -38,6 +38,7 @@ class PreprocessResponse:
|
|
38
38
|
sample_ids: Optional[Union[List[str], List[int]]] = None
|
39
39
|
state: Optional[DataStateType] = None
|
40
40
|
sample_id_type: Optional[Union[Type[str], Type[int]]] = None
|
41
|
+
sample_ids_to_instance_mappings: Optional[Dict[Union[str, int], Union[List[str], List[int]]]] = None # in use only for element instance
|
41
42
|
|
42
43
|
def __post_init__(self) -> None:
|
43
44
|
def is_valid_string(s: str) -> bool:
|
@@ -188,6 +189,15 @@ class InputHandler(DatasetBaseHandler):
|
|
188
189
|
shape: Optional[List[int]] = None
|
189
190
|
channel_dim: Optional[int] = -1
|
190
191
|
|
192
|
+
@dataclass
|
193
|
+
class ElementInstance:
|
194
|
+
name: str
|
195
|
+
mask: npt.NDArray[np.float32]
|
196
|
+
|
197
|
+
@dataclass
|
198
|
+
class ElementInstanceHandler:
|
199
|
+
input_name: str
|
200
|
+
instance_function: [[int, PreprocessResponse], List[ElementInstance]]
|
191
201
|
|
192
202
|
@dataclass
|
193
203
|
class GroundTruthHandler(DatasetBaseHandler):
|
@@ -270,6 +270,49 @@ def tensorleap_preprocess():
|
|
270
270
|
|
271
271
|
return decorating_function
|
272
272
|
|
273
|
+
def tensorleap_element_instance_preprocess(instance_mask_encoder: Callable[[int, PreprocessResponse], List[PreprocessResponse]]):
|
274
|
+
def decorating_function(user_function: Callable[[], List[PreprocessResponse]]):
|
275
|
+
leap_binder.set_preprocess(user_function)
|
276
|
+
|
277
|
+
def _validate_input_args(*args, **kwargs):
|
278
|
+
assert len(args) == 0 and len(kwargs) == 0, \
|
279
|
+
(f'tensorleap_preprocess validation failed: '
|
280
|
+
f'The function should not take any arguments. Got {args} and {kwargs}.')
|
281
|
+
|
282
|
+
def _validate_result(result):
|
283
|
+
assert isinstance(result, list), \
|
284
|
+
(f'tensorleap_preprocess validation failed: '
|
285
|
+
f'The return type should be a list. Got {type(result)}.')
|
286
|
+
for i, response in enumerate(result):
|
287
|
+
assert isinstance(response, PreprocessResponse), \
|
288
|
+
(f'tensorleap_preprocess validation failed: '
|
289
|
+
f'Element #{i} in the return list should be a PreprocessResponse. Got {type(response)}.')
|
290
|
+
assert len(set(result)) == len(result), \
|
291
|
+
(f'tensorleap_preprocess validation failed: '
|
292
|
+
f'The return list should not contain duplicate PreprocessResponse objects.')
|
293
|
+
|
294
|
+
def inner(*args, **kwargs):
|
295
|
+
_validate_input_args(*args, **kwargs)
|
296
|
+
result = user_function()
|
297
|
+
for preprocess_response in result:
|
298
|
+
data_length = len(preprocess_response.sample_ids)
|
299
|
+
sample_ids_to_instance_mappings = {}
|
300
|
+
all_sample_ids = preprocess_response.sample_ids
|
301
|
+
for sample_id in preprocess_response.sample_ids:
|
302
|
+
instances_masks = instance_mask_encoder(sample_id, preprocess_response)
|
303
|
+
instances_ids = list(range(data_length, data_length + len(instances_masks)))
|
304
|
+
sample_ids_to_instance_mappings[sample_id] = instances_ids
|
305
|
+
all_sample_ids.extend(instances_ids)
|
306
|
+
preprocess_response.sample_ids_to_instance_mappings = sample_ids_to_instance_mappings
|
307
|
+
data_length = len(all_sample_ids)
|
308
|
+
preprocess_response.sample_ids = all_sample_ids
|
309
|
+
_validate_result(result)
|
310
|
+
return result
|
311
|
+
|
312
|
+
return inner
|
313
|
+
|
314
|
+
return decorating_function
|
315
|
+
|
273
316
|
|
274
317
|
def tensorleap_unlabeled_preprocess():
|
275
318
|
def decorating_function(user_function: Callable[[], PreprocessResponse]):
|
@@ -296,6 +339,31 @@ def tensorleap_unlabeled_preprocess():
|
|
296
339
|
return decorating_function
|
297
340
|
|
298
341
|
|
342
|
+
def tensorleap_instance_encoder():
|
343
|
+
def decorating_function(user_function: Callable[[], PreprocessResponse]):
|
344
|
+
leap_binder.set_unlabeled_data_preprocess(user_function)
|
345
|
+
|
346
|
+
def _validate_input_args(*args, **kwargs):
|
347
|
+
assert len(args) == 0 and len(kwargs) == 0, \
|
348
|
+
(f'tensorleap_instance_encoder validation failed: '
|
349
|
+
f'The function should not take any arguments. Got {args} and {kwargs}.')
|
350
|
+
|
351
|
+
def _validate_result(result):
|
352
|
+
assert isinstance(result, PreprocessResponse), \
|
353
|
+
(f'tensorleap_instance_encoder validation failed: '
|
354
|
+
f'The return type should be a PreprocessResponse. Got {type(result)}.')
|
355
|
+
|
356
|
+
def inner(*args, **kwargs):
|
357
|
+
_validate_input_args(*args, **kwargs)
|
358
|
+
result = user_function()
|
359
|
+
_validate_result(result)
|
360
|
+
return result
|
361
|
+
|
362
|
+
return inner
|
363
|
+
|
364
|
+
return decorating_function
|
365
|
+
|
366
|
+
|
299
367
|
def tensorleap_input_encoder(name: str, channel_dim=-1, model_input_index=None):
|
300
368
|
def decorating_function(user_function: SectionCallableInterface):
|
301
369
|
for input_handler in leap_binder.setup_container.inputs:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/cli_config_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/experiment_context.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/visualizers/default_visualizers.py
RENAMED
File without changes
|