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.
Files changed (254) hide show
  1. sierra/__init__.py +3 -3
  2. sierra/core/__init__.py +3 -3
  3. sierra/core/batchroot.py +223 -0
  4. sierra/core/cmdline.py +681 -1057
  5. sierra/core/compare.py +11 -0
  6. sierra/core/config.py +96 -88
  7. sierra/core/engine.py +306 -0
  8. sierra/core/execenv.py +380 -0
  9. sierra/core/expdef.py +11 -0
  10. sierra/core/experiment/__init__.py +1 -0
  11. sierra/core/experiment/bindings.py +150 -101
  12. sierra/core/experiment/definition.py +414 -245
  13. sierra/core/experiment/spec.py +83 -85
  14. sierra/core/exproot.py +44 -0
  15. sierra/core/generators/__init__.py +10 -0
  16. sierra/core/generators/experiment.py +528 -0
  17. sierra/core/generators/generator_factory.py +138 -137
  18. sierra/core/graphs/__init__.py +23 -0
  19. sierra/core/graphs/bcbridge.py +94 -0
  20. sierra/core/graphs/heatmap.py +245 -324
  21. sierra/core/graphs/pathset.py +27 -0
  22. sierra/core/graphs/schema.py +77 -0
  23. sierra/core/graphs/stacked_line.py +341 -0
  24. sierra/core/graphs/summary_line.py +506 -0
  25. sierra/core/logging.py +3 -2
  26. sierra/core/models/__init__.py +3 -1
  27. sierra/core/models/info.py +19 -0
  28. sierra/core/models/interface.py +52 -122
  29. sierra/core/pipeline/__init__.py +2 -5
  30. sierra/core/pipeline/pipeline.py +228 -126
  31. sierra/core/pipeline/stage1/__init__.py +10 -0
  32. sierra/core/pipeline/stage1/pipeline_stage1.py +45 -31
  33. sierra/core/pipeline/stage2/__init__.py +10 -0
  34. sierra/core/pipeline/stage2/pipeline_stage2.py +8 -11
  35. sierra/core/pipeline/stage2/runner.py +401 -0
  36. sierra/core/pipeline/stage3/__init__.py +12 -0
  37. sierra/core/pipeline/stage3/gather.py +321 -0
  38. sierra/core/pipeline/stage3/pipeline_stage3.py +37 -84
  39. sierra/core/pipeline/stage4/__init__.py +12 -2
  40. sierra/core/pipeline/stage4/pipeline_stage4.py +36 -354
  41. sierra/core/pipeline/stage5/__init__.py +12 -0
  42. sierra/core/pipeline/stage5/pipeline_stage5.py +33 -208
  43. sierra/core/pipeline/yaml.py +48 -0
  44. sierra/core/plugin.py +529 -62
  45. sierra/core/proc.py +11 -0
  46. sierra/core/prod.py +11 -0
  47. sierra/core/ros1/__init__.py +5 -1
  48. sierra/core/ros1/callbacks.py +22 -21
  49. sierra/core/ros1/cmdline.py +59 -88
  50. sierra/core/ros1/generators.py +159 -175
  51. sierra/core/ros1/variables/__init__.py +3 -0
  52. sierra/core/ros1/variables/exp_setup.py +122 -116
  53. sierra/core/startup.py +106 -76
  54. sierra/core/stat_kernels.py +4 -5
  55. sierra/core/storage.py +13 -32
  56. sierra/core/trampoline.py +30 -0
  57. sierra/core/types.py +116 -71
  58. sierra/core/utils.py +103 -106
  59. sierra/core/variables/__init__.py +1 -1
  60. sierra/core/variables/base_variable.py +12 -17
  61. sierra/core/variables/batch_criteria.py +387 -481
  62. sierra/core/variables/builtin.py +135 -0
  63. sierra/core/variables/exp_setup.py +19 -39
  64. sierra/core/variables/population_size.py +72 -76
  65. sierra/core/variables/variable_density.py +44 -68
  66. sierra/core/vector.py +1 -1
  67. sierra/main.py +256 -88
  68. sierra/plugins/__init__.py +119 -0
  69. sierra/plugins/compare/__init__.py +14 -0
  70. sierra/plugins/compare/graphs/__init__.py +19 -0
  71. sierra/plugins/compare/graphs/cmdline.py +120 -0
  72. sierra/plugins/compare/graphs/comparator.py +291 -0
  73. sierra/plugins/compare/graphs/inter_controller.py +531 -0
  74. sierra/plugins/compare/graphs/inter_scenario.py +297 -0
  75. sierra/plugins/compare/graphs/namecalc.py +53 -0
  76. sierra/plugins/compare/graphs/outputroot.py +73 -0
  77. sierra/plugins/compare/graphs/plugin.py +147 -0
  78. sierra/plugins/compare/graphs/preprocess.py +172 -0
  79. sierra/plugins/compare/graphs/schema.py +37 -0
  80. sierra/plugins/engine/__init__.py +14 -0
  81. sierra/plugins/engine/argos/__init__.py +18 -0
  82. sierra/plugins/{platform → engine}/argos/cmdline.py +144 -151
  83. sierra/plugins/{platform/argos/variables → engine/argos/generators}/__init__.py +5 -0
  84. sierra/plugins/engine/argos/generators/engine.py +394 -0
  85. sierra/plugins/engine/argos/plugin.py +393 -0
  86. sierra/plugins/{platform/argos/generators → engine/argos/variables}/__init__.py +5 -0
  87. sierra/plugins/engine/argos/variables/arena_shape.py +183 -0
  88. sierra/plugins/engine/argos/variables/cameras.py +240 -0
  89. sierra/plugins/engine/argos/variables/constant_density.py +112 -0
  90. sierra/plugins/engine/argos/variables/exp_setup.py +82 -0
  91. sierra/plugins/{platform → engine}/argos/variables/physics_engines.py +83 -87
  92. sierra/plugins/engine/argos/variables/population_constant_density.py +178 -0
  93. sierra/plugins/engine/argos/variables/population_size.py +115 -0
  94. sierra/plugins/engine/argos/variables/population_variable_density.py +123 -0
  95. sierra/plugins/engine/argos/variables/rendering.py +108 -0
  96. sierra/plugins/engine/ros1gazebo/__init__.py +18 -0
  97. sierra/plugins/engine/ros1gazebo/cmdline.py +175 -0
  98. sierra/plugins/{platform/ros1robot → engine/ros1gazebo}/generators/__init__.py +5 -0
  99. sierra/plugins/engine/ros1gazebo/generators/engine.py +125 -0
  100. sierra/plugins/engine/ros1gazebo/plugin.py +404 -0
  101. sierra/plugins/engine/ros1gazebo/variables/__init__.py +15 -0
  102. sierra/plugins/engine/ros1gazebo/variables/population_size.py +214 -0
  103. sierra/plugins/engine/ros1robot/__init__.py +18 -0
  104. sierra/plugins/engine/ros1robot/cmdline.py +159 -0
  105. sierra/plugins/{platform/ros1gazebo → engine/ros1robot}/generators/__init__.py +4 -0
  106. sierra/plugins/engine/ros1robot/generators/engine.py +95 -0
  107. sierra/plugins/engine/ros1robot/plugin.py +410 -0
  108. sierra/plugins/{hpc/local → engine/ros1robot/variables}/__init__.py +5 -0
  109. sierra/plugins/engine/ros1robot/variables/population_size.py +146 -0
  110. sierra/plugins/execenv/__init__.py +11 -0
  111. sierra/plugins/execenv/hpc/__init__.py +18 -0
  112. sierra/plugins/execenv/hpc/adhoc/__init__.py +18 -0
  113. sierra/plugins/execenv/hpc/adhoc/cmdline.py +30 -0
  114. sierra/plugins/execenv/hpc/adhoc/plugin.py +131 -0
  115. sierra/plugins/execenv/hpc/cmdline.py +137 -0
  116. sierra/plugins/execenv/hpc/local/__init__.py +18 -0
  117. sierra/plugins/execenv/hpc/local/cmdline.py +31 -0
  118. sierra/plugins/execenv/hpc/local/plugin.py +145 -0
  119. sierra/plugins/execenv/hpc/pbs/__init__.py +18 -0
  120. sierra/plugins/execenv/hpc/pbs/cmdline.py +30 -0
  121. sierra/plugins/execenv/hpc/pbs/plugin.py +121 -0
  122. sierra/plugins/execenv/hpc/slurm/__init__.py +18 -0
  123. sierra/plugins/execenv/hpc/slurm/cmdline.py +30 -0
  124. sierra/plugins/execenv/hpc/slurm/plugin.py +133 -0
  125. sierra/plugins/execenv/prefectserver/__init__.py +18 -0
  126. sierra/plugins/execenv/prefectserver/cmdline.py +66 -0
  127. sierra/plugins/execenv/prefectserver/dockerremote/__init__.py +18 -0
  128. sierra/plugins/execenv/prefectserver/dockerremote/cmdline.py +66 -0
  129. sierra/plugins/execenv/prefectserver/dockerremote/plugin.py +132 -0
  130. sierra/plugins/execenv/prefectserver/flow.py +66 -0
  131. sierra/plugins/execenv/prefectserver/local/__init__.py +18 -0
  132. sierra/plugins/execenv/prefectserver/local/cmdline.py +29 -0
  133. sierra/plugins/execenv/prefectserver/local/plugin.py +133 -0
  134. sierra/plugins/{hpc/adhoc → execenv/robot}/__init__.py +1 -0
  135. sierra/plugins/execenv/robot/turtlebot3/__init__.py +18 -0
  136. sierra/plugins/execenv/robot/turtlebot3/plugin.py +204 -0
  137. sierra/plugins/expdef/__init__.py +14 -0
  138. sierra/plugins/expdef/json/__init__.py +14 -0
  139. sierra/plugins/expdef/json/plugin.py +504 -0
  140. sierra/plugins/expdef/xml/__init__.py +14 -0
  141. sierra/plugins/expdef/xml/plugin.py +386 -0
  142. sierra/{core/hpc → plugins/proc}/__init__.py +1 -1
  143. sierra/plugins/proc/collate/__init__.py +15 -0
  144. sierra/plugins/proc/collate/cmdline.py +47 -0
  145. sierra/plugins/proc/collate/plugin.py +271 -0
  146. sierra/plugins/proc/compress/__init__.py +18 -0
  147. sierra/plugins/proc/compress/cmdline.py +47 -0
  148. sierra/plugins/proc/compress/plugin.py +123 -0
  149. sierra/plugins/proc/decompress/__init__.py +18 -0
  150. sierra/plugins/proc/decompress/plugin.py +96 -0
  151. sierra/plugins/proc/imagize/__init__.py +15 -0
  152. sierra/plugins/proc/imagize/cmdline.py +49 -0
  153. sierra/plugins/proc/imagize/plugin.py +270 -0
  154. sierra/plugins/proc/modelrunner/__init__.py +16 -0
  155. sierra/plugins/proc/modelrunner/plugin.py +250 -0
  156. sierra/plugins/proc/statistics/__init__.py +15 -0
  157. sierra/plugins/proc/statistics/cmdline.py +64 -0
  158. sierra/plugins/proc/statistics/plugin.py +390 -0
  159. sierra/plugins/{hpc → prod}/__init__.py +1 -0
  160. sierra/plugins/prod/graphs/__init__.py +18 -0
  161. sierra/plugins/prod/graphs/cmdline.py +269 -0
  162. sierra/plugins/prod/graphs/collate.py +279 -0
  163. sierra/plugins/prod/graphs/inter/__init__.py +13 -0
  164. sierra/plugins/prod/graphs/inter/generate.py +83 -0
  165. sierra/plugins/prod/graphs/inter/heatmap.py +86 -0
  166. sierra/plugins/prod/graphs/inter/line.py +134 -0
  167. sierra/plugins/prod/graphs/intra/__init__.py +15 -0
  168. sierra/plugins/prod/graphs/intra/generate.py +202 -0
  169. sierra/plugins/prod/graphs/intra/heatmap.py +74 -0
  170. sierra/plugins/prod/graphs/intra/line.py +114 -0
  171. sierra/plugins/prod/graphs/plugin.py +103 -0
  172. sierra/plugins/prod/graphs/targets.py +63 -0
  173. sierra/plugins/prod/render/__init__.py +18 -0
  174. sierra/plugins/prod/render/cmdline.py +72 -0
  175. sierra/plugins/prod/render/plugin.py +282 -0
  176. sierra/plugins/storage/__init__.py +5 -0
  177. sierra/plugins/storage/arrow/__init__.py +18 -0
  178. sierra/plugins/storage/arrow/plugin.py +38 -0
  179. sierra/plugins/storage/csv/__init__.py +9 -0
  180. sierra/plugins/storage/csv/plugin.py +12 -5
  181. sierra/version.py +3 -2
  182. sierra_research-1.5.0.dist-info/METADATA +238 -0
  183. sierra_research-1.5.0.dist-info/RECORD +186 -0
  184. {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info}/WHEEL +1 -2
  185. sierra/core/experiment/xml.py +0 -454
  186. sierra/core/generators/controller_generator_parser.py +0 -34
  187. sierra/core/generators/exp_creator.py +0 -351
  188. sierra/core/generators/exp_generators.py +0 -142
  189. sierra/core/graphs/scatterplot2D.py +0 -109
  190. sierra/core/graphs/stacked_line_graph.py +0 -251
  191. sierra/core/graphs/stacked_surface_graph.py +0 -220
  192. sierra/core/graphs/summary_line_graph.py +0 -371
  193. sierra/core/hpc/cmdline.py +0 -142
  194. sierra/core/models/graphs.py +0 -87
  195. sierra/core/pipeline/stage2/exp_runner.py +0 -286
  196. sierra/core/pipeline/stage3/imagizer.py +0 -149
  197. sierra/core/pipeline/stage3/run_collator.py +0 -317
  198. sierra/core/pipeline/stage3/statistics_calculator.py +0 -478
  199. sierra/core/pipeline/stage4/graph_collator.py +0 -320
  200. sierra/core/pipeline/stage4/inter_exp_graph_generator.py +0 -240
  201. sierra/core/pipeline/stage4/intra_exp_graph_generator.py +0 -317
  202. sierra/core/pipeline/stage4/model_runner.py +0 -168
  203. sierra/core/pipeline/stage4/rendering.py +0 -283
  204. sierra/core/pipeline/stage4/yaml_config_loader.py +0 -103
  205. sierra/core/pipeline/stage5/inter_scenario_comparator.py +0 -328
  206. sierra/core/pipeline/stage5/intra_scenario_comparator.py +0 -989
  207. sierra/core/platform.py +0 -493
  208. sierra/core/plugin_manager.py +0 -369
  209. sierra/core/root_dirpath_generator.py +0 -241
  210. sierra/plugins/hpc/adhoc/plugin.py +0 -125
  211. sierra/plugins/hpc/local/plugin.py +0 -81
  212. sierra/plugins/hpc/pbs/__init__.py +0 -9
  213. sierra/plugins/hpc/pbs/plugin.py +0 -126
  214. sierra/plugins/hpc/slurm/__init__.py +0 -9
  215. sierra/plugins/hpc/slurm/plugin.py +0 -130
  216. sierra/plugins/platform/__init__.py +0 -9
  217. sierra/plugins/platform/argos/__init__.py +0 -9
  218. sierra/plugins/platform/argos/generators/platform_generators.py +0 -383
  219. sierra/plugins/platform/argos/plugin.py +0 -337
  220. sierra/plugins/platform/argos/variables/arena_shape.py +0 -145
  221. sierra/plugins/platform/argos/variables/cameras.py +0 -243
  222. sierra/plugins/platform/argos/variables/constant_density.py +0 -136
  223. sierra/plugins/platform/argos/variables/exp_setup.py +0 -113
  224. sierra/plugins/platform/argos/variables/population_constant_density.py +0 -175
  225. sierra/plugins/platform/argos/variables/population_size.py +0 -102
  226. sierra/plugins/platform/argos/variables/population_variable_density.py +0 -132
  227. sierra/plugins/platform/argos/variables/rendering.py +0 -104
  228. sierra/plugins/platform/ros1gazebo/__init__.py +0 -9
  229. sierra/plugins/platform/ros1gazebo/cmdline.py +0 -213
  230. sierra/plugins/platform/ros1gazebo/generators/platform_generators.py +0 -137
  231. sierra/plugins/platform/ros1gazebo/plugin.py +0 -335
  232. sierra/plugins/platform/ros1gazebo/variables/__init__.py +0 -10
  233. sierra/plugins/platform/ros1gazebo/variables/population_size.py +0 -204
  234. sierra/plugins/platform/ros1robot/__init__.py +0 -9
  235. sierra/plugins/platform/ros1robot/cmdline.py +0 -175
  236. sierra/plugins/platform/ros1robot/generators/platform_generators.py +0 -112
  237. sierra/plugins/platform/ros1robot/plugin.py +0 -373
  238. sierra/plugins/platform/ros1robot/variables/__init__.py +0 -10
  239. sierra/plugins/platform/ros1robot/variables/population_size.py +0 -146
  240. sierra/plugins/robot/__init__.py +0 -9
  241. sierra/plugins/robot/turtlebot3/__init__.py +0 -9
  242. sierra/plugins/robot/turtlebot3/plugin.py +0 -194
  243. sierra_research-1.3.11.data/data/share/man/man1/sierra-cli.1 +0 -2349
  244. sierra_research-1.3.11.data/data/share/man/man7/sierra-examples.7 +0 -508
  245. sierra_research-1.3.11.data/data/share/man/man7/sierra-exec-envs.7 +0 -331
  246. sierra_research-1.3.11.data/data/share/man/man7/sierra-glossary.7 +0 -285
  247. sierra_research-1.3.11.data/data/share/man/man7/sierra-platforms.7 +0 -358
  248. sierra_research-1.3.11.data/data/share/man/man7/sierra-usage.7 +0 -729
  249. sierra_research-1.3.11.data/data/share/man/man7/sierra.7 +0 -78
  250. sierra_research-1.3.11.dist-info/METADATA +0 -492
  251. sierra_research-1.3.11.dist-info/RECORD +0 -133
  252. sierra_research-1.3.11.dist-info/top_level.txt +0 -1
  253. {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info}/entry_points.txt +0 -0
  254. {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info/licenses}/LICENSE +0 -0
@@ -1,78 +0,0 @@
1
- .\" Man page generated from reStructuredText.
2
- .
3
- .
4
- .nr rst2man-indent-level 0
5
- .
6
- .de1 rstReportMargin
7
- \\$1 \\n[an-margin]
8
- level \\n[rst2man-indent-level]
9
- level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
10
- -
11
- \\n[rst2man-indent0]
12
- \\n[rst2man-indent1]
13
- \\n[rst2man-indent2]
14
- ..
15
- .de1 INDENT
16
- .\" .rstReportMargin pre:
17
- . RS \\$1
18
- . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
19
- . nr rst2man-indent-level +1
20
- .\" .rstReportMargin post:
21
- ..
22
- .de UNINDENT
23
- . RE
24
- .\" indent \\n[an-margin]
25
- .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
26
- .nr rst2man-indent-level -1
27
- .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
28
- .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
29
- ..
30
- .TH "SIERRA" "7" "Sep 23, 2024" "1.3.11" "SIERRA"
31
- .SH NAME
32
- sierra \- reSearch pIpEline for Reproducability, Reusability, and Automation.
33
- .SH SYNOPSIS
34
- .sp
35
- This the \(dqmain menu\(dq of the SIERRA reference manual, which captures most, but
36
- not all of its documentation. For the full experience, look at the online docs
37
- at \fI\%https://sierra.readthedocs.io/en/master\fP\&.
38
- .SH COMPONENTS
39
- .sp
40
- The following manpages are available:
41
- .INDENT 0.0
42
- .IP \(bu 2
43
- \fBsierra\-cli\fP \- The SIERRA command line interface.
44
- .IP \(bu 2
45
- \fBsierra\-usage\fP \- How to use SIERRA (everything BUT the command line
46
- interface).
47
- .IP \(bu 2
48
- \fBsierra\-platforms\fP \- The target platforms that SIERRA currently
49
- supports (e.g., ARGoS).
50
- .IP \(bu 2
51
- \fBsierra\-exec\-envs\fP \- The target execution environments that SIERRA
52
- currently supports (e.g., the local machine).
53
- .IP \(bu 2
54
- \fBsierra\-examples\fP \- Examples of SIERRA usage via command line
55
- invocations demonstrating various features.
56
- .IP \(bu 2
57
- \fBsierra\-glossary\fP \- Glossary of SIERRA terminology to make things
58
- easier to understand.
59
- .UNINDENT
60
- .SH ERRORS
61
- .sp
62
- Generally speaking, SIERRA is very conservative, and uses lots of assert()s to
63
- verify its internal state and the state of a given experiment at a given step of
64
- execution before proceeding to the next step. SIERRA should rarely crash with a
65
- cryptic interpreter error message/exception, but if it does, please report it so
66
- I can fix it and/or create a better error message.
67
- .sp
68
- Errors should be reported to \fI\%https://github.com/jharwell/sierra.git\fP\&.
69
- .SH RETURN VALUE
70
- .sp
71
- SIERRA will always return 0, unless it crashes with an exception or a failed
72
- assert, in which case the return code will be non\-zero.
73
- .SH AUTHOR
74
- John Harwell
75
- .SH COPYRIGHT
76
- 2022, John Harwell
77
- .\" Generated by docutils manpage writer.
78
- .
@@ -1,492 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: sierra-research
3
- Version: 1.3.11
4
- Summary: Automation framework for the scientific method in AI research
5
- Home-page: https://github.com/jharwell/sierra
6
- Author: John Harwell
7
- Author-email: john.r.harwell@gmail.com
8
- License: MIT
9
- Keywords: research,automation,robotics,agent-based modeling,reproducibility,reusability
10
- Platform: linux
11
- Platform: osx
12
- Classifier: Programming Language :: Python :: 3.8
13
- Classifier: Programming Language :: Python :: 3.9
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Classifier: License :: OSI Approved :: MIT License
18
- Classifier: Environment :: Console
19
- Classifier: Operating System :: MacOS :: MacOS X
20
- Classifier: Operating System :: POSIX :: Linux
21
- Classifier: Development Status :: 5 - Production/Stable
22
- Classifier: Intended Audience :: Science/Research
23
- Classifier: Topic :: Scientific/Engineering
24
- Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
25
- Requires-Python: >=3.8
26
- Description-Content-Type: text/x-rst
27
- License-File: LICENSE
28
- Requires-Dist: pyyaml
29
- Requires-Dist: pandas
30
- Requires-Dist: numpy
31
- Requires-Dist: matplotlib
32
- Requires-Dist: sympy
33
- Requires-Dist: psutil
34
- Requires-Dist: distro
35
- Requires-Dist: netifaces
36
- Requires-Dist: haggis
37
- Requires-Dist: coloredlogs
38
- Requires-Dist: implements
39
- Requires-Dist: retry
40
- Provides-Extra: devel
41
- Requires-Dist: pylint ==2.14.5 ; extra == 'devel'
42
- Requires-Dist: pytype ; extra == 'devel'
43
- Requires-Dist: pydocstyle ; extra == 'devel'
44
- Requires-Dist: xenon ; extra == 'devel'
45
- Requires-Dist: flake8 ; extra == 'devel'
46
- Requires-Dist: nox ; extra == 'devel'
47
- Requires-Dist: psutil ; extra == 'devel'
48
- Requires-Dist: pytest ; extra == 'devel'
49
- Requires-Dist: pytest-cov ; extra == 'devel'
50
- Requires-Dist: mypy ; extra == 'devel'
51
- Requires-Dist: xmldiff ; extra == 'devel'
52
- Requires-Dist: coverage ; extra == 'devel'
53
- Requires-Dist: coveralls ; extra == 'devel'
54
- Requires-Dist: mypy-runner ; extra == 'devel'
55
- Requires-Dist: build ; extra == 'devel'
56
- Requires-Dist: twine ; extra == 'devel'
57
- Requires-Dist: setuptools ; extra == 'devel'
58
- Requires-Dist: sphinx ==6.0.0 ; extra == 'devel'
59
- Requires-Dist: docutils ==0.19 ; extra == 'devel'
60
- Requires-Dist: sphinx-rtd-theme ; extra == 'devel'
61
- Requires-Dist: sphinx-argparse ; extra == 'devel'
62
- Requires-Dist: sphinx-tabs ; extra == 'devel'
63
- Requires-Dist: sphinxcontrib-napoleon ; extra == 'devel'
64
- Requires-Dist: sphinx-last-updated-by-git ; extra == 'devel'
65
- Requires-Dist: autoapi ; extra == 'devel'
66
- Requires-Dist: graphviz ; extra == 'devel'
67
-
68
- ===========================================================================
69
- SIERRA (reSearch pIpEline for Reproducibility, Reusability, and Automation)
70
- ===========================================================================
71
-
72
- .. |pepy-downloads| image:: https://pepy.tech/badge/sierra-research
73
- :target: https://pepy.tech/project/sierra-research
74
-
75
- .. |pypi-version| image:: https://img.shields.io/pypi/v/sierra-research.svg
76
- :target: https://pypi.python.org/pypi/sierra-research/
77
-
78
- .. |supported-pythons| image:: https://img.shields.io/pypi/pyversions/sierra-research.svg
79
-
80
- .. |os-supported| image:: https://img.shields.io/badge/os-linux%20%7C%20macOS-blue
81
-
82
- .. |ci-analysis-master| image:: https://github.com/jharwell/sierra/actions/workflows/analysis-top.yml/badge.svg?branch=master
83
- .. |ci-coverage-master| image:: https://coveralls.io/repos/github/jharwell/sierra/badge.svg?branch=master
84
-
85
- .. |ci-analysis-devel| image:: https://github.com/jharwell/sierra/actions/workflows/analysis-top.yml/badge.svg?branch=devel
86
- .. |ci-coverage-devel| image:: https://coveralls.io/repos/github/jharwell/sierra/badge.svg?branch=devel
87
-
88
- .. |license| image:: https://img.shields.io/badge/License-MIT-blue.svg
89
-
90
- .. |doi| image:: https://zenodo.org/badge/125774567.svg
91
- :target: https://zenodo.org/badge/latestdoi/125774567
92
-
93
- .. |docs| image:: https://readthedocs.org/projects/sierra/badge/?version=master
94
- :target: https://sierra.readthedocs.io/en/master/
95
-
96
- .. |maintenance| image:: https://img.shields.io/badge/Maintained%3F-yes-green.svg
97
-
98
-
99
- +---------------+--------------------------------------------------------------------+
100
- | Usage | |pepy-downloads| |pypi-version| |supported-pythons| |os-supported| |
101
- +---------------+--------------------------------------------------------------------+
102
- | Release | |ci-analysis-master| |ci-coverage-master| |
103
- +---------------+--------------------------------------------------------------------+
104
- | Development | |ci-analysis-devel| |ci-coverage-devel| |
105
- +---------------+--------------------------------------------------------------------+
106
- | Miscellaneous | |license| |doi| |docs| |maintenance| |
107
- +---------------+--------------------------------------------------------------------+
108
-
109
-
110
- TL;DR
111
- =====
112
-
113
- What is SIERRA? See `What is SIERRA?`_
114
-
115
- Why should you use SIERRA? See `Why SIERRA?`_
116
-
117
- To install SIERRA (requires python 3.8+):
118
-
119
- ::
120
-
121
- pip3 install sierra-research
122
-
123
- To get started using SIERRA, see `getting started
124
- <https://sierra.readthedocs.io/en/master/src/getting_started.html>`_.
125
-
126
- Want to cite SIERRA? See `Citing`_.
127
-
128
- Have an issue using SIERRA? See `Troubleshooting`_.
129
-
130
- What is SIERRA?
131
- ===============
132
-
133
- .. figure:: https://raw.githubusercontent.com/jharwell/sierra/master/docs/figures/architecture.png
134
-
135
- SIERRA architecture, organized by pipeline stage. Stages are listed left to
136
- right, and an approximate joint architectural/functional stack is top to
137
- bottom for each stage. “...” indicates areas where SIERRA is designed via
138
- plugins to be easily extensible. “Host machine” indicates the machine SIERRA
139
- was invoked on.
140
-
141
- SIERRA is a command line tool and plugin framework for:
142
-
143
- - Automating scientific research, providing faculties for seamless experiment
144
- generation, execution, and results processing.
145
-
146
- - Accelerating research cycles by allowing researchers to focus on the “science”
147
- aspects: developing new things and designing experiments to test them.
148
-
149
- - Improving the reproducibility of scientific research, particularly in AI.
150
-
151
-
152
- Why SIERRA?
153
- ===========
154
-
155
- - SIERRA changes the paradigm of the engineering tasks researchers must perform
156
- from manual and procedural to declarative and automated. That is, from::
157
-
158
- "I need to perform these steps to run the experiment, process the data and
159
- generate the graphs I want."
160
-
161
- to::
162
-
163
- "OK SIERRA: Here is the environment and simulator/robot platform I want to
164
- use, the deliverables I want to generate, and the data I want to appear on
165
- them for my research query--GO!"
166
-
167
- Essentially, SIERRA handles the “engineering” parts of research on the
168
- backend, such as: generating experiments, configuring execution environments
169
- or platforms, running the generated experiments, and processing experimental
170
- results to generate statistics, and/or visualizations. It also handles random
171
- seeds, algorithm stochasticity, and other low-level details.
172
-
173
- - It eliminates manual reconfiguration of experiments across simulator/robot
174
- platforms by decoupling the concepts of execution environment and platform;
175
- any supported pair can be selected in a mix-and-match fashion (see `SIERRA
176
- Support Matrix`_). Thus, it removes the need for throw-away scripts for data
177
- processing and deliverable generation.
178
-
179
- - SIERRA can be used with code written in any language; only bindings must be
180
- written in python.
181
-
182
- - SIERRA has a rich model framework allowing you to run arbitrary models,
183
- generate data, and plot it on the same figure as empirical results,
184
- automatically.
185
-
186
- - Its deeply modular architecture makes it easy to customize for the needs
187
- of a specific research project.
188
-
189
- Not sure if SIERRA makes sense for your research? Consider the following use
190
- cases:
191
-
192
- - `Use Case #1: Alice The Robotics Researcher`_
193
-
194
- - `Use Case #2: Alice The Contagion Modeler`_
195
-
196
- If aspects of either use case sound familiar, then there is a strong chance
197
- SIERRA could help you! SIERRA is well documented--see the `SIERRA docs
198
- <https://sierra.readthedocs.io/en/master/>`_ to get started.
199
-
200
- Use Case #1: Alice The Robotics Researcher
201
- ------------------------------------------
202
-
203
- Alice is a researcher at a large university that has developed a new distributed
204
- task allocation algorithm ``$\alpha$`` for use in a foraging task where
205
- robots must coordinate to find objects of interest in an unknown environment and
206
- bring them to a central location. Alice wants to implement her algorithm so she
207
- can investigate:
208
-
209
- - How well it scales with the number of robots, specifically if it remains
210
- efficient with up to 1000 robots in several different scenarios.
211
-
212
- - How robust it is with respect to sensor and actuator noise.
213
-
214
- - How it compares to other similar state of the art algorithms on a foraging
215
- task: ``$\beta,\gamma$``.
216
-
217
- Alice is faced with the following heterogeneity matrix which she has to deal
218
- with to answer her research queries, *in addition to the technical challenges of
219
- the AI elements themselves*:
220
-
221
- .. list-table::
222
- :header-rows: 1
223
- :widths: 25,25,25
224
-
225
- * - Algorithm
226
-
227
- - Contains stochasticity?
228
-
229
- - Outputs data in?
230
-
231
- * - ``$\alpha$``
232
-
233
- - Yes
234
-
235
- - CSV, rosbag
236
-
237
- * - ``$\beta$``
238
-
239
- - Yes
240
-
241
- - CSV, rosbag
242
-
243
- * - ``$\gamma$``
244
-
245
- - No
246
-
247
- - rosbag
248
-
249
- Alice is familiar with ROS, and wants to use it with large scale simulated and
250
- small scale real-robot experiments with TurtleBots. However, for real robots she
251
- is unsure what data she will ultimately need, and wants to capture all ROS
252
- messages, to avoid having to redo experiments later. She has access to a large
253
- SLURM-managed cluster, and prefers to develop code on her laptop.
254
-
255
- Use Case #2: Alice The Contagion Modeler
256
- ----------------------------------------
257
-
258
- Alice has teamed with Bob, a biologist, to model the spread of contagion among
259
- agents in a population, and how that affects their individual and collective
260
- abilities to do tasks. She believes her ``$\alpha$`` algorithm can be reused
261
- in this context. However, Bob is not convinced and has selected several
262
- multi-agent models from recent papers: ``$\delta,\epsilon$``, and wants
263
- Alice to compare ``$\alpha$`` to them. ``$\delta$`` was originally
264
- developed in NetLogo, for modeling disease transmission in
265
- animals. ``$\epsilon$`` was originally developed for ARGoS to model the
266
- effects of radiation on robots.
267
-
268
- Alice is faced with the following heterogeneity matrix which she must deal with
269
- with to answer her research query, *in addition to the technical challenges of
270
- the AI elements themselves*:
271
-
272
- .. list-table::
273
- :header-rows: 1
274
- :widths: 25,25,25
275
-
276
- * - Algorithm
277
-
278
- - Can Run On?
279
-
280
- - Input Requirements?
281
-
282
- * - ``$\alpha$``
283
-
284
- - ROS/Gazebo
285
-
286
- - XML
287
-
288
- * - ``$\delta$``
289
-
290
- - NetLogo
291
-
292
- - NetLogo
293
-
294
- * - ``$\epsilon$``
295
-
296
- - ARGoS
297
-
298
- - XML
299
-
300
- Bob is interested in how the rate of contagion spread varies with agent velocity
301
- and population size. Bob needs to prepare succinct, comprehensive visual
302
- representations of the results of this research queries for a a presentation,
303
- including visual comparisons of the multi-agent model as it runs for each
304
- algorithm. He will give Alice a range of parameter values to test for each
305
- algorithm based on his ecological knowledge, and rely on Alice to perform the
306
- experiments. For this project, Alice does not have access to HPC resources, but
307
- does have a handful of servers in her lab which she can use.
308
-
309
- SIERRA Support Matrix
310
- =====================
311
-
312
- SIERRA supports multiple `platforms
313
- <https://sierra.readthedocs.io/en/master/src/platform/index.html>`_ which
314
- researchers can write code to target. In SIERRA terminology, a platform is a
315
- "thing" (usually a simulator or robot) that you want to write to code to run
316
- on. Note that platform != OS, in SIERRA terminology. If a SIERRA platform runs
317
- on a given OS, then SIERRA supports doing so; if it does not, then SIERRA does
318
- not. For example, SIERRA does not support running ARGoS on windows, because
319
- ARGoS does not support windows.
320
-
321
- SIERRA supports multiple execution environments for execution of experiments,
322
- such as `High Performance Computing (HPC) environments
323
- <https://sierra.readthedocs.io/en/master/src/exec_env/hpc.html>`_ and `real
324
- robots <https://sierra.readthedocs.io/en/master/src/exec_env/robots.html>`_.
325
- Which execution environment experiments targeting a given platform is (somewhat)
326
- independent of the platform itself (see below).
327
-
328
- SIERRA also supports multiple output formats for experimental outputs, as shown
329
- below. SIERRA currently only supports XML experimental inputs.
330
-
331
- SIERRA supports (mostly) mix-and-match between platforms, execution
332
- environments, experiment input/output formats as shown in its support matrix
333
- below. This is one of the most powerful features of SIERRA! If your desired
334
- platform/execution environment is not listed, see the `plugin tutorials
335
- <https://sierrap.readthedocs.io/en/master/src/tutorials.html>`_ for how to add
336
- it via a plugin.
337
-
338
- .. list-table::
339
- :header-rows: 1
340
- :widths: 25,25,25,25
341
-
342
- * - Execution Environment
343
-
344
- - Platform
345
-
346
- - Experimental Input Format
347
-
348
- - Experimental Output Format
349
-
350
- * - `SLURM <https://slurm.schedmd.com/documentation.html>`_: An HPC cluster
351
- managed by the SLURM scheduler.
352
-
353
- - ARGoS, ROS1+Gazebo
354
-
355
- - XML
356
-
357
- - CSV, PNG
358
-
359
- * - `Torque/MOAB
360
- <https://adaptivecomputing.com/cherry-services/torque-resource-manager>`_:
361
- An HPC cluster managed by the Torque/MOAB scheduler.
362
-
363
- - ARGoS, ROS1+Gazebo
364
-
365
- - XML
366
-
367
- - CSV, PNG
368
-
369
- * - ADHOC: A miscellaneous collection of networked HPC compute nodes or
370
- random servers; not managed by a scheduler.
371
-
372
-
373
- - ARGoS, ROS1+Gazebo
374
-
375
- - XML
376
-
377
- - CSV, PNG
378
-
379
- * - Local: The SIERRA host machine,e.g., a researcher's laptop.
380
-
381
- - ARGoS, ROS1+Gazebo
382
-
383
- - XML
384
-
385
- - CSV, PNG
386
-
387
- * - ROS1+Turtlebot3: `Turtlebot3
388
- <https://emanual.robotis.com/docs/en/platform/turtlebot3/overview>`_
389
- robots with ROS1.
390
-
391
- - ROS1+Gazebo, ROS1+robot
392
-
393
- - XML
394
-
395
- - CSV, PNG
396
-
397
- For more details about the platforms out experimental output formats, see below.
398
-
399
- .. list-table::
400
- :header-rows: 1
401
- :widths: 50,50
402
-
403
- * - Platform
404
-
405
- - Description
406
-
407
- * - `ARGoS <https://www.argos-sim.info/index.php>`_
408
-
409
- - Simulator for fast simulation of large swarms. Requires ARGoS >=
410
- 3.0.0-beta59.
411
-
412
- * - `ROS1 <https://ros.org>`_ + `Gazebo <https://www.gazebosim.org>`_
413
-
414
- - Using ROS1 with the Gazebo simulator. Requires Gazebo >= 11.9.0, ROS1
415
- Noetic or later.
416
-
417
- * - `ROS1+Robot <https://ros.org>`_
418
-
419
- - Using ROS1 with a real robot platform of your choice. ROS1 Noetic or
420
- later is required.
421
-
422
-
423
- .. list-table::
424
- :header-rows: 1
425
- :widths: 50,50
426
-
427
- * - Experimental Output Format
428
-
429
- - Scope
430
-
431
- * - CSV file
432
-
433
- - Raw experimental outputs, transforming into heatmap images.
434
-
435
- * - PNG file
436
-
437
- - Stitching images together into videos.
438
-
439
-
440
- Requirements To Use SIERRA
441
- ==========================
442
-
443
- The basic requirements are:
444
-
445
- - Recent OSX (tested with 12+) or Linux (tested with ubuntu 20.04+).
446
-
447
- - python >= 3.8.
448
-
449
- .. NOTE:: Windows is not supported currently. Not because it can't be supported,
450
- but because there are not currently any platform plugins that which
451
- work on windows. That is, SIERRA's OS support is dictated by the OS
452
- support of its current platform plugins, none of which support
453
- windows.
454
-
455
- If windows support would be helpful for your intended usage of
456
- SIERRA, please get in touch with me--SIERRA is written in pure
457
- python and can definitely be made to work on windows.
458
-
459
- For more details, including the requirements for researcher code, see the
460
- `SIERRA requirements
461
- <https://sierra.readthedocs.io/en/master/src/requirements.html>`_.
462
-
463
- Citing
464
- ======
465
- If you use SIERRA and have found it helpful, please cite the following paper::
466
-
467
- @inproceedings{Harwell2022a-SIERRA,
468
- author = {Harwell, John and Lowmanstone, London and Gini, Maria},
469
- title = {SIERRA: A Modular Framework for Research Automation},
470
- year = {2022},
471
- isbn = {9781450392136},
472
- publisher = {International Foundation for Autonomous Agents and Multiagent Systems},
473
- booktitle = {Proceedings of the 21st International Conference on Autonomous Agents and Multiagent Systems},
474
- pages = {1905–1907}
475
- }
476
-
477
- You can also cite the specific version of SIERRA used with the DOI at the top of
478
- this page, to help facilitate reproducibility.
479
-
480
- Troubleshooting
481
- ===============
482
-
483
- If you have problems using SIERRA, please open an issue or post in the Github
484
- forum and I'll be happy to help you work through it.
485
-
486
- Contributing
487
- ============
488
-
489
- I welcome all types of contributions, no matter how large or how small, and if
490
- you have an idea, I'm happy to talk about it at any point :-). See `here
491
- <https://sierra.readthedocs.io/en/master/src/contributing.html>`_
492
- for the general procedure.