simstack 2.0.1__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.
- simstack/__init__.py +0 -0
- simstack/_version.py +24 -0
- simstack/core/__init__.py +0 -0
- simstack/core/artifacts.py +406 -0
- simstack/core/asnyc_helper.py +14 -0
- simstack/core/config_file.py +60 -0
- simstack/core/context.py +283 -0
- simstack/core/definitions.py +22 -0
- simstack/core/engine.py +115 -0
- simstack/core/find_simstack_modules.py +41 -0
- simstack/core/hash.py +179 -0
- simstack/core/node.py +1137 -0
- simstack/core/node_claim.py +31 -0
- simstack/core/node_runner.py +362 -0
- simstack/core/process_results.py +102 -0
- simstack/core/recompute_artifacts.py +117 -0
- simstack/core/reset_db.py +12 -0
- simstack/core/resource_assignment.py +222 -0
- simstack/core/resources.py +90 -0
- simstack/core/route_table.py +24 -0
- simstack/core/run_docker.py +109 -0
- simstack/core/run_node.py +71 -0
- simstack/core/runner.py +169 -0
- simstack/core/services/__init__.py +11 -0
- simstack/core/services/base_service.py +191 -0
- simstack/core/services/file_transfer_service.py +117 -0
- simstack/core/services/git_restart_service.py +12 -0
- simstack/core/services/git_uv_update_service.py +105 -0
- simstack/core/services/node_execution_service.py +182 -0
- simstack/core/services/resource_branch_monitor_service.py +71 -0
- simstack/core/services/runner_cleanup_service.py +149 -0
- simstack/core/services/runner_manager.py +163 -0
- simstack/core/services/runner_status_service.py +10 -0
- simstack/core/services/slurm_status_service.py +67 -0
- simstack/core/services/stop_check_service.py +27 -0
- simstack/core/services/timeout_restart_service.py +26 -0
- simstack/core/simstack_result.py +39 -0
- simstack/core/submit_node.py +217 -0
- simstack/core/task_id.py +22 -0
- simstack/methods/__init__.py +0 -0
- simstack/methods/archive_files.py +292 -0
- simstack/methods/fire_and_forget_runner.py +113 -0
- simstack/methods/generate_test.py +125 -0
- simstack/methods/get_file.py +26 -0
- simstack/methods/mass_runner.py +154 -0
- simstack/methods/multiple_executor.py +307 -0
- simstack/methods/switch_git.py +16 -0
- simstack/methods/upload_helpers.py +81 -0
- simstack/models/__init__.py +74 -0
- simstack/models/array_list.py +21 -0
- simstack/models/array_storage.py +83 -0
- simstack/models/artifact_models.py +127 -0
- simstack/models/base_lists.py +51 -0
- simstack/models/base_types.py +209 -0
- simstack/models/charts_artifact.py +690 -0
- simstack/models/dataset.py +451 -0
- simstack/models/dataset_metadata.py +390 -0
- simstack/models/datasettuple.py +587 -0
- simstack/models/file_instance.py +150 -0
- simstack/models/file_list.py +45 -0
- simstack/models/files.py +424 -0
- simstack/models/fire_and_forget_result.py +19 -0
- simstack/models/images2d.py +113 -0
- simstack/models/log_entry_model.py +37 -0
- simstack/models/models.py +52 -0
- simstack/models/named_data_reference.py +36 -0
- simstack/models/node_registry.py +96 -0
- simstack/models/pandas_model.py +239 -0
- simstack/models/parameters.py +402 -0
- simstack/models/pickle_models.py +300 -0
- simstack/models/project.py +13 -0
- simstack/models/resource_assignment.py +170 -0
- simstack/models/resource_definition.py +125 -0
- simstack/models/runner_model.py +39 -0
- simstack/models/simple_table.py +79 -0
- simstack/models/simstack_model.py +97 -0
- simstack/models/slurm_info.py +17 -0
- simstack/models/table_artifact.py +87 -0
- simstack/models/tag.py +12 -0
- simstack/models/unused_test_file.py +5 -0
- simstack/simstack_marker.com +1 -0
- simstack/static/docs/.buildinfo +4 -0
- simstack/static/docs/_images/GUI Concept.webp +0 -0
- simstack/static/docs/_modules/index.html +434 -0
- simstack/static/docs/_modules/simstack/core/artifacts.html +743 -0
- simstack/static/docs/_modules/simstack/core/asnyc_helper.html +330 -0
- simstack/static/docs/_modules/simstack/core/config_file.html +379 -0
- simstack/static/docs/_modules/simstack/core/definitions.html +341 -0
- simstack/static/docs/_modules/simstack/core/engine.html +437 -0
- simstack/static/docs/_modules/simstack/core/find_simstack_modules.html +360 -0
- simstack/static/docs/_modules/simstack/core/hash.html +528 -0
- simstack/static/docs/_modules/simstack/core/node.html +1392 -0
- simstack/static/docs/_modules/simstack/core/node_claim.html +347 -0
- simstack/static/docs/_modules/simstack/core/node_runner.html +711 -0
- simstack/static/docs/_modules/simstack/core/process_results.html +418 -0
- simstack/static/docs/_modules/simstack/core/recompute_artifacts.html +433 -0
- simstack/static/docs/_modules/simstack/core/reset_db.html +328 -0
- simstack/static/docs/_modules/simstack/core/resource_assignment.html +553 -0
- simstack/static/docs/_modules/simstack/core/resources.html +424 -0
- simstack/static/docs/_modules/simstack/core/route_table.html +349 -0
- simstack/static/docs/_modules/simstack/core/run_docker.html +425 -0
- simstack/static/docs/_modules/simstack/core/run_node.html +390 -0
- simstack/static/docs/_modules/simstack/core/runner.html +491 -0
- simstack/static/docs/_modules/simstack/core/services/base_service.html +522 -0
- simstack/static/docs/_modules/simstack/core/services/file_transfer_service.html +436 -0
- simstack/static/docs/_modules/simstack/core/services/git_restart_service.html +331 -0
- simstack/static/docs/_modules/simstack/core/services/git_uv_update_service.html +427 -0
- simstack/static/docs/_modules/simstack/core/services/node_execution_service.html +507 -0
- simstack/static/docs/_modules/simstack/core/services/resource_branch_monitor_service.html +390 -0
- simstack/static/docs/_modules/simstack/core/services/runner_cleanup_service.html +468 -0
- simstack/static/docs/_modules/simstack/core/services/runner_manager.html +485 -0
- simstack/static/docs/_modules/simstack/core/services/runner_status_service.html +329 -0
- simstack/static/docs/_modules/simstack/core/services/slurm_status_service.html +386 -0
- simstack/static/docs/_modules/simstack/core/services/stop_check_service.html +346 -0
- simstack/static/docs/_modules/simstack/core/services/timeout_restart_service.html +345 -0
- simstack/static/docs/_modules/simstack/core/simstack_result.html +355 -0
- simstack/static/docs/_modules/simstack/core/submit_node.html +536 -0
- simstack/static/docs/_modules/simstack/core/task_id.html +344 -0
- simstack/static/docs/_modules/simstack/methods/archive_files.html +598 -0
- simstack/static/docs/_modules/simstack/methods/fire_and_forget_runner.html +432 -0
- simstack/static/docs/_modules/simstack/methods/generate_test.html +443 -0
- simstack/static/docs/_modules/simstack/methods/get_file.html +342 -0
- simstack/static/docs/_modules/simstack/methods/mass_runner.html +476 -0
- simstack/static/docs/_modules/simstack/methods/multiple_executor.html +674 -0
- simstack/static/docs/_modules/simstack/methods/switch_git.html +332 -0
- simstack/static/docs/_modules/simstack/methods/upload_helpers.html +403 -0
- simstack/static/docs/_modules/simstack/models/array_list.html +337 -0
- simstack/static/docs/_modules/simstack/models/array_storage.html +417 -0
- simstack/static/docs/_modules/simstack/models/base_lists.html +374 -0
- simstack/static/docs/_modules/simstack/models/base_types.html +588 -0
- simstack/static/docs/_modules/simstack/models/charts_artifact.html +1035 -0
- simstack/static/docs/_modules/simstack/models/dataset.html +866 -0
- simstack/static/docs/_modules/simstack/models/dataset_metadata.html +711 -0
- simstack/static/docs/_modules/simstack/models/datasettuple.html +1005 -0
- simstack/static/docs/_modules/simstack/models/file_instance.html +472 -0
- simstack/static/docs/_modules/simstack/models/file_list.html +367 -0
- simstack/static/docs/_modules/simstack/models/files.html +773 -0
- simstack/static/docs/_modules/simstack/models/fire_and_forget_result.html +335 -0
- simstack/static/docs/_modules/simstack/models/images2d.html +447 -0
- simstack/static/docs/_modules/simstack/models/log_entry_model.html +356 -0
- simstack/static/docs/_modules/simstack/models/models.html +374 -0
- simstack/static/docs/_modules/simstack/models/named_data_reference.html +355 -0
- simstack/static/docs/_modules/simstack/models/node_registry.html +415 -0
- simstack/static/docs/_modules/simstack/models/pandas_model.html +570 -0
- simstack/static/docs/_modules/simstack/models/parameters.html +739 -0
- simstack/static/docs/_modules/simstack/models/pickle_models.html +631 -0
- simstack/static/docs/_modules/simstack/models/project.html +329 -0
- simstack/static/docs/_modules/simstack/models/resource_assignment.html +501 -0
- simstack/static/docs/_modules/simstack/models/resource_definition.html +477 -0
- simstack/static/docs/_modules/simstack/models/runner_model.html +361 -0
- simstack/static/docs/_modules/simstack/models/simple_table.html +413 -0
- simstack/static/docs/_modules/simstack/models/simstack_model.html +416 -0
- simstack/static/docs/_modules/simstack/models/slurm_info.html +333 -0
- simstack/static/docs/_modules/simstack/models/table_artifact.html +406 -0
- simstack/static/docs/_modules/simstack/models/tag.html +328 -0
- simstack/static/docs/_modules/simstack/tables/model_table.html +519 -0
- simstack/static/docs/_modules/simstack/tables/node_children.html +538 -0
- simstack/static/docs/_modules/simstack/tables/node_table.html +854 -0
- simstack/static/docs/_modules/simstack/tables/table_builder.html +642 -0
- simstack/static/docs/_modules/simstack/util/async_zip_utils.html +337 -0
- simstack/static/docs/_modules/simstack/util/b64mixin.html +339 -0
- simstack/static/docs/_modules/simstack/util/cleaned_json_schema.html +336 -0
- simstack/static/docs/_modules/simstack/util/config_reader.html +498 -0
- simstack/static/docs/_modules/simstack/util/custom_model_dump.html +391 -0
- simstack/static/docs/_modules/simstack/util/database_information.html +488 -0
- simstack/static/docs/_modules/simstack/util/db.html +1392 -0
- simstack/static/docs/_modules/simstack/util/db_logger.html +448 -0
- simstack/static/docs/_modules/simstack/util/default_from_dict.html +376 -0
- simstack/static/docs/_modules/simstack/util/directory_iterator.html +553 -0
- simstack/static/docs/_modules/simstack/util/docstring_parser.html +526 -0
- simstack/static/docs/_modules/simstack/util/file_hashing.html +394 -0
- simstack/static/docs/_modules/simstack/util/file_transfer_client.html +791 -0
- simstack/static/docs/_modules/simstack/util/files.html +733 -0
- simstack/static/docs/_modules/simstack/util/find_python_files.html +349 -0
- simstack/static/docs/_modules/simstack/util/generate_ui_schema.html +396 -0
- simstack/static/docs/_modules/simstack/util/generic_list_mixin.html +487 -0
- simstack/static/docs/_modules/simstack/util/get_module_path.html +336 -0
- simstack/static/docs/_modules/simstack/util/git_pull.html +381 -0
- simstack/static/docs/_modules/simstack/util/git_repository_status.html +411 -0
- simstack/static/docs/_modules/simstack/util/import_module.html +377 -0
- simstack/static/docs/_modules/simstack/util/importer.html +637 -0
- simstack/static/docs/_modules/simstack/util/init_data_source.html +357 -0
- simstack/static/docs/_modules/simstack/util/make_graph.html +423 -0
- simstack/static/docs/_modules/simstack/util/make_table.html +1171 -0
- simstack/static/docs/_modules/simstack/util/mappings.html +378 -0
- simstack/static/docs/_modules/simstack/util/minimal_route_finder.html +388 -0
- simstack/static/docs/_modules/simstack/util/mock_db.html +472 -0
- simstack/static/docs/_modules/simstack/util/module_path_checker.html +354 -0
- simstack/static/docs/_modules/simstack/util/object_list_mixin.html +649 -0
- simstack/static/docs/_modules/simstack/util/path_manager.html +566 -0
- simstack/static/docs/_modules/simstack/util/project_root_finder.html +357 -0
- simstack/static/docs/_modules/simstack/util/queue_watcher.html +593 -0
- simstack/static/docs/_modules/simstack/util/resource_config.html +532 -0
- simstack/static/docs/_modules/simstack/util/route_finder.html +390 -0
- simstack/static/docs/_modules/simstack/util/runner_util.html +487 -0
- simstack/static/docs/_modules/simstack/util/runner_utils.html +468 -0
- simstack/static/docs/_modules/simstack/util/safe_code_executor.html +510 -0
- simstack/static/docs/_modules/simstack/util/sample_config.html +414 -0
- simstack/static/docs/_modules/simstack/util/sensitive_content_filter.html +364 -0
- simstack/static/docs/_modules/simstack/util/setup_logging.html +365 -0
- simstack/static/docs/_modules/simstack/util/submit_to_watchdog.html +425 -0
- simstack/static/docs/_modules/simstack/util/toml_reader.html +482 -0
- simstack/static/docs/_modules/simstack/util/transform_file_name.html +357 -0
- simstack/static/docs/_modules/simstack/util/ui_tools.html +541 -0
- simstack/static/docs/_sources/architecture.rst.txt +25 -0
- simstack/static/docs/_sources/array_lists.rst.txt +60 -0
- simstack/static/docs/_sources/ci_pipeline.rst.txt +34 -0
- simstack/static/docs/_sources/data.rst.txt +175 -0
- simstack/static/docs/_sources/database_migrations.rst.txt +310 -0
- simstack/static/docs/_sources/datasets.rst.txt +93 -0
- simstack/static/docs/_sources/developer_guide.rst.txt +25 -0
- simstack/static/docs/_sources/docker_nodes.rst.txt +149 -0
- simstack/static/docs/_sources/files.rst.txt +159 -0
- simstack/static/docs/_sources/fire_and_forget_runner.rst.txt +67 -0
- simstack/static/docs/_sources/index.rst.txt +25 -0
- simstack/static/docs/_sources/installation.rst.txt +213 -0
- simstack/static/docs/_sources/lists.rst.txt +111 -0
- simstack/static/docs/_sources/mass_runner.rst.txt +91 -0
- simstack/static/docs/_sources/misc.rst.txt +106 -0
- simstack/static/docs/_sources/overview.rst.txt +91 -0
- simstack/static/docs/_sources/recovery.rst.txt +38 -0
- simstack/static/docs/_sources/resource_config.rst.txt +141 -0
- simstack/static/docs/_sources/simstack/modules/modules.rst.txt +7 -0
- simstack/static/docs/_sources/simstack/modules/simstack.core.rst.txt +205 -0
- simstack/static/docs/_sources/simstack/modules/simstack.core.services.rst.txt +109 -0
- simstack/static/docs/_sources/simstack/modules/simstack.methods.rst.txt +77 -0
- simstack/static/docs/_sources/simstack/modules/simstack.models.rst.txt +261 -0
- simstack/static/docs/_sources/simstack/modules/simstack.rst.txt +22 -0
- simstack/static/docs/_sources/simstack/modules/simstack.tables.rst.txt +45 -0
- simstack/static/docs/_sources/simstack/modules/simstack.util.rst.txt +381 -0
- simstack/static/docs/_sources/submit.rst.txt +141 -0
- simstack/static/docs/_sources/tables.rst.txt +50 -0
- simstack/static/docs/_sources/testing_complex_nodes.rst.txt +92 -0
- simstack/static/docs/_sources/ui_documentation.rst.txt +272 -0
- simstack/static/docs/_sources/workflows.rst.txt +446 -0
- simstack/static/docs/_static/base-stemmer.js +476 -0
- simstack/static/docs/_static/basic.css +906 -0
- simstack/static/docs/_static/cobalt2-theme.css +1 -0
- simstack/static/docs/_static/debug.css +69 -0
- simstack/static/docs/_static/docs-build-badge.css +51 -0
- simstack/static/docs/_static/docs-build-badge.js +51 -0
- simstack/static/docs/_static/doctools.js +150 -0
- simstack/static/docs/_static/documentation_options.js +13 -0
- simstack/static/docs/_static/english-stemmer.js +1066 -0
- simstack/static/docs/_static/file.png +0 -0
- simstack/static/docs/_static/language_data.js +13 -0
- simstack/static/docs/_static/minus.png +0 -0
- simstack/static/docs/_static/plus.png +0 -0
- simstack/static/docs/_static/pygments.css +250 -0
- simstack/static/docs/_static/scripts/furo-extensions.js +0 -0
- simstack/static/docs/_static/scripts/furo.js +3 -0
- simstack/static/docs/_static/scripts/furo.js.LICENSE.txt +7 -0
- simstack/static/docs/_static/scripts/furo.js.map +1 -0
- simstack/static/docs/_static/searchtools.js +693 -0
- simstack/static/docs/_static/skeleton.css +296 -0
- simstack/static/docs/_static/sphinx_highlight.js +159 -0
- simstack/static/docs/_static/styles/furo-extensions.css +2 -0
- simstack/static/docs/_static/styles/furo-extensions.css.map +1 -0
- simstack/static/docs/_static/styles/furo.css +2 -0
- simstack/static/docs/_static/styles/furo.css.map +1 -0
- simstack/static/docs/architecture.html +340 -0
- simstack/static/docs/array_lists.html +678 -0
- simstack/static/docs/ci_pipeline.html +385 -0
- simstack/static/docs/data.html +545 -0
- simstack/static/docs/database_migrations.html +652 -0
- simstack/static/docs/datasets.html +1268 -0
- simstack/static/docs/developer_guide.html +359 -0
- simstack/static/docs/docker_nodes.html +503 -0
- simstack/static/docs/files.html +718 -0
- simstack/static/docs/fire_and_forget_runner.html +641 -0
- simstack/static/docs/genindex.html +6390 -0
- simstack/static/docs/index.html +516 -0
- simstack/static/docs/installation.html +553 -0
- simstack/static/docs/lists.html +478 -0
- simstack/static/docs/mass_runner.html +481 -0
- simstack/static/docs/misc.html +454 -0
- simstack/static/docs/objects.inv +0 -0
- simstack/static/docs/overview.html +469 -0
- simstack/static/docs/py-modindex.html +1111 -0
- simstack/static/docs/recovery.html +371 -0
- simstack/static/docs/resource_config.html +590 -0
- simstack/static/docs/search.html +327 -0
- simstack/static/docs/searchindex.js +1 -0
- simstack/static/docs/simstack/modules/modules.html +489 -0
- simstack/static/docs/simstack/modules/simstack.core.html +1883 -0
- simstack/static/docs/simstack/modules/simstack.core.services.html +698 -0
- simstack/static/docs/simstack/modules/simstack.html +3060 -0
- simstack/static/docs/simstack/modules/simstack.methods.html +1150 -0
- simstack/static/docs/simstack/modules/simstack.models.html +13113 -0
- simstack/static/docs/simstack/modules/simstack.tables.html +635 -0
- simstack/static/docs/simstack/modules/simstack.util.html +3320 -0
- simstack/static/docs/submit.html +487 -0
- simstack/static/docs/tables.html +539 -0
- simstack/static/docs/testing_complex_nodes.html +458 -0
- simstack/static/docs/ui_documentation.html +788 -0
- simstack/static/docs/workflows.html +766 -0
- simstack/tables/__init__.py +0 -0
- simstack/tables/model_table.py +191 -0
- simstack/tables/node_children.py +219 -0
- simstack/tables/node_table.py +517 -0
- simstack/tables/table_builder.py +314 -0
- simstack/util/__init__.py +0 -0
- simstack/util/async_zip_utils.py +18 -0
- simstack/util/b64mixin.py +23 -0
- simstack/util/cleaned_json_schema.py +20 -0
- simstack/util/config_reader.py +179 -0
- simstack/util/custom_model_dump.py +75 -0
- simstack/util/database_information.py +160 -0
- simstack/util/db.py +1013 -0
- simstack/util/db_logger.py +117 -0
- simstack/util/default_from_dict.py +57 -0
- simstack/util/directory_iterator.py +216 -0
- simstack/util/docstring_parser.py +186 -0
- simstack/util/file_hashing.py +72 -0
- simstack/util/file_transfer_client.py +427 -0
- simstack/util/files.py +396 -0
- simstack/util/find_python_files.py +33 -0
- simstack/util/generate_ui_schema.py +80 -0
- simstack/util/generic_list_mixin.py +120 -0
- simstack/util/geometry_utils.py +118 -0
- simstack/util/get_module_path.py +20 -0
- simstack/util/git_pull.py +65 -0
- simstack/util/git_repository_status.py +95 -0
- simstack/util/import_module.py +63 -0
- simstack/util/importer.py +312 -0
- simstack/util/init_data_source.py +41 -0
- simstack/util/make_graph.py +107 -0
- simstack/util/make_table.py +837 -0
- simstack/util/mappings.py +41 -0
- simstack/util/minimal_route_finder.py +72 -0
- simstack/util/mock_db.py +144 -0
- simstack/util/module_path_checker.py +38 -0
- simstack/util/object_list_mixin.py +282 -0
- simstack/util/path_manager.py +223 -0
- simstack/util/project_root_finder.py +41 -0
- simstack/util/queue_watcher.py +262 -0
- simstack/util/resource_config.py +198 -0
- simstack/util/route_finder.py +74 -0
- simstack/util/runner_util.py +166 -0
- simstack/util/runner_utils.py +143 -0
- simstack/util/safe_code_executor.py +194 -0
- simstack/util/sample_config.py +98 -0
- simstack/util/sensitive_content_filter.py +48 -0
- simstack/util/setup_logging.py +49 -0
- simstack/util/submit_to_watchdog.py +106 -0
- simstack/util/toml_reader.py +142 -0
- simstack/util/transform_file_name.py +41 -0
- simstack/util/ui_tools.py +213 -0
- simstack-2.0.1.dist-info/METADATA +454 -0
- simstack-2.0.1.dist-info/RECORD +354 -0
- simstack-2.0.1.dist-info/WHEEL +5 -0
- simstack-2.0.1.dist-info/entry_points.txt +12 -0
- simstack-2.0.1.dist-info/licenses/LICENSE +21 -0
- simstack-2.0.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html class="no-js" lang="en" data-content_root="./">
|
|
3
|
+
<head><meta charset="utf-8">
|
|
4
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
5
|
+
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="Datasets" href="datasets.html"><link rel="prev" title="Developer Guide" href="developer_guide.html">
|
|
7
|
+
|
|
8
|
+
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
|
9
|
+
<title>Persisting and Visualizing Data - SimStack II documentation</title>
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
|
|
11
|
+
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=7bdb33bb" />
|
|
12
|
+
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
|
|
13
|
+
<link rel="stylesheet" type="text/css" href="_static/cobalt2-theme.css?v=2d651046" />
|
|
14
|
+
<link rel="stylesheet" type="text/css" href="_static/docs-build-badge.css?v=803faff8" />
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<style>
|
|
20
|
+
body {
|
|
21
|
+
--color-code-background: #f2f2f2;
|
|
22
|
+
--color-code-foreground: #1e1e1e;
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
@media not print {
|
|
26
|
+
body[data-theme="dark"] {
|
|
27
|
+
--color-code-background: #202020;
|
|
28
|
+
--color-code-foreground: #d0d0d0;
|
|
29
|
+
--color-background-primary: #132738;
|
|
30
|
+
--color-background-secondary: #1e3a52;
|
|
31
|
+
--color-foreground-primary: #ffffff;
|
|
32
|
+
--color-foreground-secondary: #bac8d3;
|
|
33
|
+
--color-brand-primary: #22d5ff;
|
|
34
|
+
--color-brand-content: #0088ff;
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
@media (prefers-color-scheme: dark) {
|
|
38
|
+
body:not([data-theme="light"]) {
|
|
39
|
+
--color-code-background: #202020;
|
|
40
|
+
--color-code-foreground: #d0d0d0;
|
|
41
|
+
--color-background-primary: #132738;
|
|
42
|
+
--color-background-secondary: #1e3a52;
|
|
43
|
+
--color-foreground-primary: #ffffff;
|
|
44
|
+
--color-foreground-secondary: #bac8d3;
|
|
45
|
+
--color-brand-primary: #22d5ff;
|
|
46
|
+
--color-brand-content: #0088ff;
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
</style></head>
|
|
52
|
+
<body>
|
|
53
|
+
|
|
54
|
+
<script>
|
|
55
|
+
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
|
56
|
+
</script>
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
|
60
|
+
<symbol id="svg-toc" viewBox="0 0 24 24">
|
|
61
|
+
<title>Contents</title>
|
|
62
|
+
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
|
63
|
+
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
|
64
|
+
</svg>
|
|
65
|
+
</symbol>
|
|
66
|
+
<symbol id="svg-menu" viewBox="0 0 24 24">
|
|
67
|
+
<title>Menu</title>
|
|
68
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
69
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
|
70
|
+
<line x1="3" y1="12" x2="21" y2="12"></line>
|
|
71
|
+
<line x1="3" y1="6" x2="21" y2="6"></line>
|
|
72
|
+
<line x1="3" y1="18" x2="21" y2="18"></line>
|
|
73
|
+
</svg>
|
|
74
|
+
</symbol>
|
|
75
|
+
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
|
76
|
+
<title>Expand</title>
|
|
77
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
78
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
|
79
|
+
<polyline points="9 18 15 12 9 6"></polyline>
|
|
80
|
+
</svg>
|
|
81
|
+
</symbol>
|
|
82
|
+
<symbol id="svg-sun" viewBox="0 0 24 24">
|
|
83
|
+
<title>Light mode</title>
|
|
84
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
85
|
+
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
|
86
|
+
<circle cx="12" cy="12" r="5"></circle>
|
|
87
|
+
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
88
|
+
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
89
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
90
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
91
|
+
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
92
|
+
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
93
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
94
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
95
|
+
</svg>
|
|
96
|
+
</symbol>
|
|
97
|
+
<symbol id="svg-moon" viewBox="0 0 24 24">
|
|
98
|
+
<title>Dark mode</title>
|
|
99
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
100
|
+
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
|
101
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
102
|
+
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
|
103
|
+
</svg>
|
|
104
|
+
</symbol>
|
|
105
|
+
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
|
106
|
+
<title>Auto light/dark, in light mode</title>
|
|
107
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
108
|
+
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
|
109
|
+
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
|
110
|
+
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
|
111
|
+
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
|
112
|
+
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
|
113
|
+
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
|
114
|
+
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
|
115
|
+
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
|
116
|
+
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
|
117
|
+
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
|
118
|
+
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
|
119
|
+
<circle cx="14.5" cy="9.55" r="3.6"/>
|
|
120
|
+
</svg>
|
|
121
|
+
</symbol>
|
|
122
|
+
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
|
123
|
+
<title>Auto light/dark, in dark mode</title>
|
|
124
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
125
|
+
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
|
126
|
+
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
|
127
|
+
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
|
128
|
+
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
|
129
|
+
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
|
130
|
+
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
|
131
|
+
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
|
132
|
+
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
|
133
|
+
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
|
134
|
+
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
|
135
|
+
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
|
136
|
+
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
|
137
|
+
</svg>
|
|
138
|
+
</symbol>
|
|
139
|
+
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
|
140
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
141
|
+
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
|
142
|
+
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
|
143
|
+
<path d="M13.5 6.5l4 4" />
|
|
144
|
+
<path d="M20 21l2 -2l-2 -2" />
|
|
145
|
+
<path d="M17 17l-2 2l2 2" />
|
|
146
|
+
</svg>
|
|
147
|
+
</symbol>
|
|
148
|
+
<symbol id="svg-eye" viewBox="0 0 24 24">
|
|
149
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
150
|
+
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
|
151
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
152
|
+
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
|
153
|
+
<path
|
|
154
|
+
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
|
155
|
+
<path d="M20 21l2 -2l-2 -2" />
|
|
156
|
+
<path d="M17 17l-2 2l2 2" />
|
|
157
|
+
</svg>
|
|
158
|
+
</symbol>
|
|
159
|
+
</svg>
|
|
160
|
+
|
|
161
|
+
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
|
162
|
+
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
|
163
|
+
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
|
164
|
+
<label class="overlay toc-overlay" for="__toc"></label>
|
|
165
|
+
|
|
166
|
+
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
<div class="page">
|
|
171
|
+
<header class="mobile-header">
|
|
172
|
+
<div class="header-left">
|
|
173
|
+
<label class="nav-overlay-icon" for="__navigation">
|
|
174
|
+
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
|
175
|
+
</label>
|
|
176
|
+
</div>
|
|
177
|
+
<div class="header-center">
|
|
178
|
+
<a href="index.html"><div class="brand">SimStack II documentation</div></a>
|
|
179
|
+
</div>
|
|
180
|
+
<div class="header-right">
|
|
181
|
+
<div class="theme-toggle-container theme-toggle-header">
|
|
182
|
+
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
|
183
|
+
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
|
184
|
+
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
|
185
|
+
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
|
186
|
+
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
|
187
|
+
</button>
|
|
188
|
+
</div>
|
|
189
|
+
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
|
190
|
+
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
|
191
|
+
</label>
|
|
192
|
+
</div>
|
|
193
|
+
</header>
|
|
194
|
+
<aside class="sidebar-drawer">
|
|
195
|
+
<div class="sidebar-container">
|
|
196
|
+
|
|
197
|
+
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
|
201
|
+
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
|
202
|
+
<input type="hidden" name="check_keywords" value="yes">
|
|
203
|
+
<input type="hidden" name="area" value="default">
|
|
204
|
+
</form>
|
|
205
|
+
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
|
206
|
+
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
|
207
|
+
<ul class="current">
|
|
208
|
+
<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
|
|
209
|
+
<li class="toctree-l1"><a class="reference internal" href="workflows.html">Workflows</a></li>
|
|
210
|
+
<li class="toctree-l1"><a class="reference internal" href="ui_documentation.html">Graphical User Interface</a></li>
|
|
211
|
+
<li class="toctree-l1 current has-children"><a class="reference internal" href="developer_guide.html">Developer Guide</a><input aria-label="Toggle navigation of Developer Guide" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
|
212
|
+
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Persisting and Visualizing Data</a></li>
|
|
213
|
+
<li class="toctree-l2"><a class="reference internal" href="datasets.html">Datasets</a></li>
|
|
214
|
+
<li class="toctree-l2"><a class="reference internal" href="lists.html">List Mixins</a></li>
|
|
215
|
+
<li class="toctree-l2"><a class="reference internal" href="array_lists.html">Array Lists</a></li>
|
|
216
|
+
<li class="toctree-l2"><a class="reference internal" href="tables.html">Tables</a></li>
|
|
217
|
+
<li class="toctree-l2"><a class="reference internal" href="files.html">File Management</a></li>
|
|
218
|
+
<li class="toctree-l2"><a class="reference internal" href="resource_config.html">Program Execution</a></li>
|
|
219
|
+
<li class="toctree-l2"><a class="reference internal" href="mass_runner.html">MassRunner</a></li>
|
|
220
|
+
<li class="toctree-l2"><a class="reference internal" href="fire_and_forget_runner.html">FireAndForgetRunner</a></li>
|
|
221
|
+
<li class="toctree-l2"><a class="reference internal" href="docker_nodes.html">Creating Docker Containers for SimStack Nodes</a></li>
|
|
222
|
+
<li class="toctree-l2"><a class="reference internal" href="testing_complex_nodes.html">Testing Complex Nodes</a></li>
|
|
223
|
+
<li class="toctree-l2"><a class="reference internal" href="database_migrations.html">Database Migrations</a></li>
|
|
224
|
+
<li class="toctree-l2"><a class="reference internal" href="ci_pipeline.html">CI Pipeline and Documentation Artifacts</a></li>
|
|
225
|
+
<li class="toctree-l2"><a class="reference internal" href="misc.html">Miscellaneous</a></li>
|
|
226
|
+
</ul>
|
|
227
|
+
</li>
|
|
228
|
+
<li class="toctree-l1"><a class="reference internal" href="installation.html">Simstack II Setup</a></li>
|
|
229
|
+
<li class="toctree-l1 has-children"><a class="reference internal" href="simstack/modules/modules.html">simstack</a><input aria-label="Toggle navigation of simstack" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
|
230
|
+
<li class="toctree-l2 has-children"><a class="reference internal" href="simstack/modules/simstack.html">simstack package</a><input aria-label="Toggle navigation of simstack package" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
|
231
|
+
<li class="toctree-l3 has-children"><a class="reference internal" href="simstack/modules/simstack.core.html">simstack.core package</a><input aria-label="Toggle navigation of simstack.core package" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
|
232
|
+
<li class="toctree-l4"><a class="reference internal" href="simstack/modules/simstack.core.services.html">simstack.core.services package</a></li>
|
|
233
|
+
</ul>
|
|
234
|
+
</li>
|
|
235
|
+
<li class="toctree-l3"><a class="reference internal" href="simstack/modules/simstack.methods.html">simstack.methods package</a></li>
|
|
236
|
+
<li class="toctree-l3"><a class="reference internal" href="simstack/modules/simstack.models.html">simstack.models package</a></li>
|
|
237
|
+
<li class="toctree-l3"><a class="reference internal" href="simstack/modules/simstack.tables.html">simstack.tables package</a></li>
|
|
238
|
+
<li class="toctree-l3"><a class="reference internal" href="simstack/modules/simstack.util.html">simstack.util package</a></li>
|
|
239
|
+
</ul>
|
|
240
|
+
</li>
|
|
241
|
+
</ul>
|
|
242
|
+
</li>
|
|
243
|
+
</ul>
|
|
244
|
+
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
</div>
|
|
251
|
+
</aside>
|
|
252
|
+
<div class="main">
|
|
253
|
+
<div class="content">
|
|
254
|
+
<div class="article-container">
|
|
255
|
+
<a href="#" class="back-to-top muted-link">
|
|
256
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
257
|
+
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
|
258
|
+
</svg>
|
|
259
|
+
<span>Back to top</span>
|
|
260
|
+
</a>
|
|
261
|
+
<div class="content-icon-container">
|
|
262
|
+
<div class="view-this-page">
|
|
263
|
+
<a class="muted-link" href="_sources/data.rst.txt" title="View this page">
|
|
264
|
+
<svg><use href="#svg-eye"></use></svg>
|
|
265
|
+
<span class="visually-hidden">View this page</span>
|
|
266
|
+
</a>
|
|
267
|
+
</div>
|
|
268
|
+
<div class="theme-toggle-container theme-toggle-content">
|
|
269
|
+
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
|
270
|
+
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
|
271
|
+
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
|
272
|
+
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
|
273
|
+
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
|
274
|
+
</button>
|
|
275
|
+
</div>
|
|
276
|
+
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
|
277
|
+
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
|
278
|
+
</label>
|
|
279
|
+
</div>
|
|
280
|
+
<article role="main" id="furo-main-content">
|
|
281
|
+
<section id="persisting-and-visualizing-data">
|
|
282
|
+
<span id="persisting-data"></span><h1>Persisting and Visualizing Data<a class="headerlink" href="#persisting-and-visualizing-data" title="Link to this heading">¶</a></h1>
|
|
283
|
+
<div class="admonition note">
|
|
284
|
+
<p class="admonition-title">Note</p>
|
|
285
|
+
<p>This section is intended for node-developers.</p>
|
|
286
|
+
</div>
|
|
287
|
+
<p>Simstack persists data using a MongoDB database, which is exposed via the
|
|
288
|
+
fast-api server to a web-frontend. Each user has a dedicated database
|
|
289
|
+
on a MongoDB server which is configured in the configuration file
|
|
290
|
+
(<a class="reference internal" href="installation.html#configuration-file"><span class="std std-ref">Create simstack.toml</span></a>).</p>
|
|
291
|
+
<p>To facilitate access to the database in the python workflows, Simstack II uses the odmantic
|
|
292
|
+
package to provide an object-oriented access to the data via odmantic
|
|
293
|
+
Models. Odmantic Models are drived from pydantic (V2) classes and developers
|
|
294
|
+
of nodes (<a class="reference internal" href="workflows.html#workflows"><span class="std std-ref">Workflows</span></a>) can define their own classes deriving from Model.</p>
|
|
295
|
+
<p>To customize the appearance of the models in the UI, the model definition
|
|
296
|
+
should be decorated by <code class="docutils literal notranslate"><span class="pre">@simstack_model</span></code>
|
|
297
|
+
(<code class="xref py py-func docutils literal notranslate"><span class="pre">simstack.core.simstack_model.simstack_model()</span></code>)
|
|
298
|
+
which provides ui-related functionality discussed below
|
|
299
|
+
(<a class="reference internal" href="#model-appearance"><span class="std std-ref">Model Appearance in the GUI</span></a>)</p>
|
|
300
|
+
<section id="model-definitions">
|
|
301
|
+
<h2>Model Definitions<a class="headerlink" href="#model-definitions" title="Link to this heading">¶</a></h2>
|
|
302
|
+
<p>For detailed information on odmantic models, consult the odmantic
|
|
303
|
+
documentation.</p>
|
|
304
|
+
<p>A basic model definition look like:</p>
|
|
305
|
+
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">List</span>
|
|
306
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">odmantic</span><span class="w"> </span><span class="kn">import</span> <span class="n">Model</span><span class="p">,</span> <span class="n">EmbeddedModel</span><span class="p">,</span> <span class="n">Field</span>
|
|
307
|
+
|
|
308
|
+
<span class="nd">@simstack_model</span>
|
|
309
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">OtherModel</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
|
|
310
|
+
<span class="n">observations</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span>
|
|
311
|
+
<span class="nb">max</span><span class="p">:</span> <span class="nb">float</span>
|
|
312
|
+
|
|
313
|
+
<span class="nd">@simstack_model</span>
|
|
314
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">SmallData</span><span class="p">(</span><span class="n">EmbeddedModel</span><span class="p">)</span>
|
|
315
|
+
<span class="n">number</span><span class="p">:</span> <span class="nb">int</span>
|
|
316
|
+
|
|
317
|
+
<span class="nd">@simstack_model</span>
|
|
318
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">ComplexData</span><span class="p">(</span><span class="n">Model</span><span class="p">)</span>
|
|
319
|
+
<span class="n">counter</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
|
320
|
+
<span class="n">limit</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
|
321
|
+
<span class="n">other_model</span><span class="p">:</span> <span class="n">OtherModel</span> <span class="o">=</span> <span class="n">Reference</span><span class="p">()</span> <span class="c1"># this defines a reference to the</span>
|
|
322
|
+
<span class="c1"># other table in the db</span>
|
|
323
|
+
<span class="c1"># loading ComplexData will load</span>
|
|
324
|
+
<span class="c1"># the other model too</span>
|
|
325
|
+
<span class="n">small_data</span><span class="p">:</span> <span class="n">SmallData</span> <span class="c1"># directly stored in the complex_data table</span>
|
|
326
|
+
</pre></div>
|
|
327
|
+
</div>
|
|
328
|
+
<div class="admonition important">
|
|
329
|
+
<p class="admonition-title">Important</p>
|
|
330
|
+
<ul class="simple">
|
|
331
|
+
<li><p>The node developer does not have explicitly save models to the db, the
|
|
332
|
+
@node decorator will take care of this.</p></li>
|
|
333
|
+
<li><p>There is <strong>no Model inheritance</strong>, which is a real pain.</p></li>
|
|
334
|
+
<li><p>ODMantic Issue #484: <a class="reference external" href="https://github.com/art049/odmantic/issues/484">https://github.com/art049/odmantic/issues/484</a></p></li>
|
|
335
|
+
</ul>
|
|
336
|
+
</div>
|
|
337
|
+
<div class="admonition note">
|
|
338
|
+
<p class="admonition-title">Note</p>
|
|
339
|
+
<p>Even though its formally allowed do not use Dict[str,Any] in models,
|
|
340
|
+
because the UI behavior is unpredictable (see below).
|
|
341
|
+
Dict[str,known_type] is ok.</p>
|
|
342
|
+
</div>
|
|
343
|
+
<p><strong>Standard Models</strong></p>
|
|
344
|
+
<p><a class="reference internal" href="simstack/modules/simstack.models.html#module-simstack.models.base_types" title="simstack.models.base_types"><code class="xref py py-mod docutils literal notranslate"><span class="pre">simstack.models.base_types</span></code></a> provides basic models:</p>
|
|
345
|
+
<ul class="simple">
|
|
346
|
+
<li><p>IntData</p></li>
|
|
347
|
+
<li><p>StrData</p></li>
|
|
348
|
+
<li><p>FloatData</p></li>
|
|
349
|
+
<li><p>BooleanData</p></li>
|
|
350
|
+
</ul>
|
|
351
|
+
<p>And <a class="reference internal" href="simstack/modules/simstack.models.html#module-simstack.models.array_storage" title="simstack.models.array_storage"><code class="xref py py-mod docutils literal notranslate"><span class="pre">simstack.models.array_storage</span></code></a>:</p>
|
|
352
|
+
<ul class="simple">
|
|
353
|
+
<li><p>ArrayStorage</p></li>
|
|
354
|
+
<li><p>ArrayList</p></li>
|
|
355
|
+
</ul>
|
|
356
|
+
<p>And the list mixins for creating custom list models (see <a class="reference internal" href="lists.html"><span class="doc">List Mixins</span></a>):</p>
|
|
357
|
+
<ul class="simple">
|
|
358
|
+
<li><p>GenericListMixin</p></li>
|
|
359
|
+
<li><p>ObjectListMixin</p></li>
|
|
360
|
+
</ul>
|
|
361
|
+
<p>And for file management (see <a class="reference internal" href="files.html"><span class="doc">File Management</span></a>):</p>
|
|
362
|
+
<ul class="simple">
|
|
363
|
+
<li><p>FileStack</p></li>
|
|
364
|
+
<li><p>FileList</p></li>
|
|
365
|
+
<li><p>FileListModel</p></li>
|
|
366
|
+
</ul>
|
|
367
|
+
<p>And the parallel execution utilities (see <a class="reference internal" href="mass_runner.html"><span class="doc">MassRunner</span></a> and <a class="reference internal" href="fire_and_forget_runner.html"><span class="doc">FireAndForgetRunner</span></a>):</p>
|
|
368
|
+
<ul class="simple">
|
|
369
|
+
<li><p>MassRunner</p></li>
|
|
370
|
+
<li><p>FireAndForgetRunner</p></li>
|
|
371
|
+
</ul>
|
|
372
|
+
<p><a class="reference internal" href="simstack/modules/simstack.models.html#simstack.models.array_storage.ArrayStorage" title="simstack.models.array_storage.ArrayStorage"><code class="xref py py-class docutils literal notranslate"><span class="pre">simstack.models.array_storage.ArrayStorage</span></code></a> is an example of a class which
|
|
373
|
+
packs its content by serializing and deserializing it. This is the
|
|
374
|
+
recommended procedure for all content which MongoDB cannot natively store. To
|
|
375
|
+
interact with such classes, the developer has to provide access functions and
|
|
376
|
+
a member function <code class="docutils literal notranslate"><span class="pre">custom_model_dump</span></code> which the fast-api server to convert
|
|
377
|
+
the content of the class into a dict which can be visualized in the GUI.</p>
|
|
378
|
+
<section id="model-appearance-in-the-gui">
|
|
379
|
+
<span id="model-appearance"></span><h3>Model Appearance in the GUI<a class="headerlink" href="#model-appearance-in-the-gui" title="Link to this heading">¶</a></h3>
|
|
380
|
+
<p>The <code class="xref py py-class docutils literal notranslate"><span class="pre">simstack.models.models.ModelTable</span></code> table in the database stores
|
|
381
|
+
for each class a json-schema (derived from the pydantic json-schema) and a
|
|
382
|
+
<code class="docutils literal notranslate"><span class="pre">ui_scheme</span></code> which is created by
|
|
383
|
+
<code class="xref py py-func docutils literal notranslate"><span class="pre">simstack.core.model_table.make_model_table()</span></code>.</p>
|
|
384
|
+
<p>The UI used a package react-json-forms (rjsf) to interpret these schema to
|
|
385
|
+
provide input and output representations of the model. When queried the
|
|
386
|
+
routes of the fast-api server provide (get) or store (post) dicts that are
|
|
387
|
+
compatible with the json-schema. 8</p>
|
|
388
|
+
<p><strong>Class Methods</strong></p>
|
|
389
|
+
<div class="table-wrapper docutils container">
|
|
390
|
+
<table class="docutils align-default">
|
|
391
|
+
<tbody>
|
|
392
|
+
<tr class="row-odd"><td><p>Function Name</p></td>
|
|
393
|
+
<td><p>Purpose</p></td>
|
|
394
|
+
<td><p>default</p></td>
|
|
395
|
+
</tr>
|
|
396
|
+
<tr class="row-even"><td><p>json_schema</p></td>
|
|
397
|
+
<td><p>json schema for rjsf</p></td>
|
|
398
|
+
<td><p>pydantic-schema</p></td>
|
|
399
|
+
</tr>
|
|
400
|
+
<tr class="row-odd"><td><p>ui_schema</p></td>
|
|
401
|
+
<td><p>ui_schema dict for rjsf</p></td>
|
|
402
|
+
<td><p>hide id</p></td>
|
|
403
|
+
</tr>
|
|
404
|
+
<tr class="row-even"><td><p>ui_make_title</p></td>
|
|
405
|
+
<td><p>title for the model in ui</p></td>
|
|
406
|
+
<td><p>class name</p></td>
|
|
407
|
+
</tr>
|
|
408
|
+
<tr class="row-odd"><td><p>from_dict</p></td>
|
|
409
|
+
<td><p>create model instance from dict</p></td>
|
|
410
|
+
<td><p>odmantic func</p></td>
|
|
411
|
+
</tr>
|
|
412
|
+
<tr class="row-even"><td><p>from_model</p></td>
|
|
413
|
+
<td><p>copy constructor</p></td>
|
|
414
|
+
<td><p>odmantic default</p></td>
|
|
415
|
+
</tr>
|
|
416
|
+
</tbody>
|
|
417
|
+
</table>
|
|
418
|
+
</div>
|
|
419
|
+
<p><strong>Instance Functions</strong></p>
|
|
420
|
+
<div class="table-wrapper docutils container">
|
|
421
|
+
<table class="docutils align-default">
|
|
422
|
+
<tbody>
|
|
423
|
+
<tr class="row-odd"><td><p>Function Name</p></td>
|
|
424
|
+
<td><p>Purpose</p></td>
|
|
425
|
+
<td><p>default</p></td>
|
|
426
|
+
</tr>
|
|
427
|
+
<tr class="row-even"><td><p>custom_model_dump</p></td>
|
|
428
|
+
<td><p>convert model to dict</p></td>
|
|
429
|
+
<td><p>model_dump</p></td>
|
|
430
|
+
</tr>
|
|
431
|
+
</tbody>
|
|
432
|
+
</table>
|
|
433
|
+
</div>
|
|
434
|
+
</section>
|
|
435
|
+
</section>
|
|
436
|
+
<section id="advanced-tools">
|
|
437
|
+
<h2>Advanced Tools<a class="headerlink" href="#advanced-tools" title="Link to this heading">¶</a></h2>
|
|
438
|
+
<p>Conditional Schema</p>
|
|
439
|
+
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">schema</span><span class="p">[</span><span class="s1">'properties'</span><span class="p">][</span><span class="s1">'test'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
|
440
|
+
<span class="s2">"type"</span><span class="p">:</span> <span class="s2">"object"</span><span class="p">,</span>
|
|
441
|
+
<span class="s2">"oneOf"</span><span class="p">:</span> <span class="p">[</span>
|
|
442
|
+
<span class="p">{</span>
|
|
443
|
+
<span class="s2">"properties"</span><span class="p">:</span> <span class="p">{</span>
|
|
444
|
+
<span class="s2">"lorem"</span><span class="p">:</span> <span class="p">{</span>
|
|
445
|
+
<span class="s2">"type"</span><span class="p">:</span> <span class="s2">"string"</span>
|
|
446
|
+
<span class="p">}</span>
|
|
447
|
+
<span class="p">},</span>
|
|
448
|
+
<span class="s2">"required"</span><span class="p">:</span> <span class="p">[</span>
|
|
449
|
+
<span class="s2">"lorem"</span>
|
|
450
|
+
<span class="p">]</span>
|
|
451
|
+
<span class="p">},</span>
|
|
452
|
+
<span class="p">{</span>
|
|
453
|
+
<span class="s2">"properties"</span><span class="p">:</span> <span class="p">{</span>
|
|
454
|
+
<span class="s2">"ipsum"</span><span class="p">:</span> <span class="p">{</span>
|
|
455
|
+
<span class="s2">"type"</span><span class="p">:</span> <span class="s2">"string"</span>
|
|
456
|
+
<span class="p">}</span>
|
|
457
|
+
<span class="p">},</span>
|
|
458
|
+
<span class="s2">"required"</span><span class="p">:</span> <span class="p">[</span>
|
|
459
|
+
<span class="s2">"ipsum"</span>
|
|
460
|
+
<span class="p">]</span>
|
|
461
|
+
<span class="p">}</span>
|
|
462
|
+
</pre></div>
|
|
463
|
+
</div>
|
|
464
|
+
</section>
|
|
465
|
+
</section>
|
|
466
|
+
|
|
467
|
+
</article>
|
|
468
|
+
</div>
|
|
469
|
+
<footer>
|
|
470
|
+
|
|
471
|
+
<div class="related-pages">
|
|
472
|
+
<a class="next-page" href="datasets.html">
|
|
473
|
+
<div class="page-info">
|
|
474
|
+
<div class="context">
|
|
475
|
+
<span>Next</span>
|
|
476
|
+
</div>
|
|
477
|
+
<div class="title">Datasets</div>
|
|
478
|
+
</div>
|
|
479
|
+
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
|
480
|
+
</a>
|
|
481
|
+
<a class="prev-page" href="developer_guide.html">
|
|
482
|
+
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
|
483
|
+
<div class="page-info">
|
|
484
|
+
<div class="context">
|
|
485
|
+
<span>Previous</span>
|
|
486
|
+
</div>
|
|
487
|
+
|
|
488
|
+
<div class="title">Developer Guide</div>
|
|
489
|
+
|
|
490
|
+
</div>
|
|
491
|
+
</a>
|
|
492
|
+
</div>
|
|
493
|
+
<div class="bottom-of-page">
|
|
494
|
+
<div class="left-details">
|
|
495
|
+
<div class="copyright">
|
|
496
|
+
Copyright © 2026, Wolfgang Wenzel
|
|
497
|
+
</div>
|
|
498
|
+
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
|
499
|
+
|
|
500
|
+
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
|
501
|
+
|
|
502
|
+
</div>
|
|
503
|
+
<div class="right-details">
|
|
504
|
+
|
|
505
|
+
</div>
|
|
506
|
+
</div>
|
|
507
|
+
|
|
508
|
+
</footer>
|
|
509
|
+
</div>
|
|
510
|
+
<aside class="toc-drawer">
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
<div class="toc-sticky toc-scroll">
|
|
514
|
+
<div class="toc-title-container">
|
|
515
|
+
<span class="toc-title">
|
|
516
|
+
On this page
|
|
517
|
+
</span>
|
|
518
|
+
</div>
|
|
519
|
+
<div class="toc-tree-container">
|
|
520
|
+
<div class="toc-tree">
|
|
521
|
+
<ul>
|
|
522
|
+
<li><a class="reference internal" href="#">Persisting and Visualizing Data</a><ul>
|
|
523
|
+
<li><a class="reference internal" href="#model-definitions">Model Definitions</a><ul>
|
|
524
|
+
<li><a class="reference internal" href="#model-appearance-in-the-gui">Model Appearance in the GUI</a></li>
|
|
525
|
+
</ul>
|
|
526
|
+
</li>
|
|
527
|
+
<li><a class="reference internal" href="#advanced-tools">Advanced Tools</a></li>
|
|
528
|
+
</ul>
|
|
529
|
+
</li>
|
|
530
|
+
</ul>
|
|
531
|
+
|
|
532
|
+
</div>
|
|
533
|
+
</div>
|
|
534
|
+
</div>
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
</aside>
|
|
538
|
+
</div>
|
|
539
|
+
</div><script src="_static/documentation_options.js?v=5929fcd5"></script>
|
|
540
|
+
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
|
541
|
+
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
|
542
|
+
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
|
|
543
|
+
<script data-docs-built-at="2026-07-17 10:50:10 UTC" src="_static/docs-build-badge.js?v=57cb9fc6"></script>
|
|
544
|
+
</body>
|
|
545
|
+
</html>
|