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/__init__.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# Copyright 2021 John Harwell, All rights reserved.
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: MIT
|
4
|
-
|
4
|
+
"""Root SIERRA container module."""
|
5
5
|
# Core packages
|
6
6
|
|
7
7
|
# 3rd party packages
|
8
8
|
|
9
9
|
# Project packages
|
10
|
-
from . import core
|
11
|
-
from . import plugins
|
10
|
+
from . import core as core
|
11
|
+
from . import plugins as plugins
|
sierra/core/__init__.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# Copyright 2021 John Harwell, All rights reserved.
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: MIT
|
4
|
-
|
4
|
+
"""
|
5
|
+
Container module for core aspects of SIERRA invariate across plugins.
|
6
|
+
"""
|
5
7
|
# Core packages
|
6
8
|
|
7
9
|
# 3rd party packages
|
8
10
|
|
9
11
|
# Project packages
|
10
|
-
from . import cmdline
|
11
|
-
from . import config
|
sierra/core/batchroot.py
ADDED
@@ -0,0 +1,223 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2024 John Harwell, All rights reserved.
|
3
|
+
#
|
4
|
+
# SPDX-License Identifier: MIT
|
5
|
+
#
|
6
|
+
"""Functionality for generating root directory paths for a batch experiment.
|
7
|
+
|
8
|
+
See :ref:`usage/run-time-tree` for details about the defined root
|
9
|
+
directories in SIERRA.
|
10
|
+
"""
|
11
|
+
|
12
|
+
# Core packages
|
13
|
+
import typing as tp
|
14
|
+
import logging
|
15
|
+
import pathlib
|
16
|
+
import argparse
|
17
|
+
|
18
|
+
# 3rd party packages
|
19
|
+
|
20
|
+
# Project packages
|
21
|
+
|
22
|
+
|
23
|
+
class ExpRootLeaf:
|
24
|
+
"""
|
25
|
+
Representation of the "name" in pathlib parlance in :class:`ExpRoot`.
|
26
|
+
"""
|
27
|
+
|
28
|
+
@staticmethod
|
29
|
+
def from_name(leaf: str) -> "ExpRootLeaf":
|
30
|
+
"""Parse the the directory name to extract leaf components.
|
31
|
+
|
32
|
+
"Name" here is pathlib parlance. Expected to be of the form::
|
33
|
+
|
34
|
+
<template stem>-[<criteria0>+<criteria1>]...
|
35
|
+
|
36
|
+
This function is the inverse of :func:`to_path()`.
|
37
|
+
"""
|
38
|
+
|
39
|
+
template_stem, bc_str = leaf.split("-")
|
40
|
+
bc = bc_str.split("+")
|
41
|
+
|
42
|
+
if not isinstance(bc, list): # Univariate batch criteria
|
43
|
+
bc = [bc]
|
44
|
+
|
45
|
+
return ExpRootLeaf(bc, template_stem)
|
46
|
+
|
47
|
+
@staticmethod
|
48
|
+
def from_components(bc: tp.List[str], template_stem: str) -> "ExpRootLeaf":
|
49
|
+
"""Create the leaf representation directory from the components."""
|
50
|
+
return ExpRootLeaf(bc, template_stem)
|
51
|
+
|
52
|
+
def __init__(self, bc: tp.List[str], template_stem: str) -> None:
|
53
|
+
self.bc = bc
|
54
|
+
self.template_stem = template_stem
|
55
|
+
|
56
|
+
def to_path(self) -> pathlib.Path:
|
57
|
+
"""Get the leaf as a ``pathlib.Path`` object."""
|
58
|
+
return pathlib.Path("{0}-{1}".format(self.template_stem, "+".join(self.bc)))
|
59
|
+
|
60
|
+
def to_str(self) -> str:
|
61
|
+
return str(self.to_path())
|
62
|
+
|
63
|
+
|
64
|
+
class ExpRoot:
|
65
|
+
"""
|
66
|
+
Representation of the filesystem path containing all per-experiment data.
|
67
|
+
"""
|
68
|
+
|
69
|
+
def __init__(
|
70
|
+
self,
|
71
|
+
sierra_root: str,
|
72
|
+
project: str,
|
73
|
+
controller: str,
|
74
|
+
scenario: str,
|
75
|
+
leaf: ExpRootLeaf,
|
76
|
+
) -> None:
|
77
|
+
"""Generate the directory path for the rootbatch root directory.
|
78
|
+
|
79
|
+
The directory path depends on all of the input arguments to this
|
80
|
+
class, and if ANY of the arguments change, so will the generated
|
81
|
+
path. Root is::
|
82
|
+
|
83
|
+
<sierra_root>/<project>/<controller>/<scenario>/<criterias>/<template_basename>+<criterias>
|
84
|
+
|
85
|
+
Args:
|
86
|
+
root: The path to the root directory where SIERRA should store
|
87
|
+
everything.
|
88
|
+
|
89
|
+
project: The name of the project plugin used.
|
90
|
+
|
91
|
+
controller: The name of the controller used.
|
92
|
+
|
93
|
+
scenario: The name of the scenario used.
|
94
|
+
|
95
|
+
leaf: The batch criteria + ``--expdef-template`` stem.
|
96
|
+
"""
|
97
|
+
self.leaf = leaf
|
98
|
+
|
99
|
+
self.project = project
|
100
|
+
self.controller = controller
|
101
|
+
self.scenario = scenario
|
102
|
+
|
103
|
+
# Don't reslove() the path--that makes symlinked dirs under $HOME throw
|
104
|
+
# errors which are fatal from pathlib's POV, but actually harmless.
|
105
|
+
self.sierra_root = pathlib.Path(sierra_root)
|
106
|
+
|
107
|
+
def to_path(self) -> pathlib.Path:
|
108
|
+
return (
|
109
|
+
self.sierra_root
|
110
|
+
/ self.project
|
111
|
+
/ self.controller
|
112
|
+
/ self.scenario
|
113
|
+
/ self.leaf.to_path()
|
114
|
+
)
|
115
|
+
|
116
|
+
def to_str(self) -> str:
|
117
|
+
return str(self.to_path())
|
118
|
+
|
119
|
+
|
120
|
+
class PathSet:
|
121
|
+
"""
|
122
|
+
The set of filesystem paths under ``--sierra-root`` that SIERRA uses.
|
123
|
+
|
124
|
+
Collected here in the interest of DRY.
|
125
|
+
"""
|
126
|
+
|
127
|
+
def __init__(self, root: ExpRoot) -> None:
|
128
|
+
self.input_root = root.to_path() / "exp-inputs"
|
129
|
+
self.output_root = root.to_path() / "exp-outputs"
|
130
|
+
self.graph_root = root.to_path() / "graphs"
|
131
|
+
self.model_root = root.to_path() / "models"
|
132
|
+
self.model_interexp_root = self.model_root / "inter-exp"
|
133
|
+
self.stat_root = root.to_path() / "statistics"
|
134
|
+
self.stat_exec_root = self.stat_root / "exec"
|
135
|
+
self.imagize_root = root.to_path() / "imagize"
|
136
|
+
self.video_root = root.to_path() / "videos"
|
137
|
+
self.stat_interexp_root = self.stat_root / "inter-exp"
|
138
|
+
self.graph_interexp_root = self.graph_root / "inter-exp"
|
139
|
+
self.scratch_root = root.to_path() / "scratch"
|
140
|
+
self.root = root.to_path()
|
141
|
+
|
142
|
+
def __str__(self) -> str:
|
143
|
+
"""
|
144
|
+
Convert the batch eperiment pathset to a GNU ``tree``-like format string.
|
145
|
+
|
146
|
+
No recursion. Everything is shown in a one-level breakdown relative to
|
147
|
+
the batch root. Could be improved by using recursion, but this is
|
148
|
+
sufficient for now, pending the plugin/pipeline overhaul.
|
149
|
+
"""
|
150
|
+
# pointers:
|
151
|
+
tee = "├── "
|
152
|
+
last = "└── "
|
153
|
+
|
154
|
+
contents = [
|
155
|
+
self.input_root,
|
156
|
+
self.output_root,
|
157
|
+
self.graph_root,
|
158
|
+
self.model_root,
|
159
|
+
self.stat_root,
|
160
|
+
self.stat_exec_root,
|
161
|
+
self.imagize_root,
|
162
|
+
self.video_root,
|
163
|
+
self.stat_interexp_root,
|
164
|
+
self.graph_interexp_root,
|
165
|
+
self.scratch_root,
|
166
|
+
]
|
167
|
+
contents.sort()
|
168
|
+
pointers = [tee] * (len(contents) - 1) + [last]
|
169
|
+
dirs = ""
|
170
|
+
for pointer, path in zip(pointers, contents):
|
171
|
+
dirs += f"\n{pointer}{path.relative_to(self.root)}"
|
172
|
+
|
173
|
+
return str(self.root.resolve()) + dirs
|
174
|
+
|
175
|
+
|
176
|
+
def from_cmdline(args: argparse.Namespace) -> PathSet:
|
177
|
+
"""Generate directory paths directly from cmdline arguments."""
|
178
|
+
template = pathlib.Path(args.expdef_template)
|
179
|
+
|
180
|
+
# Remove all '-' from the template input file stem so we know the only '-'
|
181
|
+
# that are in it are ones that we put there.
|
182
|
+
template_stem = template.stem.replace("-", "")
|
183
|
+
batch_leaf = ExpRootLeaf(args.batch_criteria, str(template_stem))
|
184
|
+
|
185
|
+
return from_exp(
|
186
|
+
args.sierra_root, args.project, batch_leaf, args.controller, args.scenario
|
187
|
+
)
|
188
|
+
|
189
|
+
|
190
|
+
def from_exp(
|
191
|
+
sierra_root: str,
|
192
|
+
project: str,
|
193
|
+
batch_leaf: ExpRootLeaf,
|
194
|
+
controller: str,
|
195
|
+
scenario: str,
|
196
|
+
) -> PathSet:
|
197
|
+
"""Regenerate directory pathroots from a batch experiment.
|
198
|
+
|
199
|
+
Args:
|
200
|
+
|
201
|
+
sierra_root: The value of ``--sierra-root``.
|
202
|
+
|
203
|
+
project: The value of ``--project``.
|
204
|
+
|
205
|
+
batch_leaf: The name of the directory that will be the root of the batch
|
206
|
+
experiment (not including its parent).
|
207
|
+
|
208
|
+
controller: The value of ``--controller``.
|
209
|
+
|
210
|
+
scenario: The value of ``--scenario``.
|
211
|
+
"""
|
212
|
+
root = ExpRoot(sierra_root, project, controller, scenario, batch_leaf)
|
213
|
+
logging.info("Generated batchroot %s", root.to_path())
|
214
|
+
return PathSet(root)
|
215
|
+
|
216
|
+
|
217
|
+
__all__ = [
|
218
|
+
"from_exp",
|
219
|
+
"from_cmdline",
|
220
|
+
"PathSet",
|
221
|
+
"ExpRoot",
|
222
|
+
"ExpRootLeaf",
|
223
|
+
]
|