Deborah.EstherThreads
Deborah.EstherThreads — Modulemodule EstherThreadsDeborah.EstherThreads — Threaded dispatcher for multi-job Deborah.Esther runs.
Deborah.EstherThreads parallelizes multiple Deborah.Esther computations (across LBP/TRP grids) using Julia Threads. It parses a master TOML config into per-job arguments, writes job-specific configs, ensures Deborah.DeborahCore prerequisites for $\text{Tr}\,M^{-n} \; (n=1,2,3,4)$ are present, and launches Deborah.Esther in batches of Base.Threads.nthreads() with per-job logging.
Scope & Responsibilities
- Config expansion:
EstherThreadsRunner.parse_config_EstherThreads→ list of jobs overlabels$\times$trains. - Per-job config:
EstherThreadsRunner.generate_toml_dictbuilds aTOMLdict for oneDeborah.Estherjob. - Dependency check: call
Deborah.DeborahEsther.EstherDependencyManager.ensure_TrM_existsto guarantee $\text{Tr}\,M^{-n} \; (n=1,2,3,4)$ inputs exist (auto-invokesDeborah.DeborahCoreif needed). - Threaded execution: spawn tasks in batches; each job writes its own
.logfile. - Stable naming: construct
overall_name/output_baseusing either fullX_Yor abbreviation codes plus model suffixes.
Public API
File/Path Conventions
- Output base:
<location>/<analysis_header>_<ensemble>/<analysis_header>_<ensemble>_<TrM1..TrM4(+model_suffixes)>/ - Per-job directory:
.../<overall_name>/ - Per-job config:
config_Esther_<overall_name>.toml - Per-job log:
run_Esther_<overall_name>.log
Minimal Usage (REPL)
julia> using Deborah
julia> run_EstherThreads("config_EstherThreads.toml")Notes
- All column indices are $1$-based.
- Bootstrap
methodshould be"nonoverlapping","moving", or"circular". - Parallel width equals
Base.Threads.nthreads(); setJULIA_NUM_THREADSto adjust. - Abbreviation dicts are supported and propagated when
use_abbreviation = true.