From 09dce68d9793c12afa36b6894579d6d7fe29031d Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Thu, 25 Jun 2026 13:45:10 -0400 Subject: [PATCH 01/14] v0 --- setup.py | 3 + yarp/reaction/conf_sampling/joint_opt.py | 199 ++++++++++++++++++++ yarp/reaction/conf_sampling/select_pairs.py | 172 ++++++++++------- yarp/reaction/external/ts_guess.py | 72 ++++--- yarp/util/config.py | 30 ++- 5 files changed, 380 insertions(+), 96 deletions(-) diff --git a/setup.py b/setup.py index d11fe8db..baf23f6b 100644 --- a/setup.py +++ b/setup.py @@ -5,6 +5,9 @@ name="yarp", # This is the name you'll use to import or pip install version="3.0.0", packages=find_packages(), # Automatically finds yarp/ and its subpackages + package_data={ + "yarp.reaction.conf_sampling": ["*.sav"], + }, install_requires=[], # Add dependencies here if needed entry_points={ # Allows for easy command-line executables 'console_scripts': [ diff --git a/yarp/reaction/conf_sampling/joint_opt.py b/yarp/reaction/conf_sampling/joint_opt.py index c9e2f456..ac84ea45 100644 --- a/yarp/reaction/conf_sampling/joint_opt.py +++ b/yarp/reaction/conf_sampling/joint_opt.py @@ -1,7 +1,20 @@ import copy import numpy as np +import shutil +import subprocess +from pathlib import Path +from typing import NamedTuple from openbabel import openbabel as ob +from yarp.yarpecule.input_parsers import xyz_parse +from yarp.util.properties import el_radii from yarp.util.write_files import mol_write_yp +from yarp.util.write_files import xyz_write + + +class XTBConstraint(NamedTuple): + atom_i: int + atom_j: int + distance: float def ob_joint_optimize(conformer, target_bem, ff_name="uff"): """ @@ -29,6 +42,192 @@ def ob_joint_optimize(conformer, target_bem, ff_name="uff"): return biased_conf +def bem_to_distance_constraints(elements, target_bem): + """ + Convert a target BEM into xTB distance constraints. + + Any positive off-diagonal BEM entry is treated as a target bond. Distances + follow the legacy xTB joint-optimization behavior: summed covalent radii. + Atom indices are converted to xTB's 1-indexed convention. + """ + target_bem = np.asarray(target_bem) + if target_bem.ndim != 2 or target_bem.shape[0] != target_bem.shape[1]: + raise ValueError(f"target_bem must be a square matrix, got shape {target_bem.shape}") + if len(elements) != target_bem.shape[0]: + raise ValueError( + f"elements length ({len(elements)}) does not match target_bem size ({target_bem.shape[0]})" + ) + + constraints = [] + for i in range(target_bem.shape[0] - 1): + for j in range(i + 1, target_bem.shape[1]): + if target_bem[i, j] <= 0: + continue + + radius_i = el_radii.get(elements[i], el_radii.get(str(elements[i]).capitalize())) + radius_j = el_radii.get(elements[j], el_radii.get(str(elements[j]).capitalize())) + if radius_i is None or radius_j is None: + raise KeyError(f"Missing covalent radius for constrained pair {elements[i]}-{elements[j]}") + + constraints.append(XTBConstraint(i + 1, j + 1, float(radius_i + radius_j))) + + return constraints + + +def write_xtb_xcontrol(path, constraints, force_constant=1.0): + """ + Write xTB distance constraints using the legacy one-block-per-distance format. + """ + path = Path(path) + with path.open("w", encoding="utf-8") as f: + for constraint in constraints: + f.write("$constrain\n") + f.write(f"force constant={force_constant}\n") + f.write(f"distance: {constraint.atom_i}, {constraint.atom_j}, {constraint.distance:.4f}\n") + f.write("$\n\n") + + +def _xtb_lot_flags(lot): + lot = lot.lower() + if lot == "gfnff": + return ["--gfnff"] + if lot == "gfn2": + return ["--gfn", "2"] + if lot == "gfn1": + return ["--gfn", "1"] + raise ValueError(f"Unsupported xTB joint optimization level: {lot}") + + +def _build_xtb_command( + input_xyz, + xcontrol, + *, + namespace, + lot="gfn2", + xtb_path="xtb", + charge=0, + multiplicity=1, + n_cpus=1, + scf_iters=300, + solvent=None, + solvation_model="alpb", +): + cmd = [ + xtb_path, + Path(input_xyz).name, + "--iterations", + str(scf_iters), + "--chrg", + str(charge), + "--uhf", + str(max(int(multiplicity) - 1, 0)), + "--namespace", + namespace, + "--opt", + "--parallel", + str(n_cpus), + "--input", + Path(xcontrol).name, + ] + cmd.extend(_xtb_lot_flags(lot)) + + if solvent: + model = solvation_model.lower() + if model not in {"alpb", "gbsa"}: + raise ValueError(f"Unsupported xTB solvation model: {solvation_model}") + cmd.extend([f"--{model}", str(solvent)]) + + return cmd + + +def _xtb_converged(stdout, stderr, output_path=None): + text = "\n".join([stdout or "", stderr or ""]) + if output_path is not None and Path(output_path).exists(): + text += "\n" + Path(output_path).read_text(encoding="utf-8", errors="replace") + return "GEOMETRY OPTIMIZATION CONVERGED" in text + + +def _find_xtbopt_xyz(work_dir, namespace): + work_dir = Path(work_dir) + for candidate in [work_dir / f"{namespace}.xtbopt.xyz", work_dir / "xtbopt.xyz"]: + if candidate.exists(): + return candidate + return None + + +def xtb_joint_optimize( + conformer, + target_bem, + scratch_dir, + *, + lot="gfn2", + xtb_path="xtb", + charge=0, + multiplicity=1, + n_cpus=1, + force_constant=1.0, + scf_iters=300, + solvent=None, + solvation_model="alpb", + keep_files=False, + runner=subprocess.run, +): + """ + Applies target-BEM distance constraints and runs xTB geometry optimization. + + Returns a NEW conformer object with the biased geometry. If xTB fails or + does not converge, returns None so pair selection can skip the candidate. + """ + work_dir = Path(scratch_dir) + work_dir.mkdir(parents=True, exist_ok=True) + + namespace = "joint_opt" + input_xyz = work_dir / "input.xyz" + xcontrol = work_dir / "joint_opt.xcontrol" + stdout_path = work_dir / "xtb.stdout" + stderr_path = work_dir / "xtb.stderr" + + constraints = bem_to_distance_constraints(conformer.elements, target_bem) + xyz_write(str(input_xyz), conformer.elements, conformer.geo) + write_xtb_xcontrol(xcontrol, constraints, force_constant=force_constant) + + cmd = _build_xtb_command( + input_xyz, + xcontrol, + namespace=namespace, + lot=lot, + xtb_path=xtb_path, + charge=charge, + multiplicity=multiplicity, + n_cpus=n_cpus, + scf_iters=scf_iters, + solvent=solvent, + solvation_model=solvation_model, + ) + + result = runner(cmd, cwd=work_dir, capture_output=True, text=True) + stdout_path.write_text(result.stdout or "", encoding="utf-8") + stderr_path.write_text(result.stderr or "", encoding="utf-8") + + opt_xyz = _find_xtbopt_xyz(work_dir, namespace) + if result.returncode != 0 or not _xtb_converged(result.stdout, result.stderr) or opt_xyz is None: + if not keep_files: + shutil.rmtree(work_dir, ignore_errors=True) + return None + + _, opt_geo = xyz_parse(str(opt_xyz), multiple=False) + biased_conf = copy.deepcopy(conformer) + biased_conf.geo = opt_geo + biased_conf.type = f"biased_xtb_{conformer.type}" + biased_conf.lot = lot + biased_conf.software = "xtb" + + if not keep_files: + shutil.rmtree(work_dir, ignore_errors=True) + + return biased_conf + + def bondmat_to_adjmat(bond_mat): adj_mat = copy.deepcopy(bond_mat) for count_i, i in enumerate(bond_mat): diff --git a/yarp/reaction/conf_sampling/select_pairs.py b/yarp/reaction/conf_sampling/select_pairs.py index 062484ee..57d446ac 100644 --- a/yarp/reaction/conf_sampling/select_pairs.py +++ b/yarp/reaction/conf_sampling/select_pairs.py @@ -10,18 +10,19 @@ from ase.build import minimize_rotation_and_translation from yarp.reaction.conf_sampling.joint_opt import ob_joint_optimize +from yarp.reaction.conf_sampling.joint_opt import xtb_joint_optimize from yarp.reaction.conf_sampling.indicator import return_indicator -def select_gsm_pairs(rxn, config): +def select_gsm_pairs(rxn, config, scratch_dir=None): """ Orchestrates Biasing -> Alignment -> ML Tournament -> QC -> Pairing. """ + scratch_dir = Path(scratch_dir) if scratch_dir is not None else Path.cwd() / "joint_opt" r_confs = [conf for key, conf in rxn.reactant.conformers.items() if key != "initial_geom"] p_confs = [conf for key, conf in rxn.product.conformers.items() if key != "initial_geom"] # --- STEP A: Apply Joint Optimization (Biasing) --- - lot = config.bias_lot mode = config.joint_opt.lower() biased_r = r_confs @@ -29,9 +30,15 @@ def select_gsm_pairs(rxn, config): # biased_p: product geometries guided by reactant geometries # biased_r: reactant geometries guided by product geometries if mode in ['dual', 'r_only']: - biased_p = [ob_joint_optimize(c, rxn.reactant.paired_bem, lot) for c in r_confs] + biased_p = [ + _joint_optimize(c, rxn.reactant.paired_bem, config, scratch_dir, f"r_to_p_{ind:04d}") + for ind, c in enumerate(r_confs) + ] if mode in ['dual', 'p_only']: - biased_r = [ob_joint_optimize(c, rxn.product.paired_bem, lot) for c in p_confs] + biased_r = [ + _joint_optimize(c, rxn.product.paired_bem, config, scratch_dir, f"p_to_r_{ind:04d}") + for ind, c in enumerate(p_confs) + ] # Default to "conformation-poor" model, unless an excess of conformers is present n_conf = config.n_conf @@ -66,69 +73,82 @@ def select_gsm_pairs(rxn, config): approved_indicators = [] dropped_pairs = 0 - for ind, r_c in enumerate(r_confs): + if mode in ['dual', 'r_only', 'off']: + r_loop_confs = r_confs if mode != 'off' else r_confs[:len(p_confs)] + else: + r_loop_confs = [] + + for ind, r_c in enumerate(r_loop_confs): + if ind >= len(biased_p) or biased_p[ind] is None: + dropped_pairs += 1 + continue - # 1. Unaligned Evaluation - ind_unaligned = return_indicator(E=r_c.elements, RG=r_c.geo, PG=biased_p[ind].geo) - prob_unaligned = model.predict_proba(ind_unaligned) - - # 2. Aligned Evaluation - aligned_biased_p = align_conformers(r_c, biased_p[ind]) - ind_aligned = return_indicator(E=r_c.elements, RG=r_c.geo, PG=aligned_biased_p.geo) - prob_aligned = model.predict_proba(ind_aligned) - - # 3. The Tournament (keep the higher probability setup) - if prob_aligned[0][1] > prob_unaligned[0][1]: - best_p = aligned_biased_p - best_ind = ind_aligned - best_prob = prob_aligned - else: - best_p = biased_p[ind] - best_ind = ind_unaligned - best_prob = prob_unaligned - - # 4. Quality Control & Deduplication - if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): - approved_indicators.append(best_ind) - approved_pairs.append({ - "r_conf": r_c, - "p_conf": best_p, - "score": best_prob[0][1] - }) - else: - dropped_pairs += 1 + # 1. Unaligned Evaluation + ind_unaligned = return_indicator(E=r_c.elements, RG=r_c.geo, PG=biased_p[ind].geo) + prob_unaligned = model.predict_proba(ind_unaligned) + + # 2. Aligned Evaluation + aligned_biased_p = align_conformers(r_c, biased_p[ind]) + ind_aligned = return_indicator(E=r_c.elements, RG=r_c.geo, PG=aligned_biased_p.geo) + prob_aligned = model.predict_proba(ind_aligned) + + # 3. The Tournament (keep the higher probability setup) + if prob_aligned[0][1] > prob_unaligned[0][1]: + best_p = aligned_biased_p + best_ind = ind_aligned + best_prob = prob_aligned + else: + best_p = biased_p[ind] + best_ind = ind_unaligned + best_prob = prob_unaligned + + # 4. Quality Control & Deduplication + if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): + approved_indicators.append(best_ind) + approved_pairs.append({ + "r_conf": r_c, + "p_conf": best_p, + "score": best_prob[0][1] + }) + else: + dropped_pairs += 1 #################################################################### - for ind, p_c in enumerate(p_confs): - - # 1. Unaligned Evaluation - ind_unaligned = return_indicator(E=r_c.elements, RG=p_c.geo, PG=biased_r[ind].geo) - prob_unaligned = model.predict_proba(ind_unaligned) - - # 2. Aligned Evaluation - aligned_biased_r = align_conformers(p_c, biased_r[ind]) - ind_aligned = return_indicator(E=r_c.elements, RG=p_c.geo, PG=aligned_biased_r.geo) - prob_aligned = model.predict_proba(ind_aligned) - - # 3. The Tournament (keep the higher probability setup) - if prob_aligned[0][1] > prob_unaligned[0][1]: - best_r = aligned_biased_r - best_ind = ind_aligned - best_prob = prob_aligned - else: - best_r = biased_r[ind] - best_ind = ind_unaligned - best_prob = prob_unaligned - - # 4. Quality Control & Deduplication - if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): - approved_indicators.append(best_ind) - approved_pairs.append({ - "r_conf": best_r, - "p_conf": p_c, - "score": best_prob[0][1] - }) - else: - dropped_pairs += 1 + p_loop_confs = p_confs if mode in ['dual', 'p_only'] else [] + + for ind, p_c in enumerate(p_loop_confs): + if ind >= len(biased_r) or biased_r[ind] is None: + dropped_pairs += 1 + continue + + # 1. Unaligned Evaluation + ind_unaligned = return_indicator(E=p_c.elements, RG=biased_r[ind].geo, PG=p_c.geo) + prob_unaligned = model.predict_proba(ind_unaligned) + + # 2. Aligned Evaluation + aligned_biased_r = align_conformers(p_c, biased_r[ind]) + ind_aligned = return_indicator(E=p_c.elements, RG=aligned_biased_r.geo, PG=p_c.geo) + prob_aligned = model.predict_proba(ind_aligned) + + # 3. The Tournament (keep the higher probability setup) + if prob_aligned[0][1] > prob_unaligned[0][1]: + best_r = aligned_biased_r + best_ind = ind_aligned + best_prob = prob_aligned + else: + best_r = biased_r[ind] + best_ind = ind_unaligned + best_prob = prob_unaligned + + # 4. Quality Control & Deduplication + if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): + approved_indicators.append(best_ind) + approved_pairs.append({ + "r_conf": best_r, + "p_conf": p_c, + "score": best_prob[0][1] + }) + else: + dropped_pairs += 1 # --- STEP C: Sort and Select Top N --- # Sort descending by probability of success @@ -142,6 +162,28 @@ def select_gsm_pairs(rxn, config): return approved_pairs[:n_conf] +def _joint_optimize(conf, target_bem, config, scratch_dir, label): + """ + Dispatch the configured joint-optimization engine. + """ + engine = getattr(config, "joint_opt_engine", "ob") + if engine == "xtb": + return xtb_joint_optimize( + conf, + target_bem, + Path(scratch_dir) / label, + lot=config.xtb_joint_lot, + charge=config.charge, + multiplicity=config.multiplicity, + n_cpus=config.n_cpus, + force_constant=config.xtb_joint_force_constant, + scf_iters=config.xtb_joint_scf_iters, + keep_files=config.xtb_joint_keep_files, + ) + + return ob_joint_optimize(conf, target_bem, config.bias_lot) + + def align_conformers(conf, biased_conf): """ Uses ASE to minimize rotation and translation (RMSD) between product and reactant. diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index 987967a9..175e2585 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -1,6 +1,7 @@ import os import shutil import fnmatch +import pickle from yarp.reaction.external.calc_base import AsyncYarpCalculator from yarp.yarpecule.input_parsers import xyz_parse @@ -34,7 +35,10 @@ class PysisyphusTSGuessCalculator(TSGuessTask): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.image_name = "erm42/yarp:pysis_xtb" + if getattr(self.config, "containerize_pre_gsm", False): + self.image_name = "erm42/yarp:yarp_jo_opt" + else: + self.image_name = "erm42/yarp:pysis_xtb" self.n_pairs = self.config.n_conf self.pairs_to_run = [] @@ -43,8 +47,14 @@ def generate_input(self): Runs the Joint Opt + ML Selection, then writes the files required for the Pysisyphus GSM run. """ + if getattr(self.config, "containerize_pre_gsm", False): + payload_path = self.scratch_dir / "payload.pkl" + with open(payload_path, "wb") as f: + pickle.dump({"rxn": self.rxn, "config": self.config}, f) + return + print(f" * [{self.rxn.hash}] Selecting {self.n_pairs} conformer pairs for GSM...") - self.pairs_to_run = select_gsm_pairs(self.rxn, self.config) + self.pairs_to_run = select_gsm_pairs(self.rxn, self.config, scratch_dir=self.scratch_dir / "joint_opt") # Write inputs for each pair for i, pair in enumerate(self.pairs_to_run): @@ -77,15 +87,18 @@ def write_submission_script(self): with open(inner_script_path, "w") as f: f.write("#!/bin/bash\n\n") f.write("echo 'Starting YARP serial GSM execution...'\n\n") - - for i in range(1, len(self.pairs_to_run) + 1): - f.write(f"echo '--- Running GSM pair {i} ---'\n") - # The container mounts self.scratch_dir to /work - f.write(f"cd /work/gsm_run{i}\n") - - # Execute pysis within the specific folder, saving logs locally - f.write(f"pysis gsm_{i}_input.yaml > gsm_{i}.log 2> gsm_{i}.err\n") - f.write(f"echo '--- Finished GSM pair {i} ---'\n\n") + + if getattr(self.config, "containerize_pre_gsm", False): + f.write("python -m yarp.reaction.external.scripts.run_ts_guess_container /work/payload.pkl\n") + else: + for i in range(1, len(self.pairs_to_run) + 1): + f.write(f"echo '--- Running GSM pair {i} ---'\n") + # The container mounts self.scratch_dir to /work + f.write(f"cd /work/gsm_run{i}\n") + + # Execute pysis within the specific folder, saving logs locally + f.write(f"pysis gsm_{i}_input.yaml > gsm_{i}.log 2> gsm_{i}.err\n") + f.write(f"echo '--- Finished GSM pair {i} ---'\n\n") # Make executable inner_script_path.chmod(0o755) @@ -226,25 +239,7 @@ def cleanup(self): shutil.rmtree(item) def _write_pysis_gsm_input(self, input_path, r_xyz_path, p_xyz_path): - # Make sure lot is xTB (ERM: We'll make this more robust later! Hopefully!) - lot = self.config.gsm_lot.lower() - - # Write the file! Yay, YAML friend! - with open(input_path, 'a') as f: - # set geom block - input_geo = [r_xyz_path, p_xyz_path] - f.write(f'geom:\n type: cart\n fn: {input_geo}\n') - - # set calc block - # ERM: I left out the option for solvent, - # because what I saw in classy YARP didn't make sense to me... - f.write(f'calc:\n type: {lot}\n pal: {self.config.n_cpus}\n mem: {self.config.mem_per_cpu}\n charge: {self.config.charge}\n mult: {self.config.multiplicity}\n') - - # set cos block - f.write(f'cos:\n type: gs\n max_nodes: {self.config.max_gsm_nodes}\n climb: True\n climb_rms: 0.005\n climb_lanczos: False\n reparam_check: rms\n reparam_every: 1\n reparam_every_full: 1\n') - - # set opt block - f.write(f'opt:\n type: string\n stop_in_when_full: -1\n align: True\n scale_step: global\n') + write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, self.config) def _get_num_runs(self) -> int: """ @@ -254,3 +249,20 @@ def _get_num_runs(self) -> int: # Finds all directories matching 'gsm_run*' in the scratch folder run_dirs = list(self.scratch_dir.glob("gsm_run*")) return len(run_dirs) + + +def write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, config): + # Make sure lot is xTB (ERM: We'll make this more robust later! Hopefully!) + lot = config.gsm_lot.lower() + + with open(input_path, 'w') as f: + input_geo = [r_xyz_path, p_xyz_path] + f.write(f'geom:\n type: cart\n fn: {input_geo}\n') + + # ERM: I left out the option for solvent, + # because what I saw in classy YARP didn't make sense to me... + f.write(f'calc:\n type: {lot}\n pal: {config.n_cpus}\n mem: {config.mem_per_cpu}\n charge: {config.charge}\n mult: {config.multiplicity}\n') + + f.write(f'cos:\n type: gs\n max_nodes: {config.max_gsm_nodes}\n climb: True\n climb_rms: 0.005\n climb_lanczos: False\n reparam_check: rms\n reparam_every: 1\n reparam_every_full: 1\n') + + f.write(f'opt:\n type: string\n stop_in_when_full: -1\n align: True\n scale_step: global\n') diff --git a/yarp/util/config.py b/yarp/util/config.py index f94d4bcf..794c83d0 100644 --- a/yarp/util/config.py +++ b/yarp/util/config.py @@ -294,12 +294,23 @@ class TSGuessConfig: max_gsm_nodes: int = 30 bias_lot: str = "uff" joint_opt: str = "dual" + joint_opt_engine: str = "ob" + xtb_joint_lot: str = "gfn2" + xtb_joint_force_constant: float = 1.0 + xtb_joint_scf_iters: int = 300 + xtb_joint_keep_files: bool = False + containerize_pre_gsm: bool = False n_cpus: int = 1 mem_per_cpu: int = 4000 max_runtime: str = "01:00:00" def __post_init__(self): + if self.joint_opt_engine is not None: + self.joint_opt_engine = self.joint_opt_engine.lower() + if self.xtb_joint_lot is not None: + self.xtb_joint_lot = self.xtb_joint_lot.lower() + if self.charge == None: raise ValueError("Missing required key! Please provide 'charge' in ts_guess block!") if self.multiplicity == None: @@ -315,11 +326,28 @@ def __post_init__(self): raise ValueError(f"Invalid force field selected for 'bias_lot': '{self.bias_lot}' Valid options are: 'uff', 'Ghemical', 'MMFF94'") if self.joint_opt not in ['dual', 'r_only', 'p_only', 'off']: raise ValueError(f"Invalid 'joint_opt' entry: '{self.joint_opt}' Valid options are: 'dual', 'r_only', 'p_only', 'off'") + if self.joint_opt_engine not in ['ob', 'xtb']: + raise ValueError(f"Invalid 'joint_opt_engine' entry: '{self.joint_opt_engine}' Valid options are: 'ob', 'xtb'") + if self.xtb_joint_lot not in ['gfn2', 'gfn1', 'gfnff']: + raise ValueError(f"Invalid 'xtb_joint_lot' entry: '{self.xtb_joint_lot}' Valid options are: 'gfn2', 'gfn1', 'gfnff'") if not isinstance(self.n_conf, int): raise ValueError("Please provide an integer value to ts_guess: 'n_conf'") if not isinstance(self.max_gsm_nodes, int): raise ValueError("Please provide an integer value to ts_guess: 'max_gsm_nodes'") + if not isinstance(self.xtb_joint_force_constant, (int, float)): + raise ValueError("Please provide a numeric value to ts_guess: 'xtb_joint_force_constant'") + self.xtb_joint_force_constant = float(self.xtb_joint_force_constant) + if self.xtb_joint_force_constant <= 0.0: + raise ValueError("Please provide a positive value to ts_guess: 'xtb_joint_force_constant'") + if not isinstance(self.xtb_joint_scf_iters, int): + raise ValueError("Please provide an integer value to ts_guess: 'xtb_joint_scf_iters'") + if self.xtb_joint_scf_iters <= 0: + raise ValueError("Please provide a positive integer to ts_guess: 'xtb_joint_scf_iters'") + if not isinstance(self.xtb_joint_keep_files, bool): + raise ValueError("Please provide a boolean value to ts_guess: 'xtb_joint_keep_files'") + if not isinstance(self.containerize_pre_gsm, bool): + raise ValueError("Please provide a boolean value to ts_guess: 'containerize_pre_gsm'") if not isinstance(self.n_cpus, int): raise ValueError("Please provide an integer value to ts_guess: 'n_cpus'") if not isinstance(self.mem_per_cpu, int): @@ -440,4 +468,4 @@ def __post_init__(self): if not isinstance(self.mem_per_cpu, int): raise ValueError("Please provide an integer value (in MB) to irc_val: 'mem_per_cpu'") if not is_valid_time_format(self.max_runtime): - raise ValueError("Please provide irc_val: 'max_runtime' time in HH:MM:SS!") \ No newline at end of file + raise ValueError("Please provide irc_val: 'max_runtime' time in HH:MM:SS!") From 361adc047b716a28cf06bb4f014902ef90e4162b Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Thu, 25 Jun 2026 13:46:25 -0400 Subject: [PATCH 02/14] Dockerfile addition --- containers/yarp_jo_opt/Dockerfile | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 containers/yarp_jo_opt/Dockerfile diff --git a/containers/yarp_jo_opt/Dockerfile b/containers/yarp_jo_opt/Dockerfile new file mode 100644 index 00000000..c3a43514 --- /dev/null +++ b/containers/yarp_jo_opt/Dockerfile @@ -0,0 +1,59 @@ +# ============================================================================ +# YARP xTB/OpenBabel Joint Optimization + Pysisyphus GSM Container +# ============================================================================ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV CONDA_DIR=/opt/conda + +RUN apt-get update && apt-get install -y \ + build-essential \ + wget \ + curl \ + git \ + libopenblas-openmp-dev \ + liblapack-dev \ + libopenmpi-dev \ + openmpi-bin \ + && rm -rf /var/lib/apt/lists/* + +RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh && \ + bash /tmp/miniforge.sh -b -p $CONDA_DIR && \ + rm /tmp/miniforge.sh + +ENV PATH="${CONDA_DIR}/bin:${PATH}" + +RUN mamba create -n yarp_jo_opt -c conda-forge -y \ + python=3.10 \ + xtb \ + openbabel \ + rdkit \ + numpy \ + scipy \ + scikit-learn \ + ase \ + pyyaml \ + pip \ + && mamba clean -afy + +ENV CONDA_DEFAULT_ENV=yarp_jo_opt +ENV PATH="${CONDA_DIR}/envs/yarp_jo_opt/bin:${PATH}" + +RUN pip install --no-cache-dir pysisyphus + +WORKDIR /opt/yarp +COPY . /opt/yarp +RUN pip install --no-cache-dir -e . + +RUN echo "[xtb]" > /root/.pysisyphusrc && \ + echo "cmd=xtb" >> /root/.pysisyphusrc + +ENV OMP_STACKSIZE=1G +ENV OMP_MAX_ACTIVE_LEVELS=1 +ENV OPENBLAS_NUM_THREADS=1 +ENV MKL_NUM_THREADS=1 +ENV LD_LIBRARY_PATH="/opt/conda/envs/yarp_jo_opt/lib:/usr/lib/x86_64-linux-gnu" + +WORKDIR /work +SHELL ["/bin/bash", "-c"] +CMD ["/bin/bash"] From c97f2faa543d1c9a4819be5b610f1894a7c2a407 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Thu, 25 Jun 2026 15:19:30 -0400 Subject: [PATCH 03/14] v1--flushing, debugging, and corrected Dockerfile --- containers/yarp_jo_opt/Dockerfile | 59 ----------------------------- yarp/progress_yarp.py | 61 +++++++++++++++--------------- yarp/reaction/external/ts_guess.py | 2 +- 3 files changed, 32 insertions(+), 90 deletions(-) delete mode 100644 containers/yarp_jo_opt/Dockerfile diff --git a/containers/yarp_jo_opt/Dockerfile b/containers/yarp_jo_opt/Dockerfile deleted file mode 100644 index c3a43514..00000000 --- a/containers/yarp_jo_opt/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# ============================================================================ -# YARP xTB/OpenBabel Joint Optimization + Pysisyphus GSM Container -# ============================================================================ -FROM ubuntu:22.04 - -ENV DEBIAN_FRONTEND=noninteractive -ENV CONDA_DIR=/opt/conda - -RUN apt-get update && apt-get install -y \ - build-essential \ - wget \ - curl \ - git \ - libopenblas-openmp-dev \ - liblapack-dev \ - libopenmpi-dev \ - openmpi-bin \ - && rm -rf /var/lib/apt/lists/* - -RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh && \ - bash /tmp/miniforge.sh -b -p $CONDA_DIR && \ - rm /tmp/miniforge.sh - -ENV PATH="${CONDA_DIR}/bin:${PATH}" - -RUN mamba create -n yarp_jo_opt -c conda-forge -y \ - python=3.10 \ - xtb \ - openbabel \ - rdkit \ - numpy \ - scipy \ - scikit-learn \ - ase \ - pyyaml \ - pip \ - && mamba clean -afy - -ENV CONDA_DEFAULT_ENV=yarp_jo_opt -ENV PATH="${CONDA_DIR}/envs/yarp_jo_opt/bin:${PATH}" - -RUN pip install --no-cache-dir pysisyphus - -WORKDIR /opt/yarp -COPY . /opt/yarp -RUN pip install --no-cache-dir -e . - -RUN echo "[xtb]" > /root/.pysisyphusrc && \ - echo "cmd=xtb" >> /root/.pysisyphusrc - -ENV OMP_STACKSIZE=1G -ENV OMP_MAX_ACTIVE_LEVELS=1 -ENV OPENBLAS_NUM_THREADS=1 -ENV MKL_NUM_THREADS=1 -ENV LD_LIBRARY_PATH="/opt/conda/envs/yarp_jo_opt/lib:/usr/lib/x86_64-linux-gnu" - -WORKDIR /work -SHELL ["/bin/bash", "-c"] -CMD ["/bin/bash"] diff --git a/yarp/progress_yarp.py b/yarp/progress_yarp.py index a50749e4..baa8aba8 100644 --- a/yarp/progress_yarp.py +++ b/yarp/progress_yarp.py @@ -97,11 +97,11 @@ def save_state(work_dir: Path, status_tracker: dict, reactions: dict, failed_rxn with open(work_dir / rxn_file, "wb") as f: pickle.dump(reactions, f) -def progress_yarp(work_dir: Path): +def progress_yarp(work_dir: Path, debug: bool = False): """ Primary logic flow for managing """ - print(f"Processing YARP progress in {work_dir}...") + print(f"Processing YARP progress in {work_dir}...", flush=True) # Load the state status_tracker, reactions = load_state(work_dir) @@ -116,13 +116,13 @@ def progress_yarp(work_dir: Path): job_manager = get_job_manager(scheduler) - print(f"Jobs will be run using '{scheduler}' scheduler and '{container_runner}' containers.") - print(f"Max active jobs allowed: {max_active_jobs}") + print(f"Jobs will be run using '{scheduler}' scheduler and '{container_runner}' containers.", flush=True) + print(f"Max active jobs allowed: {max_active_jobs}", flush=True) # ================================================================= # PASS 0.1: Synchronize Conformers Across Identical Species # ================================================================= - print("Synchronizing conformer data across identical chemical species...") + print("Synchronizing conformer data across identical chemical species...", flush=True) species_conformer_pool = {} # 0.1.A Pool all conformers from all reactions using the unique hash @@ -143,7 +143,7 @@ def progress_yarp(work_dir: Path): # ================================================================= # PASS 0.2: Fast-Forward Previously Characterized Reactions # ================================================================= - print("Performing pre-flight checks to skip already characterized reactions...") + print("Performing pre-flight checks to skip already characterized reactions...", flush=True) # --- PRE-COMPUTATION: Build the Reverse Dependency Graph --- # Find out which downstream tasks require a given upstream task @@ -217,7 +217,7 @@ def progress_yarp(work_dir: Path): # Execute the fast-forward! if already_done: meta["status"] = "terminated_normally" - print(f" * [{rxn_hash}] \tTask '{task_id}' ({desired_key}) already characterized/synced. Fast-forwarding...") + print(f" * [{rxn_hash}] \tTask '{task_id}' ({desired_key}) already characterized/synced. Fast-forwarding...", flush=True) # 0.2.B. Fast-Forward Global Tasks for g_task_id, g_meta in status_tracker.get("global_tasks", {}).items(): @@ -235,7 +235,7 @@ def progress_yarp(work_dir: Path): if all_completed and len(status_tracker["reactions"]) > 0: g_meta["status"] = "terminated_normally" - print(f" * Global Task '{g_task_id}' (Model: {model}) already completed for all reactions. Fast-forwarding...") + print(f" * Global Task '{g_task_id}' (Model: {model}) already completed for all reactions. Fast-forwarding...", flush=True) # ================================================================= # PASS 1: Check Status of Submitted Jobs & Tally Active Jobs @@ -275,7 +275,7 @@ def progress_yarp(work_dir: Path): if not job_manager.is_running(g_meta["job_id"]): if calc.check_output(): - print(f" * Global Task '{g_task_id}' finished successfully!") + print(f" * Global Task '{g_task_id}' finished successfully!", flush=True) g_meta["status"] = "terminated_normally" calc.scrape_data() calc.cleanup() @@ -302,16 +302,16 @@ def progress_yarp(work_dir: Path): if job_manager.is_running(meta["job_id"]): # Job is still going, add it to our tally! - print(f" * [{rxn_hash}] \tTask '{task_id}' is still running. Come back later...") + print(f" * [{rxn_hash}] \tTask '{task_id}' is still running. Come back later...", flush=True) active_jobs += 1 else: # Job finished! Time to process it. - print(f" * [{rxn_hash}] \tTask '{task_id}' finished running. Checking output...") + print(f" * [{rxn_hash}] \tTask '{task_id}' finished running. Checking output...", flush=True) if calc.check_output(): if calc.scrape_data(): calc.cleanup() meta["status"] = "terminated_normally" - print(f" * [{rxn_hash}] \tTask '{task_id}' completed successfully.") + print(f" * [{rxn_hash}] \tTask '{task_id}' completed successfully.", flush=True) # --- Evaluate IRC Outcome --- if task_def.task_type == "irc_validation": @@ -329,17 +329,17 @@ def progress_yarp(work_dir: Path): if rxn_hash not in failed_rxns: failed_rxns[rxn_hash] = rxn_obj - print(f" * [{rxn_hash}] \tReaction failed IRC validation (Outcome: '{outcome}'). Routing to failed_rxns.") + print(f" * [{rxn_hash}] \tReaction failed IRC validation (Outcome: '{outcome}'). Routing to failed_rxns.", flush=True) else: meta["status"] = "finished_with_error" meta["error_log"] = "Data scraping failed." failed_rxns[rxn_hash] = rxn_obj - print(f" * [{rxn_hash}] \tTask '{task_id}' failed during data scraping.") + print(f" * [{rxn_hash}] \tTask '{task_id}' failed during data scraping.", flush=True) else: meta["status"] = "finished_with_error" meta["error_log"] = "Output validation failed." failed_rxns[rxn_hash] = rxn_obj - print(f" * [{rxn_hash}] \tTask '{task_id}' failed output validation.") + print(f" * [{rxn_hash}] \tTask '{task_id}' failed output validation.", flush=True) # ================================================================= # PASS 2: Update Pending Tasks to Ready @@ -385,7 +385,7 @@ def progress_yarp(work_dir: Path): # Prevent printing the error twice (once for reactant, once for product) if rxn_hash not in failed_rxns: failed_rxns[rxn_hash] = rxn_obj - print(f" * [{rxn_hash}] \tFiltered out! {stage_filter.type} ({val:.2f}) > {stage_filter.threshold}") + print(f" * [{rxn_hash}] \tFiltered out! {stage_filter.type} ({val:.2f}) > {stage_filter.threshold}", flush=True) continue # Skip setting this task to 'ready' else: @@ -395,17 +395,17 @@ def progress_yarp(work_dir: Path): if rxn_hash not in failed_rxns: failed_rxns[rxn_hash] = rxn_obj - print(f" * [{rxn_hash}] \tPipeline aborted: Missing ML property '{stage_filter.type}' from '{stage_filter.source}'.") + print(f" * [{rxn_hash}] \tPipeline aborted: Missing ML property '{stage_filter.type}' from '{stage_filter.source}'.", flush=True) continue # Skip setting this task to 'ready' meta["status"] = "ready" - print(f" * [{rxn_hash}] \tTask '{task_id}' prerequisites met. Marked as READY.") + print(f" * [{rxn_hash}] \tTask '{task_id}' prerequisites met. Marked as READY.", flush=True) # ================================================================= # PASS 3: Submit New Jobs (Respecting the Limit) # ================================================================= - print(f"Current active jobs: {active_jobs} / {max_active_jobs}") + print(f"Current active jobs: {active_jobs} / {max_active_jobs}", flush=True) # Check for idle state: no active jobs and no remaining pending/ready tasks pending_or_ready = False @@ -421,7 +421,7 @@ def progress_yarp(work_dir: Path): break if active_jobs == 0 and not pending_or_ready: - print("No active or pending tasks remain; YARP has reached a quiescent state.") + print("No active or pending tasks remain; YARP has reached a quiescent state.", flush=True) # ================================================================= # PASS 3.1: Submit New GLOBAL Jobs @@ -429,7 +429,7 @@ def progress_yarp(work_dir: Path): for g_task_id, g_meta in status_tracker.get("global_tasks", {}).items(): # Global limit check if active_jobs >= max_active_jobs: - print(f"Max active jobs ({max_active_jobs}) reached. Holding off on further submissions.") + print(f"Max active jobs ({max_active_jobs}) reached. Holding off on further submissions.", flush=True) break if g_meta["status"] == "ready": @@ -442,10 +442,10 @@ def progress_yarp(work_dir: Path): if not calc.has_prerequisites(): g_meta["status"] = "finished_with_error" - print(f" * Global Task '{g_task_id}' aborted: Pre-flight check failed.") + print(f" * Global Task '{g_task_id}' aborted: Pre-flight check failed.", flush=True) continue - print(f" * Submitting global task '{g_task_id}'...") + print(f" * Submitting global task '{g_task_id}'...", flush=True) calc.generate_input() script_path = calc.write_submission_script() @@ -466,7 +466,7 @@ def progress_yarp(work_dir: Path): for rxn_hash, rxn_meta in status_tracker["reactions"].items(): # Global limit check if active_jobs >= max_active_jobs: - print(f"Max active jobs ({max_active_jobs}) reached. Holding off on further submissions.") + print(f"Max active jobs ({max_active_jobs}) reached. Holding off on further submissions.", flush=True) break rxn_obj = reactions.get(rxn_hash) @@ -492,7 +492,8 @@ def progress_yarp(work_dir: Path): if registry_key in active_species_tasks: # Silently skip submission! Another identical species is doing the work. # It remains "ready" and will be fast-forwarded in PASS 0 on a future loop. - print(f" [DEBUG] ---> Blocked! Identical species calculation already active.") + if debug: + print(f" [DEBUG] ---> Blocked! Identical species calculation already active.") continue else: # We are the "leader"! Claim this species/task combo. @@ -508,11 +509,11 @@ def progress_yarp(work_dir: Path): meta["status"] = "finished_with_error" meta["error_log"] = "Pre-flight check failed: Missing required data in reaction object." failed_rxns[rxn_hash] = rxn_obj - print(f" * [{rxn_hash}] \tTask '{task_id}' aborted: Pre-flight check failed.") + print(f" * [{rxn_hash}] \tTask '{task_id}' aborted: Pre-flight check failed.", flush=True) continue # Generate and Submit - print(f" * [{rxn_hash}] \tSubmitting task '{task_id}'...") + print(f" * [{rxn_hash}] \tSubmitting task '{task_id}'...", flush=True) calc.generate_input() script_path = calc.write_submission_script() @@ -534,8 +535,8 @@ def progress_yarp(work_dir: Path): # Write all updates back to disk save_state(work_dir, status_tracker, reactions, failed_rxns) - print("YARP progress tracking complete.") - print(f"======================\n") + print("YARP progress tracking complete.", flush=True) + print(f"======================\n", flush=True) def main(): print("Launching YARP job submitter: yarp-progress") @@ -548,4 +549,4 @@ def main(): progress_yarp(absolute_work_dir) if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index 175e2585..b06e14a3 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -36,7 +36,7 @@ class PysisyphusTSGuessCalculator(TSGuessTask): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if getattr(self.config, "containerize_pre_gsm", False): - self.image_name = "erm42/yarp:yarp_jo_opt" + self.image_name = "erm42/yarp:jo_opt" else: self.image_name = "erm42/yarp:pysis_xtb" self.n_pairs = self.config.n_conf From 65d8cb706ad770cb4ff7d2b6a300c33561842023 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Thu, 25 Jun 2026 15:43:55 -0400 Subject: [PATCH 04/14] v1, classes, methods, all that jazz --- containers/jo_opt/Dockerfile | 60 ++++++ test/reaction/test_xtb_joint_opt.py | 78 ++++++++ test/util/test_ts_guess_config.py | 45 +++++ yarp/reaction/conf_sampling/select_pairs.py | 210 +------------------- yarp/reaction/external/ts_guess.py | 125 ++++++++++-- 5 files changed, 293 insertions(+), 225 deletions(-) create mode 100644 containers/jo_opt/Dockerfile create mode 100644 test/reaction/test_xtb_joint_opt.py create mode 100644 test/util/test_ts_guess_config.py diff --git a/containers/jo_opt/Dockerfile b/containers/jo_opt/Dockerfile new file mode 100644 index 00000000..6b014bf7 --- /dev/null +++ b/containers/jo_opt/Dockerfile @@ -0,0 +1,60 @@ +# ============================================================================ +# YARP xTB/OpenBabel Joint Optimization + Pysisyphus GSM Container +# ============================================================================ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV CONDA_DIR=/opt/conda + +RUN apt-get update && apt-get install -y \ + build-essential \ + wget \ + curl \ + git \ + libopenblas-openmp-dev \ + liblapack-dev \ + libopenmpi-dev \ + openmpi-bin \ + && rm -rf /var/lib/apt/lists/* + +RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh && \ + bash /tmp/miniforge.sh -b -p $CONDA_DIR && \ + rm /tmp/miniforge.sh + +ENV PATH="${CONDA_DIR}/bin:${PATH}" + +RUN mamba create -n jo_opt -c conda-forge -y \ + python=3.10 \ + xtb \ + openbabel \ + rdkit \ + numpy \ + scipy \ + scikit-learn \ + ase \ + pyyaml \ + ipython \ + pip \ + && mamba clean -afy + +ENV CONDA_DEFAULT_ENV=jo_opt +ENV PATH="${CONDA_DIR}/envs/jo_opt/bin:${PATH}" + +RUN pip install --no-cache-dir pysisyphus + +WORKDIR /opt/yarp +COPY . /opt/yarp +RUN pip install --no-cache-dir -e . + +RUN echo "[xtb]" > /root/.pysisyphusrc && \ + echo "cmd=xtb" >> /root/.pysisyphusrc + +ENV OMP_STACKSIZE=1G +ENV OMP_MAX_ACTIVE_LEVELS=1 +ENV OPENBLAS_NUM_THREADS=1 +ENV MKL_NUM_THREADS=1 +ENV LD_LIBRARY_PATH="/opt/conda/envs/jo_opt/lib:/usr/lib/x86_64-linux-gnu" + +WORKDIR /work +SHELL ["/bin/bash", "-c"] +CMD ["/bin/bash"] diff --git a/test/reaction/test_xtb_joint_opt.py b/test/reaction/test_xtb_joint_opt.py new file mode 100644 index 00000000..051a91a4 --- /dev/null +++ b/test/reaction/test_xtb_joint_opt.py @@ -0,0 +1,78 @@ +import numpy as np +import pytest + +pytest.importorskip("openbabel") + +from yarp.reaction.conf_sampling.joint_opt import _build_xtb_command +from yarp.reaction.conf_sampling.joint_opt import bem_to_distance_constraints +from yarp.reaction.conf_sampling.joint_opt import write_xtb_xcontrol + + +def test_bem_to_distance_constraints_uses_one_indexed_bonds(): + constraints = bem_to_distance_constraints( + ["C", "H", "O"], + np.array( + [ + [0, 1, 0], + [1, 0, 2], + [0, 2, 0], + ] + ), + ) + + assert [tuple(c) for c in constraints] == [ + (1, 2, pytest.approx(1.147)), + (2, 3, pytest.approx(1.048)), + ] + + +def test_bem_to_distance_constraints_rejects_shape_mismatch(): + with pytest.raises(ValueError, match="does not match"): + bem_to_distance_constraints(["C"], np.zeros((2, 2))) + + +def test_write_xtb_xcontrol_preserves_legacy_constraint_format(tmp_path): + constraints = bem_to_distance_constraints(["C", "H"], np.array([[0, 1], [1, 0]])) + xcontrol = tmp_path / "joint_opt.xcontrol" + + write_xtb_xcontrol(xcontrol, constraints, force_constant=1.0) + + assert xcontrol.read_text() == ( + "$constrain\n" + "force constant=1.0\n" + "distance: 1, 2, 1.1470\n" + "$\n\n" + ) + + +def test_build_xtb_command_maps_multiplicity_to_uhf(): + cmd = _build_xtb_command( + "input.xyz", + "joint_opt.xcontrol", + namespace="joint_opt", + lot="gfn2", + charge=-1, + multiplicity=2, + n_cpus=4, + scf_iters=500, + ) + + assert cmd == [ + "xtb", + "input.xyz", + "--iterations", + "500", + "--chrg", + "-1", + "--uhf", + "1", + "--namespace", + "joint_opt", + "--opt", + "--parallel", + "4", + "--input", + "joint_opt.xcontrol", + "--gfn", + "2", + ] diff --git a/test/util/test_ts_guess_config.py b/test/util/test_ts_guess_config.py new file mode 100644 index 00000000..32f4ef98 --- /dev/null +++ b/test/util/test_ts_guess_config.py @@ -0,0 +1,45 @@ +import pytest + +pytest.importorskip("openbabel") + +from yarp.util.config import TSGuessConfig + + +def test_ts_guess_config_defaults_to_openbabel_joint_opt(): + cfg = TSGuessConfig( + software="pysisyphus", + gsm_lot="xtb", + charge=0, + multiplicity=1, + ) + + assert cfg.joint_opt_engine == "ob" + assert cfg.xtb_joint_lot == "gfn2" + assert cfg.containerize_pre_gsm is False + + +def test_ts_guess_config_accepts_xtb_joint_opt_options(): + cfg = TSGuessConfig( + software="pysisyphus", + gsm_lot="xtb", + charge=0, + multiplicity=1, + joint_opt_engine="xtb", + xtb_joint_force_constant=1, + containerize_pre_gsm=True, + ) + + assert cfg.joint_opt_engine == "xtb" + assert cfg.xtb_joint_force_constant == 1.0 + assert cfg.containerize_pre_gsm is True + + +def test_ts_guess_config_rejects_unknown_joint_opt_engine(): + with pytest.raises(ValueError, match="joint_opt_engine"): + TSGuessConfig( + software="pysisyphus", + gsm_lot="xtb", + charge=0, + multiplicity=1, + joint_opt_engine="bad", + ) diff --git a/yarp/reaction/conf_sampling/select_pairs.py b/yarp/reaction/conf_sampling/select_pairs.py index 57d446ac..c48bd1c1 100644 --- a/yarp/reaction/conf_sampling/select_pairs.py +++ b/yarp/reaction/conf_sampling/select_pairs.py @@ -1,214 +1,12 @@ """ -Logic for joint optimization, ASE alignment, and ML-based conformer selection. +Compatibility wrapper for GSM conformer pair selection. """ -import copy -import numpy as np -import pickle -from pathlib import Path -from ase import Atoms -from ase.build import minimize_rotation_and_translation - -from yarp.reaction.conf_sampling.joint_opt import ob_joint_optimize -from yarp.reaction.conf_sampling.joint_opt import xtb_joint_optimize -from yarp.reaction.conf_sampling.indicator import return_indicator +from yarp.reaction.external.conformer_select import ConformerPairSelector def select_gsm_pairs(rxn, config, scratch_dir=None): """ - Orchestrates Biasing -> Alignment -> ML Tournament -> QC -> Pairing. + Select reactant/product conformer pairs for GSM. """ - scratch_dir = Path(scratch_dir) if scratch_dir is not None else Path.cwd() / "joint_opt" - r_confs = [conf for key, conf in rxn.reactant.conformers.items() if key != "initial_geom"] - p_confs = [conf for key, conf in rxn.product.conformers.items() if key != "initial_geom"] - - # --- STEP A: Apply Joint Optimization (Biasing) --- - mode = config.joint_opt.lower() - - biased_r = r_confs - biased_p = p_confs - # biased_p: product geometries guided by reactant geometries - # biased_r: reactant geometries guided by product geometries - if mode in ['dual', 'r_only']: - biased_p = [ - _joint_optimize(c, rxn.reactant.paired_bem, config, scratch_dir, f"r_to_p_{ind:04d}") - for ind, c in enumerate(r_confs) - ] - if mode in ['dual', 'p_only']: - biased_r = [ - _joint_optimize(c, rxn.product.paired_bem, config, scratch_dir, f"p_to_r_{ind:04d}") - for ind, c in enumerate(p_confs) - ] - - # Default to "conformation-poor" model, unless an excess of conformers is present - n_conf = config.n_conf - total_conf = len(r_confs) + len(p_confs) - verbose = getattr(config, "verbose", False) - if verbose: - print("Total number of reactant + product conformers generated = ", total_conf) - - module_dir = Path(__file__).parent.resolve() - if total_conf/n_conf > 3.0: - model_path = module_dir / 'rich_model.sav' - else: - model_path = module_dir / 'poor_model.sav' - if verbose: - print(f"{model_path.stem} is chosen to generate aligned reaction conformers") - - with open(model_path, 'rb') as f: - model = pickle.load(f) - - # Truncate both the original and biased lists when the conformer pool is too large compared to the number of rxn conformers requested - limit = n_conf * 5 - if len(r_confs) > limit: - r_confs = r_confs[:limit] - biased_p = biased_p[:limit] - if len(p_confs) > limit: - p_confs = p_confs[:limit] - biased_r = biased_r[:limit] - - - # --- STEP B: Reactant-Product Pair Evaluation & Tournament --- - approved_pairs = [] - approved_indicators = [] - dropped_pairs = 0 - - if mode in ['dual', 'r_only', 'off']: - r_loop_confs = r_confs if mode != 'off' else r_confs[:len(p_confs)] - else: - r_loop_confs = [] - - for ind, r_c in enumerate(r_loop_confs): - if ind >= len(biased_p) or biased_p[ind] is None: - dropped_pairs += 1 - continue - - # 1. Unaligned Evaluation - ind_unaligned = return_indicator(E=r_c.elements, RG=r_c.geo, PG=biased_p[ind].geo) - prob_unaligned = model.predict_proba(ind_unaligned) - - # 2. Aligned Evaluation - aligned_biased_p = align_conformers(r_c, biased_p[ind]) - ind_aligned = return_indicator(E=r_c.elements, RG=r_c.geo, PG=aligned_biased_p.geo) - prob_aligned = model.predict_proba(ind_aligned) - - # 3. The Tournament (keep the higher probability setup) - if prob_aligned[0][1] > prob_unaligned[0][1]: - best_p = aligned_biased_p - best_ind = ind_aligned - best_prob = prob_aligned - else: - best_p = biased_p[ind] - best_ind = ind_unaligned - best_prob = prob_unaligned - - # 4. Quality Control & Deduplication - if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): - approved_indicators.append(best_ind) - approved_pairs.append({ - "r_conf": r_c, - "p_conf": best_p, - "score": best_prob[0][1] - }) - else: - dropped_pairs += 1 -#################################################################### - p_loop_confs = p_confs if mode in ['dual', 'p_only'] else [] - - for ind, p_c in enumerate(p_loop_confs): - if ind >= len(biased_r) or biased_r[ind] is None: - dropped_pairs += 1 - continue - - # 1. Unaligned Evaluation - ind_unaligned = return_indicator(E=p_c.elements, RG=biased_r[ind].geo, PG=p_c.geo) - prob_unaligned = model.predict_proba(ind_unaligned) - - # 2. Aligned Evaluation - aligned_biased_r = align_conformers(p_c, biased_r[ind]) - ind_aligned = return_indicator(E=p_c.elements, RG=aligned_biased_r.geo, PG=p_c.geo) - prob_aligned = model.predict_proba(ind_aligned) - - # 3. The Tournament (keep the higher probability setup) - if prob_aligned[0][1] > prob_unaligned[0][1]: - best_r = aligned_biased_r - best_ind = ind_aligned - best_prob = prob_aligned - else: - best_r = biased_r[ind] - best_ind = ind_unaligned - best_prob = prob_unaligned - - # 4. Quality Control & Deduplication - if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): - approved_indicators.append(best_ind) - approved_pairs.append({ - "r_conf": best_r, - "p_conf": p_c, - "score": best_prob[0][1] - }) - else: - dropped_pairs += 1 - - # --- STEP C: Sort and Select Top N --- - # Sort descending by probability of success - approved_pairs.sort(key=lambda x: x["score"], reverse=True) - - if verbose: - print("Number of approved pairs = ", len(approved_pairs)) - print("Number of dropped pairs = ", dropped_pairs) -############################################################################## - # Truncate to the number requested by the user - return approved_pairs[:n_conf] - - -def _joint_optimize(conf, target_bem, config, scratch_dir, label): - """ - Dispatch the configured joint-optimization engine. - """ - engine = getattr(config, "joint_opt_engine", "ob") - if engine == "xtb": - return xtb_joint_optimize( - conf, - target_bem, - Path(scratch_dir) / label, - lot=config.xtb_joint_lot, - charge=config.charge, - multiplicity=config.multiplicity, - n_cpus=config.n_cpus, - force_constant=config.xtb_joint_force_constant, - scf_iters=config.xtb_joint_scf_iters, - keep_files=config.xtb_joint_keep_files, - ) - - return ob_joint_optimize(conf, target_bem, config.bias_lot) - - -def align_conformers(conf, biased_conf): - """ - Uses ASE to minimize rotation and translation (RMSD) between product and reactant. - Returns a NEW product conformer that is aligned to the reactant. - """ - atoms = Atoms(symbols=[el.upper() for el in conf.elements], positions=conf.geo) - biased_atoms = Atoms(symbols=[el.upper() for el in conf.elements], positions=biased_conf.geo) - - # ASE modifies the moving atoms (p_atoms) in-place to align with the target (r_atoms) - minimize_rotation_and_translation(atoms, biased_atoms) - - aligned_biased_conf = copy.deepcopy(biased_conf) - aligned_biased_conf.geo = biased_atoms.positions # Extract the rotated/translated coordinates - aligned_biased_conf.type = f"aligned_{biased_conf.type}" - - return aligned_biased_conf - - -def check_uniqueness(new_indicators, approved_indicators_list, threshold=0.025): - """ - Checks if a pair is too geometrically similar to an already approved pair. - """ - if len(approved_indicators_list) == 0: return True - - min_dis = min([np.linalg.norm(np.array(new_indicators) - np.array(j)) for j in approved_indicators_list]) - - if min_dis > threshold: return True - else: return False + return ConformerPairSelector(rxn, config, scratch_dir=scratch_dir).select() diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index b06e14a3..4d493c61 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -2,11 +2,14 @@ import shutil import fnmatch import pickle +import json +import subprocess +from pathlib import Path from yarp.reaction.external.calc_base import AsyncYarpCalculator from yarp.yarpecule.input_parsers import xyz_parse from yarp.reaction.conformer import conformer -from yarp.reaction.conf_sampling.select_pairs import select_gsm_pairs +from yarp.reaction.external.conformer_select import ConformerPairSelector class TSGuessTask(AsyncYarpCalculator): def has_prerequisites(self) -> bool: @@ -54,7 +57,11 @@ def generate_input(self): return print(f" * [{self.rxn.hash}] Selecting {self.n_pairs} conformer pairs for GSM...") - self.pairs_to_run = select_gsm_pairs(self.rxn, self.config, scratch_dir=self.scratch_dir / "joint_opt") + self.pairs_to_run = ConformerPairSelector( + self.rxn, + self.config, + scratch_dir=self.scratch_dir / "joint_opt", + ).select() # Write inputs for each pair for i, pair in enumerate(self.pairs_to_run): @@ -89,7 +96,12 @@ def write_submission_script(self): f.write("echo 'Starting YARP serial GSM execution...'\n\n") if getattr(self.config, "containerize_pre_gsm", False): - f.write("python -m yarp.reaction.external.scripts.run_ts_guess_container /work/payload.pkl\n") + f.write( + "python -c \"" + "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " + "PysisyphusTSGuessCalculator.run_containerized('/work/payload.pkl')" + "\"\n" + ) else: for i in range(1, len(self.pairs_to_run) + 1): f.write(f"echo '--- Running GSM pair {i} ---'\n") @@ -239,7 +251,7 @@ def cleanup(self): shutil.rmtree(item) def _write_pysis_gsm_input(self, input_path, r_xyz_path, p_xyz_path): - write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, self.config) + self.write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, self.config) def _get_num_runs(self) -> int: """ @@ -250,19 +262,94 @@ def _get_num_runs(self) -> int: run_dirs = list(self.scratch_dir.glob("gsm_run*")) return len(run_dirs) + @staticmethod + def write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, config): + # Make sure lot is xTB (ERM: We'll make this more robust later! Hopefully!) + lot = config.gsm_lot.lower() + + with open(input_path, 'w') as f: + input_geo = [r_xyz_path, p_xyz_path] + f.write(f'geom:\n type: cart\n fn: {input_geo}\n') + + # ERM: I left out the option for solvent, + # because what I saw in classy YARP didn't make sense to me... + f.write(f'calc:\n type: {lot}\n pal: {config.n_cpus}\n mem: {config.mem_per_cpu}\n charge: {config.charge}\n mult: {config.multiplicity}\n') + + f.write(f'cos:\n type: gs\n max_nodes: {config.max_gsm_nodes}\n climb: True\n climb_rms: 0.005\n climb_lanczos: False\n reparam_check: rms\n reparam_every: 1\n reparam_every_full: 1\n') + + f.write(f'opt:\n type: string\n stop_in_when_full: -1\n align: True\n scale_step: global\n') + + @staticmethod + def _write_selected_pairs_manifest(path, pairs): + manifest = { + "n_pairs": len(pairs), + "pairs": [ + { + "index": ind, + "score": float(pair.get("score", 0.0)), + "r_conf_type": getattr(pair.get("r_conf"), "type", ""), + "p_conf_type": getattr(pair.get("p_conf"), "type", ""), + } + for ind, pair in enumerate(pairs, start=1) + ], + } + Path(path).write_text(json.dumps(manifest, indent=2, sort_keys=True), encoding="utf-8") + + @classmethod + def run_containerized(cls, payload_path): + """ + Container-side TS guess runner. -def write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, config): - # Make sure lot is xTB (ERM: We'll make this more robust later! Hopefully!) - lot = config.gsm_lot.lower() - - with open(input_path, 'w') as f: - input_geo = [r_xyz_path, p_xyz_path] - f.write(f'geom:\n type: cart\n fn: {input_geo}\n') - - # ERM: I left out the option for solvent, - # because what I saw in classy YARP didn't make sense to me... - f.write(f'calc:\n type: {lot}\n pal: {config.n_cpus}\n mem: {config.mem_per_cpu}\n charge: {config.charge}\n mult: {config.multiplicity}\n') - - f.write(f'cos:\n type: gs\n max_nodes: {config.max_gsm_nodes}\n climb: True\n climb_rms: 0.005\n climb_lanczos: False\n reparam_check: rms\n reparam_every: 1\n reparam_every_full: 1\n') - - f.write(f'opt:\n type: string\n stop_in_when_full: -1\n align: True\n scale_step: global\n') + This keeps pre-GSM conformer selection, joint optimization, ML pair scoring, + and GSM execution inside the same container environment. + """ + payload_path = Path(payload_path) + work_dir = payload_path.parent + pregsm_log = work_dir / "pregsm.log" + + with pregsm_log.open("w", encoding="utf-8") as log: + log.write("Starting containerized YARP pre-GSM selection\n") + + with payload_path.open("rb") as f: + payload = pickle.load(f) + + rxn = payload["rxn"] + config = payload["config"] + + pairs = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt").select() + cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs) + log.write(f"Selected {len(pairs)} pair(s)\n") + + if not pairs: + raise RuntimeError("No GSM pairs selected") + + any_success = False + for idx, pair in enumerate(pairs, start=1): + pair_dir = work_dir / f"gsm_run{idx}" + pair_dir.mkdir(parents=True, exist_ok=True) + + r_xyz_path = pair_dir / f"reactant_{idx}.xyz" + p_xyz_path = pair_dir / f"product_{idx}.xyz" + inp_path = pair_dir / f"gsm_{idx}_input.yaml" + + r_xyz_path.write_text(pair["r_conf"].to_xyz_string(), encoding="utf-8") + p_xyz_path.write_text(pair["p_conf"].to_xyz_string(), encoding="utf-8") + cls.write_pysis_gsm_input(inp_path, r_xyz_path.name, p_xyz_path.name, config) + + log.write(f"Running GSM pair {idx}\n") + with (pair_dir / f"gsm_{idx}.log").open("w", encoding="utf-8") as out: + with (pair_dir / f"gsm_{idx}.err").open("w", encoding="utf-8") as err: + result = subprocess.run( + ["pysis", inp_path.name], + cwd=pair_dir, + stdout=out, + stderr=err, + text=True, + check=False, + ) + log.write(f"GSM pair {idx} exited with code {result.returncode}\n") + if result.returncode == 0: + any_success = True + + if not any_success: + raise RuntimeError("All GSM runs exited nonzero") From a2a5211a74a7684ea0a2ec8a0373f3c4930740b5 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Thu, 25 Jun 2026 15:59:24 -0400 Subject: [PATCH 05/14] The forgotten files --- yarp/reaction/external/conformer_select.py | 213 +++++++++++++++++++++ yarp/reaction/external/joint_opt.py | 58 ++++++ 2 files changed, 271 insertions(+) create mode 100644 yarp/reaction/external/conformer_select.py create mode 100644 yarp/reaction/external/joint_opt.py diff --git a/yarp/reaction/external/conformer_select.py b/yarp/reaction/external/conformer_select.py new file mode 100644 index 00000000..c053f2e2 --- /dev/null +++ b/yarp/reaction/external/conformer_select.py @@ -0,0 +1,213 @@ +""" +Conformer pair selection for GSM input generation. + +This class owns the pre-GSM conformer selection workflow. Joint optimization is +one strategy it calls while constructing candidate reactant/product pairs. +""" + +import copy +import pickle +from pathlib import Path + +import numpy as np +from ase import Atoms +from ase.build import minimize_rotation_and_translation + +from yarp.reaction.conf_sampling.indicator import return_indicator +from yarp.reaction.external.joint_opt import make_joint_optimization_engine + + +class ConformerPairSelector: + """Select reactant/product conformer pairs for GSM.""" + + def __init__(self, rxn, config, scratch_dir=None): + self.rxn = rxn + self.config = config + self.scratch_dir = Path(scratch_dir) if scratch_dir is not None else Path.cwd() / "joint_opt" + self.mode = config.joint_opt.lower() + self.joint_optimizer = make_joint_optimization_engine(config, self.scratch_dir) + self.verbose = getattr(config, "verbose", False) + self.dropped_pairs = 0 + + def select(self): + r_confs = self._get_conformers(self.rxn.reactant) + p_confs = self._get_conformers(self.rxn.product) + + biased_r, biased_p = self._generate_biased_endpoints(r_confs, p_confs) + model = self._load_model(r_confs, p_confs) + + r_confs, p_confs, biased_r, biased_p = self._truncate_conformer_pool( + r_confs, + p_confs, + biased_r, + biased_p, + ) + + approved_pairs = [] + approved_indicators = [] + + self._score_reactant_seeded_pairs(r_confs, biased_p, model, approved_pairs, approved_indicators) + self._score_product_seeded_pairs(p_confs, biased_r, model, approved_pairs, approved_indicators) + + approved_pairs.sort(key=lambda x: x["score"], reverse=True) + + if self.verbose: + print("Number of approved pairs = ", len(approved_pairs)) + print("Number of dropped pairs = ", self.dropped_pairs) + + return approved_pairs[:self.config.n_conf] + + @staticmethod + def _get_conformers(state): + return [conf for key, conf in state.conformers.items() if key != "initial_geom"] + + def _generate_biased_endpoints(self, r_confs, p_confs): + biased_r = r_confs + biased_p = p_confs + + # biased_p: product geometries guided by reactant geometries + # biased_r: reactant geometries guided by product geometries + if self.mode in ["dual", "r_only"]: + biased_p = [ + self.joint_optimizer.optimize(c, self.rxn.reactant.paired_bem, f"r_to_p_{ind:04d}") + for ind, c in enumerate(r_confs) + ] + if self.mode in ["dual", "p_only"]: + biased_r = [ + self.joint_optimizer.optimize(c, self.rxn.product.paired_bem, f"p_to_r_{ind:04d}") + for ind, c in enumerate(p_confs) + ] + + return biased_r, biased_p + + def _load_model(self, r_confs, p_confs): + n_conf = self.config.n_conf + total_conf = len(r_confs) + len(p_confs) + + if self.verbose: + print("Total number of reactant + product conformers generated = ", total_conf) + + model_dir = Path(__file__).resolve().parents[1] / "conf_sampling" + if total_conf / n_conf > 3.0: + model_path = model_dir / "rich_model.sav" + else: + model_path = model_dir / "poor_model.sav" + + if self.verbose: + print(f"{model_path.stem} is chosen to generate aligned reaction conformers") + + with open(model_path, "rb") as f: + return pickle.load(f) + + def _truncate_conformer_pool(self, r_confs, p_confs, biased_r, biased_p): + limit = self.config.n_conf * 5 + if len(r_confs) > limit: + r_confs = r_confs[:limit] + biased_p = biased_p[:limit] + if len(p_confs) > limit: + p_confs = p_confs[:limit] + biased_r = biased_r[:limit] + return r_confs, p_confs, biased_r, biased_p + + def _score_reactant_seeded_pairs(self, r_confs, biased_p, model, approved_pairs, approved_indicators): + if self.mode in ["dual", "r_only", "off"]: + r_loop_confs = r_confs if self.mode != "off" else r_confs[:len(biased_p)] + else: + r_loop_confs = [] + + for ind, r_c in enumerate(r_loop_confs): + if ind >= len(biased_p) or biased_p[ind] is None: + self.dropped_pairs += 1 + continue + + best_p, best_ind, best_prob = self._score_pair( + fixed_conf=r_c, + biased_conf=biased_p[ind], + indicator_elements=r_c.elements, + reactant_geo=r_c.geo, + product_geo=biased_p[ind].geo, + model=model, + ) + + if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): + approved_indicators.append(best_ind) + approved_pairs.append({ + "r_conf": r_c, + "p_conf": best_p, + "score": best_prob[0][1], + }) + else: + self.dropped_pairs += 1 + + def _score_product_seeded_pairs(self, p_confs, biased_r, model, approved_pairs, approved_indicators): + p_loop_confs = p_confs if self.mode in ["dual", "p_only"] else [] + + for ind, p_c in enumerate(p_loop_confs): + if ind >= len(biased_r) or biased_r[ind] is None: + self.dropped_pairs += 1 + continue + + best_r, best_ind, best_prob = self._score_pair( + fixed_conf=p_c, + biased_conf=biased_r[ind], + indicator_elements=p_c.elements, + reactant_geo=biased_r[ind].geo, + product_geo=p_c.geo, + model=model, + ) + + if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): + approved_indicators.append(best_ind) + approved_pairs.append({ + "r_conf": best_r, + "p_conf": p_c, + "score": best_prob[0][1], + }) + else: + self.dropped_pairs += 1 + + @staticmethod + def _score_pair(fixed_conf, biased_conf, indicator_elements, reactant_geo, product_geo, model): + ind_unaligned = return_indicator(E=indicator_elements, RG=reactant_geo, PG=product_geo) + prob_unaligned = model.predict_proba(ind_unaligned) + + aligned_biased = align_conformers(fixed_conf, biased_conf) + if reactant_geo is biased_conf.geo: + aligned_reactant_geo = aligned_biased.geo + aligned_product_geo = product_geo + else: + aligned_reactant_geo = reactant_geo + aligned_product_geo = aligned_biased.geo + + ind_aligned = return_indicator(E=indicator_elements, RG=aligned_reactant_geo, PG=aligned_product_geo) + prob_aligned = model.predict_proba(ind_aligned) + + if prob_aligned[0][1] > prob_unaligned[0][1]: + return aligned_biased, ind_aligned, prob_aligned + return biased_conf, ind_unaligned, prob_unaligned + + +def align_conformers(conf, biased_conf): + """ + Uses ASE to minimize rotation and translation between conformers. + Returns a NEW conformer with aligned coordinates. + """ + atoms = Atoms(symbols=[el.upper() for el in conf.elements], positions=conf.geo) + biased_atoms = Atoms(symbols=[el.upper() for el in conf.elements], positions=biased_conf.geo) + + minimize_rotation_and_translation(atoms, biased_atoms) + + aligned_biased_conf = copy.deepcopy(biased_conf) + aligned_biased_conf.geo = biased_atoms.positions + aligned_biased_conf.type = f"aligned_{biased_conf.type}" + + return aligned_biased_conf + + +def check_uniqueness(new_indicators, approved_indicators_list, threshold=0.025): + """Checks if a pair is too geometrically similar to an already approved pair.""" + if len(approved_indicators_list) == 0: + return True + + min_dis = min([np.linalg.norm(np.array(new_indicators) - np.array(j)) for j in approved_indicators_list]) + return min_dis > threshold diff --git a/yarp/reaction/external/joint_opt.py b/yarp/reaction/external/joint_opt.py new file mode 100644 index 00000000..c1727a62 --- /dev/null +++ b/yarp/reaction/external/joint_opt.py @@ -0,0 +1,58 @@ +""" +Joint optimization engine adapters used during TS guess pair selection. + +These classes are intentionally not AsyncYarpCalculator tasks. Joint +optimization remains an implementation detail of TS guess generation. +""" + +from pathlib import Path + +from yarp.reaction.conf_sampling.joint_opt import ob_joint_optimize +from yarp.reaction.conf_sampling.joint_opt import xtb_joint_optimize + + +class JointOptimizationEngine: + """Base interface for biased endpoint generation.""" + + def optimize(self, conformer, target_bem, label): + raise NotImplementedError + + +class OpenBabelJointOptimizationEngine(JointOptimizationEngine): + """OpenBabel force-field joint optimization.""" + + def __init__(self, ff_name="uff"): + self.ff_name = ff_name + + def optimize(self, conformer, target_bem, label=None): + return ob_joint_optimize(conformer, target_bem, self.ff_name) + + +class XTBJointOptimizationEngine(JointOptimizationEngine): + """Constrained xTB joint optimization.""" + + def __init__(self, scratch_dir, config): + self.scratch_dir = Path(scratch_dir) + self.config = config + + def optimize(self, conformer, target_bem, label): + return xtb_joint_optimize( + conformer, + target_bem, + self.scratch_dir / label, + lot=self.config.xtb_joint_lot, + charge=self.config.charge, + multiplicity=self.config.multiplicity, + n_cpus=self.config.n_cpus, + force_constant=self.config.xtb_joint_force_constant, + scf_iters=self.config.xtb_joint_scf_iters, + keep_files=self.config.xtb_joint_keep_files, + ) + + +def make_joint_optimization_engine(config, scratch_dir): + """Build the configured joint optimization engine.""" + engine = getattr(config, "joint_opt_engine", "ob") + if engine == "xtb": + return XTBJointOptimizationEngine(scratch_dir, config) + return OpenBabelJointOptimizationEngine(config.bias_lot) From 0b05bb2d7b84f479dbd9752ab33fc52453d0f6c9 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Fri, 26 Jun 2026 13:12:02 -0400 Subject: [PATCH 06/14] v2 --- containers/jo_opt/Dockerfile | 7 ++- yarp/reaction/external/ts_guess.py | 99 ++++++++++++++++-------------- 2 files changed, 59 insertions(+), 47 deletions(-) diff --git a/containers/jo_opt/Dockerfile b/containers/jo_opt/Dockerfile index 6b014bf7..5adcc601 100644 --- a/containers/jo_opt/Dockerfile +++ b/containers/jo_opt/Dockerfile @@ -30,7 +30,7 @@ RUN mamba create -n jo_opt -c conda-forge -y \ rdkit \ numpy \ scipy \ - scikit-learn \ + scikit-learn=1.3.0 \ ase \ pyyaml \ ipython \ @@ -39,8 +39,10 @@ RUN mamba create -n jo_opt -c conda-forge -y \ ENV CONDA_DEFAULT_ENV=jo_opt ENV PATH="${CONDA_DIR}/envs/jo_opt/bin:${PATH}" +ENV PYSISRC=/root/.pysisyphusrc -RUN pip install --no-cache-dir pysisyphus +RUN pip install --no-cache-dir pysisyphus==0.7.6.post2 +RUN python -c "import importlib.metadata as md; assert md.version('scikit-learn') == '1.3.0', md.version('scikit-learn'); assert md.version('pysisyphus') == '0.7.6.post2', md.version('pysisyphus')" WORKDIR /opt/yarp COPY . /opt/yarp @@ -48,6 +50,7 @@ RUN pip install --no-cache-dir -e . RUN echo "[xtb]" > /root/.pysisyphusrc && \ echo "cmd=xtb" >> /root/.pysisyphusrc +RUN pysis --help > /tmp/pysis_help.txt ENV OMP_STACKSIZE=1G ENV OMP_MAX_ACTIVE_LEVELS=1 diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index 4d493c61..e615c550 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -4,6 +4,7 @@ import pickle import json import subprocess +import traceback from pathlib import Path from yarp.reaction.external.calc_base import AsyncYarpCalculator @@ -96,6 +97,9 @@ def write_submission_script(self): f.write("echo 'Starting YARP serial GSM execution...'\n\n") if getattr(self.config, "containerize_pre_gsm", False): + repo_root = Path(__file__).resolve().parents[3] + f.write(f"export PYTHONPATH={repo_root}:$PYTHONPATH\n") + f.write("export PYSISRC=/root/.pysisyphusrc\n") f.write( "python -c \"" "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " @@ -308,48 +312,53 @@ def run_containerized(cls, payload_path): pregsm_log = work_dir / "pregsm.log" with pregsm_log.open("w", encoding="utf-8") as log: - log.write("Starting containerized YARP pre-GSM selection\n") - - with payload_path.open("rb") as f: - payload = pickle.load(f) - - rxn = payload["rxn"] - config = payload["config"] - - pairs = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt").select() - cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs) - log.write(f"Selected {len(pairs)} pair(s)\n") - - if not pairs: - raise RuntimeError("No GSM pairs selected") - - any_success = False - for idx, pair in enumerate(pairs, start=1): - pair_dir = work_dir / f"gsm_run{idx}" - pair_dir.mkdir(parents=True, exist_ok=True) - - r_xyz_path = pair_dir / f"reactant_{idx}.xyz" - p_xyz_path = pair_dir / f"product_{idx}.xyz" - inp_path = pair_dir / f"gsm_{idx}_input.yaml" - - r_xyz_path.write_text(pair["r_conf"].to_xyz_string(), encoding="utf-8") - p_xyz_path.write_text(pair["p_conf"].to_xyz_string(), encoding="utf-8") - cls.write_pysis_gsm_input(inp_path, r_xyz_path.name, p_xyz_path.name, config) - - log.write(f"Running GSM pair {idx}\n") - with (pair_dir / f"gsm_{idx}.log").open("w", encoding="utf-8") as out: - with (pair_dir / f"gsm_{idx}.err").open("w", encoding="utf-8") as err: - result = subprocess.run( - ["pysis", inp_path.name], - cwd=pair_dir, - stdout=out, - stderr=err, - text=True, - check=False, - ) - log.write(f"GSM pair {idx} exited with code {result.returncode}\n") - if result.returncode == 0: - any_success = True - - if not any_success: - raise RuntimeError("All GSM runs exited nonzero") + try: + print("Starting containerized YARP pre-GSM selection", file=log, flush=True) + + with payload_path.open("rb") as f: + payload = pickle.load(f) + + rxn = payload["rxn"] + config = payload["config"] + + pairs = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt").select() + cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs) + print(f"Selected {len(pairs)} pair(s)", file=log, flush=True) + + if not pairs: + raise RuntimeError("No GSM pairs selected") + + any_success = False + for idx, pair in enumerate(pairs, start=1): + pair_dir = work_dir / f"gsm_run{idx}" + pair_dir.mkdir(parents=True, exist_ok=True) + + r_xyz_path = pair_dir / f"reactant_{idx}.xyz" + p_xyz_path = pair_dir / f"product_{idx}.xyz" + inp_path = pair_dir / f"gsm_{idx}_input.yaml" + + r_xyz_path.write_text(pair["r_conf"].to_xyz_string(), encoding="utf-8") + p_xyz_path.write_text(pair["p_conf"].to_xyz_string(), encoding="utf-8") + cls.write_pysis_gsm_input(inp_path, r_xyz_path.name, p_xyz_path.name, config) + + print(f"Running GSM pair {idx}", file=log, flush=True) + with (pair_dir / f"gsm_{idx}.log").open("w", encoding="utf-8") as out: + with (pair_dir / f"gsm_{idx}.err").open("w", encoding="utf-8") as err: + result = subprocess.run( + ["pysis", inp_path.name], + cwd=pair_dir, + stdout=out, + stderr=err, + text=True, + check=False, + ) + print(f"GSM pair {idx} exited with code {result.returncode}", file=log, flush=True) + if result.returncode == 0: + any_success = True + + if not any_success: + raise RuntimeError("All GSM runs exited nonzero") + except Exception: + traceback.print_exc(file=log) + log.flush() + raise From d3ad394e34bc6261e87cc6bf7add226d592d475d Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Fri, 26 Jun 2026 14:08:02 -0400 Subject: [PATCH 07/14] dropping non-containerized option --- environment.yml | 4 +- test/util/test_ts_guess_config.py | 11 ++- yarp/reaction/conf_sampling/select_pairs.py | 12 +++- yarp/reaction/external/conformer_select.py | 8 +++ yarp/reaction/external/ts_guess.py | 76 ++++++--------------- yarp/util/config.py | 3 - 6 files changed, 47 insertions(+), 67 deletions(-) diff --git a/environment.yml b/environment.yml index 0f1ec423..26d3af54 100644 --- a/environment.yml +++ b/environment.yml @@ -11,10 +11,10 @@ dependencies: - ipykernel - rdkit - openbabel + - numpy - scipy - pandoc - networkx - - scikit-learn=1.3.0 - pip: - tabulate - sphinx-rtd-theme @@ -22,4 +22,4 @@ dependencies: - sphinx - pytest-mock - ase - - h5py \ No newline at end of file + - h5py diff --git a/test/util/test_ts_guess_config.py b/test/util/test_ts_guess_config.py index 32f4ef98..c186edb2 100644 --- a/test/util/test_ts_guess_config.py +++ b/test/util/test_ts_guess_config.py @@ -3,6 +3,7 @@ pytest.importorskip("openbabel") from yarp.util.config import TSGuessConfig +from yarp.reaction.external.conformer_select import ConformerPairSelector def test_ts_guess_config_defaults_to_openbabel_joint_opt(): @@ -15,7 +16,6 @@ def test_ts_guess_config_defaults_to_openbabel_joint_opt(): assert cfg.joint_opt_engine == "ob" assert cfg.xtb_joint_lot == "gfn2" - assert cfg.containerize_pre_gsm is False def test_ts_guess_config_accepts_xtb_joint_opt_options(): @@ -26,12 +26,10 @@ def test_ts_guess_config_accepts_xtb_joint_opt_options(): multiplicity=1, joint_opt_engine="xtb", xtb_joint_force_constant=1, - containerize_pre_gsm=True, ) assert cfg.joint_opt_engine == "xtb" assert cfg.xtb_joint_force_constant == 1.0 - assert cfg.containerize_pre_gsm is True def test_ts_guess_config_rejects_unknown_joint_opt_engine(): @@ -43,3 +41,10 @@ def test_ts_guess_config_rejects_unknown_joint_opt_engine(): multiplicity=1, joint_opt_engine="bad", ) + + +def test_conformer_pair_selection_requires_container(monkeypatch): + monkeypatch.delenv("YARP_PREGSM_CONTAINER", raising=False) + + with pytest.raises(RuntimeError, match="jo_opt pre-GSM container"): + ConformerPairSelector.__new__(ConformerPairSelector).select() diff --git a/yarp/reaction/conf_sampling/select_pairs.py b/yarp/reaction/conf_sampling/select_pairs.py index c48bd1c1..189fd36d 100644 --- a/yarp/reaction/conf_sampling/select_pairs.py +++ b/yarp/reaction/conf_sampling/select_pairs.py @@ -2,11 +2,17 @@ Compatibility wrapper for GSM conformer pair selection. """ -from yarp.reaction.external.conformer_select import ConformerPairSelector - def select_gsm_pairs(rxn, config, scratch_dir=None): """ Select reactant/product conformer pairs for GSM. + + Host-side ML pair selection has been removed. The Pysisyphus TS guess + workflow now runs conformer selection, joint optimization, ML scoring, and + GSM inside the jo_opt container. """ - return ConformerPairSelector(rxn, config, scratch_dir=scratch_dir).select() + raise RuntimeError( + "Host-side GSM conformer pair selection has been removed. " + "Use the Pysisyphus TS guess workflow, which runs pre-GSM selection " + "inside the jo_opt container." + ) diff --git a/yarp/reaction/external/conformer_select.py b/yarp/reaction/external/conformer_select.py index c053f2e2..793eccff 100644 --- a/yarp/reaction/external/conformer_select.py +++ b/yarp/reaction/external/conformer_select.py @@ -6,6 +6,7 @@ """ import copy +import os import pickle from pathlib import Path @@ -30,6 +31,13 @@ def __init__(self, rxn, config, scratch_dir=None): self.dropped_pairs = 0 def select(self): + if os.environ.get("YARP_PREGSM_CONTAINER") != "1": + raise RuntimeError( + "Conformer pair selection must run inside the jo_opt pre-GSM container. " + "Use the Pysisyphus TS guess workflow instead of calling ConformerPairSelector.select() " + "from the host YARP environment." + ) + r_confs = self._get_conformers(self.rxn.reactant) p_confs = self._get_conformers(self.rxn.product) diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index e615c550..cec29e35 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -39,48 +39,20 @@ class PysisyphusTSGuessCalculator(TSGuessTask): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if getattr(self.config, "containerize_pre_gsm", False): - self.image_name = "erm42/yarp:jo_opt" - else: - self.image_name = "erm42/yarp:pysis_xtb" + self.image_name = "erm42/yarp:jo_opt" self.n_pairs = self.config.n_conf - self.pairs_to_run = [] def generate_input(self): """ - Runs the Joint Opt + ML Selection, then writes the files - required for the Pysisyphus GSM run. + Writes the payload consumed by the container-side pre-GSM workflow. + + Conformer selection, joint optimization, ML scoring, and Pysisyphus GSM + execution all run inside the jo_opt container so the host YARP + environment does not need the ML dependency stack. """ - if getattr(self.config, "containerize_pre_gsm", False): - payload_path = self.scratch_dir / "payload.pkl" - with open(payload_path, "wb") as f: - pickle.dump({"rxn": self.rxn, "config": self.config}, f) - return - - print(f" * [{self.rxn.hash}] Selecting {self.n_pairs} conformer pairs for GSM...") - self.pairs_to_run = ConformerPairSelector( - self.rxn, - self.config, - scratch_dir=self.scratch_dir / "joint_opt", - ).select() - - # Write inputs for each pair - for i, pair in enumerate(self.pairs_to_run): - idx = i + 1 - pair_dir = self.scratch_dir / f"gsm_run{idx}" - os.makedirs(pair_dir, exist_ok=True) - r_xyz_path = pair_dir / f"reactant_{idx}.xyz" - p_xyz_path = pair_dir / f"product_{idx}.xyz" - inp_path = pair_dir / f"gsm_{idx}_input.yaml" - - # Write XYZs - with open(r_xyz_path, "w") as f: - f.write(pair["r_conf"].to_xyz_string()) - with open(p_xyz_path, "w") as f: - f.write(pair["p_conf"].to_xyz_string()) - - # Write a Pysisyphus input file for GSM - self._write_pysis_gsm_input(inp_path, f"reactant_{idx}.xyz", f"product_{idx}.xyz") + payload_path = self.scratch_dir / "payload.pkl" + with open(payload_path, "wb") as f: + pickle.dump({"rxn": self.rxn, "config": self.config}, f) def write_submission_script(self): """ @@ -96,25 +68,16 @@ def write_submission_script(self): f.write("#!/bin/bash\n\n") f.write("echo 'Starting YARP serial GSM execution...'\n\n") - if getattr(self.config, "containerize_pre_gsm", False): - repo_root = Path(__file__).resolve().parents[3] - f.write(f"export PYTHONPATH={repo_root}:$PYTHONPATH\n") - f.write("export PYSISRC=/root/.pysisyphusrc\n") - f.write( - "python -c \"" - "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " - "PysisyphusTSGuessCalculator.run_containerized('/work/payload.pkl')" - "\"\n" - ) - else: - for i in range(1, len(self.pairs_to_run) + 1): - f.write(f"echo '--- Running GSM pair {i} ---'\n") - # The container mounts self.scratch_dir to /work - f.write(f"cd /work/gsm_run{i}\n") - - # Execute pysis within the specific folder, saving logs locally - f.write(f"pysis gsm_{i}_input.yaml > gsm_{i}.log 2> gsm_{i}.err\n") - f.write(f"echo '--- Finished GSM pair {i} ---'\n\n") + repo_root = Path(__file__).resolve().parents[3] + f.write(f"export PYTHONPATH={repo_root}:$PYTHONPATH\n") + f.write("export PYSISRC=/root/.pysisyphusrc\n") + f.write("export YARP_PREGSM_CONTAINER=1\n") + f.write( + "python -c \"" + "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " + "PysisyphusTSGuessCalculator.run_containerized('/work/payload.pkl')" + "\"\n" + ) # Make executable inner_script_path.chmod(0o755) @@ -321,6 +284,7 @@ def run_containerized(cls, payload_path): rxn = payload["rxn"] config = payload["config"] + os.environ["YARP_PREGSM_CONTAINER"] = "1" pairs = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt").select() cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs) print(f"Selected {len(pairs)} pair(s)", file=log, flush=True) diff --git a/yarp/util/config.py b/yarp/util/config.py index 794c83d0..2c4bea92 100644 --- a/yarp/util/config.py +++ b/yarp/util/config.py @@ -299,7 +299,6 @@ class TSGuessConfig: xtb_joint_force_constant: float = 1.0 xtb_joint_scf_iters: int = 300 xtb_joint_keep_files: bool = False - containerize_pre_gsm: bool = False n_cpus: int = 1 mem_per_cpu: int = 4000 @@ -346,8 +345,6 @@ def __post_init__(self): raise ValueError("Please provide a positive integer to ts_guess: 'xtb_joint_scf_iters'") if not isinstance(self.xtb_joint_keep_files, bool): raise ValueError("Please provide a boolean value to ts_guess: 'xtb_joint_keep_files'") - if not isinstance(self.containerize_pre_gsm, bool): - raise ValueError("Please provide a boolean value to ts_guess: 'containerize_pre_gsm'") if not isinstance(self.n_cpus, int): raise ValueError("Please provide an integer value to ts_guess: 'n_cpus'") if not isinstance(self.mem_per_cpu, int): From f8ac8930fa2df510f5baaad4bf7463599fa54165 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Mon, 6 Jul 2026 12:45:27 -0400 Subject: [PATCH 08/14] Ignore container build artifacts --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index f515fcb9..7711b02e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ debug/* .vscode containers/*.sif +containers/*/*.def +containers/*.tar containers/orca/*.tar.* containers/orca/example **/SCRATCH From 396ebe807ee95ae66662618d4c3689740f1a0f70 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Tue, 7 Jul 2026 14:46:44 -0400 Subject: [PATCH 09/14] Handling of CREST parrallelisms --- yarp/reaction/external/calc_base.py | 38 +++++++- yarp/reaction/external/conf_gen.py | 14 ++- yarp/reaction/external/irc_val.py | 1 + yarp/reaction/external/min_opt.py | 3 +- yarp/reaction/external/ts_guess.py | 146 +++++++++++++++++++++++++--- yarp/reaction/external/ts_opt.py | 3 +- yarp/run_yarp_loop.py | 2 +- 7 files changed, 188 insertions(+), 19 deletions(-) diff --git a/yarp/reaction/external/calc_base.py b/yarp/reaction/external/calc_base.py index cd0a0a19..45f40989 100644 --- a/yarp/reaction/external/calc_base.py +++ b/yarp/reaction/external/calc_base.py @@ -175,6 +175,43 @@ def write_scheduler_headers(self, f): # If 'local', we don't need scheduler headers! + @staticmethod + def thread_env(cpus): + """Return environment variables that bind threaded libraries to a task.""" + cpus = max(1, int(cpus)) + blas_threads = 1 + return { + "OMP_NUM_THREADS": f"{cpus},{blas_threads}", + "OMP_THREAD_LIMIT": str(cpus), + "OMP_MAX_ACTIVE_LEVELS": "1", + "OMP_NESTED": "FALSE", + "OMP_DYNAMIC": "FALSE", + "OMP_STACKSIZE": "512M", + "OMP_PROC_BIND": "close", + "OMP_PLACES": "cores", + "OPENBLAS_NUM_THREADS": str(blas_threads), + "GOTO_NUM_THREADS": str(blas_threads), + "MKL_NUM_THREADS": str(blas_threads), + "MKL_DYNAMIC": "FALSE", + "BLIS_NUM_THREADS": str(blas_threads), + "NUMEXPR_NUM_THREADS": str(blas_threads), + "VECLIB_MAXIMUM_THREADS": str(blas_threads), + } + + def write_thread_env(self, f): + """Limit threaded libraries to the resources requested for this task.""" + env = self.thread_env(getattr(self.config, "n_cpus", 1)) + f.write("ulimit -s unlimited || true\n") + for key, value in env.items(): + f.write(f"export {key}={value}\n") + # Apptainer/Singularity launched with -e only forwards explicitly + # prefixed variables into the container. + for key, value in env.items(): + f.write(f"export APPTAINERENV_{key}={value}\n") + for key, value in env.items(): + f.write(f"export SINGULARITYENV_{key}={value}\n") + f.write("\n") + # --- Pre-flight Check (Overridden by Task classes) --- def has_prerequisites(self) -> bool: return True @@ -201,4 +238,3 @@ def cleanup(self): # Default behavior: nuke the whole folder if self.scratch_dir and self.scratch_dir.exists(): shutil.rmtree(self.scratch_dir) - diff --git a/yarp/reaction/external/conf_gen.py b/yarp/reaction/external/conf_gen.py index 3d8fc00c..c2eb1d22 100644 --- a/yarp/reaction/external/conf_gen.py +++ b/yarp/reaction/external/conf_gen.py @@ -46,7 +46,19 @@ def write_submission_script(self) -> Path: with open(script_path, "w") as f: f.write("#!/bin/bash\n") self.write_scheduler_headers(f) + self.write_thread_env(f) f.write(f"cd {self.scratch_dir}\n") + f.write("{\n") + f.write(" echo '===== CREST job diagnostics ====='\n") + f.write(" hostname\n") + f.write(" date\n") + f.write(" echo \"JOB_ID=${JOB_ID:-NA}\"\n") + f.write(" echo \"NSLOTS=${NSLOTS:-NA}\"\n") + f.write(" echo \"SGE_BINDING=${SGE_BINDING:-NA}\"\n") + f.write(" echo 'ulimit -a:'\n") + f.write(" ulimit -a\n") + f.write(" env | egrep '^(OMP|MKL|OPENBLAS|GOTO|BLIS|NUMEXPR|VECLIB|GOMP|APPTAINERENV|SINGULARITYENV)_' | sort\n") + f.write("} > crest_env.log 2>&1\n") # Pipe output to a log file so it doesn't flood the local terminal f.write(f"{full_command} > crest_run.log 2> crest_run.err\n") except PermissionError: @@ -122,7 +134,7 @@ def scrape_data(self) -> bool: def cleanup(self): """Delete CREST intermediate files, keeping conformer data and logs.""" - keep = {"crest_conformers.xyz", "cre_members", "crest.energies", "crest_run.log", self.xyz_file, "run_crest_cmd.sh"} # SHQK : Keeping cre_members helps readily get the total number of generated conformers. Please keep it. + keep = {"crest_conformers.xyz", "cre_members", "crest.energies", "crest_run.log", "crest_env.log", self.xyz_file, "run_crest_cmd.sh"} # SHQK : Keeping cre_members helps readily get the total number of generated conformers. Please keep it. for item in self.scratch_dir.iterdir(): if item.name not in keep: if item.is_file(): diff --git a/yarp/reaction/external/irc_val.py b/yarp/reaction/external/irc_val.py index 63bcf569..ff4984c1 100644 --- a/yarp/reaction/external/irc_val.py +++ b/yarp/reaction/external/irc_val.py @@ -212,6 +212,7 @@ def write_submission_script(self): with open(submit_script_path, "w") as f: f.write("#!/bin/bash\n") self.write_scheduler_headers(f) + self.write_thread_env(f) f.write(f"{prefix} bash /work/run_pysis_inner.sh\n") submit_script_path.chmod(0o755) diff --git a/yarp/reaction/external/min_opt.py b/yarp/reaction/external/min_opt.py index a5904c8e..1ecad3d0 100644 --- a/yarp/reaction/external/min_opt.py +++ b/yarp/reaction/external/min_opt.py @@ -18,7 +18,7 @@ def has_prerequisites(self) -> bool: source = self.config.initial_geom.reactant elif self.task_def.task_type == "product_optimization": node = self.rxn.product - source = self.config.initial_geom.reactant + source = self.config.initial_geom.product else: raise ValueError(f"Unknown task type for MinOpt: {self.task_def.task_type}") @@ -88,6 +88,7 @@ def write_submission_script(self) -> Path: with open(script_path, "w") as f: f.write("#!/bin/bash\n") self.write_scheduler_headers(f) + self.write_thread_env(f) f.write(f"cd {self.scratch_dir}\n") f.write(f"{full_command}\n") diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index cec29e35..613e471e 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -5,6 +5,8 @@ import json import subprocess import traceback +import signal +import time from pathlib import Path from yarp.reaction.external.calc_base import AsyncYarpCalculator @@ -66,12 +68,17 @@ def write_submission_script(self): with open(inner_script_path, "w") as f: f.write("#!/bin/bash\n\n") + f.write("set -u\n") + f.write("trap 'ec=$?; echo \"Inner GSM wrapper exiting with code ${ec}\"' EXIT\n") f.write("echo 'Starting YARP serial GSM execution...'\n\n") repo_root = Path(__file__).resolve().parents[3] - f.write(f"export PYTHONPATH={repo_root}:$PYTHONPATH\n") + f.write(f"export PYTHONPATH={repo_root}${{PYTHONPATH:+:$PYTHONPATH}}\n") f.write("export PYSISRC=/root/.pysisyphusrc\n") f.write("export YARP_PREGSM_CONTAINER=1\n") + f.write("ulimit -s unlimited || true\n") + for key, value in self.thread_env(self.config.n_cpus).items(): + f.write(f"export {key}={value}\n") f.write( "python -c \"" "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " @@ -93,8 +100,15 @@ def write_submission_script(self): with open(submit_script_path, "w") as f: f.write("#!/bin/bash\n") self.write_scheduler_headers(f) + self.write_thread_env(f) # Launch the container and tell it to run the inner script - f.write(f"{prefix} bash /work/run_pysis_inner.sh\n") + f.write(f"cd {self.scratch_dir}\n") + f.write("echo \"$(date) starting containerized GSM wrapper\" > container_lifecycle.log\n") + f.write( + "trap 'ec=$?; echo \"$(date) submit_gsm.sh exiting with code ${ec}\" " + ">> container_lifecycle.log' EXIT\n" + ) + f.write(f"{prefix} bash /work/run_pysis_inner.sh > container.out 2> container.err\n") submit_script_path.chmod(0o755) @@ -107,6 +121,7 @@ def check_output(self) -> bool: """ num_runs = self._get_num_runs() if num_runs == 0: + self._print_container_log_tail() return False # No runs found at all! one_successful = False @@ -134,8 +149,25 @@ def check_output(self) -> bool: one_successful = True # We only care if at least one succeeded + if not one_successful: + self._print_container_log_tail() return one_successful + def _print_container_log_tail(self): + for name in ("container.err", "container.out", "pregsm.log"): + path = self.scratch_dir / name + if not path.exists(): + continue + try: + lines = path.read_text(encoding="utf-8", errors="replace").splitlines() + except Exception: + continue + if not lines: + continue + print(f" [TS Guess] Last lines of {name}:") + for line in lines[-20:]: + print(f" {line}") + def scrape_data(self) -> bool: """ Validates the Pysisyphus GSM run and extracts the geometries into @@ -262,6 +294,62 @@ def _write_selected_pairs_manifest(path, pairs): } Path(path).write_text(json.dumps(manifest, indent=2, sort_keys=True), encoding="utf-8") + @staticmethod + def _runtime_to_seconds(runtime): + try: + hours, minutes, seconds = [int(_) for _ in str(runtime).split(":")] + except Exception: + return 3600 + return hours * 3600 + minutes * 60 + seconds + + @classmethod + def _pair_timeout_seconds(cls, config, n_pairs): + total = cls._runtime_to_seconds(getattr(config, "max_runtime", "01:00:00")) + n_pairs = max(1, int(n_pairs)) + # Keep scheduler tear-down time available for logging and later pairs. + return max(60, int(total * 0.8 / n_pairs)) + + @staticmethod + def _run_pysis(pair_dir, inp_name, out_path, err_path, timeout_s, log): + start = time.time() + with out_path.open("w", encoding="utf-8") as out: + with err_path.open("w", encoding="utf-8") as err: + proc = subprocess.Popen( + ["pysis", inp_name], + cwd=pair_dir, + stdout=out, + stderr=err, + text=True, + start_new_session=True, + ) + try: + returncode = proc.wait(timeout=timeout_s) + elapsed = time.time() - start + print( + f"GSM pair in {pair_dir.name} exited with code {returncode} " + f"after {elapsed:.1f} s", + file=log, + flush=True, + ) + return returncode == 0 + except subprocess.TimeoutExpired: + elapsed = time.time() - start + print( + f"GSM pair in {pair_dir.name} exceeded {timeout_s} s " + f"after {elapsed:.1f} s; terminating and trying next pair.", + file=log, + flush=True, + ) + try: + os.killpg(proc.pid, signal.SIGTERM) + proc.wait(timeout=30) + except Exception: + try: + os.killpg(proc.pid, signal.SIGKILL) + except Exception: + pass + return False + @classmethod def run_containerized(cls, payload_path): """ @@ -275,6 +363,27 @@ def run_containerized(cls, payload_path): pregsm_log = work_dir / "pregsm.log" with pregsm_log.open("w", encoding="utf-8") as log: + def log_signal(signum, _frame): + print(f"Received signal {signum}; aborting GSM wrapper", file=log, flush=True) + raise RuntimeError(f"Received signal {signum}") + + handled_signals = [ + signal.SIGTERM, + signal.SIGINT, + signal.SIGHUP, + ] + for optional_signal in ("SIGUSR1", "SIGUSR2"): + if hasattr(signal, optional_signal): + handled_signals.append(getattr(signal, optional_signal)) + + previous_handlers = {} + for sig in handled_signals: + try: + previous_handlers[sig] = signal.getsignal(sig) + signal.signal(sig, log_signal) + except (OSError, RuntimeError, ValueError): + pass + try: print("Starting containerized YARP pre-GSM selection", file=log, flush=True) @@ -293,6 +402,12 @@ def run_containerized(cls, payload_path): raise RuntimeError("No GSM pairs selected") any_success = False + timeout_s = cls._pair_timeout_seconds(config, len(pairs)) + print( + f"Using per-GSM-pair timeout of {timeout_s} s", + file=log, + flush=True, + ) for idx, pair in enumerate(pairs, start=1): pair_dir = work_dir / f"gsm_run{idx}" pair_dir.mkdir(parents=True, exist_ok=True) @@ -306,18 +421,15 @@ def run_containerized(cls, payload_path): cls.write_pysis_gsm_input(inp_path, r_xyz_path.name, p_xyz_path.name, config) print(f"Running GSM pair {idx}", file=log, flush=True) - with (pair_dir / f"gsm_{idx}.log").open("w", encoding="utf-8") as out: - with (pair_dir / f"gsm_{idx}.err").open("w", encoding="utf-8") as err: - result = subprocess.run( - ["pysis", inp_path.name], - cwd=pair_dir, - stdout=out, - stderr=err, - text=True, - check=False, - ) - print(f"GSM pair {idx} exited with code {result.returncode}", file=log, flush=True) - if result.returncode == 0: + ok = cls._run_pysis( + pair_dir, + inp_path.name, + pair_dir / f"gsm_{idx}.log", + pair_dir / f"gsm_{idx}.err", + timeout_s, + log, + ) + if ok: any_success = True if not any_success: @@ -326,3 +438,9 @@ def run_containerized(cls, payload_path): traceback.print_exc(file=log) log.flush() raise + finally: + for sig, previous_handler in previous_handlers.items(): + try: + signal.signal(sig, previous_handler) + except (OSError, RuntimeError, ValueError): + pass diff --git a/yarp/reaction/external/ts_opt.py b/yarp/reaction/external/ts_opt.py index 99dcca4d..68014001 100644 --- a/yarp/reaction/external/ts_opt.py +++ b/yarp/reaction/external/ts_opt.py @@ -101,6 +101,7 @@ def write_submission_script(self): with open(submit_script_path, "w") as f: f.write("#!/bin/bash\n") self.write_scheduler_headers(f) + self.write_thread_env(f) f.write(f"{prefix} bash /work/run_pysis_inner.sh\n") submit_script_path.chmod(0o755) @@ -550,4 +551,4 @@ def _parse_orca_thermo(self, filename): # Once we have the final value, we can stop break - return enthalpy, entropy, gibbs \ No newline at end of file + return enthalpy, entropy, gibbs diff --git a/yarp/run_yarp_loop.py b/yarp/run_yarp_loop.py index 60549aec..b47a2039 100644 --- a/yarp/run_yarp_loop.py +++ b/yarp/run_yarp_loop.py @@ -26,7 +26,7 @@ def main(): execute_counter = 0 # Open the output file, and record initial message - output_file = work_dir / f"yarp_loop.out" + output_file = work_dir / f"yarp_loop.log" with open(output_file, "a") as out_f: out_f.write(f"Starting YARP loop. Running progress_yarp.py every {args.interval} mins until {end_time}\n") From 486c3db054fa46224b4b60048a960bb03ab88712 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Wed, 8 Jul 2026 13:58:26 -0400 Subject: [PATCH 10/14] Fixing container model path allignment --- .gitignore | 3 + yarp/reaction/conf_sampling/poor_model.sav | Bin 1353302 -> 0 bytes yarp/reaction/conf_sampling/rich_model.sav | Bin 948937 -> 0 bytes yarp/reaction/external/conformer_select.py | 72 +++++++++++-- yarp/reaction/external/ts_guess.py | 111 +++++++++++++++------ 5 files changed, 145 insertions(+), 41 deletions(-) delete mode 100755 yarp/reaction/conf_sampling/poor_model.sav delete mode 100755 yarp/reaction/conf_sampling/rich_model.sav diff --git a/.gitignore b/.gitignore index 7711b02e..313f85b2 100644 --- a/.gitignore +++ b/.gitignore @@ -183,6 +183,9 @@ cython_debug/ # Ruff stuff: .ruff_cache/ +# Local conformer-pair selection model artifacts +yarp/reaction/conf_sampling/*.sav + # PyPI configuration file .pypirc zhao-patches-doc/ diff --git a/yarp/reaction/conf_sampling/poor_model.sav b/yarp/reaction/conf_sampling/poor_model.sav deleted file mode 100755 index 99ed49354f7519c656c8e118f8bc29fa122efbb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1353302 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%0Dlsb2$e99q(D#6Oy+ z6z4(yXvA|75Z-ZD(edwVh&f&YwwcGM#E(G&;f3HE1JvXcb$+(k-Tm^-KfABLXZ8Qv zsQOR6iMIaie`@hcNp;jEdE_J7{7_4u7m{A-qTF9>KdwW>mjJVYnx5HTv_Iz7>;FTg zYrom$79!k(9oGpu$KqikP~$INKjx?#uA95yd0__xQyTI zfAvxMHx7K`fqMR5a&Be8Wq?NiDZY&ngqMLY0@UQ^p0}!k8o!(6|Ll`&|4P>1e?va= zotP;9&GB1XaU@0lMBCs}y(BNuGAR3!yemrDKkNM8stRsHHTvITfB<=kZHSuvvv-Y` z{5S@{%)j80nkk6ra-i1E=6$&Dpt|JozwLi<{HK*`DXETtxRl2)X8YGLWq!85TDqj@ zT8e)f6uA!YUM}n5v(CjJevOLhKvu@ zaVZ{I(F8UAzZ!f|p!WXAJ+)?KQM>oHPe)F9*X@mP4?+R|0{AZkYVt#F_p+knvPmPh z{P7QS8^5-Vfp#O>_A9;o2JOc+kh`d){Ok`FR~5O<+tpao|L^AfjdPhw|Fz(|0jNQ2 z`JX?yIb+&%oAv$%a~qp>jOcY>xE`pbU%a}xyeKMv>5YpTylBq<#ZsStp+4sPi4gRs z-H5jRUV8A=rz$@8zPSxJ+973r$~lz}anzQJP%hDy&+=d0;1Am08{xkgsM#;t{U7oe zN*tqU_CHdeKS=iepx#7VfA*iu_P?=Ua>z%t`8od7-V2hozT&?H5v^o|0cLN1=a3uD z{nvAs?k;dA2L96i(*&Kj;^B6nR)4d{^r;|tjB6t@csNYZxdabOftsG-*i*l{oPVuG z1`mV$W4eiU`pIUtf6WB_Z^OefdIXqX<@p2Zl3gSJ)$*X^^G|!n{<3M<{zB^*)+T~t zs5dc@{$~C+Q2ciwqPu`vI`cL>c1Uf5sYQWtl=I)rr#s=l9H`kp=fwTT+#lh)enXUy%$R2JJ@<{8s?A`s-||QCaZ)W%fUVV-#q2qHTY+|EB$e z_Md!2o1bcHc9mWsLI1n)u$CSHW`FQ}vHSBkvFxrF?lRw>&O|}7Rd`qpWWGvg_^N)D z)%Rzk{XU6fC@DuPSJJDMp#MF1SOe7QUTt(p9V21p-&v~s(QZWBezd{Yy@idD;~UCZo`Uq-zHk?f1<(rdmZ>5EXkkUqv9!IY5xympFR7P+aBRQ zTq5Ya4-XH}Bf$Jq1|3zG%o^h_CpgA^J?QTTYUN*icf7hf2F5J^sUPFT_RB2)O@uEl z`7tZF#`iumw-Ksk%f;?P;M)My z?3Z=R%o^g4TNjqk?Y7&TzmxOtzMNwBVemZy)XHh@nUj7j{rjnUeOJmPZx*lfS}{!cF7kFdbi@>P0;h3}s#zkLj2Q^g-& zMxE;J!{Tdwwti6`^XB+ibcK)Va;b5?o0s@FTt# zoZ)Qt$=?(7loz(#o!}-v^KO0DSd@ayzmlx_weKIUL7x-?q8xQtZb|63PVCk=RtJwCU9mvP#%kh8Q zt)MQG>f`G{xkPn(A^5m!M}@ca`Be85`Z9jCtBm%c{&aT)KjIfzzFXP73&LqP@-ba3 zKXg+c#HX4aghx>?W6V$L%X&?FGrt%Q?b*lIM-23lyGFQMSbpYnydU*URvudW^lCSf z&+Vv76%nr5CAih@Q`RrmPx3Rr8BTp@AKH^h`;ne*JHEEQzG}B0^Jw8*)*Oxf@Q^k936F>7jh45A9zx z0(z9kEV}W2;qFuBm->8z`1qdWDx};C5g*dW(*Yd(RC|MPl|Kw00DjizbKqwFrNd3T zF+Z4I<`?aU@F?F8m-+nMJ;-{mb_J^P<@i6=#|+4&{TM&pv@h7yGB?)0j^L-hNWbcz zbU--y86V?kdg-P;K+oNn;$p@FWI1KLEdP|x^wCW@q=!8@Z7fD2-d;Yc_buBGrZ)^a zx@~(=4(-8k%H=R&IO5^^l;t5E{>*RMi~LLv!|As3m-;cB@xot~U+TwlKzhc{^e}%= z9%Fr=C-v$AH_I#YgL*L@%A-5z@BO9ShnN4fvg!Yg-G^(Y&MkQ`$r^b|$+frji8XT^ z&Q>&qWwlXCW|{Mjxb-&~<8+bbFn@3fVkPjG14_u7Ql`MYq47sE?ipR+ zeiZmSPS(|G^#tXSk8VjG-Mr{$clXc(r+i!MEjO(5tI>1v*z`=#5ToO)BQeqJV`VaU z$Zk|}`J6p7NB`-9(J@}m?rL;7JL?y^;f4KI-@c^K7d@kMEbLQ`Eomy zxCF5Y6k@(eXKYfdnxfnMg4Z7Ss?gnla1S=mQTfMwX;_j!xAmFT#Rq>bIrS=e2rXw< zJ+k*_i!#>k!!t_q=eNJ6ny7uxt}4&U-4nMU+=KiXkY7*KfPY92_n-40s{f5UICJi4 zH~v`Y^6RP>6q+ua%}uY2UjjP6c?d7_ z$0r*oN)#L@V9QVR_2efsl#L-b9jHNZ-J{3dwOc=JkkRI)604`VdY5`$j0(w!;}LzHazf^n~!i0@~#zhw!lMMpe8@OtxP#FrTv^2mt3B2 z9)ccK!xJY1d~JYQ`;&cdt>doeEe{bi?a!}Aj&m0HS^~9XX7}8bCMtJt{?JXuh2|lY zCvk}A%B_nAy>a~>*R=mxVgTf|0=5QfbYjf7qwdmp^=)MDzHFxK&vHYw%Ma^6>zgm8 zfmjH6lON8RjSPFwkV_PZ|MQy!UIeFgFo&4`_TpKgcs^)4)KMg$#zX9KnJlkZHf zBKY-%{REFpP7jifb|;oD-?~IYPCJxE1mq*y{OrGKc9AO75`1rvk7)BFS&q^Fl+$hO zFP;N}5kM{fa`&WF7Te2qzkg}j-Rdi^M;4kVK<;$L!%(1BPILNpJmkJVJD!3np$1j}bNuGZ!KU%y}QbWOXQ*WZJKl9(_UjzH|J$5eihj-i+`LlH;_5S2I z(q_Vn%iSrCTSu@2?y@|H|h}JrNp|*Ghijt3L^Cy~r;O@i0 z5HJL&r9bE3vy}ud@u^5fJWPG{71?b2FNC3}H__Ig`KOg@8D;GfyAOv!kfwkBlV?;A z8(Qsn>b~P@uu=lI3czp3EvL-G-A{?b>^)DfW+ z^N;B<>c1R6bNAs$5L`mS0K>gE>~kOPv212*cZYj%;4f=dFn%8e|IvE5|D0ET^LOsB zM(rycf8Xl=MtdpyGu=cx{ft)2SLxME^hNqPE*?X|0E<35{JlDTgzcpt-0?5g|8%wc z@FK`F?Bo08+;L`tOXQvACn>+=`1v}>rQL|O{YvkDHxRdge=P7apjLm2&%VF1XkK^m znfE^Qxw@>>Bg>kk^uH8*4LitCnDY{CFP4Pzf=`}%zp9Cc8j-~_0~P3(6rM(dOs-N6Qz<9C0ZbNIIqk8yvCn>#eD}|p5AEm-_#}4 z$?ebamubHyNb!A>S^m}G;>q=AbmjTr zVFN)Y^(NZ-w|;3+s|Wi2!z#bs75`O;=o&_-;nvkZx{KFU-gfIJh35QmbfV&)3;L^p zTKgrsjH@A%U4k>&hm}Cx{!bmNDK_SIulTn7{?~;Jaf}3~ z$1a9H`(x-9#C@~3SFEUZucU*{hoOSboA7WmP_uKm`%ORo_|5lkrp@?wI7Xh4^XpnsC?GD?x!;&b)NbCGpqi&0^~{MFQ1&%a_E*q zYxhU?{-UmFbX;Pa`~muyzK8nHFPeQw982REv}nBu#$$HSlTk$#dD4tMx6(2w(xyG^2( z!hJEq12a4EUkv`a42QmI^(^&g`aCZAmm$2T*hM}@NBgMK!|Gfc{!BktCxTy$@xytC zAmdSY|FBvrJ0L#rmsris_|rkx4@f&xAEbw?$yI*!1igbF`KUkrG2I@X=F>+O_$ZJM zMOXQ5C(}o!D?Ux+{n*^n&Gdv3PJ5@p&DRUlN4*?`+xn%$AL&)QN9Z1iaPl)g$g_7F zMEioC`dIR~+Fo4Z(?wa2IIJB7{~AN3djH|6z*+s+@vL;I=rDg*RPKlAq- z-(Qte2fuXR-$A(A?Zas+rkC;2ZIyoq@u=xCwyzMw-4-ew^;Yd}WBj(gnI77Mc4WMe ztI9j=OM6-6mAgS=BZMCV+6^^Kq`fGI>1F#(f9gwj7sThs>ZsifY!5pkybqA}p?)ln z;8(j>7>@i<(@ErKdjvg{eW@4qrdr=zdf6 zz3`jw7P`M^-F|1#a+ulSA{D1D_{s+SncH@S#0&0@cVEc(${iZ`%Xx?KqRh+w>S&Hy z(hyF!bmslh?}$6S>jPPR-`r)MjU1NEWs5KR#aCBTUydH>mi##fF5T|7-oNehQ>VS{ zo~g@^pKS&C95tGwFON8TL+p2V!P~#|SvNe-J>B3B&bH;KhG>s&$X16Banzbq@)2!* zt}fQ>A|nV!m*gYb{Jz*CYjqf_gQHeWRrd+?|KjFf9&kB3ZrD$4!gZX=;Na}LX8-6= z=L>ZCsqW>kE&SEK;yU%O<2>70(@RQhDyR46FJE>$IcjA2(CSal9oGkEE7qjK9`+Jtu)81xe}-%P z&bU9SsM#SSf7v~jo1>{W(bk`9SCX&x`>ht3@D>qA$k61c? zqV#8oGob%8pkDt+eJp3k{yFT`qo)+QPihHse!dOuM=!NXv@`g%@-IHC;)tD#KRmPD zABFB02=^d#jqp%*d)TgpJ&)jhD4jWXJWy7=e=Pr<5hDxS^APSqXtMB~9n>n*MhMr+ zfA+gK?Nhr0%<_l&FQ+GHH==F7|9N)1VN!mmWtCsnU&m<-g62TY%tcebD=)_E``dvX zjrW+VTXQF>)fwsFYXa2lpI>9kpKjX0)3U?=`ovnDI!y61-9$V6h}P0SL+vhT3W8=N z3{bo}^`JW2j_s2dEZbeClX8i+{HiZ}u(aR3*4H7qx?n8ikdJ8d^Zl)r3&~ku$gY?7 zYXQsvYVB;~jGV9CUMKR~{CTXeqA!1h4;OJ~uHGS$Q%12^0`{Xn6)Iz=8bL%LSrYYWsM z`ktH}=hr>2Im>k9rer{TZK@uhOeQ%DW4E{*v#X28g&5@Eo8fC;Ud= zVzoPx{alYs?v7;nqu#_s`kVI85c439d_LS{LVq6E>(1S?^0d6| z1@3JK_aHP&wZC2A-vh{WNoU@sQ_G2wbN9UU;!}k#-wz&{T;0WiUpMe|2Ws!{;@0=? zb$Pd*+5bCR@iW~-JN-OcPD_`R)L88TrDPyPKETUC}-R9ZQMU$2M zA>bPZ)aAT#*$?Xd&GE5ErdD?rt9d2%&$a$%_L{+E)b0ku{?1uSKHCkV-F}pA|Jo_@ zBUx7eHORm7K`;`i>7Uo5Qcdw`&L?m5_}6&Z>Oaou3wOL3WzsM|Bugv061b7JQohLtQSE`S;v=^`2Sqk$Jb7 z;O?+ucMSOWKGXEfI(zs}?n`~+x2wM6HVpKVpV4W z{Cvdn!+Jxs>kp!J%=*_-`2NZBpY}KNzkbU6lyAI$)#s|@^0_+4lpmDeaS(7B1qGP( zusG~yzdY=tIgJY4mVv(<8Oi>W_e(CHY+AlZFU}toyAcpf25Rj`@tm!dM3*aXZhq(A zu=D((wi#{UGB~|-d|3zy6|!^ zOa0~O;Gv+BC>wmUftsCT7hQJ{!;&4= z=_(mYKFbZ!E54EiRPi-atDiF*kVSqW+e)`ePf2r5QclZ6&>c8|< z{BuFi@w8??aZT-tBC>M!GnuTy9 z{*+6!h;gCzdU4|_NU%NTmRDSS4%)$=Po>K1ZsB9Yu4b9yP$U7kRKKoxNM(2 zvb^a^eh&B^2WpUc;qOP?H@}_HsQjmeF6S4#@XU#de+3xU0yX;;Kb2NVaQ#I;En>&H zOwhR!4{Lz5OWb+n?rQQKym8>y*K9ZQU-myqcQ^R%0csFybeFu_$h%wP11tZ!3ev5@ z!)l<`&P7ivdt9APW!ArDil6yLwDXVkUyD~t3i|)#Bij6&zcBezZ$FSMYy8|cW&K(H zO!-0iyB7i;0BUs6R|g(*zj$`T-2>bL^KQcEg-ZT9@ZAs8Aavy~N7U}#>RNy!@0Mcz z-v|HoK&|}e*2~!+=YsDcpe9FDyx@DcN6(vDkN9Sfxw~2n79daB ze`Ehwi&wHXRs0VlqDO$5{`vi1sv)LqJl<=`Cttc}Alw6y`sres59hzK;pwgB-SVQ3 zNoFk9m2_r*x3!{LKV!E4srMh){+aR{p0xhv_$#dVpMc&^ z0yX=K$75B+9k0x&I;-WE=IMgbo&w}a^PhBP{Rzg8Pl4cBpjJ-84?VtLeZM#AueLk? zY4AN$3jfTDBtP!fH08GxAWy1)>GSug+dt9zGnNyUJEC3wlC>YtAt5gTwfxKPw6-$R zxx@Va>WqND{74JF7l9f?o?7*b%kiJl|C8fC>i;|#UI1$H#h4T2#O_|JpZj_FKg{x@ zZO37{iFW$^XcMnLB_FYLe)-1L66UDo?8*CYw7*&Zg7*7wh<7tkE5D%!b{%pzXVqNv zZOcM)ce>*WsSOdGA7g#s z9_}Nn7k8tm?#=)|oVydXW$cdkt8Ip>-6(1B=diCA+#P`Fz%Y>JWjC4p+zrC&%WepF zn=qbEh=*=Yw~?Q(e_I~I8NV$*FuUXZs29=q4Gy2^AxyfiaFdRFz{os5e8CMq=1%jG zcee4asUqZ?YDSoT#z!~xhrH+z#7F*g->r2AeaZ~q-(h$^xRHL9?{+MaJXc z*V_t5IZ(R+JNn`3^F(vF)o=}N=3hG8%rCgr?luSE)Pwe5`C|E@-5BoRM}H#IpNV)$ z$M{)3pigvyPZx&0nNIckWO?g=_~@p7jGyTjKAoEWWO*Vz?M1%Uh?n8iljVc@(#`rn ze%g=rrhPd4q+M9Q=w^N}o^7$$J zVLY@y!&yEUPWecmz%ZEgAv#F-l+Z^_v(p~58{I)S781bE@Lq5uRP9z|`q3V%-N~e* z{tRb1p?#U(EFa{feHhMo7|!%Fobh!LJ_XZ9H~HyK2c1u?PosK1;fNo;dA5(Vt24oO zJ4lDRs|)!Z%|bZS!}m-&{An+iKf2j|Irz~{eNi4%ePj7xyyRo~XZ*Ae(y!9N_?RDz zkNO}!C6D?fil6)$f|~e9yEB|_#HU@(rg!c9 z@g8@R7O|6dwQw#Q*?(yNtU;u&hwyR%UC!Qb4!R9~>(Kq)DTU_hz>wdiRx;y$D+T)(BhlhjN{R;4} z24s4qGm>-ZPj1=#bM9Lq@9wIt^NV11wj%s112z3~o~v6<+)=U0=l8ZNFlU!!cZPIn z;Hw1G!=4%-s0C!c zN~d^e{VBq`I;Q?t=GO^Fu5L}RyIGSH`=F-WU9$C+A7|YErdj@+zQPxm>h8!yvunwB zXChfnO+I+oTlh|ShBy3KKeY7c?#eqwaCVY2G(I_BFUpi)AB+Fqt;kz?^ z{pIf7(?L)lsMV9mzrWj`@a#sACv87SXWEbX*G27aZU90p|HFqbEGIl~d3T|i|Ipu= zkko#Zucb?RvHqv2-OUX_sL@61v^nhh-U(I*%5EF;jcDf|ziyjfr_g@NZWsB8Hvj)z zep-nz^gat%7U;oS{t9`jpOdJiHD#2c*R#Gc1Mz*=_cCgXZhFSm6Foc-3jC)+Wd*WP92B7 z&4A5;NLJjHb#74wku`hei`#$MWWImp*V$C{N3>@BljVkYC$s=T22e|9_WHMvsjnku z{gt~bkxGyiZ~w#xkG%!_xrBdACm z!@=E)t>E7UsM$YORJ*cR+jYu4_x9f7W+L2!+|hz`t>NEE5BHz5o1SsNUC`{3(HC8^ z!)>gG=VmGUwSj*}pjQ6H4K)wB^H+A=a?L~A%+qaz+#L@E+Jdhgka|gH@uO4A3%-Ah z`g0QHhxXU>l2O-IcPG#;?Muqf8C9;L7?kx#y{o=_(_9@G>+_e(?-3-l1LU%Qtf&9E z*=cHZ6Z^M5xg5TOkmZhOmp`Ar$l9G)PwYG?{-B@l$Coa`pa0;MV9F&XlCRZE8AUJ* zJ;#qw-GQdj6*X@13*H|^*6MPu&N<;yF430H_RFll&4njczQ4&wwE3Z)wYr?|pG?se z1ieTYVCcnZKSBQjYjqlT$7P6apy&8X%m2t@=T%YpZ;n4OeG{GaU+Q05P|Y5A=n2&1 zXAO9=YLe4!lJ~#3J73FJDXG5j#UvWQKSMv@}} zq99e0CFp>tU>t&qB!{44ZWOcPsF*N~an&`9iY_W@uMu5!$An0lF##e%g9O(#eAQj& z)T^qVwwv|)v;CvbtEzkJ-ntcEy$awD0vI@;hecO<&9v?2bSS=OYPnHOE~jU;AKMQr zUKK@XKb9L}&E+S3{GX2q`)h@Q0YD2W$3FEkjnUzHG6!4BkQW_SEh@SOrgv`JUu=Owk|-E!$Z ztIzpdT#E1%luR-FN5TJSJ6u1NMUQ3O+poQ8x!eA#)m6FnKODbX z=~9wf$@d_SdJ}#9dH1W^ez#A%JMBcoXMwzX>@M;8BTed`dfH0S-Ul z)C8?F< z_@8`4pP%Cwm%q8Z2>PA`JULzeNQXnd5@Qc&`Tc;2YrMPvx=4^`%|Gr=^5u7f{irw5 z*Pr8et6fo|+sOYQ|4)S?rvWXx%B%KRBf9)GdhdR>R=Rh$B@aW+vHUQd`|}}*>a)3j zciQQ8xPC70cHwq0_qwuX7q|S}ZNJs$KDHm@!8ZYD^&jPrE~qb;w(Yv%%cgI-?T1

ukH7v*m?gm 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�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 diff --git a/yarp/reaction/conf_sampling/rich_model.sav b/yarp/reaction/conf_sampling/rich_model.sav deleted file mode 100755 index 66266055dabf96ab7704f48ad1e39719980928d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948937 zcmdqK33wI7(gr+%03mFL5HSM6A#9N~>|yOD>;y3EJ4t{*!V*FN1qD5*h$W9VP*#rz>k*i+)d#2y&(=##O4EO%e|2*G652Q|YS9Mia@7*;$ zf$#^zj4;D|*2OHIH$OcsC#!vW*5dR9Gv=qaPno?iCw=jfymj?Qr)AArxL}Zl_Me}& zcyZ?J%=DbR2lB34mA5i4Ze4XjmboBp$-I>4ArOZmtUXqbFa$Vg8 znOP}|(-vgUPhXs3k>({;TIbV4MV4mgC55evF#~T*&zzI7BxQC^+RP&CE$p zTb!P!C23_Jf(1kMnKQFf(&lGpq-jLH6qqdKhV&fMLV4?|bZp=&4|jVml2&&KjW&57*TAsX9#6N+INyQS?d1V0KwrFez*>E0sT&uB&0%4n-pps*zDMqfSyp zhEM#jn^Y+yN|`95oY_MOveFiaG8Wbr6)bD%g6!q(O=a6JSUP`6 zW?D{8+VZ@0HB&_17G{YoEuFbU)XjBOEW*5X)v{(uk_SW{R_FB(n~}FBZ?w=oEUD`1 zyo@&Ms?1ulJUiWFsdRlp-rBolY~^)fEAmE;969VS@mPP7*pj>%Yp00{A3l1-m;oYX zt2Sne+8ts38ZyiLS<9>xGjkR$UYug#wM~4877&@8wj@JRX>1Y2MqRxnXMF-$!*_wt2(I zGsO#8DtXaX8|t63$3W zs+!S1DJ)|^g&CWzWh`U3y+9n;t0Mze z4UI&!=_MJW>&jSY(nL_dBszjDs|QoZ_SvR6eD0jK)-;iM0lKlw+TF6z}wA~ zmv*#e*w*aKQcg;^GjC}U7j4!ju(gT7s|}1?hS3(~TA8Z1VdPHzwTx}P^OmcRzjK)V zO4Z$rFT9r%O7(&G!bAMomuKu{+wUCpLg4AWEQ}b;__$Tv$as8W!L5d2b`1LSClDkP z1T-4a4-*EHxI|lUl2=a#7=#P7aL(hUY+LINI}^t5XFnm{0{d@){+C%5gx3bt)Qq3k z#K+(3IpVXzUVGUFoqysDJnWh54@Rziw{KO1*DB9n@~^73dFkUt|C|@Ghuy35uV2E$ z_C1qbW8iyzt06oBP}4vDrq{k_&98anbN{HlY^Bb>V-YvDUVL%zp@P1;?abd!``!P= ztwTOqd4!RkGMVf6qCSxmmdq;bTOH{}0#Z2&lsD=36C3i)_@eYPd)SSLmq5tJ<0gOa zn(e<8PApb-mTZj_e+{Hl6OihYKudnfsm?zS~SqUeXkKZq{`UI&nd6|Mdi?t9P2 z$$ms9$$N8SbMtvu(thma-<*r4XFYWRNk3iw%l}iCQ~s%*Nb*iRY*K!r7x^#VwtHpo zG20yVuNC)A_r_m(f3?bAZ{EwadMQ+Bz~g7$Ysrs>{-P_h9*r*k%eTH~zV^fC-u3)p zrshKyRhsC3B>z?5s}HF02V33n21~tv(JS$X-(*xzEwVs&Ze&S*xAKq8o_S4PvP|O-uR)GLH&coJ8|Eml0OCn%>b!C6DWW4u~N3V@#>#PZ7yQH5pMziR37$(Zw-z&MCz5P1r-@Gs@U;Zg>VN*6_;ajk zvzz|R+;P~^{=0b2KlPvX{x_C??J@t3gV`rEAaeIvi z4lZ#ddd3_k|>ts$@tpr&VV%cL@vmz6T_2|JCIL+wslV)-qQ-v{Xq(9@T{3pVGTVKIlU zzP9jG5gV$<7tB!d`y#v_Ad)pPo-n-*->|9Y%)IA|SuEl$5ESz#5Hf^wK&_qzHqW}i zX#B8^Ux7hNzFYZG{nzvolEV201i0~^9`bzUv=0y2=Wl!<_d(G_=-nSsE5G=(#%I{! ziB+H5y6q67^`#{1ruGlq!3R9*w2_Ygo0B;R@8FKkoC z=Thg+Iml>!Va4ZAwHsmJoG zsQljrKh^7D$cLtX{L1I*@WDnLq4=`G1S^R+k{3ztP z<-g?Q-aiV4>~xfW8@?O^E%i%dkRF0fEO+gbwfW}y)#tVzaLC^NxM+VM909(OfEwU; ze}0QO=_42t#- z{k_R|&VS>udTFq+2=e`)LeTfSzrPPfSXq48rP_$C2r^~Wgs<~&=m zH|xdXv7fSN#9KhLU+NIu>JN=Snq5T_u{<1#PDZ-Z^z`L#|7#CjU^{lKT^M)ATa5Z^ zD@xQ~WZ#$qKAImc8#vr#b%s{MPAH)f>|0FBPY&e{&WhHv22B$;+6! zHnCJCv6@?%$zLjA_DvE7QY2Kn>lT$^T)x2`KXH-74KWIu&-!c$jbsUP=h<;13b-GT z;)er|0Q5T_rSUL$)Ulc)TOLIdF=P0p0?z6qB*bfYCBMFdp%P zfp>GzQ~rp*6XFf|l)x^eCr3I)7tpl_>G|F$(-2NESTs6HXwp!BIcsQmgk=&3wo z5l*WQ~M_U2&eRk4|Y=hXDqj3sQksQgN3Vl4}F5vpFy6| zpUNv1d}Lp0zcMv*H(UN9dMYm;H%Eu1GcvBpXdwPxsnfw5eNH9)$4&=RHBSlB&eTS@ z6r`2&BgjY>4lJ`XGXEpLfQ-dSOEZ>~ANrOGH-MYhCh}`ThuqPySS3IKa=)A(#uK(L z`glmmA@*+!s#bJlF1Mf<7Kxrl&~Pil`cpEo;c>RN^!clDi*~Vvp>Q$BU%(~m=QJtP z_=qxp-Imjg7Kye^c0()@O)9b2^ESya4ErV(RqH5^{N*PpQpv%*DzvQzsO2MdaME#h zx?}pxo2Pxt(hzTf+)Qpk(R|(Xr$Y*|lT4<*bZ?c)2oOs;w|HDnu zn+AV>(6Pv9&ikR_)kHe9iLcoy{MOiSShp%g!Ka?v#b_~Wk!R21U^Cq0(;+j}bIDgz z9dc8>q{CvZndGk9P)W)uDP&0`(1MUJhP^rn_W^492NwQtf~9sE7vFm08;(s9VgD;U zwfBpZ45;Mg04jrkCLK@%N8K^b7m$LR&Za zv`Dqr-^QFjvcYolY63mt05v(jH@>LJ3(x=Z`}G?go2$QY{BHWwCX>DYj#Y=;Zv0Zd;jmvLmH+EN(3%KC zuyDYq$JnzqdmnkU$zDeD3mGl?-~X!oqOLgq_VyF24!PSx-wuFU{m-7$;urSi`Z2@i z7kq2qq!0F2^4o#0eR=-mcdDFa^ItgHWa|2Db|*JOIO(9FdbK}|k5Wv6Xa0)jKVIci z|7&kQV*UvIJ0jnc0k!&@d}doMzI{`0PSe~&tg9Abgx{g`?*u;k{Kg6_Ec)kpmeKi> ztzW-;m>mP11u{ZT0-X`w7f>s|+`WICWgo8j?!g~_KgeF!`Ng&y<-ZHUy8~+dXF>G= zRk*+Y!hTPm-pl@}^KZ^k`R|JGZh)Hn{8rmft4(s6XG=1%N$#=yD{|5x`+KWD<;NfA zAveu$H2rh8mYrdxk3QGAd)@EYYCZqKMN0o32=57~*)My4Y&9Oe>6(}~2k&FqI)C8; zWj}BF8wSnOtz>vVb;#|;zkZKz#M(~}uvxnNK&F!48{vHbHT_dR$g06-d4&SU;*{IT~RQC<$Yv#(ApWt4yW z_|cKncAY=c{7I|VBB#+;e8_DdKjSJqdWI^@>Mxn#xv zTwn?RY`(c~y(11MwXUA^r$b8n_}$F&AvfjUS$-8Aa%<)1PnvU#MSa}is@G2!Ga4tX z^n#Pr{Dt-fMnjO6|J0F#e`nVA!%ce}>!;8m-AM3_0@UOiwU-}ZbjTKkcnJom^~?1L zPX^TLPwBhM>nSIRS~h;M|AmI`wf@-WuU*w4w;TU{>m`M69P6J(yz>>wFMr7H^^lvg zt(A)iimvdGTeDyA^qy**=Kr+LlIe}$l&)L;C0+UbKRV!(J6rQ0W~`AFBUIZC4M#Ghxz;LPHsG1 zwV$crn+d3mf4+D9KHhfj?dy*%-py#9X_4g%Cx7IB8u+FIYM`L+z)OtAe_Q+pC+I|1g?MEE_S6>b`*YyL{ zf4ltFp85TC`#!n%!T0U$PdI5`f&$jT?IVA4#2WH0N~XT^%hghB?h*;fJ0s8^>huDn z)9M7^2A&9eeBmtM#82J?J{g`*@%<#O9ore^lbt5R#dem7hEB`H_MrI)Uw8`|q!*=c z$Z+!*$9j4IlD?$BXy&%31#rX%rvN8D2Yu>9dwk$liTiT^lO^QiB@7I=LnBe*2J)l4 z8(<%G3`TbC1bWiHJ#YgL(NTO9;wfAV3)V9f5cv%Z1`hf_q8(RWDF&WsM|^YO6yFVa z3?Ri5PWli%@^6s+DW3EvIwyZ)q|X6~j{zsX1V=o{qx4~~Wj9MYzu3MppNz#48mOlc z*%GIEQ7~WP%G-z16WzDM}D~37qF_#L;T++m)ClTk08+zggn)cPs~TB%k7`J;^Ir{$ua0sg-9e{=eb9wes)0w^qV?ODsugw%rq! ztPCiC?}mowS!DOOF4r1&n4Kd+GrqL^6(#k+r_FvX?}KBVzIp4@wR>5F&i~3PF3J0G zk{1Pj4e)EDerMa>tTpJuAD^%RT7(gprB?4Gk9PMeh3JBJoc@a~`{A!kZ$Z0w-;(znr z%FXI0ZU)@Y3Yg}KhNFywpFF-gP_lM+bm2r%0KnX{__0!ANDz}u4titR+5S7*e4JF7y3u>;U4WzyO%UhN%>;h z3I15<-3(B(Q{f%=9cRP8xct_I-*&K0h_^uM6vgjWe$@V}>ilB5M^}`%@dw`9bm+b_ zTUlG3zht74-vZ&S^?3Qa^w-DFu^&73dH=>$M_7s;pP!-lTOzy_pjQ5={spBhf8Q_v zTKQKoqxxZy1+Q29Zu*n=jh3!RqQ3Ipii6zi0BIg1(Bw89i`nbv-dgd2iYKPjN*K2;J%r^?&yEBbM(T`Jon(1C3Ggsa@Mn$0SwBwl{xf zWIq}wWR%zz@F<_WN3?PkNyIAoU7%49Kn)~cGvXY(>+{-U9zOI@`O|mE?+S(ljS)YC zMODu!?-QEeT5)2TO7^FE)g4So*2GGu{w8+cam5+U&n16%#qU;rNY=3DzrDJm#EqZ4 zXYBn)$a~0*pX6)#GJ`yqAMxA9FERggUQse1gj)MA{VAgsFWmjn?Dsz{W+y2j6W+B# z*{?UkuLsoh%>8Fpb$)01k?#&%DrTP{-U7+Xl>U7XJ`zx~Q{l6_O4<0^o_yws4-PU+ zgd~;NUZnD;b=hF>Yx4777*v(tQ~B4?Qx@-MB*!A-lNCRu%fYXWpV^OZyTGzXzEXek zp|9;%#07^b{k@i-eSIUgqo8O%$Q=Nv**`w1Y9*e(YEIglefB!Mw>hT)ArXB20X6$2 zznyVPU9n=T|7zRZeg2PRNnN1Adknw4=D!*xWWm^S-dlrg@fMQH{&9+pwk9Bj_R}Nt zWl7l2t9*O^+nnFyk)Qg1yZ+6U_tp^TJpxd-|EHJEveyr8tUK%4qVnr+$R7&6VSorW zvB0=sH9ma*XP005vzXcTXM+7b=Re2lz<1eCzr_0CDC8vp4hPgg{FLUx{)yM!`Ahrn z?CTHH`w$h?&Hglh)Y_F05zVtb^1s=?WP7K$Pwn3K;_Z{qp{SdD%8$ML;?xx-Uir0h z5lP1IJm{Yc0ptavm4D#1Dc`fytmj{t_gE3Tixe?o>LO*oQ3xmRAtY;tmeyNUjR*1{ z`C$3DZ|zsSl#EvMuhHNi1E|@#wCPRfnfdPBP0@$#7%mGN4v}?yA@FLsmNMkC?F$ zuh{#)U_a08pW2_j{)Y1vkmr_vklEk94RF315mNzY0&4o_w;pz!eLkSheg6_y%*>{Q zOqiUh^q+?C8GuwT1R7k^y@v8Wv5%jfbD~(sT}TSMLvcd(hs0(=n4_P`%1Tf?7LE-oE|=AY>7^{+jraJTZO{YyK4BhUO5jbC2nyYb(Mgq8u4T?Oj9_M2M# zkHOFWbN-p)a`P9j@`+BXmuAwO!k6O*jmLWVrxaaK`_K0AON@Wuy9w}SKnfRV;Ek4b zxD4L!c>7cAUxD7O{K)&)UVg2RuKW7&?XvdsUN~CpczdO(XMTEnL$iy}ys_f1$a`;P z$a}Al#*Wn0lFh$V!XY;UPn9q@Lqemigt>%McSYV6hKx_8_?8lnCp=c-;wC%8di;Q5 z*`z zC&q!EJGV4GF*8JanMBpl6`vtXMiNfz(d_A;>lZyyrJkWEb+3LWEcVn zJ(c$ol{4v&`m5{#{UJ4UeCJ3{(MLeeKtSNio5_h&ekngBh?*(IQ@A11Rmb26FU^wS z{<(l+nP5JFIe@TpV2s4ct5xA7Z!qEoul01{5>h-(zo@)o5l^_J4*jKgvP(zM6Ge02 z6p!Ie<&X5Haw2`mUc^W8DSZluy;S`rK9U~?`BeTCo-V@!QzQ(I1Rd26s-MpOjr6B_ zN9iVjpY(|(+>npb3*pqipgk$?GpY|14_quOk&p!WG|ild@L0f3fMhSi$zB90eWjNn zAF>z46FsE|GU^{x{USNgw*>W&JL;oB>62WH4=Nn|>TbSdnIFQ9VG@TLhIw3XKAh?` z_4CxPQuz?1{7`uTSM8U|kJ6#?Abl-q;t!=q@no+GaCIq+GaZz_iYI#z9s2Wf-jq}x z;8*ouY`^_CcfZws@M8P_8{UHp{?2=F0lWtr8V1ec+M~oOQOTK=<+d>X=${=fERQ_G zP7|RS|K`11lC|bU-$Vx3cF9`q_?hir_Fc`7AK1sT5O0Cte9Rt0cfa`%udROKwzR** z{&*v|^qTwk*zfN0)4PA651iF1&u^@{_c+`0Qbeb#j(%;wpgeUPx}kokcy9c3L3I^M$b!u{p>F&{NA(z57{9#9N?5cu!Vv_nT&C+Xt%Z>-<463|-;fZ<<|2N->=31MSL?_nYBr-`wO=|DpBEB8gaTr6c~h@!x5AZxlQFk8X-z3_;e@ z2vF1CKkigb{$s*DM-%S(#D4dRk;p;rDxc`6pSEx@jqoGlTENDDT0OHqaF=j&a`P8A z7TUdc&1v}+-uIdb z1V)y-`;FSSX8+W=8|(1;>xP{Q@3Mo1)?#3J1m<>e=b3Ges9j|UGNn(~o-_d3v5 zoxU^!UvofBzAwCWEj9kxy${6QOCWT!ACfhy(GLr@xx&*M=jnxU#r*d6Bc`n$^(XHy zJAWfD-h(9>)5=)fC#Qeng@^3z$NWH}NBLwnyL>U-27hZ1v;oxWUrCkRGPYrG=7T#A z7CCmG#WLs$=rF!#vOMl{&?__7YI-j1OgA9W`BP2 z{+5F)ir9@h|K>I7^t2-wx&dnPivw` zsYNEdKgfPPz}FK{lb;_P8O~4q(R)B(!3U21TWkw>v_I*ur7I+bEAK(C_Oq|A#M?7S zus8JX1E}RczV75oeD@m<-Z-h(5xe(pV5n#Pkt}5wXvllEFG9!*kmvAR-es^-oH03?$rayVV*xOH2PUCrh$Q=Zzm0#(_l5idq_(#%F0x97zEfk*i?{?Pi!5)({RcfYym zFV!l4_vCAkKMZim@@V|#u4@gY`Ci!e?EILM78{Fq1q8XWzPi!7M6 zx?91L@7NSA-0)?n@qakN#{g<#N=|)Kl_zJOpHX+sw`{!5Z+_qtgd-5145-zAfAFPW z*+ZWlSoi9`_S?O8OG5Q$B>1i`&tKT$hBB7$P`{1w=N$7NBeec;vp=o>wRx40)KYm5 zy75CT$NaaYy8CSu2u1^qZ^lqUCKPXPdYylh_r7iYFZw^PcfZm2t?MOj zoUhP(P-{QN?)0;4R>$6Lw)FqH+}lf3PsSl%R6jI+%lj<+efLBJm;Su z82s+8F?;Oomk;&qJxFG^wO=uQdG#KY{6&rr%=?x1pj-W+`J=u5wNiJ#O@@ND`H2kk z`Tn}ZhTnF}r=zMBu~#S~Cfp%D&ub$l4ve@GAYCn7b9l_6`LAdeL+gG;rpV+?;d{x3C zjR-e>Du28DaQ@Jxh_SbQ`_*|jewf8Reu}rp_@AFyZ|_#*J+wgc9-_AY${pNF&Ub@^ z!E_0Y;S#F5wE9UrRV>r2Cr(1;Ez;6~$4Z>M8I*Gvowi1Rz6a>&^cCR-@X+b5A)hGF zM*|{QbS?7NKtM{5=z#|l5ih9?7!n z{#2fnuUODgeKYWYp1dr$Se}}X@}5EaQm6mjWxT?j>CyDOlcZB#C8Up;xcS6!3#fR~ zQ*@8k6ARc#Li#eG*nT&xhwM-FMQlr058{<~Rv#Iz@W^rHF%oV?kno+xj+ z=2EV*4{&o^$M#UVR9~q+qdelpHm3QcrbjQd9>hsLGY#vZ@<2S@ zt;nZvD_XqtZo$BK36*yY*^~5jwl}9eW5G}ML;jRKsQsY+T0+Gi)n8IPML@2Kr}{1(n(f)Mf7ppX53}Eh z(2U=FFPCH??-`Ml^=Pxd!jB^_vUS-V?z`>xVzvSC7ATF8u67vbfuY%Yw+1S zHvLg}-w~D?3O9_xIaob09*%HY-4PVQsb}V&WL2Bp^k?Rd!)&U~@0-IV+T5Il*`7av zfjmgQ`_*)Q<)qb_S4B9*YxysDsK-x?Zf+l^^Q&o7dsq3yrrAXVg{nWzDrt2^_7FsY zjpxs@v(}e84ze+nkO|ezhrP;sW-IuHIyJwzz z?d$svI98uxIQ8f~L+}1j{gi4@x7x_H{@s(F+{mh?M`a;<14!V&Mt=)?rPDp$i90Q z9HYLR=v9Av{}IDWzp7@fzG+v#0rb%FnS6iT53FbM~R6i^-(|dDI|5@gjJN@8mTAn}uhTCg#x;ujEsU#EqPmhF__a?kB z*G>P5cE7ytoPyfM}BW&Jh z=F2E(=x+9--G5Clp{bb0gTEE@?hUBblY-1!OW5l-B`xaR>mZv7dW$UePQ@PwKJvoQ z__J3n+{h{otF&$U@Q2f^+ytN)LfBO&pPbtfex^(2V9Y-9exBV5rTmC6o zd;Z1z1^H-F@KPQSE#2~F#J=0~;+tz1P=tm2OcK}SH1F8{H|K4T>hC#=5vt&i=eN5RRS=T9V` z=9d<3E+b*+P9W&~H}YTo=5zMulkdG$?X?~DFTVxE_yK-5`_t*OR<1%)O~u~@a(e-y zT9{bLr=LagS<%Vu4xIhOK7QnjFV7;uuHZ`m)WP~0p)aS<`bNf!{ulh+z(A+_n*897 z!x5akA8CFo$;FpzJm#Og*J*xk@tfZ39{DTkKZ(Bw^zR9%)zje0UgF(by!&4r@e;K5 ztUr~Xeg4+yioItvy@U!O?-jTDLu%Xl4|CfR_Ui)znxARw$LzDSi`bHef307C;Sjq< zD_CRyD#hXAXNDn0vs3cB zpM1|AT@fC$>gPl3FXA*|?|>@5AqXD|sI`;)lVbfv`w#Z|*G|5})1CO>}bLv{J(jhhb)nX`x8tIO9; z|J~$QeW=fd+wS|;es>nn@$5ZAZx7k#FGjNpy=OEv`QR7NFuw8aC&nBuwtu-+yL;A6 zf0U7|v?0DdM ziL29|Sm2;Hl7Jg{XnT<2ajHP?@)}&yYuj)ZqqxlrQQ-^5av^(D%xJ4}f!~&;y+RdkUq(i64>fPhMl23i^3FFSZETm86L*+^KAl#8oaH-_WN57PsC2>yW zMEuYv9`VLV@GX!qK>ZQP2R#?dPV1QfNcEoT*LWEo1f=q(mrYgq4*BoieILB%k-`5r zPVbig-Ra$OoZg8o(=cgIBN}KaErZ zO%9Iw%rX$oBMFR z%WTN`i_uRFJ>s}|ICS$J&8lkZ>C4}x-5(|X?3FM zZ@qg=t0%jD7=DFQgPZ+m_gPCIq z)ekAIzGr?(U;gGv8SZ}iNV_joPLi+P70Ndps}~wF++MuZ{g zUv=>`OStyqHh;A~$VO=eW2{)sCD~B*?t5&AkA4-5y#F+7v}^b09eEL(M4={(7qjQ7 zopL@K{A1rJgf|4#`j6y$ed6@8NrRvJ&pg7$AzlJ;cg4@ceYqz)udRo0YF}DD{Zk&e z%p#|khLzMgXg@vX;>!v3_K!{6nN}kj{8s~N{P_brA7{Tkw`ToqJNGf$?p&()?)CY| z%1>Vsc1Q*e2BIKN=s9DCTl`xg|uf5jbtm^^U#dbjd>Z|(bh#B|5*iMYEW z;=YXTg}oLxbmOOY@9IK72?p>7hj*R6{FTXPV-S7~pqBrF)8Qx7&Ht27i_ARzDHyo$ zx5ksw-Q<(+DYb8lU-+KB@YI^>i<>7ecjKr2gZc@nW@oUi*COAL#VX4}ML5-=lGn z751NDUB^9g-TBB5-1JAXhRuFr_w%-1Gk!?_XuGTZD?ELGqF&|O%fGGX)%T_`zkPNo ze3#?h<7SG#IWpL*y!~=VRjS3e*Pig?@ecdhWio^b#WIIh|1A*S2~aD)k~@uGSfh_W z|6t_nhwSfOOkAw^TY|40U?o5Sf=>r)^U*iF_u)OhefD<;3Kl5-R-kVUsL9W6pMHj= z{`AsmU(Y>^=4TdJNoe||@Fr)dQOol6dO1CZ2*YY2H^OiGgP}cUJ9)I(Yef}ig9ioY=oBpJ>W)~6E zNZH?wfBf5NpPe+mvw!znIC0YMdwU4z2&lE+)Mu})$>V-%cZ+|^5&M_-c<9SJ9l#e4 zsOf3#zMh@ia>arn2kr0fa`EmNDw>=AR0NJx^as?+Ke+6*lkEPs zGp5&gzmTOO-U7Z%Wk2WXoyI?L9#AN4!>k z$@D_y7}HV{|+RSJG~nZ#Wg$ejsAuDpp`9Cs&)^%Dr)>{rqH;S%Jz@q^6a zeHgD!@7(zRzW)kW@4ioffD958g4xX*o?&CdAHDyPpNiSCP`KEc6nBTB|CosIIe?n| z^6S-&!y!d0@e*2fl#W5lA)4onB__cmEwc4FE`LnH`eyZ&q`|MvHH@|!V!pY#9 z0;u=D$sG@}7dvjvNUpxa?)|IX9pP#}cn@jm3P}yheL2T=x+`_b{iVt=mi%YKP6O|L z+unbh#}QZ9|I$92Ou85U9fqEce5U|vpk(a6JN8cod)B|A{gY#mKNIq10cz!3 z@M6y*=DYQDi-rFVe0wQ%6r#7{}J;~ z(7V}>)_?Z(M@tTN!;PQlv~f`ciS;XfFa-V6vP;=Z_bp2q)NYUc%g_EXir-B>C1;<%^iuqbK|tf1 zR{!E_O%`9s?78#B*CQPJKjz&#;9CN?6p+FNTC!+QWlr8pw*F5$mUq*i-k!48pV0Zw z4Ul_ddHL3tqyFD1|MGX&K%D3LtF$5?819T^x8@2i{!b^lrKl3%oI)0T>0?2$1CYfJZoB z8{p&(V&EZq!eQPQZ;|w-vzz&(PLa?U1xPrSLv%MlAW_DPE7}d~=?yppusa~^Vsr+c z2ncQ9Q|~c$A;=-tkL0g{UX~ zREcNLl`t?-!h+cn(%m7cGk_;b=${H4^+mlqAB%9(8^Zzbhwykn0}twlijS4?3P<`1 zr~Gu1bmT4N^p->Fq2?&Ib*yI~AmND;SM{ItP5>Rrqxwtrne0vFXyBpYkK!w+zwzlv zAHy|$QHSm#P~KpaF3BNC^^?jw0_l;y#7A@#kNTC2ayL*O%Da&2^B|-LTz$ca(k1&) zd?M%(FNP8Mi|j#mC4H&CAe`Di_|-5%{SDP~)L+%!kRNenqs7T*NT|F9#d6kqsQgH8 z!jYaN5`U?FQatHL=}+etDS0>2T??cyA1~uodrt;V^#S@S{jNv6m8$sD3pmOvK<$Rg zFBb8F)Ovby3CX^cUuS`MYq3I{pQ?h3q_^7^6 z`c9nWQ2Hc~!efyR#Z&o@L^#PMJAzO39~4jZjc~G$&yhaKCwZhV(pAGf+3ml)yJE|x ze%Ji}%lj<`mI^0}iP>Z2f0VHITDCslZ`Kj^vo@_X^6rKC<9H>|UmfD3Uwm}C-`SRu ztG?|0Q6U>fp(c!S+-d#mrh?3g`^(<|eh=JU*Vf4$EBD4#NUYL>m#-4(SUSEEagTTzFT_fK?4 zFY!y9o?3V`uZHjlK(dEG{Vl&PV--_B;;!#m=S$O zeRuS4S1)2(ViPV9r+i9J%a;g><1)Mpr*vx)VF(s%&OM{vog(|lXzC8!?_Qwfv~m$a z)J?SYtiOHsPx>di^3&ZXc7E!{+N--O>O)bj{u@PSYj9&$_@{mL1?}&iin}``9aE=3 zSN#qDvKz$RFSxm{AsNDifnne;RqrH6Azmw|{C*#YPH(Q!`Hi7G?CudiocpS6l-Kg7 z_H892hUJrA-O(~~^@Mr#kgmObSb_0X#Od{p3y+iM;4pcAW!LN@$AKqNbUK}qj zKAC@z-Gg`wBn$7OCoUu=wSMTgMhL&IJb(U27k*~%ow@mk&Od%p_!@V!s5#O@WiUmZQXXre)GQ3jT_V7dgRCx#vHfuugH61 z=cZ?86{MXR;>HiP3>v2-PSY~Ohy_8j^7BZ#jjr0a_6VhQ@j0WdF;+l-skr5t0kBDC{?Fg)a>5+ zi%;$P=L_#8D}hqwRo7M~sQ)dje()Ug-Tg>|oohGQPhZ6874dtmzdk)>V+faMDQk!D z_O^Hn@%>R+ro4yk^N)^PlDpfF?636;g0-e+eksR!`a$i_T|Vvp+RLw*l22ZH2_z^4 zOU7R+WmD@-d?|lPF(W!FT759NRLx5|gHNkx$!$6ov)2!9tUK%4BD?opa447L?)oEH zI;;d5+Lq{okgkAQ`}L<>Jjtm3()>u04dN1dmv6TpEtgAKH^}V{sLAIO!_F`&|2l}5 zpf{J$T|S-OX?7K?tv&P8mmeafK>Vfob1CbAkiNEf3*nDX{1wCce*4=$;={7k{(6G1 z7oetR>ihM|*zT;<`mg-+J^x77;eFGW%kWax8w7m-HT$RDH0+%6ezc80 zVjI${d^$a{kAK%G`Cj`Ud;6#D3-|m}{nhd%a#~->#}DIr5o$gfU2=zCFR*9xs>U?Xr%tOE5vA6u)X%LhMzW(L;ORt$)l^-5{ zrt;CKPwexbKq3dZ>-wA8kKKMX)w*W@5*kPehG1@!nm@A_|DAuX;jyih7;f@u{-@Ook#r-z8*<$E$$LxdR|RJ?<^7h7 zbfy7n`e#Q?IKysB>CoewpNm-z;w>PKk?8G@Q3xLosM+7Re7ri3emcJY)NREqN#{?V zq3k~z;o|_c{v$rAY9%i3{@h;P`vHVwz&939lb^aKu?n|>1K%=R|7~vnUs3s&_x`v9 zd2aRxnPdGE=h^#>`0ee#eL3&9$wU}}xxfC;F}C~0uuVDnhwX3gl}uIbZzAX?0qXWM zz1QgOD|`LzsrbF+zr6jzA;=rQWBw|Rg;qe{DS%S}wRRF*@Z?37JN&i6?xTts?GIRF z>iEWe|CZjKu8s69Anq<~?@|BwOIa`Kj6?&xsYVrf)g4MVcEZ%-;gm?*tc$Qz0_i!2XpMi8|0&4wF z$$`e_*bQ}#r)>D*Fr$4Yi!3O-e?8`Z!>e1qIC#?W8@4ZO;bMPYr5ZN-Z_#0lX$rHAQC2m}F zpxoPYAa|WV5nVO%!t ze{S!0Yx1`zPJMQL<6=hZGm9*BG6%V5{k48Uu+p)lVa!KD3jwuq&iAjV%S#@f{6qEb zMQWXDk(EqT`Y!-q7N7=v>%Y3dhDYW#T(s%1+NZGM{o@tCTlv$MoBUeBMu}+uc-;8u z?z9@jV8PHarW-%4AMEAdl2dYv@M8%DgkWHEuXC(#zwlFodVkAkeQ!kv#Q1|J2XHZ< zX8*#IooZBYcbvGp7WA(AuQ4x=`=;F8abWjce>A-WYZNDbYS%X)Kx_ZG@9#Uq=*xGl ziNS>GQXcp5ht`i;yAlaB=4LYHbE5>tGC+;4q`_mqu&MQ%$#@QO&-u6S zUwE%S&wf8}b>eMbGCv74Vg4vi=#_ZC4ZlOO<=!BnFAd4`aNyk~PTm{J+a^?OhV}H4 zbQG_=gQ$BT?~n-4B>)m02i(9zIK@*q;S^8dlzuF?Le$+neu;|@99rRq6OTqbd0|K@ zLtV;(cy&xkcnhRQ^aM%2krl)nGCU%H_@xrY0H$V3JawLg0aP#FEa1oodFPqV`_@Cl z2tnFbYJ_;Q58-VPF1bU;uq_?ou$Rg|@)sNpx-Ni(qg*&uODDe%^kgT*t8N(jsXO8f z&<_DL@KF9Jp7KYyGk;OwNBQv)5~q5hzU0F}7wQ(IK;(<=nv;RzZ#?KJp72*^QTF^KsxwQPt=!>A`spWkod`-gp+*? zJe?i%$PYy;?`mp!!d;8`Ym!q(k+GaOyt{`2@#- zj>@0nAt!$<;$s0xjv*hFpVY%bWTRT%ZN@E?!`HSt*k~NGf8fh_^s$ z2KZZWl2;4yl&(NazKaa!^AG+IIkey)>uckm&Lw)8(X_WF;we7@4gR_?j7Ja1&)U|x z*nWveU^wJQD>pd%GQ&zNFulz&b&N#$lVVi62a*Mx8$ zcy+_ImAb#p$Uc%x)c>aje!6zzo=V>AU%vbv`l5cbGjGNBapNzIn|kloi!a(=A~go^ zwX27=-*x@EcsG7>qqQ$1J8lR#kvCTj?ewf8!zX-nULc((&P5I&0t3lAXy!`@W z)>Pu7=RAC2*!RWuZP--dMp7@(^31#OU&Mf~Aqfh>lIw&U7cIky&Wa8W=f-@-fkRp)e!Zfk$$JmB>QhSu1=x2{|MssEsUR*GrChh2)?;p;h~w;MlY z$7X-AeyH@wZ8!h8tH**yARu=(t^E|tIrN75gaM5Y7I{F-%U-*_^^EJ;Hm~wEyNDzj z@vn}3^>x9n1*LBMvi&+fAs6Vv7wzx(z@YCN?sDU&{8K+G@pyj6C*i}dn{grB4}zwE znw{?|X?B!l)cBz4`(;P$3vRzypPcyUw>LjNndeo$J^z?@37N5w+W}CcOD_DRCcov& zJAY12J>nRD$&FVW=z*^#pw@o`zZzYc=j?s##=lnWx4(p}=98tYIrv(Xmv6jiROefo zwL9^Boo&k9*CG>dtw=fE`#-z=yI&!H`A?XU{8rFA4p6JV@yExXWibsG{{B$z5&I>S z2G-NUjlpaA+2<$CxfEBbF4t-c`P%rA-=_L`Ie+=PV-$-%IPMTew6^)%JQf#A{-#*I?)qlsyq| z0s2C*(7y}9yO!tAufMt~FIsf>JwKK?%fE-x->v;rIR0Dm-0feH8-rB0RDGJ1Lw^le zuMrJ6xAnwVFK=bkzgqEplF~l`41F|4{N&sFoM(lPZded^_$~V}PAc{}h5dSfxcA@i zKbly^eoVOMXu>_8*!xc-QOT!r=>>kR|0t<4`64TPma5qgzR^J`0h z`qH&~{;B`4_y4qhapy0yKEZm#aS3ZH?n6N*BFFs!wfgzW<=@>${bI zMVGiNhoRm0p_XAA|HRwk+29`mf@DCg{Fbe%=i|9QZ`r-&#qX56vqk0?muP{0B;fUc zTK)4s^}9vYu+~C~!A;z%HAH@1? z78Do-g3*9l`AvK$?Et#962~P*ah~01NWRvtM3A`L1@hhWr}bx5O2~qZc>(yxB76#< zX8+tHyU(!c-)DdO*6`hGoU_R2TS)>L2fm4bnw|x}R<6a{zIkh#4gEj1@1KZol#ml0tFkADI28m!0sBU!^f{`Kcgps1VuB!77~wtC>71Obx) zHT|=1`m;JG{s_cNAjni=lV~tA#3$YBoW28do2G)M+{A9CI zjV+j@+~C~oN0$I=`4aLQl)D6O8S<~$uVmQXGIqF0r+*jiEV8@N<_k9{=syE|3jnqH zV>~sYCO>=c?D{9}KFDaCv&fQXDErL>-)ul_|Dv$TzLRXg^iNBh?J2guMrEGoK+r7k zr2}g6{mWje!k5I<>d-oRw`2X&of|EFvWmpbet*Az)rdo!;l@vNTE4_<$h7`6j5#34 z0MyEEKaZ=|5bXW0_t!}25@Jm+A*nfs zIM4N0(@U`W6n_p9x)G4-l|ZdeSZ@3Fp+TLt2JM%~1;s~HK))Dp37{q?{%CsWHAvh1 zQ=DTHzt{4&)n6l#L!7Y`KW+fj`f1;US8A$HFx$pogU+wq>p!`n*C2r=yn^~m^LI@z zkpQh<-Q`QMM10T;iDU{JVer-mA#Ie;{6C1-a+?V_$!U>hH}+ z=ngZwy)LmK zEtXb#G~x@#Ybdn;Wf-f#a2uf3{){d+U0`>8UVF^Lhd#3J{|NsXulc7>09V%(GmKW8 zP_Oy7_kS%t^Z&Q)huoO$^|y_ZUy&Q=>d+;K$)tPU9g>ZvO_z||{nRCZ zi85S$0yDvZlQ|+}IJsStyN+_VA~zcY{JlXBHzRedZs4Kx$Zd(jTT4FW1{CMOVM+H4teCxCAKLgUkff_G@!(kJ0)GBMSO%CV!CHNu$yvMib8mdgxat! z=}BHk(8nKzN>_RMBoM< z(hu?K5;v;G)SZw$h%c7QUliXMco#s}O$-&1j_Ow@iK}TY%D?m$8D5epA${^RFiqmh zjhOU|li}*EZ?ZR)Kgsihe*)-%tM&u=s{O!j3a9$dz;EE8^r`+)IP$CNKjNu86&dMI z{A54qNe|MG!U5GKk<|W&fIkk9^aZ_nyPEaH0#ZEe8Az4k9CoAIBmyWGx}=fnrRt9; zzmP-IZ`Hmmq2f=hOkYe-1tK10Uv8lar{hZ*YA(m@@!fz^JhgvH57QSKr_^#H7JQT* z;bebG5BUis+v&@>p(i4q_>|rfZ>b_DTFSo>M&Khx)&W|IUqd_TJJ~|G69M|CipYbNmuTBp}L27K~>ao^W$0^%*eG5m?@OZw94oYE6?h09nO%Q^7O zn!i@dce}uX3m;iCC+jQ6?$cP|J$W=O zb=mC8QQ)fwsMR0;+J+a@C%l^2(ii+Edz37R=yb`g{rzz2>6M{aQvYJ%Vp$V?)0Q?j>@DzoiCww&Gy0ic*WA~nQhf*zU8(hG<(FT3*7uA) z0eltWEg*JJ!jfN}KR34R7gr-Z22kVYlZI?!!Dagf-g?XP_Wbif+?dy(=fk_|)^y81 zc`sDe<%{LOo$K2tzwy%2XWaOSjoOKYi{0yCuf&!<(B#2>Zu}Ls|CNizC62ry;&V5C zDZl*gTWYVn-gx$=*s?}YumzxIzx?=l-!rOM$b^YXb$-r$jwVBW8^(y z^PV$$^00N^-8g7xuz?>8O#!ufntIb5@d=r-_VZpiT5KOb3^5&_xqDQ~g-2$3)n7|j zNQzLWSFw=Wti1gE^oMJ4I{l&XO_GV}A_jUl`E+`%m8(div6An`PxiC(H}K4lY&kA* zjlE)iyZu6+&}{_)g8=pZ^VN+PSf_o%-cLVS#2(frMuzV$C7;HH>%gzgQ*sYB5TBm< zvE7TUI*3mQ>-={FJlmi0PxAzci)|02*BS&i?>ZTlJ@AtsS>D=aefR$JFsrJ|j|s_d z1OB#v8ku#8DZPDD8}Sw}mvHFXIMjdKM!3^?-V2NaeMiRPf%T9{%L+H#kBU!Pu>Ie z_Ak7jA-^m1?gpskKfdUZNHu@A+g~hOuTX!GLrO@#TlrJ}X&=8^DESFUkpXIQvR7Z_ z&RJFcz>1Fh4(o=LC-_pi*Dr?^Z!tH-SJfw+5dtl0Vx3@(!@t-p@)uu+#$3` zGZZO`5J0Mcp(!Hh14UUI(N#oTG3r{^5*1x^QJ;0ON2E&%Ryv{TD(G+So$q(v%!~Qm zm-Vl`pHFh$%$zgl%$ahhoO|Zxho1dgkIl9d=&Xrx%b&Eo{rg|c$+w+YtXL)v=v668A&(5V0L zMRmS+e<`=?;=vOO-Q`I4LF(*3$-hYnCytjRf1~~qU-_hp*mz<`rC**abeEX?i=)<4 zgAqRh(2zf?>RE@};tSeM7Rb!Lh87deYiXWFU zA`0`4KfBj0b^Z;!`0B6Z{N=tl=Rc*j-_opC4gEP4mmhHZF1%<)`oj_137faw9w&dl zn9>Pj#i(B7uhh7$S4qZw1{Lm6!g_Ty5RLYeRjK~Ddi}xqiH}x9C+bn_Rkjao^R#iGn*eBlqHSLuaPQ4|GHv~y7$?%sKwbVTK`w2KVRXk zm@B{|vi{@jzoj`rq!Y)W@=t%R`dudVLTObvtDJesPN88LPZzY*5C5( zJX+6Q1-dDKM*Zb(pLjq!;pP6kkLK-v#%aBZY&l&-FhMXrsQes%?fP#OH+^aQALL(} z^~|)W^-LDu{o)qIHs@NfpAML=U}OryJrPbrI7LBy?BU?)5R)#|>OV<auDW#&TQGrgAz>+(|$^6!T9 zSbZ_v8R?FC!jMBS|E5Ui^q=Kry9J%LmSH;emJE8zrS$_shLOHwp281LQZQ$(f?|S# zbnZoK6t>@Rno6gWEpNNadoocD`SFY&_Ix?}5A@$N??EFa6y zF!ZVW56eqEFdS2#v^L3^i2S7t{u2@kj8!lvQ$at{``1K;Ngo-n!aSx8k5OTL_ggx` z$$-dTTctUOkCm6s{i%makE8+b5(TLbTE|8CIqE_C(&=oE7>^vbKcMR{$1Cu0 zE>irQet^)A#%FmOBAsED5BW#O8{n~hvcI659G`Um<~Yp!lR+PozqW>9I@?d3KWANW zeVyca{~Oj7H~*1!#m%s;2sxZ&Icbi1j8#D9**6|@-#F9w`a2GN?VdKKJx)Tl@UTta zU=zNl(DPKq|^p;e{y-cn7~*c%H7#AUXe-pR5sCW5;VIiZFflJ6Z~y9#jeF49@MY( zPTDuv1!lVXo&8F)1MZeiN7nQiy3PI4O#gYYP{EMi<*JSJ@=?6d&C)koM&hzJYJ9O< z`!Mj6rHkZp9bYb2aPye&D+8bMu|B-$$t_N~$EuCJe#t+#>Z{0nbop&-xli}D=uqy& zmKjrN;;=eqJ@^hVw#wd1yqu=Foqb6;Nj29vcNvwkMtJKPvN^ZAKo&p4(RFv8vVDp z(Ux-hiV~~-~964$?oeb&PRAMkR|M&iQI?_g9zX1kuyQy#0P@ zCUy^ZqW#IO-j-`FF#jVJoeVk6@Aa%rhQ2HXhM$PV3Z8H#(;*NvJOuz zaI?<)@!DP=?6Q5Mc;9A$K1lz_*0K7(oMw`L5dEa~JzH(;Q(%8vE7CN5Q!r>&QvU4y zU;e1A!#KVxv|e$`&-QP;*JKv*+t@hE&(nST{UN{Y0(}bPZUJb3?5Y=>a({d8UmJHV zDX^_0y>GMPI-;j8rSY+J;)14Oo7D0Sx3 zl||%>4~PEqytVf3c&6+>=;%T17uh;|&#AEVO#%8;AhZWG`TwWfxq{YxoM-uH-upXF z{%pTM2N(HmYMk^SaP09rY8}!M2%P{8`4dm{KU>^+6*Sf=z0JeAp86$PP#>dhCFm-gH18Mfur&VmA_Q$xH$Ds-?WzgE<|M130VQbx(~6Xh2`=nZJd zA9`!G94Gx}N6Zy-DRImH$JRX!v~RGW@!L`!N}dH=gf_#iu4u53k>d#_i-f(nvVEOO42{Q`qr1+ zQhlSu*?-8^(5s9}DAhL@>qR1E_h?s96s%d;J=gUl)Nsh(EHmePhXwz3Ce)h@SJ8*!kxv zWPBMQtrQIXhZm$AcSC!tu55Xrgs1Dpy~fx`DtAd zL{D+-{?k;H<{Qjx|JU4l*d6!zW!D_IufV<{Sz0%6{0ZXE{nyz2gC!6wh@Mx(HDy6O zC_f@yf$%s$&hL%-OI`B!6E1zbUI{!Oq(;Y2#*at3G0sJXZjinq@pT3FDSR~VBj7T& zUn5_cMICKjF#&w10vh^HJ(g7L@^qg2JBoi_-G4GcHyO|Lc4 z0UGkB&c9`kUVm_&?xST+5|=DW)tNts+=->nf&kDDIF;&6>%wEpHIW**?#B#;*&u6_EL zOY1_e&;4YY1;{{<{LIeozsZ8}>J%jEHTBwulr~b`E?`k7Xn@jXz)+H;L`-LvCh7ihy1Y9wodf+-|@s-etZ0r z?|(ek0WM-h6y|N5cHHIq%i2GY*6EZ#h(G5)_WQqyAe$h1?%&z8f*Hc5adQc>Qx4_-Jw;*l5KOIE*$xR z?Hg7M()2<4`(yc&G(Fdq%fa6OnX?m5x;a(*j~dqOO}qa~vlGf02Ej5wWBkngS^73j zJmJ2v>Tjp-1t0qUp)VC$-$aH2 zzdazE6}qRkj!8y(O+YrE9td+dZ;P;lhw>wx)>_({rVj8ae`*XpyLkh|6Cc^@@-w{^ z@VWp}KdliaUCWsCSbc|(o($;VNkACs-Lept%VF=4S8n;x>8YR&cSC%PzG<~4uLx6g zG4-qU#dPYMau7P8Cm)uF^+o*weKC|r>(;}Dm=D(TGQ!agnFUAs87mAdD*_m zpL%1M?UnqQZ?fXAtqY-FqR~1vVLtF?E0{4$!J_F3hDRwF$yCtcgZ|5OaivPv){U|J zAeT;O`C|Jo^?~%9VJcrS4*6fCpu=`gef2>+_2b}S{!C~7-GNWMt_U-o@?w0`(@*9{ zJ;&f{Ye43UcI?RIv;U+3viu!XnC4BirWPol)))I>Z28zen9laVFxx-nR#G_HYLn?K z5A&y-j8BH#3=IXic zxJQI!;r|LFU4Fcv!aWsqke}|a93N0$KC<_Z`er)y!S+x6GM;)%79Mqp_o;rrV7#Zb zE&HqP&loSfZ5jVzzG(=feQEg>mZRGz+n*l)|D1K`=H5sCM|^MH^+(pBcj4yP#*R}C znt~opE1I0~_4m7}k6e}Z`9F5MKM~Qx-?ED6dezz7ib^gR{F&8u7;*!i>j1m9dr>oS|Z zk)Sx7`Bq0nc_v8fgr{yOCz@RO+DAS6Y_U%lBJ|wdO`pCJfLqLtryML zapcXDs-9Yl%7~|Rrh%3Avfm|6a8={w(Ao)S)FV&LKKV+VH{V+0qRb*eJTSQ1huJ?=I~>%0xjMG%uZ5^v_q89c{M%V~ z1<|8eF}{OZiGMww^i%z2XLqU#ga&{{`Ev_CJmQLzzw~bZ@jBb{dS-@jR()H!SBIia z92akRgD#YTD_&-|_X_s4Gt+#RC)mH5Mha+=ul&A-metkmnupz?G4 zHQS}PyVT{m2m5B-Hm79}J=wCI`(fGtS2Ya1cgv#7KWGSq#zc(5@adJOTov45k6(^F z-MOyy*nc%_y7xlhhX4)zg};(Fhkp0slk*$bDzIA~fsc{PILHTt;y!546H!!;t{OAG5d}T0irM$W7 z!zHzQ&FNO)jwFExi?7oBTOhuJnXZ0kcJCx_Mm#p@!e5FC-9BczkmEPPEdg5r8to@_ z+btDD`JWo~+AzGpZEn&>MhXVw)n5e?_%KoPZ;kl&fRsxH^PWntB+`$cOnUT^n45Pa z(Qo(LfUYf|(M}>=!YAC!il5gVw(IMd`O|O#^uYE<>vAJsNm^Uew?js$%rFY`_AWi- zt{s26QLUc4?3XivW%Cuc?0FH`@1rU4Qa)ANWD# z=gpz^`lET=^k8GID`ixYV0;jN;u+<|;$09(3Pf^{ORmARn>-PNRw*t2*3+&;gEZ4rb(m;0^pn(=n`}7>q zy7sQO&y&`%-yz)x;Tr^le6OSuGV{-mEZ(GI1ZC>4NuOGtE)A_!j>j!AapH;2S zxnk676aT%>*=k!y%bV9JXHfl7PHTM;PSd`(`U7D=N&b-qUq^la*yD%X#)Y8q@;CG% zIVFn^%0$1zw$7B>p|6Af63ET@0iwOwqCvl%EmU%m?Yqv2T89r*2+pN|2FMywHR}6> z>jahFU+aGm2!;Y0{Bxh}aJCqF!-b!Y>=HZw?V+uc27_)$N&3XaOUeuSj z#~9F!1vJJ9G3@wZH}uKhf5>m}nOg_xK8Os|^zoM8YX9;WkiNGrN4{4A8hS2zc25Nn z+I-D~il4{$K6Iitmt6t6aexL8&)-|Dts5==a{flVAo=-q_t_-yVPnx2f(Fr(%x=G} z#II!;KV&9`Uc4;hu?`jI9+WqSE`FxrtnvBoWD4TJ;u*UAWFnsF2A_=8@1G-P-QzhQ zD|9(OR_K=t2l7t@{UktxzWA=`XN#hJ+fL`Ee-!g|iCjO&S$?iRjC>`h3UOP9Ladmt zK92Cv`vb*d%5?7z$| zNPnB2{_c)T_UwrHx=fBgc&-MV1!(lsj7yi7;=9r~<_qFaK89XoRCN6rM4vlr+M9cS z%(v(7(sv;9or50>0a-6Hm^bp$sv_~4MNQXt-{rO>fd}QCC&ar3@e2SMFN0Y#<;|sQ z_x^l+r~X^*{Re5rM7%7}%?C6=;pihS+fRKn!Pvi=i}-m~x*y1@wCJGA{#(OJ=iM>E z?T6NdJYVv&(Pk^b^ki$-Uqiw8p!y@8-F{QcOmC0>%{2YBU~nB7MWM*9cT~-v!i6#8 zXZ-wmbFuMWmmKN|vI#0b+mF$&Bxz$!e?2m~l^I51?vM?~-S=Cz`>5Nf9roQb(zzDf z-(uk33}}q=i*}bw6j@dBtL$yL)gHgXS7>_9YnFiCsORhpY8`d6E*kyj^CNcI?cW(8 zfF8JhCZ3V6jH;vQX&t(ph*22+=D3_c*XZ@gw)?-f_ur(mG?t&|(#xWB{FVC66GwIb zvF2aWc^c_&0(KaX@iLgXb8cnfM~A<*twX)_7x07XU!ldGKlE4m%Eb8SW9KjNkDn0J zvQA27A%7o~Vf>gjj(yCHhw{p70*IqN=aTsHFr1cfV)7H+d z6~4adG)aZEwUvYP0mzrj{scR$%^n;)G3nY`i}5uLEi(#3E|Bzo(fe658Gx6iKK3P6a;}ABEHB>&-C(=ulzZdv4QBZy~r|1w? z0r?;GqtjWwSg7R(WsLmV8W8f7xT%)uB{occ zq)UpyN4)nDrT;(Z>F;S#>x>Jrv6Ar{jojk zc>Dmr5cEc0uHmV|M-U?csW*;?XvfIK(d`ZCI?VP!{tUA`Is^Vt{OAihJY0o2{_5jO z_7~P0!?ESZ_)cHCVYb6`l`pM#wKXpAL!1`(0RKyY&wjyr2S07CkN1Pa@=-nq59^od zA>_;Pb0ET?)8iELq5KT9-%!5{$F?8xPeuL=^Zl2Mc-9~F$@6$zamZ>E{jHcH)7${~Nw_m;RCU^io()U+6eoZHz}D8J5AUnn$aM z@n=pC>pW+-Yih!s)BrMI*oSO48?bFFH%?U;e|U)ckyx<@3?9 zX+2a^a8_Im^pwX74!Y))+wi+llO|>4+c$3|UL_QIlHjVYqKYuB1oGNl{GD2TY}n;C zLAnANg2ABKKk=w%6=pLo)~BN90+ITVLGj4+AKV@LUh1;+{T=qrE1W*bX;LN7RR%Ql z@7!>8dBM|v;wiL_0_cIOH=f?v^4A7^hKRTP)UV>pZr)S)jYvlFbkwN7oXeLTa6Q*Z zeJ1DIzRl$FM3po6=H$}@{(jf2Lxr~WxBlocn4WqvHOx+9A3 zUD9Fb-37L9m(Uox$eai`L=JMh&+9`r_O3oe@|Lq{ay7+mBrl)?cKA`NO9j=ZzR9F>f3h$=^+>U zsR}j~;m;2*yR!K7Gx5^f?Jq&hyJPoharVT|g6O$>Y|~c|&I?z)d())_yMyQdP zI8k&zl63FC-5+Y54}_M0X8qloaZrsP&JOo3X5_)}Tv2Y*)D58vm#yTkTw|mg?JSbE z=9pW)LZj<48*I04{z|<@IC}?udhN*3$LfNvA)vuO@6qKy=$p%FW#pr!O6$oHUk-h5 z(xg}Ff$jo8gMapC;+PvbFYU~~SH5LiujEMU#SNLafA`P_XSl210Q82QBMa`Up~s&_ zNLN78SKm3a&1ZLh8l-=5(SYx6K6kzC8!B_SSaWul?3AUI{_FbBpVIM~M{eo$b`by4 z+E2Hl+Q*-*cgJt?73@FBfb5qtm^d<@-_5_ZQAL&yU%5=TCvw|CHYz|J#a+5HzU#5YOQ_t-`$oZ_X#a`(o_*G(^`O=MBje&eJw~?Xyg)`J zigpmRIS^6+jrL#kcE<$KXhPq+j>E=iOw7+ri{7 zeVYu3lb&Qoxnxw5xD@oQfY27u(0}p7od?~T54YL#_RaaW^`qgNtu^S{02-jU^;<{& z*f)vyF?|{3H{_BmlEkz)>3RBYzrT{jHK1Hqf(O^fTpCzZ1_)Ip}r@|5GggrqK2+9+{`*?+Ch1fQFt^ zf0SR3bX(o~nbe~NcKes7Z}FC&VsU<~!tKQ)kiRn!dIBQa3q>ydYX!lZ=h!}dG%;H9 z?*h6WfQFunlUG&I*87}i`Dl?odi?1My6z?EQyct%dA>Y-hfA5MJf18MZ$Ju^(dSbO-xqbdcob)K3wfyw@-}XO6-%u2S zp5uC7Ff!hssb9?d$(^_1rd0RIeEaJ$X?;fP!Cs*24QRCAyxZy?ac^AlxAzC9er@~K z3a4xRV}j?1lJvs!ZOGFf`~54ot;$$_qg;|xP4Ro2^mk9mXgPRep=86;kk9rEQ4_rSYTZijY6>hKBJwff4U$5BhubE(d1<{kg(XVAx z%@WqrmjThxbKaQHaeaC|kr{a~GEMt79)S3CK%@WqcN1KjuzSooPwaBp&V00RW|^%Y z?e^25g!S}L@Hg6TQSKeZF7MXiIH~x{`41E_5OhNTS+6pf_{a~^HyZAiIS=VR5YeyC z1|fbhph2Ize0yc>o0sccA1y4uJ_BOB^=HjLrS&I$>ju&D>s3Q9QiK+9TTiq78TBgZ zYisN2OHuCOfJXTH7`)(z6%TfLebYk6y-{q?A< zs6OWk;Ew||^|$}#6Yj_RM{U03@tFCKcQ*u{|4#mfWwW0CgRdvbYCUcD|4<3*=}eTz zD1YeP-k-SR9zFK*CmXlh*7NCe%iMlq$G_kbzjI~9=aQU-JL?yDx~y~BF{MCAC1C#e0=x3o2Xl2@aW zPY^x%So0r!tnWC}fiMHm(0^vLM-I7s|8RZfqeaFDpa;&sIRA{*ALXBkjIIVW>M!xk zqGRrzug|V>P0Q_WJ2Ld3Hj|0pdat@kua6ZSXBOhwJ}H-s&V6lZHL)Z7WA`ET3+(r& zJeDTjY|zg!^H;yKmu)}lHama$1rI*D)qZ~oA&4GSe>{J%=U;OF0Z$P9`bXY)w&IJM zV%~opG<_EGnG1+v-3#T8=~-FuZY6vDSN5-m?fG+x0K35U!~F}p{WR0`^O4a4K-P;4 zhBhp$Dq1dF-lYCF1@_JL^8CR;g9y?evbFc$v>B7*ECj-}CHZIef3K?OUjCnddGz-} z`}{0txM05V@;Ca0ByFJE-*w1n5ul-`yyh?Lb;tOZLl)Zm*K+;`^g#U+&lneERFdX@ zJrI@v8ttd}@exVdH!=6=eKc{Yre6%Y8vqSH#T_5q?=J5#{mZ}pwa`9)6N3fN|4aEp zntzb~2WHM5{O`v3_WMJmmzlqz7b$ujO<$VzycrnZwwve)#+(5>B%ar(^;<$9+Y2O2Xc6(+#y9zbgeI@Q*O2&h6x?eHwA>giYBWt zZ#ri=MF#L3JndDO=}tPr7b&QH<8~+|oQ!zN(*R+%W6I~?VS8u@JVa~#u)UI=;S}H} z1J(p|@G!q*#8V!YgLo*fZuiuGOn&l;V?{ASL2p~ydvv>_KKxj@?KE8YznHGAZ&8no zm!=~Mucv~3!28GgqrTYw+5eyiJv}4;i(~R(yJ0$(b9#J1ewrWq7wM=sxee+);WXia z=#whcZ=^efT7IB19Gl(}^sFzS>-u0i<553}7=Ij$8?nBIY2B&QCxDL&I0%sCCx4Vz zkC)U3+Z)2hvOr0O`qtxkP2>+f>S+Y^D3GqG9i1Q3*-qJil7Y|hgL-HCU^>QIWE=Hm z%XH$S{NXg=qw4nHhh+O@JRqX=#~@6n?^&G=`E)wUq0M+$E)s-<|4XN{KeGKf&Y!X# z9C%Mbwf_z4!P$RgJvbZIgY_MUv-K2eE(){%)#Z@;^aX<+K6rh;%hLuw`OZ~>Xyx$( zlX-4Rd9m4_&MGIWJ=t?u()L1kJqbLxX@PJmz2}pjh4^ZK49j5gf?)^TbuB9QX!hvW zw)K${wSMAkm8&Dl<7M}$yczlFgO$(PGoZk=%2y=6ef?*Xt8;IP`gE%T{sw*4!$YO~ zubnu){=!0g^^(bN?-B%e1-QFs$e-P^;{kW-rWa1<-IH%y4@NNi4i6C(!M8G?0YbC> zdeCk1<%OXMo4>YKFA@5VNe~GjsALf0XV#FeKe(NGjBfPkuRGn4nXYH=bwtqYJK^wo zSs}T5&GPx#$lY57`v=nVX0r24{!W^rcaj6?NoLfGjNH@Mq%3!$izHi(gKDiP!wXK|eC}U&*}FI1$78FjI1k=b=kcKagKW)l z(Tfs)`5+I($zqVrid-vbJz3!;XgXnpBVw6i}(OkSyT>sn!H=cYd zh+grFT6wE*NVKeSZntsw=C7#-gbM+U`pbNypt@Ll-QON-{Q7Qp6f^Q*WRfVi{`NNG z=H(BRuORq2+0KN?YjrLP?-_nXAH0G;kh9u{^8A$g*NPc@>y-K->yNmk9#lPEbd-vSQ6iq%` z@$vP`er_H_&(kZuCzKe;V%@m6zd2cV!IMGs6x*m58I>R|Z2#80yp6-YYy^a4KvPej z{-xO6aPOH-pS-%kKK&0%-^EZ=y!<&%DK;0yZ9T~H+w#{eVLjNqr2LVucOTL1hw}p; zEiAtshWt%I*9_2Tf02<_pU}Rmtp4YXzj2nI)?21tJ>P+}9*kFiHhps3{8h0EVyu5c z+Ip}B%004V`NQ)w}S zxvQh`(ym~>rf-G#PJjk|_<>iBx!;^@cIJf*J8a(za(jXG*BW$f%>42Dfy2k#f-_Uw zoqyd{d-v7bj*GMYczR;%zk#+MYztl;0Sz^UZy8lXaQ?$_PNB)u3m~=wT`Hhae&>w} zd$sR-z8@9ZfVkyHwvIi&>>zFe|Mo!WP?CRU9oheP-1gxwd1Jna@%<^^pKxJJL0S%$RrV7&d$9)INg5&XMAz)L7-6z0}! ze$rLJPu+#lc==1tzd+v=@dD70Gk4XCN8G(o>fc%RWMz@D;NCeq?|aSm z9hGxg3E!)IKyUPu#M2|n3qLyih;2RTWT<$V7^FX157_dziQ9V6=P&xjguGaiPj$fn?DnHw=J^nQ; zqwm#N-#H1|dN7DT)nWI)6!9VoIuHn#5-|$1*FSK|P5$D{^A%Tbwf8@ARFMn(NmS6351pRRE9RX;J zvw2mf?a}jRYkx}4pX24v{%`BA&7btW>S*7qmqBi>PYpf$Uk_b==!3D>6y&?F0?!BH zx-z#PBVU3P>`>%TFG9}8&cKd1ZR z6E3ZHxliJwdB+gwXhHQ~n)Owz@6{{7-{`-2JKsJ>&mXMu(@7IR4;=rAXOv4uC5RPB z2$G-l_WM(4>p@yQUIj!${>(h-dp!MM`D<#eC~zNUMjqTdU)TS5#7{8O)$d4^8;`gJ zPfgl?{cD9T$0t82Z=$A;SAM(wr-(Pvelo##GN94UiU&RNvs;|>!J+-X6}o&+`DhvP z>rc>61l=S+1LWNE{t|8l~ zdr!t>1qGT@_)-;?SA)q^xk)@gK^^W}O1P_v*VWoFCY%borhrWVdjaw|!@-k)c!uS2 z*LsLgh(zO9!jCB$C487ONkLjK&{`xD(?Bs!rE8altz*LElcM6a^@_s>@l2=uEH6*n zi5^n;^d+W^Y137_4ilgHLb^b?JR^MX316n5whAJDLLW>1qqT)x{#lP)&iN11L8tWz zd9`mO=35hV3@0P(XD0tKK1sz#Zd5Qd4KPc=Fxy$W3ez_pt#qWZv*SO^5A8u)^CTl3 z`k?PNZLOxL9qluU?TN!M!>ljjlON<~H1nsm7_9}0Ckcgu_9KQNjQR^_Ak6mE7Gd&9 zL744@@s5gTd!b%SSci0p$&d6XU(QIRBdq&7`B5JT%Vnx#KH7ST`8Gs4!?Epw@ysLz z_y}ujzf={k^GAK_a0AfA)=x6xneO0$ezi3cw0H>DJqBc zt<$M*$P>y0eQbZF{#icigYOIEPoH!S;&aeHbUktWL4VQx2k#@pn(I$l&wPB@Jq!Og ztY;?tk@d_3Wjzy-N6wrD)rN-414@v3^EKtfV`rNGZRThB?tUVA>9bY|4|vum#6QoA zu%DdEuKC%G6eKS^@XB^~u9=n{J-z3wBnjyZ%V1vinq$c8P0UGT$qjKG&?yVnJ8}Y!`vDQ~|_j#Lh z&*S?;4TIz_ZT0(nuk9nc4DS445Iw|lj8&bCN)`+LJ#^)Z6rF@^x14m!W@Y zb9>kSmVWw!o6q0ebl4s_1p7}4putBp8+Nux>y>olONR^G>y3u#Y`RT2r~9SvsPRQ^t~(JrJRah zzP{&*H)j54#{7Dqs}E?%pSb$(<;2R9KP7**YP)TH6z(9(y^|BE_Sjto@#?Q4@>igV zIKSWQ$NG2gR~$tD+Of7*KlN>4%;{+((QfN`Bdb1f_eB>V--du@JGpqu_ioXkArD>I zV3Y0n-kUbBfA{4fhlj2Y;?L6$Lobq31#xU@`kbl5zJK#V@C^Z)^*3bSK9{G5mi3|| zcmG!}Tl8hG%@zJz{+oU|_Ev-SkL+j!zR7?_{fq92=ZegG=RTLZd%b=0hWz%KyKh1K zk*)1{UQWxagHe3+C2yXO^}W>`jEwrr_+`I5J>JuAMcVRDOSE6g-xPGsC}#{NdL{$qHri?UK>Zrxt;A(( zUP&&nt!H-JqU*mU=mr3q?WgGcYNF|V}aYyNN_eR)AY2S=>~cOgr;>nSv+=WmzmFhRN#&<>2oG&{%sJS3TTu+JNMNp zq9Co`>AU{1+hzF_+5}C{akX7Z`kefP%3{$S*-1<5#e91#m(gs0LG6F)z7bU?znyQN zK8MqF`Ge@6K9h5_{tvI(?KdJywVpBbmw4m76-D0Wx2OK=gF@SSAQHdtlaG(Kx}d@@ zvA#>w;+7w3)$0rumh(Rd+6f4q0gdr9cir{JT;7~#%|D&^tq=Z~zg&)ke-|Kh1vJ`^ zGi=T|g7bHK{wKFLK_66qf6QObKgvWOd-G)U^pe&yqNMye+Xhq;^nI5@K|J{L0?ofW z;(5AZj=%F>J*-bpIX?U7M*Hsp`ksIW$XvVPh`aH*hwr{A>mA$ol`~B957OU;+LdOu z?EAHA$R%0S)7CRV^hImWzd!$-f7;&;M}}(ty&$j)Xw-jr{;d`D&69Thw~4#|^XA2h zhGP7ir^;0SvDVLW-2(dF$hR*bqPjnOoe&|8CL!-cJhM!4%kokx6l%J}a`f^g3UKQ^nnAC_&|a?W&Il zJ@83^OF4b|NT#-)Nmm&H9GO z`76*)Th9c^Pcoxj%cwfyDwKa15JmwSc!{5n+vBFU{k_qdQ(Nu+>&TlkLC<|H&aVvm z>6hG`=kn%LYyIeLBgd(Kj^DBR&jtNR$bA_gqPxg_1y;a!13pg*KbMM_g1|6 z=l+u7n^wYlW;_Hkm@eb=Ew{y)|;naLL)b~l}P=QAuaCy z ZekCQXS>op6D>zQ%jdu2)fxz7zh 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%0D)4 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

Co~a9eEB={dKdCLVhdj6SyuMGncW1Sa|2q2LjeN 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 DVM;9F diff --git a/yarp/reaction/external/conformer_select.py b/yarp/reaction/external/conformer_select.py index 793eccff..18face1d 100644 --- a/yarp/reaction/external/conformer_select.py +++ b/yarp/reaction/external/conformer_select.py @@ -6,6 +6,7 @@ """ import copy +import hashlib import os import pickle from pathlib import Path @@ -21,14 +22,20 @@ class ConformerPairSelector: """Select reactant/product conformer pairs for GSM.""" - def __init__(self, rxn, config, scratch_dir=None): + def __init__(self, rxn, config, scratch_dir=None, log=None): self.rxn = rxn self.config = config self.scratch_dir = Path(scratch_dir) if scratch_dir is not None else Path.cwd() / "joint_opt" self.mode = config.joint_opt.lower() self.joint_optimizer = make_joint_optimization_engine(config, self.scratch_dir) - self.verbose = getattr(config, "verbose", False) + self.verbose = ( + getattr(config, "verbose", False) + or os.environ.get("YARP_DEBUG_PREGSM") == "1" + ) + self.log = log self.dropped_pairs = 0 + self.model_path = None + self.model_sha256 = None def select(self): if os.environ.get("YARP_PREGSM_CONTAINER") != "1": @@ -38,9 +45,18 @@ def select(self): "from the host YARP environment." ) + self._log( + "starting selection " + f"mode={self.mode} engine={getattr(self.config, 'joint_opt_engine', '')} " + f"n_conf={self.config.n_conf} scratch={self.scratch_dir}" + ) + r_confs = self._get_conformers(self.rxn.reactant) p_confs = self._get_conformers(self.rxn.product) - + self._log( + f"input conformers reactant={len(r_confs)} product={len(p_confs)} " + f"reactant_types={self._conf_types(r_confs)} product_types={self._conf_types(p_confs)}" + ) biased_r, biased_p = self._generate_biased_endpoints(r_confs, p_confs) model = self._load_model(r_confs, p_confs) @@ -50,6 +66,10 @@ def select(self): biased_r, biased_p, ) + self._log( + f"post-truncation conformers reactant={len(r_confs)} product={len(p_confs)} " + f"biased_reactant={len(biased_r)} biased_product={len(biased_p)}" + ) approved_pairs = [] approved_indicators = [] @@ -59,16 +79,28 @@ def select(self): approved_pairs.sort(key=lambda x: x["score"], reverse=True) - if self.verbose: - print("Number of approved pairs = ", len(approved_pairs)) - print("Number of dropped pairs = ", self.dropped_pairs) + self._log(f"approved_pairs={len(approved_pairs)} dropped_pairs={self.dropped_pairs}") + for ind, pair in enumerate(approved_pairs[:self.config.n_conf], start=1): + self._log( + f"selected_pair={ind} score={float(pair.get('score', 0.0)):.6f} " + f"r_conf={getattr(pair.get('r_conf'), 'type', '')} " + f"p_conf={getattr(pair.get('p_conf'), 'type', '')}" + ) return approved_pairs[:self.config.n_conf] + def _log(self, message): + if self.verbose: + print(f"[ConformerPairSelector] {message}", file=self.log, flush=True) + @staticmethod def _get_conformers(state): return [conf for key, conf in state.conformers.items() if key != "initial_geom"] + @staticmethod + def _conf_types(confs): + return [getattr(conf, "type", "") for conf in confs] + def _generate_biased_endpoints(self, r_confs, p_confs): biased_r = r_confs biased_p = p_confs @@ -86,14 +118,18 @@ def _generate_biased_endpoints(self, r_confs, p_confs): for ind, c in enumerate(p_confs) ] + self._log( + "biased endpoints " + f"reactant_none={sum(_ is None for _ in biased_r)} " + f"product_none={sum(_ is None for _ in biased_p)}" + ) return biased_r, biased_p def _load_model(self, r_confs, p_confs): n_conf = self.config.n_conf total_conf = len(r_confs) + len(p_confs) - if self.verbose: - print("Total number of reactant + product conformers generated = ", total_conf) + self._log(f"total reactant+product conformers={total_conf}") model_dir = Path(__file__).resolve().parents[1] / "conf_sampling" if total_conf / n_conf > 3.0: @@ -101,12 +137,28 @@ def _load_model(self, r_confs, p_confs): else: model_path = model_dir / "poor_model.sav" - if self.verbose: - print(f"{model_path.stem} is chosen to generate aligned reaction conformers") + if not model_path.exists(): + raise FileNotFoundError( + "Conformer-pair selection model is missing. " + f"Expected {model_path}. Rebuild the jo_opt container with the required model artifacts." + ) + self.model_path = str(model_path) + self.model_sha256 = self._sha256(model_path) + self._log( + f"model={model_path.stem} path={model_path} sha256={self.model_sha256}" + ) with open(model_path, "rb") as f: return pickle.load(f) + @staticmethod + def _sha256(path): + digest = hashlib.sha256() + with open(path, "rb") as f: + for chunk in iter(lambda: f.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + def _truncate_conformer_pool(self, r_confs, p_confs, biased_r, biased_p): limit = self.config.n_conf * 5 if len(r_confs) > limit: diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index 613e471e..3f211702 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -72,13 +72,22 @@ def write_submission_script(self): f.write("trap 'ec=$?; echo \"Inner GSM wrapper exiting with code ${ec}\"' EXIT\n") f.write("echo 'Starting YARP serial GSM execution...'\n\n") - repo_root = Path(__file__).resolve().parents[3] - f.write(f"export PYTHONPATH={repo_root}${{PYTHONPATH:+:$PYTHONPATH}}\n") f.write("export PYSISRC=/root/.pysisyphusrc\n") f.write("export YARP_PREGSM_CONTAINER=1\n") f.write("ulimit -s unlimited || true\n") for key, value in self.thread_env(self.config.n_cpus).items(): f.write(f"export {key}={value}\n") + f.write( + "python - <<'PY'\n" + "from pathlib import Path\n" + "import yarp.reaction.external.ts_guess as ts_guess\n" + "import yarp.reaction.conf_sampling.indicator as indicator\n" + "print(f'Container ts_guess module: {Path(ts_guess.__file__).resolve()}', flush=True)\n" + "model_dir = Path(indicator.__file__).resolve().parent\n" + "print(f'Container conf_sampling dir: {model_dir}', flush=True)\n" + "print(f'Container selector models: {[p.name for p in model_dir.glob(\"*.sav\")]}', flush=True)\n" + "PY\n" + ) f.write( "python -c \"" "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " @@ -279,7 +288,7 @@ def write_pysis_gsm_input(input_path, r_xyz_path, p_xyz_path, config): f.write(f'opt:\n type: string\n stop_in_when_full: -1\n align: True\n scale_step: global\n') @staticmethod - def _write_selected_pairs_manifest(path, pairs): + def _write_selected_pairs_manifest(path, pairs, selector=None): manifest = { "n_pairs": len(pairs), "pairs": [ @@ -292,6 +301,15 @@ def _write_selected_pairs_manifest(path, pairs): for ind, pair in enumerate(pairs, start=1) ], } + if selector is not None: + manifest["selector"] = { + "joint_opt": selector.mode, + "joint_opt_engine": getattr(selector.config, "joint_opt_engine", ""), + "n_conf": selector.config.n_conf, + "model_path": selector.model_path, + "model_sha256": selector.model_sha256, + "dropped_pairs": selector.dropped_pairs, + } Path(path).write_text(json.dumps(manifest, indent=2, sort_keys=True), encoding="utf-8") @staticmethod @@ -322,33 +340,55 @@ def _run_pysis(pair_dir, inp_name, out_path, err_path, timeout_s, log): text=True, start_new_session=True, ) - try: - returncode = proc.wait(timeout=timeout_s) - elapsed = time.time() - start - print( - f"GSM pair in {pair_dir.name} exited with code {returncode} " - f"after {elapsed:.1f} s", - file=log, - flush=True, - ) - return returncode == 0 - except subprocess.TimeoutExpired: - elapsed = time.time() - start - print( - f"GSM pair in {pair_dir.name} exceeded {timeout_s} s " - f"after {elapsed:.1f} s; terminating and trying next pair.", - file=log, - flush=True, - ) - try: - os.killpg(proc.pid, signal.SIGTERM) - proc.wait(timeout=30) - except Exception: + print( + f"GSM pair in {pair_dir.name} started with pid {proc.pid}; " + f"timeout={timeout_s} s", + file=log, + flush=True, + ) + deadline = start + timeout_s + next_heartbeat = start + 60 + while True: + returncode = proc.poll() + if returncode is not None: + elapsed = time.time() - start + print( + f"GSM pair in {pair_dir.name} exited with code {returncode} " + f"after {elapsed:.1f} s", + file=log, + flush=True, + ) + return returncode == 0 + + now = time.time() + if now >= deadline: + elapsed = now - start + print( + f"GSM pair in {pair_dir.name} exceeded {timeout_s} s " + f"after {elapsed:.1f} s; terminating and trying next pair.", + file=log, + flush=True, + ) try: - os.killpg(proc.pid, signal.SIGKILL) + os.killpg(proc.pid, signal.SIGTERM) + proc.wait(timeout=30) except Exception: - pass - return False + try: + os.killpg(proc.pid, signal.SIGKILL) + except Exception: + pass + return False + + if now >= next_heartbeat: + elapsed = now - start + print( + f"GSM pair in {pair_dir.name} still running after {elapsed:.1f} s", + file=log, + flush=True, + ) + next_heartbeat += 60 + + time.sleep(min(5, max(0.1, deadline - now))) @classmethod def run_containerized(cls, payload_path): @@ -394,8 +434,10 @@ def log_signal(signum, _frame): config = payload["config"] os.environ["YARP_PREGSM_CONTAINER"] = "1" - pairs = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt").select() - cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs) + os.environ["YARP_DEBUG_PREGSM"] = "1" + selector = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt", log=log) + pairs = selector.select() + cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs, selector) print(f"Selected {len(pairs)} pair(s)", file=log, flush=True) if not pairs: @@ -420,7 +462,14 @@ def log_signal(signum, _frame): p_xyz_path.write_text(pair["p_conf"].to_xyz_string(), encoding="utf-8") cls.write_pysis_gsm_input(inp_path, r_xyz_path.name, p_xyz_path.name, config) - print(f"Running GSM pair {idx}", file=log, flush=True) + print( + f"Running GSM pair {idx}: " + f"score={float(pair.get('score', 0.0)):.6f} " + f"r_conf={getattr(pair.get('r_conf'), 'type', '')} " + f"p_conf={getattr(pair.get('p_conf'), 'type', '')}", + file=log, + flush=True, + ) ok = cls._run_pysis( pair_dir, inp_path.name, From 3f485870a9592d946fb3c18d6b29e343f9b6edac Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Wed, 8 Jul 2026 16:06:46 -0400 Subject: [PATCH 11/14] Limiting scope of new container --- .gitignore | 3 + containers/jo_opt/Dockerfile | 4 + test/util/test_ts_guess_config.py | 9 -- yarp/reaction/external/conformer_select.py | 148 +++++++++++++-------- yarp/reaction/external/ts_guess.py | 106 ++++++--------- 5 files changed, 142 insertions(+), 128 deletions(-) diff --git a/.gitignore b/.gitignore index 313f85b2..a888604b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ debug/* .vscode containers/*.sif containers/*/*.def +!containers/jo_opt/jo_opt.def +!containers/model_scorer/model_scorer.def containers/*.tar containers/orca/*.tar.* containers/orca/example @@ -185,6 +187,7 @@ cython_debug/ # Local conformer-pair selection model artifacts yarp/reaction/conf_sampling/*.sav +containers/model_artifacts/jo_opt/*.sav # PyPI configuration file .pypirc diff --git a/containers/jo_opt/Dockerfile b/containers/jo_opt/Dockerfile index 5adcc601..1b576353 100644 --- a/containers/jo_opt/Dockerfile +++ b/containers/jo_opt/Dockerfile @@ -46,7 +46,11 @@ RUN python -c "import importlib.metadata as md; assert md.version('scikit-learn' WORKDIR /opt/yarp COPY . /opt/yarp +COPY containers/model_artifacts/jo_opt/*.sav /tmp/yarp_conf_models/ RUN pip install --no-cache-dir -e . +RUN cp /tmp/yarp_conf_models/*.sav /opt/yarp/yarp/reaction/conf_sampling/ && \ + test -s /opt/yarp/yarp/reaction/conf_sampling/poor_model.sav && \ + test -s /opt/yarp/yarp/reaction/conf_sampling/rich_model.sav RUN echo "[xtb]" > /root/.pysisyphusrc && \ echo "cmd=xtb" >> /root/.pysisyphusrc diff --git a/test/util/test_ts_guess_config.py b/test/util/test_ts_guess_config.py index c186edb2..2ec181a4 100644 --- a/test/util/test_ts_guess_config.py +++ b/test/util/test_ts_guess_config.py @@ -3,8 +3,6 @@ pytest.importorskip("openbabel") from yarp.util.config import TSGuessConfig -from yarp.reaction.external.conformer_select import ConformerPairSelector - def test_ts_guess_config_defaults_to_openbabel_joint_opt(): cfg = TSGuessConfig( @@ -41,10 +39,3 @@ def test_ts_guess_config_rejects_unknown_joint_opt_engine(): multiplicity=1, joint_opt_engine="bad", ) - - -def test_conformer_pair_selection_requires_container(monkeypatch): - monkeypatch.delenv("YARP_PREGSM_CONTAINER", raising=False) - - with pytest.raises(RuntimeError, match="jo_opt pre-GSM container"): - ConformerPairSelector.__new__(ConformerPairSelector).select() diff --git a/yarp/reaction/external/conformer_select.py b/yarp/reaction/external/conformer_select.py index 18face1d..7cfb361b 100644 --- a/yarp/reaction/external/conformer_select.py +++ b/yarp/reaction/external/conformer_select.py @@ -6,9 +6,7 @@ """ import copy -import hashlib import os -import pickle from pathlib import Path import numpy as np @@ -17,17 +15,20 @@ from yarp.reaction.conf_sampling.indicator import return_indicator from yarp.reaction.external.joint_opt import make_joint_optimization_engine +from yarp.reaction.external.model_scorer import ContainerModelScorer +from yarp.yarpecule.graph.adjacency import table_generator class ConformerPairSelector: """Select reactant/product conformer pairs for GSM.""" - def __init__(self, rxn, config, scratch_dir=None, log=None): + def __init__(self, rxn, config, scratch_dir=None, log=None, job_manager=None): self.rxn = rxn self.config = config self.scratch_dir = Path(scratch_dir) if scratch_dir is not None else Path.cwd() / "joint_opt" self.mode = config.joint_opt.lower() self.joint_optimizer = make_joint_optimization_engine(config, self.scratch_dir) + self.job_manager = job_manager self.verbose = ( getattr(config, "verbose", False) or os.environ.get("YARP_DEBUG_PREGSM") == "1" @@ -38,13 +39,6 @@ def __init__(self, rxn, config, scratch_dir=None, log=None): self.model_sha256 = None def select(self): - if os.environ.get("YARP_PREGSM_CONTAINER") != "1": - raise RuntimeError( - "Conformer pair selection must run inside the jo_opt pre-GSM container. " - "Use the Pysisyphus TS guess workflow instead of calling ConformerPairSelector.select() " - "from the host YARP environment." - ) - self._log( "starting selection " f"mode={self.mode} engine={getattr(self.config, 'joint_opt_engine', '')} " @@ -58,7 +52,7 @@ def select(self): f"reactant_types={self._conf_types(r_confs)} product_types={self._conf_types(p_confs)}" ) biased_r, biased_p = self._generate_biased_endpoints(r_confs, p_confs) - model = self._load_model(r_confs, p_confs) + scorer = self._build_scorer(r_confs, p_confs) r_confs, p_confs, biased_r, biased_p = self._truncate_conformer_pool( r_confs, @@ -74,8 +68,10 @@ def select(self): approved_pairs = [] approved_indicators = [] - self._score_reactant_seeded_pairs(r_confs, biased_p, model, approved_pairs, approved_indicators) - self._score_product_seeded_pairs(p_confs, biased_r, model, approved_pairs, approved_indicators) + self._score_reactant_seeded_pairs(r_confs, biased_p, scorer, approved_pairs, approved_indicators) + self._score_product_seeded_pairs(p_confs, biased_r, scorer, approved_pairs, approved_indicators) + self.model_path = scorer.model_path + self.model_sha256 = scorer.model_sha256 approved_pairs.sort(key=lambda x: x["score"], reverse=True) @@ -125,39 +121,24 @@ def _generate_biased_endpoints(self, r_confs, p_confs): ) return biased_r, biased_p - def _load_model(self, r_confs, p_confs): + def _build_scorer(self, r_confs, p_confs): n_conf = self.config.n_conf total_conf = len(r_confs) + len(p_confs) self._log(f"total reactant+product conformers={total_conf}") - model_dir = Path(__file__).resolve().parents[1] / "conf_sampling" if total_conf / n_conf > 3.0: - model_path = model_dir / "rich_model.sav" + model_name = "rich_model" else: - model_path = model_dir / "poor_model.sav" - - if not model_path.exists(): - raise FileNotFoundError( - "Conformer-pair selection model is missing. " - f"Expected {model_path}. Rebuild the jo_opt container with the required model artifacts." - ) - - self.model_path = str(model_path) - self.model_sha256 = self._sha256(model_path) - self._log( - f"model={model_path.stem} path={model_path} sha256={self.model_sha256}" + model_name = "poor_model" + + self._log(f"model={model_name} scorer_container={ContainerModelScorer.image_name}") + return ContainerModelScorer( + self.job_manager, + self.scratch_dir / "model_scorer", + model_name, + log=self.log, ) - with open(model_path, "rb") as f: - return pickle.load(f) - - @staticmethod - def _sha256(path): - digest = hashlib.sha256() - with open(path, "rb") as f: - for chunk in iter(lambda: f.read(1024 * 1024), b""): - digest.update(chunk) - return digest.hexdigest() def _truncate_conformer_pool(self, r_confs, p_confs, biased_r, biased_p): limit = self.config.n_conf * 5 @@ -169,67 +150,101 @@ def _truncate_conformer_pool(self, r_confs, p_confs, biased_r, biased_p): biased_r = biased_r[:limit] return r_confs, p_confs, biased_r, biased_p - def _score_reactant_seeded_pairs(self, r_confs, biased_p, model, approved_pairs, approved_indicators): + def _score_reactant_seeded_pairs(self, r_confs, biased_p, scorer, approved_pairs, approved_indicators): if self.mode in ["dual", "r_only", "off"]: r_loop_confs = r_confs if self.mode != "off" else r_confs[:len(biased_p)] else: r_loop_confs = [] + candidates = [] for ind, r_c in enumerate(r_loop_confs): if ind >= len(biased_p) or biased_p[ind] is None: self.dropped_pairs += 1 continue - best_p, best_ind, best_prob = self._score_pair( + candidates.append(self._build_pair_candidate( + source_index=ind, fixed_conf=r_c, biased_conf=biased_p[ind], indicator_elements=r_c.elements, reactant_geo=r_c.geo, product_geo=biased_p[ind].geo, - model=model, - ) + )) - if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): + probabilities = self._score_candidates(candidates, scorer) + for candidate, candidate_probs in zip(candidates, probabilities): + best_p, best_ind, best_prob = self._select_scored_pair(candidate, candidate_probs) + r_c = candidate["fixed_conf"] + ind = candidate["source_index"] + + if best_prob[1] > 0.0 and check_uniqueness(best_ind, approved_indicators): approved_indicators.append(best_ind) approved_pairs.append({ "r_conf": r_c, "p_conf": best_p, - "score": best_prob[0][1], + "score": best_prob[1], + "source": "reactant_seeded", + "source_index": ind, + "selection_direction": "reactant_fixed_product_biased", + "r_graph_diffs": self._graph_diffs(r_c), + "p_graph_diffs": self._graph_diffs(best_p), }) else: self.dropped_pairs += 1 - def _score_product_seeded_pairs(self, p_confs, biased_r, model, approved_pairs, approved_indicators): + def _score_product_seeded_pairs(self, p_confs, biased_r, scorer, approved_pairs, approved_indicators): p_loop_confs = p_confs if self.mode in ["dual", "p_only"] else [] + candidates = [] for ind, p_c in enumerate(p_loop_confs): if ind >= len(biased_r) or biased_r[ind] is None: self.dropped_pairs += 1 continue - best_r, best_ind, best_prob = self._score_pair( + candidates.append(self._build_pair_candidate( + source_index=ind, fixed_conf=p_c, biased_conf=biased_r[ind], indicator_elements=p_c.elements, reactant_geo=biased_r[ind].geo, product_geo=p_c.geo, - model=model, - ) + )) - if best_prob[0][1] > 0.0 and check_uniqueness(best_ind, approved_indicators): + probabilities = self._score_candidates(candidates, scorer) + for candidate, candidate_probs in zip(candidates, probabilities): + best_r, best_ind, best_prob = self._select_scored_pair(candidate, candidate_probs) + p_c = candidate["fixed_conf"] + ind = candidate["source_index"] + + if best_prob[1] > 0.0 and check_uniqueness(best_ind, approved_indicators): approved_indicators.append(best_ind) approved_pairs.append({ "r_conf": best_r, "p_conf": p_c, - "score": best_prob[0][1], + "score": best_prob[1], + "source": "product_seeded", + "source_index": ind, + "selection_direction": "product_fixed_reactant_biased", + "r_graph_diffs": self._graph_diffs(best_r), + "p_graph_diffs": self._graph_diffs(p_c), }) else: self.dropped_pairs += 1 + def _graph_diffs(self, conf): + """Return graph differences to the intended reactant and product states.""" + try: + adj_mat = table_generator(conf.elements, conf.geo) + return { + "reactant": int(np.abs(adj_mat - self.rxn.reactant.graph.adj_mat).sum()), + "product": int(np.abs(adj_mat - self.rxn.product.graph.adj_mat).sum()), + } + except Exception as exc: + return {"error": str(exc)} + @staticmethod - def _score_pair(fixed_conf, biased_conf, indicator_elements, reactant_geo, product_geo, model): + def _build_pair_candidate(source_index, fixed_conf, biased_conf, indicator_elements, reactant_geo, product_geo): ind_unaligned = return_indicator(E=indicator_elements, RG=reactant_geo, PG=product_geo) - prob_unaligned = model.predict_proba(ind_unaligned) aligned_biased = align_conformers(fixed_conf, biased_conf) if reactant_geo is biased_conf.geo: @@ -240,11 +255,32 @@ def _score_pair(fixed_conf, biased_conf, indicator_elements, reactant_geo, produ aligned_product_geo = aligned_biased.geo ind_aligned = return_indicator(E=indicator_elements, RG=aligned_reactant_geo, PG=aligned_product_geo) - prob_aligned = model.predict_proba(ind_aligned) + return { + "source_index": source_index, + "fixed_conf": fixed_conf, + "biased_conf": biased_conf, + "aligned_biased": aligned_biased, + "ind_unaligned": ind_unaligned, + "ind_aligned": ind_aligned, + } + + @staticmethod + def _score_candidates(candidates, scorer): + if not candidates: + return [] + indicators = [] + for candidate in candidates: + indicators.extend([candidate["ind_unaligned"], candidate["ind_aligned"]]) + scored_rows = scorer.predict_proba(indicators) + return [scored_rows[i:i + 2] for i in range(0, len(scored_rows), 2)] + + @staticmethod + def _select_scored_pair(candidate, candidate_probs): + prob_unaligned, prob_aligned = candidate_probs - if prob_aligned[0][1] > prob_unaligned[0][1]: - return aligned_biased, ind_aligned, prob_aligned - return biased_conf, ind_unaligned, prob_unaligned + if prob_aligned[1] > prob_unaligned[1]: + return candidate["aligned_biased"], candidate["ind_aligned"], prob_aligned + return candidate["biased_conf"], candidate["ind_unaligned"], prob_unaligned def align_conformers(conf, biased_conf): diff --git a/yarp/reaction/external/ts_guess.py b/yarp/reaction/external/ts_guess.py index 3f211702..06dc2033 100644 --- a/yarp/reaction/external/ts_guess.py +++ b/yarp/reaction/external/ts_guess.py @@ -41,83 +41,50 @@ class PysisyphusTSGuessCalculator(TSGuessTask): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.image_name = "erm42/yarp:jo_opt" self.n_pairs = self.config.n_conf def generate_input(self): """ - Writes the payload consumed by the container-side pre-GSM workflow. + Writes the payload consumed by the submitted pre-GSM workflow. - Conformer selection, joint optimization, ML scoring, and Pysisyphus GSM - execution all run inside the jo_opt container so the host YARP - environment does not need the ML dependency stack. + Conformer selection, joint optimization, and Pysisyphus GSM execution + run in the submitted host environment. Only the sklearn model + probability calculation is delegated to the scorer container. """ payload_path = self.scratch_dir / "payload.pkl" with open(payload_path, "wb") as f: - pickle.dump({"rxn": self.rxn, "config": self.config}, f) + pickle.dump( + { + "rxn": self.rxn, + "config": self.config, + "job_manager": self.job_manager, + }, + f, + ) def write_submission_script(self): """ - Creates a sequential runner script for inside the container, - and a host submission script to launch the container. + Creates a scheduler script that runs host-side pre-GSM and GSM. """ - # --------------------------------------------------------- - # 1. The INNER Script (Runs inside the Docker container) - # --------------------------------------------------------- - inner_script_path = self.scratch_dir / "run_pysis_inner.sh" - - with open(inner_script_path, "w") as f: - f.write("#!/bin/bash\n\n") - f.write("set -u\n") - f.write("trap 'ec=$?; echo \"Inner GSM wrapper exiting with code ${ec}\"' EXIT\n") - f.write("echo 'Starting YARP serial GSM execution...'\n\n") - - f.write("export PYSISRC=/root/.pysisyphusrc\n") - f.write("export YARP_PREGSM_CONTAINER=1\n") - f.write("ulimit -s unlimited || true\n") - for key, value in self.thread_env(self.config.n_cpus).items(): - f.write(f"export {key}={value}\n") - f.write( - "python - <<'PY'\n" - "from pathlib import Path\n" - "import yarp.reaction.external.ts_guess as ts_guess\n" - "import yarp.reaction.conf_sampling.indicator as indicator\n" - "print(f'Container ts_guess module: {Path(ts_guess.__file__).resolve()}', flush=True)\n" - "model_dir = Path(indicator.__file__).resolve().parent\n" - "print(f'Container conf_sampling dir: {model_dir}', flush=True)\n" - "print(f'Container selector models: {[p.name for p in model_dir.glob(\"*.sav\")]}', flush=True)\n" - "PY\n" - ) - f.write( - "python -c \"" - "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " - "PysisyphusTSGuessCalculator.run_containerized('/work/payload.pkl')" - "\"\n" - ) - - # Make executable - inner_script_path.chmod(0o755) - - # --------------------------------------------------------- - # 2. The OUTER Script (Runs on the Host / Job Manager) - # --------------------------------------------------------- submit_script_path = self.scratch_dir / "submit_gsm.sh" - - # Pulls the docker prefix (e.g., 'docker run --rm -v /scratch:/work -u UID:GID yarp_pysisyphus') - prefix = self.get_container_prefix(self.image_name, str(self.scratch_dir)) - + with open(submit_script_path, "w") as f: f.write("#!/bin/bash\n") self.write_scheduler_headers(f) self.write_thread_env(f) - # Launch the container and tell it to run the inner script + f.write("set -euo pipefail\n") f.write(f"cd {self.scratch_dir}\n") - f.write("echo \"$(date) starting containerized GSM wrapper\" > container_lifecycle.log\n") + f.write("echo \"$(date) starting host GSM wrapper\" > gsm_lifecycle.log\n") f.write( "trap 'ec=$?; echo \"$(date) submit_gsm.sh exiting with code ${ec}\" " - ">> container_lifecycle.log' EXIT\n" + ">> gsm_lifecycle.log' EXIT\n" + ) + f.write( + "python -c \"" + "from yarp.reaction.external.ts_guess import PysisyphusTSGuessCalculator; " + f"PysisyphusTSGuessCalculator.run_host('{self.scratch_dir / 'payload.pkl'}')" + "\" > container.out 2> container.err\n" ) - f.write(f"{prefix} bash /work/run_pysis_inner.sh > container.out 2> container.err\n") submit_script_path.chmod(0o755) @@ -297,6 +264,11 @@ def _write_selected_pairs_manifest(path, pairs, selector=None): "score": float(pair.get("score", 0.0)), "r_conf_type": getattr(pair.get("r_conf"), "type", ""), "p_conf_type": getattr(pair.get("p_conf"), "type", ""), + "source": pair.get("source"), + "source_index": pair.get("source_index"), + "selection_direction": pair.get("selection_direction"), + "r_graph_diffs": pair.get("r_graph_diffs"), + "p_graph_diffs": pair.get("p_graph_diffs"), } for ind, pair in enumerate(pairs, start=1) ], @@ -391,12 +363,14 @@ def _run_pysis(pair_dir, inp_name, out_path, err_path, timeout_s, log): time.sleep(min(5, max(0.1, deadline - now))) @classmethod - def run_containerized(cls, payload_path): + def run_host(cls, payload_path): """ - Container-side TS guess runner. + Host-side TS guess runner. - This keeps pre-GSM conformer selection, joint optimization, ML pair scoring, - and GSM execution inside the same container environment. + The sklearn model probability calculation is delegated to the scorer + container by ``ConformerPairSelector``. Everything else stays in the + submitted host job so Python code changes do not require rebuilding the + scorer image. """ payload_path = Path(payload_path) work_dir = payload_path.parent @@ -425,17 +399,23 @@ def log_signal(signum, _frame): pass try: - print("Starting containerized YARP pre-GSM selection", file=log, flush=True) + print("Starting host YARP pre-GSM selection", file=log, flush=True) with payload_path.open("rb") as f: payload = pickle.load(f) rxn = payload["rxn"] config = payload["config"] + job_manager = payload["job_manager"] - os.environ["YARP_PREGSM_CONTAINER"] = "1" os.environ["YARP_DEBUG_PREGSM"] = "1" - selector = ConformerPairSelector(rxn, config, scratch_dir=work_dir / "joint_opt", log=log) + selector = ConformerPairSelector( + rxn, + config, + scratch_dir=work_dir / "joint_opt", + log=log, + job_manager=job_manager, + ) pairs = selector.select() cls._write_selected_pairs_manifest(work_dir / "selected_pairs.json", pairs, selector) print(f"Selected {len(pairs)} pair(s)", file=log, flush=True) From 3c6713aeedd93722ae538e43e10d1937bca12443 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Wed, 8 Jul 2026 16:08:57 -0400 Subject: [PATCH 12/14] ADding new model_scorer class file --- yarp/reaction/external/model_scorer.py | 140 +++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 yarp/reaction/external/model_scorer.py diff --git a/yarp/reaction/external/model_scorer.py b/yarp/reaction/external/model_scorer.py new file mode 100644 index 00000000..bedc1e12 --- /dev/null +++ b/yarp/reaction/external/model_scorer.py @@ -0,0 +1,140 @@ +"""Container-backed conformer-pair model scoring. + +The host YARP process prepares conformer-pair indicator features. The scorer +container owns only the sklearn/pickle model dependency stack and returns +``predict_proba`` values as JSON. +""" + +import json +import platform +import shlex +import subprocess +from pathlib import Path + +import pandas as pd + + +class ContainerModelScorer: + """Score indicator rows using the pinned sklearn model container.""" + + image_name = "erm42/yarp:model_scorer" + + def __init__(self, job_manager, work_dir, model_name, log=None): + if job_manager is None: + raise ValueError("ContainerModelScorer requires a job_manager configuration") + if model_name not in {"poor_model", "rich_model"}: + raise ValueError(f"Unknown conformer-pair model: {model_name}") + + self.job_manager = job_manager + self.work_dir = Path(work_dir) + self.work_dir.mkdir(parents=True, exist_ok=True) + self.model_name = model_name + self.log = log + self.calls = 0 + self.model_path = None + self.model_sha256 = None + + def predict_proba(self, indicators): + """Return sklearn ``predict_proba`` output for one or more feature rows.""" + if isinstance(indicators, list): + features = pd.concat(indicators, ignore_index=True) + else: + features = indicators.reset_index(drop=True) + + self.calls += 1 + call_dir = self.work_dir / f"score_{self.calls:04d}" + call_dir.mkdir(parents=True, exist_ok=True) + + input_path = call_dir / "features.csv" + output_path = call_dir / "proba.json" + stdout_path = call_dir / "scorer.out" + stderr_path = call_dir / "scorer.err" + + features.to_csv(input_path, index=False) + + prefix = get_container_prefix(self.job_manager, self.image_name, str(call_dir)) + cmd = " ".join([ + prefix, + "python", + "/opt/yarp_model_scorer/score_model.py", + "--model", + shlex.quote(self.model_name), + "--input", + "/work/features.csv", + "--output", + "/work/proba.json", + ]) + self._log(f"scoring {len(features)} row(s) with {self.model_name}") + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + stdout_path.write_text(result.stdout or "", encoding="utf-8") + stderr_path.write_text(result.stderr or "", encoding="utf-8") + + if result.returncode != 0: + raise RuntimeError( + "Conformer-pair model scorer container failed. " + f"See {stdout_path} and {stderr_path}." + ) + if not output_path.exists(): + raise RuntimeError(f"Conformer-pair model scorer did not write {output_path}") + + payload = json.loads(output_path.read_text(encoding="utf-8")) + self.model_path = payload.get("model_path") + self.model_sha256 = payload.get("model_sha256") + return payload["proba"] + + def _log(self, message): + if self.log is not None: + print(f"[ContainerModelScorer] {message}", file=self.log, flush=True) + + +def get_container_prefix(job_manager, image_name, work_dir, *, apptainer_run=False): + """Return a docker/apptainer/singularity command prefix for a work dir.""" + runner = job_manager.container + if runner == "docker": + check_cmd = subprocess.run( + ["docker", "images", "-q", image_name], + capture_output=True, + text=True, + ) + if not check_cmd.stdout.strip(): + subprocess.run(["docker", "pull", "--platform", "linux/amd64", image_name], check=True) + return ( + "docker run --platform linux/amd64 --rm " + f"-v {shlex.quote(work_dir)}:/work -w /work {shlex.quote(image_name)}" + ) + + if runner in {"apptainer", "singularity"}: + sanitized = image_name.replace("/", "_").replace(":", "_") + if sanitized.endswith(".sif"): + safe_filename = sanitized + local_sif_only = True + else: + safe_filename = f"{sanitized}.sif" + local_sif_only = False + + sif_path = Path(job_manager.sif_location) / safe_filename + if not sif_path.exists(): + if local_sif_only: + raise FileNotFoundError(f"Local {runner} image not found: {sif_path}") + sif_path.parent.mkdir(parents=True, exist_ok=True) + try: + subprocess.run( + [runner, "pull", str(sif_path), f"docker://{image_name}"], + check=True, + ) + except FileNotFoundError: + os_name = platform.system() + if os_name in {"Darwin", "Windows"}: + raise RuntimeError( + f"{runner} is not supported on {os_name}; use docker for this job." + ) from None + raise RuntimeError(f"Could not find '{runner}' on your system.") from None + + verb = "run" if apptainer_run else "exec" + return ( + f"{runner} {verb} -e " + f"--bind {shlex.quote(work_dir)}:/work " + f"--pwd /work {shlex.quote(str(sif_path))}" + ) + + raise ValueError(f"Unsupported container runner: {runner}") From bd47d08f6ac6aa04c9b071ed0de8be9ea5312f76 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Fri, 10 Jul 2026 12:45:46 -0400 Subject: [PATCH 13/14] Keep conformer scoring in lightweight model container --- .gitignore | 3 +- containers/jo_opt/Dockerfile | 67 ------------------- .../model_artifacts/model_scorer/README.md | 8 +++ containers/model_scorer/Dockerfile | 44 ++++++++++++ containers/model_scorer/model_scorer.def | 43 ++++++++++++ containers/model_scorer/score_model.py | 47 +++++++++++++ setup.py | 3 - test/reaction/test_model_scorer.py | 34 ++++++++++ yarp/reaction/conf_sampling/select_pairs.py | 13 ++-- yarp/reaction/external/model_scorer.py | 8 +-- 10 files changed, 188 insertions(+), 82 deletions(-) delete mode 100644 containers/jo_opt/Dockerfile create mode 100644 containers/model_artifacts/model_scorer/README.md create mode 100644 containers/model_scorer/Dockerfile create mode 100644 containers/model_scorer/model_scorer.def create mode 100644 containers/model_scorer/score_model.py create mode 100644 test/reaction/test_model_scorer.py diff --git a/.gitignore b/.gitignore index a888604b..3ccb553f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ debug/* .vscode containers/*.sif containers/*/*.def -!containers/jo_opt/jo_opt.def !containers/model_scorer/model_scorer.def containers/*.tar containers/orca/*.tar.* @@ -187,7 +186,7 @@ cython_debug/ # Local conformer-pair selection model artifacts yarp/reaction/conf_sampling/*.sav -containers/model_artifacts/jo_opt/*.sav +containers/model_artifacts/**/*.sav # PyPI configuration file .pypirc diff --git a/containers/jo_opt/Dockerfile b/containers/jo_opt/Dockerfile deleted file mode 100644 index 1b576353..00000000 --- a/containers/jo_opt/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -# ============================================================================ -# YARP xTB/OpenBabel Joint Optimization + Pysisyphus GSM Container -# ============================================================================ -FROM ubuntu:22.04 - -ENV DEBIAN_FRONTEND=noninteractive -ENV CONDA_DIR=/opt/conda - -RUN apt-get update && apt-get install -y \ - build-essential \ - wget \ - curl \ - git \ - libopenblas-openmp-dev \ - liblapack-dev \ - libopenmpi-dev \ - openmpi-bin \ - && rm -rf /var/lib/apt/lists/* - -RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh && \ - bash /tmp/miniforge.sh -b -p $CONDA_DIR && \ - rm /tmp/miniforge.sh - -ENV PATH="${CONDA_DIR}/bin:${PATH}" - -RUN mamba create -n jo_opt -c conda-forge -y \ - python=3.10 \ - xtb \ - openbabel \ - rdkit \ - numpy \ - scipy \ - scikit-learn=1.3.0 \ - ase \ - pyyaml \ - ipython \ - pip \ - && mamba clean -afy - -ENV CONDA_DEFAULT_ENV=jo_opt -ENV PATH="${CONDA_DIR}/envs/jo_opt/bin:${PATH}" -ENV PYSISRC=/root/.pysisyphusrc - -RUN pip install --no-cache-dir pysisyphus==0.7.6.post2 -RUN python -c "import importlib.metadata as md; assert md.version('scikit-learn') == '1.3.0', md.version('scikit-learn'); assert md.version('pysisyphus') == '0.7.6.post2', md.version('pysisyphus')" - -WORKDIR /opt/yarp -COPY . /opt/yarp -COPY containers/model_artifacts/jo_opt/*.sav /tmp/yarp_conf_models/ -RUN pip install --no-cache-dir -e . -RUN cp /tmp/yarp_conf_models/*.sav /opt/yarp/yarp/reaction/conf_sampling/ && \ - test -s /opt/yarp/yarp/reaction/conf_sampling/poor_model.sav && \ - test -s /opt/yarp/yarp/reaction/conf_sampling/rich_model.sav - -RUN echo "[xtb]" > /root/.pysisyphusrc && \ - echo "cmd=xtb" >> /root/.pysisyphusrc -RUN pysis --help > /tmp/pysis_help.txt - -ENV OMP_STACKSIZE=1G -ENV OMP_MAX_ACTIVE_LEVELS=1 -ENV OPENBLAS_NUM_THREADS=1 -ENV MKL_NUM_THREADS=1 -ENV LD_LIBRARY_PATH="/opt/conda/envs/jo_opt/lib:/usr/lib/x86_64-linux-gnu" - -WORKDIR /work -SHELL ["/bin/bash", "-c"] -CMD ["/bin/bash"] diff --git a/containers/model_artifacts/model_scorer/README.md b/containers/model_artifacts/model_scorer/README.md new file mode 100644 index 00000000..d86def55 --- /dev/null +++ b/containers/model_artifacts/model_scorer/README.md @@ -0,0 +1,8 @@ +# model_scorer Artifacts + +Place `poor_model.sav` and `rich_model.sav` in this directory before building +the `erm42/yarp:model_scorer` image. + +These files are intentionally ignored by git. The lightweight scorer image owns +the pinned scikit-learn/numpy stack needed to unpickle and run the models; the +base YARP environment does not need scikit-learn for conformer-pair scoring. diff --git a/containers/model_scorer/Dockerfile b/containers/model_scorer/Dockerfile new file mode 100644 index 00000000..ac158d20 --- /dev/null +++ b/containers/model_scorer/Dockerfile @@ -0,0 +1,44 @@ +# ============================================================================ +# YARP conformer-pair model scorer +# ============================================================================ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV CONDA_DIR=/opt/conda + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh && \ + bash /tmp/miniforge.sh -b -p "${CONDA_DIR}" && \ + rm /tmp/miniforge.sh + +ENV PATH="${CONDA_DIR}/bin:${PATH}" + +RUN mamba create -n model_scorer -c conda-forge -y \ + python=3.10 \ + numpy=1.26 \ + scipy \ + pandas \ + scikit-learn=1.3.0 \ + && mamba clean -afy + +ENV CONDA_DEFAULT_ENV=model_scorer +ENV PATH="${CONDA_DIR}/envs/model_scorer/bin:${PATH}" + +WORKDIR /opt/yarp_model_scorer +COPY containers/model_scorer/score_model.py /opt/yarp_model_scorer/score_model.py +COPY containers/model_artifacts/model_scorer/*.sav /opt/yarp_models/ + +RUN python -c "import importlib.metadata as md; assert md.version('scikit-learn') == '1.3.0', md.version('scikit-learn')" && \ + python - <<'PY' +import numpy +assert numpy.__version__.startswith("1.26."), numpy.__version__ +PY +RUN test -s /opt/yarp_models/poor_model.sav && \ + test -s /opt/yarp_models/rich_model.sav + +WORKDIR /work +CMD ["/bin/bash"] diff --git a/containers/model_scorer/model_scorer.def b/containers/model_scorer/model_scorer.def new file mode 100644 index 00000000..098a4b33 --- /dev/null +++ b/containers/model_scorer/model_scorer.def @@ -0,0 +1,43 @@ +Bootstrap: docker +From: ubuntu:22.04 + +%files + containers/model_scorer/score_model.py /opt/yarp_model_scorer/score_model.py + containers/model_artifacts/model_scorer/poor_model.sav /opt/yarp_models/poor_model.sav + containers/model_artifacts/model_scorer/rich_model.sav /opt/yarp_models/rich_model.sav + +%environment + export CONDA_DIR=/opt/conda + export CONDA_DEFAULT_ENV=model_scorer + export PATH="/opt/conda/envs/model_scorer/bin:/opt/conda/bin:${PATH}" + +%post + export DEBIAN_FRONTEND=noninteractive + export CONDA_DIR=/opt/conda + export PATH="${CONDA_DIR}/bin:${PATH}" + + apt-get update + apt-get install -y --no-install-recommends ca-certificates wget + apt-get clean + rm -rf /var/lib/apt/lists/* + + wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh + bash /tmp/miniforge.sh -b -p "${CONDA_DIR}" + rm /tmp/miniforge.sh + + mamba create -n model_scorer -c conda-forge -y \ + python=3.10 \ + numpy=1.26 \ + scipy \ + pandas \ + scikit-learn=1.3.0 + mamba clean -afy + + export PATH="${CONDA_DIR}/envs/model_scorer/bin:${PATH}" + python -c "import importlib.metadata as md; assert md.version('scikit-learn') == '1.3.0', md.version('scikit-learn')" + python -c "import numpy; assert numpy.__version__.startswith('1.26.'), numpy.__version__" + test -s /opt/yarp_models/poor_model.sav + test -s /opt/yarp_models/rich_model.sav + +%runscript + exec /bin/bash "$@" diff --git a/containers/model_scorer/score_model.py b/containers/model_scorer/score_model.py new file mode 100644 index 00000000..973f391e --- /dev/null +++ b/containers/model_scorer/score_model.py @@ -0,0 +1,47 @@ +import argparse +import hashlib +import json +import pickle +from pathlib import Path + +import pandas as pd + + +MODEL_DIR = Path("/opt/yarp_models") + + +def sha256(path): + digest = hashlib.sha256() + with Path(path).open("rb") as f: + for chunk in iter(lambda: f.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def main(): + parser = argparse.ArgumentParser(description="Score YARP conformer-pair indicators.") + parser.add_argument("--model", choices=["poor_model", "rich_model"], required=True) + parser.add_argument("--input", required=True) + parser.add_argument("--output", required=True) + args = parser.parse_args() + + model_path = MODEL_DIR / f"{args.model}.sav" + if not model_path.exists(): + raise FileNotFoundError(f"Missing model artifact: {model_path}") + + features = pd.read_csv(args.input) + with model_path.open("rb") as f: + model = pickle.load(f) + + payload = { + "model": args.model, + "model_path": str(model_path), + "model_sha256": sha256(model_path), + "n_rows": int(len(features)), + "proba": model.predict_proba(features).tolist(), + } + Path(args.output).write_text(json.dumps(payload, indent=2), encoding="utf-8") + + +if __name__ == "__main__": + main() diff --git a/setup.py b/setup.py index baf23f6b..d11fe8db 100644 --- a/setup.py +++ b/setup.py @@ -5,9 +5,6 @@ name="yarp", # This is the name you'll use to import or pip install version="3.0.0", packages=find_packages(), # Automatically finds yarp/ and its subpackages - package_data={ - "yarp.reaction.conf_sampling": ["*.sav"], - }, install_requires=[], # Add dependencies here if needed entry_points={ # Allows for easy command-line executables 'console_scripts': [ diff --git a/test/reaction/test_model_scorer.py b/test/reaction/test_model_scorer.py new file mode 100644 index 00000000..e77a3bee --- /dev/null +++ b/test/reaction/test_model_scorer.py @@ -0,0 +1,34 @@ +import importlib.util +from types import SimpleNamespace +from pathlib import Path + + +MODULE_PATH = Path(__file__).resolve().parents[2] / "yarp" / "reaction" / "external" / "model_scorer.py" +SPEC = importlib.util.spec_from_file_location("model_scorer_under_test", MODULE_PATH) +model_scorer = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(model_scorer) + + +class DummyRunResult: + def __init__(self, stdout): + self.stdout = stdout + + +def test_docker_prefix_returns_when_image_exists(monkeypatch, tmp_path): + calls = [] + + def fake_run(cmd, **kwargs): + calls.append(cmd) + return DummyRunResult(stdout="image-id\n") + + monkeypatch.setattr(model_scorer.subprocess, "run", fake_run) + + prefix = model_scorer.get_container_prefix( + SimpleNamespace(container="docker"), + "erm42/yarp:model_scorer", + str(tmp_path), + ) + + assert prefix.startswith("docker run --platform linux/amd64 --rm") + assert "erm42/yarp:model_scorer" in prefix + assert calls == [["docker", "images", "-q", "erm42/yarp:model_scorer"]] diff --git a/yarp/reaction/conf_sampling/select_pairs.py b/yarp/reaction/conf_sampling/select_pairs.py index 189fd36d..08c7d751 100644 --- a/yarp/reaction/conf_sampling/select_pairs.py +++ b/yarp/reaction/conf_sampling/select_pairs.py @@ -7,12 +7,13 @@ def select_gsm_pairs(rxn, config, scratch_dir=None): """ Select reactant/product conformer pairs for GSM. - Host-side ML pair selection has been removed. The Pysisyphus TS guess - workflow now runs conformer selection, joint optimization, ML scoring, and - GSM inside the jo_opt container. + The old direct host helper has been removed from this module. The + Pysisyphus TS guess workflow owns conformer selection and joint + optimization; only sklearn model scoring is delegated to the model_scorer + container. """ raise RuntimeError( - "Host-side GSM conformer pair selection has been removed. " - "Use the Pysisyphus TS guess workflow, which runs pre-GSM selection " - "inside the jo_opt container." + "Direct GSM conformer pair selection from yarp.reaction.conf_sampling " + "has been removed. Use the Pysisyphus TS guess workflow; it delegates " + "only sklearn model scoring to the model_scorer container." ) diff --git a/yarp/reaction/external/model_scorer.py b/yarp/reaction/external/model_scorer.py index bedc1e12..a49d5984 100644 --- a/yarp/reaction/external/model_scorer.py +++ b/yarp/reaction/external/model_scorer.py @@ -98,10 +98,10 @@ def get_container_prefix(job_manager, image_name, work_dir, *, apptainer_run=Fal ) if not check_cmd.stdout.strip(): subprocess.run(["docker", "pull", "--platform", "linux/amd64", image_name], check=True) - return ( - "docker run --platform linux/amd64 --rm " - f"-v {shlex.quote(work_dir)}:/work -w /work {shlex.quote(image_name)}" - ) + return ( + "docker run --platform linux/amd64 --rm " + f"-v {shlex.quote(work_dir)}:/work -w /work {shlex.quote(image_name)}" + ) if runner in {"apptainer", "singularity"}: sanitized = image_name.replace("/", "_").replace(":", "_") From 13a8b14abf0b2fe06fb8d1f75ad43deb5739c743 Mon Sep 17 00:00:00 2001 From: "Thomas J. Burton" Date: Fri, 10 Jul 2026 14:19:09 -0400 Subject: [PATCH 14/14] Containerize joint optimization engines --- .gitignore | 1 + containers/joint_opt/Dockerfile | 37 +++ containers/joint_opt/joint_opt.def | 41 ++++ containers/joint_opt/joint_opt.py | 225 ++++++++++++++++++ test/reaction/test_joint_opt_container.py | 76 ++++++ test/reaction/test_xtb_joint_opt.py | 51 +--- test/util/test_ts_guess_config.py | 1 + yarp/reaction/conf_sampling/joint_opt.py | 264 --------------------- yarp/reaction/external/conformer_select.py | 25 +- yarp/reaction/external/joint_opt.py | 245 ++++++++++++++++--- yarp/util/config.py | 3 + 11 files changed, 607 insertions(+), 362 deletions(-) create mode 100644 containers/joint_opt/Dockerfile create mode 100644 containers/joint_opt/joint_opt.def create mode 100644 containers/joint_opt/joint_opt.py create mode 100644 test/reaction/test_joint_opt_container.py delete mode 100644 yarp/reaction/conf_sampling/joint_opt.py diff --git a/.gitignore b/.gitignore index 3ccb553f..8a52e22a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ debug/* containers/*.sif containers/*/*.def !containers/model_scorer/model_scorer.def +!containers/joint_opt/joint_opt.def containers/*.tar containers/orca/*.tar.* containers/orca/example diff --git a/containers/joint_opt/Dockerfile b/containers/joint_opt/Dockerfile new file mode 100644 index 00000000..012b1e02 --- /dev/null +++ b/containers/joint_opt/Dockerfile @@ -0,0 +1,37 @@ +# ============================================================================ +# YARP xTB/OpenBabel joint-optimization runner +# ============================================================================ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV CONDA_DIR=/opt/conda + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh && \ + bash /tmp/miniforge.sh -b -p "${CONDA_DIR}" && \ + rm /tmp/miniforge.sh + +ENV PATH="${CONDA_DIR}/bin:${PATH}" + +RUN mamba create -n joint_opt -c conda-forge -y \ + python=3.10 \ + numpy \ + openbabel \ + xtb \ + && mamba clean -afy + +ENV CONDA_DEFAULT_ENV=joint_opt +ENV PATH="${CONDA_DIR}/envs/joint_opt/bin:${PATH}" +ENV OMP_MAX_ACTIVE_LEVELS=1 +ENV OPENBLAS_NUM_THREADS=1 +ENV MKL_NUM_THREADS=1 + +WORKDIR /opt/yarp_joint_opt +COPY containers/joint_opt/joint_opt.py /opt/yarp_joint_opt/joint_opt.py + +WORKDIR /work +CMD ["/bin/bash"] diff --git a/containers/joint_opt/joint_opt.def b/containers/joint_opt/joint_opt.def new file mode 100644 index 00000000..a203a0bb --- /dev/null +++ b/containers/joint_opt/joint_opt.def @@ -0,0 +1,41 @@ +Bootstrap: docker +From: ubuntu:22.04 + +%files + containers/joint_opt/joint_opt.py /opt/yarp_joint_opt/joint_opt.py + +%environment + export CONDA_DIR=/opt/conda + export CONDA_DEFAULT_ENV=joint_opt + export PATH="/opt/conda/envs/joint_opt/bin:/opt/conda/bin:${PATH}" + export OMP_MAX_ACTIVE_LEVELS=1 + export OPENBLAS_NUM_THREADS=1 + export MKL_NUM_THREADS=1 + +%post + export DEBIAN_FRONTEND=noninteractive + export CONDA_DIR=/opt/conda + export PATH="${CONDA_DIR}/bin:${PATH}" + + apt-get update + apt-get install -y --no-install-recommends ca-certificates wget + apt-get clean + rm -rf /var/lib/apt/lists/* + + wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O /tmp/miniforge.sh + bash /tmp/miniforge.sh -b -p "${CONDA_DIR}" + rm /tmp/miniforge.sh + + mamba create -n joint_opt -c conda-forge -y \ + python=3.10 \ + numpy \ + openbabel \ + xtb + mamba clean -afy + + export PATH="${CONDA_DIR}/envs/joint_opt/bin:${PATH}" + python -c "from openbabel import openbabel as ob; assert ob.OBForceField.FindForceField('uff') is not None" + xtb --version + +%runscript + exec /bin/bash "$@" diff --git a/containers/joint_opt/joint_opt.py b/containers/joint_opt/joint_opt.py new file mode 100644 index 00000000..af5a8ab0 --- /dev/null +++ b/containers/joint_opt/joint_opt.py @@ -0,0 +1,225 @@ +#!/usr/bin/env python3 +"""JSON runner for YARP's OpenBabel/xTB joint optimization boundary.""" + +import argparse +import json +import re +import shutil +import subprocess +from pathlib import Path + +import numpy as np +from openbabel import openbabel as ob + + +def _safe_dirname(label): + safe = re.sub(r"[^A-Za-z0-9_.-]+", "_", str(label)).strip("._") + return safe or "joint_opt" + + +def _geometry(elements, geo): + geometry = np.asarray(geo, dtype=float) + if geometry.shape != (len(elements), 3): + raise ValueError(f"Expected geometry shape {(len(elements), 3)}, got {geometry.shape}") + return geometry + + +def _bond_matrix(elements, target_bem): + matrix = np.asarray(target_bem, dtype=float) + if matrix.shape != (len(elements), len(elements)): + raise ValueError(f"Expected target_bem shape {(len(elements), len(elements))}, got {matrix.shape}") + if not np.allclose(matrix, matrix.T): + raise ValueError("target_bem must be symmetric") + return matrix + + +def _build_ob_mol(elements, geometry, target_bem, formal_charges, radical_atoms): + molecule = ob.OBMol() + molecule.BeginModify() + try: + for atom_index, (element, xyz) in enumerate(zip(elements, geometry)): + atomic_number = ob.GetAtomicNum(str(element).capitalize()) + if atomic_number <= 0: + raise ValueError(f"Unknown element for OpenBabel: {element}") + atom = molecule.NewAtom() + atom.SetAtomicNum(atomic_number) + atom.SetVector(*map(float, xyz)) + atom.SetFormalCharge(int(formal_charges[atom_index])) + if atom_index in radical_atoms: + atom.SetSpinMultiplicity(2) + + for atom_i in range(len(elements) - 1): + for atom_j in range(atom_i + 1, len(elements)): + if target_bem[atom_i, atom_j] <= 0: + continue + bond_order = max(1, int(target_bem[atom_i, atom_j])) + molecule.AddBond(atom_i + 1, atom_j + 1, bond_order) + finally: + molecule.EndModify() + return molecule + + +def _ob_optimize(elements, geometry, target_bem, formal_charges, radical_atoms, options): + molecule = _build_ob_mol(elements, geometry, target_bem, formal_charges, radical_atoms) + requested = str(options.get("ff_name", "uff")) + force_field = ob.OBForceField.FindForceField(requested) or ob.OBForceField.FindForceField("uff") + if force_field is None: + raise RuntimeError(f"OpenBabel force field not found: {requested} or uff") + if not force_field.Setup(molecule): + force_field = ob.OBForceField.FindForceField("uff") + if force_field is None or not force_field.Setup(molecule): + raise RuntimeError("Failed to set up OpenBabel force field for joint optimization") + + force_field.ConjugateGradients(500) + force_field.GetCoordinates(molecule) + return [ + [molecule.GetAtom(index).GetX(), molecule.GetAtom(index).GetY(), molecule.GetAtom(index).GetZ()] + for index in range(1, molecule.NumAtoms() + 1) + ] + + +def _write_xyz(path, elements, geometry): + lines = [str(len(elements)), ""] + lines.extend( + f"{str(element).upper()} {xyz[0]:>12.8f} {xyz[1]:>12.8f} {xyz[2]:>12.8f}" + for element, xyz in zip(elements, geometry) + ) + path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def _write_xcontrol(path, constraints, force_constant): + with path.open("w", encoding="utf-8") as handle: + for constraint in constraints: + atom_i = int(constraint["atom_i"]) + atom_j = int(constraint["atom_j"]) + distance = float(constraint["distance"]) + handle.write("$constrain\n") + handle.write(f"force constant={float(force_constant)}\n") + handle.write(f"distance: {atom_i}, {atom_j}, {distance:.4f}\n") + handle.write("$\n\n") + + +def _xtb_lot_flags(lot): + lot = str(lot).lower() + if lot == "gfnff": + return ["--gfnff"] + if lot == "gfn2": + return ["--gfn", "2"] + if lot == "gfn1": + return ["--gfn", "1"] + raise ValueError(f"Unsupported xTB joint optimization level: {lot}") + + +def _read_xyz(path, expected_elements): + lines = path.read_text(encoding="utf-8", errors="replace").splitlines() + if not lines: + raise ValueError(f"Empty xyz output: {path}") + atom_count = int(lines[0].strip()) + if atom_count != len(expected_elements) or len(lines) < atom_count + 2: + raise ValueError(f"Unexpected xyz output shape in {path}") + geometry = [] + for line in lines[2:atom_count + 2]: + fields = line.split() + if len(fields) < 4: + raise ValueError(f"Malformed xyz line in {path}: {line!r}") + geometry.append([float(fields[1]), float(fields[2]), float(fields[3])]) + return geometry + + +def _xtb_optimize(elements, geometry, constraints, options, job_dir): + namespace = "joint_opt" + input_xyz = job_dir / "input.xyz" + xcontrol = job_dir / "joint_opt.xcontrol" + stdout_path = job_dir / "xtb.stdout" + stderr_path = job_dir / "xtb.stderr" + _write_xyz(input_xyz, elements, geometry) + _write_xcontrol(xcontrol, constraints, options.get("force_constant", 1.0)) + + multiplicity = int(options.get("multiplicity", 1)) + command = [ + "xtb", + input_xyz.name, + "--iterations", + str(int(options.get("scf_iters", 300))), + "--chrg", + str(int(options.get("charge", 0))), + "--uhf", + str(max(multiplicity - 1, 0)), + "--namespace", + namespace, + "--opt", + "--parallel", + str(max(int(options.get("n_cpus", 1)), 1)), + "--input", + xcontrol.name, + ] + command.extend(_xtb_lot_flags(options.get("lot", "gfn2"))) + result = subprocess.run(command, cwd=job_dir, capture_output=True, text=True) + stdout_path.write_text(result.stdout or "", encoding="utf-8") + stderr_path.write_text(result.stderr or "", encoding="utf-8") + + output_xyz = next( + (path for path in (job_dir / f"{namespace}.xtbopt.xyz", job_dir / "xtbopt.xyz") if path.exists()), + None, + ) + combined_output = "\n".join((result.stdout or "", result.stderr or "")) + if result.returncode != 0 or "GEOMETRY OPTIMIZATION CONVERGED" not in combined_output or output_xyz is None: + detail = f"xTB exited with code {result.returncode}" + if output_xyz is None: + detail += "; optimized geometry was not written" + if "GEOMETRY OPTIMIZATION CONVERGED" not in combined_output: + detail += "; optimization did not converge" + raise RuntimeError(detail) + return _read_xyz(output_xyz, elements) + + +def _run_job(job, jobs_dir): + label = job.get("label") + engine = job.get("engine") + elements = list(job.get("elements", [])) + geometry = _geometry(elements, job.get("geo")) + target_bem = _bond_matrix(elements, job.get("target_bem")) + formal_charges = [int(charge) for charge in job.get("formal_charges", [0] * len(elements))] + radical_atoms = {int(atom_index) for atom_index in job.get("radical_atoms", [])} + if len(formal_charges) != len(elements): + raise ValueError("formal_charges must contain one entry per element") + options = dict(job.get("options") or {}) + job_dir = jobs_dir / _safe_dirname(label) + job_dir.mkdir(parents=True, exist_ok=True) + + try: + if engine == "ob": + optimized = _ob_optimize(elements, geometry, target_bem, formal_charges, radical_atoms, options) + elif engine == "xtb": + optimized = _xtb_optimize(elements, geometry, job.get("constraints") or [], options, job_dir) + else: + raise ValueError(f"Unsupported joint optimization engine: {engine}") + result = {"label": label, "success": True, "geo": optimized} + except Exception as exc: + result = {"label": label, "success": False, "error": f"{type(exc).__name__}: {exc}"} + + if not options.get("keep_files", False): + shutil.rmtree(job_dir, ignore_errors=True) + return result + + +def main(argv=None): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--input", required=True, type=Path) + parser.add_argument("--output", required=True, type=Path) + args = parser.parse_args(argv) + + payload = json.loads(args.input.read_text(encoding="utf-8")) + if payload.get("protocol_version") != 1: + raise ValueError("Unsupported joint optimization protocol version") + jobs = payload.get("jobs") + if not isinstance(jobs, list): + raise ValueError("Joint optimization input must contain a jobs list") + + jobs_dir = args.output.parent / "jobs" + results = [_run_job(job, jobs_dir) for job in jobs] + args.output.write_text(json.dumps({"protocol_version": 1, "results": results}, indent=2), encoding="utf-8") + + +if __name__ == "__main__": + main() diff --git a/test/reaction/test_joint_opt_container.py b/test/reaction/test_joint_opt_container.py new file mode 100644 index 00000000..aecbec7b --- /dev/null +++ b/test/reaction/test_joint_opt_container.py @@ -0,0 +1,76 @@ +import json +from types import SimpleNamespace + +import numpy as np +import pytest + +pytest.importorskip("openbabel") + +from yarp.reaction.external import joint_opt + + +class DummyRunResult: + returncode = 0 + stdout = "container stdout" + stderr = "" + + +def test_container_engine_sends_one_batch_and_rehydrates_conformers(monkeypatch, tmp_path): + config = SimpleNamespace( + joint_opt_engine="xtb", + joint_opt_image="example/joint_opt:test", + xtb_joint_keep_files=True, + xtb_joint_lot="gfn2", + charge=0, + multiplicity=1, + n_cpus=2, + xtb_joint_force_constant=1.0, + xtb_joint_scf_iters=300, + bias_lot="uff", + ) + conformers = [ + SimpleNamespace( + elements=["C", "H"], + geo=np.array([[0.0, 0.0, 0.0], [1.2, 0.0, 0.0]]), + type="conf_a", + lot="crest", + software="crest", + ), + SimpleNamespace( + elements=["C", "H"], + geo=np.array([[0.0, 0.0, 0.0], [1.3, 0.0, 0.0]]), + type="conf_b", + lot="crest", + software="crest", + ), + ] + + monkeypatch.setattr(joint_opt, "get_container_prefix", lambda *args: "container-prefix") + + def fake_run(command, **kwargs): + assert "/opt/yarp_joint_opt/joint_opt.py" in command + work_dir = tmp_path / "batch_0001" + payload = json.loads((work_dir / "input.json").read_text()) + assert len(payload["jobs"]) == 2 + assert payload["jobs"][0]["options"]["n_cpus"] == 2 + (work_dir / "output.json").write_text( + json.dumps( + { + "results": [ + {"label": "a", "success": True, "geo": [[0, 0, 0], [1.1, 0, 0]]}, + {"label": "b", "success": False, "error": "not converged"}, + ] + } + ) + ) + return DummyRunResult() + + monkeypatch.setattr(joint_opt.subprocess, "run", fake_run) + engine = joint_opt.ContainerJointOptimizationEngine(SimpleNamespace(container="docker"), tmp_path, config) + optimized = engine.optimize_many(conformers, np.array([[0, 1], [1, 0]]), ["a", "b"]) + + assert optimized[1] is None + assert optimized[0].type == "biased_xtb_conf_a" + assert optimized[0].software == "xtb" + assert optimized[0].lot == "gfn2" + np.testing.assert_allclose(optimized[0].geo, [[0, 0, 0], [1.1, 0, 0]]) diff --git a/test/reaction/test_xtb_joint_opt.py b/test/reaction/test_xtb_joint_opt.py index 051a91a4..d61df634 100644 --- a/test/reaction/test_xtb_joint_opt.py +++ b/test/reaction/test_xtb_joint_opt.py @@ -3,9 +3,7 @@ pytest.importorskip("openbabel") -from yarp.reaction.conf_sampling.joint_opt import _build_xtb_command -from yarp.reaction.conf_sampling.joint_opt import bem_to_distance_constraints -from yarp.reaction.conf_sampling.joint_opt import write_xtb_xcontrol +from yarp.reaction.external.joint_opt import bem_to_distance_constraints def test_bem_to_distance_constraints_uses_one_indexed_bonds(): @@ -29,50 +27,3 @@ def test_bem_to_distance_constraints_uses_one_indexed_bonds(): def test_bem_to_distance_constraints_rejects_shape_mismatch(): with pytest.raises(ValueError, match="does not match"): bem_to_distance_constraints(["C"], np.zeros((2, 2))) - - -def test_write_xtb_xcontrol_preserves_legacy_constraint_format(tmp_path): - constraints = bem_to_distance_constraints(["C", "H"], np.array([[0, 1], [1, 0]])) - xcontrol = tmp_path / "joint_opt.xcontrol" - - write_xtb_xcontrol(xcontrol, constraints, force_constant=1.0) - - assert xcontrol.read_text() == ( - "$constrain\n" - "force constant=1.0\n" - "distance: 1, 2, 1.1470\n" - "$\n\n" - ) - - -def test_build_xtb_command_maps_multiplicity_to_uhf(): - cmd = _build_xtb_command( - "input.xyz", - "joint_opt.xcontrol", - namespace="joint_opt", - lot="gfn2", - charge=-1, - multiplicity=2, - n_cpus=4, - scf_iters=500, - ) - - assert cmd == [ - "xtb", - "input.xyz", - "--iterations", - "500", - "--chrg", - "-1", - "--uhf", - "1", - "--namespace", - "joint_opt", - "--opt", - "--parallel", - "4", - "--input", - "joint_opt.xcontrol", - "--gfn", - "2", - ] diff --git a/test/util/test_ts_guess_config.py b/test/util/test_ts_guess_config.py index 2ec181a4..ed74502e 100644 --- a/test/util/test_ts_guess_config.py +++ b/test/util/test_ts_guess_config.py @@ -13,6 +13,7 @@ def test_ts_guess_config_defaults_to_openbabel_joint_opt(): ) assert cfg.joint_opt_engine == "ob" + assert cfg.joint_opt_image == "erm42/yarp:joint_opt" assert cfg.xtb_joint_lot == "gfn2" diff --git a/yarp/reaction/conf_sampling/joint_opt.py b/yarp/reaction/conf_sampling/joint_opt.py deleted file mode 100644 index ac84ea45..00000000 --- a/yarp/reaction/conf_sampling/joint_opt.py +++ /dev/null @@ -1,264 +0,0 @@ -import copy -import numpy as np -import shutil -import subprocess -from pathlib import Path -from typing import NamedTuple -from openbabel import openbabel as ob -from yarp.yarpecule.input_parsers import xyz_parse -from yarp.util.properties import el_radii -from yarp.util.write_files import mol_write_yp -from yarp.util.write_files import xyz_write - - -class XTBConstraint(NamedTuple): - atom_i: int - atom_j: int - distance: float - -def ob_joint_optimize(conformer, target_bem, ff_name="uff"): - """ - Applies constraints based on the target BEM and runs an OpenBabel FF optimization. - Returns a NEW conformer object with the biased geometry. - """ - obMol = build_ob_mol(conformer.elements, conformer.geo, target_bem) - ff = ob.OBForceField.FindForceField(ff_name) or ob.OBForceField.FindForceField("uff") - if ff is None: - raise RuntimeError(f"OpenBabel force field not found: {ff_name} or uff") - - if not ff.Setup(obMol): - ff = ob.OBForceField.FindForceField("uff") - if ff is None or not ff.Setup(obMol): - raise RuntimeError("Failed to set up OpenBabel force field for joint optimization") - - ff.ConjugateGradients(500) - ff.GetCoordinates(obMol) - - biased_conf = copy.deepcopy(conformer) - biased_conf.geo = np.array([[obMol.GetAtom(i).GetX(), obMol.GetAtom(i).GetY(), obMol.GetAtom(i).GetZ()] - for i in range(1, obMol.NumAtoms() + 1)]) - biased_conf.type = f"biased_{conformer.type}" - - return biased_conf - - -def bem_to_distance_constraints(elements, target_bem): - """ - Convert a target BEM into xTB distance constraints. - - Any positive off-diagonal BEM entry is treated as a target bond. Distances - follow the legacy xTB joint-optimization behavior: summed covalent radii. - Atom indices are converted to xTB's 1-indexed convention. - """ - target_bem = np.asarray(target_bem) - if target_bem.ndim != 2 or target_bem.shape[0] != target_bem.shape[1]: - raise ValueError(f"target_bem must be a square matrix, got shape {target_bem.shape}") - if len(elements) != target_bem.shape[0]: - raise ValueError( - f"elements length ({len(elements)}) does not match target_bem size ({target_bem.shape[0]})" - ) - - constraints = [] - for i in range(target_bem.shape[0] - 1): - for j in range(i + 1, target_bem.shape[1]): - if target_bem[i, j] <= 0: - continue - - radius_i = el_radii.get(elements[i], el_radii.get(str(elements[i]).capitalize())) - radius_j = el_radii.get(elements[j], el_radii.get(str(elements[j]).capitalize())) - if radius_i is None or radius_j is None: - raise KeyError(f"Missing covalent radius for constrained pair {elements[i]}-{elements[j]}") - - constraints.append(XTBConstraint(i + 1, j + 1, float(radius_i + radius_j))) - - return constraints - - -def write_xtb_xcontrol(path, constraints, force_constant=1.0): - """ - Write xTB distance constraints using the legacy one-block-per-distance format. - """ - path = Path(path) - with path.open("w", encoding="utf-8") as f: - for constraint in constraints: - f.write("$constrain\n") - f.write(f"force constant={force_constant}\n") - f.write(f"distance: {constraint.atom_i}, {constraint.atom_j}, {constraint.distance:.4f}\n") - f.write("$\n\n") - - -def _xtb_lot_flags(lot): - lot = lot.lower() - if lot == "gfnff": - return ["--gfnff"] - if lot == "gfn2": - return ["--gfn", "2"] - if lot == "gfn1": - return ["--gfn", "1"] - raise ValueError(f"Unsupported xTB joint optimization level: {lot}") - - -def _build_xtb_command( - input_xyz, - xcontrol, - *, - namespace, - lot="gfn2", - xtb_path="xtb", - charge=0, - multiplicity=1, - n_cpus=1, - scf_iters=300, - solvent=None, - solvation_model="alpb", -): - cmd = [ - xtb_path, - Path(input_xyz).name, - "--iterations", - str(scf_iters), - "--chrg", - str(charge), - "--uhf", - str(max(int(multiplicity) - 1, 0)), - "--namespace", - namespace, - "--opt", - "--parallel", - str(n_cpus), - "--input", - Path(xcontrol).name, - ] - cmd.extend(_xtb_lot_flags(lot)) - - if solvent: - model = solvation_model.lower() - if model not in {"alpb", "gbsa"}: - raise ValueError(f"Unsupported xTB solvation model: {solvation_model}") - cmd.extend([f"--{model}", str(solvent)]) - - return cmd - - -def _xtb_converged(stdout, stderr, output_path=None): - text = "\n".join([stdout or "", stderr or ""]) - if output_path is not None and Path(output_path).exists(): - text += "\n" + Path(output_path).read_text(encoding="utf-8", errors="replace") - return "GEOMETRY OPTIMIZATION CONVERGED" in text - - -def _find_xtbopt_xyz(work_dir, namespace): - work_dir = Path(work_dir) - for candidate in [work_dir / f"{namespace}.xtbopt.xyz", work_dir / "xtbopt.xyz"]: - if candidate.exists(): - return candidate - return None - - -def xtb_joint_optimize( - conformer, - target_bem, - scratch_dir, - *, - lot="gfn2", - xtb_path="xtb", - charge=0, - multiplicity=1, - n_cpus=1, - force_constant=1.0, - scf_iters=300, - solvent=None, - solvation_model="alpb", - keep_files=False, - runner=subprocess.run, -): - """ - Applies target-BEM distance constraints and runs xTB geometry optimization. - - Returns a NEW conformer object with the biased geometry. If xTB fails or - does not converge, returns None so pair selection can skip the candidate. - """ - work_dir = Path(scratch_dir) - work_dir.mkdir(parents=True, exist_ok=True) - - namespace = "joint_opt" - input_xyz = work_dir / "input.xyz" - xcontrol = work_dir / "joint_opt.xcontrol" - stdout_path = work_dir / "xtb.stdout" - stderr_path = work_dir / "xtb.stderr" - - constraints = bem_to_distance_constraints(conformer.elements, target_bem) - xyz_write(str(input_xyz), conformer.elements, conformer.geo) - write_xtb_xcontrol(xcontrol, constraints, force_constant=force_constant) - - cmd = _build_xtb_command( - input_xyz, - xcontrol, - namespace=namespace, - lot=lot, - xtb_path=xtb_path, - charge=charge, - multiplicity=multiplicity, - n_cpus=n_cpus, - scf_iters=scf_iters, - solvent=solvent, - solvation_model=solvation_model, - ) - - result = runner(cmd, cwd=work_dir, capture_output=True, text=True) - stdout_path.write_text(result.stdout or "", encoding="utf-8") - stderr_path.write_text(result.stderr or "", encoding="utf-8") - - opt_xyz = _find_xtbopt_xyz(work_dir, namespace) - if result.returncode != 0 or not _xtb_converged(result.stdout, result.stderr) or opt_xyz is None: - if not keep_files: - shutil.rmtree(work_dir, ignore_errors=True) - return None - - _, opt_geo = xyz_parse(str(opt_xyz), multiple=False) - biased_conf = copy.deepcopy(conformer) - biased_conf.geo = opt_geo - biased_conf.type = f"biased_xtb_{conformer.type}" - biased_conf.lot = lot - biased_conf.software = "xtb" - - if not keep_files: - shutil.rmtree(work_dir, ignore_errors=True) - - return biased_conf - - -def bondmat_to_adjmat(bond_mat): - adj_mat = copy.deepcopy(bond_mat) - for count_i, i in enumerate(bond_mat): - for count_j, j in enumerate(i): - if j and count_i != count_j: - adj_mat[count_i][count_j] = 1.0 - if count_i == count_j: - adj_mat[count_i][count_i] = 0.0 - return adj_mat - - -def build_ob_mol(elements, coords, bond_mat): - """ - Builds an OBMol object using explicit BEM bonding info. - """ - adj_mat = bondmat_to_adjmat(bond_mat) - obMol = ob.OBMol() - conv = ob.OBConversion() - conv.SetInFormat("mol") - - import os - import tempfile - - tmp_file = None - try: - with tempfile.NamedTemporaryFile(suffix=".mol", delete=False) as tmp: - tmp_file = tmp.name - mol_write_yp(tmp_file, elements, coords, bond_mat, adj_mat) - conv.ReadFile(obMol, tmp_file) - finally: - if tmp_file is not None: - os.unlink(tmp_file) - - return obMol diff --git a/yarp/reaction/external/conformer_select.py b/yarp/reaction/external/conformer_select.py index 7cfb361b..ac6ab081 100644 --- a/yarp/reaction/external/conformer_select.py +++ b/yarp/reaction/external/conformer_select.py @@ -27,8 +27,13 @@ def __init__(self, rxn, config, scratch_dir=None, log=None, job_manager=None): self.config = config self.scratch_dir = Path(scratch_dir) if scratch_dir is not None else Path.cwd() / "joint_opt" self.mode = config.joint_opt.lower() - self.joint_optimizer = make_joint_optimization_engine(config, self.scratch_dir) self.job_manager = job_manager + self.joint_optimizer = make_joint_optimization_engine( + config, + self.scratch_dir, + job_manager, + log=log, + ) self.verbose = ( getattr(config, "verbose", False) or os.environ.get("YARP_DEBUG_PREGSM") == "1" @@ -104,15 +109,17 @@ def _generate_biased_endpoints(self, r_confs, p_confs): # biased_p: product geometries guided by reactant geometries # biased_r: reactant geometries guided by product geometries if self.mode in ["dual", "r_only"]: - biased_p = [ - self.joint_optimizer.optimize(c, self.rxn.reactant.paired_bem, f"r_to_p_{ind:04d}") - for ind, c in enumerate(r_confs) - ] + biased_p = self.joint_optimizer.optimize_many( + r_confs, + self.rxn.reactant.paired_bem, + [f"r_to_p_{ind:04d}" for ind in range(len(r_confs))], + ) if self.mode in ["dual", "p_only"]: - biased_r = [ - self.joint_optimizer.optimize(c, self.rxn.product.paired_bem, f"p_to_r_{ind:04d}") - for ind, c in enumerate(p_confs) - ] + biased_r = self.joint_optimizer.optimize_many( + p_confs, + self.rxn.product.paired_bem, + [f"p_to_r_{ind:04d}" for ind in range(len(p_confs))], + ) self._log( "biased endpoints " diff --git a/yarp/reaction/external/joint_opt.py b/yarp/reaction/external/joint_opt.py index c1727a62..07335ae7 100644 --- a/yarp/reaction/external/joint_opt.py +++ b/yarp/reaction/external/joint_opt.py @@ -1,58 +1,225 @@ -""" -Joint optimization engine adapters used during TS guess pair selection. +"""Container-backed biased endpoint generation for conformer pair selection. -These classes are intentionally not AsyncYarpCalculator tasks. Joint -optimization remains an implementation detail of TS guess generation. +The host process owns reaction/conformer bookkeeping. The ``joint_opt`` image +owns the OpenBabel and xTB executables and receives a batch of independent +joint-optimization requests over a small JSON protocol. """ +import copy +import json +import subprocess from pathlib import Path +from typing import NamedTuple + +import numpy as np + +from yarp.reaction.external.model_scorer import get_container_prefix +from yarp.yarpecule.lewis.bem_score import return_formals +from yarp.util.properties import el_radii + + +class XTBConstraint(NamedTuple): + """One xTB distance constraint using xTB's one-indexed atom numbers.""" + + atom_i: int + atom_j: int + distance: float + + +def bem_to_distance_constraints(elements, target_bem): + """Convert a target BEM into the xTB constraints sent to the container.""" + target_bem = np.asarray(target_bem) + if target_bem.ndim != 2 or target_bem.shape[0] != target_bem.shape[1]: + raise ValueError(f"target_bem must be a square matrix, got shape {target_bem.shape}") + if len(elements) != target_bem.shape[0]: + raise ValueError( + f"elements length ({len(elements)}) does not match target_bem size ({target_bem.shape[0]})" + ) + + constraints = [] + for atom_i in range(target_bem.shape[0] - 1): + for atom_j in range(atom_i + 1, target_bem.shape[1]): + if target_bem[atom_i, atom_j] <= 0: + continue -from yarp.reaction.conf_sampling.joint_opt import ob_joint_optimize -from yarp.reaction.conf_sampling.joint_opt import xtb_joint_optimize + radius_i = el_radii.get(elements[atom_i], el_radii.get(str(elements[atom_i]).capitalize())) + radius_j = el_radii.get(elements[atom_j], el_radii.get(str(elements[atom_j]).capitalize())) + if radius_i is None or radius_j is None: + raise KeyError( + f"Missing covalent radius for constrained pair {elements[atom_i]}-{elements[atom_j]}" + ) + constraints.append(XTBConstraint(atom_i + 1, atom_j + 1, float(radius_i + radius_j))) + + return constraints class JointOptimizationEngine: """Base interface for biased endpoint generation.""" - def optimize(self, conformer, target_bem, label): + def optimize_many(self, conformers, target_bem, labels): raise NotImplementedError -class OpenBabelJointOptimizationEngine(JointOptimizationEngine): - """OpenBabel force-field joint optimization.""" - - def __init__(self, ff_name="uff"): - self.ff_name = ff_name +class ContainerJointOptimizationEngine(JointOptimizationEngine): + """Run one batch of OpenBabel or xTB biased optimizations in a container.""" - def optimize(self, conformer, target_bem, label=None): - return ob_joint_optimize(conformer, target_bem, self.ff_name) + image_name = "erm42/yarp:joint_opt" + def __init__(self, job_manager, scratch_dir, config, log=None): + if job_manager is None: + raise ValueError("Container joint optimization requires a job_manager configuration") -class XTBJointOptimizationEngine(JointOptimizationEngine): - """Constrained xTB joint optimization.""" - - def __init__(self, scratch_dir, config): + self.job_manager = job_manager self.scratch_dir = Path(scratch_dir) self.config = config - - def optimize(self, conformer, target_bem, label): - return xtb_joint_optimize( - conformer, - target_bem, - self.scratch_dir / label, - lot=self.config.xtb_joint_lot, - charge=self.config.charge, - multiplicity=self.config.multiplicity, - n_cpus=self.config.n_cpus, - force_constant=self.config.xtb_joint_force_constant, - scf_iters=self.config.xtb_joint_scf_iters, - keep_files=self.config.xtb_joint_keep_files, + self.log = log + self.engine = config.joint_opt_engine + self.image_name = getattr(config, "joint_opt_image", None) or self.image_name + self.calls = 0 + + def optimize_many(self, conformers, target_bem, labels): + """Optimize a conformer batch in one container process.""" + if len(conformers) != len(labels): + raise ValueError("Each joint-optimization conformer must have exactly one label") + if not conformers: + return [] + + self.calls += 1 + call_dir = self.scratch_dir / f"batch_{self.calls:04d}" + call_dir.mkdir(parents=True, exist_ok=True) + input_path = call_dir / "input.json" + output_path = call_dir / "output.json" + stdout_path = call_dir / "joint_opt.out" + stderr_path = call_dir / "joint_opt.err" + + payload = { + "protocol_version": 1, + "jobs": [ + self._make_job(conformer, target_bem, label) + for conformer, label in zip(conformers, labels) + ], + } + input_path.write_text(json.dumps(payload, indent=2), encoding="utf-8") + + prefix = get_container_prefix(self.job_manager, self.image_name, str(call_dir)) + cmd = " ".join( + [ + prefix, + "python", + "/opt/yarp_joint_opt/joint_opt.py", + "--input", + "/work/input.json", + "--output", + "/work/output.json", + ] ) - - -def make_joint_optimization_engine(config, scratch_dir): - """Build the configured joint optimization engine.""" - engine = getattr(config, "joint_opt_engine", "ob") - if engine == "xtb": - return XTBJointOptimizationEngine(scratch_dir, config) - return OpenBabelJointOptimizationEngine(config.bias_lot) + self._log(f"running {len(conformers)} {self.engine} joint optimization(s) in {self.image_name}") + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + stdout_path.write_text(result.stdout or "", encoding="utf-8") + stderr_path.write_text(result.stderr or "", encoding="utf-8") + + if result.returncode != 0: + raise RuntimeError( + "Joint-optimization container failed. " + f"See {stdout_path} and {stderr_path}." + ) + if not output_path.exists(): + raise RuntimeError(f"Joint-optimization container did not write {output_path}") + + output = json.loads(output_path.read_text(encoding="utf-8")) + returned = output.get("results") + if not isinstance(returned, list): + raise RuntimeError(f"Joint-optimization container wrote an invalid result to {output_path}") + + result_by_label = {} + for item in returned: + label = item.get("label") if isinstance(item, dict) else None + if label in result_by_label: + raise RuntimeError(f"Joint-optimization container returned duplicate label {label!r}") + result_by_label[label] = item + + expected_labels = set(labels) + if set(result_by_label) != expected_labels: + raise RuntimeError( + "Joint-optimization container response labels did not match its input. " + f"Expected {sorted(expected_labels)}, got {sorted(result_by_label)}." + ) + + optimized = [] + for conformer, label in zip(conformers, labels): + item = result_by_label[label] + if not item.get("success"): + self._log(f"{label} did not converge: {item.get('error', 'unknown error')}") + optimized.append(None) + continue + optimized.append(self._make_biased_conformer(conformer, item, label)) + return optimized + + def _make_job(self, conformer, target_bem, label): + job = { + "label": label, + "engine": self.engine, + "elements": list(conformer.elements), + "geo": np.asarray(conformer.geo, dtype=float).tolist(), + "target_bem": np.asarray(target_bem, dtype=float).tolist(), + "formal_charges": [ + int(charge) + for charge in return_formals(np.asarray(target_bem), conformer.elements) + ], + "radical_atoms": [ + atom_index + for atom_index in range(len(conformer.elements)) + if int(np.asarray(target_bem)[atom_index, atom_index]) % 2 == 1 + ], + "options": { + "keep_files": bool(self.config.xtb_joint_keep_files), + }, + } + if self.engine == "ob": + job["options"]["ff_name"] = self.config.bias_lot + elif self.engine == "xtb": + job["constraints"] = [ + constraint._asdict() + for constraint in bem_to_distance_constraints(conformer.elements, target_bem) + ] + job["options"].update( + { + "lot": self.config.xtb_joint_lot, + "charge": self.config.charge, + "multiplicity": self.config.multiplicity, + "n_cpus": self.config.n_cpus, + "force_constant": self.config.xtb_joint_force_constant, + "scf_iters": self.config.xtb_joint_scf_iters, + } + ) + else: + raise ValueError(f"Unsupported joint optimization engine: {self.engine}") + return job + + def _make_biased_conformer(self, conformer, result, label): + geometry = np.asarray(result.get("geo"), dtype=float) + expected_shape = np.asarray(conformer.geo).shape + if geometry.shape != expected_shape: + raise RuntimeError( + f"Joint-optimization result for {label} has geometry shape {geometry.shape}; " + f"expected {expected_shape}." + ) + + biased = copy.deepcopy(conformer) + biased.geo = geometry + if self.engine == "xtb": + biased.type = f"biased_xtb_{conformer.type}" + biased.lot = self.config.xtb_joint_lot + biased.software = "xtb" + else: + biased.type = f"biased_{conformer.type}" + return biased + + def _log(self, message): + if self.log is not None: + print(f"[ContainerJointOptimizationEngine] {message}", file=self.log, flush=True) + + +def make_joint_optimization_engine(config, scratch_dir, job_manager, log=None): + """Build the container-only joint optimization engine.""" + return ContainerJointOptimizationEngine(job_manager, scratch_dir, config, log=log) diff --git a/yarp/util/config.py b/yarp/util/config.py index 2c4bea92..08dd0f69 100644 --- a/yarp/util/config.py +++ b/yarp/util/config.py @@ -295,6 +295,7 @@ class TSGuessConfig: bias_lot: str = "uff" joint_opt: str = "dual" joint_opt_engine: str = "ob" + joint_opt_image: str = "erm42/yarp:joint_opt" xtb_joint_lot: str = "gfn2" xtb_joint_force_constant: float = 1.0 xtb_joint_scf_iters: int = 300 @@ -327,6 +328,8 @@ def __post_init__(self): raise ValueError(f"Invalid 'joint_opt' entry: '{self.joint_opt}' Valid options are: 'dual', 'r_only', 'p_only', 'off'") if self.joint_opt_engine not in ['ob', 'xtb']: raise ValueError(f"Invalid 'joint_opt_engine' entry: '{self.joint_opt_engine}' Valid options are: 'ob', 'xtb'") + if not isinstance(self.joint_opt_image, str) or not self.joint_opt_image.strip(): + raise ValueError("Please provide a non-empty string value to ts_guess: 'joint_opt_image'") if self.xtb_joint_lot not in ['gfn2', 'gfn1', 'gfnff']: raise ValueError(f"Invalid 'xtb_joint_lot' entry: '{self.xtb_joint_lot}' Valid options are: 'gfn2', 'gfn1', 'gfnff'")