Warning, /AID2E-framework/examples/drich/workflow.yml is written in an unsupported language. File is not indexed.
0001 # This example shows:
0002 # 1. Optimization with Ax (Sobol warmup + BO)
0003 # 2. Multi-objective dRICH optimization:
0004 # maximize pi/K separation and acceptance
0005 # 3. ePIC workflow chain: geo -> sim_rec -> ana -> retrieve_results
0006 # ============================================================================
0007
0008 # Problem definition
0009 problem:
0010 name: "dRICH Optimization"
0011 problem_type: "EPIC_dRICH"
0012 description: "Optimization of dRICH"
0013
0014 output_location: "./output"
0015 work_location: "./work"
0016
0017 design_parameters_file: "./design.params"
0018
0019 objectives:
0020 - name: "piKsep_etalow"
0021 direction: "maximize"
0022 - name: "piKsep_etahigh"
0023 direction: "maximize"
0024 - name: "acceptance"
0025 direction: "maximize"
0026
0027 epic_environment:
0028 epic_install: "./work/eic-software"
0029 epic_config: "epic_craterlake"
0030 geometry_mode: "no_build"
0031 eic_shell: "./work/eic-shell"
0032 eic_recon_install: "./work/eic-software/share/epic/local"
0033
0034 evaluation_config:
0035 npart: 500
0036 bootstrap_samples: 50
0037 nbootstraps: 50
0038 particles: ["pi+", "kaon+"]
0039 analysis_executable: "script/dRICHAna_bootstrap"
0040 output_name: "drich_optimization_toy"
0041 scan_points:
0042 - {p: 15, eta_min: 1.5, eta_max: 2.0, radiator: 0}
0043 - {p: 15, eta_min: 2.0, eta_max: 2.5, radiator: 0}
0044 - {p: 45, eta_min: 2.5, eta_max: 3.0, radiator: 1}
0045 - {p: 45, eta_min: 3.0, eta_max: 3.5, radiator: 1}
0046
0047 failure_policy: "penalty" # penalty | fail
0048 max_failed_trials: 5
0049 failed_objectives:
0050 piKsep_etalow: 0.0
0051 piKsep_etahigh: 0.0
0052 acceptance: 0.0
0053
0054 # Optimizer configuration
0055 optimizer:
0056 name: "ax"
0057 type: "bayesian"
0058 parameters:
0059 initialization_strategy: "sobol"
0060 seed: 999
0061
0062 generator: "BOTORCH_MODULAR"
0063 objective_thresholds:
0064 piKsep_etalow: 3.62
0065 piKsep_etahigh: 4.04
0066 acceptance: 0.80
0067
0068 n_initial_samples: 10 # n_sobol
0069 n_iterations: 50
0070 batch_size: 5 # n_batch_sobol = n_batch_mobo
0071
0072 # Global scheduler configuration
0073 scheduler:
0074 runner_type: "JobLibRunner" # JobLibRunner, SlurmRunner, PanDAiDDSRunner
0075 parameters:
0076 n_jobs: 2
0077 backend: "threading"
0078
0079 # Workflow execution
0080 workflows:
0081 workflows:
0082 - name: "drich_eval"
0083 description: "dRICH evaluation workflow"
0084 stack_type: "epic"
0085
0086 branches:
0087 - name: "main"
0088 scheduler:
0089 runner_type: "SlurmRunner"
0090 parameters: &drich_stage_slurm
0091 job_name_prefix: "drich"
0092 account: "vossenlab"
0093 partition: "scavenger"
0094 nodes: 1
0095 ntasks: 1
0096 cpus_per_task: 1
0097 mem: "4G"
0098 time: "04:00:00"
0099 poll_interval: 10
0100 capture_stdout: true
0101 capture_stderr: true
0102 stages:
0103 - name: "geo"
0104 # Edit trial XML and run checkOverlaps.
0105 jobs:
0106 - name: "drich_geo"
0107 command: &drich_command "{{python_executable}} {{repo_root}}/examples/drich/drich_eval.py"
0108 rule: &drich_rule_no_job_index "{{command}} --stage {{stage_id}} --trial-index {{payload[trial_index]}} --output-dir {{payload[output_dir]}} --config-path {{payload[config_path]}} --prepared-geometry-dir {{prepared_geometry_dir}}"
0109
0110 - name: "sim_rec"
0111 # Run npsim and then eicrecon in the same job
0112 jobs:
0113 - name: "drich_sim_rec"
0114 command: *drich_command
0115 rule: &drich_rule_with_job_index "{{command}} --stage {{stage_id}} --job-index {{payload[job_index]}} --trial-index {{payload[trial_index]}} --output-dir {{payload[output_dir]}} --config-path {{payload[config_path]}} --prepared-geometry-dir {{prepared_geometry_dir}}"
0116 job_factory:
0117 type: "range"
0118 params:
0119 # scan_points x particles = 4 x 2
0120 n: 8
0121
0122 - name: "ana"
0123 # Run analysis once per scan point using pi+/kaon+ reco files.
0124 jobs:
0125 - name: "drich_ana"
0126 command: *drich_command
0127 rule: *drich_rule_with_job_index
0128 job_factory:
0129 type: "range"
0130 params:
0131 # scan_points = 4
0132 n: 4
0133
0134 - name: "retrieve_results"
0135 # Read analysis outputs and compute objectives.
0136 jobs:
0137 - name: "drich_retrieve_results"
0138 command: *drich_command
0139 rule: *drich_rule_no_job_index
0140 outputs:
0141 - path: "{{payload[result_json]}}"
0142 format: "json"