sierra-research 1.3.11__py3-none-any.whl → 1.5.0__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.
- sierra/__init__.py +3 -3
- sierra/core/__init__.py +3 -3
- sierra/core/batchroot.py +223 -0
- sierra/core/cmdline.py +681 -1057
- sierra/core/compare.py +11 -0
- sierra/core/config.py +96 -88
- sierra/core/engine.py +306 -0
- sierra/core/execenv.py +380 -0
- sierra/core/expdef.py +11 -0
- sierra/core/experiment/__init__.py +1 -0
- sierra/core/experiment/bindings.py +150 -101
- sierra/core/experiment/definition.py +414 -245
- sierra/core/experiment/spec.py +83 -85
- sierra/core/exproot.py +44 -0
- sierra/core/generators/__init__.py +10 -0
- sierra/core/generators/experiment.py +528 -0
- sierra/core/generators/generator_factory.py +138 -137
- sierra/core/graphs/__init__.py +23 -0
- sierra/core/graphs/bcbridge.py +94 -0
- sierra/core/graphs/heatmap.py +245 -324
- sierra/core/graphs/pathset.py +27 -0
- sierra/core/graphs/schema.py +77 -0
- sierra/core/graphs/stacked_line.py +341 -0
- sierra/core/graphs/summary_line.py +506 -0
- sierra/core/logging.py +3 -2
- sierra/core/models/__init__.py +3 -1
- sierra/core/models/info.py +19 -0
- sierra/core/models/interface.py +52 -122
- sierra/core/pipeline/__init__.py +2 -5
- sierra/core/pipeline/pipeline.py +228 -126
- sierra/core/pipeline/stage1/__init__.py +10 -0
- sierra/core/pipeline/stage1/pipeline_stage1.py +45 -31
- sierra/core/pipeline/stage2/__init__.py +10 -0
- sierra/core/pipeline/stage2/pipeline_stage2.py +8 -11
- sierra/core/pipeline/stage2/runner.py +401 -0
- sierra/core/pipeline/stage3/__init__.py +12 -0
- sierra/core/pipeline/stage3/gather.py +321 -0
- sierra/core/pipeline/stage3/pipeline_stage3.py +37 -84
- sierra/core/pipeline/stage4/__init__.py +12 -2
- sierra/core/pipeline/stage4/pipeline_stage4.py +36 -354
- sierra/core/pipeline/stage5/__init__.py +12 -0
- sierra/core/pipeline/stage5/pipeline_stage5.py +33 -208
- sierra/core/pipeline/yaml.py +48 -0
- sierra/core/plugin.py +529 -62
- sierra/core/proc.py +11 -0
- sierra/core/prod.py +11 -0
- sierra/core/ros1/__init__.py +5 -1
- sierra/core/ros1/callbacks.py +22 -21
- sierra/core/ros1/cmdline.py +59 -88
- sierra/core/ros1/generators.py +159 -175
- sierra/core/ros1/variables/__init__.py +3 -0
- sierra/core/ros1/variables/exp_setup.py +122 -116
- sierra/core/startup.py +106 -76
- sierra/core/stat_kernels.py +4 -5
- sierra/core/storage.py +13 -32
- sierra/core/trampoline.py +30 -0
- sierra/core/types.py +116 -71
- sierra/core/utils.py +103 -106
- sierra/core/variables/__init__.py +1 -1
- sierra/core/variables/base_variable.py +12 -17
- sierra/core/variables/batch_criteria.py +387 -481
- sierra/core/variables/builtin.py +135 -0
- sierra/core/variables/exp_setup.py +19 -39
- sierra/core/variables/population_size.py +72 -76
- sierra/core/variables/variable_density.py +44 -68
- sierra/core/vector.py +1 -1
- sierra/main.py +256 -88
- sierra/plugins/__init__.py +119 -0
- sierra/plugins/compare/__init__.py +14 -0
- sierra/plugins/compare/graphs/__init__.py +19 -0
- sierra/plugins/compare/graphs/cmdline.py +120 -0
- sierra/plugins/compare/graphs/comparator.py +291 -0
- sierra/plugins/compare/graphs/inter_controller.py +531 -0
- sierra/plugins/compare/graphs/inter_scenario.py +297 -0
- sierra/plugins/compare/graphs/namecalc.py +53 -0
- sierra/plugins/compare/graphs/outputroot.py +73 -0
- sierra/plugins/compare/graphs/plugin.py +147 -0
- sierra/plugins/compare/graphs/preprocess.py +172 -0
- sierra/plugins/compare/graphs/schema.py +37 -0
- sierra/plugins/engine/__init__.py +14 -0
- sierra/plugins/engine/argos/__init__.py +18 -0
- sierra/plugins/{platform → engine}/argos/cmdline.py +144 -151
- sierra/plugins/{platform/argos/variables → engine/argos/generators}/__init__.py +5 -0
- sierra/plugins/engine/argos/generators/engine.py +394 -0
- sierra/plugins/engine/argos/plugin.py +393 -0
- sierra/plugins/{platform/argos/generators → engine/argos/variables}/__init__.py +5 -0
- sierra/plugins/engine/argos/variables/arena_shape.py +183 -0
- sierra/plugins/engine/argos/variables/cameras.py +240 -0
- sierra/plugins/engine/argos/variables/constant_density.py +112 -0
- sierra/plugins/engine/argos/variables/exp_setup.py +82 -0
- sierra/plugins/{platform → engine}/argos/variables/physics_engines.py +83 -87
- sierra/plugins/engine/argos/variables/population_constant_density.py +178 -0
- sierra/plugins/engine/argos/variables/population_size.py +115 -0
- sierra/plugins/engine/argos/variables/population_variable_density.py +123 -0
- sierra/plugins/engine/argos/variables/rendering.py +108 -0
- sierra/plugins/engine/ros1gazebo/__init__.py +18 -0
- sierra/plugins/engine/ros1gazebo/cmdline.py +175 -0
- sierra/plugins/{platform/ros1robot → engine/ros1gazebo}/generators/__init__.py +5 -0
- sierra/plugins/engine/ros1gazebo/generators/engine.py +125 -0
- sierra/plugins/engine/ros1gazebo/plugin.py +404 -0
- sierra/plugins/engine/ros1gazebo/variables/__init__.py +15 -0
- sierra/plugins/engine/ros1gazebo/variables/population_size.py +214 -0
- sierra/plugins/engine/ros1robot/__init__.py +18 -0
- sierra/plugins/engine/ros1robot/cmdline.py +159 -0
- sierra/plugins/{platform/ros1gazebo → engine/ros1robot}/generators/__init__.py +4 -0
- sierra/plugins/engine/ros1robot/generators/engine.py +95 -0
- sierra/plugins/engine/ros1robot/plugin.py +410 -0
- sierra/plugins/{hpc/local → engine/ros1robot/variables}/__init__.py +5 -0
- sierra/plugins/engine/ros1robot/variables/population_size.py +146 -0
- sierra/plugins/execenv/__init__.py +11 -0
- sierra/plugins/execenv/hpc/__init__.py +18 -0
- sierra/plugins/execenv/hpc/adhoc/__init__.py +18 -0
- sierra/plugins/execenv/hpc/adhoc/cmdline.py +30 -0
- sierra/plugins/execenv/hpc/adhoc/plugin.py +131 -0
- sierra/plugins/execenv/hpc/cmdline.py +137 -0
- sierra/plugins/execenv/hpc/local/__init__.py +18 -0
- sierra/plugins/execenv/hpc/local/cmdline.py +31 -0
- sierra/plugins/execenv/hpc/local/plugin.py +145 -0
- sierra/plugins/execenv/hpc/pbs/__init__.py +18 -0
- sierra/plugins/execenv/hpc/pbs/cmdline.py +30 -0
- sierra/plugins/execenv/hpc/pbs/plugin.py +121 -0
- sierra/plugins/execenv/hpc/slurm/__init__.py +18 -0
- sierra/plugins/execenv/hpc/slurm/cmdline.py +30 -0
- sierra/plugins/execenv/hpc/slurm/plugin.py +133 -0
- sierra/plugins/execenv/prefectserver/__init__.py +18 -0
- sierra/plugins/execenv/prefectserver/cmdline.py +66 -0
- sierra/plugins/execenv/prefectserver/dockerremote/__init__.py +18 -0
- sierra/plugins/execenv/prefectserver/dockerremote/cmdline.py +66 -0
- sierra/plugins/execenv/prefectserver/dockerremote/plugin.py +132 -0
- sierra/plugins/execenv/prefectserver/flow.py +66 -0
- sierra/plugins/execenv/prefectserver/local/__init__.py +18 -0
- sierra/plugins/execenv/prefectserver/local/cmdline.py +29 -0
- sierra/plugins/execenv/prefectserver/local/plugin.py +133 -0
- sierra/plugins/{hpc/adhoc → execenv/robot}/__init__.py +1 -0
- sierra/plugins/execenv/robot/turtlebot3/__init__.py +18 -0
- sierra/plugins/execenv/robot/turtlebot3/plugin.py +204 -0
- sierra/plugins/expdef/__init__.py +14 -0
- sierra/plugins/expdef/json/__init__.py +14 -0
- sierra/plugins/expdef/json/plugin.py +504 -0
- sierra/plugins/expdef/xml/__init__.py +14 -0
- sierra/plugins/expdef/xml/plugin.py +386 -0
- sierra/{core/hpc → plugins/proc}/__init__.py +1 -1
- sierra/plugins/proc/collate/__init__.py +15 -0
- sierra/plugins/proc/collate/cmdline.py +47 -0
- sierra/plugins/proc/collate/plugin.py +271 -0
- sierra/plugins/proc/compress/__init__.py +18 -0
- sierra/plugins/proc/compress/cmdline.py +47 -0
- sierra/plugins/proc/compress/plugin.py +123 -0
- sierra/plugins/proc/decompress/__init__.py +18 -0
- sierra/plugins/proc/decompress/plugin.py +96 -0
- sierra/plugins/proc/imagize/__init__.py +15 -0
- sierra/plugins/proc/imagize/cmdline.py +49 -0
- sierra/plugins/proc/imagize/plugin.py +270 -0
- sierra/plugins/proc/modelrunner/__init__.py +16 -0
- sierra/plugins/proc/modelrunner/plugin.py +250 -0
- sierra/plugins/proc/statistics/__init__.py +15 -0
- sierra/plugins/proc/statistics/cmdline.py +64 -0
- sierra/plugins/proc/statistics/plugin.py +390 -0
- sierra/plugins/{hpc → prod}/__init__.py +1 -0
- sierra/plugins/prod/graphs/__init__.py +18 -0
- sierra/plugins/prod/graphs/cmdline.py +269 -0
- sierra/plugins/prod/graphs/collate.py +279 -0
- sierra/plugins/prod/graphs/inter/__init__.py +13 -0
- sierra/plugins/prod/graphs/inter/generate.py +83 -0
- sierra/plugins/prod/graphs/inter/heatmap.py +86 -0
- sierra/plugins/prod/graphs/inter/line.py +134 -0
- sierra/plugins/prod/graphs/intra/__init__.py +15 -0
- sierra/plugins/prod/graphs/intra/generate.py +202 -0
- sierra/plugins/prod/graphs/intra/heatmap.py +74 -0
- sierra/plugins/prod/graphs/intra/line.py +114 -0
- sierra/plugins/prod/graphs/plugin.py +103 -0
- sierra/plugins/prod/graphs/targets.py +63 -0
- sierra/plugins/prod/render/__init__.py +18 -0
- sierra/plugins/prod/render/cmdline.py +72 -0
- sierra/plugins/prod/render/plugin.py +282 -0
- sierra/plugins/storage/__init__.py +5 -0
- sierra/plugins/storage/arrow/__init__.py +18 -0
- sierra/plugins/storage/arrow/plugin.py +38 -0
- sierra/plugins/storage/csv/__init__.py +9 -0
- sierra/plugins/storage/csv/plugin.py +12 -5
- sierra/version.py +3 -2
- sierra_research-1.5.0.dist-info/METADATA +238 -0
- sierra_research-1.5.0.dist-info/RECORD +186 -0
- {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info}/WHEEL +1 -2
- sierra/core/experiment/xml.py +0 -454
- sierra/core/generators/controller_generator_parser.py +0 -34
- sierra/core/generators/exp_creator.py +0 -351
- sierra/core/generators/exp_generators.py +0 -142
- sierra/core/graphs/scatterplot2D.py +0 -109
- sierra/core/graphs/stacked_line_graph.py +0 -251
- sierra/core/graphs/stacked_surface_graph.py +0 -220
- sierra/core/graphs/summary_line_graph.py +0 -371
- sierra/core/hpc/cmdline.py +0 -142
- sierra/core/models/graphs.py +0 -87
- sierra/core/pipeline/stage2/exp_runner.py +0 -286
- sierra/core/pipeline/stage3/imagizer.py +0 -149
- sierra/core/pipeline/stage3/run_collator.py +0 -317
- sierra/core/pipeline/stage3/statistics_calculator.py +0 -478
- sierra/core/pipeline/stage4/graph_collator.py +0 -320
- sierra/core/pipeline/stage4/inter_exp_graph_generator.py +0 -240
- sierra/core/pipeline/stage4/intra_exp_graph_generator.py +0 -317
- sierra/core/pipeline/stage4/model_runner.py +0 -168
- sierra/core/pipeline/stage4/rendering.py +0 -283
- sierra/core/pipeline/stage4/yaml_config_loader.py +0 -103
- sierra/core/pipeline/stage5/inter_scenario_comparator.py +0 -328
- sierra/core/pipeline/stage5/intra_scenario_comparator.py +0 -989
- sierra/core/platform.py +0 -493
- sierra/core/plugin_manager.py +0 -369
- sierra/core/root_dirpath_generator.py +0 -241
- sierra/plugins/hpc/adhoc/plugin.py +0 -125
- sierra/plugins/hpc/local/plugin.py +0 -81
- sierra/plugins/hpc/pbs/__init__.py +0 -9
- sierra/plugins/hpc/pbs/plugin.py +0 -126
- sierra/plugins/hpc/slurm/__init__.py +0 -9
- sierra/plugins/hpc/slurm/plugin.py +0 -130
- sierra/plugins/platform/__init__.py +0 -9
- sierra/plugins/platform/argos/__init__.py +0 -9
- sierra/plugins/platform/argos/generators/platform_generators.py +0 -383
- sierra/plugins/platform/argos/plugin.py +0 -337
- sierra/plugins/platform/argos/variables/arena_shape.py +0 -145
- sierra/plugins/platform/argos/variables/cameras.py +0 -243
- sierra/plugins/platform/argos/variables/constant_density.py +0 -136
- sierra/plugins/platform/argos/variables/exp_setup.py +0 -113
- sierra/plugins/platform/argos/variables/population_constant_density.py +0 -175
- sierra/plugins/platform/argos/variables/population_size.py +0 -102
- sierra/plugins/platform/argos/variables/population_variable_density.py +0 -132
- sierra/plugins/platform/argos/variables/rendering.py +0 -104
- sierra/plugins/platform/ros1gazebo/__init__.py +0 -9
- sierra/plugins/platform/ros1gazebo/cmdline.py +0 -213
- sierra/plugins/platform/ros1gazebo/generators/platform_generators.py +0 -137
- sierra/plugins/platform/ros1gazebo/plugin.py +0 -335
- sierra/plugins/platform/ros1gazebo/variables/__init__.py +0 -10
- sierra/plugins/platform/ros1gazebo/variables/population_size.py +0 -204
- sierra/plugins/platform/ros1robot/__init__.py +0 -9
- sierra/plugins/platform/ros1robot/cmdline.py +0 -175
- sierra/plugins/platform/ros1robot/generators/platform_generators.py +0 -112
- sierra/plugins/platform/ros1robot/plugin.py +0 -373
- sierra/plugins/platform/ros1robot/variables/__init__.py +0 -10
- sierra/plugins/platform/ros1robot/variables/population_size.py +0 -146
- sierra/plugins/robot/__init__.py +0 -9
- sierra/plugins/robot/turtlebot3/__init__.py +0 -9
- sierra/plugins/robot/turtlebot3/plugin.py +0 -194
- sierra_research-1.3.11.data/data/share/man/man1/sierra-cli.1 +0 -2349
- sierra_research-1.3.11.data/data/share/man/man7/sierra-examples.7 +0 -508
- sierra_research-1.3.11.data/data/share/man/man7/sierra-exec-envs.7 +0 -331
- sierra_research-1.3.11.data/data/share/man/man7/sierra-glossary.7 +0 -285
- sierra_research-1.3.11.data/data/share/man/man7/sierra-platforms.7 +0 -358
- sierra_research-1.3.11.data/data/share/man/man7/sierra-usage.7 +0 -729
- sierra_research-1.3.11.data/data/share/man/man7/sierra.7 +0 -78
- sierra_research-1.3.11.dist-info/METADATA +0 -492
- sierra_research-1.3.11.dist-info/RECORD +0 -133
- sierra_research-1.3.11.dist-info/top_level.txt +0 -1
- {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info}/entry_points.txt +0 -0
- {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info/licenses}/LICENSE +0 -0
sierra/core/experiment/spec.py
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# Copyright 2020 John Harwell, All rights reserved.
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: MIT
|
4
|
+
"""
|
5
|
+
Contains experiment specification bits in the interest of DRY.
|
6
|
+
"""
|
4
7
|
|
5
8
|
# Core packages
|
6
9
|
import typing as tp
|
@@ -13,64 +16,66 @@ import pathlib
|
|
13
16
|
import sierra.core.variables.batch_criteria as bc
|
14
17
|
from sierra.core.utils import ArenaExtent
|
15
18
|
from sierra.core.vector import Vector3D
|
16
|
-
import sierra.core.
|
19
|
+
import sierra.core.plugin as pm
|
17
20
|
from sierra.core import types, config
|
18
|
-
from sierra.core.experiment import
|
21
|
+
from sierra.core.experiment import definition
|
19
22
|
|
20
23
|
|
21
|
-
class SimpleBatchScaffoldSpec
|
22
|
-
def __init__(self,
|
23
|
-
criteria: bc.BatchCriteria,
|
24
|
-
log: bool = False) -> None:
|
24
|
+
class SimpleBatchScaffoldSpec:
|
25
|
+
def __init__(self, criteria: bc.XVarBatchCriteria, log: bool = False) -> None:
|
25
26
|
self.criteria = criteria
|
26
27
|
self.chgs = criteria.gen_attr_changelist()
|
27
|
-
self.adds = criteria.
|
28
|
+
self.adds = criteria.gen_element_addlist()
|
28
29
|
self.rms = criteria.gen_tag_rmlist()
|
29
30
|
self.logger = logging.getLogger(__name__)
|
30
|
-
|
31
31
|
self.n_exps = 0
|
32
32
|
|
33
33
|
self.mods = []
|
34
34
|
self.is_compound = False
|
35
35
|
|
36
|
-
assert len(self.rms) == 0
|
37
|
-
"Batch criteria cannot remove XML tags"
|
36
|
+
assert len(self.rms) == 0, "Batch criteria cannot remove expdef elements"
|
38
37
|
|
39
38
|
if self.chgs:
|
40
39
|
self.mods = self.chgs
|
41
40
|
self.n_exps = len(self.chgs)
|
42
41
|
if log:
|
43
|
-
self.logger.info(
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
self.logger.info(
|
43
|
+
(
|
44
|
+
"Executing scaffold: cli=%s: modify %s "
|
45
|
+
"expdef elements per experiment"
|
46
|
+
),
|
47
|
+
self.criteria.name,
|
48
|
+
len(self.chgs[0]),
|
49
|
+
)
|
47
50
|
elif self.adds:
|
48
51
|
self.mods = self.adds
|
49
52
|
self.n_exps = len(self.adds)
|
50
53
|
if log:
|
51
|
-
self.logger.info(
|
52
|
-
|
53
|
-
|
54
|
-
|
54
|
+
self.logger.info(
|
55
|
+
(
|
56
|
+
"Executing scaffold: cli=%s: Add %s expdef "
|
57
|
+
"elements per experiment"
|
58
|
+
),
|
59
|
+
self.criteria.name,
|
60
|
+
len(self.adds[0]),
|
61
|
+
)
|
55
62
|
else:
|
56
|
-
raise RuntimeError(("This spec can't be used with compound "
|
57
|
-
"scaffolding"))
|
63
|
+
raise RuntimeError(("This spec can't be used with compound scaffolding"))
|
58
64
|
|
59
|
-
def __iter__(
|
60
|
-
|
65
|
+
def __iter__(
|
66
|
+
self,
|
67
|
+
) -> tp.Iterator[tp.Union[definition.AttrChangeSet, definition.ElementAddList]]:
|
61
68
|
return iter(self.mods)
|
62
69
|
|
63
70
|
def __len__(self) -> int:
|
64
71
|
return self.n_exps
|
65
72
|
|
66
73
|
|
67
|
-
class CompoundBatchScaffoldSpec
|
68
|
-
def __init__(self,
|
69
|
-
criteria: bc.BatchCriteria,
|
70
|
-
log: bool = False) -> None:
|
74
|
+
class CompoundBatchScaffoldSpec:
|
75
|
+
def __init__(self, criteria: bc.XVarBatchCriteria, log: bool = False) -> None:
|
71
76
|
self.criteria = criteria
|
72
77
|
self.chgs = criteria.gen_attr_changelist()
|
73
|
-
self.adds = criteria.
|
78
|
+
self.adds = criteria.gen_element_addlist()
|
74
79
|
self.rms = criteria.gen_tag_rmlist()
|
75
80
|
self.logger = logging.getLogger(__name__)
|
76
81
|
|
@@ -79,8 +84,7 @@ class CompoundBatchScaffoldSpec():
|
|
79
84
|
self.is_compound = True
|
80
85
|
self.mods = []
|
81
86
|
|
82
|
-
assert len(self.rms) == 0
|
83
|
-
"Batch criteria cannot remove XML tags"
|
87
|
+
assert len(self.rms) == 0, "Batch criteria cannot remove expdef elements"
|
84
88
|
|
85
89
|
if self.chgs and self.adds:
|
86
90
|
for addlist in self.adds:
|
@@ -90,22 +94,25 @@ class CompoundBatchScaffoldSpec():
|
|
90
94
|
self.n_exps += 1
|
91
95
|
|
92
96
|
if log:
|
93
|
-
self.logger.info(
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
97
|
+
self.logger.info(
|
98
|
+
(
|
99
|
+
"Executing scaffold: cli=%s: Add "
|
100
|
+
"%s expdef elements AND modify %s expdef "
|
101
|
+
"elements per experiment"
|
102
|
+
),
|
103
|
+
self.criteria.name,
|
104
|
+
len(self.adds[0]),
|
105
|
+
len(self.chgs[0]),
|
106
|
+
)
|
99
107
|
|
100
108
|
else:
|
101
|
-
raise RuntimeError(("This spec can only be used with compound "
|
102
|
-
"scaffolding"))
|
109
|
+
raise RuntimeError(("This spec can only be used with compound scaffolding"))
|
103
110
|
|
104
111
|
def __len__(self) -> int:
|
105
112
|
return self.n_exps
|
106
113
|
|
107
114
|
|
108
|
-
class ExperimentSpec
|
115
|
+
class ExperimentSpec:
|
109
116
|
"""
|
110
117
|
The specification for a single experiment with a batch.
|
111
118
|
|
@@ -123,72 +130,63 @@ class ExperimentSpec():
|
|
123
130
|
- Full scenario name
|
124
131
|
"""
|
125
132
|
|
126
|
-
def __init__(
|
127
|
-
|
128
|
-
|
129
|
-
|
133
|
+
def __init__(
|
134
|
+
self,
|
135
|
+
criteria: bc.XVarBatchCriteria,
|
136
|
+
batch_input_root: pathlib.Path,
|
137
|
+
exp_num: int,
|
138
|
+
cmdopts: types.Cmdopts,
|
139
|
+
) -> None:
|
130
140
|
self.exp_num = exp_num
|
131
|
-
exp_name = criteria.gen_exp_names(
|
141
|
+
exp_name = criteria.gen_exp_names()[exp_num]
|
132
142
|
|
133
|
-
self.exp_input_root =
|
143
|
+
self.exp_input_root = batch_input_root / exp_name
|
134
144
|
self.exp_def_fpath = self.exp_input_root / config.kPickleLeaf
|
135
145
|
|
136
146
|
self.logger = logging.getLogger(__name__)
|
137
147
|
self.criteria = criteria
|
138
148
|
|
139
|
-
from_bivar_bc1 = False
|
140
|
-
from_bivar_bc2 = False
|
141
|
-
from_univar_bc = False
|
142
|
-
|
143
|
-
if criteria.is_bivar():
|
144
|
-
bivar = tp.cast(bc.BivarBatchCriteria, criteria)
|
145
|
-
from_bivar_bc1 = hasattr(bivar.criteria1,
|
146
|
-
'exp_scenario_name')
|
147
|
-
from_bivar_bc2 = hasattr(bivar.criteria2,
|
148
|
-
'exp_scenario_name')
|
149
|
-
else:
|
150
|
-
from_univar_bc = hasattr(criteria,
|
151
|
-
'exp_scenario_name')
|
152
|
-
|
153
149
|
# Need to get per-experiment arena dimensions from batch criteria, as
|
154
150
|
# they might be different for each experiment
|
155
|
-
if
|
156
|
-
self.arena_dim = criteria.arena_dims(cmdopts)[exp_num]
|
157
|
-
self.scenario_name = criteria.exp_scenario_name(exp_num)
|
158
|
-
self.logger.debug(
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
self.logger.debug("Read scenario dimensions '%s' bivariate batch criteria",
|
163
|
-
self.arena_dim)
|
164
|
-
self.scenario_name = criteria.exp_scenario_name(exp_num)
|
165
|
-
|
151
|
+
if self.criteria.computable_exp_scenario_name():
|
152
|
+
self.arena_dim = self.criteria.arena_dims(cmdopts)[exp_num]
|
153
|
+
self.scenario_name = self.criteria.exp_scenario_name(exp_num)
|
154
|
+
self.logger.debug(
|
155
|
+
"Read scenario dimensions '%s' from batch criteria",
|
156
|
+
self.arena_dim,
|
157
|
+
)
|
166
158
|
else: # Default case: scenario dimensions read from cmdline
|
167
|
-
|
168
|
-
|
169
|
-
|
159
|
+
module = pm.module_load_tiered(
|
160
|
+
project=cmdopts["project"], path="generators.scenario"
|
161
|
+
)
|
162
|
+
kw = module.to_dict(cmdopts["scenario"])
|
170
163
|
self.arena_dim = ArenaExtent(
|
171
|
-
Vector3D(kw[
|
172
|
-
|
173
|
-
|
164
|
+
Vector3D(kw["arena_x"], kw["arena_y"], kw["arena_z"])
|
165
|
+
)
|
166
|
+
self.logger.debug(
|
167
|
+
"Read scenario dimensions %s from cmdline spec", self.arena_dim
|
168
|
+
)
|
174
169
|
|
175
|
-
self.scenario_name = cmdopts[
|
170
|
+
self.scenario_name = cmdopts["scenario"]
|
176
171
|
|
177
172
|
|
178
|
-
def scaffold_spec_factory(
|
179
|
-
|
180
|
-
|
173
|
+
def scaffold_spec_factory(
|
174
|
+
criteria: bc.XVarBatchCriteria, **kwargs
|
175
|
+
) -> tp.Union[SimpleBatchScaffoldSpec, CompoundBatchScaffoldSpec]:
|
181
176
|
chgs = criteria.gen_attr_changelist()
|
182
|
-
adds = criteria.
|
177
|
+
adds = criteria.gen_element_addlist()
|
183
178
|
|
184
179
|
if chgs and adds:
|
185
|
-
logging.debug(
|
186
|
-
|
180
|
+
logging.debug(
|
181
|
+
"Create compound batch experiment scaffolding spec for '%s'",
|
182
|
+
criteria.name,
|
183
|
+
)
|
187
184
|
return CompoundBatchScaffoldSpec(criteria, **kwargs)
|
188
185
|
else:
|
189
|
-
logging.debug(
|
190
|
-
|
186
|
+
logging.debug(
|
187
|
+
"Create simple batch experiment scaffolding spec for '%s'", criteria.name
|
188
|
+
)
|
191
189
|
return SimpleBatchScaffoldSpec(criteria, **kwargs)
|
192
190
|
|
193
191
|
|
194
|
-
|
192
|
+
__all__ = ["ExperimentSpec"]
|
sierra/core/exproot.py
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2024 John Harwell, All rights reserved.
|
3
|
+
#
|
4
|
+
# SPDX-License Identifier: MIT
|
5
|
+
#
|
6
|
+
"""
|
7
|
+
Container module for functionality for managing paths used by SIERRA.
|
8
|
+
"""
|
9
|
+
|
10
|
+
# Core packages
|
11
|
+
import typing as tp
|
12
|
+
|
13
|
+
# 3rd party packages
|
14
|
+
|
15
|
+
# Project packages
|
16
|
+
from sierra.core import batchroot
|
17
|
+
|
18
|
+
|
19
|
+
class PathSet():
|
20
|
+
"""
|
21
|
+
The set of filesystem paths under the per-experiment root that SIERRA uses.
|
22
|
+
|
23
|
+
Collected here in the interest of DRY.
|
24
|
+
"""
|
25
|
+
|
26
|
+
def __init__(self,
|
27
|
+
batch: batchroot.PathSet,
|
28
|
+
exp_name: str,
|
29
|
+
exp0_name: tp.Optional[str] = None) -> None:
|
30
|
+
self.input_root = batch.input_root / exp_name
|
31
|
+
self.output_root = batch.output_root / exp_name
|
32
|
+
self.graph_root = batch.graph_root / exp_name
|
33
|
+
self.model_root = batch.model_root / exp_name
|
34
|
+
self.stat_root = batch.stat_root / exp_name
|
35
|
+
self.parent = batch.root
|
36
|
+
|
37
|
+
if exp0_name:
|
38
|
+
self.exp0_output_root = batch.output_root / exp0_name
|
39
|
+
self.exp0_stat_root = batch.stat_root / exp0_name
|
40
|
+
|
41
|
+
|
42
|
+
__all__ = [
|
43
|
+
"PathSet"
|
44
|
+
]
|