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