code-loader 1.0.180.dev5__tar.gz → 1.0.181.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.180.dev5 → code_loader-1.0.181.dev0}/PKG-INFO +1 -1
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/datasetclasses.py +1 -1
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/leaploader.py +74 -1
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/leaploaderbase.py +6 -1
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/pyproject.toml +2 -1
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/LICENSE +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/README.md +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/__init__.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/sim_config.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/inner_leap_binder/leapbinder_decorators.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/mixpanel_tracker.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/utils.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -16,7 +16,7 @@ from code_loader.contract.datasetclasses import DatasetSample, DatasetBaseHandle
|
|
|
16
16
|
PreprocessResponse, VisualizerHandler, LeapData, \
|
|
17
17
|
PredictionTypeHandler, MetadataHandler, CustomLayerHandler, MetricHandler, VisualizerHandlerData, MetricHandlerData, \
|
|
18
18
|
MetricCallableReturnType, CustomLossHandlerData, CustomLossHandler, RawInputsForHeatmap, SamplePreprocessResponse, \
|
|
19
|
-
ElementInstance, custom_latent_space_attribute, DatasetIntegrationSetup, InstanceMetricHandler
|
|
19
|
+
ElementInstance, custom_latent_space_attribute, DatasetIntegrationSetup, InstanceMetricHandler, _simulation_context
|
|
20
20
|
from code_loader.contract.enums import DataStateEnum, TestingSectionEnum, DataStateType, DatasetMetadataType
|
|
21
21
|
from code_loader.contract.exceptions import DatasetScriptException
|
|
22
22
|
from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
|
|
@@ -38,6 +38,20 @@ def _serialize_sim_bounds(bounds) -> dict:
|
|
|
38
38
|
raise ValueError(f"Unknown bounds type: {type(bounds)}")
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
def _sample_sim_params(sim_config):
|
|
42
|
+
# type: (Dict[str, Any]) -> Dict[str, Any]
|
|
43
|
+
params = {}
|
|
44
|
+
for name, param_config in sim_config.items():
|
|
45
|
+
bounds = param_config.bounds
|
|
46
|
+
if isinstance(bounds, FloatBounds):
|
|
47
|
+
params[name] = (bounds.min + bounds.max) / 2.0
|
|
48
|
+
elif isinstance(bounds, IntBounds):
|
|
49
|
+
params[name] = int((bounds.min + bounds.max) / 2)
|
|
50
|
+
else: # CategoricalBounds
|
|
51
|
+
params[name] = bounds.values[0]
|
|
52
|
+
return params
|
|
53
|
+
|
|
54
|
+
|
|
41
55
|
class LeapLoader(LeapLoaderBase):
|
|
42
56
|
def __init__(self, code_path: str, code_entry_name: str):
|
|
43
57
|
super().__init__(code_path, code_entry_name)
|
|
@@ -223,6 +237,8 @@ class LeapLoader(LeapLoaderBase):
|
|
|
223
237
|
test_payloads.append(preprocess_test_payload)
|
|
224
238
|
handlers_test_payloads = self._check_handlers()
|
|
225
239
|
test_payloads.extend(handlers_test_payloads)
|
|
240
|
+
simulation_test_payloads = self._check_simulations()
|
|
241
|
+
test_payloads.extend(simulation_test_payloads)
|
|
226
242
|
is_valid = all([payload.is_passed for payload in test_payloads])
|
|
227
243
|
setup_response = self.get_dataset_setup_response(handlers_test_payloads)
|
|
228
244
|
|
|
@@ -299,6 +315,63 @@ class LeapLoader(LeapLoaderBase):
|
|
|
299
315
|
result_payloads.extend(test_result)
|
|
300
316
|
return result_payloads
|
|
301
317
|
|
|
318
|
+
def _check_simulations(self):
|
|
319
|
+
# type: () -> List[DatasetTestResultPayload]
|
|
320
|
+
result_payloads = []
|
|
321
|
+
for sim in global_leap_binder.setup_container.simulations:
|
|
322
|
+
test_result = DatasetTestResultPayload(sim.name)
|
|
323
|
+
try:
|
|
324
|
+
kwargs = _sample_sim_params(sim.sim_config)
|
|
325
|
+
kwargs["N"] = 1
|
|
326
|
+
if "seed" in inspect.signature(sim.function).parameters:
|
|
327
|
+
kwargs["seed"] = 0
|
|
328
|
+
_simulation_context["active"] = True
|
|
329
|
+
try:
|
|
330
|
+
preprocess_response = sim.function(**kwargs)
|
|
331
|
+
finally:
|
|
332
|
+
_simulation_context["active"] = False
|
|
333
|
+
preprocess_response.state = DataStateType.additional
|
|
334
|
+
if not isinstance(preprocess_response, PreprocessResponse):
|
|
335
|
+
raise TypeError(
|
|
336
|
+
"Expected PreprocessResponse, got {}".format(type(preprocess_response).__name__)
|
|
337
|
+
)
|
|
338
|
+
if preprocess_response.length < 1:
|
|
339
|
+
raise ValueError("Simulation returned PreprocessResponse with length < 1")
|
|
340
|
+
except Exception as e:
|
|
341
|
+
line_number, file_name, stacktrace = get_root_exception_file_and_line_number()
|
|
342
|
+
test_result.display[TestingSectionEnum.Errors.name] = (
|
|
343
|
+
"{} in file {}, line_number: {}\nStacktrace:\n{}".format(
|
|
344
|
+
repr(e), file_name, line_number, stacktrace
|
|
345
|
+
)
|
|
346
|
+
)
|
|
347
|
+
test_result.is_passed = False
|
|
348
|
+
result_payloads.append(test_result)
|
|
349
|
+
return result_payloads
|
|
350
|
+
|
|
351
|
+
def run_simulation_check(self, sim_name):
|
|
352
|
+
# type: (str) -> Dict[str, npt.NDArray[np.float32]]
|
|
353
|
+
self.exec_script()
|
|
354
|
+
sim = next(
|
|
355
|
+
(s for s in global_leap_binder.setup_container.simulations if s.name == sim_name),
|
|
356
|
+
None,
|
|
357
|
+
)
|
|
358
|
+
if sim is None:
|
|
359
|
+
raise ValueError("No simulation registered with name '{}'".format(sim_name))
|
|
360
|
+
kwargs = _sample_sim_params(sim.sim_config)
|
|
361
|
+
kwargs["N"] = 1
|
|
362
|
+
if "seed" in inspect.signature(sim.function).parameters:
|
|
363
|
+
kwargs["seed"] = 0
|
|
364
|
+
_simulation_context["active"] = True
|
|
365
|
+
try:
|
|
366
|
+
sim_preprocess = sim.function(**kwargs)
|
|
367
|
+
finally:
|
|
368
|
+
_simulation_context["active"] = False
|
|
369
|
+
sim_preprocess.state = DataStateType.additional
|
|
370
|
+
result = {}
|
|
371
|
+
for handler in global_leap_binder.setup_container.inputs:
|
|
372
|
+
result[handler.name] = handler.function(0, sim_preprocess)
|
|
373
|
+
return result
|
|
374
|
+
|
|
302
375
|
@staticmethod
|
|
303
376
|
def _get_all_dataset_base_handlers() -> List[Union[DatasetBaseHandler, MetadataHandler]]:
|
|
304
377
|
all_dataset_base_handlers: List[Union[DatasetBaseHandler, MetadataHandler]] = []
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import abstractmethod
|
|
4
4
|
|
|
5
|
-
from typing import Dict, List, Union, Type, Optional, Tuple
|
|
5
|
+
from typing import Any, Dict, List, Union, Type, Optional, Tuple
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
import numpy.typing as npt
|
|
@@ -153,6 +153,11 @@ class LeapLoaderBase:
|
|
|
153
153
|
def get_heatmap_visualizer_raw_vis_input_arg_name(self, visualizer_name: str) -> Optional[str]:
|
|
154
154
|
pass
|
|
155
155
|
|
|
156
|
+
@abstractmethod
|
|
157
|
+
def run_simulation_check(self, sim_name):
|
|
158
|
+
# type: (str) -> Dict[str, Any]
|
|
159
|
+
pass
|
|
160
|
+
|
|
156
161
|
def is_custom_latent_space(self) -> bool:
|
|
157
162
|
if not self.code_entry_name or not self.code_path:
|
|
158
163
|
return False
|
|
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.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/experiment_api/experiment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev5 → code_loader-1.0.181.dev0}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|