-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Documentation To-Dos
- Add section explaining the Case + Options + Environment concept
- Highlight uniqueness and reproducibility of result directories
- Include explanation of reusing
Optionsacross multiple projects - Document how to define reproducible environments with Conda/Pip
- Describe how to run cases in Docker/Podman containers
- Include instructions for setting up
passtand its system requirements - Replace deprecated method
run_study()with the new method name across the documentation - Expand upon general description and introduction
- Improve user readability by modifying documentation structure, e.g: getting-started.md explains creating remote repositories but not how to add remotes
rdm remote set-url/ add, how to stage changesrdm checkor how to push to remotesrdm push - loading results from another repository into the target_project (using the CLI) is not implemented yet: load results based on the rdm-cache.json
- Bibliography doesn't show up in readthedocs.io: Section "bibliography" should load references.bib but fails, thus website remains empty
1. Unique Results from [Project + Options + Environment] and Reusability of Options
The documentation should explain that a combination of a specific Project, configuration Options, and runtime Environment defines a unique and reproducible run. This combination determines how results are stored and reloaded, and ensures consistency in comparisons and reruns.
Additionally, Options objects can be reused across different projects or used to define multiple configurations within a single project. This is essential for parameter sweeps or comparative studies and avoids redundant configuration code.
Internally, each Options instance is hashed to determine whether identical results already exist. Keys starting with an underscore (_) or containing double underscores (__) are excluded from the hash computation. This allows non-functional configuration (e.g., cache directories) to be specified without affecting result identity.
env = Environment(conda_packages={"cadet": ">5.0.3"}, pip_packages={"numpy": "2.0.2"})
options = Options({
'objective': 'single-objective',
'optimizer_options': DEFAULT_UNSGA_OPTIMIZER_OPTIONS,
'debug': debug,
'push': push,
})
project_repo = ProjectRepo(path=study_root / name, url=study_url, branch=study_branch)
case = Case(project_repo=project_repo, options=options, environment=env)
case.run_study() # notiz jetzt: sollte umbenannt werden weil wir Study deprecated haben.
assert case.has_results_for_this_run
case.load()
path = case.results_path
References:
test_batch_runner.pydiss_runner/run_all.py(Jugit repo, ask Jo)
2. Environment: Reproducibility via Conda/Pip Packages
The Environment object defines the runtime environment using Conda and/or Pip dependencies. This should be documented as a core part of each case setup to ensure results are reproducible and consistent across systems and collaborators.
Example:
env = Environment(
conda_packages={"cadet": ">5.0.3"},
pip_packages={"numpy": "2.0.2"}
)3. Containerization Support (Docker/Podman)
The documentation should include how to run a case inside a container, either Docker or Podman. This includes:
- The integration of the
Casesystem with container execution - The requirement for
passtto enable container networking - Platform-specific notes for setting up and exposing
passtin the system environment
For Podman to work correctly, passt must be installed and accessible via the system PATH. This will require administrative setup on shared infrastructure, such as the IBT servers (ask Martin).
Example to ensure passt is in PATH:
os.environ["PATH"] += os.pathsep + "/home/bin/passt"
Reference test files:
- `test_container_docker.py`
- `test_container_podman.py`4. Method naming update
The method run_study() used in the Case object is deprecated and will be renamed. All examples and documentation referencing it should be updated once the new name is finalized.