From ce2341a9277cd9ca051b507fce69bfb458d45793 Mon Sep 17 00:00:00 2001 From: bowen-bd Date: Sat, 10 Oct 2026 13:39:02 -0400 Subject: [PATCH 01/12] fix(mlips): start MD from Maxwell-Boltzmann velocities and report monitor stops run_md treated every input as a restart because Atoms.get_velocities() returns zeros rather than None, so relaxation and velocity initialization were skipped and a perfect crystal stayed at 0 K. Inputs now keep their velocities only when they carry non-zero momenta (e.g. a .traj frame). Also: - ExplosionMonitor reads the temperature of the integrated atoms (dyn.atoms) instead of the caller's copy, so it can fire. - run_md returns status "stopped" with stop_reason when a monitor ends the run, as mat-md-monitors documents. - run_md returns and writes the last MD frame as final_structure instead of the input structure. Co-Authored-By: Claude Opus 5.5 (1M context) --- src/utils/mlips/base.py | 27 +++++--- src/utils/mlips/md_runner.py | 8 ++- src/utils/mlips/md_utils.py | 4 +- tests/test_md_utils.py | 115 +++++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+), 13 deletions(-) diff --git a/src/utils/mlips/base.py b/src/utils/mlips/base.py index df6d6242..455e27f2 100644 --- a/src/utils/mlips/base.py +++ b/src/utils/mlips/base.py @@ -1777,9 +1777,10 @@ def _single_run_md( # Convert pressure from bar to eV/A^3 for MatCalc pressure_ev_ang3 = pressure * units.bar if pressure is not None else 0.0 - has_velocities = ( - hasattr(atoms, "get_velocities") and atoms.get_velocities() is not None - ) + # ASE returns zeros (never None) from get_velocities() when no momenta + # are stored, so only a restart frame that carries momenta (e.g. a .traj + # written by a previous MD run) keeps its velocities and skips relaxation. + has_velocities = "momenta" in atoms.arrays and bool(atoms.get_momenta().any()) md_calc = CustomMDCalc( calculator=calc, @@ -1799,25 +1800,32 @@ def _single_run_md( ) # Run simulation + status, stop_reason = "success", None try: from src.utils.mlips.md_utils import MDStopIteration md_calc.calc(atoms) except MDStopIteration as e: + status, stop_reason = "stopped", str(e) logger.info(f"MD terminated early by monitor: {e}") - # Normal Final struct update - final_structure = AseAtomsAdaptor.get_structure(atoms) + # Final structure = last MD frame (the input when the MD never started) + md_atoms = getattr(md_calc, "md_atoms", None) + final_atoms = md_atoms.copy() if md_atoms is not None else atoms + final_structure = AseAtomsAdaptor.get_structure(final_atoms) cif_path = os.path.join(output_dir, "final_structure.cif") final_structure.to(filename=cif_path) - return { - "status": "success", + result = { + "status": status, "trajectory_path": traj_path, "log_path": log_path, "cif_path": cif_path, "final_structure": final_structure.as_dict(), } + if stop_reason is not None: + result["stop_reason"] = stop_reason + return result def run_md( self, @@ -1984,6 +1992,7 @@ def run_md( { "structure_name": struct_name, "status": md_res.get("status", "success"), + "stop_reason": md_res.get("stop_reason"), "trajectory_path": md_res.get("trajectory_path"), "log_path": md_res.get("log_path"), "output_dir": struct_output_dir, @@ -1994,9 +2003,7 @@ def run_md( {"structure_name": struct_name, "status": "failed", "error": str(e)} ) - n_success = sum( - 1 for r in results if r["status"] in ["success", "stopped_early"] - ) + n_success = sum(1 for r in results if r["status"] in ["success", "stopped"]) n_failed = len(results) - n_success logger.info(f"Batch MD complete: {n_success} successful, {n_failed} failed") diff --git a/src/utils/mlips/md_runner.py b/src/utils/mlips/md_runner.py index fcb7504b..3014c332 100644 --- a/src/utils/mlips/md_runner.py +++ b/src/utils/mlips/md_runner.py @@ -353,9 +353,10 @@ def _upper_triangular_cell(self, atoms: Atoms) -> None: atoms.set_cell(new_basis, scale_atoms=True) def calc(self, structure: Structure | Atoms | dict[str, Any]) -> dict[str, Any]: - # Preserve velocities if present + # Preserve velocities if present. ASE returns zeros (never None) when no + # momenta are stored, so require an explicit momenta array. velocities = None - if hasattr(structure, "get_velocities"): + if isinstance(structure, Atoms) and "momenta" in structure.arrays: velocities = structure.get_velocities() result = super().calc(structure) @@ -374,6 +375,9 @@ def calc(self, structure: Structure | Atoms | dict[str, Any]) -> dict[str, Any]: structure_in = result["final_structure"] atoms = to_ase_atoms(structure_in) + # Keep a handle on the integrated atoms so callers can read the last + # MD frame even when a monitor stops the run with MDStopIteration. + self.md_atoms = atoms # Apply preserved velocities or initialize new ones if velocities is not None and not self.relax_structure: diff --git a/src/utils/mlips/md_utils.py b/src/utils/mlips/md_utils.py index 9bbc0fc5..173bbb71 100644 --- a/src/utils/mlips/md_utils.py +++ b/src/utils/mlips/md_utils.py @@ -22,7 +22,9 @@ def __init__(self, atoms=None, temp_threshold: float = 10000.0): def __call__(self, *args, **kwargs): dyn = kwargs.get("dyn") - atoms = self.atoms + # The MD driver integrates its own copy of the input atoms, so read the + # temperature from the dynamics object when it is passed. + atoms = dyn.atoms if dyn is not None and hasattr(dyn, "atoms") else self.atoms for arg in args: if hasattr(arg, "get_temperature"): if hasattr(arg, "atoms"): diff --git a/tests/test_md_utils.py b/tests/test_md_utils.py index bdd5c610..8247cd06 100644 --- a/tests/test_md_utils.py +++ b/tests/test_md_utils.py @@ -7,14 +7,99 @@ from ase.build import bulk from ase.calculators.emt import EMT +from src.utils.mlips.base import MLIPModel from src.utils.mlips.md_utils import ( DiffusionMonitor, EquilibrationMonitor, + MDStopIteration, get_md_callback, ) from src.utils.mlips.md_runner import CustomMDCalc +class _EMTModel(MLIPModel): + """Minimal MLIPModel backed by ASE's EMT calculator for CPU tests.""" + + def __init__(self): + super().__init__(model_name="EMT") + self.is_loaded = True + + def load(self, model_path=None): + pass + + def create_calculator(self): + return EMT() + + def predict_atomic_features(self, structure_data): + return {} + + def save_checkpoint(self, checkpoint_path): + pass + + def load_checkpoint(self, checkpoint_path): + pass + + +def test_custom_md_calc_draws_velocities_without_momenta(): + """An input without stored momenta must start from Maxwell-Boltzmann velocities. + + ``Atoms.get_velocities()`` returns zeros (not None) when no momenta are set, + which previously started a perfect crystal at rest so that it never heated. + """ + atoms = bulk("Cu", "fcc", a=3.6, cubic=True).repeat(2) + + md_calc = CustomMDCalc( + calculator=EMT(), + ensemble="nvt", + temperature=300, + timestep=2.0, + steps=5, + relax_structure=False, + ) + result = md_calc.calc(atoms) + + # 3/2 kB T at 300 K is ~0.039 eV/atom; a crystal left at rest stays near 0. + assert result["kinetic_energy"] / len(atoms) > 0.01 + + +def test_explosion_monitor_reads_dynamics_atoms(): + """ExplosionMonitor must read the temperature of the atoms being integrated.""" + atoms = bulk("Cu", "fcc", a=3.6, cubic=True).repeat(2) + monitor = get_md_callback("explosion", atoms, temp_threshold=1.0) + + md_calc = CustomMDCalc( + calculator=EMT(), + ensemble="nvt", + temperature=300, + timestep=2.0, + steps=20, + additional_callbacks=[(monitor, 1)], + ) + with pytest.raises(MDStopIteration, match="Explosion detected"): + md_calc.calc(atoms) + + +def test_run_md_reports_monitor_stop(tmp_path): + """run_md heats a structure read without momenta and reports a monitor stop.""" + model = _EMTModel() + atoms = bulk("Cu", "fcc", a=3.6, cubic=True).repeat(2) + + result = model.run_md( + atoms, + temperature=300.0, + steps=50, + timestep=2.0, + log_interval=1, + output_dir=str(tmp_path), + monitor=True, + monitor_type="explosion", + monitor_params={"temp_threshold": 1.0}, + ) + + assert result["status"] == "stopped" + assert "Explosion detected" in result["stop_reason"] + + def test_diffusion_monitor_auto_detect_params(): atoms = bulk("Cu", "fcc", a=3.6) atoms.calc = EMT() @@ -83,5 +168,35 @@ def test_get_md_callback_passes_kwargs(): assert callback.specie == "Cu" +def test_run_md_returns_last_md_frame(tmp_path): + """run_md must return (and write) the last MD frame, not the input structure.""" + import numpy as np + from ase.io import read + + model = _EMTModel() + atoms = bulk("Cu", "fcc", a=3.6, cubic=True).repeat(2) + + result = model.run_md( + atoms, + temperature=300.0, + steps=20, + timestep=2.0, + log_interval=5, + output_dir=str(tmp_path), + ) + + final = read(result["cif_path"]) + last_frame = read(result["trajectory_path"], index=-1) + + def frac_gap(a, b): + """Largest minimum-image fractional-coordinate difference (CIF wraps atoms).""" + d = a.get_scaled_positions(wrap=False) - b.get_scaled_positions(wrap=False) + return np.abs(d - np.round(d)).max() + + # The input is a perfect lattice; after 20 steps at 300 K atoms have moved. + assert frac_gap(final, atoms) > 1e-4 + assert frac_gap(final, last_frame) < 1e-5 + + if __name__ == "__main__": pytest.main(["-v", __file__]) From 5eb28281144a0f7133c687a7329d96eb209374da Mon Sep 17 00:00:00 2001 From: bowen-bd Date: Sat, 10 Oct 2026 13:39:03 -0400 Subject: [PATCH 02/12] docs(mat-md-monitors): add Cu NVT equilibration example Equilibration and explosion monitors on a 256-atom FCC Cu cell with MACE-MP-small at 300 K and 100 K, validated against equipartition, canonical temperature fluctuations and the Dulong-Petit limit. Co-Authored-By: Claude Opus 5.5 (1M context) --- skills/mat-md-monitors/SKILL.md | 2 + .../Cu_nvt_equilibration/Cu_conventional.cif | 29 + .../examples/Cu_nvt_equilibration/README.md | 240 ++ .../Cu256_100.0K_nvt.log | 117 + .../T100_stage1_equilibration/md_inputs.json | 20 + .../Cu256_100.0K_nvt.log | 1002 +++++ .../T100_stage2_production/md_inputs.json | 15 + .../analyze_md_monitor_run.py | 405 ++ .../Cu_nvt_equilibration/relax/relax.log | 7 + .../relax/relaxed_energy.txt | 1 + .../relax/relaxed_structure.cif | 29 + .../results/equilibration_monitor.png | Bin 0 -> 133463 bytes .../results/equilibration_monitor.svg | 1726 ++++++++ .../results/input_configs.yaml | 15 + .../results/md_monitor_validation.json | 103 + .../potential_energy_equipartition.png | Bin 0 -> 166281 bytes .../potential_energy_equipartition.svg | 3524 +++++++++++++++++ .../Cu_nvt_equilibration/run_md_results.json | 34 + .../stage1_equilibration/Cu256_300.0K_nvt.log | 65 + .../stage1_equilibration/md_inputs.json | 18 + .../Cu256_300.0K_nvt.log | 86 + .../stage1b_equilibration_30K/md_inputs.json | 20 + .../stage2_production/Cu256_300.0K_nvt.log | 1002 +++++ .../stage2_production/md_inputs.json | 15 + 24 files changed, 8475 insertions(+) create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/Cu_conventional.cif create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/README.md create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/Cu256_100.0K_nvt.log create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/md_inputs.json create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/Cu256_100.0K_nvt.log create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/md_inputs.json create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/analyze_md_monitor_run.py create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relax.log create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_energy.txt create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_structure.cif create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.png create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.svg create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/input_configs.yaml create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/md_monitor_validation.json create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.png create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.svg create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/run_md_results.json create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/Cu256_300.0K_nvt.log create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/md_inputs.json create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/Cu256_300.0K_nvt.log create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/md_inputs.json create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/Cu256_300.0K_nvt.log create mode 100644 skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/md_inputs.json diff --git a/skills/mat-md-monitors/SKILL.md b/skills/mat-md-monitors/SKILL.md index f6faccc2..83a730cf 100644 --- a/skills/mat-md-monitors/SKILL.md +++ b/skills/mat-md-monitors/SKILL.md @@ -85,6 +85,8 @@ If a simulation explodes: Monitoring stability is handled automatically by the ASE callbacks. When a monitor is triggered, the stop reason is logged to `stdout` and saved in the result dictionary. +- [FCC Cu NVT equilibration](examples/Cu_nvt_equilibration/README.md) — where the `equilibration` monitor stops a 256-atom MACE-MP-small run at 300 K and 100 K, validated against equipartition, canonical temperature fluctuations and the Dulong–Petit limit. + ## Constraints - **Termination**: If a monitor triggers an explosion, terminate the task and adjust parameters. Do not proceed with unstable trajectories. - **Reporting**: Always report simulation parameters (ensemble, T, timestep, duration) in the research report. diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/Cu_conventional.cif b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/Cu_conventional.cif new file mode 100644 index 00000000..fd0f9fe6 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/Cu_conventional.cif @@ -0,0 +1,29 @@ +data_image0 +_chemical_formula_structural Cu4 +_chemical_formula_sum "Cu4" +_cell_length_a 3.61 +_cell_length_b 3.61 +_cell_length_c 3.61 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 + +_space_group_name_H-M_alt "P 1" +_space_group_IT_number 1 + +loop_ + _space_group_symop_operation_xyz + 'x, y, z' + +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Cu Cu1 1.0 0.0 0.0 0.0 1.0000 + Cu Cu2 1.0 0.0 0.5 0.5 1.0000 + Cu Cu3 1.0 0.5 0.0 0.5 1.0000 + Cu Cu4 1.0 0.5 0.5 0.0 1.0000 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/README.md b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/README.md new file mode 100644 index 00000000..ea37974a --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/README.md @@ -0,0 +1,240 @@ +# Equilibration and explosion monitors on FCC Cu (NVT, MACE-MP-small) + +## Goal + +Show where the `equilibration` monitor of `mace.run_md` stops an NVT run, and why, +then check the physics of the equilibrated state against classical theory: + +- the mean kinetic temperature against the thermostat target; +- the std of the instantaneous temperature against the canonical value + $\sigma_T = T\sqrt{2/(3N)}$; +- the mean potential-energy rise above the relaxed minimum against equipartition + for a harmonic solid, $\langle E_{pot}-E_{min}\rangle = \tfrac{3}{2}k_BT$ per atom; +- the heat capacity against the Dulong–Petit limit $c_v = 3k_B$ per atom ($3R$ per mole). + +The `explosion` monitor (stop if T > 10 000 K or NaN) runs in every stage as a safety check. + +## System and settings + +| Item | Value | +| :--- | :--- | +| Structure | FCC Cu, conventional cell relaxed with `relax_cell=true`, expanded by `supercell_min_length=14` to 4×4×4 = **256 atoms** | +| Model | `MACE-MP-small` (MACE-MP-0 small; float32 in MD), `mlip` env | +| Ensemble | `nvt` = ASE `NoseHooverChainNVT`, `tdamp` = 100 × timestep = 200 fs | +| Timestep / logging | 2 fs, one log line every 10 steps (20 fs) | +| Equilibration monitor | 1 ps window (50 log entries); stops when std(T) < `temp_std_threshold` | +| Production | 20 ps NVT restarted from the last equilibration frame (positions and momenta) | +| Hardware | NVIDIA GB10, unified memory. Peak process RSS 2.1 GB, peak GPU 1.1 GB (measured on a 300-step rerun of the same system); about 55 ms/step including trajectory I/O | + +## Commands (repository root) + +`OUT` is any scratch directory. Initial velocities are drawn from a Maxwell–Boltzmann +distribution without a fixed seed, so stop times differ by a few tenths of a ps between runs. + +```bash +OUT=.agents/test/md_monitors_Cu +mkdir -p $OUT && cp skills/mat-md-monitors/examples/Cu_nvt_equilibration/Cu_conventional.cif $OUT/ + +# Step 0 + stage 1: relax the cell, then NVT at 300 K with the default monitor (threshold 50 K) +venv/run mlip python -m src.mcp_server.cli mace \ + load_model model_name=MACE-MP-small device=cuda \ + relax_structure structure_data=$OUT/Cu_conventional.cif fmax=0.001 relax_cell=true output_dir=$OUT/relax \ + run_md structure_data=$OUT/relax/relaxed_structure.cif temperature=300 steps=10000 timestep=2.0 \ + ensemble=nvt log_interval=10 supercell_min_length=14 monitor=true \ + 'monitor_type=["explosion","equilibration"]' output_dir=$OUT/stage1_equilibration + +# Stage 1b: the same run with temp_std_threshold = 30 K (about 2 sigma_T for N = 256) +venv/run mlip python -m src.mcp_server.cli mace \ + load_model model_name=MACE-MP-small device=cuda \ + run_md structure_data=$OUT/relax/relaxed_structure.cif temperature=300 steps=10000 timestep=2.0 \ + ensemble=nvt log_interval=10 supercell_min_length=14 monitor=true \ + 'monitor_type=["explosion","equilibration"]' 'monitor_params={"temp_std_threshold": 30.0}' \ + output_dir=$OUT/stage1b_equilibration_30K + +# Stage 2: 20 ps production restarted from the stage-1b trajectory (keeps the velocities) +venv/run mlip python -m src.mcp_server.cli mace \ + load_model model_name=MACE-MP-small device=cuda \ + run_md structure_data=$OUT/stage1b_equilibration_30K/Cu256_300.0K_nvt.traj temperature=300 steps=10000 \ + timestep=2.0 ensemble=nvt log_interval=10 monitor=true monitor_type=explosion \ + output_dir=$OUT/stage2_production + +# Same protocol at 100 K (threshold 10 K), used for the anharmonicity and Dulong-Petit checks +venv/run mlip python -m src.mcp_server.cli mace \ + load_model model_name=MACE-MP-small device=cuda \ + run_md structure_data=$OUT/relax/relaxed_structure.cif temperature=100 steps=10000 timestep=2.0 \ + ensemble=nvt log_interval=10 supercell_min_length=14 monitor=true \ + 'monitor_type=["explosion","equilibration"]' 'monitor_params={"temp_std_threshold": 10.0}' \ + output_dir=$OUT/T100_stage1_equilibration \ + run_md structure_data=$OUT/T100_stage1_equilibration/Cu256_100.0K_nvt.traj temperature=100 steps=10000 \ + timestep=2.0 ensemble=nvt log_interval=10 monitor=true monitor_type=explosion \ + output_dir=$OUT/T100_stage2_production +``` + +With a connected MCP server, the stage-1 call is + +```python +mace.run_md( + structure_data="relax/relaxed_structure.cif", + temperature=300.0, steps=10000, timestep=2.0, ensemble="nvt", log_interval=10, + supercell_min_length=14.0, # 4x4x4 conventional cells, 256 atoms + monitor=True, monitor_type=["explosion", "equilibration"], + monitor_params={"temp_std_threshold": 30.0}, # omit for the 50 K default + output_dir="stage1b_equilibration_30K", +) +``` + +Analysis (CPU). This rebuilds `results/` from the logs stored in this folder; point the +paths at `$OUT` to analyse a fresh run: + +```bash +EX=skills/mat-md-monitors/examples/Cu_nvt_equilibration +venv/run cpu python $EX/analyze_md_monitor_run.py \ + --relax-dir $EX/relax \ + --stage1-logs $EX/stage1_equilibration/Cu256_300.0K_nvt.log \ + $EX/stage1b_equilibration_30K/Cu256_300.0K_nvt.log \ + $EX/T100_stage1_equilibration/Cu256_100.0K_nvt.log \ + --stage1-labels "300 K, threshold 50 K (default)" "300 K, threshold 30 K" "100 K, threshold 10 K" \ + --production-logs $EX/stage2_production/Cu256_300.0K_nvt.log \ + $EX/T100_stage2_production/Cu256_100.0K_nvt.log \ + --n-atoms 256 --n-blocks 5 --output-dir $EX/results +``` + +## Files + +| File | Content | +| :--- | :--- | +| `Cu_conventional.cif`, `relax/` | input cell; relaxed cell, energy and FIRE log from `relax_structure` | +| `*/Cu256_*K_nvt.log`, `*/md_inputs.json` | ASE MD logs and the `run_md` inputs of each stage (trajectories are not kept) | +| `run_md_results.json` | `status` and `stop_reason` returned by each `run_md` call | +| `analyze_md_monitor_run.py` | analysis script (monitor stop points, theory comparison, plots) | +| `results/md_monitor_validation.json` | all numbers quoted below; `results/input_configs.yaml` records the analysis arguments | +| `results/equilibration_monitor.png/.svg`, `results/potential_energy_equipartition.png/.svg` | figures | + +## Results + +### Where the monitor stopped the run, and why + +The relaxed lattice constant is a = 3.6127 Å and $E_{min}$ = −4.09042 eV/atom. +`run_md` returned `status: "stopped"` with the `stop_reason` below for every equilibration run +(`run_md_results.json`). The analysis script recomputes the std(T) of the last 1-ps window +from the log and reproduces each value in the stop reason. + +| Run | Target T | `temp_std_threshold` | Stopped at | `stop_reason` | T at stop | Max T before stop | +| :--- | :---: | :---: | :---: | :--- | :---: | :---: | +| `stage1_equilibration` | 300 K | 50 K (default) | 1.26 ps (step 630 / 10000) | `Equilibration reached: std(T)=49.78 < 50.0` | 312.3 K | 340.2 K | +| `stage1b_equilibration_30K` | 300 K | 30 K | 1.68 ps (step 840 / 10000) | `Equilibration reached: std(T)=26.77 < 30.0` | 301.0 K | 361.0 K | +| `T100_stage1_equilibration` | 100 K | 10 K | 2.30 ps (step 1150 / 10000) | `Equilibration reached: std(T)=8.89 < 10.0` | 106.2 K | 134.4 K | + +![Equilibration monitor](results/equilibration_monitor.png) + +*Top: instantaneous temperature; shaded bands are T ± σ_T (canonical). Bottom: std(T) over +the trailing 1-ps window that the monitor evaluates; dotted lines are the thresholds and +dashed lines mark the steps where each run was stopped.* + +Velocities are drawn at the relaxed minimum. By equipartition, T falls to about half the target +within 50 fs. The Nosé–Hoover chain then heats the crystal back, overshooting between about +1.0 and 1.3 ps. The 1-ps std(T) shrinks as this transient leaves the window. With the default +50 K threshold the run stopped at 1.26 ps, while the window still held the end of the heating +ramp and T was still overshooting. For N = 256 the canonical σ_T is only 15.3 K, so +std(T) < 50 K is a loose criterion. With a threshold of about 2σ_T (30 K) the monitor waited +until the overshoot had decayed, stopping at 1.68 ps. **Choose +`temp_std_threshold` ≈ 2·T·√(2/(3N))** rather than the fixed 50 K default when the +stopping point is to mark the start of production. + +The `explosion` monitor never fired. The maximum T in production was 348 K (300 K run) and 119 K +(100 K run), far below 10 000 K. Its trigger path is covered by the unit tests in +`tests/test_md_utils.py`. + +### Equilibrated state against theory + +Production: 20 ps (1000 samples), restarted from the last equilibration frame. Errors are +standard errors from 5 blocks of 4 ps. + +| Quantity | 300 K run | Reference (300 K) | 100 K run | Reference (100 K) | +| :--- | :---: | :---: | :---: | :---: | +| ⟨T⟩ | 296.9 ± 1.2 K | 300 K (target), −1.0 % | 100.2 ± 0.6 K | 100 K (target), +0.2 % | +| std of instantaneous T | 15.29 K | 15.31 K = T√(2/(3N)) [2], −0.2 % | 6.10 K | 5.10 K [2], +20 % | +| ⟨E_pot − E_min⟩ (meV/atom) | 37.44 ± 0.14 | 38.78 = (3/2)k_B·300 K [1,3], −3.5 % | 12.84 ± 0.08 | 12.93 = (3/2)k_B·100 K, −0.7 % | +| ⟨E_kin⟩ (meV/atom) | 38.38 ± 0.15 | (3/2)k_B⟨T⟩ = 38.38 (by definition of T) | 12.95 ± 0.08 | 12.95 | +| ⟨E_pot − E_min⟩ / ⟨E_kin⟩ | 0.975 ± 0.004 | 1 (harmonic) | 0.991 ± 0.006 | 1 (harmonic) | + +Dulong–Petit from the two production runs: +$c_v = \Delta\langle E_{tot}-E_{min}\rangle/\Delta\langle T\rangle$ = **2.951 ± 0.020 k_B per atom += 24.54 ± 0.16 J mol⁻¹ K⁻¹**, against $3R$ = 24.94 J mol⁻¹ K⁻¹ [2,3] (−1.6 %). + +![Potential energy vs equipartition](results/potential_energy_equipartition.png) + +*Potential-energy rise per atom during production (thin lines) with running means (thick) +and the harmonic equipartition values (dashed).* + +Interpretation: + +- **Temperature control.** ⟨T⟩ is within 1 % of the target at 300 K and within 0.2 % at 100 K. + At 300 K the deviation is 2.6 block-SEM. The slow thermostat oscillation correlates the + 4-ps blocks, so these SEMs are lower bounds. +- **Canonical fluctuations.** At 300 K, std(T) agrees with Eq. (9) of Hickman & Mishin [2], + ⟨(ΔT̂)²⟩ = 2T₀²/(3N), to 0.2 %. At 100 K it is 20 % too large. The crystal is closer to + harmonic there, and harmonic systems are the classic case in which Nosé–Hoover dynamics fails + to sample the canonical distribution [5,6]. The chain thermostat reduces this but does not + remove it in 20 ps. Use a longer run, or `nvt_langevin`, when canonical fluctuations at low T + matter. +- **Equipartition.** For a harmonic solid, ⟨E_pot − E_min⟩ = ⟨E_kin⟩, which is (3/2)k_BT per + atom [1,3]. The measured ratio is 0.975 at 300 K and 0.991 at 100 K. The deviation falls + from −2.5 % to −0.9 %, a factor of 2.8 for a factor of 3 in temperature. That is the + signature of the leading anharmonic term (∝ T² in the potential energy), and the ratio goes + to 1 as T → 0. The few-percent shortfall at 300 K is a property of the MACE-MP-small Cu + potential-energy surface at fixed volume (a = 3.6127 Å). It is not a sampling or monitor + artefact. The same anharmonic term puts the finite-difference c_v 1.6 % below 3R. +- **Fixed centre of mass.** `run_md` removes centre-of-mass motion, while ASE's + `NoseHooverChainNVT` thermostats 3N degrees of freedom. The harmonic expectation is therefore + ⟨E_pot − E_min⟩ = (3/2)k_B T per atom exactly. A thermostat that counts 3N − 3 degrees of + freedom would instead give (3/2)k_B T (1 − 1/N), i.e. 0.15 meV/atom (0.4 %) less for + N = 256. That is below the statistical error. + +Quantum effects (Cu Debye temperature ≈ 343 K) make the experimental heat capacity of Cu at +300 K lower than 3R. Classical MD is compared with the classical limit only. + +## Implementation notes + +This example needed three fixes in `src/utils/mlips/` (covered by `tests/test_md_utils.py`): + +1. `run_md` read `Atoms.get_velocities()`, which returns zeros (never None) when no momenta are + stored. Every CIF, dict or pymatgen input was treated as a restart. Relaxation and + Maxwell–Boltzmann initialization were skipped, so a perfect crystal stayed at 0 K. Inputs now + keep velocities only when they carry non-zero momenta, as a `.traj` frame does (used in + stage 2 above). +2. `ExplosionMonitor` read the temperature of the caller's `Atoms`. The MD driver integrates a + copy, so the monitor saw 0 K and could never fire. It now reads `dyn.atoms`, like the other + monitors. +3. `run_md` now returns `status: "stopped"` and `stop_reason` when a monitor stops the run, as + this skill documents. It previously returned `status: "success"` with no reason. + +## References + +1. R. C. Tolman, "A General Theory of Energy Partition with Applications to Quantum Theory", + *Phys. Rev.* **11**, 261 (1918). [DOI: 10.1103/PhysRev.11.261](https://doi.org/10.1103/PhysRev.11.261) +2. J. Hickman and Y. Mishin, "Temperature fluctuations in canonical systems: Insights from + molecular dynamics simulations", *Phys. Rev. B* **94**, 184311 (2016). + [DOI: 10.1103/PhysRevB.94.184311](https://doi.org/10.1103/PhysRevB.94.184311), + [arXiv:1609.03646](https://arxiv.org/abs/1609.03646). Eq. (9) gives the + instantaneous-temperature variance 2T₀²/(3N); Eq. (7) the classical harmonic-solid + c_v = 3k (Dulong–Petit). +3. "Equipartition theorem" (section on solids and the Dulong–Petit law), Wikipedia: + . 3N independent oscillators, + average energy 3Nk_BT, molar heat capacity 3R. +4. CODATA 2022 recommended values (NIST): k_B = 8.617 333 262 × 10⁻⁵ eV K⁻¹ + (), R = 8.314 462 618 J mol⁻¹ K⁻¹ + (). +5. G. J. Martyna, M. L. Klein and M. Tuckerman, "Nosé–Hoover chains: The canonical ensemble + via continuous dynamics", *J. Chem. Phys.* **97**, 2635 (1992). + [DOI: 10.1063/1.463940](https://doi.org/10.1063/1.463940) +6. W. G. Hoover and C. G. Hoover, "Ergodicity of the Martyna–Klein–Tuckerman thermostat and + the 2014 Snook Prize", [arXiv:1501.06634](https://arxiv.org/abs/1501.06634). Single + Nosé–Hoover dynamics does not give the canonical distribution of a harmonic oscillator. +7. I. Batatia et al., "A foundation model for atomistic materials chemistry" (MACE-MP-0), + [arXiv:2401.00096](https://arxiv.org/abs/2401.00096). + +## 3D Structures + +- [Cu_conventional.cif](Cu_conventional.cif) +- [relax/relaxed_structure.cif](relax/relaxed_structure.cif) diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/Cu256_100.0K_nvt.log b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/Cu256_100.0K_nvt.log new file mode 100644 index 00000000..a723c5a2 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/Cu256_100.0K_nvt.log @@ -0,0 +1,117 @@ +Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K] +0.0000 -1043.576 -1047.148 3.572 108.0 +0.0200 -1043.576 -1046.069 2.494 75.4 +0.0400 -1043.568 -1044.369 0.802 24.2 +0.0600 -1043.556 -1044.320 0.764 23.1 +0.0800 -1043.515 -1045.387 1.872 56.6 +0.1000 -1043.443 -1045.753 2.310 69.8 +0.1200 -1043.384 -1045.302 1.918 58.0 +0.1400 -1043.341 -1045.132 1.791 54.1 +0.1600 -1043.296 -1045.377 2.081 62.9 +0.1800 -1043.246 -1045.282 2.036 61.5 +0.2000 -1043.197 -1044.883 1.686 50.9 +0.2200 -1043.148 -1044.944 1.796 54.3 +0.2400 -1043.083 -1045.365 2.282 68.9 +0.2600 -1043.011 -1045.264 2.253 68.1 +0.2800 -1042.948 -1044.721 1.773 53.6 +0.3000 -1042.890 -1044.775 1.884 56.9 +0.3200 -1042.816 -1045.442 2.626 79.4 +0.3400 -1042.729 -1045.561 2.831 85.6 +0.3600 -1042.656 -1044.866 2.211 66.8 +0.3800 -1042.597 -1044.413 1.816 54.9 +0.4000 -1042.533 -1044.693 2.160 65.3 +0.4200 -1042.453 -1044.927 2.474 74.8 +0.4400 -1042.373 -1044.707 2.334 70.5 +0.4600 -1042.299 -1044.580 2.280 68.9 +0.4800 -1042.221 -1044.816 2.595 78.4 +0.5000 -1042.135 -1044.943 2.808 84.8 +0.5200 -1042.053 -1044.677 2.624 79.3 +0.5400 -1041.980 -1044.367 2.388 72.2 +0.5600 -1041.907 -1044.293 2.386 72.1 +0.5800 -1041.830 -1044.264 2.434 73.6 +0.6000 -1041.751 -1044.244 2.493 75.3 +0.6200 -1041.666 -1044.580 2.914 88.1 +0.6400 -1041.572 -1045.029 3.457 104.5 +0.6600 -1041.484 -1044.814 3.330 100.6 +0.6800 -1041.414 -1044.021 2.606 78.8 +0.7000 -1041.355 -1043.648 2.293 69.3 +0.7200 -1041.285 -1044.067 2.783 84.1 +0.7400 -1041.197 -1044.523 3.326 100.5 +0.7600 -1041.112 -1044.403 3.292 99.5 +0.7800 -1041.037 -1044.106 3.069 92.8 +0.8000 -1040.968 -1044.059 3.091 93.4 +0.8200 -1040.899 -1043.940 3.042 91.9 +0.8400 -1040.832 -1043.694 2.862 86.5 +0.8600 -1040.764 -1043.792 3.027 91.5 +0.8800 -1040.690 -1044.082 3.392 102.5 +0.9000 -1040.618 -1043.971 3.354 101.3 +0.9200 -1040.554 -1043.585 3.031 91.6 +0.9400 -1040.493 -1043.717 3.224 97.4 +0.9600 -1040.426 -1044.336 3.911 118.2 +0.9800 -1040.366 -1044.372 4.007 121.1 +1.0000 -1040.325 -1043.528 3.202 96.8 +1.0200 -1040.293 -1043.029 2.735 82.7 +1.0400 -1040.253 -1043.650 3.397 102.7 +1.0600 -1040.205 -1044.263 4.058 122.6 +1.0800 -1040.169 -1043.914 3.745 113.2 +1.1000 -1040.148 -1043.387 3.240 97.9 +1.1200 -1040.128 -1043.539 3.410 103.1 +1.1400 -1040.109 -1043.780 3.671 110.9 +1.1600 -1040.096 -1043.500 3.404 102.9 +1.1800 -1040.085 -1043.309 3.224 97.4 +1.2000 -1040.075 -1043.753 3.678 111.2 +1.2200 -1040.072 -1043.967 3.895 117.7 +1.2400 -1040.078 -1043.299 3.221 97.3 +1.2600 -1040.081 -1042.814 2.733 82.6 +1.2800 -1040.078 -1043.584 3.506 105.9 +1.3000 -1040.080 -1044.527 4.448 134.4 +1.3200 -1040.107 -1044.337 4.230 127.8 +1.3400 -1040.149 -1043.466 3.317 100.2 +1.3600 -1040.186 -1043.205 3.019 91.2 +1.3800 -1040.220 -1043.787 3.567 107.8 +1.4000 -1040.265 -1044.197 3.932 118.8 +1.4200 -1040.320 -1043.865 3.545 107.1 +1.4400 -1040.372 -1043.475 3.103 93.8 +1.4600 -1040.416 -1043.541 3.125 94.4 +1.4800 -1040.457 -1043.652 3.195 96.5 +1.5000 -1040.494 -1043.588 3.094 93.5 +1.5200 -1040.525 -1043.643 3.118 94.2 +1.5400 -1040.555 -1043.981 3.427 103.6 +1.5600 -1040.590 -1044.308 3.718 112.4 +1.5800 -1040.634 -1044.266 3.632 109.8 +1.6000 -1040.680 -1043.943 3.263 98.6 +1.6200 -1040.719 -1043.685 2.966 89.6 +1.6400 -1040.751 -1043.714 2.963 89.6 +1.6600 -1040.777 -1044.006 3.229 97.6 +1.6800 -1040.805 -1044.287 3.482 105.2 +1.7000 -1040.835 -1044.259 3.424 103.5 +1.7200 -1040.866 -1044.035 3.169 95.8 +1.7400 -1040.892 -1043.923 3.030 91.6 +1.7600 -1040.913 -1043.929 3.016 91.1 +1.7800 -1040.928 -1043.895 2.967 89.7 +1.8000 -1040.937 -1043.849 2.912 88.0 +1.8200 -1040.939 -1043.939 3.000 90.7 +1.8400 -1040.936 -1044.174 3.238 97.9 +1.8600 -1040.930 -1044.284 3.354 101.4 +1.8800 -1040.925 -1044.092 3.167 95.7 +1.9000 -1040.917 -1043.880 2.963 89.5 +1.9200 -1040.904 -1043.985 3.081 93.1 +1.9400 -1040.886 -1044.248 3.362 101.6 +1.9600 -1040.867 -1044.226 3.359 101.5 +1.9800 -1040.849 -1043.860 3.011 91.0 +2.0000 -1040.828 -1043.602 2.775 83.8 +2.0200 -1040.798 -1043.884 3.085 93.2 +2.0400 -1040.760 -1044.433 3.673 111.0 +2.0600 -1040.725 -1044.536 3.811 115.2 +2.0800 -1040.701 -1044.023 3.322 100.4 +2.1000 -1040.682 -1043.518 2.836 85.7 +2.1200 -1040.657 -1043.457 2.800 84.6 +2.1400 -1040.622 -1043.711 3.089 93.3 +2.1600 -1040.580 -1043.950 3.370 101.8 +2.1800 -1040.538 -1043.947 3.410 103.0 +2.2000 -1040.499 -1043.859 3.361 101.6 +2.2200 -1040.462 -1043.916 3.454 104.4 +2.2400 -1040.428 -1043.914 3.485 105.3 +2.2600 -1040.399 -1043.688 3.289 99.4 +2.2800 -1040.371 -1043.644 3.273 98.9 +2.3000 -1040.343 -1043.857 3.515 106.2 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/md_inputs.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/md_inputs.json new file mode 100644 index 00000000..c9f28f5d --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/md_inputs.json @@ -0,0 +1,20 @@ +{ + "model_name": "MACE-MP-small", + "prediction_head": null, + "temperature": 100.0, + "steps": 10000, + "timestep": 2.0, + "ensemble": "nvt", + "log_interval": 10, + "pressure": 0.0, + "pressure_mask": null, + "monitor": true, + "monitor_type": [ + "explosion", + "equilibration" + ], + "monitor_params": { + "temp_std_threshold": 10.0 + }, + "supercell_min_length": 14.0 +} diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/Cu256_100.0K_nvt.log b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/Cu256_100.0K_nvt.log new file mode 100644 index 00000000..3761956e --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/Cu256_100.0K_nvt.log @@ -0,0 +1,1002 @@ +Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K] +0.0000 -1040.343 -1043.857 3.515 106.2 +0.0200 -1040.346 -1043.881 3.535 106.8 +0.0400 -1040.352 -1043.671 3.319 100.3 +0.0600 -1040.359 -1043.772 3.413 103.1 +0.0800 -1040.371 -1044.135 3.764 113.8 +0.1000 -1040.393 -1044.094 3.701 111.8 +0.1200 -1040.421 -1043.478 3.058 92.4 +0.1400 -1040.440 -1043.111 2.671 80.7 +0.1600 -1040.452 -1043.584 3.132 94.7 +0.1800 -1040.464 -1044.251 3.788 114.5 +0.2000 -1040.487 -1044.285 3.798 114.8 +0.2200 -1040.519 -1043.824 3.305 99.9 +0.2400 -1040.551 -1043.592 3.040 91.9 +0.2600 -1040.581 -1043.742 3.161 95.5 +0.2800 -1040.610 -1043.808 3.198 96.6 +0.3000 -1040.639 -1043.776 3.137 94.8 +0.3200 -1040.668 -1043.973 3.306 99.9 +0.3400 -1040.701 -1044.191 3.491 105.5 +0.3600 -1040.740 -1044.116 3.377 102.0 +0.3800 -1040.781 -1043.986 3.205 96.9 +0.4000 -1040.822 -1044.099 3.276 99.0 +0.4200 -1040.867 -1044.302 3.435 103.8 +0.4400 -1040.915 -1044.220 3.305 99.9 +0.4600 -1040.958 -1043.760 2.802 84.7 +0.4800 -1040.985 -1043.452 2.467 74.6 +0.5000 -1040.999 -1043.768 2.768 83.7 +0.5200 -1041.006 -1044.229 3.223 97.4 +0.5400 -1041.010 -1044.315 3.306 99.9 +0.5600 -1041.013 -1044.224 3.211 97.1 +0.5800 -1041.015 -1044.220 3.205 96.9 +0.6000 -1041.014 -1044.163 3.149 95.2 +0.6200 -1041.010 -1043.947 2.936 88.7 +0.6400 -1041.001 -1043.891 2.890 87.3 +0.6600 -1040.985 -1044.126 3.140 94.9 +0.6800 -1040.966 -1044.298 3.331 100.7 +0.7000 -1040.949 -1044.233 3.284 99.2 +0.7200 -1040.933 -1044.171 3.238 97.9 +0.7400 -1040.919 -1044.104 3.185 96.2 +0.7600 -1040.905 -1043.961 3.057 92.4 +0.7800 -1040.889 -1043.840 2.951 89.2 +0.8000 -1040.872 -1043.774 2.903 87.7 +0.8200 -1040.852 -1043.859 3.007 90.9 +0.8400 -1040.831 -1044.135 3.304 99.9 +0.8600 -1040.814 -1044.239 3.426 103.5 +0.8800 -1040.801 -1043.957 3.155 95.4 +0.9000 -1040.789 -1043.683 2.893 87.4 +0.9200 -1040.774 -1043.864 3.090 93.4 +0.9400 -1040.756 -1044.294 3.538 106.9 +0.9600 -1040.742 -1044.363 3.621 109.4 +0.9800 -1040.734 -1043.901 3.167 95.7 +1.0000 -1040.726 -1043.479 2.753 83.2 +1.0200 -1040.710 -1043.681 2.970 89.8 +1.0400 -1040.688 -1044.217 3.529 106.7 +1.0600 -1040.666 -1044.374 3.707 112.0 +1.0800 -1040.653 -1044.008 3.354 101.4 +1.1000 -1040.643 -1043.626 2.984 90.2 +1.1200 -1040.628 -1043.713 3.085 93.2 +1.1400 -1040.608 -1044.057 3.448 104.2 +1.1600 -1040.589 -1044.047 3.458 104.5 +1.1800 -1040.573 -1043.652 3.080 93.1 +1.2000 -1040.554 -1043.483 2.929 88.5 +1.2200 -1040.529 -1043.802 3.274 98.9 +1.2400 -1040.499 -1044.093 3.593 108.6 +1.2600 -1040.473 -1043.937 3.464 104.7 +1.2800 -1040.452 -1043.729 3.277 99.0 +1.3000 -1040.431 -1043.856 3.425 103.5 +1.3200 -1040.411 -1043.977 3.566 107.8 +1.3400 -1040.396 -1043.776 3.380 102.1 +1.3600 -1040.382 -1043.639 3.257 98.4 +1.3800 -1040.368 -1043.870 3.502 105.8 +1.4000 -1040.357 -1044.031 3.674 111.0 +1.4200 -1040.352 -1043.775 3.423 103.4 +1.4400 -1040.349 -1043.415 3.066 92.7 +1.4600 -1040.343 -1043.564 3.221 97.3 +1.4800 -1040.335 -1044.056 3.721 112.5 +1.5000 -1040.333 -1044.032 3.699 111.8 +1.5200 -1040.338 -1043.433 3.094 93.5 +1.5400 -1040.340 -1043.165 2.824 85.3 +1.5600 -1040.335 -1043.664 3.330 100.6 +1.5800 -1040.328 -1044.270 3.942 119.1 +1.6000 -1040.333 -1044.220 3.886 117.4 +1.6200 -1040.351 -1043.685 3.334 100.7 +1.6400 -1040.371 -1043.430 3.058 92.4 +1.6600 -1040.391 -1043.564 3.173 95.9 +1.6800 -1040.412 -1043.771 3.358 101.5 +1.7000 -1040.440 -1044.080 3.640 110.0 +1.7200 -1040.482 -1044.318 3.835 115.9 +1.7400 -1040.540 -1044.089 3.548 107.2 +1.7600 -1040.600 -1043.654 3.054 92.3 +1.7800 -1040.650 -1043.575 2.925 88.4 +1.8000 -1040.694 -1043.793 3.100 93.7 +1.8200 -1040.733 -1043.925 3.192 96.5 +1.8400 -1040.766 -1043.816 3.050 92.2 +1.8600 -1040.791 -1043.780 2.988 90.3 +1.8800 -1040.810 -1044.084 3.273 98.9 +1.9000 -1040.829 -1044.360 3.531 106.7 +1.9200 -1040.851 -1044.188 3.338 100.9 +1.9400 -1040.869 -1043.833 2.964 89.6 +1.9600 -1040.879 -1043.826 2.946 89.0 +1.9800 -1040.884 -1044.092 3.208 96.9 +2.0000 -1040.887 -1044.215 3.328 100.6 +2.0200 -1040.889 -1044.120 3.231 97.6 +2.0400 -1040.890 -1044.051 3.161 95.5 +2.0600 -1040.889 -1044.135 3.246 98.1 +2.0800 -1040.886 -1044.183 3.297 99.6 +2.1000 -1040.882 -1044.060 3.178 96.0 +2.1200 -1040.876 -1043.864 2.988 90.3 +2.1400 -1040.864 -1043.751 2.887 87.2 +2.1600 -1040.845 -1043.711 2.866 86.6 +2.1800 -1040.817 -1043.796 2.979 90.0 +2.2000 -1040.779 -1044.157 3.378 102.1 +2.2200 -1040.737 -1044.465 3.728 112.7 +2.2400 -1040.700 -1044.258 3.557 107.5 +2.2600 -1040.672 -1043.699 3.027 91.5 +2.2800 -1040.643 -1043.477 2.834 85.7 +2.3000 -1040.605 -1043.828 3.223 97.4 +2.3200 -1040.562 -1044.202 3.639 110.0 +2.3400 -1040.525 -1044.107 3.582 108.2 +2.3600 -1040.497 -1043.808 3.310 100.0 +2.3800 -1040.474 -1043.722 3.248 98.2 +2.4000 -1040.452 -1043.760 3.308 100.0 +2.4200 -1040.433 -1043.754 3.321 100.4 +2.4400 -1040.416 -1043.763 3.347 101.2 +2.4600 -1040.402 -1043.826 3.424 103.5 +2.4800 -1040.392 -1043.817 3.425 103.5 +2.5000 -1040.386 -1043.705 3.320 100.3 +2.5200 -1040.381 -1043.671 3.290 99.4 +2.5400 -1040.377 -1043.766 3.389 102.4 +2.5600 -1040.375 -1043.729 3.354 101.4 +2.5800 -1040.374 -1043.577 3.204 96.8 +2.6000 -1040.371 -1043.722 3.351 101.3 +2.6200 -1040.371 -1044.108 3.737 112.9 +2.6400 -1040.378 -1044.097 3.719 112.4 +2.6600 -1040.391 -1043.651 3.260 98.5 +2.6800 -1040.402 -1043.533 3.131 94.6 +2.7000 -1040.410 -1043.923 3.513 106.2 +2.7200 -1040.422 -1044.115 3.693 111.6 +2.7400 -1040.439 -1043.796 3.357 101.4 +2.7600 -1040.455 -1043.545 3.090 93.4 +2.7800 -1040.467 -1043.671 3.204 96.8 +2.8000 -1040.477 -1043.870 3.394 102.6 +2.8200 -1040.488 -1043.981 3.493 105.6 +2.8400 -1040.503 -1043.970 3.468 104.8 +2.8600 -1040.519 -1043.796 3.277 99.0 +2.8800 -1040.534 -1043.584 3.050 92.2 +2.9000 -1040.544 -1043.571 3.027 91.5 +2.9200 -1040.549 -1043.815 3.267 98.7 +2.9400 -1040.554 -1044.102 3.548 107.2 +2.9600 -1040.564 -1044.195 3.631 109.7 +2.9800 -1040.580 -1043.999 3.418 103.3 +3.0000 -1040.598 -1043.798 3.200 96.7 +3.0200 -1040.615 -1043.858 3.243 98.0 +3.0400 -1040.632 -1043.960 3.328 100.6 +3.0600 -1040.650 -1043.939 3.289 99.4 +3.0800 -1040.669 -1043.918 3.250 98.2 +3.1000 -1040.688 -1043.917 3.229 97.6 +3.1200 -1040.707 -1043.821 3.115 94.1 +3.1400 -1040.723 -1043.747 3.024 91.4 +3.1600 -1040.737 -1043.904 3.167 95.7 +3.1800 -1040.751 -1044.101 3.350 101.2 +3.2000 -1040.768 -1044.010 3.243 98.0 +3.2200 -1040.785 -1043.772 2.987 90.3 +3.2400 -1040.800 -1043.822 3.022 91.3 +3.2600 -1040.813 -1044.170 3.357 101.4 +3.2800 -1040.833 -1044.357 3.524 106.5 +3.3000 -1040.859 -1044.173 3.313 100.1 +3.3200 -1040.889 -1043.879 2.990 90.4 +3.3400 -1040.916 -1043.859 2.943 88.9 +3.3600 -1040.942 -1044.116 3.174 95.9 +3.3800 -1040.969 -1044.218 3.249 98.2 +3.4000 -1040.997 -1044.084 3.087 93.3 +3.4200 -1041.022 -1044.060 3.038 91.8 +3.4400 -1041.044 -1044.130 3.086 93.3 +3.4600 -1041.062 -1044.119 3.056 92.4 +3.4800 -1041.077 -1044.057 2.980 90.1 +3.5000 -1041.086 -1043.997 2.910 88.0 +3.5200 -1041.089 -1043.956 2.867 86.7 +3.5400 -1041.084 -1044.003 2.919 88.2 +3.5600 -1041.071 -1044.158 3.087 93.3 +3.5800 -1041.052 -1044.356 3.304 99.9 +3.6000 -1041.030 -1044.431 3.400 102.8 +3.6200 -1041.009 -1044.215 3.206 96.9 +3.6400 -1040.986 -1043.892 2.907 87.8 +3.6600 -1040.956 -1043.854 2.898 87.6 +3.6800 -1040.917 -1044.103 3.186 96.3 +3.7000 -1040.871 -1044.179 3.308 100.0 +3.7200 -1040.825 -1043.932 3.107 93.9 +3.7400 -1040.780 -1043.826 3.046 92.1 +3.7600 -1040.733 -1044.029 3.297 99.6 +3.7800 -1040.686 -1044.179 3.493 105.6 +3.8000 -1040.647 -1044.033 3.386 102.3 +3.8200 -1040.616 -1043.713 3.097 93.6 +3.8400 -1040.588 -1043.539 2.951 89.2 +3.8600 -1040.558 -1043.596 3.038 91.8 +3.8800 -1040.527 -1043.751 3.224 97.4 +3.9000 -1040.496 -1043.933 3.438 103.9 +3.9200 -1040.470 -1044.155 3.685 111.4 +3.9400 -1040.454 -1044.186 3.731 112.8 +3.9600 -1040.448 -1043.865 3.417 103.3 +3.9800 -1040.445 -1043.555 3.110 94.0 +4.0000 -1040.440 -1043.616 3.176 96.0 +4.0200 -1040.432 -1043.900 3.467 104.8 +4.0400 -1040.428 -1043.999 3.571 107.9 +4.0600 -1040.427 -1043.826 3.399 102.7 +4.0800 -1040.430 -1043.790 3.360 101.5 +4.1000 -1040.434 -1043.941 3.507 106.0 +4.1200 -1040.441 -1043.839 3.397 102.7 +4.1400 -1040.449 -1043.535 3.086 93.3 +4.1600 -1040.454 -1043.521 3.067 92.7 +4.1800 -1040.454 -1043.735 3.280 99.1 +4.2000 -1040.454 -1043.852 3.398 102.7 +4.2200 -1040.455 -1043.832 3.377 102.0 +4.2400 -1040.458 -1043.849 3.391 102.5 +4.2600 -1040.463 -1044.017 3.554 107.4 +4.2800 -1040.474 -1044.082 3.608 109.0 +4.3000 -1040.492 -1043.848 3.356 101.4 +4.3200 -1040.510 -1043.635 3.125 94.4 +4.3400 -1040.528 -1043.771 3.243 98.0 +4.3600 -1040.548 -1044.035 3.487 105.4 +4.3800 -1040.574 -1044.023 3.449 104.2 +4.4000 -1040.605 -1043.837 3.232 97.7 +4.4200 -1040.636 -1043.792 3.155 95.4 +4.4400 -1040.669 -1043.938 3.268 98.8 +4.4600 -1040.706 -1044.040 3.334 100.8 +4.4800 -1040.745 -1043.881 3.137 94.8 +4.5000 -1040.780 -1043.624 2.844 86.0 +4.5200 -1040.807 -1043.672 2.865 86.6 +4.5400 -1040.831 -1044.094 3.263 98.6 +4.5600 -1040.858 -1044.417 3.559 107.6 +4.5800 -1040.891 -1044.318 3.427 103.6 +4.6000 -1040.925 -1044.027 3.101 93.7 +4.6200 -1040.955 -1043.885 2.930 88.5 +4.6400 -1040.978 -1043.973 2.995 90.5 +4.6600 -1040.997 -1044.132 3.135 94.7 +4.6800 -1041.015 -1044.185 3.171 95.8 +4.7000 -1041.029 -1044.171 3.141 94.9 +4.7200 -1041.042 -1044.136 3.094 93.5 +4.7400 -1041.051 -1044.060 3.009 90.9 +4.7600 -1041.055 -1044.054 2.999 90.6 +4.7800 -1041.054 -1044.192 3.138 94.8 +4.8000 -1041.049 -1044.193 3.144 95.0 +4.8200 -1041.039 -1043.902 2.863 86.5 +4.8400 -1041.020 -1043.688 2.668 80.6 +4.8600 -1040.986 -1043.920 2.933 88.6 +4.8800 -1040.933 -1044.359 3.426 103.5 +4.9000 -1040.865 -1044.420 3.555 107.4 +4.9200 -1040.798 -1044.061 3.263 98.6 +4.9400 -1040.735 -1043.863 3.128 94.5 +4.9600 -1040.671 -1043.939 3.268 98.8 +4.9800 -1040.611 -1043.889 3.278 99.1 +5.0000 -1040.560 -1043.771 3.210 97.0 +5.0200 -1040.518 -1043.782 3.265 98.7 +5.0400 -1040.482 -1043.819 3.337 100.8 +5.0600 -1040.454 -1043.878 3.424 103.5 +5.0800 -1040.432 -1043.957 3.525 106.5 +5.1000 -1040.417 -1043.891 3.474 105.0 +5.1200 -1040.408 -1043.737 3.329 100.6 +5.1400 -1040.401 -1043.611 3.210 97.0 +5.1600 -1040.392 -1043.575 3.183 96.2 +5.1800 -1040.382 -1043.688 3.306 99.9 +5.2000 -1040.372 -1043.821 3.449 104.2 +5.2200 -1040.365 -1043.865 3.500 105.8 +5.2400 -1040.361 -1043.850 3.489 105.4 +5.2600 -1040.362 -1043.881 3.520 106.4 +5.2800 -1040.367 -1043.839 3.472 104.9 +5.3000 -1040.375 -1043.720 3.345 101.1 +5.3200 -1040.384 -1043.706 3.322 100.4 +5.3400 -1040.393 -1043.818 3.425 103.5 +5.3600 -1040.406 -1043.918 3.512 106.1 +5.3800 -1040.424 -1043.865 3.441 104.0 +5.4000 -1040.443 -1043.728 3.284 99.2 +5.4200 -1040.463 -1043.711 3.247 98.1 +5.4400 -1040.483 -1043.862 3.378 102.1 +5.4600 -1040.506 -1043.921 3.415 103.2 +5.4800 -1040.531 -1043.778 3.247 98.1 +5.5000 -1040.555 -1043.682 3.128 94.5 +5.5200 -1040.576 -1043.753 3.177 96.0 +5.5400 -1040.596 -1043.831 3.235 97.8 +5.5600 -1040.615 -1043.914 3.299 99.7 +5.5800 -1040.636 -1044.000 3.364 101.7 +5.6000 -1040.658 -1044.030 3.371 101.9 +5.6200 -1040.684 -1044.042 3.359 101.5 +5.6400 -1040.711 -1044.067 3.356 101.4 +5.6600 -1040.741 -1044.041 3.301 99.7 +5.6800 -1040.770 -1043.926 3.155 95.4 +5.7000 -1040.797 -1043.838 3.041 91.9 +5.7200 -1040.819 -1043.868 3.049 92.1 +5.7400 -1040.838 -1043.997 3.158 95.4 +5.7600 -1040.857 -1044.150 3.293 99.5 +5.7800 -1040.875 -1044.120 3.244 98.0 +5.8000 -1040.892 -1043.902 3.010 91.0 +5.8200 -1040.905 -1043.821 2.916 88.1 +5.8400 -1040.912 -1043.969 3.057 92.4 +5.8600 -1040.915 -1044.122 3.207 96.9 +5.8800 -1040.916 -1044.152 3.237 97.8 +5.9000 -1040.915 -1044.111 3.195 96.6 +5.9200 -1040.912 -1044.062 3.150 95.2 +5.9400 -1040.905 -1044.055 3.149 95.2 +5.9600 -1040.894 -1044.030 3.136 94.8 +5.9800 -1040.875 -1044.027 3.152 95.2 +6.0000 -1040.849 -1044.134 3.285 99.3 +6.0200 -1040.815 -1044.145 3.329 100.6 +6.0400 -1040.777 -1043.851 3.074 92.9 +6.0600 -1040.732 -1043.613 2.881 87.1 +6.0800 -1040.676 -1043.912 3.236 97.8 +6.1000 -1040.610 -1044.279 3.670 110.9 +6.1200 -1040.548 -1044.061 3.513 106.2 +6.1400 -1040.500 -1043.542 3.042 91.9 +6.1600 -1040.458 -1043.392 2.934 88.7 +6.1800 -1040.413 -1043.659 3.246 98.1 +6.2000 -1040.368 -1043.924 3.556 107.5 +6.2200 -1040.331 -1043.995 3.664 110.7 +6.2400 -1040.305 -1043.973 3.668 110.8 +6.2600 -1040.290 -1043.853 3.563 107.7 +6.2800 -1040.282 -1043.617 3.336 100.8 +6.3000 -1040.275 -1043.543 3.268 98.8 +6.3200 -1040.269 -1043.824 3.554 107.4 +6.3400 -1040.268 -1044.002 3.735 112.9 +6.3600 -1040.274 -1043.708 3.434 103.8 +6.3800 -1040.282 -1043.411 3.129 94.5 +6.4000 -1040.288 -1043.598 3.310 100.0 +6.4200 -1040.295 -1043.914 3.620 109.4 +6.4400 -1040.307 -1043.828 3.521 106.4 +6.4600 -1040.323 -1043.536 3.213 97.1 +6.4800 -1040.337 -1043.582 3.245 98.1 +6.5000 -1040.352 -1043.894 3.542 107.0 +6.5200 -1040.373 -1043.974 3.601 108.8 +6.5400 -1040.399 -1043.777 3.378 102.1 +6.5600 -1040.427 -1043.694 3.267 98.7 +6.5800 -1040.455 -1043.774 3.319 100.3 +6.6000 -1040.484 -1043.880 3.395 102.6 +6.6200 -1040.517 -1044.008 3.491 105.5 +6.6400 -1040.554 -1044.043 3.489 105.4 +6.6600 -1040.594 -1043.894 3.300 99.7 +6.6800 -1040.630 -1043.746 3.116 94.2 +6.7000 -1040.661 -1043.704 3.043 92.0 +6.7200 -1040.686 -1043.876 3.190 96.4 +6.7400 -1040.711 -1044.188 3.477 105.1 +6.7600 -1040.737 -1044.141 3.404 102.9 +6.7800 -1040.761 -1043.729 2.969 89.7 +6.8000 -1040.776 -1043.668 2.892 87.4 +6.8200 -1040.785 -1044.067 3.282 99.2 +6.8400 -1040.793 -1044.271 3.477 105.1 +6.8600 -1040.803 -1044.107 3.303 99.8 +6.8800 -1040.812 -1043.866 3.054 92.3 +6.9000 -1040.816 -1043.759 2.943 88.9 +6.9200 -1040.813 -1043.860 3.046 92.1 +6.9400 -1040.806 -1044.135 3.329 100.6 +6.9600 -1040.800 -1044.387 3.588 108.4 +6.9800 -1040.797 -1044.277 3.479 105.2 +7.0000 -1040.798 -1043.859 3.061 92.5 +7.0200 -1040.795 -1043.648 2.853 86.2 +7.0400 -1040.785 -1043.914 3.130 94.6 +7.0600 -1040.770 -1044.183 3.413 103.1 +7.0800 -1040.756 -1043.984 3.228 97.5 +7.1000 -1040.741 -1043.705 2.963 89.6 +7.1200 -1040.722 -1043.819 3.097 93.6 +7.1400 -1040.697 -1044.066 3.369 101.8 +7.1600 -1040.670 -1044.054 3.384 102.3 +7.1800 -1040.646 -1043.893 3.247 98.1 +7.2000 -1040.621 -1043.815 3.193 96.5 +7.2200 -1040.594 -1043.808 3.214 97.1 +7.2400 -1040.565 -1043.828 3.263 98.6 +7.2600 -1040.534 -1043.869 3.334 100.8 +7.2800 -1040.504 -1043.928 3.424 103.5 +7.3000 -1040.475 -1044.043 3.568 107.8 +7.3200 -1040.451 -1044.072 3.621 109.4 +7.3400 -1040.434 -1043.804 3.370 101.9 +7.3600 -1040.420 -1043.475 3.055 92.3 +7.3800 -1040.404 -1043.568 3.164 95.6 +7.4000 -1040.385 -1043.881 3.497 105.7 +7.4200 -1040.369 -1043.904 3.535 106.8 +7.4400 -1040.358 -1043.703 3.345 101.1 +7.4600 -1040.350 -1043.675 3.325 100.5 +7.4800 -1040.344 -1043.767 3.423 103.5 +7.5000 -1040.341 -1043.729 3.388 102.4 +7.5200 -1040.339 -1043.647 3.307 100.0 +7.5400 -1040.339 -1043.685 3.347 101.1 +7.5600 -1040.339 -1043.799 3.460 104.6 +7.5800 -1040.342 -1043.902 3.559 107.6 +7.6000 -1040.349 -1043.953 3.605 108.9 +7.6200 -1040.360 -1043.957 3.597 108.7 +7.6400 -1040.374 -1043.874 3.499 105.7 +7.6600 -1040.390 -1043.705 3.315 100.2 +7.6800 -1040.403 -1043.636 3.233 97.7 +7.7000 -1040.415 -1043.791 3.376 102.0 +7.7200 -1040.429 -1043.851 3.422 103.4 +7.7400 -1040.443 -1043.615 3.172 95.9 +7.7600 -1040.453 -1043.513 3.060 92.5 +7.7800 -1040.460 -1043.839 3.379 102.1 +7.8000 -1040.470 -1044.167 3.697 111.7 +7.8200 -1040.487 -1044.000 3.513 106.2 +7.8400 -1040.505 -1043.593 3.087 93.3 +7.8600 -1040.520 -1043.562 3.042 91.9 +7.8800 -1040.531 -1043.821 3.289 99.4 +7.9000 -1040.542 -1043.976 3.433 103.8 +7.9200 -1040.557 -1044.079 3.522 106.4 +7.9400 -1040.577 -1044.178 3.601 108.8 +7.9600 -1040.603 -1044.091 3.488 105.4 +7.9800 -1040.632 -1043.812 3.180 96.1 +8.0000 -1040.655 -1043.568 2.913 88.0 +8.0200 -1040.672 -1043.640 2.968 89.7 +8.0400 -1040.684 -1043.971 3.286 99.3 +8.0600 -1040.697 -1044.114 3.417 103.3 +8.0800 -1040.711 -1043.991 3.280 99.1 +8.1000 -1040.725 -1043.943 3.218 97.2 +8.1200 -1040.738 -1044.011 3.273 98.9 +8.1400 -1040.750 -1043.895 3.145 95.0 +8.1600 -1040.758 -1043.747 2.989 90.3 +8.1800 -1040.762 -1043.906 3.144 95.0 +8.2000 -1040.763 -1044.146 3.383 102.2 +8.2200 -1040.765 -1044.086 3.322 100.4 +8.2400 -1040.766 -1043.907 3.141 94.9 +8.2600 -1040.765 -1043.984 3.219 97.3 +8.2800 -1040.763 -1044.194 3.431 103.7 +8.3000 -1040.763 -1044.177 3.414 103.2 +8.3200 -1040.763 -1043.883 3.120 94.3 +8.3400 -1040.760 -1043.665 2.905 87.8 +8.3600 -1040.751 -1043.800 3.049 92.1 +8.3800 -1040.734 -1044.049 3.314 100.2 +8.4000 -1040.714 -1044.034 3.319 100.3 +8.4200 -1040.692 -1043.863 3.171 95.8 +8.4400 -1040.666 -1043.884 3.217 97.2 +8.4600 -1040.635 -1043.988 3.353 101.3 +8.4800 -1040.600 -1043.906 3.306 99.9 +8.5000 -1040.564 -1043.737 3.172 95.9 +8.5200 -1040.525 -1043.729 3.204 96.8 +8.5400 -1040.480 -1043.882 3.402 102.8 +8.5600 -1040.434 -1043.938 3.503 105.9 +8.5800 -1040.393 -1043.810 3.417 103.3 +8.6000 -1040.356 -1043.779 3.424 103.5 +8.6200 -1040.322 -1043.894 3.572 107.9 +8.6400 -1040.294 -1043.822 3.528 106.6 +8.6600 -1040.273 -1043.585 3.312 100.1 +8.6800 -1040.254 -1043.501 3.247 98.1 +8.7000 -1040.235 -1043.668 3.432 103.7 +8.7200 -1040.219 -1043.868 3.649 110.3 +8.7400 -1040.210 -1043.810 3.600 108.8 +8.7600 -1040.207 -1043.558 3.351 101.3 +8.7800 -1040.205 -1043.473 3.267 98.7 +8.8000 -1040.204 -1043.661 3.457 104.5 +8.8200 -1040.205 -1043.809 3.604 108.9 +8.8400 -1040.212 -1043.740 3.528 106.6 +8.8600 -1040.223 -1043.643 3.419 103.3 +8.8800 -1040.237 -1043.736 3.499 105.7 +8.9000 -1040.256 -1043.871 3.615 109.2 +8.9200 -1040.282 -1043.786 3.504 105.9 +8.9400 -1040.310 -1043.627 3.317 100.3 +8.9600 -1040.339 -1043.696 3.357 101.4 +8.9800 -1040.372 -1043.950 3.579 108.1 +9.0000 -1040.412 -1044.056 3.644 110.1 +9.0200 -1040.458 -1043.845 3.387 102.4 +9.0400 -1040.499 -1043.538 3.039 91.8 +9.0600 -1040.533 -1043.577 3.044 92.0 +9.0800 -1040.561 -1043.870 3.309 100.0 +9.1000 -1040.587 -1043.898 3.311 100.0 +9.1200 -1040.609 -1043.769 3.160 95.5 +9.1400 -1040.626 -1043.863 3.237 97.8 +9.1600 -1040.639 -1044.028 3.389 102.4 +9.1800 -1040.651 -1044.059 3.407 103.0 +9.2000 -1040.663 -1044.000 3.338 100.9 +9.2200 -1040.672 -1043.966 3.295 99.6 +9.2400 -1040.679 -1043.991 3.312 100.1 +9.2600 -1040.684 -1044.026 3.342 101.0 +9.2800 -1040.689 -1043.952 3.263 98.6 +9.3000 -1040.692 -1043.862 3.170 95.8 +9.3200 -1040.692 -1043.839 3.147 95.1 +9.3400 -1040.690 -1043.828 3.138 94.8 +9.3600 -1040.684 -1043.939 3.255 98.4 +9.3800 -1040.678 -1044.066 3.388 102.4 +9.4000 -1040.673 -1043.866 3.192 96.5 +9.4200 -1040.666 -1043.604 2.938 88.8 +9.4400 -1040.655 -1043.820 3.165 95.7 +9.4600 -1040.639 -1044.222 3.583 108.3 +9.4800 -1040.627 -1044.198 3.571 107.9 +9.5000 -1040.621 -1043.847 3.226 97.5 +9.5200 -1040.614 -1043.641 3.027 91.5 +9.5400 -1040.602 -1043.789 3.186 96.3 +9.5600 -1040.588 -1044.003 3.416 103.2 +9.5800 -1040.573 -1043.935 3.362 101.6 +9.6000 -1040.560 -1043.850 3.290 99.4 +9.6200 -1040.546 -1043.984 3.438 103.9 +9.6400 -1040.534 -1043.970 3.436 103.8 +9.6600 -1040.523 -1043.739 3.215 97.2 +9.6800 -1040.512 -1043.741 3.229 97.6 +9.7000 -1040.497 -1043.947 3.449 104.2 +9.7200 -1040.484 -1043.926 3.442 104.0 +9.7400 -1040.472 -1043.603 3.131 94.6 +9.7600 -1040.457 -1043.490 3.033 91.7 +9.7800 -1040.436 -1043.864 3.429 103.6 +9.8000 -1040.412 -1044.184 3.773 114.0 +9.8200 -1040.394 -1043.948 3.554 107.4 +9.8400 -1040.380 -1043.541 3.160 95.5 +9.8600 -1040.365 -1043.544 3.179 96.1 +9.8800 -1040.345 -1043.869 3.524 106.5 +9.9000 -1040.324 -1043.983 3.659 110.6 +9.9200 -1040.307 -1043.778 3.471 104.9 +9.9400 -1040.293 -1043.706 3.413 103.1 +9.9600 -1040.280 -1043.805 3.524 106.5 +9.9800 -1040.269 -1043.757 3.488 105.4 +10.0000 -1040.261 -1043.667 3.406 102.9 +10.0200 -1040.253 -1043.683 3.430 103.7 +10.0400 -1040.247 -1043.690 3.443 104.0 +10.0600 -1040.243 -1043.559 3.316 100.2 +10.0800 -1040.238 -1043.431 3.192 96.5 +10.1000 -1040.232 -1043.621 3.389 102.4 +10.1200 -1040.225 -1043.945 3.719 112.4 +10.1400 -1040.226 -1043.925 3.699 111.8 +10.1600 -1040.235 -1043.689 3.454 104.4 +10.1800 -1040.249 -1043.689 3.439 103.9 +10.2000 -1040.269 -1043.821 3.552 107.3 +10.2200 -1040.296 -1043.777 3.481 105.2 +10.2400 -1040.327 -1043.580 3.253 98.3 +10.2600 -1040.358 -1043.613 3.255 98.4 +10.2800 -1040.392 -1043.913 3.520 106.4 +10.3000 -1040.434 -1044.031 3.597 108.7 +10.3200 -1040.482 -1043.871 3.389 102.4 +10.3400 -1040.528 -1043.759 3.231 97.6 +10.3600 -1040.570 -1043.792 3.222 97.4 +10.3800 -1040.609 -1043.827 3.218 97.2 +10.4000 -1040.643 -1043.840 3.197 96.6 +10.4200 -1040.673 -1043.902 3.228 97.6 +10.4400 -1040.700 -1043.994 3.294 99.5 +10.4600 -1040.725 -1043.983 3.258 98.5 +10.4800 -1040.746 -1043.855 3.109 94.0 +10.5000 -1040.762 -1043.894 3.132 94.7 +10.5200 -1040.775 -1044.107 3.332 100.7 +10.5400 -1040.788 -1044.139 3.351 101.3 +10.5600 -1040.800 -1044.037 3.237 97.8 +10.5800 -1040.811 -1044.031 3.220 97.3 +10.6000 -1040.820 -1044.057 3.237 97.8 +10.6200 -1040.827 -1043.972 3.145 95.0 +10.6400 -1040.830 -1043.874 3.044 92.0 +10.6600 -1040.829 -1043.903 3.074 92.9 +10.6800 -1040.824 -1044.031 3.207 96.9 +10.7000 -1040.816 -1044.016 3.200 96.7 +10.7200 -1040.805 -1043.813 3.007 90.9 +10.7400 -1040.790 -1043.851 3.061 92.5 +10.7600 -1040.768 -1044.171 3.403 102.9 +10.7800 -1040.744 -1044.254 3.510 106.1 +10.8000 -1040.723 -1043.942 3.219 97.3 +10.8200 -1040.700 -1043.737 3.037 91.8 +10.8400 -1040.672 -1043.922 3.251 98.2 +10.8600 -1040.637 -1044.084 3.447 104.2 +10.8800 -1040.601 -1043.897 3.296 99.6 +10.9000 -1040.565 -1043.657 3.092 93.4 +10.9200 -1040.523 -1043.781 3.257 98.4 +10.9400 -1040.475 -1044.016 3.540 107.0 +10.9600 -1040.428 -1043.944 3.516 106.3 +10.9800 -1040.387 -1043.628 3.240 97.9 +11.0000 -1040.349 -1043.502 3.153 95.3 +11.0200 -1040.308 -1043.749 3.440 104.0 +11.0400 -1040.270 -1043.940 3.670 110.9 +11.0600 -1040.241 -1043.758 3.516 106.3 +11.0800 -1040.221 -1043.578 3.357 101.4 +11.1000 -1040.205 -1043.647 3.441 104.0 +11.1200 -1040.194 -1043.807 3.613 109.2 +11.1400 -1040.190 -1043.817 3.627 109.6 +11.1600 -1040.192 -1043.638 3.446 104.2 +11.1800 -1040.196 -1043.547 3.350 101.3 +11.2000 -1040.201 -1043.637 3.436 103.8 +11.2200 -1040.208 -1043.701 3.493 105.6 +11.2400 -1040.217 -1043.716 3.499 105.7 +11.2600 -1040.228 -1043.785 3.557 107.5 +11.2800 -1040.243 -1043.782 3.539 106.9 +11.3000 -1040.259 -1043.656 3.397 102.7 +11.3200 -1040.275 -1043.657 3.382 102.2 +11.3400 -1040.291 -1043.824 3.533 106.8 +11.3600 -1040.310 -1043.908 3.598 108.7 +11.3800 -1040.332 -1043.655 3.323 100.4 +11.4000 -1040.350 -1043.451 3.100 93.7 +11.4200 -1040.365 -1043.699 3.335 100.8 +11.4400 -1040.380 -1043.949 3.569 107.9 +11.4600 -1040.398 -1043.862 3.464 104.7 +11.4800 -1040.418 -1043.758 3.340 100.9 +11.5000 -1040.438 -1043.877 3.439 103.9 +11.5200 -1040.461 -1043.986 3.525 106.5 +11.5400 -1040.487 -1043.881 3.395 102.6 +11.5600 -1040.511 -1043.741 3.230 97.6 +11.5800 -1040.534 -1043.773 3.240 97.9 +11.6000 -1040.554 -1043.820 3.266 98.7 +11.6200 -1040.572 -1043.783 3.211 97.0 +11.6400 -1040.588 -1043.867 3.279 99.1 +11.6600 -1040.604 -1044.012 3.408 103.0 +11.6800 -1040.621 -1043.979 3.358 101.5 +11.7000 -1040.638 -1043.889 3.251 98.2 +11.7200 -1040.654 -1043.913 3.259 98.5 +11.7400 -1040.668 -1043.956 3.288 99.4 +11.7600 -1040.682 -1043.881 3.199 96.7 +11.7800 -1040.693 -1043.756 3.063 92.6 +11.8000 -1040.700 -1043.838 3.138 94.8 +11.8200 -1040.705 -1044.114 3.409 103.0 +11.8400 -1040.711 -1044.174 3.463 104.6 +11.8600 -1040.720 -1044.012 3.292 99.5 +11.8800 -1040.730 -1043.947 3.218 97.2 +11.9000 -1040.738 -1043.959 3.221 97.3 +11.9200 -1040.745 -1043.846 3.101 93.7 +11.9400 -1040.748 -1043.756 3.008 90.9 +11.9600 -1040.747 -1043.944 3.197 96.6 +11.9800 -1040.743 -1044.179 3.436 103.8 +12.0000 -1040.740 -1044.124 3.384 102.3 +12.0200 -1040.737 -1043.832 3.095 93.5 +12.0400 -1040.730 -1043.666 2.935 88.7 +12.0600 -1040.714 -1043.840 3.125 94.4 +12.0800 -1040.689 -1044.127 3.439 103.9 +12.1000 -1040.657 -1044.155 3.498 105.7 +12.1200 -1040.624 -1043.907 3.283 99.2 +12.1400 -1040.589 -1043.779 3.190 96.4 +12.1600 -1040.547 -1043.878 3.332 100.7 +12.1800 -1040.501 -1043.948 3.448 104.2 +12.2000 -1040.455 -1043.890 3.435 103.8 +12.2200 -1040.412 -1043.777 3.365 101.7 +12.2400 -1040.371 -1043.660 3.288 99.4 +12.2600 -1040.333 -1043.601 3.268 98.8 +12.2800 -1040.295 -1043.620 3.326 100.5 +12.3000 -1040.258 -1043.745 3.487 105.4 +12.3200 -1040.225 -1043.874 3.648 110.3 +12.3400 -1040.201 -1043.818 3.617 109.3 +12.3600 -1040.184 -1043.640 3.456 104.4 +12.3800 -1040.172 -1043.511 3.339 100.9 +12.4000 -1040.161 -1043.537 3.377 102.0 +12.4200 -1040.151 -1043.727 3.575 108.0 +12.4400 -1040.147 -1043.840 3.692 111.6 +12.4600 -1040.151 -1043.746 3.595 108.6 +12.4800 -1040.161 -1043.644 3.482 105.2 +12.5000 -1040.175 -1043.692 3.517 106.3 +12.5200 -1040.195 -1043.729 3.534 106.8 +12.5400 -1040.218 -1043.611 3.393 102.5 +12.5600 -1040.243 -1043.496 3.253 98.3 +12.5800 -1040.268 -1043.606 3.338 100.9 +12.6000 -1040.295 -1043.842 3.547 107.2 +12.6200 -1040.330 -1043.976 3.646 110.2 +12.6400 -1040.372 -1043.952 3.580 108.2 +12.6600 -1040.418 -1043.793 3.375 102.0 +12.6800 -1040.462 -1043.635 3.173 95.9 +12.7000 -1040.500 -1043.714 3.214 97.1 +12.7200 -1040.536 -1043.929 3.393 102.5 +12.7400 -1040.571 -1043.929 3.359 101.5 +12.7600 -1040.601 -1043.755 3.154 95.3 +12.7800 -1040.625 -1043.761 3.136 94.8 +12.8000 -1040.644 -1043.999 3.355 101.4 +12.8200 -1040.662 -1044.166 3.503 105.9 +12.8400 -1040.682 -1044.057 3.375 102.0 +12.8600 -1040.699 -1043.894 3.195 96.6 +12.8800 -1040.712 -1043.911 3.199 96.7 +12.9000 -1040.722 -1044.005 3.283 99.2 +12.9200 -1040.730 -1043.962 3.232 97.7 +12.9400 -1040.735 -1043.784 3.049 92.2 +12.9600 -1040.735 -1043.770 3.035 91.7 +12.9800 -1040.731 -1043.973 3.242 98.0 +13.0000 -1040.725 -1044.106 3.381 102.2 +13.0200 -1040.721 -1044.046 3.324 100.5 +13.0400 -1040.718 -1043.922 3.205 96.8 +13.0600 -1040.712 -1043.829 3.117 94.2 +13.0800 -1040.704 -1043.843 3.139 94.9 +13.1000 -1040.693 -1043.957 3.263 98.6 +13.1200 -1040.682 -1043.996 3.314 100.2 +13.1400 -1040.670 -1043.911 3.241 97.9 +13.1600 -1040.658 -1043.938 3.280 99.1 +13.1800 -1040.645 -1044.040 3.395 102.6 +13.2000 -1040.634 -1043.981 3.347 101.1 +13.2200 -1040.624 -1043.860 3.236 97.8 +13.2400 -1040.613 -1043.838 3.225 97.5 +13.2600 -1040.601 -1043.861 3.261 98.5 +13.2800 -1040.587 -1043.843 3.256 98.4 +13.3000 -1040.572 -1043.796 3.224 97.4 +13.3200 -1040.555 -1043.804 3.249 98.2 +13.3400 -1040.536 -1043.861 3.325 100.5 +13.3600 -1040.516 -1043.849 3.332 100.7 +13.3800 -1040.496 -1043.824 3.328 100.6 +13.4000 -1040.474 -1043.886 3.412 103.1 +13.4200 -1040.453 -1043.944 3.492 105.5 +13.4400 -1040.432 -1043.839 3.407 102.9 +13.4600 -1040.412 -1043.710 3.298 99.7 +13.4800 -1040.389 -1043.719 3.329 100.6 +13.5000 -1040.362 -1043.807 3.444 104.1 +13.5200 -1040.331 -1043.825 3.494 105.6 +13.5400 -1040.296 -1043.738 3.442 104.0 +13.5600 -1040.257 -1043.714 3.457 104.5 +13.5800 -1040.211 -1043.770 3.559 107.5 +13.6000 -1040.160 -1043.671 3.510 106.1 +13.6200 -1040.107 -1043.463 3.356 101.4 +13.6400 -1040.050 -1043.500 3.450 104.3 +13.6600 -1039.989 -1043.693 3.703 111.9 +13.6800 -1039.933 -1043.631 3.699 111.8 +13.7000 -1039.886 -1043.414 3.528 106.6 +13.7200 -1039.848 -1043.391 3.543 107.1 +13.7400 -1039.815 -1043.623 3.808 115.1 +13.7600 -1039.794 -1043.704 3.910 118.2 +13.7800 -1039.786 -1043.512 3.726 112.6 +13.8000 -1039.788 -1043.481 3.693 111.6 +13.8200 -1039.800 -1043.553 3.753 113.4 +13.8400 -1039.820 -1043.379 3.559 107.6 +13.8600 -1039.843 -1043.210 3.367 101.7 +13.8800 -1039.868 -1043.393 3.525 106.5 +13.9000 -1039.899 -1043.738 3.839 116.0 +13.9200 -1039.944 -1043.862 3.918 118.4 +13.9400 -1039.996 -1043.568 3.572 107.9 +13.9600 -1040.045 -1043.347 3.302 99.8 +13.9800 -1040.090 -1043.616 3.526 106.6 +14.0000 -1040.137 -1043.922 3.785 114.4 +14.0200 -1040.185 -1043.812 3.627 109.6 +14.0400 -1040.226 -1043.563 3.337 100.8 +14.0600 -1040.259 -1043.583 3.325 100.5 +14.0800 -1040.286 -1043.693 3.407 103.0 +14.1000 -1040.309 -1043.686 3.377 102.1 +14.1200 -1040.329 -1043.722 3.393 102.5 +14.1400 -1040.348 -1043.806 3.458 104.5 +14.1600 -1040.368 -1043.884 3.516 106.3 +14.1800 -1040.391 -1043.927 3.536 106.9 +14.2000 -1040.415 -1043.915 3.500 105.8 +14.2200 -1040.441 -1043.792 3.351 101.3 +14.2400 -1040.465 -1043.666 3.201 96.7 +14.2600 -1040.485 -1043.725 3.240 97.9 +14.2800 -1040.504 -1043.885 3.380 102.1 +14.3000 -1040.525 -1043.956 3.431 103.7 +14.3200 -1040.546 -1043.834 3.288 99.4 +14.3400 -1040.565 -1043.687 3.122 94.3 +14.3600 -1040.581 -1043.797 3.216 97.2 +14.3800 -1040.596 -1044.052 3.456 104.4 +14.4000 -1040.614 -1044.112 3.498 105.7 +14.4200 -1040.635 -1043.895 3.260 98.5 +14.4400 -1040.653 -1043.695 3.041 91.9 +14.4600 -1040.667 -1043.762 3.095 93.5 +14.4800 -1040.678 -1043.978 3.299 99.7 +14.5000 -1040.689 -1044.142 3.452 104.3 +14.5200 -1040.704 -1044.099 3.395 102.6 +14.5400 -1040.719 -1043.905 3.185 96.3 +14.5600 -1040.732 -1043.832 3.100 93.7 +14.5800 -1040.743 -1043.919 3.177 96.0 +14.6000 -1040.750 -1043.958 3.207 96.9 +14.6200 -1040.757 -1043.911 3.154 95.3 +14.6400 -1040.760 -1043.869 3.108 93.9 +14.6600 -1040.761 -1043.876 3.116 94.2 +14.6800 -1040.757 -1043.951 3.194 96.5 +14.7000 -1040.751 -1044.066 3.315 100.2 +14.7200 -1040.743 -1044.123 3.380 102.1 +14.7400 -1040.736 -1044.087 3.351 101.3 +14.7600 -1040.729 -1043.958 3.229 97.6 +14.7800 -1040.719 -1043.800 3.081 93.1 +14.8000 -1040.704 -1043.759 3.055 92.3 +14.8200 -1040.681 -1043.910 3.229 97.6 +14.8400 -1040.651 -1044.074 3.423 103.4 +14.8600 -1040.618 -1044.011 3.394 102.6 +14.8800 -1040.583 -1043.835 3.253 98.3 +14.9000 -1040.544 -1043.808 3.264 98.6 +14.9200 -1040.501 -1043.857 3.356 101.4 +14.9400 -1040.455 -1043.827 3.371 101.9 +14.9600 -1040.410 -1043.762 3.352 101.3 +14.9800 -1040.366 -1043.711 3.345 101.1 +15.0000 -1040.323 -1043.736 3.414 103.2 +15.0200 -1040.283 -1043.804 3.521 106.4 +15.0400 -1040.248 -1043.782 3.533 106.8 +15.0600 -1040.221 -1043.718 3.497 105.7 +15.0800 -1040.199 -1043.649 3.450 104.3 +15.1000 -1040.182 -1043.629 3.446 104.1 +15.1200 -1040.169 -1043.696 3.527 106.6 +15.1400 -1040.161 -1043.753 3.592 108.5 +15.1600 -1040.159 -1043.777 3.618 109.3 +15.1800 -1040.163 -1043.684 3.521 106.4 +15.2000 -1040.171 -1043.537 3.365 101.7 +15.2200 -1040.181 -1043.570 3.389 102.4 +15.2400 -1040.192 -1043.699 3.507 106.0 +15.2600 -1040.208 -1043.740 3.533 106.8 +15.2800 -1040.228 -1043.720 3.492 105.5 +15.3000 -1040.251 -1043.692 3.441 104.0 +15.3200 -1040.277 -1043.634 3.357 101.5 +15.3400 -1040.304 -1043.697 3.394 102.6 +15.3600 -1040.334 -1043.958 3.625 109.5 +15.3800 -1040.372 -1044.030 3.658 110.5 +15.4000 -1040.413 -1043.677 3.263 98.6 +15.4200 -1040.448 -1043.390 2.942 88.9 +15.4400 -1040.474 -1043.567 3.093 93.5 +15.4600 -1040.497 -1043.982 3.485 105.3 +15.4800 -1040.524 -1044.196 3.672 111.0 +15.5000 -1040.554 -1044.114 3.560 107.6 +15.5200 -1040.585 -1043.900 3.315 100.2 +15.5400 -1040.609 -1043.754 3.145 95.0 +15.5600 -1040.626 -1043.795 3.169 95.8 +15.5800 -1040.638 -1043.924 3.286 99.3 +15.6000 -1040.648 -1044.007 3.359 101.5 +15.6200 -1040.656 -1043.937 3.281 99.1 +15.6400 -1040.662 -1043.762 3.100 93.7 +15.6600 -1040.663 -1043.778 3.115 94.1 +15.6800 -1040.661 -1044.002 3.341 101.0 +15.7000 -1040.660 -1044.072 3.412 103.1 +15.7200 -1040.660 -1043.906 3.246 98.1 +15.7400 -1040.659 -1043.810 3.150 95.2 +15.7600 -1040.656 -1043.863 3.207 96.9 +15.7800 -1040.651 -1043.917 3.266 98.7 +15.8000 -1040.645 -1043.931 3.286 99.3 +15.8200 -1040.639 -1043.928 3.289 99.4 +15.8400 -1040.633 -1043.949 3.317 100.2 +15.8600 -1040.627 -1044.052 3.425 103.5 +15.8800 -1040.624 -1044.062 3.439 103.9 +15.9000 -1040.622 -1043.840 3.218 97.2 +15.9200 -1040.619 -1043.622 3.003 90.7 +15.9400 -1040.611 -1043.692 3.081 93.1 +15.9600 -1040.598 -1043.954 3.356 101.4 +15.9800 -1040.584 -1044.029 3.445 104.1 +16.0000 -1040.573 -1043.903 3.330 100.6 +16.0200 -1040.561 -1043.795 3.234 97.7 +16.0400 -1040.548 -1043.766 3.218 97.2 +16.0600 -1040.532 -1043.854 3.322 100.4 +16.0800 -1040.515 -1044.026 3.511 106.1 +16.1000 -1040.499 -1044.048 3.549 107.2 +16.1200 -1040.488 -1043.856 3.368 101.8 +16.1400 -1040.477 -1043.655 3.178 96.0 +16.1600 -1040.463 -1043.641 3.178 96.0 +16.1800 -1040.445 -1043.767 3.322 100.4 +16.2000 -1040.423 -1043.842 3.419 103.3 +16.2200 -1040.399 -1043.873 3.474 105.0 +16.2400 -1040.376 -1043.911 3.534 106.8 +16.2600 -1040.355 -1043.831 3.476 105.0 +16.2800 -1040.333 -1043.619 3.286 99.3 +16.3000 -1040.310 -1043.609 3.299 99.7 +16.3200 -1040.283 -1043.766 3.483 105.3 +16.3400 -1040.253 -1043.791 3.538 106.9 +16.3600 -1040.225 -1043.686 3.460 104.6 +16.3800 -1040.198 -1043.591 3.393 102.6 +16.4000 -1040.169 -1043.610 3.440 104.0 +16.4200 -1040.140 -1043.741 3.601 108.8 +16.4400 -1040.114 -1043.862 3.748 113.3 +16.4600 -1040.094 -1043.784 3.691 111.5 +16.4800 -1040.081 -1043.543 3.462 104.6 +16.5000 -1040.072 -1043.424 3.352 101.3 +16.5200 -1040.063 -1043.536 3.474 105.0 +16.5400 -1040.056 -1043.672 3.616 109.3 +16.5600 -1040.055 -1043.711 3.656 110.5 +16.5800 -1040.063 -1043.724 3.661 110.6 +16.6000 -1040.079 -1043.668 3.589 108.5 +16.6200 -1040.102 -1043.509 3.407 103.0 +16.6400 -1040.129 -1043.449 3.320 100.3 +16.6600 -1040.161 -1043.666 3.505 105.9 +16.6800 -1040.202 -1043.858 3.656 110.5 +16.7000 -1040.254 -1043.784 3.531 106.7 +16.7200 -1040.308 -1043.612 3.304 99.9 +16.7400 -1040.361 -1043.617 3.256 98.4 +16.7600 -1040.411 -1043.825 3.413 103.1 +16.7800 -1040.463 -1044.002 3.539 106.9 +16.8000 -1040.514 -1043.986 3.471 104.9 +16.8200 -1040.560 -1043.827 3.267 98.7 +16.8400 -1040.597 -1043.761 3.165 95.6 +16.8600 -1040.626 -1043.890 3.264 98.6 +16.8800 -1040.651 -1044.025 3.374 102.0 +16.9000 -1040.674 -1044.035 3.362 101.6 +16.9200 -1040.694 -1043.958 3.264 98.6 +16.9400 -1040.710 -1043.817 3.107 93.9 +16.9600 -1040.721 -1043.762 3.041 91.9 +16.9800 -1040.726 -1043.930 3.204 96.8 +17.0000 -1040.730 -1044.103 3.373 101.9 +17.0200 -1040.734 -1043.990 3.256 98.4 +17.0400 -1040.736 -1043.798 3.062 92.5 +17.0600 -1040.735 -1043.900 3.166 95.7 +17.0800 -1040.730 -1044.118 3.387 102.4 +17.1000 -1040.727 -1044.058 3.331 100.7 +17.1200 -1040.724 -1043.875 3.152 95.2 +17.1400 -1040.718 -1043.836 3.118 94.2 +17.1600 -1040.709 -1043.894 3.185 96.3 +17.1800 -1040.696 -1044.018 3.321 100.4 +17.2000 -1040.684 -1044.095 3.411 103.1 +17.2200 -1040.672 -1044.043 3.371 101.9 +17.2400 -1040.661 -1043.955 3.294 99.6 +17.2600 -1040.649 -1043.794 3.145 95.0 +17.2800 -1040.634 -1043.604 2.971 89.8 +17.3000 -1040.612 -1043.683 3.071 92.8 +17.3200 -1040.582 -1043.964 3.381 102.2 +17.3400 -1040.549 -1044.026 3.477 105.1 +17.3600 -1040.517 -1043.871 3.354 101.4 +17.3800 -1040.484 -1043.764 3.280 99.1 +17.4000 -1040.450 -1043.852 3.402 102.8 +17.4200 -1040.414 -1044.042 3.628 109.6 +17.4400 -1040.381 -1043.976 3.594 108.6 +17.4600 -1040.354 -1043.674 3.320 100.3 +17.4800 -1040.329 -1043.533 3.204 96.8 +17.5000 -1040.300 -1043.610 3.310 100.0 +17.5200 -1040.269 -1043.711 3.443 104.0 +17.5400 -1040.238 -1043.789 3.551 107.3 +17.5600 -1040.210 -1043.809 3.599 108.8 +17.5800 -1040.187 -1043.711 3.525 106.5 +17.6000 -1040.167 -1043.540 3.373 101.9 +17.6200 -1040.149 -1043.549 3.400 102.7 +17.6400 -1040.131 -1043.750 3.619 109.4 +17.6600 -1040.116 -1043.832 3.716 112.3 +17.6800 -1040.109 -1043.668 3.559 107.6 +17.7000 -1040.106 -1043.575 3.469 104.8 +17.7200 -1040.108 -1043.662 3.554 107.4 +17.7400 -1040.115 -1043.707 3.592 108.5 +17.7600 -1040.131 -1043.615 3.484 105.3 +17.7800 -1040.155 -1043.471 3.316 100.2 +17.8000 -1040.185 -1043.520 3.335 100.8 +17.8200 -1040.225 -1043.786 3.562 107.6 +17.8400 -1040.280 -1043.934 3.654 110.4 +17.8600 -1040.348 -1043.849 3.501 105.8 +17.8800 -1040.421 -1043.751 3.330 100.6 +17.9000 -1040.490 -1043.754 3.264 98.6 +17.9200 -1040.550 -1043.774 3.224 97.4 +17.9400 -1040.602 -1043.847 3.245 98.1 +17.9600 -1040.646 -1043.979 3.334 100.7 +17.9800 -1040.685 -1044.056 3.371 101.9 +18.0000 -1040.719 -1044.021 3.302 99.8 +18.0200 -1040.748 -1043.936 3.188 96.3 +18.0400 -1040.770 -1043.835 3.065 92.6 +18.0600 -1040.786 -1043.856 3.070 92.8 +18.0800 -1040.797 -1044.042 3.245 98.1 +18.1000 -1040.807 -1044.106 3.299 99.7 +18.1200 -1040.815 -1043.994 3.179 96.1 +18.1400 -1040.821 -1044.007 3.186 96.3 +18.1600 -1040.825 -1044.102 3.277 99.0 +18.1800 -1040.828 -1044.095 3.267 98.7 +18.2000 -1040.830 -1044.040 3.210 97.0 +18.2200 -1040.830 -1043.934 3.104 93.8 +18.2400 -1040.825 -1043.802 2.977 90.0 +18.2600 -1040.816 -1043.825 3.009 90.9 +18.2800 -1040.800 -1044.043 3.243 98.0 +18.3000 -1040.781 -1044.184 3.403 102.8 +18.3200 -1040.762 -1044.065 3.303 99.8 +18.3400 -1040.743 -1043.864 3.120 94.3 +18.3600 -1040.721 -1043.809 3.088 93.3 +18.3800 -1040.694 -1043.907 3.213 97.1 +18.4000 -1040.663 -1043.958 3.295 99.6 +18.4200 -1040.630 -1043.916 3.287 99.3 +18.4400 -1040.596 -1043.902 3.306 99.9 +18.4600 -1040.562 -1043.908 3.346 101.1 +18.4800 -1040.529 -1043.903 3.374 102.0 +18.5000 -1040.497 -1043.943 3.447 104.2 +18.5200 -1040.468 -1043.926 3.458 104.5 +18.5400 -1040.443 -1043.786 3.344 101.0 +18.5600 -1040.420 -1043.645 3.225 97.5 +18.5800 -1040.397 -1043.640 3.243 98.0 +18.6000 -1040.373 -1043.789 3.416 103.2 +18.6200 -1040.351 -1043.931 3.580 108.2 +18.6400 -1040.334 -1043.827 3.493 105.6 +18.6600 -1040.321 -1043.538 3.217 97.2 +18.6800 -1040.309 -1043.446 3.138 94.8 +18.7000 -1040.294 -1043.689 3.395 102.6 +18.7200 -1040.279 -1043.934 3.655 110.4 +18.7400 -1040.271 -1043.943 3.672 111.0 +18.7600 -1040.271 -1043.852 3.581 108.2 +18.7800 -1040.277 -1043.788 3.511 106.1 +18.8000 -1040.287 -1043.769 3.482 105.2 +18.8200 -1040.301 -1043.733 3.432 103.7 +18.8400 -1040.318 -1043.645 3.327 100.5 +18.8600 -1040.336 -1043.584 3.247 98.1 +18.8800 -1040.354 -1043.565 3.211 97.0 +18.9000 -1040.372 -1043.670 3.298 99.7 +18.9200 -1040.394 -1043.923 3.530 106.7 +18.9400 -1040.426 -1044.104 3.678 111.2 +18.9600 -1040.471 -1043.961 3.489 105.5 +18.9800 -1040.524 -1043.688 3.164 95.6 +19.0000 -1040.580 -1043.660 3.081 93.1 +19.0200 -1040.639 -1043.849 3.210 97.0 +19.0400 -1040.703 -1043.992 3.289 99.4 +19.0600 -1040.767 -1044.035 3.269 98.8 +19.0800 -1040.826 -1044.089 3.262 98.6 +19.1000 -1040.878 -1044.092 3.214 97.1 +19.1200 -1040.919 -1043.979 3.061 92.5 +19.1400 -1040.946 -1043.964 3.018 91.2 +19.1600 -1040.964 -1044.162 3.198 96.6 +19.1800 -1040.976 -1044.222 3.246 98.1 +19.2000 -1040.984 -1043.991 3.007 90.9 +19.2200 -1040.985 -1043.875 2.890 87.3 +19.2400 -1040.980 -1044.060 3.080 93.1 +19.2600 -1040.971 -1044.247 3.276 99.0 +19.2800 -1040.962 -1044.229 3.267 98.7 +19.3000 -1040.953 -1044.069 3.116 94.2 +19.3200 -1040.941 -1043.925 2.984 90.2 +19.3400 -1040.925 -1043.918 2.992 90.4 +19.3600 -1040.904 -1044.025 3.121 94.3 +19.3800 -1040.879 -1044.126 3.247 98.1 +19.4000 -1040.854 -1044.131 3.277 99.0 +19.4200 -1040.828 -1044.014 3.186 96.3 +19.4400 -1040.802 -1043.860 3.058 92.4 +19.4600 -1040.773 -1043.859 3.086 93.2 +19.4800 -1040.741 -1044.038 3.297 99.6 +19.5000 -1040.708 -1044.107 3.400 102.7 +19.5200 -1040.677 -1043.980 3.303 99.8 +19.5400 -1040.649 -1043.883 3.233 97.7 +19.5600 -1040.622 -1043.891 3.269 98.8 +19.5800 -1040.595 -1043.845 3.249 98.2 +19.6000 -1040.569 -1043.745 3.175 96.0 +19.6200 -1040.543 -1043.752 3.209 97.0 +19.6400 -1040.516 -1043.809 3.293 99.5 +19.6600 -1040.489 -1043.826 3.337 100.8 +19.6800 -1040.465 -1043.904 3.439 103.9 +19.7000 -1040.444 -1043.997 3.553 107.4 +19.7200 -1040.428 -1043.912 3.484 105.3 +19.7400 -1040.418 -1043.705 3.287 99.3 +19.7600 -1040.408 -1043.664 3.256 98.4 +19.7800 -1040.398 -1043.749 3.351 101.3 +19.8000 -1040.389 -1043.759 3.370 101.8 +19.8200 -1040.381 -1043.734 3.353 101.3 +19.8400 -1040.374 -1043.837 3.463 104.6 +19.8600 -1040.371 -1043.957 3.586 108.4 +19.8800 -1040.373 -1043.908 3.535 106.8 +19.9000 -1040.379 -1043.727 3.348 101.2 +19.9200 -1040.386 -1043.593 3.207 96.9 +19.9400 -1040.392 -1043.661 3.269 98.8 +19.9600 -1040.397 -1043.776 3.378 102.1 +19.9800 -1040.404 -1043.787 3.383 102.2 +20.0000 -1040.413 -1043.839 3.426 103.5 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/md_inputs.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/md_inputs.json new file mode 100644 index 00000000..ca9c9c90 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/md_inputs.json @@ -0,0 +1,15 @@ +{ + "model_name": "MACE-MP-small", + "prediction_head": null, + "temperature": 100.0, + "steps": 10000, + "timestep": 2.0, + "ensemble": "nvt", + "log_interval": 10, + "pressure": 0.0, + "pressure_mask": null, + "monitor": true, + "monitor_type": "explosion", + "monitor_params": null, + "supercell_min_length": null +} diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/analyze_md_monitor_run.py b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/analyze_md_monitor_run.py new file mode 100644 index 00000000..65e79fca --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/analyze_md_monitor_run.py @@ -0,0 +1,405 @@ +""" +Analyze monitored NVT runs of a crystal and compare them with classical theory. + +Reads the ASE MD logs written by ``mace.run_md`` / ``matgl.run_md`` (columns +``Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K]``) together with the ``md_inputs.json`` +saved next to each log, and reports: + +* for each equilibration (stage-1) log: where the ``equilibration`` monitor + stopped the run and the std(T) of its last window, recomputed exactly as + ``EquilibrationMonitor`` does; +* for each production log: the mean temperature, the std of the instantaneous + temperature against the canonical value T*sqrt(2/(3N)), and the mean + potential-energy rise above the relaxed minimum against the classical + equipartition value (3/2) k_B T per atom; +* with two or more production temperatures: the finite-difference heat capacity + against the Dulong-Petit limit 3 k_B per atom (3R per mole). + +Usage: + python analyze_md_monitor_run.py \ + --relax-dir relax \ + --stage1-logs stage1/Cu256_300.0K_nvt.log stage1b/Cu256_300.0K_nvt.log \ + --stage1-labels "300 K, threshold 50 K" "300 K, threshold 30 K" \ + --production-logs prod300/Cu256_300.0K_nvt.log prod100/Cu256_100.0K_nvt.log \ + --n-atoms 256 --output-dir results + +Requirements: + - Environment: cpu (or mlip) + - Required packages: numpy, matplotlib, ase, pyyaml +""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt # noqa: E402 +import numpy as np # noqa: E402 +from ase.io import read # noqa: E402 + +from src.utils.config_utils import save_skill_inputs # noqa: E402 + +# CODATA 2022 exact values (https://physics.nist.gov/cgi-bin/cuu/Value?kev and ?r) +KB_EV_PER_K = 8.617333262e-5 +R_J_PER_MOL_K = 8.314462618 +DEFAULT_TEMP_STD_THRESHOLD = 50.0 # EquilibrationMonitor default (K) + +plt.rcParams.update({"font.size": 14}) + + +def load_md_log(log_path: Path) -> dict[str, np.ndarray]: + """ + Load an ASE MD log file. + + Args: + log_path: Path to the log written by ASE's MDLogger. + + Returns: + Dictionary with arrays 'time_ps', 'etot', 'epot', 'ekin' (eV) and 'temp' (K). + """ + data = np.loadtxt(log_path, skiprows=1, ndmin=2) + return { + "time_ps": data[:, 0], + "etot": data[:, 1], + "epot": data[:, 2], + "ekin": data[:, 3], + "temp": data[:, 4], + } + + +def load_md_inputs(log_path: Path) -> dict: + """ + Load the md_inputs.json that run_md writes next to its log. + + Args: + log_path: Path to the MD log file. + + Returns: + Dictionary of run_md input parameters. + """ + return json.loads((log_path.parent / "md_inputs.json").read_text()) + + +def window_entries(md_inputs: dict) -> int: + """ + Number of logged entries in one EquilibrationMonitor window. + + Args: + md_inputs: run_md input parameters (timestep, log_interval, monitor_params). + + Returns: + Window length in log entries, as computed by EquilibrationMonitor. + """ + params = md_inputs.get("monitor_params") or {} + window_ps = params.get("window_ps", 1.0) + return max( + 2, int(window_ps * 1000 / md_inputs["timestep"] / md_inputs["log_interval"]) + ) + + +def rolling_std(values: np.ndarray, n_window: int) -> np.ndarray: + """ + Population std over the trailing window, NaN until the window is full. + + Args: + values: Time series. + n_window: Window length in samples. + + Returns: + Array of the same length with the trailing-window std. + """ + out = np.full(len(values), np.nan) + for i in range(n_window - 1, len(values)): + out[i] = np.std(values[i - n_window + 1 : i + 1]) + return out + + +def block_mean_sem(values: np.ndarray, n_blocks: int) -> tuple[float, float]: + """ + Mean and standard error of the mean from non-overlapping block averages. + + Args: + values: Time series. + n_blocks: Number of contiguous blocks. + + Returns: + Tuple (mean, standard error of the mean). + """ + blocks = np.array([b.mean() for b in np.array_split(values, n_blocks)]) + return float(values.mean()), float(blocks.std(ddof=1) / np.sqrt(n_blocks)) + + +def analyze_stage1(log_path: Path, label: str) -> dict: + """ + Summarize where the equilibration monitor stopped a stage-1 run. + + Args: + log_path: Stage-1 MD log. + label: Label used in plots and the JSON summary. + + Returns: + Dictionary with the stop time, step, threshold and recomputed std(T). + """ + log = load_md_log(log_path) + md_inputs = load_md_inputs(log_path) + n_win = window_entries(md_inputs) + params = md_inputs.get("monitor_params") or {} + threshold = params.get("temp_std_threshold", DEFAULT_TEMP_STD_THRESHOLD) + stds = rolling_std(log["temp"], n_win) + return { + "label": label, + "log": log_path.name, + "target_temperature_K": md_inputs["temperature"], + "max_steps": md_inputs["steps"], + "temp_std_threshold_K": threshold, + "window_entries": n_win, + "stop_time_ps": float(log["time_ps"][-1]), + "stop_step": int(round(log["time_ps"][-1] * 1000 / md_inputs["timestep"])), + "std_T_last_window_K": float(stds[-1]), + "T_at_stop_K": float(log["temp"][-1]), + "max_T_K": float(log["temp"].max()), + } + + +def analyze_production( + log_path: Path, n_atoms: int, e_min_per_atom: float, n_blocks: int +) -> dict: + """ + Compare production-run averages with classical canonical theory. + + Args: + log_path: Production MD log. + n_atoms: Number of atoms in the simulation cell. + e_min_per_atom: Relaxed (0 K) potential energy per atom in eV. + n_blocks: Number of blocks for the standard error. + + Returns: + Dictionary of measured averages and theoretical reference values. + """ + log = load_md_log(log_path) + md_inputs = load_md_inputs(log_path) + t_target = float(md_inputs["temperature"]) + # Skip the first entry: it is the restart frame shared with stage 1. + temp = log["temp"][1:] + d_epot = (log["epot"][1:] / n_atoms - e_min_per_atom) * 1000.0 # meV/atom + ekin = log["ekin"][1:] / n_atoms * 1000.0 # meV/atom + t_mean, t_sem = block_mean_sem(temp, n_blocks) + u_mean, u_sem = block_mean_sem(d_epot, n_blocks) + k_mean, k_sem = block_mean_sem(ekin, n_blocks) + e_mean, e_sem = block_mean_sem(d_epot + ekin, n_blocks) + equip_target = 1.5 * KB_EV_PER_K * t_target * 1000.0 + equip_mean_t = 1.5 * KB_EV_PER_K * t_mean * 1000.0 + sigma_t_canonical = t_target * np.sqrt(2.0 / (3.0 * n_atoms)) + return { + "log": log_path.name, + "target_temperature_K": t_target, + "duration_ps": float(log["time_ps"][-1] - log["time_ps"][0]), + "n_samples": int(len(temp)), + "T_mean_K": t_mean, + "T_sem_K": t_sem, + "T_rel_error_pct": 100.0 * (t_mean - t_target) / t_target, + "T_std_K": float(temp.std()), + "T_std_canonical_K": float(sigma_t_canonical), + "dEpot_mean_meV_per_atom": u_mean, + "dEpot_sem_meV_per_atom": u_sem, + "Ekin_mean_meV_per_atom": k_mean, + "Ekin_sem_meV_per_atom": k_sem, + "Etot_minus_Emin_mean_meV_per_atom": e_mean, + "Etot_minus_Emin_sem_meV_per_atom": e_sem, + "equipartition_1p5kT_target_meV": equip_target, + "equipartition_1p5kT_meanT_meV": equip_mean_t, + "dEpot_vs_1p5kT_target_pct": 100.0 * (u_mean - equip_target) / equip_target, + "dEpot_over_Ekin": u_mean / k_mean, + "dEpot_over_Ekin_sem": u_sem / k_mean, + "time_ps": log["time_ps"][1:] - log["time_ps"][0], + "dEpot_series": d_epot, + } + + +def dulong_petit(productions: list[dict]) -> dict: + """ + Finite-difference heat capacity between the lowest and highest temperature. + + Args: + productions: Production summaries from analyze_production. + + Returns: + Dictionary with c_v in k_B/atom and J/(mol K), and the 3R reference. + """ + lo = min(productions, key=lambda p: p["T_mean_K"]) + hi = max(productions, key=lambda p: p["T_mean_K"]) + d_e = ( + hi["Etot_minus_Emin_mean_meV_per_atom"] + - lo["Etot_minus_Emin_mean_meV_per_atom"] + ) + d_t = hi["T_mean_K"] - lo["T_mean_K"] + d_e_err = np.hypot( + hi["Etot_minus_Emin_sem_meV_per_atom"], lo["Etot_minus_Emin_sem_meV_per_atom"] + ) + cv_kb = d_e / 1000.0 / d_t / KB_EV_PER_K + cv_kb_err = d_e_err / 1000.0 / d_t / KB_EV_PER_K + return { + "T_low_K": lo["T_mean_K"], + "T_high_K": hi["T_mean_K"], + "cv_kB_per_atom": float(cv_kb), + "cv_kB_per_atom_sem": float(cv_kb_err), + "cv_J_per_mol_K": float(cv_kb * R_J_PER_MOL_K), + "cv_J_per_mol_K_sem": float(cv_kb_err * R_J_PER_MOL_K), + "dulong_petit_kB_per_atom": 3.0, + "dulong_petit_J_per_mol_K": 3.0 * R_J_PER_MOL_K, + "rel_error_pct": 100.0 * (cv_kb - 3.0) / 3.0, + } + + +def plot_stage1( + logs: list[Path], labels: list[str], summaries: list[dict], n_atoms: int, out: Path +) -> None: + """ + Plot T(t) and the trailing-window std(T) of the stage-1 runs with stop points. + + Args: + logs: Stage-1 MD logs. + labels: Legend labels. + summaries: Outputs of analyze_stage1 (same order). + n_atoms: Number of atoms (for the canonical std band). + out: Output path without suffix. + """ + colors = plt.get_cmap("tab10").colors + fig, (ax_t, ax_s) = plt.subplots(2, 1, figsize=(6, 5), sharex=True) + for i, (log_path, label, summ) in enumerate(zip(logs, labels, summaries)): + log = load_md_log(log_path) + c = colors[i % len(colors)] + t_target = summ["target_temperature_K"] + sigma = t_target * np.sqrt(2.0 / (3.0 * n_atoms)) + ax_t.plot(log["time_ps"], log["temp"], color=c, linewidth=2.5, label=label) + ax_t.axhspan(t_target - sigma, t_target + sigma, color=c, alpha=0.08) + stds = rolling_std(log["temp"], summ["window_entries"]) + ax_s.plot(log["time_ps"], stds, color=c, linewidth=2.5) + ax_s.axhline( + summ["temp_std_threshold_K"], color=c, linestyle=":", linewidth=1.5 + ) + for ax in (ax_t, ax_s): + ax.axvline(summ["stop_time_ps"], color=c, linestyle="--", linewidth=1.5) + ax_s.plot(summ["stop_time_ps"], summ["std_T_last_window_K"], "o", color=c) + ax_t.set_ylabel("T (K)", fontweight="bold") + ax_s.set_ylabel("std(T), 1 ps (K)", fontweight="bold") + ax_s.set_xlabel("Time (ps)", fontweight="bold") + ax_t.legend(frameon=False, fontsize=10, loc="center right") + for ax in (ax_t, ax_s): + ax.grid(False) + plt.tight_layout() + for suffix in (".png", ".svg"): + plt.savefig(out.with_suffix(suffix), dpi=200, bbox_inches="tight") + plt.close(fig) + + +def plot_production(productions: list[dict], out: Path) -> None: + """ + Plot the potential-energy rise per atom against (3/2) k_B T. + + Args: + productions: Outputs of analyze_production. + out: Output path without suffix. + """ + colors = plt.get_cmap("tab10").colors + fig, ax = plt.subplots(figsize=(6, 5)) + for i, prod in enumerate(sorted(productions, key=lambda p: -p["T_mean_K"])): + c = colors[(i + 3) % len(colors)] + t = prod["time_ps"] + series = prod["dEpot_series"] + running = np.cumsum(series) / np.arange(1, len(series) + 1) + ax.plot(t, series, color=c, linewidth=0.8, alpha=0.35) + ax.plot( + t, + running, + color=c, + linewidth=2.5, + label=f"{prod['target_temperature_K']:.0f} K running mean", + ) + ax.axhline( + prod["equipartition_1p5kT_target_meV"], + color="k", + linestyle="--", + linewidth=1.5, + ) + ax.plot([], [], "k--", linewidth=1.5, label=r"$\frac{3}{2}k_BT$ (harmonic)") + ax.set_xlabel("Production time (ps)", fontweight="bold") + ax.set_ylabel(r"$E_{pot}-E_{min}$ (meV/atom)", fontweight="bold") + ax.legend(frameon=False, fontsize=11) + ax.grid(False) + plt.tight_layout() + for suffix in (".png", ".svg"): + plt.savefig(out.with_suffix(suffix), dpi=200, bbox_inches="tight") + plt.close(fig) + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Compare monitored NVT runs of a crystal with classical theory." + ) + parser.add_argument( + "--relax-dir", + required=True, + help="relax_structure output dir (relaxed_structure.cif, relaxed_energy.txt)", + ) + parser.add_argument( + "--stage1-logs", nargs="+", required=True, help="Equilibration (monitor) logs" + ) + parser.add_argument( + "--stage1-labels", nargs="+", default=None, help="Labels for the stage-1 logs" + ) + parser.add_argument( + "--production-logs", nargs="+", required=True, help="Production MD logs" + ) + parser.add_argument( + "--n-atoms", type=int, required=True, help="Atoms in the MD supercell" + ) + parser.add_argument( + "--n-blocks", type=int, default=5, help="Blocks for the standard error" + ) + parser.add_argument("--output-dir", default=".", help="Where to write results") + args = parser.parse_args() + + out_dir = Path(args.output_dir) + out_dir.mkdir(parents=True, exist_ok=True) + relax_dir = Path(args.relax_dir) + relaxed = read(relax_dir / "relaxed_structure.cif") + e_relaxed = float((relax_dir / "relaxed_energy.txt").read_text()) + e_min_per_atom = e_relaxed / len(relaxed) + + stage1_logs = [Path(p) for p in args.stage1_logs] + labels = args.stage1_labels or [p.parent.name for p in stage1_logs] + stage1 = [analyze_stage1(p, lab) for p, lab in zip(stage1_logs, labels)] + productions = [ + analyze_production(Path(p), args.n_atoms, e_min_per_atom, args.n_blocks) + for p in args.production_logs + ] + + summary = { + "n_atoms": args.n_atoms, + "relaxed_lattice_a_A": float(relaxed.cell.lengths()[0]), + "E_min_eV_per_atom": e_min_per_atom, + "stage1_equilibration": stage1, + "production": [ + {k: v for k, v in p.items() if k not in ("time_ps", "dEpot_series")} + for p in productions + ], + } + if len(productions) >= 2: + summary["dulong_petit"] = dulong_petit(productions) + + (out_dir / "md_monitor_validation.json").write_text(json.dumps(summary, indent=2)) + plot_stage1( + stage1_logs, labels, stage1, args.n_atoms, out_dir / "equilibration_monitor" + ) + plot_production(productions, out_dir / "potential_energy_equipartition") + save_skill_inputs(args, str(out_dir)) + print(json.dumps(summary, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relax.log b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relax.log new file mode 100644 index 00000000..3126d3e1 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relax.log @@ -0,0 +1,7 @@ + Step Time Energy fmax +FIRE: 0 00:05:44 -16.361576 0.024114 +FIRE: 1 00:05:44 -16.361591 0.022211 +FIRE: 2 00:05:45 -16.361618 0.018561 +FIRE: 3 00:05:45 -16.361652 0.013457 +FIRE: 4 00:05:45 -16.361677 0.007308 +FIRE: 5 00:05:45 -16.361687 0.000600 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_energy.txt b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_energy.txt new file mode 100644 index 00000000..db8a2121 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_energy.txt @@ -0,0 +1 @@ +-16.36168670654297 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_structure.cif b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_structure.cif new file mode 100644 index 00000000..07efbd75 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax/relaxed_structure.cif @@ -0,0 +1,29 @@ +data_image0 +_chemical_formula_structural Cu4 +_chemical_formula_sum "Cu4" +_cell_length_a 3.612702378299395 +_cell_length_b 3.612702367410714 +_cell_length_c 3.6127023732386125 +_cell_angle_alpha 90.00000002026961 +_cell_angle_beta 90.00000001062301 +_cell_angle_gamma 89.99999996028525 + +_space_group_name_H-M_alt "P 1" +_space_group_IT_number 1 + +loop_ + _space_group_symop_operation_xyz + 'x, y, z' + +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Cu Cu1 1.0 7.890858213097012e-10 5.658746467029093e-10 1.5086924049152002e-10 1.0000 + Cu Cu2 1.0 0.9999999992150617 0.5000000005624545 0.5000000008645713 1.0000 + Cu Cu3 1.0 0.499999999827391 0.9999999983926678 0.4999999994313259 1.0000 + Cu Cu4 1.0 0.5000000001418181 0.5000000004803061 0.9999999995323742 1.0000 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.png b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..9cfd793549cf90c87648b5c7779d4ab51a38c1ac GIT binary patch literal 133463 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
  • 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 literal 0 HcmV?d00001 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.svg b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.svg new file mode 100644 index 00000000..ccdc5275 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/equilibration_monitor.svg @@ -0,0 +1,1726 @@ + + + + + + + + 2026-10-10T00:32:37.466391 + image/svg+xml + + + Matplotlib v3.11.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/input_configs.yaml b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/input_configs.yaml new file mode 100644 index 00000000..fa287c54 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/input_configs.yaml @@ -0,0 +1,15 @@ +relax_dir: skills/mat-md-monitors/examples/Cu_nvt_equilibration/relax +stage1_logs: +- skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/Cu256_300.0K_nvt.log +- skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/Cu256_300.0K_nvt.log +- skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage1_equilibration/Cu256_100.0K_nvt.log +stage1_labels: +- 300 K, threshold 50 K (default) +- 300 K, threshold 30 K +- 100 K, threshold 10 K +production_logs: +- skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/Cu256_300.0K_nvt.log +- skills/mat-md-monitors/examples/Cu_nvt_equilibration/T100_stage2_production/Cu256_100.0K_nvt.log +n_atoms: 256 +n_blocks: 5 +output_dir: skills/mat-md-monitors/examples/Cu_nvt_equilibration/results diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/md_monitor_validation.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/md_monitor_validation.json new file mode 100644 index 00000000..14c3a361 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/md_monitor_validation.json @@ -0,0 +1,103 @@ +{ + "n_atoms": 256, + "relaxed_lattice_a_A": 3.612702378299395, + "E_min_eV_per_atom": -4.090421676635742, + "stage1_equilibration": [ + { + "label": "300 K, threshold 50 K (default)", + "log": "Cu256_300.0K_nvt.log", + "target_temperature_K": 300.0, + "max_steps": 10000, + "temp_std_threshold_K": 50.0, + "window_entries": 50, + "stop_time_ps": 1.26, + "stop_step": 630, + "std_T_last_window_K": 49.783656314095694, + "T_at_stop_K": 312.3, + "max_T_K": 340.2 + }, + { + "label": "300 K, threshold 30 K", + "log": "Cu256_300.0K_nvt.log", + "target_temperature_K": 300.0, + "max_steps": 10000, + "temp_std_threshold_K": 30.0, + "window_entries": 50, + "stop_time_ps": 1.68, + "stop_step": 840, + "std_T_last_window_K": 26.773244032055587, + "T_at_stop_K": 301.0, + "max_T_K": 361.0 + }, + { + "label": "100 K, threshold 10 K", + "log": "Cu256_100.0K_nvt.log", + "target_temperature_K": 100.0, + "max_steps": 10000, + "temp_std_threshold_K": 10.0, + "window_entries": 50, + "stop_time_ps": 2.3, + "stop_step": 1150, + "std_T_last_window_K": 8.891601430563563, + "T_at_stop_K": 106.2, + "max_T_K": 134.4 + } + ], + "production": [ + { + "log": "Cu256_300.0K_nvt.log", + "target_temperature_K": 300.0, + "duration_ps": 20.0, + "n_samples": 1000, + "T_mean_K": 296.90639999999996, + "T_sem_K": 1.1903869160907294, + "T_rel_error_pct": -1.0312000000000126, + "T_std_K": 15.286068789587466, + "T_std_canonical_K": 15.309310892394864, + "dEpot_mean_meV_per_atom": 37.43543054199219, + "dEpot_sem_meV_per_atom": 0.142349724941702, + "Ekin_mean_meV_per_atom": 38.37791796875, + "Ekin_sem_meV_per_atom": 0.1538698481201642, + "Etot_minus_Emin_mean_meV_per_atom": 75.81334851074219, + "Etot_minus_Emin_sem_meV_per_atom": 0.29598551244335175, + "equipartition_1p5kT_target_meV": 38.777999679000004, + "equipartition_1p5kT_meanT_meV": 38.37812094631015, + "dEpot_vs_1p5kT_target_pct": -3.462192862245224, + "dEpot_over_Ekin": 0.9754419344080821, + "dEpot_over_Ekin_sem": 0.0037091570485301775 + }, + { + "log": "Cu256_100.0K_nvt.log", + "target_temperature_K": 100.0, + "duration_ps": 20.0, + "n_samples": 1000, + "T_mean_K": 100.2239, + "T_sem_K": 0.5812718684058273, + "T_rel_error_pct": 0.22390000000000043, + "T_std_K": 6.101884855518006, + "T_std_canonical_K": 5.103103630798287, + "dEpot_mean_meV_per_atom": 12.838621948242183, + "dEpot_sem_meV_per_atom": 0.07534310167271517, + "Ekin_mean_meV_per_atom": 12.95499609375, + "Ekin_sem_meV_per_atom": 0.07523799782781761, + "Etot_minus_Emin_mean_meV_per_atom": 25.793618041992183, + "Etot_minus_Emin_sem_meV_per_atom": 0.15055230485816815, + "equipartition_1p5kT_target_meV": 12.925999893, + "equipartition_1p5kT_meanT_meV": 12.954941206760427, + "dEpot_vs_1p5kT_target_pct": -0.6759859622553139, + "dEpot_over_Ekin": 0.9910170451101904, + "dEpot_over_Ekin_sem": 0.005815756417639034 + } + ], + "dulong_petit": { + "T_low_K": 100.2239, + "T_high_K": 296.90639999999996, + "cv_kB_per_atom": 2.9512278350612755, + "cv_kB_per_atom_sem": 0.01959281389371037, + "cv_J_per_mol_K": 24.537873511818045, + "cv_J_per_mol_K_sem": 0.1629037187006859, + "dulong_petit_kB_per_atom": 3.0, + "dulong_petit_J_per_mol_K": 24.943387854, + "rel_error_pct": -1.6257388312908165 + } +} diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.png b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.png new file mode 100644 index 0000000000000000000000000000000000000000..26930fbc9cfaabe638ca9b16f6d38e4c9ff1c51f GIT binary patch literal 166281 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 wUrKP*SPY=)iaEND=`4AnGu5z$~Fw z!%r=T?b$srj6U9t2@K2yL=VXIh@^RU-`4tGQH|#~iQhlvLXfr} zgvfn!&*!hl?#27*MsLM)#m5P8>BeS|6C@j*sI3()3}wqXvt~&Dii$VU)bhqL)irPA zU@j=b?<^G5-SBR=_MjiE71^H0c>5tC7sJcQs^o&Sz{F;dkKyIJ9IXq}1oL4C=&qHE z{xl=X+x~|lg(rgyCWGR9gpJJAT0dRBoWXcB)s6+7tOcF4Bj=*#ySWy5uyI=+H&4fT zEOPs2Y1&|DDJ1S+=LEol&r$QwQDaZ^V?N^a>%}u!KHw z4gW!{A8I2=!j(Y>MtWdk8{{SWbm+`u3;3*3M|fRgI_P=^Bn>_Jt$3c8T?e+g^)^A7 zplE{Xb{7@I+%tBDG>2zs0ZZ|~1`mY+o* zB7k8Q4J#>(P%)Vr9bd_5!=g-kEB{un;RR?F$scY0JuFos0{11C_=zUC?JHA-OEkel zxHuA*%mLO5PjD>ajtiIBXz}E}&S=5z@{cO>w=V%+MX!Y%B#`GIK1mCn#xTt4T=u6* zmHGLdcZ%Or;dgD9jiiaK8d_T7R12YMF)!X6{3%+k;T8?fY3QItSbT}Ly#8zOb|tw{ zMb&qcXzFvz9BZ8-8F0g57F32!MBXkwyqOJhys_Qzh39oOEbsLjpY|gFAu8A}=OtgD zZBlt|AJ}T$GBAr@8#9#~T+A<|EwUA3bt$nmIm}W^&y{(9?8Y5V~bH3CP!16KZWZ&pSsJ%lt z3qaK1tvO6F-ctkpO^A4GXr^1kBr59S)W4mlaF75^V${QCEYN0*oRT2u4y@|Bf&3=v zgZ)=vks@Vj4cW;M`QUkD(SRd%gWUtj00Xg#d!Ks;UVqbAVt+#~+oN4wwT z@%!}D7M1Hr{}XM(mnhk%8bVxkZ)Pn*;{K8A`s+&ne%9ml#OFE}*7}F}3b?QwLOi|F zZNk4w6Kpe}B1Pivjx``MjwF^INm85p2tX4~0uyb5Y*wu+Q5WUBJXf`LeLay3-g8%u zf|RgAL(-Rbe$(q(h>~Bv=zac{xF#brSar1_IK%|_%+3=H@=U;>-tGR}zSYfj^>142d@~Vna>va# z0%vYiUxi=K&p%a-=v-)jr}!)@D1*dA7+(l75GRO>QlOXldRjb60GkXT#JQnWoP)2E zvZ#vtiAMpBNF*{92`?OgqT4rX67w?f_}b5-t{;8&R|%{<2-3$$`bUQ3ja_xY%}EJ_ z79i3PAJn|!DWPJ5G4tVqhM6L`Ubf|SYRTtohFwcZn#5<`%RU!9(&M3T5wPts-vBHx zpf)d2cYnc57jH1u{*^l^=YcqQo@+@0v!b#J(q8$?JUJ=38^*`p{!eV>T-Fkb!UBe0-e2ZOM{~qqS7#E)vfOziLf2Yrqeu8CzETC_I z=@4@LIZbl&xTMm| zjO(htq3?wR&<%nVPavcPDND~aew$UajM^|N5sa?Ws*=yp0q=6k*3z5O0PqyDcM%gm zwf|pPD+oWQX?2Ke93z2(=taax>(H)?26(m8TDCO@+1a|8n`|m?^+}bRf&u&PP$+~z zq)rD1=o=B2{Q3DY3be3PM+?AN1bowHA2I7^N2?v1ezli!Kb3A`AYAU}p$fN*-|9G zzvSp&$48SqFw>936lX_&5xb5(6hxqBzE<%T#7SvGNV$_#idQG^?mzZHExF4H-{HY) ztr;}fT@>;RDhq=}lJfV~suooAT(=BH)nO%%4R;UJv{ z=up>7B7;RvcH`xcfytMzrd$Dr=fYso@ja%Ms(-uiAK5%-`rRA>Zj-xi;B9t~3J@Uu z%^L>jquy<_7Z|AZfJOBWJha`g71Rl4=jJ@ z0N~_x%i(K}74hF#yD9ttV@M6=THta$UljoyE$PdaxdX5o0f-5`#jSpF6){hM&eZF` z@zkS0$)BkR(q(EqR~C%b>R8q;a#7Divuz^%s@oFmb9c5|C%7WxvGVR|3JVAdGiQmc z!gVxcJJQmJEu&DNlLl`H*$(J_Yha8Zd;^rv*_)1ohwZ4>4Xw|>uoVF1zytgmr2lp~ z06T6c810X50)q)Vk1wiXAPSTb_SY#fl3DHox)XasvWbQ974$1Lcy z*d4fsG?$ZoT=X*yQ0{WDA?~cp3p#N|r>4NQiTS`Q`}PaLZ=kqoE@$^|QRt{dC?Ndo zk~CLEd43u_5_~gG4X5%%_ZR8n@ZNGzXL6tbda*;9aR;ue8LtoCH>6;|l{pOTyI5++ zUrhou)mD`^8dw2-cag`P`3M1*M+eC z+}21s(Z zd-{e`k{Q2j4(j?*f{#q*JTEFq7|PGv^w>zp?1LdA+-b z7=}S;tzG#Xh%NmI;D3y<*pm~E?53Sl}cHq7zaOwSvS>8t<#MOeTg zRt2-$hA~A_E?I*3I{T~jkI&n+v%PrUUA>Tm>Fn2OBewFlt}o$A6l@EZnefQj&7)Y) zCu%JB**(DML<-O(1eihk26aE;6XZf=`7&PHc+BX>KN*AnBU4}C)Ytv}YmoVBfhn0! z{fAB!@1O3kZGXuG85pZtyH)a3yPi^(Z}uuS&UPkKKtw~)N6=$~L|7;_##45N|2n#U@yE6mpONZXa`-kM*n@CUeqsr|tIiDvwhP64?h};7F7J#q z6%S;LevNT-*#T$-mN?~x<1}+5%_GIb?1zl9*e{C0`CQxUk4ZX1uV?#Sry&__<&eS& z&08F>16VbSBg>6365g%3(dB7$S(nQl)(_3degGzY$03eLT}hnWOs$R=JM7v0{Z zmU2Jj8QWb?a;G)9a?Yxz_j1e=Ir2R|E)8|BBIl z?4i1lZ0cp^I|5#@FV9iWiify?!brr23^d>dN=iL?8j`?h1Ab~MiOmncnXAD*k(<@6 zGB$ph(rMy);Mk$vfYX1KLcV8gjy~e>6f>P#EOCW)I*v+HJ7M{=V9USP{5;i=Jdm%Uv{92nJu9w@|_ zJjZC`S#`oPAPbs-aAKPYylLV>j zl!sv9{4&r*(!rpwCxKOcAET0d2bdb7KXddvUAc&7<GKkAVN9v?F$bST+w66S$z(p^EkeMsMl1K z(O}9PRG%o7;Ekha|HGJ!;C&}=i>>pIu0K)aDkxxm&(L4?!PQdr*n)|{V=>zdgaQY4 zPNz=M3QOp8xpMW_A~$8JHG84Y5c))_g|_Hj{zV0tGr4vq8C^9EWT^PP%}t zv+k?_!s@*Fr%oUC44gFg;pvR5EBQ+?KBh#*kmly-#D#8^B$>ubjs`PaM=vtkPk_1( z3||EPExQ&`(S~d9^id(mJ-8CVQ_U`~TZ_AHm*L>299UX1M^pY8!kG?-?;U}eN7p%W z^&ncjx43Caoya7ilH0aM5u(*ai@9g*o#cO{J|Zq;A2 zL|Rv?4~dx_Dh#@45XwrSt`)BC%aFIk#G7M9{k^JT$Rq*z7GM}6SXu4ttu)&e&+sTk zwR`kEgmL@fngHlmc}&ZjS@7V^#EJZ)6Vvq}my22ESjR`^3bx2dCUSUiE#eTo^5MWe z;>Uz3S)n{t_qaFq;W1SJjg|!PV|5XZIwWS?Q&Ik#ptC>&t_+0dLAIxdzZCi52`eHG zUk1avv#fo7>VN0Z{%B$3$NG5CG3hWffs^bq!$GWTI9PMD_Xg7$EZDl{iTtS_f<;lj z{e4z^But%+KK7Bx`0U%4qB?ubDS7;R{9( z-Wvoh@%Ym5b#Ocw6CKk^4q~*R&|gNbZiL=yGJ^c^TzHKm9tvTV4mJtb8%;@S^b~3{{&tFX}?~~uEz2oSzhPa z1F7B8WYaq0D$<7CvMsc!8BX0@o$I~0viRp^iJncq)VM6yi1e`dPI_H5s;K#_ZA&sR z<`mGumlewQ;}A2QU~V-tG?e52kO)&dE=LC?xHG$2Ye4;f%%Qpk@iIyU*Pb|Z&xF=n zc)&npO$ui2II4*?xG7%=#grk?9JD$S{5pbND^N)>jlYOIiF7%16V))M%H?|M&t=qno*k?)+IMsC=Rad!g%Q0)m zKUSN_*DRyyuY&X+&-DksfNBg_xTt#9dO}59t&LnZZtnyllZHX}YNrRaJlL+v;vX`S zGZ%^u8&x*sMv)7``Lg4~wHBorVmZsB@Z~)6R(#v~PyZ{9t6BmYvY~|2PRN|OH|P6u z8W-Z`^c_}Fnq#y?rT4y9xBBWB(u-Lb85KuA2t-#H7Q0dzjP!ja35XsG>4H!arQIS-$TwQMVVQGHCFiXg+hHya^M*s3G~=Ms=S-HX|8_!jaaRO!CB^O~GuEd8aC(S4TN}2Ux9eS4B!J)~g z6CiBo^=@L#9jb)8je z>`S2Sc!?!T%Wf_YEFri1y#qr<)X)QBRUi2>^0$_4W?};rQi`$ca1d=%9gIFNyFje- z!((r@o=xaAEEgSYwqrcHq66r$XxG=(zaPaCz=L0t%CMs!!%`K^f^&r48Au?L`}Ycb zuzv)-9a1FCgZSX#eK*cYQl)6CeNTs1;JM<|>kK2rnT5g=aNZH>m?fqxKjYJVdr@2> zGpr^4E7I7dwAD05LvTqToPw@*+jpI|9Ha)2K=eX>D1dYj|MIAm_nD&MR1a%Z{XYd) zqQ=0Ij;kdly0@C`Zd(7I$hPG`;I0$*4q@5*^k;cSqy}Xz3nZ_>?ov2)yI(d%r*@*V zcklH#uEgi$(jM8XxI)3%U2z;lYyIuq_7QqHgd&R<>~ON#Ur-t3lNoB7UsCn`=s4_} zG|wD@&W;hmQq*5zAfmH|ae)xCZ?zm0IBl91aYtk|_r|Cpe#u3i?x zEa}gbX3(w`(8MKRal|b-u|G-KK}JD=Ro-)&K-4i7_xr}Zuww1yUSVTyVptuLE>>Nc zkwjNGzJXNMVpL!3uKOX$39&Ry149qGeo!&xar-P$__JWwTJMl2dbh zVE_+bI)C`3JAJ9Pgt;`SJI(9Vo`tLE7NXtI+}(D$=;ZrWCsZcNm4TPHsV7uwbVzD6 zw(D14>1~_7=-#I+ua$UDcgR=Q?7c`87}JI3Dz`Dzxu)aG%M&u`;;MH^wUyZP6yaos zXP4!pjYGPO0aD3c1JEd1o`NyhjAne0l+Cfl_)X=GLAWT1k{G-(7I#T(0Ar2(@{<_$ z8EwJ0fZD^tUlOReIhE&byh0g#eM0WjFvCATUWh^i1o{R^`Nkg_ah9d$&!3$i0Hq%X)6g^XFW_&I3t%*wX1zG)hPB5lf|psZ+^6 z+xKgZ#(w^7pz~;5wE2eCA*gwjRaHQ~%|`bF)&{lJo!|+QS}8;}F6?)j?4@<;#bnCH zUQZyU;d2Fs^bw?$m@3{Rr!_S-VLdzv-kETM-piuF@!=3p2fgF|A<7=J-txQ*k-pXca6|wMANe^Tmg!Lyt;9O`V({UP;4Z`a+uah}_i>RbcPL_35e+5m=SSQEqsTo?82~_@$2TQhLWhm(OlOB4wWplrjfBvVGZBUa&rnnei+VIv)c?ma;bdi zu>Hz5szBY}nr2m3fy959K{JVEjMxR-gtyp=(nA{2q%a1WX(&f?|Er!*>7sH0vX_t- z(l=7I;RCS`Et4udKCa~CJ+WT~A}BCv%m(q^4)A;7R(*}HjeXO>DPZrg%H0d`j3V`k zx=bU4apAuK|5evzY0mt3ub5ss6wro4fbz zEAnVUxR;!naX4p8i1e)oT}fUJOGYIs@ieqBGxB*AUq8$Aw2E`4dOX`(PF|< z*X^ynVsN$vZH~k!T!P6knUwJt0l%c2$7H*ky?)6vY4X5nx^jkbH;xCW00}8h(3WCF z)*ki6>1C*tMD?g}ybPuZDT$Uz-?R^QExXjg1?AxG!k7lh3`|bq6%!YPbosorvb7nz z#wYhjH*AouCzdIZOD#SMGn=bC?Aehe}+bnzokwC$o7c$eS{3l9f zt)g#CFc|a~2MZTe$+U=vrGHQW}`(S6Eu((QmE=>OYY_-X4?7b{>GQ~#gQn`c94f~M zaEETJrcZHU3>^v1nkl4lOX-w*KKAmuV7?x5mI(EHgpNwBsBwSmSnT|uYsY2U3yH*k zruy5EiIk+-gjdt}x90dmiu?BN!n5<1F5Va`Xc=yns?hg3js&fjMh7O{iYOLaLlF4f zg+IT0fedWWTGFcczwf-nHQNlA>uGOzg{qfxyNj#fpI=7d(N>5~kLN_xI%RH`1`Pbr zDAzaRg`b9tHnH7g-FTYeLj6@P505eWlN_ZGyU~6`Z4Ordmiy+%4(~z5bsdfU_|qLS zZ3-Vy5lw{jx5o+mNBs{vk!5y|&7>1ZVWWz4*CKlvB_AK0E`?mT|Ff_JLPfvd}*y*1gERc}s*dzLz56<6RpPtNU z+ZismdK4BGRx*cBuU}~k3qm#_q|e7X4Nt0nk>gVU;7z=@IJhUE_obIc_<1^|WzlXd zQ0!-U98t{~BKSpxl9keEP%Ys%29o$|H7RqooqRIN)2CdgP}LNixRCx>V$=b+H?y!b z!Gb$FKYVIscx?8=(sEIMtguztTlL4(m3jn8Z@jTGS92(4YH<8C%)r#;o<57y6L%XW z^wWe{Y(q*oA?bHxs+X?>U|Ho-#a}K$Z$vbL(W+~b;A}2hYSk%*OoAl8TR1%{wp*9Z zZeA`bmi*lrIB#61+RK^DhI5ng7|(f3gmp713Y+Zv&+#O(;lm;_`eOy~>Mo!PvfioF zVMyyoZ^V~eA`aDS98q2u&x?$O_s3d7e_)cT7u&pUc5VX)-lfK9b`GmI%|>kG~rHT-PU& zs(gkob2|-Kc`y+rNBt2CZ%o(&Gla>amF72CkFBTGnBgXBWYP*RpZno@P%7kC<`_3) z=rfW@7j17?4Dr9zql;@HZuU8IF*$k`G!T12`D0qEkXz=3G>Zj41RK;AvwB|aqp!9o z{)@>r9vmL-nKR3Zt{D?2-`w0x;kP2r^xS3kzCCDQ7D4^x?f@=z6SMEDxdd^%&d{3i zZ(WL7-t)eaV@=34lmY=^8Qsl_C7i=4Io~`t^0$4(vraZ`O(lQLvd&3G8Xo64*)&X$ z6_p^L<*41*%tg^@5nZeBC=-56`NF0~k~Op{D-mQEe@M#Ass#qvahn#PJPK{2BUFzrvB5n(qJ$@1G zXZuh-1fOR5wUv=e$#NxPTrrFB`E~%^a8i%{$6%G@ z(O*lj9An2M?kVY0N%@5GWX-1Cx^W01Qh?1X!q+L&c^?>&kZx37pWgQ1jZ!WJF#i{^ z5*hK$#4z5eG#aDd!P0)$4t}>iJ8F#-#10KVx~F(f{o4|AADgWhR;GKbfSLMU; zW;sN;{+S{ld=Mr_&o1_t`M>M?`mq-#jMQXj-q!n@%IYytB-c` zFA1~MqUpOw8zjeG#(fPc#1g;N&0wCzjC`oFOgRhPpn%sRw7BO)*y8oW-)R`r|A&^o zf0WG>vG%W|`*Tv@+M~z8V zyLPu>nB2rekf+nXqOdaIss7K5UJ(9I9)AYo8r{-8JE~tui+`o6j5M8v=!N%x)&x?Z zK?z@;yPs)25P42fYgZ2Vc_63hY%+P}KRA=EWL77?KzfIynSAgs*x=ml`(JyxJ2C^< zxj(piTRVO`O>y9gXsBVcR7Jr)mCRuNZSk%MiOyq~X*Zk*#=!_|B!zagi&6R(-jY-OT8#V)nXx?$sZwTK* znlCu`(o4XXlU=d(+*%_(ozg3&YRzC*Y}kX83)$l*Ozxnfa9MVwhMbjCMF*lUCFMv| zHxA{Y9LH?^{Y@W2&NH{aewq3F!_{g1_@|QwYtmE5`#>3N=~A2wqxAz67}bC>Z17?! zg@x1NzHRi3il{$q6hB-;xxCuOYbjH#P^X>N7d-)^ueQfr%i^9ns6RHFk{H8omSh@z zBQo@`>U?!Kzl>LKkbK#VVOjR1qTee-6uzE21=dfoG*=)$m&N86cOq=-^M$txQ8q@OlJ`nPz8?BLn&2xyEqf(N z>iz83v5-<^pDnRAmb~FC{fuNGjg1a4`wLntyk}1fYL4m3`;^O_%L@rdH7vd2TgaJ& zNUyK_ zt5-2Jn#sQEF09qN_CpBnF<1xQY~$U~^WRIzfycrNBOm-bVN7qB>&|neO-)E4(l}<& zxdU4Kau~a?+7HpiGu~pY0rl04A!B-2MTnjTg+GJ1&7fTWi%B}rf1)D_~tlk@8+ ze!=W}?~~^>cIynM3A(D~Xcbl)kTVh8|BpDh&))vBdagI>+bzdcsqd^61eKFyvP1BtHekhwB8%hgMad1l?TMA{xaebdEC?S@AL9KU14K;0HH2E<^^ zA-*WOwg_HtmwZ&)-NBVPTgd7~zkF#F- zQsTQ8RAIK?T}3I(Aps>XvdZ=L4_RUgZ6b(T0*L}hCNt?D_}hK&6xY=>U%w=@DFIH5k|%LIXM45(rCrmeik2A`oYaC z$dO;{HSkV#@%wl$Y%sQ0iVEIGrsORi5L%dfOTi2IqTYKE_p@y;#j$RzJN#?oiNMX0 zB?A38R5iNzhKu<8zVm|q&bM7+HB%S8YeJQYzYe|Lu7LD~W=|m3aN6!cXZ>Zf{EHb8 zdLn^$LF#qcxOmet6Joa~oaLd{_G$(YzbML=Ma>IFx3}A3ek0h@=%MUAi6iLF z+XjVUOJ2f6^VYv^L-?(k3-ub7f6wBC{**3l{Sj}8W>xuL8`C-M!E2imK68l0yerR9 znR$K)x`v+Jf`E>nRTv-Kny(`D`HQ6-lr{FBV-jP|8J5s>QG{<;=|q`wVV}fI#bkmS zo7-+{#{ygrzAuFL9%`s7BUrnCDGZn>kxFlZ2ogfngxp+P-*CWKPfe^^iu6Y1@EGe2y{dS%xofPi*_f_L<&nN5Pa; z+MzvV&F7jV?wD(vx)n)o%$yRdkGP|j(=fSX970ms|H753(xqgQ$0h&WI%|oa{DJ6@ z!q3k4eHh5gzbqHR2Jbdy2KrgB8w|c0SK&N|@NTC9G;?FIhf>uGX~aVWTO8xfQZ{3% zCA9YL?yJ`U{cD>4;&Pc6r>nOb!Q<_icl4_W8VR z<>w1t)7_HgGR`&>W>6>ByHY)|xapGQRlz#)yMomWI(J`0C`10Y*ITljb~d^U-ODwG z?fTi`kEV0SrR|K!Y1E-svt_*nWv#wvW6nqf`zH!{ACPhbq~J8)gyT^Oe&Mk8+YXr#MyfOLo; zA>G|bBQ?51y1S%B5Re)m-Q7q_NJ{zLk3WEC+r8(U_m`*C^Ct~yz5sVfB@|tsDbwD; zI}TdM%{xky4N)cH0?E;SK>g4ZD2~VZ3{I1LA~B?Kd!y!6kg4)wWb`hrOz+i5+fDsA zj;b7|OP&)rfbfmpaGM5CF%k>XbIuj2+8kH^YK#&@?bd8oJ!Zf9pX*B33FpHx&da zsXER|)mk#}Myn4tC6@x|-Y*wjk!CxTAalV+^UU+9V^+p}NXK8_M98hkoDNIONlsb6vnu9`W-U!oZ%l38n)J2MUtS6P;{ z3U>T^qp9dlZ=l`ULpsLXQl$YoKZtE@=li zu{d!=kQZo9m%dXvQVV+Vq!iANY#p17rNYE`=Wms;-IMW-)CKiTN{5dJg+RUS~U%bgp2UAbnPk#Y2=>x)=H|Q*uLuE|a zU%UfBc$*XhB~v~8nix>%_JA8o_f#tMWN#fR*X3gycwa)_v^p}{*F^U~%10a12IdC_ z$^$Ud(`hFQQRx+Bemi$(QuAsrUQ5?DzN>6EDss%d!es*)vp^nKsEi%JL{aMGfiK1$ z<`&a`fha!Fjl8GP%_^bs#@thoK$uCmGfuEk2VIj(;CMumuj6>_V_lR1hcn-0Bn zyfzSN6IAdQ!Gpjf%c3S;0LTh>_=QWuS_D{cXspAxbLDBa;7rxl__Gcx@S63`+y%NR z#Fz^28$-jv2{a@E```nBaj&u1gF_`!N878?D=6QlT*mo={ua=PC}`SkFUT2;d$sco z(?oF#aPvkIZFfiY@?DKy{96663!(r^#?wQqZ#5%@$vazgJ!O^`OU*VvV0;;^~Bu+hkQmbHAtqi^4Do_7Q2DQ^~}T&)g*PWfMXHP z(!P%Jd(Jjz`b=uj(F<%Zmade6+4|}rdCK+U(Ln6%F~+qWM`D=k+UZ)wTB~^1&sVn| zS~Yxd52zJ@PgA)TyC@%PW13^*SOz&{KiTG!ASJ;f_{7B((>*KqwN-@!+TtbHq^<9! z-uDpDQf~ZMC<=F!=jr1{|BY7u>ZRe2+8M{15xyb+S@Obj}USNH!Z~t4<%Zt1G3YSCb9Fun)b6cw+Zh zPj0O*bn`OO!)w_hf@XQh?{b$s{KU+)$0TCejR)i1`JW3q$3N=S)-YgB<39KuiXYGV zvFO|?c=A^*I1_wMiPmV;4Kl*U7~_XKAmmpqJ{vM;ruc65;({U=N|yVJYjg;8QNgI7%L?3rj|aYDZE` zalvR_$Bso&9Iwzc^|Z+KnNxsS({byExcc#_j<&dW>vw9f9C%7p{g-(RI{{KkPvqzw zboyqJ6w3-9x6p#r^kbD!vGiiPG=0GVP3+vH@GrA#;$tEOX#`h^*LlWe&7&y;(&o_Z zM)6WA3qnMHv{5FVW*>|m-(p_wXhI+81%jf)50rcES1(8-)9n93ez;-MQ5W@qoAINT zO2dZsL%nuh@7HmTNg*oBYES=#d)@AS4h|GZT|>0UweN&2lIFjWJNh=Q?9%| z&dM#Mc?mBxnOr&}!^3G#_sFtpL<_3cS@zXZmH28hD0Yu!;YmT@*B#@rM<2vj?ecnh zjiIJNpUL5L>Ebtc>uF2Xd7fp1yY zMbEv+^!1cTwmrzT?ng~t1pOsOv3DuO!p6pT;XjDD(41V$0M3lVGhJNzzV;qndb8Ik zIFY!p^euE9`s3uIRvlOney47JkYUQet3bTBk}@#` zM{j&R;ia2zK>8%*YCn6r99LtsUH|gNX!@guaBUtMy6Tf$t)^Cku)dR*0KhW$FGTz4 z#5Miu4WP#=tTP0t+fUt|_B;0^wjfBt@o4>VKc+QT>T8pAZJ;{w`UI=A4C8rwR@LR= zjQP6L<_Z(wfyZr}EWy*U`m|fNf|C(3N3kEDt+kN?ar1(KYJfG@$CpgKsfx%Sk z!q(u+ciH}O^jrDU$gPT%ZfZBK$e-GhNrMETOdn4Hd#me|+^a2sjk?}GN81{`D?HvU zWhm>AaGj=2K<@M+pcz#nO}Ow}R3vI&m@f{V>@W9>3!?dS(iKoVz#FQ^ftmzB>DZb5 zfpR@@{5_!>8qbi0+0RUvI9z-tR;bFXxfD+Yydjvx64p{S;6|Hw>|F40;YU@W_v;5p zwOvgdNk?`UqgeyBqzmBf3E{flv>OXbj}R z`oAUIPOwtUVz(G1jQWOOcYL0RsFCQ@?DXYte1RAHxs>`{2Bx5W{`ExUy7vg2$y)Rw zR|uEcRM!%P3MP`|_+|p0hV&5*fvfb%XPn!!)0M6ph{%1E6qK4ok_!YSGi~lfbGrCbJedJeXmiF!q`tgjvY7Fjju|P zPN}wAVXunH3#v_iKQB%uiY_=~`TGRdxUkT~Rd-{iAI|~_d7ovdXF+aLX~IK3tn53_ zVL$8CYBYHoG^+vU$X2_l&DnZq2A3%c@CxkT6k^fFYkdI^TLp9~&T{pm;b65|%Hg#9 z9yR*@>HH(X;UK2HHoygDO2Zvh{?@2QyOJ|32Uo2$F|8+Z|9YKc@3U&s?`bjZqN=LJ zZ-7gWo`+t9&=Z9lyQnVpF)k`5`*+=){dQqY#_dc+L1x}M@*QiRb=rsrXkxm>Z^Vrc zS6lC~`&bD&->CAz=@mmHNuNKHvVn&6Bl3Ae4q}7S$zVq!>vss~Whh#;`!5hoCp1nr z?9v=fNeKz5Mbu07RsXoK{{ffQd-(^s3T}F${MN1rIhIAO;BVgk+l3bJ;QZ&@RJAJ+ zzN1b(!vROe{XMr(`vHJCty4SJjR`9^l-?BY4fr*G%t+}k5hn6czTW)J$ocCL9$m!r4TkV>Ka)jLz*2eOH%kwIR}Vv znINrSdN%IVRoy;w>XL=NV|KgoRAVg{(Kg#s1`xuVouXgu1WE`Tebz6M+jb z503QPICdnoJnGR42QdY<2cVDEGXV`n%2UCn|I@{HuNRkR%4@`ydDcHu~IH znXrA#IBG9Mkq4L%l&g|$o?*H4cB-@x&4k69DaSL~lkK-zQ~O!wo6|~T6 z7kS$2Ra(M#Pv6M^LH;K-jC}Xg!let5LcHuhZsFFu=)CO5I;(pK;P8X)??tcR2Q$%> z`=#r6IDTIKH|Kf(#BSgQhw`cml-8;7zK;6;(GnQ-8oqQor<;CDG|EwZ?{0;vp?3bB zFRAw>;;GB6wNHa5iHq$c=tf`vgmv+UCJ(Zn{Bu8+3M1^a#Nk$*)hmzoq_a9aS?)9B zs_yNa{9>4JWw+1l2wsJLr~ZjJov$-D28S|TU^{4}W-w8GKk3DJ3Li=?r37)g+)WGk zf8#-P1@!HeLzWL3IUwqZRn&;VfmJZauhDCI2_&LO`$u^|7ljr_LeO@V{Fb-7wH&D~ z1SU&VC^>JENkD%PD_q&)8Xx^((xV~<;#C!8AJ!MS5!jWPI5X)&rCVEe>i3g{Fz@HT z`)gwK(ivtelLyx8(^Jw)KFp9aCEUf)l1LGydjb)|&OeA)d7b?Ai{{f|6M(bb4jl3N zGl%hBlVqKl#Bd}HG9h90r%E}(bm&A^2QKi0l&pxuE>==N+;1zy0Gt42|610fg!351 zPKp3c(}Z^ltRzZX%t4%tDz(pD;<7M1%~kSp7!UK<6g(XvotdijWxPdS&B2AVavPT* z`Zdxqmtkk_R@hv;lC4e3%mzP^^jJDO^FI%)*Pq#moy;i2xJIUbM-`5o7mZ^d!v_3S zFhoacEId6wM68p0bY}+A26tM^>ML25-m9W%6q0`$X)NuE?bcT2_|QYpdWgi^S$p>; zTOu@#Gy>htOTho{-znNfF4HepCC%8n>QuI#mat)u?U{=Jt*cQ6=GdBd?=LZ2gH072 zL(?L^-SK@qwZ&#I$0d_thjEbC4ACX)?a`#hjuqIp-7eWXPd%5;D_8-ONGDTjd%aiQ z>eCBGdX^b6IKdbD)kV_kjvn)&pIjDBQk836l)v&hdXmn%c)!Rx*3RQk$EdqICam!y z=8LH&LgpuE`V!&Q@InUV^n!W2y=0ozetHhEXKia5SM$wG!1gfLDnJHX7D<945L~;g zY_b*Z`(f8UVYvoLRS25mY zF>?bk6de2S^(}u{d9dI7R}=HNwXAx>M9bRIuaD2xV%pa_ zJhQ0U$7>+H=fX?6DIQ}^2Hqgc>qArq3VFa2^#L4VVGG{=k|L0J@mFQM@Oj^IMe*Hn z@+Z?FC1XsaU6kMgw*WCok9G9%8`E*EYxzm*_sWpRmOWX7+_fvJIfc#Rx)w<>mo_mWEv%so6%*W_9;rG){Y|g z;87AVvk;C)u5|A6tHws6uz>5wIhcevRVDl7;-Cu2rswq5;fVmV_`Lx}=-sGz^r!8v z`8`0^Xb|Jzl6IO7@ih0Hy&&L47}ze~`6r?o;db@PIDR6xStI*K2ak!nRU>F6-aE4v z#itF;2s-f<8L;n5bj0A|cVO*>Ctnm^DWwg!sA}e(^jEw@DAVdJEgI{HPQ5_abTuBJ zPmR5%QCg9WG)_DS4Lds^P+6|7{7dtwkgRZ2c(cviC9XIhkc$yqU z+t5>ysT`zlB7zkW7q8u$Oc z>HCSQx*-ks8C<;Jz5-sXHUu!%Yb@0DdRG4Q=<}?Xq&;jYWN)KA&DOHc0B<{&T~JnbiEdRCzc@n<{M4E)ZtmiL2^3X z&yPnnY_bj*&V=&*`ZvqwLxrZ1_zdRDWhMj~xUfp!JqnwwdN8A}EW%y>Se7?Y*9KH- zPaEcp+P}Scksyz3)tb8_4p+IyXpEIoB%eK9j4~OFhkN!;AW0H3PJd7#QcNbWS(slu zLo)}PZLmwMr^xd@T4x{#kYL$WrPZJ5t$OKb^Db#joRIBN z@{(>f@}P^D^f!f(%nCNzUmkwXV*7)D%G@QFbXNURh0FDuwK#mXIm3#Kz7C#T zdAfy=PLn_z8IPp#H+DPRA-)DHt;!izn5PNEL7&b{ufT4dxZD(yT`HO+)`e!R5hhMb4&%7bI;(Y&Xzo-H*SCpd z#iGjD>pU)fKZGra8v}zk0qV6qirc3_j}mlTbU_VS8N>B-c&eqfQJ}h2fG3{Jp*XAH&VwhjvJKLq8^KZ}gooVPn^CIz zg`2+TT&#VakXWo^nP%W%?ei*BMMSC6L(BS$Id)?*GE%SU*dpX;8uFGIlcA`v z-|qA_3t7fnu4zM=x1wmF2?>5S18un$y;3rNSy)q;eA1P!EMY5fU zkJeG$obUj&*j(v&Kh=n+%)p9oD(t91PO^2@vQyb|@Qk|IF~e}x;d$HnBJ*SUdd4Aq zkl>XLNfgb;MXp`-ERy^Wydxr{h6T!PCSSNqy0TFmm%+GVI*wXoxUggZ|K^Fu5r0NW zfGVE#)LAmPiywX!Cw&U~y^g&Q<+*3E=Chpo<)-sG44(>ZlSX#V31n8tojT+_@H(}j za@%gA+Ik`nV`p-?#eS^@McM{z9l(a+E2V!TbJG;07UR08#~)T48OLxqrA5R()A@*7 zH?v0t+s?#k7)&GqiSVj0z(R6mgeNM*w>-*d0XEwr+qNpx`?FBUu>;d{woBbAONJ*m z8T_iyB6-v2+8Z9vuY)BsoGe3)C<;_51qQ280~D8Kqnb~4GzAcUT}Svqhyq`!y8{iq zbyHrzx;JRa4)k}x^i2&1tfUC#f3@qn-4lUAi*WheTtMA+#19WasC=m5NdMvkl@V|6 zTloI1!6pGvqcdNjhrVFf_D0F|Z?b>ADxgXQTSCS7@i{*trzaHs1^-zDxa{j&6Rz`L zzi5LVy~Eleos8cbkDLstpj6}uV8j)IuE32%RSAX> z3fgJ)_G7+3vwF#JRY5S%7kIMx)`h?5tE#D1CjD9a*kd^8$hR7S%j2p1PPi?&O)1a* zmwWy_`+cpJCP1N!dUoB!rLO}kJ6LC_M7w4*3~_gXy9bE`BSS*6@Uy0U@Ab`3zFo^Q7bf1NWN=Rgs3-tf(jL?V_>O zj>wq=r7h<^vLoUg3ZjVQ0TAa044oImmX-2Xbtv2W77!&;!Et1%yGba8UMmPVO_bxH zS~+Fa>VTwW~H{EZ?3gO1EVW=7x#^Mg%n3;6U~Hgx*qT%B%gIJ(=CHu zX)(t8Ph zujfY~hyDhg_x+Jw=EX7+ao0=iCF2cWlf!Mt13t1KcVIIQ?U`t7(xgr(?B|D*5cg?_ z0IxNIaSCbj7jn|Uw@seCQYq(Qwmk`Aak$V~rb`%pW-@vxRlik+{X5e|n=-bS6OExl zg!wwAr&>CnrO)Ii!e3NAlsp9f8V?oRQ|Ku;eb&Z>U0iA|koO|KPrpJ5LxuGDK82|> zN9I6LI4ROIE`B7rF2&r&&!MHIoS$RFr)|Xt?URMC={e88>(bh#xU7G_@}K}D`!B^R zO?y+XP!J~_OfL(6qO?84j9}RFfgsDjFwa=XB|N|_D<2CUFH2q36$89;<}Uku1NE*J zv{)p@C}n~S(a$7c%zBJ|pu-1TlmO|{KbTi{*nf5&>`W7}?LMB$lx$;GE!0HSnJ?o5 z4~R^jaX2|tgXef-0`N1gZuKP!I^_&MW2qe3>v<}gW4Z{lX8vUO{2>I0Sg2$R-~!24 z89hA+N5=`zDv%)qi+Zv7UL6GY_R8E*jw{7ciIbTR#;dy5Mj_y}p9;`Uf6>O6{W~^{ zLKAmq+in&f6~n&bG|<%H2{3%Sc#-DrvDAD8=YHb-a*Hs#a_)_ZI6V10b&C8ih*uCJ z4!RV$C$^^R!&>q>HP%nEotWH+9~p@p;S z=FA<=#%Rlto=eSZv%#gC&!2Iy0U@%085_VKaQow*euGuw0{-fLj;n*xUR5?#hl{kl zsAkx4Rsc{4!>8OkDlirF(v-UelwR5=vTIR$3dI!D$k5-swoe?yxP=FJWl#w_QM$hY zB43y6btSK^B$aC|(uoqPphcyin3rVij5JZFoU<;8< zPWASd7l5(yB=G6(2DW)nXi1L~?jT;3!$_lZmpH!srOnjiU@gBr9=m!oG% z=SY%}-zdP6e38d9cRXL{v=O)qf>8XHI-J-T2f(`t1&OZ%*zCF%?Ql6I#1kIu! z=8Tj&q@@MTkAPvjjlJa|-Jqg21qFF5rKc&@ViMm1Fs%CXknGJJS$rxp#OV=d8s_hSFdB>?pe4La4!?YtLT~y|aowUFs=HWw>$eSl z_$SW^xJeJt;5oVBtBY;=LeP<;H*@pyaS}C%#7!#oAsd}D4YB=+cAb2*(|u?fRgz-zD3;ZOl~OS0)!Mkfaz!gFPjR22#%20i|vO4$v~rr&%A-+5$z z9ZpQ0@j6GoozrY4QX~PT!%jP`$d^l$9XYs% zN!|hDS)ymc@6dbwW`&~ps2-nx2ls|abZ=sRH>Z_5$f|Pv@QX8$kaXylby;(V<%MddCoJsD zV=k$2NpdOd&9rbUo<1b1d2PceOpZk54RTy+L}$uzL1}ebI|77-kip=ju$Wu5uY-xi z6!7HCah(IvG`0TnnJCrH7Kn)#S1B%!93?@qDRW@_d}#hXjh@dc7!=PFLMbAJji%A* zMA`cSKXd#Y{dCf=)oJ3K+U@w1QRnSjSaPY&n`s11@3>G^u1O~jCwUR76j&gmV$=GF z(3`a%15L>>*DJ`bTbbvL3p7;)yUeNJORl|84RJncM6w(|{9T_07fWq*D&2Y4ZofR> zFx`{T79BUgEF2fVAK|?CWrQWAwZ=B(nfI{uomC{E}gFh4G09 zfUuN(&5A42-ilCY!F|Uk$XPo!FEfl5YOR=_BpFDNsvw)wPa9WH2IDvQTIe=_ZJw`3 zcz{<~{f;hU-Nq_2O{H;_V{%#lQ(M>h8By^;*Y52gECyhrK&1JtKP#B`|17zc7C6y< z=#-p0u6EuBY_PfSBqK&x34jDkL7V5}*C~7Js3U#nK7#id*JXA>1zj6UvaV}f9#7W` zg5JfGWvbcdzrSv5M^Fd;IGU@zSaI&&`Vow}*c~K^Mx#Q&^OAL{T)!yRl6Z`}V1){Vapy3fr@bZ@;`QsZe>bEIsuLZ(PwCthCc<(WV|A zQsnwXHI(dCmow6$Q_!H&5=@#WUp20J<~C|Zpc?y(1@LLhzeNcoyoXlJnUlulN~ow{ z!!{iU;;I(Z1eLJsd))ID8`EbzGuXkXOe_fchH>4L%?LkovFBqOhXm`%Eh>MA-<)aY z@*A)ElwLLK3guU`zt^&}^cEJyfB2|y8v#5UbH8}ZV^=ezn@Gk&*D7D#>IWh>LCQ~B z4jU7I)_HYC*5E%(2iz7!@jLdJWlKIxfJp|l3?#ikfB#$-%k9bi+ry)dZ%4H}e}y$Z zm%?U}d~WWa399Icj%zp@44;jD5TOlVlLEeUp|oLgqNo`fi5&Nhu*3JG*^i%etQD(AXOk$&A@HtfmEH^Km+2dFBffIh>nm=0J5J@7#ZQ9c2skJwb zs|G)R#_-@}<2e8@ne;_#gS#Mo&{PB=V)^=yx&$)PE*^E6BAU>j?HcEYi8W3EIMh={ zov+L$q|FX|f4yLQaoTa#?lY9CrK1DqFl^U#($dq5`uS7oWU&Dih>Q|GKi_umgb}O# z7|rCJYN>X`Q0j+R=LGv)?lEW&4pIkE{JWF{YDl_Nu~taVG8cQ?*d!dwxOabiqF1c{ z9a%<%bupf(09rYV>3FXk+t&Q!H*ZyGk_E_5ydH2x_(%`jYKguCf*1g`v(j3z*0r|o zS3yMvQ#@RV#IQvA-_sBHa{w+X=A-!+0|)934W5R)RMjD)c0%ET$|d%rqiuau32Kr` z0byM3CW3)?crGZ&yKz*xS-rb=o595S^V2;?B1X}@wuF{N2!e8Ij3+iXir->ra43gs zupOqdA2WoPJST0ya?S!*``%G*L>Jk=gRjRn9GCs#FWNd*^47hO59b{=4iKLF;8759 zP%v~QmJ4?*C+b*op0~+~dP?{01fC+o|#9@qUS1fh(=|<{IkzJ9fF``5Ok=+HM({u)QlOT7oKTW*7z;Gd-A{;ZxV z%r99p^6sR!^C9YysQ^BLE;o_l4d$!s#rrLR#o)9u>_rD5eDCMc3^?WW1g0dT$4a7m zspQCDhh4^=rYJQJUB#g6(dR;rTx295P#``JHj@}Zxv*V2;NE?wvG)1%@euLECgpa; z)qRgD<6?_>+$7g7JuBp@-Rj7WgIfmMV$2%lW2sj_*qm}^yGmmP|{$cX&Hh*iS&v1 zWcg*!cRZokEt5m zP?w+E4p}mXcw9fS1(BW7eF3a&z0W)i8*hz;0Ol@=nxXeFE9%BG84P{7=<{F`K+GTB zVIwmF>yrVpnrNaPo3HG?rkS0SruzpnN0P~@0Jo;f6YItMa#iVyNj`>Uzo3GlgqGwG zznVyIY!nK`vd0`&NPq@p)N;sb{ds74&irDj9BABWo%e&QU&2^P$c(RdUOE=^xCbJDTH3)s*pMg(uk=({c z`GNi>&!=$v;qd~t_>r2vt_gpMnHp*(*{M^5`A;P5BOUIkyKS4zM$B5%9^+THHE9S9 zDc(0y? zJLlC%z^Sw~(?STZu_zjCIJta@MZV(4&YFqS9cOsQ-l1QM4}l}KQ7Fv=&!DfdX*jUFd^s|~_c&Y`un@9``&)Y~VazhVQ{ANe; zf3$yqx4VgK{#p|k=J1s3qdpgdCNoUL)6OtG{6#&Zj)T3rY3IVY=>=XG365sN=;@E6 z(F)I2KyVfwbOJ!TPz>yhVJ+D$g6R=QnHgTV%8W4xm z5B1ReVN#VDA4-}R^~sI>bP3dDz%xFU=P=+gj3_umrB>6q!`eMzJ-fr0si~MZzhJ{a zYWC!^G|UJ8H8Wvt?Z-iL=3wsFWoLkhN8%ud%O_Ad5;%=tE17P{0mwNt@af)m1S@rHcdHQfqflzf)?klA- zlXEbUSg7p{n5Vg=&Ksn+!RoJ|fMN9Y-t2n)>r!5)L|N|;3&Lr$8j}ysvj&6>@CM1RD!j24~B1+%`#!e@>^xip`8xi!^xFcv^9z z8Fv+ESoOpeWk0HR8j&cG4$LvBrdzIhE*P#he(AdZIriFHUexeT-N)zKaC(^iB1DoN ztLwWMkkCzC&nnN26P(pDP>-DUB^yt=zC z0y0nVl;}f#QU}QbE|1kfhaK{>isP`FKGW2odzRPffx*j$9owvIV!|J&38FmoGW@hE zk{dp`GvQa_{+&Nwvu3uPS-Gtp z6FTJ*v=&;>#ue_$&KSZvzVyo@izXAT-7apjU^m?IJL3h#?45sgKo*vieD07XapYk( z7l&Ut>Y+Sgo(dB~f)_Q^Je#Vj?(Vae0p**u&|>`TRf|MYG@Yt|G-=Fn?cTsE<5+Sa zuKNH4){Qs6?dQ37kkvKCKvvO0rJJ38oBn){^66BLDI>t6Iy7yr9RHEsfTmjgY!^on z$m}nFvwDU3)7`X;QDb$P*{g!ehePW{%ZK#^DL(&^=cqT!wA5;bvCNK? zilL5N8O@YUh0@M^n3TS0l8)&O7mn!F>$DEaDnMzt%mMc4?<2BjCSOdB3;i|}l84&s&xJ4pBUz{cwMJL1S0XpBH1xR z%uP9W0r4=u!K)4VNAfnnFY1ol>}w-$F?=uv{gZb?P#YL+c78r*o!`j9k`#)N^fRdt zpqG%oTHcE%3kL$)f4OW+q28dw%fR; z&aOy5KS52gLqm!CgW~^tZCXzB-UGF)9Nmv@Y{p%yF-Il2xa0yR1JN&+Z(Vl~P!jCS zGpRPz@@m@u9|c(t5K)T%-*B^wvxRX(N=f|m>Fuj7!UeDy>w)W=lw%5od5Glfz34@q zf-QZf_TY!Jt`Yx+;}d$5lL~ca$lF~g!s?fqbqsBdvTN-RpjAb=&pXE@S1l$H<-LqZ z+YT0Kq==ZCxR~iEhAc$nMhmwQNV`^FzUNIln4a?!b}yd@9Dv3EFtgA?X9-hoW9HLI z{f={uK78E-e(Ruh0c0k(WzOmtce!_EA6IPu;C_zsdxwyznEMz`vr=Vf#k*kI>~WQ% z5e0@5@kBCBzgKz@i1=ZC^P!>8BJ-5Hzl;0{>qeQr%TeG;5IxiL<-B=CD*~VnWbd21 z_QnX=;#5^wGwm1MaTYej{sG-V7l7J;iWD6kU2ng@!5kg3pXY}+A%07d#cvM>8u*F| z3Vygo-^6gVW6qSRDx24)SpOd@`1g287$q*-$hHIY`YKe!cKY3JZ^v*V7L0@9ey@Bj zuByTg4-aQ%Vd)u4qT}}YW1*5O^72{5U3|=C5#uLYYE9t}pSO2o#&&RdVbXm{^*tzL z)1Nwp{U4)%Dfnw`+Q)b_cS2RsBkp*$wA+yRVEl-0i;(a-mcCO!V=f!J9!pj_zi zNPM8zT*29Yaxy#_(nRR%->tvZ_^dg7Ag+h*EBXD-!wUX^F*f&&H64)i$9{O#h2yyb zILL#K;Js8J|IWMRwXJEDBZ zAHLE%EH`5TC_U-$9uS7imKrUw(uB?WBky&pjb< z-Fp*ADkzz}h|{6O?lTz}H6JoVIu#HJKpx)T0Wo)l_yZ(829hk^n|~sN`D%wF8@*f> zzwhf-=J$7aeHn;QsW9merpHc4XNx8B$ez8KA@&rSuUUil#>|g_jBtaIoac9=IGtZ0 zzW=Krw18mB?ya7+=+QW3IeU3%C_bA8tegNyY_g&>i(1OiJbh0EX~ner#@o5y+;7O)feaMdd0)MeUI`n)q z6yI#M&DFND&$;^v{{P~j4tnIy^Vx&2t8hX9TGZ}a;2>TEu2flHcq!)UG&#|U6oO|~ ziEG6QV4UthCdI-@hN%TZhL)DHOcmM^mfOmw&aH*BEnPqCY|3L0Sapd6#s5#-{`&J0 z^ZMY_o7$A}f6L``%fg)7#jhMp=!*0tZW%+jBxwvsUhr-pd+4199M6iu$Y0nuejEh* z9xA)no!=Z^?)zl602I4iA``Chx8ex96W>7Q$gQ6OFE-_srE7hWb@5Gj?H--1`+pLE zOxsp33y((hN(7wi=_jcKv)rxffk7wli^9jDUoSYSgMz~1MX&+EqPWb=-2*C0Q&&A> z3p%{Ff>_PQewB>gqlB>i24onSdiQ-`)KPp-GfbHh(Sc$0L_5z_0v!2^Ei)z?aaeY` zu1ilO!3!A*<_d`rVwe5f;gX67xIBElGcLw`T=)ghM2GJyLKGZ3U8T*M6ZHHS%x_0> ze|wg&y=_MF@?~LtJwXIMH3AVw-e5CDEB1FcWwAf9N#fz8>Hq!~x&*Ogj{wn(NF+f4 z`T*s0p%-ip@t;V&3Do%i03E|6G$y@fx$Xo%J zAqD~uLAL+u;WTM&YT}Mc&d%akDFJlz2-@+gmZ}5@Ru)?5-w+ZfK)WZrbH`+w#eTe| zP{c+HJChw?OdWN{7i1-i{K_Usn&fd<#~<)bo>^i{?S^kagXd-~D{L_Fl|nKa3(58h z3*)G9l&m-40uTh*cJmf>BWI^wv{BJLtLLxSgIY=+CUC6V@IL;?YTQ!c+7haBMN&k%NJ)Niq~ zG}!z1wDB*qj+L4D$0uY|E|VWfj{tKxnE!mmBnBM5%lB`n14zpA14ZJ+Zx-pt%dn;h z8Xtwi&ir-7=8JlwxJVbw;Ny;H2&5Z|QWFBea(Gu`MSEczf%?~Clk5YmffVW>uuSFj zbkh}rf+qSgI&geMxr+w)jAII#+K_*vUNn3?>j(KZ5wE*yk$GWJ5_4b3g|3m30@^ir zx@IbT6_=>`j`t_AvP>fv?umRshg|(PewqC9!1n&p6}`ek~JO zXWYZ1xf*GQHd#8t{PZOY2CuKGjBD=?f5@9N?})JqbK>r;QR5A==eA>s44;jN?S$Mr zS;K}wDKGJimWS8#sQ^+C0vA#z(}pq4#QMHgOKucee3cXlwa6QhwPUj1^wMcWJgcd2 z#}&_AWwf`8{5BS%kO#EluE#&ht3La=%p4pT1Ob^{&-cgwztOFO)8O(D6Rybr8@?Al zxZ{3(lt!5 zs6&V-Uri6UHmDd4kn?}FG3RBimE!|(i^}(q3ysEh8`5ZSk`iLE&!c{uHiytDXy%VF zEQ+JL;5hP2HOcnb8^ygoG*A|Q&5zPRnq&A^18nZ==qd8|vZ!9dp+MXoI4_?9FMZ`{ zFZA5|EJB$b_;|UN8+k9Elil5mClb&A8g(FrEa&TcINl_Y?9cJ|pazJaAhWu4#L$x7 zvbDj4C?_LU&1UbTClzxQBC#$m(fycPI7Q%HLZLTv=G?B`ctP;CS#qa@5%A+$2E4qU z;+f^5pW9g*vSne3=H|^6fzU%9ggyxOd{RDR<^eG%?_H^oVF7Vyy(TL#w;9@L`!NUb z@?vO}sZ7m(0h;b#8T-5bOn8_GdM0K!Xr1i>wvYX+1J9yn=Z*D0#)^uHRaL)PR!znf z%VJdEBeNeaQSbsTra;*EOVhH-8C0(UI8JZX@_Hc^Qp{6T*+Y<-M;wD zIs(DVGUW?Le&wostk$vD8BQQPnM5hBLot0cW%l4jGYH5O^!_|8a$4gA@|~SniC(3z3^peQ7#TMnnN8xF&10j zsb>`F{PEkvkFCZ4G=u!g&_h#cgpG|&#nz{?1lVZZ_s0kRKk@*F3NjKYr%~)c%q#QW zFf0~PwZK4$GPT@jYv5LJDG!%+i(#T1&v`u-QTgJ&*Q|Olze*vJe1LO9!vQ3IhlrJ( zjSx!Nsx1^`pl?xXW?<7TkK@92Z8UjHCwv?V?)!+p)0ZhFna5j;tCn z%hXi2Ryh|+9X)Bk|8tonULc7V)P^agqBY!GoFHnQgaLN{9i4d?dxv6f*{7kfYroZyC)|_^yJSlmqP??VFm{Sd?`xH@S_$@zSHr6}Y{aflr;Y$? z2n^PHH>TnYV9<8!iqj6r%(?SgM+p~(#N~Z%GRB2QQwp_@BLZqMyfp0h1hNWU^3X{+ z{e?-0Y_fF8;oqGSeJ&0cslE1KBua=Ql{NxEx>_P~Gvc7vgXiQs`%nyTf3=*@9v>TC z)%D~ZJsK&ivli7g4Paz4e)q{>7K;~5X>sZ4Wa9eI<<_EYJTWac^g1xba-E{6TQa0) z^mIETEEXaXEt3FU`_>MYxBYZ@g`F?m#Kl#u(TG7Wk?R_2&)e43{lk3dSTT;IhkSJ) zr0yb)d{9_)AWE?4v&(G(n>_?lOa(jgg9Al{hmWN=+NlORnreqf+w$arNwV0NLM%c0KFN z8gkuy#_vjosm-J{XAU=&@T2ud+7fTn{iVWII#p8ucWu%S|3qz9(-8aWmg@#UxILK8Q zNuY7>?P_S`u}jIP$w+lt8ybn7J|=n`*i*GzOOa+i@Jb_Y!c0? z=oncD%J!_#tdPfLdm9p9+`*Ld@Cg%x$0cvJ=xD;In2h2FwzcK&->~uK(|hSvRM2tM z&u`0SA2%s3_*S+ydFCyRGJ#mJ!tzr($W@=lf2?U1;-?0|7K=i8HQ74Ds-8vG?B_~# zo7c8Ku6Q^NEzD9kiTc+GaKv3^i+eenJV3oNgYPgFbb?%I~tV7cZ|-x{%!%t&j5 z(LfRjb0o8(q!dN396|pF|G?=D2JexwxdG*NMf@$VCUYc?yFU9NI?|`hUy#k@Ja&&u zwmQIPPVmF2`ca9ru=t7l*dg zj(X8&v*ud*B{};EydR&Q(3VX12Z?M`N0=O`+gjGo()|@0t1^V?Ta)+R3o_C8ly?nY{T_KeUg&b! zCqp^P1?Ia%U|98!?=BAD?t}QA{L=mpyrEKs={2L)!*N_v^>0mS%zKTqwV$PaEzCCu zAN`D)Y=gSn4et%UB>P-Ho+r8Ic4lC(tKZ5!^ z$~M-dU`PaurLDd~N$RsV`o^pyD#jbSSRWFE)b=hYop>tp^;y)Jw8C%={*q1q(0SF) zkQ)Mv=UcZXX;O(TT%7N8v~dcwyRcIXxvu0_r>MZL18NM}F@8Ubw%!7Z zgpAKNr}f0_Gnl>{v|192bTz*>BpwJ<32JvEop1cfuT16tk&~^veH`Co$xZhzb9=#_ zHmT4=l94n2!;Nn?(`RJejO81~iVg$(QvfoC?}QdYtUcxV!HT%|itj%^aW}Y?#E7gN zyUwxC=i|Myqm(e+RL86&1AKXqc8YcN`qF5mHI9Aivdn0tf?vy%a$%3y<`mVHm>DfL zn!R!y@!K^1nfE#$KPDP+Uwl2+{qpDosJo}0-yf}u0h~@(_XsBI)vJ2=_q9=v)d`Ri zml?>@x8L|EGzChz23lf9$4(3T?5$LW-f|hT$b9*o8WKSMt<|x7ue1Djm2Xx>(4LH= zB}l|e)NvsqmW^YQ8JNu zbfN-BUye3TeLPVR09q86T&K8+?f2AWpo* zrkg>6&#WO9HnBD_Rw&9p&=5wLj57tJYAdbbkdIjCwFUT@t-Xn2VXE#Di5&mIcy0eV zb&wUYY2t+l!iyYnC9MX=t%g}vh6gJk?8;zf2GgoM8zG-N%auPW#t;cKkWC5RM1hc^eiU?FDW5Hy z0sRBJ>oqJY8P4vq(v1G?usyUh3s*GO_oL?*Be;!sE8=Vp@Xy^7i;ri|GgNiz8?6zwx z>(A$vA5cBHThBb|llkRIu6E+Y57YhwEBZ*MnbY-HW;W+8;md8avY@Try5b?QucB^N z$ly-fpFsTJ-W7M_ny{#`~~C!c)Qg>esIMBIQ)Tq2y~G z9H?IhKJADeYI2{tXk80V!awtcJJGFD+nKGJnV4H_!5?r^n|01|537gKbOie!-m@0R zimw(wbKMty9b0}WRRPOzH9rhH=3{T$aQHB$F3&39TtthKTGx`ne?^-9FRz_rjgBM}!brVCC@1earsS2ly$GM_W>_k0>u zKF8$Ob%G6}ZaL+<3EDDMSx?PeN98?&feMsxd`_I18EiQ2z7c-v7vrTwVKV`$?bpE* zO(gBctw-Y7_(wJZ*AFeza;z&!HpsnT+NgO*@lh^D%3h}TocO~r*3JwPB2{6Aa?X1s z1rqHP;^ltOs#!=6kvX4m(Wd^Sw%$V#$FJ#GT0y^wR}+uUs+uQVv>6(&-X4|BH>f^s zQ)Aq6OnmFJvFlP{%jvUI+cm!=R%(9z^k3*RIc}P81dleuh>b#Kw9Gi|4Aqf~%AS6< zJL7JdFGu;6GxjR`ZZb{kMvTUnJ#3`KI!rOn!p!n?k$u$_vpmcs)9vMlT~jt?%acms(8{gN$$u9gQ8em0MFPZX zA$In5_O=fnrl+UJ;cmGWNdI`vJCln~r`@i3;QH%edwnh~^y2Q|xt2iM3gu5kMt~;sbpGU66C=oFBh+l|+ z!l08nB2tkdL5W&4NRJ@AgVK~)eL;jJpQh&3aEq(dE>S|$s!G5SfP-n|@Fn+XC?pf- zO-RoK=cc(c49J}Du{$2;U1~xxvS-jW>gT*inryo|Iyb4D^M+7^?zw-&ytokGN_8wz zydhiMojcUNoEz=p8{<|Z2TM+q6&4$CzvmSTH@M*obN6F>bT{8?ok|z381CD72gAh{ z}^kh$~p-7v$3%Osmg{Iu$W+4K_Udcd?P25)+@Yo7y=6x20TXXf@L2aV-OQN z^)W$6A@+hkkLQkEqFwzFY6v2<9ToPB?z#Xw5}p;GmbMXZWZ{ULHQ-d9ZOAU6da|1v zBgT3+`*Kh1)aqqm5IbOx9gb4$RiEF$4Zq1YQNW_Zw!5!RMp77pjc5|Y0+WsJ6SGA4 zF(3}n%1(NIU8JSPZxGFqs>ON$`G;?>%26Ry2GmapotJ5Eov29$!QROfJZrW%27iGD z2`rxlAALi(EW=j=`l{yZ(~{&oRRqDCR)lf6{x*@>IIT?L72)+iFFN49&?}K$=I3yJ zdz0M!8F7TE?PP~QoMJ^v(9?AL&ByGIeW4AcR+b0+8*KwOW){`NK-(`B3_?OwCr_UI zTwsJN`E$oueB%Q@c(GWc8dAv}%!D1aWUPTCEK!U95po`gA;olQ2vLxFAl@8$HmSsz z><&^`+ZmSz1&XS?#~z<8h(TStxxXVtU-8o&C(93`Byq{SQR@@TZO7T3n#o0Z@2gi3iz2h15@`#6Uq6sp83-NB4*2SgM3CnZize1vM{jnY}}R9xC4Fjx(fj;t46R=h_M zvUJq_=tpN7Cd5AiXCHi4>P+c~!_iNoi=3P{ivx$hLMoyI#)MCLCb7SQTm@G|>=eWt zcYPA=u1BtR-kV9)KChExLm9jiE)vGL_#{SxbYDheO?uu_ErG&Z6Z~FIPHQc`L8@v> z-n6ioAJ-%3A0abYE)5!Jk@V+(FgD~SIYUev`1syC>16%NA6lKK_8%m(ykNM}wDzLS zJd|N^TRB-@?0Wuf(%T!9U8)5!(ZOBq-KQ$Q3pcMn`gS65NAc+Bfs1y=k+h}ASCVIHa2+8 zKArZ{P*i(!_v0FPmZPQQ(O1d*Wy@mAYI&wN=^u){17S%frPh@J(iGb--#HqSdV*Gj zJ^fzh%T8H+DC6WzM94&{4^4P{%bbVT*_(z|)OSeY-9s3jV`E@GV}E@ryf00G$ZGD) z$nMTZ**0Z@lW{&FI5*)!m7n%43}!n#m=7ZSDJJf+8KXPV_H+Zv@x+QgFaZnVM@l{K z<>VWA1uvOltj&w_b@^LGnoDH(;)vVWV69b> z|H;6tjawdl{cx06eeFt7k%&_dq$ce!pAA+^TvwFkh%y|`>RxF z`SkEFWw0WMtU>gXxe{kE)EDWj?)^$?_1|xwS?<0((gBX%$< z+L>Oqy^}qK7dfwKrg8Bl=BvSc*o~x&hpJ8{hw|P@lM*?Ri#Ff&NbJtmWL20sA;-8g zEbwJe{$fb+MRU`!Gy~G1Ya&zA5l`i}Y9E4>p??)`TGM>qCxJ|BG0yxH|i{j1+DH@zcvm{A*2;&v6y2%7=O)sB+62^jbe1C zt(GL0uP7~kev|xM8{hur%Otj9;3byx*|pVXe4TR(?d>6!;S4c}My+JF zUa~yIg8>n7cW>Do>R>jbwj>(qglAI>Q4npxbcRA^Yr?WQ*PxL@ql{ zqk(Zx*&;PFj7{hI^M&?CsP}|0wX|5;LI!0CA;Bo+Z+reql-;v4Ntif(e+xUHCZCwc z<+@o+7_Nv{j=x{F)RffYr%6YD(JF3qr^PvU!Nc3^kX{BY zc|N`F#g02YWXDaI`H9sB_k_qhg#7q4z)0rCxZ+f06ES?fgYWm^Ht}tIX5-nelpQY~ zR_*j4*!7eT<aH=I0_N2ad%F3k7AEOiPt+d7K zx*l%bn8|P1sdeuWLugaxGGhzvrOb;)$`V-Wb&D(m%CGX|U0%=l?J$R$UWbFM`oiLK znL{?iXtH&h__)8j9gQ<>-KLNj!INB*I7-_vb2F`@vDX>DrkK3@@IoZ>sX&)HoKxC5 zF#&R3$Q$1EET(Csc3foH-S;)E*kdFYzy|u;ZIXyO&8g!ZUXSg`RBI`==uv+2S#Y=SgjP55yM%?+%QwTFJJrqVEC>DB4|@;>zB@&y z^vJiG(N7k9@H8=$mq z$QFj029FiRzkYdP^mxfLqmJT@!(oL6sdz?LjrsG;81YFJH+1uYJ!_6{%A4Tv`G1ClQnNAi7Q%+9UiOFyUE zuultU93Ds(7_-)!5+wW6JaoplEr<%*F1lL3j~8y4t}IkR6b2$cZ{LQU3Y34vfH!oW zX=sU7pc|)x>1xQiv@AOJb739#2)Q*^{VpZk>0KEK0CBM|ujqh|7}0#AfefQ}|BJIs zL)iPR<>5lFJ(rdleeZ+K>?}%Y0bSvcl+U%#$7=UtEul=z8m=S-NPkf~j5Wn%X_n36MD|$Or5Px4hkW1A2U=4U9!!RnlB6E1{!RHdYB0WTZNr> zkPp7px6lV9@t(z3=_kDsF6^2>C$f#T#X08Aw)9rAG$EZx{X9p-QFy1O&Hi5>_&ek} zC?v%7E1c?};T0QEM3|agf6OOJ6sCX38*y=MhUoX^B(p#6jNfF6Yf`T2%e`e>XVwd# znaIyd9^ZDQk1`i8!SxKi5k)iPnXlQ!sAqr=D*BQBRPm z<}4`8((4T2{Oo^ys_$(y+*VO9bN8XSOSFhWz7th$!8dEBKxM3(w?I(Xnf$O1vRh@G zktRB}QPlNm#`p{_4kDT?Le=3R=BHg94igYl`@|Z!vs+B5!+lGR9TJaHWFKXe-Nox_ z)F4>7a!!!gZNk9vTv5Ao7Hx`A>jz`SN=oaU)R%_$rYuI7m3+CSYTBHWWxrIOtGrz^ z=VoU4wSmd#tqjw{7K-gNA8QM9qSjMv@fhU4y;;7CFR2%DIA`s4+a0O$jXD*dR8_~UXtmnp9Fn~%Msfs5gE z`fDXvY00N@2l!^^4%Pl9Wy@s zIN?uTwkJqly-s^1=FktyMVQpX!4wgYC~JNs6ylj%$v)^)CXU=<6ip5vw^)?A`++(a z{G6KjIv(~I9noMqKVv%|WUj%83$xh&x}nT|YUDMWw7~IVb-oP8KI*$0g5t-MO6)CW zinVAbd?43(EazjV=XtX-pE{JGf!T-zpJKGT%-m!?WG1o9NRf!BDuo}0ImRm9Zs}%c zuNSc3h0}lVdHXKz>XDo{{-+?DL`;lpg_&&!Ox^Xe)xy_%nM zg)D?pa9A!m{k6U6IqKrriInh@-MdW`)8b`7_VGAn zXJ`LX`o%5XY63o<;4qdGkkf<)(0bO6$38HQzO25h1ENJr^t|8oaX3pjRu37<}D9AvAJ5 z^%G~aC^?2((q^7lj_yPAQL32EwN($`6!5#e67X>(F1h!}aL>g++mAj_x$#wgM35-I z+=5X(UDu%DkC$`$a>E67ojB8Kl)YrKN@kso`F7 z8B5csbfl8`QhDp1Vkw_A842;H@id?~R*Hm7d#O@~dlr42;W9IAqAaSPa#}tmO7e+E zj!f={g>`+w`68+_vMvVPxh=})e!RZnKRdnAw3-v>#uj(_@ojFA*!qxDUULoWFds*?2pcb z83ob@;^QaGDU_uuDbNtyq`t5k)(N8I&_te0wzejBIb5 z^&J7e^?85#2J|r`TM{-fS1P4>Ycz_`c?A!%Cdjc?!pI5DQvr(&>Q{Mr@}{OQjofbB zh_)LpD&lMZ1`5sV&_*$YJ`2|Qfw!NdCnI4!u1-VPwb_VmqeCIrj6t6FK7C)Dyiz`| zT*&=MnayL7CfRK;0s!ObgsCZY?uX}x;qKfx20iIdA20u$o}xEh(5VXAqaa|&zE#X|L>=B%8{WO!Yl!#)UNp#jgxN7OdWZ=~QS zL`*^}K=`Hd{&oc|p0ohjw9e3mVW#TJ=`c|xJz-rKZu_AS#D=vAWbyf-BapKAqHm8) zvB*EsNVYnUNSaLUj-75Br%W3mV_Nd(Ww}=MmuzOOMZtTkHDimG@O?h5r^G13-=E*P zgP&U5mH9voFT)a2>fs2ES>+$*qX+`BYzQfYjq*)0Wdl;y!F8BrYr}Q3NVA2^ZhFsNTb7k3CkkFT& zkd-aiG>iRiBvT;Er6FQj;LPw|c(-$>;TsMAUFz=7w>{UJ;HDw@idQmZcoQ@xYdq`J z-5zS;tcRt^@T5)Hz_CrUHjs5)Qdcx)JD$Y~n=GA9rRpgP0=`z9v+F0ynjQ+Y=3=bhT(G| zMW7tq;W{$&_&8o@;;Dh-(XtGrR^4lM|4cAXRc(Blig|0^Rlf{-B~5mrj_3xAUuv+? z{C+wXB4ebrZ??U>c-NV*og91>q^XRgAKckr^;LR^kvrW zrVtR&9I8e0>aaoCsnOU@Ua&QIs=#3X^qYbB{xvr^@^d=rQ`Grj@krZ5f0)DMna@aW z+`tW`Q@K0Ei3#Ml%-@lq?J1NQHFcUdon>RgPxF4_DF23RT5}tb&!1kdSzRPOv!^CV{P+(Ecc7T(L(oD4wUZ_Q8F(V0p=u9jhb)@}Ou zh(kNqZk_$NtgF7&)*?)OG0PD0l{m(|jhZ&4lw4kwaJGd#Y(n|+Et>Z{k6r6E2 zLgz*N+eQqKjhnX<)5;=;g}#fPPz|>8`}ZC-R?Z75aOA?;l7w+4WFH-8vt4$+Aub(Z zig$DI)0c6HK7s1&KYvnh1<|?s+j|b%vk~-!^_nnl3s|;+_PIAauEgPJL4JR9Rqc(2 zPPj+Dz_gvR!9h31{>OZ#F*I9ufb0HtCQUx1zQCxVz+vW!=l*(&`W^OAXi0@!<*uf1 z;QT)R%=oGOEFOGNVDBYb6sOTo_;CO*Zk9W|wA-!uxyh~P+;;=c2fi6KEda)lAmCtj zfc|cWzGr*o%jaqjA$0BOhZhp3AZ^L(eGU(%$Z+Ci4(mS;7^qy^_hJX?K9Y8%E6I^p zR_`*VktS~h_uLO{BY-;dxeM*W!oszi3h+kthlx)B-ADfSqoB2ZWi$ssE!Om$!qZ-v z`X!`60~}19<-N(KC+pCR%glX%Hdt&0+yv%>=@nYPv;zwGjc7pyieAVub%033qx9jweUCpU5%l6q|>e zmcw9!+O6kDz%m5>pJj}aORYDOm#=~{PPo~lAqn&&PK_F)`THBxw2A|(Li-?E_Z}w`UdDm1pOSaczk-_su+#c9h|HmtXskr*G zVi{OLSYonE;cSyEsf7R7gFOp?y>a(s+Qy7D+`puh<5f}0a6}P;;zP{)&C3q$Q z9;RjY5eq|M)xK zHM{|j$-V8>7H~EGNN(u$&A0Wv*_!L{hy;6E%Z`=j;g9@dTb0>pl>Rf8^vj+<7IO0C z;aH5iFLH4jR8b3p+~x9l4h~+p=p0x!q_7^aFHP`Syv_^Pot8fH(%nFZix00&4XW^+-KHUtB0^bDNiX+cOo$G=2X$PY~ z;~)v4tZ)+So-iLKJ^#K;V)1t4Q6eI{QMcKNw*v+ZFC;v8ynlM?d2RN=+)v@iz1?p! zWgDNwy7F&JAruewnIwPhJA$8a(vCw;07uJMF;xdeRP?ikr=4l;S4XcZJb@<;#`L+w z<`g1M|BhK5FC@6Ohs*5Gp(qwiCq~K4%v?74m;+I1QYtEjUdEHdTV`X6{>s`F^U6f{Vgl1R(bUDY1<^K<^jAM^)Zz{xbM+U;GQ_0uD_Hd>D8I3c2*hg zCjn9Aywj2Y^H-@1k(2}R!10+t42Yo;n2vGRpD6v$uRFP>cJBilZ~`7)K}qQdx+?fXlGND=yU$Nv{aL)DHE;)3!a_uq=>#Y(h^wCy)q4x+bKJg_uIvRRp04W@*RsiDJGZTH`9b`44D4sL_&!ec|C@J{~8bMK025zGewQZ_~3J~~|Z{{8#TDz^>)?ZuID{-5AfCw8Vn)y!)keohs&Uuf_> zeAK%1xwso2x}qjIJ)LRd2Xj4KQqh$nOMs~b9z!R*Z}FMX|Mn|hbe{G}W>dFAGmV)c zcuH5uGVKA2JjcPok?nvuVnbH>6Ci1G3D(@Ua{1!^w{~v!Jez}XrXz?3QEL08v&P%o zX=Q{)GAVTUE{rmw#WHZ6INUO`GFEdI$WTJm0XK`yAENvmG`>f^1stV9GhU#Hpmi)665ApGzWCNt522pAgybYd>!ab_>-025_Ux^`^_(tVQcFZa*7Z!QEtPB(%6 zzdAnxO+71*{RdK?gr|r{AdyFh9rjG9x4-`m6bCw`wscy#IuAom2~C33|1*BGW5B@5 zTt0Q|k$v9{?Fq192d7+Q{=nesd$+whb{37CK`QX*Mvj&dz=u1KO7q%{U$RL6+nQW@ z)1mt12y%*le!9$+uCm3QLWDfo_yZI2&d%Bd_WLSH5UlqhtNz@scS#QK*<)rKEOEg=j@b+q+dCzKS4h#!R2|xe zNwZ+CaOXx z#PV|@$;Q04pKs}EP$0hG;y`{2xCtJ}Z~PmKFqc4Nq_M-;T4L5 zE#N}I{l5Pixip!KxFGS3>(|GD0NRMsEI7&xCxTpcpQqD^I%UoLfLbQ;{-_&DOf+uZ zv@ExAa}(K?;O6E|sQ`Pv6*G%hZGS~gc6;(~MFUI1_;?YUqR8Y6lP^;*V-4y@${i#5 z^a@Z?1L=jL#&UN9908zMu>zyTrDS-)J9KGj$^YrgG0C_wAq{Tk|5;XAmOL6PtoqA& zeDD*m4NT#d`3X4J^{WrI#bjA7a8rxB7Ho-}K9&YrK(|V)yJT8Ny|(qMV43H7GD%Ur z0G_&|ICp61=1S#Q(r0EOyh9_~aAf?q{wHju&WC9=bfUNd$=)OwUgP7F91AyMn3ROS zJ~Ljc96LB>_S~7$!O>AuvyGzGk~sT1ELsDpRHM|dT{X|$nOIEfU^5W6sXf27u~PFG z`V{2C(ye%;VxNPO*op^VO%FI~&Vg0X6oaDcYMI{uyd>X~Vrnc*xmh8diXEs&1@q%f z<{=ndD4#w78me3q#QFvi2?!9$fn&O{rf5qLSq z6a~-5#vt;yrf?GKfbPmZ@($=;Bik@6&Fmz8umx?HBg=oQUc9beGz7__67R1R$zrrT z^wvQ85xpL>ad+R<2!C_~Hwt&NiH;{eHAl~nIQ6LPK&4T4T>-z4OR}1Z@t+1}k7 z`;`}R&P2BvNTpAp$j{7Gm5UOz>Nl_1faali9*K0>lUZyEpd^+lcR~gO>xi!7*1|+> zz;J*J15&Mm1{yBL`f~veB5YW%j=W?e>d(KO@3jj12zC0xzur(W5hbi;Fo?%V@L5fA zm#OH@8~b*y(s3AOJnCDQY*P+`s%0?qxc;6apSoWHGTXA038T`O24n7$O~$$gM)(|$^l^g5wJR|+ca`1 zNq+SFhdhV{@kUvYfOBZ)37pKiy9<@F{dg@--swLEW0wGdTKHQ9z;KPhH2iA-iW`qs zxxok}ClqWTauc}@K`h=@6Ee74w&jOWdEmAE#msH#dTi_!ipzDVfrt3ZmjpD|k8)S} z9KBFh`&JZEVJCnu1l+%yBXwYqPq4j~+Dby>rKkh3R=HFHvP#&Id*)+Q7xd;@d5R6| z4#|rAv4V-iFh_yp!GPTf?&vYhHx~n23o4LC2srEASGkQK+rjwkZp==Bi8rEi5+8FP z$gz&{iEWXrQvg{gfE5+kei0Qv_};SvbN?93FCcyJKy$SHr`@aet0#f$2+>{yB|Df) z(1=70Z!jr|LggP)hf+B6%3pA!QyR|QmAV3CpUJBZD6JH%pSS zVxPcIbUP6LvkR#cMUZvR0M#RAI4U-l15`wP`}3{A6Ivu~!&6TDXo1KQYLozD6sFzj zN<$aDetg%cpD5s%5t#u8G4Q?;Qcsda7}<$({3N0<%pxXsD^AM$LG@E5GPx-RedG0F z6XtdhWrOVxMJXIW9XpG+e?5lKkvXNF=LnLs{@dW+ZlfW7hxS~~pD-ob2)~{0bsG*C zN>_EypwrY0gL=iQ3)TdGqDz^Iy?vqd6=^kF+Y2u|Rz!9@B{8*-f2ok?i-SqWQ#8zV zrL6-@J6NEis(Q@e!LBJ#mob4vSGe^ndZWKxlXi9%{3O1i{2^ZOC?+g6_R;p3_gPo~ znIU*~Je+j)s3joct11-I)PY*uI`Yx6`Ytp#OKoi`4`Av2IP$AbK)4tx0_!7FpmUCz zd4MM6Q4Sg(Pm8I2T{`+0T>exextf4=rQL)KLT-n)VZhj9rMzXH{V$-y8Wk0l3{f9Z zV=;!1^`VGuR0-VBt9zb3DnfCVQIu3v$hKObK0bAp zd0HGXss{`_NC17}a#U% zi{YB0`Br`mrtcI~{NZ?5rrd-AL>m<@Gkw~(Z%FR1$<9DZcnuMkX8>H$w5>UCd8w8p zskcLoc?n1LJ(x2c-68;KGh3Uxp6`KclL>Zpbr^sKmRXHgXd5v$?Q(;|G!Gt9nhQA<#Tyobd3?F?We z*We+w@~7rRmWzAJe(nL75(RtTpkvw=!8{}hFL?vQ2FFNwuIg^bi{-3iM=3eS^Cb4T zDTvr%{as~duaAAptNH0}vj=(^{n5tfuLzi|*B|Akh{3ru|E03@8|3#K@S9~NOORj{ zaSae1xPdsS0y`TU*_j%sc-})~dg}!*Zd1Mtb&*YI4G2F>=)@h|2gscRd?Y^?a^@ME zouM@lau@v{gkIMha0<^WbcGZfkg{laJr0<$58;Cn=_Nez6)mk8@Lo}3D`gFf3-(#q z6qBDJr$w#}LaR-tr4q(dPKY*hm5xMY@Q2D`|DaxsCq38d2yWIC!B*7U#9YvSPx5W) zbD4cwiIMxXgW z9vyhO*iK1Em6}$)e|hLV*qzC+eRUUMCrHL1uX06nY3OacQze8iRBj0a)t>x((x1X) zB%`E+66!ut+p-CKj1Omf#{9T96u!%EBFUZtk+ODngW;ca7b)vYOG^*EzZwH?X1Kqz z4qoOg2J`aeOPwlL-U^rHo2x~y)lH?4OF%wQ!u@-vQxw=kY`<|1LeR2uavH#H?E#Za zfow{h;xH5ybT2%=DcMwQ*8JM5d0JHXvO>J{(*(ST7%F0yJ;49jgFi}z-_Od+`>kMv z1ar{D6Pme+>b=zwA~Z^PS%U{oZ=%=MAdsKVxhxL_96m~E?yh}G$hHwVUZk7!I2Aqg zPziXhMgUk5&m5!S_2t+8tQ0~_NLqeCjcyMf((;D^B$W+^sq}mR89;*vNP1cF;Jaqk z_wK7GLxJF92X#LhwyLjqB=Z~dM7skyg*u=)u&qm9Dyfk7gQ(yOp%_Unp>P2pg3+Fb zt39{rA!zy`Uk7JvEbNYcBU%{1^(MieK<*9>7IgtEGM~qMvZO@|UEuxe0VrslZja?| zL7hBEp1_pOLNX!;St(Rt2!O-E#W(ED(%5`Z_W}xigdY_^LW80J6f1Rr+W@Y26%q#= z))%gfPvPv#F0uX-K#$MHO2fqg{qFi9!65tH={UHZciO7&)s3?Gj06nkaq2icpw64S zAsKaXk&%ADcWVEkS!4zFBB#LIAx8CioG}x4W!KZ&E@=}NxhE$MP96!;)%Ke%K zay4{%qJ1#aRu7z5NJv`1@D%Axfy zsd+TKeT`*2$SA9*=tK+M{nPJ$jk+0sM>#c&HB44ve}0Rtfi}}2A4;y9hR~qcJh6Wz z3XnmForA@7O#grexf+&MZ9LOBkf5Uq#(xpzCkVxe8Fb<}f4;awHNfW0n>T{8#}e>Z z=w@CXx~x&WWIcZupoJH-0T{!D-fZl{(ks9{uxmQ0Z7v@Pv2XC$J5Bu;P+P-2^U>af&eW6w#V02-4{h5b0U#vhz59J8#PoRpkn0sZ!f~AoX{61 za_Fo+giMh0R>_BgpMa1yLyRD#U)Wjq{E7-#{PF3yOgyldHqZ7l9U@-FvpFNh$l*>~o4gLwt=F%I{PE3!6g{Q) zZgY`%00<3L;Tj-=h7d+~wubMaq7>m}XjcHEv;8b3C3Slb>8>fXn3QS~#Ll1R)_p3v zz$X5!_1rUIdq(7H(0Kw|+nJ73>#T5Ij5;mb2-#1MR*9zj){;dzD!GTu`WxC`e@j#! zGcJ-RVx1a1eolTIwpKM6`w0^0M>Fmht@*-j!1~I@d`JTJQ2#{xw%19FFgM%gn;+VO z7i`Af>AO~ee>vp6+kP9lsdo45tQTrpznxy*DJ<&oFjucazIU7uPrbbi18#f|@v8r9 zu|+aG$1?$o2%}xV5>Zt;4wcqreSJD~XvQIZZiLoX*)qVvDPBNxN?2Y;UWdlPL{}cd z{LS_pQcyH)tPeQKYthYw5DTQ?3}3enjnP}!fj$D(iYxOh6hyjtW)ks<{%R0%SbMjh z<%ZWQ=|n}^MAWT_M|{!p{$zb969VIqy$Gh5M>PgA5mb8JlbPuiC1l>3Gsf1>HE)Ck^nt{9dl@RS^E4C^bXUj^8R9M>9J6mVxZ9=;WJ0S z2>BGBb%Q&5?yb^KB_CjeER)0lAT;E8)(`1CbUTs%{y2OG95F1(379ue>YmE_9I(bD zYfMXDdDzMaJZQ<6(YA|m!8fuJ>2g2uka@A_K8l14bc)n_2N#V1gCnNenC)nR`vd}^ zyFr#;_3cV`i_Mj?1>W!AJPE(NHt<}(jFh}EOU5o9-{E8ZXZ4ws zwLOkVTm&a=_SXdy z;T@p#4ejS8*W1;+Tky2KMG5+F`=cwI7L}%9Z*aRzmc!qn#s|!prJ+dL58pzbfi-Z_ z=2YYy`9C%lerDuKhbj|3M;Yf8iRF!59{Wi-6|3*yfw;ki8QmO(jN2ix*^|@cF)i(6j+m`V-Lt}w*ii^$}T#1Acgt^+V8KP z1UdsTBvy1LW@fm7@_LD`lR*$L)fVk9J1zE;ToO>W29PRa_#>3JP+Gmd)n_SCfK5i~ zKyW-Re%XTX<&yp=x-Ajp4dQWTp>x~x^H-&_yp2Zeu3*Q^ovVf_4LVB{D! z2h;3$|62X!rqL7y@E#Syg)jxsZ6`i;k@(k-ff|3BCP;k!!3!Bdz9>AO9tnzhs%m(J<>9fJXWLap87J5Fe2XcAXAa zpl|0xgPi~`Tg0D-e6|U2M0HKghUNRvFH6XHd<@^u6`BV23)z{BCxQ%Nr>LQq1Fks; zy43*nJv^#pHC)2A@@~(zM>M0N>bm2IeGBUMA&3Y%s|85n2_QySXm9B!P)I=uV-KHf z4E+=6MmB(XhpIjoO#v!G7O=Ko-N*sD#$o#SD+f@^I=nOp2|~?sKnpH`t1Y=V_7u{f zy9u+QYfRXdL9py-60ltXG{T z$G%0$sWYyVYYoY8J(a4xy?yoK-#)jTWsn@>=Qn1gTKNVc9g=&*;CE=?-#^j>_}0;{ zRBs!Mz$`|LsS0o|(GWuHmpOp2>Hxm}L}L%nwvNaNkn-fk#9FF~ugjr|_UflMuIqO| z4Ylv>()Hcl-QUU-)0Yy2?lnVp`51cJs{BM>AY7v&N!wCVV4Sjhvb`pUQ+%^04GyxgPalVk7 zJIny`GY;D{d#&Xj+~EUPNHjs5cuf<4C8j~juNOX=^$8<1)4Y?up$Kew9DzVkqHt}K zJZdO|te7Nw0b_o_^>3_ky$UeSI{2CAYmAQa8p>V zW{3v?XY3Hr2eT^vXl=m2PKx@XQWi-GpuTBC1q?)wfa3vjTQ+O`GRbiz4T`3ZxF8Co z%O=nV#4I$gg+TZh?hEWTyO93}0t9P}PCIm)N%oupGzXmvMYHH5bbw-ChH@4o$Mpsv zsqHfPe-=zG;~G>QP_3aO1Jx<~2e3EIY65Hc<$Caj_8^-By}mSPw&G7cjhzYFfyXa^ z!WVN1K#r~)ZEl6V*Lvj;|}sK(K2SpuwY><(U;#w;${thH4Fmj6~{$+f4e8XQ^I@rV1UUVrUG)VHv7` zGH)EB5#0C!g=vjxjIh`Vkx=NqO83lzn2#}W_LMGCC}76Y3fZ2XJz^@aqC$c`126*V z2qyFfU|WeoVF0-=)j}}|o(T~hQMX}FTU&byOcR&vqunSJ0u4Xs-{oa9=^NX_U5KS$ zTy9;7u3IgeI;K74b%gIP3kryaP2iRT5lIu%2{~)7UU~Nv?QsJ@c*+)E-4GhF^LrW1 zdmPRsO7EkhfHeL$&e?wJlqEHSZgzdHBP?Qr{{1fjz_^t8?fuJjB~pXN;bIqhT1P0; zf6?3@u~(>WuK->7wjiGbcJEyLAknNwi30h}J!y#DKfWeFi(6*}M0C7$?!4j&4vK(6V8 zx;WNKLExkwRnlDzio@L1-%lX1M3srr#{lR|eG*%3G>z4lmuDblShx85iGjVxk3B-n zFw~HOQKd^zazoM?tG*?Yy53`66cLmKw^Rbnv=H!RgcbnQFAWlxNG=+J$aml+09{O+ zMfq9Sb<4|)Z_(t&zYXdUX4qvl0ql3YLpX>Wg@W>LI{v?_EEoB3vhd&EM{Q`f|M*wv z8O>Aw-zO5L22GYXho!P1`Vr#roffvk07kBOozw&JLTV8QlXy$T|8^0tOL+YQPqD|g z?eC5tGARhKy*asm3Dtksfsj#JoR=7|Qw8DGs*QsCs|MW1{%sE;o2bQY=!9xC5Vh$* zX2SMt{D1FB=xb=F@A(757E9XyHmBwAfw^lA9ux6N6CV9ZegAn~WpKObj-PTj;eVe2 z{-yqqwjdT<5WC(Pq5y=vqt+i(hj20>q&X&*Jb?I+oy+pqOkpMEB7y#_Ze#P>2oj8s zYXB&xXy+T)Y6bky1E#i3S+eN@p_Zf_H7xmv{`3ZZZ-lE)&KcRM<`BP*Sy|!J{V^vg zD9UtUSmW=$jQ_qTj7}5}1Mk8G9ljPpM#62oKI1H)Y9VGox#?}M&FF+1fB&K$7g$Oq zK$Zm8Zw!GJ(#HJzaY$CE+>upiJyB_9Uc_lG%;hH>Psid8NQsNRP7H=B2BVVb57F}< zmVhi--sCHEqwRwoBh;SyM|>Z(#YXb*|E_@r9S*gHDZdjxob0J=2jFxMH9`Qek)Lk~O{x+!YyZzh55()Gz3rmsqdSBKsn zg=~3Xiw681fE3rXP#?N>MxBp-LGU|l^c_@&UtNY;vJo;~ETWHsd^eU!$yWQxpJfQ7 zK<5ftk1R7Yp8zm}h64i>&9z*iKrnviDFP1lDGXv92YWjNI|XZWA46-8V-m;0EZrf`OU6@VvB-;A{kOZHcn3evDI96 z=m+3H_dUW%3sEo8PoO(EW$>3!T}2H2g1VwX*X(%!#C-F1nG`bMM5CvLwjQPyr~^FE zP(eKz#Ac6zDF=Yt-5c8gl5RR66kBhAbuU(CyAPV@W#|)fb4D7dp zt!FY9VNBwFRpGE+AVi-v%<1JtXE6p!cO#CVp81?V*J{ z;;Kx*loYzF3@54M5iIW{!r>4?2ILHY&n6M%2J5TG&K->iU})t^Y=-eM)KESl4khAU z9DG)ZgO@!8(0A!TA50;vHS!2R#|a6e!-?9MT>I;c(!Z>joN~l(0X?=odaB z$!TzNw{MLB(GscpqAu3YwMSAI%o&)LKuDn6Kh1!XQa^XjArb)ud|ZtD)6+qak07wu zLJZEU|Kem1qWqw_oBz(=1Yv*s99YqGurR04sO!0k`>V$=D4T}huzbZWdmR3|3FcY_ z(mHq6r@#r<{~v8%9?j+2w*4!mlp&=;k&4nTV?soPga%S%iW14JP!W<6DN1%lNfeO` znKMhJLS+t_E1A-SGSqjRqUU?px8DDrueG1G+Rx@U-1l{#*Lfb(6~cW69dLrhx~hZ5 zkg7KfcXwOc{lxc9KK{)T4D6GP6Vi>mi^4k7*fCa+eMDH-X61+8kw zfJA*Rms;DEC5k8Z$h!hW%M0A+!VgJi;M#9-oyHg*lZKHpISt_=GI>XD?9|cmMrX6~ z1l!xJ#Lz$pWO|Yc6r*4Kn!I{adqJ541W)e=-nzC)FIaH9`*&y&v@o)_;-Z$|q+>#y z8HE%)2HZo;B5X6^XjkfOQJ2sh(J2HtQs#oT@M#bWq}`*jGUL^Q68-@6GUly?-Wl&x z>uWJwd#JlGh|}8^uLAW1B3>%6`2k2Mu6=W{`|FK6@jC`2cB6{=<3sX4dGZ8Lg(@Dc zOOQV5ZeKq=;>1@LMk`diuLH;MEX(~<$67J=8OX00ifhC10~Qwh@M5Ic%XGl_h~^~# zJu$?Gvq>=t(FsVyZAp24)L4SmQgw2YfU>3{5g7^}K15+0%EDMjV*AoD4xnTNXW@VA zpj^9vUHjep_mLo^s6ycvX@r6GQ?RXtX-m0_owl%O3aH5GN-utIi%@JTud@0|tU9JH z+xm7Fmx)K2`4P?^i62;w^>kc)#P)5LPUGEMx0G1U7GG)f0*=uznCCX2>3-bb5zVfR zg$Xp;=c0sPM5zUYK-FXS6OUBnE`9yF9$B~T@_kYXqbTI7h?{pbPRGn=7lFRwA4Uj9 zsuj+Afi`3$6r-sNA!gz5c^TNwqH}ZKR;-VX%EblV+X(ouz~%ilyaka+JNN9dGW1amAvc=w=BfRE*j&*Z56?1>eWry}6T1O$W2_frlcD_kiuMzJCCT z=fA|hx}J{+4^IHnRF`&x2%5mY>D2Xs%33_eAD5ljwG7RLzJl+b*;11m!D&9yy(tcT ztYAv9RXE*M6MuE^_}K6OGfTj(tNKewSOveF+U&@ONSycrz+*W#YfLYw@1>qlqTuE%!YFxj+2>JqT>{X>^BjC*Z>byShu zlCkxQMfs7Ler_K}`+xs(XvnRh*G;hf(?1H#nQ7HCU#;l(=&RpmBvt~GkY%T(shMRr zr4`|jk3egkDVcS)cwDFoF@gQV?ylk$ckf}eMWK#9zO{a-##~aY;!$4)ql(cGjbYw1 z_#JlzE+lT?-VZ7F;#AhfvU9E)A7-J&h6W95na5syHGc0>6z>F@a^c^D_M=>Fj*ok+ z4@^^xI3LfiP}^fIOXGG!CtAfu`xY?z_{~UgOsEK$^*bcpqO)@k7{HrDS_p_(r}|m* zDS$c1@Vz(u6-tfem`F({;)Ea%H_0nNP%>Xfsm&hkbMPvr#mb{h>Q~a8R!ZHXlM`r` z&RFUKA|~MoP5F*UEMzD_Nilw0Ww4fL#S23;c{FzCqPmAkh}DoPj*J&R9EyHWwD7@( zLUTSE(DP{UrxuJ2E`l(Qgn4GT>vS3k*qxIQomn?}qO&6d0X>yi`5jn#b9wjEi<7^C zF^84e2}+1I>>}zx{0h(^X%mwOg)=)X45+lPN!#&a(B>$JkTD_64zWsfjC93q_1jrl zds3I;EETMN9+EHJJl4*FofI{MiFg3iClN0Wu}{%ksZm2a$W}@i3^}FN^-L_@3MrPe z%l)cX!P}-{CCe2UKN26ihU}%r&B21Kd~#e!ty82fG#3aSg?tikN+Qj-83%7T zF_U1rZM{bDY4jPbsQpyoNe)2@6T+Nf+c5w6hwubO#>OpPnA{7Y`?CLZ-kaWRHP~Ll z7OA~u{?J$@Ci$c!Z?v_}#b7E0fSMh#Q(YsvF=&AB}2x2kL9FJ*ighx-S(<%l2x zY=vfPm(gaPzurCZ!T5^vEWUpr7cyY$9GE?5#8fO1jex8{%3~G%}4_5TZo{!Iuo+ z0?Kfl1TJ3xNCCc5;OxgiHyYMTsQJ4)-HWIxAg2sGUk~;_nbr0MU=wAgkc)^wx@62% zrNdyhOAjlwmgj}Az%)7aB)<6^By!xhj3ZB$wvo~Gi!pzvqHRoi#U1FvGaA*GaYBPS zb7+V9@#k}AP9sYi9U6pNtPWoic+c}-FG2RL6)M4561I6!Sy^umEA&LZe|$-xW}Im| zaDj{Xfxa(gxqG?;nvN&$b-{e?nrjDe;vjcJibcTSPY^xZVgpGqvZfKk$9Bb^2VNFh zp6z~c;LLc@v=-)Jur5(tOmGtP=8W;u4BSii-lxg&PqpLZe7|2RC88*ym9?{ zynjhdeC{yHhQ!fN#@p`RNlauX87rQdt10Fm_s!_pd&%0n&v~}%-HvPb7lvK73I1ot zItBk5>K-ra{W)t9I2NIa)&gb7T71^?l=EP1Nla`QqcC{;rCoxaCIWI8cHuNB^zV#ITw63O!-nVznE$UfmdiVA0A=852Vmo&_hQ@m=u1kIuIkZ}g1?V|@;Q@#Gnw7v$iRwPPLC=4%DNdt)dA5QPA_IApktkMI?- zR>EENEH?qT+y>J02F&>cDy@}p8Dc-{h#73WAz)aPVQV0&f;fsj*rV`MjwF4Uzyhld zZ1zCatD_R6(0UVUS83j~>i550c>x-ycFhK7YNKCaU7#Fj~_ zz$!SIe+q`nKyi6pEH$VU?w)xInf}d1=VMZHcY$IiMWU(JN>dycO>ME(l{Fe*cUZZ_ zl}1K!o`!DLHk5|MtoB)rw%VsJ(LTEADSoJ}GBtIVo?bic(awpy|Ip%rR%Et-HMbk0 zWNe2F0Gg7r;HAn;#@%lNwMGu1pMFCMbHvx=(PH31lfZ)2+ur)rk~zMQJ@HkN*!9xL!S$rumXSKr&_`OGc(>E z>$pIPW{&vZe#{hTTF?-aO+5eiFZWzbKR|>yF)%@!Q~K{Z9Ctvx2je7=zZulU0IS=8 zu|En`g*4-&K88vBq;mk@rb%hqDS@3Y*<{|H1fJjIJVuHnBZs_yjRsNh+M)tP=i1W+ zA16mqlQR7QvT&yw9(*CwWQwCLh z4UoNCXHv@HY{wiRZL1G45?*2kiT73ySZ^K0k#Z%3*~3u6#30U+c6HxAn2bsFX+3mz z5%UXYM;Kz-h%3Rg&QNu^e8XyG*Ys$p+;-7H^Lx^*=i^#nx(GrI-J8{q40V6p+W2M{ zhu;7AiRbX_z`R5^e*1N`$Gi1SFu)xvs@27A5FJL%3fc};VBieZDvt;>fxcW#UGK=U zj7DTz9SC7Qgjc;g9m3Ly32Yw(Hdlts;IYMTo`t;YQ0W_1Q??6WVitmy%(hz~&G^`q zBST)h^NVBxjXr_p1vrab@?z%}jHr}3g>Q7+BmS+RW0QGoa`Hu8!5!0qc?O@{J`%_EOUM^54q5`YkbjDe6-N$Pejc9(PL;JD%2 z`GILC{i|B!N&i}81sgTi+TO?efIW<}yKVjZ&d4bi2O|;A<*VWVN<#W z>mJ5GvavWVdw~)7N=e4@OW*LpYctZdBwFx`c1H269WY3+6M3AAC!XX*$v77orZ0}* z@4xGF`hQ4wk9f6;v6ZgP=#X^}zIggHYq0oKiv?SzN?lBmd8f51K058ZHE>;$acrx9>45( zUdvJY7p%&DUb%WqxV+o08fKKR|;Nn#%xR$)}%o)o=XI+`9UDe^i>HF6U(! zd&0xRS*HK6YTcr5dPC*;pC9p)ymhz!Dg1wAfpKxoMVyqlu2 zrKo1Qz=V8^j-HT`mTm`C{TTFTAYi2UQd7trd2B`4cCoT@{`q5Z65tsofiLht4rKL$ zTAQci7b-koHst)|Yqy8GHMcpoqVPU}2)lBINK}y@kBaJ_KRloD|L=qTWBeWg^pje* z4&NjSamr*W2gc@)M{#4M!AHNj|5g^h1{`RXT2D5N!u=2K9Ijz8cz9Uot-TD$_EYE6 zy(ixD3StSM+hT=8vD8`DYK~Tyb_$@}b^SSHV>dxu|;c7 znfHVRhlPdZTS-rRu8NaaDhsvk?d^?AYwGIEAwERhvf5*FR0JeOcq`r7(XeUazDVtf zPJ8+qeP$3@ut{p+#^+g3psx&)T#^o8%ffSYdGCzLS2nv?S$MI=8bUl{Z@SXBt7wjEg7S>e=uX2JO;C6O4FA6wUpyIGqdX}@po;3>=AAfi0 z80=#@;P$DGl21T6z<=TjGY2V#{<{W`3#nE`b9yCd3@615vF(_JXR)!dIVG4s_Twb! z#g#P%r>G~PJsEN#JW5OF%)FJB#sxm57{<^#zDNIBG;JNH)Nk~9PT0BN469D^N)qB8;PGC3M@yI^` zetPY-4XLAW^S0gdzzoF24srIKn_BcOLS~V`$@5Eq>8;e%we1fmNB~6kLV!_ES<_G= z(zv-bUlWQ>-4HIig6N`|(>?>k8>h|z4SJK-4iZtPyqC~v9tHI(87Hj>&B>ndh2_f|{xHbhijJO6nEAK~5dJtqOMon<@z)Jd8v-d1nj$=vvM_B|HjUn= zEdO?FPmlaKmw!gLQ)pjzv@H=TvJ(R}`iya1AwmU0tyV-+;iajKQHYZNxn$!niT6ou z&TFU% zEn{zN*kDs#Ss9$d2*Cr0m;Bc;)E~1G8E_nPn#h2}%Lz|0HqW>Sh%Z+i60^_~=iXIN z#l$WvAd*D!1B>BpJ_fOwQGKKLr&8QD^5qcdo37Q4{%v(J)Nu+!_e%XJaE-orl| zYX=M9Grcm>KN!h45tdSkj)8QZ=N1kX0L^VqVjIzpp03?7z7VWo1n{aZp@5D1dmc>1 zQcQG#8V;M8w)RPMve9=u6zX%2r#7tbPhgq1LU6bHcdUZ5jeSqa*;EzrOG?OY>CU%k zj$ttS)P6CMO(X_#Z_ao^uAikgON&z6^s=FkF*FovxaRD`aUb1-}5la464db(D1k zy(KhyqPqa%k=vHf+4$t75|VKD^oig)UDfrN98Ta6mnI~s*ZX@%PFtl`IM)d;)iqV6 z1s&)=*T?HqNIIFWEoZKxnQXLMzu;WY{`g8|=3!}ZDa3N%gouB-I{?^rw?G@T{ZQkL z?RUdOoM{pV?O@Rp)7$ANJ8WwdA>+VLKptfeP&7}H=Rmw->5JRFMGm?$Q}~qSA{CyZ^O1_L>+9ok!XqLgBCm{B-GKyP z2OMBKBHTu>7E2twMvMrtD}LoUxb_6;nIn=8u-4m3BWg>&`!JkBPsprM(86)O+!rha zAKDMC=k7SN(jtI2i^yAFjwLrM2MU0lF&F_)$SS;YbQEWGj^asrgeUimuP-y6Fmvcd zvfc%2!6s97?bZBgQ^4`VoWMr1wWm)vOUcMA2h2h%4KiRSkTzyOcO~kMG}>jh(I&=d z#pftQgYf$G>ywyErV!QF-P6YMNb1Q#A@& z^8C+HQrDC2p246~R?z&QV2+0lQG^6K7Nq~2Bo8r(z4o2uTi{~izg@q7XygkuhENF- zH+WV?m&Y_a8TaMs73l z1ce^l*ms5eHeDFfF8+d)S(B!!?+_Dt}?b@ixfB6%%#=^?Xk~+)OtZiCD^xUA`nfsT@};_CI@F+XEB_* z)|z!q_4TXXzk9cZaR-I=R>^xT(_`r(+wbbSK~58mloXTSDnAdV*59G-MyKw*vs^T0 zr>ait->~3!;rfS6Q})YFgrHi<#1o89B>>3f^A{}Ge7^@n>7}si*J~Q_Y+b>Vl?Kyv zY?2qg_m(0v?O;I-YX^s`sMmL5OYyXHb*EGywotwjGSmI}oy!AdH#Hzsr`p9B8r1F- z!17lKu!_Tj**%zA*Oa4g@(GpPzkU$%Kto;yH|L<1dNjeDE_}eV$HFi0 z$xDCe(Xot<7ke3bz=MKFDw_7DS?O$g)q=Hxw$7w$X-3R5(nJ6fjG( zr=W)BzCRsRWpU>>$hZ8WxKm#ue7&){Y;kIvVR?BuNmL!Nv;o5{c6!XYr@&JIxWMDI zbUp?Qo7Dxn3g>$w+{6kXQtdCIv;9KtH6y)dc4Y#mqdvxa6 z^XLBAfqTx}-G~R7h81hhkEU=N{6H=NYmUO0$zr>loeGV~(jT2cFRlFk)^w~JeGl1{ z=u(ir3v&_-Enc)&okERb6gqf*TQrKDSlZ-laa$pcY4f(rPCo8^x-sQz?zl0HlbHyyyLkJVc5>aj)hY|ice!~y}5x0%hzNOMqS{? zB#?07QVe9f|SFT*S zlbVIJwCa~BIv_wk<%)5lujH0Iux00~z6)^VFBrEwp?OB*RcN1i8=gsQ^lZ>g5po9Z z@rm(S1G6o`f^RWN5nL`Xb1F%Uu`*Yl__EF*STH(WAY-l+-9z@L6$ z;-5>KEp72=c_AN|4$iT7%8bRgjO;;IS=rfPPQ27L43pL#mP3nsL%o7Gbw}U|G)F z^u)=cp3L7+hRuiPiHaRbZnEoufVh_ejt> znigX>YQ8&B@}r-CgY4!#>(tzakHYP~*`yzO@XLGq@py&%?npjZF#2BXcCF%ifKYen zL03rZz(5{3d?O}iMO<8*hGFip2W~BZP6YejK1}6k-j<1pH#W(1@7|kV2gKkPGx-hN zwYuYL1Fwp{v6EVv1s;4umwI%r`TBjktiQsf+49}V?m{G%zm&BCpGL6rI$y>X6uk@C zy@0l(j0OR$pUdvWwY@8P6!;;=j5C|E!_-00dX^2jV=##;6{UWJUIm>~iE$m-B}LsK z)luEhta~AnHYtx2(82|mzCZWV?aMJ(4XRy`h44Oa?~-WsY-`qmfb)@P@aw4Z*$%&< zQU!z(pUrgaZuo$JE}dA?Z9N-%Y&)z=n+Pd+wGl|7n{f;^1vkeAlIW(U;N7jnLP2Zz!@!nRG>yJegKd5ad)daM(_ zff^Qe1f2Z0rj_U-uMxDPwiKB83yP$57D&fDMkOhXY(8=v@+^)N1!mGt!V%o9DWPD6%I5Na+A z|43!He>%bl)KEr-G~=-P02b%cY08w$#E)cZe)*PJ(Y0D>r^+B5%j&)t?}#kWN0zAr zS^3TjZZf}XGds6u;A)xGS>@1GqM~}g0|$?jdV>s;I*ll%hi^ z++3BQx0<@hHjJPeJw2iT4Z%X|bL;{*g1t^<=Ztu#j;GNC(BKbCh2@8=Ci{WW;j0Cs z7H^f8D!q&ua?5*GT3TgcjsE~^{A~NoMdVc!$MT~|bxW*C*E8;agoU+#yUK;LD9BtY zTlxIXf?6~cSlpG@F1K($nWqZ9iod&uf9~1l+!oaBf&ODQh3rcdjT15(nw$C8iB~uF zN3Lw>+Yf|{Wn;@$8=LsyqiKc*r5r6h%y2*_3&RnuQ%~izmAG^eYj&p`K#x-+Pyu6R z)PfextMFg6q2sUXTl|}dD*Uzoa@|Hax}EjKgW1N>Wj5y*>n$bsvo(ThwMja+Lp>GD z$lm!8pR}GIxX*Nn?|>cS1Le{XdW14HzTP<17kguTU7t9R2yTwyh_1kVpt~l!1ak{v z+<0V&_0*CT4+%Wd2YmjX*J>VJkN4Ot9`bVWuC-)+sW4F+KSv)--{U6{b|Fn#@Lb?|dp$=gk}X^jGG>;_A?cSdD`)a`LXltamW zKzfu`oPB*hO)`WHx#)^elad7y(a3$arwy8Up>{qf)K&tE6i*y8tiArMH`RYjT5Xxq zEw)0kz!Lr#DE~+@c!P`!BS}Zj`_5a~;}URk`Wv_~a6hG8NJ0av!!)bi3 zIf^f@ZkZ+grxV>098$e;dGzP+=v^eR@D{ti*+=NmzH~zjp^h(B-F>|Khpe8NFxRX$ zY?D(NH{8186cV)--Ix1#%cnA!<+ey-E>NM6q>a3G<>3$-$XjY#VenI^6)JZ{=c8Rv z0Oi3}zGVx_$Is9ao~9&f9sbPm!7llBzva~h>GSvpd|iz?VlNl1M8P859d)V3P^JC@ ziCB@dcV|H{^GTZ0;bG8<$c)a&&^sz`qW@?dW37x!Pv6b9!K&v6q4uCV1sKQYh5@@- zWyy!k-)e>~YA~8(Uy?siOKu*d;7d>hb#~C|^4Hxj>=NC;_K|51)Plb&zw%n9Eey@H zYh2*+5K0o*r|yY`h3Mh1%-u|D5W}=_r2dujnSyl8baW_le5Tj;+e-#C7TsPCJCa%Y z3zMI8cp_|lV+DJYbn9!O;+pr*g6&KyC^k?_e?e={f}*^N;K8jj>IVV%lFZ*;u7E%z zU;_PXD{ta!C>@o**>-fibaZ_MBGf^uWnwR>;UO#>YB7KQgDK~BxBkRnw0rG0d}d#= z8F(udIxC=c)3r$^Vvc%SGGNmjN2tD`p&=b-*nu?RgU0x0Y$WuK-@Z> zEe}$KjE3R@`7>-7vCv{+Ohv(OM#!gS>b52pv;d%f;9rdUL5pueCfTOW~ zT8;V~e?9U%^V$0xtPl{*q9Fy7Qvk6#KBRm~_Pz5~~BV|!GL-j3-vsabKE8%9zRaPQK5fibMh z@nFjmh8p{unqbHVh-+9_@I$SPl_w$p8TZs%`7%KF9P)pzuuHnV4j>1m;CAkbLdmJWrhL6X|u?mk)_GZs5CkdzdF4RsFD4-nW=E~HB+dH_}Z zj+MIO@xw?>=RYxyJb?p13`tkc_R)&<%% zg+W##q7VGuhZMfX<&R`vjvR+q2)$vJl9FnLa9R};IRbx%`CE2qX$3Si1J(dOcDs{f zsRqEX$l)PWj4K&+5^m55N_dVQ8*oL$h=qj^5|!^QxXzDF0Md*4&b3N+OYvAF%x0f5 z?isbMkGfvjY?<0d6Fp2HzmkHCtP;Vl5b($0`I)I{EFmF*bV2vx<2znTyQ7JnG9D$0 zwDq0MdM`Y&JxI>Brx^%FuNmx$Kg?J$k5CVRkVf9QBQpMsKYxSNYCPid zXz#s>=sBklS2Ar;)+hRiqK+@BBJ(4s`4YSaDznN0mE{XmQ1?PtLyzP2_>7^D_?>AN z(@{ap#Y%0;0wMho##c(ih?3~NgB!M=R7ec9gO|=17_#AE5_?_S(Z20 zr`A(67x`;-dN!q}r?&wDo5G;g&$Oad-T%QB%k@_cRD%Vn<00}B3g#LwtUaBG%LsI# zWkw){->pGkftf%kV?_Uj#8S`@V=N@!;WiO_nsmp24qVNsBLFeVyOY>4OuwfHOv%Drx19es zj&a1~j4LdGV7Y5Om6l&I<)`Zf3ZElQPDzKduI}Zo$7?9bk(4h81~WX`R=3s2Xc2re zjAxx6K|-JFOjyxJbR4KUX2za}hb^iNs^Gz3yIMM3DRCZGylG`cMdaWT0{5?{G;QHh z1HD(&`E4IL(xh##CH_u9QAqc^Z1A8RfgWk;=~Ebp3E)h%2Q~BqpOC=-OQqxEeR9LM zub6A6Jo7HzqZ>cNN14{G(rAl;IJc^b3KKYYSdqk$2c7=<$Qo$Kxz zp%`IUiaf*(Q5&P}hG-ygYJbdcYI=OHx%qNqQT?}eULb2e15KI>>JGPyTU)unTNq3z zYP6cJsp%5VH4Ui;gY0E%AUC?T`bCYAXTin~92+drsmIPL~iEG}ZLkq>b!M{^bq8lc{|=oCMCfNJFrRWIVy>$yKv}WD<7dzzX((ms7U>Hlq^8b8%e0G0 z?ZL9vdRy>kH4 zW@*$Sq7}Nw`uh4PHkhQ_uoUybs%>E8+eY3>GCu;~pdXV3+6V57SLr5<7X-g!zQU8H zA9G!WCuE)XQsp^w`2#I>85`fSVJ12aO zt}q3d0O#Dz#%clv>`lIhJV7~dN>QNOHAN4%q||`%hA`Fv*-qp%qmu#nK^l>J`;b@p zS$;Qsl8S}Ey0-<$&l}i`ku-DlPK#}3R+z%M<(zT8-apP&z3aob(&{g642(+>0YpZN9t72lqP#BN3LjqZC zz44c39<$DNi{?I}rglc|+Z!zQr87@;eT}=Bc=N!G#GCZx-BN&|QE&#Bp<_T&X-wQI zQ=CCWTfIs6$u4W4nspvZD1pTK!6ml@K9N2oxcE^xPAYqXvN0K`9xBH>5twhWIcX* z<8VcgWE1PMW#?21SXey(Fw)an(a=E3HHyo?wyp%Z zTM8z^xiCq;1oC5}q@fqNju}sw-tVDL;qD1X?dtk;9OS3mZ`)Aoo59^8>d7u(BOQtfRf4?(b9qIv@&ya9o^rQO5sSIFvfOF>4UfDV{GKE0` z4xB$i31EK|2Bg&pJtRAEd33In;ziI*aWLrlBY}zP27dV5aXu6Yi1AXi>!5cqxDz({ z#xwAdQySl|0Q|G2yJJ!Xi3l0SNfa)WAe=ecpkFRXl@WiskESS!Q#-~uDKOJ%Bl_ig zua^J$Ps^4aG1zD_2G`c~v&G&t$yRL}=hE??d9~@+pn@Q9on!;hSvLG%cczfOK7lY{HL$Sl{tv8&-1_ovL9+z>i9_&Ln;8DgvpQ6U4ZvH z@LmapaV{oI}CaE+^Zv5{cKKYEK>l%}HynhcERmmp5Jzz(uiG@RhtW-n* z(!c&VkstetXZ>M8JcvOgw8P#1SX|4_j%SSgK^2BUxYY4a3HS43&Tt-hlB#G9 zIU5J9RrdAo<_st*&mkYyeba)yY}|H;oaW=>W1Iv;hghIlD8LdEwF93@=YWUVv-9Pa z#eX2lHO4sRse23w#Coac2-*YgQlvMz>?|_Vrul+K*50*i+V%1)fi>#upaCaN2bJA2 zB42cJeLw=&)lFxeQ9cR|04u@)tyN#T8CIzr@D#H#bHq*2cz}ORm@V-47_4F$1 zbai!YpAdE?=6Hdw$TovW(L^q6`^4Rovbtj@Yyk5i^&*sGh!nMT9|8y6@GxEXA*n7T@1 zCOsiLNo-|S+x@{gLSJcpq)7BTspRW6U0{43gw?H3oH{Hju0B>q4Dy?$-e$zO>H z3FArABw_|c4q6mO4mwyywl}$$=IK2NasCCQ1qMhC*k1X_k+n4N0vXtcUKhoAtL9#U zr|Azf2Sj!V)jC7!>0>}CDFjK0>q%_sb~rW&1SIJQOy?^G+^CNQk{5verto|EeZAG= z+b3EBQa@jIW1Cz{CuBp`C{vLoQ4tOIWDPK9J~OV(B37FA25@PDqi*ELrw4+>Hr+P< zQDocapjHj{*Mp0)4*W<4w(6xIAR(j2$Vo?NAM7KvZt6~;zYj@`iX9| zgiu_Vz#k77f;8e6g&qM<+CV-Ul700l7C2Ew3d$)80HH~Y(faM@cz`&jX#lJ`vzkRF z9wW8`tgJ$D$;or*taL&!)cNw$F{#lw8hh{FR0iJN3?l)Zl;dvfE8@OUD$zWDOFYevrTi5QKSNw2lg?_`GVz&x<}sLSO|_!6s8D+eG_N;4xoT-?mAxlDVpAXJh^GT`Xi)Bb z8pP(=;l@9CQ?|3R4tRqmZ|VyU4#s=oJeaXYm=WO0@b7V<#f4p*O(6L(ZWf@wt7Bq-}d`)A^7?wziLnLd@w$ zXBxP^_*!FMZPTYi(vr(NzCImzavKHUL&w0t087&4iO-y}LvOk-b1+6p5G+OuRShs< z(sFuy;-+hu8^ft?;m$kD#HBn(f1Hk(G;EA<*sw-FC)AzN#Jl@YD%z<13wo8hXH9lv zu%OWQ?5FP&^gN$Te9i-bJSvAAfrWNJEW6u*1D`9^axiOsaF&>WGEc(wskC5$0gmBhP2iAAT@|sWYZOIx%q|014 zMS+7d6BoClu*7Nes_*dpw&U^H<%ua%6FZ)9&NXq?2si@(JzSb+<$bgHp)%>p6}HH6ffz(d9OA8~x66b9bLXV9WScJWZJ)uw&it-#Gn^ zvJM*K2Y7unA#*xx{K_4Vm~$o>I)?7?O@8NO3Gt9S#NI>a5GbnBN#W$Ef|YxdMxcv- z3XMcfBXyDx80}ZQi=L6<-`(8dHfO1mncV-1NEJXW7@ZL$8~$>ujM@N-PzQ>gI;7_P z?vz^zbI6?oW75~zFdWCbH3GQ6$h7NhJP-W!V8mwGXBy@8qqv+Yx75;bpZIcCW-l;= zU|MqoRJRY?RH*$dMk|>xp}oV}sUD%+1cI1Xd4!Wk639V;+X$3)CFIfskI-}&uzVJU zY~bx;hx$-$9hBUmE& zU$7=g;P(`8o^D37qwIa=LtM~o5kxX?ZyhRXgL$hpAY5`I63+#P>r^^|3=p6~)q5h< zv1xLG!r79gFnJ??9B9%`p&JQvz&=&R3LUg<@!fNUNCHUBCz)_yd3@>|iq5U|=^}^6 z@X-Nud8BAR&Trw#8PGSlD)F7NXW$J=Mk5A6l$@;%c3DJQ1n@4dzUpI8({7IOeO!|RAGmJJR&0q=1UQBo=&%qvtna;D=>eUC@iq7I4^A$< z=9DcJACz9f)K4capMYGONEGs;MMg$0{cwcRC2`Ebe)#GrHzpa;(t8s0=;S+4-5%9n zi%=Mu5j!!10bb4=4>^zh-x_iyG5?sJCF_LYl+Ixzm2 zRUO_C#>1PhCs^UFCa(~Z{p!}_)}q5|u#j7lPHd(r1tcG-C!fMyWj^o#l^NqFKjE>s zXq5McE{bfHbez)KH`bG1wfCxv%JVX`Cpak+Sna{=RnypoCWh;78y`#IP@bG7_MALZ zsedP)p4gVw#hnwEUe#w;fo8D*Rut$he~b-9ZH^S@PWuP>c_=(P)P8d7)G4SGn@V^R z87WEk`sEEaHx{VYN$5#U7CW8qPN%$fzW z1vSPMOQd}y--EBwxH||Rta>A6>W_%jSwg4sF$&RAp2vPo7B(t#m~5xtt@6j@3vEUj zun&p>b%G+%BCBTdYt@UP_CQ7_%`gMBgPEDY6~#JPLFtj8WQ?WEtPzZasK z5J1Lfs{B4p_9f&jgjSOssT%&-z4*6CcKPe_N9|45UHZE^9vsY`@`VDdDM*Ll3_3}i z(l5vfO6Oj%%eFEQ!x9DQ6LDW;yCbQ&-|@UWW!$5EIZxFvFh zQTnopD>jQ`!0m^#&P@Kom{tL|X3P&f{eGmQBj*RSJgo7%TTZ|{K`bRYO%VvMu0{Su zR0cT4R+w)gzkp5RLuMK{0I!fx0AL`wCMfa+qSlz}ll^A3*!P^mi+adxVORM6daKOj zBok}et*`Q&#$x>Dw5i@(WzI}q5z`(S??}QEC~z92CnUta;IVLD+K76kPAAJaajVSV zOK92!^peix#Tu0(r-Vt&MM%5QqmTm1{Oh~tWWbsQAnVP}zqfRGkInc&fhgzG8JLU- zSfrEvbaw7M1*tHxJH+#os3O30bSk;Mexa>KwvTMF$jXVAd0`Kb&<$^bDFF)5FSv$n zfH3{`SVHdi1CFWFq&KBOjm{IIn}Mp$V{#>KdM;IVMTk38!5(i&!yh|p03 zW}`{GCZvh_haD&e%RV)NLZUNis3AdH{|MY?#oM>6@C4;F1>)#G9&FG@nGOGzKd(uQ z6BQB+{sW*VbnM*(gRKK5bYMM+Kos1iL7)2&@&wrg9j}ZcJDmKUNgu)(%(om${Mj-% z+krLnZ{MT^o)R~r0@qz_S^xs*Sai6yUClI1AbyWvEQp^>!XKWWTT(c&N$Ip`((jxN zR$B{RmtVBfH<0CISAX0AT_=$#V@7_K+>#-`3#r zm-CSa2v36uhL7ysqo`%i{sXZNhkGviW9P%?jcVR!HgRA4tS;{VFa2H9-HaGFYIitU znXATjPF~OuhI_WD8BR}yJU|EyE8T36DtpFcFg7_CY?$~GoNAW_3okC?X59~XlIjid znhXlvg}A@Q0+LBVjZ;tdcg0&y{sNmJu;>fu)NnCA|2zS7bY$%F$XItDXwaF&2a`H# z0v+uxK;UM~?YPMg<)ddfRfPZsir3r+Mjot(_S!Spo*7AXi@rVN51KKF%{Gmpi>#U+ zfZ|kH;XL_xD=)WGc@CxG1OnTE#Fr@yi1R_D$9YGA45c2*J~O9epr*R|7MePYng1^; z3ZXUWoFIoJOXHM_K5Dqh+DvLhL_;%DfncJm+a@a%uk)~!_<^U8AHn}o2-5NW=Iu*A**nYm{X0+(^#cN$L6A#$HdS+iMZJR{bqRv@S(Y4|K<3IQ@EGIH0DsDZV zEJ&Oc0#ERF#vaM0lVx)rm4*CS3%q4iaJ}@vlEZ|%AJ2LBZ%D^43Tl{G0`Wqa<&I-b z@X;{g2)m9u4K5U>ht_0!_d}l=v-7i$%T0}KYJ2?p(iv{WeP|aZpbehFLhZQ}?zREM zIc)q2qN`_a+L=Uk4m_P`T&MK9bwUHVMVseF-(1LB*nQN6!MJgOe-e&nUIpjYCJzq} zW96kU?4zWzm{ckSyng?=O8_PJf{q`c58YS+mS#tYs$N?f{nP#007TSltKSp_Jw<)vx1!4oE zenrKl%wx1#f3wIE!q0FpsYqE#>>Ia`M6@1X#HrH&@Y-j=+6gq$4r)|^{Rpa&#ct|^@%G4y6u~VG2G6f;psyE_o>uow zRp(UAi+DFx)woB6+8c3Zgb(%WF+r5*m~5CJi*x@zW7yP2@)?SN^+`K9cu=@IQ- zqN;ql#=4Zae`fFk%nS%d2|%Vi5p-SWU<=IE@4+cH{y&f5&Lq`Fh@=$>EQne$@yk;W zOE%4dSj)#da!m$7o9Lek(TCxnqAe7}2E^6zp)om7$>K^%I{*U=u)btS=VCw0M8=HD zBzYiYyYkN5k6~lhI6uCM2WCeV(jD7{JEk=TLLQl%24xl$DnLpdLc9^H9N+8(IYkG( zDe6U4Q<>)l9+f6Rol|Gb2SDZsYaM#k$c;@zQ-s+!W!DbnrBC4L#eH5vgAN&j83NEx z%M|=%1Jrb>+6LkFB`0#xs-qlR?d*BEBAZvmXM?1m_qdn~Hre3?`RHPS z4-6L0G=4-{Z6mwBnd_IfGGuAckWWQfdo%FRnFrPsV{&QAM) zQ+|$HPA?BK;l<{bjA|6ZOS;-1&+p3zT!C}~F%B+TU{O$XLqd@E;J!r%yd~(GZ#)g* zx<^a;{+6R6pWQcwS}owLI9XKqnsFGCkZyZ@Jw3}KO5H2gX34yVoAqqiO3#T zSwRLv&gg_k^9tOr)83I&4#0Yl-H5~u9&3$_5`G7T@OZJMWK!C|m|wkiN|EcQ&8i^) zfY}59EFF~(9p2>Q|LOGpi{VCiIE2?t%@^OKytJxZU>UFY>5DTn*WQws;e0fFeyPqy z=Yxou zm)VcDXY4Gy9dL9c9|bWm8-8;Bc5>0-pMv#3Y4~4vCPNvWCe54Tf1L=VVhp` zJ zJ;QUEn3cxxNS4jN10Am-t+iH%-IJ@RDC;$h+G=JdJX-+=m{5Tw)f%at(9v<0g8rhT zW8uhHMRD579~Cc(8m7&JQBm1c`k`s11*=e~WR+=RnN{N|jhzR+bS1Les|PHMymd0e zZHK9JP^@Y2c^(xVtE3aWca2xPNPD?p32wWwosapgG;g3& zk~O=O`O$%8&4DLBWe941c4a<3+N;vHZLf2NxRT5pM`44x0Q5*hUsVEQe_{^8$JC3h zFPtwJqr?8ppGwaQ=i`&~5Ca?Euup1k3laZXrb)0Sq} z3p_kbyPICR9+R7T?O3b$y9J+1uCY;FT@kUm$M>T((?%2JDc8$qDbHEzUvZVMY}m$l ziy!CrLvc>U^&geLB%e4RW?XqTf%nGf%{gKJ$WLLM5qg;XUOebPGHwLo|IE-_I*H)O zE4QkV#)gKuZsmc2>|lshJvKmwK^!0Lxo`SL4Lc$u685rR5uB?X-%`U4N3LP#%U^{T zBbgRCwF`9ZNIv%dLhQjWuA1L@RK_|ph5YBP(dk~n#yrK8J8(ne$%5BW#xpaQkvH;SS|-l*{VeBq7Gd77>s>L|W*r+SZn5LBojoA3c}~h}I_(cg`rL_L5#F)5 zMgPQ5W*U5MrvUZ0(qRDFINa5{cF>fwI8Jcv-!cA(h!5rt2SJ4%ow&ftFzjUOqXyqjB|T(F?QqYm%;NK#M29$^A`=d zJgVs~IUQ=@_>LoAcltq}8Ra#itb7K3ZS#Dwtsk1t4n?N&l~r=d9Uf!8@w*e8UGukqU!scT(@(+Q^zy%xtr<>~m^;j@ZoO@~1e{8*{^ztNZQs`%{mK zi1~l%_nDFH{kgd~tWbN8?#o*Ri`UMJ>^;)BDA$08yR!Bh@65&pPlCK71pyC}gv4Xe z4Z=Mn%n7gR`rUQ8UT|6B@~QRL#Nxs$o^4tG+$DW@Kfkea@#E9aA`e{RQPGf=Rvunz z&(z<#gUKkDMZ4 zv0JpVlDjOFjcIA|<{Ys~OOELtP0LrRFZwuZ`Z9H&15ACL8|Ms#a+&=8eTGx0 zR8ThfLi@SeA;;jw2IkLxd|0b%zGXzN%u_4Dw&~`Kxqbe&W#^YZSTe)c&A_j@ic@JU z(e?DH`r}hspA{X&V&fCp`=cpxtIWz(4YOzZj}DG#ksVxWx9g+&kKT%VNybuP*9 zJY2@|xY&aGt4e*dkt<#+*xG4xN_RaMceqMo`iO88OL&C!2d&Xsd3iOcWXE!Xh0@IKZA z?#i^>dY&w;l6>)tPYSd;YAPJ(7I#i(P&WtliDmc}xy&ebIdD z+TgVV=|W!jKlU$NZoJ*=U3gf~^0(?GpLS`cr8=Y@4f?rohO!7(guGwOibv$LyyjV&`Pf#0{Sk{#xESond%GyTCWn)q#VXE8 zg-d9cN6R^11-?AneIKy*SiNcVz9*6p6Qn-k`PPzehUWST$6)(j?Ye&JlA8nNXoEPX z-0^MVb6h_bJK8*&Q!bUtdmwMVL;3ZsulMrJpC%EP&5l;*H8NbMruB=3z0_OM?V3^2Yc){1|4EpooBUR}>tQ9S4=&eV zR`rQw%}*zZ==ldy82ZNn1)@wm$W$9=3aMm ze?Zjf?u6~T9PCtV66D+0KOG9S<5?di&@C#(THP`~w6uBcx+tjt?#oR9;imVF-pKac z6Vj10XjZSAav{TfrN++38X1CW`DgRF^=`#;TucelKGoQDwq?<#gYjbVXVo7^CAjRr z|7vGumA}HGux+VRhL0#*|8?hXwZ~Q6o2Tjx`u%@wKjqz9esjv!!RZ>cJe7*CVxE6> zlpoVcim}`zd+VVb@0Deq`d^$=LfY74c=$Y&q*!gLnKMs>SFEjCCb!BU`_=23P3I2h z+P$foax`a&$ck_YHLo>#Yrc!CTps-587dLdI%Jl9v|p<%W46OV@pzjsA1{Vm6H@Nw%T(j%~7pl*Y@iD!Dv!39WMX(CAY!4hQd?j z_BCv#oYOhi2Y!m2Q~$@^Q6^ef21AO^L3!TLC}HGi$RS^yger{JqtA zfNR>Ss3YN4D_75JbiBWG--E$~OWu*aqhp7LI$jL&^!?cP*3`NyVE$0h*zLsp;QEWZ zRVtc)t+?58^~ru^du4V_b*{qw>o{07f;ViAR#5)IXIvKk^_Rk5TeiZzn-;t1uq7;_j~U-`|SNWmN+4Et_*nh?DC7S zh4!I<2$WE832;K(8gvj+`9h>aymQE!x%IZK=Dx2jJX&psLD-NEKdPol7QgIRR{ddh z+H;uMh4F>BPg!%Ie-`|Q(hk-L>XT82^GTo^dhZ}XL@g|`oJZ%O&#b-W?v?}t|6#Q5 z_n>4YM8i%T48e$SIJ4btB7&z%vs5yR!Jpl}QPgK_emck2naEsgxG3FZl+sgpNu!}B zuKd8xNKUsq(RU;pH~l|wttY4lA}8msq!_`wI?-$H7}s@Cxl zQ7a#M#J@i|ZwFIeT(;I|2<@^YsAK5QtJg;ZdMj3Qa@_}xvY0h5Pu)8XnYESblh%YH z;hf35g=8e19~r59WLK5t9|c&k$+qmGtKxX{ORr`>&I>y}D$FT0Dt%UX+G8hh+OCvRB4(3`qjJv|rO) z2$I6|*f~?j4^Nm>sl111`S;ivfmVW)`}WdV!cES13T$x$5eng^g%Be}D3oVH7~FiX z*}f81)HjG%#e(+|GrQ%8)r{3NQzP`2y*)*jV*>%jqTi%7ndU)I4Y=tltL4p{AN}Ui zELC1Q>5F+|zX<>K`Oe1k8MC?d-_{;(oXT@W4gBTW4hdB|5>+<7A>TC{45M2`9V4TA zp-$ORjYnDjSXQU*e4b>FX4bbWWowc-F?Wz`?Me)DPviwZ`R9*2{!$_Pg-o3SB5&OR zp)fFu1GhQQC&Wg@hPC%YY4J(?O9oodL?NAH%X|Uc{)4yF3doM3>AJIZ{BPIV(Z$N@7dsk7GrEniFqbQ~pvGClMAJq2b%s-69Tcx0axa z&hZUjA&px~KnYzGlYhyz&8i)WD3Lh~1lMyvP8fI^n$~@;YBl5|N8q@obbgA5pB8_8h0Sg_290GM zQp&8os7AJQo7p8t_)Y;oOJRIug)22Sd&XgLiu2Wa)aV- zFtLfSO8YHOL18pd6JAi~%ti0U{4&@5A369VsU*T^!v9I)chU zC)WtQ$N_<~Oiy=tk-iFyiIHJQJ#?>Lkj!(NCTkykDQ?WA(zji^Z3HpC3oC7r1DOGVuhoBF1iZOfx>)flIxGdhBUjgM zdA<%6mZAzbkYe%7N2Pg_OkgzX3SVgw>kAym*>UN}Nbq~s!rVujLDNmsT;=#%5KN9} zTQ*`zD}UxCXPh9!-kl`y(JTCo#>8&Mh+`)WVU(%ikNcz<%Zabwz|_{{@q?c zuIR#MRZ$Jkk@jYMECmx&Vn(7^;Tj+%{+sp1X>hjw*-^VpjzV&M{08%>xw}v(=F0-C z)aPHF4n#Jz8PT-grZ`Fw*7z}=?AEu4I{V-BLMI5zYQqbx4J9GKd+H<@I%Dn{b`+pp zxs~_oUf(@w+|6*+gq3n-4d3BOfOvw!DRRQ-Lf$uW+#*^#)UX|mEC%Qr_QM09_y6vT zcZ8+MpHYUlz9s^MOy8?p%R`0rDPJiQlPzd~r3b7DL)0Hq_n-6IYEw17UI3#2l|LeO zT6h3UnD<_nyaZ94#8KwXU53jz`Bx+9A_Ak0prIG#=Rr;|89hU8{XY zJynb`+7OG4TaurUwqQ_dktJ2{f{slwT4`I@my`NG#T+`oOF_dK)ie5yszup>V8Zoi zBSID)%ZfnO6VkXZ?5+d~Q48MHiGY9cUhs;6CVyLiduA@US3X$-TFTZ5Xm8L!R%>I$ zSu(jPo#(o)&fFJc&+!yH>}6%4-ZUS=ca(&xWrN8@7>fqd$E`YP z_WoCRZ~ZuHkIHOU7Fv8N4cKDfRf^)YemfcxXq!xbfS>SqLWXG#S@1a63(3l7b$=g@}-3U+1J*@V|PS2v$#wc=PR{a^9ZAvsI$ z*G$({0JWrlU9vD^&bK9im4WK3*R@&%SNn;*n)Aqwanihi{G@=^;6*>x>iNr&71G7X z=x>=cmb1^)_1~)D2KK*mYdBk_L}XaZ(-epi*`;;7c1IQmB?(UVU8~FwR?qQ?tQ)M% zp}A#SRuTTIO70X{Z+fk^0vM9dyaMg67qPT4RMh6oxPiB1Vh`xqN5e?&a(;w_nW=5y-{d%b0Cve=2rxP+B;^n zdO`!wXC6){>vev1-2Y_CMM_%LV;*7k2=~*F zRQxw!6Wb=#&90V5nV7ap#_6hVpCDmj{tqDwi_dk#p-{I=ig+$_`@mWloQX1;rdS_U zrfr+PUizC>9FhhK&b?^=ET?P9^#rm02B@;81pN@7lRhu#8T@lWIa z$l74qv3nM{a21?;{Bl}=fV);FQN5fXEmAow3>56Qw9`|Awd^s|bAoj+wuKl9(y`O3 zJ!KxAI$GByjI>zRIU~9nQ-aAyU6+E?Mo+LoaWns(?wr6HhHz&{bi>76FmpIV=ufnepxDWbhAe#%remE9-+_4hN^8j-Gu_LvlI5auygH+6K zZT2!;C+I3!v{A6gEPWe;&>bZ#3!`;h~4(Kdl^$~cTuWTfb$H}EuD82+0I zcxe^xMXH(=*gGp`l6N6IG>NLr91{pU(tswUsg7}L=SZ?Sy_VmE`Sbm%{Rq%0(Wyk! zJW4^!n|GXcjx*C3^X||=ybCm9AG=tR9~!A4bJxFq#Kpuo+geO(5NyY%;J(^U@yfaEX7~csfNWysj)dqG1hKmopSpI= zO|3n@xP94(ZMd)|4=c4?oG%b;kZ+e};8u-d^`@=9oP~gI!>(KzpDtsB)Bas4_%Q|x zHf57dEM{ja*-6;L%eR)m^8sab4=UO}dq;2T!~a?PASFn7W$QMaE$KOZ{PA%|u#>n) zu*|n0jWSjE<~_v-JTVv{YZh3SXQ@0|+UOjion`s@o6_&^WE9P&?}}TA33y|L6WdXs z*(%NqOm0E33m3Q*|9Y~>jqK-#s1vi<<FlSwePh+%%D(qHmFj;^NCfz(kMRiHpMg4K3brttURtEdL=`A*0Ab4u z@fD!<#kF!|M2|VI{ECuko=fg$_jDcvyi~f>rgSd&r(a&cO6HT190>%w#?NL#bh!Uj zfNu3ctTZ??<}CfUxRpE=H52LYb>1qdDN`FI4|W;^X0jgPS6w}t0p~_3;yp4Me0&g$}{(m{^l zVZyJ8ntxi<{J$7vy7BDK47R!bRY9#zQHCk+MAr&U2 zQ|WC6fpYdC3Z9g5gZL#`(gG#B7)#1`t4;GOy+wAmPTAgQE{SiV3}38AyHYi(ue9fr zTqiCqo#mabxTvJFcJ_Jn;bJA67lA?({WaB(jp#gQUF2SMbxJ-AE`5OGemh6HKm&u* z(i81akK%YLd2Wj7=ybLPs8WS2GILy4T(oZ_a%X8|OuE*4+0lexk@;kqI1i(4jlZ0) zJH@bmt466163JinJxhJ5wJPYD4=tE>_&cE-vU-p<8e8S;iH-g(nXb&ke$pcr?qC{U ze%|8sh9OD6nSaf^GwgV$M|&dk>Vw!j9Up7wTWx1WQ(1X~sj!)ViOfNg&M76a36YC0 zX!irUnPs(eVhh)_-P>CwysIm+;O-6RneJ^VH7gwr#wcY#k9bUABi~vMWR7{mexCSq zRYU}743iin?ekaLb5lTrWC40VKRaw4$YC*&{^I$&QB={247&yHYxrr;RKjZJa809Fa;#Z$e!_S!m0*LGkXeVN)@0KefEyP&N9Jv>MaCxH(2>_6_(R64 z@8Yv#`_WELmLE^ynh$E_i_d@{=`g!mQFM5c6eo9eR=2YZ>~kjlnJ5~jgA1(IcxoZq z--n4rjAU}`Sbk4~8pI8@^?j1LLi`NE?22e9_bJAE7!g@FHarOOeupYjE$go4zz#Y~K3SVDyQVh*m3Vl42Mumhv2?OnCEF6qrfN3-qVexzPgI7sL?R_S}F=QiT>qF)>gl)2nPn9N_ISPgUmQDmcD%iAn-hijQDf(U>Cm zM5yJbuTr8P5J)Xy{w8)4O5x$rWQMjyuCdJ zNRSiHH+ly?X(?J{Z%_#I>hJ_Jx)|8hK5| z>XTg)Mkn2;rDz=RnL<|wHGCS&X0t$MdORNF)P?AfMYJEcIXR7(j;8&10n|IpXDzU7 z+#|O6^o})Q_B0L^KH7qE|DoP%v`~q94Z%P1kUFNk@25QHH48n-=qD{qp^dPs`> zrWGGdJ1m%`IhpuZa+v8iTtbiy0Z{BNkDeZMt)>YhU&DfQOZqJChX;f52)1&&B%iz7 z%jwA6+j?^Wi5VVLi9jApJUlvd8*%0{gfc*X2<{Jf3+>;A?d-1wYUCYP&Lum5ZgaH{ zU!0SSAq$<+y{+?doDN>Sk=&m+b6))Lv3t~o>h~%(1G#&k{}8%2eQrSL-rWUo?tk{h z^@XvAOG#BZ_+rZyNA{5;1N2`p71|2^^@V!06ui!2H0+e{e+s+4VN2uQ@xD24sd(W( zVW34#lXCGZpCj~3v6$vjf@RqG|}yDdRY^vIx-ZbM@VhgqqkR3!PrPY#3_Y&dhd*F+40 z@~f~SO(i#(w{xY-F3mi=idqmV^v~Y_%&{w3Do-AzWatkpKb*-*5%A88?#Dx_BHq2L zaO$+qvO5A0)au5TEk2Pjdm@}_7DzGcS57!DfQ2V1O_*Y0iymRSW)R_EK}NuP!!-D}{ZsLOA3 z$oHL|)q$q^x-a7}&_KsHVHymd_2-bL9Nj z1wm=bwB*h8A@hl-vFWL{dCbSt{tizF5;eJiP&@~<^`&z3<(Cf&5~WVyUoW=@|J`JA zl{^kBMMZUQ8lilSYME7mWI2?gcq1Wc(l1b@=<``2>Z@L!pjUbPm7~mvVJBl^z3hh~ zv;J(+YBdi6Z*8&iWi#$F6p!FVSP*ZSyJjb`eqKr4moGMIQtM58{;>x7BBT2pQz40# zk6~L{+fp|=xmUDm5zJZ9)&f+L_N1p@y}Hwp@84^QaicBCsil+)H?{Iok}WN*M&_*@ z;+=HYTS$_Gfx;c@O7ir=JNWQkQ$OabMT+P?_9z|fu>Cz}JuamW9Do&gR_;2DU2soa z7{1L~0@?FSbe-2T=zytyUiZcWZxP74+|w$2`qauR%Mx4Xvu@8vj^jc06}>u&cgOVd z$aXQvESk^6Uc4o?1^t~#Qud9=wP;BRO|O}e`5di&5_?vCX0udkQD`N?LNiB@7Bqb^ z3GQhq(eu8Iodd50j-&;ErU=Z>V>f9RBUP-afr(e@Jk^koMN@|$UG%FxFv0kK{51Rd z#@L=i`*g`G!PGT0O(4_1ytq!e97VMhw*z}J>;ntG>Y2HD4=euI7eqlgCy8sa%@)VW z$$o{(^U3{w@Lb^MYUC~$Bs-^u1>snEq`YNlEXu27a9T~PV3nPmLbL>B7yG^ez%Q$% zJIRNtiD74LLB!z%A^oR{?%TwZkMBhv-#X6zsR2gbi;;gyre^7!>`=3P?5cNK=cd;Q z{&vxb$ve5AB5RVr`J#qSC>*>Ha~vTD6V%htRH}eT)PUh&9h~YhCDgTZAplI*96;qP zC13wGDVz4~lJNIH%x}P#*Y%N{CzVBIw;{Y<7mlqY8TnuRTu$W~5B&M-Ozq67Q(u<{ z8{F)$8jIv5(M&a7M@8@`W;U%V2@#%XC+D&{{nvI{w7~Wbp}x}^i&b&}2;W}n;luGx zG*{1_XSKwv<=yYoTC#M77|+%}R!t9;H5D|S@2??IJeJ6*OsN7E?e=J9aNtWdc}#)eo3}hY-Zgc-7~gpC&Z_+xp~ENwwP+qxL}MAbdt(Q*?Pb+eTNRI zESI5nsYZmo)I;3>x}2xe=W-?c49>#w1{t`W|fZBdQp@Wj6iC z>=Ev^UFX#=+beb7Q(M@k5xtZ3$3B$@*yTi!+wB(EeYePul!*n1?mQQ$yPi_kn;JX)}3YH?YQ(hRViOe+p zS|4r0art0!@FTy=Ml|gP7DGm}9K7kcMz)v{+5?-D4}+20{)$V14Vf|d zSJuG#a8@T{<$Jz9C0+GLYkhOrkZ6w1{ktyiMlfiK!k^0A*%St5 zM_$VNAHO3_)E8QiPCDx^Z(I3Xy$VGQ7^75Lu@c3>-af8Fr3=A$5nRkNs|LGrsAU{B zP~yG-PumXYD!kz^R^{Qb2i&ax2Awr3$E5`&=t0=^H=|=H_rcY_nR2~8o_n_hQ&(p% zZGG1?b>Y7C_E}nEP4AxL9j!|jpB|^n6WIi;)#$ds&&(A6Fe=QKrnc~XF&K*Qr#ryl zJCKBQnfE77@>@)NO>(9&L8F1}(ik{b+F-6{_?D4f8VAhDemq%rWH z7*+VipjC36`D|BH_vCzPhmd!EP7Asd&3j5gl%@ZURS%HOeU;U(o%af$_1xp5SN+@d z0VrWbv4R@0$E7KT!4fkU`t{n5)rcmVo*fFg3CMmd{Jkq+$L^7FY(co=acTK?n19p#L^M@IK*TAO0WpV6f?Nz zGW$Wq@}+&#CpZVxsUM~R$pXgaI!D?$95!ui>0jyZV;`be1f8};_qcq$foi%(y6 z$}2M!s-p%VmB{^oNFd~ zK=*pvf{$i{=+Kxif9sS@=rS8&ip~f4Cw{RX5winALzKB@nF}c|G^k4@@BrzXFIuf< z>#)#XFWI_!p+dnfbX(n@UmIjsIfs=I7;9ji!miouIW?Ra2Ruc8c1PImIwg(QeTVZ! zT%VaK_#wDM{sh}q0IC&yZ$MBA1{9&dZ?mQxFC}OtZ~NjgOi}$ibbK|9TWo1(NNx>^ zA&FDouVZgz@qFGO*)^!@yqi`I30NGacPDZrT%^R6nOAuQ=AJWOxLbJ{FY2)tRn7fO z-T`|*d{_g=?vjrH-k`c&#w}7UN$*9Kx!=a%*Qugu?T;RLUp@i8X#*N@so4}mq=#9@ zBvFrEp2x-v=~oK(_JV*wOaYePNf$Bl$1xgQ(QLWo#7G;c<#=t10Vm)$2A7GZvY6w|zjGP%hXK(Od~k&4yK+dFdbmp(e!8*&o!J1c>I+D6R0cnc-mFX zs@8mLxefKHeddv*GPU@sm;qb9_@*pX$*E3$cz5UM`3AX^GXd=oaWR}MOVpX*{gD`i zU|UyfB{qd>@s&I};M2oz=#kTBzDO^H@DyQ=ez&nL7OWW{KAPXp#1EaJhNpRp+BV@N zU2ofob!NMtTJu`sS?SCP?;)G?hRdCu`A$tXUwNHGO?pg9U`u?$;_X08WA?4fNsq9i zKDV~oJNckV&u87+iwTU)>5`4}P3Koe0N<@FQSrHqbFdotle)Zy$8NFeJwxuz1|k<- z3MS{TGKAvmih^p#Q=#0wl?a%Qm&`6=XO5G$X^#f$?AwQZa0s>-)|2-VZ@qzzs0>Wj zflK_c=Zco!U#UG@4PNtb%62(t82^*%hwyE~{qM?#Y3jPrvLw2XotD?2&jf+NU5xbJ z6PYiDW=UwKUq=jm%T%J-_|QroE+wJKNJNo-`D??s_{xbX{#Lyv6o_N&?kzrJM;uno z!OjK^nQ74W@v$mN3iVxor{h6}jl?=HL*@J9NxcBx9{EUZ=-q@ zE^V?RJ{xy$&*)D;n;io4s~xz!=kH(bL(hsWzB8oj;%1$m=da9;CZ+|w=e8>%3h4Up zW#@duN2R$)m}4K;mNaZ(#VaI^cJH}4AnK%%cLDOZqBd~Qn|Op4-nt@;R?MrSZ>M7| z<*no3Bs65IS6)8zSWhIBHa{RNC#7%C<5pq(#xN@y*k_7LmWtl##C)r_MV2*z}P6$LiRy)-9)FlyYO}l(4XC$s1$4T`Th8uPWs^v zqdzY}t88^affFBFazrb_`=7hj#=eoQp5YJ|wY>^r7zoPuv(R5;&alv+Pk8P_uRh~p zWDwPSJ9#)JPuQ~cb0c{{w?}d8;XM4$Sr@IH@)?n(t#QT!qery$x6I7Nm%SEU-c+iU z=bPmbkckVe^GtUi&mGX8OoqT{BQXU#Bz$r!JZraxAwbG2DU)nIP0VK|ZVCw|Xy6?R zbs2I9y0Hx>5NosqFJaZ`cWkD4FDf#Lj!9n<*}Tfb@8>UC@|g@u?jD+&f&!|vNm{8% z_D@fDWGi@OjlV1%a5pkgtF3gaITK(e7CbhD+`TAzcu6|sZ9EspPgm3!u1DX-DBn!M z&PC<4xv9FcA@Vq9ML1py-7Y1=Sax|c(cYSj153?rX(A>uj3(()t>K+V_my zhDBb3L=V@DM`g^O%yMC8-hSj$m`k*4r)Cs2>=l(UAWT&Nj}aTzfP)@asoX(faY)R$ z(reLp1A4U$Ec{o$5HwO|gDCK=vze2vlt(K}ephOWW;qDM(Z*$6Ea*Jl>5g*xxkRdZORYTt0c|VU zw0GK{K`6HXEY~t|H4k?`5Oe88^N>~fKm!ZprgOi#L7XDp>Ox!kmHK`++wOVGP-Sw@ zL?(|Gj@ypzF#Wn=QpQ+Iu7}~`teA2acRd^^OOR|shE7Xo=d4sV+DCut ztZ_*M5*1WpWdFrs_En&?yvT2t&eN{cF1JdlMKG6$qfC+l567+XRA{HE7|N%^^2t#} z&0gzKepv~;(C#qQdr%Ou_>!PZM9r>g6Ksp4#6aQ1WJuAD_Kb8!W9s+v`WWd592K8) z)8k8Y!5WR&G9t;5P*P$l=5^iy1+k0UJHT%PxGUDymZFqk^RFr~YoP(CK&`8hA7oLN ztw@CzfSn+CG3>DF%xtcml>ut8 z?h~Z;e~J-II_rT;#=o{^ROliXpHu9!1_jEO^w9-cfj=uDLYv6``!E01{?^(rPH$i~ z*IDl7CIm_69RZHHeefom*uCQ#miQkqbc=};_HwbXDzlTX_t!Exj0i=F<4P1lGER|>DYe(O(T#@1>uqJxb z2nGGkhjLq%v;fw@tB}Yt{>7Upf3}lB3vaXJIGpfE63m?!!2dNfXKy&O(ori};okeg zO*2VXt+=xv%gVHhlBy9?P;d@jf}TXo*lY_0*-s(a6C7puM**BTU=C?9dzR9_JZjTo z5YXLkym`Y!Y0^SGc`*oI+QJR)Cw3^Nt{hGJ@xu(q0oSGKb0D!kg<9_l7n)BGK2wh- zJjgqU9V`w8m>2@nTMYd`~VM8*g22H-AC-&ETE>#>lX9^3LhA4OJkr%K-A~qVbuakaiP0~G!M6R0r!2QXh(6_LRxQIF8 zNe#)!4`QwW(j=&5{K*ZGP#XEbx^pDwX5@*IS$R6f8_QI-i(V!yCSO@^JTwq4hu((}9#R?0Tt)*Bt*SsnTA~4L^cWfn zw`=xmRgAgb5+**~URTaRy_3PBqYEj*>H|0(A9qSm8x!K<9xOxRi6|fp zZl1`xM;wGG|7Qn~rZqR+N#rDdN7dXGY9k!4crC?9B+Z~lzs#lN@a-v&M@JPmE*xas z1uVvtlV_iyl#uLc_j$a9n}$>cJD&4?t^!}U4Qb)LAt~A1X+UYs(P0a4QkC5T`^I3 zH&Uf)Ukpv2@Th0#E7|f5^?$!okfB#_^YGG$>cwf_!gh5>C;LMARPqr^aF<5l3J{fY<927Tp!8_7PymQ9)a?hzJObTNwa|zqaDPy`STf z8!wz5HUaYA;_|ZNgN5Ng=)~{ao}uTyo}Z7E?tTQiy)@&3?o@$GQ(k2}V4{45f0o|6 z(MJ&ozhqY=8D`srKB^V*sQ(^K&hHx6!?MTDxT2 z;}iYGV1oQbuWbDd+VJh)wHeSv?l&eI^VDa*uN7YepBm=a`uIx4e`~!-` zROCZA8~|#7b}O=U_YY>zm(chk#Y}6rq*_xY<7fA0Ro}dPbv*`p;1Bd)o|5`kx2JzD z79k7-`uCGIJ6v>4P8I*o>RxUnF)zJfgf^61?VPbw{r#zVcgkFbK~h-wv(xTHVxI3{ z>1x;;xhpq?n_;}0AnO55LIU{X@Wo{rr6D(T=LuO1N%56#=t*p=v%QS^UO4n^i95XK z4N9K}m%CilKeVzRTsS&wH4HVB*`d>#C82NQc(P{?$l;Cw{L~WQkALyRsH3Sygno=r z`rfa<`-xRO=s)Dz*@U($6Y%4*r^iMauTP{X`^Oz?XfuOE3}L@#t2Y|qnmoCxZNH*K z6pwHC9+Qofl{IsSLDPN0o7X=SzPmo_Wf~g%CKb|uD-9zU1C}{7m_H`V`}RpYe)zCU zf3l|Z9iT#v0X&VS*1+{Zfq|QIyKg1P9X*eMf1otm$a8PNaU~k@n}mRIZ9ovf^3MGO zzGYjr`ZGD0nI8#9-{VIi`*%5^I~6r9ci-W209_L2VT5GFf8A!7dg7Px6Lxgibw>3% zJ_=&aRtx2ecN7r46ZP=N_5Xzkd4fv6+_^vG8rXSwz#`!1*K~LdV)}lPzx^9ng<^k9 z%gs5kQ~UQfmFmvDf5mY*ip4(5<$J>7pL++~90NN^7ZFsSG2i6icY30|^JWyZ2>ISr zy%GM)@J}2wLjW6HQ1E17o6Y#hcv}MJGyOlm_bbPTMsTsqP*EnQ+5=r~Qrd>&8krSn zg$%=id*D~nvrk*xzbPttSX)J~foM<*h=S}g^>JQRe`Tk7z42C3;7Zf8-C}y2E<95GRd{QT&@{(d~p+ine% zy>E>2_vu<);psL~yO}z<^x(_(uVlB#bbvn3IWTVl%u-PWpWh^Q0eX$(->r<$RPF#u zguc>^(Uj04m)LmGRbNlq@$mrX>#IBsr^{VuUfvBD#qmh?SgVv;i@9k8%qKk@=LJ^? zEWVGo%SnH?2*mE6sMt}$IBO_`;KV&&EzS3u6S}pN6no>kqg>!FG$K+32ns%w8 zqW%px9b_Z%uB9Qa;nE&6>X0Cuk)*mf6*SH?p>sYKGTDqQ^SgcLywS*bSUN5B2xkRM z@VNxi%yfl3sZe>XtmR>&;)MW)!FDZo-=h>~Qh6Sw2O0 z-8kIj>=r9^yMivzWB@#o0w4=3r<%PKEKWd=tDv#}Zdx_b*rS5Qc_6kbDZZN7p|HPg zvf;2Xuav_Fl;S{u9BoGgtrUo3e*wI`RbXp>P}b^A_q~w`gT|WKJ>OgQq42P+oi;1M zqT`di?-PL74vf*Vl3J{q1HiI2VUwv(zGa!JM9?25E&UGLwEPXB3soK*K3 z2sA&yY@3n&h90Dwz1-jb?10gm!h6V;=l3DXV;xVYSRa9I!Pghf-`1RD&HCn3+d8b} z!GBq-IeaaHH%#+)!Wt>3@5M{-F(l^+{y5ns$_Bf9~!P zcYjRpoqKD)uaFZ9j3#S?j4ZNKd4Fk+?BRWdM@J;xYLr<;z|y3@LV)tlz4X_ppUnRL zlipiGOiUm_Zi8gu{v1n-&sASY8lxbd$fM)dmV6oZkB&id-3>m;UN; z1H#eanO$+UN-L1Tz^oy{KvNnPvVZtiCFVYNATNL1-l8|+m(6Mim#&PJpcZZ>nkj4GP&ber#`awDB)5F>`Ow>4+!s^n?Lu-qoS%K+j zK$6HwL_u*_Sw4oU*+O{xqS&V{$%KLgWx{|Tgdhr~r;&D-@RE{$;jNUL!84rvdi)=6 zAj%Hqew3qYEtCWgB3j*q(jxWi_Dz9B8X(dESd#zEZeT|L86{MVrhY>ZOd_!{Ed*>< zMEhZ^I%G{${2a+wd#I>p{gjV$e46(OtTE~agi`B?i&Xi|fNi!+6PV3O@uz&Y1_rC@ z=9``NT0+wk6er!GC^XNU3i{3`rVWyn_^+<^BmW=3h66+aRd`4=ti$xOXhyK7pfol0rC97&xVno*_i;_cTP_^s;@(RT$;(GKHuX1HA_Mfhh?9d zgaGGXm4r#^z#C)FLlXQx*~;k?o&`th$BV3e+W-8o&L;gV9D+AVsL);pBG_|@RnH!* zvr*i@*|}rq+tW^oy_{D~8IVx}zFShWy#Q^L5mlT)duP9c5Xya`*f~1O$^S?&L(qSW z(tppo;7Nc}6;|--uqpi6k9Q8uK-*XAjae)%H}x@4VhH+GG2vsUxvb)wq)6Q>`{R(i zzF=%5?NWh_G^mmBzV`>{I099AM7w1J46S0B4tr7&R#o+<-f5!p91BfgBe`OwF%Sx$ zM#E3JV&{gV#MsNkDD&J>9JE*eQiyxRIcKN%qB+^&ze4kI8F+cD7=CL% zoy&_7b8_MVY*G_C-dF_E++^g*j-1c{qe#f8*qR$OKnQy>$SvRXO{SVGsJ4xR*rf`;%@w3;KCD6{2Mj1V zHr^c(j2sgE%b!$j;j?nEa&KU1=K_b~fVT#-_o#-1j5Q%)EXmGlUs*3>^gUH5Moe7x z3z;jg$+;eO?uCpm5%LW8Hk~q1?Cb3^^*>*LrS?GT6L7UCG#2ns6GMm50CmQGqpS0{ zPV#^F#rm5)`X5e!OR&&KGn z9(@3Ozmt==9daEko}_vB{}E#lDvnw7X~&3-?M7oVkyxekG92CZN2L zD1Wb7!NHfK8sKsmL^$=_aHVg4tI16E=|99~@w*v-E~3{sS4k9{?|Zu4{KfUu%3z?i zF}Z(%QcZ?q#8G7<^H$*l?01_*%*gVK5Ewep#sPO1&O_ok7C&PBOV?I2P7=mG)jmt> za0{>@*Fd&Po_hllBU~-yyO8A?LijLx($_?VpE3=Av8e^90)n99j_vkGb*dIkN7D)C zVRk{ikkU1ur2)-ictaFcHv_*{cguFr{S$wg!^)t+-52=by;MJ;s)e#`7J4Wqz-I|x zLwZ1`>?&Vi8>!k>prf|Fz_7hPLgLFxQgwl;LLw7dI@fOJbE^?R@Xm#_L?3OvFBLGPURu4;2_tF+o?3TmTaa7Nm)8$=d;J$-27U@4Rj|{%{Unt;s z&&|l^{h-xm9BAkGr%a|2;Lyv-I(D5Y08W1f;Ip-OD&A?oZNUe8ymoe0_}uq+Z}^m; zDQ6gj-uiF6)t3?D^NrB76X`H6naD?PIRQoVsS{)^Tk1z>?t4nH?4U#@%-!uM&*${r z!~LAf9V6mSn-;~t_w>VD!=b1igZ^L$UvL~MAi52qxAudQEq4Ou{Z9o0NT~^nOBa-! z{|Z9qlO`DO*Zh0mLbiwd%P@;*vBEf@7oIQJhT`?)tEkb5Pnx9^m)Q4DX;2_L+AfeM zLO?L@30d?P2I|N#3%{oiBCJ3wCZHAqKth>hrnWUCAXxpCzx-^Nyt4vG4zYn2f5|Hu6&( zQ~ujsN!(6!yxH9w>%XS{>kWhiKvl_bfL+;tJ*3V9mZ|SHNdUHUvrXS8<;F1pW2p}a zO7Y(SvLk@mN^N}8@k`y@om(Og5y+XOhk1JED6;q})o^*8oCpBUNft<=xdgd^W*)jt zOmG;=J4l{zv585={Ha6q8e0Y-(8xnBY{_~X#FC*&&Icn`*Utm)UM;QP(zdF1qIK>J z=)eetSprmtkuY=1SS_&%1R7feoB;8}6h}pOKN@4l&c3S9@p#k`%H=|!8H~}bZ2yuxW_35T8HE1KY63KqLpN+uN_O-@JQMc0J8@X zXs6mny;jaacep)muWKwAaSHPr2|ZVo^Gce?JANx85h^e4bZ53<(T z>U-)XJh(h4^dr-(w`m#&cK{PJleAmfM1@cZ0sT@|)|ZGbLJKLvK?Q>u4FnU`jXxA> z3kl%qJU;DY-=Hm|P}g5ssHi&I@cMhHl1)La%s7#2`}K+n^Lxn8P!cA@Uq~#u+?a4C zS^OQ#BtlPo6hu^Ons!EpVF9Vp$P-2il4Nj1YwstmHZW%b#xo z=wpy#IWFsbG)u*-I=fmBe#!ogeLCZEwsSpf0eaSYek8P%xU^kTl~wV`0sgHeuG#ol zqvw{cng}kn$a$w8>5=`+k>ZkX$G= zJoZ;up1QpOm$?T=2l7VFZ?jvxGx_OLLy~HTaYpDZ&d)RiMc}&^qBC<8(!eP3(*wf$ z*edKN7wBC4VhJ|}J}=PS=pUTs#9fPwTZ$5~GYLyt+t-`g$5N3fQ6>&iVu8L(H1voR zKMYN@-fLlv9p-Vj1Rg5-h>^6yoi?5sBBjGmMXmJ07Ka*!m zWOQt_Y0n%NdQ^O5Npp$?YpD1~UklVzz-1!al%gF zR#-LLWu=K=7d{S=3M00Cu%n#v+cFM;%iPP#a^Lgvh2{Gj8YNsmo9aDk>g8^s?%1mf zlr*FlIwT4F#JI%F z=~2{hCqqH}F0F-2j<8h~;Wim8GO$*&XZ%q~RCmWE~nzobJEnHVXNfRuH>( zEZs{BDqR?BW)2*1X_xMqEyw+D|5BuHh3+!IP`Cv}d~r+w7Zq8i?JBnn=;6bOfrmU< z;8iFRkDT}D>NvhYTmDE@@wy$8ySYW#q314=(%6|2oEsZ^moPOqtEIF8)?cA;{1cF8@a$Rxx_JCnP0L1PHtsd}|&YAKB3&v2zwDyjt_@yD3>^UoaQ809_U ztMLS`-9#E+x<0a!U8e4)ZeT%KL{>uSl_|*y3xeVp1-Vdl72^7t;gGAO*kptZpvQkJ za``q-qN&^qLKYD_TqkTfWQ^Hzv{u-|h0zy+8o48Mu(sndHbwFWoj?y6jNAMBPF|co zV(e79vupWwlI9L!vOP?N&+IIIAW72;>nFMkH#T3QcCGRdEbtrTz_m*C?Tz)x(1EW$IHHKOWLIL}>(-iYvZA3sIrq zMn!e58`3r{sTN{j@4)TfiCoMO^# z;`ME%Ze9*ILfHOW?fcKa6X{6gDU|@h6sB5ZOLArw)fdX++N~=|jvh`QBg^FV50J3$ z)gXXUe><={Omg(Hb^~eUFc(a)x`{A*m9+fg?h(6|37Ac75E7FkPW9WI{7}ZSrI8VF zrXhtQ^Oc~wU_QJ>61wGSD@v}TwI^R798+^^avfzWLd1j!M^Mthq~==3Kw|`x;LG~% zb(n~T(8)#J9qUf*nk9%&mD|`{d;i^yq{Cxoqx>D-+KU?fu3_B7EkZm%TS(L@i2 zC!%&5Cu4{n?>{$HyI(V*z!5!CHd#L)^lZ6>+XskWs!FhyPxcSi?wZr|vly72l6gdh z*Kb$-Os8V#5P!zF4|i*4#sIuqB=d%OJjM{C+zjGcOr&M9$n1&gxQSE!H!sC@ zoN$y6bVJPV_Jr1X|J~NtEIITAjn(M8UO*E4JEc+nJ)tc9-`FypoW8?^DoYY3wpy;< znu$HOl4b!z0~`)H^L9vv_0dhcmSC6GDS|I{Zc7$5f|k~i{5xGT2L+NGv5VEoSfCFf zwx8L^+hD$xp1c7E3vsK84twx-6%g%fhZB<7fu78w+NL~;FH_|lZz{eKQga=^oEXVL zu+IK3Lh9zhz)G0vO?!GX*|s4Qzs<*&^Sjr$`i#3nVyL;0$2vlR31V~RspUZEBU*IA znF?_bR)zO7Bc6WS+8A<^q-ia(5nhojr8cdn3}|WThdA|YFvmej(^|M@R?R_ytT$!| z#oVz^4_B%{-+}%M)FUFg12L&L(c`neiI(Umg_1NDe5xwrStOvD3I@LK=LTe4<=X^P2I<#2%iOQg6kQ|wvYo!Ax z2>19=V`o$CyQX`!#}qy$QF+it?R#oifkggg=h6ZxW-t4G89lg8?vZl)TIo+Ks%NO0 zYbcTW8Z3Y-(we5}~3lH;$z0};8 zjISXULl55$4sQ#K_%*-H@)p$_O8O<%V#Jg=u||A|FZ%3`zH{*mXBy5cnQ&h2YM@xp z`^L(72e+_8^mefuIGb>`TbcRvm0K#;MOhM`jfH(c-;cGHLt3UB{V%i2y~>V8Y>C4AQ0*GJQV-71f1;f1%GI~OD9P}gqNB|k!D#JbEX_5-|fFgZfIuAm&i z1|(`~7<}ZUO`_Jo^o!(nGVLVGfe4m=Zwir$_^Q!k94|qR!LXUpn2yEK#Y)Za@hx>g z=gbzr9xtn8-UZAP_QSqc616`_JMZhDQnx8>Y;^E@d!MNfzr4#aaH9z98VRD96PpzRcD zE}xsa^L&_Dq|H| z21J2LR`|x-BJBjl8q}_1DjO0q`-;}v)jnK!1M{OR#_0rfYf9xU+byZc%-o@(CWP*( z=lxIU2o|y21Sfr1NJDmDD((n)?iSZeB!Ok>Q%8LbGiED9yv7ZiSXI?Hbkmy zu}#ZC)5&C|s8h^TxP-X6v(qz+C>BU_SF<|-bM|=C#L35!BJ}3&f;g4PyB*9UlfM8o6ph~Gy5qNa2 z!HNP!nA=L6*ZB1I-H${lJr-;2So9E?q*(@rGs}#jEqcsJ;oue^~3FCp8>J2A6Ea z3?J(?bmV?r&Y~Y}Pc{{JSAOZ=+;i-~t4746DNC9wlnD!>`RFR0f4EINvu^)Fy=2nn z*|7`r937CB{)Lxz6+UVnd2~$umaiK$(C1Oh?Q3NP_-g^N)} z6BzNIz9G&%Qi4zz2d20LqTYnk$Ay?Fr{Srut!a}4(+&fsQ=@Ey!`=S+D{lF+qS_c} zvIh6jL2M;ci0J0eLn ze@w58#A=3cqD&kc*heo%(&C|lODf4=i4tpIpkA8)%q`;weGBYBZLuHGv)O@FMlIA{ zma6kaPRfK^7ouKyTcc63#E?O5y|Tv>ly(f8o%%luWD|%ge(R%_t0@P`^nQPK#MSZ? zIxA-p`xkJw9}$Kl37UbUsAf0jgEX7T*VcCz~MatS;CS1j&HydhjQPLbi~M!yjc~At8vL}5h|-@&Rcu)lNS3hj zdc;No*4hEb9quU%Xc?uD>X5B=iDt{R!V<#VfAARS@k~XUV^{1a}e$<_J%T7 z4qU(2?k+T7IauAFMWatO*E9A8Co?P0pCVs){vkBakc5k)^Lp;Yv3If7jE3*vFCaC; zq?M@mxTI-jORa+J*IfOqp@fCr9fZZ-63t1-b#ApQiKRZ+V?){?^*{lQH8W>AtO(^ll0Ww%0VWU-X*gpr+?LZY4yIOz?sU(?j^c+ zmKONV=90nl){>}C9(C#zu|F4PD#y@tCM^MX+fh03j>k8(>+Fn50r?9rMke`R;40@K zxUS>gfwrvs2Q_7}26?0t8%HD?iDKIW(-+oBN?o@F_^G-rEVNs)yLCt>>kFTzOxKE3 zQK{{|2C@K26yqiyyp12P|BgfP-3Kxh8EKPHY#>N36KXIEH`DG>tTctvLq{8I$dmc# zEV{B`AR^w+3%Cwqt|i20B6uyUHz?XtT{4Gi0f8D#C#khU95=M{$WFDlbd0dFKB{ zuSDJ6a0oyTOd8em1BYWQJWoz#v_Z7h&Yqw*70dhd5Qe;hP|uB zkUqr-nQV|R6GjZ%(gLlJTo{*$+^1F25Bt35JoFLs@LClDQ|ljbW7}HdjmY)2_G^s2 zx$Px^FL|Ux2-@){aWhDUgY;CZFdJqtXK<|?f{NMnABtB3i-fSC|Kc~ipl0k(EB0TI zRYDfGQpJS_akIT+lD&tMFN7`W!UC{>K-XgPfi!{Jm;F-*C*~xWQLj!%baBq9jgM z@r(68gy(U2^*m~Wc0`1LI*e^I`6T`o6kQm|ZLvP0r%f4_hn84R>di~JVEMlTDW>GY z51)AcC6!H6ESe-d+1xQA>!atN*M(5lFO=9^s=7>01FFh7la_zo-kHVMr3E=5M<(@;F{5-2sc?ZV7M*nWdlA8{x=)Y-9 z9ionME}x>{w^cMk)oRM`yj9VbI8_zeJt`yQ)mnv(A0ZF3ydK>+nx7B?8#mQXxE$C6 ziRXGw06m5*6OjxhS;OCPY!%54HeGd=6H=C&Q6HrxKkR&_$R-LAT)-6yH8DESPIcHp zvm$|Ie&nRdIH-p@o9Lpz_(b=Eti5*1pbM>zxCJ~Ijl#Aqrm2S|7VBXbv2Np2hhV3I(2#u-g#Xx)XIqxE^Rg@!o&Mp8h2jeEPh zYNF%c|DmS5t?1`M)eh--_W{)e1>YJMEm~Jj^R9P%lUUsvj7ZmeO=EBBW74KoB^yAc z*PxK95$%^RO#2a?VU4bKIuf=$=0yAD{ro55W&IZen;?PYzPUk;rekse#m21m!Nj-7 zj2=Cr!*H6bH;v|O;F6m)wKLnAXKHPvS04Cs0!0%?PxK1TblbsnDto=HJ9Su~Vt_(< zeA$csQn)&9Xbndw=0q{W80>2#$(&a8!i-b!cf3D19n$aD+yL)s2T~eHK`y6)sinOJ$6<*ehqOKO2J@KK|tf z5=8=Cb^zNmzp8ls#@Si1msS?|)Li0Xb@tXN#sS4$+_WzFL{MkRgTv&~Zs$y`s3*6i z-G)^p;&i`xPP**{w$o6FBDJf+ZnZ03v0ZmTH$p7?^aY#!2-8aa!9;a4CBNEK7)??K z!`^Uk*LF+7cXnuO?PXw?M89Fv=@6wJL7%);Jmd#rkijQ-r|w6(<5S$;clZHH(e-&H z91~j%DUl=|^@i;sZcR&OHIZ=akXQy;+*1+@0=Tghqt)c+2Bne3GxSmAu!Yp3@`55& zpQc-&4WWWX!vk^m&#`O~UClqd_N2sMA$W0+C}=l`r{+=?|Hg>o@{c%rSZKj+9WF-) zLr+)%nv>^Ld0@1K6(~#N7P^-b#C1wMXpy_|-Ph1Nrg(TCs9o3wu``j4kG!1(N*RtF z?*xN;0SmiS<7^!3>d0ScS{6Hql? zm(DrZn^?OXc{Ir2dzstu$B>sij0r30FmgTF%fUP|#0|aro&Cq720SWmOhLvt^*hHN z#=-MCZ~qU)b8ydju8)n6zKBd&@nA`6Zh{vYQ7tCCB!O0C%s>!@Hs?}5cEtP%%<2qs zXd}3my3ihKed{PfKC^bZWc^=O)C!Yd{-TQ}W)y1=%iwm1PS-}xIlrx+;R%_s!D9t0 z76#_tqt3{#S6Noz?u|#ainC1>VdC^l&8u+GXc1P((^s~A=g|TF3>%LSGv1&dbWOf;2_RF7`U77kqAC zD>t+SfX#eyoUZ^6d0uiI@fEDyUVHs7tj6NiViYQCO%xX15Lf znGfEn3z)HIS9<)DPY-6=75B004lG^Y*!Tq!cX-K=Q5jf5R#%c_VfX+8Qt++)U3Dj- zVXhTs(xYlc&_gr|V*l$@dSa}BAdeDaz~BWTGkgiogqJaU7M}D9oV39*H_}}moV4Yx zXoa=CV*@&LjY|%Wk$1h1(9Gd0;-;+mPwRb}ZFZ;vY*B|7B?`?yKaQkV=

    kudl#t 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%0AO94XD^^HH0%D*#-l`0%p@oA6Iyv%l z8RQV?ctB;m3NSe8wMYIRn0mOc8`E z9j<*>s{Cca2|Cf@0$PHy2iFM(4C*Y%vNk|2eojqkfm%%?`B@>t4vldWo=84~xw&3( z5Axz(pfIPuU2NWDo&;_Sw9tZQyA`@pA$N;OOX~p3ITbGeEdzGXp)YXSB?S1BKj6e! zc>CvhMFkINJTht9mV(t$hjo_Eqq4OfogwW#v}#CUiy*7pE%hRG$=Fa$KEqe|a98?A zSY;C1!*tB-p%>?mr6Y)51#^d_W~NSq+&v7C7#BPRL3q~T&MVN%pkxiBcML#lxeMkf zsO4|R<}<(?%{+DQ-HFZo5f2XNG**9JotU0R?it801(jA0g+XlIZzqF*WbwHW_&Z31 z*<@DcaDME?i1AZ-xT>j&@6=o95w*ap7f;OKY)<_K^< zc)POK8nz(E328FBn(wH>`kjN4pE4afk(=$_d?;IZz(5Fl0p272^I86$mE!sih@~T8 zjWAho_sM$>H)}DoJd4Ub(6$Yys)GCIJ9QZa6ZS*hUaf>DiA!#5=)d%r|J#?D{tteh5$e}7%aWI1u#*Wsy4nU>1t+b;{vYUj(Fp(m literal 0 HcmV?d00001 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.svg b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.svg new file mode 100644 index 00000000..63d7b186 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/results/potential_energy_equipartition.svg @@ -0,0 +1,3524 @@ + + + + + + + + 2026-10-10T00:32:37.722277 + image/svg+xml + + + Matplotlib v3.11.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/run_md_results.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/run_md_results.json new file mode 100644 index 00000000..dc5d4159 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/run_md_results.json @@ -0,0 +1,34 @@ +[ + { + "run": "relax", + "status": "success", + "converged": true, + "steps": 5, + "energy_eV": -16.36168670654297 + }, + { + "run": "stage1_equilibration", + "status": "stopped", + "stop_reason": "Equilibration reached: std(T)=49.78 < 50.0" + }, + { + "run": "stage1b_equilibration_30K", + "status": "stopped", + "stop_reason": "Equilibration reached: std(T)=26.77 < 30.0" + }, + { + "run": "stage2_production", + "status": "success", + "stop_reason": null + }, + { + "run": "T100_stage1_equilibration", + "status": "stopped", + "stop_reason": "Equilibration reached: std(T)=8.89 < 10.0" + }, + { + "run": "T100_stage2_production", + "status": "success", + "stop_reason": null + } +] diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/Cu256_300.0K_nvt.log b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/Cu256_300.0K_nvt.log new file mode 100644 index 00000000..eac275ad --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/Cu256_300.0K_nvt.log @@ -0,0 +1,65 @@ +Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K] +0.0000 -1037.061 -1047.148 10.088 304.9 +0.0200 -1037.055 -1044.162 7.107 214.8 +0.0400 -1037.025 -1039.396 2.371 71.6 +0.0600 -1036.987 -1039.402 2.415 73.0 +0.0800 -1036.864 -1041.941 5.078 153.4 +0.1000 -1036.671 -1042.500 5.828 176.1 +0.1200 -1036.512 -1041.756 5.244 158.5 +0.1400 -1036.378 -1042.189 5.811 175.6 +0.1600 -1036.231 -1042.738 6.507 196.6 +0.1800 -1036.082 -1041.673 5.591 169.0 +0.2000 -1035.946 -1040.533 4.587 138.6 +0.2200 -1035.794 -1041.172 5.377 162.5 +0.2400 -1035.596 -1042.005 6.409 193.7 +0.2600 -1035.389 -1041.311 5.922 179.0 +0.2800 -1035.204 -1040.548 5.344 161.5 +0.3000 -1035.009 -1041.371 6.363 192.3 +0.3200 -1034.772 -1042.401 7.628 230.5 +0.3400 -1034.534 -1041.693 7.159 216.3 +0.3600 -1034.333 -1039.946 5.613 169.6 +0.3800 -1034.152 -1039.599 5.447 164.6 +0.4000 -1033.938 -1040.552 6.614 199.9 +0.4200 -1033.695 -1040.637 6.942 209.8 +0.4400 -1033.461 -1040.111 6.649 200.9 +0.4600 -1033.228 -1040.383 7.155 216.2 +0.4800 -1032.976 -1040.881 7.905 238.9 +0.5000 -1032.722 -1040.495 7.773 234.9 +0.5200 -1032.486 -1039.662 7.176 216.9 +0.5400 -1032.258 -1039.409 7.151 216.1 +0.5600 -1032.021 -1039.224 7.203 217.7 +0.5800 -1031.788 -1038.533 6.745 203.8 +0.6000 -1031.553 -1038.850 7.298 220.5 +0.6200 -1031.279 -1040.407 9.128 275.9 +0.6400 -1030.982 -1041.154 10.172 307.4 +0.6600 -1030.722 -1039.687 8.965 270.9 +0.6800 -1030.515 -1037.613 7.099 214.5 +0.7000 -1030.319 -1037.206 6.887 208.1 +0.7200 -1030.085 -1038.421 8.335 251.9 +0.7400 -1029.809 -1039.401 9.592 289.9 +0.7600 -1029.537 -1039.409 9.873 298.4 +0.7800 -1029.290 -1038.939 9.650 291.6 +0.8000 -1029.070 -1037.881 8.812 266.3 +0.8200 -1028.866 -1037.142 8.276 250.1 +0.8400 -1028.652 -1037.499 8.847 267.4 +0.8600 -1028.418 -1038.081 9.664 292.0 +0.8800 -1028.183 -1038.040 9.858 297.9 +0.9000 -1027.962 -1037.865 9.902 299.3 +0.9200 -1027.754 -1037.728 9.974 301.4 +0.9400 -1027.558 -1037.592 10.034 303.2 +0.9600 -1027.372 -1037.584 10.212 308.6 +0.9800 -1027.198 -1037.074 9.876 298.4 +1.0000 -1027.036 -1036.898 9.862 298.0 +1.0200 -1026.874 -1037.198 10.323 312.0 +1.0400 -1026.720 -1037.142 10.422 315.0 +1.0600 -1026.579 -1037.156 10.577 319.6 +1.0800 -1026.453 -1037.061 10.608 320.6 +1.1000 -1026.343 -1036.849 10.506 317.5 +1.1200 -1026.248 -1036.616 10.368 313.3 +1.1400 -1026.164 -1036.542 10.378 313.6 +1.1600 -1026.089 -1036.960 10.872 328.5 +1.1800 -1026.031 -1037.287 11.256 340.2 +1.2000 -1026.000 -1036.668 10.668 322.4 +1.2200 -1025.987 -1036.149 10.162 307.1 +1.2400 -1025.980 -1036.021 10.041 303.4 +1.2600 -1025.976 -1036.311 10.335 312.3 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/md_inputs.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/md_inputs.json new file mode 100644 index 00000000..ef24e347 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1_equilibration/md_inputs.json @@ -0,0 +1,18 @@ +{ + "model_name": "MACE-MP-small", + "prediction_head": null, + "temperature": 300.0, + "steps": 10000, + "timestep": 2.0, + "ensemble": "nvt", + "log_interval": 10, + "pressure": 0.0, + "pressure_mask": null, + "monitor": true, + "monitor_type": [ + "explosion", + "equilibration" + ], + "monitor_params": null, + "supercell_min_length": 14.0 +} diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/Cu256_300.0K_nvt.log b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/Cu256_300.0K_nvt.log new file mode 100644 index 00000000..e58e5e34 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/Cu256_300.0K_nvt.log @@ -0,0 +1,86 @@ +Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K] +0.0000 -1037.087 -1047.148 10.061 304.1 +0.0200 -1037.081 -1044.062 6.981 211.0 +0.0400 -1037.051 -1039.225 2.174 65.7 +0.0600 -1037.013 -1039.504 2.491 75.3 +0.0800 -1036.882 -1042.311 5.429 164.1 +0.1000 -1036.682 -1042.690 6.008 181.6 +0.1200 -1036.525 -1041.652 5.127 154.9 +0.1400 -1036.395 -1042.134 5.739 173.4 +0.1600 -1036.247 -1042.808 6.560 198.3 +0.1800 -1036.098 -1041.621 5.524 166.9 +0.2000 -1035.966 -1040.219 4.253 128.5 +0.2200 -1035.821 -1041.063 5.242 158.4 +0.2400 -1035.615 -1042.515 6.900 208.5 +0.2600 -1035.393 -1041.844 6.451 194.9 +0.2800 -1035.208 -1040.348 5.140 155.3 +0.3000 -1035.031 -1040.735 5.704 172.4 +0.3200 -1034.808 -1042.041 7.233 218.6 +0.3400 -1034.566 -1041.704 7.138 215.7 +0.3600 -1034.355 -1040.337 5.981 180.8 +0.3800 -1034.160 -1040.076 5.916 178.8 +0.4000 -1033.943 -1040.516 6.573 198.6 +0.4200 -1033.711 -1040.369 6.658 201.2 +0.4400 -1033.483 -1040.047 6.564 198.4 +0.4600 -1033.246 -1040.588 7.341 221.8 +0.4800 -1032.987 -1041.114 8.127 245.6 +0.5000 -1032.734 -1040.289 7.554 228.3 +0.5200 -1032.509 -1039.332 6.823 206.2 +0.5400 -1032.281 -1039.614 7.333 221.6 +0.5600 -1032.034 -1039.555 7.522 227.3 +0.5800 -1031.797 -1038.556 6.759 204.3 +0.6000 -1031.568 -1038.679 7.111 214.9 +0.6200 -1031.296 -1040.512 9.216 278.5 +0.6400 -1030.998 -1041.129 10.131 306.2 +0.6600 -1030.743 -1039.305 8.563 258.8 +0.6800 -1030.540 -1037.324 6.784 205.0 +0.7000 -1030.336 -1037.754 7.417 224.2 +0.7200 -1030.078 -1039.363 9.285 280.6 +0.7400 -1029.800 -1039.470 9.670 292.2 +0.7600 -1029.553 -1038.370 8.816 266.4 +0.7800 -1029.327 -1038.288 8.961 270.8 +0.8000 -1029.093 -1038.372 9.279 280.4 +0.8200 -1028.870 -1037.345 8.475 256.1 +0.8400 -1028.655 -1037.293 8.637 261.0 +0.8600 -1028.417 -1038.492 10.075 304.5 +0.8800 -1028.173 -1038.619 10.446 315.7 +0.9000 -1027.960 -1037.554 9.594 289.9 +0.9200 -1027.770 -1037.148 9.378 283.4 +0.9400 -1027.575 -1037.773 10.198 308.2 +0.9600 -1027.382 -1037.680 10.299 311.2 +0.9800 -1027.208 -1036.831 9.622 290.8 +1.0000 -1027.045 -1036.728 9.682 292.6 +1.0200 -1026.876 -1037.391 10.514 317.7 +1.0400 -1026.712 -1037.922 11.210 338.8 +1.0600 -1026.574 -1037.751 11.176 337.7 +1.0800 -1026.469 -1036.838 10.369 313.3 +1.1000 -1026.382 -1036.264 9.882 298.6 +1.1200 -1026.297 -1036.116 9.819 296.7 +1.1400 -1026.211 -1036.206 9.996 302.1 +1.1600 -1026.123 -1036.949 10.825 327.1 +1.1800 -1026.050 -1037.833 11.784 356.1 +1.2000 -1026.013 -1037.347 11.334 342.5 +1.2200 -1026.005 -1035.481 9.476 286.4 +1.2400 -1025.994 -1035.162 9.167 277.0 +1.2600 -1025.972 -1036.605 10.633 321.3 +1.2800 -1025.962 -1037.906 11.944 361.0 +1.3000 -1025.993 -1037.546 11.553 349.1 +1.3200 -1026.057 -1036.608 10.551 318.8 +1.3400 -1026.135 -1036.605 10.470 316.4 +1.3600 -1026.227 -1037.085 10.858 328.1 +1.3800 -1026.342 -1037.453 11.112 335.8 +1.4000 -1026.479 -1037.122 10.643 321.6 +1.4200 -1026.620 -1036.609 9.989 301.9 +1.4400 -1026.756 -1036.615 9.859 297.9 +1.4600 -1026.886 -1036.679 9.792 295.9 +1.4800 -1027.009 -1036.626 9.617 290.6 +1.5000 -1027.124 -1036.969 9.845 297.5 +1.5200 -1027.243 -1037.906 10.663 322.2 +1.5400 -1027.385 -1038.493 11.109 335.7 +1.5600 -1027.543 -1037.971 10.429 315.2 +1.5800 -1027.696 -1037.288 9.592 289.9 +1.6000 -1027.827 -1036.796 8.969 271.0 +1.6200 -1027.935 -1037.062 9.128 275.8 +1.6400 -1028.033 -1038.040 10.006 302.4 +1.6600 -1028.140 -1038.688 10.548 318.8 +1.6800 -1028.254 -1038.214 9.959 301.0 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/md_inputs.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/md_inputs.json new file mode 100644 index 00000000..b8e5449d --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage1b_equilibration_30K/md_inputs.json @@ -0,0 +1,20 @@ +{ + "model_name": "MACE-MP-small", + "prediction_head": null, + "temperature": 300.0, + "steps": 10000, + "timestep": 2.0, + "ensemble": "nvt", + "log_interval": 10, + "pressure": 0.0, + "pressure_mask": null, + "monitor": true, + "monitor_type": [ + "explosion", + "equilibration" + ], + "monitor_params": { + "temp_std_threshold": 30.0 + }, + "supercell_min_length": 14.0 +} diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/Cu256_300.0K_nvt.log b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/Cu256_300.0K_nvt.log new file mode 100644 index 00000000..54c71486 --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/Cu256_300.0K_nvt.log @@ -0,0 +1,1002 @@ +Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K] +0.0000 -1028.254 -1038.214 9.959 301.0 +0.0200 -1028.251 -1037.569 9.317 281.6 +0.0400 -1028.239 -1037.543 9.304 281.2 +0.0600 -1028.215 -1037.609 9.395 283.9 +0.0800 -1028.179 -1037.554 9.375 283.3 +0.1000 -1028.131 -1037.532 9.402 284.1 +0.1200 -1028.070 -1037.964 9.893 299.0 +0.1400 -1028.003 -1038.407 10.404 314.4 +0.1600 -1027.938 -1037.969 10.031 303.1 +0.1800 -1027.875 -1036.803 8.928 269.8 +0.2000 -1027.797 -1036.869 9.072 274.2 +0.2200 -1027.691 -1038.231 10.540 318.5 +0.2400 -1027.576 -1038.356 10.780 325.8 +0.2600 -1027.476 -1037.037 9.560 288.9 +0.2800 -1027.378 -1036.249 8.871 268.1 +0.3000 -1027.258 -1037.026 9.768 295.2 +0.3200 -1027.117 -1038.088 10.971 331.5 +0.3400 -1026.988 -1037.967 10.979 331.8 +0.3600 -1026.886 -1037.142 10.256 309.9 +0.3800 -1026.801 -1036.923 10.122 305.9 +0.4000 -1026.723 -1037.082 10.359 313.0 +0.4200 -1026.656 -1036.822 10.165 307.2 +0.4400 -1026.599 -1036.521 9.922 299.8 +0.4600 -1026.547 -1036.795 10.247 309.7 +0.4800 -1026.503 -1037.075 10.572 319.5 +0.5000 -1026.474 -1036.876 10.402 314.4 +0.5200 -1026.457 -1036.767 10.310 311.6 +0.5400 -1026.452 -1037.453 11.001 332.5 +0.5600 -1026.470 -1037.806 11.337 342.6 +0.5800 -1026.509 -1036.883 10.373 313.5 +0.6000 -1026.551 -1036.254 9.703 293.2 +0.6200 -1026.585 -1036.790 10.205 308.4 +0.6400 -1026.622 -1037.492 10.870 328.5 +0.6600 -1026.669 -1037.313 10.644 321.7 +0.6800 -1026.719 -1037.000 10.280 310.7 +0.7000 -1026.768 -1037.096 10.329 312.1 +0.7200 -1026.813 -1036.968 10.156 306.9 +0.7400 -1026.851 -1036.842 9.991 301.9 +0.7600 -1026.886 -1037.190 10.304 311.4 +0.7800 -1026.922 -1037.322 10.400 314.3 +0.8000 -1026.960 -1036.962 10.002 302.3 +0.8200 -1026.992 -1036.430 9.438 285.2 +0.8400 -1027.012 -1036.785 9.773 295.3 +0.8600 -1027.032 -1037.984 10.952 331.0 +0.8800 -1027.071 -1038.114 11.043 333.7 +0.9000 -1027.125 -1037.159 10.034 303.2 +0.9200 -1027.177 -1036.880 9.703 293.2 +0.9400 -1027.225 -1037.298 10.073 304.4 +0.9600 -1027.273 -1037.370 10.097 305.1 +0.9800 -1027.324 -1037.425 10.101 305.2 +1.0000 -1027.378 -1037.444 10.067 304.2 +1.0200 -1027.432 -1037.418 9.986 301.8 +1.0400 -1027.489 -1037.706 10.217 308.8 +1.0600 -1027.552 -1037.572 10.020 302.8 +1.0800 -1027.610 -1036.921 9.311 281.4 +1.1000 -1027.658 -1037.286 9.628 290.9 +1.1200 -1027.706 -1038.052 10.346 312.6 +1.1400 -1027.759 -1037.505 9.747 294.5 +1.1600 -1027.805 -1036.996 9.191 277.7 +1.1800 -1027.842 -1037.497 9.655 291.8 +1.2000 -1027.876 -1037.894 10.018 302.8 +1.2200 -1027.910 -1037.578 9.669 292.2 +1.2400 -1027.942 -1037.729 9.787 295.8 +1.2600 -1027.976 -1038.314 10.338 312.4 +1.2800 -1028.018 -1038.134 10.116 305.7 +1.3000 -1028.067 -1037.776 9.710 293.4 +1.3200 -1028.116 -1037.771 9.655 291.8 +1.3400 -1028.162 -1037.470 9.308 281.3 +1.3600 -1028.201 -1037.297 9.096 274.9 +1.3800 -1028.230 -1037.487 9.256 279.7 +1.4000 -1028.251 -1037.766 9.516 287.6 +1.4200 -1028.266 -1037.912 9.646 291.5 +1.4400 -1028.278 -1037.734 9.456 285.8 +1.4600 -1028.282 -1037.765 9.482 286.6 +1.4800 -1028.280 -1038.221 9.941 300.4 +1.5000 -1028.276 -1038.245 9.969 301.3 +1.5200 -1028.270 -1037.622 9.352 282.6 +1.5400 -1028.253 -1037.131 8.878 268.3 +1.5600 -1028.213 -1037.521 9.307 281.3 +1.5800 -1028.152 -1038.367 10.215 308.7 +1.6000 -1028.082 -1038.545 10.463 316.2 +1.6200 -1028.014 -1037.717 9.703 293.2 +1.6400 -1027.942 -1036.823 8.881 268.4 +1.6600 -1027.849 -1036.834 8.985 271.5 +1.6800 -1027.728 -1037.764 10.036 303.3 +1.7000 -1027.590 -1038.608 11.018 333.0 +1.7200 -1027.467 -1038.053 10.586 319.9 +1.7400 -1027.366 -1036.970 9.604 290.2 +1.7600 -1027.269 -1036.639 9.369 283.1 +1.7800 -1027.165 -1036.696 9.531 288.0 +1.8000 -1027.054 -1036.785 9.731 294.1 +1.8200 -1026.942 -1037.497 10.555 319.0 +1.8400 -1026.839 -1037.870 11.031 333.3 +1.8600 -1026.763 -1037.308 10.545 318.7 +1.8800 -1026.707 -1036.687 9.980 301.6 +1.9000 -1026.659 -1037.072 10.413 314.7 +1.9200 -1026.620 -1037.556 10.936 330.5 +1.9400 -1026.600 -1037.075 10.475 316.6 +1.9600 -1026.593 -1036.591 9.998 302.2 +1.9800 -1026.589 -1036.661 10.071 304.4 +2.0000 -1026.589 -1036.973 10.384 313.8 +2.0200 -1026.597 -1037.100 10.503 317.4 +2.0400 -1026.618 -1037.143 10.524 318.1 +2.0600 -1026.652 -1037.058 10.406 314.5 +2.0800 -1026.698 -1036.936 10.238 309.4 +2.1000 -1026.749 -1036.566 9.817 296.7 +2.1200 -1026.802 -1036.845 10.043 303.5 +2.1400 -1026.866 -1037.636 10.771 325.5 +2.1600 -1026.955 -1037.958 11.004 332.5 +2.1800 -1027.070 -1037.578 10.509 317.6 +2.2000 -1027.199 -1037.169 9.971 301.3 +2.2200 -1027.327 -1036.779 9.452 285.6 +2.2400 -1027.443 -1036.602 9.160 276.8 +2.2600 -1027.549 -1037.305 9.756 294.8 +2.2800 -1027.657 -1038.071 10.414 314.7 +2.3000 -1027.774 -1038.099 10.325 312.0 +2.3200 -1027.889 -1037.794 9.905 299.3 +2.3400 -1027.994 -1037.829 9.835 297.2 +2.3600 -1028.088 -1037.752 9.664 292.0 +2.3800 -1028.163 -1037.372 9.209 278.3 +2.4000 -1028.218 -1037.630 9.412 284.4 +2.4200 -1028.257 -1037.891 9.634 291.1 +2.4400 -1028.284 -1037.798 9.514 287.5 +2.4600 -1028.302 -1038.069 9.767 295.2 +2.4800 -1028.316 -1038.467 10.151 306.8 +2.5000 -1028.328 -1037.779 9.451 285.6 +2.5200 -1028.329 -1037.095 8.766 264.9 +2.5400 -1028.314 -1037.481 9.168 277.0 +2.5600 -1028.286 -1038.095 9.808 296.4 +2.5800 -1028.258 -1038.288 10.030 303.1 +2.6000 -1028.235 -1038.157 9.922 299.8 +2.6200 -1028.213 -1037.873 9.660 291.9 +2.6400 -1028.191 -1038.122 9.931 300.1 +2.6600 -1028.171 -1038.172 10.001 302.2 +2.6800 -1028.151 -1037.320 9.168 277.1 +2.7000 -1028.122 -1036.587 8.464 255.8 +2.7200 -1028.074 -1036.930 8.856 267.6 +2.7400 -1028.007 -1038.010 10.003 302.3 +2.7600 -1027.937 -1038.365 10.428 315.1 +2.7800 -1027.880 -1038.011 10.131 306.2 +2.8000 -1027.834 -1037.901 10.067 304.2 +2.8200 -1027.793 -1037.397 9.605 290.3 +2.8400 -1027.749 -1036.636 8.887 268.6 +2.8600 -1027.693 -1037.268 9.575 289.4 +2.8800 -1027.628 -1038.546 10.918 329.9 +2.9000 -1027.579 -1038.691 11.112 335.8 +2.9200 -1027.556 -1037.784 10.229 309.1 +2.9400 -1027.542 -1036.895 9.353 282.6 +2.9600 -1027.521 -1036.726 9.205 278.2 +2.9800 -1027.487 -1037.018 9.531 288.0 +3.0000 -1027.445 -1037.131 9.686 292.7 +3.0200 -1027.398 -1037.476 10.078 304.5 +3.0400 -1027.354 -1037.792 10.438 315.4 +3.0600 -1027.318 -1037.526 10.208 308.5 +3.0800 -1027.290 -1037.269 9.979 301.6 +3.1000 -1027.262 -1037.048 9.786 295.7 +3.1200 -1027.233 -1037.361 10.129 306.1 +3.1400 -1027.206 -1037.804 10.598 320.3 +3.1600 -1027.189 -1037.203 10.014 302.6 +3.1800 -1027.174 -1036.762 9.588 289.7 +3.2000 -1027.154 -1037.229 10.074 304.4 +3.2200 -1027.134 -1037.821 10.687 323.0 +3.2400 -1027.124 -1037.802 10.678 322.7 +3.2600 -1027.131 -1037.665 10.534 318.4 +3.2800 -1027.154 -1037.439 10.285 310.8 +3.3000 -1027.189 -1036.850 9.661 292.0 +3.3200 -1027.227 -1036.392 9.165 277.0 +3.3400 -1027.264 -1036.853 9.589 289.8 +3.3600 -1027.309 -1037.950 10.641 321.6 +3.3800 -1027.384 -1038.231 10.847 327.8 +3.4000 -1027.488 -1037.181 9.693 292.9 +3.4200 -1027.593 -1036.581 8.989 271.6 +3.4400 -1027.699 -1037.705 10.006 302.4 +3.4600 -1027.824 -1038.398 10.574 319.5 +3.4800 -1027.960 -1037.502 9.542 288.4 +3.5000 -1028.075 -1036.820 8.745 264.3 +3.5200 -1028.176 -1037.997 9.821 296.8 +3.5400 -1028.283 -1038.853 10.570 319.4 +3.5600 -1028.395 -1038.172 9.777 295.5 +3.5800 -1028.492 -1037.558 9.066 274.0 +3.6000 -1028.568 -1037.682 9.113 275.4 +3.6200 -1028.628 -1037.938 9.309 281.3 +3.6400 -1028.677 -1038.006 9.330 281.9 +3.6600 -1028.710 -1037.713 9.003 272.1 +3.6800 -1028.728 -1038.074 9.347 282.5 +3.7000 -1028.737 -1038.783 10.046 303.6 +3.7200 -1028.746 -1038.478 9.732 294.1 +3.7400 -1028.748 -1037.552 8.803 266.0 +3.7600 -1028.734 -1037.624 8.890 268.7 +3.7800 -1028.700 -1038.249 9.549 288.6 +3.8000 -1028.654 -1038.220 9.566 289.1 +3.8200 -1028.599 -1037.903 9.304 281.2 +3.8400 -1028.531 -1037.764 9.233 279.0 +3.8600 -1028.448 -1037.948 9.500 287.1 +3.8800 -1028.352 -1038.042 9.690 292.8 +3.9000 -1028.246 -1037.795 9.549 288.6 +3.9200 -1028.135 -1037.938 9.803 296.3 +3.9400 -1028.018 -1037.885 9.867 298.2 +3.9600 -1027.903 -1037.693 9.789 295.8 +3.9800 -1027.791 -1037.742 9.951 300.7 +4.0000 -1027.683 -1037.625 9.943 300.5 +4.0200 -1027.584 -1037.191 9.608 290.3 +4.0400 -1027.490 -1036.897 9.407 284.3 +4.0600 -1027.396 -1036.773 9.377 283.4 +4.0800 -1027.300 -1037.358 10.058 303.9 +4.1000 -1027.212 -1038.161 10.949 330.9 +4.1200 -1027.148 -1037.853 10.705 323.5 +4.1400 -1027.109 -1037.013 9.904 299.3 +4.1600 -1027.078 -1036.938 9.860 298.0 +4.1800 -1027.049 -1037.289 10.241 309.5 +4.2000 -1027.027 -1037.549 10.522 318.0 +4.2200 -1027.019 -1037.362 10.342 312.5 +4.2400 -1027.018 -1036.770 9.752 294.7 +4.2600 -1027.016 -1036.868 9.852 297.7 +4.2800 -1027.014 -1037.463 10.448 315.8 +4.3000 -1027.021 -1037.497 10.476 316.6 +4.3200 -1027.038 -1037.239 10.202 308.3 +4.3400 -1027.061 -1037.471 10.410 314.6 +4.3600 -1027.093 -1037.356 10.263 310.1 +4.3800 -1027.125 -1036.459 9.334 282.1 +4.4000 -1027.148 -1036.665 9.517 287.6 +4.4200 -1027.166 -1037.833 10.667 322.4 +4.4400 -1027.200 -1038.182 10.983 331.9 +4.4600 -1027.252 -1037.519 10.267 310.3 +4.4800 -1027.308 -1036.891 9.583 289.6 +4.5000 -1027.357 -1036.865 9.508 287.3 +4.5200 -1027.401 -1037.473 10.071 304.4 +4.5400 -1027.450 -1037.680 10.230 309.1 +4.5600 -1027.506 -1037.558 10.052 303.8 +4.5800 -1027.567 -1037.543 9.976 301.5 +4.6000 -1027.631 -1037.486 9.855 297.8 +4.6200 -1027.698 -1037.537 9.839 297.3 +4.6400 -1027.769 -1037.694 9.925 299.9 +4.6600 -1027.846 -1037.592 9.746 294.5 +4.6800 -1027.925 -1037.256 9.331 282.0 +4.7000 -1028.003 -1037.624 9.621 290.7 +4.7200 -1028.091 -1038.103 10.012 302.6 +4.7400 -1028.193 -1037.754 9.562 289.0 +4.7600 -1028.301 -1037.415 9.114 275.4 +4.7800 -1028.414 -1037.776 9.363 282.9 +4.8000 -1028.541 -1038.073 9.532 288.1 +4.8200 -1028.680 -1038.043 9.363 283.0 +4.8400 -1028.830 -1038.258 9.428 284.9 +4.8600 -1028.987 -1038.339 9.352 282.6 +4.8800 -1029.141 -1038.266 9.125 275.8 +4.9000 -1029.280 -1038.121 8.841 267.2 +4.9200 -1029.398 -1038.206 8.808 266.2 +4.9400 -1029.494 -1038.501 9.007 272.2 +4.9600 -1029.572 -1038.841 9.269 280.1 +4.9800 -1029.634 -1038.789 9.155 276.7 +5.0000 -1029.676 -1038.469 8.793 265.7 +5.0200 -1029.696 -1038.192 8.496 256.7 +5.0400 -1029.691 -1038.005 8.314 251.2 +5.0600 -1029.659 -1038.326 8.666 261.9 +5.0800 -1029.607 -1039.029 9.423 284.8 +5.1000 -1029.543 -1039.191 9.648 291.6 +5.1200 -1029.477 -1038.683 9.206 278.2 +5.1400 -1029.406 -1038.087 8.681 262.3 +5.1600 -1029.324 -1037.864 8.540 258.1 +5.1800 -1029.227 -1038.076 8.849 267.4 +5.2000 -1029.121 -1038.303 9.182 277.5 +5.2200 -1029.015 -1038.402 9.387 283.7 +5.2400 -1028.919 -1038.114 9.195 277.9 +5.2600 -1028.833 -1038.238 9.405 284.2 +5.2800 -1028.756 -1038.602 9.845 297.5 +5.3000 -1028.692 -1038.171 9.479 286.5 +5.3200 -1028.635 -1037.600 8.964 270.9 +5.3400 -1028.577 -1037.987 9.410 284.4 +5.3600 -1028.515 -1038.051 9.536 288.2 +5.3800 -1028.454 -1037.368 8.914 269.4 +5.4000 -1028.388 -1037.311 8.923 269.7 +5.4200 -1028.309 -1038.044 9.735 294.2 +5.4400 -1028.226 -1038.434 10.209 308.5 +5.4600 -1028.152 -1038.028 9.876 298.5 +5.4800 -1028.085 -1037.498 9.413 284.5 +5.5000 -1028.014 -1037.411 9.397 284.0 +5.5200 -1027.936 -1037.744 9.807 296.4 +5.5400 -1027.856 -1037.729 9.873 298.4 +5.5600 -1027.778 -1037.295 9.517 287.6 +5.5800 -1027.697 -1037.559 9.862 298.0 +5.6000 -1027.615 -1037.833 10.218 308.8 +5.6200 -1027.538 -1037.346 9.808 296.4 +5.6400 -1027.465 -1037.261 9.796 296.0 +5.6600 -1027.391 -1037.472 10.081 304.6 +5.6800 -1027.320 -1037.536 10.216 308.7 +5.7000 -1027.255 -1037.600 10.344 312.6 +5.7200 -1027.200 -1037.293 10.093 305.0 +5.7400 -1027.150 -1036.954 9.804 296.3 +5.7600 -1027.100 -1037.007 9.908 299.4 +5.7800 -1027.048 -1037.258 10.210 308.5 +5.8000 -1027.001 -1037.366 10.365 313.2 +5.8200 -1026.961 -1037.219 10.257 310.0 +5.8400 -1026.929 -1037.163 10.234 309.3 +5.8600 -1026.903 -1037.385 10.482 316.8 +5.8800 -1026.886 -1037.240 10.354 312.9 +5.9000 -1026.878 -1037.089 10.211 308.6 +5.9200 -1026.877 -1037.121 10.244 309.6 +5.9400 -1026.881 -1036.939 10.058 304.0 +5.9600 -1026.889 -1037.141 10.252 309.8 +5.9800 -1026.906 -1037.527 10.620 321.0 +6.0000 -1026.939 -1037.393 10.454 315.9 +6.0200 -1026.985 -1036.932 9.947 300.6 +6.0400 -1027.036 -1036.725 9.689 292.8 +6.0600 -1027.093 -1037.224 10.130 306.1 +6.0800 -1027.162 -1037.224 10.062 304.1 +6.1000 -1027.241 -1036.888 9.647 291.5 +6.1200 -1027.327 -1037.311 9.984 301.7 +6.1400 -1027.436 -1038.410 10.973 331.6 +6.1600 -1027.586 -1038.344 10.758 325.1 +6.1800 -1027.751 -1037.215 9.464 286.0 +6.2000 -1027.900 -1036.662 8.762 264.8 +6.2200 -1028.028 -1037.129 9.101 275.0 +6.2400 -1028.148 -1038.003 9.855 297.8 +6.2600 -1028.265 -1038.203 9.939 300.3 +6.2800 -1028.373 -1038.129 9.756 294.8 +6.3000 -1028.471 -1038.254 9.783 295.6 +6.3200 -1028.555 -1037.891 9.335 282.1 +6.3400 -1028.616 -1037.477 8.860 267.8 +6.3600 -1028.656 -1037.927 9.271 280.2 +6.3800 -1028.682 -1038.432 9.750 294.6 +6.4000 -1028.701 -1038.099 9.399 284.0 +6.4200 -1028.707 -1037.617 8.910 269.3 +6.4400 -1028.697 -1037.992 9.295 280.9 +6.4600 -1028.677 -1038.485 9.808 296.4 +6.4800 -1028.652 -1038.006 9.355 282.7 +6.5000 -1028.619 -1037.536 8.917 269.5 +6.5200 -1028.573 -1038.148 9.575 289.4 +6.5400 -1028.518 -1038.447 9.929 300.1 +6.5600 -1028.464 -1037.723 9.259 279.8 +6.5800 -1028.405 -1037.623 9.217 278.5 +6.6000 -1028.336 -1038.322 9.986 301.8 +6.6200 -1028.266 -1038.367 10.101 305.3 +6.6400 -1028.203 -1037.740 9.537 288.2 +6.6600 -1028.142 -1037.206 9.064 273.9 +6.6800 -1028.073 -1037.226 9.154 276.6 +6.7000 -1027.994 -1037.649 9.655 291.8 +6.7200 -1027.913 -1037.700 9.786 295.7 +6.7400 -1027.839 -1037.774 9.936 300.3 +6.7600 -1027.773 -1038.210 10.437 315.4 +6.7800 -1027.723 -1037.879 10.156 306.9 +6.8000 -1027.686 -1037.156 9.470 286.2 +6.8200 -1027.649 -1036.983 9.334 282.1 +6.8400 -1027.608 -1037.135 9.527 287.9 +6.8600 -1027.565 -1037.322 9.757 294.9 +6.8800 -1027.525 -1037.702 10.177 307.5 +6.9000 -1027.495 -1037.833 10.338 312.4 +6.9200 -1027.475 -1037.495 10.021 302.8 +6.9400 -1027.460 -1037.348 9.887 298.8 +6.9600 -1027.448 -1037.683 10.235 309.3 +6.9800 -1027.443 -1037.789 10.346 312.7 +7.0000 -1027.444 -1037.322 9.878 298.5 +7.0200 -1027.445 -1036.915 9.470 286.2 +7.0400 -1027.438 -1036.926 9.489 286.7 +7.0600 -1027.424 -1037.369 9.945 300.5 +7.0800 -1027.411 -1037.893 10.482 316.8 +7.1000 -1027.407 -1037.776 10.369 313.3 +7.1200 -1027.411 -1037.028 9.617 290.6 +7.1400 -1027.411 -1037.045 9.634 291.1 +7.1600 -1027.406 -1037.439 10.032 303.2 +7.1800 -1027.401 -1037.195 9.794 296.0 +7.2000 -1027.394 -1037.171 9.777 295.5 +7.2200 -1027.385 -1037.644 10.259 310.0 +7.2400 -1027.383 -1038.023 10.640 321.5 +7.2600 -1027.393 -1037.746 10.353 312.9 +7.2800 -1027.413 -1037.216 9.804 296.3 +7.3000 -1027.430 -1037.001 9.570 289.2 +7.3200 -1027.446 -1037.572 10.126 306.0 +7.3400 -1027.466 -1037.727 10.261 310.1 +7.3600 -1027.493 -1037.140 9.648 291.5 +7.3800 -1027.519 -1037.023 9.504 287.2 +7.4000 -1027.542 -1037.535 9.993 302.0 +7.4200 -1027.571 -1037.658 10.087 304.8 +7.4400 -1027.609 -1037.640 10.031 303.1 +7.4600 -1027.657 -1037.598 9.941 300.4 +7.4800 -1027.715 -1037.474 9.758 294.9 +7.5000 -1027.781 -1037.467 9.686 292.7 +7.5200 -1027.855 -1037.625 9.769 295.2 +7.5400 -1027.938 -1037.710 9.771 295.3 +7.5600 -1028.031 -1037.830 9.799 296.1 +7.5800 -1028.132 -1037.836 9.704 293.3 +7.6000 -1028.235 -1037.623 9.388 283.7 +7.6200 -1028.331 -1037.492 9.161 276.8 +7.6400 -1028.420 -1037.931 9.511 287.4 +7.6600 -1028.508 -1038.313 9.806 296.3 +7.6800 -1028.596 -1038.461 9.865 298.1 +7.7000 -1028.684 -1038.234 9.550 288.6 +7.7200 -1028.761 -1037.877 9.116 275.5 +7.7400 -1028.823 -1037.820 8.996 271.9 +7.7600 -1028.869 -1037.921 9.052 273.6 +7.7800 -1028.899 -1037.936 9.037 273.1 +7.8000 -1028.914 -1038.260 9.346 282.4 +7.8200 -1028.919 -1038.491 9.572 289.3 +7.8400 -1028.916 -1038.026 9.110 275.3 +7.8600 -1028.897 -1037.482 8.585 259.4 +7.8800 -1028.856 -1038.018 9.162 276.9 +7.9000 -1028.793 -1038.707 9.914 299.6 +7.9200 -1028.720 -1038.348 9.628 291.0 +7.9400 -1028.641 -1038.019 9.378 283.4 +7.9600 -1028.548 -1037.905 9.357 282.8 +7.9800 -1028.439 -1037.577 9.137 276.1 +8.0000 -1028.313 -1037.749 9.436 285.2 +8.0200 -1028.170 -1038.241 10.071 304.4 +8.0400 -1028.026 -1037.676 9.650 291.6 +8.0600 -1027.892 -1037.028 9.136 276.1 +8.0800 -1027.758 -1037.422 9.663 292.0 +8.1000 -1027.626 -1037.827 10.201 308.3 +8.1200 -1027.514 -1037.671 10.157 306.9 +8.1400 -1027.424 -1037.612 10.188 307.9 +8.1600 -1027.355 -1037.647 10.292 311.0 +8.1800 -1027.302 -1037.273 9.970 301.3 +8.2000 -1027.260 -1036.754 9.494 286.9 +8.2200 -1027.219 -1036.922 9.702 293.2 +8.2400 -1027.179 -1037.667 10.488 316.9 +8.2600 -1027.152 -1037.881 10.729 324.2 +8.2800 -1027.142 -1037.291 10.149 306.7 +8.3000 -1027.138 -1036.953 9.815 296.6 +8.3200 -1027.134 -1036.959 9.825 296.9 +8.3400 -1027.127 -1036.934 9.808 296.4 +8.3600 -1027.118 -1037.130 10.011 302.5 +8.3800 -1027.113 -1037.419 10.306 311.5 +8.4000 -1027.113 -1037.514 10.401 314.3 +8.4200 -1027.125 -1037.683 10.558 319.1 +8.4400 -1027.149 -1037.304 10.155 306.9 +8.4600 -1027.173 -1036.629 9.456 285.8 +8.4800 -1027.192 -1036.885 9.692 292.9 +8.5000 -1027.208 -1037.413 10.205 308.4 +8.5200 -1027.228 -1037.307 10.079 304.6 +8.5400 -1027.252 -1037.193 9.941 300.4 +8.5600 -1027.279 -1037.542 10.263 310.1 +8.5800 -1027.317 -1037.888 10.572 319.5 +8.6000 -1027.369 -1037.634 10.265 310.2 +8.6200 -1027.431 -1037.444 10.013 302.6 +8.6400 -1027.501 -1037.485 9.983 301.7 +8.6600 -1027.577 -1037.230 9.653 291.7 +8.6800 -1027.653 -1037.128 9.475 286.3 +8.7000 -1027.727 -1037.125 9.398 284.0 +8.7200 -1027.798 -1037.132 9.334 282.1 +8.7400 -1027.868 -1037.808 9.940 300.4 +8.7600 -1027.953 -1038.449 10.495 317.2 +8.7800 -1028.057 -1037.944 9.887 298.8 +8.8000 -1028.162 -1037.357 9.195 277.9 +8.8200 -1028.267 -1037.829 9.562 289.0 +8.8400 -1028.378 -1038.340 9.962 301.1 +8.8600 -1028.499 -1038.149 9.651 291.6 +8.8800 -1028.613 -1037.571 8.958 270.7 +8.9000 -1028.711 -1037.523 8.812 266.3 +8.9200 -1028.795 -1037.967 9.171 277.2 +8.9400 -1028.871 -1038.369 9.498 287.0 +8.9600 -1028.941 -1038.317 9.376 283.3 +8.9800 -1028.999 -1037.886 8.887 268.6 +9.0000 -1029.041 -1038.002 8.962 270.8 +9.0200 -1029.069 -1038.456 9.387 283.7 +9.0400 -1029.086 -1038.497 9.410 284.4 +9.0600 -1029.097 -1038.583 9.486 286.7 +9.0800 -1029.099 -1038.463 9.364 283.0 +9.1000 -1029.089 -1038.009 8.920 269.6 +9.1200 -1029.059 -1037.953 8.893 268.8 +9.1400 -1029.003 -1038.102 9.098 274.9 +9.1600 -1028.917 -1037.950 9.033 273.0 +9.1800 -1028.796 -1037.613 8.817 266.5 +9.2000 -1028.633 -1037.666 9.033 273.0 +9.2200 -1028.421 -1038.328 9.907 299.4 +9.2400 -1028.181 -1038.689 10.508 317.5 +9.2600 -1027.962 -1038.097 10.135 306.3 +9.2800 -1027.783 -1037.556 9.773 295.3 +9.3000 -1027.635 -1037.355 9.720 293.7 +9.3200 -1027.514 -1036.701 9.186 277.6 +9.3400 -1027.410 -1036.566 9.155 276.7 +9.3600 -1027.312 -1037.428 10.116 305.7 +9.3800 -1027.226 -1037.827 10.601 320.4 +9.4000 -1027.165 -1037.383 10.218 308.8 +9.4200 -1027.120 -1037.103 9.983 301.7 +9.4400 -1027.081 -1036.988 9.907 299.4 +9.4600 -1027.045 -1037.171 10.126 306.0 +9.4800 -1027.015 -1037.478 10.462 316.2 +9.5000 -1026.996 -1037.487 10.490 317.0 +9.5200 -1026.989 -1037.247 10.258 310.0 +9.5400 -1026.988 -1037.014 10.026 303.0 +9.5600 -1026.991 -1037.206 10.214 308.7 +9.5800 -1027.001 -1037.644 10.644 321.7 +9.6000 -1027.025 -1037.678 10.653 321.9 +9.6200 -1027.063 -1037.143 10.080 304.6 +9.6400 -1027.103 -1036.629 9.526 287.9 +9.6600 -1027.137 -1036.842 9.705 293.3 +9.6800 -1027.171 -1037.402 10.231 309.2 +9.7000 -1027.211 -1037.471 10.260 310.1 +9.7200 -1027.259 -1037.358 10.099 305.2 +9.7400 -1027.314 -1037.476 10.162 307.1 +9.7600 -1027.376 -1037.499 10.124 305.9 +9.7800 -1027.443 -1037.343 9.899 299.2 +9.8000 -1027.510 -1037.037 9.527 287.9 +9.8200 -1027.572 -1037.263 9.690 292.8 +9.8400 -1027.639 -1038.106 10.467 316.3 +9.8600 -1027.719 -1038.032 10.313 311.7 +9.8800 -1027.803 -1037.124 9.321 281.7 +9.9000 -1027.876 -1037.176 9.300 281.1 +9.9200 -1027.944 -1037.873 9.929 300.1 +9.9400 -1028.015 -1038.073 10.058 304.0 +9.9600 -1028.091 -1037.936 9.845 297.5 +9.9800 -1028.166 -1037.811 9.645 291.5 +10.0000 -1028.238 -1037.894 9.656 291.8 +10.0200 -1028.307 -1037.851 9.545 288.4 +10.0400 -1028.369 -1037.563 9.195 277.9 +10.0600 -1028.415 -1037.145 8.730 263.8 +10.0800 -1028.444 -1037.596 9.151 276.6 +10.1000 -1028.464 -1038.512 10.048 303.7 +10.1200 -1028.486 -1038.548 10.062 304.1 +10.1400 -1028.510 -1037.921 9.411 284.4 +10.1600 -1028.527 -1037.743 9.216 278.5 +10.1800 -1028.533 -1037.941 9.408 284.3 +10.2000 -1028.528 -1037.851 9.323 281.7 +10.2200 -1028.511 -1037.742 9.231 279.0 +10.2400 -1028.476 -1037.926 9.450 285.6 +10.2600 -1028.422 -1038.051 9.629 291.0 +10.2800 -1028.349 -1038.020 9.670 292.2 +10.3000 -1028.255 -1037.873 9.618 290.7 +10.3200 -1028.138 -1037.765 9.627 290.9 +10.3400 -1027.996 -1037.664 9.668 292.2 +10.3600 -1027.835 -1037.496 9.662 292.0 +10.3800 -1027.658 -1037.606 9.948 300.6 +10.4000 -1027.478 -1037.577 10.099 305.2 +10.4200 -1027.311 -1037.151 9.841 297.4 +10.4400 -1027.160 -1036.973 9.813 296.6 +10.4600 -1027.022 -1037.375 10.353 312.9 +10.4800 -1026.904 -1037.797 10.893 329.2 +10.5000 -1026.818 -1037.172 10.354 312.9 +10.5200 -1026.754 -1036.059 9.304 281.2 +10.5400 -1026.693 -1036.415 9.721 293.8 +10.5600 -1026.631 -1037.304 10.673 322.5 +10.5800 -1026.584 -1037.672 11.088 335.1 +10.6000 -1026.563 -1037.333 10.770 325.5 +10.6200 -1026.562 -1036.987 10.424 315.0 +10.6400 -1026.572 -1036.834 10.262 310.1 +10.6600 -1026.589 -1036.951 10.362 313.1 +10.6800 -1026.614 -1036.877 10.264 310.2 +10.7000 -1026.645 -1036.848 10.203 308.3 +10.7200 -1026.683 -1037.106 10.423 315.0 +10.7400 -1026.731 -1037.134 10.403 314.4 +10.7600 -1026.790 -1037.179 10.390 314.0 +10.7800 -1026.858 -1037.095 10.237 309.4 +10.8000 -1026.932 -1036.914 9.982 301.7 +10.8200 -1027.008 -1037.094 10.087 304.8 +10.8400 -1027.090 -1037.404 10.314 311.7 +10.8600 -1027.181 -1037.421 10.240 309.4 +10.8800 -1027.277 -1037.306 10.029 303.1 +10.9000 -1027.374 -1037.396 10.021 302.9 +10.9200 -1027.474 -1037.661 10.187 307.9 +10.9400 -1027.577 -1037.656 10.079 304.6 +10.9600 -1027.677 -1037.415 9.738 294.3 +10.9800 -1027.766 -1037.201 9.435 285.1 +11.0000 -1027.841 -1037.507 9.667 292.1 +11.0200 -1027.912 -1038.198 10.286 310.8 +11.0400 -1027.984 -1037.897 9.912 299.6 +11.0600 -1028.044 -1037.015 8.970 271.1 +11.0800 -1028.083 -1037.271 9.188 277.7 +11.1000 -1028.110 -1038.263 10.153 306.8 +11.1200 -1028.139 -1038.383 10.244 309.6 +11.1400 -1028.168 -1037.737 9.569 289.2 +11.1600 -1028.187 -1037.204 9.017 272.5 +11.1800 -1028.189 -1037.244 9.054 273.6 +11.2000 -1028.178 -1037.982 9.804 296.3 +11.2200 -1028.163 -1038.294 10.131 306.2 +11.2400 -1028.152 -1038.032 9.881 298.6 +11.2600 -1028.141 -1037.828 9.687 292.7 +11.2800 -1028.128 -1037.963 9.834 297.2 +11.3000 -1028.113 -1037.680 9.567 289.1 +11.3200 -1028.094 -1037.426 9.332 282.0 +11.3400 -1028.067 -1037.619 9.551 288.6 +11.3600 -1028.035 -1037.842 9.807 296.4 +11.3800 -1028.004 -1037.818 9.813 296.6 +11.4000 -1027.974 -1037.553 9.578 289.5 +11.4200 -1027.943 -1037.492 9.549 288.6 +11.4400 -1027.910 -1037.590 9.681 292.6 +11.4600 -1027.875 -1037.577 9.702 293.2 +11.4800 -1027.842 -1037.795 9.954 300.8 +11.5000 -1027.814 -1038.027 10.214 308.7 +11.5200 -1027.793 -1037.577 9.784 295.7 +11.5400 -1027.773 -1037.080 9.307 281.3 +11.5600 -1027.748 -1037.461 9.714 293.5 +11.5800 -1027.721 -1038.017 10.295 311.1 +11.6000 -1027.701 -1037.630 9.929 300.1 +11.6200 -1027.685 -1037.216 9.531 288.0 +11.6400 -1027.665 -1037.596 9.931 300.1 +11.6600 -1027.647 -1037.980 10.333 312.3 +11.6800 -1027.636 -1037.634 9.998 302.1 +11.7000 -1027.627 -1037.034 9.407 284.3 +11.7200 -1027.611 -1037.053 9.443 285.4 +11.7400 -1027.588 -1037.827 10.239 309.4 +11.7600 -1027.570 -1038.328 10.758 325.1 +11.7800 -1027.567 -1037.728 10.161 307.1 +11.8000 -1027.568 -1036.736 9.168 277.1 +11.8200 -1027.558 -1036.932 9.373 283.3 +11.8400 -1027.539 -1037.881 10.342 312.5 +11.8600 -1027.524 -1037.576 10.052 303.8 +11.8800 -1027.510 -1036.785 9.275 280.3 +11.9000 -1027.489 -1037.245 9.756 294.8 +11.9200 -1027.461 -1037.891 10.429 315.2 +11.9400 -1027.440 -1037.798 10.358 313.0 +11.9600 -1027.429 -1037.789 10.360 313.1 +11.9800 -1027.426 -1037.712 10.287 310.9 +12.0000 -1027.429 -1037.447 10.018 302.7 +12.0200 -1027.435 -1037.297 9.861 298.0 +12.0400 -1027.442 -1037.335 9.893 299.0 +12.0600 -1027.447 -1037.102 9.655 291.8 +12.0800 -1027.448 -1037.215 9.766 295.1 +12.1000 -1027.448 -1037.562 10.115 305.7 +12.1200 -1027.449 -1037.344 9.895 299.0 +12.1400 -1027.449 -1037.019 9.570 289.2 +12.1600 -1027.444 -1037.357 9.913 299.6 +12.1800 -1027.436 -1037.552 10.115 305.7 +12.2000 -1027.431 -1037.679 10.248 309.7 +12.2200 -1027.432 -1037.943 10.510 317.6 +12.2400 -1027.444 -1037.357 9.914 299.6 +12.2600 -1027.457 -1036.934 9.477 286.4 +12.2800 -1027.464 -1037.066 9.602 290.2 +12.3000 -1027.466 -1037.411 9.945 300.5 +12.3200 -1027.469 -1037.613 10.144 306.6 +12.3400 -1027.474 -1037.327 9.853 297.8 +12.3600 -1027.479 -1037.363 9.884 298.7 +12.3800 -1027.487 -1038.174 10.686 322.9 +12.4000 -1027.511 -1038.274 10.764 325.3 +12.4200 -1027.548 -1037.236 9.688 292.8 +12.4400 -1027.583 -1036.771 9.188 277.7 +12.4600 -1027.608 -1037.242 9.635 291.2 +12.4800 -1027.628 -1037.532 9.904 299.3 +12.5000 -1027.647 -1037.211 9.564 289.0 +12.5200 -1027.659 -1036.949 9.290 280.7 +12.5400 -1027.664 -1037.838 10.174 307.5 +12.5600 -1027.673 -1038.392 10.718 323.9 +12.5800 -1027.696 -1037.712 10.017 302.7 +12.6000 -1027.722 -1037.369 9.647 291.5 +12.6200 -1027.744 -1037.331 9.587 289.7 +12.6400 -1027.762 -1037.607 9.845 297.5 +12.6600 -1027.780 -1037.909 10.129 306.1 +12.6800 -1027.802 -1037.717 9.914 299.6 +12.7000 -1027.824 -1037.366 9.543 288.4 +12.7200 -1027.842 -1037.499 9.657 291.8 +12.7400 -1027.854 -1037.416 9.562 289.0 +12.7600 -1027.860 -1037.379 9.519 287.7 +12.7800 -1027.859 -1037.751 9.891 298.9 +12.8000 -1027.857 -1037.921 10.064 304.1 +12.8200 -1027.856 -1037.592 9.736 294.2 +12.8400 -1027.852 -1037.336 9.484 286.6 +12.8600 -1027.840 -1037.639 9.799 296.1 +12.8800 -1027.823 -1037.617 9.795 296.0 +12.9000 -1027.801 -1037.673 9.872 298.3 +12.9200 -1027.776 -1037.856 10.080 304.6 +12.9400 -1027.751 -1037.675 9.925 299.9 +12.9600 -1027.723 -1037.338 9.615 290.6 +12.9800 -1027.687 -1037.314 9.627 290.9 +13.0000 -1027.642 -1037.932 10.290 311.0 +13.0200 -1027.595 -1037.876 10.281 310.7 +13.0400 -1027.551 -1037.109 9.558 288.8 +13.0600 -1027.500 -1037.009 9.509 287.4 +13.0800 -1027.435 -1037.420 9.986 301.8 +13.1000 -1027.360 -1037.619 10.259 310.0 +13.1200 -1027.285 -1037.641 10.356 313.0 +13.1400 -1027.212 -1037.447 10.235 309.3 +13.1600 -1027.141 -1037.118 9.977 301.5 +13.1800 -1027.068 -1036.988 9.920 299.8 +13.2000 -1026.991 -1037.058 10.067 304.2 +13.2200 -1026.909 -1036.967 10.057 303.9 +13.2400 -1026.826 -1036.921 10.095 305.1 +13.2600 -1026.742 -1037.311 10.570 319.4 +13.2800 -1026.663 -1037.427 10.765 325.3 +13.3000 -1026.597 -1037.154 10.557 319.0 +13.3200 -1026.544 -1037.168 10.623 321.0 +13.3400 -1026.503 -1037.039 10.535 318.4 +13.3600 -1026.472 -1036.621 10.148 306.7 +13.3800 -1026.446 -1036.779 10.333 312.3 +13.4000 -1026.427 -1037.199 10.772 325.5 +13.4200 -1026.423 -1037.113 10.690 323.1 +13.4400 -1026.433 -1036.433 10.000 302.2 +13.4600 -1026.447 -1036.163 9.716 293.6 +13.4800 -1026.462 -1036.869 10.407 314.5 +13.5000 -1026.491 -1037.555 11.064 334.4 +13.5200 -1026.548 -1037.331 10.782 325.8 +13.5400 -1026.633 -1037.124 10.491 317.1 +13.5600 -1026.744 -1037.252 10.507 317.5 +13.5800 -1026.878 -1036.897 10.018 302.8 +13.6000 -1027.023 -1036.841 9.818 296.7 +13.6200 -1027.177 -1037.125 9.948 300.6 +13.6400 -1027.337 -1037.375 10.039 303.4 +13.6600 -1027.500 -1037.757 10.257 310.0 +13.6800 -1027.662 -1037.742 10.079 304.6 +13.7000 -1027.807 -1037.480 9.673 292.3 +13.7200 -1027.931 -1037.656 9.725 293.9 +13.7400 -1028.034 -1037.573 9.539 288.3 +13.7600 -1028.113 -1037.504 9.391 283.8 +13.7800 -1028.174 -1037.908 9.734 294.2 +13.8000 -1028.226 -1038.204 9.978 301.5 +13.8200 -1028.270 -1037.846 9.576 289.4 +13.8400 -1028.301 -1037.588 9.287 280.6 +13.8600 -1028.319 -1037.711 9.392 283.8 +13.8800 -1028.325 -1037.699 9.374 283.3 +13.9000 -1028.321 -1037.708 9.386 283.7 +13.9200 -1028.307 -1037.593 9.287 280.6 +13.9400 -1028.282 -1037.698 9.416 284.6 +13.9600 -1028.249 -1038.279 10.030 303.1 +13.9800 -1028.216 -1038.534 10.319 311.8 +14.0000 -1028.189 -1038.131 9.942 300.5 +14.0200 -1028.165 -1037.673 9.507 287.3 +14.0400 -1028.134 -1037.253 9.118 275.6 +14.0600 -1028.090 -1037.141 9.051 273.5 +14.0800 -1028.029 -1037.486 9.457 285.8 +14.1000 -1027.954 -1037.804 9.850 297.7 +14.1200 -1027.874 -1037.936 10.062 304.1 +14.1400 -1027.795 -1038.139 10.344 312.6 +14.1600 -1027.721 -1037.643 9.922 299.8 +14.1800 -1027.651 -1036.748 9.097 274.9 +14.2000 -1027.570 -1036.973 9.404 284.2 +14.2200 -1027.473 -1037.562 10.089 304.9 +14.2400 -1027.373 -1037.720 10.347 312.7 +14.2600 -1027.282 -1037.653 10.371 313.4 +14.2800 -1027.201 -1037.462 10.261 310.1 +14.3000 -1027.130 -1037.353 10.223 308.9 +14.3200 -1027.066 -1037.146 10.079 304.6 +14.3400 -1027.008 -1037.024 10.015 302.7 +14.3600 -1026.954 -1037.182 10.229 309.1 +14.3800 -1026.906 -1037.204 10.298 311.2 +14.4000 -1026.865 -1036.956 10.091 305.0 +14.4200 -1026.830 -1037.089 10.259 310.0 +14.4400 -1026.802 -1037.099 10.297 311.2 +14.4600 -1026.781 -1037.138 10.357 313.0 +14.4800 -1026.770 -1037.485 10.715 323.8 +14.5000 -1026.774 -1037.198 10.424 315.0 +14.5200 -1026.787 -1036.513 9.726 293.9 +14.5400 -1026.798 -1036.417 9.619 290.7 +14.5600 -1026.804 -1036.866 10.062 304.1 +14.5800 -1026.815 -1037.397 10.583 319.8 +14.6000 -1026.843 -1037.966 11.123 336.1 +14.6200 -1026.907 -1038.013 11.107 335.6 +14.6400 -1027.011 -1037.424 10.413 314.7 +14.6600 -1027.153 -1036.945 9.792 295.9 +14.6800 -1027.330 -1036.995 9.666 292.1 +14.7000 -1027.547 -1037.211 9.664 292.0 +14.7200 -1027.787 -1037.172 9.385 283.6 +14.7400 -1028.019 -1037.286 9.267 280.1 +14.7600 -1028.229 -1037.974 9.745 294.5 +14.7800 -1028.410 -1038.152 9.742 294.4 +14.8000 -1028.548 -1037.866 9.318 281.6 +14.8200 -1028.646 -1037.990 9.344 282.4 +14.8400 -1028.719 -1038.383 9.664 292.0 +14.8600 -1028.771 -1037.955 9.184 277.5 +14.8800 -1028.800 -1037.657 8.857 267.6 +14.9000 -1028.811 -1038.110 9.300 281.0 +14.9200 -1028.808 -1038.387 9.579 289.5 +14.9400 -1028.798 -1038.344 9.546 288.5 +14.9600 -1028.783 -1038.467 9.684 292.7 +14.9800 -1028.762 -1038.343 9.581 289.5 +15.0000 -1028.735 -1037.717 8.982 271.4 +15.0200 -1028.693 -1037.297 8.604 260.0 +15.0400 -1028.631 -1037.746 9.116 275.5 +15.0600 -1028.548 -1038.244 9.695 293.0 +15.0800 -1028.457 -1038.184 9.727 293.9 +15.1000 -1028.365 -1038.019 9.654 291.7 +15.1200 -1028.269 -1037.777 9.508 287.3 +15.1400 -1028.170 -1037.531 9.362 282.9 +15.1600 -1028.064 -1037.602 9.538 288.2 +15.1800 -1027.953 -1037.784 9.832 297.1 +15.2000 -1027.844 -1037.414 9.570 289.2 +15.2200 -1027.739 -1037.193 9.454 285.7 +15.2400 -1027.632 -1037.712 10.080 304.6 +15.2600 -1027.530 -1038.005 10.475 316.6 +15.2800 -1027.446 -1037.604 10.158 307.0 +15.3000 -1027.376 -1037.269 9.893 299.0 +15.3200 -1027.313 -1037.370 10.056 303.9 +15.3400 -1027.256 -1037.366 10.111 305.5 +15.3600 -1027.206 -1037.276 10.070 304.3 +15.3800 -1027.162 -1037.356 10.193 308.0 +15.4000 -1027.126 -1037.157 10.032 303.2 +15.4200 -1027.093 -1036.672 9.579 289.5 +15.4400 -1027.057 -1036.864 9.807 296.4 +15.4600 -1027.020 -1037.721 10.701 323.4 +15.4800 -1026.995 -1037.605 10.610 320.6 +15.5000 -1026.985 -1037.170 10.185 307.8 +15.5200 -1026.983 -1037.279 10.296 311.2 +15.5400 -1026.985 -1036.970 9.985 301.7 +15.5600 -1026.991 -1036.862 9.871 298.3 +15.5800 -1026.996 -1037.154 10.159 307.0 +15.6000 -1027.006 -1037.443 10.437 315.4 +15.6200 -1027.027 -1037.359 10.332 312.2 +15.6400 -1027.057 -1037.283 10.226 309.0 +15.6600 -1027.098 -1037.384 10.286 310.9 +15.6800 -1027.149 -1037.382 10.233 309.2 +15.7000 -1027.213 -1037.431 10.219 308.8 +15.7200 -1027.291 -1037.495 10.204 308.4 +15.7400 -1027.384 -1037.243 9.859 297.9 +15.7600 -1027.482 -1036.773 9.290 280.8 +15.7800 -1027.580 -1036.947 9.367 283.1 +15.8000 -1027.687 -1037.807 10.121 305.8 +15.8200 -1027.816 -1038.047 10.230 309.2 +15.8400 -1027.959 -1037.511 9.552 288.7 +15.8600 -1028.101 -1037.526 9.425 284.8 +15.8800 -1028.245 -1037.922 9.677 292.5 +15.9000 -1028.383 -1037.718 9.335 282.1 +15.9200 -1028.506 -1037.704 9.198 278.0 +15.9400 -1028.616 -1038.329 9.713 293.5 +15.9600 -1028.721 -1038.813 10.092 305.0 +15.9800 -1028.820 -1038.523 9.703 293.2 +16.0000 -1028.901 -1038.024 9.123 275.7 +16.0200 -1028.960 -1038.062 9.103 275.1 +16.0400 -1028.998 -1038.157 9.159 276.8 +16.0600 -1029.017 -1037.768 8.751 264.5 +16.0800 -1029.014 -1037.566 8.552 258.4 +16.1000 -1028.990 -1038.194 9.203 278.1 +16.1200 -1028.955 -1038.755 9.800 296.2 +16.1400 -1028.918 -1038.196 9.279 280.4 +16.1600 -1028.876 -1037.729 8.852 267.5 +16.1800 -1028.824 -1038.021 9.196 277.9 +16.2000 -1028.764 -1038.198 9.434 285.1 +16.2200 -1028.701 -1037.972 9.271 280.2 +16.2400 -1028.637 -1038.161 9.524 287.8 +16.2600 -1028.573 -1038.518 9.945 300.5 +16.2800 -1028.515 -1038.197 9.682 292.6 +16.3000 -1028.463 -1037.658 9.195 277.9 +16.3200 -1028.408 -1037.637 9.229 278.9 +16.3400 -1028.347 -1037.999 9.652 291.7 +16.3600 -1028.286 -1038.071 9.785 295.7 +16.3800 -1028.229 -1037.646 9.417 284.6 +16.4000 -1028.171 -1037.345 9.174 277.2 +16.4200 -1028.108 -1037.865 9.757 294.9 +16.4400 -1028.043 -1037.914 9.872 298.3 +16.4600 -1027.982 -1037.598 9.615 290.6 +16.4800 -1027.924 -1037.767 9.843 297.5 +16.5000 -1027.867 -1037.692 9.825 296.9 +16.5200 -1027.812 -1037.163 9.351 282.6 +16.5400 -1027.753 -1037.064 9.311 281.4 +16.5600 -1027.686 -1037.753 10.067 304.2 +16.5800 -1027.621 -1038.261 10.640 321.5 +16.6000 -1027.570 -1037.788 10.217 308.8 +16.6200 -1027.531 -1037.372 9.841 297.4 +16.6400 -1027.494 -1037.531 10.037 303.3 +16.6600 -1027.459 -1037.577 10.118 305.8 +16.6800 -1027.429 -1037.066 9.637 291.2 +16.7000 -1027.394 -1036.660 9.265 280.0 +16.7200 -1027.351 -1037.258 9.907 299.4 +16.7400 -1027.304 -1037.996 10.693 323.1 +16.7600 -1027.269 -1037.847 10.578 319.7 +16.7800 -1027.248 -1037.045 9.797 296.1 +16.8000 -1027.227 -1036.665 9.438 285.2 +16.8200 -1027.196 -1036.838 9.642 291.4 +16.8400 -1027.159 -1037.295 10.136 306.3 +16.8600 -1027.122 -1037.434 10.312 311.6 +16.8800 -1027.090 -1037.539 10.449 315.8 +16.9000 -1027.067 -1037.695 10.628 321.2 +16.9200 -1027.058 -1037.611 10.553 318.9 +16.9400 -1027.059 -1037.107 10.048 303.7 +16.9600 -1027.065 -1037.002 9.936 300.3 +16.9800 -1027.073 -1037.217 10.144 306.5 +17.0000 -1027.087 -1037.077 9.990 301.9 +17.0200 -1027.103 -1036.753 9.649 291.6 +17.0400 -1027.121 -1037.096 9.976 301.5 +17.0600 -1027.145 -1037.712 10.566 319.3 +17.0800 -1027.189 -1037.597 10.408 314.5 +17.1000 -1027.250 -1036.982 9.732 294.1 +17.1200 -1027.320 -1037.154 9.834 297.2 +17.1400 -1027.406 -1037.829 10.423 315.0 +17.1600 -1027.513 -1037.548 10.035 303.3 +17.1800 -1027.624 -1036.899 9.274 280.3 +17.2000 -1027.730 -1037.185 9.455 285.7 +17.2200 -1027.839 -1037.891 10.053 303.8 +17.2400 -1027.953 -1037.917 9.964 301.1 +17.2600 -1028.066 -1037.762 9.697 293.0 +17.2800 -1028.174 -1038.090 9.915 299.6 +17.3000 -1028.284 -1038.287 10.003 302.3 +17.3200 -1028.385 -1037.625 9.240 279.2 +17.3400 -1028.464 -1037.387 8.923 269.6 +17.3600 -1028.526 -1037.816 9.290 280.7 +17.3800 -1028.575 -1038.026 9.451 285.6 +17.4000 -1028.613 -1038.104 9.490 286.8 +17.4200 -1028.643 -1038.012 9.369 283.1 +17.4400 -1028.660 -1037.579 8.919 269.5 +17.4600 -1028.659 -1037.463 8.804 266.0 +17.4800 -1028.640 -1037.999 9.359 282.8 +17.5000 -1028.607 -1038.469 9.861 298.0 +17.5200 -1028.570 -1038.332 9.763 295.0 +17.5400 -1028.529 -1038.157 9.628 291.0 +17.5600 -1028.481 -1038.016 9.535 288.2 +17.5800 -1028.423 -1037.737 9.314 281.5 +17.6000 -1028.353 -1037.632 9.279 280.4 +17.6200 -1028.266 -1037.800 9.533 288.1 +17.6400 -1028.166 -1037.755 9.589 289.8 +17.6600 -1028.056 -1037.758 9.702 293.2 +17.6800 -1027.938 -1037.797 9.859 297.9 +17.7000 -1027.817 -1037.636 9.819 296.7 +17.7200 -1027.697 -1037.579 9.881 298.6 +17.7400 -1027.581 -1037.498 9.917 299.7 +17.7600 -1027.471 -1037.404 9.932 300.2 +17.7800 -1027.370 -1037.128 9.758 294.9 +17.8000 -1027.276 -1037.060 9.784 295.7 +17.8200 -1027.189 -1037.426 10.237 309.4 +17.8400 -1027.115 -1037.568 10.452 315.9 +17.8600 -1027.059 -1037.087 10.028 303.1 +17.8800 -1027.015 -1036.858 9.843 297.5 +17.9000 -1026.977 -1037.395 10.419 314.9 +17.9200 -1026.951 -1037.482 10.532 318.3 +17.9400 -1026.937 -1036.729 9.792 295.9 +17.9600 -1026.925 -1036.685 9.760 294.9 +17.9800 -1026.914 -1037.483 10.569 319.4 +18.0000 -1026.914 -1037.600 10.686 322.9 +18.0200 -1026.927 -1037.064 10.137 306.3 +18.0400 -1026.945 -1037.064 10.119 305.8 +18.0600 -1026.965 -1037.128 10.163 307.1 +18.0800 -1026.988 -1037.211 10.224 309.0 +18.1000 -1027.016 -1037.333 10.317 311.8 +18.1200 -1027.049 -1037.156 10.107 305.4 +18.1400 -1027.083 -1037.006 9.923 299.9 +18.1600 -1027.116 -1037.109 9.993 302.0 +18.1800 -1027.148 -1037.199 10.051 303.7 +18.2000 -1027.183 -1037.407 10.224 309.0 +18.2200 -1027.223 -1037.592 10.369 313.3 +18.2400 -1027.271 -1037.509 10.238 309.4 +18.2600 -1027.322 -1037.316 9.994 302.0 +18.2800 -1027.373 -1037.324 9.952 300.7 +18.3000 -1027.426 -1037.641 10.215 308.7 +18.3200 -1027.483 -1037.518 10.035 303.3 +18.3400 -1027.538 -1037.133 9.596 290.0 +18.3600 -1027.586 -1037.174 9.588 289.7 +18.3800 -1027.628 -1037.292 9.663 292.0 +18.4000 -1027.665 -1037.419 9.754 294.8 +18.4200 -1027.701 -1037.909 10.208 308.5 +18.4400 -1027.745 -1038.246 10.501 317.3 +18.4600 -1027.801 -1038.109 10.308 311.5 +18.4800 -1027.865 -1037.657 9.792 295.9 +18.5000 -1027.925 -1037.154 9.229 278.9 +18.5200 -1027.974 -1036.912 8.938 270.1 +18.5400 -1028.008 -1037.197 9.188 277.7 +18.5600 -1028.035 -1037.741 9.706 293.3 +18.5800 -1028.061 -1038.001 9.940 300.4 +18.6000 -1028.093 -1038.070 9.977 301.5 +18.6200 -1028.133 -1038.059 9.926 300.0 +18.6400 -1028.185 -1037.932 9.747 294.5 +18.6600 -1028.248 -1037.811 9.562 289.0 +18.6800 -1028.326 -1037.979 9.653 291.7 +18.7000 -1028.420 -1037.968 9.548 288.5 +18.7200 -1028.523 -1037.444 8.921 269.6 +18.7400 -1028.622 -1037.392 8.770 265.0 +18.7600 -1028.718 -1037.949 9.231 279.0 +18.7800 -1028.813 -1038.388 9.575 289.4 +18.8000 -1028.911 -1038.595 9.684 292.7 +18.8200 -1029.008 -1038.568 9.560 288.9 +18.8400 -1029.098 -1038.316 9.218 278.6 +18.8600 -1029.173 -1037.969 8.796 265.8 +18.8800 -1029.227 -1038.001 8.773 265.1 +18.9000 -1029.264 -1038.425 9.160 276.8 +18.9200 -1029.288 -1038.633 9.346 282.4 +18.9400 -1029.299 -1038.240 8.940 270.2 +18.9600 -1029.293 -1037.886 8.592 259.7 +18.9800 -1029.265 -1037.977 8.712 263.3 +19.0000 -1029.212 -1038.279 9.067 274.0 +19.0200 -1029.139 -1038.462 9.323 281.7 +19.0400 -1029.051 -1038.203 9.153 276.6 +19.0600 -1028.948 -1038.033 9.085 274.6 +19.0800 -1028.829 -1038.196 9.367 283.1 +19.1000 -1028.696 -1038.302 9.605 290.3 +19.1200 -1028.561 -1038.192 9.631 291.1 +19.1400 -1028.429 -1037.977 9.548 288.5 +19.1600 -1028.302 -1037.930 9.627 290.9 +19.1800 -1028.182 -1037.803 9.621 290.7 +19.2000 -1028.070 -1037.504 9.434 285.1 +19.2200 -1027.965 -1037.362 9.396 284.0 +19.2400 -1027.864 -1037.747 9.883 298.7 +19.2600 -1027.770 -1037.904 10.134 306.2 +19.2800 -1027.691 -1037.293 9.602 290.2 +19.3000 -1027.619 -1037.170 9.551 288.6 +19.3200 -1027.549 -1037.570 10.021 302.8 +19.3400 -1027.483 -1037.315 9.831 297.1 +19.3600 -1027.424 -1037.088 9.664 292.1 +19.3800 -1027.365 -1037.816 10.451 315.8 +19.4000 -1027.317 -1038.300 10.983 331.9 +19.4200 -1027.290 -1037.271 9.982 301.6 +19.4400 -1027.268 -1036.432 9.164 277.0 +19.4600 -1027.237 -1037.078 9.841 297.4 +19.4800 -1027.202 -1037.693 10.491 317.1 +19.5000 -1027.176 -1037.506 10.330 312.2 +19.5200 -1027.159 -1037.034 9.875 298.4 +19.5400 -1027.142 -1037.271 10.129 306.1 +19.5600 -1027.131 -1037.960 10.829 327.3 +19.5800 -1027.136 -1037.643 10.507 317.5 +19.6000 -1027.150 -1036.687 9.537 288.2 +19.6200 -1027.160 -1036.859 9.699 293.1 +19.6400 -1027.168 -1037.511 10.343 312.6 +19.6600 -1027.183 -1037.395 10.213 308.6 +19.6800 -1027.202 -1036.575 9.373 283.3 +19.7000 -1027.212 -1036.440 9.228 278.9 +19.7200 -1027.214 -1037.895 10.681 322.8 +19.7400 -1027.234 -1038.762 11.529 348.4 +19.7600 -1027.285 -1037.595 10.310 311.6 +19.7800 -1027.346 -1036.661 9.315 281.5 +19.8000 -1027.408 -1037.401 9.992 302.0 +19.8200 -1027.484 -1037.851 10.367 313.3 +19.8400 -1027.576 -1037.281 9.705 293.3 +19.8600 -1027.671 -1036.946 9.275 280.3 +19.8800 -1027.767 -1037.364 9.598 290.0 +19.9000 -1027.871 -1037.825 9.954 300.8 +19.9200 -1027.984 -1037.682 9.698 293.1 +19.9400 -1028.098 -1037.595 9.497 287.0 +19.9600 -1028.213 -1037.916 9.702 293.2 +19.9800 -1028.330 -1038.123 9.793 295.9 +20.0000 -1028.445 -1038.129 9.683 292.6 diff --git a/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/md_inputs.json b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/md_inputs.json new file mode 100644 index 00000000..2fa2383a --- /dev/null +++ b/skills/mat-md-monitors/examples/Cu_nvt_equilibration/stage2_production/md_inputs.json @@ -0,0 +1,15 @@ +{ + "model_name": "MACE-MP-small", + "prediction_head": null, + "temperature": 300.0, + "steps": 10000, + "timestep": 2.0, + "ensemble": "nvt", + "log_interval": 10, + "pressure": 0.0, + "pressure_mask": null, + "monitor": true, + "monitor_type": "explosion", + "monitor_params": null, + "supercell_min_length": null +} From 940d7a2a09083d18beb192fb48df124c539c6509 Mon Sep 17 00:00:00 2001 From: bowen-bd Date: Sat, 10 Oct 2026 13:39:03 -0400 Subject: [PATCH 03/12] feat(chem-nmr-analysis): add window baseline and ppm range; add validated examples --baseline-correct subtracts only the minimum, which leaves a pedestal under noisy or offset spectra and biases fractions toward 50:50. deconvolve.py and kinetics.py gain --baseline-window/--baseline_window (median or max of a signal-free window, applied to mixture and references alike) and --ppm-range/--ppm_range. The noise fraction is now reported, and the deconvolution plot scales components by area rather than peak height. Examples: camphor reduction borneol/isoborneol ratio (Lopansri et al. 2022) and a synthetic kinetics series validated against its reference-free rate constant. Corrects the isoborneol reference to Lopansri et al. Co-Authored-By: Claude Opus 5.5 (1M context) --- .agents/workflows/nmr-reaction-kinetics.md | 12 +- .../reaction-to-nmr-quantification.md | 8 +- skills/chem-nmr-analysis/SKILL.md | 41 ++- .../examples/deconvolution/README.md | 206 +++++++++++ .../full_range/deconvolution_result_fit.png | Bin 0 -> 117340 bytes .../output/full_range/deconvolve_result.json | 1 + .../output/full_range/input_configs.yaml | 21 ++ .../output/h2_window/deconvolution_result.png | Bin 0 -> 120270 bytes .../h2_window/deconvolution_result_fit.png | Bin 0 -> 91646 bytes .../output/h2_window/deconvolve_result.json | 1 + .../output/h2_window/input_configs.yaml | 23 ++ .../legacy_min/deconvolution_result_fit.png | Bin 0 -> 114582 bytes .../output/legacy_min/deconvolve_result.json | 1 + .../output/legacy_min/input_configs.yaml | 19 + .../output/overlay/input_configs.yaml | 13 + .../output/overlay/spectra_overview.png | Bin 0 -> 102423 bytes .../examples/kinetics/README.md | 200 ++++++++++ .../output/legacy_min/input_configs.yaml | 36 ++ .../kinetics/output/legacy_min/kinetics.csv | 9 + .../output/legacy_min/kinetics_plot.png | Bin 0 -> 122164 bytes .../output/validation/input_configs.yaml | 34 ++ .../output/validation/validation.json | 209 +++++++++++ .../kinetics/output/validation/validation.png | Bin 0 -> 80114 bytes .../output/validation/validation_summary.txt | 11 + .../output/window_baseline/input_configs.yaml | 38 ++ .../output/window_baseline/kinetics.csv | 9 + .../output/window_baseline/kinetics_plot.png | Bin 0 -> 121446 bytes .../examples/kinetics/validate_kinetics.py | 343 ++++++++++++++++++ .../chem-nmr-analysis/scripts/deconvolve.py | 105 +++++- skills/chem-nmr-analysis/scripts/kinetics.py | 79 +++- skills/chem-nmr-analysis/scripts/plot.py | 22 +- skills/chem-nmr-analysis/scripts/spectra.py | 130 ++++++- tests/test_chem_nmr_baseline.py | 135 +++++++ 33 files changed, 1649 insertions(+), 57 deletions(-) create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/README.md create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolution_result_fit.png create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolve_result.json create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/full_range/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result.png create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result_fit.png create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/legacy_min/deconvolution_result_fit.png create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/legacy_min/deconvolve_result.json create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/legacy_min/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/overlay/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/deconvolution/output/overlay/spectra_overview.png create mode 100644 skills/chem-nmr-analysis/examples/kinetics/README.md create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics.csv create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics_plot.png create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/validation/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.json create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.png create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/validation/validation_summary.txt create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/input_configs.yaml create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics.csv create mode 100644 skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics_plot.png create mode 100644 skills/chem-nmr-analysis/examples/kinetics/validate_kinetics.py create mode 100644 tests/test_chem_nmr_baseline.py diff --git a/.agents/workflows/nmr-reaction-kinetics.md b/.agents/workflows/nmr-reaction-kinetics.md index e09024de..14b7e3cb 100644 --- a/.agents/workflows/nmr-reaction-kinetics.md +++ b/.agents/workflows/nmr-reaction-kinetics.md @@ -18,9 +18,9 @@ Follow Steps 0–5 of the `reaction-to-nmr-quantification.md` workflow to identi Perform Wasserstein deconvolution at each time point and assemble kinetics curves. - *Skill Reference:* `chem-nmr-analysis` (`kinetics.py`) -- **Action:** Pass all reference spectra, all time-point crude spectra (in chronological order), corresponding time values, proton counts, and component names to `kinetics.py`. -- **Output:** `kinetics.csv` (mole fractions + Wasserstein distance per time point) and `kinetics_plot.png` (mole fraction vs time + fit quality vs time). -- **Decision:** Inspect the kinetics plot. If curves are non-monotonic or a Wasserstein distance spike occurs at a single time point, that spectrum likely has baseline or phasing issues — consider excluding it and re-running. If all WD values exceed 0.15, the fit is poor across the board; revisit reference alignment (Step 5) before trusting the kinetics. +- **Action:** Pass all reference spectra, all time-point crude spectra (in chronological order), corresponding time values, proton counts, and component names to `kinetics.py`, with `--baseline_window LO HI` set to a ppm stretch that is signal-free in every time point and reference. Do not use the legacy `--baseline_correct` on noisy spectra: each spectrum's minimum is a noise excursion, and subtracting it biases all fractions toward an even mixture. +- **Output:** `kinetics.csv` (mole fractions, Wasserstein distance, noise fraction and subtracted baseline per time point) and `kinetics_plot.png` (mole fraction vs time + fit quality vs time). +- **Decision:** Inspect the kinetics plot and the `noise_fraction` column. If curves are non-monotonic or a WD or noise spike occurs at a single time point, that spectrum likely has baseline or phasing issues — consider excluding it and re-running. If all WD values exceed 0.15, or noise fractions exceed about 0.2, revisit reference alignment and the baseline window (Step 5) before trusting the kinetics. ## Summary Checklist for the Agent When tasked with "extract kinetics from NMR time series": @@ -29,9 +29,9 @@ When tasked with "extract kinetics from NMR time series": 3. [ ] Resolve names to SMILES. (`drug-db-pubchem`) 4. [ ] Predict products via ReactionT5. (`chem-nmr-analysis` `predict_products.py`) 5. [ ] Generate reference spectra. (`chem-nmr-predict`) -6. [ ] Visual inspection of overlay. (`chem-nmr-analysis` `plot.py`) -7. [ ] Run kinetics deconvolution. (`chem-nmr-analysis` `kinetics.py`) -8. [ ] Inspect kinetics plot and verify chemical plausibility. +6. [ ] Visual inspection of overlay; choose a signal-free baseline window. (`chem-nmr-analysis` `plot.py`) +7. [ ] Run kinetics deconvolution with `--baseline_window`. (`chem-nmr-analysis` `kinetics.py`) +8. [ ] Inspect kinetics plot and noise fractions, and verify chemical plausibility. ## References - Ciach, M. et al., "Masserstein: linear resampling of mass spectra by optimal transport", *Rapid Commun. Mass Spectrom.*, 2020. diff --git a/.agents/workflows/reaction-to-nmr-quantification.md b/.agents/workflows/reaction-to-nmr-quantification.md index 5abf0e9c..a4992596 100644 --- a/.agents/workflows/reaction-to-nmr-quantification.md +++ b/.agents/workflows/reaction-to-nmr-quantification.md @@ -50,16 +50,16 @@ Predict 1H NMR spectra for all identified species (reactants + products + solven Overlay the crude spectrum with all references to verify alignment before deconvolution. - *Skill Reference:* `chem-nmr-analysis` (`plot.py`) -- **Action:** Generate an overlay plot and inspect it. Check that reference peaks align with mixture peaks and that no major mixture peaks are unaccounted for. +- **Action:** Generate an overlay plot and inspect it. Check that reference peaks align with mixture peaks and that no major mixture peaks are unaccounted for. Pick a signal-free ppm stretch (no peaks in the mixture or any reference) for the baseline window of Step 6, and note any isolated diagnostic signals that could be fitted on their own with `--ppm-range`. - **Decision:** If peaks don't align, ask the user about ppm referencing. If major peaks are unmatched, revisit Step 1 for missing components. ### Step 6: Deconvolution Quantify component mole fractions via Wasserstein-distance deconvolution. - *Skill Reference:* `chem-nmr-analysis` (`deconvolve.py`) -- **Action:** Run `deconvolve.py` with the crude spectrum, all reference spectra, proton counts, and component names. Always use `--plot` and `--json`. -- **Output:** Estimated mole fractions, Wasserstein distance (fit quality), and a multi-panel deconvolution plot. -- **Decision:** Review the Wasserstein distance. If WD > 0.15, the fit is poor — check for missing components or ppm offsets before trusting the proportions. If the proportions contradict known chemistry, flag this to the user. +- **Action:** Run `deconvolve.py` with the crude spectrum, all reference spectra, proton counts, and component names, and `--baseline-window LO HI` set to the signal-free stretch from Step 5 (add `--baseline-stat max` for digitized spectra, whose baseline is a one-sided floor). Do not use the legacy `--baseline-correct` (minimum subtraction) on noisy or digitized spectra. Always use `--plot` and `--json`. +- **Output:** Estimated mole fractions, Wasserstein distance (fit quality), unexplained (noise) signal fraction, subtracted baselines, and a multi-panel deconvolution plot. +- **Decision:** Review the Wasserstein distance *and* the noise fraction. If WD > 0.15, the fit is poor — check for missing components or ppm offsets before trusting the proportions. If the noise fraction exceeds about 0.2, revisit the baseline window/statistic and consider restricting `--ppm-range` to diagnostic signals, even when WD looks acceptable. If the proportions contradict known chemistry, flag this to the user. ## References - Ciach, M. et al., "Masserstein: linear resampling of mass spectra by optimal transport", *Rapid Commun. Mass Spectrom.*, 2020. diff --git a/skills/chem-nmr-analysis/SKILL.md b/skills/chem-nmr-analysis/SKILL.md index 7a2ca093..191fcf9b 100644 --- a/skills/chem-nmr-analysis/SKILL.md +++ b/skills/chem-nmr-analysis/SKILL.md @@ -60,11 +60,19 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/deconv mixture.csv ref_borneol.xy ref_isoborneol.xy \ --protons 18 18 \ --names "borneol" "isoborneol" \ - --baseline-correct \ + --baseline-window 3.70 3.94 \ + --ppm-range 3.50 4.10 \ --plot /deconvolution_result.png \ --json ``` +Choose `--baseline-window` from the overlay plot: a stretch with no signal in the +mixture or any reference, preferably close to the peaks being quantified. Add +`--baseline-stat max` when the baseline is a one-sided floor rather than noise (e.g. +digitized spectra, whose traced flat line leaves a small positive residue). Use +`--ppm-range` to fit only a region where each component has an isolated diagnostic +signal; omit it to fit the full spectrum. + ### kinetics.py The agent should use this script when the user has crude NMR spectra recorded at multiple time points during a reaction. @@ -77,10 +85,15 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/kineti --time_unit min \ --protons 18 18 \ --names "reactant" "product" \ - --baseline_correct \ + --baseline_window 2.40 3.40 \ --output_dir /kinetics/ ``` +`kinetics.py` takes the same baseline and range options as `deconvolve.py`, spelled +with underscores (`--baseline_window`, `--baseline_stat`, `--ppm_range`). +`kinetics.csv` also records the noise fraction and the subtracted baseline of every +time point. + ### plot.py The agent should use this script to overlay or stack spectra for visual inspection before or after deconvolution. @@ -97,11 +110,17 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/plot.p ## Key Arguments for deconvolve.py +`kinetics.py` accepts the same baseline and range options with underscores +(`--baseline_window`, `--baseline_stat`, `--ppm_range`, `--baseline_correct`). + | Argument | Required | Description | |---|---|---| | `--protons` | Yes | Number of 1H protons per molecule for each reference component. Critical for converting area fractions to mole fractions. The agent must look this up from the molecular formula or count from the SMILES. | | `--names` | No | Human-readable labels matching the order of reference files. The agent should always provide these for interpretable output. | -| `--baseline-correct` | No | Shifts each spectrum so minimum intensity = 0. The agent should use this for digitized spectra or SPINUS-predicted spectra. | +| `--baseline-window LO HI` | Recommended | Signal-free ppm window. Its `--baseline-stat` is subtracted from the mixture and every reference, and negatives are clipped to 0. If a spectrum has no samples in the window (dropped zero runs), the points bounding the gap are used. The agent should use this for any spectrum with noise or a baseline offset. | +| `--baseline-stat` | No | `median` (default) for noisy or offset baselines; `max` for one-sided floors such as the residue of a digitized flat line, which a median only half removes. `max` subtracts about 3σ from every peak of a noisy spectrum, so do not use it there. | +| `--ppm-range LO HI` | No | Deconvolve only this range, applied after the baseline step. Use it to fit isolated diagnostic signals. | +| `--baseline-correct` | No | Legacy: shifts each spectrum so its minimum is 0. Exact only for noise-free spectra with a constant offset. On noisy spectra the minimum is several σ below the baseline, which leaves a positive pedestal and pulls fractions toward an even mixture; on a reference floor with a zero-valued minimum it removes nothing. Mutually exclusive with `--baseline-window`. | | `--kappa` | No | Denoising penalty (default 0.25). The agent should not change this unless instructed. | | `--plot` | No | Output plot path. The agent should always generate a plot. | | `--json` | No | Emit machine-readable JSON output. The agent should always use this. | @@ -110,7 +129,9 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/plot.p ## Interpreting Results -The deconvolution output contains proportions and a Wasserstein distance (WD) indicating fit quality. +The deconvolution output contains proportions, a Wasserstein distance (WD) indicating fit quality, and the unexplained ("noise") signal fraction, the share of the mixture signal not assigned to any reference (printed, and `"noise"` in the JSON; the `noise_fraction` column in `kinetics.csv`). + +**Check the noise fraction as well as WD.** A baseline error can give a WD in the "acceptable" band while biasing the proportions badly. In the bundled examples, legacy minimum subtraction gave WD 0.11–0.14 with noise fractions of 0.36–0.43 and fractions off by up to 23 points. If the noise fraction exceeds about 0.2, the agent should inspect the residual panel, revisit the baseline (`--baseline-window`, `--baseline-stat`), and consider `--ppm-range` before reporting proportions. **If/Then rules for Wasserstein distance:** - **If WD < 0.05** -- good fit. The agent should report proportions with confidence. @@ -121,7 +142,7 @@ The deconvolution output contains proportions and a Wasserstein distance (WD) in 3. Ask the user if there are additional species in the mixture not accounted for. 4. Not report proportions as reliable. -**If proportions do not sum to ~1.0** -- the agent should note that the "noise" fraction represents unmatched signal and explain what it might be. +**The reported proportions are renormalized to sum to 1** over the supplied references. The "noise" fraction is reported separately; the agent should state it and explain what the unmatched signal might be (a missing component, residual baseline, distorted lineshapes). **Verification:** After deconvolution, the agent must inspect the deconvolution plot, check the residual panel for large residuals, and verify that proportions are chemically reasonable. If results contradict known chemistry, the agent should flag this to the user rather than silently accepting. @@ -156,18 +177,26 @@ Required packages: `numpy`, `scipy` (>= 1.7), `matplotlib`, `rdkit`, `requests`, | SPINUS returns no atoms | `chem-nmr-predict` prints FAILED for a compound | The SMILES may be invalid or the molecule too large. The agent should verify the SMILES and retry, or ask the user for a measured reference spectrum. | | ReactionT5 returns no products | `predict_products.py` returns empty products list | The agent should use its own chemistry knowledge to suggest products and ask the user to confirm. | | Wasserstein distance very high (> 0.15) | Deconvolution result unreliable | Missing component, ppm offset, or baseline issue. The agent should investigate and not report proportions as reliable. | +| High noise fraction (> ~0.2) with an "acceptable" WD | Proportions biased toward an even mixture or toward one component | Usually a baseline problem: legacy `--baseline-correct` on noisy spectra, or a positive floor on the references. The agent should rerun with `--baseline-window` (and `--baseline-stat max` for digitized floors), and restrict `--ppm-range` to diagnostic signals if the rest of the spectrum is distorted. | | Proportions are all near zero except one | One component dominates | May be correct (e.g., >95% product), or may indicate missing starting material reference. The agent should check. | | nmrsim simulation fails | Warning in `chem-nmr-predict` output | Falls back to stick spectrum (shifts only, no multiplet structure). The agent should note reduced accuracy of that reference. | | kinetics curves are non-monotonic | Composition jumps up and down over time | Likely a mislabeled time point, phasing issue, or missing component. The agent should investigate individual spectra. | --- +## Examples + +- [Camphor reduction: borneol/isoborneol ratio from a crude spectrum](examples/deconvolution/README.md) — `deconvolve.py --baseline-window --ppm-range` gives 13:87 (direct integral 12.6:87.4; 17:83 reported by Lopansri et al. 2022); legacy `--baseline-correct` gives 6:94. +- [Two-component time series: composition and rate constant](examples/kinetics/README.md) — `kinetics.py --baseline_window` on a synthetic series recovers the reference-free first-order k within 5 % (0.9σ); legacy `--baseline_correct` is 13 % low. + +--- + ## References - Ciach, M. et al., "Masserstein: linear resampling of mass spectra by optimal transport", *Rapid Commun. Mass Spectrom.*, 2020. - Domzal, B. et al., "Magnetstein: Wasserstein-distance NMR mixture analysis", *Anal. Chem.*, 2024. - Sagawa, Y. et al., "ReactionT5: a large-scale pretrained model towards chemical reaction prediction", *arXiv*, 2023. -- Dhawan, N. et al., "Synthesis of Isoborneol", *World J. Chem. Educ.*, 2022. +- Lopansri, S. et al., "NMR Deconvolution: Quantitative Profiling of Isomeric Mixtures", *World J. Chem. Educ.* 10(2), 51–61, 2022. [DOI](https://doi.org/10.12691/wjce-10-2-1) --- diff --git a/skills/chem-nmr-analysis/examples/deconvolution/README.md b/skills/chem-nmr-analysis/examples/deconvolution/README.md new file mode 100644 index 00000000..0bfde934 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/deconvolution/README.md @@ -0,0 +1,206 @@ +# Camphor reduction: borneol/isoborneol ratio from a crude 1H NMR spectrum + +## Goal + +Quantify the two diastereomeric alcohols formed by NaBH4 reduction of camphor, +borneol (endo-OH, minor) and isoborneol (exo-OH, major), from the crude 1H NMR +spectrum by Wasserstein deconvolution against the spectra of the two separated +products, and compare the ratio with the value reported for the same spectra by +Lopansri et al., *World J. Chem. Educ.* 2022. + +Both alcohols are C10H18O (18 H), so `--protons 18 18` and the mole fraction +equals the signal fraction. The diagnostic signals are the carbinol H2 +multiplets: borneol H2-exo near 4.0 ppm, isoborneol H2-endo near 3.6 ppm. + +## Inputs and provenance + +| File | Content | +| :--- | :--- | +| `crude.csv` | Crude reaction mixture, 0.75–4.05 ppm, 264 points (0.005 ppm grid, zero-baseline runs removed) | +| `borneol.csv` | Borneol-enriched sample (the "minor" product), 0.80–4.12 ppm, 591 points | +| `isoborneol.csv` | Isoborneol sample (the "major" product), 0.75–4.12 ppm, 648 points | + +All three files were added with the skill in commit `b8cd591` (PR #18, re-landed in +#20). Neither the commit nor the PR records where they came from. They appear to be +digitized from **Figure 6 of Lopansri et al. (2022)**, the stacked 1H spectra of the +"crude reaction mixture", "isoborneol (major)" and "borneol (minor)" samples +(CC BY 4.0). Four things point that way: the same three samples, the same 0.8–4.1 ppm +window, the same features (including the small 3.6 ppm isoborneol peak inside the +borneol-enriched trace), and smooth lineshapes on a coarse 0.005 ppm grid. This is an +inference, not documented provenance. Two properties of the digitized data matter +below: + +- The two reference traces carry a non-zero floor of 0.002–0.006 intensity units + (at most 0.0063 in the signal-free regions; 7–9 % of each trace's summed + intensity). This is the residue of a traced flat baseline. The crude trace has an + exact-zero baseline. `--baseline-correct` subtracts only the minimum (≈0), so it + leaves this floor in place. The floor is one-sided and non-random (a sawtooth + between about 0.0027 and 0.0063), so a window *median* removes only part of it; + `--baseline-stat max` subtracts its upper envelope. +- The "borneol" sample is *enriched*, not pure. 7.2 % of its H2 signal sits at the + isoborneol position (3.6 ppm). In the crude trace the aliphatic peaks (0.8–1.9 ppm) + of the published figure run past the panel and overlap the traces above it, so + that region of the digitized crude is distorted. + +The World J. Chem. Educ. 2022 article that reports these borneol/isoborneol spectra +and their ratio is Lopansri et al., which the skill's References list cites. + +## Commands + +All commands run from the repository root. Each run takes about 1 s on a CPU. + +**1. Visual inspection.** Overlay the crude spectrum with the references: + +```bash +venv/run cpu python skills/chem-nmr-analysis/scripts/plot.py \ + skills/chem-nmr-analysis/examples/deconvolution/crude.csv \ + skills/chem-nmr-analysis/examples/deconvolution/borneol.csv \ + skills/chem-nmr-analysis/examples/deconvolution/isoborneol.csv \ + --labels "Crude mixture" "borneol (enriched)" "isoborneol" \ + --title "Crude camphor reduction vs references" \ + --output skills/chem-nmr-analysis/examples/deconvolution/output/overlay/spectra_overview.png +``` + +The overlay shows a signal-free stretch between the two H2 multiplets +(3.70–3.94 ppm), next to the diagnostic window, which is used below for the baseline. + +**2. Run A: legacy minimum subtraction (`--baseline-correct`)**, kept as the biased contrast: + +```bash +D=skills/chem-nmr-analysis/examples/deconvolution +mkdir -p $D/output/legacy_min +venv/run cpu python skills/chem-nmr-analysis/scripts/deconvolve.py \ + $D/crude.csv $D/borneol.csv $D/isoborneol.csv \ + --protons 18 18 --names borneol isoborneol --baseline-correct --json \ + --plot $D/output/legacy_min/deconvolution_result.png \ + | grep '^JSON:' | cut -c7- > $D/output/legacy_min/deconvolve_result.json +``` + +**3. Run B: full range, window baseline.** The `max` of 3.70–3.94 ppm is subtracted +from the crude and from both references. The crude has no samples there (its +zero-intensity runs were dropped), so its estimate comes from the zero-valued points +bounding the gap. + +```bash +D=skills/chem-nmr-analysis/examples/deconvolution +mkdir -p $D/output/full_range +venv/run cpu python skills/chem-nmr-analysis/scripts/deconvolve.py \ + $D/crude.csv $D/borneol.csv $D/isoborneol.csv \ + --protons 18 18 --names borneol isoborneol \ + --baseline-window 3.70 3.94 --baseline-stat max --json \ + --plot $D/output/full_range/deconvolution_result.png \ + | grep '^JSON:' | cut -c7- > $D/output/full_range/deconvolve_result.json +``` + +**4. Run C (recommended): the 3.50–4.10 ppm diagnostic window** (the region Lopansri +et al. integrate), with the same baseline: + +```bash +D=skills/chem-nmr-analysis/examples/deconvolution +mkdir -p $D/output/h2_window +venv/run cpu python skills/chem-nmr-analysis/scripts/deconvolve.py \ + $D/crude.csv $D/borneol.csv $D/isoborneol.csv \ + --protons 18 18 --names borneol isoborneol \ + --baseline-window 3.70 3.94 --baseline-stat max --ppm-range 3.50 4.10 --json \ + --plot $D/output/h2_window/deconvolution_result.png \ + | grep '^JSON:' | cut -c7- > $D/output/h2_window/deconvolve_result.json +``` + +**5. Reference-free check.** Integrate the two H2 multiplets of the digitized crude +directly (uniform 0.005 ppm grid, so sums are proportional to areas): + +```bash +awk -F, '$1>=3.95 && $1<=4.06 {b+=$2} $1>=3.57 && $1<=3.67 {i+=$2} + END {printf "borneol %.2f %%\n", 100*b/(b+i)}' \ + skills/chem-nmr-analysis/examples/deconvolution/crude.csv +``` + +## Results + +| Run | Range | Baseline | borneol (%) | isoborneol (%) | WD | Unexplained (noise) fraction | +| :--- | :--- | :--- | ---: | ---: | ---: | ---: | +| A (legacy) | 0.75–4.12 ppm | minimum | 5.8 | 94.2 | 0.140 | 0.358 | +| B | 0.75–4.12 ppm | max of 3.70–3.94 ppm | 11.7 | 88.3 | 0.096 | 0.217 | +| C (recommended) | 3.50–4.10 ppm | max of 3.70–3.94 ppm | 13.1 | 86.9 | 0.003 | 0.000 | +| Direct H2 integral of `crude.csv` | 3.57–3.67 / 3.95–4.06 | none | 12.6 | 87.4 | – | – | + +Subtracted baselines (Runs B and C): crude 2×10⁻⁶, borneol 0.0047, isoborneol 0.0063, +as recorded in `deconvolve_result.json`. + +**Sensitivity to the baseline choice** (same commands, other options): +`--baseline-stat median` leaves about half of the one-sided floor and gives 9.5 % (B) +and 11.9 % (C). The max of the farther window 2.40–3.40 ppm, where the floor is +lower, gives 10.4 % and 12.4 %. The 3.70–3.94 ppm window sits next to the diagnostic +peaks, so its floor level is the one that matters there. + +- [output/overlay/spectra_overview.png](output/overlay/spectra_overview.png): the + H2 multiplets of the crude line up with the references at 4.0 and 3.6 ppm. The + crude aliphatic envelope does not match either reference closely. +- [output/legacy_min/deconvolution_result_fit.png](output/legacy_min/deconvolution_result_fit.png): + Run A. The fit reproduces the 3.6 ppm peak but leaves 36 % of the crude signal + unassigned, mostly in the 0.8–1.8 ppm envelope. +- [output/full_range/deconvolution_result_fit.png](output/full_range/deconvolution_result_fit.png): + Run B. The borneol signals at 4.0 and 2.3 ppm now match the crude in height. +- [output/h2_window/deconvolution_result.png](output/h2_window/deconvolution_result.png) + and [output/h2_window/deconvolution_result_fit.png](output/h2_window/deconvolution_result_fit.png): + Run C. Both multiplets are reproduced and the residual is small. + +`deconvolve_result.json` (proportions, WD, noise fraction and subtracted baselines) and +`input_configs.yaml` in each `output/` subfolder record the result and the full +argument set. The scripts also write SVG copies, and for Runs A and B the +component-panel PNG. Those files are not kept here, to keep the example small. + +## Literature comparison + +| Source | Method | borneol : isoborneol | +| :--- | :--- | :--- | +| Lopansri et al. 2022, Fig. 7 | 1H integration of the crude H2 multiplets (integrals 0.20 : 1.00) | 17 : 83 | +| Lopansri et al. 2022, Fig. 9 | 13C band deconvolution of the crude: 77.38/79.92, 45.01/45.07, 20.09/20.18 ppm pairs | 18 : 82, 20 : 80, 19 : 81 | +| Lopansri et al. 2022, text | stated composition, 1H and 13C | "approximately 1:4" | +| Alves & Victor 2010 | GC-FID; NaBH4 in methanol / in ethanol | ≈ 1 : 6 (≈ 14 : 86) / 1 : 3 (25 : 75) | +| **This example, Run C** | Wasserstein deconvolution, 3.50–4.10 ppm, window baseline | **13 : 87** | +| This example, Run A | legacy `--baseline-correct`, full range | 6 : 94 | + +**Verdict.** + +- **Run A (legacy minimum subtraction): fails validation.** It gives 5.8 % borneol, + against 17 % from the paper's own 1H integration of the same sample. The WD of + 0.140 falls in the "acceptable" band (0.05–0.15), so WD alone does not flag the + result. The 36 % unexplained-signal fraction and the comparison with known + selectivity do. The cause is the reference floor: the minimum is about 0, so + nothing is removed, and the floor, spread over the whole axis, absorbs signal the + crude does not have. The window baseline (Run B) doubles the borneol estimate. +- **Run C is consistent with the input and with the literature range.** It gives + 13.1 % borneol, within 0.5 points of the direct integral of the same digitized + crude (12.6 %), so the deconvolution recovers what the input contains. The + remaining 4-point gap to the paper's 17 % is already present in the input: the + borneol 4.0 ppm multiplet is about a tenth of the height of the 3.6 ppm peak in + the small stacked trace of Fig. 6, and its digitized area is smaller than the + integral the authors measured on the expanded spectrum (Fig. 7). Correcting for the + 7.2 % isoborneol content of the borneol-enriched reference would lower Run C to + about 12 %. Run C and the direct integral sit 1–1.5 points below the 14–25 % + borneol range that Alves & Victor report for NaBH4 reductions (GC); the paper's own + 17–20 % lies inside that range. + +**Practical guidance from this example.** Use `--baseline-window` on a signal-free +stretch close to the peaks being quantified. Use `--baseline-stat max` for one-sided +floors such as digitization residue, and the default `median` for noisy spectra. +When each component has an isolated diagnostic signal, restrict the fit with +`--ppm-range`. Do not rely on WD alone: check the unexplained (noise) fraction and +compare with known chemistry. + +## References + +- L. S. Lopansri, J. N. Letson, R. A. O'Brien, D. R. Battiste, D. C. Forbes, + "NMR Deconvolution: Quantitative Profiling of Isomeric Mixtures", + *World J. Chem. Educ.* **2022**, 10 (2), 51–61. + [doi:10.12691/wjce-10-2-1](https://doi.org/10.12691/wjce-10-2-1) +- P. B. Alves, M. M. Victor, "Reação da cânfora com boroidreto de sódio: uma + estratégia para o estudo da estereoquímica da reação de redução", + *Quím. Nova* **2010**, 33 (10), 2274–2278. + [doi:10.1590/S0100-40422010001000042](https://doi.org/10.1590/S0100-40422010001000042) +- B. Domżał, E. K. Nawrocka, D. Gołowicz, M. A. Ciach, B. Miasojedow, + K. Kazimierczuk, A. Gambin, "Magnetstein: An Open-Source Tool for Quantitative + NMR Mixture Analysis Robust to Low Resolution, Distorted Lineshapes, and Peak + Shifts", *Anal. Chem.* **2024**, 96 (1), 188–196. + [doi:10.1021/acs.analchem.3c03594](https://doi.org/10.1021/acs.analchem.3c03594) diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolution_result_fit.png b/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolution_result_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..2813bd9b79f658e69c9919504cf2710b6d977808 GIT binary patch literal 117340 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

    ?liO2qV5X6R(A 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 literal 0 HcmV?d00001 diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolve_result.json b/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolve_result.json new file mode 100644 index 00000000..8d1f66d4 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolve_result.json @@ -0,0 +1 @@ +{"proportions": {"borneol": 0.11663145152696147, "isoborneol": 0.8833685484730385}, "Wasserstein distance": 0.09622979595595084, "noise": 0.2170601234426386, "baselines": {"mixture": 1.9018900606976861e-06, "borneol": 0.00471596572501887, "isoborneol": 0.00629459086901833}} diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/input_configs.yaml b/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/input_configs.yaml new file mode 100644 index 00000000..43ed414a --- /dev/null +++ b/skills/chem-nmr-analysis/examples/deconvolution/output/full_range/input_configs.yaml @@ -0,0 +1,21 @@ +mixture: skills/chem-nmr-analysis/examples/deconvolution/crude.csv +components: +- skills/chem-nmr-analysis/examples/deconvolution/borneol.csv +- skills/chem-nmr-analysis/examples/deconvolution/isoborneol.csv +protons: +- 18 +- 18 +names: +- borneol +- isoborneol +kappa: 0.25 +mnova: false +baseline_correct: false +baseline_window: +- 3.7 +- 3.94 +baseline_stat: max +ppm_range: null +plot: skills/chem-nmr-analysis/examples/deconvolution/output/full_range/deconvolution_result.png +json: true +quiet: false diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result.png b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result.png new file mode 100644 index 0000000000000000000000000000000000000000..b509cfbb6b1161e7d0dce2973cfabc6137b6c1c0 GIT binary patch literal 120270 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 literal 0 HcmV?d00001 diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result_fit.png b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..5c06872ce2536504b109b283a4a3b4b8132f4b8c GIT binary patch literal 91646 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

    QA2WV^t+?4~xzO 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 literal 0 HcmV?d00001 diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json new file mode 100644 index 00000000..3d7ead7a --- /dev/null +++ b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json @@ -0,0 +1 @@ +{"proportions": {"borneol": 0.13103552429003607, "isoborneol": 0.8689644757099639}, "Wasserstein distance": 0.0028563304400839873, "noise": 0.0, "baselines": {"mixture": 1.9018900606976861e-06, "borneol": 0.00471596572501887, "isoborneol": 0.00629459086901833}} diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml new file mode 100644 index 00000000..31a07971 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml @@ -0,0 +1,23 @@ +mixture: skills/chem-nmr-analysis/examples/deconvolution/crude.csv +components: +- skills/chem-nmr-analysis/examples/deconvolution/borneol.csv +- skills/chem-nmr-analysis/examples/deconvolution/isoborneol.csv +protons: +- 18 +- 18 +names: +- borneol +- isoborneol +kappa: 0.25 +mnova: false +baseline_correct: false +baseline_window: +- 3.7 +- 3.94 +baseline_stat: max +ppm_range: +- 3.5 +- 4.1 +plot: skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result.png +json: true +quiet: false diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/legacy_min/deconvolution_result_fit.png b/skills/chem-nmr-analysis/examples/deconvolution/output/legacy_min/deconvolution_result_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..0df7d93c1fda91aedde984416742a5febdd76980 GIT binary patch literal 114582 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 <91juN;`uXLJlKQ@;%w#LX(oM$3 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 Gg#3T1p$Xam literal 0 HcmV?d00001 diff --git a/skills/chem-nmr-analysis/examples/kinetics/README.md b/skills/chem-nmr-analysis/examples/kinetics/README.md new file mode 100644 index 00000000..c53b9a37 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/README.md @@ -0,0 +1,200 @@ +# Two-component NMR time series: recovering composition and rate constant + +## Goal + +Run `kinetics.py` on a series of eight 1H spectra (0–90 min) that change from +borneol-like to isoborneol-like, and check whether the recovered mole-fraction +trajectory and its first-order rate constant are correct. + +**Type of validation.** This is a synthetic-data recovery test, not a literature +comparison. The series is a numerical mixture of two fixed spectra (see below). No +paper reports it, and no generator script, parameters or ground-truth composition were +committed with it. The ground truth is therefore reconstructed from the data +themselves, in two independent ways: a reference-free principal-component analysis +for the rate constant, and a least-squares decomposition for the composition. + +## Inputs and provenance + +| File | Content | +| :--- | :--- | +| `t000min.csv` … `t090min.csv` | 8 spectra at 0, 5, 10, 20, 30, 45, 60, 90 min; 1200 points on a uniform 0.80226–4.12285 ppm grid | +| `../deconvolution/borneol.csv`, `../deconvolution/isoborneol.csv` | Reference spectra (18 H each); see the [deconvolution example](../deconvolution/README.md) for their provenance | + +The eight files were added with the skill in commit `b8cd591` (PR #18, re-landed in +#20) and have not changed since. No commit, PR description or workflow +(`nmr-reaction-kinetics.md`, `reaction-to-nmr-quantification.md`) says how they were +made. Their structure shows they are synthetic: + +1. **Rank one.** After subtracting the mean spectrum, the 8 × 1200 matrix has one + dominant singular value (14.54, 95.2 % of the variance). The other six non-zero + values are flat at 1.25–1.42, the level expected for white noise + (σ√N = 0.0385·√1200 = 1.33). Every spectrum is therefore + w(t)·P_borneol + (1 − w(t))·P_isoborneol plus noise, for two fixed end-member + spectra. +2. **White noise** with a constant σ = 0.037–0.041 in the signal-free window + 2.40–3.40 ppm at every time point. +3. **End members related to the shipped references.** Least squares on the two + references plus a constant gives end-member scales s = 1.042 and 1.219 and + baselines o = −0.653 and −0.162. The fitted offsets obey c(t) = w·o₁ + (1 − w)·o₂ + to within 0.003. The end members reconstructed from the series have the same peak + positions as `borneol.csv` and `isoborneol.csv` (shift ≤ 0.002 ppm) but finer + multiplet structure (correlation 0.85–0.89). The common grid starts exactly at the + first ppm value of `borneol.csv`. + +Lopansri et al. (2022), the source of the reference spectra, contain no time series. +Despite the component names, this is a numerical test series, not a measured reaction. + +## Commands + +All commands run from the repository root. + +**1. Run A: legacy minimum subtraction (`--baseline_correct`)**, kept as the biased contrast: + +```bash +K=skills/chem-nmr-analysis/examples/kinetics +R=skills/chem-nmr-analysis/examples/deconvolution +venv/run cpu python skills/chem-nmr-analysis/scripts/kinetics.py \ + --refs $R/borneol.csv $R/isoborneol.csv \ + --timepoints $K/t000min.csv $K/t005min.csv $K/t010min.csv $K/t020min.csv \ + $K/t030min.csv $K/t045min.csv $K/t060min.csv $K/t090min.csv \ + --times 0 5 10 20 30 45 60 90 --time_unit min \ + --protons 18 18 --names borneol isoborneol --baseline_correct \ + --output_dir $K/output/legacy_min +``` + +**2. Run B (recommended): window baseline.** The median of the signal-free +2.40–3.40 ppm window is subtracted from every time point and both references, and +negatives are clipped to 0: + +```bash +K=skills/chem-nmr-analysis/examples/kinetics +R=skills/chem-nmr-analysis/examples/deconvolution +venv/run cpu python skills/chem-nmr-analysis/scripts/kinetics.py \ + --refs $R/borneol.csv $R/isoborneol.csv \ + --timepoints $K/t000min.csv $K/t005min.csv $K/t010min.csv $K/t020min.csv \ + $K/t030min.csv $K/t045min.csv $K/t060min.csv $K/t090min.csv \ + --times 0 5 10 20 30 45 60 90 --time_unit min \ + --protons 18 18 --names borneol isoborneol --baseline_window 2.40 3.40 \ + --output_dir $K/output/window_baseline +``` + +**3. Validation.** [validate_kinetics.py](validate_kinetics.py) builds the reference-free +and least-squares ground truth, then fits x(t) = x∞ + (x₀ − x∞)·e^(−kt) to every +trajectory: + +```bash +K=skills/chem-nmr-analysis/examples/kinetics +R=skills/chem-nmr-analysis/examples/deconvolution +mkdir -p $K/output/validation +venv/run cpu python $K/validate_kinetics.py \ + --timepoints $K/t000min.csv $K/t005min.csv $K/t010min.csv $K/t020min.csv \ + $K/t030min.csv $K/t045min.csv $K/t060min.csv $K/t090min.csv \ + --times 0 5 10 20 30 45 60 90 \ + --refs $R/borneol.csv $R/isoborneol.csv --names borneol isoborneol \ + --kinetics_csv $K/output/legacy_min/kinetics.csv $K/output/window_baseline/kinetics.csv \ + --labels legacy_min window_baseline \ + --output_dir $K/output/validation | tee $K/output/validation/validation_summary.txt +``` + +The two ground-truth estimates: + +- **Reference-free rate constant.** The PC1 scores are an affine function of w(t), so + their first-order fit gives the time constant of the generating trajectory without + any reference spectrum or baseline treatment. The fit residual (0.1 % of the score + span) is below the white-noise level (σ/span ≈ 0.3 %), so the first-order form + describes the generating trajectory to within noise. +- **Least-squares composition.** Each spectrum is regressed on the two references plus + a constant, and the two-end-member closure a/s₁ + b/s₂ = 1 (residual ≤ 0.014) turns + the amplitudes into the mixing weight w(t). Because the references differ from the + true end members (smoother multiplets), the absolute values of w(t) carry about + ±0.04 uncertainty (w(0) = 1.039); the time constant is unaffected. + +Each `kinetics.py` run takes about 2 s on a CPU. + +## Results + +Borneol mole fraction (%), Wasserstein distance and unexplained (noise) fraction per +time point (all from `kinetics.csv`): + +| t (min) | Least squares w(t) | Run A (legacy) | WD A | noise A | Run B (window) | WD B | noise B | +| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| 0 | 103.9 | 81.2 | 0.114 | 0.380 | 97.2 | 0.045 | 0.129 | +| 5 | 89.8 | 71.9 | 0.117 | 0.388 | 85.5 | 0.045 | 0.124 | +| 10 | 77.5 | 65.5 | 0.115 | 0.382 | 75.0 | 0.043 | 0.120 | +| 20 | 59.7 | 54.1 | 0.117 | 0.389 | 59.1 | 0.039 | 0.114 | +| 30 | 47.9 | 46.5 | 0.116 | 0.375 | 46.8 | 0.045 | 0.136 | +| 45 | 35.9 | 38.9 | 0.119 | 0.391 | 35.9 | 0.047 | 0.148 | +| 60 | 30.0 | 38.2 | 0.129 | 0.427 | 33.6 | 0.047 | 0.147 | +| 90 | 24.7 | 28.5 | 0.116 | 0.373 | 25.4 | 0.047 | 0.142 | + +Run B's subtracted time-point baselines (`mixture_baseline` column) run from −0.684 at +0 min to −0.284 at 90 min, within 0.011 of the least-squares offsets c(t). + +First-order fits, x(t) = x∞ + (x₀ − x∞)·e^(−kt): + +| Trajectory | k (min⁻¹) | k vs reference-free | x₀ | x∞ | mean / max abs. deviation from w(t) (pts) | +| :--- | ---: | ---: | ---: | ---: | ---: | +| **Reference-free (PC1 scores)** | **0.0391 ± 0.0002** (leave-one-out 0.0390–0.0393) | – | – | – | – | +| Least squares w(t) | 0.0389 ± 0.0004 | −0.6 % | 1.040 | 0.221 | – | +| Run A, legacy `--baseline_correct` | 0.0339 ± 0.0042 | −13.4 % | 0.806 | 0.279 | 9.3 / 22.7 | +| Run B, `--baseline_window 2.40 3.40` | 0.0372 ± 0.0022 | −4.8 % | 0.977 | 0.235 | 2.4 / 6.7 | + +**Sensitivity to the window** (same command, other signal-free windows): 2.45–3.55 ppm +gives k = 0.0369 (−5.7 %) and 3.70–3.94 ppm gives 0.0362 (−7.4 %), each within about +1σ of the reference-free value. + +- [output/validation/validation.png](output/validation/validation.png): borneol + fraction against time for the least-squares ground truth and both runs, each with + its first-order fit. +- [output/legacy_min/kinetics_plot.png](output/legacy_min/kinetics_plot.png): Run A. + Fractions are compressed toward 50 %, the 45 → 60 min step stalls (38.9 → 38.2 %), + and WD spikes to 0.129 at 60 min. +- [output/window_baseline/kinetics_plot.png](output/window_baseline/kinetics_plot.png): + Run B. A smooth monotonic trajectory, with WD at 0.039–0.047. + +`kinetics.csv` and `input_configs.yaml` in each run folder, plus `validation.json` +and `validation_summary.txt`, hold the full numbers. SVG copies are produced by the +scripts but not kept here. + +**Verdict.** + +- **Run A (legacy minimum subtraction): biased.** It is 23 points low at t = 0 and + 8 points high at 60 min, x∞ is 6 points high, and k is 13 % low (1.2σ). The spectra + carry white noise (σ ≈ 0.04), so each minimum is a noise excursion about 3σ below + the true baseline. Subtracting it leaves a positive pedestal of 0.10–0.15 under all + 1200 points, 60–70 % of the summed intensity. The deconvolution labels 37–43 % of + the signal as noise and spreads the rest of the pedestal over both components, + which pulls every fraction toward a 50:50 mixture. At 60 min the minimum is + unusually deep (pedestal 0.145 against 0.10–0.12 elsewhere), which explains the WD + spike and the stalled 45 → 60 min step. WD stays at 0.11–0.13, inside the skill's + "acceptable" band, so WD alone does not flag the bias; the noise fraction of about + 0.4 does. +- **Run B (window baseline): passes.** k = 0.0372 ± 0.0022 min⁻¹ is within 5 % (0.9σ) + of the reference-free 0.0391 min⁻¹. The trajectory follows w(t) to 2.4 points on + average; the largest deviation, 6.7 points, is at t = 0, where the least-squares + estimate itself exceeds 100 %. The plateau x∞ = 0.235 is 1.4 points above the + least-squares 0.221. WD drops to about 0.04, the "good" band, and the noise fraction + to 0.11–0.15 (the positive half of the clipped white noise). + + The window baseline is applied to the references as well, so their small + digitization floor (median 0.002–0.003 in this window) is removed, while the + synthetic end members appear to contain it. That end-member mismatch is the likely + source of the remaining ~5 % offset in k. + +**Practical guidance from this example.** For noisy spectra, pass `--baseline_window` +with a signal-free region (default median statistic), not `--baseline_correct`. Check +the noise fraction in `kinetics.csv` along with WD. Because PC1 gives a rate constant +that needs no reference spectra, it is a cheap cross-check on any deconvolved +kinetics. + +## References + +- B. Domżał, E. K. Nawrocka, D. Gołowicz, M. A. Ciach, B. Miasojedow, + K. Kazimierczuk, A. Gambin, "Magnetstein: An Open-Source Tool for Quantitative + NMR Mixture Analysis Robust to Low Resolution, Distorted Lineshapes, and Peak + Shifts", *Anal. Chem.* **2024**, 96 (1), 188–196. + [doi:10.1021/acs.analchem.3c03594](https://doi.org/10.1021/acs.analchem.3c03594) +- L. S. Lopansri, J. N. Letson, R. A. O'Brien, D. R. Battiste, D. C. Forbes, + "NMR Deconvolution: Quantitative Profiling of Isomeric Mixtures", + *World J. Chem. Educ.* **2022**, 10 (2), 51–61 (source of the reference spectra). + [doi:10.12691/wjce-10-2-1](https://doi.org/10.12691/wjce-10-2-1) diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/input_configs.yaml b/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/input_configs.yaml new file mode 100644 index 00000000..73283b32 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/input_configs.yaml @@ -0,0 +1,36 @@ +refs: +- skills/chem-nmr-analysis/examples/deconvolution/borneol.csv +- skills/chem-nmr-analysis/examples/deconvolution/isoborneol.csv +timepoints: +- skills/chem-nmr-analysis/examples/kinetics/t000min.csv +- skills/chem-nmr-analysis/examples/kinetics/t005min.csv +- skills/chem-nmr-analysis/examples/kinetics/t010min.csv +- skills/chem-nmr-analysis/examples/kinetics/t020min.csv +- skills/chem-nmr-analysis/examples/kinetics/t030min.csv +- skills/chem-nmr-analysis/examples/kinetics/t045min.csv +- skills/chem-nmr-analysis/examples/kinetics/t060min.csv +- skills/chem-nmr-analysis/examples/kinetics/t090min.csv +times: +- 0.0 +- 5.0 +- 10.0 +- 20.0 +- 30.0 +- 45.0 +- 60.0 +- 90.0 +time_unit: min +protons: +- 18 +- 18 +names: +- borneol +- isoborneol +baseline_correct: true +baseline_window: null +baseline_stat: median +ppm_range: null +kappa: 0.25 +mnova: false +output_dir: skills/chem-nmr-analysis/examples/kinetics/output/legacy_min +quiet: false diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics.csv b/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics.csv new file mode 100644 index 00000000..b7b92191 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics.csv @@ -0,0 +1,9 @@ +time_min,borneol,isoborneol,wasserstein_distance,noise_fraction,mixture_baseline +0.0,0.8119367013332526,0.1880632986667473,0.11449099552522637,0.3799038477786887,-0.794737 +5.0,0.7189721556402683,0.28102784435973166,0.11661948127334133,0.38793510278111476,-0.726637 +10.0,0.6546558883538582,0.34534411164614176,0.11484174385405237,0.38236144298009,-0.661324 +20.0,0.5412060279860639,0.458793972013936,0.11729401688227478,0.38943700403603543,-0.576394 +30.0,0.46453832249481497,0.5354616775051849,0.11555787284739685,0.37504896637596075,-0.504637 +45.0,0.3886671145072884,0.6113328854927115,0.11906181077597192,0.39073593751264457,-0.457611 +60.0,0.38210075895095236,0.6178992410490477,0.1293743852545909,0.4270939707480772,-0.453876 +90.0,0.28476232371328586,0.7152376762867141,0.11572923005902222,0.373459892870011,-0.384412 diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics_plot.png b/skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..0c26c7a8bfa52c2257e01cbcf5f7674ae46c694d GIT binary patch literal 122164 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

    -o3=#D<)?m6j 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�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 a|C7JAUgVH8$ID*~K;Y@>=d#Wzp$PyBSRQx) literal 0 HcmV?d00001 diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/validation/input_configs.yaml b/skills/chem-nmr-analysis/examples/kinetics/output/validation/input_configs.yaml new file mode 100644 index 00000000..e44eb8da --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/validation/input_configs.yaml @@ -0,0 +1,34 @@ +timepoints: +- skills/chem-nmr-analysis/examples/kinetics/t000min.csv +- skills/chem-nmr-analysis/examples/kinetics/t005min.csv +- skills/chem-nmr-analysis/examples/kinetics/t010min.csv +- skills/chem-nmr-analysis/examples/kinetics/t020min.csv +- skills/chem-nmr-analysis/examples/kinetics/t030min.csv +- skills/chem-nmr-analysis/examples/kinetics/t045min.csv +- skills/chem-nmr-analysis/examples/kinetics/t060min.csv +- skills/chem-nmr-analysis/examples/kinetics/t090min.csv +times: +- 0.0 +- 5.0 +- 10.0 +- 20.0 +- 30.0 +- 45.0 +- 60.0 +- 90.0 +refs: +- skills/chem-nmr-analysis/examples/deconvolution/borneol.csv +- skills/chem-nmr-analysis/examples/deconvolution/isoborneol.csv +names: +- borneol +- isoborneol +kinetics_csv: +- skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics.csv +- skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics.csv +labels: +- legacy_min +- window_baseline +signal_free: +- 2.4 +- 3.4 +output_dir: skills/chem-nmr-analysis/examples/kinetics/output/validation diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.json b/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.json new file mode 100644 index 00000000..5eb5161e --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.json @@ -0,0 +1,209 @@ +{ + "component": "borneol", + "times": [ + 0.0, + 5.0, + 10.0, + 20.0, + 30.0, + 45.0, + 60.0, + 90.0 + ], + "noise_sigma_per_spectrum": [ + 0.03773171601107826, + 0.03713270697249211, + 0.03939462622959069, + 0.03845097547621983, + 0.03787100997007147, + 0.040910914419921236, + 0.03894350641168704, + 0.037463034849226966 + ], + "min_subtraction_pedestal": [ + 0.11144805817174497, + 0.11416105540166177, + 0.11061096952908556, + 0.11465155124653731, + 0.10643840997229931, + 0.114392163434903, + 0.14499399722991713, + 0.10202918005540162 + ], + "min_subtraction_pedestal_fraction": [ + 0.5991393889913326, + 0.6017099525960762, + 0.6033106581485274, + 0.6243174127627475, + 0.6189212679360998, + 0.6369049951772001, + 0.6995833116365765, + 0.626479387073146 + ], + "singular_values_centred": [ + 14.53906905495701, + 1.4202067298479033, + 1.363418511217576, + 1.3443186650383363, + 1.3238465672164283, + 1.2734260704715674, + 1.2450464224591005, + 1.0136589421417212e-14 + ], + "expected_noise_singular_value": 1.3332395721078334, + "pc1_explained_variance": 0.9522171210351907, + "reference_free_pc1_fit": { + "k": 0.03913546687889511, + "k_err": 0.0001665655514962939, + "rms_over_span": 0.0010702477915136997, + "leave_one_out_k_range": [ + 0.03898021446342672, + 0.03926763881429241 + ] + }, + "lsq_fraction": [ + 1.0389133688429515, + 0.8981008601280225, + 0.775283428790098, + 0.5971795485021021, + 0.4792241898757994, + 0.35918580649657034, + 0.299662528506392, + 0.24744119303074003 + ], + "lsq_amplitudes": [ + [ + 1.0757929209033628, + -0.05574815958338355, + -0.6733089538990362 + ], + [ + 0.9372950880113425, + 0.12551886694670256, + -0.6018272582091668 + ], + [ + 0.8150534273925839, + 0.28193389886032677, + -0.5430178003359515 + ], + [ + 0.626047436586472, + 0.49503825371890703, + -0.45653630261141454 + ], + [ + 0.4980870081059519, + 0.6329183450113126, + -0.3952853975571825 + ], + [ + 0.37834569547489155, + 0.7854835184861191, + -0.3407082803813421 + ], + [ + 0.308445381156498, + 0.8488324010959721, + -0.3080921351466186 + ], + [ + 0.2544858081939595, + 0.9130209886596349, + -0.28283453414579296 + ] + ], + "lsq_endmember_scales": [ + 1.0423566986356425, + 1.2185599573181563 + ], + "lsq_closure_residual": [ + -0.01367168920492623, + 0.0022135232746642863, + 0.013299769764206326, + 0.006856259324230285, + -0.0027544052073644743, + 0.00757123549646832, + -0.007501966970330898, + -0.006593092143073687 + ], + "lsq_endmember_offsets": [ + -0.6533738437986188, + -0.16158091651427461 + ], + "lsq_offset_residual": [ + -0.0007977905266468577, + 0.0014333093040553857, + -0.00015797690195118452, + -0.0012667078249480879, + 0.001974586121579913, + -0.002482324651131129, + 0.0008606934592427784, + 0.0004362110197997371 + ], + "lsq_first_order_fit": { + "k": 0.038887740721156146, + "k_err": 0.00043760922315136625, + "x0": 1.040419073371534, + "x_inf": 0.22083440146818303, + "rms": 0.0022426285393228203 + }, + "endmember_correlation_with_refs": [ + 0.8882735615318025, + 0.8520571625849888 + ], + "endmember_best_shift_ppm": [ + 0.0010000000000000182, + -0.0019999999999999844 + ], + "kinetics_csv_comparison": { + "legacy_min": { + "kinetics_csv": "skills/chem-nmr-analysis/examples/kinetics/output/legacy_min/kinetics.csv", + "borneol_fraction": [ + 0.8119367013332526, + 0.7189721556402683, + 0.6546558883538582, + 0.5412060279860639, + 0.46453832249481497, + 0.3886671145072884, + 0.38210075895095236, + 0.28476232371328586 + ], + "first_order_fit": { + "k": 0.033879584360527404, + "k_err": 0.004162524919563472, + "x0": 0.8057527813666765, + "x_inf": 0.27930226758382903, + "rms": 0.014455434917147118 + }, + "k_relative_error_vs_reference_free": -0.13429972701314793, + "max_abs_diff_vs_lsq": 0.22697666750969892, + "mean_abs_diff_vs_lsq": 0.09332912118356748, + "monotonic": true + }, + "window_baseline": { + "kinetics_csv": "skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics.csv", + "borneol_fraction": [ + 0.9719259459761547, + 0.8545593759000332, + 0.7503398266465584, + 0.591445868358087, + 0.4681446559884015, + 0.3592495332830189, + 0.3360524454269035, + 0.253989367754056 + ], + "first_order_fit": { + "k": 0.03724767188906907, + "k_err": 0.0022361620536339244, + "x0": 0.9767733021434973, + "x_inf": 0.23458011783834742, + "rms": 0.010571132525553483 + }, + "k_relative_error_vs_reference_free": -0.048237446500071904, + "max_abs_diff_vs_lsq": 0.06698742286679682, + "mean_abs_diff_vs_lsq": 0.024410942712501847, + "monotonic": true + } + } +} diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.png b/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.png new file mode 100644 index 0000000000000000000000000000000000000000..416435ab79ab872054c313cac7575b9c62c1cb7b GIT binary patch literal 80114 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

    PfFdEngj+2*$jkS%Q%<$8hnAV;L!XYP+7$I~9CE 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

    A43`cw6lEcWa9r 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 T{+TW0cPgAzmd!YR{>Fa;|4-tk literal 0 HcmV?d00001 diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation_summary.txt b/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation_summary.txt new file mode 100644 index 00000000..4ff035c2 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/validation/validation_summary.txt @@ -0,0 +1,11 @@ +Noise sigma (signal-free window): 0.0385 +Singular values (centred): 14.539 1.420 1.363 1.344 1.324 1.273 1.245 0.000 | expected noise level ~ 1.333 +PC1 explained variance: 0.9522 +Min-subtraction pedestal: 0.111 0.114 0.111 0.115 0.106 0.114 0.145 0.102 | fraction of summed intensity: 0.60 0.60 0.60 0.62 0.62 0.64 0.70 0.63 +Reference-free k (PC1): 0.0391 +/- 0.0002 (leave-one-out 0.0390-0.0393) +Least-squares mixing weight: 1.039 0.898 0.775 0.597 0.479 0.359 0.300 0.247 | max |closure resid| = 0.014, max |offset resid| = 0.0025 +End members vs references: correlation 0.888 0.852, best shift (ppm) +0.0010 -0.0020; scales 1.042 1.219, offsets -0.653 -0.162 +Least squares: k = 0.0389 +/- 0.0004, x0 = 1.040, x_inf = 0.221 +legacy_min: k = 0.0339 +/- 0.0042 (-13.4% vs ref-free), x0 = 0.806, x_inf = 0.279, max |dx| vs LSQ = 0.227, monotonic = True +window_baseline: k = 0.0372 +/- 0.0022 (-4.8% vs ref-free), x0 = 0.977, x_inf = 0.235, max |dx| vs LSQ = 0.067, monotonic = True +Validation -> skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.json, skills/chem-nmr-analysis/examples/kinetics/output/validation/validation.png diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/input_configs.yaml b/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/input_configs.yaml new file mode 100644 index 00000000..9bf20f3f --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/input_configs.yaml @@ -0,0 +1,38 @@ +refs: +- skills/chem-nmr-analysis/examples/deconvolution/borneol.csv +- skills/chem-nmr-analysis/examples/deconvolution/isoborneol.csv +timepoints: +- skills/chem-nmr-analysis/examples/kinetics/t000min.csv +- skills/chem-nmr-analysis/examples/kinetics/t005min.csv +- skills/chem-nmr-analysis/examples/kinetics/t010min.csv +- skills/chem-nmr-analysis/examples/kinetics/t020min.csv +- skills/chem-nmr-analysis/examples/kinetics/t030min.csv +- skills/chem-nmr-analysis/examples/kinetics/t045min.csv +- skills/chem-nmr-analysis/examples/kinetics/t060min.csv +- skills/chem-nmr-analysis/examples/kinetics/t090min.csv +times: +- 0.0 +- 5.0 +- 10.0 +- 20.0 +- 30.0 +- 45.0 +- 60.0 +- 90.0 +time_unit: min +protons: +- 18 +- 18 +names: +- borneol +- isoborneol +baseline_correct: false +baseline_window: +- 2.4 +- 3.4 +baseline_stat: median +ppm_range: null +kappa: 0.25 +mnova: false +output_dir: skills/chem-nmr-analysis/examples/kinetics/output/window_baseline +quiet: false diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics.csv b/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics.csv new file mode 100644 index 00000000..f02ab467 --- /dev/null +++ b/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics.csv @@ -0,0 +1,9 @@ +time_min,borneol,isoborneol,wasserstein_distance,noise_fraction,mixture_baseline +0.0,0.9719259459761547,0.02807405402384538,0.045038996123533605,0.12946470078655292,-0.683583 +5.0,0.8545593759000332,0.14544062409996683,0.045204415578974116,0.12402741132344719,-0.612426 +10.0,0.7503398266465584,0.24966017335344162,0.043067230486791286,0.11996472759379062,-0.548262 +20.0,0.591445868358087,0.408554131641913,0.03904767917126888,0.11362181547826056,-0.458417 +30.0,0.4681446559884015,0.5318553440115986,0.044970539464503134,0.13553150944749282,-0.398839 +45.0,0.3592495332830189,0.6407504667169811,0.04702376481515995,0.14798508973060076,-0.344379 +60.0,0.3360524454269035,0.6639475545730964,0.046949456245357304,0.14707296304929707,-0.310625 +90.0,0.253989367754056,0.746010632245944,0.04654933697686667,0.14243689581728103,-0.284229 diff --git a/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics_plot.png b/skills/chem-nmr-analysis/examples/kinetics/output/window_baseline/kinetics_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..764da003e05c2ec5e9ac4b1af5d9614dde25a278 GIT binary patch literal 121446 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 OuWiqW30_c!{DQ;Iv8y56VMlj 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 bkMFX5@2q#WU7Ej#g4euHKDE!VTe np.ndarray: + """First-order relaxation x(t) = x_inf + amplitude * exp(-k t).""" + return x_inf + amplitude * np.exp(-k * t) + + +def fit_first_order(times: np.ndarray, values: np.ndarray) -> dict: + """ + Fit a first-order relaxation to a trajectory. + + Args: + times: Time points. + values: Trajectory values at each time point. + + Returns: + Dictionary with keys 'k', 'k_err', 'x0', 'x_inf', 'rms'. + """ + p0 = [values[-1], values[0] - values[-1], 1.0 / max(times.max(), 1e-12)] + popt, pcov = curve_fit(first_order, times, values, p0=p0, maxfev=20000) + resid = values - first_order(times, *popt) + return { + "k": float(popt[2]), + "k_err": float(np.sqrt(pcov[2, 2])), + "x0": float(popt[0] + popt[1]), + "x_inf": float(popt[0]), + "rms": float(np.sqrt(np.mean(resid**2))), + } + + +def load_two_column(path: str) -> np.ndarray: + """Load a two-column comma-separated (ppm, intensity) spectrum sorted by ppm.""" + arr = np.loadtxt(path, delimiter=",", usecols=[0, 1]) + return arr[np.argsort(arr[:, 0])] + + +def read_kinetics_csv(path: str, name: str) -> tuple: + """ + Read the time column and one component column from a kinetics.csv file. + + Args: + path: Path to kinetics.csv written by kinetics.py. + name: Component column to read. + + Returns: + Tuple of (times, fractions) as numpy arrays. + """ + with open(path, newline="") as handle: + rows = list(csv.DictReader(handle)) + time_key = [key for key in rows[0] if key.startswith("time_")][0] + times = np.array([float(row[time_key]) for row in rows]) + fractions = np.array([float(row[name]) for row in rows]) + return times, fractions + + +def main() -> None: + ap = argparse.ArgumentParser( + description="Validate NMR kinetics deconvolution against reference-free " + "and least-squares estimates." + ) + ap.add_argument( + "--timepoints", nargs="+", required=True, help="Time-ordered spectra" + ) + ap.add_argument("--times", type=float, nargs="+", required=True, help="Time values") + ap.add_argument("--refs", nargs=2, required=True, help="Two reference spectra") + ap.add_argument( + "--names", nargs=2, required=True, help="Names of the two references" + ) + ap.add_argument( + "--kinetics_csv", nargs="+", default=[], help="kinetics.csv files to validate" + ) + ap.add_argument("--labels", nargs="+", default=[], help="Labels for --kinetics_csv") + ap.add_argument( + "--signal_free", + type=float, + nargs=2, + default=[2.40, 3.40], + help="ppm window without signals, used for the noise estimate (default: 2.40 3.40)", + ) + ap.add_argument("--output_dir", default="validation", help="Output directory") + args = ap.parse_args() + + times = np.array(args.times) + out_dir = pathlib.Path(args.output_dir) + out_dir.mkdir(parents=True, exist_ok=True) + labels = ( + args.labels + if len(args.labels) == len(args.kinetics_csv) + else [pathlib.Path(p).parent.name for p in args.kinetics_csv] + ) + + spectra = [load_two_column(p) for p in args.timepoints] + grid = spectra[0][:, 0] + matrix = np.stack([np.interp(grid, s[:, 0], s[:, 1]) for s in spectra]) + + # 1. Rank test and noise level + quiet = (grid > args.signal_free[0]) & (grid < args.signal_free[1]) + sigma = matrix[:, quiet].std(axis=1) + # Pedestal left by minimum subtraction (kinetics.py --baseline_correct) + pedestal = matrix[:, quiet].mean(axis=1) - matrix.min(axis=1) + pedestal_fraction = ( + pedestal * grid.size / (matrix - matrix.min(axis=1)[:, None]).sum(axis=1) + ) + centred = matrix - matrix.mean(axis=0) + u, s, _ = np.linalg.svd(centred, full_matrices=False) + explained = s**2 / np.sum(s**2) + + # 2. Reference-free rate constant from PC1 scores + scores = u[:, 0] * s[0] + pc1_fit = fit_first_order(times, scores) + pc1_fit.pop("x0") + pc1_fit.pop("x_inf") + pc1_fit["rms_over_span"] = pc1_fit.pop("rms") / float(np.ptp(scores)) + keep = [np.arange(len(times)) != i for i in range(len(times))] + loo_k = [fit_first_order(times[m], scores[m])["k"] for m in keep] + pc1_fit["leave_one_out_k_range"] = [float(min(loo_k)), float(max(loo_k))] + + # 3. Linear least squares on the references + constant baseline, then the + # two-end-member closure a/s_1 + b/s_2 = 1 to obtain the mixing weight + refs = [load_two_column(p) for p in args.refs] + ref_on_grid = [np.interp(grid, r[:, 0], r[:, 1], left=0.0, right=0.0) for r in refs] + design = np.column_stack(ref_on_grid + [np.ones_like(grid)]) + amp = np.linalg.lstsq(design, matrix.T, rcond=None)[0].T # (n_times, 3) + inv_scale = np.linalg.lstsq(amp[:, :2], np.ones(len(times)), rcond=None)[0] + scale = 1.0 / inv_scale + lsq_fraction = 0.5 * (amp[:, 0] / scale[0] + 1.0 - amp[:, 1] / scale[1]) + closure_resid = amp[:, 0] / scale[0] + amp[:, 1] / scale[1] - 1.0 + offsets = np.linalg.lstsq( + np.column_stack([lsq_fraction, 1.0 - lsq_fraction]), amp[:, 2], rcond=None + )[0] + offset_resid = amp[:, 2] - ( + lsq_fraction * offsets[0] + (1.0 - lsq_fraction) * offsets[1] + ) + lsq_fit = fit_first_order(times, lsq_fraction) + + # End members implied by w(t): compare peak positions/shapes with the references + endmembers = np.linalg.lstsq( + np.column_stack([lsq_fraction, 1.0 - lsq_fraction]), matrix, rcond=None + )[0] + shifts = np.arange(-0.02, 0.02001, 0.0005) + endmember_corr, endmember_shift = [], [] + for member, ref in zip(endmembers, ref_on_grid): + corr = [ + np.corrcoef(member, np.interp(grid - d, grid, ref))[0, 1] for d in shifts + ] + endmember_corr.append(float(np.corrcoef(member, ref)[0, 1])) + endmember_shift.append(float(shifts[int(np.argmax(corr))])) + + # 4. Compare each kinetics.csv with the least-squares composition + comparisons = {} + for path, label in zip(args.kinetics_csv, labels): + t_csv, x_csv = read_kinetics_csv(path, args.names[0]) + diff = x_csv - lsq_fraction + fit = fit_first_order(t_csv, x_csv) + comparisons[label] = { + "kinetics_csv": path, + f"{args.names[0]}_fraction": x_csv.tolist(), + "first_order_fit": fit, + "k_relative_error_vs_reference_free": (fit["k"] - pc1_fit["k"]) + / pc1_fit["k"], + "max_abs_diff_vs_lsq": float(np.abs(diff).max()), + "mean_abs_diff_vs_lsq": float(np.abs(diff).mean()), + "monotonic": bool(np.all(np.diff(x_csv) < 0) or np.all(np.diff(x_csv) > 0)), + } + + summary = { + "component": args.names[0], + "times": times.tolist(), + "noise_sigma_per_spectrum": sigma.tolist(), + "min_subtraction_pedestal": pedestal.tolist(), + "min_subtraction_pedestal_fraction": pedestal_fraction.tolist(), + "singular_values_centred": s.tolist(), + "expected_noise_singular_value": float(sigma.mean() * np.sqrt(grid.size)), + "pc1_explained_variance": float(explained[0]), + "reference_free_pc1_fit": pc1_fit, + "lsq_fraction": lsq_fraction.tolist(), + "lsq_amplitudes": amp.tolist(), + "lsq_endmember_scales": scale.tolist(), + "lsq_closure_residual": closure_resid.tolist(), + "lsq_endmember_offsets": offsets.tolist(), + "lsq_offset_residual": offset_resid.tolist(), + "lsq_first_order_fit": lsq_fit, + "endmember_correlation_with_refs": endmember_corr, + "endmember_best_shift_ppm": endmember_shift, + "kinetics_csv_comparison": comparisons, + } + with open(out_dir / "validation.json", "w") as handle: + json.dump(summary, handle, indent=2) + + # Plot: component fraction vs time with first-order fits + fig, ax = plt.subplots(figsize=(6, 5)) + t_dense = np.linspace(0.0, times.max(), 200) + ax.plot( + times, + lsq_fraction * 100, + "ko", + markersize=7, + label="Least squares (independent)", + ) + ax.plot( + t_dense, + first_order( + t_dense, lsq_fit["x_inf"], lsq_fit["x0"] - lsq_fit["x_inf"], lsq_fit["k"] + ) + * 100, + "k-", + linewidth=2.5, + ) + for i, (label, comp) in enumerate(comparisons.items()): + fit = comp["first_order_fit"] + ax.plot( + times, + np.array(comp[f"{args.names[0]}_fraction"]) * 100, + "s", + color=f"C{i}", + markersize=6, + label=f"kinetics.py: {label} (k = {fit['k']:.4f})", + ) + ax.plot( + t_dense, + first_order(t_dense, fit["x_inf"], fit["x0"] - fit["x_inf"], fit["k"]) + * 100, + "--", + color=f"C{i}", + linewidth=2.5, + ) + ax.set_xlabel("Time (min)", fontweight="bold") + ax.set_ylabel(f"{args.names[0]} fraction (%)", fontweight="bold") + ax.set_title(f"Reference-free k = {pc1_fit['k']:.4f} min$^{{-1}}$", fontsize=13) + ax.set_ylim(0, 110) + ax.grid(False) + ax.legend(frameon=False, fontsize=10) + plt.tight_layout() + fig.savefig(out_dir / "validation.png", dpi=150, bbox_inches="tight") + fig.savefig(out_dir / "validation.svg", bbox_inches="tight") + plt.close(fig) + + print(f"Noise sigma (signal-free window): {sigma.mean():.4f}") + print( + "Singular values (centred): " + + " ".join(f"{v:.3f}" for v in s) + + f" | expected noise level ~ {summary['expected_noise_singular_value']:.3f}" + ) + print(f"PC1 explained variance: {explained[0]:.4f}") + print( + "Min-subtraction pedestal: " + + " ".join(f"{v:.3f}" for v in pedestal) + + " | fraction of summed intensity: " + + " ".join(f"{v:.2f}" for v in pedestal_fraction) + ) + print( + f"Reference-free k (PC1): {pc1_fit['k']:.4f} +/- {pc1_fit['k_err']:.4f} " + f"(leave-one-out {pc1_fit['leave_one_out_k_range'][0]:.4f}-" + f"{pc1_fit['leave_one_out_k_range'][1]:.4f})" + ) + print( + "Least-squares mixing weight: " + + " ".join(f"{v:.3f}" for v in lsq_fraction) + + f" | max |closure resid| = {np.abs(closure_resid).max():.3f}" + + f", max |offset resid| = {np.abs(offset_resid).max():.4f}" + ) + print( + "End members vs references: correlation " + + " ".join(f"{v:.3f}" for v in endmember_corr) + + ", best shift (ppm) " + + " ".join(f"{v:+.4f}" for v in endmember_shift) + + f"; scales {scale[0]:.3f} {scale[1]:.3f}, offsets {offsets[0]:.3f} {offsets[1]:.3f}" + ) + print( + f"Least squares: k = {lsq_fit['k']:.4f} +/- {lsq_fit['k_err']:.4f}, " + f"x0 = {lsq_fit['x0']:.3f}, x_inf = {lsq_fit['x_inf']:.3f}" + ) + for label, comp in comparisons.items(): + fit = comp["first_order_fit"] + print( + f"{label}: k = {fit['k']:.4f} +/- {fit['k_err']:.4f} " + f"({comp['k_relative_error_vs_reference_free'] * 100:+.1f}% vs ref-free), " + f"x0 = {fit['x0']:.3f}, x_inf = {fit['x_inf']:.3f}, " + f"max |dx| vs LSQ = {comp['max_abs_diff_vs_lsq']:.3f}, " + f"monotonic = {comp['monotonic']}" + ) + print(f"Validation -> {out_dir / 'validation.json'}, {out_dir / 'validation.png'}") + + from src.utils.config_utils import save_skill_inputs + + save_skill_inputs(args, str(out_dir)) + + +if __name__ == "__main__": + main() diff --git a/skills/chem-nmr-analysis/scripts/deconvolve.py b/skills/chem-nmr-analysis/scripts/deconvolve.py index e9820245..a4323e0c 100644 --- a/skills/chem-nmr-analysis/scripts/deconvolve.py +++ b/skills/chem-nmr-analysis/scripts/deconvolve.py @@ -17,13 +17,15 @@ Usage: venv/run cpu python deconvolve.py crude.csv ref_a.csv ref_b.csv \ - --protons 18 18 --names borneol isoborneol --baseline-correct --json + --protons 18 18 --names borneol isoborneol \ + --baseline-window 2.40 3.40 --ppm-range 3.50 4.10 --json Requirements: numpy, scipy (>= 1.7), matplotlib (optional, for --plot) """ import argparse import json +import os import pathlib import sys from typing import Optional @@ -31,6 +33,9 @@ import numpy as np from scipy.optimize import linprog +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from spectra import BASELINE_STATS, preprocess_spectrum # noqa: E402 + # --------------------------------------------------------------------------- # Spectrum I/O helpers @@ -63,12 +68,6 @@ def load_xy( return arr -def baseline_correct(arr: np.ndarray) -> np.ndarray: - corrected = arr.copy() - corrected[:, 1] -= arr[:, 1].min() - return corrected - - # --------------------------------------------------------------------------- # Wasserstein LP deconvolution (scipy port of dualdeconv2) # --------------------------------------------------------------------------- @@ -249,13 +248,15 @@ def deconvolve_spectra( Returns ------- - dict with "proportions", "wasserstein_distance", "noise" + dict with "proportions", "wasserstein_distance", "noise", "signal_fractions" """ mix_confs = list(zip(mix_arr[:, 0].tolist(), mix_arr[:, 1].tolist())) comp_confs = [list(zip(a[:, 0].tolist(), a[:, 1].tolist())) for a in comp_arrays] raw = wasserstein_deconvolve(mix_confs, comp_confs, kappa=kappa) raw_props = raw["proportions"] + # Fraction of the mixture signal assigned to each component (before proton correction) + raw["signal_fractions"] = list(raw_props) # Proton correction: convert area-proportional to concentration-proportional if protons and all(p > 0 for p in protons): @@ -280,10 +281,13 @@ def _save_plot( names: list, props: list, wd: float, + signal_fractions: list | None = None, ) -> None: from plot import plot_deconvolution - plot_deconvolution(mix_arr, comp_arrays, names, props, wd, out_path) + plot_deconvolution( + mix_arr, comp_arrays, names, props, wd, out_path, signal_fractions + ) # --------------------------------------------------------------------------- @@ -320,10 +324,36 @@ def main(): action="store_true", help="Treat inputs as Mnova TSV (delimiter='\\t')", ) - ap.add_argument( + baseline = ap.add_mutually_exclusive_group() + baseline.add_argument( "--baseline-correct", action="store_true", - help="Shift each spectrum so its minimum intensity becomes 0.", + help="Legacy: shift each spectrum so its minimum intensity becomes 0. " + "Biased for noisy or offset spectra; prefer --baseline-window.", + ) + baseline.add_argument( + "--baseline-window", + type=float, + nargs=2, + metavar=("LO", "HI"), + default=None, + help="Signal-free ppm window; its --baseline-stat is subtracted from the " + "mixture and every reference, and negatives are clipped to 0.", + ) + ap.add_argument( + "--baseline-stat", + choices=BASELINE_STATS, + default="median", + help="Baseline estimate in --baseline-window: median (noisy/offset " + "spectra, default) or max (one-sided floors such as digitization residue).", + ) + ap.add_argument( + "--ppm-range", + type=float, + nargs=2, + metavar=("LO", "HI"), + default=None, + help="Deconvolve only this ppm range (applied after baseline correction).", ) ap.add_argument( "--plot", @@ -341,13 +371,32 @@ def main(): mix_arr = load_xy(args.mixture, mnova=args.mnova) comp_arrays = [load_xy(p, mnova=args.mnova) for p in args.components] - if args.baseline_correct: - if not args.quiet: + prep = dict( + baseline_correct=args.baseline_correct, + baseline_window=args.baseline_window, + baseline_stat=args.baseline_stat, + ppm_range=args.ppm_range, + ) + mix_arr, mix_base = preprocess_spectrum(mix_arr, **prep) + comp_prepped = [preprocess_spectrum(a, **prep) for a in comp_arrays] + comp_arrays = [a for a, _ in comp_prepped] + baselines = [mix_base] + [b for _, b in comp_prepped] + if not args.quiet: + if args.baseline_window is not None: + lo, hi = args.baseline_window print( - "Baseline correction: shifting each spectrum so its minimum intensity = 0." + f"Baseline: subtracted the {args.baseline_stat} of {lo}-{hi} ppm " + "(negatives clipped to 0)." + ) + elif args.baseline_correct: + print( + "Baseline correction (legacy): shifting each spectrum so its " + "minimum intensity = 0." + ) + if args.ppm_range is not None: + print( + f"ppm range restricted to {min(args.ppm_range)}-{max(args.ppm_range)}." ) - mix_arr = baseline_correct(mix_arr) - comp_arrays = [baseline_correct(a) for a in comp_arrays] n = len(comp_arrays) names = ( @@ -384,13 +433,33 @@ def main(): for name, val in zip(names, props): print(f" {name.ljust(width)} {val:.6f}") print(f"\nWasserstein distance: {wd:.12f}") + print(f"Unexplained (noise) signal fraction: {result['noise']:.6f}") + baseline_map = dict(zip(["mixture"] + names, baselines)) + if args.baseline_window is not None or args.baseline_correct: + print( + "Subtracted baselines: " + + ", ".join(f"{k}={v:.6g}" for k, v in baseline_map.items()) + ) if args.json: - out = {"proportions": dict(zip(names, props)), "Wasserstein distance": wd} + out = { + "proportions": dict(zip(names, props)), + "Wasserstein distance": wd, + "noise": result["noise"], + "baselines": baseline_map, + } print("\nJSON:", json.dumps(out)) if args.plot: - _save_plot(args.plot, mix_arr, comp_arrays, names, props, wd) + _save_plot( + args.plot, + mix_arr, + comp_arrays, + names, + props, + wd, + result["signal_fractions"], + ) if not args.quiet: print(f"\nPlot saved -> {args.plot}") diff --git a/skills/chem-nmr-analysis/scripts/kinetics.py b/skills/chem-nmr-analysis/scripts/kinetics.py index 3bf2016c..3d1fcf9e 100644 --- a/skills/chem-nmr-analysis/scripts/kinetics.py +++ b/skills/chem-nmr-analysis/scripts/kinetics.py @@ -14,7 +14,7 @@ --time_unit min \ --protons 18 18 \ --names "borneol" "isoborneol" \ - --baseline_correct \ + --baseline_window 2.40 3.40 \ --output_dir results/kinetics Requirements: numpy, scipy (>= 1.7), matplotlib @@ -27,7 +27,8 @@ import sys sys.path.insert(0, os.path.dirname(__file__)) -from deconvolve import load_xy, baseline_correct, deconvolve_spectra +from deconvolve import load_xy, deconvolve_spectra # noqa: E402 +from spectra import BASELINE_STATS, preprocess_spectrum # noqa: E402 def save_kinetics_plot( @@ -117,10 +118,36 @@ def main(): ap.add_argument( "--names", nargs="+", help="Component names (must match number of --refs)" ) - ap.add_argument( + baseline = ap.add_mutually_exclusive_group() + baseline.add_argument( "--baseline_correct", action="store_true", - help="Shift each spectrum so its minimum intensity = 0.", + help="Legacy: shift each spectrum so its minimum intensity = 0. " + "Biased for noisy or offset spectra; prefer --baseline_window.", + ) + baseline.add_argument( + "--baseline_window", + type=float, + nargs=2, + metavar=("LO", "HI"), + default=None, + help="Signal-free ppm window; its --baseline_stat is subtracted from every " + "time point and reference, and negatives are clipped to 0.", + ) + ap.add_argument( + "--baseline_stat", + choices=BASELINE_STATS, + default="median", + help="Baseline estimate in --baseline_window: median (noisy/offset " + "spectra, default) or max (one-sided floors such as digitization residue).", + ) + ap.add_argument( + "--ppm_range", + type=float, + nargs=2, + metavar=("LO", "HI"), + default=None, + help="Deconvolve only this ppm range (applied after baseline correction).", ) ap.add_argument( "--kappa", type=float, default=0.25, help="Denoising penalty (default: 0.25)" @@ -156,20 +183,28 @@ def main(): sys.exit(1) # Load reference spectra once - ref_arrays = [load_xy(p, mnova=args.mnova) for p in args.refs] - if args.baseline_correct: - ref_arrays = [baseline_correct(a) for a in ref_arrays] + prep = dict( + baseline_correct=args.baseline_correct, + baseline_window=args.baseline_window, + baseline_stat=args.baseline_stat, + ppm_range=args.ppm_range, + ) + ref_arrays = [ + preprocess_spectrum(load_xy(p, mnova=args.mnova), **prep)[0] for p in args.refs + ] proportions_over_time = [] wd_over_time = [] + noise_over_time = [] + baseline_over_time = [] for t, tp_path in zip(args.times, args.timepoints): if not args.quiet: print(f" t={t} {args.time_unit} <- {os.path.basename(tp_path)}", end=" ") try: - mix_arr = load_xy(tp_path, mnova=args.mnova) - if args.baseline_correct: - mix_arr = baseline_correct(mix_arr) + mix_arr, mix_base = preprocess_spectrum( + load_xy(tp_path, mnova=args.mnova), **prep + ) res = deconvolve_spectra(mix_arr, ref_arrays, protons, kappa=args.kappa) props_dict = dict(zip(names, res["proportions"])) @@ -177,24 +212,40 @@ def main(): proportions_over_time.append(props_dict) wd_over_time.append(wd) + noise_over_time.append(res["noise"]) + baseline_over_time.append(mix_base) if not args.quiet: frac_str = " ".join( f"{n}={props_dict.get(n, 0)*100:.1f}%" for n in names ) - print(f"{frac_str} WD={wd:.5f}") + print(f"{frac_str} WD={wd:.5f} noise={res['noise']:.3f}") except Exception as e: print(f"FAILED: {e}", file=sys.stderr) proportions_over_time.append({n: float("nan") for n in names}) wd_over_time.append(float("nan")) + noise_over_time.append(float("nan")) + baseline_over_time.append(float("nan")) # Save CSV table csv_path = out_dir / "kinetics.csv" with open(csv_path, "w", newline="") as f: writer = csv.writer(f) - writer.writerow([f"time_{args.time_unit}"] + names + ["wasserstein_distance"]) - for t, props, wd in zip(args.times, proportions_over_time, wd_over_time): - writer.writerow([t] + [props.get(n, float("nan")) for n in names] + [wd]) + writer.writerow( + [f"time_{args.time_unit}"] + + names + + ["wasserstein_distance", "noise_fraction", "mixture_baseline"] + ) + for t, props, wd, noise, base in zip( + args.times, + proportions_over_time, + wd_over_time, + noise_over_time, + baseline_over_time, + ): + writer.writerow( + [t] + [props.get(n, float("nan")) for n in names] + [wd, noise, base] + ) if not args.quiet: print(f"\nKinetics table -> {csv_path}") diff --git a/skills/chem-nmr-analysis/scripts/plot.py b/skills/chem-nmr-analysis/scripts/plot.py index 71b95938..910fedd4 100644 --- a/skills/chem-nmr-analysis/scripts/plot.py +++ b/skills/chem-nmr-analysis/scripts/plot.py @@ -116,22 +116,26 @@ def plot_deconvolution( proportions: list, wasserstein_distance: float, out_path: pathlib.Path, + signal_fractions: list | None = None, ) -> None: """ Multi-panel deconvolution diagnostic plot. Panels (top to bottom): - Mixture spectrum - - One panel per component (scaled by proportion) + - One panel per component (scaled by its share of the mixture signal) - Fit vs mixture overlay with residual Args: mix_arr: (M, 2) array of mixture (ppm, intensity). comp_arrays: List of (N_i, 2) arrays for each component. names: Component names. - proportions: Estimated mole fractions per component. + proportions: Estimated mole fractions per component (used for labels). wasserstein_distance: Fit quality metric. out_path: Output path (saves .png and .svg). + signal_fractions: Fraction of the mixture signal (area) assigned to each + component by the deconvolution, before proton correction. Used to + scale the components; defaults to ``proportions`` when omitted. """ mix_ppm = mix_arr[:, 0] mix_int = mix_arr[:, 1] @@ -148,12 +152,16 @@ def plot_deconvolution( o = np.argsort(p) comp_on_grid.append(np.interp(mix_ppm, p[o], intens[o], left=0.0, right=0.0)) - # Scale each component by its proportion - mix_max = mix_int.max() if mix_int.max() != 0 else 1.0 + # Scale each component so its area equals its share of the mixture area. + # The deconvolution proportions are area (signal) fractions, not peak heights. + weights = signal_fractions if signal_fractions is not None else proportions + mix_area = np.trapezoid(np.clip(mix_int, 0.0, None), mix_ppm) scaled = [] - for comp_int, prop in zip(comp_on_grid, proportions): - comp_max = comp_int.max() if comp_int.max() != 0 else 1.0 - scaled.append(comp_int * (prop * mix_max / comp_max)) + for arr, comp_int, weight in zip(comp_arrays, comp_on_grid, weights): + o = np.argsort(arr[:, 0]) + comp_area = np.trapezoid(np.clip(arr[o, 1], 0.0, None), arr[o, 0]) + scale = weight * mix_area / comp_area if comp_area > 0 else 0.0 + scaled.append(comp_int * scale) fit = sum(scaled) residual = mix_int - fit diff --git a/skills/chem-nmr-analysis/scripts/spectra.py b/skills/chem-nmr-analysis/scripts/spectra.py index b95346d4..2bcceb39 100644 --- a/skills/chem-nmr-analysis/scripts/spectra.py +++ b/skills/chem-nmr-analysis/scripts/spectra.py @@ -1,8 +1,9 @@ """ -NMR spectrum I/O utilities: load single spectra or stacks of time-series spectra. +NMR spectrum I/O and preprocessing utilities: load single spectra or stacks of +time-series spectra, subtract baselines, and restrict the ppm range. Usage: - from spectra import load_spectrum, load_time_series + from spectra import load_spectrum, load_time_series, preprocess_spectrum Requirements: - Environment: cpu (run with: venv/run cpu python ...) @@ -102,3 +103,128 @@ def load_time_series( [interpolate_to_grid(ppm, intens, grid) for ppm, intens in spectra] ) return grid, matrix + + +# --------------------------------------------------------------------------- +# Baseline correction and ppm restriction (shared by deconvolve.py / kinetics.py) +# --------------------------------------------------------------------------- + +BASELINE_STATS = ("median", "max") + + +def min_baseline(arr: np.ndarray) -> Tuple[np.ndarray, float]: + """ + Legacy baseline: shift a spectrum so its minimum intensity becomes 0. + + This removes a constant offset only for noise-free spectra. For a noisy + spectrum the minimum is a noise excursion several sigma below the true + baseline, so the shift leaves a positive pedestal under every point and + biases deconvolved fractions toward an even mixture. + + Args: + arr: (N, 2) array of (ppm, intensity). + + Returns: + Tuple of (corrected copy of arr, subtracted value). + """ + value = float(arr[:, 1].min()) + corrected = arr.copy() + corrected[:, 1] -= value + return corrected, value + + +def window_baseline( + arr: np.ndarray, + window: Tuple[float, float], + stat: str = "median", +) -> Tuple[np.ndarray, float]: + """ + Subtract a baseline estimated from a signal-free ppm window; clip negatives to 0. + + ``stat="median"`` estimates the offset of a baseline carrying random noise + (robust to stray points); after subtraction and clipping, only the positive + half of the noise remains. ``stat="max"`` subtracts the upper envelope of the + window and suits one-sided, non-random floors (e.g. the residue of a traced + flat line in a digitized spectrum), which a median leaves half in place. On + noisy spectra ``max`` removes roughly 3 sigma from every peak, so prefer + ``median`` there. + + If the window contains no samples (e.g. zero-intensity runs were dropped + from the file), the spectrum is linearly interpolated across the window, + so the estimate comes from the samples bounding the gap. + + Args: + arr: (N, 2) array of (ppm, intensity). + window: (lo, hi) ppm limits of a region without signals. + stat: "median" or "max". + + Returns: + Tuple of (corrected copy of arr, subtracted baseline value). + """ + if stat not in BASELINE_STATS: + raise ValueError(f"baseline stat must be one of {BASELINE_STATS}, got {stat!r}") + lo, hi = sorted(window) + order = np.argsort(arr[:, 0]) + ppm, intensity = arr[order, 0], arr[order, 1] + inside = (ppm >= lo) & (ppm <= hi) + values = intensity[inside] + if values.size == 0: + values = np.interp(np.linspace(lo, hi, 50), ppm, intensity) + value = float(np.median(values) if stat == "median" else np.max(values)) + corrected = arr.copy() + corrected[:, 1] = np.clip(corrected[:, 1] - value, 0.0, None) + return corrected, value + + +def restrict_ppm(arr: np.ndarray, ppm_range: Tuple[float, float]) -> np.ndarray: + """ + Keep only the points of a spectrum inside a ppm range (inclusive). + + Args: + arr: (N, 2) array of (ppm, intensity). + ppm_range: (lo, hi) ppm limits. + + Returns: + (M, 2) array with the points inside the range. + """ + lo, hi = sorted(ppm_range) + kept = arr[(arr[:, 0] >= lo) & (arr[:, 0] <= hi)] + if kept.shape[0] < 2: + raise ValueError(f"fewer than two points inside ppm range {lo}-{hi}") + return kept + + +def preprocess_spectrum( + arr: np.ndarray, + baseline_correct: bool = False, + baseline_window: Optional[Tuple[float, float]] = None, + baseline_stat: str = "median", + ppm_range: Optional[Tuple[float, float]] = None, +) -> Tuple[np.ndarray, float]: + """ + Apply the baseline treatment, then the ppm restriction, to one spectrum. + + The baseline is estimated on the full spectrum, so the window may lie + outside ``ppm_range``. ``baseline_correct`` and ``baseline_window`` are + mutually exclusive. + + Args: + arr: (N, 2) array of (ppm, intensity). + baseline_correct: Legacy minimum subtraction. + baseline_window: (lo, hi) signal-free window for ``window_baseline``. + baseline_stat: Statistic for ``window_baseline`` ("median" or "max"). + ppm_range: Optional (lo, hi) range to keep after baseline correction. + + Returns: + Tuple of (processed array, subtracted baseline value; 0.0 if none). + """ + if baseline_correct and baseline_window is not None: + raise ValueError("use either baseline_correct or baseline_window, not both") + value = 0.0 + if baseline_window is not None: + arr, value = window_baseline(arr, baseline_window, baseline_stat) + elif baseline_correct: + arr, value = min_baseline(arr) + if ppm_range is not None: + arr = restrict_ppm(arr, ppm_range) + return arr, value diff --git a/tests/test_chem_nmr_baseline.py b/tests/test_chem_nmr_baseline.py new file mode 100644 index 00000000..caf99802 --- /dev/null +++ b/tests/test_chem_nmr_baseline.py @@ -0,0 +1,135 @@ +"""Tests for the chem-nmr-analysis baseline and ppm-range helpers. + +Synthetic two-component 1H spectra with a known composition check that the +window baseline recovers the true fractions where the legacy minimum +subtraction (``--baseline-correct``) does not. +""" + +import os +import sys + +import numpy as np +import pytest + +SCRIPTS = os.path.abspath( + os.path.join(os.path.dirname(__file__), "../skills/chem-nmr-analysis/scripts") +) +sys.path.insert(0, SCRIPTS) + +from deconvolve import deconvolve_spectra # noqa: E402 +from spectra import ( # noqa: E402 + min_baseline, + preprocess_spectrum, + restrict_ppm, + window_baseline, +) + +GRID = np.linspace(0.5, 4.5, 1600) +SIGNAL_FREE = (2.2, 3.2) +TRUE_FRACTION_A = 0.3 + + +def _peaks( + centres_heights: list[tuple[float, float]], width: float = 0.01 +) -> np.ndarray: + """Sum of Gaussian lines on GRID.""" + return sum(h * np.exp(-0.5 * ((GRID - c) / width) ** 2) for c, h in centres_heights) + + +def _unit_area(intensity: np.ndarray) -> np.ndarray: + """Normalize a spectrum to unit area on GRID.""" + return intensity / np.trapezoid(intensity, GRID) + + +# Two components with the same proton count: A (4.00 ppm diagnostic), B (3.60 ppm) +COMP_A = _unit_area(_peaks([(4.0, 1.0), (1.0, 3.0), (1.6, 2.0)])) +COMP_B = _unit_area(_peaks([(3.6, 1.0), (1.2, 3.0), (1.8, 2.0)])) + + +def _spectrum(intensity: np.ndarray) -> np.ndarray: + return np.column_stack([GRID, intensity]) + + +def _noisy_mixture( + offset: float = -0.5, sigma: float = 0.1, seed: int = 0 +) -> np.ndarray: + """Mixture with a known composition, a constant offset and white noise.""" + rng = np.random.default_rng(seed) + clean = TRUE_FRACTION_A * COMP_A + (1.0 - TRUE_FRACTION_A) * COMP_B + return _spectrum(clean + offset + rng.normal(0.0, sigma, GRID.size)) + + +def _fraction_a(mixture: np.ndarray, refs: list[np.ndarray]) -> float: + return deconvolve_spectra(mixture, refs, [1, 1])["proportions"][0] + + +@pytest.mark.parametrize("seed", [0, 1, 2]) +def test_window_median_recovers_fraction_on_noisy_offset_mixture(seed: int) -> None: + """Median of a signal-free window removes the offset; the fraction is recovered.""" + refs = [_spectrum(COMP_A), _spectrum(COMP_B)] + mixture, value = window_baseline(_noisy_mixture(seed=seed), SIGNAL_FREE, "median") + + assert value == pytest.approx(-0.5, abs=0.02) + assert _fraction_a(mixture, refs) == pytest.approx(TRUE_FRACTION_A, abs=0.025) + + +@pytest.mark.parametrize("seed", [0, 1, 2]) +def test_min_subtraction_is_biased_on_noisy_offset_mixture(seed: int) -> None: + """The minimum sits several sigma below the baseline and biases the fraction.""" + refs = [_spectrum(COMP_A), _spectrum(COMP_B)] + mixture, value = min_baseline(_noisy_mixture(seed=seed)) + + assert value < -0.5 - 2 * 0.1 + assert _fraction_a(mixture, refs) - TRUE_FRACTION_A > 0.05 + + +def test_window_max_removes_one_sided_reference_floor() -> None: + """A positive digitization-like floor on the references needs the max statistic.""" + floor = 0.2 + 0.2 * ((GRID * 30.0) % 1.0) # sawtooth between 0.2 and 0.4 + refs_raw = [_spectrum(COMP_A + floor), _spectrum(COMP_B + floor)] + mixture = _spectrum(TRUE_FRACTION_A * COMP_A + (1.0 - TRUE_FRACTION_A) * COMP_B) + + refs_max = [window_baseline(r, SIGNAL_FREE, "max")[0] for r in refs_raw] + refs_median = [window_baseline(r, SIGNAL_FREE, "median")[0] for r in refs_raw] + + err_max = abs(_fraction_a(mixture, refs_max) - TRUE_FRACTION_A) + err_median = abs(_fraction_a(mixture, refs_median) - TRUE_FRACTION_A) + assert err_max < 0.005 + assert err_median > 0.02 + + +def test_window_without_samples_uses_bounding_points() -> None: + """A window inside a gap of dropped zero-intensity points gives a zero baseline.""" + keep = (GRID < 2.0) | (GRID > 3.4) + gapped = _spectrum(COMP_A)[keep] + corrected, value = window_baseline(gapped, SIGNAL_FREE, "median") + + assert value == pytest.approx(0.0, abs=1e-6) + assert np.array_equal(corrected[:, 0], gapped[:, 0]) + + +def test_negatives_are_clipped_and_ppm_range_applied_after_baseline() -> None: + """Window baseline clips negatives; the ppm range is cut after the baseline step.""" + processed, value = preprocess_spectrum( + _noisy_mixture(), + baseline_window=SIGNAL_FREE, + ppm_range=(3.5, 4.1), + ) + + assert value == pytest.approx(-0.5, abs=0.02) + assert processed[:, 1].min() >= 0.0 + assert processed[:, 0].min() >= 3.5 and processed[:, 0].max() <= 4.1 + + +def test_restrict_ppm_rejects_empty_range() -> None: + with pytest.raises(ValueError): + restrict_ppm(_spectrum(COMP_A), (10.0, 11.0)) + + +def test_baseline_options_are_mutually_exclusive() -> None: + with pytest.raises(ValueError): + preprocess_spectrum( + _spectrum(COMP_A), baseline_correct=True, baseline_window=SIGNAL_FREE + ) + with pytest.raises(ValueError): + window_baseline(_spectrum(COMP_A), SIGNAL_FREE, "mean") From a28c1f2e6fefa96be9cacd91e5d281fa6b419a9b Mon Sep 17 00:00:00 2001 From: bowen-bd Date: Sat, 10 Oct 2026 13:39:03 -0400 Subject: [PATCH 04/12] docs(chem-nmr-predict): add ethyl acetate/ethanol example vs CDCl3 literature Validated per signal against Fulmer et al. 2010 / Gottlieb et al. 1997 and the published SPINUS accuracy. Corrects the SPINUS reference. Co-Authored-By: Claude Opus 5.5 (1M context) --- skills/chem-nmr-predict/SKILL.md | 11 +- .../ethyl_acetate_ethanol_cdcl3/README.md | 176 + .../compare_to_literature.py | 365 + .../comparison.csv | 7 + .../ethyl_acetate_ethanol_cdcl3/ethanol.xy | 8192 +++++++++++++++++ .../ethanol_signals.csv | 3 + .../ethyl_acetate.xy | 8192 +++++++++++++++++ .../ethyl_acetate_signals.csv | 4 + .../input_configs.yaml | 11 + .../literature_cdcl3.csv | 7 + .../nmr_vs_literature.png | Bin 0 -> 80070 bytes .../nmr_vs_literature.svg | 1992 ++++ .../predictions.json | 26 + 13 files changed, 18982 insertions(+), 4 deletions(-) create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/README.md create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/compare_to_literature.py create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/comparison.csv create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol.xy create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol_signals.csv create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate.xy create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate_signals.csv create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/input_configs.yaml create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/literature_cdcl3.csv create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/nmr_vs_literature.png create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/nmr_vs_literature.svg create mode 100644 skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/predictions.json diff --git a/skills/chem-nmr-predict/SKILL.md b/skills/chem-nmr-predict/SKILL.md index 5713c0a8..dbca9362 100644 --- a/skills/chem-nmr-predict/SKILL.md +++ b/skills/chem-nmr-predict/SKILL.md @@ -109,10 +109,13 @@ After prediction, the agent must: --- -## Environment +## Examples -```bash -``` +- [Ethyl acetate and ethanol vs. experimental CDCl3 shifts](examples/ethyl_acetate_ethanol_cdcl3/README.md) — 400 MHz prediction validated per signal (δ, multiplicity, J, nH) against Fulmer et al., *Organometallics* 2010. + +--- + +## Environment Environment: `cpu` (created on first use by `venv/run`; no separate install) @@ -123,7 +126,7 @@ Required packages: `numpy`, `rdkit`, `requests`, `nmrsim`. ## References - Banfi, D. & Patiny, L., "www.nmrdb.org: Resurrecting and processing NMR spectra on-line", *Chimia*, 2008. -- Aires-de-Sousa, J. et al., "SPINUS: prediction of 1H NMR spectra by neural networks", *J. Chem. Inf. Model.*, 2002. +- Aires-de-Sousa, J., Hemmer, M. C. & Gasteiger, J., "Prediction of 1H NMR Chemical Shifts Using Neural Networks", *Anal. Chem.* 74, 80–90, 2002. [DOI](https://doi.org/10.1021/ac010737m) - Sametz, G., "nmrsim: a Python library for NMR simulation", [github.com/sametz/nmrsim](https://github.com/sametz/nmrsim). --- diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/README.md b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/README.md new file mode 100644 index 00000000..f8b3ea16 --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/README.md @@ -0,0 +1,176 @@ +# Ethyl Acetate and Ethanol: Predicted 1H NMR vs. Experiment in CDCl3 + +## Goal + +Predict the 400 MHz 1H NMR spectra of ethyl acetate and ethanol with `predict_nmr.py` +(NMRdb.org SPINUS shifts and couplings, nmrsim spin simulation). Then check every +signal (chemical shift, multiplicity, J, proton count) against the experimental CDCl3 +values tabulated by Fulmer et al. (2010), which repeat the CDCl3 values of +Gottlieb et al. (1997). + +Both compounds give first-order A3X2 spin systems, so multiplicity and J can be compared +directly. Ethyl acetate is the main test. Ethanol shows two known limits of SPINUS: +it predicts no exchangeable (OH) protons, and one CH2 signal falls far outside the +typical error. + +## Inputs + +| Compound | SMILES | Formula | Experimental reference | +|---|---|---|---| +| ethyl acetate | `CCOC(C)=O` | C4H8O2 (8 H) | Fulmer 2010, Table 1, CDCl3 column | +| ethanol | `CCO` | C2H6O (6 H) | Fulmer 2010, Table 1, CDCl3 column | + +Settings: `--field_mhz 400`, default `--linewidth 1.0` Hz and `--n_points 8192` +(range −0.5 to 12 ppm). The prediction calls the NMRdb.org web service, so you need +internet access. It takes about 5 s on a CPU. + +[literature_cdcl3.csv](literature_cdcl3.csv) holds the experimental values. They were +transcribed from Table 1 of the Fulmer 2010 paper and checked against Table S1 of its +Supporting Information and Table 1 of Gottlieb 1997. All three give the same CDCl3 numbers. + +## Commands (run from the repository root) + +1. Predict the spectra and signal tables: + +```bash +venv/run cpu python skills/chem-nmr-predict/scripts/predict_nmr.py \ + --smiles "CCOC(C)=O" "CCO" \ + --names ethyl_acetate ethanol \ + --field_mhz 400 \ + --output_dir skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3 +``` + +2. Compare with the literature and plot. This helper script is specific to this example. + It matches each experimental signal to a predicted one by shift and nH, then + peak-picks and integrates the simulated `.xy` spectrum within ±0.1 ppm of each + predicted signal: + +```bash +venv/run cpu python skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/compare_to_literature.py \ + --pred_dir skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3 \ + --literature skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/literature_cdcl3.csv +``` + +## Output Files + +| File | Description | +|---|---| +| [ethyl_acetate.xy](ethyl_acetate.xy), [ethanol.xy](ethanol.xy) | Simulated spectra (ppm, normalized intensity), descending ppm | +| [ethyl_acetate_signals.csv](ethyl_acetate_signals.csv), [ethanol_signals.csv](ethanol_signals.csv) | Predicted signal tables (`shift_ppm`, `multiplicity`, `J_Hz`, `nH`) | +| [predictions.json](predictions.json) | Manifest: 2 found, 0 failed | +| [input_configs.yaml](input_configs.yaml) | All `predict_nmr.py` arguments, including defaults | +| [literature_cdcl3.csv](literature_cdcl3.csv) | Experimental CDCl3 signals used as reference | +| [comparison.csv](comparison.csv) | Per-signal comparison, with line count, line spacing and integral measured from the `.xy` spectrum | +| [nmr_vs_literature.png](nmr_vs_literature.png) (`.svg`) | Predicted spectra with the experimental shifts marked | + +The script ran without errors. SPINUS returned 8 H atoms for ethyl acetate and 5 H atoms +for ethanol, which has 6 H. The missing proton is the OH (see Discussion). + +## Comparison with Literature (CDCl3) + +The experimental values come from Fulmer et al. 2010, Table 1. They were recorded at +298 K on 300, 500 or 600 MHz spectrometers, with trace amounts of each compound in +CDCl3. The same CDCl3 values appear in Gottlieb et al. 1997, Table 1 (300 MHz). The +tables give J only to the nearest integer ("q, 7"). Shifts in ppm and J in Hz do not +depend on the field, so they can be compared with the 400 MHz prediction. + +| Compound | Group | nH exp / pred | δ exp (ppm) | δ pred (ppm) | \|Δδ\| (ppm) | Mult. exp / pred | J exp / pred (Hz) | +|---|---|---|---|---|---|---|---| +| ethyl acetate | CH3CO | 3 / 3 | 2.05 | 2.035 | 0.015 | s / s | – / – | +| ethyl acetate | CH2 (OCH2CH3) | 2 / 2 | 4.12 | 4.104 | 0.016 | q / q | 7 / 7.1 | +| ethyl acetate | CH3 (OCH2CH3) | 3 / 3 | 1.26 | 1.155 | 0.105 | t / t | 7 / 7.1 | +| ethanol | CH3 | 3 / 3 | 1.25 | 1.187 | 0.063 | t / t | 7 / 6.6 | +| ethanol | CH2 | 2 / 2 | 3.72 | 3.314 | **0.406** | q / q | 7 / 6.6 | +| ethanol | OH | 1 / – | 1.32 | not predicted | – | s / – | – | + +**Mean absolute shift error (CHn signals):** ethyl acetate 0.045 ppm (3 signals), +ethanol 0.235 ppm (2 signals), all 5 matched signals 0.121 ppm. + +**Checks on the simulated spectrum** (from `comparison.csv`): + +| Signal | Lines resolved | Line spacing (Hz) | Integral (H) | +|---|---|---|---| +| ethyl acetate 4.104 q | 4 | 7.11 | 2.00 | +| ethyl acetate 2.035 s | 1 | – | 3.02 | +| ethyl acetate 1.155 t | 3 | 7.06 | 2.99 | +| ethanol 3.314 q | 4 | 6.62 | 2.01 | +| ethanol 1.187 t | 3 | 6.53 | 2.99 | + +The nmrsim spectrum has the expected first-order patterns: a 4-line quartet, a +3-line triplet and a singlet. The line spacings match the SPINUS J values within the +0.6 Hz grid spacing of the 8192-point spectrum. The integrals give back the 2:3:3 and +2:3 proton ratios. + +### Against the published accuracy of SPINUS + +The papers behind SPINUS report these mean absolute errors for CHn protons on +independent test sets: + +| Model (paper) | Test set | MAE (ppm) | MAE, best 90% (ppm) | +|---|---|---|---| +| Counterpropagation NN (Aires-de-Sousa, Hemmer & Gasteiger 2002) | 259 protons | 0.25 | 0.19 | +| Feed-forward NN ensembles, CDCl3 (Binev & Aires-de-Sousa 2004) | 952 protons | 0.29 | 0.20 | +| Associative NN with added data (Binev, Corvo & Aires-de-Sousa 2004) | 952 protons | 0.19 | 0.13 | + +- **Ethyl acetate:** MAE 0.045 ppm, well within the published range. Every shift is + within 0.11 ppm, and the multiplicities, J (7.1 Hz vs. tabulated 7 Hz) and proton + counts all match. +- **Ethanol:** the CH3 triplet is within 0.06 ppm, but the CH2 quartet is 0.41 ppm + too far upfield. That error is about twice the published MAE and lies in the + worst-10% tail that the "90%" MAE leaves out. The ethanol MAE (0.235 ppm) is close + to the published 0.19–0.29 ppm. The predicted J of 6.6 Hz agrees with the tabulated + "7" (an integer) to within its rounding. +- **All five CHn signals:** MAE 0.121 ppm, below every published MAE in the table. + With only five signals, this is a sanity check, not a benchmark. + +## Discussion and Caveats + +- **Exchangeable protons are not predicted.** SPINUS was trained only on protons + bonded to carbon (the 2002 and 2004 papers describe "CHn" protons). NMRdb.org therefore returns no + shift for the ethanol OH, and the `ethanol_signals.csv` table sums to 5 H instead of + 6 H. If Step 3 of the skill flags a proton-count mismatch, first check for OH, NH or + SH protons. In any case their experimental shift depends on concentration and + temperature: the ethanol OH appears at 1.32 ppm in CDCl3 but at 4.63 ppm in DMSO-d6 + (Fulmer 2010, Table 1). +- **Treat a single shift as uncertain by a few tenths of a ppm.** The ethanol CH2 error + of 0.41 ppm shows that even small molecules can fall in the error tail. To tell + structures apart, compare the whole pattern (multiplicities, integrals, relative order) + rather than one shift. +- **Solvent and conditions.** The experimental values are for dilute (trace) solutions + in CDCl3. SPINUS takes no solvent input, but its feed-forward networks were trained on + CDCl3 data. In other solvents, expect shifts to differ by up to several tenths of a ppm + (see the solvent columns of Fulmer 2010, Table 1). +- **The prediction is deterministic.** The server builds its own geometry: sending a + 2D molfile with or without H, or 3D ETKDG conformers from different random seeds, + returned the same shifts for both compounds. + +![Predicted spectra with experimental shifts marked](nmr_vs_literature.png) + +*Predicted 400 MHz spectra (blue) with the experimental CDCl3 shifts of Fulmer et al. +2010 (orange dashed lines). The hollow marker is the ethanol OH signal, which SPINUS does +not predict. Δδ = δ_pred − δ_exp is labelled where |Δδ| ≥ 0.1 ppm.* + +## References + +- G. R. Fulmer, A. J. M. Miller, N. H. Sherden, H. E. Gottlieb, A. Nudelman, B. M. Stoltz, + J. E. Bercaw, K. I. Goldberg, "NMR Chemical Shifts of Trace Impurities: Common Laboratory + Solvents, Organics, and Gases in Deuterated Solvents Relevant to the Organometallic + Chemist", *Organometallics* **2010**, 29, 2176–2179. + [DOI: 10.1021/om100106e](https://doi.org/10.1021/om100106e). The Supporting Information + (Table S1) is openly available from + [CaltechAUTHORS](https://authors.library.caltech.edu/records/q3m5b-fec90). +- H. E. Gottlieb, V. Kotlyar, A. Nudelman, "NMR Chemical Shifts of Common Laboratory + Solvents as Trace Impurities", *J. Org. Chem.* **1997**, 62, 7512–7515. + [DOI: 10.1021/jo971176v](https://doi.org/10.1021/jo971176v) +- J. Aires-de-Sousa, M. C. Hemmer, J. Gasteiger, "Prediction of 1H NMR Chemical Shifts + Using Neural Networks", *Anal. Chem.* **2002**, 74, 80–90. + [DOI: 10.1021/ac010737m](https://doi.org/10.1021/ac010737m) +- Y. Binev, J. Aires-de-Sousa, "Structure-Based Predictions of 1H NMR Chemical Shifts Using + Feed-Forward Neural Networks", *J. Chem. Inf. Comput. Sci.* **2004**, 44, 940–945. + [DOI: 10.1021/ci034228s](https://doi.org/10.1021/ci034228s) +- Y. Binev, M. Corvo, J. Aires-de-Sousa, "The Impact of Available Experimental Data on the + Prediction of 1H NMR Chemical Shifts by Neural Networks", *J. Chem. Inf. Comput. Sci.* + **2004**, 44, 946–949. [DOI: 10.1021/ci034229k](https://doi.org/10.1021/ci034229k) +- D. Banfi, L. Patiny, "www.nmrdb.org: Resurrecting and Processing NMR Spectra On-line", + *Chimia* **2008**, 62, 280–281. + [DOI: 10.2533/chimia.2008.280](https://doi.org/10.2533/chimia.2008.280) diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/compare_to_literature.py b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/compare_to_literature.py new file mode 100644 index 00000000..35173757 --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/compare_to_literature.py @@ -0,0 +1,365 @@ +""" +Compare predict_nmr.py outputs against tabulated experimental 1H NMR signals. + +For every compound listed in the literature table, the script + 1. matches each experimental signal to a predicted signal (Hungarian + assignment on |delta_pred - delta_exp|, with a penalty for unequal nH), + 2. reads the simulated spectrum (.xy) around each predicted signal and + measures the number of resolved lines, the mean line spacing (Hz) and the + integrated intensity (converted to a proton count), + 3. writes comparison.csv and plots the predicted spectra with the + experimental shift positions marked (nmr_vs_literature.png / .svg). + +Usage: + venv/run cpu python skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/compare_to_literature.py \ + --pred_dir skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3 \ + --literature skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/literature_cdcl3.csv + +Requirements: + - Environment: cpu + - Required packages: numpy, pandas, scipy, matplotlib +""" + +import argparse +import json +import pathlib + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D +import numpy as np +import pandas as pd +from scipy.optimize import linear_sum_assignment +from scipy.signal import find_peaks + +plt.rcParams.update({"font.size": 14}) + +PRED_COLOR = "#2a78d6" +EXP_COLOR = "#eb6834" +TEXT_COLOR = "#52514e" + + +def load_xy(path: pathlib.Path) -> tuple[np.ndarray, np.ndarray]: + """ + Load a two-column (ppm, intensity) spectrum and sort it by ascending ppm. + + Args: + path: Path to the tab-separated .xy file written by predict_nmr.py. + + Returns: + Tuple (ppm, intensity) of 1-D arrays sorted by ascending ppm. + """ + arr = np.loadtxt(path) + order = np.argsort(arr[:, 0]) + return arr[order, 0], arr[order, 1] + + +def match_signals(lit: pd.DataFrame, pred: pd.DataFrame) -> dict[int, int]: + """ + Assign experimental signals to predicted signals. + + Args: + lit: Experimental signals with columns shift_ppm and nH. + pred: Predicted signals with columns shift_ppm and nH. + + Returns: + Mapping {literature row index: predicted row index}. Experimental + signals left without a predicted partner are absent from the mapping. + """ + cost = np.abs(lit["shift_ppm"].values[:, None] - pred["shift_ppm"].values[None, :]) + cost = cost + 10.0 * (lit["nH"].values[:, None] != pred["nH"].values[None, :]) + rows, cols = linear_sum_assignment(cost) + return {int(lit.index[r]): int(pred.index[c]) for r, c in zip(rows, cols)} + + +def measure_multiplet( + ppm: np.ndarray, + intensity: np.ndarray, + center_ppm: float, + window_ppm: float, + field_mhz: float, +) -> dict: + """ + Measure the simulated multiplet around a predicted shift. + + Args: + ppm: Spectrum ppm axis (ascending). + intensity: Spectrum intensities. + center_ppm: Predicted chemical shift of the signal. + window_ppm: Half-width of the integration / peak-picking window. + field_mhz: Spectrometer frequency used to convert ppm to Hz. + + Returns: + Dict with keys n_lines, spacing_Hz (mean spacing of adjacent lines, + NaN for a singlet) and integral (trapezoidal area in the window). + """ + mask = np.abs(ppm - center_ppm) <= window_ppm + x, y = ppm[mask], intensity[mask] + peaks, _ = find_peaks(y, height=0.05 * y.max()) + step = x[1] - x[0] + refined = [] + for i in peaks: + y0, y1, y2 = y[i - 1], y[i], y[i + 1] + refined.append(x[i] + 0.5 * step * (y0 - y2) / (y0 - 2.0 * y1 + y2)) + refined = np.array(refined) + spacing = ( + (refined.max() - refined.min()) * field_mhz / (len(refined) - 1) + if len(refined) > 1 + else float("nan") + ) + return { + "n_lines": int(len(refined)), + "spacing_Hz": float(spacing), + "integral": float(np.trapezoid(y, x)), + } + + +def compare_compound( + name: str, + lit: pd.DataFrame, + pred_dir: pathlib.Path, + window_ppm: float, + field_mhz: float, +) -> tuple[pd.DataFrame, tuple[np.ndarray, np.ndarray]]: + """ + Build the per-signal comparison table for one compound. + + Args: + name: Compound name used as file stem by predict_nmr.py. + lit: Experimental signals for this compound. + pred_dir: Directory holding _signals.csv and .xy. + window_ppm: Half-width of the multiplet window in ppm. + field_mhz: Spectrometer frequency in MHz. + + Returns: + Tuple (comparison DataFrame, (ppm, intensity) of the simulated spectrum). + """ + pred = pd.read_csv(pred_dir / f"{name}_signals.csv", dtype={"J_Hz": str}) + ppm, intensity = load_xy(pred_dir / f"{name}.xy") + mapping = match_signals(lit, pred) + + measured = { + j: measure_multiplet( + ppm, intensity, pred.loc[j, "shift_ppm"], window_ppm, field_mhz + ) + for j in pred.index + } + total_area = sum(m["integral"] for m in measured.values()) + total_h = pred["nH"].sum() + + rows = [] + for i, lrow in lit.iterrows(): + row = { + "compound": name, + "group": lrow["group"], + "nH_exp": int(lrow["nH"]), + "shift_exp_ppm": lrow["shift_ppm"], + "mult_exp": lrow["multiplicity"], + "J_exp_Hz": lrow["J_Hz"], + } + if i in mapping: + j = mapping[i] + m = measured[j] + row.update( + { + "shift_pred_ppm": pred.loc[j, "shift_ppm"], + "mult_pred": pred.loc[j, "multiplicity"], + "J_pred_Hz": pred.loc[j, "J_Hz"], + "nH_pred": int(pred.loc[j, "nH"]), + "abs_err_ppm": round( + abs(pred.loc[j, "shift_ppm"] - lrow["shift_ppm"]), 3 + ), + "sim_lines": m["n_lines"], + "sim_spacing_Hz": round(m["spacing_Hz"], 2), + "sim_integral_H": round(m["integral"] / total_area * total_h, 2), + } + ) + rows.append(row) + return pd.DataFrame(rows), (ppm, intensity) + + +def plot_comparison( + spectra: dict, + table: pd.DataFrame, + out_stem: pathlib.Path, + ppm_range: tuple[float, float], + label_threshold_ppm: float = 0.1, +) -> None: + """ + Plot predicted spectra (one panel per compound) with experimental shifts marked. + + Args: + spectra: {compound: (ppm, intensity)}. + table: Comparison table produced by compare_compound. + out_stem: Output path without suffix; .png and .svg are written. + ppm_range: (ppm_min, ppm_max) shown on the inverted x-axis. + label_threshold_ppm: Shift errors at or above this value are labelled. + """ + names = list(spectra) + fig, axes = plt.subplots(len(names), 1, figsize=(6, 5), sharex=True) + axes = np.atleast_1d(axes) + for ax, name in zip(axes, names): + ppm, intensity = spectra[name] + ax.plot(ppm, intensity, color=PRED_COLOR, linewidth=2.5) + for _, row in table[table["compound"] == name].iterrows(): + predicted = not pd.isna(row["shift_pred_ppm"]) + ax.axvline( + row["shift_exp_ppm"], + color=EXP_COLOR, + linestyle="--", + linewidth=1.5, + ymax=0.88, + ) + ax.plot( + row["shift_exp_ppm"], + 1.12, + marker="v", + markersize=9, + color=EXP_COLOR, + markerfacecolor=EXP_COLOR if predicted else "white", + linestyle="none", + ) + if not predicted: + ax.annotate( + row["group"], + (row["shift_exp_ppm"], 0.55), + xytext=(-6, 0), + textcoords="offset points", + ha="right", + fontsize=10, + color=TEXT_COLOR, + ) + elif row["abs_err_ppm"] >= label_threshold_ppm: + delta = row["shift_pred_ppm"] - row["shift_exp_ppm"] + # The x-axis is inverted: an upfield prediction lies to the right on screen. + side = 1 if delta < 0 else -1 + ax.annotate( + f"$\\Delta\\delta$ = {delta:+.2f}", + (row["shift_exp_ppm"], 0.85), + xytext=(6 * side, 0), + textcoords="offset points", + ha="left" if side > 0 else "right", + fontsize=10, + color=TEXT_COLOR, + ) + ax.set_title(name.replace("_", " "), loc="left", fontsize=12) + ax.set_ylim(0, 1.25) + ax.set_yticks([0, 0.5, 1.0]) + ax.set_ylabel("Intensity", fontweight="bold") + ax.grid(False) + axes[-1].set_xlim(ppm_range[1], ppm_range[0]) + axes[-1].set_xlabel("Chemical shift (ppm)", fontweight="bold") + handles = [ + Line2D( + [], [], color=PRED_COLOR, linewidth=2.5, label="Predicted (SPINUS + nmrsim)" + ), + Line2D( + [], + [], + color=EXP_COLOR, + marker="v", + markersize=9, + linestyle="--", + linewidth=1.5, + label="Experimental, CDCl$_3$", + ), + Line2D( + [], + [], + color=EXP_COLOR, + marker="v", + markersize=9, + markerfacecolor="white", + linestyle="none", + label="Experimental, not predicted", + ), + ] + plt.tight_layout() + fig.legend( + handles=handles, + frameon=False, + fontsize=9, + loc="upper center", + bbox_to_anchor=(0.5, 0.0), + ncol=2, + ) + plt.savefig(out_stem.with_suffix(".png"), dpi=200, bbox_inches="tight") + plt.savefig(out_stem.with_suffix(".svg"), bbox_inches="tight") + plt.close(fig) + + +def main() -> None: + ap = argparse.ArgumentParser( + description="Compare predicted 1H NMR signals and spectra with tabulated experimental values." + ) + ap.add_argument( + "--pred_dir", required=True, help="Output directory of predict_nmr.py" + ) + ap.add_argument( + "--literature", + required=True, + help="CSV with columns compound, group, shift_ppm, multiplicity, J_Hz, nH", + ) + ap.add_argument( + "--window_ppm", + type=float, + default=0.1, + help="Half-width (ppm) of the window used to pick and integrate each multiplet (default: 0.1)", + ) + ap.add_argument( + "--ppm_min", + type=float, + default=0.6, + help="Lower ppm limit of the plot (default: 0.6)", + ) + ap.add_argument( + "--ppm_max", + type=float, + default=4.4, + help="Upper ppm limit of the plot (default: 4.4)", + ) + args = ap.parse_args() + + pred_dir = pathlib.Path(args.pred_dir) + manifest = json.loads((pred_dir / "predictions.json").read_text()) + field_mhz = manifest["parameters"]["field_mhz"] + lit_all = pd.read_csv(args.literature) + + tables, spectra = [], {} + for name, lit in lit_all.groupby("compound", sort=False): + table, spectrum = compare_compound( + name, lit, pred_dir, args.window_ppm, field_mhz + ) + tables.append(table) + spectra[name] = spectrum + table = pd.concat(tables, ignore_index=True) + table = table.astype({"nH_pred": "Int64", "sim_lines": "Int64"}) + table.to_csv(pred_dir / "comparison.csv", index=False) + + print(table.to_string(index=False)) + matched = table.dropna(subset=["abs_err_ppm"]) + for name, sub in matched.groupby("compound", sort=False): + print( + f"MAE {name}: {sub['abs_err_ppm'].mean():.3f} ppm over {len(sub)} signals" + ) + print( + f"MAE all matched signals: {matched['abs_err_ppm'].mean():.3f} ppm over {len(matched)} signals" + ) + unmatched = table[table["abs_err_ppm"].isna()] + for _, row in unmatched.iterrows(): + print( + f"Not predicted: {row['compound']} {row['group']} ({row['shift_exp_ppm']} ppm)" + ) + + plot_comparison( + spectra, table, pred_dir / "nmr_vs_literature", (args.ppm_min, args.ppm_max) + ) + print( + f"Wrote {pred_dir / 'comparison.csv'} and {pred_dir / 'nmr_vs_literature'}.png/.svg" + ) + + +if __name__ == "__main__": + main() diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/comparison.csv b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/comparison.csv new file mode 100644 index 00000000..ff218b50 --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/comparison.csv @@ -0,0 +1,7 @@ +compound,group,nH_exp,shift_exp_ppm,mult_exp,J_exp_Hz,shift_pred_ppm,mult_pred,J_pred_Hz,nH_pred,abs_err_ppm,sim_lines,sim_spacing_Hz,sim_integral_H +ethyl_acetate,CH3CO,3,2.05,s,,2.035,s,,3,0.015,1,,3.02 +ethyl_acetate,CH2 (OCH2CH3),2,4.12,q,7.0,4.104,q,7.1,2,0.016,4,7.11,2.0 +ethyl_acetate,CH3 (OCH2CH3),3,1.26,t,7.0,1.155,t,7.1,3,0.105,3,7.06,2.99 +ethanol,CH3,3,1.25,t,7.0,1.187,t,6.6,3,0.063,3,6.53,2.99 +ethanol,CH2,2,3.72,q,7.0,3.314,q,6.6,2,0.406,4,6.62,2.01 +ethanol,OH,1,1.32,s,,,,,,,,, diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol.xy b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol.xy new file mode 100644 index 00000000..01f3b22f --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol.xy @@ -0,0 +1,8192 @@ +12.000000 0.000000 +11.998474 0.000000 +11.996948 0.000000 +11.995422 0.000000 +11.993896 0.000000 +11.992370 0.000000 +11.990844 0.000000 +11.989318 0.000000 +11.987791 0.000000 +11.986265 0.000000 +11.984739 0.000000 +11.983213 0.000000 +11.981687 0.000000 +11.980161 0.000000 +11.978635 0.000000 +11.977109 0.000000 +11.975583 0.000000 +11.974057 0.000000 +11.972531 0.000000 +11.971005 0.000000 +11.969479 0.000000 +11.967953 0.000000 +11.966427 0.000000 +11.964901 0.000000 +11.963374 0.000000 +11.961848 0.000000 +11.960322 0.000000 +11.958796 0.000000 +11.957270 0.000000 +11.955744 0.000000 +11.954218 0.000000 +11.952692 0.000000 +11.951166 0.000000 +11.949640 0.000000 +11.948114 0.000000 +11.946588 0.000000 +11.945062 0.000000 +11.943536 0.000000 +11.942010 0.000000 +11.940483 0.000000 +11.938957 0.000000 +11.937431 0.000000 +11.935905 0.000000 +11.934379 0.000000 +11.932853 0.000000 +11.931327 0.000000 +11.929801 0.000000 +11.928275 0.000000 +11.926749 0.000000 +11.925223 0.000000 +11.923697 0.000000 +11.922171 0.000000 +11.920645 0.000000 +11.919119 0.000000 +11.917592 0.000000 +11.916066 0.000000 +11.914540 0.000000 +11.913014 0.000000 +11.911488 0.000000 +11.909962 0.000000 +11.908436 0.000000 +11.906910 0.000000 +11.905384 0.000000 +11.903858 0.000000 +11.902332 0.000000 +11.900806 0.000000 +11.899280 0.000000 +11.897754 0.000000 +11.896228 0.000000 +11.894702 0.000000 +11.893175 0.000000 +11.891649 0.000000 +11.890123 0.000000 +11.888597 0.000000 +11.887071 0.000000 +11.885545 0.000000 +11.884019 0.000000 +11.882493 0.000000 +11.880967 0.000000 +11.879441 0.000000 +11.877915 0.000000 +11.876389 0.000000 +11.874863 0.000000 +11.873337 0.000000 +11.871811 0.000000 +11.870284 0.000000 +11.868758 0.000000 +11.867232 0.000000 +11.865706 0.000000 +11.864180 0.000000 +11.862654 0.000000 +11.861128 0.000000 +11.859602 0.000000 +11.858076 0.000000 +11.856550 0.000000 +11.855024 0.000000 +11.853498 0.000000 +11.851972 0.000000 +11.850446 0.000000 +11.848920 0.000000 +11.847393 0.000000 +11.845867 0.000000 +11.844341 0.000000 +11.842815 0.000000 +11.841289 0.000000 +11.839763 0.000000 +11.838237 0.000000 +11.836711 0.000000 +11.835185 0.000000 +11.833659 0.000000 +11.832133 0.000000 +11.830607 0.000000 +11.829081 0.000000 +11.827555 0.000000 +11.826029 0.000000 +11.824503 0.000000 +11.822976 0.000000 +11.821450 0.000000 +11.819924 0.000000 +11.818398 0.000000 +11.816872 0.000000 +11.815346 0.000000 +11.813820 0.000000 +11.812294 0.000000 +11.810768 0.000000 +11.809242 0.000000 +11.807716 0.000000 +11.806190 0.000000 +11.804664 0.000000 +11.803138 0.000000 +11.801612 0.000000 +11.800085 0.000000 +11.798559 0.000000 +11.797033 0.000000 +11.795507 0.000000 +11.793981 0.000000 +11.792455 0.000000 +11.790929 0.000000 +11.789403 0.000000 +11.787877 0.000000 +11.786351 0.000000 +11.784825 0.000000 +11.783299 0.000000 +11.781773 0.000000 +11.780247 0.000000 +11.778721 0.000000 +11.777194 0.000000 +11.775668 0.000000 +11.774142 0.000000 +11.772616 0.000000 +11.771090 0.000000 +11.769564 0.000000 +11.768038 0.000000 +11.766512 0.000000 +11.764986 0.000000 +11.763460 0.000000 +11.761934 0.000000 +11.760408 0.000000 +11.758882 0.000000 +11.757356 0.000000 +11.755830 0.000000 +11.754304 0.000000 +11.752777 0.000000 +11.751251 0.000000 +11.749725 0.000000 +11.748199 0.000000 +11.746673 0.000000 +11.745147 0.000000 +11.743621 0.000000 +11.742095 0.000000 +11.740569 0.000000 +11.739043 0.000000 +11.737517 0.000000 +11.735991 0.000000 +11.734465 0.000000 +11.732939 0.000000 +11.731413 0.000000 +11.729886 0.000000 +11.728360 0.000000 +11.726834 0.000000 +11.725308 0.000000 +11.723782 0.000000 +11.722256 0.000000 +11.720730 0.000000 +11.719204 0.000000 +11.717678 0.000000 +11.716152 0.000000 +11.714626 0.000000 +11.713100 0.000000 +11.711574 0.000000 +11.710048 0.000000 +11.708522 0.000000 +11.706995 0.000000 +11.705469 0.000000 +11.703943 0.000000 +11.702417 0.000000 +11.700891 0.000000 +11.699365 0.000000 +11.697839 0.000000 +11.696313 0.000000 +11.694787 0.000000 +11.693261 0.000000 +11.691735 0.000000 +11.690209 0.000000 +11.688683 0.000000 +11.687157 0.000000 +11.685631 0.000000 +11.684105 0.000000 +11.682578 0.000000 +11.681052 0.000000 +11.679526 0.000000 +11.678000 0.000000 +11.676474 0.000000 +11.674948 0.000000 +11.673422 0.000000 +11.671896 0.000000 +11.670370 0.000000 +11.668844 0.000000 +11.667318 0.000000 +11.665792 0.000000 +11.664266 0.000000 +11.662740 0.000000 +11.661214 0.000000 +11.659687 0.000000 +11.658161 0.000000 +11.656635 0.000000 +11.655109 0.000000 +11.653583 0.000000 +11.652057 0.000000 +11.650531 0.000000 +11.649005 0.000000 +11.647479 0.000000 +11.645953 0.000000 +11.644427 0.000000 +11.642901 0.000000 +11.641375 0.000000 +11.639849 0.000000 +11.638323 0.000000 +11.636796 0.000000 +11.635270 0.000000 +11.633744 0.000000 +11.632218 0.000000 +11.630692 0.000000 +11.629166 0.000000 +11.627640 0.000000 +11.626114 0.000000 +11.624588 0.000000 +11.623062 0.000000 +11.621536 0.000000 +11.620010 0.000000 +11.618484 0.000000 +11.616958 0.000000 +11.615432 0.000000 +11.613906 0.000000 +11.612379 0.000000 +11.610853 0.000000 +11.609327 0.000000 +11.607801 0.000000 +11.606275 0.000000 +11.604749 0.000000 +11.603223 0.000000 +11.601697 0.000000 +11.600171 0.000000 +11.598645 0.000000 +11.597119 0.000000 +11.595593 0.000000 +11.594067 0.000000 +11.592541 0.000000 +11.591015 0.000000 +11.589488 0.000000 +11.587962 0.000000 +11.586436 0.000000 +11.584910 0.000000 +11.583384 0.000000 +11.581858 0.000000 +11.580332 0.000000 +11.578806 0.000000 +11.577280 0.000000 +11.575754 0.000000 +11.574228 0.000000 +11.572702 0.000000 +11.571176 0.000000 +11.569650 0.000000 +11.568124 0.000000 +11.566597 0.000000 +11.565071 0.000000 +11.563545 0.000000 +11.562019 0.000000 +11.560493 0.000000 +11.558967 0.000000 +11.557441 0.000000 +11.555915 0.000000 +11.554389 0.000000 +11.552863 0.000000 +11.551337 0.000000 +11.549811 0.000000 +11.548285 0.000000 +11.546759 0.000000 +11.545233 0.000000 +11.543707 0.000000 +11.542180 0.000000 +11.540654 0.000000 +11.539128 0.000000 +11.537602 0.000000 +11.536076 0.000000 +11.534550 0.000000 +11.533024 0.000000 +11.531498 0.000000 +11.529972 0.000000 +11.528446 0.000000 +11.526920 0.000000 +11.525394 0.000000 +11.523868 0.000000 +11.522342 0.000000 +11.520816 0.000000 +11.519289 0.000000 +11.517763 0.000000 +11.516237 0.000000 +11.514711 0.000000 +11.513185 0.000000 +11.511659 0.000000 +11.510133 0.000000 +11.508607 0.000000 +11.507081 0.000000 +11.505555 0.000000 +11.504029 0.000000 +11.502503 0.000000 +11.500977 0.000000 +11.499451 0.000000 +11.497925 0.000000 +11.496398 0.000000 +11.494872 0.000000 +11.493346 0.000000 +11.491820 0.000000 +11.490294 0.000000 +11.488768 0.000000 +11.487242 0.000000 +11.485716 0.000000 +11.484190 0.000000 +11.482664 0.000000 +11.481138 0.000000 +11.479612 0.000000 +11.478086 0.000000 +11.476560 0.000000 +11.475034 0.000000 +11.473508 0.000000 +11.471981 0.000000 +11.470455 0.000000 +11.468929 0.000000 +11.467403 0.000000 +11.465877 0.000000 +11.464351 0.000000 +11.462825 0.000000 +11.461299 0.000000 +11.459773 0.000000 +11.458247 0.000000 +11.456721 0.000000 +11.455195 0.000000 +11.453669 0.000000 +11.452143 0.000000 +11.450617 0.000000 +11.449090 0.000000 +11.447564 0.000000 +11.446038 0.000000 +11.444512 0.000000 +11.442986 0.000000 +11.441460 0.000000 +11.439934 0.000000 +11.438408 0.000000 +11.436882 0.000000 +11.435356 0.000000 +11.433830 0.000000 +11.432304 0.000000 +11.430778 0.000000 +11.429252 0.000000 +11.427726 0.000000 +11.426199 0.000000 +11.424673 0.000000 +11.423147 0.000000 +11.421621 0.000000 +11.420095 0.000000 +11.418569 0.000000 +11.417043 0.000000 +11.415517 0.000000 +11.413991 0.000000 +11.412465 0.000000 +11.410939 0.000000 +11.409413 0.000000 +11.407887 0.000000 +11.406361 0.000000 +11.404835 0.000000 +11.403309 0.000000 +11.401782 0.000000 +11.400256 0.000000 +11.398730 0.000000 +11.397204 0.000000 +11.395678 0.000000 +11.394152 0.000000 +11.392626 0.000000 +11.391100 0.000000 +11.389574 0.000000 +11.388048 0.000000 +11.386522 0.000000 +11.384996 0.000000 +11.383470 0.000000 +11.381944 0.000000 +11.380418 0.000000 +11.378891 0.000000 +11.377365 0.000000 +11.375839 0.000000 +11.374313 0.000000 +11.372787 0.000000 +11.371261 0.000000 +11.369735 0.000000 +11.368209 0.000000 +11.366683 0.000000 +11.365157 0.000000 +11.363631 0.000000 +11.362105 0.000000 +11.360579 0.000000 +11.359053 0.000000 +11.357527 0.000000 +11.356000 0.000000 +11.354474 0.000000 +11.352948 0.000000 +11.351422 0.000000 +11.349896 0.000000 +11.348370 0.000000 +11.346844 0.000000 +11.345318 0.000000 +11.343792 0.000000 +11.342266 0.000000 +11.340740 0.000000 +11.339214 0.000000 +11.337688 0.000000 +11.336162 0.000000 +11.334636 0.000000 +11.333110 0.000000 +11.331583 0.000000 +11.330057 0.000000 +11.328531 0.000000 +11.327005 0.000000 +11.325479 0.000000 +11.323953 0.000000 +11.322427 0.000000 +11.320901 0.000000 +11.319375 0.000000 +11.317849 0.000000 +11.316323 0.000000 +11.314797 0.000000 +11.313271 0.000000 +11.311745 0.000000 +11.310219 0.000000 +11.308692 0.000000 +11.307166 0.000000 +11.305640 0.000000 +11.304114 0.000000 +11.302588 0.000000 +11.301062 0.000000 +11.299536 0.000000 +11.298010 0.000000 +11.296484 0.000000 +11.294958 0.000000 +11.293432 0.000000 +11.291906 0.000000 +11.290380 0.000000 +11.288854 0.000000 +11.287328 0.000000 +11.285801 0.000000 +11.284275 0.000000 +11.282749 0.000000 +11.281223 0.000000 +11.279697 0.000000 +11.278171 0.000000 +11.276645 0.000000 +11.275119 0.000000 +11.273593 0.000000 +11.272067 0.000000 +11.270541 0.000000 +11.269015 0.000000 +11.267489 0.000000 +11.265963 0.000000 +11.264437 0.000000 +11.262911 0.000000 +11.261384 0.000000 +11.259858 0.000000 +11.258332 0.000000 +11.256806 0.000000 +11.255280 0.000000 +11.253754 0.000000 +11.252228 0.000000 +11.250702 0.000000 +11.249176 0.000000 +11.247650 0.000000 +11.246124 0.000000 +11.244598 0.000000 +11.243072 0.000000 +11.241546 0.000000 +11.240020 0.000000 +11.238493 0.000000 +11.236967 0.000000 +11.235441 0.000000 +11.233915 0.000000 +11.232389 0.000000 +11.230863 0.000000 +11.229337 0.000000 +11.227811 0.000000 +11.226285 0.000000 +11.224759 0.000000 +11.223233 0.000000 +11.221707 0.000000 +11.220181 0.000000 +11.218655 0.000000 +11.217129 0.000000 +11.215602 0.000000 +11.214076 0.000000 +11.212550 0.000000 +11.211024 0.000000 +11.209498 0.000000 +11.207972 0.000000 +11.206446 0.000000 +11.204920 0.000000 +11.203394 0.000000 +11.201868 0.000000 +11.200342 0.000000 +11.198816 0.000000 +11.197290 0.000000 +11.195764 0.000000 +11.194238 0.000000 +11.192712 0.000000 +11.191185 0.000000 +11.189659 0.000000 +11.188133 0.000000 +11.186607 0.000000 +11.185081 0.000000 +11.183555 0.000000 +11.182029 0.000000 +11.180503 0.000000 +11.178977 0.000000 +11.177451 0.000000 +11.175925 0.000000 +11.174399 0.000000 +11.172873 0.000000 +11.171347 0.000000 +11.169821 0.000000 +11.168294 0.000000 +11.166768 0.000000 +11.165242 0.000000 +11.163716 0.000000 +11.162190 0.000000 +11.160664 0.000000 +11.159138 0.000000 +11.157612 0.000000 +11.156086 0.000000 +11.154560 0.000000 +11.153034 0.000000 +11.151508 0.000000 +11.149982 0.000000 +11.148456 0.000000 +11.146930 0.000000 +11.145403 0.000000 +11.143877 0.000000 +11.142351 0.000000 +11.140825 0.000000 +11.139299 0.000000 +11.137773 0.000000 +11.136247 0.000000 +11.134721 0.000000 +11.133195 0.000000 +11.131669 0.000000 +11.130143 0.000000 +11.128617 0.000000 +11.127091 0.000000 +11.125565 0.000000 +11.124039 0.000000 +11.122513 0.000000 +11.120986 0.000000 +11.119460 0.000000 +11.117934 0.000000 +11.116408 0.000000 +11.114882 0.000000 +11.113356 0.000000 +11.111830 0.000000 +11.110304 0.000000 +11.108778 0.000000 +11.107252 0.000000 +11.105726 0.000000 +11.104200 0.000000 +11.102674 0.000000 +11.101148 0.000000 +11.099622 0.000000 +11.098095 0.000000 +11.096569 0.000000 +11.095043 0.000000 +11.093517 0.000000 +11.091991 0.000000 +11.090465 0.000000 +11.088939 0.000000 +11.087413 0.000000 +11.085887 0.000000 +11.084361 0.000000 +11.082835 0.000000 +11.081309 0.000000 +11.079783 0.000000 +11.078257 0.000000 +11.076731 0.000000 +11.075204 0.000000 +11.073678 0.000000 +11.072152 0.000000 +11.070626 0.000000 +11.069100 0.000000 +11.067574 0.000000 +11.066048 0.000000 +11.064522 0.000000 +11.062996 0.000000 +11.061470 0.000000 +11.059944 0.000000 +11.058418 0.000000 +11.056892 0.000000 +11.055366 0.000000 +11.053840 0.000000 +11.052314 0.000000 +11.050787 0.000000 +11.049261 0.000000 +11.047735 0.000000 +11.046209 0.000000 +11.044683 0.000000 +11.043157 0.000000 +11.041631 0.000000 +11.040105 0.000000 +11.038579 0.000000 +11.037053 0.000000 +11.035527 0.000000 +11.034001 0.000000 +11.032475 0.000000 +11.030949 0.000000 +11.029423 0.000000 +11.027896 0.000000 +11.026370 0.000000 +11.024844 0.000000 +11.023318 0.000000 +11.021792 0.000000 +11.020266 0.000000 +11.018740 0.000000 +11.017214 0.000000 +11.015688 0.000000 +11.014162 0.000000 +11.012636 0.000000 +11.011110 0.000000 +11.009584 0.000000 +11.008058 0.000000 +11.006532 0.000000 +11.005005 0.000000 +11.003479 0.000000 +11.001953 0.000000 +11.000427 0.000000 +10.998901 0.000000 +10.997375 0.000000 +10.995849 0.000000 +10.994323 0.000000 +10.992797 0.000000 +10.991271 0.000000 +10.989745 0.000000 +10.988219 0.000000 +10.986693 0.000000 +10.985167 0.000000 +10.983641 0.000000 +10.982115 0.000000 +10.980588 0.000000 +10.979062 0.000000 +10.977536 0.000000 +10.976010 0.000000 +10.974484 0.000000 +10.972958 0.000000 +10.971432 0.000000 +10.969906 0.000000 +10.968380 0.000000 +10.966854 0.000000 +10.965328 0.000000 +10.963802 0.000000 +10.962276 0.000000 +10.960750 0.000000 +10.959224 0.000000 +10.957697 0.000000 +10.956171 0.000000 +10.954645 0.000000 +10.953119 0.000000 +10.951593 0.000000 +10.950067 0.000000 +10.948541 0.000000 +10.947015 0.000000 +10.945489 0.000000 +10.943963 0.000000 +10.942437 0.000000 +10.940911 0.000000 +10.939385 0.000000 +10.937859 0.000000 +10.936333 0.000000 +10.934806 0.000000 +10.933280 0.000000 +10.931754 0.000000 +10.930228 0.000000 +10.928702 0.000000 +10.927176 0.000000 +10.925650 0.000000 +10.924124 0.000000 +10.922598 0.000000 +10.921072 0.000000 +10.919546 0.000000 +10.918020 0.000000 +10.916494 0.000000 +10.914968 0.000000 +10.913442 0.000000 +10.911916 0.000000 +10.910389 0.000000 +10.908863 0.000000 +10.907337 0.000000 +10.905811 0.000000 +10.904285 0.000000 +10.902759 0.000000 +10.901233 0.000000 +10.899707 0.000000 +10.898181 0.000000 +10.896655 0.000000 +10.895129 0.000000 +10.893603 0.000000 +10.892077 0.000000 +10.890551 0.000000 +10.889025 0.000000 +10.887498 0.000000 +10.885972 0.000000 +10.884446 0.000000 +10.882920 0.000000 +10.881394 0.000000 +10.879868 0.000000 +10.878342 0.000000 +10.876816 0.000000 +10.875290 0.000000 +10.873764 0.000000 +10.872238 0.000000 +10.870712 0.000000 +10.869186 0.000000 +10.867660 0.000000 +10.866134 0.000000 +10.864607 0.000000 +10.863081 0.000000 +10.861555 0.000000 +10.860029 0.000000 +10.858503 0.000000 +10.856977 0.000000 +10.855451 0.000000 +10.853925 0.000000 +10.852399 0.000000 +10.850873 0.000000 +10.849347 0.000000 +10.847821 0.000000 +10.846295 0.000000 +10.844769 0.000000 +10.843243 0.000000 +10.841717 0.000000 +10.840190 0.000000 +10.838664 0.000000 +10.837138 0.000000 +10.835612 0.000000 +10.834086 0.000000 +10.832560 0.000000 +10.831034 0.000000 +10.829508 0.000000 +10.827982 0.000000 +10.826456 0.000000 +10.824930 0.000000 +10.823404 0.000000 +10.821878 0.000000 +10.820352 0.000000 +10.818826 0.000000 +10.817299 0.000000 +10.815773 0.000000 +10.814247 0.000000 +10.812721 0.000000 +10.811195 0.000000 +10.809669 0.000000 +10.808143 0.000000 +10.806617 0.000000 +10.805091 0.000000 +10.803565 0.000000 +10.802039 0.000000 +10.800513 0.000000 +10.798987 0.000000 +10.797461 0.000000 +10.795935 0.000000 +10.794408 0.000000 +10.792882 0.000000 +10.791356 0.000000 +10.789830 0.000000 +10.788304 0.000000 +10.786778 0.000000 +10.785252 0.000000 +10.783726 0.000000 +10.782200 0.000000 +10.780674 0.000000 +10.779148 0.000000 +10.777622 0.000000 +10.776096 0.000000 +10.774570 0.000000 +10.773044 0.000000 +10.771518 0.000000 +10.769991 0.000000 +10.768465 0.000000 +10.766939 0.000000 +10.765413 0.000000 +10.763887 0.000000 +10.762361 0.000000 +10.760835 0.000000 +10.759309 0.000000 +10.757783 0.000000 +10.756257 0.000000 +10.754731 0.000000 +10.753205 0.000000 +10.751679 0.000000 +10.750153 0.000000 +10.748627 0.000000 +10.747100 0.000000 +10.745574 0.000000 +10.744048 0.000000 +10.742522 0.000000 +10.740996 0.000000 +10.739470 0.000000 +10.737944 0.000000 +10.736418 0.000000 +10.734892 0.000000 +10.733366 0.000000 +10.731840 0.000000 +10.730314 0.000000 +10.728788 0.000000 +10.727262 0.000000 +10.725736 0.000000 +10.724209 0.000000 +10.722683 0.000000 +10.721157 0.000000 +10.719631 0.000000 +10.718105 0.000000 +10.716579 0.000000 +10.715053 0.000000 +10.713527 0.000000 +10.712001 0.000000 +10.710475 0.000000 +10.708949 0.000000 +10.707423 0.000000 +10.705897 0.000000 +10.704371 0.000000 +10.702845 0.000000 +10.701319 0.000000 +10.699792 0.000000 +10.698266 0.000000 +10.696740 0.000000 +10.695214 0.000000 +10.693688 0.000000 +10.692162 0.000000 +10.690636 0.000000 +10.689110 0.000000 +10.687584 0.000000 +10.686058 0.000000 +10.684532 0.000000 +10.683006 0.000000 +10.681480 0.000000 +10.679954 0.000000 +10.678428 0.000000 +10.676901 0.000000 +10.675375 0.000000 +10.673849 0.000000 +10.672323 0.000000 +10.670797 0.000000 +10.669271 0.000000 +10.667745 0.000000 +10.666219 0.000000 +10.664693 0.000000 +10.663167 0.000000 +10.661641 0.000000 +10.660115 0.000000 +10.658589 0.000000 +10.657063 0.000000 +10.655537 0.000000 +10.654010 0.000000 +10.652484 0.000000 +10.650958 0.000000 +10.649432 0.000000 +10.647906 0.000000 +10.646380 0.000000 +10.644854 0.000000 +10.643328 0.000000 +10.641802 0.000000 +10.640276 0.000000 +10.638750 0.000000 +10.637224 0.000000 +10.635698 0.000000 +10.634172 0.000000 +10.632646 0.000000 +10.631120 0.000000 +10.629593 0.000000 +10.628067 0.000000 +10.626541 0.000000 +10.625015 0.000000 +10.623489 0.000000 +10.621963 0.000000 +10.620437 0.000000 +10.618911 0.000000 +10.617385 0.000000 +10.615859 0.000000 +10.614333 0.000000 +10.612807 0.000000 +10.611281 0.000000 +10.609755 0.000000 +10.608229 0.000000 +10.606702 0.000000 +10.605176 0.000000 +10.603650 0.000000 +10.602124 0.000000 +10.600598 0.000000 +10.599072 0.000000 +10.597546 0.000000 +10.596020 0.000000 +10.594494 0.000000 +10.592968 0.000000 +10.591442 0.000000 +10.589916 0.000000 +10.588390 0.000000 +10.586864 0.000000 +10.585338 0.000000 +10.583812 0.000000 +10.582285 0.000000 +10.580759 0.000000 +10.579233 0.000000 +10.577707 0.000000 +10.576181 0.000000 +10.574655 0.000000 +10.573129 0.000000 +10.571603 0.000000 +10.570077 0.000000 +10.568551 0.000000 +10.567025 0.000000 +10.565499 0.000000 +10.563973 0.000000 +10.562447 0.000000 +10.560921 0.000000 +10.559394 0.000000 +10.557868 0.000000 +10.556342 0.000000 +10.554816 0.000000 +10.553290 0.000000 +10.551764 0.000000 +10.550238 0.000000 +10.548712 0.000000 +10.547186 0.000000 +10.545660 0.000000 +10.544134 0.000000 +10.542608 0.000000 +10.541082 0.000000 +10.539556 0.000000 +10.538030 0.000000 +10.536503 0.000000 +10.534977 0.000000 +10.533451 0.000000 +10.531925 0.000000 +10.530399 0.000000 +10.528873 0.000000 +10.527347 0.000000 +10.525821 0.000000 +10.524295 0.000000 +10.522769 0.000000 +10.521243 0.000000 +10.519717 0.000000 +10.518191 0.000000 +10.516665 0.000000 +10.515139 0.000000 +10.513613 0.000000 +10.512086 0.000000 +10.510560 0.000000 +10.509034 0.000000 +10.507508 0.000000 +10.505982 0.000000 +10.504456 0.000000 +10.502930 0.000000 +10.501404 0.000000 +10.499878 0.000000 +10.498352 0.000000 +10.496826 0.000000 +10.495300 0.000000 +10.493774 0.000000 +10.492248 0.000000 +10.490722 0.000000 +10.489195 0.000000 +10.487669 0.000000 +10.486143 0.000000 +10.484617 0.000000 +10.483091 0.000000 +10.481565 0.000000 +10.480039 0.000000 +10.478513 0.000000 +10.476987 0.000000 +10.475461 0.000000 +10.473935 0.000000 +10.472409 0.000000 +10.470883 0.000000 +10.469357 0.000000 +10.467831 0.000000 +10.466304 0.000000 +10.464778 0.000000 +10.463252 0.000000 +10.461726 0.000000 +10.460200 0.000000 +10.458674 0.000000 +10.457148 0.000000 +10.455622 0.000000 +10.454096 0.000000 +10.452570 0.000000 +10.451044 0.000000 +10.449518 0.000000 +10.447992 0.000000 +10.446466 0.000000 +10.444940 0.000000 +10.443414 0.000000 +10.441887 0.000000 +10.440361 0.000000 +10.438835 0.000000 +10.437309 0.000000 +10.435783 0.000000 +10.434257 0.000000 +10.432731 0.000000 +10.431205 0.000000 +10.429679 0.000000 +10.428153 0.000000 +10.426627 0.000000 +10.425101 0.000000 +10.423575 0.000000 +10.422049 0.000000 +10.420523 0.000000 +10.418996 0.000000 +10.417470 0.000000 +10.415944 0.000000 +10.414418 0.000000 +10.412892 0.000000 +10.411366 0.000000 +10.409840 0.000000 +10.408314 0.000000 +10.406788 0.000000 +10.405262 0.000000 +10.403736 0.000000 +10.402210 0.000000 +10.400684 0.000000 +10.399158 0.000000 +10.397632 0.000000 +10.396105 0.000000 +10.394579 0.000000 +10.393053 0.000000 +10.391527 0.000000 +10.390001 0.000000 +10.388475 0.000000 +10.386949 0.000000 +10.385423 0.000000 +10.383897 0.000000 +10.382371 0.000000 +10.380845 0.000000 +10.379319 0.000000 +10.377793 0.000000 +10.376267 0.000000 +10.374741 0.000000 +10.373215 0.000000 +10.371688 0.000000 +10.370162 0.000000 +10.368636 0.000000 +10.367110 0.000000 +10.365584 0.000000 +10.364058 0.000000 +10.362532 0.000000 +10.361006 0.000000 +10.359480 0.000000 +10.357954 0.000000 +10.356428 0.000000 +10.354902 0.000000 +10.353376 0.000000 +10.351850 0.000000 +10.350324 0.000000 +10.348797 0.000000 +10.347271 0.000000 +10.345745 0.000000 +10.344219 0.000000 +10.342693 0.000000 +10.341167 0.000000 +10.339641 0.000000 +10.338115 0.000000 +10.336589 0.000000 +10.335063 0.000000 +10.333537 0.000000 +10.332011 0.000000 +10.330485 0.000000 +10.328959 0.000000 +10.327433 0.000000 +10.325906 0.000000 +10.324380 0.000000 +10.322854 0.000000 +10.321328 0.000000 +10.319802 0.000000 +10.318276 0.000000 +10.316750 0.000000 +10.315224 0.000000 +10.313698 0.000000 +10.312172 0.000000 +10.310646 0.000000 +10.309120 0.000000 +10.307594 0.000000 +10.306068 0.000000 +10.304542 0.000000 +10.303016 0.000000 +10.301489 0.000000 +10.299963 0.000000 +10.298437 0.000000 +10.296911 0.000000 +10.295385 0.000000 +10.293859 0.000000 +10.292333 0.000000 +10.290807 0.000000 +10.289281 0.000000 +10.287755 0.000000 +10.286229 0.000000 +10.284703 0.000000 +10.283177 0.000000 +10.281651 0.000000 +10.280125 0.000000 +10.278598 0.000000 +10.277072 0.000000 +10.275546 0.000000 +10.274020 0.000000 +10.272494 0.000000 +10.270968 0.000000 +10.269442 0.000000 +10.267916 0.000000 +10.266390 0.000000 +10.264864 0.000000 +10.263338 0.000000 +10.261812 0.000000 +10.260286 0.000000 +10.258760 0.000000 +10.257234 0.000000 +10.255707 0.000000 +10.254181 0.000000 +10.252655 0.000000 +10.251129 0.000000 +10.249603 0.000000 +10.248077 0.000000 +10.246551 0.000000 +10.245025 0.000000 +10.243499 0.000000 +10.241973 0.000000 +10.240447 0.000000 +10.238921 0.000000 +10.237395 0.000000 +10.235869 0.000000 +10.234343 0.000000 +10.232817 0.000000 +10.231290 0.000000 +10.229764 0.000000 +10.228238 0.000000 +10.226712 0.000000 +10.225186 0.000000 +10.223660 0.000000 +10.222134 0.000000 +10.220608 0.000000 +10.219082 0.000000 +10.217556 0.000000 +10.216030 0.000000 +10.214504 0.000000 +10.212978 0.000000 +10.211452 0.000000 +10.209926 0.000000 +10.208399 0.000000 +10.206873 0.000000 +10.205347 0.000000 +10.203821 0.000000 +10.202295 0.000000 +10.200769 0.000000 +10.199243 0.000000 +10.197717 0.000000 +10.196191 0.000000 +10.194665 0.000000 +10.193139 0.000000 +10.191613 0.000000 +10.190087 0.000000 +10.188561 0.000000 +10.187035 0.000000 +10.185508 0.000000 +10.183982 0.000000 +10.182456 0.000000 +10.180930 0.000000 +10.179404 0.000000 +10.177878 0.000000 +10.176352 0.000000 +10.174826 0.000000 +10.173300 0.000000 +10.171774 0.000000 +10.170248 0.000000 +10.168722 0.000000 +10.167196 0.000000 +10.165670 0.000000 +10.164144 0.000000 +10.162618 0.000000 +10.161091 0.000000 +10.159565 0.000000 +10.158039 0.000000 +10.156513 0.000000 +10.154987 0.000000 +10.153461 0.000000 +10.151935 0.000000 +10.150409 0.000000 +10.148883 0.000000 +10.147357 0.000000 +10.145831 0.000000 +10.144305 0.000000 +10.142779 0.000000 +10.141253 0.000000 +10.139727 0.000000 +10.138200 0.000000 +10.136674 0.000000 +10.135148 0.000000 +10.133622 0.000000 +10.132096 0.000000 +10.130570 0.000000 +10.129044 0.000000 +10.127518 0.000000 +10.125992 0.000000 +10.124466 0.000000 +10.122940 0.000000 +10.121414 0.000000 +10.119888 0.000000 +10.118362 0.000000 +10.116836 0.000000 +10.115309 0.000000 +10.113783 0.000000 +10.112257 0.000000 +10.110731 0.000000 +10.109205 0.000000 +10.107679 0.000000 +10.106153 0.000000 +10.104627 0.000000 +10.103101 0.000000 +10.101575 0.000000 +10.100049 0.000000 +10.098523 0.000000 +10.096997 0.000000 +10.095471 0.000000 +10.093945 0.000000 +10.092419 0.000000 +10.090892 0.000000 +10.089366 0.000000 +10.087840 0.000000 +10.086314 0.000000 +10.084788 0.000000 +10.083262 0.000000 +10.081736 0.000000 +10.080210 0.000000 +10.078684 0.000000 +10.077158 0.000000 +10.075632 0.000000 +10.074106 0.000000 +10.072580 0.000000 +10.071054 0.000000 +10.069528 0.000000 +10.068001 0.000000 +10.066475 0.000000 +10.064949 0.000000 +10.063423 0.000000 +10.061897 0.000000 +10.060371 0.000000 +10.058845 0.000000 +10.057319 0.000000 +10.055793 0.000000 +10.054267 0.000000 +10.052741 0.000000 +10.051215 0.000000 +10.049689 0.000000 +10.048163 0.000000 +10.046637 0.000000 +10.045110 0.000000 +10.043584 0.000000 +10.042058 0.000000 +10.040532 0.000000 +10.039006 0.000000 +10.037480 0.000000 +10.035954 0.000000 +10.034428 0.000000 +10.032902 0.000000 +10.031376 0.000000 +10.029850 0.000000 +10.028324 0.000000 +10.026798 0.000000 +10.025272 0.000000 +10.023746 0.000000 +10.022220 0.000000 +10.020693 0.000000 +10.019167 0.000000 +10.017641 0.000000 +10.016115 0.000000 +10.014589 0.000000 +10.013063 0.000000 +10.011537 0.000000 +10.010011 0.000000 +10.008485 0.000000 +10.006959 0.000000 +10.005433 0.000000 +10.003907 0.000000 +10.002381 0.000000 +10.000855 0.000000 +9.999329 0.000000 +9.997802 0.000000 +9.996276 0.000000 +9.994750 0.000000 +9.993224 0.000000 +9.991698 0.000000 +9.990172 0.000000 +9.988646 0.000000 +9.987120 0.000000 +9.985594 0.000000 +9.984068 0.000000 +9.982542 0.000000 +9.981016 0.000000 +9.979490 0.000000 +9.977964 0.000000 +9.976438 0.000000 +9.974911 0.000000 +9.973385 0.000000 +9.971859 0.000000 +9.970333 0.000000 +9.968807 0.000000 +9.967281 0.000000 +9.965755 0.000000 +9.964229 0.000000 +9.962703 0.000000 +9.961177 0.000000 +9.959651 0.000000 +9.958125 0.000000 +9.956599 0.000000 +9.955073 0.000000 +9.953547 0.000000 +9.952021 0.000000 +9.950494 0.000000 +9.948968 0.000000 +9.947442 0.000000 +9.945916 0.000000 +9.944390 0.000000 +9.942864 0.000000 +9.941338 0.000000 +9.939812 0.000000 +9.938286 0.000000 +9.936760 0.000000 +9.935234 0.000000 +9.933708 0.000000 +9.932182 0.000000 +9.930656 0.000000 +9.929130 0.000000 +9.927603 0.000000 +9.926077 0.000000 +9.924551 0.000000 +9.923025 0.000000 +9.921499 0.000000 +9.919973 0.000000 +9.918447 0.000000 +9.916921 0.000000 +9.915395 0.000000 +9.913869 0.000000 +9.912343 0.000000 +9.910817 0.000000 +9.909291 0.000000 +9.907765 0.000000 +9.906239 0.000000 +9.904712 0.000000 +9.903186 0.000000 +9.901660 0.000000 +9.900134 0.000000 +9.898608 0.000000 +9.897082 0.000000 +9.895556 0.000000 +9.894030 0.000000 +9.892504 0.000000 +9.890978 0.000000 +9.889452 0.000000 +9.887926 0.000000 +9.886400 0.000000 +9.884874 0.000000 +9.883348 0.000000 +9.881822 0.000000 +9.880295 0.000000 +9.878769 0.000000 +9.877243 0.000000 +9.875717 0.000000 +9.874191 0.000000 +9.872665 0.000000 +9.871139 0.000000 +9.869613 0.000000 +9.868087 0.000000 +9.866561 0.000000 +9.865035 0.000000 +9.863509 0.000000 +9.861983 0.000000 +9.860457 0.000000 +9.858931 0.000000 +9.857404 0.000000 +9.855878 0.000000 +9.854352 0.000000 +9.852826 0.000000 +9.851300 0.000000 +9.849774 0.000000 +9.848248 0.000000 +9.846722 0.000000 +9.845196 0.000000 +9.843670 0.000000 +9.842144 0.000000 +9.840618 0.000000 +9.839092 0.000000 +9.837566 0.000000 +9.836040 0.000000 +9.834513 0.000000 +9.832987 0.000000 +9.831461 0.000000 +9.829935 0.000000 +9.828409 0.000000 +9.826883 0.000000 +9.825357 0.000000 +9.823831 0.000000 +9.822305 0.000000 +9.820779 0.000000 +9.819253 0.000000 +9.817727 0.000000 +9.816201 0.000000 +9.814675 0.000000 +9.813149 0.000000 +9.811623 0.000000 +9.810096 0.000000 +9.808570 0.000000 +9.807044 0.000000 +9.805518 0.000000 +9.803992 0.000000 +9.802466 0.000000 +9.800940 0.000000 +9.799414 0.000000 +9.797888 0.000000 +9.796362 0.000000 +9.794836 0.000000 +9.793310 0.000000 +9.791784 0.000000 +9.790258 0.000000 +9.788732 0.000000 +9.787205 0.000000 +9.785679 0.000000 +9.784153 0.000000 +9.782627 0.000000 +9.781101 0.000000 +9.779575 0.000000 +9.778049 0.000000 +9.776523 0.000000 +9.774997 0.000000 +9.773471 0.000000 +9.771945 0.000000 +9.770419 0.000000 +9.768893 0.000000 +9.767367 0.000000 +9.765841 0.000000 +9.764314 0.000000 +9.762788 0.000000 +9.761262 0.000000 +9.759736 0.000000 +9.758210 0.000000 +9.756684 0.000000 +9.755158 0.000000 +9.753632 0.000000 +9.752106 0.000000 +9.750580 0.000000 +9.749054 0.000000 +9.747528 0.000000 +9.746002 0.000000 +9.744476 0.000000 +9.742950 0.000000 +9.741424 0.000000 +9.739897 0.000000 +9.738371 0.000000 +9.736845 0.000000 +9.735319 0.000000 +9.733793 0.000000 +9.732267 0.000000 +9.730741 0.000000 +9.729215 0.000000 +9.727689 0.000000 +9.726163 0.000000 +9.724637 0.000000 +9.723111 0.000000 +9.721585 0.000000 +9.720059 0.000000 +9.718533 0.000000 +9.717006 0.000000 +9.715480 0.000000 +9.713954 0.000000 +9.712428 0.000000 +9.710902 0.000000 +9.709376 0.000000 +9.707850 0.000000 +9.706324 0.000000 +9.704798 0.000000 +9.703272 0.000000 +9.701746 0.000000 +9.700220 0.000000 +9.698694 0.000000 +9.697168 0.000000 +9.695642 0.000000 +9.694115 0.000000 +9.692589 0.000000 +9.691063 0.000000 +9.689537 0.000000 +9.688011 0.000000 +9.686485 0.000000 +9.684959 0.000000 +9.683433 0.000000 +9.681907 0.000000 +9.680381 0.000000 +9.678855 0.000000 +9.677329 0.000000 +9.675803 0.000000 +9.674277 0.000000 +9.672751 0.000000 +9.671225 0.000000 +9.669698 0.000000 +9.668172 0.000000 +9.666646 0.000000 +9.665120 0.000000 +9.663594 0.000000 +9.662068 0.000000 +9.660542 0.000000 +9.659016 0.000000 +9.657490 0.000000 +9.655964 0.000000 +9.654438 0.000000 +9.652912 0.000000 +9.651386 0.000000 +9.649860 0.000000 +9.648334 0.000000 +9.646807 0.000000 +9.645281 0.000000 +9.643755 0.000000 +9.642229 0.000000 +9.640703 0.000000 +9.639177 0.000000 +9.637651 0.000000 +9.636125 0.000000 +9.634599 0.000000 +9.633073 0.000000 +9.631547 0.000000 +9.630021 0.000000 +9.628495 0.000000 +9.626969 0.000000 +9.625443 0.000000 +9.623916 0.000000 +9.622390 0.000000 +9.620864 0.000000 +9.619338 0.000000 +9.617812 0.000000 +9.616286 0.000000 +9.614760 0.000000 +9.613234 0.000000 +9.611708 0.000000 +9.610182 0.000000 +9.608656 0.000000 +9.607130 0.000000 +9.605604 0.000000 +9.604078 0.000000 +9.602552 0.000000 +9.601026 0.000000 +9.599499 0.000000 +9.597973 0.000000 +9.596447 0.000000 +9.594921 0.000000 +9.593395 0.000000 +9.591869 0.000000 +9.590343 0.000000 +9.588817 0.000000 +9.587291 0.000000 +9.585765 0.000000 +9.584239 0.000000 +9.582713 0.000000 +9.581187 0.000000 +9.579661 0.000000 +9.578135 0.000000 +9.576608 0.000000 +9.575082 0.000000 +9.573556 0.000000 +9.572030 0.000000 +9.570504 0.000000 +9.568978 0.000000 +9.567452 0.000000 +9.565926 0.000000 +9.564400 0.000000 +9.562874 0.000000 +9.561348 0.000000 +9.559822 0.000000 +9.558296 0.000000 +9.556770 0.000000 +9.555244 0.000000 +9.553717 0.000000 +9.552191 0.000000 +9.550665 0.000000 +9.549139 0.000000 +9.547613 0.000000 +9.546087 0.000000 +9.544561 0.000000 +9.543035 0.000000 +9.541509 0.000000 +9.539983 0.000000 +9.538457 0.000000 +9.536931 0.000000 +9.535405 0.000000 +9.533879 0.000000 +9.532353 0.000000 +9.530827 0.000000 +9.529300 0.000000 +9.527774 0.000000 +9.526248 0.000000 +9.524722 0.000000 +9.523196 0.000000 +9.521670 0.000000 +9.520144 0.000000 +9.518618 0.000000 +9.517092 0.000000 +9.515566 0.000000 +9.514040 0.000000 +9.512514 0.000000 +9.510988 0.000000 +9.509462 0.000000 +9.507936 0.000000 +9.506409 0.000000 +9.504883 0.000000 +9.503357 0.000000 +9.501831 0.000000 +9.500305 0.000000 +9.498779 0.000000 +9.497253 0.000000 +9.495727 0.000000 +9.494201 0.000000 +9.492675 0.000000 +9.491149 0.000000 +9.489623 0.000000 +9.488097 0.000000 +9.486571 0.000000 +9.485045 0.000000 +9.483518 0.000000 +9.481992 0.000000 +9.480466 0.000000 +9.478940 0.000000 +9.477414 0.000000 +9.475888 0.000000 +9.474362 0.000000 +9.472836 0.000000 +9.471310 0.000000 +9.469784 0.000000 +9.468258 0.000000 +9.466732 0.000000 +9.465206 0.000000 +9.463680 0.000000 +9.462154 0.000000 +9.460628 0.000000 +9.459101 0.000000 +9.457575 0.000000 +9.456049 0.000000 +9.454523 0.000000 +9.452997 0.000000 +9.451471 0.000000 +9.449945 0.000000 +9.448419 0.000000 +9.446893 0.000000 +9.445367 0.000000 +9.443841 0.000000 +9.442315 0.000000 +9.440789 0.000000 +9.439263 0.000000 +9.437737 0.000000 +9.436210 0.000000 +9.434684 0.000000 +9.433158 0.000000 +9.431632 0.000000 +9.430106 0.000000 +9.428580 0.000000 +9.427054 0.000000 +9.425528 0.000000 +9.424002 0.000000 +9.422476 0.000000 +9.420950 0.000000 +9.419424 0.000000 +9.417898 0.000000 +9.416372 0.000000 +9.414846 0.000000 +9.413319 0.000000 +9.411793 0.000000 +9.410267 0.000000 +9.408741 0.000000 +9.407215 0.000000 +9.405689 0.000000 +9.404163 0.000000 +9.402637 0.000000 +9.401111 0.000000 +9.399585 0.000000 +9.398059 0.000000 +9.396533 0.000000 +9.395007 0.000000 +9.393481 0.000000 +9.391955 0.000000 +9.390429 0.000000 +9.388902 0.000000 +9.387376 0.000000 +9.385850 0.000000 +9.384324 0.000000 +9.382798 0.000000 +9.381272 0.000000 +9.379746 0.000000 +9.378220 0.000000 +9.376694 0.000000 +9.375168 0.000000 +9.373642 0.000000 +9.372116 0.000000 +9.370590 0.000000 +9.369064 0.000000 +9.367538 0.000000 +9.366011 0.000000 +9.364485 0.000000 +9.362959 0.000000 +9.361433 0.000000 +9.359907 0.000000 +9.358381 0.000000 +9.356855 0.000000 +9.355329 0.000000 +9.353803 0.000000 +9.352277 0.000000 +9.350751 0.000000 +9.349225 0.000000 +9.347699 0.000000 +9.346173 0.000000 +9.344647 0.000000 +9.343120 0.000000 +9.341594 0.000000 +9.340068 0.000000 +9.338542 0.000000 +9.337016 0.000000 +9.335490 0.000000 +9.333964 0.000000 +9.332438 0.000000 +9.330912 0.000000 +9.329386 0.000000 +9.327860 0.000000 +9.326334 0.000000 +9.324808 0.000000 +9.323282 0.000000 +9.321756 0.000000 +9.320230 0.000000 +9.318703 0.000000 +9.317177 0.000000 +9.315651 0.000000 +9.314125 0.000000 +9.312599 0.000000 +9.311073 0.000000 +9.309547 0.000000 +9.308021 0.000000 +9.306495 0.000000 +9.304969 0.000000 +9.303443 0.000000 +9.301917 0.000000 +9.300391 0.000000 +9.298865 0.000000 +9.297339 0.000000 +9.295812 0.000000 +9.294286 0.000000 +9.292760 0.000000 +9.291234 0.000000 +9.289708 0.000000 +9.288182 0.000000 +9.286656 0.000000 +9.285130 0.000000 +9.283604 0.000000 +9.282078 0.000000 +9.280552 0.000000 +9.279026 0.000000 +9.277500 0.000000 +9.275974 0.000000 +9.274448 0.000000 +9.272921 0.000000 +9.271395 0.000000 +9.269869 0.000000 +9.268343 0.000000 +9.266817 0.000000 +9.265291 0.000000 +9.263765 0.000000 +9.262239 0.000000 +9.260713 0.000000 +9.259187 0.000000 +9.257661 0.000000 +9.256135 0.000000 +9.254609 0.000000 +9.253083 0.000000 +9.251557 0.000000 +9.250031 0.000000 +9.248504 0.000000 +9.246978 0.000000 +9.245452 0.000000 +9.243926 0.000000 +9.242400 0.000000 +9.240874 0.000000 +9.239348 0.000000 +9.237822 0.000000 +9.236296 0.000000 +9.234770 0.000000 +9.233244 0.000000 +9.231718 0.000000 +9.230192 0.000000 +9.228666 0.000000 +9.227140 0.000000 +9.225613 0.000000 +9.224087 0.000000 +9.222561 0.000000 +9.221035 0.000000 +9.219509 0.000000 +9.217983 0.000000 +9.216457 0.000000 +9.214931 0.000000 +9.213405 0.000000 +9.211879 0.000000 +9.210353 0.000000 +9.208827 0.000000 +9.207301 0.000000 +9.205775 0.000000 +9.204249 0.000000 +9.202723 0.000000 +9.201196 0.000000 +9.199670 0.000000 +9.198144 0.000000 +9.196618 0.000000 +9.195092 0.000000 +9.193566 0.000000 +9.192040 0.000000 +9.190514 0.000000 +9.188988 0.000000 +9.187462 0.000000 +9.185936 0.000000 +9.184410 0.000000 +9.182884 0.000000 +9.181358 0.000000 +9.179832 0.000000 +9.178305 0.000000 +9.176779 0.000000 +9.175253 0.000000 +9.173727 0.000000 +9.172201 0.000000 +9.170675 0.000000 +9.169149 0.000000 +9.167623 0.000000 +9.166097 0.000000 +9.164571 0.000000 +9.163045 0.000000 +9.161519 0.000000 +9.159993 0.000000 +9.158467 0.000000 +9.156941 0.000000 +9.155414 0.000000 +9.153888 0.000000 +9.152362 0.000000 +9.150836 0.000000 +9.149310 0.000000 +9.147784 0.000000 +9.146258 0.000000 +9.144732 0.000000 +9.143206 0.000000 +9.141680 0.000000 +9.140154 0.000000 +9.138628 0.000000 +9.137102 0.000000 +9.135576 0.000000 +9.134050 0.000000 +9.132524 0.000000 +9.130997 0.000000 +9.129471 0.000000 +9.127945 0.000000 +9.126419 0.000000 +9.124893 0.000000 +9.123367 0.000000 +9.121841 0.000000 +9.120315 0.000000 +9.118789 0.000000 +9.117263 0.000000 +9.115737 0.000000 +9.114211 0.000000 +9.112685 0.000000 +9.111159 0.000000 +9.109633 0.000000 +9.108106 0.000000 +9.106580 0.000000 +9.105054 0.000000 +9.103528 0.000000 +9.102002 0.000000 +9.100476 0.000000 +9.098950 0.000000 +9.097424 0.000000 +9.095898 0.000000 +9.094372 0.000000 +9.092846 0.000000 +9.091320 0.000000 +9.089794 0.000000 +9.088268 0.000000 +9.086742 0.000000 +9.085215 0.000000 +9.083689 0.000000 +9.082163 0.000000 +9.080637 0.000000 +9.079111 0.000000 +9.077585 0.000000 +9.076059 0.000000 +9.074533 0.000000 +9.073007 0.000000 +9.071481 0.000000 +9.069955 0.000000 +9.068429 0.000000 +9.066903 0.000000 +9.065377 0.000000 +9.063851 0.000000 +9.062325 0.000000 +9.060798 0.000000 +9.059272 0.000000 +9.057746 0.000000 +9.056220 0.000000 +9.054694 0.000000 +9.053168 0.000000 +9.051642 0.000000 +9.050116 0.000000 +9.048590 0.000000 +9.047064 0.000000 +9.045538 0.000000 +9.044012 0.000000 +9.042486 0.000000 +9.040960 0.000000 +9.039434 0.000000 +9.037907 0.000000 +9.036381 0.000000 +9.034855 0.000000 +9.033329 0.000000 +9.031803 0.000000 +9.030277 0.000000 +9.028751 0.000000 +9.027225 0.000000 +9.025699 0.000000 +9.024173 0.000000 +9.022647 0.000000 +9.021121 0.000000 +9.019595 0.000000 +9.018069 0.000000 +9.016543 0.000000 +9.015016 0.000000 +9.013490 0.000000 +9.011964 0.000000 +9.010438 0.000000 +9.008912 0.000000 +9.007386 0.000000 +9.005860 0.000000 +9.004334 0.000000 +9.002808 0.000000 +9.001282 0.000000 +8.999756 0.000000 +8.998230 0.000000 +8.996704 0.000000 +8.995178 0.000000 +8.993652 0.000000 +8.992126 0.000000 +8.990599 0.000000 +8.989073 0.000000 +8.987547 0.000000 +8.986021 0.000000 +8.984495 0.000000 +8.982969 0.000000 +8.981443 0.000000 +8.979917 0.000000 +8.978391 0.000000 +8.976865 0.000000 +8.975339 0.000000 +8.973813 0.000000 +8.972287 0.000000 +8.970761 0.000000 +8.969235 0.000000 +8.967708 0.000000 +8.966182 0.000000 +8.964656 0.000000 +8.963130 0.000000 +8.961604 0.000000 +8.960078 0.000000 +8.958552 0.000000 +8.957026 0.000000 +8.955500 0.000000 +8.953974 0.000000 +8.952448 0.000000 +8.950922 0.000000 +8.949396 0.000000 +8.947870 0.000000 +8.946344 0.000000 +8.944817 0.000000 +8.943291 0.000000 +8.941765 0.000000 +8.940239 0.000000 +8.938713 0.000000 +8.937187 0.000000 +8.935661 0.000000 +8.934135 0.000000 +8.932609 0.000000 +8.931083 0.000000 +8.929557 0.000000 +8.928031 0.000000 +8.926505 0.000000 +8.924979 0.000000 +8.923453 0.000000 +8.921927 0.000000 +8.920400 0.000000 +8.918874 0.000000 +8.917348 0.000000 +8.915822 0.000000 +8.914296 0.000000 +8.912770 0.000000 +8.911244 0.000000 +8.909718 0.000000 +8.908192 0.000000 +8.906666 0.000000 +8.905140 0.000000 +8.903614 0.000000 +8.902088 0.000000 +8.900562 0.000000 +8.899036 0.000000 +8.897509 0.000000 +8.895983 0.000000 +8.894457 0.000000 +8.892931 0.000000 +8.891405 0.000000 +8.889879 0.000000 +8.888353 0.000000 +8.886827 0.000000 +8.885301 0.000000 +8.883775 0.000000 +8.882249 0.000000 +8.880723 0.000000 +8.879197 0.000000 +8.877671 0.000000 +8.876145 0.000000 +8.874618 0.000000 +8.873092 0.000000 +8.871566 0.000000 +8.870040 0.000000 +8.868514 0.000000 +8.866988 0.000000 +8.865462 0.000000 +8.863936 0.000000 +8.862410 0.000000 +8.860884 0.000000 +8.859358 0.000000 +8.857832 0.000000 +8.856306 0.000000 +8.854780 0.000000 +8.853254 0.000000 +8.851728 0.000000 +8.850201 0.000000 +8.848675 0.000000 +8.847149 0.000000 +8.845623 0.000000 +8.844097 0.000000 +8.842571 0.000000 +8.841045 0.000000 +8.839519 0.000000 +8.837993 0.000000 +8.836467 0.000000 +8.834941 0.000000 +8.833415 0.000000 +8.831889 0.000000 +8.830363 0.000000 +8.828837 0.000000 +8.827310 0.000000 +8.825784 0.000000 +8.824258 0.000000 +8.822732 0.000000 +8.821206 0.000000 +8.819680 0.000000 +8.818154 0.000000 +8.816628 0.000000 +8.815102 0.000000 +8.813576 0.000000 +8.812050 0.000000 +8.810524 0.000000 +8.808998 0.000000 +8.807472 0.000000 +8.805946 0.000000 +8.804419 0.000000 +8.802893 0.000000 +8.801367 0.000000 +8.799841 0.000000 +8.798315 0.000000 +8.796789 0.000000 +8.795263 0.000000 +8.793737 0.000000 +8.792211 0.000000 +8.790685 0.000000 +8.789159 0.000000 +8.787633 0.000000 +8.786107 0.000000 +8.784581 0.000000 +8.783055 0.000000 +8.781529 0.000000 +8.780002 0.000000 +8.778476 0.000000 +8.776950 0.000000 +8.775424 0.000000 +8.773898 0.000000 +8.772372 0.000000 +8.770846 0.000000 +8.769320 0.000000 +8.767794 0.000000 +8.766268 0.000000 +8.764742 0.000000 +8.763216 0.000000 +8.761690 0.000000 +8.760164 0.000000 +8.758638 0.000000 +8.757111 0.000000 +8.755585 0.000000 +8.754059 0.000000 +8.752533 0.000000 +8.751007 0.000000 +8.749481 0.000000 +8.747955 0.000000 +8.746429 0.000000 +8.744903 0.000000 +8.743377 0.000000 +8.741851 0.000000 +8.740325 0.000000 +8.738799 0.000000 +8.737273 0.000000 +8.735747 0.000000 +8.734220 0.000000 +8.732694 0.000000 +8.731168 0.000000 +8.729642 0.000000 +8.728116 0.000000 +8.726590 0.000000 +8.725064 0.000000 +8.723538 0.000000 +8.722012 0.000000 +8.720486 0.000000 +8.718960 0.000000 +8.717434 0.000000 +8.715908 0.000000 +8.714382 0.000000 +8.712856 0.000000 +8.711330 0.000000 +8.709803 0.000000 +8.708277 0.000000 +8.706751 0.000000 +8.705225 0.000000 +8.703699 0.000000 +8.702173 0.000000 +8.700647 0.000000 +8.699121 0.000000 +8.697595 0.000000 +8.696069 0.000000 +8.694543 0.000000 +8.693017 0.000000 +8.691491 0.000000 +8.689965 0.000000 +8.688439 0.000000 +8.686912 0.000000 +8.685386 0.000000 +8.683860 0.000000 +8.682334 0.000000 +8.680808 0.000000 +8.679282 0.000000 +8.677756 0.000000 +8.676230 0.000000 +8.674704 0.000000 +8.673178 0.000000 +8.671652 0.000000 +8.670126 0.000000 +8.668600 0.000000 +8.667074 0.000000 +8.665548 0.000000 +8.664021 0.000000 +8.662495 0.000000 +8.660969 0.000000 +8.659443 0.000000 +8.657917 0.000000 +8.656391 0.000000 +8.654865 0.000000 +8.653339 0.000000 +8.651813 0.000000 +8.650287 0.000000 +8.648761 0.000000 +8.647235 0.000000 +8.645709 0.000000 +8.644183 0.000000 +8.642657 0.000000 +8.641131 0.000000 +8.639604 0.000000 +8.638078 0.000000 +8.636552 0.000000 +8.635026 0.000000 +8.633500 0.000000 +8.631974 0.000000 +8.630448 0.000000 +8.628922 0.000000 +8.627396 0.000000 +8.625870 0.000000 +8.624344 0.000000 +8.622818 0.000000 +8.621292 0.000000 +8.619766 0.000000 +8.618240 0.000000 +8.616713 0.000000 +8.615187 0.000000 +8.613661 0.000000 +8.612135 0.000000 +8.610609 0.000000 +8.609083 0.000000 +8.607557 0.000000 +8.606031 0.000000 +8.604505 0.000000 +8.602979 0.000000 +8.601453 0.000000 +8.599927 0.000000 +8.598401 0.000000 +8.596875 0.000000 +8.595349 0.000000 +8.593822 0.000000 +8.592296 0.000000 +8.590770 0.000000 +8.589244 0.000000 +8.587718 0.000000 +8.586192 0.000000 +8.584666 0.000000 +8.583140 0.000000 +8.581614 0.000000 +8.580088 0.000000 +8.578562 0.000000 +8.577036 0.000000 +8.575510 0.000000 +8.573984 0.000000 +8.572458 0.000000 +8.570932 0.000000 +8.569405 0.000000 +8.567879 0.000000 +8.566353 0.000000 +8.564827 0.000000 +8.563301 0.000000 +8.561775 0.000000 +8.560249 0.000000 +8.558723 0.000000 +8.557197 0.000000 +8.555671 0.000000 +8.554145 0.000000 +8.552619 0.000000 +8.551093 0.000000 +8.549567 0.000000 +8.548041 0.000000 +8.546514 0.000000 +8.544988 0.000000 +8.543462 0.000000 +8.541936 0.000000 +8.540410 0.000000 +8.538884 0.000000 +8.537358 0.000000 +8.535832 0.000000 +8.534306 0.000000 +8.532780 0.000000 +8.531254 0.000000 +8.529728 0.000000 +8.528202 0.000000 +8.526676 0.000000 +8.525150 0.000000 +8.523623 0.000000 +8.522097 0.000000 +8.520571 0.000000 +8.519045 0.000000 +8.517519 0.000000 +8.515993 0.000000 +8.514467 0.000000 +8.512941 0.000000 +8.511415 0.000000 +8.509889 0.000000 +8.508363 0.000000 +8.506837 0.000000 +8.505311 0.000000 +8.503785 0.000000 +8.502259 0.000000 +8.500733 0.000000 +8.499206 0.000000 +8.497680 0.000000 +8.496154 0.000000 +8.494628 0.000000 +8.493102 0.000000 +8.491576 0.000000 +8.490050 0.000000 +8.488524 0.000000 +8.486998 0.000000 +8.485472 0.000000 +8.483946 0.000000 +8.482420 0.000000 +8.480894 0.000000 +8.479368 0.000000 +8.477842 0.000000 +8.476315 0.000000 +8.474789 0.000000 +8.473263 0.000000 +8.471737 0.000000 +8.470211 0.000000 +8.468685 0.000000 +8.467159 0.000000 +8.465633 0.000000 +8.464107 0.000000 +8.462581 0.000000 +8.461055 0.000000 +8.459529 0.000000 +8.458003 0.000000 +8.456477 0.000000 +8.454951 0.000000 +8.453424 0.000000 +8.451898 0.000000 +8.450372 0.000000 +8.448846 0.000000 +8.447320 0.000000 +8.445794 0.000000 +8.444268 0.000000 +8.442742 0.000000 +8.441216 0.000000 +8.439690 0.000000 +8.438164 0.000000 +8.436638 0.000000 +8.435112 0.000000 +8.433586 0.000000 +8.432060 0.000000 +8.430534 0.000000 +8.429007 0.000000 +8.427481 0.000000 +8.425955 0.000000 +8.424429 0.000000 +8.422903 0.000000 +8.421377 0.000000 +8.419851 0.000000 +8.418325 0.000000 +8.416799 0.000000 +8.415273 0.000000 +8.413747 0.000000 +8.412221 0.000000 +8.410695 0.000000 +8.409169 0.000000 +8.407643 0.000000 +8.406116 0.000000 +8.404590 0.000000 +8.403064 0.000000 +8.401538 0.000000 +8.400012 0.000000 +8.398486 0.000000 +8.396960 0.000000 +8.395434 0.000000 +8.393908 0.000000 +8.392382 0.000000 +8.390856 0.000000 +8.389330 0.000000 +8.387804 0.000000 +8.386278 0.000000 +8.384752 0.000000 +8.383225 0.000000 +8.381699 0.000000 +8.380173 0.000000 +8.378647 0.000000 +8.377121 0.000000 +8.375595 0.000000 +8.374069 0.000000 +8.372543 0.000000 +8.371017 0.000000 +8.369491 0.000000 +8.367965 0.000000 +8.366439 0.000000 +8.364913 0.000000 +8.363387 0.000000 +8.361861 0.000000 +8.360335 0.000000 +8.358808 0.000000 +8.357282 0.000000 +8.355756 0.000000 +8.354230 0.000000 +8.352704 0.000000 +8.351178 0.000000 +8.349652 0.000000 +8.348126 0.000000 +8.346600 0.000000 +8.345074 0.000000 +8.343548 0.000000 +8.342022 0.000000 +8.340496 0.000000 +8.338970 0.000000 +8.337444 0.000000 +8.335917 0.000000 +8.334391 0.000000 +8.332865 0.000000 +8.331339 0.000000 +8.329813 0.000000 +8.328287 0.000000 +8.326761 0.000000 +8.325235 0.000000 +8.323709 0.000000 +8.322183 0.000000 +8.320657 0.000000 +8.319131 0.000000 +8.317605 0.000000 +8.316079 0.000000 +8.314553 0.000000 +8.313026 0.000000 +8.311500 0.000000 +8.309974 0.000000 +8.308448 0.000000 +8.306922 0.000000 +8.305396 0.000000 +8.303870 0.000000 +8.302344 0.000000 +8.300818 0.000000 +8.299292 0.000000 +8.297766 0.000000 +8.296240 0.000000 +8.294714 0.000000 +8.293188 0.000000 +8.291662 0.000000 +8.290136 0.000000 +8.288609 0.000000 +8.287083 0.000000 +8.285557 0.000000 +8.284031 0.000000 +8.282505 0.000000 +8.280979 0.000000 +8.279453 0.000000 +8.277927 0.000000 +8.276401 0.000000 +8.274875 0.000000 +8.273349 0.000000 +8.271823 0.000000 +8.270297 0.000000 +8.268771 0.000000 +8.267245 0.000000 +8.265718 0.000000 +8.264192 0.000000 +8.262666 0.000000 +8.261140 0.000000 +8.259614 0.000000 +8.258088 0.000000 +8.256562 0.000000 +8.255036 0.000000 +8.253510 0.000000 +8.251984 0.000000 +8.250458 0.000000 +8.248932 0.000000 +8.247406 0.000000 +8.245880 0.000000 +8.244354 0.000000 +8.242827 0.000000 +8.241301 0.000000 +8.239775 0.000000 +8.238249 0.000000 +8.236723 0.000000 +8.235197 0.000000 +8.233671 0.000000 +8.232145 0.000000 +8.230619 0.000000 +8.229093 0.000000 +8.227567 0.000000 +8.226041 0.000000 +8.224515 0.000000 +8.222989 0.000000 +8.221463 0.000000 +8.219937 0.000000 +8.218410 0.000000 +8.216884 0.000000 +8.215358 0.000000 +8.213832 0.000000 +8.212306 0.000000 +8.210780 0.000000 +8.209254 0.000000 +8.207728 0.000000 +8.206202 0.000000 +8.204676 0.000000 +8.203150 0.000000 +8.201624 0.000000 +8.200098 0.000000 +8.198572 0.000000 +8.197046 0.000000 +8.195519 0.000000 +8.193993 0.000000 +8.192467 0.000000 +8.190941 0.000000 +8.189415 0.000000 +8.187889 0.000000 +8.186363 0.000000 +8.184837 0.000000 +8.183311 0.000000 +8.181785 0.000000 +8.180259 0.000000 +8.178733 0.000000 +8.177207 0.000000 +8.175681 0.000000 +8.174155 0.000000 +8.172628 0.000000 +8.171102 0.000000 +8.169576 0.000000 +8.168050 0.000000 +8.166524 0.000000 +8.164998 0.000000 +8.163472 0.000000 +8.161946 0.000000 +8.160420 0.000000 +8.158894 0.000000 +8.157368 0.000000 +8.155842 0.000000 +8.154316 0.000000 +8.152790 0.000000 +8.151264 0.000000 +8.149738 0.000000 +8.148211 0.000000 +8.146685 0.000000 +8.145159 0.000000 +8.143633 0.000000 +8.142107 0.000000 +8.140581 0.000000 +8.139055 0.000000 +8.137529 0.000000 +8.136003 0.000000 +8.134477 0.000000 +8.132951 0.000000 +8.131425 0.000000 +8.129899 0.000000 +8.128373 0.000000 +8.126847 0.000000 +8.125320 0.000000 +8.123794 0.000000 +8.122268 0.000000 +8.120742 0.000000 +8.119216 0.000000 +8.117690 0.000000 +8.116164 0.000000 +8.114638 0.000000 +8.113112 0.000000 +8.111586 0.000000 +8.110060 0.000000 +8.108534 0.000000 +8.107008 0.000000 +8.105482 0.000000 +8.103956 0.000000 +8.102429 0.000000 +8.100903 0.000000 +8.099377 0.000000 +8.097851 0.000000 +8.096325 0.000000 +8.094799 0.000000 +8.093273 0.000000 +8.091747 0.000000 +8.090221 0.000000 +8.088695 0.000000 +8.087169 0.000000 +8.085643 0.000000 +8.084117 0.000000 +8.082591 0.000000 +8.081065 0.000000 +8.079539 0.000000 +8.078012 0.000000 +8.076486 0.000000 +8.074960 0.000000 +8.073434 0.000000 +8.071908 0.000000 +8.070382 0.000000 +8.068856 0.000000 +8.067330 0.000000 +8.065804 0.000000 +8.064278 0.000000 +8.062752 0.000000 +8.061226 0.000000 +8.059700 0.000000 +8.058174 0.000000 +8.056648 0.000000 +8.055121 0.000000 +8.053595 0.000000 +8.052069 0.000000 +8.050543 0.000000 +8.049017 0.000000 +8.047491 0.000000 +8.045965 0.000000 +8.044439 0.000000 +8.042913 0.000000 +8.041387 0.000000 +8.039861 0.000000 +8.038335 0.000000 +8.036809 0.000000 +8.035283 0.000000 +8.033757 0.000000 +8.032230 0.000000 +8.030704 0.000000 +8.029178 0.000000 +8.027652 0.000000 +8.026126 0.000000 +8.024600 0.000000 +8.023074 0.000000 +8.021548 0.000000 +8.020022 0.000000 +8.018496 0.000000 +8.016970 0.000000 +8.015444 0.000000 +8.013918 0.000000 +8.012392 0.000000 +8.010866 0.000000 +8.009340 0.000000 +8.007813 0.000000 +8.006287 0.000000 +8.004761 0.000000 +8.003235 0.000000 +8.001709 0.000000 +8.000183 0.000000 +7.998657 0.000000 +7.997131 0.000000 +7.995605 0.000000 +7.994079 0.000000 +7.992553 0.000000 +7.991027 0.000000 +7.989501 0.000000 +7.987975 0.000000 +7.986449 0.000000 +7.984922 0.000000 +7.983396 0.000000 +7.981870 0.000000 +7.980344 0.000000 +7.978818 0.000000 +7.977292 0.000000 +7.975766 0.000000 +7.974240 0.000000 +7.972714 0.000000 +7.971188 0.000000 +7.969662 0.000000 +7.968136 0.000000 +7.966610 0.000000 +7.965084 0.000000 +7.963558 0.000000 +7.962031 0.000000 +7.960505 0.000000 +7.958979 0.000000 +7.957453 0.000000 +7.955927 0.000000 +7.954401 0.000000 +7.952875 0.000000 +7.951349 0.000000 +7.949823 0.000000 +7.948297 0.000000 +7.946771 0.000000 +7.945245 0.000000 +7.943719 0.000000 +7.942193 0.000000 +7.940667 0.000000 +7.939141 0.000000 +7.937614 0.000000 +7.936088 0.000000 +7.934562 0.000000 +7.933036 0.000000 +7.931510 0.000000 +7.929984 0.000000 +7.928458 0.000000 +7.926932 0.000000 +7.925406 0.000000 +7.923880 0.000000 +7.922354 0.000000 +7.920828 0.000000 +7.919302 0.000000 +7.917776 0.000000 +7.916250 0.000000 +7.914723 0.000000 +7.913197 0.000000 +7.911671 0.000000 +7.910145 0.000000 +7.908619 0.000000 +7.907093 0.000000 +7.905567 0.000000 +7.904041 0.000000 +7.902515 0.000000 +7.900989 0.000000 +7.899463 0.000000 +7.897937 0.000000 +7.896411 0.000000 +7.894885 0.000000 +7.893359 0.000000 +7.891832 0.000000 +7.890306 0.000000 +7.888780 0.000000 +7.887254 0.000000 +7.885728 0.000000 +7.884202 0.000000 +7.882676 0.000000 +7.881150 0.000000 +7.879624 0.000000 +7.878098 0.000000 +7.876572 0.000000 +7.875046 0.000000 +7.873520 0.000000 +7.871994 0.000000 +7.870468 0.000000 +7.868942 0.000000 +7.867415 0.000000 +7.865889 0.000000 +7.864363 0.000000 +7.862837 0.000000 +7.861311 0.000000 +7.859785 0.000000 +7.858259 0.000000 +7.856733 0.000000 +7.855207 0.000000 +7.853681 0.000000 +7.852155 0.000000 +7.850629 0.000000 +7.849103 0.000000 +7.847577 0.000000 +7.846051 0.000000 +7.844524 0.000000 +7.842998 0.000000 +7.841472 0.000000 +7.839946 0.000000 +7.838420 0.000000 +7.836894 0.000000 +7.835368 0.000000 +7.833842 0.000000 +7.832316 0.000000 +7.830790 0.000000 +7.829264 0.000000 +7.827738 0.000000 +7.826212 0.000000 +7.824686 0.000000 +7.823160 0.000000 +7.821634 0.000000 +7.820107 0.000000 +7.818581 0.000000 +7.817055 0.000000 +7.815529 0.000000 +7.814003 0.000000 +7.812477 0.000000 +7.810951 0.000000 +7.809425 0.000000 +7.807899 0.000000 +7.806373 0.000000 +7.804847 0.000000 +7.803321 0.000000 +7.801795 0.000000 +7.800269 0.000000 +7.798743 0.000000 +7.797216 0.000000 +7.795690 0.000000 +7.794164 0.000000 +7.792638 0.000000 +7.791112 0.000000 +7.789586 0.000000 +7.788060 0.000000 +7.786534 0.000000 +7.785008 0.000000 +7.783482 0.000000 +7.781956 0.000000 +7.780430 0.000000 +7.778904 0.000000 +7.777378 0.000000 +7.775852 0.000000 +7.774325 0.000000 +7.772799 0.000000 +7.771273 0.000000 +7.769747 0.000000 +7.768221 0.000000 +7.766695 0.000000 +7.765169 0.000000 +7.763643 0.000000 +7.762117 0.000000 +7.760591 0.000000 +7.759065 0.000000 +7.757539 0.000000 +7.756013 0.000000 +7.754487 0.000000 +7.752961 0.000000 +7.751435 0.000000 +7.749908 0.000000 +7.748382 0.000000 +7.746856 0.000000 +7.745330 0.000000 +7.743804 0.000000 +7.742278 0.000000 +7.740752 0.000000 +7.739226 0.000000 +7.737700 0.000000 +7.736174 0.000000 +7.734648 0.000000 +7.733122 0.000000 +7.731596 0.000000 +7.730070 0.000000 +7.728544 0.000000 +7.727017 0.000000 +7.725491 0.000000 +7.723965 0.000000 +7.722439 0.000000 +7.720913 0.000000 +7.719387 0.000000 +7.717861 0.000000 +7.716335 0.000000 +7.714809 0.000000 +7.713283 0.000000 +7.711757 0.000000 +7.710231 0.000000 +7.708705 0.000000 +7.707179 0.000000 +7.705653 0.000000 +7.704126 0.000000 +7.702600 0.000000 +7.701074 0.000000 +7.699548 0.000000 +7.698022 0.000000 +7.696496 0.000000 +7.694970 0.000000 +7.693444 0.000000 +7.691918 0.000000 +7.690392 0.000000 +7.688866 0.000000 +7.687340 0.000000 +7.685814 0.000000 +7.684288 0.000000 +7.682762 0.000000 +7.681236 0.000000 +7.679709 0.000000 +7.678183 0.000000 +7.676657 0.000000 +7.675131 0.000000 +7.673605 0.000000 +7.672079 0.000000 +7.670553 0.000000 +7.669027 0.000000 +7.667501 0.000000 +7.665975 0.000000 +7.664449 0.000000 +7.662923 0.000000 +7.661397 0.000000 +7.659871 0.000000 +7.658345 0.000000 +7.656818 0.000000 +7.655292 0.000000 +7.653766 0.000000 +7.652240 0.000000 +7.650714 0.000000 +7.649188 0.000000 +7.647662 0.000000 +7.646136 0.000000 +7.644610 0.000000 +7.643084 0.000000 +7.641558 0.000000 +7.640032 0.000000 +7.638506 0.000000 +7.636980 0.000000 +7.635454 0.000000 +7.633927 0.000000 +7.632401 0.000000 +7.630875 0.000000 +7.629349 0.000000 +7.627823 0.000000 +7.626297 0.000000 +7.624771 0.000000 +7.623245 0.000000 +7.621719 0.000000 +7.620193 0.000000 +7.618667 0.000000 +7.617141 0.000000 +7.615615 0.000000 +7.614089 0.000000 +7.612563 0.000000 +7.611037 0.000000 +7.609510 0.000000 +7.607984 0.000000 +7.606458 0.000000 +7.604932 0.000000 +7.603406 0.000000 +7.601880 0.000000 +7.600354 0.000000 +7.598828 0.000000 +7.597302 0.000000 +7.595776 0.000000 +7.594250 0.000000 +7.592724 0.000000 +7.591198 0.000000 +7.589672 0.000000 +7.588146 0.000000 +7.586619 0.000000 +7.585093 0.000000 +7.583567 0.000000 +7.582041 0.000000 +7.580515 0.000000 +7.578989 0.000000 +7.577463 0.000000 +7.575937 0.000000 +7.574411 0.000000 +7.572885 0.000000 +7.571359 0.000000 +7.569833 0.000000 +7.568307 0.000000 +7.566781 0.000000 +7.565255 0.000000 +7.563728 0.000000 +7.562202 0.000000 +7.560676 0.000000 +7.559150 0.000000 +7.557624 0.000000 +7.556098 0.000000 +7.554572 0.000000 +7.553046 0.000000 +7.551520 0.000000 +7.549994 0.000000 +7.548468 0.000000 +7.546942 0.000000 +7.545416 0.000000 +7.543890 0.000000 +7.542364 0.000000 +7.540838 0.000000 +7.539311 0.000000 +7.537785 0.000000 +7.536259 0.000000 +7.534733 0.000000 +7.533207 0.000000 +7.531681 0.000000 +7.530155 0.000000 +7.528629 0.000000 +7.527103 0.000000 +7.525577 0.000000 +7.524051 0.000000 +7.522525 0.000000 +7.520999 0.000000 +7.519473 0.000000 +7.517947 0.000000 +7.516420 0.000000 +7.514894 0.000000 +7.513368 0.000000 +7.511842 0.000000 +7.510316 0.000000 +7.508790 0.000000 +7.507264 0.000000 +7.505738 0.000000 +7.504212 0.000000 +7.502686 0.000000 +7.501160 0.000000 +7.499634 0.000000 +7.498108 0.000000 +7.496582 0.000000 +7.495056 0.000000 +7.493529 0.000000 +7.492003 0.000000 +7.490477 0.000000 +7.488951 0.000000 +7.487425 0.000000 +7.485899 0.000000 +7.484373 0.000000 +7.482847 0.000000 +7.481321 0.000000 +7.479795 0.000000 +7.478269 0.000000 +7.476743 0.000000 +7.475217 0.000000 +7.473691 0.000000 +7.472165 0.000000 +7.470639 0.000000 +7.469112 0.000000 +7.467586 0.000000 +7.466060 0.000000 +7.464534 0.000000 +7.463008 0.000000 +7.461482 0.000000 +7.459956 0.000000 +7.458430 0.000000 +7.456904 0.000000 +7.455378 0.000000 +7.453852 0.000000 +7.452326 0.000000 +7.450800 0.000000 +7.449274 0.000000 +7.447748 0.000000 +7.446221 0.000000 +7.444695 0.000000 +7.443169 0.000000 +7.441643 0.000000 +7.440117 0.000000 +7.438591 0.000000 +7.437065 0.000000 +7.435539 0.000000 +7.434013 0.000000 +7.432487 0.000000 +7.430961 0.000000 +7.429435 0.000000 +7.427909 0.000000 +7.426383 0.000000 +7.424857 0.000000 +7.423330 0.000000 +7.421804 0.000000 +7.420278 0.000000 +7.418752 0.000000 +7.417226 0.000000 +7.415700 0.000000 +7.414174 0.000000 +7.412648 0.000000 +7.411122 0.000000 +7.409596 0.000000 +7.408070 0.000000 +7.406544 0.000000 +7.405018 0.000000 +7.403492 0.000000 +7.401966 0.000000 +7.400440 0.000000 +7.398913 0.000000 +7.397387 0.000000 +7.395861 0.000000 +7.394335 0.000000 +7.392809 0.000000 +7.391283 0.000000 +7.389757 0.000000 +7.388231 0.000000 +7.386705 0.000000 +7.385179 0.000000 +7.383653 0.000000 +7.382127 0.000000 +7.380601 0.000000 +7.379075 0.000000 +7.377549 0.000000 +7.376022 0.000000 +7.374496 0.000000 +7.372970 0.000000 +7.371444 0.000000 +7.369918 0.000000 +7.368392 0.000000 +7.366866 0.000000 +7.365340 0.000000 +7.363814 0.000000 +7.362288 0.000000 +7.360762 0.000000 +7.359236 0.000000 +7.357710 0.000000 +7.356184 0.000000 +7.354658 0.000000 +7.353131 0.000000 +7.351605 0.000000 +7.350079 0.000000 +7.348553 0.000000 +7.347027 0.000000 +7.345501 0.000000 +7.343975 0.000000 +7.342449 0.000000 +7.340923 0.000000 +7.339397 0.000000 +7.337871 0.000000 +7.336345 0.000000 +7.334819 0.000000 +7.333293 0.000000 +7.331767 0.000000 +7.330241 0.000000 +7.328714 0.000000 +7.327188 0.000000 +7.325662 0.000000 +7.324136 0.000000 +7.322610 0.000000 +7.321084 0.000000 +7.319558 0.000000 +7.318032 0.000000 +7.316506 0.000000 +7.314980 0.000000 +7.313454 0.000000 +7.311928 0.000000 +7.310402 0.000000 +7.308876 0.000000 +7.307350 0.000000 +7.305823 0.000000 +7.304297 0.000000 +7.302771 0.000000 +7.301245 0.000000 +7.299719 0.000000 +7.298193 0.000000 +7.296667 0.000000 +7.295141 0.000000 +7.293615 0.000000 +7.292089 0.000000 +7.290563 0.000000 +7.289037 0.000000 +7.287511 0.000000 +7.285985 0.000000 +7.284459 0.000000 +7.282932 0.000000 +7.281406 0.000000 +7.279880 0.000000 +7.278354 0.000000 +7.276828 0.000000 +7.275302 0.000000 +7.273776 0.000000 +7.272250 0.000000 +7.270724 0.000000 +7.269198 0.000000 +7.267672 0.000000 +7.266146 0.000000 +7.264620 0.000000 +7.263094 0.000000 +7.261568 0.000000 +7.260042 0.000000 +7.258515 0.000000 +7.256989 0.000000 +7.255463 0.000000 +7.253937 0.000000 +7.252411 0.000000 +7.250885 0.000000 +7.249359 0.000000 +7.247833 0.000000 +7.246307 0.000000 +7.244781 0.000000 +7.243255 0.000000 +7.241729 0.000000 +7.240203 0.000000 +7.238677 0.000000 +7.237151 0.000000 +7.235624 0.000000 +7.234098 0.000000 +7.232572 0.000000 +7.231046 0.000000 +7.229520 0.000000 +7.227994 0.000000 +7.226468 0.000000 +7.224942 0.000000 +7.223416 0.000000 +7.221890 0.000000 +7.220364 0.000000 +7.218838 0.000000 +7.217312 0.000000 +7.215786 0.000000 +7.214260 0.000000 +7.212733 0.000000 +7.211207 0.000000 +7.209681 0.000000 +7.208155 0.000000 +7.206629 0.000000 +7.205103 0.000000 +7.203577 0.000000 +7.202051 0.000000 +7.200525 0.000000 +7.198999 0.000000 +7.197473 0.000000 +7.195947 0.000000 +7.194421 0.000000 +7.192895 0.000000 +7.191369 0.000000 +7.189843 0.000000 +7.188316 0.000000 +7.186790 0.000000 +7.185264 0.000000 +7.183738 0.000000 +7.182212 0.000000 +7.180686 0.000000 +7.179160 0.000000 +7.177634 0.000000 +7.176108 0.000000 +7.174582 0.000000 +7.173056 0.000000 +7.171530 0.000000 +7.170004 0.000000 +7.168478 0.000000 +7.166952 0.000000 +7.165425 0.000000 +7.163899 0.000000 +7.162373 0.000000 +7.160847 0.000000 +7.159321 0.000000 +7.157795 0.000000 +7.156269 0.000000 +7.154743 0.000000 +7.153217 0.000000 +7.151691 0.000000 +7.150165 0.000000 +7.148639 0.000000 +7.147113 0.000000 +7.145587 0.000000 +7.144061 0.000000 +7.142534 0.000000 +7.141008 0.000000 +7.139482 0.000000 +7.137956 0.000000 +7.136430 0.000000 +7.134904 0.000000 +7.133378 0.000000 +7.131852 0.000000 +7.130326 0.000000 +7.128800 0.000000 +7.127274 0.000000 +7.125748 0.000000 +7.124222 0.000000 +7.122696 0.000000 +7.121170 0.000000 +7.119644 0.000000 +7.118117 0.000000 +7.116591 0.000000 +7.115065 0.000000 +7.113539 0.000000 +7.112013 0.000000 +7.110487 0.000000 +7.108961 0.000000 +7.107435 0.000000 +7.105909 0.000000 +7.104383 0.000000 +7.102857 0.000000 +7.101331 0.000000 +7.099805 0.000000 +7.098279 0.000000 +7.096753 0.000000 +7.095226 0.000000 +7.093700 0.000000 +7.092174 0.000000 +7.090648 0.000000 +7.089122 0.000000 +7.087596 0.000000 +7.086070 0.000000 +7.084544 0.000000 +7.083018 0.000000 +7.081492 0.000000 +7.079966 0.000000 +7.078440 0.000000 +7.076914 0.000000 +7.075388 0.000000 +7.073862 0.000000 +7.072335 0.000000 +7.070809 0.000000 +7.069283 0.000000 +7.067757 0.000000 +7.066231 0.000000 +7.064705 0.000000 +7.063179 0.000000 +7.061653 0.000000 +7.060127 0.000000 +7.058601 0.000000 +7.057075 0.000000 +7.055549 0.000000 +7.054023 0.000000 +7.052497 0.000000 +7.050971 0.000000 +7.049445 0.000000 +7.047918 0.000000 +7.046392 0.000000 +7.044866 0.000000 +7.043340 0.000000 +7.041814 0.000000 +7.040288 0.000000 +7.038762 0.000000 +7.037236 0.000000 +7.035710 0.000000 +7.034184 0.000000 +7.032658 0.000000 +7.031132 0.000000 +7.029606 0.000000 +7.028080 0.000000 +7.026554 0.000000 +7.025027 0.000000 +7.023501 0.000000 +7.021975 0.000000 +7.020449 0.000000 +7.018923 0.000000 +7.017397 0.000000 +7.015871 0.000000 +7.014345 0.000000 +7.012819 0.000000 +7.011293 0.000000 +7.009767 0.000000 +7.008241 0.000000 +7.006715 0.000000 +7.005189 0.000000 +7.003663 0.000000 +7.002136 0.000000 +7.000610 0.000000 +6.999084 0.000000 +6.997558 0.000000 +6.996032 0.000000 +6.994506 0.000000 +6.992980 0.000000 +6.991454 0.000000 +6.989928 0.000000 +6.988402 0.000000 +6.986876 0.000000 +6.985350 0.000000 +6.983824 0.000000 +6.982298 0.000000 +6.980772 0.000000 +6.979246 0.000000 +6.977719 0.000000 +6.976193 0.000000 +6.974667 0.000000 +6.973141 0.000000 +6.971615 0.000000 +6.970089 0.000000 +6.968563 0.000000 +6.967037 0.000000 +6.965511 0.000000 +6.963985 0.000000 +6.962459 0.000000 +6.960933 0.000000 +6.959407 0.000000 +6.957881 0.000000 +6.956355 0.000000 +6.954828 0.000000 +6.953302 0.000000 +6.951776 0.000000 +6.950250 0.000000 +6.948724 0.000000 +6.947198 0.000000 +6.945672 0.000000 +6.944146 0.000000 +6.942620 0.000000 +6.941094 0.000000 +6.939568 0.000000 +6.938042 0.000000 +6.936516 0.000000 +6.934990 0.000000 +6.933464 0.000000 +6.931937 0.000000 +6.930411 0.000000 +6.928885 0.000000 +6.927359 0.000000 +6.925833 0.000000 +6.924307 0.000000 +6.922781 0.000000 +6.921255 0.000000 +6.919729 0.000000 +6.918203 0.000000 +6.916677 0.000000 +6.915151 0.000000 +6.913625 0.000000 +6.912099 0.000000 +6.910573 0.000000 +6.909047 0.000000 +6.907520 0.000000 +6.905994 0.000000 +6.904468 0.000000 +6.902942 0.000000 +6.901416 0.000000 +6.899890 0.000000 +6.898364 0.000000 +6.896838 0.000000 +6.895312 0.000000 +6.893786 0.000000 +6.892260 0.000000 +6.890734 0.000000 +6.889208 0.000000 +6.887682 0.000000 +6.886156 0.000000 +6.884629 0.000000 +6.883103 0.000000 +6.881577 0.000000 +6.880051 0.000000 +6.878525 0.000000 +6.876999 0.000000 +6.875473 0.000000 +6.873947 0.000000 +6.872421 0.000000 +6.870895 0.000000 +6.869369 0.000000 +6.867843 0.000000 +6.866317 0.000000 +6.864791 0.000000 +6.863265 0.000000 +6.861738 0.000000 +6.860212 0.000000 +6.858686 0.000000 +6.857160 0.000000 +6.855634 0.000000 +6.854108 0.000000 +6.852582 0.000000 +6.851056 0.000000 +6.849530 0.000000 +6.848004 0.000000 +6.846478 0.000000 +6.844952 0.000000 +6.843426 0.000000 +6.841900 0.000000 +6.840374 0.000000 +6.838848 0.000000 +6.837321 0.000000 +6.835795 0.000000 +6.834269 0.000000 +6.832743 0.000000 +6.831217 0.000000 +6.829691 0.000000 +6.828165 0.000000 +6.826639 0.000000 +6.825113 0.000000 +6.823587 0.000000 +6.822061 0.000000 +6.820535 0.000000 +6.819009 0.000000 +6.817483 0.000000 +6.815957 0.000000 +6.814430 0.000000 +6.812904 0.000000 +6.811378 0.000000 +6.809852 0.000000 +6.808326 0.000000 +6.806800 0.000000 +6.805274 0.000000 +6.803748 0.000000 +6.802222 0.000000 +6.800696 0.000000 +6.799170 0.000000 +6.797644 0.000000 +6.796118 0.000000 +6.794592 0.000000 +6.793066 0.000000 +6.791539 0.000000 +6.790013 0.000000 +6.788487 0.000000 +6.786961 0.000000 +6.785435 0.000000 +6.783909 0.000000 +6.782383 0.000000 +6.780857 0.000000 +6.779331 0.000000 +6.777805 0.000000 +6.776279 0.000000 +6.774753 0.000000 +6.773227 0.000000 +6.771701 0.000000 +6.770175 0.000000 +6.768649 0.000000 +6.767122 0.000000 +6.765596 0.000000 +6.764070 0.000000 +6.762544 0.000000 +6.761018 0.000000 +6.759492 0.000000 +6.757966 0.000000 +6.756440 0.000000 +6.754914 0.000000 +6.753388 0.000000 +6.751862 0.000000 +6.750336 0.000000 +6.748810 0.000000 +6.747284 0.000000 +6.745758 0.000000 +6.744231 0.000000 +6.742705 0.000000 +6.741179 0.000000 +6.739653 0.000000 +6.738127 0.000000 +6.736601 0.000000 +6.735075 0.000000 +6.733549 0.000000 +6.732023 0.000000 +6.730497 0.000000 +6.728971 0.000000 +6.727445 0.000000 +6.725919 0.000000 +6.724393 0.000000 +6.722867 0.000000 +6.721340 0.000000 +6.719814 0.000000 +6.718288 0.000000 +6.716762 0.000000 +6.715236 0.000000 +6.713710 0.000000 +6.712184 0.000000 +6.710658 0.000000 +6.709132 0.000000 +6.707606 0.000000 +6.706080 0.000000 +6.704554 0.000000 +6.703028 0.000000 +6.701502 0.000000 +6.699976 0.000000 +6.698450 0.000000 +6.696923 0.000000 +6.695397 0.000000 +6.693871 0.000000 +6.692345 0.000000 +6.690819 0.000000 +6.689293 0.000000 +6.687767 0.000000 +6.686241 0.000000 +6.684715 0.000000 +6.683189 0.000000 +6.681663 0.000000 +6.680137 0.000000 +6.678611 0.000000 +6.677085 0.000000 +6.675559 0.000000 +6.674032 0.000000 +6.672506 0.000000 +6.670980 0.000000 +6.669454 0.000000 +6.667928 0.000000 +6.666402 0.000000 +6.664876 0.000000 +6.663350 0.000000 +6.661824 0.000000 +6.660298 0.000000 +6.658772 0.000000 +6.657246 0.000000 +6.655720 0.000000 +6.654194 0.000000 +6.652668 0.000000 +6.651141 0.000000 +6.649615 0.000000 +6.648089 0.000000 +6.646563 0.000000 +6.645037 0.000000 +6.643511 0.000000 +6.641985 0.000000 +6.640459 0.000000 +6.638933 0.000000 +6.637407 0.000000 +6.635881 0.000000 +6.634355 0.000000 +6.632829 0.000000 +6.631303 0.000000 +6.629777 0.000000 +6.628251 0.000000 +6.626724 0.000000 +6.625198 0.000000 +6.623672 0.000000 +6.622146 0.000000 +6.620620 0.000000 +6.619094 0.000000 +6.617568 0.000000 +6.616042 0.000000 +6.614516 0.000000 +6.612990 0.000000 +6.611464 0.000000 +6.609938 0.000000 +6.608412 0.000000 +6.606886 0.000000 +6.605360 0.000000 +6.603833 0.000000 +6.602307 0.000000 +6.600781 0.000000 +6.599255 0.000000 +6.597729 0.000000 +6.596203 0.000000 +6.594677 0.000000 +6.593151 0.000000 +6.591625 0.000000 +6.590099 0.000000 +6.588573 0.000000 +6.587047 0.000000 +6.585521 0.000000 +6.583995 0.000000 +6.582469 0.000000 +6.580942 0.000000 +6.579416 0.000000 +6.577890 0.000000 +6.576364 0.000000 +6.574838 0.000000 +6.573312 0.000000 +6.571786 0.000000 +6.570260 0.000000 +6.568734 0.000000 +6.567208 0.000000 +6.565682 0.000000 +6.564156 0.000000 +6.562630 0.000000 +6.561104 0.000000 +6.559578 0.000000 +6.558052 0.000000 +6.556525 0.000000 +6.554999 0.000000 +6.553473 0.000000 +6.551947 0.000000 +6.550421 0.000000 +6.548895 0.000000 +6.547369 0.000000 +6.545843 0.000000 +6.544317 0.000000 +6.542791 0.000000 +6.541265 0.000000 +6.539739 0.000000 +6.538213 0.000000 +6.536687 0.000000 +6.535161 0.000000 +6.533634 0.000000 +6.532108 0.000000 +6.530582 0.000000 +6.529056 0.000000 +6.527530 0.000000 +6.526004 0.000000 +6.524478 0.000000 +6.522952 0.000000 +6.521426 0.000000 +6.519900 0.000000 +6.518374 0.000000 +6.516848 0.000000 +6.515322 0.000000 +6.513796 0.000000 +6.512270 0.000000 +6.510743 0.000000 +6.509217 0.000000 +6.507691 0.000000 +6.506165 0.000000 +6.504639 0.000000 +6.503113 0.000000 +6.501587 0.000000 +6.500061 0.000000 +6.498535 0.000000 +6.497009 0.000000 +6.495483 0.000000 +6.493957 0.000000 +6.492431 0.000000 +6.490905 0.000000 +6.489379 0.000000 +6.487853 0.000000 +6.486326 0.000000 +6.484800 0.000000 +6.483274 0.000000 +6.481748 0.000000 +6.480222 0.000000 +6.478696 0.000000 +6.477170 0.000000 +6.475644 0.000000 +6.474118 0.000000 +6.472592 0.000000 +6.471066 0.000000 +6.469540 0.000000 +6.468014 0.000000 +6.466488 0.000000 +6.464962 0.000000 +6.463435 0.000000 +6.461909 0.000000 +6.460383 0.000000 +6.458857 0.000000 +6.457331 0.000000 +6.455805 0.000000 +6.454279 0.000000 +6.452753 0.000000 +6.451227 0.000000 +6.449701 0.000000 +6.448175 0.000000 +6.446649 0.000000 +6.445123 0.000000 +6.443597 0.000000 +6.442071 0.000000 +6.440545 0.000000 +6.439018 0.000000 +6.437492 0.000000 +6.435966 0.000000 +6.434440 0.000000 +6.432914 0.000000 +6.431388 0.000000 +6.429862 0.000000 +6.428336 0.000000 +6.426810 0.000000 +6.425284 0.000000 +6.423758 0.000000 +6.422232 0.000000 +6.420706 0.000000 +6.419180 0.000000 +6.417654 0.000000 +6.416127 0.000000 +6.414601 0.000000 +6.413075 0.000000 +6.411549 0.000000 +6.410023 0.000000 +6.408497 0.000000 +6.406971 0.000000 +6.405445 0.000000 +6.403919 0.000000 +6.402393 0.000000 +6.400867 0.000000 +6.399341 0.000000 +6.397815 0.000000 +6.396289 0.000000 +6.394763 0.000000 +6.393236 0.000000 +6.391710 0.000000 +6.390184 0.000000 +6.388658 0.000000 +6.387132 0.000000 +6.385606 0.000000 +6.384080 0.000000 +6.382554 0.000000 +6.381028 0.000000 +6.379502 0.000000 +6.377976 0.000000 +6.376450 0.000000 +6.374924 0.000000 +6.373398 0.000000 +6.371872 0.000000 +6.370346 0.000000 +6.368819 0.000000 +6.367293 0.000000 +6.365767 0.000000 +6.364241 0.000000 +6.362715 0.000000 +6.361189 0.000000 +6.359663 0.000000 +6.358137 0.000000 +6.356611 0.000000 +6.355085 0.000000 +6.353559 0.000000 +6.352033 0.000000 +6.350507 0.000000 +6.348981 0.000000 +6.347455 0.000000 +6.345928 0.000000 +6.344402 0.000000 +6.342876 0.000000 +6.341350 0.000000 +6.339824 0.000000 +6.338298 0.000000 +6.336772 0.000000 +6.335246 0.000000 +6.333720 0.000000 +6.332194 0.000000 +6.330668 0.000000 +6.329142 0.000000 +6.327616 0.000000 +6.326090 0.000000 +6.324564 0.000000 +6.323037 0.000000 +6.321511 0.000000 +6.319985 0.000000 +6.318459 0.000000 +6.316933 0.000000 +6.315407 0.000000 +6.313881 0.000000 +6.312355 0.000000 +6.310829 0.000000 +6.309303 0.000000 +6.307777 0.000000 +6.306251 0.000000 +6.304725 0.000000 +6.303199 0.000000 +6.301673 0.000000 +6.300147 0.000000 +6.298620 0.000000 +6.297094 0.000000 +6.295568 0.000000 +6.294042 0.000000 +6.292516 0.000000 +6.290990 0.000000 +6.289464 0.000000 +6.287938 0.000000 +6.286412 0.000000 +6.284886 0.000000 +6.283360 0.000000 +6.281834 0.000000 +6.280308 0.000000 +6.278782 0.000000 +6.277256 0.000000 +6.275729 0.000000 +6.274203 0.000000 +6.272677 0.000000 +6.271151 0.000000 +6.269625 0.000000 +6.268099 0.000000 +6.266573 0.000000 +6.265047 0.000000 +6.263521 0.000000 +6.261995 0.000000 +6.260469 0.000000 +6.258943 0.000000 +6.257417 0.000000 +6.255891 0.000000 +6.254365 0.000000 +6.252838 0.000000 +6.251312 0.000000 +6.249786 0.000000 +6.248260 0.000000 +6.246734 0.000000 +6.245208 0.000000 +6.243682 0.000000 +6.242156 0.000000 +6.240630 0.000000 +6.239104 0.000000 +6.237578 0.000000 +6.236052 0.000000 +6.234526 0.000000 +6.233000 0.000000 +6.231474 0.000000 +6.229948 0.000000 +6.228421 0.000000 +6.226895 0.000000 +6.225369 0.000000 +6.223843 0.000000 +6.222317 0.000000 +6.220791 0.000000 +6.219265 0.000000 +6.217739 0.000000 +6.216213 0.000000 +6.214687 0.000000 +6.213161 0.000000 +6.211635 0.000000 +6.210109 0.000000 +6.208583 0.000000 +6.207057 0.000000 +6.205530 0.000000 +6.204004 0.000000 +6.202478 0.000000 +6.200952 0.000000 +6.199426 0.000000 +6.197900 0.000000 +6.196374 0.000000 +6.194848 0.000000 +6.193322 0.000000 +6.191796 0.000000 +6.190270 0.000000 +6.188744 0.000000 +6.187218 0.000000 +6.185692 0.000000 +6.184166 0.000000 +6.182639 0.000000 +6.181113 0.000000 +6.179587 0.000000 +6.178061 0.000000 +6.176535 0.000000 +6.175009 0.000000 +6.173483 0.000000 +6.171957 0.000000 +6.170431 0.000000 +6.168905 0.000000 +6.167379 0.000000 +6.165853 0.000000 +6.164327 0.000000 +6.162801 0.000000 +6.161275 0.000000 +6.159749 0.000000 +6.158222 0.000000 +6.156696 0.000000 +6.155170 0.000000 +6.153644 0.000000 +6.152118 0.000000 +6.150592 0.000000 +6.149066 0.000000 +6.147540 0.000000 +6.146014 0.000000 +6.144488 0.000000 +6.142962 0.000000 +6.141436 0.000000 +6.139910 0.000000 +6.138384 0.000000 +6.136858 0.000000 +6.135331 0.000000 +6.133805 0.000000 +6.132279 0.000000 +6.130753 0.000000 +6.129227 0.000000 +6.127701 0.000000 +6.126175 0.000000 +6.124649 0.000000 +6.123123 0.000000 +6.121597 0.000000 +6.120071 0.000000 +6.118545 0.000000 +6.117019 0.000000 +6.115493 0.000000 +6.113967 0.000000 +6.112440 0.000000 +6.110914 0.000000 +6.109388 0.000000 +6.107862 0.000000 +6.106336 0.000000 +6.104810 0.000000 +6.103284 0.000000 +6.101758 0.000000 +6.100232 0.000000 +6.098706 0.000000 +6.097180 0.000000 +6.095654 0.000000 +6.094128 0.000000 +6.092602 0.000000 +6.091076 0.000000 +6.089550 0.000001 +6.088023 0.000001 +6.086497 0.000001 +6.084971 0.000001 +6.083445 0.000001 +6.081919 0.000001 +6.080393 0.000001 +6.078867 0.000001 +6.077341 0.000001 +6.075815 0.000001 +6.074289 0.000001 +6.072763 0.000001 +6.071237 0.000001 +6.069711 0.000001 +6.068185 0.000001 +6.066659 0.000001 +6.065132 0.000001 +6.063606 0.000001 +6.062080 0.000001 +6.060554 0.000001 +6.059028 0.000001 +6.057502 0.000001 +6.055976 0.000001 +6.054450 0.000001 +6.052924 0.000001 +6.051398 0.000001 +6.049872 0.000001 +6.048346 0.000001 +6.046820 0.000001 +6.045294 0.000001 +6.043768 0.000001 +6.042241 0.000001 +6.040715 0.000001 +6.039189 0.000001 +6.037663 0.000001 +6.036137 0.000001 +6.034611 0.000001 +6.033085 0.000001 +6.031559 0.000001 +6.030033 0.000001 +6.028507 0.000001 +6.026981 0.000001 +6.025455 0.000001 +6.023929 0.000001 +6.022403 0.000001 +6.020877 0.000001 +6.019351 0.000001 +6.017824 0.000001 +6.016298 0.000001 +6.014772 0.000001 +6.013246 0.000001 +6.011720 0.000001 +6.010194 0.000001 +6.008668 0.000001 +6.007142 0.000001 +6.005616 0.000001 +6.004090 0.000001 +6.002564 0.000001 +6.001038 0.000001 +5.999512 0.000001 +5.997986 0.000001 +5.996460 0.000001 +5.994933 0.000001 +5.993407 0.000001 +5.991881 0.000001 +5.990355 0.000001 +5.988829 0.000001 +5.987303 0.000001 +5.985777 0.000001 +5.984251 0.000001 +5.982725 0.000001 +5.981199 0.000001 +5.979673 0.000001 +5.978147 0.000001 +5.976621 0.000001 +5.975095 0.000001 +5.973569 0.000001 +5.972042 0.000001 +5.970516 0.000001 +5.968990 0.000001 +5.967464 0.000001 +5.965938 0.000001 +5.964412 0.000001 +5.962886 0.000001 +5.961360 0.000001 +5.959834 0.000001 +5.958308 0.000001 +5.956782 0.000001 +5.955256 0.000001 +5.953730 0.000001 +5.952204 0.000001 +5.950678 0.000001 +5.949152 0.000001 +5.947625 0.000001 +5.946099 0.000001 +5.944573 0.000001 +5.943047 0.000001 +5.941521 0.000001 +5.939995 0.000001 +5.938469 0.000001 +5.936943 0.000001 +5.935417 0.000001 +5.933891 0.000001 +5.932365 0.000001 +5.930839 0.000001 +5.929313 0.000001 +5.927787 0.000001 +5.926261 0.000001 +5.924734 0.000001 +5.923208 0.000001 +5.921682 0.000001 +5.920156 0.000001 +5.918630 0.000001 +5.917104 0.000001 +5.915578 0.000001 +5.914052 0.000001 +5.912526 0.000001 +5.911000 0.000001 +5.909474 0.000001 +5.907948 0.000001 +5.906422 0.000001 +5.904896 0.000001 +5.903370 0.000001 +5.901843 0.000001 +5.900317 0.000001 +5.898791 0.000001 +5.897265 0.000001 +5.895739 0.000001 +5.894213 0.000001 +5.892687 0.000001 +5.891161 0.000001 +5.889635 0.000001 +5.888109 0.000001 +5.886583 0.000001 +5.885057 0.000001 +5.883531 0.000001 +5.882005 0.000001 +5.880479 0.000001 +5.878953 0.000001 +5.877426 0.000001 +5.875900 0.000001 +5.874374 0.000001 +5.872848 0.000001 +5.871322 0.000001 +5.869796 0.000001 +5.868270 0.000001 +5.866744 0.000001 +5.865218 0.000001 +5.863692 0.000001 +5.862166 0.000001 +5.860640 0.000001 +5.859114 0.000001 +5.857588 0.000001 +5.856062 0.000001 +5.854535 0.000001 +5.853009 0.000001 +5.851483 0.000001 +5.849957 0.000001 +5.848431 0.000001 +5.846905 0.000001 +5.845379 0.000001 +5.843853 0.000001 +5.842327 0.000001 +5.840801 0.000001 +5.839275 0.000001 +5.837749 0.000001 +5.836223 0.000001 +5.834697 0.000001 +5.833171 0.000001 +5.831644 0.000001 +5.830118 0.000001 +5.828592 0.000001 +5.827066 0.000001 +5.825540 0.000001 +5.824014 0.000001 +5.822488 0.000001 +5.820962 0.000001 +5.819436 0.000001 +5.817910 0.000001 +5.816384 0.000001 +5.814858 0.000001 +5.813332 0.000001 +5.811806 0.000001 +5.810280 0.000001 +5.808754 0.000001 +5.807227 0.000001 +5.805701 0.000001 +5.804175 0.000001 +5.802649 0.000001 +5.801123 0.000001 +5.799597 0.000001 +5.798071 0.000001 +5.796545 0.000001 +5.795019 0.000001 +5.793493 0.000001 +5.791967 0.000001 +5.790441 0.000001 +5.788915 0.000001 +5.787389 0.000001 +5.785863 0.000001 +5.784336 0.000001 +5.782810 0.000001 +5.781284 0.000001 +5.779758 0.000001 +5.778232 0.000001 +5.776706 0.000001 +5.775180 0.000001 +5.773654 0.000001 +5.772128 0.000001 +5.770602 0.000001 +5.769076 0.000001 +5.767550 0.000001 +5.766024 0.000001 +5.764498 0.000001 +5.762972 0.000001 +5.761445 0.000001 +5.759919 0.000001 +5.758393 0.000001 +5.756867 0.000001 +5.755341 0.000001 +5.753815 0.000001 +5.752289 0.000001 +5.750763 0.000001 +5.749237 0.000001 +5.747711 0.000001 +5.746185 0.000001 +5.744659 0.000001 +5.743133 0.000001 +5.741607 0.000001 +5.740081 0.000001 +5.738555 0.000001 +5.737028 0.000001 +5.735502 0.000001 +5.733976 0.000001 +5.732450 0.000001 +5.730924 0.000001 +5.729398 0.000001 +5.727872 0.000001 +5.726346 0.000001 +5.724820 0.000001 +5.723294 0.000001 +5.721768 0.000001 +5.720242 0.000001 +5.718716 0.000001 +5.717190 0.000001 +5.715664 0.000001 +5.714137 0.000001 +5.712611 0.000001 +5.711085 0.000001 +5.709559 0.000001 +5.708033 0.000001 +5.706507 0.000001 +5.704981 0.000001 +5.703455 0.000001 +5.701929 0.000001 +5.700403 0.000001 +5.698877 0.000001 +5.697351 0.000001 +5.695825 0.000001 +5.694299 0.000001 +5.692773 0.000001 +5.691246 0.000001 +5.689720 0.000001 +5.688194 0.000001 +5.686668 0.000001 +5.685142 0.000001 +5.683616 0.000001 +5.682090 0.000001 +5.680564 0.000001 +5.679038 0.000001 +5.677512 0.000001 +5.675986 0.000001 +5.674460 0.000001 +5.672934 0.000001 +5.671408 0.000001 +5.669882 0.000001 +5.668356 0.000001 +5.666829 0.000001 +5.665303 0.000001 +5.663777 0.000001 +5.662251 0.000001 +5.660725 0.000001 +5.659199 0.000001 +5.657673 0.000001 +5.656147 0.000001 +5.654621 0.000001 +5.653095 0.000001 +5.651569 0.000001 +5.650043 0.000001 +5.648517 0.000001 +5.646991 0.000001 +5.645465 0.000001 +5.643938 0.000001 +5.642412 0.000001 +5.640886 0.000001 +5.639360 0.000001 +5.637834 0.000001 +5.636308 0.000001 +5.634782 0.000001 +5.633256 0.000001 +5.631730 0.000001 +5.630204 0.000001 +5.628678 0.000001 +5.627152 0.000001 +5.625626 0.000001 +5.624100 0.000001 +5.622574 0.000001 +5.621047 0.000001 +5.619521 0.000001 +5.617995 0.000001 +5.616469 0.000001 +5.614943 0.000001 +5.613417 0.000001 +5.611891 0.000001 +5.610365 0.000001 +5.608839 0.000001 +5.607313 0.000001 +5.605787 0.000001 +5.604261 0.000001 +5.602735 0.000001 +5.601209 0.000001 +5.599683 0.000001 +5.598157 0.000001 +5.596630 0.000001 +5.595104 0.000001 +5.593578 0.000001 +5.592052 0.000001 +5.590526 0.000001 +5.589000 0.000001 +5.587474 0.000001 +5.585948 0.000001 +5.584422 0.000001 +5.582896 0.000001 +5.581370 0.000001 +5.579844 0.000001 +5.578318 0.000001 +5.576792 0.000001 +5.575266 0.000001 +5.573739 0.000001 +5.572213 0.000001 +5.570687 0.000001 +5.569161 0.000001 +5.567635 0.000001 +5.566109 0.000001 +5.564583 0.000001 +5.563057 0.000001 +5.561531 0.000001 +5.560005 0.000001 +5.558479 0.000001 +5.556953 0.000001 +5.555427 0.000001 +5.553901 0.000001 +5.552375 0.000001 +5.550848 0.000001 +5.549322 0.000001 +5.547796 0.000001 +5.546270 0.000001 +5.544744 0.000001 +5.543218 0.000001 +5.541692 0.000001 +5.540166 0.000001 +5.538640 0.000001 +5.537114 0.000001 +5.535588 0.000001 +5.534062 0.000001 +5.532536 0.000001 +5.531010 0.000001 +5.529484 0.000001 +5.527958 0.000001 +5.526431 0.000001 +5.524905 0.000001 +5.523379 0.000001 +5.521853 0.000001 +5.520327 0.000001 +5.518801 0.000001 +5.517275 0.000001 +5.515749 0.000001 +5.514223 0.000001 +5.512697 0.000001 +5.511171 0.000001 +5.509645 0.000001 +5.508119 0.000001 +5.506593 0.000001 +5.505067 0.000001 +5.503540 0.000001 +5.502014 0.000001 +5.500488 0.000001 +5.498962 0.000001 +5.497436 0.000001 +5.495910 0.000001 +5.494384 0.000001 +5.492858 0.000001 +5.491332 0.000001 +5.489806 0.000001 +5.488280 0.000001 +5.486754 0.000001 +5.485228 0.000001 +5.483702 0.000001 +5.482176 0.000001 +5.480649 0.000001 +5.479123 0.000001 +5.477597 0.000001 +5.476071 0.000001 +5.474545 0.000001 +5.473019 0.000001 +5.471493 0.000001 +5.469967 0.000001 +5.468441 0.000001 +5.466915 0.000001 +5.465389 0.000001 +5.463863 0.000001 +5.462337 0.000001 +5.460811 0.000001 +5.459285 0.000001 +5.457759 0.000001 +5.456232 0.000001 +5.454706 0.000001 +5.453180 0.000001 +5.451654 0.000001 +5.450128 0.000001 +5.448602 0.000001 +5.447076 0.000001 +5.445550 0.000001 +5.444024 0.000001 +5.442498 0.000001 +5.440972 0.000001 +5.439446 0.000001 +5.437920 0.000001 +5.436394 0.000001 +5.434868 0.000001 +5.433341 0.000001 +5.431815 0.000001 +5.430289 0.000001 +5.428763 0.000001 +5.427237 0.000001 +5.425711 0.000001 +5.424185 0.000001 +5.422659 0.000001 +5.421133 0.000001 +5.419607 0.000001 +5.418081 0.000001 +5.416555 0.000001 +5.415029 0.000001 +5.413503 0.000001 +5.411977 0.000001 +5.410450 0.000001 +5.408924 0.000001 +5.407398 0.000001 +5.405872 0.000001 +5.404346 0.000001 +5.402820 0.000001 +5.401294 0.000001 +5.399768 0.000001 +5.398242 0.000001 +5.396716 0.000001 +5.395190 0.000001 +5.393664 0.000001 +5.392138 0.000001 +5.390612 0.000001 +5.389086 0.000001 +5.387560 0.000001 +5.386033 0.000001 +5.384507 0.000001 +5.382981 0.000001 +5.381455 0.000001 +5.379929 0.000001 +5.378403 0.000001 +5.376877 0.000001 +5.375351 0.000001 +5.373825 0.000001 +5.372299 0.000001 +5.370773 0.000001 +5.369247 0.000001 +5.367721 0.000001 +5.366195 0.000001 +5.364669 0.000001 +5.363142 0.000001 +5.361616 0.000001 +5.360090 0.000001 +5.358564 0.000001 +5.357038 0.000001 +5.355512 0.000001 +5.353986 0.000001 +5.352460 0.000001 +5.350934 0.000001 +5.349408 0.000001 +5.347882 0.000001 +5.346356 0.000001 +5.344830 0.000001 +5.343304 0.000001 +5.341778 0.000001 +5.340251 0.000001 +5.338725 0.000001 +5.337199 0.000001 +5.335673 0.000001 +5.334147 0.000001 +5.332621 0.000001 +5.331095 0.000001 +5.329569 0.000001 +5.328043 0.000001 +5.326517 0.000001 +5.324991 0.000001 +5.323465 0.000001 +5.321939 0.000001 +5.320413 0.000001 +5.318887 0.000001 +5.317361 0.000001 +5.315834 0.000001 +5.314308 0.000001 +5.312782 0.000001 +5.311256 0.000001 +5.309730 0.000001 +5.308204 0.000001 +5.306678 0.000001 +5.305152 0.000001 +5.303626 0.000001 +5.302100 0.000001 +5.300574 0.000001 +5.299048 0.000001 +5.297522 0.000001 +5.295996 0.000001 +5.294470 0.000001 +5.292943 0.000001 +5.291417 0.000001 +5.289891 0.000001 +5.288365 0.000001 +5.286839 0.000001 +5.285313 0.000001 +5.283787 0.000001 +5.282261 0.000001 +5.280735 0.000001 +5.279209 0.000001 +5.277683 0.000001 +5.276157 0.000001 +5.274631 0.000001 +5.273105 0.000001 +5.271579 0.000001 +5.270052 0.000001 +5.268526 0.000001 +5.267000 0.000001 +5.265474 0.000001 +5.263948 0.000001 +5.262422 0.000001 +5.260896 0.000001 +5.259370 0.000001 +5.257844 0.000001 +5.256318 0.000001 +5.254792 0.000001 +5.253266 0.000001 +5.251740 0.000001 +5.250214 0.000001 +5.248688 0.000001 +5.247162 0.000001 +5.245635 0.000001 +5.244109 0.000001 +5.242583 0.000001 +5.241057 0.000001 +5.239531 0.000001 +5.238005 0.000001 +5.236479 0.000001 +5.234953 0.000001 +5.233427 0.000001 +5.231901 0.000001 +5.230375 0.000001 +5.228849 0.000001 +5.227323 0.000001 +5.225797 0.000001 +5.224271 0.000001 +5.222744 0.000001 +5.221218 0.000001 +5.219692 0.000001 +5.218166 0.000001 +5.216640 0.000001 +5.215114 0.000001 +5.213588 0.000001 +5.212062 0.000001 +5.210536 0.000001 +5.209010 0.000001 +5.207484 0.000001 +5.205958 0.000001 +5.204432 0.000001 +5.202906 0.000001 +5.201380 0.000001 +5.199853 0.000001 +5.198327 0.000001 +5.196801 0.000001 +5.195275 0.000001 +5.193749 0.000001 +5.192223 0.000001 +5.190697 0.000001 +5.189171 0.000001 +5.187645 0.000001 +5.186119 0.000001 +5.184593 0.000001 +5.183067 0.000001 +5.181541 0.000001 +5.180015 0.000001 +5.178489 0.000001 +5.176963 0.000001 +5.175436 0.000001 +5.173910 0.000001 +5.172384 0.000001 +5.170858 0.000001 +5.169332 0.000001 +5.167806 0.000001 +5.166280 0.000001 +5.164754 0.000001 +5.163228 0.000001 +5.161702 0.000001 +5.160176 0.000001 +5.158650 0.000001 +5.157124 0.000001 +5.155598 0.000001 +5.154072 0.000001 +5.152545 0.000001 +5.151019 0.000001 +5.149493 0.000001 +5.147967 0.000001 +5.146441 0.000001 +5.144915 0.000001 +5.143389 0.000001 +5.141863 0.000001 +5.140337 0.000001 +5.138811 0.000001 +5.137285 0.000001 +5.135759 0.000001 +5.134233 0.000001 +5.132707 0.000001 +5.131181 0.000001 +5.129654 0.000001 +5.128128 0.000001 +5.126602 0.000001 +5.125076 0.000001 +5.123550 0.000001 +5.122024 0.000001 +5.120498 0.000001 +5.118972 0.000001 +5.117446 0.000001 +5.115920 0.000001 +5.114394 0.000001 +5.112868 0.000001 +5.111342 0.000001 +5.109816 0.000001 +5.108290 0.000001 +5.106764 0.000001 +5.105237 0.000001 +5.103711 0.000001 +5.102185 0.000001 +5.100659 0.000001 +5.099133 0.000001 +5.097607 0.000001 +5.096081 0.000001 +5.094555 0.000001 +5.093029 0.000001 +5.091503 0.000001 +5.089977 0.000001 +5.088451 0.000001 +5.086925 0.000001 +5.085399 0.000001 +5.083873 0.000001 +5.082346 0.000001 +5.080820 0.000001 +5.079294 0.000001 +5.077768 0.000001 +5.076242 0.000001 +5.074716 0.000001 +5.073190 0.000001 +5.071664 0.000001 +5.070138 0.000001 +5.068612 0.000001 +5.067086 0.000001 +5.065560 0.000001 +5.064034 0.000001 +5.062508 0.000001 +5.060982 0.000001 +5.059455 0.000001 +5.057929 0.000001 +5.056403 0.000001 +5.054877 0.000001 +5.053351 0.000001 +5.051825 0.000001 +5.050299 0.000001 +5.048773 0.000001 +5.047247 0.000001 +5.045721 0.000001 +5.044195 0.000001 +5.042669 0.000001 +5.041143 0.000001 +5.039617 0.000001 +5.038091 0.000001 +5.036565 0.000001 +5.035038 0.000001 +5.033512 0.000001 +5.031986 0.000001 +5.030460 0.000001 +5.028934 0.000001 +5.027408 0.000001 +5.025882 0.000001 +5.024356 0.000001 +5.022830 0.000001 +5.021304 0.000001 +5.019778 0.000001 +5.018252 0.000001 +5.016726 0.000001 +5.015200 0.000001 +5.013674 0.000001 +5.012147 0.000001 +5.010621 0.000001 +5.009095 0.000001 +5.007569 0.000001 +5.006043 0.000001 +5.004517 0.000001 +5.002991 0.000001 +5.001465 0.000001 +4.999939 0.000001 +4.998413 0.000001 +4.996887 0.000001 +4.995361 0.000001 +4.993835 0.000001 +4.992309 0.000001 +4.990783 0.000001 +4.989257 0.000001 +4.987730 0.000001 +4.986204 0.000001 +4.984678 0.000001 +4.983152 0.000001 +4.981626 0.000001 +4.980100 0.000001 +4.978574 0.000001 +4.977048 0.000001 +4.975522 0.000001 +4.973996 0.000001 +4.972470 0.000001 +4.970944 0.000001 +4.969418 0.000001 +4.967892 0.000001 +4.966366 0.000001 +4.964839 0.000001 +4.963313 0.000001 +4.961787 0.000001 +4.960261 0.000001 +4.958735 0.000001 +4.957209 0.000001 +4.955683 0.000001 +4.954157 0.000001 +4.952631 0.000001 +4.951105 0.000001 +4.949579 0.000001 +4.948053 0.000001 +4.946527 0.000001 +4.945001 0.000001 +4.943475 0.000001 +4.941948 0.000001 +4.940422 0.000001 +4.938896 0.000001 +4.937370 0.000001 +4.935844 0.000001 +4.934318 0.000001 +4.932792 0.000001 +4.931266 0.000001 +4.929740 0.000001 +4.928214 0.000001 +4.926688 0.000001 +4.925162 0.000001 +4.923636 0.000001 +4.922110 0.000001 +4.920584 0.000001 +4.919058 0.000001 +4.917531 0.000001 +4.916005 0.000001 +4.914479 0.000001 +4.912953 0.000001 +4.911427 0.000001 +4.909901 0.000001 +4.908375 0.000001 +4.906849 0.000001 +4.905323 0.000001 +4.903797 0.000001 +4.902271 0.000001 +4.900745 0.000001 +4.899219 0.000001 +4.897693 0.000001 +4.896167 0.000001 +4.894640 0.000001 +4.893114 0.000001 +4.891588 0.000001 +4.890062 0.000001 +4.888536 0.000001 +4.887010 0.000001 +4.885484 0.000001 +4.883958 0.000001 +4.882432 0.000001 +4.880906 0.000001 +4.879380 0.000001 +4.877854 0.000001 +4.876328 0.000001 +4.874802 0.000001 +4.873276 0.000001 +4.871749 0.000001 +4.870223 0.000001 +4.868697 0.000001 +4.867171 0.000001 +4.865645 0.000001 +4.864119 0.000001 +4.862593 0.000001 +4.861067 0.000001 +4.859541 0.000001 +4.858015 0.000001 +4.856489 0.000001 +4.854963 0.000001 +4.853437 0.000001 +4.851911 0.000001 +4.850385 0.000001 +4.848859 0.000001 +4.847332 0.000001 +4.845806 0.000001 +4.844280 0.000001 +4.842754 0.000001 +4.841228 0.000001 +4.839702 0.000001 +4.838176 0.000001 +4.836650 0.000001 +4.835124 0.000001 +4.833598 0.000001 +4.832072 0.000001 +4.830546 0.000001 +4.829020 0.000001 +4.827494 0.000001 +4.825968 0.000001 +4.824441 0.000001 +4.822915 0.000001 +4.821389 0.000001 +4.819863 0.000001 +4.818337 0.000001 +4.816811 0.000001 +4.815285 0.000001 +4.813759 0.000001 +4.812233 0.000001 +4.810707 0.000001 +4.809181 0.000001 +4.807655 0.000001 +4.806129 0.000001 +4.804603 0.000001 +4.803077 0.000001 +4.801550 0.000001 +4.800024 0.000001 +4.798498 0.000001 +4.796972 0.000001 +4.795446 0.000001 +4.793920 0.000001 +4.792394 0.000001 +4.790868 0.000001 +4.789342 0.000001 +4.787816 0.000001 +4.786290 0.000002 +4.784764 0.000002 +4.783238 0.000002 +4.781712 0.000002 +4.780186 0.000002 +4.778660 0.000002 +4.777133 0.000002 +4.775607 0.000002 +4.774081 0.000002 +4.772555 0.000002 +4.771029 0.000002 +4.769503 0.000002 +4.767977 0.000002 +4.766451 0.000002 +4.764925 0.000002 +4.763399 0.000002 +4.761873 0.000002 +4.760347 0.000002 +4.758821 0.000002 +4.757295 0.000002 +4.755769 0.000002 +4.754242 0.000002 +4.752716 0.000002 +4.751190 0.000002 +4.749664 0.000002 +4.748138 0.000002 +4.746612 0.000002 +4.745086 0.000002 +4.743560 0.000002 +4.742034 0.000002 +4.740508 0.000002 +4.738982 0.000002 +4.737456 0.000002 +4.735930 0.000002 +4.734404 0.000002 +4.732878 0.000002 +4.731351 0.000002 +4.729825 0.000002 +4.728299 0.000002 +4.726773 0.000002 +4.725247 0.000002 +4.723721 0.000002 +4.722195 0.000002 +4.720669 0.000002 +4.719143 0.000002 +4.717617 0.000002 +4.716091 0.000002 +4.714565 0.000002 +4.713039 0.000002 +4.711513 0.000002 +4.709987 0.000002 +4.708461 0.000002 +4.706934 0.000002 +4.705408 0.000002 +4.703882 0.000002 +4.702356 0.000002 +4.700830 0.000002 +4.699304 0.000002 +4.697778 0.000002 +4.696252 0.000002 +4.694726 0.000002 +4.693200 0.000002 +4.691674 0.000002 +4.690148 0.000002 +4.688622 0.000002 +4.687096 0.000002 +4.685570 0.000002 +4.684043 0.000002 +4.682517 0.000002 +4.680991 0.000002 +4.679465 0.000002 +4.677939 0.000002 +4.676413 0.000002 +4.674887 0.000002 +4.673361 0.000002 +4.671835 0.000002 +4.670309 0.000002 +4.668783 0.000002 +4.667257 0.000002 +4.665731 0.000002 +4.664205 0.000002 +4.662679 0.000002 +4.661152 0.000002 +4.659626 0.000002 +4.658100 0.000002 +4.656574 0.000002 +4.655048 0.000002 +4.653522 0.000002 +4.651996 0.000002 +4.650470 0.000002 +4.648944 0.000002 +4.647418 0.000002 +4.645892 0.000002 +4.644366 0.000002 +4.642840 0.000002 +4.641314 0.000002 +4.639788 0.000002 +4.638262 0.000002 +4.636735 0.000002 +4.635209 0.000002 +4.633683 0.000002 +4.632157 0.000002 +4.630631 0.000002 +4.629105 0.000002 +4.627579 0.000002 +4.626053 0.000002 +4.624527 0.000002 +4.623001 0.000002 +4.621475 0.000002 +4.619949 0.000002 +4.618423 0.000002 +4.616897 0.000002 +4.615371 0.000002 +4.613844 0.000002 +4.612318 0.000002 +4.610792 0.000002 +4.609266 0.000002 +4.607740 0.000002 +4.606214 0.000002 +4.604688 0.000002 +4.603162 0.000002 +4.601636 0.000002 +4.600110 0.000002 +4.598584 0.000002 +4.597058 0.000002 +4.595532 0.000002 +4.594006 0.000002 +4.592480 0.000002 +4.590953 0.000002 +4.589427 0.000002 +4.587901 0.000002 +4.586375 0.000002 +4.584849 0.000002 +4.583323 0.000002 +4.581797 0.000002 +4.580271 0.000002 +4.578745 0.000002 +4.577219 0.000002 +4.575693 0.000002 +4.574167 0.000002 +4.572641 0.000002 +4.571115 0.000002 +4.569589 0.000002 +4.568063 0.000002 +4.566536 0.000002 +4.565010 0.000002 +4.563484 0.000002 +4.561958 0.000002 +4.560432 0.000002 +4.558906 0.000002 +4.557380 0.000002 +4.555854 0.000002 +4.554328 0.000002 +4.552802 0.000002 +4.551276 0.000002 +4.549750 0.000002 +4.548224 0.000002 +4.546698 0.000002 +4.545172 0.000002 +4.543645 0.000002 +4.542119 0.000002 +4.540593 0.000002 +4.539067 0.000002 +4.537541 0.000002 +4.536015 0.000002 +4.534489 0.000002 +4.532963 0.000002 +4.531437 0.000002 +4.529911 0.000002 +4.528385 0.000002 +4.526859 0.000002 +4.525333 0.000002 +4.523807 0.000002 +4.522281 0.000002 +4.520754 0.000002 +4.519228 0.000002 +4.517702 0.000002 +4.516176 0.000002 +4.514650 0.000002 +4.513124 0.000002 +4.511598 0.000002 +4.510072 0.000002 +4.508546 0.000002 +4.507020 0.000002 +4.505494 0.000002 +4.503968 0.000002 +4.502442 0.000002 +4.500916 0.000002 +4.499390 0.000002 +4.497864 0.000002 +4.496337 0.000002 +4.494811 0.000002 +4.493285 0.000002 +4.491759 0.000002 +4.490233 0.000002 +4.488707 0.000002 +4.487181 0.000002 +4.485655 0.000002 +4.484129 0.000002 +4.482603 0.000002 +4.481077 0.000002 +4.479551 0.000002 +4.478025 0.000002 +4.476499 0.000002 +4.474973 0.000002 +4.473446 0.000002 +4.471920 0.000002 +4.470394 0.000002 +4.468868 0.000002 +4.467342 0.000002 +4.465816 0.000002 +4.464290 0.000002 +4.462764 0.000002 +4.461238 0.000002 +4.459712 0.000002 +4.458186 0.000002 +4.456660 0.000002 +4.455134 0.000002 +4.453608 0.000002 +4.452082 0.000002 +4.450555 0.000002 +4.449029 0.000002 +4.447503 0.000002 +4.445977 0.000002 +4.444451 0.000002 +4.442925 0.000002 +4.441399 0.000002 +4.439873 0.000002 +4.438347 0.000002 +4.436821 0.000002 +4.435295 0.000002 +4.433769 0.000002 +4.432243 0.000002 +4.430717 0.000002 +4.429191 0.000002 +4.427665 0.000002 +4.426138 0.000002 +4.424612 0.000002 +4.423086 0.000002 +4.421560 0.000002 +4.420034 0.000003 +4.418508 0.000003 +4.416982 0.000003 +4.415456 0.000003 +4.413930 0.000003 +4.412404 0.000003 +4.410878 0.000003 +4.409352 0.000003 +4.407826 0.000003 +4.406300 0.000003 +4.404774 0.000003 +4.403247 0.000003 +4.401721 0.000003 +4.400195 0.000003 +4.398669 0.000003 +4.397143 0.000003 +4.395617 0.000003 +4.394091 0.000003 +4.392565 0.000003 +4.391039 0.000003 +4.389513 0.000003 +4.387987 0.000003 +4.386461 0.000003 +4.384935 0.000003 +4.383409 0.000003 +4.381883 0.000003 +4.380356 0.000003 +4.378830 0.000003 +4.377304 0.000003 +4.375778 0.000003 +4.374252 0.000003 +4.372726 0.000003 +4.371200 0.000003 +4.369674 0.000003 +4.368148 0.000003 +4.366622 0.000003 +4.365096 0.000003 +4.363570 0.000003 +4.362044 0.000003 +4.360518 0.000003 +4.358992 0.000003 +4.357466 0.000003 +4.355939 0.000003 +4.354413 0.000003 +4.352887 0.000003 +4.351361 0.000003 +4.349835 0.000003 +4.348309 0.000003 +4.346783 0.000003 +4.345257 0.000003 +4.343731 0.000003 +4.342205 0.000003 +4.340679 0.000003 +4.339153 0.000003 +4.337627 0.000003 +4.336101 0.000003 +4.334575 0.000003 +4.333048 0.000003 +4.331522 0.000003 +4.329996 0.000003 +4.328470 0.000003 +4.326944 0.000003 +4.325418 0.000003 +4.323892 0.000003 +4.322366 0.000003 +4.320840 0.000003 +4.319314 0.000003 +4.317788 0.000003 +4.316262 0.000003 +4.314736 0.000003 +4.313210 0.000003 +4.311684 0.000003 +4.310157 0.000003 +4.308631 0.000003 +4.307105 0.000003 +4.305579 0.000003 +4.304053 0.000003 +4.302527 0.000003 +4.301001 0.000003 +4.299475 0.000003 +4.297949 0.000003 +4.296423 0.000003 +4.294897 0.000003 +4.293371 0.000003 +4.291845 0.000003 +4.290319 0.000003 +4.288793 0.000003 +4.287267 0.000003 +4.285740 0.000003 +4.284214 0.000003 +4.282688 0.000003 +4.281162 0.000003 +4.279636 0.000003 +4.278110 0.000003 +4.276584 0.000003 +4.275058 0.000003 +4.273532 0.000003 +4.272006 0.000003 +4.270480 0.000003 +4.268954 0.000003 +4.267428 0.000003 +4.265902 0.000003 +4.264376 0.000003 +4.262849 0.000003 +4.261323 0.000003 +4.259797 0.000003 +4.258271 0.000003 +4.256745 0.000003 +4.255219 0.000003 +4.253693 0.000003 +4.252167 0.000003 +4.250641 0.000003 +4.249115 0.000003 +4.247589 0.000003 +4.246063 0.000003 +4.244537 0.000003 +4.243011 0.000003 +4.241485 0.000003 +4.239958 0.000003 +4.238432 0.000003 +4.236906 0.000003 +4.235380 0.000003 +4.233854 0.000003 +4.232328 0.000004 +4.230802 0.000004 +4.229276 0.000004 +4.227750 0.000004 +4.226224 0.000004 +4.224698 0.000004 +4.223172 0.000004 +4.221646 0.000004 +4.220120 0.000004 +4.218594 0.000004 +4.217068 0.000004 +4.215541 0.000004 +4.214015 0.000004 +4.212489 0.000004 +4.210963 0.000004 +4.209437 0.000004 +4.207911 0.000004 +4.206385 0.000004 +4.204859 0.000004 +4.203333 0.000004 +4.201807 0.000004 +4.200281 0.000004 +4.198755 0.000004 +4.197229 0.000004 +4.195703 0.000004 +4.194177 0.000004 +4.192650 0.000004 +4.191124 0.000004 +4.189598 0.000004 +4.188072 0.000004 +4.186546 0.000004 +4.185020 0.000004 +4.183494 0.000004 +4.181968 0.000004 +4.180442 0.000004 +4.178916 0.000004 +4.177390 0.000004 +4.175864 0.000004 +4.174338 0.000004 +4.172812 0.000004 +4.171286 0.000004 +4.169759 0.000004 +4.168233 0.000004 +4.166707 0.000004 +4.165181 0.000004 +4.163655 0.000004 +4.162129 0.000004 +4.160603 0.000004 +4.159077 0.000004 +4.157551 0.000004 +4.156025 0.000004 +4.154499 0.000004 +4.152973 0.000004 +4.151447 0.000004 +4.149921 0.000004 +4.148395 0.000004 +4.146869 0.000004 +4.145342 0.000004 +4.143816 0.000004 +4.142290 0.000004 +4.140764 0.000004 +4.139238 0.000004 +4.137712 0.000004 +4.136186 0.000004 +4.134660 0.000004 +4.133134 0.000004 +4.131608 0.000004 +4.130082 0.000004 +4.128556 0.000004 +4.127030 0.000004 +4.125504 0.000004 +4.123978 0.000004 +4.122451 0.000004 +4.120925 0.000004 +4.119399 0.000004 +4.117873 0.000004 +4.116347 0.000004 +4.114821 0.000005 +4.113295 0.000005 +4.111769 0.000005 +4.110243 0.000005 +4.108717 0.000005 +4.107191 0.000005 +4.105665 0.000005 +4.104139 0.000005 +4.102613 0.000005 +4.101087 0.000005 +4.099560 0.000005 +4.098034 0.000005 +4.096508 0.000005 +4.094982 0.000005 +4.093456 0.000005 +4.091930 0.000005 +4.090404 0.000005 +4.088878 0.000005 +4.087352 0.000005 +4.085826 0.000005 +4.084300 0.000005 +4.082774 0.000005 +4.081248 0.000005 +4.079722 0.000005 +4.078196 0.000005 +4.076670 0.000005 +4.075143 0.000005 +4.073617 0.000005 +4.072091 0.000005 +4.070565 0.000005 +4.069039 0.000005 +4.067513 0.000005 +4.065987 0.000005 +4.064461 0.000005 +4.062935 0.000005 +4.061409 0.000005 +4.059883 0.000005 +4.058357 0.000005 +4.056831 0.000005 +4.055305 0.000005 +4.053779 0.000005 +4.052252 0.000005 +4.050726 0.000005 +4.049200 0.000005 +4.047674 0.000005 +4.046148 0.000005 +4.044622 0.000005 +4.043096 0.000005 +4.041570 0.000005 +4.040044 0.000005 +4.038518 0.000005 +4.036992 0.000005 +4.035466 0.000005 +4.033940 0.000006 +4.032414 0.000006 +4.030888 0.000006 +4.029361 0.000006 +4.027835 0.000006 +4.026309 0.000006 +4.024783 0.000006 +4.023257 0.000006 +4.021731 0.000006 +4.020205 0.000006 +4.018679 0.000006 +4.017153 0.000006 +4.015627 0.000006 +4.014101 0.000006 +4.012575 0.000006 +4.011049 0.000006 +4.009523 0.000006 +4.007997 0.000006 +4.006471 0.000006 +4.004944 0.000006 +4.003418 0.000006 +4.001892 0.000006 +4.000366 0.000006 +3.998840 0.000006 +3.997314 0.000006 +3.995788 0.000006 +3.994262 0.000006 +3.992736 0.000006 +3.991210 0.000006 +3.989684 0.000006 +3.988158 0.000006 +3.986632 0.000006 +3.985106 0.000006 +3.983580 0.000006 +3.982053 0.000006 +3.980527 0.000006 +3.979001 0.000006 +3.977475 0.000006 +3.975949 0.000006 +3.974423 0.000006 +3.972897 0.000007 +3.971371 0.000007 +3.969845 0.000007 +3.968319 0.000007 +3.966793 0.000007 +3.965267 0.000007 +3.963741 0.000007 +3.962215 0.000007 +3.960689 0.000007 +3.959162 0.000007 +3.957636 0.000007 +3.956110 0.000007 +3.954584 0.000007 +3.953058 0.000007 +3.951532 0.000007 +3.950006 0.000007 +3.948480 0.000007 +3.946954 0.000007 +3.945428 0.000007 +3.943902 0.000007 +3.942376 0.000007 +3.940850 0.000007 +3.939324 0.000007 +3.937798 0.000007 +3.936272 0.000007 +3.934745 0.000007 +3.933219 0.000007 +3.931693 0.000007 +3.930167 0.000007 +3.928641 0.000007 +3.927115 0.000007 +3.925589 0.000007 +3.924063 0.000008 +3.922537 0.000008 +3.921011 0.000008 +3.919485 0.000008 +3.917959 0.000008 +3.916433 0.000008 +3.914907 0.000008 +3.913381 0.000008 +3.911854 0.000008 +3.910328 0.000008 +3.908802 0.000008 +3.907276 0.000008 +3.905750 0.000008 +3.904224 0.000008 +3.902698 0.000008 +3.901172 0.000008 +3.899646 0.000008 +3.898120 0.000008 +3.896594 0.000008 +3.895068 0.000008 +3.893542 0.000008 +3.892016 0.000008 +3.890490 0.000008 +3.888963 0.000008 +3.887437 0.000008 +3.885911 0.000009 +3.884385 0.000009 +3.882859 0.000009 +3.881333 0.000009 +3.879807 0.000009 +3.878281 0.000009 +3.876755 0.000009 +3.875229 0.000009 +3.873703 0.000009 +3.872177 0.000009 +3.870651 0.000009 +3.869125 0.000009 +3.867599 0.000009 +3.866073 0.000009 +3.864546 0.000009 +3.863020 0.000009 +3.861494 0.000009 +3.859968 0.000009 +3.858442 0.000009 +3.856916 0.000009 +3.855390 0.000009 +3.853864 0.000009 +3.852338 0.000010 +3.850812 0.000010 +3.849286 0.000010 +3.847760 0.000010 +3.846234 0.000010 +3.844708 0.000010 +3.843182 0.000010 +3.841655 0.000010 +3.840129 0.000010 +3.838603 0.000010 +3.837077 0.000010 +3.835551 0.000010 +3.834025 0.000010 +3.832499 0.000010 +3.830973 0.000010 +3.829447 0.000010 +3.827921 0.000010 +3.826395 0.000010 +3.824869 0.000011 +3.823343 0.000011 +3.821817 0.000011 +3.820291 0.000011 +3.818764 0.000011 +3.817238 0.000011 +3.815712 0.000011 +3.814186 0.000011 +3.812660 0.000011 +3.811134 0.000011 +3.809608 0.000011 +3.808082 0.000011 +3.806556 0.000011 +3.805030 0.000011 +3.803504 0.000011 +3.801978 0.000012 +3.800452 0.000012 +3.798926 0.000012 +3.797400 0.000012 +3.795874 0.000012 +3.794347 0.000012 +3.792821 0.000012 +3.791295 0.000012 +3.789769 0.000012 +3.788243 0.000012 +3.786717 0.000012 +3.785191 0.000012 +3.783665 0.000012 +3.782139 0.000012 +3.780613 0.000013 +3.779087 0.000013 +3.777561 0.000013 +3.776035 0.000013 +3.774509 0.000013 +3.772983 0.000013 +3.771456 0.000013 +3.769930 0.000013 +3.768404 0.000013 +3.766878 0.000013 +3.765352 0.000013 +3.763826 0.000013 +3.762300 0.000014 +3.760774 0.000014 +3.759248 0.000014 +3.757722 0.000014 +3.756196 0.000014 +3.754670 0.000014 +3.753144 0.000014 +3.751618 0.000014 +3.750092 0.000014 +3.748565 0.000014 +3.747039 0.000015 +3.745513 0.000015 +3.743987 0.000015 +3.742461 0.000015 +3.740935 0.000015 +3.739409 0.000015 +3.737883 0.000015 +3.736357 0.000015 +3.734831 0.000015 +3.733305 0.000015 +3.731779 0.000016 +3.730253 0.000016 +3.728727 0.000016 +3.727201 0.000016 +3.725675 0.000016 +3.724148 0.000016 +3.722622 0.000016 +3.721096 0.000016 +3.719570 0.000016 +3.718044 0.000017 +3.716518 0.000017 +3.714992 0.000017 +3.713466 0.000017 +3.711940 0.000017 +3.710414 0.000017 +3.708888 0.000017 +3.707362 0.000017 +3.705836 0.000018 +3.704310 0.000018 +3.702784 0.000018 +3.701257 0.000018 +3.699731 0.000018 +3.698205 0.000018 +3.696679 0.000018 +3.695153 0.000019 +3.693627 0.000019 +3.692101 0.000019 +3.690575 0.000019 +3.689049 0.000019 +3.687523 0.000019 +3.685997 0.000019 +3.684471 0.000020 +3.682945 0.000020 +3.681419 0.000020 +3.679893 0.000020 +3.678366 0.000020 +3.676840 0.000020 +3.675314 0.000021 +3.673788 0.000021 +3.672262 0.000021 +3.670736 0.000021 +3.669210 0.000021 +3.667684 0.000022 +3.666158 0.000022 +3.664632 0.000022 +3.663106 0.000022 +3.661580 0.000022 +3.660054 0.000022 +3.658528 0.000023 +3.657002 0.000023 +3.655476 0.000023 +3.653949 0.000023 +3.652423 0.000023 +3.650897 0.000024 +3.649371 0.000024 +3.647845 0.000024 +3.646319 0.000024 +3.644793 0.000025 +3.643267 0.000025 +3.641741 0.000025 +3.640215 0.000025 +3.638689 0.000025 +3.637163 0.000026 +3.635637 0.000026 +3.634111 0.000026 +3.632585 0.000026 +3.631058 0.000027 +3.629532 0.000027 +3.628006 0.000027 +3.626480 0.000027 +3.624954 0.000028 +3.623428 0.000028 +3.621902 0.000028 +3.620376 0.000029 +3.618850 0.000029 +3.617324 0.000029 +3.615798 0.000029 +3.614272 0.000030 +3.612746 0.000030 +3.611220 0.000030 +3.609694 0.000031 +3.608168 0.000031 +3.606641 0.000031 +3.605115 0.000032 +3.603589 0.000032 +3.602063 0.000032 +3.600537 0.000033 +3.599011 0.000033 +3.597485 0.000033 +3.595959 0.000034 +3.594433 0.000034 +3.592907 0.000034 +3.591381 0.000035 +3.589855 0.000035 +3.588329 0.000036 +3.586803 0.000036 +3.585277 0.000036 +3.583750 0.000037 +3.582224 0.000037 +3.580698 0.000038 +3.579172 0.000038 +3.577646 0.000038 +3.576120 0.000039 +3.574594 0.000039 +3.573068 0.000040 +3.571542 0.000040 +3.570016 0.000041 +3.568490 0.000041 +3.566964 0.000042 +3.565438 0.000042 +3.563912 0.000043 +3.562386 0.000043 +3.560859 0.000044 +3.559333 0.000044 +3.557807 0.000045 +3.556281 0.000045 +3.554755 0.000046 +3.553229 0.000047 +3.551703 0.000047 +3.550177 0.000048 +3.548651 0.000048 +3.547125 0.000049 +3.545599 0.000050 +3.544073 0.000050 +3.542547 0.000051 +3.541021 0.000052 +3.539495 0.000052 +3.537969 0.000053 +3.536442 0.000054 +3.534916 0.000055 +3.533390 0.000055 +3.531864 0.000056 +3.530338 0.000057 +3.528812 0.000058 +3.527286 0.000059 +3.525760 0.000059 +3.524234 0.000060 +3.522708 0.000061 +3.521182 0.000062 +3.519656 0.000063 +3.518130 0.000064 +3.516604 0.000065 +3.515078 0.000066 +3.513551 0.000067 +3.512025 0.000068 +3.510499 0.000069 +3.508973 0.000070 +3.507447 0.000071 +3.505921 0.000072 +3.504395 0.000074 +3.502869 0.000075 +3.501343 0.000076 +3.499817 0.000077 +3.498291 0.000079 +3.496765 0.000080 +3.495239 0.000081 +3.493713 0.000083 +3.492187 0.000084 +3.490660 0.000086 +3.489134 0.000087 +3.487608 0.000089 +3.486082 0.000090 +3.484556 0.000092 +3.483030 0.000094 +3.481504 0.000095 +3.479978 0.000097 +3.478452 0.000099 +3.476926 0.000101 +3.475400 0.000103 +3.473874 0.000105 +3.472348 0.000107 +3.470822 0.000109 +3.469296 0.000111 +3.467770 0.000114 +3.466243 0.000116 +3.464717 0.000118 +3.463191 0.000121 +3.461665 0.000123 +3.460139 0.000126 +3.458613 0.000129 +3.457087 0.000132 +3.455561 0.000135 +3.454035 0.000138 +3.452509 0.000141 +3.450983 0.000144 +3.449457 0.000147 +3.447931 0.000151 +3.446405 0.000154 +3.444879 0.000158 +3.443352 0.000162 +3.441826 0.000166 +3.440300 0.000170 +3.438774 0.000175 +3.437248 0.000179 +3.435722 0.000184 +3.434196 0.000189 +3.432670 0.000194 +3.431144 0.000199 +3.429618 0.000205 +3.428092 0.000210 +3.426566 0.000216 +3.425040 0.000223 +3.423514 0.000229 +3.421988 0.000236 +3.420461 0.000243 +3.418935 0.000251 +3.417409 0.000259 +3.415883 0.000267 +3.414357 0.000276 +3.412831 0.000285 +3.411305 0.000294 +3.409779 0.000304 +3.408253 0.000315 +3.406727 0.000326 +3.405201 0.000338 +3.403675 0.000351 +3.402149 0.000364 +3.400623 0.000378 +3.399097 0.000393 +3.397571 0.000409 +3.396044 0.000426 +3.394518 0.000444 +3.392992 0.000463 +3.391466 0.000484 +3.389940 0.000506 +3.388414 0.000530 +3.386888 0.000555 +3.385362 0.000583 +3.383836 0.000613 +3.382310 0.000645 +3.380784 0.000680 +3.379258 0.000718 +3.377732 0.000759 +3.376206 0.000805 +3.374680 0.000855 +3.373153 0.000910 +3.371627 0.000971 +3.370101 0.001039 +3.368575 0.001115 +3.367049 0.001201 +3.365523 0.001299 +3.363997 0.001410 +3.362471 0.001539 +3.360945 0.001688 +3.359419 0.001864 +3.357893 0.002073 +3.356367 0.002327 +3.354841 0.002640 +3.353315 0.003036 +3.351789 0.003550 +3.350262 0.004243 +3.348736 0.005223 +3.347210 0.006695 +3.345684 0.009102 +3.344158 0.013540 +3.342632 0.023338 +3.341106 0.051878 +3.339580 0.156913 +3.338054 0.148713 +3.336528 0.051480 +3.335002 0.026650 +3.333476 0.019589 +3.331950 0.018402 +3.330424 0.020701 +3.328898 0.027012 +3.327372 0.040916 +3.325845 0.074945 +3.324319 0.183198 +3.322793 0.553659 +3.321267 0.360046 +3.319741 0.122172 +3.318215 0.059424 +3.316689 0.038152 +3.315163 0.030375 +3.313637 0.029335 +3.312111 0.034253 +3.310585 0.048948 +3.309059 0.089323 +3.307533 0.228735 +3.306007 0.620088 +3.304481 0.293530 +3.302954 0.104133 +3.301428 0.051467 +3.299902 0.031771 +3.298376 0.023036 +3.296850 0.019333 +3.295324 0.019147 +3.293798 0.023545 +3.292272 0.039199 +3.290746 0.099163 +3.289220 0.214692 +3.287694 0.082534 +3.286168 0.032193 +3.284642 0.017110 +3.283116 0.010913 +3.281590 0.007761 +3.280063 0.005916 +3.278537 0.004727 +3.277011 0.003906 +3.275485 0.003308 +3.273959 0.002854 +3.272433 0.002500 +3.270907 0.002216 +3.269381 0.001983 +3.267855 0.001789 +3.266329 0.001626 +3.264803 0.001486 +3.263277 0.001365 +3.261751 0.001260 +3.260225 0.001167 +3.258699 0.001085 +3.257173 0.001012 +3.255646 0.000947 +3.254120 0.000888 +3.252594 0.000835 +3.251068 0.000787 +3.249542 0.000743 +3.248016 0.000703 +3.246490 0.000666 +3.244964 0.000633 +3.243438 0.000601 +3.241912 0.000573 +3.240386 0.000546 +3.238860 0.000521 +3.237334 0.000498 +3.235808 0.000477 +3.234282 0.000456 +3.232755 0.000438 +3.231229 0.000420 +3.229703 0.000403 +3.228177 0.000388 +3.226651 0.000373 +3.225125 0.000359 +3.223599 0.000346 +3.222073 0.000334 +3.220547 0.000322 +3.219021 0.000311 +3.217495 0.000301 +3.215969 0.000291 +3.214443 0.000282 +3.212917 0.000273 +3.211391 0.000264 +3.209864 0.000256 +3.208338 0.000248 +3.206812 0.000241 +3.205286 0.000234 +3.203760 0.000227 +3.202234 0.000221 +3.200708 0.000214 +3.199182 0.000208 +3.197656 0.000203 +3.196130 0.000197 +3.194604 0.000192 +3.193078 0.000187 +3.191552 0.000182 +3.190026 0.000178 +3.188500 0.000173 +3.186974 0.000169 +3.185447 0.000165 +3.183921 0.000161 +3.182395 0.000157 +3.180869 0.000153 +3.179343 0.000150 +3.177817 0.000146 +3.176291 0.000143 +3.174765 0.000140 +3.173239 0.000137 +3.171713 0.000134 +3.170187 0.000131 +3.168661 0.000128 +3.167135 0.000125 +3.165609 0.000123 +3.164083 0.000120 +3.162556 0.000118 +3.161030 0.000115 +3.159504 0.000113 +3.157978 0.000111 +3.156452 0.000109 +3.154926 0.000107 +3.153400 0.000104 +3.151874 0.000102 +3.150348 0.000101 +3.148822 0.000099 +3.147296 0.000097 +3.145770 0.000095 +3.144244 0.000093 +3.142718 0.000092 +3.141192 0.000090 +3.139665 0.000088 +3.138139 0.000087 +3.136613 0.000085 +3.135087 0.000084 +3.133561 0.000083 +3.132035 0.000081 +3.130509 0.000080 +3.128983 0.000079 +3.127457 0.000077 +3.125931 0.000076 +3.124405 0.000075 +3.122879 0.000074 +3.121353 0.000072 +3.119827 0.000071 +3.118301 0.000070 +3.116775 0.000069 +3.115248 0.000068 +3.113722 0.000067 +3.112196 0.000066 +3.110670 0.000065 +3.109144 0.000064 +3.107618 0.000063 +3.106092 0.000062 +3.104566 0.000061 +3.103040 0.000060 +3.101514 0.000060 +3.099988 0.000059 +3.098462 0.000058 +3.096936 0.000057 +3.095410 0.000056 +3.093884 0.000056 +3.092357 0.000055 +3.090831 0.000054 +3.089305 0.000053 +3.087779 0.000053 +3.086253 0.000052 +3.084727 0.000051 +3.083201 0.000051 +3.081675 0.000050 +3.080149 0.000049 +3.078623 0.000049 +3.077097 0.000048 +3.075571 0.000047 +3.074045 0.000047 +3.072519 0.000046 +3.070993 0.000046 +3.069466 0.000045 +3.067940 0.000045 +3.066414 0.000044 +3.064888 0.000043 +3.063362 0.000043 +3.061836 0.000042 +3.060310 0.000042 +3.058784 0.000041 +3.057258 0.000041 +3.055732 0.000041 +3.054206 0.000040 +3.052680 0.000040 +3.051154 0.000039 +3.049628 0.000039 +3.048102 0.000038 +3.046576 0.000038 +3.045049 0.000037 +3.043523 0.000037 +3.041997 0.000037 +3.040471 0.000036 +3.038945 0.000036 +3.037419 0.000035 +3.035893 0.000035 +3.034367 0.000035 +3.032841 0.000034 +3.031315 0.000034 +3.029789 0.000034 +3.028263 0.000033 +3.026737 0.000033 +3.025211 0.000033 +3.023685 0.000032 +3.022158 0.000032 +3.020632 0.000032 +3.019106 0.000031 +3.017580 0.000031 +3.016054 0.000031 +3.014528 0.000030 +3.013002 0.000030 +3.011476 0.000030 +3.009950 0.000030 +3.008424 0.000029 +3.006898 0.000029 +3.005372 0.000029 +3.003846 0.000028 +3.002320 0.000028 +3.000794 0.000028 +2.999267 0.000028 +2.997741 0.000027 +2.996215 0.000027 +2.994689 0.000027 +2.993163 0.000027 +2.991637 0.000026 +2.990111 0.000026 +2.988585 0.000026 +2.987059 0.000026 +2.985533 0.000025 +2.984007 0.000025 +2.982481 0.000025 +2.980955 0.000025 +2.979429 0.000025 +2.977903 0.000024 +2.976377 0.000024 +2.974850 0.000024 +2.973324 0.000024 +2.971798 0.000024 +2.970272 0.000023 +2.968746 0.000023 +2.967220 0.000023 +2.965694 0.000023 +2.964168 0.000023 +2.962642 0.000022 +2.961116 0.000022 +2.959590 0.000022 +2.958064 0.000022 +2.956538 0.000022 +2.955012 0.000022 +2.953486 0.000021 +2.951959 0.000021 +2.950433 0.000021 +2.948907 0.000021 +2.947381 0.000021 +2.945855 0.000021 +2.944329 0.000020 +2.942803 0.000020 +2.941277 0.000020 +2.939751 0.000020 +2.938225 0.000020 +2.936699 0.000020 +2.935173 0.000019 +2.933647 0.000019 +2.932121 0.000019 +2.930595 0.000019 +2.929068 0.000019 +2.927542 0.000019 +2.926016 0.000019 +2.924490 0.000019 +2.922964 0.000018 +2.921438 0.000018 +2.919912 0.000018 +2.918386 0.000018 +2.916860 0.000018 +2.915334 0.000018 +2.913808 0.000018 +2.912282 0.000018 +2.910756 0.000017 +2.909230 0.000017 +2.907704 0.000017 +2.906178 0.000017 +2.904651 0.000017 +2.903125 0.000017 +2.901599 0.000017 +2.900073 0.000017 +2.898547 0.000016 +2.897021 0.000016 +2.895495 0.000016 +2.893969 0.000016 +2.892443 0.000016 +2.890917 0.000016 +2.889391 0.000016 +2.887865 0.000016 +2.886339 0.000016 +2.884813 0.000016 +2.883287 0.000015 +2.881760 0.000015 +2.880234 0.000015 +2.878708 0.000015 +2.877182 0.000015 +2.875656 0.000015 +2.874130 0.000015 +2.872604 0.000015 +2.871078 0.000015 +2.869552 0.000015 +2.868026 0.000015 +2.866500 0.000014 +2.864974 0.000014 +2.863448 0.000014 +2.861922 0.000014 +2.860396 0.000014 +2.858869 0.000014 +2.857343 0.000014 +2.855817 0.000014 +2.854291 0.000014 +2.852765 0.000014 +2.851239 0.000014 +2.849713 0.000014 +2.848187 0.000013 +2.846661 0.000013 +2.845135 0.000013 +2.843609 0.000013 +2.842083 0.000013 +2.840557 0.000013 +2.839031 0.000013 +2.837505 0.000013 +2.835979 0.000013 +2.834452 0.000013 +2.832926 0.000013 +2.831400 0.000013 +2.829874 0.000013 +2.828348 0.000013 +2.826822 0.000012 +2.825296 0.000012 +2.823770 0.000012 +2.822244 0.000012 +2.820718 0.000012 +2.819192 0.000012 +2.817666 0.000012 +2.816140 0.000012 +2.814614 0.000012 +2.813088 0.000012 +2.811561 0.000012 +2.810035 0.000012 +2.808509 0.000012 +2.806983 0.000012 +2.805457 0.000012 +2.803931 0.000012 +2.802405 0.000011 +2.800879 0.000011 +2.799353 0.000011 +2.797827 0.000011 +2.796301 0.000011 +2.794775 0.000011 +2.793249 0.000011 +2.791723 0.000011 +2.790197 0.000011 +2.788670 0.000011 +2.787144 0.000011 +2.785618 0.000011 +2.784092 0.000011 +2.782566 0.000011 +2.781040 0.000011 +2.779514 0.000011 +2.777988 0.000011 +2.776462 0.000011 +2.774936 0.000011 +2.773410 0.000010 +2.771884 0.000010 +2.770358 0.000010 +2.768832 0.000010 +2.767306 0.000010 +2.765780 0.000010 +2.764253 0.000010 +2.762727 0.000010 +2.761201 0.000010 +2.759675 0.000010 +2.758149 0.000010 +2.756623 0.000010 +2.755097 0.000010 +2.753571 0.000010 +2.752045 0.000010 +2.750519 0.000010 +2.748993 0.000010 +2.747467 0.000010 +2.745941 0.000010 +2.744415 0.000010 +2.742889 0.000010 +2.741362 0.000010 +2.739836 0.000010 +2.738310 0.000009 +2.736784 0.000009 +2.735258 0.000009 +2.733732 0.000009 +2.732206 0.000009 +2.730680 0.000009 +2.729154 0.000009 +2.727628 0.000009 +2.726102 0.000009 +2.724576 0.000009 +2.723050 0.000009 +2.721524 0.000009 +2.719998 0.000009 +2.718471 0.000009 +2.716945 0.000009 +2.715419 0.000009 +2.713893 0.000009 +2.712367 0.000009 +2.710841 0.000009 +2.709315 0.000009 +2.707789 0.000009 +2.706263 0.000009 +2.704737 0.000009 +2.703211 0.000009 +2.701685 0.000009 +2.700159 0.000009 +2.698633 0.000009 +2.697107 0.000009 +2.695581 0.000009 +2.694054 0.000009 +2.692528 0.000008 +2.691002 0.000008 +2.689476 0.000008 +2.687950 0.000008 +2.686424 0.000008 +2.684898 0.000008 +2.683372 0.000008 +2.681846 0.000008 +2.680320 0.000008 +2.678794 0.000008 +2.677268 0.000008 +2.675742 0.000008 +2.674216 0.000008 +2.672690 0.000008 +2.671163 0.000008 +2.669637 0.000008 +2.668111 0.000008 +2.666585 0.000008 +2.665059 0.000008 +2.663533 0.000008 +2.662007 0.000008 +2.660481 0.000008 +2.658955 0.000008 +2.657429 0.000008 +2.655903 0.000008 +2.654377 0.000008 +2.652851 0.000008 +2.651325 0.000008 +2.649799 0.000008 +2.648272 0.000008 +2.646746 0.000008 +2.645220 0.000008 +2.643694 0.000008 +2.642168 0.000008 +2.640642 0.000008 +2.639116 0.000008 +2.637590 0.000008 +2.636064 0.000008 +2.634538 0.000008 +2.633012 0.000007 +2.631486 0.000007 +2.629960 0.000007 +2.628434 0.000007 +2.626908 0.000007 +2.625382 0.000007 +2.623855 0.000007 +2.622329 0.000007 +2.620803 0.000007 +2.619277 0.000007 +2.617751 0.000007 +2.616225 0.000007 +2.614699 0.000007 +2.613173 0.000007 +2.611647 0.000007 +2.610121 0.000007 +2.608595 0.000007 +2.607069 0.000007 +2.605543 0.000007 +2.604017 0.000007 +2.602491 0.000007 +2.600964 0.000007 +2.599438 0.000007 +2.597912 0.000007 +2.596386 0.000007 +2.594860 0.000007 +2.593334 0.000007 +2.591808 0.000007 +2.590282 0.000007 +2.588756 0.000007 +2.587230 0.000007 +2.585704 0.000007 +2.584178 0.000007 +2.582652 0.000007 +2.581126 0.000007 +2.579600 0.000007 +2.578073 0.000007 +2.576547 0.000007 +2.575021 0.000007 +2.573495 0.000007 +2.571969 0.000007 +2.570443 0.000007 +2.568917 0.000007 +2.567391 0.000007 +2.565865 0.000007 +2.564339 0.000007 +2.562813 0.000007 +2.561287 0.000007 +2.559761 0.000007 +2.558235 0.000007 +2.556709 0.000007 +2.555183 0.000007 +2.553656 0.000007 +2.552130 0.000007 +2.550604 0.000007 +2.549078 0.000007 +2.547552 0.000007 +2.546026 0.000007 +2.544500 0.000007 +2.542974 0.000007 +2.541448 0.000006 +2.539922 0.000006 +2.538396 0.000006 +2.536870 0.000006 +2.535344 0.000006 +2.533818 0.000006 +2.532292 0.000006 +2.530765 0.000006 +2.529239 0.000006 +2.527713 0.000006 +2.526187 0.000006 +2.524661 0.000006 +2.523135 0.000006 +2.521609 0.000006 +2.520083 0.000006 +2.518557 0.000006 +2.517031 0.000006 +2.515505 0.000006 +2.513979 0.000006 +2.512453 0.000006 +2.510927 0.000006 +2.509401 0.000006 +2.507874 0.000006 +2.506348 0.000006 +2.504822 0.000006 +2.503296 0.000006 +2.501770 0.000006 +2.500244 0.000006 +2.498718 0.000006 +2.497192 0.000006 +2.495666 0.000006 +2.494140 0.000006 +2.492614 0.000006 +2.491088 0.000006 +2.489562 0.000006 +2.488036 0.000006 +2.486510 0.000006 +2.484984 0.000006 +2.483457 0.000006 +2.481931 0.000006 +2.480405 0.000006 +2.478879 0.000006 +2.477353 0.000006 +2.475827 0.000006 +2.474301 0.000006 +2.472775 0.000006 +2.471249 0.000006 +2.469723 0.000006 +2.468197 0.000006 +2.466671 0.000006 +2.465145 0.000006 +2.463619 0.000006 +2.462093 0.000006 +2.460566 0.000006 +2.459040 0.000006 +2.457514 0.000006 +2.455988 0.000006 +2.454462 0.000006 +2.452936 0.000006 +2.451410 0.000006 +2.449884 0.000006 +2.448358 0.000006 +2.446832 0.000006 +2.445306 0.000006 +2.443780 0.000006 +2.442254 0.000006 +2.440728 0.000006 +2.439202 0.000006 +2.437675 0.000006 +2.436149 0.000006 +2.434623 0.000006 +2.433097 0.000006 +2.431571 0.000006 +2.430045 0.000006 +2.428519 0.000006 +2.426993 0.000006 +2.425467 0.000006 +2.423941 0.000006 +2.422415 0.000006 +2.420889 0.000006 +2.419363 0.000006 +2.417837 0.000006 +2.416311 0.000006 +2.414785 0.000006 +2.413258 0.000006 +2.411732 0.000006 +2.410206 0.000006 +2.408680 0.000006 +2.407154 0.000006 +2.405628 0.000006 +2.404102 0.000006 +2.402576 0.000006 +2.401050 0.000006 +2.399524 0.000006 +2.397998 0.000006 +2.396472 0.000006 +2.394946 0.000006 +2.393420 0.000006 +2.391894 0.000006 +2.390367 0.000006 +2.388841 0.000006 +2.387315 0.000006 +2.385789 0.000006 +2.384263 0.000006 +2.382737 0.000006 +2.381211 0.000006 +2.379685 0.000006 +2.378159 0.000006 +2.376633 0.000006 +2.375107 0.000006 +2.373581 0.000006 +2.372055 0.000006 +2.370529 0.000006 +2.369003 0.000006 +2.367476 0.000006 +2.365950 0.000006 +2.364424 0.000006 +2.362898 0.000006 +2.361372 0.000006 +2.359846 0.000006 +2.358320 0.000006 +2.356794 0.000006 +2.355268 0.000006 +2.353742 0.000006 +2.352216 0.000006 +2.350690 0.000006 +2.349164 0.000006 +2.347638 0.000006 +2.346112 0.000006 +2.344586 0.000006 +2.343059 0.000006 +2.341533 0.000006 +2.340007 0.000006 +2.338481 0.000006 +2.336955 0.000006 +2.335429 0.000006 +2.333903 0.000006 +2.332377 0.000006 +2.330851 0.000006 +2.329325 0.000006 +2.327799 0.000006 +2.326273 0.000006 +2.324747 0.000006 +2.323221 0.000006 +2.321695 0.000006 +2.320168 0.000006 +2.318642 0.000006 +2.317116 0.000006 +2.315590 0.000006 +2.314064 0.000006 +2.312538 0.000006 +2.311012 0.000006 +2.309486 0.000006 +2.307960 0.000006 +2.306434 0.000006 +2.304908 0.000006 +2.303382 0.000006 +2.301856 0.000006 +2.300330 0.000006 +2.298804 0.000006 +2.297277 0.000006 +2.295751 0.000006 +2.294225 0.000006 +2.292699 0.000006 +2.291173 0.000006 +2.289647 0.000006 +2.288121 0.000006 +2.286595 0.000006 +2.285069 0.000006 +2.283543 0.000006 +2.282017 0.000006 +2.280491 0.000006 +2.278965 0.000006 +2.277439 0.000006 +2.275913 0.000006 +2.274387 0.000006 +2.272860 0.000006 +2.271334 0.000006 +2.269808 0.000006 +2.268282 0.000006 +2.266756 0.000006 +2.265230 0.000006 +2.263704 0.000006 +2.262178 0.000006 +2.260652 0.000006 +2.259126 0.000006 +2.257600 0.000006 +2.256074 0.000006 +2.254548 0.000006 +2.253022 0.000006 +2.251496 0.000006 +2.249969 0.000006 +2.248443 0.000006 +2.246917 0.000006 +2.245391 0.000006 +2.243865 0.000006 +2.242339 0.000006 +2.240813 0.000006 +2.239287 0.000006 +2.237761 0.000006 +2.236235 0.000006 +2.234709 0.000006 +2.233183 0.000006 +2.231657 0.000006 +2.230131 0.000006 +2.228605 0.000006 +2.227079 0.000006 +2.225552 0.000006 +2.224026 0.000006 +2.222500 0.000006 +2.220974 0.000006 +2.219448 0.000006 +2.217922 0.000006 +2.216396 0.000006 +2.214870 0.000006 +2.213344 0.000006 +2.211818 0.000006 +2.210292 0.000006 +2.208766 0.000006 +2.207240 0.000006 +2.205714 0.000006 +2.204188 0.000006 +2.202661 0.000006 +2.201135 0.000006 +2.199609 0.000006 +2.198083 0.000006 +2.196557 0.000006 +2.195031 0.000006 +2.193505 0.000006 +2.191979 0.000006 +2.190453 0.000006 +2.188927 0.000006 +2.187401 0.000006 +2.185875 0.000006 +2.184349 0.000006 +2.182823 0.000006 +2.181297 0.000006 +2.179770 0.000006 +2.178244 0.000006 +2.176718 0.000006 +2.175192 0.000006 +2.173666 0.000006 +2.172140 0.000006 +2.170614 0.000006 +2.169088 0.000006 +2.167562 0.000006 +2.166036 0.000006 +2.164510 0.000006 +2.162984 0.000006 +2.161458 0.000006 +2.159932 0.000006 +2.158406 0.000006 +2.156880 0.000006 +2.155353 0.000006 +2.153827 0.000006 +2.152301 0.000006 +2.150775 0.000006 +2.149249 0.000006 +2.147723 0.000006 +2.146197 0.000006 +2.144671 0.000006 +2.143145 0.000006 +2.141619 0.000006 +2.140093 0.000006 +2.138567 0.000006 +2.137041 0.000006 +2.135515 0.000006 +2.133989 0.000006 +2.132462 0.000006 +2.130936 0.000006 +2.129410 0.000006 +2.127884 0.000006 +2.126358 0.000006 +2.124832 0.000006 +2.123306 0.000006 +2.121780 0.000006 +2.120254 0.000006 +2.118728 0.000006 +2.117202 0.000006 +2.115676 0.000006 +2.114150 0.000006 +2.112624 0.000006 +2.111098 0.000006 +2.109571 0.000006 +2.108045 0.000006 +2.106519 0.000006 +2.104993 0.000006 +2.103467 0.000006 +2.101941 0.000006 +2.100415 0.000006 +2.098889 0.000006 +2.097363 0.000006 +2.095837 0.000006 +2.094311 0.000006 +2.092785 0.000007 +2.091259 0.000007 +2.089733 0.000007 +2.088207 0.000007 +2.086681 0.000007 +2.085154 0.000007 +2.083628 0.000007 +2.082102 0.000007 +2.080576 0.000007 +2.079050 0.000007 +2.077524 0.000007 +2.075998 0.000007 +2.074472 0.000007 +2.072946 0.000007 +2.071420 0.000007 +2.069894 0.000007 +2.068368 0.000007 +2.066842 0.000007 +2.065316 0.000007 +2.063790 0.000007 +2.062263 0.000007 +2.060737 0.000007 +2.059211 0.000007 +2.057685 0.000007 +2.056159 0.000007 +2.054633 0.000007 +2.053107 0.000007 +2.051581 0.000007 +2.050055 0.000007 +2.048529 0.000007 +2.047003 0.000007 +2.045477 0.000007 +2.043951 0.000007 +2.042425 0.000007 +2.040899 0.000007 +2.039372 0.000007 +2.037846 0.000007 +2.036320 0.000007 +2.034794 0.000007 +2.033268 0.000007 +2.031742 0.000007 +2.030216 0.000007 +2.028690 0.000007 +2.027164 0.000007 +2.025638 0.000007 +2.024112 0.000007 +2.022586 0.000007 +2.021060 0.000007 +2.019534 0.000007 +2.018008 0.000007 +2.016482 0.000007 +2.014955 0.000007 +2.013429 0.000007 +2.011903 0.000007 +2.010377 0.000007 +2.008851 0.000007 +2.007325 0.000007 +2.005799 0.000007 +2.004273 0.000007 +2.002747 0.000007 +2.001221 0.000007 +1.999695 0.000007 +1.998169 0.000007 +1.996643 0.000007 +1.995117 0.000007 +1.993591 0.000007 +1.992064 0.000008 +1.990538 0.000008 +1.989012 0.000008 +1.987486 0.000008 +1.985960 0.000008 +1.984434 0.000008 +1.982908 0.000008 +1.981382 0.000008 +1.979856 0.000008 +1.978330 0.000008 +1.976804 0.000008 +1.975278 0.000008 +1.973752 0.000008 +1.972226 0.000008 +1.970700 0.000008 +1.969173 0.000008 +1.967647 0.000008 +1.966121 0.000008 +1.964595 0.000008 +1.963069 0.000008 +1.961543 0.000008 +1.960017 0.000008 +1.958491 0.000008 +1.956965 0.000008 +1.955439 0.000008 +1.953913 0.000008 +1.952387 0.000008 +1.950861 0.000008 +1.949335 0.000008 +1.947809 0.000008 +1.946283 0.000008 +1.944756 0.000008 +1.943230 0.000008 +1.941704 0.000008 +1.940178 0.000008 +1.938652 0.000008 +1.937126 0.000008 +1.935600 0.000008 +1.934074 0.000008 +1.932548 0.000008 +1.931022 0.000008 +1.929496 0.000008 +1.927970 0.000008 +1.926444 0.000008 +1.924918 0.000009 +1.923392 0.000009 +1.921865 0.000009 +1.920339 0.000009 +1.918813 0.000009 +1.917287 0.000009 +1.915761 0.000009 +1.914235 0.000009 +1.912709 0.000009 +1.911183 0.000009 +1.909657 0.000009 +1.908131 0.000009 +1.906605 0.000009 +1.905079 0.000009 +1.903553 0.000009 +1.902027 0.000009 +1.900501 0.000009 +1.898974 0.000009 +1.897448 0.000009 +1.895922 0.000009 +1.894396 0.000009 +1.892870 0.000009 +1.891344 0.000009 +1.889818 0.000009 +1.888292 0.000009 +1.886766 0.000009 +1.885240 0.000009 +1.883714 0.000009 +1.882188 0.000009 +1.880662 0.000009 +1.879136 0.000009 +1.877610 0.000009 +1.876084 0.000009 +1.874557 0.000010 +1.873031 0.000010 +1.871505 0.000010 +1.869979 0.000010 +1.868453 0.000010 +1.866927 0.000010 +1.865401 0.000010 +1.863875 0.000010 +1.862349 0.000010 +1.860823 0.000010 +1.859297 0.000010 +1.857771 0.000010 +1.856245 0.000010 +1.854719 0.000010 +1.853193 0.000010 +1.851666 0.000010 +1.850140 0.000010 +1.848614 0.000010 +1.847088 0.000010 +1.845562 0.000010 +1.844036 0.000010 +1.842510 0.000010 +1.840984 0.000010 +1.839458 0.000010 +1.837932 0.000010 +1.836406 0.000010 +1.834880 0.000010 +1.833354 0.000011 +1.831828 0.000011 +1.830302 0.000011 +1.828775 0.000011 +1.827249 0.000011 +1.825723 0.000011 +1.824197 0.000011 +1.822671 0.000011 +1.821145 0.000011 +1.819619 0.000011 +1.818093 0.000011 +1.816567 0.000011 +1.815041 0.000011 +1.813515 0.000011 +1.811989 0.000011 +1.810463 0.000011 +1.808937 0.000011 +1.807411 0.000011 +1.805885 0.000011 +1.804358 0.000011 +1.802832 0.000011 +1.801306 0.000011 +1.799780 0.000012 +1.798254 0.000012 +1.796728 0.000012 +1.795202 0.000012 +1.793676 0.000012 +1.792150 0.000012 +1.790624 0.000012 +1.789098 0.000012 +1.787572 0.000012 +1.786046 0.000012 +1.784520 0.000012 +1.782994 0.000012 +1.781467 0.000012 +1.779941 0.000012 +1.778415 0.000012 +1.776889 0.000012 +1.775363 0.000012 +1.773837 0.000012 +1.772311 0.000013 +1.770785 0.000013 +1.769259 0.000013 +1.767733 0.000013 +1.766207 0.000013 +1.764681 0.000013 +1.763155 0.000013 +1.761629 0.000013 +1.760103 0.000013 +1.758576 0.000013 +1.757050 0.000013 +1.755524 0.000013 +1.753998 0.000013 +1.752472 0.000013 +1.750946 0.000013 +1.749420 0.000013 +1.747894 0.000013 +1.746368 0.000014 +1.744842 0.000014 +1.743316 0.000014 +1.741790 0.000014 +1.740264 0.000014 +1.738738 0.000014 +1.737212 0.000014 +1.735686 0.000014 +1.734159 0.000014 +1.732633 0.000014 +1.731107 0.000014 +1.729581 0.000014 +1.728055 0.000014 +1.726529 0.000014 +1.725003 0.000015 +1.723477 0.000015 +1.721951 0.000015 +1.720425 0.000015 +1.718899 0.000015 +1.717373 0.000015 +1.715847 0.000015 +1.714321 0.000015 +1.712795 0.000015 +1.711268 0.000015 +1.709742 0.000015 +1.708216 0.000015 +1.706690 0.000015 +1.705164 0.000016 +1.703638 0.000016 +1.702112 0.000016 +1.700586 0.000016 +1.699060 0.000016 +1.697534 0.000016 +1.696008 0.000016 +1.694482 0.000016 +1.692956 0.000016 +1.691430 0.000016 +1.689904 0.000016 +1.688377 0.000017 +1.686851 0.000017 +1.685325 0.000017 +1.683799 0.000017 +1.682273 0.000017 +1.680747 0.000017 +1.679221 0.000017 +1.677695 0.000017 +1.676169 0.000017 +1.674643 0.000017 +1.673117 0.000018 +1.671591 0.000018 +1.670065 0.000018 +1.668539 0.000018 +1.667013 0.000018 +1.665487 0.000018 +1.663960 0.000018 +1.662434 0.000018 +1.660908 0.000018 +1.659382 0.000018 +1.657856 0.000019 +1.656330 0.000019 +1.654804 0.000019 +1.653278 0.000019 +1.651752 0.000019 +1.650226 0.000019 +1.648700 0.000019 +1.647174 0.000019 +1.645648 0.000020 +1.644122 0.000020 +1.642596 0.000020 +1.641069 0.000020 +1.639543 0.000020 +1.638017 0.000020 +1.636491 0.000020 +1.634965 0.000020 +1.633439 0.000021 +1.631913 0.000021 +1.630387 0.000021 +1.628861 0.000021 +1.627335 0.000021 +1.625809 0.000021 +1.624283 0.000021 +1.622757 0.000022 +1.621231 0.000022 +1.619705 0.000022 +1.618178 0.000022 +1.616652 0.000022 +1.615126 0.000022 +1.613600 0.000022 +1.612074 0.000023 +1.610548 0.000023 +1.609022 0.000023 +1.607496 0.000023 +1.605970 0.000023 +1.604444 0.000023 +1.602918 0.000024 +1.601392 0.000024 +1.599866 0.000024 +1.598340 0.000024 +1.596814 0.000024 +1.595288 0.000024 +1.593761 0.000025 +1.592235 0.000025 +1.590709 0.000025 +1.589183 0.000025 +1.587657 0.000025 +1.586131 0.000025 +1.584605 0.000026 +1.583079 0.000026 +1.581553 0.000026 +1.580027 0.000026 +1.578501 0.000026 +1.576975 0.000027 +1.575449 0.000027 +1.573923 0.000027 +1.572397 0.000027 +1.570870 0.000027 +1.569344 0.000028 +1.567818 0.000028 +1.566292 0.000028 +1.564766 0.000028 +1.563240 0.000029 +1.561714 0.000029 +1.560188 0.000029 +1.558662 0.000029 +1.557136 0.000029 +1.555610 0.000030 +1.554084 0.000030 +1.552558 0.000030 +1.551032 0.000030 +1.549506 0.000031 +1.547979 0.000031 +1.546453 0.000031 +1.544927 0.000031 +1.543401 0.000032 +1.541875 0.000032 +1.540349 0.000032 +1.538823 0.000032 +1.537297 0.000033 +1.535771 0.000033 +1.534245 0.000033 +1.532719 0.000034 +1.531193 0.000034 +1.529667 0.000034 +1.528141 0.000034 +1.526615 0.000035 +1.525089 0.000035 +1.523562 0.000035 +1.522036 0.000036 +1.520510 0.000036 +1.518984 0.000036 +1.517458 0.000037 +1.515932 0.000037 +1.514406 0.000037 +1.512880 0.000038 +1.511354 0.000038 +1.509828 0.000038 +1.508302 0.000039 +1.506776 0.000039 +1.505250 0.000039 +1.503724 0.000040 +1.502198 0.000040 +1.500671 0.000041 +1.499145 0.000041 +1.497619 0.000041 +1.496093 0.000042 +1.494567 0.000042 +1.493041 0.000043 +1.491515 0.000043 +1.489989 0.000043 +1.488463 0.000044 +1.486937 0.000044 +1.485411 0.000045 +1.483885 0.000045 +1.482359 0.000046 +1.480833 0.000046 +1.479307 0.000047 +1.477780 0.000047 +1.476254 0.000048 +1.474728 0.000048 +1.473202 0.000049 +1.471676 0.000049 +1.470150 0.000050 +1.468624 0.000050 +1.467098 0.000051 +1.465572 0.000051 +1.464046 0.000052 +1.462520 0.000052 +1.460994 0.000053 +1.459468 0.000054 +1.457942 0.000054 +1.456416 0.000055 +1.454890 0.000055 +1.453363 0.000056 +1.451837 0.000057 +1.450311 0.000057 +1.448785 0.000058 +1.447259 0.000059 +1.445733 0.000059 +1.444207 0.000060 +1.442681 0.000061 +1.441155 0.000062 +1.439629 0.000062 +1.438103 0.000063 +1.436577 0.000064 +1.435051 0.000065 +1.433525 0.000065 +1.431999 0.000066 +1.430472 0.000067 +1.428946 0.000068 +1.427420 0.000069 +1.425894 0.000070 +1.424368 0.000071 +1.422842 0.000071 +1.421316 0.000072 +1.419790 0.000073 +1.418264 0.000074 +1.416738 0.000075 +1.415212 0.000076 +1.413686 0.000077 +1.412160 0.000078 +1.410634 0.000079 +1.409108 0.000081 +1.407581 0.000082 +1.406055 0.000083 +1.404529 0.000084 +1.403003 0.000085 +1.401477 0.000086 +1.399951 0.000088 +1.398425 0.000089 +1.396899 0.000090 +1.395373 0.000091 +1.393847 0.000093 +1.392321 0.000094 +1.390795 0.000096 +1.389269 0.000097 +1.387743 0.000099 +1.386217 0.000100 +1.384691 0.000102 +1.383164 0.000103 +1.381638 0.000105 +1.380112 0.000107 +1.378586 0.000108 +1.377060 0.000110 +1.375534 0.000112 +1.374008 0.000114 +1.372482 0.000116 +1.370956 0.000117 +1.369430 0.000119 +1.367904 0.000122 +1.366378 0.000124 +1.364852 0.000126 +1.363326 0.000128 +1.361800 0.000130 +1.360273 0.000133 +1.358747 0.000135 +1.357221 0.000137 +1.355695 0.000140 +1.354169 0.000142 +1.352643 0.000145 +1.351117 0.000148 +1.349591 0.000151 +1.348065 0.000154 +1.346539 0.000157 +1.345013 0.000160 +1.343487 0.000163 +1.341961 0.000166 +1.340435 0.000169 +1.338909 0.000173 +1.337382 0.000177 +1.335856 0.000180 +1.334330 0.000184 +1.332804 0.000188 +1.331278 0.000192 +1.329752 0.000196 +1.328226 0.000201 +1.326700 0.000205 +1.325174 0.000210 +1.323648 0.000215 +1.322122 0.000219 +1.320596 0.000225 +1.319070 0.000230 +1.317544 0.000235 +1.316018 0.000241 +1.314492 0.000247 +1.312965 0.000253 +1.311439 0.000260 +1.309913 0.000266 +1.308387 0.000273 +1.306861 0.000281 +1.305335 0.000288 +1.303809 0.000296 +1.302283 0.000304 +1.300757 0.000312 +1.299231 0.000321 +1.297705 0.000330 +1.296179 0.000340 +1.294653 0.000350 +1.293127 0.000361 +1.291601 0.000372 +1.290074 0.000383 +1.288548 0.000395 +1.287022 0.000408 +1.285496 0.000421 +1.283970 0.000435 +1.282444 0.000450 +1.280918 0.000465 +1.279392 0.000481 +1.277866 0.000499 +1.276340 0.000517 +1.274814 0.000536 +1.273288 0.000556 +1.271762 0.000577 +1.270236 0.000600 +1.268710 0.000624 +1.267183 0.000650 +1.265657 0.000677 +1.264131 0.000706 +1.262605 0.000737 +1.261079 0.000770 +1.259553 0.000806 +1.258027 0.000844 +1.256501 0.000885 +1.254975 0.000929 +1.253449 0.000977 +1.251923 0.001028 +1.250397 0.001084 +1.248871 0.001145 +1.247345 0.001211 +1.245819 0.001283 +1.244293 0.001363 +1.242766 0.001450 +1.241240 0.001546 +1.239714 0.001653 +1.238188 0.001772 +1.236662 0.001905 +1.235136 0.002054 +1.233610 0.002223 +1.232084 0.002415 +1.230558 0.002636 +1.229032 0.002890 +1.227506 0.003187 +1.225980 0.003536 +1.224454 0.003951 +1.222928 0.004453 +1.221402 0.005069 +1.219875 0.005838 +1.218349 0.006822 +1.216823 0.008116 +1.215297 0.009875 +1.213771 0.012375 +1.212245 0.016134 +1.210719 0.022229 +1.209193 0.033221 +1.207667 0.056385 +1.206141 0.118478 +1.204615 0.345944 +1.203089 0.592837 +1.201563 0.204633 +1.200037 0.087650 +1.198511 0.053883 +1.196984 0.043283 +1.195458 0.042997 +1.193932 0.051135 +1.192406 0.071998 +1.190880 0.122539 +1.189354 0.271224 +1.187828 0.834948 +1.186302 1.000000 +1.184776 0.321147 +1.183250 0.137086 +1.181724 0.077471 +1.180198 0.053283 +1.178672 0.043361 +1.177146 0.042037 +1.175620 0.050028 +1.174094 0.076962 +1.172567 0.167143 +1.171041 0.503174 +1.169515 0.409176 +1.167989 0.134522 +1.166463 0.061047 +1.164937 0.035013 +1.163411 0.023058 +1.161885 0.016569 +1.160359 0.012625 +1.158833 0.010029 +1.157307 0.008215 +1.155781 0.006889 +1.154255 0.005885 +1.152729 0.005102 +1.151203 0.004478 +1.149676 0.003970 +1.148150 0.003550 +1.146624 0.003198 +1.145098 0.002899 +1.143572 0.002643 +1.142046 0.002421 +1.140520 0.002228 +1.138994 0.002058 +1.137468 0.001908 +1.135942 0.001774 +1.134416 0.001655 +1.132890 0.001548 +1.131364 0.001451 +1.129838 0.001364 +1.128312 0.001285 +1.126785 0.001212 +1.125259 0.001146 +1.123733 0.001085 +1.122207 0.001029 +1.120681 0.000977 +1.119155 0.000930 +1.117629 0.000885 +1.116103 0.000844 +1.114577 0.000806 +1.113051 0.000771 +1.111525 0.000738 +1.109999 0.000706 +1.108473 0.000677 +1.106947 0.000650 +1.105421 0.000624 +1.103895 0.000600 +1.102368 0.000578 +1.100842 0.000556 +1.099316 0.000536 +1.097790 0.000517 +1.096264 0.000499 +1.094738 0.000481 +1.093212 0.000465 +1.091686 0.000450 +1.090160 0.000435 +1.088634 0.000421 +1.087108 0.000408 +1.085582 0.000395 +1.084056 0.000383 +1.082530 0.000372 +1.081004 0.000361 +1.079477 0.000350 +1.077951 0.000340 +1.076425 0.000330 +1.074899 0.000321 +1.073373 0.000312 +1.071847 0.000304 +1.070321 0.000296 +1.068795 0.000288 +1.067269 0.000280 +1.065743 0.000273 +1.064217 0.000266 +1.062691 0.000260 +1.061165 0.000253 +1.059639 0.000247 +1.058113 0.000241 +1.056586 0.000235 +1.055060 0.000230 +1.053534 0.000225 +1.052008 0.000219 +1.050482 0.000214 +1.048956 0.000210 +1.047430 0.000205 +1.045904 0.000200 +1.044378 0.000196 +1.042852 0.000192 +1.041326 0.000188 +1.039800 0.000184 +1.038274 0.000180 +1.036748 0.000176 +1.035222 0.000173 +1.033696 0.000169 +1.032169 0.000166 +1.030643 0.000163 +1.029117 0.000160 +1.027591 0.000156 +1.026065 0.000153 +1.024539 0.000151 +1.023013 0.000148 +1.021487 0.000145 +1.019961 0.000142 +1.018435 0.000140 +1.016909 0.000137 +1.015383 0.000135 +1.013857 0.000132 +1.012331 0.000130 +1.010805 0.000128 +1.009278 0.000126 +1.007752 0.000123 +1.006226 0.000121 +1.004700 0.000119 +1.003174 0.000117 +1.001648 0.000115 +1.000122 0.000113 +0.998596 0.000112 +0.997070 0.000110 +0.995544 0.000108 +0.994018 0.000106 +0.992492 0.000105 +0.990966 0.000103 +0.989440 0.000101 +0.987914 0.000100 +0.986387 0.000098 +0.984861 0.000097 +0.983335 0.000095 +0.981809 0.000094 +0.980283 0.000093 +0.978757 0.000091 +0.977231 0.000090 +0.975705 0.000089 +0.974179 0.000087 +0.972653 0.000086 +0.971127 0.000085 +0.969601 0.000084 +0.968075 0.000083 +0.966549 0.000081 +0.965023 0.000080 +0.963497 0.000079 +0.961970 0.000078 +0.960444 0.000077 +0.958918 0.000076 +0.957392 0.000075 +0.955866 0.000074 +0.954340 0.000073 +0.952814 0.000072 +0.951288 0.000071 +0.949762 0.000070 +0.948236 0.000069 +0.946710 0.000068 +0.945184 0.000068 +0.943658 0.000067 +0.942132 0.000066 +0.940606 0.000065 +0.939079 0.000064 +0.937553 0.000064 +0.936027 0.000063 +0.934501 0.000062 +0.932975 0.000061 +0.931449 0.000061 +0.929923 0.000060 +0.928397 0.000059 +0.926871 0.000058 +0.925345 0.000058 +0.923819 0.000057 +0.922293 0.000056 +0.920767 0.000056 +0.919241 0.000055 +0.917715 0.000055 +0.916188 0.000054 +0.914662 0.000053 +0.913136 0.000053 +0.911610 0.000052 +0.910084 0.000052 +0.908558 0.000051 +0.907032 0.000050 +0.905506 0.000050 +0.903980 0.000049 +0.902454 0.000049 +0.900928 0.000048 +0.899402 0.000048 +0.897876 0.000047 +0.896350 0.000047 +0.894824 0.000046 +0.893298 0.000046 +0.891771 0.000045 +0.890245 0.000045 +0.888719 0.000044 +0.887193 0.000044 +0.885667 0.000044 +0.884141 0.000043 +0.882615 0.000043 +0.881089 0.000042 +0.879563 0.000042 +0.878037 0.000041 +0.876511 0.000041 +0.874985 0.000041 +0.873459 0.000040 +0.871933 0.000040 +0.870407 0.000040 +0.868880 0.000039 +0.867354 0.000039 +0.865828 0.000038 +0.864302 0.000038 +0.862776 0.000038 +0.861250 0.000037 +0.859724 0.000037 +0.858198 0.000037 +0.856672 0.000036 +0.855146 0.000036 +0.853620 0.000036 +0.852094 0.000035 +0.850568 0.000035 +0.849042 0.000035 +0.847516 0.000034 +0.845990 0.000034 +0.844463 0.000034 +0.842937 0.000033 +0.841411 0.000033 +0.839885 0.000033 +0.838359 0.000033 +0.836833 0.000032 +0.835307 0.000032 +0.833781 0.000032 +0.832255 0.000032 +0.830729 0.000031 +0.829203 0.000031 +0.827677 0.000031 +0.826151 0.000030 +0.824625 0.000030 +0.823099 0.000030 +0.821572 0.000030 +0.820046 0.000029 +0.818520 0.000029 +0.816994 0.000029 +0.815468 0.000029 +0.813942 0.000029 +0.812416 0.000028 +0.810890 0.000028 +0.809364 0.000028 +0.807838 0.000028 +0.806312 0.000027 +0.804786 0.000027 +0.803260 0.000027 +0.801734 0.000027 +0.800208 0.000027 +0.798681 0.000026 +0.797155 0.000026 +0.795629 0.000026 +0.794103 0.000026 +0.792577 0.000026 +0.791051 0.000025 +0.789525 0.000025 +0.787999 0.000025 +0.786473 0.000025 +0.784947 0.000025 +0.783421 0.000024 +0.781895 0.000024 +0.780369 0.000024 +0.778843 0.000024 +0.777317 0.000024 +0.775791 0.000024 +0.774264 0.000023 +0.772738 0.000023 +0.771212 0.000023 +0.769686 0.000023 +0.768160 0.000023 +0.766634 0.000023 +0.765108 0.000022 +0.763582 0.000022 +0.762056 0.000022 +0.760530 0.000022 +0.759004 0.000022 +0.757478 0.000022 +0.755952 0.000021 +0.754426 0.000021 +0.752900 0.000021 +0.751373 0.000021 +0.749847 0.000021 +0.748321 0.000021 +0.746795 0.000021 +0.745269 0.000020 +0.743743 0.000020 +0.742217 0.000020 +0.740691 0.000020 +0.739165 0.000020 +0.737639 0.000020 +0.736113 0.000020 +0.734587 0.000019 +0.733061 0.000019 +0.731535 0.000019 +0.730009 0.000019 +0.728482 0.000019 +0.726956 0.000019 +0.725430 0.000019 +0.723904 0.000019 +0.722378 0.000018 +0.720852 0.000018 +0.719326 0.000018 +0.717800 0.000018 +0.716274 0.000018 +0.714748 0.000018 +0.713222 0.000018 +0.711696 0.000018 +0.710170 0.000018 +0.708644 0.000017 +0.707118 0.000017 +0.705592 0.000017 +0.704065 0.000017 +0.702539 0.000017 +0.701013 0.000017 +0.699487 0.000017 +0.697961 0.000017 +0.696435 0.000017 +0.694909 0.000017 +0.693383 0.000016 +0.691857 0.000016 +0.690331 0.000016 +0.688805 0.000016 +0.687279 0.000016 +0.685753 0.000016 +0.684227 0.000016 +0.682701 0.000016 +0.681174 0.000016 +0.679648 0.000016 +0.678122 0.000015 +0.676596 0.000015 +0.675070 0.000015 +0.673544 0.000015 +0.672018 0.000015 +0.670492 0.000015 +0.668966 0.000015 +0.667440 0.000015 +0.665914 0.000015 +0.664388 0.000015 +0.662862 0.000015 +0.661336 0.000015 +0.659810 0.000014 +0.658283 0.000014 +0.656757 0.000014 +0.655231 0.000014 +0.653705 0.000014 +0.652179 0.000014 +0.650653 0.000014 +0.649127 0.000014 +0.647601 0.000014 +0.646075 0.000014 +0.644549 0.000014 +0.643023 0.000014 +0.641497 0.000013 +0.639971 0.000013 +0.638445 0.000013 +0.636919 0.000013 +0.635393 0.000013 +0.633866 0.000013 +0.632340 0.000013 +0.630814 0.000013 +0.629288 0.000013 +0.627762 0.000013 +0.626236 0.000013 +0.624710 0.000013 +0.623184 0.000013 +0.621658 0.000013 +0.620132 0.000013 +0.618606 0.000012 +0.617080 0.000012 +0.615554 0.000012 +0.614028 0.000012 +0.612502 0.000012 +0.610975 0.000012 +0.609449 0.000012 +0.607923 0.000012 +0.606397 0.000012 +0.604871 0.000012 +0.603345 0.000012 +0.601819 0.000012 +0.600293 0.000012 +0.598767 0.000012 +0.597241 0.000012 +0.595715 0.000012 +0.594189 0.000011 +0.592663 0.000011 +0.591137 0.000011 +0.589611 0.000011 +0.588084 0.000011 +0.586558 0.000011 +0.585032 0.000011 +0.583506 0.000011 +0.581980 0.000011 +0.580454 0.000011 +0.578928 0.000011 +0.577402 0.000011 +0.575876 0.000011 +0.574350 0.000011 +0.572824 0.000011 +0.571298 0.000011 +0.569772 0.000011 +0.568246 0.000011 +0.566720 0.000010 +0.565194 0.000010 +0.563667 0.000010 +0.562141 0.000010 +0.560615 0.000010 +0.559089 0.000010 +0.557563 0.000010 +0.556037 0.000010 +0.554511 0.000010 +0.552985 0.000010 +0.551459 0.000010 +0.549933 0.000010 +0.548407 0.000010 +0.546881 0.000010 +0.545355 0.000010 +0.543829 0.000010 +0.542303 0.000010 +0.540776 0.000010 +0.539250 0.000010 +0.537724 0.000010 +0.536198 0.000010 +0.534672 0.000010 +0.533146 0.000009 +0.531620 0.000009 +0.530094 0.000009 +0.528568 0.000009 +0.527042 0.000009 +0.525516 0.000009 +0.523990 0.000009 +0.522464 0.000009 +0.520938 0.000009 +0.519412 0.000009 +0.517885 0.000009 +0.516359 0.000009 +0.514833 0.000009 +0.513307 0.000009 +0.511781 0.000009 +0.510255 0.000009 +0.508729 0.000009 +0.507203 0.000009 +0.505677 0.000009 +0.504151 0.000009 +0.502625 0.000009 +0.501099 0.000009 +0.499573 0.000009 +0.498047 0.000009 +0.496521 0.000009 +0.494995 0.000008 +0.493468 0.000008 +0.491942 0.000008 +0.490416 0.000008 +0.488890 0.000008 +0.487364 0.000008 +0.485838 0.000008 +0.484312 0.000008 +0.482786 0.000008 +0.481260 0.000008 +0.479734 0.000008 +0.478208 0.000008 +0.476682 0.000008 +0.475156 0.000008 +0.473630 0.000008 +0.472104 0.000008 +0.470577 0.000008 +0.469051 0.000008 +0.467525 0.000008 +0.465999 0.000008 +0.464473 0.000008 +0.462947 0.000008 +0.461421 0.000008 +0.459895 0.000008 +0.458369 0.000008 +0.456843 0.000008 +0.455317 0.000008 +0.453791 0.000008 +0.452265 0.000008 +0.450739 0.000008 +0.449213 0.000007 +0.447686 0.000007 +0.446160 0.000007 +0.444634 0.000007 +0.443108 0.000007 +0.441582 0.000007 +0.440056 0.000007 +0.438530 0.000007 +0.437004 0.000007 +0.435478 0.000007 +0.433952 0.000007 +0.432426 0.000007 +0.430900 0.000007 +0.429374 0.000007 +0.427848 0.000007 +0.426322 0.000007 +0.424796 0.000007 +0.423269 0.000007 +0.421743 0.000007 +0.420217 0.000007 +0.418691 0.000007 +0.417165 0.000007 +0.415639 0.000007 +0.414113 0.000007 +0.412587 0.000007 +0.411061 0.000007 +0.409535 0.000007 +0.408009 0.000007 +0.406483 0.000007 +0.404957 0.000007 +0.403431 0.000007 +0.401905 0.000007 +0.400378 0.000007 +0.398852 0.000007 +0.397326 0.000007 +0.395800 0.000007 +0.394274 0.000007 +0.392748 0.000006 +0.391222 0.000006 +0.389696 0.000006 +0.388170 0.000006 +0.386644 0.000006 +0.385118 0.000006 +0.383592 0.000006 +0.382066 0.000006 +0.380540 0.000006 +0.379014 0.000006 +0.377487 0.000006 +0.375961 0.000006 +0.374435 0.000006 +0.372909 0.000006 +0.371383 0.000006 +0.369857 0.000006 +0.368331 0.000006 +0.366805 0.000006 +0.365279 0.000006 +0.363753 0.000006 +0.362227 0.000006 +0.360701 0.000006 +0.359175 0.000006 +0.357649 0.000006 +0.356123 0.000006 +0.354597 0.000006 +0.353070 0.000006 +0.351544 0.000006 +0.350018 0.000006 +0.348492 0.000006 +0.346966 0.000006 +0.345440 0.000006 +0.343914 0.000006 +0.342388 0.000006 +0.340862 0.000006 +0.339336 0.000006 +0.337810 0.000006 +0.336284 0.000006 +0.334758 0.000006 +0.333232 0.000006 +0.331706 0.000006 +0.330179 0.000006 +0.328653 0.000006 +0.327127 0.000006 +0.325601 0.000006 +0.324075 0.000006 +0.322549 0.000006 +0.321023 0.000005 +0.319497 0.000005 +0.317971 0.000005 +0.316445 0.000005 +0.314919 0.000005 +0.313393 0.000005 +0.311867 0.000005 +0.310341 0.000005 +0.308815 0.000005 +0.307288 0.000005 +0.305762 0.000005 +0.304236 0.000005 +0.302710 0.000005 +0.301184 0.000005 +0.299658 0.000005 +0.298132 0.000005 +0.296606 0.000005 +0.295080 0.000005 +0.293554 0.000005 +0.292028 0.000005 +0.290502 0.000005 +0.288976 0.000005 +0.287450 0.000005 +0.285924 0.000005 +0.284398 0.000005 +0.282871 0.000005 +0.281345 0.000005 +0.279819 0.000005 +0.278293 0.000005 +0.276767 0.000005 +0.275241 0.000005 +0.273715 0.000005 +0.272189 0.000005 +0.270663 0.000005 +0.269137 0.000005 +0.267611 0.000005 +0.266085 0.000005 +0.264559 0.000005 +0.263033 0.000005 +0.261507 0.000005 +0.259980 0.000005 +0.258454 0.000005 +0.256928 0.000005 +0.255402 0.000005 +0.253876 0.000005 +0.252350 0.000005 +0.250824 0.000005 +0.249298 0.000005 +0.247772 0.000005 +0.246246 0.000005 +0.244720 0.000005 +0.243194 0.000005 +0.241668 0.000005 +0.240142 0.000005 +0.238616 0.000005 +0.237089 0.000005 +0.235563 0.000005 +0.234037 0.000005 +0.232511 0.000005 +0.230985 0.000005 +0.229459 0.000005 +0.227933 0.000005 +0.226407 0.000005 +0.224881 0.000004 +0.223355 0.000004 +0.221829 0.000004 +0.220303 0.000004 +0.218777 0.000004 +0.217251 0.000004 +0.215725 0.000004 +0.214199 0.000004 +0.212672 0.000004 +0.211146 0.000004 +0.209620 0.000004 +0.208094 0.000004 +0.206568 0.000004 +0.205042 0.000004 +0.203516 0.000004 +0.201990 0.000004 +0.200464 0.000004 +0.198938 0.000004 +0.197412 0.000004 +0.195886 0.000004 +0.194360 0.000004 +0.192834 0.000004 +0.191308 0.000004 +0.189781 0.000004 +0.188255 0.000004 +0.186729 0.000004 +0.185203 0.000004 +0.183677 0.000004 +0.182151 0.000004 +0.180625 0.000004 +0.179099 0.000004 +0.177573 0.000004 +0.176047 0.000004 +0.174521 0.000004 +0.172995 0.000004 +0.171469 0.000004 +0.169943 0.000004 +0.168417 0.000004 +0.166890 0.000004 +0.165364 0.000004 +0.163838 0.000004 +0.162312 0.000004 +0.160786 0.000004 +0.159260 0.000004 +0.157734 0.000004 +0.156208 0.000004 +0.154682 0.000004 +0.153156 0.000004 +0.151630 0.000004 +0.150104 0.000004 +0.148578 0.000004 +0.147052 0.000004 +0.145526 0.000004 +0.144000 0.000004 +0.142473 0.000004 +0.140947 0.000004 +0.139421 0.000004 +0.137895 0.000004 +0.136369 0.000004 +0.134843 0.000004 +0.133317 0.000004 +0.131791 0.000004 +0.130265 0.000004 +0.128739 0.000004 +0.127213 0.000004 +0.125687 0.000004 +0.124161 0.000004 +0.122635 0.000004 +0.121109 0.000004 +0.119582 0.000004 +0.118056 0.000004 +0.116530 0.000004 +0.115004 0.000004 +0.113478 0.000004 +0.111952 0.000004 +0.110426 0.000004 +0.108900 0.000004 +0.107374 0.000004 +0.105848 0.000004 +0.104322 0.000004 +0.102796 0.000004 +0.101270 0.000004 +0.099744 0.000004 +0.098218 0.000004 +0.096691 0.000004 +0.095165 0.000004 +0.093639 0.000004 +0.092113 0.000004 +0.090587 0.000003 +0.089061 0.000003 +0.087535 0.000003 +0.086009 0.000003 +0.084483 0.000003 +0.082957 0.000003 +0.081431 0.000003 +0.079905 0.000003 +0.078379 0.000003 +0.076853 0.000003 +0.075327 0.000003 +0.073801 0.000003 +0.072274 0.000003 +0.070748 0.000003 +0.069222 0.000003 +0.067696 0.000003 +0.066170 0.000003 +0.064644 0.000003 +0.063118 0.000003 +0.061592 0.000003 +0.060066 0.000003 +0.058540 0.000003 +0.057014 0.000003 +0.055488 0.000003 +0.053962 0.000003 +0.052436 0.000003 +0.050910 0.000003 +0.049383 0.000003 +0.047857 0.000003 +0.046331 0.000003 +0.044805 0.000003 +0.043279 0.000003 +0.041753 0.000003 +0.040227 0.000003 +0.038701 0.000003 +0.037175 0.000003 +0.035649 0.000003 +0.034123 0.000003 +0.032597 0.000003 +0.031071 0.000003 +0.029545 0.000003 +0.028019 0.000003 +0.026492 0.000003 +0.024966 0.000003 +0.023440 0.000003 +0.021914 0.000003 +0.020388 0.000003 +0.018862 0.000003 +0.017336 0.000003 +0.015810 0.000003 +0.014284 0.000003 +0.012758 0.000003 +0.011232 0.000003 +0.009706 0.000003 +0.008180 0.000003 +0.006654 0.000003 +0.005128 0.000003 +0.003602 0.000003 +0.002075 0.000003 +0.000549 0.000003 +-0.000977 0.000003 +-0.002503 0.000003 +-0.004029 0.000003 +-0.005555 0.000003 +-0.007081 0.000003 +-0.008607 0.000003 +-0.010133 0.000003 +-0.011659 0.000003 +-0.013185 0.000003 +-0.014711 0.000003 +-0.016237 0.000003 +-0.017763 0.000003 +-0.019289 0.000003 +-0.020816 0.000003 +-0.022342 0.000003 +-0.023868 0.000003 +-0.025394 0.000003 +-0.026920 0.000003 +-0.028446 0.000003 +-0.029972 0.000003 +-0.031498 0.000003 +-0.033024 0.000003 +-0.034550 0.000003 +-0.036076 0.000003 +-0.037602 0.000003 +-0.039128 0.000003 +-0.040654 0.000003 +-0.042180 0.000003 +-0.043707 0.000003 +-0.045233 0.000003 +-0.046759 0.000003 +-0.048285 0.000003 +-0.049811 0.000003 +-0.051337 0.000003 +-0.052863 0.000003 +-0.054389 0.000003 +-0.055915 0.000003 +-0.057441 0.000003 +-0.058967 0.000003 +-0.060493 0.000003 +-0.062019 0.000003 +-0.063545 0.000003 +-0.065071 0.000003 +-0.066597 0.000003 +-0.068124 0.000003 +-0.069650 0.000003 +-0.071176 0.000003 +-0.072702 0.000003 +-0.074228 0.000003 +-0.075754 0.000003 +-0.077280 0.000003 +-0.078806 0.000003 +-0.080332 0.000003 +-0.081858 0.000003 +-0.083384 0.000003 +-0.084910 0.000003 +-0.086436 0.000003 +-0.087962 0.000003 +-0.089488 0.000003 +-0.091015 0.000003 +-0.092541 0.000003 +-0.094067 0.000003 +-0.095593 0.000003 +-0.097119 0.000003 +-0.098645 0.000003 +-0.100171 0.000003 +-0.101697 0.000003 +-0.103223 0.000003 +-0.104749 0.000003 +-0.106275 0.000003 +-0.107801 0.000003 +-0.109327 0.000003 +-0.110853 0.000003 +-0.112379 0.000003 +-0.113906 0.000003 +-0.115432 0.000003 +-0.116958 0.000003 +-0.118484 0.000003 +-0.120010 0.000003 +-0.121536 0.000002 +-0.123062 0.000002 +-0.124588 0.000002 +-0.126114 0.000002 +-0.127640 0.000002 +-0.129166 0.000002 +-0.130692 0.000002 +-0.132218 0.000002 +-0.133744 0.000002 +-0.135270 0.000002 +-0.136796 0.000002 +-0.138323 0.000002 +-0.139849 0.000002 +-0.141375 0.000002 +-0.142901 0.000002 +-0.144427 0.000002 +-0.145953 0.000002 +-0.147479 0.000002 +-0.149005 0.000002 +-0.150531 0.000002 +-0.152057 0.000002 +-0.153583 0.000002 +-0.155109 0.000002 +-0.156635 0.000002 +-0.158161 0.000002 +-0.159687 0.000002 +-0.161214 0.000002 +-0.162740 0.000002 +-0.164266 0.000002 +-0.165792 0.000002 +-0.167318 0.000002 +-0.168844 0.000002 +-0.170370 0.000002 +-0.171896 0.000002 +-0.173422 0.000002 +-0.174948 0.000002 +-0.176474 0.000002 +-0.178000 0.000002 +-0.179526 0.000002 +-0.181052 0.000002 +-0.182578 0.000002 +-0.184105 0.000002 +-0.185631 0.000002 +-0.187157 0.000002 +-0.188683 0.000002 +-0.190209 0.000002 +-0.191735 0.000002 +-0.193261 0.000002 +-0.194787 0.000002 +-0.196313 0.000002 +-0.197839 0.000002 +-0.199365 0.000002 +-0.200891 0.000002 +-0.202417 0.000002 +-0.203943 0.000002 +-0.205469 0.000002 +-0.206995 0.000002 +-0.208522 0.000002 +-0.210048 0.000002 +-0.211574 0.000002 +-0.213100 0.000002 +-0.214626 0.000002 +-0.216152 0.000002 +-0.217678 0.000002 +-0.219204 0.000002 +-0.220730 0.000002 +-0.222256 0.000002 +-0.223782 0.000002 +-0.225308 0.000002 +-0.226834 0.000002 +-0.228360 0.000002 +-0.229886 0.000002 +-0.231413 0.000002 +-0.232939 0.000002 +-0.234465 0.000002 +-0.235991 0.000002 +-0.237517 0.000002 +-0.239043 0.000002 +-0.240569 0.000002 +-0.242095 0.000002 +-0.243621 0.000002 +-0.245147 0.000002 +-0.246673 0.000002 +-0.248199 0.000002 +-0.249725 0.000002 +-0.251251 0.000002 +-0.252777 0.000002 +-0.254304 0.000002 +-0.255830 0.000002 +-0.257356 0.000002 +-0.258882 0.000002 +-0.260408 0.000002 +-0.261934 0.000002 +-0.263460 0.000002 +-0.264986 0.000002 +-0.266512 0.000002 +-0.268038 0.000002 +-0.269564 0.000002 +-0.271090 0.000002 +-0.272616 0.000002 +-0.274142 0.000002 +-0.275668 0.000002 +-0.277194 0.000002 +-0.278721 0.000002 +-0.280247 0.000002 +-0.281773 0.000002 +-0.283299 0.000002 +-0.284825 0.000002 +-0.286351 0.000002 +-0.287877 0.000002 +-0.289403 0.000002 +-0.290929 0.000002 +-0.292455 0.000002 +-0.293981 0.000002 +-0.295507 0.000002 +-0.297033 0.000002 +-0.298559 0.000002 +-0.300085 0.000002 +-0.301612 0.000002 +-0.303138 0.000002 +-0.304664 0.000002 +-0.306190 0.000002 +-0.307716 0.000002 +-0.309242 0.000002 +-0.310768 0.000002 +-0.312294 0.000002 +-0.313820 0.000002 +-0.315346 0.000002 +-0.316872 0.000002 +-0.318398 0.000002 +-0.319924 0.000002 +-0.321450 0.000002 +-0.322976 0.000002 +-0.324503 0.000002 +-0.326029 0.000002 +-0.327555 0.000002 +-0.329081 0.000002 +-0.330607 0.000002 +-0.332133 0.000002 +-0.333659 0.000002 +-0.335185 0.000002 +-0.336711 0.000002 +-0.338237 0.000002 +-0.339763 0.000002 +-0.341289 0.000002 +-0.342815 0.000002 +-0.344341 0.000002 +-0.345867 0.000002 +-0.347393 0.000002 +-0.348920 0.000002 +-0.350446 0.000002 +-0.351972 0.000002 +-0.353498 0.000002 +-0.355024 0.000002 +-0.356550 0.000002 +-0.358076 0.000002 +-0.359602 0.000002 +-0.361128 0.000002 +-0.362654 0.000002 +-0.364180 0.000002 +-0.365706 0.000002 +-0.367232 0.000002 +-0.368758 0.000002 +-0.370284 0.000002 +-0.371811 0.000002 +-0.373337 0.000002 +-0.374863 0.000002 +-0.376389 0.000002 +-0.377915 0.000002 +-0.379441 0.000002 +-0.380967 0.000002 +-0.382493 0.000002 +-0.384019 0.000002 +-0.385545 0.000002 +-0.387071 0.000002 +-0.388597 0.000002 +-0.390123 0.000002 +-0.391649 0.000002 +-0.393175 0.000002 +-0.394702 0.000002 +-0.396228 0.000002 +-0.397754 0.000002 +-0.399280 0.000002 +-0.400806 0.000002 +-0.402332 0.000002 +-0.403858 0.000002 +-0.405384 0.000002 +-0.406910 0.000002 +-0.408436 0.000002 +-0.409962 0.000002 +-0.411488 0.000002 +-0.413014 0.000002 +-0.414540 0.000002 +-0.416066 0.000002 +-0.417592 0.000002 +-0.419119 0.000002 +-0.420645 0.000002 +-0.422171 0.000002 +-0.423697 0.000002 +-0.425223 0.000002 +-0.426749 0.000002 +-0.428275 0.000002 +-0.429801 0.000002 +-0.431327 0.000002 +-0.432853 0.000002 +-0.434379 0.000002 +-0.435905 0.000002 +-0.437431 0.000002 +-0.438957 0.000002 +-0.440483 0.000002 +-0.442010 0.000002 +-0.443536 0.000002 +-0.445062 0.000002 +-0.446588 0.000002 +-0.448114 0.000002 +-0.449640 0.000002 +-0.451166 0.000002 +-0.452692 0.000002 +-0.454218 0.000002 +-0.455744 0.000002 +-0.457270 0.000002 +-0.458796 0.000002 +-0.460322 0.000002 +-0.461848 0.000002 +-0.463374 0.000002 +-0.464901 0.000002 +-0.466427 0.000002 +-0.467953 0.000002 +-0.469479 0.000002 +-0.471005 0.000002 +-0.472531 0.000002 +-0.474057 0.000002 +-0.475583 0.000002 +-0.477109 0.000002 +-0.478635 0.000002 +-0.480161 0.000002 +-0.481687 0.000002 +-0.483213 0.000002 +-0.484739 0.000002 +-0.486265 0.000002 +-0.487791 0.000002 +-0.489318 0.000002 +-0.490844 0.000002 +-0.492370 0.000002 +-0.493896 0.000002 +-0.495422 0.000002 +-0.496948 0.000002 +-0.498474 0.000002 +-0.500000 0.000002 diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol_signals.csv b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol_signals.csv new file mode 100644 index 00000000..89ceb7ab --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol_signals.csv @@ -0,0 +1,3 @@ +shift_ppm,multiplicity,J_Hz,nH +3.314,q,6.6,2 +1.187,t,6.6,3 diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate.xy b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate.xy new file mode 100644 index 00000000..83f6f305 --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate.xy @@ -0,0 +1,8192 @@ +12.000000 0.000000 +11.998474 0.000000 +11.996948 0.000000 +11.995422 0.000000 +11.993896 0.000000 +11.992370 0.000000 +11.990844 0.000000 +11.989318 0.000000 +11.987791 0.000000 +11.986265 0.000000 +11.984739 0.000000 +11.983213 0.000000 +11.981687 0.000000 +11.980161 0.000000 +11.978635 0.000000 +11.977109 0.000000 +11.975583 0.000000 +11.974057 0.000000 +11.972531 0.000000 +11.971005 0.000000 +11.969479 0.000000 +11.967953 0.000000 +11.966427 0.000000 +11.964901 0.000000 +11.963374 0.000000 +11.961848 0.000000 +11.960322 0.000000 +11.958796 0.000000 +11.957270 0.000000 +11.955744 0.000000 +11.954218 0.000000 +11.952692 0.000000 +11.951166 0.000000 +11.949640 0.000000 +11.948114 0.000000 +11.946588 0.000000 +11.945062 0.000000 +11.943536 0.000000 +11.942010 0.000000 +11.940483 0.000000 +11.938957 0.000000 +11.937431 0.000000 +11.935905 0.000000 +11.934379 0.000000 +11.932853 0.000000 +11.931327 0.000000 +11.929801 0.000000 +11.928275 0.000000 +11.926749 0.000000 +11.925223 0.000000 +11.923697 0.000000 +11.922171 0.000000 +11.920645 0.000000 +11.919119 0.000000 +11.917592 0.000000 +11.916066 0.000000 +11.914540 0.000000 +11.913014 0.000000 +11.911488 0.000000 +11.909962 0.000000 +11.908436 0.000000 +11.906910 0.000000 +11.905384 0.000000 +11.903858 0.000000 +11.902332 0.000000 +11.900806 0.000000 +11.899280 0.000000 +11.897754 0.000000 +11.896228 0.000000 +11.894702 0.000000 +11.893175 0.000000 +11.891649 0.000000 +11.890123 0.000000 +11.888597 0.000000 +11.887071 0.000000 +11.885545 0.000000 +11.884019 0.000000 +11.882493 0.000000 +11.880967 0.000000 +11.879441 0.000000 +11.877915 0.000000 +11.876389 0.000000 +11.874863 0.000000 +11.873337 0.000000 +11.871811 0.000000 +11.870284 0.000000 +11.868758 0.000000 +11.867232 0.000000 +11.865706 0.000000 +11.864180 0.000000 +11.862654 0.000000 +11.861128 0.000000 +11.859602 0.000000 +11.858076 0.000000 +11.856550 0.000000 +11.855024 0.000000 +11.853498 0.000000 +11.851972 0.000000 +11.850446 0.000000 +11.848920 0.000000 +11.847393 0.000000 +11.845867 0.000000 +11.844341 0.000000 +11.842815 0.000000 +11.841289 0.000000 +11.839763 0.000000 +11.838237 0.000000 +11.836711 0.000000 +11.835185 0.000000 +11.833659 0.000000 +11.832133 0.000000 +11.830607 0.000000 +11.829081 0.000000 +11.827555 0.000000 +11.826029 0.000000 +11.824503 0.000000 +11.822976 0.000000 +11.821450 0.000000 +11.819924 0.000000 +11.818398 0.000000 +11.816872 0.000000 +11.815346 0.000000 +11.813820 0.000000 +11.812294 0.000000 +11.810768 0.000000 +11.809242 0.000000 +11.807716 0.000000 +11.806190 0.000000 +11.804664 0.000000 +11.803138 0.000000 +11.801612 0.000000 +11.800085 0.000000 +11.798559 0.000000 +11.797033 0.000000 +11.795507 0.000000 +11.793981 0.000000 +11.792455 0.000000 +11.790929 0.000000 +11.789403 0.000000 +11.787877 0.000000 +11.786351 0.000000 +11.784825 0.000000 +11.783299 0.000000 +11.781773 0.000000 +11.780247 0.000000 +11.778721 0.000000 +11.777194 0.000000 +11.775668 0.000000 +11.774142 0.000000 +11.772616 0.000000 +11.771090 0.000000 +11.769564 0.000000 +11.768038 0.000000 +11.766512 0.000000 +11.764986 0.000000 +11.763460 0.000000 +11.761934 0.000000 +11.760408 0.000000 +11.758882 0.000000 +11.757356 0.000000 +11.755830 0.000000 +11.754304 0.000000 +11.752777 0.000000 +11.751251 0.000000 +11.749725 0.000000 +11.748199 0.000000 +11.746673 0.000000 +11.745147 0.000000 +11.743621 0.000000 +11.742095 0.000000 +11.740569 0.000000 +11.739043 0.000000 +11.737517 0.000000 +11.735991 0.000000 +11.734465 0.000000 +11.732939 0.000000 +11.731413 0.000000 +11.729886 0.000000 +11.728360 0.000000 +11.726834 0.000000 +11.725308 0.000000 +11.723782 0.000000 +11.722256 0.000000 +11.720730 0.000000 +11.719204 0.000000 +11.717678 0.000000 +11.716152 0.000000 +11.714626 0.000000 +11.713100 0.000000 +11.711574 0.000000 +11.710048 0.000000 +11.708522 0.000000 +11.706995 0.000000 +11.705469 0.000000 +11.703943 0.000000 +11.702417 0.000000 +11.700891 0.000000 +11.699365 0.000000 +11.697839 0.000000 +11.696313 0.000000 +11.694787 0.000000 +11.693261 0.000000 +11.691735 0.000000 +11.690209 0.000000 +11.688683 0.000000 +11.687157 0.000000 +11.685631 0.000000 +11.684105 0.000000 +11.682578 0.000000 +11.681052 0.000000 +11.679526 0.000000 +11.678000 0.000000 +11.676474 0.000000 +11.674948 0.000000 +11.673422 0.000000 +11.671896 0.000000 +11.670370 0.000000 +11.668844 0.000000 +11.667318 0.000000 +11.665792 0.000000 +11.664266 0.000000 +11.662740 0.000000 +11.661214 0.000000 +11.659687 0.000000 +11.658161 0.000000 +11.656635 0.000000 +11.655109 0.000000 +11.653583 0.000000 +11.652057 0.000000 +11.650531 0.000000 +11.649005 0.000000 +11.647479 0.000000 +11.645953 0.000000 +11.644427 0.000000 +11.642901 0.000000 +11.641375 0.000000 +11.639849 0.000000 +11.638323 0.000000 +11.636796 0.000000 +11.635270 0.000000 +11.633744 0.000000 +11.632218 0.000000 +11.630692 0.000000 +11.629166 0.000000 +11.627640 0.000000 +11.626114 0.000000 +11.624588 0.000000 +11.623062 0.000000 +11.621536 0.000000 +11.620010 0.000000 +11.618484 0.000000 +11.616958 0.000000 +11.615432 0.000000 +11.613906 0.000000 +11.612379 0.000000 +11.610853 0.000000 +11.609327 0.000000 +11.607801 0.000000 +11.606275 0.000000 +11.604749 0.000000 +11.603223 0.000000 +11.601697 0.000000 +11.600171 0.000000 +11.598645 0.000000 +11.597119 0.000000 +11.595593 0.000000 +11.594067 0.000000 +11.592541 0.000000 +11.591015 0.000000 +11.589488 0.000000 +11.587962 0.000000 +11.586436 0.000000 +11.584910 0.000000 +11.583384 0.000000 +11.581858 0.000000 +11.580332 0.000000 +11.578806 0.000000 +11.577280 0.000000 +11.575754 0.000000 +11.574228 0.000000 +11.572702 0.000000 +11.571176 0.000000 +11.569650 0.000000 +11.568124 0.000000 +11.566597 0.000000 +11.565071 0.000000 +11.563545 0.000000 +11.562019 0.000000 +11.560493 0.000000 +11.558967 0.000000 +11.557441 0.000000 +11.555915 0.000000 +11.554389 0.000000 +11.552863 0.000000 +11.551337 0.000000 +11.549811 0.000000 +11.548285 0.000000 +11.546759 0.000000 +11.545233 0.000000 +11.543707 0.000000 +11.542180 0.000000 +11.540654 0.000000 +11.539128 0.000000 +11.537602 0.000000 +11.536076 0.000000 +11.534550 0.000000 +11.533024 0.000000 +11.531498 0.000000 +11.529972 0.000000 +11.528446 0.000000 +11.526920 0.000000 +11.525394 0.000000 +11.523868 0.000000 +11.522342 0.000000 +11.520816 0.000000 +11.519289 0.000000 +11.517763 0.000000 +11.516237 0.000000 +11.514711 0.000000 +11.513185 0.000000 +11.511659 0.000000 +11.510133 0.000000 +11.508607 0.000000 +11.507081 0.000000 +11.505555 0.000000 +11.504029 0.000000 +11.502503 0.000000 +11.500977 0.000000 +11.499451 0.000000 +11.497925 0.000000 +11.496398 0.000000 +11.494872 0.000000 +11.493346 0.000000 +11.491820 0.000000 +11.490294 0.000000 +11.488768 0.000000 +11.487242 0.000000 +11.485716 0.000000 +11.484190 0.000000 +11.482664 0.000000 +11.481138 0.000000 +11.479612 0.000000 +11.478086 0.000000 +11.476560 0.000000 +11.475034 0.000000 +11.473508 0.000000 +11.471981 0.000000 +11.470455 0.000000 +11.468929 0.000000 +11.467403 0.000000 +11.465877 0.000000 +11.464351 0.000000 +11.462825 0.000000 +11.461299 0.000000 +11.459773 0.000000 +11.458247 0.000000 +11.456721 0.000000 +11.455195 0.000000 +11.453669 0.000000 +11.452143 0.000000 +11.450617 0.000000 +11.449090 0.000000 +11.447564 0.000000 +11.446038 0.000000 +11.444512 0.000000 +11.442986 0.000000 +11.441460 0.000000 +11.439934 0.000000 +11.438408 0.000000 +11.436882 0.000000 +11.435356 0.000000 +11.433830 0.000000 +11.432304 0.000000 +11.430778 0.000000 +11.429252 0.000000 +11.427726 0.000000 +11.426199 0.000000 +11.424673 0.000000 +11.423147 0.000000 +11.421621 0.000000 +11.420095 0.000000 +11.418569 0.000000 +11.417043 0.000000 +11.415517 0.000000 +11.413991 0.000000 +11.412465 0.000000 +11.410939 0.000000 +11.409413 0.000000 +11.407887 0.000000 +11.406361 0.000000 +11.404835 0.000000 +11.403309 0.000000 +11.401782 0.000000 +11.400256 0.000000 +11.398730 0.000000 +11.397204 0.000000 +11.395678 0.000000 +11.394152 0.000000 +11.392626 0.000000 +11.391100 0.000000 +11.389574 0.000000 +11.388048 0.000000 +11.386522 0.000000 +11.384996 0.000000 +11.383470 0.000000 +11.381944 0.000000 +11.380418 0.000000 +11.378891 0.000000 +11.377365 0.000000 +11.375839 0.000000 +11.374313 0.000000 +11.372787 0.000000 +11.371261 0.000000 +11.369735 0.000000 +11.368209 0.000000 +11.366683 0.000000 +11.365157 0.000000 +11.363631 0.000000 +11.362105 0.000000 +11.360579 0.000000 +11.359053 0.000000 +11.357527 0.000000 +11.356000 0.000000 +11.354474 0.000000 +11.352948 0.000000 +11.351422 0.000000 +11.349896 0.000000 +11.348370 0.000000 +11.346844 0.000000 +11.345318 0.000000 +11.343792 0.000000 +11.342266 0.000000 +11.340740 0.000000 +11.339214 0.000000 +11.337688 0.000000 +11.336162 0.000000 +11.334636 0.000000 +11.333110 0.000000 +11.331583 0.000000 +11.330057 0.000000 +11.328531 0.000000 +11.327005 0.000000 +11.325479 0.000000 +11.323953 0.000000 +11.322427 0.000000 +11.320901 0.000000 +11.319375 0.000000 +11.317849 0.000000 +11.316323 0.000000 +11.314797 0.000000 +11.313271 0.000000 +11.311745 0.000000 +11.310219 0.000000 +11.308692 0.000000 +11.307166 0.000000 +11.305640 0.000000 +11.304114 0.000000 +11.302588 0.000000 +11.301062 0.000000 +11.299536 0.000000 +11.298010 0.000000 +11.296484 0.000000 +11.294958 0.000000 +11.293432 0.000000 +11.291906 0.000000 +11.290380 0.000000 +11.288854 0.000000 +11.287328 0.000000 +11.285801 0.000000 +11.284275 0.000000 +11.282749 0.000000 +11.281223 0.000000 +11.279697 0.000000 +11.278171 0.000000 +11.276645 0.000000 +11.275119 0.000000 +11.273593 0.000000 +11.272067 0.000000 +11.270541 0.000000 +11.269015 0.000000 +11.267489 0.000000 +11.265963 0.000000 +11.264437 0.000000 +11.262911 0.000000 +11.261384 0.000000 +11.259858 0.000000 +11.258332 0.000000 +11.256806 0.000000 +11.255280 0.000000 +11.253754 0.000000 +11.252228 0.000000 +11.250702 0.000000 +11.249176 0.000000 +11.247650 0.000000 +11.246124 0.000000 +11.244598 0.000000 +11.243072 0.000000 +11.241546 0.000000 +11.240020 0.000000 +11.238493 0.000000 +11.236967 0.000000 +11.235441 0.000000 +11.233915 0.000000 +11.232389 0.000000 +11.230863 0.000000 +11.229337 0.000000 +11.227811 0.000000 +11.226285 0.000000 +11.224759 0.000000 +11.223233 0.000000 +11.221707 0.000000 +11.220181 0.000000 +11.218655 0.000000 +11.217129 0.000000 +11.215602 0.000000 +11.214076 0.000000 +11.212550 0.000000 +11.211024 0.000000 +11.209498 0.000000 +11.207972 0.000000 +11.206446 0.000000 +11.204920 0.000000 +11.203394 0.000000 +11.201868 0.000000 +11.200342 0.000000 +11.198816 0.000000 +11.197290 0.000000 +11.195764 0.000000 +11.194238 0.000000 +11.192712 0.000000 +11.191185 0.000000 +11.189659 0.000000 +11.188133 0.000000 +11.186607 0.000000 +11.185081 0.000000 +11.183555 0.000000 +11.182029 0.000000 +11.180503 0.000000 +11.178977 0.000000 +11.177451 0.000000 +11.175925 0.000000 +11.174399 0.000000 +11.172873 0.000000 +11.171347 0.000000 +11.169821 0.000000 +11.168294 0.000000 +11.166768 0.000000 +11.165242 0.000000 +11.163716 0.000000 +11.162190 0.000000 +11.160664 0.000000 +11.159138 0.000000 +11.157612 0.000000 +11.156086 0.000000 +11.154560 0.000000 +11.153034 0.000000 +11.151508 0.000000 +11.149982 0.000000 +11.148456 0.000000 +11.146930 0.000000 +11.145403 0.000000 +11.143877 0.000000 +11.142351 0.000000 +11.140825 0.000000 +11.139299 0.000000 +11.137773 0.000000 +11.136247 0.000000 +11.134721 0.000000 +11.133195 0.000000 +11.131669 0.000000 +11.130143 0.000000 +11.128617 0.000000 +11.127091 0.000000 +11.125565 0.000000 +11.124039 0.000000 +11.122513 0.000000 +11.120986 0.000000 +11.119460 0.000000 +11.117934 0.000000 +11.116408 0.000000 +11.114882 0.000000 +11.113356 0.000000 +11.111830 0.000000 +11.110304 0.000000 +11.108778 0.000000 +11.107252 0.000000 +11.105726 0.000000 +11.104200 0.000000 +11.102674 0.000000 +11.101148 0.000000 +11.099622 0.000000 +11.098095 0.000000 +11.096569 0.000000 +11.095043 0.000000 +11.093517 0.000000 +11.091991 0.000000 +11.090465 0.000000 +11.088939 0.000000 +11.087413 0.000000 +11.085887 0.000000 +11.084361 0.000000 +11.082835 0.000000 +11.081309 0.000000 +11.079783 0.000000 +11.078257 0.000000 +11.076731 0.000000 +11.075204 0.000000 +11.073678 0.000000 +11.072152 0.000000 +11.070626 0.000000 +11.069100 0.000000 +11.067574 0.000000 +11.066048 0.000000 +11.064522 0.000000 +11.062996 0.000000 +11.061470 0.000000 +11.059944 0.000000 +11.058418 0.000000 +11.056892 0.000000 +11.055366 0.000000 +11.053840 0.000000 +11.052314 0.000000 +11.050787 0.000000 +11.049261 0.000000 +11.047735 0.000000 +11.046209 0.000000 +11.044683 0.000000 +11.043157 0.000000 +11.041631 0.000000 +11.040105 0.000000 +11.038579 0.000000 +11.037053 0.000000 +11.035527 0.000000 +11.034001 0.000000 +11.032475 0.000000 +11.030949 0.000000 +11.029423 0.000000 +11.027896 0.000000 +11.026370 0.000000 +11.024844 0.000000 +11.023318 0.000000 +11.021792 0.000000 +11.020266 0.000000 +11.018740 0.000000 +11.017214 0.000000 +11.015688 0.000000 +11.014162 0.000000 +11.012636 0.000000 +11.011110 0.000000 +11.009584 0.000000 +11.008058 0.000000 +11.006532 0.000000 +11.005005 0.000000 +11.003479 0.000000 +11.001953 0.000000 +11.000427 0.000000 +10.998901 0.000000 +10.997375 0.000000 +10.995849 0.000000 +10.994323 0.000000 +10.992797 0.000000 +10.991271 0.000000 +10.989745 0.000000 +10.988219 0.000000 +10.986693 0.000000 +10.985167 0.000000 +10.983641 0.000000 +10.982115 0.000000 +10.980588 0.000000 +10.979062 0.000000 +10.977536 0.000000 +10.976010 0.000000 +10.974484 0.000000 +10.972958 0.000000 +10.971432 0.000000 +10.969906 0.000000 +10.968380 0.000000 +10.966854 0.000000 +10.965328 0.000000 +10.963802 0.000000 +10.962276 0.000000 +10.960750 0.000000 +10.959224 0.000000 +10.957697 0.000000 +10.956171 0.000000 +10.954645 0.000000 +10.953119 0.000000 +10.951593 0.000000 +10.950067 0.000000 +10.948541 0.000000 +10.947015 0.000000 +10.945489 0.000000 +10.943963 0.000000 +10.942437 0.000000 +10.940911 0.000000 +10.939385 0.000000 +10.937859 0.000000 +10.936333 0.000000 +10.934806 0.000000 +10.933280 0.000000 +10.931754 0.000000 +10.930228 0.000000 +10.928702 0.000000 +10.927176 0.000000 +10.925650 0.000000 +10.924124 0.000000 +10.922598 0.000000 +10.921072 0.000000 +10.919546 0.000000 +10.918020 0.000000 +10.916494 0.000000 +10.914968 0.000000 +10.913442 0.000000 +10.911916 0.000000 +10.910389 0.000000 +10.908863 0.000000 +10.907337 0.000000 +10.905811 0.000000 +10.904285 0.000000 +10.902759 0.000000 +10.901233 0.000000 +10.899707 0.000000 +10.898181 0.000000 +10.896655 0.000000 +10.895129 0.000000 +10.893603 0.000000 +10.892077 0.000000 +10.890551 0.000000 +10.889025 0.000000 +10.887498 0.000000 +10.885972 0.000000 +10.884446 0.000000 +10.882920 0.000000 +10.881394 0.000000 +10.879868 0.000000 +10.878342 0.000000 +10.876816 0.000000 +10.875290 0.000000 +10.873764 0.000000 +10.872238 0.000000 +10.870712 0.000000 +10.869186 0.000000 +10.867660 0.000000 +10.866134 0.000000 +10.864607 0.000000 +10.863081 0.000000 +10.861555 0.000000 +10.860029 0.000000 +10.858503 0.000000 +10.856977 0.000000 +10.855451 0.000000 +10.853925 0.000000 +10.852399 0.000000 +10.850873 0.000000 +10.849347 0.000000 +10.847821 0.000000 +10.846295 0.000000 +10.844769 0.000000 +10.843243 0.000000 +10.841717 0.000000 +10.840190 0.000000 +10.838664 0.000000 +10.837138 0.000000 +10.835612 0.000000 +10.834086 0.000000 +10.832560 0.000000 +10.831034 0.000000 +10.829508 0.000000 +10.827982 0.000000 +10.826456 0.000000 +10.824930 0.000000 +10.823404 0.000000 +10.821878 0.000000 +10.820352 0.000000 +10.818826 0.000000 +10.817299 0.000000 +10.815773 0.000000 +10.814247 0.000000 +10.812721 0.000000 +10.811195 0.000000 +10.809669 0.000000 +10.808143 0.000000 +10.806617 0.000000 +10.805091 0.000000 +10.803565 0.000000 +10.802039 0.000000 +10.800513 0.000000 +10.798987 0.000000 +10.797461 0.000000 +10.795935 0.000000 +10.794408 0.000000 +10.792882 0.000000 +10.791356 0.000000 +10.789830 0.000000 +10.788304 0.000000 +10.786778 0.000000 +10.785252 0.000000 +10.783726 0.000000 +10.782200 0.000000 +10.780674 0.000000 +10.779148 0.000000 +10.777622 0.000000 +10.776096 0.000000 +10.774570 0.000000 +10.773044 0.000000 +10.771518 0.000000 +10.769991 0.000000 +10.768465 0.000000 +10.766939 0.000000 +10.765413 0.000000 +10.763887 0.000000 +10.762361 0.000000 +10.760835 0.000000 +10.759309 0.000000 +10.757783 0.000000 +10.756257 0.000000 +10.754731 0.000000 +10.753205 0.000000 +10.751679 0.000000 +10.750153 0.000000 +10.748627 0.000000 +10.747100 0.000000 +10.745574 0.000000 +10.744048 0.000000 +10.742522 0.000000 +10.740996 0.000000 +10.739470 0.000000 +10.737944 0.000000 +10.736418 0.000000 +10.734892 0.000000 +10.733366 0.000000 +10.731840 0.000000 +10.730314 0.000000 +10.728788 0.000000 +10.727262 0.000000 +10.725736 0.000000 +10.724209 0.000000 +10.722683 0.000000 +10.721157 0.000000 +10.719631 0.000000 +10.718105 0.000000 +10.716579 0.000000 +10.715053 0.000000 +10.713527 0.000000 +10.712001 0.000000 +10.710475 0.000000 +10.708949 0.000000 +10.707423 0.000000 +10.705897 0.000000 +10.704371 0.000000 +10.702845 0.000000 +10.701319 0.000000 +10.699792 0.000000 +10.698266 0.000000 +10.696740 0.000000 +10.695214 0.000000 +10.693688 0.000000 +10.692162 0.000000 +10.690636 0.000000 +10.689110 0.000000 +10.687584 0.000000 +10.686058 0.000000 +10.684532 0.000000 +10.683006 0.000000 +10.681480 0.000000 +10.679954 0.000000 +10.678428 0.000000 +10.676901 0.000000 +10.675375 0.000000 +10.673849 0.000000 +10.672323 0.000000 +10.670797 0.000000 +10.669271 0.000000 +10.667745 0.000000 +10.666219 0.000000 +10.664693 0.000000 +10.663167 0.000000 +10.661641 0.000000 +10.660115 0.000000 +10.658589 0.000000 +10.657063 0.000000 +10.655537 0.000000 +10.654010 0.000000 +10.652484 0.000000 +10.650958 0.000000 +10.649432 0.000000 +10.647906 0.000000 +10.646380 0.000000 +10.644854 0.000000 +10.643328 0.000000 +10.641802 0.000000 +10.640276 0.000000 +10.638750 0.000000 +10.637224 0.000000 +10.635698 0.000000 +10.634172 0.000000 +10.632646 0.000000 +10.631120 0.000000 +10.629593 0.000000 +10.628067 0.000000 +10.626541 0.000000 +10.625015 0.000000 +10.623489 0.000000 +10.621963 0.000000 +10.620437 0.000000 +10.618911 0.000000 +10.617385 0.000000 +10.615859 0.000000 +10.614333 0.000000 +10.612807 0.000000 +10.611281 0.000000 +10.609755 0.000000 +10.608229 0.000000 +10.606702 0.000000 +10.605176 0.000000 +10.603650 0.000000 +10.602124 0.000000 +10.600598 0.000000 +10.599072 0.000000 +10.597546 0.000000 +10.596020 0.000000 +10.594494 0.000000 +10.592968 0.000000 +10.591442 0.000000 +10.589916 0.000000 +10.588390 0.000000 +10.586864 0.000000 +10.585338 0.000000 +10.583812 0.000000 +10.582285 0.000000 +10.580759 0.000000 +10.579233 0.000000 +10.577707 0.000000 +10.576181 0.000000 +10.574655 0.000000 +10.573129 0.000000 +10.571603 0.000000 +10.570077 0.000000 +10.568551 0.000000 +10.567025 0.000000 +10.565499 0.000000 +10.563973 0.000000 +10.562447 0.000000 +10.560921 0.000000 +10.559394 0.000000 +10.557868 0.000000 +10.556342 0.000000 +10.554816 0.000000 +10.553290 0.000000 +10.551764 0.000000 +10.550238 0.000000 +10.548712 0.000000 +10.547186 0.000000 +10.545660 0.000000 +10.544134 0.000000 +10.542608 0.000000 +10.541082 0.000000 +10.539556 0.000000 +10.538030 0.000000 +10.536503 0.000000 +10.534977 0.000000 +10.533451 0.000000 +10.531925 0.000000 +10.530399 0.000000 +10.528873 0.000000 +10.527347 0.000000 +10.525821 0.000000 +10.524295 0.000000 +10.522769 0.000000 +10.521243 0.000000 +10.519717 0.000000 +10.518191 0.000000 +10.516665 0.000000 +10.515139 0.000000 +10.513613 0.000000 +10.512086 0.000000 +10.510560 0.000000 +10.509034 0.000000 +10.507508 0.000000 +10.505982 0.000000 +10.504456 0.000000 +10.502930 0.000000 +10.501404 0.000000 +10.499878 0.000000 +10.498352 0.000000 +10.496826 0.000000 +10.495300 0.000000 +10.493774 0.000000 +10.492248 0.000000 +10.490722 0.000000 +10.489195 0.000000 +10.487669 0.000000 +10.486143 0.000000 +10.484617 0.000000 +10.483091 0.000000 +10.481565 0.000000 +10.480039 0.000000 +10.478513 0.000000 +10.476987 0.000000 +10.475461 0.000000 +10.473935 0.000000 +10.472409 0.000000 +10.470883 0.000000 +10.469357 0.000000 +10.467831 0.000000 +10.466304 0.000000 +10.464778 0.000000 +10.463252 0.000000 +10.461726 0.000000 +10.460200 0.000000 +10.458674 0.000000 +10.457148 0.000000 +10.455622 0.000000 +10.454096 0.000000 +10.452570 0.000000 +10.451044 0.000000 +10.449518 0.000000 +10.447992 0.000000 +10.446466 0.000000 +10.444940 0.000000 +10.443414 0.000000 +10.441887 0.000000 +10.440361 0.000000 +10.438835 0.000000 +10.437309 0.000000 +10.435783 0.000000 +10.434257 0.000000 +10.432731 0.000000 +10.431205 0.000000 +10.429679 0.000000 +10.428153 0.000000 +10.426627 0.000000 +10.425101 0.000000 +10.423575 0.000000 +10.422049 0.000000 +10.420523 0.000000 +10.418996 0.000000 +10.417470 0.000000 +10.415944 0.000000 +10.414418 0.000000 +10.412892 0.000000 +10.411366 0.000000 +10.409840 0.000000 +10.408314 0.000000 +10.406788 0.000000 +10.405262 0.000000 +10.403736 0.000000 +10.402210 0.000000 +10.400684 0.000000 +10.399158 0.000000 +10.397632 0.000000 +10.396105 0.000000 +10.394579 0.000000 +10.393053 0.000000 +10.391527 0.000000 +10.390001 0.000000 +10.388475 0.000000 +10.386949 0.000000 +10.385423 0.000000 +10.383897 0.000000 +10.382371 0.000000 +10.380845 0.000000 +10.379319 0.000000 +10.377793 0.000000 +10.376267 0.000000 +10.374741 0.000000 +10.373215 0.000000 +10.371688 0.000000 +10.370162 0.000000 +10.368636 0.000000 +10.367110 0.000000 +10.365584 0.000000 +10.364058 0.000000 +10.362532 0.000000 +10.361006 0.000000 +10.359480 0.000000 +10.357954 0.000000 +10.356428 0.000000 +10.354902 0.000000 +10.353376 0.000000 +10.351850 0.000000 +10.350324 0.000000 +10.348797 0.000000 +10.347271 0.000000 +10.345745 0.000000 +10.344219 0.000000 +10.342693 0.000000 +10.341167 0.000000 +10.339641 0.000000 +10.338115 0.000000 +10.336589 0.000000 +10.335063 0.000000 +10.333537 0.000000 +10.332011 0.000000 +10.330485 0.000000 +10.328959 0.000000 +10.327433 0.000000 +10.325906 0.000000 +10.324380 0.000000 +10.322854 0.000000 +10.321328 0.000000 +10.319802 0.000000 +10.318276 0.000000 +10.316750 0.000000 +10.315224 0.000000 +10.313698 0.000000 +10.312172 0.000000 +10.310646 0.000000 +10.309120 0.000000 +10.307594 0.000000 +10.306068 0.000000 +10.304542 0.000000 +10.303016 0.000000 +10.301489 0.000000 +10.299963 0.000000 +10.298437 0.000000 +10.296911 0.000000 +10.295385 0.000000 +10.293859 0.000000 +10.292333 0.000000 +10.290807 0.000000 +10.289281 0.000000 +10.287755 0.000000 +10.286229 0.000000 +10.284703 0.000000 +10.283177 0.000000 +10.281651 0.000000 +10.280125 0.000000 +10.278598 0.000000 +10.277072 0.000000 +10.275546 0.000000 +10.274020 0.000000 +10.272494 0.000000 +10.270968 0.000000 +10.269442 0.000000 +10.267916 0.000000 +10.266390 0.000000 +10.264864 0.000000 +10.263338 0.000000 +10.261812 0.000000 +10.260286 0.000000 +10.258760 0.000000 +10.257234 0.000000 +10.255707 0.000000 +10.254181 0.000000 +10.252655 0.000000 +10.251129 0.000000 +10.249603 0.000000 +10.248077 0.000000 +10.246551 0.000000 +10.245025 0.000000 +10.243499 0.000000 +10.241973 0.000000 +10.240447 0.000000 +10.238921 0.000000 +10.237395 0.000000 +10.235869 0.000000 +10.234343 0.000000 +10.232817 0.000000 +10.231290 0.000000 +10.229764 0.000000 +10.228238 0.000000 +10.226712 0.000000 +10.225186 0.000000 +10.223660 0.000000 +10.222134 0.000000 +10.220608 0.000000 +10.219082 0.000000 +10.217556 0.000000 +10.216030 0.000000 +10.214504 0.000000 +10.212978 0.000000 +10.211452 0.000000 +10.209926 0.000000 +10.208399 0.000000 +10.206873 0.000000 +10.205347 0.000000 +10.203821 0.000000 +10.202295 0.000000 +10.200769 0.000000 +10.199243 0.000000 +10.197717 0.000000 +10.196191 0.000000 +10.194665 0.000000 +10.193139 0.000000 +10.191613 0.000000 +10.190087 0.000000 +10.188561 0.000000 +10.187035 0.000000 +10.185508 0.000000 +10.183982 0.000000 +10.182456 0.000000 +10.180930 0.000000 +10.179404 0.000000 +10.177878 0.000000 +10.176352 0.000000 +10.174826 0.000000 +10.173300 0.000000 +10.171774 0.000000 +10.170248 0.000000 +10.168722 0.000000 +10.167196 0.000000 +10.165670 0.000000 +10.164144 0.000000 +10.162618 0.000000 +10.161091 0.000000 +10.159565 0.000000 +10.158039 0.000000 +10.156513 0.000000 +10.154987 0.000000 +10.153461 0.000000 +10.151935 0.000000 +10.150409 0.000000 +10.148883 0.000000 +10.147357 0.000000 +10.145831 0.000000 +10.144305 0.000000 +10.142779 0.000000 +10.141253 0.000000 +10.139727 0.000000 +10.138200 0.000000 +10.136674 0.000000 +10.135148 0.000000 +10.133622 0.000000 +10.132096 0.000000 +10.130570 0.000000 +10.129044 0.000000 +10.127518 0.000000 +10.125992 0.000000 +10.124466 0.000000 +10.122940 0.000000 +10.121414 0.000000 +10.119888 0.000000 +10.118362 0.000000 +10.116836 0.000000 +10.115309 0.000000 +10.113783 0.000000 +10.112257 0.000000 +10.110731 0.000000 +10.109205 0.000000 +10.107679 0.000000 +10.106153 0.000000 +10.104627 0.000000 +10.103101 0.000000 +10.101575 0.000000 +10.100049 0.000000 +10.098523 0.000000 +10.096997 0.000000 +10.095471 0.000000 +10.093945 0.000000 +10.092419 0.000000 +10.090892 0.000000 +10.089366 0.000000 +10.087840 0.000000 +10.086314 0.000000 +10.084788 0.000000 +10.083262 0.000000 +10.081736 0.000000 +10.080210 0.000000 +10.078684 0.000000 +10.077158 0.000000 +10.075632 0.000000 +10.074106 0.000000 +10.072580 0.000000 +10.071054 0.000000 +10.069528 0.000000 +10.068001 0.000000 +10.066475 0.000000 +10.064949 0.000000 +10.063423 0.000000 +10.061897 0.000000 +10.060371 0.000000 +10.058845 0.000000 +10.057319 0.000000 +10.055793 0.000000 +10.054267 0.000000 +10.052741 0.000000 +10.051215 0.000000 +10.049689 0.000000 +10.048163 0.000000 +10.046637 0.000000 +10.045110 0.000000 +10.043584 0.000000 +10.042058 0.000000 +10.040532 0.000000 +10.039006 0.000000 +10.037480 0.000000 +10.035954 0.000000 +10.034428 0.000000 +10.032902 0.000000 +10.031376 0.000000 +10.029850 0.000000 +10.028324 0.000000 +10.026798 0.000000 +10.025272 0.000000 +10.023746 0.000000 +10.022220 0.000000 +10.020693 0.000000 +10.019167 0.000000 +10.017641 0.000000 +10.016115 0.000000 +10.014589 0.000000 +10.013063 0.000000 +10.011537 0.000000 +10.010011 0.000000 +10.008485 0.000000 +10.006959 0.000000 +10.005433 0.000000 +10.003907 0.000000 +10.002381 0.000000 +10.000855 0.000000 +9.999329 0.000000 +9.997802 0.000000 +9.996276 0.000000 +9.994750 0.000000 +9.993224 0.000000 +9.991698 0.000000 +9.990172 0.000000 +9.988646 0.000000 +9.987120 0.000000 +9.985594 0.000000 +9.984068 0.000000 +9.982542 0.000000 +9.981016 0.000000 +9.979490 0.000000 +9.977964 0.000000 +9.976438 0.000000 +9.974911 0.000000 +9.973385 0.000000 +9.971859 0.000000 +9.970333 0.000000 +9.968807 0.000000 +9.967281 0.000000 +9.965755 0.000000 +9.964229 0.000000 +9.962703 0.000000 +9.961177 0.000000 +9.959651 0.000000 +9.958125 0.000000 +9.956599 0.000000 +9.955073 0.000000 +9.953547 0.000000 +9.952021 0.000000 +9.950494 0.000000 +9.948968 0.000000 +9.947442 0.000000 +9.945916 0.000000 +9.944390 0.000000 +9.942864 0.000000 +9.941338 0.000000 +9.939812 0.000000 +9.938286 0.000000 +9.936760 0.000000 +9.935234 0.000000 +9.933708 0.000000 +9.932182 0.000000 +9.930656 0.000000 +9.929130 0.000000 +9.927603 0.000000 +9.926077 0.000000 +9.924551 0.000000 +9.923025 0.000000 +9.921499 0.000000 +9.919973 0.000000 +9.918447 0.000000 +9.916921 0.000000 +9.915395 0.000000 +9.913869 0.000000 +9.912343 0.000000 +9.910817 0.000000 +9.909291 0.000000 +9.907765 0.000000 +9.906239 0.000000 +9.904712 0.000000 +9.903186 0.000000 +9.901660 0.000000 +9.900134 0.000000 +9.898608 0.000000 +9.897082 0.000000 +9.895556 0.000000 +9.894030 0.000000 +9.892504 0.000000 +9.890978 0.000000 +9.889452 0.000000 +9.887926 0.000000 +9.886400 0.000000 +9.884874 0.000000 +9.883348 0.000000 +9.881822 0.000000 +9.880295 0.000000 +9.878769 0.000000 +9.877243 0.000000 +9.875717 0.000000 +9.874191 0.000000 +9.872665 0.000000 +9.871139 0.000000 +9.869613 0.000000 +9.868087 0.000000 +9.866561 0.000000 +9.865035 0.000000 +9.863509 0.000000 +9.861983 0.000000 +9.860457 0.000000 +9.858931 0.000000 +9.857404 0.000000 +9.855878 0.000000 +9.854352 0.000000 +9.852826 0.000000 +9.851300 0.000000 +9.849774 0.000000 +9.848248 0.000000 +9.846722 0.000000 +9.845196 0.000000 +9.843670 0.000000 +9.842144 0.000000 +9.840618 0.000000 +9.839092 0.000000 +9.837566 0.000000 +9.836040 0.000000 +9.834513 0.000000 +9.832987 0.000000 +9.831461 0.000000 +9.829935 0.000000 +9.828409 0.000000 +9.826883 0.000000 +9.825357 0.000000 +9.823831 0.000000 +9.822305 0.000000 +9.820779 0.000000 +9.819253 0.000000 +9.817727 0.000000 +9.816201 0.000000 +9.814675 0.000000 +9.813149 0.000000 +9.811623 0.000000 +9.810096 0.000000 +9.808570 0.000000 +9.807044 0.000000 +9.805518 0.000000 +9.803992 0.000000 +9.802466 0.000000 +9.800940 0.000000 +9.799414 0.000000 +9.797888 0.000000 +9.796362 0.000000 +9.794836 0.000000 +9.793310 0.000000 +9.791784 0.000000 +9.790258 0.000000 +9.788732 0.000000 +9.787205 0.000000 +9.785679 0.000000 +9.784153 0.000000 +9.782627 0.000000 +9.781101 0.000000 +9.779575 0.000000 +9.778049 0.000000 +9.776523 0.000000 +9.774997 0.000000 +9.773471 0.000000 +9.771945 0.000000 +9.770419 0.000000 +9.768893 0.000000 +9.767367 0.000000 +9.765841 0.000000 +9.764314 0.000000 +9.762788 0.000000 +9.761262 0.000000 +9.759736 0.000000 +9.758210 0.000000 +9.756684 0.000000 +9.755158 0.000000 +9.753632 0.000000 +9.752106 0.000000 +9.750580 0.000000 +9.749054 0.000000 +9.747528 0.000000 +9.746002 0.000000 +9.744476 0.000000 +9.742950 0.000000 +9.741424 0.000000 +9.739897 0.000000 +9.738371 0.000000 +9.736845 0.000000 +9.735319 0.000000 +9.733793 0.000000 +9.732267 0.000000 +9.730741 0.000000 +9.729215 0.000000 +9.727689 0.000000 +9.726163 0.000000 +9.724637 0.000000 +9.723111 0.000000 +9.721585 0.000000 +9.720059 0.000000 +9.718533 0.000000 +9.717006 0.000000 +9.715480 0.000000 +9.713954 0.000000 +9.712428 0.000000 +9.710902 0.000000 +9.709376 0.000000 +9.707850 0.000000 +9.706324 0.000000 +9.704798 0.000000 +9.703272 0.000000 +9.701746 0.000000 +9.700220 0.000000 +9.698694 0.000000 +9.697168 0.000000 +9.695642 0.000000 +9.694115 0.000000 +9.692589 0.000000 +9.691063 0.000000 +9.689537 0.000000 +9.688011 0.000000 +9.686485 0.000000 +9.684959 0.000000 +9.683433 0.000000 +9.681907 0.000000 +9.680381 0.000000 +9.678855 0.000000 +9.677329 0.000000 +9.675803 0.000000 +9.674277 0.000000 +9.672751 0.000000 +9.671225 0.000000 +9.669698 0.000000 +9.668172 0.000000 +9.666646 0.000000 +9.665120 0.000000 +9.663594 0.000000 +9.662068 0.000000 +9.660542 0.000000 +9.659016 0.000000 +9.657490 0.000000 +9.655964 0.000000 +9.654438 0.000000 +9.652912 0.000000 +9.651386 0.000000 +9.649860 0.000000 +9.648334 0.000000 +9.646807 0.000000 +9.645281 0.000000 +9.643755 0.000000 +9.642229 0.000000 +9.640703 0.000000 +9.639177 0.000000 +9.637651 0.000000 +9.636125 0.000000 +9.634599 0.000000 +9.633073 0.000000 +9.631547 0.000000 +9.630021 0.000000 +9.628495 0.000000 +9.626969 0.000000 +9.625443 0.000000 +9.623916 0.000000 +9.622390 0.000000 +9.620864 0.000000 +9.619338 0.000000 +9.617812 0.000000 +9.616286 0.000000 +9.614760 0.000000 +9.613234 0.000000 +9.611708 0.000000 +9.610182 0.000000 +9.608656 0.000000 +9.607130 0.000000 +9.605604 0.000000 +9.604078 0.000000 +9.602552 0.000000 +9.601026 0.000000 +9.599499 0.000000 +9.597973 0.000000 +9.596447 0.000000 +9.594921 0.000000 +9.593395 0.000000 +9.591869 0.000000 +9.590343 0.000000 +9.588817 0.000000 +9.587291 0.000000 +9.585765 0.000000 +9.584239 0.000000 +9.582713 0.000000 +9.581187 0.000000 +9.579661 0.000000 +9.578135 0.000000 +9.576608 0.000000 +9.575082 0.000000 +9.573556 0.000000 +9.572030 0.000000 +9.570504 0.000000 +9.568978 0.000000 +9.567452 0.000000 +9.565926 0.000000 +9.564400 0.000000 +9.562874 0.000000 +9.561348 0.000000 +9.559822 0.000000 +9.558296 0.000000 +9.556770 0.000000 +9.555244 0.000000 +9.553717 0.000000 +9.552191 0.000000 +9.550665 0.000000 +9.549139 0.000000 +9.547613 0.000000 +9.546087 0.000000 +9.544561 0.000000 +9.543035 0.000000 +9.541509 0.000000 +9.539983 0.000000 +9.538457 0.000000 +9.536931 0.000000 +9.535405 0.000000 +9.533879 0.000000 +9.532353 0.000000 +9.530827 0.000000 +9.529300 0.000000 +9.527774 0.000000 +9.526248 0.000000 +9.524722 0.000000 +9.523196 0.000000 +9.521670 0.000000 +9.520144 0.000000 +9.518618 0.000000 +9.517092 0.000000 +9.515566 0.000000 +9.514040 0.000000 +9.512514 0.000000 +9.510988 0.000000 +9.509462 0.000000 +9.507936 0.000000 +9.506409 0.000000 +9.504883 0.000000 +9.503357 0.000000 +9.501831 0.000000 +9.500305 0.000000 +9.498779 0.000000 +9.497253 0.000000 +9.495727 0.000000 +9.494201 0.000000 +9.492675 0.000000 +9.491149 0.000000 +9.489623 0.000000 +9.488097 0.000000 +9.486571 0.000000 +9.485045 0.000000 +9.483518 0.000000 +9.481992 0.000000 +9.480466 0.000000 +9.478940 0.000000 +9.477414 0.000000 +9.475888 0.000000 +9.474362 0.000000 +9.472836 0.000000 +9.471310 0.000000 +9.469784 0.000000 +9.468258 0.000000 +9.466732 0.000000 +9.465206 0.000000 +9.463680 0.000000 +9.462154 0.000000 +9.460628 0.000000 +9.459101 0.000000 +9.457575 0.000000 +9.456049 0.000000 +9.454523 0.000000 +9.452997 0.000000 +9.451471 0.000000 +9.449945 0.000000 +9.448419 0.000000 +9.446893 0.000000 +9.445367 0.000000 +9.443841 0.000000 +9.442315 0.000000 +9.440789 0.000000 +9.439263 0.000000 +9.437737 0.000000 +9.436210 0.000000 +9.434684 0.000000 +9.433158 0.000000 +9.431632 0.000000 +9.430106 0.000000 +9.428580 0.000000 +9.427054 0.000000 +9.425528 0.000000 +9.424002 0.000000 +9.422476 0.000000 +9.420950 0.000000 +9.419424 0.000000 +9.417898 0.000000 +9.416372 0.000000 +9.414846 0.000000 +9.413319 0.000000 +9.411793 0.000000 +9.410267 0.000000 +9.408741 0.000000 +9.407215 0.000000 +9.405689 0.000000 +9.404163 0.000000 +9.402637 0.000000 +9.401111 0.000000 +9.399585 0.000000 +9.398059 0.000000 +9.396533 0.000000 +9.395007 0.000000 +9.393481 0.000000 +9.391955 0.000000 +9.390429 0.000000 +9.388902 0.000000 +9.387376 0.000000 +9.385850 0.000000 +9.384324 0.000000 +9.382798 0.000000 +9.381272 0.000000 +9.379746 0.000000 +9.378220 0.000000 +9.376694 0.000000 +9.375168 0.000000 +9.373642 0.000000 +9.372116 0.000000 +9.370590 0.000000 +9.369064 0.000000 +9.367538 0.000000 +9.366011 0.000000 +9.364485 0.000000 +9.362959 0.000000 +9.361433 0.000000 +9.359907 0.000000 +9.358381 0.000000 +9.356855 0.000000 +9.355329 0.000000 +9.353803 0.000000 +9.352277 0.000000 +9.350751 0.000000 +9.349225 0.000000 +9.347699 0.000000 +9.346173 0.000000 +9.344647 0.000000 +9.343120 0.000000 +9.341594 0.000000 +9.340068 0.000000 +9.338542 0.000000 +9.337016 0.000000 +9.335490 0.000000 +9.333964 0.000000 +9.332438 0.000000 +9.330912 0.000000 +9.329386 0.000000 +9.327860 0.000000 +9.326334 0.000000 +9.324808 0.000000 +9.323282 0.000000 +9.321756 0.000000 +9.320230 0.000000 +9.318703 0.000000 +9.317177 0.000000 +9.315651 0.000000 +9.314125 0.000000 +9.312599 0.000000 +9.311073 0.000000 +9.309547 0.000000 +9.308021 0.000000 +9.306495 0.000000 +9.304969 0.000000 +9.303443 0.000000 +9.301917 0.000000 +9.300391 0.000000 +9.298865 0.000000 +9.297339 0.000000 +9.295812 0.000000 +9.294286 0.000000 +9.292760 0.000000 +9.291234 0.000000 +9.289708 0.000000 +9.288182 0.000000 +9.286656 0.000000 +9.285130 0.000000 +9.283604 0.000000 +9.282078 0.000000 +9.280552 0.000000 +9.279026 0.000000 +9.277500 0.000000 +9.275974 0.000000 +9.274448 0.000000 +9.272921 0.000000 +9.271395 0.000000 +9.269869 0.000000 +9.268343 0.000000 +9.266817 0.000000 +9.265291 0.000000 +9.263765 0.000000 +9.262239 0.000000 +9.260713 0.000000 +9.259187 0.000000 +9.257661 0.000000 +9.256135 0.000000 +9.254609 0.000000 +9.253083 0.000000 +9.251557 0.000000 +9.250031 0.000000 +9.248504 0.000000 +9.246978 0.000000 +9.245452 0.000000 +9.243926 0.000000 +9.242400 0.000000 +9.240874 0.000000 +9.239348 0.000000 +9.237822 0.000000 +9.236296 0.000000 +9.234770 0.000000 +9.233244 0.000000 +9.231718 0.000000 +9.230192 0.000000 +9.228666 0.000000 +9.227140 0.000000 +9.225613 0.000000 +9.224087 0.000000 +9.222561 0.000000 +9.221035 0.000000 +9.219509 0.000000 +9.217983 0.000000 +9.216457 0.000000 +9.214931 0.000000 +9.213405 0.000000 +9.211879 0.000000 +9.210353 0.000000 +9.208827 0.000000 +9.207301 0.000000 +9.205775 0.000000 +9.204249 0.000000 +9.202723 0.000000 +9.201196 0.000000 +9.199670 0.000000 +9.198144 0.000000 +9.196618 0.000000 +9.195092 0.000000 +9.193566 0.000000 +9.192040 0.000000 +9.190514 0.000000 +9.188988 0.000000 +9.187462 0.000000 +9.185936 0.000000 +9.184410 0.000000 +9.182884 0.000000 +9.181358 0.000000 +9.179832 0.000000 +9.178305 0.000000 +9.176779 0.000000 +9.175253 0.000000 +9.173727 0.000000 +9.172201 0.000000 +9.170675 0.000000 +9.169149 0.000000 +9.167623 0.000000 +9.166097 0.000000 +9.164571 0.000000 +9.163045 0.000000 +9.161519 0.000000 +9.159993 0.000000 +9.158467 0.000000 +9.156941 0.000000 +9.155414 0.000000 +9.153888 0.000000 +9.152362 0.000000 +9.150836 0.000000 +9.149310 0.000000 +9.147784 0.000000 +9.146258 0.000000 +9.144732 0.000000 +9.143206 0.000000 +9.141680 0.000000 +9.140154 0.000000 +9.138628 0.000000 +9.137102 0.000000 +9.135576 0.000000 +9.134050 0.000000 +9.132524 0.000000 +9.130997 0.000000 +9.129471 0.000000 +9.127945 0.000000 +9.126419 0.000000 +9.124893 0.000000 +9.123367 0.000000 +9.121841 0.000000 +9.120315 0.000000 +9.118789 0.000000 +9.117263 0.000000 +9.115737 0.000000 +9.114211 0.000000 +9.112685 0.000000 +9.111159 0.000000 +9.109633 0.000000 +9.108106 0.000000 +9.106580 0.000000 +9.105054 0.000000 +9.103528 0.000000 +9.102002 0.000000 +9.100476 0.000000 +9.098950 0.000000 +9.097424 0.000000 +9.095898 0.000000 +9.094372 0.000000 +9.092846 0.000000 +9.091320 0.000000 +9.089794 0.000000 +9.088268 0.000000 +9.086742 0.000000 +9.085215 0.000000 +9.083689 0.000000 +9.082163 0.000000 +9.080637 0.000000 +9.079111 0.000000 +9.077585 0.000000 +9.076059 0.000000 +9.074533 0.000000 +9.073007 0.000000 +9.071481 0.000000 +9.069955 0.000000 +9.068429 0.000000 +9.066903 0.000000 +9.065377 0.000000 +9.063851 0.000000 +9.062325 0.000000 +9.060798 0.000000 +9.059272 0.000000 +9.057746 0.000000 +9.056220 0.000000 +9.054694 0.000000 +9.053168 0.000000 +9.051642 0.000000 +9.050116 0.000000 +9.048590 0.000000 +9.047064 0.000000 +9.045538 0.000000 +9.044012 0.000000 +9.042486 0.000000 +9.040960 0.000000 +9.039434 0.000000 +9.037907 0.000000 +9.036381 0.000000 +9.034855 0.000000 +9.033329 0.000000 +9.031803 0.000000 +9.030277 0.000000 +9.028751 0.000000 +9.027225 0.000000 +9.025699 0.000000 +9.024173 0.000000 +9.022647 0.000000 +9.021121 0.000000 +9.019595 0.000000 +9.018069 0.000000 +9.016543 0.000000 +9.015016 0.000000 +9.013490 0.000000 +9.011964 0.000000 +9.010438 0.000000 +9.008912 0.000000 +9.007386 0.000000 +9.005860 0.000000 +9.004334 0.000000 +9.002808 0.000000 +9.001282 0.000000 +8.999756 0.000000 +8.998230 0.000000 +8.996704 0.000000 +8.995178 0.000000 +8.993652 0.000000 +8.992126 0.000000 +8.990599 0.000000 +8.989073 0.000000 +8.987547 0.000000 +8.986021 0.000000 +8.984495 0.000000 +8.982969 0.000000 +8.981443 0.000000 +8.979917 0.000000 +8.978391 0.000000 +8.976865 0.000000 +8.975339 0.000000 +8.973813 0.000000 +8.972287 0.000000 +8.970761 0.000000 +8.969235 0.000000 +8.967708 0.000000 +8.966182 0.000000 +8.964656 0.000000 +8.963130 0.000000 +8.961604 0.000000 +8.960078 0.000000 +8.958552 0.000000 +8.957026 0.000000 +8.955500 0.000000 +8.953974 0.000000 +8.952448 0.000000 +8.950922 0.000000 +8.949396 0.000000 +8.947870 0.000000 +8.946344 0.000000 +8.944817 0.000000 +8.943291 0.000000 +8.941765 0.000000 +8.940239 0.000000 +8.938713 0.000000 +8.937187 0.000000 +8.935661 0.000000 +8.934135 0.000000 +8.932609 0.000000 +8.931083 0.000000 +8.929557 0.000000 +8.928031 0.000000 +8.926505 0.000000 +8.924979 0.000000 +8.923453 0.000000 +8.921927 0.000000 +8.920400 0.000000 +8.918874 0.000000 +8.917348 0.000000 +8.915822 0.000000 +8.914296 0.000000 +8.912770 0.000000 +8.911244 0.000000 +8.909718 0.000000 +8.908192 0.000000 +8.906666 0.000000 +8.905140 0.000000 +8.903614 0.000000 +8.902088 0.000000 +8.900562 0.000000 +8.899036 0.000000 +8.897509 0.000000 +8.895983 0.000000 +8.894457 0.000000 +8.892931 0.000000 +8.891405 0.000000 +8.889879 0.000000 +8.888353 0.000000 +8.886827 0.000000 +8.885301 0.000000 +8.883775 0.000000 +8.882249 0.000000 +8.880723 0.000000 +8.879197 0.000000 +8.877671 0.000000 +8.876145 0.000000 +8.874618 0.000000 +8.873092 0.000000 +8.871566 0.000000 +8.870040 0.000000 +8.868514 0.000000 +8.866988 0.000000 +8.865462 0.000000 +8.863936 0.000000 +8.862410 0.000000 +8.860884 0.000000 +8.859358 0.000000 +8.857832 0.000000 +8.856306 0.000000 +8.854780 0.000000 +8.853254 0.000000 +8.851728 0.000000 +8.850201 0.000000 +8.848675 0.000000 +8.847149 0.000000 +8.845623 0.000000 +8.844097 0.000000 +8.842571 0.000000 +8.841045 0.000000 +8.839519 0.000000 +8.837993 0.000000 +8.836467 0.000000 +8.834941 0.000000 +8.833415 0.000000 +8.831889 0.000000 +8.830363 0.000000 +8.828837 0.000000 +8.827310 0.000000 +8.825784 0.000000 +8.824258 0.000000 +8.822732 0.000000 +8.821206 0.000000 +8.819680 0.000000 +8.818154 0.000000 +8.816628 0.000000 +8.815102 0.000000 +8.813576 0.000000 +8.812050 0.000000 +8.810524 0.000000 +8.808998 0.000000 +8.807472 0.000000 +8.805946 0.000000 +8.804419 0.000000 +8.802893 0.000000 +8.801367 0.000000 +8.799841 0.000000 +8.798315 0.000000 +8.796789 0.000000 +8.795263 0.000000 +8.793737 0.000000 +8.792211 0.000000 +8.790685 0.000000 +8.789159 0.000000 +8.787633 0.000000 +8.786107 0.000000 +8.784581 0.000000 +8.783055 0.000000 +8.781529 0.000000 +8.780002 0.000000 +8.778476 0.000000 +8.776950 0.000000 +8.775424 0.000000 +8.773898 0.000000 +8.772372 0.000000 +8.770846 0.000000 +8.769320 0.000000 +8.767794 0.000000 +8.766268 0.000000 +8.764742 0.000000 +8.763216 0.000000 +8.761690 0.000000 +8.760164 0.000000 +8.758638 0.000000 +8.757111 0.000000 +8.755585 0.000000 +8.754059 0.000000 +8.752533 0.000000 +8.751007 0.000000 +8.749481 0.000000 +8.747955 0.000000 +8.746429 0.000000 +8.744903 0.000000 +8.743377 0.000000 +8.741851 0.000000 +8.740325 0.000000 +8.738799 0.000000 +8.737273 0.000000 +8.735747 0.000000 +8.734220 0.000000 +8.732694 0.000000 +8.731168 0.000000 +8.729642 0.000000 +8.728116 0.000000 +8.726590 0.000000 +8.725064 0.000000 +8.723538 0.000000 +8.722012 0.000000 +8.720486 0.000000 +8.718960 0.000000 +8.717434 0.000000 +8.715908 0.000000 +8.714382 0.000000 +8.712856 0.000000 +8.711330 0.000000 +8.709803 0.000000 +8.708277 0.000000 +8.706751 0.000000 +8.705225 0.000000 +8.703699 0.000000 +8.702173 0.000000 +8.700647 0.000000 +8.699121 0.000000 +8.697595 0.000000 +8.696069 0.000000 +8.694543 0.000000 +8.693017 0.000000 +8.691491 0.000000 +8.689965 0.000000 +8.688439 0.000000 +8.686912 0.000000 +8.685386 0.000000 +8.683860 0.000000 +8.682334 0.000000 +8.680808 0.000000 +8.679282 0.000000 +8.677756 0.000000 +8.676230 0.000000 +8.674704 0.000000 +8.673178 0.000000 +8.671652 0.000000 +8.670126 0.000000 +8.668600 0.000000 +8.667074 0.000000 +8.665548 0.000000 +8.664021 0.000000 +8.662495 0.000000 +8.660969 0.000000 +8.659443 0.000000 +8.657917 0.000000 +8.656391 0.000000 +8.654865 0.000000 +8.653339 0.000000 +8.651813 0.000000 +8.650287 0.000000 +8.648761 0.000000 +8.647235 0.000000 +8.645709 0.000000 +8.644183 0.000000 +8.642657 0.000000 +8.641131 0.000000 +8.639604 0.000000 +8.638078 0.000000 +8.636552 0.000000 +8.635026 0.000000 +8.633500 0.000000 +8.631974 0.000000 +8.630448 0.000000 +8.628922 0.000000 +8.627396 0.000000 +8.625870 0.000000 +8.624344 0.000000 +8.622818 0.000000 +8.621292 0.000000 +8.619766 0.000000 +8.618240 0.000000 +8.616713 0.000000 +8.615187 0.000000 +8.613661 0.000000 +8.612135 0.000000 +8.610609 0.000000 +8.609083 0.000000 +8.607557 0.000000 +8.606031 0.000000 +8.604505 0.000000 +8.602979 0.000000 +8.601453 0.000000 +8.599927 0.000000 +8.598401 0.000000 +8.596875 0.000000 +8.595349 0.000000 +8.593822 0.000000 +8.592296 0.000000 +8.590770 0.000000 +8.589244 0.000000 +8.587718 0.000000 +8.586192 0.000000 +8.584666 0.000000 +8.583140 0.000000 +8.581614 0.000000 +8.580088 0.000000 +8.578562 0.000000 +8.577036 0.000000 +8.575510 0.000000 +8.573984 0.000000 +8.572458 0.000000 +8.570932 0.000000 +8.569405 0.000000 +8.567879 0.000000 +8.566353 0.000000 +8.564827 0.000000 +8.563301 0.000000 +8.561775 0.000000 +8.560249 0.000000 +8.558723 0.000000 +8.557197 0.000000 +8.555671 0.000000 +8.554145 0.000000 +8.552619 0.000000 +8.551093 0.000000 +8.549567 0.000000 +8.548041 0.000000 +8.546514 0.000000 +8.544988 0.000000 +8.543462 0.000000 +8.541936 0.000000 +8.540410 0.000000 +8.538884 0.000000 +8.537358 0.000000 +8.535832 0.000000 +8.534306 0.000000 +8.532780 0.000000 +8.531254 0.000000 +8.529728 0.000000 +8.528202 0.000000 +8.526676 0.000000 +8.525150 0.000000 +8.523623 0.000000 +8.522097 0.000000 +8.520571 0.000000 +8.519045 0.000000 +8.517519 0.000000 +8.515993 0.000000 +8.514467 0.000000 +8.512941 0.000000 +8.511415 0.000000 +8.509889 0.000000 +8.508363 0.000000 +8.506837 0.000000 +8.505311 0.000000 +8.503785 0.000000 +8.502259 0.000000 +8.500733 0.000000 +8.499206 0.000000 +8.497680 0.000000 +8.496154 0.000000 +8.494628 0.000000 +8.493102 0.000000 +8.491576 0.000000 +8.490050 0.000000 +8.488524 0.000000 +8.486998 0.000000 +8.485472 0.000000 +8.483946 0.000000 +8.482420 0.000000 +8.480894 0.000000 +8.479368 0.000000 +8.477842 0.000000 +8.476315 0.000000 +8.474789 0.000000 +8.473263 0.000000 +8.471737 0.000000 +8.470211 0.000000 +8.468685 0.000000 +8.467159 0.000000 +8.465633 0.000000 +8.464107 0.000000 +8.462581 0.000000 +8.461055 0.000000 +8.459529 0.000000 +8.458003 0.000000 +8.456477 0.000000 +8.454951 0.000000 +8.453424 0.000000 +8.451898 0.000000 +8.450372 0.000000 +8.448846 0.000000 +8.447320 0.000000 +8.445794 0.000000 +8.444268 0.000000 +8.442742 0.000000 +8.441216 0.000000 +8.439690 0.000000 +8.438164 0.000000 +8.436638 0.000000 +8.435112 0.000000 +8.433586 0.000000 +8.432060 0.000000 +8.430534 0.000000 +8.429007 0.000000 +8.427481 0.000000 +8.425955 0.000000 +8.424429 0.000000 +8.422903 0.000000 +8.421377 0.000000 +8.419851 0.000000 +8.418325 0.000000 +8.416799 0.000000 +8.415273 0.000000 +8.413747 0.000000 +8.412221 0.000000 +8.410695 0.000000 +8.409169 0.000000 +8.407643 0.000000 +8.406116 0.000000 +8.404590 0.000000 +8.403064 0.000000 +8.401538 0.000000 +8.400012 0.000000 +8.398486 0.000000 +8.396960 0.000000 +8.395434 0.000000 +8.393908 0.000000 +8.392382 0.000000 +8.390856 0.000000 +8.389330 0.000000 +8.387804 0.000000 +8.386278 0.000000 +8.384752 0.000000 +8.383225 0.000000 +8.381699 0.000000 +8.380173 0.000000 +8.378647 0.000000 +8.377121 0.000000 +8.375595 0.000000 +8.374069 0.000000 +8.372543 0.000000 +8.371017 0.000000 +8.369491 0.000000 +8.367965 0.000000 +8.366439 0.000000 +8.364913 0.000000 +8.363387 0.000000 +8.361861 0.000000 +8.360335 0.000000 +8.358808 0.000000 +8.357282 0.000000 +8.355756 0.000000 +8.354230 0.000000 +8.352704 0.000000 +8.351178 0.000000 +8.349652 0.000000 +8.348126 0.000000 +8.346600 0.000000 +8.345074 0.000000 +8.343548 0.000000 +8.342022 0.000000 +8.340496 0.000000 +8.338970 0.000000 +8.337444 0.000000 +8.335917 0.000000 +8.334391 0.000000 +8.332865 0.000000 +8.331339 0.000000 +8.329813 0.000000 +8.328287 0.000000 +8.326761 0.000000 +8.325235 0.000000 +8.323709 0.000000 +8.322183 0.000000 +8.320657 0.000000 +8.319131 0.000000 +8.317605 0.000000 +8.316079 0.000000 +8.314553 0.000000 +8.313026 0.000000 +8.311500 0.000000 +8.309974 0.000000 +8.308448 0.000000 +8.306922 0.000000 +8.305396 0.000000 +8.303870 0.000000 +8.302344 0.000000 +8.300818 0.000000 +8.299292 0.000000 +8.297766 0.000000 +8.296240 0.000000 +8.294714 0.000000 +8.293188 0.000000 +8.291662 0.000000 +8.290136 0.000000 +8.288609 0.000000 +8.287083 0.000000 +8.285557 0.000000 +8.284031 0.000000 +8.282505 0.000000 +8.280979 0.000000 +8.279453 0.000000 +8.277927 0.000000 +8.276401 0.000000 +8.274875 0.000000 +8.273349 0.000000 +8.271823 0.000000 +8.270297 0.000000 +8.268771 0.000000 +8.267245 0.000000 +8.265718 0.000000 +8.264192 0.000000 +8.262666 0.000000 +8.261140 0.000000 +8.259614 0.000000 +8.258088 0.000000 +8.256562 0.000000 +8.255036 0.000000 +8.253510 0.000000 +8.251984 0.000000 +8.250458 0.000000 +8.248932 0.000000 +8.247406 0.000000 +8.245880 0.000000 +8.244354 0.000000 +8.242827 0.000000 +8.241301 0.000000 +8.239775 0.000000 +8.238249 0.000000 +8.236723 0.000000 +8.235197 0.000000 +8.233671 0.000000 +8.232145 0.000000 +8.230619 0.000000 +8.229093 0.000000 +8.227567 0.000000 +8.226041 0.000000 +8.224515 0.000000 +8.222989 0.000000 +8.221463 0.000000 +8.219937 0.000000 +8.218410 0.000000 +8.216884 0.000000 +8.215358 0.000000 +8.213832 0.000000 +8.212306 0.000000 +8.210780 0.000000 +8.209254 0.000000 +8.207728 0.000000 +8.206202 0.000000 +8.204676 0.000000 +8.203150 0.000000 +8.201624 0.000000 +8.200098 0.000000 +8.198572 0.000000 +8.197046 0.000000 +8.195519 0.000000 +8.193993 0.000000 +8.192467 0.000000 +8.190941 0.000000 +8.189415 0.000000 +8.187889 0.000000 +8.186363 0.000000 +8.184837 0.000000 +8.183311 0.000000 +8.181785 0.000000 +8.180259 0.000000 +8.178733 0.000000 +8.177207 0.000000 +8.175681 0.000000 +8.174155 0.000000 +8.172628 0.000000 +8.171102 0.000000 +8.169576 0.000000 +8.168050 0.000000 +8.166524 0.000000 +8.164998 0.000000 +8.163472 0.000000 +8.161946 0.000000 +8.160420 0.000000 +8.158894 0.000000 +8.157368 0.000000 +8.155842 0.000000 +8.154316 0.000000 +8.152790 0.000000 +8.151264 0.000000 +8.149738 0.000000 +8.148211 0.000000 +8.146685 0.000000 +8.145159 0.000000 +8.143633 0.000000 +8.142107 0.000000 +8.140581 0.000000 +8.139055 0.000000 +8.137529 0.000000 +8.136003 0.000000 +8.134477 0.000000 +8.132951 0.000000 +8.131425 0.000000 +8.129899 0.000000 +8.128373 0.000000 +8.126847 0.000000 +8.125320 0.000000 +8.123794 0.000000 +8.122268 0.000000 +8.120742 0.000000 +8.119216 0.000000 +8.117690 0.000000 +8.116164 0.000000 +8.114638 0.000000 +8.113112 0.000000 +8.111586 0.000000 +8.110060 0.000000 +8.108534 0.000000 +8.107008 0.000000 +8.105482 0.000000 +8.103956 0.000000 +8.102429 0.000000 +8.100903 0.000000 +8.099377 0.000000 +8.097851 0.000000 +8.096325 0.000000 +8.094799 0.000000 +8.093273 0.000000 +8.091747 0.000000 +8.090221 0.000000 +8.088695 0.000000 +8.087169 0.000000 +8.085643 0.000000 +8.084117 0.000000 +8.082591 0.000000 +8.081065 0.000000 +8.079539 0.000000 +8.078012 0.000000 +8.076486 0.000000 +8.074960 0.000000 +8.073434 0.000000 +8.071908 0.000000 +8.070382 0.000000 +8.068856 0.000000 +8.067330 0.000000 +8.065804 0.000000 +8.064278 0.000000 +8.062752 0.000000 +8.061226 0.000000 +8.059700 0.000000 +8.058174 0.000000 +8.056648 0.000000 +8.055121 0.000000 +8.053595 0.000000 +8.052069 0.000000 +8.050543 0.000000 +8.049017 0.000000 +8.047491 0.000000 +8.045965 0.000000 +8.044439 0.000000 +8.042913 0.000000 +8.041387 0.000000 +8.039861 0.000000 +8.038335 0.000000 +8.036809 0.000000 +8.035283 0.000000 +8.033757 0.000000 +8.032230 0.000000 +8.030704 0.000000 +8.029178 0.000000 +8.027652 0.000000 +8.026126 0.000000 +8.024600 0.000000 +8.023074 0.000000 +8.021548 0.000000 +8.020022 0.000000 +8.018496 0.000000 +8.016970 0.000000 +8.015444 0.000000 +8.013918 0.000000 +8.012392 0.000000 +8.010866 0.000000 +8.009340 0.000000 +8.007813 0.000000 +8.006287 0.000000 +8.004761 0.000000 +8.003235 0.000000 +8.001709 0.000000 +8.000183 0.000000 +7.998657 0.000000 +7.997131 0.000000 +7.995605 0.000000 +7.994079 0.000000 +7.992553 0.000000 +7.991027 0.000000 +7.989501 0.000000 +7.987975 0.000000 +7.986449 0.000000 +7.984922 0.000000 +7.983396 0.000000 +7.981870 0.000000 +7.980344 0.000000 +7.978818 0.000000 +7.977292 0.000000 +7.975766 0.000000 +7.974240 0.000000 +7.972714 0.000000 +7.971188 0.000000 +7.969662 0.000000 +7.968136 0.000000 +7.966610 0.000000 +7.965084 0.000000 +7.963558 0.000000 +7.962031 0.000000 +7.960505 0.000000 +7.958979 0.000000 +7.957453 0.000000 +7.955927 0.000000 +7.954401 0.000000 +7.952875 0.000000 +7.951349 0.000000 +7.949823 0.000000 +7.948297 0.000000 +7.946771 0.000000 +7.945245 0.000000 +7.943719 0.000000 +7.942193 0.000000 +7.940667 0.000000 +7.939141 0.000000 +7.937614 0.000000 +7.936088 0.000000 +7.934562 0.000000 +7.933036 0.000000 +7.931510 0.000000 +7.929984 0.000000 +7.928458 0.000000 +7.926932 0.000000 +7.925406 0.000000 +7.923880 0.000000 +7.922354 0.000000 +7.920828 0.000000 +7.919302 0.000000 +7.917776 0.000000 +7.916250 0.000000 +7.914723 0.000000 +7.913197 0.000000 +7.911671 0.000000 +7.910145 0.000000 +7.908619 0.000000 +7.907093 0.000000 +7.905567 0.000000 +7.904041 0.000000 +7.902515 0.000000 +7.900989 0.000000 +7.899463 0.000000 +7.897937 0.000000 +7.896411 0.000000 +7.894885 0.000000 +7.893359 0.000000 +7.891832 0.000000 +7.890306 0.000000 +7.888780 0.000000 +7.887254 0.000000 +7.885728 0.000000 +7.884202 0.000000 +7.882676 0.000000 +7.881150 0.000000 +7.879624 0.000000 +7.878098 0.000000 +7.876572 0.000000 +7.875046 0.000000 +7.873520 0.000000 +7.871994 0.000000 +7.870468 0.000000 +7.868942 0.000000 +7.867415 0.000000 +7.865889 0.000000 +7.864363 0.000000 +7.862837 0.000000 +7.861311 0.000000 +7.859785 0.000000 +7.858259 0.000000 +7.856733 0.000000 +7.855207 0.000000 +7.853681 0.000000 +7.852155 0.000000 +7.850629 0.000000 +7.849103 0.000000 +7.847577 0.000000 +7.846051 0.000000 +7.844524 0.000000 +7.842998 0.000000 +7.841472 0.000000 +7.839946 0.000000 +7.838420 0.000000 +7.836894 0.000000 +7.835368 0.000000 +7.833842 0.000000 +7.832316 0.000000 +7.830790 0.000000 +7.829264 0.000000 +7.827738 0.000000 +7.826212 0.000000 +7.824686 0.000000 +7.823160 0.000000 +7.821634 0.000000 +7.820107 0.000000 +7.818581 0.000000 +7.817055 0.000000 +7.815529 0.000000 +7.814003 0.000000 +7.812477 0.000000 +7.810951 0.000000 +7.809425 0.000000 +7.807899 0.000000 +7.806373 0.000000 +7.804847 0.000000 +7.803321 0.000000 +7.801795 0.000000 +7.800269 0.000000 +7.798743 0.000000 +7.797216 0.000000 +7.795690 0.000000 +7.794164 0.000000 +7.792638 0.000000 +7.791112 0.000000 +7.789586 0.000000 +7.788060 0.000000 +7.786534 0.000000 +7.785008 0.000000 +7.783482 0.000000 +7.781956 0.000000 +7.780430 0.000000 +7.778904 0.000000 +7.777378 0.000000 +7.775852 0.000000 +7.774325 0.000000 +7.772799 0.000000 +7.771273 0.000000 +7.769747 0.000000 +7.768221 0.000000 +7.766695 0.000000 +7.765169 0.000000 +7.763643 0.000000 +7.762117 0.000000 +7.760591 0.000000 +7.759065 0.000000 +7.757539 0.000000 +7.756013 0.000000 +7.754487 0.000000 +7.752961 0.000000 +7.751435 0.000000 +7.749908 0.000000 +7.748382 0.000000 +7.746856 0.000000 +7.745330 0.000000 +7.743804 0.000000 +7.742278 0.000000 +7.740752 0.000000 +7.739226 0.000000 +7.737700 0.000000 +7.736174 0.000000 +7.734648 0.000000 +7.733122 0.000000 +7.731596 0.000000 +7.730070 0.000000 +7.728544 0.000000 +7.727017 0.000000 +7.725491 0.000000 +7.723965 0.000000 +7.722439 0.000000 +7.720913 0.000000 +7.719387 0.000000 +7.717861 0.000000 +7.716335 0.000000 +7.714809 0.000000 +7.713283 0.000000 +7.711757 0.000000 +7.710231 0.000000 +7.708705 0.000000 +7.707179 0.000000 +7.705653 0.000000 +7.704126 0.000000 +7.702600 0.000000 +7.701074 0.000000 +7.699548 0.000000 +7.698022 0.000000 +7.696496 0.000000 +7.694970 0.000000 +7.693444 0.000000 +7.691918 0.000000 +7.690392 0.000000 +7.688866 0.000000 +7.687340 0.000000 +7.685814 0.000000 +7.684288 0.000000 +7.682762 0.000000 +7.681236 0.000000 +7.679709 0.000000 +7.678183 0.000000 +7.676657 0.000000 +7.675131 0.000000 +7.673605 0.000000 +7.672079 0.000000 +7.670553 0.000000 +7.669027 0.000000 +7.667501 0.000000 +7.665975 0.000000 +7.664449 0.000000 +7.662923 0.000000 +7.661397 0.000000 +7.659871 0.000000 +7.658345 0.000000 +7.656818 0.000000 +7.655292 0.000000 +7.653766 0.000000 +7.652240 0.000000 +7.650714 0.000000 +7.649188 0.000000 +7.647662 0.000000 +7.646136 0.000000 +7.644610 0.000000 +7.643084 0.000000 +7.641558 0.000000 +7.640032 0.000000 +7.638506 0.000000 +7.636980 0.000000 +7.635454 0.000000 +7.633927 0.000000 +7.632401 0.000000 +7.630875 0.000000 +7.629349 0.000000 +7.627823 0.000000 +7.626297 0.000000 +7.624771 0.000000 +7.623245 0.000000 +7.621719 0.000000 +7.620193 0.000000 +7.618667 0.000000 +7.617141 0.000000 +7.615615 0.000000 +7.614089 0.000000 +7.612563 0.000000 +7.611037 0.000000 +7.609510 0.000000 +7.607984 0.000000 +7.606458 0.000000 +7.604932 0.000000 +7.603406 0.000000 +7.601880 0.000000 +7.600354 0.000000 +7.598828 0.000000 +7.597302 0.000000 +7.595776 0.000000 +7.594250 0.000000 +7.592724 0.000000 +7.591198 0.000000 +7.589672 0.000000 +7.588146 0.000000 +7.586619 0.000000 +7.585093 0.000000 +7.583567 0.000000 +7.582041 0.000000 +7.580515 0.000000 +7.578989 0.000000 +7.577463 0.000000 +7.575937 0.000000 +7.574411 0.000000 +7.572885 0.000000 +7.571359 0.000000 +7.569833 0.000000 +7.568307 0.000000 +7.566781 0.000000 +7.565255 0.000000 +7.563728 0.000000 +7.562202 0.000000 +7.560676 0.000000 +7.559150 0.000000 +7.557624 0.000000 +7.556098 0.000000 +7.554572 0.000000 +7.553046 0.000000 +7.551520 0.000000 +7.549994 0.000000 +7.548468 0.000000 +7.546942 0.000000 +7.545416 0.000000 +7.543890 0.000000 +7.542364 0.000000 +7.540838 0.000000 +7.539311 0.000000 +7.537785 0.000000 +7.536259 0.000000 +7.534733 0.000000 +7.533207 0.000000 +7.531681 0.000000 +7.530155 0.000000 +7.528629 0.000000 +7.527103 0.000000 +7.525577 0.000000 +7.524051 0.000000 +7.522525 0.000000 +7.520999 0.000000 +7.519473 0.000000 +7.517947 0.000000 +7.516420 0.000000 +7.514894 0.000000 +7.513368 0.000000 +7.511842 0.000000 +7.510316 0.000000 +7.508790 0.000000 +7.507264 0.000000 +7.505738 0.000000 +7.504212 0.000000 +7.502686 0.000000 +7.501160 0.000000 +7.499634 0.000000 +7.498108 0.000000 +7.496582 0.000000 +7.495056 0.000000 +7.493529 0.000000 +7.492003 0.000000 +7.490477 0.000000 +7.488951 0.000000 +7.487425 0.000000 +7.485899 0.000000 +7.484373 0.000000 +7.482847 0.000000 +7.481321 0.000000 +7.479795 0.000000 +7.478269 0.000000 +7.476743 0.000000 +7.475217 0.000000 +7.473691 0.000000 +7.472165 0.000000 +7.470639 0.000000 +7.469112 0.000000 +7.467586 0.000000 +7.466060 0.000000 +7.464534 0.000000 +7.463008 0.000000 +7.461482 0.000000 +7.459956 0.000000 +7.458430 0.000000 +7.456904 0.000000 +7.455378 0.000000 +7.453852 0.000000 +7.452326 0.000000 +7.450800 0.000000 +7.449274 0.000000 +7.447748 0.000000 +7.446221 0.000000 +7.444695 0.000000 +7.443169 0.000000 +7.441643 0.000000 +7.440117 0.000000 +7.438591 0.000000 +7.437065 0.000000 +7.435539 0.000000 +7.434013 0.000000 +7.432487 0.000000 +7.430961 0.000000 +7.429435 0.000000 +7.427909 0.000000 +7.426383 0.000000 +7.424857 0.000000 +7.423330 0.000000 +7.421804 0.000000 +7.420278 0.000000 +7.418752 0.000000 +7.417226 0.000000 +7.415700 0.000000 +7.414174 0.000000 +7.412648 0.000000 +7.411122 0.000000 +7.409596 0.000000 +7.408070 0.000000 +7.406544 0.000000 +7.405018 0.000000 +7.403492 0.000000 +7.401966 0.000000 +7.400440 0.000000 +7.398913 0.000000 +7.397387 0.000000 +7.395861 0.000000 +7.394335 0.000000 +7.392809 0.000000 +7.391283 0.000000 +7.389757 0.000000 +7.388231 0.000000 +7.386705 0.000000 +7.385179 0.000000 +7.383653 0.000000 +7.382127 0.000000 +7.380601 0.000000 +7.379075 0.000000 +7.377549 0.000000 +7.376022 0.000000 +7.374496 0.000000 +7.372970 0.000000 +7.371444 0.000000 +7.369918 0.000000 +7.368392 0.000000 +7.366866 0.000000 +7.365340 0.000000 +7.363814 0.000000 +7.362288 0.000000 +7.360762 0.000000 +7.359236 0.000000 +7.357710 0.000000 +7.356184 0.000000 +7.354658 0.000000 +7.353131 0.000000 +7.351605 0.000000 +7.350079 0.000000 +7.348553 0.000000 +7.347027 0.000000 +7.345501 0.000000 +7.343975 0.000000 +7.342449 0.000000 +7.340923 0.000000 +7.339397 0.000000 +7.337871 0.000000 +7.336345 0.000000 +7.334819 0.000000 +7.333293 0.000000 +7.331767 0.000000 +7.330241 0.000000 +7.328714 0.000000 +7.327188 0.000000 +7.325662 0.000000 +7.324136 0.000000 +7.322610 0.000000 +7.321084 0.000000 +7.319558 0.000000 +7.318032 0.000000 +7.316506 0.000000 +7.314980 0.000000 +7.313454 0.000000 +7.311928 0.000000 +7.310402 0.000000 +7.308876 0.000000 +7.307350 0.000000 +7.305823 0.000000 +7.304297 0.000000 +7.302771 0.000000 +7.301245 0.000000 +7.299719 0.000000 +7.298193 0.000000 +7.296667 0.000000 +7.295141 0.000000 +7.293615 0.000000 +7.292089 0.000000 +7.290563 0.000000 +7.289037 0.000000 +7.287511 0.000000 +7.285985 0.000000 +7.284459 0.000000 +7.282932 0.000000 +7.281406 0.000000 +7.279880 0.000000 +7.278354 0.000000 +7.276828 0.000000 +7.275302 0.000000 +7.273776 0.000000 +7.272250 0.000000 +7.270724 0.000000 +7.269198 0.000000 +7.267672 0.000000 +7.266146 0.000000 +7.264620 0.000000 +7.263094 0.000000 +7.261568 0.000000 +7.260042 0.000000 +7.258515 0.000000 +7.256989 0.000000 +7.255463 0.000000 +7.253937 0.000000 +7.252411 0.000000 +7.250885 0.000000 +7.249359 0.000000 +7.247833 0.000000 +7.246307 0.000000 +7.244781 0.000000 +7.243255 0.000000 +7.241729 0.000000 +7.240203 0.000000 +7.238677 0.000000 +7.237151 0.000000 +7.235624 0.000000 +7.234098 0.000000 +7.232572 0.000000 +7.231046 0.000000 +7.229520 0.000000 +7.227994 0.000000 +7.226468 0.000000 +7.224942 0.000000 +7.223416 0.000000 +7.221890 0.000000 +7.220364 0.000000 +7.218838 0.000000 +7.217312 0.000000 +7.215786 0.000000 +7.214260 0.000000 +7.212733 0.000000 +7.211207 0.000000 +7.209681 0.000000 +7.208155 0.000000 +7.206629 0.000000 +7.205103 0.000000 +7.203577 0.000000 +7.202051 0.000000 +7.200525 0.000000 +7.198999 0.000000 +7.197473 0.000000 +7.195947 0.000000 +7.194421 0.000000 +7.192895 0.000000 +7.191369 0.000000 +7.189843 0.000000 +7.188316 0.000000 +7.186790 0.000000 +7.185264 0.000000 +7.183738 0.000000 +7.182212 0.000000 +7.180686 0.000000 +7.179160 0.000000 +7.177634 0.000000 +7.176108 0.000000 +7.174582 0.000000 +7.173056 0.000000 +7.171530 0.000000 +7.170004 0.000000 +7.168478 0.000000 +7.166952 0.000000 +7.165425 0.000000 +7.163899 0.000000 +7.162373 0.000000 +7.160847 0.000000 +7.159321 0.000000 +7.157795 0.000000 +7.156269 0.000000 +7.154743 0.000000 +7.153217 0.000000 +7.151691 0.000000 +7.150165 0.000000 +7.148639 0.000000 +7.147113 0.000000 +7.145587 0.000000 +7.144061 0.000000 +7.142534 0.000000 +7.141008 0.000000 +7.139482 0.000000 +7.137956 0.000000 +7.136430 0.000000 +7.134904 0.000000 +7.133378 0.000000 +7.131852 0.000000 +7.130326 0.000000 +7.128800 0.000000 +7.127274 0.000000 +7.125748 0.000000 +7.124222 0.000000 +7.122696 0.000000 +7.121170 0.000000 +7.119644 0.000000 +7.118117 0.000000 +7.116591 0.000000 +7.115065 0.000000 +7.113539 0.000000 +7.112013 0.000000 +7.110487 0.000000 +7.108961 0.000000 +7.107435 0.000000 +7.105909 0.000000 +7.104383 0.000000 +7.102857 0.000000 +7.101331 0.000000 +7.099805 0.000000 +7.098279 0.000000 +7.096753 0.000000 +7.095226 0.000000 +7.093700 0.000000 +7.092174 0.000000 +7.090648 0.000000 +7.089122 0.000000 +7.087596 0.000000 +7.086070 0.000000 +7.084544 0.000000 +7.083018 0.000000 +7.081492 0.000000 +7.079966 0.000000 +7.078440 0.000000 +7.076914 0.000000 +7.075388 0.000000 +7.073862 0.000000 +7.072335 0.000000 +7.070809 0.000000 +7.069283 0.000000 +7.067757 0.000000 +7.066231 0.000000 +7.064705 0.000000 +7.063179 0.000000 +7.061653 0.000000 +7.060127 0.000000 +7.058601 0.000000 +7.057075 0.000000 +7.055549 0.000000 +7.054023 0.000000 +7.052497 0.000000 +7.050971 0.000000 +7.049445 0.000000 +7.047918 0.000000 +7.046392 0.000000 +7.044866 0.000000 +7.043340 0.000000 +7.041814 0.000000 +7.040288 0.000000 +7.038762 0.000000 +7.037236 0.000000 +7.035710 0.000000 +7.034184 0.000000 +7.032658 0.000000 +7.031132 0.000000 +7.029606 0.000000 +7.028080 0.000000 +7.026554 0.000000 +7.025027 0.000000 +7.023501 0.000000 +7.021975 0.000000 +7.020449 0.000000 +7.018923 0.000000 +7.017397 0.000000 +7.015871 0.000000 +7.014345 0.000000 +7.012819 0.000000 +7.011293 0.000000 +7.009767 0.000000 +7.008241 0.000000 +7.006715 0.000000 +7.005189 0.000000 +7.003663 0.000000 +7.002136 0.000000 +7.000610 0.000000 +6.999084 0.000000 +6.997558 0.000000 +6.996032 0.000000 +6.994506 0.000000 +6.992980 0.000000 +6.991454 0.000000 +6.989928 0.000000 +6.988402 0.000000 +6.986876 0.000000 +6.985350 0.000000 +6.983824 0.000000 +6.982298 0.000000 +6.980772 0.000000 +6.979246 0.000000 +6.977719 0.000000 +6.976193 0.000000 +6.974667 0.000000 +6.973141 0.000000 +6.971615 0.000000 +6.970089 0.000000 +6.968563 0.000000 +6.967037 0.000000 +6.965511 0.000000 +6.963985 0.000000 +6.962459 0.000000 +6.960933 0.000000 +6.959407 0.000000 +6.957881 0.000000 +6.956355 0.000000 +6.954828 0.000000 +6.953302 0.000000 +6.951776 0.000000 +6.950250 0.000000 +6.948724 0.000000 +6.947198 0.000000 +6.945672 0.000000 +6.944146 0.000000 +6.942620 0.000000 +6.941094 0.000000 +6.939568 0.000000 +6.938042 0.000000 +6.936516 0.000000 +6.934990 0.000000 +6.933464 0.000000 +6.931937 0.000000 +6.930411 0.000000 +6.928885 0.000000 +6.927359 0.000000 +6.925833 0.000000 +6.924307 0.000000 +6.922781 0.000000 +6.921255 0.000000 +6.919729 0.000000 +6.918203 0.000000 +6.916677 0.000000 +6.915151 0.000000 +6.913625 0.000000 +6.912099 0.000000 +6.910573 0.000000 +6.909047 0.000000 +6.907520 0.000000 +6.905994 0.000000 +6.904468 0.000000 +6.902942 0.000000 +6.901416 0.000000 +6.899890 0.000000 +6.898364 0.000000 +6.896838 0.000000 +6.895312 0.000000 +6.893786 0.000000 +6.892260 0.000000 +6.890734 0.000000 +6.889208 0.000000 +6.887682 0.000000 +6.886156 0.000000 +6.884629 0.000000 +6.883103 0.000000 +6.881577 0.000000 +6.880051 0.000000 +6.878525 0.000000 +6.876999 0.000000 +6.875473 0.000000 +6.873947 0.000000 +6.872421 0.000000 +6.870895 0.000000 +6.869369 0.000000 +6.867843 0.000000 +6.866317 0.000000 +6.864791 0.000000 +6.863265 0.000000 +6.861738 0.000000 +6.860212 0.000000 +6.858686 0.000000 +6.857160 0.000000 +6.855634 0.000000 +6.854108 0.000000 +6.852582 0.000000 +6.851056 0.000000 +6.849530 0.000000 +6.848004 0.000000 +6.846478 0.000000 +6.844952 0.000000 +6.843426 0.000000 +6.841900 0.000000 +6.840374 0.000000 +6.838848 0.000000 +6.837321 0.000000 +6.835795 0.000000 +6.834269 0.000000 +6.832743 0.000000 +6.831217 0.000000 +6.829691 0.000000 +6.828165 0.000000 +6.826639 0.000000 +6.825113 0.000000 +6.823587 0.000000 +6.822061 0.000000 +6.820535 0.000000 +6.819009 0.000000 +6.817483 0.000000 +6.815957 0.000000 +6.814430 0.000000 +6.812904 0.000000 +6.811378 0.000000 +6.809852 0.000000 +6.808326 0.000000 +6.806800 0.000000 +6.805274 0.000000 +6.803748 0.000000 +6.802222 0.000000 +6.800696 0.000000 +6.799170 0.000000 +6.797644 0.000000 +6.796118 0.000000 +6.794592 0.000000 +6.793066 0.000000 +6.791539 0.000000 +6.790013 0.000000 +6.788487 0.000000 +6.786961 0.000000 +6.785435 0.000000 +6.783909 0.000000 +6.782383 0.000000 +6.780857 0.000000 +6.779331 0.000000 +6.777805 0.000000 +6.776279 0.000000 +6.774753 0.000000 +6.773227 0.000000 +6.771701 0.000000 +6.770175 0.000000 +6.768649 0.000000 +6.767122 0.000000 +6.765596 0.000000 +6.764070 0.000000 +6.762544 0.000000 +6.761018 0.000000 +6.759492 0.000000 +6.757966 0.000000 +6.756440 0.000000 +6.754914 0.000000 +6.753388 0.000000 +6.751862 0.000000 +6.750336 0.000000 +6.748810 0.000000 +6.747284 0.000000 +6.745758 0.000000 +6.744231 0.000000 +6.742705 0.000000 +6.741179 0.000000 +6.739653 0.000000 +6.738127 0.000000 +6.736601 0.000000 +6.735075 0.000000 +6.733549 0.000000 +6.732023 0.000000 +6.730497 0.000000 +6.728971 0.000000 +6.727445 0.000000 +6.725919 0.000000 +6.724393 0.000000 +6.722867 0.000000 +6.721340 0.000000 +6.719814 0.000000 +6.718288 0.000000 +6.716762 0.000000 +6.715236 0.000000 +6.713710 0.000000 +6.712184 0.000000 +6.710658 0.000000 +6.709132 0.000000 +6.707606 0.000000 +6.706080 0.000000 +6.704554 0.000000 +6.703028 0.000000 +6.701502 0.000000 +6.699976 0.000000 +6.698450 0.000000 +6.696923 0.000000 +6.695397 0.000000 +6.693871 0.000000 +6.692345 0.000000 +6.690819 0.000000 +6.689293 0.000000 +6.687767 0.000000 +6.686241 0.000000 +6.684715 0.000000 +6.683189 0.000000 +6.681663 0.000000 +6.680137 0.000000 +6.678611 0.000000 +6.677085 0.000000 +6.675559 0.000000 +6.674032 0.000000 +6.672506 0.000000 +6.670980 0.000000 +6.669454 0.000000 +6.667928 0.000000 +6.666402 0.000000 +6.664876 0.000000 +6.663350 0.000000 +6.661824 0.000000 +6.660298 0.000000 +6.658772 0.000000 +6.657246 0.000000 +6.655720 0.000000 +6.654194 0.000000 +6.652668 0.000000 +6.651141 0.000000 +6.649615 0.000000 +6.648089 0.000000 +6.646563 0.000000 +6.645037 0.000000 +6.643511 0.000000 +6.641985 0.000000 +6.640459 0.000000 +6.638933 0.000000 +6.637407 0.000000 +6.635881 0.000000 +6.634355 0.000000 +6.632829 0.000000 +6.631303 0.000000 +6.629777 0.000000 +6.628251 0.000000 +6.626724 0.000000 +6.625198 0.000000 +6.623672 0.000000 +6.622146 0.000000 +6.620620 0.000000 +6.619094 0.000000 +6.617568 0.000000 +6.616042 0.000000 +6.614516 0.000000 +6.612990 0.000000 +6.611464 0.000000 +6.609938 0.000000 +6.608412 0.000000 +6.606886 0.000000 +6.605360 0.000000 +6.603833 0.000000 +6.602307 0.000000 +6.600781 0.000000 +6.599255 0.000000 +6.597729 0.000000 +6.596203 0.000000 +6.594677 0.000000 +6.593151 0.000000 +6.591625 0.000000 +6.590099 0.000000 +6.588573 0.000000 +6.587047 0.000000 +6.585521 0.000000 +6.583995 0.000000 +6.582469 0.000000 +6.580942 0.000000 +6.579416 0.000000 +6.577890 0.000000 +6.576364 0.000000 +6.574838 0.000000 +6.573312 0.000000 +6.571786 0.000000 +6.570260 0.000000 +6.568734 0.000000 +6.567208 0.000000 +6.565682 0.000000 +6.564156 0.000000 +6.562630 0.000000 +6.561104 0.000000 +6.559578 0.000000 +6.558052 0.000000 +6.556525 0.000000 +6.554999 0.000000 +6.553473 0.000000 +6.551947 0.000000 +6.550421 0.000000 +6.548895 0.000000 +6.547369 0.000000 +6.545843 0.000000 +6.544317 0.000000 +6.542791 0.000000 +6.541265 0.000000 +6.539739 0.000000 +6.538213 0.000000 +6.536687 0.000000 +6.535161 0.000000 +6.533634 0.000000 +6.532108 0.000000 +6.530582 0.000000 +6.529056 0.000000 +6.527530 0.000000 +6.526004 0.000000 +6.524478 0.000000 +6.522952 0.000000 +6.521426 0.000000 +6.519900 0.000000 +6.518374 0.000000 +6.516848 0.000000 +6.515322 0.000000 +6.513796 0.000000 +6.512270 0.000000 +6.510743 0.000000 +6.509217 0.000000 +6.507691 0.000000 +6.506165 0.000000 +6.504639 0.000000 +6.503113 0.000000 +6.501587 0.000000 +6.500061 0.000000 +6.498535 0.000000 +6.497009 0.000000 +6.495483 0.000000 +6.493957 0.000000 +6.492431 0.000000 +6.490905 0.000000 +6.489379 0.000000 +6.487853 0.000000 +6.486326 0.000000 +6.484800 0.000000 +6.483274 0.000000 +6.481748 0.000000 +6.480222 0.000000 +6.478696 0.000000 +6.477170 0.000000 +6.475644 0.000000 +6.474118 0.000000 +6.472592 0.000000 +6.471066 0.000000 +6.469540 0.000000 +6.468014 0.000000 +6.466488 0.000000 +6.464962 0.000000 +6.463435 0.000000 +6.461909 0.000000 +6.460383 0.000000 +6.458857 0.000000 +6.457331 0.000000 +6.455805 0.000000 +6.454279 0.000000 +6.452753 0.000000 +6.451227 0.000000 +6.449701 0.000000 +6.448175 0.000000 +6.446649 0.000000 +6.445123 0.000000 +6.443597 0.000000 +6.442071 0.000000 +6.440545 0.000000 +6.439018 0.000000 +6.437492 0.000000 +6.435966 0.000000 +6.434440 0.000000 +6.432914 0.000000 +6.431388 0.000000 +6.429862 0.000000 +6.428336 0.000000 +6.426810 0.000000 +6.425284 0.000000 +6.423758 0.000000 +6.422232 0.000000 +6.420706 0.000000 +6.419180 0.000000 +6.417654 0.000000 +6.416127 0.000000 +6.414601 0.000000 +6.413075 0.000000 +6.411549 0.000000 +6.410023 0.000000 +6.408497 0.000000 +6.406971 0.000000 +6.405445 0.000000 +6.403919 0.000000 +6.402393 0.000000 +6.400867 0.000000 +6.399341 0.000000 +6.397815 0.000000 +6.396289 0.000000 +6.394763 0.000000 +6.393236 0.000000 +6.391710 0.000000 +6.390184 0.000000 +6.388658 0.000000 +6.387132 0.000000 +6.385606 0.000000 +6.384080 0.000000 +6.382554 0.000000 +6.381028 0.000000 +6.379502 0.000000 +6.377976 0.000000 +6.376450 0.000000 +6.374924 0.000000 +6.373398 0.000000 +6.371872 0.000000 +6.370346 0.000000 +6.368819 0.000000 +6.367293 0.000000 +6.365767 0.000000 +6.364241 0.000000 +6.362715 0.000000 +6.361189 0.000000 +6.359663 0.000000 +6.358137 0.000000 +6.356611 0.000000 +6.355085 0.000000 +6.353559 0.000000 +6.352033 0.000000 +6.350507 0.000000 +6.348981 0.000000 +6.347455 0.000000 +6.345928 0.000000 +6.344402 0.000000 +6.342876 0.000000 +6.341350 0.000000 +6.339824 0.000000 +6.338298 0.000000 +6.336772 0.000000 +6.335246 0.000000 +6.333720 0.000000 +6.332194 0.000000 +6.330668 0.000000 +6.329142 0.000000 +6.327616 0.000000 +6.326090 0.000000 +6.324564 0.000000 +6.323037 0.000000 +6.321511 0.000000 +6.319985 0.000000 +6.318459 0.000000 +6.316933 0.000000 +6.315407 0.000000 +6.313881 0.000000 +6.312355 0.000000 +6.310829 0.000000 +6.309303 0.000000 +6.307777 0.000000 +6.306251 0.000000 +6.304725 0.000000 +6.303199 0.000000 +6.301673 0.000000 +6.300147 0.000000 +6.298620 0.000000 +6.297094 0.000000 +6.295568 0.000000 +6.294042 0.000000 +6.292516 0.000000 +6.290990 0.000000 +6.289464 0.000000 +6.287938 0.000000 +6.286412 0.000000 +6.284886 0.000000 +6.283360 0.000000 +6.281834 0.000000 +6.280308 0.000000 +6.278782 0.000000 +6.277256 0.000000 +6.275729 0.000000 +6.274203 0.000000 +6.272677 0.000000 +6.271151 0.000000 +6.269625 0.000000 +6.268099 0.000000 +6.266573 0.000000 +6.265047 0.000000 +6.263521 0.000000 +6.261995 0.000000 +6.260469 0.000000 +6.258943 0.000000 +6.257417 0.000000 +6.255891 0.000000 +6.254365 0.000000 +6.252838 0.000000 +6.251312 0.000000 +6.249786 0.000000 +6.248260 0.000000 +6.246734 0.000000 +6.245208 0.000000 +6.243682 0.000000 +6.242156 0.000000 +6.240630 0.000000 +6.239104 0.000000 +6.237578 0.000000 +6.236052 0.000000 +6.234526 0.000000 +6.233000 0.000000 +6.231474 0.000000 +6.229948 0.000000 +6.228421 0.000000 +6.226895 0.000000 +6.225369 0.000000 +6.223843 0.000000 +6.222317 0.000000 +6.220791 0.000000 +6.219265 0.000000 +6.217739 0.000000 +6.216213 0.000000 +6.214687 0.000000 +6.213161 0.000000 +6.211635 0.000000 +6.210109 0.000000 +6.208583 0.000000 +6.207057 0.000000 +6.205530 0.000000 +6.204004 0.000000 +6.202478 0.000000 +6.200952 0.000000 +6.199426 0.000000 +6.197900 0.000000 +6.196374 0.000000 +6.194848 0.000000 +6.193322 0.000000 +6.191796 0.000000 +6.190270 0.000000 +6.188744 0.000000 +6.187218 0.000000 +6.185692 0.000000 +6.184166 0.000000 +6.182639 0.000000 +6.181113 0.000000 +6.179587 0.000000 +6.178061 0.000000 +6.176535 0.000000 +6.175009 0.000000 +6.173483 0.000000 +6.171957 0.000000 +6.170431 0.000000 +6.168905 0.000000 +6.167379 0.000000 +6.165853 0.000000 +6.164327 0.000000 +6.162801 0.000000 +6.161275 0.000000 +6.159749 0.000000 +6.158222 0.000000 +6.156696 0.000000 +6.155170 0.000000 +6.153644 0.000000 +6.152118 0.000000 +6.150592 0.000000 +6.149066 0.000000 +6.147540 0.000000 +6.146014 0.000000 +6.144488 0.000000 +6.142962 0.000000 +6.141436 0.000000 +6.139910 0.000000 +6.138384 0.000000 +6.136858 0.000000 +6.135331 0.000000 +6.133805 0.000000 +6.132279 0.000000 +6.130753 0.000000 +6.129227 0.000000 +6.127701 0.000000 +6.126175 0.000000 +6.124649 0.000000 +6.123123 0.000000 +6.121597 0.000000 +6.120071 0.000000 +6.118545 0.000000 +6.117019 0.000000 +6.115493 0.000000 +6.113967 0.000000 +6.112440 0.000000 +6.110914 0.000000 +6.109388 0.000000 +6.107862 0.000000 +6.106336 0.000000 +6.104810 0.000000 +6.103284 0.000000 +6.101758 0.000000 +6.100232 0.000000 +6.098706 0.000000 +6.097180 0.000000 +6.095654 0.000000 +6.094128 0.000000 +6.092602 0.000000 +6.091076 0.000000 +6.089550 0.000000 +6.088023 0.000000 +6.086497 0.000000 +6.084971 0.000000 +6.083445 0.000000 +6.081919 0.000000 +6.080393 0.000000 +6.078867 0.000000 +6.077341 0.000000 +6.075815 0.000000 +6.074289 0.000000 +6.072763 0.000000 +6.071237 0.000000 +6.069711 0.000000 +6.068185 0.000000 +6.066659 0.000000 +6.065132 0.000000 +6.063606 0.000000 +6.062080 0.000000 +6.060554 0.000000 +6.059028 0.000000 +6.057502 0.000000 +6.055976 0.000000 +6.054450 0.000000 +6.052924 0.000000 +6.051398 0.000000 +6.049872 0.000000 +6.048346 0.000000 +6.046820 0.000000 +6.045294 0.000000 +6.043768 0.000000 +6.042241 0.000000 +6.040715 0.000000 +6.039189 0.000000 +6.037663 0.000000 +6.036137 0.000000 +6.034611 0.000000 +6.033085 0.000000 +6.031559 0.000000 +6.030033 0.000000 +6.028507 0.000000 +6.026981 0.000000 +6.025455 0.000000 +6.023929 0.000000 +6.022403 0.000000 +6.020877 0.000000 +6.019351 0.000000 +6.017824 0.000000 +6.016298 0.000000 +6.014772 0.000000 +6.013246 0.000000 +6.011720 0.000000 +6.010194 0.000000 +6.008668 0.000000 +6.007142 0.000000 +6.005616 0.000000 +6.004090 0.000000 +6.002564 0.000000 +6.001038 0.000000 +5.999512 0.000000 +5.997986 0.000000 +5.996460 0.000000 +5.994933 0.000000 +5.993407 0.000000 +5.991881 0.000000 +5.990355 0.000000 +5.988829 0.000000 +5.987303 0.000000 +5.985777 0.000000 +5.984251 0.000000 +5.982725 0.000000 +5.981199 0.000000 +5.979673 0.000000 +5.978147 0.000000 +5.976621 0.000000 +5.975095 0.000000 +5.973569 0.000000 +5.972042 0.000000 +5.970516 0.000000 +5.968990 0.000000 +5.967464 0.000000 +5.965938 0.000000 +5.964412 0.000000 +5.962886 0.000000 +5.961360 0.000000 +5.959834 0.000000 +5.958308 0.000000 +5.956782 0.000000 +5.955256 0.000000 +5.953730 0.000000 +5.952204 0.000000 +5.950678 0.000000 +5.949152 0.000000 +5.947625 0.000000 +5.946099 0.000000 +5.944573 0.000000 +5.943047 0.000000 +5.941521 0.000000 +5.939995 0.000000 +5.938469 0.000000 +5.936943 0.000000 +5.935417 0.000000 +5.933891 0.000000 +5.932365 0.000000 +5.930839 0.000000 +5.929313 0.000000 +5.927787 0.000000 +5.926261 0.000000 +5.924734 0.000000 +5.923208 0.000001 +5.921682 0.000001 +5.920156 0.000001 +5.918630 0.000001 +5.917104 0.000001 +5.915578 0.000001 +5.914052 0.000001 +5.912526 0.000001 +5.911000 0.000001 +5.909474 0.000001 +5.907948 0.000001 +5.906422 0.000001 +5.904896 0.000001 +5.903370 0.000001 +5.901843 0.000001 +5.900317 0.000001 +5.898791 0.000001 +5.897265 0.000001 +5.895739 0.000001 +5.894213 0.000001 +5.892687 0.000001 +5.891161 0.000001 +5.889635 0.000001 +5.888109 0.000001 +5.886583 0.000001 +5.885057 0.000001 +5.883531 0.000001 +5.882005 0.000001 +5.880479 0.000001 +5.878953 0.000001 +5.877426 0.000001 +5.875900 0.000001 +5.874374 0.000001 +5.872848 0.000001 +5.871322 0.000001 +5.869796 0.000001 +5.868270 0.000001 +5.866744 0.000001 +5.865218 0.000001 +5.863692 0.000001 +5.862166 0.000001 +5.860640 0.000001 +5.859114 0.000001 +5.857588 0.000001 +5.856062 0.000001 +5.854535 0.000001 +5.853009 0.000001 +5.851483 0.000001 +5.849957 0.000001 +5.848431 0.000001 +5.846905 0.000001 +5.845379 0.000001 +5.843853 0.000001 +5.842327 0.000001 +5.840801 0.000001 +5.839275 0.000001 +5.837749 0.000001 +5.836223 0.000001 +5.834697 0.000001 +5.833171 0.000001 +5.831644 0.000001 +5.830118 0.000001 +5.828592 0.000001 +5.827066 0.000001 +5.825540 0.000001 +5.824014 0.000001 +5.822488 0.000001 +5.820962 0.000001 +5.819436 0.000001 +5.817910 0.000001 +5.816384 0.000001 +5.814858 0.000001 +5.813332 0.000001 +5.811806 0.000001 +5.810280 0.000001 +5.808754 0.000001 +5.807227 0.000001 +5.805701 0.000001 +5.804175 0.000001 +5.802649 0.000001 +5.801123 0.000001 +5.799597 0.000001 +5.798071 0.000001 +5.796545 0.000001 +5.795019 0.000001 +5.793493 0.000001 +5.791967 0.000001 +5.790441 0.000001 +5.788915 0.000001 +5.787389 0.000001 +5.785863 0.000001 +5.784336 0.000001 +5.782810 0.000001 +5.781284 0.000001 +5.779758 0.000001 +5.778232 0.000001 +5.776706 0.000001 +5.775180 0.000001 +5.773654 0.000001 +5.772128 0.000001 +5.770602 0.000001 +5.769076 0.000001 +5.767550 0.000001 +5.766024 0.000001 +5.764498 0.000001 +5.762972 0.000001 +5.761445 0.000001 +5.759919 0.000001 +5.758393 0.000001 +5.756867 0.000001 +5.755341 0.000001 +5.753815 0.000001 +5.752289 0.000001 +5.750763 0.000001 +5.749237 0.000001 +5.747711 0.000001 +5.746185 0.000001 +5.744659 0.000001 +5.743133 0.000001 +5.741607 0.000001 +5.740081 0.000001 +5.738555 0.000001 +5.737028 0.000001 +5.735502 0.000001 +5.733976 0.000001 +5.732450 0.000001 +5.730924 0.000001 +5.729398 0.000001 +5.727872 0.000001 +5.726346 0.000001 +5.724820 0.000001 +5.723294 0.000001 +5.721768 0.000001 +5.720242 0.000001 +5.718716 0.000001 +5.717190 0.000001 +5.715664 0.000001 +5.714137 0.000001 +5.712611 0.000001 +5.711085 0.000001 +5.709559 0.000001 +5.708033 0.000001 +5.706507 0.000001 +5.704981 0.000001 +5.703455 0.000001 +5.701929 0.000001 +5.700403 0.000001 +5.698877 0.000001 +5.697351 0.000001 +5.695825 0.000001 +5.694299 0.000001 +5.692773 0.000001 +5.691246 0.000001 +5.689720 0.000001 +5.688194 0.000001 +5.686668 0.000001 +5.685142 0.000001 +5.683616 0.000001 +5.682090 0.000001 +5.680564 0.000001 +5.679038 0.000001 +5.677512 0.000001 +5.675986 0.000001 +5.674460 0.000001 +5.672934 0.000001 +5.671408 0.000001 +5.669882 0.000001 +5.668356 0.000001 +5.666829 0.000001 +5.665303 0.000001 +5.663777 0.000001 +5.662251 0.000001 +5.660725 0.000001 +5.659199 0.000001 +5.657673 0.000001 +5.656147 0.000001 +5.654621 0.000001 +5.653095 0.000001 +5.651569 0.000001 +5.650043 0.000001 +5.648517 0.000001 +5.646991 0.000001 +5.645465 0.000001 +5.643938 0.000001 +5.642412 0.000001 +5.640886 0.000001 +5.639360 0.000001 +5.637834 0.000001 +5.636308 0.000001 +5.634782 0.000001 +5.633256 0.000001 +5.631730 0.000001 +5.630204 0.000001 +5.628678 0.000001 +5.627152 0.000001 +5.625626 0.000001 +5.624100 0.000001 +5.622574 0.000001 +5.621047 0.000001 +5.619521 0.000001 +5.617995 0.000001 +5.616469 0.000001 +5.614943 0.000001 +5.613417 0.000001 +5.611891 0.000001 +5.610365 0.000001 +5.608839 0.000001 +5.607313 0.000001 +5.605787 0.000001 +5.604261 0.000001 +5.602735 0.000001 +5.601209 0.000001 +5.599683 0.000001 +5.598157 0.000001 +5.596630 0.000001 +5.595104 0.000001 +5.593578 0.000001 +5.592052 0.000001 +5.590526 0.000001 +5.589000 0.000001 +5.587474 0.000001 +5.585948 0.000001 +5.584422 0.000001 +5.582896 0.000001 +5.581370 0.000001 +5.579844 0.000001 +5.578318 0.000001 +5.576792 0.000001 +5.575266 0.000001 +5.573739 0.000001 +5.572213 0.000001 +5.570687 0.000001 +5.569161 0.000001 +5.567635 0.000001 +5.566109 0.000001 +5.564583 0.000001 +5.563057 0.000001 +5.561531 0.000001 +5.560005 0.000001 +5.558479 0.000001 +5.556953 0.000001 +5.555427 0.000001 +5.553901 0.000001 +5.552375 0.000001 +5.550848 0.000001 +5.549322 0.000001 +5.547796 0.000001 +5.546270 0.000001 +5.544744 0.000001 +5.543218 0.000001 +5.541692 0.000001 +5.540166 0.000001 +5.538640 0.000001 +5.537114 0.000001 +5.535588 0.000001 +5.534062 0.000001 +5.532536 0.000001 +5.531010 0.000001 +5.529484 0.000001 +5.527958 0.000001 +5.526431 0.000001 +5.524905 0.000001 +5.523379 0.000001 +5.521853 0.000001 +5.520327 0.000001 +5.518801 0.000001 +5.517275 0.000001 +5.515749 0.000001 +5.514223 0.000001 +5.512697 0.000001 +5.511171 0.000001 +5.509645 0.000001 +5.508119 0.000001 +5.506593 0.000001 +5.505067 0.000001 +5.503540 0.000001 +5.502014 0.000001 +5.500488 0.000001 +5.498962 0.000001 +5.497436 0.000001 +5.495910 0.000001 +5.494384 0.000001 +5.492858 0.000001 +5.491332 0.000001 +5.489806 0.000001 +5.488280 0.000001 +5.486754 0.000001 +5.485228 0.000001 +5.483702 0.000001 +5.482176 0.000001 +5.480649 0.000001 +5.479123 0.000001 +5.477597 0.000001 +5.476071 0.000001 +5.474545 0.000001 +5.473019 0.000001 +5.471493 0.000001 +5.469967 0.000001 +5.468441 0.000001 +5.466915 0.000001 +5.465389 0.000001 +5.463863 0.000001 +5.462337 0.000001 +5.460811 0.000001 +5.459285 0.000001 +5.457759 0.000001 +5.456232 0.000001 +5.454706 0.000001 +5.453180 0.000001 +5.451654 0.000001 +5.450128 0.000001 +5.448602 0.000001 +5.447076 0.000001 +5.445550 0.000001 +5.444024 0.000001 +5.442498 0.000001 +5.440972 0.000001 +5.439446 0.000001 +5.437920 0.000001 +5.436394 0.000001 +5.434868 0.000001 +5.433341 0.000001 +5.431815 0.000001 +5.430289 0.000001 +5.428763 0.000001 +5.427237 0.000001 +5.425711 0.000001 +5.424185 0.000001 +5.422659 0.000001 +5.421133 0.000001 +5.419607 0.000001 +5.418081 0.000001 +5.416555 0.000001 +5.415029 0.000001 +5.413503 0.000001 +5.411977 0.000001 +5.410450 0.000001 +5.408924 0.000001 +5.407398 0.000001 +5.405872 0.000001 +5.404346 0.000001 +5.402820 0.000001 +5.401294 0.000001 +5.399768 0.000001 +5.398242 0.000001 +5.396716 0.000001 +5.395190 0.000001 +5.393664 0.000001 +5.392138 0.000001 +5.390612 0.000001 +5.389086 0.000001 +5.387560 0.000001 +5.386033 0.000001 +5.384507 0.000001 +5.382981 0.000001 +5.381455 0.000001 +5.379929 0.000001 +5.378403 0.000001 +5.376877 0.000001 +5.375351 0.000001 +5.373825 0.000001 +5.372299 0.000001 +5.370773 0.000001 +5.369247 0.000001 +5.367721 0.000001 +5.366195 0.000001 +5.364669 0.000001 +5.363142 0.000001 +5.361616 0.000001 +5.360090 0.000001 +5.358564 0.000001 +5.357038 0.000001 +5.355512 0.000001 +5.353986 0.000001 +5.352460 0.000001 +5.350934 0.000001 +5.349408 0.000001 +5.347882 0.000001 +5.346356 0.000001 +5.344830 0.000001 +5.343304 0.000001 +5.341778 0.000001 +5.340251 0.000001 +5.338725 0.000001 +5.337199 0.000001 +5.335673 0.000001 +5.334147 0.000001 +5.332621 0.000001 +5.331095 0.000001 +5.329569 0.000001 +5.328043 0.000001 +5.326517 0.000001 +5.324991 0.000001 +5.323465 0.000001 +5.321939 0.000001 +5.320413 0.000001 +5.318887 0.000001 +5.317361 0.000001 +5.315834 0.000001 +5.314308 0.000001 +5.312782 0.000001 +5.311256 0.000001 +5.309730 0.000001 +5.308204 0.000001 +5.306678 0.000001 +5.305152 0.000001 +5.303626 0.000001 +5.302100 0.000001 +5.300574 0.000001 +5.299048 0.000001 +5.297522 0.000001 +5.295996 0.000001 +5.294470 0.000001 +5.292943 0.000001 +5.291417 0.000001 +5.289891 0.000001 +5.288365 0.000001 +5.286839 0.000001 +5.285313 0.000001 +5.283787 0.000001 +5.282261 0.000001 +5.280735 0.000001 +5.279209 0.000001 +5.277683 0.000001 +5.276157 0.000001 +5.274631 0.000001 +5.273105 0.000001 +5.271579 0.000001 +5.270052 0.000001 +5.268526 0.000001 +5.267000 0.000001 +5.265474 0.000001 +5.263948 0.000001 +5.262422 0.000001 +5.260896 0.000001 +5.259370 0.000001 +5.257844 0.000001 +5.256318 0.000001 +5.254792 0.000001 +5.253266 0.000001 +5.251740 0.000001 +5.250214 0.000001 +5.248688 0.000001 +5.247162 0.000001 +5.245635 0.000001 +5.244109 0.000001 +5.242583 0.000001 +5.241057 0.000001 +5.239531 0.000001 +5.238005 0.000001 +5.236479 0.000001 +5.234953 0.000001 +5.233427 0.000001 +5.231901 0.000001 +5.230375 0.000001 +5.228849 0.000001 +5.227323 0.000001 +5.225797 0.000001 +5.224271 0.000001 +5.222744 0.000001 +5.221218 0.000001 +5.219692 0.000001 +5.218166 0.000001 +5.216640 0.000001 +5.215114 0.000001 +5.213588 0.000001 +5.212062 0.000001 +5.210536 0.000001 +5.209010 0.000001 +5.207484 0.000001 +5.205958 0.000001 +5.204432 0.000001 +5.202906 0.000001 +5.201380 0.000001 +5.199853 0.000001 +5.198327 0.000001 +5.196801 0.000001 +5.195275 0.000001 +5.193749 0.000001 +5.192223 0.000001 +5.190697 0.000001 +5.189171 0.000001 +5.187645 0.000001 +5.186119 0.000001 +5.184593 0.000001 +5.183067 0.000001 +5.181541 0.000001 +5.180015 0.000001 +5.178489 0.000001 +5.176963 0.000001 +5.175436 0.000001 +5.173910 0.000001 +5.172384 0.000001 +5.170858 0.000001 +5.169332 0.000001 +5.167806 0.000001 +5.166280 0.000001 +5.164754 0.000001 +5.163228 0.000001 +5.161702 0.000001 +5.160176 0.000001 +5.158650 0.000001 +5.157124 0.000001 +5.155598 0.000001 +5.154072 0.000001 +5.152545 0.000001 +5.151019 0.000001 +5.149493 0.000001 +5.147967 0.000001 +5.146441 0.000001 +5.144915 0.000001 +5.143389 0.000001 +5.141863 0.000001 +5.140337 0.000001 +5.138811 0.000001 +5.137285 0.000001 +5.135759 0.000001 +5.134233 0.000001 +5.132707 0.000001 +5.131181 0.000001 +5.129654 0.000001 +5.128128 0.000001 +5.126602 0.000001 +5.125076 0.000001 +5.123550 0.000001 +5.122024 0.000001 +5.120498 0.000001 +5.118972 0.000001 +5.117446 0.000001 +5.115920 0.000001 +5.114394 0.000001 +5.112868 0.000001 +5.111342 0.000001 +5.109816 0.000001 +5.108290 0.000001 +5.106764 0.000001 +5.105237 0.000001 +5.103711 0.000001 +5.102185 0.000001 +5.100659 0.000001 +5.099133 0.000001 +5.097607 0.000001 +5.096081 0.000001 +5.094555 0.000001 +5.093029 0.000001 +5.091503 0.000001 +5.089977 0.000001 +5.088451 0.000001 +5.086925 0.000001 +5.085399 0.000001 +5.083873 0.000001 +5.082346 0.000001 +5.080820 0.000001 +5.079294 0.000001 +5.077768 0.000001 +5.076242 0.000001 +5.074716 0.000001 +5.073190 0.000001 +5.071664 0.000001 +5.070138 0.000001 +5.068612 0.000001 +5.067086 0.000001 +5.065560 0.000001 +5.064034 0.000001 +5.062508 0.000001 +5.060982 0.000001 +5.059455 0.000001 +5.057929 0.000001 +5.056403 0.000001 +5.054877 0.000001 +5.053351 0.000001 +5.051825 0.000001 +5.050299 0.000001 +5.048773 0.000001 +5.047247 0.000001 +5.045721 0.000001 +5.044195 0.000001 +5.042669 0.000001 +5.041143 0.000002 +5.039617 0.000002 +5.038091 0.000002 +5.036565 0.000002 +5.035038 0.000002 +5.033512 0.000002 +5.031986 0.000002 +5.030460 0.000002 +5.028934 0.000002 +5.027408 0.000002 +5.025882 0.000002 +5.024356 0.000002 +5.022830 0.000002 +5.021304 0.000002 +5.019778 0.000002 +5.018252 0.000002 +5.016726 0.000002 +5.015200 0.000002 +5.013674 0.000002 +5.012147 0.000002 +5.010621 0.000002 +5.009095 0.000002 +5.007569 0.000002 +5.006043 0.000002 +5.004517 0.000002 +5.002991 0.000002 +5.001465 0.000002 +4.999939 0.000002 +4.998413 0.000002 +4.996887 0.000002 +4.995361 0.000002 +4.993835 0.000002 +4.992309 0.000002 +4.990783 0.000002 +4.989257 0.000002 +4.987730 0.000002 +4.986204 0.000002 +4.984678 0.000002 +4.983152 0.000002 +4.981626 0.000002 +4.980100 0.000002 +4.978574 0.000002 +4.977048 0.000002 +4.975522 0.000002 +4.973996 0.000002 +4.972470 0.000002 +4.970944 0.000002 +4.969418 0.000002 +4.967892 0.000002 +4.966366 0.000002 +4.964839 0.000002 +4.963313 0.000002 +4.961787 0.000002 +4.960261 0.000002 +4.958735 0.000002 +4.957209 0.000002 +4.955683 0.000002 +4.954157 0.000002 +4.952631 0.000002 +4.951105 0.000002 +4.949579 0.000002 +4.948053 0.000002 +4.946527 0.000002 +4.945001 0.000002 +4.943475 0.000002 +4.941948 0.000002 +4.940422 0.000002 +4.938896 0.000002 +4.937370 0.000002 +4.935844 0.000002 +4.934318 0.000002 +4.932792 0.000002 +4.931266 0.000002 +4.929740 0.000002 +4.928214 0.000002 +4.926688 0.000002 +4.925162 0.000002 +4.923636 0.000002 +4.922110 0.000002 +4.920584 0.000002 +4.919058 0.000002 +4.917531 0.000002 +4.916005 0.000002 +4.914479 0.000002 +4.912953 0.000002 +4.911427 0.000002 +4.909901 0.000002 +4.908375 0.000002 +4.906849 0.000002 +4.905323 0.000002 +4.903797 0.000002 +4.902271 0.000002 +4.900745 0.000002 +4.899219 0.000002 +4.897693 0.000002 +4.896167 0.000002 +4.894640 0.000002 +4.893114 0.000002 +4.891588 0.000002 +4.890062 0.000002 +4.888536 0.000002 +4.887010 0.000002 +4.885484 0.000002 +4.883958 0.000002 +4.882432 0.000002 +4.880906 0.000002 +4.879380 0.000002 +4.877854 0.000002 +4.876328 0.000002 +4.874802 0.000002 +4.873276 0.000002 +4.871749 0.000002 +4.870223 0.000002 +4.868697 0.000002 +4.867171 0.000002 +4.865645 0.000002 +4.864119 0.000002 +4.862593 0.000002 +4.861067 0.000002 +4.859541 0.000002 +4.858015 0.000002 +4.856489 0.000002 +4.854963 0.000002 +4.853437 0.000002 +4.851911 0.000002 +4.850385 0.000002 +4.848859 0.000002 +4.847332 0.000002 +4.845806 0.000002 +4.844280 0.000002 +4.842754 0.000002 +4.841228 0.000002 +4.839702 0.000002 +4.838176 0.000002 +4.836650 0.000002 +4.835124 0.000002 +4.833598 0.000002 +4.832072 0.000002 +4.830546 0.000002 +4.829020 0.000002 +4.827494 0.000002 +4.825968 0.000002 +4.824441 0.000002 +4.822915 0.000002 +4.821389 0.000002 +4.819863 0.000002 +4.818337 0.000002 +4.816811 0.000002 +4.815285 0.000002 +4.813759 0.000002 +4.812233 0.000002 +4.810707 0.000002 +4.809181 0.000002 +4.807655 0.000002 +4.806129 0.000003 +4.804603 0.000003 +4.803077 0.000003 +4.801550 0.000003 +4.800024 0.000003 +4.798498 0.000003 +4.796972 0.000003 +4.795446 0.000003 +4.793920 0.000003 +4.792394 0.000003 +4.790868 0.000003 +4.789342 0.000003 +4.787816 0.000003 +4.786290 0.000003 +4.784764 0.000003 +4.783238 0.000003 +4.781712 0.000003 +4.780186 0.000003 +4.778660 0.000003 +4.777133 0.000003 +4.775607 0.000003 +4.774081 0.000003 +4.772555 0.000003 +4.771029 0.000003 +4.769503 0.000003 +4.767977 0.000003 +4.766451 0.000003 +4.764925 0.000003 +4.763399 0.000003 +4.761873 0.000003 +4.760347 0.000003 +4.758821 0.000003 +4.757295 0.000003 +4.755769 0.000003 +4.754242 0.000003 +4.752716 0.000003 +4.751190 0.000003 +4.749664 0.000003 +4.748138 0.000003 +4.746612 0.000003 +4.745086 0.000003 +4.743560 0.000003 +4.742034 0.000003 +4.740508 0.000003 +4.738982 0.000003 +4.737456 0.000003 +4.735930 0.000003 +4.734404 0.000003 +4.732878 0.000003 +4.731351 0.000003 +4.729825 0.000003 +4.728299 0.000003 +4.726773 0.000003 +4.725247 0.000003 +4.723721 0.000003 +4.722195 0.000003 +4.720669 0.000003 +4.719143 0.000003 +4.717617 0.000003 +4.716091 0.000003 +4.714565 0.000003 +4.713039 0.000003 +4.711513 0.000003 +4.709987 0.000003 +4.708461 0.000003 +4.706934 0.000003 +4.705408 0.000003 +4.703882 0.000003 +4.702356 0.000003 +4.700830 0.000003 +4.699304 0.000003 +4.697778 0.000003 +4.696252 0.000003 +4.694726 0.000003 +4.693200 0.000003 +4.691674 0.000003 +4.690148 0.000003 +4.688622 0.000003 +4.687096 0.000004 +4.685570 0.000004 +4.684043 0.000004 +4.682517 0.000004 +4.680991 0.000004 +4.679465 0.000004 +4.677939 0.000004 +4.676413 0.000004 +4.674887 0.000004 +4.673361 0.000004 +4.671835 0.000004 +4.670309 0.000004 +4.668783 0.000004 +4.667257 0.000004 +4.665731 0.000004 +4.664205 0.000004 +4.662679 0.000004 +4.661152 0.000004 +4.659626 0.000004 +4.658100 0.000004 +4.656574 0.000004 +4.655048 0.000004 +4.653522 0.000004 +4.651996 0.000004 +4.650470 0.000004 +4.648944 0.000004 +4.647418 0.000004 +4.645892 0.000004 +4.644366 0.000004 +4.642840 0.000004 +4.641314 0.000004 +4.639788 0.000004 +4.638262 0.000004 +4.636735 0.000004 +4.635209 0.000004 +4.633683 0.000004 +4.632157 0.000004 +4.630631 0.000004 +4.629105 0.000004 +4.627579 0.000004 +4.626053 0.000004 +4.624527 0.000004 +4.623001 0.000004 +4.621475 0.000004 +4.619949 0.000004 +4.618423 0.000004 +4.616897 0.000004 +4.615371 0.000004 +4.613844 0.000005 +4.612318 0.000005 +4.610792 0.000005 +4.609266 0.000005 +4.607740 0.000005 +4.606214 0.000005 +4.604688 0.000005 +4.603162 0.000005 +4.601636 0.000005 +4.600110 0.000005 +4.598584 0.000005 +4.597058 0.000005 +4.595532 0.000005 +4.594006 0.000005 +4.592480 0.000005 +4.590953 0.000005 +4.589427 0.000005 +4.587901 0.000005 +4.586375 0.000005 +4.584849 0.000005 +4.583323 0.000005 +4.581797 0.000005 +4.580271 0.000005 +4.578745 0.000005 +4.577219 0.000005 +4.575693 0.000005 +4.574167 0.000005 +4.572641 0.000005 +4.571115 0.000005 +4.569589 0.000005 +4.568063 0.000005 +4.566536 0.000005 +4.565010 0.000005 +4.563484 0.000005 +4.561958 0.000006 +4.560432 0.000006 +4.558906 0.000006 +4.557380 0.000006 +4.555854 0.000006 +4.554328 0.000006 +4.552802 0.000006 +4.551276 0.000006 +4.549750 0.000006 +4.548224 0.000006 +4.546698 0.000006 +4.545172 0.000006 +4.543645 0.000006 +4.542119 0.000006 +4.540593 0.000006 +4.539067 0.000006 +4.537541 0.000006 +4.536015 0.000006 +4.534489 0.000006 +4.532963 0.000006 +4.531437 0.000006 +4.529911 0.000006 +4.528385 0.000006 +4.526859 0.000006 +4.525333 0.000006 +4.523807 0.000006 +4.522281 0.000007 +4.520754 0.000007 +4.519228 0.000007 +4.517702 0.000007 +4.516176 0.000007 +4.514650 0.000007 +4.513124 0.000007 +4.511598 0.000007 +4.510072 0.000007 +4.508546 0.000007 +4.507020 0.000007 +4.505494 0.000007 +4.503968 0.000007 +4.502442 0.000007 +4.500916 0.000007 +4.499390 0.000007 +4.497864 0.000007 +4.496337 0.000007 +4.494811 0.000007 +4.493285 0.000007 +4.491759 0.000008 +4.490233 0.000008 +4.488707 0.000008 +4.487181 0.000008 +4.485655 0.000008 +4.484129 0.000008 +4.482603 0.000008 +4.481077 0.000008 +4.479551 0.000008 +4.478025 0.000008 +4.476499 0.000008 +4.474973 0.000008 +4.473446 0.000008 +4.471920 0.000008 +4.470394 0.000008 +4.468868 0.000008 +4.467342 0.000009 +4.465816 0.000009 +4.464290 0.000009 +4.462764 0.000009 +4.461238 0.000009 +4.459712 0.000009 +4.458186 0.000009 +4.456660 0.000009 +4.455134 0.000009 +4.453608 0.000009 +4.452082 0.000009 +4.450555 0.000009 +4.449029 0.000009 +4.447503 0.000010 +4.445977 0.000010 +4.444451 0.000010 +4.442925 0.000010 +4.441399 0.000010 +4.439873 0.000010 +4.438347 0.000010 +4.436821 0.000010 +4.435295 0.000010 +4.433769 0.000010 +4.432243 0.000010 +4.430717 0.000011 +4.429191 0.000011 +4.427665 0.000011 +4.426138 0.000011 +4.424612 0.000011 +4.423086 0.000011 +4.421560 0.000011 +4.420034 0.000011 +4.418508 0.000011 +4.416982 0.000011 +4.415456 0.000012 +4.413930 0.000012 +4.412404 0.000012 +4.410878 0.000012 +4.409352 0.000012 +4.407826 0.000012 +4.406300 0.000012 +4.404774 0.000012 +4.403247 0.000012 +4.401721 0.000013 +4.400195 0.000013 +4.398669 0.000013 +4.397143 0.000013 +4.395617 0.000013 +4.394091 0.000013 +4.392565 0.000013 +4.391039 0.000014 +4.389513 0.000014 +4.387987 0.000014 +4.386461 0.000014 +4.384935 0.000014 +4.383409 0.000014 +4.381883 0.000014 +4.380356 0.000015 +4.378830 0.000015 +4.377304 0.000015 +4.375778 0.000015 +4.374252 0.000015 +4.372726 0.000015 +4.371200 0.000016 +4.369674 0.000016 +4.368148 0.000016 +4.366622 0.000016 +4.365096 0.000016 +4.363570 0.000016 +4.362044 0.000017 +4.360518 0.000017 +4.358992 0.000017 +4.357466 0.000017 +4.355939 0.000017 +4.354413 0.000018 +4.352887 0.000018 +4.351361 0.000018 +4.349835 0.000018 +4.348309 0.000019 +4.346783 0.000019 +4.345257 0.000019 +4.343731 0.000019 +4.342205 0.000020 +4.340679 0.000020 +4.339153 0.000020 +4.337627 0.000020 +4.336101 0.000021 +4.334575 0.000021 +4.333048 0.000021 +4.331522 0.000021 +4.329996 0.000022 +4.328470 0.000022 +4.326944 0.000022 +4.325418 0.000023 +4.323892 0.000023 +4.322366 0.000023 +4.320840 0.000024 +4.319314 0.000024 +4.317788 0.000024 +4.316262 0.000025 +4.314736 0.000025 +4.313210 0.000025 +4.311684 0.000026 +4.310157 0.000026 +4.308631 0.000026 +4.307105 0.000027 +4.305579 0.000027 +4.304053 0.000028 +4.302527 0.000028 +4.301001 0.000029 +4.299475 0.000029 +4.297949 0.000029 +4.296423 0.000030 +4.294897 0.000030 +4.293371 0.000031 +4.291845 0.000031 +4.290319 0.000032 +4.288793 0.000032 +4.287267 0.000033 +4.285740 0.000034 +4.284214 0.000034 +4.282688 0.000035 +4.281162 0.000035 +4.279636 0.000036 +4.278110 0.000037 +4.276584 0.000037 +4.275058 0.000038 +4.273532 0.000039 +4.272006 0.000039 +4.270480 0.000040 +4.268954 0.000041 +4.267428 0.000042 +4.265902 0.000042 +4.264376 0.000043 +4.262849 0.000044 +4.261323 0.000045 +4.259797 0.000046 +4.258271 0.000047 +4.256745 0.000048 +4.255219 0.000049 +4.253693 0.000050 +4.252167 0.000051 +4.250641 0.000052 +4.249115 0.000053 +4.247589 0.000054 +4.246063 0.000055 +4.244537 0.000057 +4.243011 0.000058 +4.241485 0.000059 +4.239958 0.000061 +4.238432 0.000062 +4.236906 0.000064 +4.235380 0.000065 +4.233854 0.000067 +4.232328 0.000068 +4.230802 0.000070 +4.229276 0.000072 +4.227750 0.000074 +4.226224 0.000076 +4.224698 0.000078 +4.223172 0.000080 +4.221646 0.000082 +4.220120 0.000084 +4.218594 0.000087 +4.217068 0.000089 +4.215541 0.000092 +4.214015 0.000094 +4.212489 0.000097 +4.210963 0.000100 +4.209437 0.000103 +4.207911 0.000107 +4.206385 0.000110 +4.204859 0.000114 +4.203333 0.000117 +4.201807 0.000121 +4.200281 0.000126 +4.198755 0.000130 +4.197229 0.000135 +4.195703 0.000140 +4.194177 0.000145 +4.192650 0.000150 +4.191124 0.000156 +4.189598 0.000162 +4.188072 0.000169 +4.186546 0.000176 +4.185020 0.000184 +4.183494 0.000192 +4.181968 0.000200 +4.180442 0.000210 +4.178916 0.000220 +4.177390 0.000230 +4.175864 0.000242 +4.174338 0.000254 +4.172812 0.000268 +4.171286 0.000283 +4.169759 0.000299 +4.168233 0.000317 +4.166707 0.000336 +4.165181 0.000358 +4.163655 0.000381 +4.162129 0.000408 +4.160603 0.000437 +4.159077 0.000471 +4.157551 0.000509 +4.156025 0.000552 +4.154499 0.000602 +4.152973 0.000660 +4.151447 0.000728 +4.149921 0.000809 +4.148395 0.000908 +4.146869 0.001030 +4.145342 0.001184 +4.143816 0.001385 +4.142290 0.001655 +4.140764 0.002037 +4.139238 0.002611 +4.137712 0.003548 +4.136186 0.005263 +4.134660 0.009002 +4.133134 0.019640 +4.131608 0.059306 +4.130082 0.066449 +4.128556 0.022475 +4.127030 0.010931 +4.125504 0.007507 +4.123978 0.006560 +4.122451 0.006834 +4.120925 0.008174 +4.119399 0.011083 +4.117873 0.017264 +4.116347 0.032488 +4.114821 0.082074 +4.113295 0.240547 +4.111769 0.134349 +4.110243 0.046447 +4.108717 0.022857 +4.107191 0.014552 +4.105665 0.011255 +4.104139 0.010323 +4.102613 0.011158 +4.101087 0.014281 +4.099560 0.022122 +4.098034 0.043987 +4.096508 0.124075 +4.094982 0.252523 +4.093456 0.090496 +4.091930 0.034855 +4.090404 0.018194 +4.088878 0.011546 +4.087352 0.008444 +4.085826 0.007008 +4.084300 0.006675 +4.082774 0.007558 +4.081248 0.010825 +4.079722 0.021663 +4.078196 0.063654 +4.076670 0.066660 +4.075143 0.021880 +4.073617 0.009768 +4.072091 0.005619 +4.070565 0.003747 +4.069039 0.002738 +4.067513 0.002125 +4.065987 0.001719 +4.064461 0.001433 +4.062935 0.001222 +4.061409 0.001061 +4.059883 0.000933 +4.058357 0.000831 +4.056831 0.000746 +4.055305 0.000675 +4.053779 0.000615 +4.052252 0.000564 +4.050726 0.000519 +4.049200 0.000480 +4.047674 0.000446 +4.046148 0.000415 +4.044622 0.000388 +4.043096 0.000364 +4.041570 0.000342 +4.040044 0.000322 +4.038518 0.000304 +4.036992 0.000287 +4.035466 0.000272 +4.033940 0.000258 +4.032414 0.000245 +4.030888 0.000233 +4.029361 0.000222 +4.027835 0.000212 +4.026309 0.000203 +4.024783 0.000194 +4.023257 0.000186 +4.021731 0.000178 +4.020205 0.000171 +4.018679 0.000164 +4.017153 0.000158 +4.015627 0.000152 +4.014101 0.000146 +4.012575 0.000141 +4.011049 0.000136 +4.009523 0.000131 +4.007997 0.000127 +4.006471 0.000123 +4.004944 0.000119 +4.003418 0.000115 +4.001892 0.000111 +4.000366 0.000108 +3.998840 0.000104 +3.997314 0.000101 +3.995788 0.000098 +3.994262 0.000095 +3.992736 0.000093 +3.991210 0.000090 +3.989684 0.000087 +3.988158 0.000085 +3.986632 0.000083 +3.985106 0.000080 +3.983580 0.000078 +3.982053 0.000076 +3.980527 0.000074 +3.979001 0.000073 +3.977475 0.000071 +3.975949 0.000069 +3.974423 0.000067 +3.972897 0.000066 +3.971371 0.000064 +3.969845 0.000063 +3.968319 0.000061 +3.966793 0.000060 +3.965267 0.000058 +3.963741 0.000057 +3.962215 0.000056 +3.960689 0.000055 +3.959162 0.000054 +3.957636 0.000052 +3.956110 0.000051 +3.954584 0.000050 +3.953058 0.000049 +3.951532 0.000048 +3.950006 0.000047 +3.948480 0.000046 +3.946954 0.000045 +3.945428 0.000044 +3.943902 0.000044 +3.942376 0.000043 +3.940850 0.000042 +3.939324 0.000041 +3.937798 0.000040 +3.936272 0.000040 +3.934745 0.000039 +3.933219 0.000038 +3.931693 0.000038 +3.930167 0.000037 +3.928641 0.000036 +3.927115 0.000036 +3.925589 0.000035 +3.924063 0.000034 +3.922537 0.000034 +3.921011 0.000033 +3.919485 0.000033 +3.917959 0.000032 +3.916433 0.000032 +3.914907 0.000031 +3.913381 0.000031 +3.911854 0.000030 +3.910328 0.000030 +3.908802 0.000029 +3.907276 0.000029 +3.905750 0.000028 +3.904224 0.000028 +3.902698 0.000028 +3.901172 0.000027 +3.899646 0.000027 +3.898120 0.000026 +3.896594 0.000026 +3.895068 0.000026 +3.893542 0.000025 +3.892016 0.000025 +3.890490 0.000025 +3.888963 0.000024 +3.887437 0.000024 +3.885911 0.000024 +3.884385 0.000023 +3.882859 0.000023 +3.881333 0.000023 +3.879807 0.000022 +3.878281 0.000022 +3.876755 0.000022 +3.875229 0.000021 +3.873703 0.000021 +3.872177 0.000021 +3.870651 0.000021 +3.869125 0.000020 +3.867599 0.000020 +3.866073 0.000020 +3.864546 0.000020 +3.863020 0.000019 +3.861494 0.000019 +3.859968 0.000019 +3.858442 0.000019 +3.856916 0.000018 +3.855390 0.000018 +3.853864 0.000018 +3.852338 0.000018 +3.850812 0.000018 +3.849286 0.000017 +3.847760 0.000017 +3.846234 0.000017 +3.844708 0.000017 +3.843182 0.000017 +3.841655 0.000016 +3.840129 0.000016 +3.838603 0.000016 +3.837077 0.000016 +3.835551 0.000016 +3.834025 0.000016 +3.832499 0.000015 +3.830973 0.000015 +3.829447 0.000015 +3.827921 0.000015 +3.826395 0.000015 +3.824869 0.000015 +3.823343 0.000014 +3.821817 0.000014 +3.820291 0.000014 +3.818764 0.000014 +3.817238 0.000014 +3.815712 0.000014 +3.814186 0.000014 +3.812660 0.000013 +3.811134 0.000013 +3.809608 0.000013 +3.808082 0.000013 +3.806556 0.000013 +3.805030 0.000013 +3.803504 0.000013 +3.801978 0.000013 +3.800452 0.000012 +3.798926 0.000012 +3.797400 0.000012 +3.795874 0.000012 +3.794347 0.000012 +3.792821 0.000012 +3.791295 0.000012 +3.789769 0.000012 +3.788243 0.000012 +3.786717 0.000011 +3.785191 0.000011 +3.783665 0.000011 +3.782139 0.000011 +3.780613 0.000011 +3.779087 0.000011 +3.777561 0.000011 +3.776035 0.000011 +3.774509 0.000011 +3.772983 0.000011 +3.771456 0.000011 +3.769930 0.000010 +3.768404 0.000010 +3.766878 0.000010 +3.765352 0.000010 +3.763826 0.000010 +3.762300 0.000010 +3.760774 0.000010 +3.759248 0.000010 +3.757722 0.000010 +3.756196 0.000010 +3.754670 0.000010 +3.753144 0.000010 +3.751618 0.000009 +3.750092 0.000009 +3.748565 0.000009 +3.747039 0.000009 +3.745513 0.000009 +3.743987 0.000009 +3.742461 0.000009 +3.740935 0.000009 +3.739409 0.000009 +3.737883 0.000009 +3.736357 0.000009 +3.734831 0.000009 +3.733305 0.000009 +3.731779 0.000009 +3.730253 0.000009 +3.728727 0.000008 +3.727201 0.000008 +3.725675 0.000008 +3.724148 0.000008 +3.722622 0.000008 +3.721096 0.000008 +3.719570 0.000008 +3.718044 0.000008 +3.716518 0.000008 +3.714992 0.000008 +3.713466 0.000008 +3.711940 0.000008 +3.710414 0.000008 +3.708888 0.000008 +3.707362 0.000008 +3.705836 0.000008 +3.704310 0.000008 +3.702784 0.000008 +3.701257 0.000007 +3.699731 0.000007 +3.698205 0.000007 +3.696679 0.000007 +3.695153 0.000007 +3.693627 0.000007 +3.692101 0.000007 +3.690575 0.000007 +3.689049 0.000007 +3.687523 0.000007 +3.685997 0.000007 +3.684471 0.000007 +3.682945 0.000007 +3.681419 0.000007 +3.679893 0.000007 +3.678366 0.000007 +3.676840 0.000007 +3.675314 0.000007 +3.673788 0.000007 +3.672262 0.000007 +3.670736 0.000007 +3.669210 0.000007 +3.667684 0.000006 +3.666158 0.000006 +3.664632 0.000006 +3.663106 0.000006 +3.661580 0.000006 +3.660054 0.000006 +3.658528 0.000006 +3.657002 0.000006 +3.655476 0.000006 +3.653949 0.000006 +3.652423 0.000006 +3.650897 0.000006 +3.649371 0.000006 +3.647845 0.000006 +3.646319 0.000006 +3.644793 0.000006 +3.643267 0.000006 +3.641741 0.000006 +3.640215 0.000006 +3.638689 0.000006 +3.637163 0.000006 +3.635637 0.000006 +3.634111 0.000006 +3.632585 0.000006 +3.631058 0.000006 +3.629532 0.000006 +3.628006 0.000006 +3.626480 0.000006 +3.624954 0.000006 +3.623428 0.000006 +3.621902 0.000006 +3.620376 0.000005 +3.618850 0.000005 +3.617324 0.000005 +3.615798 0.000005 +3.614272 0.000005 +3.612746 0.000005 +3.611220 0.000005 +3.609694 0.000005 +3.608168 0.000005 +3.606641 0.000005 +3.605115 0.000005 +3.603589 0.000005 +3.602063 0.000005 +3.600537 0.000005 +3.599011 0.000005 +3.597485 0.000005 +3.595959 0.000005 +3.594433 0.000005 +3.592907 0.000005 +3.591381 0.000005 +3.589855 0.000005 +3.588329 0.000005 +3.586803 0.000005 +3.585277 0.000005 +3.583750 0.000005 +3.582224 0.000005 +3.580698 0.000005 +3.579172 0.000005 +3.577646 0.000005 +3.576120 0.000005 +3.574594 0.000005 +3.573068 0.000005 +3.571542 0.000005 +3.570016 0.000005 +3.568490 0.000005 +3.566964 0.000005 +3.565438 0.000005 +3.563912 0.000005 +3.562386 0.000005 +3.560859 0.000005 +3.559333 0.000005 +3.557807 0.000005 +3.556281 0.000005 +3.554755 0.000005 +3.553229 0.000005 +3.551703 0.000004 +3.550177 0.000004 +3.548651 0.000004 +3.547125 0.000004 +3.545599 0.000004 +3.544073 0.000004 +3.542547 0.000004 +3.541021 0.000004 +3.539495 0.000004 +3.537969 0.000004 +3.536442 0.000004 +3.534916 0.000004 +3.533390 0.000004 +3.531864 0.000004 +3.530338 0.000004 +3.528812 0.000004 +3.527286 0.000004 +3.525760 0.000004 +3.524234 0.000004 +3.522708 0.000004 +3.521182 0.000004 +3.519656 0.000004 +3.518130 0.000004 +3.516604 0.000004 +3.515078 0.000004 +3.513551 0.000004 +3.512025 0.000004 +3.510499 0.000004 +3.508973 0.000004 +3.507447 0.000004 +3.505921 0.000004 +3.504395 0.000004 +3.502869 0.000004 +3.501343 0.000004 +3.499817 0.000004 +3.498291 0.000004 +3.496765 0.000004 +3.495239 0.000004 +3.493713 0.000004 +3.492187 0.000004 +3.490660 0.000004 +3.489134 0.000004 +3.487608 0.000004 +3.486082 0.000004 +3.484556 0.000004 +3.483030 0.000004 +3.481504 0.000004 +3.479978 0.000004 +3.478452 0.000004 +3.476926 0.000004 +3.475400 0.000004 +3.473874 0.000004 +3.472348 0.000004 +3.470822 0.000004 +3.469296 0.000004 +3.467770 0.000004 +3.466243 0.000004 +3.464717 0.000004 +3.463191 0.000004 +3.461665 0.000004 +3.460139 0.000004 +3.458613 0.000004 +3.457087 0.000004 +3.455561 0.000004 +3.454035 0.000004 +3.452509 0.000004 +3.450983 0.000004 +3.449457 0.000004 +3.447931 0.000004 +3.446405 0.000004 +3.444879 0.000004 +3.443352 0.000004 +3.441826 0.000004 +3.440300 0.000004 +3.438774 0.000004 +3.437248 0.000004 +3.435722 0.000004 +3.434196 0.000004 +3.432670 0.000004 +3.431144 0.000004 +3.429618 0.000003 +3.428092 0.000003 +3.426566 0.000003 +3.425040 0.000003 +3.423514 0.000003 +3.421988 0.000003 +3.420461 0.000003 +3.418935 0.000003 +3.417409 0.000003 +3.415883 0.000003 +3.414357 0.000003 +3.412831 0.000003 +3.411305 0.000003 +3.409779 0.000003 +3.408253 0.000003 +3.406727 0.000003 +3.405201 0.000003 +3.403675 0.000003 +3.402149 0.000003 +3.400623 0.000003 +3.399097 0.000003 +3.397571 0.000003 +3.396044 0.000003 +3.394518 0.000003 +3.392992 0.000003 +3.391466 0.000003 +3.389940 0.000003 +3.388414 0.000003 +3.386888 0.000003 +3.385362 0.000003 +3.383836 0.000003 +3.382310 0.000003 +3.380784 0.000003 +3.379258 0.000003 +3.377732 0.000003 +3.376206 0.000003 +3.374680 0.000003 +3.373153 0.000003 +3.371627 0.000003 +3.370101 0.000003 +3.368575 0.000003 +3.367049 0.000003 +3.365523 0.000003 +3.363997 0.000003 +3.362471 0.000003 +3.360945 0.000003 +3.359419 0.000003 +3.357893 0.000003 +3.356367 0.000003 +3.354841 0.000003 +3.353315 0.000003 +3.351789 0.000003 +3.350262 0.000003 +3.348736 0.000003 +3.347210 0.000003 +3.345684 0.000003 +3.344158 0.000003 +3.342632 0.000003 +3.341106 0.000003 +3.339580 0.000003 +3.338054 0.000003 +3.336528 0.000003 +3.335002 0.000003 +3.333476 0.000003 +3.331950 0.000003 +3.330424 0.000003 +3.328898 0.000003 +3.327372 0.000003 +3.325845 0.000003 +3.324319 0.000003 +3.322793 0.000003 +3.321267 0.000003 +3.319741 0.000003 +3.318215 0.000003 +3.316689 0.000003 +3.315163 0.000003 +3.313637 0.000003 +3.312111 0.000003 +3.310585 0.000003 +3.309059 0.000003 +3.307533 0.000003 +3.306007 0.000003 +3.304481 0.000003 +3.302954 0.000003 +3.301428 0.000003 +3.299902 0.000003 +3.298376 0.000003 +3.296850 0.000003 +3.295324 0.000003 +3.293798 0.000003 +3.292272 0.000003 +3.290746 0.000003 +3.289220 0.000003 +3.287694 0.000003 +3.286168 0.000003 +3.284642 0.000003 +3.283116 0.000003 +3.281590 0.000003 +3.280063 0.000003 +3.278537 0.000003 +3.277011 0.000003 +3.275485 0.000003 +3.273959 0.000003 +3.272433 0.000003 +3.270907 0.000003 +3.269381 0.000003 +3.267855 0.000003 +3.266329 0.000003 +3.264803 0.000003 +3.263277 0.000003 +3.261751 0.000003 +3.260225 0.000003 +3.258699 0.000003 +3.257173 0.000003 +3.255646 0.000003 +3.254120 0.000003 +3.252594 0.000003 +3.251068 0.000003 +3.249542 0.000003 +3.248016 0.000003 +3.246490 0.000003 +3.244964 0.000003 +3.243438 0.000003 +3.241912 0.000003 +3.240386 0.000003 +3.238860 0.000003 +3.237334 0.000003 +3.235808 0.000003 +3.234282 0.000003 +3.232755 0.000003 +3.231229 0.000003 +3.229703 0.000003 +3.228177 0.000003 +3.226651 0.000003 +3.225125 0.000003 +3.223599 0.000003 +3.222073 0.000003 +3.220547 0.000003 +3.219021 0.000003 +3.217495 0.000003 +3.215969 0.000003 +3.214443 0.000003 +3.212917 0.000003 +3.211391 0.000003 +3.209864 0.000003 +3.208338 0.000003 +3.206812 0.000003 +3.205286 0.000003 +3.203760 0.000003 +3.202234 0.000003 +3.200708 0.000003 +3.199182 0.000003 +3.197656 0.000003 +3.196130 0.000003 +3.194604 0.000003 +3.193078 0.000003 +3.191552 0.000003 +3.190026 0.000003 +3.188500 0.000003 +3.186974 0.000003 +3.185447 0.000003 +3.183921 0.000003 +3.182395 0.000003 +3.180869 0.000003 +3.179343 0.000003 +3.177817 0.000003 +3.176291 0.000003 +3.174765 0.000003 +3.173239 0.000003 +3.171713 0.000003 +3.170187 0.000003 +3.168661 0.000003 +3.167135 0.000003 +3.165609 0.000003 +3.164083 0.000003 +3.162556 0.000003 +3.161030 0.000003 +3.159504 0.000003 +3.157978 0.000003 +3.156452 0.000003 +3.154926 0.000003 +3.153400 0.000003 +3.151874 0.000003 +3.150348 0.000003 +3.148822 0.000003 +3.147296 0.000003 +3.145770 0.000003 +3.144244 0.000003 +3.142718 0.000003 +3.141192 0.000003 +3.139665 0.000003 +3.138139 0.000003 +3.136613 0.000003 +3.135087 0.000003 +3.133561 0.000003 +3.132035 0.000003 +3.130509 0.000003 +3.128983 0.000003 +3.127457 0.000003 +3.125931 0.000003 +3.124405 0.000003 +3.122879 0.000003 +3.121353 0.000003 +3.119827 0.000003 +3.118301 0.000003 +3.116775 0.000003 +3.115248 0.000003 +3.113722 0.000003 +3.112196 0.000003 +3.110670 0.000003 +3.109144 0.000003 +3.107618 0.000003 +3.106092 0.000003 +3.104566 0.000003 +3.103040 0.000003 +3.101514 0.000003 +3.099988 0.000003 +3.098462 0.000003 +3.096936 0.000003 +3.095410 0.000003 +3.093884 0.000003 +3.092357 0.000003 +3.090831 0.000003 +3.089305 0.000003 +3.087779 0.000003 +3.086253 0.000003 +3.084727 0.000003 +3.083201 0.000003 +3.081675 0.000003 +3.080149 0.000003 +3.078623 0.000003 +3.077097 0.000003 +3.075571 0.000003 +3.074045 0.000003 +3.072519 0.000003 +3.070993 0.000003 +3.069466 0.000003 +3.067940 0.000003 +3.066414 0.000003 +3.064888 0.000003 +3.063362 0.000003 +3.061836 0.000003 +3.060310 0.000003 +3.058784 0.000003 +3.057258 0.000003 +3.055732 0.000003 +3.054206 0.000003 +3.052680 0.000003 +3.051154 0.000003 +3.049628 0.000003 +3.048102 0.000003 +3.046576 0.000003 +3.045049 0.000003 +3.043523 0.000003 +3.041997 0.000003 +3.040471 0.000003 +3.038945 0.000003 +3.037419 0.000003 +3.035893 0.000003 +3.034367 0.000003 +3.032841 0.000003 +3.031315 0.000003 +3.029789 0.000003 +3.028263 0.000003 +3.026737 0.000003 +3.025211 0.000003 +3.023685 0.000003 +3.022158 0.000003 +3.020632 0.000003 +3.019106 0.000003 +3.017580 0.000003 +3.016054 0.000003 +3.014528 0.000003 +3.013002 0.000003 +3.011476 0.000003 +3.009950 0.000003 +3.008424 0.000003 +3.006898 0.000003 +3.005372 0.000003 +3.003846 0.000003 +3.002320 0.000003 +3.000794 0.000003 +2.999267 0.000003 +2.997741 0.000003 +2.996215 0.000003 +2.994689 0.000003 +2.993163 0.000003 +2.991637 0.000003 +2.990111 0.000003 +2.988585 0.000003 +2.987059 0.000003 +2.985533 0.000003 +2.984007 0.000003 +2.982481 0.000003 +2.980955 0.000003 +2.979429 0.000003 +2.977903 0.000003 +2.976377 0.000003 +2.974850 0.000003 +2.973324 0.000003 +2.971798 0.000003 +2.970272 0.000003 +2.968746 0.000003 +2.967220 0.000003 +2.965694 0.000003 +2.964168 0.000003 +2.962642 0.000003 +2.961116 0.000003 +2.959590 0.000003 +2.958064 0.000003 +2.956538 0.000003 +2.955012 0.000003 +2.953486 0.000003 +2.951959 0.000003 +2.950433 0.000003 +2.948907 0.000003 +2.947381 0.000003 +2.945855 0.000003 +2.944329 0.000003 +2.942803 0.000003 +2.941277 0.000003 +2.939751 0.000003 +2.938225 0.000003 +2.936699 0.000003 +2.935173 0.000003 +2.933647 0.000003 +2.932121 0.000003 +2.930595 0.000003 +2.929068 0.000003 +2.927542 0.000003 +2.926016 0.000003 +2.924490 0.000003 +2.922964 0.000003 +2.921438 0.000003 +2.919912 0.000003 +2.918386 0.000003 +2.916860 0.000003 +2.915334 0.000003 +2.913808 0.000003 +2.912282 0.000003 +2.910756 0.000003 +2.909230 0.000003 +2.907704 0.000003 +2.906178 0.000003 +2.904651 0.000003 +2.903125 0.000003 +2.901599 0.000003 +2.900073 0.000003 +2.898547 0.000003 +2.897021 0.000003 +2.895495 0.000003 +2.893969 0.000003 +2.892443 0.000003 +2.890917 0.000003 +2.889391 0.000003 +2.887865 0.000003 +2.886339 0.000003 +2.884813 0.000003 +2.883287 0.000003 +2.881760 0.000003 +2.880234 0.000004 +2.878708 0.000004 +2.877182 0.000004 +2.875656 0.000004 +2.874130 0.000004 +2.872604 0.000004 +2.871078 0.000004 +2.869552 0.000004 +2.868026 0.000004 +2.866500 0.000004 +2.864974 0.000004 +2.863448 0.000004 +2.861922 0.000004 +2.860396 0.000004 +2.858869 0.000004 +2.857343 0.000004 +2.855817 0.000004 +2.854291 0.000004 +2.852765 0.000004 +2.851239 0.000004 +2.849713 0.000004 +2.848187 0.000004 +2.846661 0.000004 +2.845135 0.000004 +2.843609 0.000004 +2.842083 0.000004 +2.840557 0.000004 +2.839031 0.000004 +2.837505 0.000004 +2.835979 0.000004 +2.834452 0.000004 +2.832926 0.000004 +2.831400 0.000004 +2.829874 0.000004 +2.828348 0.000004 +2.826822 0.000004 +2.825296 0.000004 +2.823770 0.000004 +2.822244 0.000004 +2.820718 0.000004 +2.819192 0.000004 +2.817666 0.000004 +2.816140 0.000004 +2.814614 0.000004 +2.813088 0.000004 +2.811561 0.000004 +2.810035 0.000004 +2.808509 0.000004 +2.806983 0.000004 +2.805457 0.000004 +2.803931 0.000004 +2.802405 0.000004 +2.800879 0.000004 +2.799353 0.000004 +2.797827 0.000004 +2.796301 0.000004 +2.794775 0.000004 +2.793249 0.000004 +2.791723 0.000004 +2.790197 0.000004 +2.788670 0.000004 +2.787144 0.000004 +2.785618 0.000004 +2.784092 0.000004 +2.782566 0.000004 +2.781040 0.000004 +2.779514 0.000004 +2.777988 0.000004 +2.776462 0.000004 +2.774936 0.000004 +2.773410 0.000004 +2.771884 0.000004 +2.770358 0.000004 +2.768832 0.000004 +2.767306 0.000004 +2.765780 0.000004 +2.764253 0.000004 +2.762727 0.000004 +2.761201 0.000004 +2.759675 0.000004 +2.758149 0.000004 +2.756623 0.000004 +2.755097 0.000004 +2.753571 0.000004 +2.752045 0.000004 +2.750519 0.000004 +2.748993 0.000004 +2.747467 0.000004 +2.745941 0.000004 +2.744415 0.000004 +2.742889 0.000004 +2.741362 0.000004 +2.739836 0.000004 +2.738310 0.000004 +2.736784 0.000004 +2.735258 0.000004 +2.733732 0.000005 +2.732206 0.000005 +2.730680 0.000005 +2.729154 0.000005 +2.727628 0.000005 +2.726102 0.000005 +2.724576 0.000005 +2.723050 0.000005 +2.721524 0.000005 +2.719998 0.000005 +2.718471 0.000005 +2.716945 0.000005 +2.715419 0.000005 +2.713893 0.000005 +2.712367 0.000005 +2.710841 0.000005 +2.709315 0.000005 +2.707789 0.000005 +2.706263 0.000005 +2.704737 0.000005 +2.703211 0.000005 +2.701685 0.000005 +2.700159 0.000005 +2.698633 0.000005 +2.697107 0.000005 +2.695581 0.000005 +2.694054 0.000005 +2.692528 0.000005 +2.691002 0.000005 +2.689476 0.000005 +2.687950 0.000005 +2.686424 0.000005 +2.684898 0.000005 +2.683372 0.000005 +2.681846 0.000005 +2.680320 0.000005 +2.678794 0.000005 +2.677268 0.000005 +2.675742 0.000005 +2.674216 0.000005 +2.672690 0.000005 +2.671163 0.000005 +2.669637 0.000005 +2.668111 0.000005 +2.666585 0.000005 +2.665059 0.000005 +2.663533 0.000005 +2.662007 0.000005 +2.660481 0.000005 +2.658955 0.000005 +2.657429 0.000005 +2.655903 0.000005 +2.654377 0.000005 +2.652851 0.000005 +2.651325 0.000005 +2.649799 0.000005 +2.648272 0.000005 +2.646746 0.000006 +2.645220 0.000006 +2.643694 0.000006 +2.642168 0.000006 +2.640642 0.000006 +2.639116 0.000006 +2.637590 0.000006 +2.636064 0.000006 +2.634538 0.000006 +2.633012 0.000006 +2.631486 0.000006 +2.629960 0.000006 +2.628434 0.000006 +2.626908 0.000006 +2.625382 0.000006 +2.623855 0.000006 +2.622329 0.000006 +2.620803 0.000006 +2.619277 0.000006 +2.617751 0.000006 +2.616225 0.000006 +2.614699 0.000006 +2.613173 0.000006 +2.611647 0.000006 +2.610121 0.000006 +2.608595 0.000006 +2.607069 0.000006 +2.605543 0.000006 +2.604017 0.000006 +2.602491 0.000006 +2.600964 0.000006 +2.599438 0.000006 +2.597912 0.000006 +2.596386 0.000006 +2.594860 0.000006 +2.593334 0.000006 +2.591808 0.000006 +2.590282 0.000006 +2.588756 0.000006 +2.587230 0.000007 +2.585704 0.000007 +2.584178 0.000007 +2.582652 0.000007 +2.581126 0.000007 +2.579600 0.000007 +2.578073 0.000007 +2.576547 0.000007 +2.575021 0.000007 +2.573495 0.000007 +2.571969 0.000007 +2.570443 0.000007 +2.568917 0.000007 +2.567391 0.000007 +2.565865 0.000007 +2.564339 0.000007 +2.562813 0.000007 +2.561287 0.000007 +2.559761 0.000007 +2.558235 0.000007 +2.556709 0.000007 +2.555183 0.000007 +2.553656 0.000007 +2.552130 0.000007 +2.550604 0.000007 +2.549078 0.000007 +2.547552 0.000007 +2.546026 0.000007 +2.544500 0.000007 +2.542974 0.000007 +2.541448 0.000008 +2.539922 0.000008 +2.538396 0.000008 +2.536870 0.000008 +2.535344 0.000008 +2.533818 0.000008 +2.532292 0.000008 +2.530765 0.000008 +2.529239 0.000008 +2.527713 0.000008 +2.526187 0.000008 +2.524661 0.000008 +2.523135 0.000008 +2.521609 0.000008 +2.520083 0.000008 +2.518557 0.000008 +2.517031 0.000008 +2.515505 0.000008 +2.513979 0.000008 +2.512453 0.000008 +2.510927 0.000008 +2.509401 0.000008 +2.507874 0.000008 +2.506348 0.000009 +2.504822 0.000009 +2.503296 0.000009 +2.501770 0.000009 +2.500244 0.000009 +2.498718 0.000009 +2.497192 0.000009 +2.495666 0.000009 +2.494140 0.000009 +2.492614 0.000009 +2.491088 0.000009 +2.489562 0.000009 +2.488036 0.000009 +2.486510 0.000009 +2.484984 0.000009 +2.483457 0.000009 +2.481931 0.000009 +2.480405 0.000009 +2.478879 0.000009 +2.477353 0.000010 +2.475827 0.000010 +2.474301 0.000010 +2.472775 0.000010 +2.471249 0.000010 +2.469723 0.000010 +2.468197 0.000010 +2.466671 0.000010 +2.465145 0.000010 +2.463619 0.000010 +2.462093 0.000010 +2.460566 0.000010 +2.459040 0.000010 +2.457514 0.000010 +2.455988 0.000010 +2.454462 0.000010 +2.452936 0.000011 +2.451410 0.000011 +2.449884 0.000011 +2.448358 0.000011 +2.446832 0.000011 +2.445306 0.000011 +2.443780 0.000011 +2.442254 0.000011 +2.440728 0.000011 +2.439202 0.000011 +2.437675 0.000011 +2.436149 0.000011 +2.434623 0.000011 +2.433097 0.000011 +2.431571 0.000012 +2.430045 0.000012 +2.428519 0.000012 +2.426993 0.000012 +2.425467 0.000012 +2.423941 0.000012 +2.422415 0.000012 +2.420889 0.000012 +2.419363 0.000012 +2.417837 0.000012 +2.416311 0.000012 +2.414785 0.000013 +2.413258 0.000013 +2.411732 0.000013 +2.410206 0.000013 +2.408680 0.000013 +2.407154 0.000013 +2.405628 0.000013 +2.404102 0.000013 +2.402576 0.000013 +2.401050 0.000013 +2.399524 0.000013 +2.397998 0.000014 +2.396472 0.000014 +2.394946 0.000014 +2.393420 0.000014 +2.391894 0.000014 +2.390367 0.000014 +2.388841 0.000014 +2.387315 0.000014 +2.385789 0.000014 +2.384263 0.000015 +2.382737 0.000015 +2.381211 0.000015 +2.379685 0.000015 +2.378159 0.000015 +2.376633 0.000015 +2.375107 0.000015 +2.373581 0.000015 +2.372055 0.000016 +2.370529 0.000016 +2.369003 0.000016 +2.367476 0.000016 +2.365950 0.000016 +2.364424 0.000016 +2.362898 0.000016 +2.361372 0.000017 +2.359846 0.000017 +2.358320 0.000017 +2.356794 0.000017 +2.355268 0.000017 +2.353742 0.000017 +2.352216 0.000017 +2.350690 0.000018 +2.349164 0.000018 +2.347638 0.000018 +2.346112 0.000018 +2.344586 0.000018 +2.343059 0.000018 +2.341533 0.000019 +2.340007 0.000019 +2.338481 0.000019 +2.336955 0.000019 +2.335429 0.000019 +2.333903 0.000019 +2.332377 0.000020 +2.330851 0.000020 +2.329325 0.000020 +2.327799 0.000020 +2.326273 0.000020 +2.324747 0.000021 +2.323221 0.000021 +2.321695 0.000021 +2.320168 0.000021 +2.318642 0.000021 +2.317116 0.000022 +2.315590 0.000022 +2.314064 0.000022 +2.312538 0.000022 +2.311012 0.000023 +2.309486 0.000023 +2.307960 0.000023 +2.306434 0.000023 +2.304908 0.000024 +2.303382 0.000024 +2.301856 0.000024 +2.300330 0.000024 +2.298804 0.000025 +2.297277 0.000025 +2.295751 0.000025 +2.294225 0.000025 +2.292699 0.000026 +2.291173 0.000026 +2.289647 0.000026 +2.288121 0.000027 +2.286595 0.000027 +2.285069 0.000027 +2.283543 0.000028 +2.282017 0.000028 +2.280491 0.000028 +2.278965 0.000029 +2.277439 0.000029 +2.275913 0.000029 +2.274387 0.000030 +2.272860 0.000030 +2.271334 0.000030 +2.269808 0.000031 +2.268282 0.000031 +2.266756 0.000031 +2.265230 0.000032 +2.263704 0.000032 +2.262178 0.000033 +2.260652 0.000033 +2.259126 0.000034 +2.257600 0.000034 +2.256074 0.000034 +2.254548 0.000035 +2.253022 0.000035 +2.251496 0.000036 +2.249969 0.000036 +2.248443 0.000037 +2.246917 0.000037 +2.245391 0.000038 +2.243865 0.000038 +2.242339 0.000039 +2.240813 0.000040 +2.239287 0.000040 +2.237761 0.000041 +2.236235 0.000041 +2.234709 0.000042 +2.233183 0.000043 +2.231657 0.000043 +2.230131 0.000044 +2.228605 0.000045 +2.227079 0.000045 +2.225552 0.000046 +2.224026 0.000047 +2.222500 0.000047 +2.220974 0.000048 +2.219448 0.000049 +2.217922 0.000050 +2.216396 0.000050 +2.214870 0.000051 +2.213344 0.000052 +2.211818 0.000053 +2.210292 0.000054 +2.208766 0.000055 +2.207240 0.000056 +2.205714 0.000057 +2.204188 0.000058 +2.202661 0.000059 +2.201135 0.000060 +2.199609 0.000061 +2.198083 0.000062 +2.196557 0.000063 +2.195031 0.000064 +2.193505 0.000066 +2.191979 0.000067 +2.190453 0.000068 +2.188927 0.000070 +2.187401 0.000071 +2.185875 0.000072 +2.184349 0.000074 +2.182823 0.000075 +2.181297 0.000077 +2.179770 0.000078 +2.178244 0.000080 +2.176718 0.000082 +2.175192 0.000083 +2.173666 0.000085 +2.172140 0.000087 +2.170614 0.000089 +2.169088 0.000091 +2.167562 0.000093 +2.166036 0.000095 +2.164510 0.000098 +2.162984 0.000100 +2.161458 0.000102 +2.159932 0.000105 +2.158406 0.000107 +2.156880 0.000110 +2.155353 0.000113 +2.153827 0.000116 +2.152301 0.000119 +2.150775 0.000122 +2.149249 0.000125 +2.147723 0.000128 +2.146197 0.000132 +2.144671 0.000135 +2.143145 0.000139 +2.141619 0.000143 +2.140093 0.000147 +2.138567 0.000152 +2.137041 0.000156 +2.135515 0.000161 +2.133989 0.000166 +2.132462 0.000171 +2.130936 0.000176 +2.129410 0.000182 +2.127884 0.000188 +2.126358 0.000194 +2.124832 0.000201 +2.123306 0.000208 +2.121780 0.000215 +2.120254 0.000223 +2.118728 0.000231 +2.117202 0.000239 +2.115676 0.000249 +2.114150 0.000258 +2.112624 0.000268 +2.111098 0.000279 +2.109571 0.000291 +2.108045 0.000303 +2.106519 0.000316 +2.104993 0.000330 +2.103467 0.000344 +2.101941 0.000360 +2.100415 0.000377 +2.098889 0.000395 +2.097363 0.000415 +2.095837 0.000435 +2.094311 0.000458 +2.092785 0.000482 +2.091259 0.000509 +2.089733 0.000538 +2.088207 0.000569 +2.086681 0.000603 +2.085154 0.000640 +2.083628 0.000680 +2.082102 0.000725 +2.080576 0.000774 +2.079050 0.000829 +2.077524 0.000889 +2.075998 0.000956 +2.074472 0.001031 +2.072946 0.001115 +2.071420 0.001211 +2.069894 0.001319 +2.068368 0.001442 +2.066842 0.001583 +2.065316 0.001745 +2.063790 0.001935 +2.062263 0.002157 +2.060737 0.002419 +2.059211 0.002733 +2.057685 0.003111 +2.056159 0.003574 +2.054633 0.004149 +2.053107 0.004874 +2.051581 0.005806 +2.050055 0.007034 +2.048529 0.008696 +2.047003 0.011022 +2.045477 0.014418 +2.043951 0.019651 +2.042425 0.028312 +2.040899 0.044145 +2.039372 0.077600 +2.037846 0.166053 +2.036320 0.485452 +2.034794 1.000000 +2.033268 0.351815 +2.031742 0.131803 +2.030216 0.065644 +2.028690 0.038786 +2.027164 0.025489 +2.025638 0.017991 +2.024112 0.013363 +2.022586 0.010311 +2.021060 0.008195 +2.019534 0.006668 +2.018008 0.005530 +2.016482 0.004661 +2.014955 0.003981 +2.013429 0.003440 +2.011903 0.003002 +2.010377 0.002643 +2.008851 0.002344 +2.007325 0.002094 +2.005799 0.001881 +2.004273 0.001699 +2.002747 0.001543 +2.001221 0.001407 +1.999695 0.001288 +1.998169 0.001184 +1.996643 0.001092 +1.995117 0.001010 +1.993591 0.000938 +1.992064 0.000872 +1.990538 0.000814 +1.989012 0.000761 +1.987486 0.000713 +1.985960 0.000669 +1.984434 0.000630 +1.982908 0.000594 +1.981382 0.000561 +1.979856 0.000530 +1.978330 0.000502 +1.976804 0.000476 +1.975278 0.000452 +1.973752 0.000430 +1.972226 0.000410 +1.970700 0.000391 +1.969173 0.000373 +1.967647 0.000356 +1.966121 0.000341 +1.964595 0.000326 +1.963069 0.000313 +1.961543 0.000300 +1.960017 0.000288 +1.958491 0.000277 +1.956965 0.000266 +1.955439 0.000256 +1.953913 0.000247 +1.952387 0.000238 +1.950861 0.000229 +1.949335 0.000221 +1.947809 0.000214 +1.946283 0.000207 +1.944756 0.000200 +1.943230 0.000193 +1.941704 0.000187 +1.940178 0.000181 +1.938652 0.000176 +1.937126 0.000170 +1.935600 0.000165 +1.934074 0.000160 +1.932548 0.000156 +1.931022 0.000151 +1.929496 0.000147 +1.927970 0.000143 +1.926444 0.000139 +1.924918 0.000135 +1.923392 0.000132 +1.921865 0.000128 +1.920339 0.000125 +1.918813 0.000122 +1.917287 0.000119 +1.915761 0.000116 +1.914235 0.000113 +1.912709 0.000110 +1.911183 0.000108 +1.909657 0.000105 +1.908131 0.000103 +1.906605 0.000100 +1.905079 0.000098 +1.903553 0.000096 +1.902027 0.000094 +1.900501 0.000092 +1.898974 0.000090 +1.897448 0.000088 +1.895922 0.000086 +1.894396 0.000084 +1.892870 0.000083 +1.891344 0.000081 +1.889818 0.000079 +1.888292 0.000078 +1.886766 0.000076 +1.885240 0.000075 +1.883714 0.000073 +1.882188 0.000072 +1.880662 0.000071 +1.879136 0.000069 +1.877610 0.000068 +1.876084 0.000067 +1.874557 0.000066 +1.873031 0.000065 +1.871505 0.000063 +1.869979 0.000062 +1.868453 0.000061 +1.866927 0.000060 +1.865401 0.000059 +1.863875 0.000058 +1.862349 0.000057 +1.860823 0.000056 +1.859297 0.000055 +1.857771 0.000055 +1.856245 0.000054 +1.854719 0.000053 +1.853193 0.000052 +1.851666 0.000051 +1.850140 0.000050 +1.848614 0.000050 +1.847088 0.000049 +1.845562 0.000048 +1.844036 0.000048 +1.842510 0.000047 +1.840984 0.000046 +1.839458 0.000046 +1.837932 0.000045 +1.836406 0.000044 +1.834880 0.000044 +1.833354 0.000043 +1.831828 0.000043 +1.830302 0.000042 +1.828775 0.000041 +1.827249 0.000041 +1.825723 0.000040 +1.824197 0.000040 +1.822671 0.000039 +1.821145 0.000039 +1.819619 0.000038 +1.818093 0.000038 +1.816567 0.000038 +1.815041 0.000037 +1.813515 0.000037 +1.811989 0.000036 +1.810463 0.000036 +1.808937 0.000035 +1.807411 0.000035 +1.805885 0.000035 +1.804358 0.000034 +1.802832 0.000034 +1.801306 0.000033 +1.799780 0.000033 +1.798254 0.000033 +1.796728 0.000032 +1.795202 0.000032 +1.793676 0.000032 +1.792150 0.000031 +1.790624 0.000031 +1.789098 0.000031 +1.787572 0.000030 +1.786046 0.000030 +1.784520 0.000030 +1.782994 0.000030 +1.781467 0.000029 +1.779941 0.000029 +1.778415 0.000029 +1.776889 0.000028 +1.775363 0.000028 +1.773837 0.000028 +1.772311 0.000028 +1.770785 0.000027 +1.769259 0.000027 +1.767733 0.000027 +1.766207 0.000027 +1.764681 0.000026 +1.763155 0.000026 +1.761629 0.000026 +1.760103 0.000026 +1.758576 0.000026 +1.757050 0.000025 +1.755524 0.000025 +1.753998 0.000025 +1.752472 0.000025 +1.750946 0.000025 +1.749420 0.000024 +1.747894 0.000024 +1.746368 0.000024 +1.744842 0.000024 +1.743316 0.000024 +1.741790 0.000024 +1.740264 0.000023 +1.738738 0.000023 +1.737212 0.000023 +1.735686 0.000023 +1.734159 0.000023 +1.732633 0.000023 +1.731107 0.000022 +1.729581 0.000022 +1.728055 0.000022 +1.726529 0.000022 +1.725003 0.000022 +1.723477 0.000022 +1.721951 0.000022 +1.720425 0.000021 +1.718899 0.000021 +1.717373 0.000021 +1.715847 0.000021 +1.714321 0.000021 +1.712795 0.000021 +1.711268 0.000021 +1.709742 0.000021 +1.708216 0.000020 +1.706690 0.000020 +1.705164 0.000020 +1.703638 0.000020 +1.702112 0.000020 +1.700586 0.000020 +1.699060 0.000020 +1.697534 0.000020 +1.696008 0.000020 +1.694482 0.000020 +1.692956 0.000019 +1.691430 0.000019 +1.689904 0.000019 +1.688377 0.000019 +1.686851 0.000019 +1.685325 0.000019 +1.683799 0.000019 +1.682273 0.000019 +1.680747 0.000019 +1.679221 0.000019 +1.677695 0.000019 +1.676169 0.000019 +1.674643 0.000018 +1.673117 0.000018 +1.671591 0.000018 +1.670065 0.000018 +1.668539 0.000018 +1.667013 0.000018 +1.665487 0.000018 +1.663960 0.000018 +1.662434 0.000018 +1.660908 0.000018 +1.659382 0.000018 +1.657856 0.000018 +1.656330 0.000018 +1.654804 0.000018 +1.653278 0.000018 +1.651752 0.000018 +1.650226 0.000018 +1.648700 0.000018 +1.647174 0.000017 +1.645648 0.000017 +1.644122 0.000017 +1.642596 0.000017 +1.641069 0.000017 +1.639543 0.000017 +1.638017 0.000017 +1.636491 0.000017 +1.634965 0.000017 +1.633439 0.000017 +1.631913 0.000017 +1.630387 0.000017 +1.628861 0.000017 +1.627335 0.000017 +1.625809 0.000017 +1.624283 0.000017 +1.622757 0.000017 +1.621231 0.000017 +1.619705 0.000017 +1.618178 0.000017 +1.616652 0.000017 +1.615126 0.000017 +1.613600 0.000017 +1.612074 0.000017 +1.610548 0.000017 +1.609022 0.000017 +1.607496 0.000017 +1.605970 0.000017 +1.604444 0.000017 +1.602918 0.000017 +1.601392 0.000017 +1.599866 0.000017 +1.598340 0.000017 +1.596814 0.000017 +1.595288 0.000017 +1.593761 0.000017 +1.592235 0.000017 +1.590709 0.000017 +1.589183 0.000017 +1.587657 0.000017 +1.586131 0.000017 +1.584605 0.000017 +1.583079 0.000017 +1.581553 0.000017 +1.580027 0.000017 +1.578501 0.000017 +1.576975 0.000017 +1.575449 0.000017 +1.573923 0.000017 +1.572397 0.000017 +1.570870 0.000017 +1.569344 0.000017 +1.567818 0.000017 +1.566292 0.000017 +1.564766 0.000017 +1.563240 0.000017 +1.561714 0.000017 +1.560188 0.000017 +1.558662 0.000017 +1.557136 0.000017 +1.555610 0.000017 +1.554084 0.000017 +1.552558 0.000017 +1.551032 0.000017 +1.549506 0.000017 +1.547979 0.000017 +1.546453 0.000017 +1.544927 0.000017 +1.543401 0.000017 +1.541875 0.000018 +1.540349 0.000018 +1.538823 0.000018 +1.537297 0.000018 +1.535771 0.000018 +1.534245 0.000018 +1.532719 0.000018 +1.531193 0.000018 +1.529667 0.000018 +1.528141 0.000018 +1.526615 0.000018 +1.525089 0.000018 +1.523562 0.000018 +1.522036 0.000018 +1.520510 0.000018 +1.518984 0.000018 +1.517458 0.000018 +1.515932 0.000018 +1.514406 0.000019 +1.512880 0.000019 +1.511354 0.000019 +1.509828 0.000019 +1.508302 0.000019 +1.506776 0.000019 +1.505250 0.000019 +1.503724 0.000019 +1.502198 0.000019 +1.500671 0.000019 +1.499145 0.000019 +1.497619 0.000019 +1.496093 0.000020 +1.494567 0.000020 +1.493041 0.000020 +1.491515 0.000020 +1.489989 0.000020 +1.488463 0.000020 +1.486937 0.000020 +1.485411 0.000020 +1.483885 0.000020 +1.482359 0.000020 +1.480833 0.000021 +1.479307 0.000021 +1.477780 0.000021 +1.476254 0.000021 +1.474728 0.000021 +1.473202 0.000021 +1.471676 0.000021 +1.470150 0.000021 +1.468624 0.000022 +1.467098 0.000022 +1.465572 0.000022 +1.464046 0.000022 +1.462520 0.000022 +1.460994 0.000022 +1.459468 0.000022 +1.457942 0.000023 +1.456416 0.000023 +1.454890 0.000023 +1.453363 0.000023 +1.451837 0.000023 +1.450311 0.000023 +1.448785 0.000024 +1.447259 0.000024 +1.445733 0.000024 +1.444207 0.000024 +1.442681 0.000024 +1.441155 0.000024 +1.439629 0.000025 +1.438103 0.000025 +1.436577 0.000025 +1.435051 0.000025 +1.433525 0.000025 +1.431999 0.000026 +1.430472 0.000026 +1.428946 0.000026 +1.427420 0.000026 +1.425894 0.000026 +1.424368 0.000027 +1.422842 0.000027 +1.421316 0.000027 +1.419790 0.000027 +1.418264 0.000028 +1.416738 0.000028 +1.415212 0.000028 +1.413686 0.000028 +1.412160 0.000029 +1.410634 0.000029 +1.409108 0.000029 +1.407581 0.000030 +1.406055 0.000030 +1.404529 0.000030 +1.403003 0.000030 +1.401477 0.000031 +1.399951 0.000031 +1.398425 0.000031 +1.396899 0.000032 +1.395373 0.000032 +1.393847 0.000032 +1.392321 0.000033 +1.390795 0.000033 +1.389269 0.000034 +1.387743 0.000034 +1.386217 0.000034 +1.384691 0.000035 +1.383164 0.000035 +1.381638 0.000035 +1.380112 0.000036 +1.378586 0.000036 +1.377060 0.000037 +1.375534 0.000037 +1.374008 0.000038 +1.372482 0.000038 +1.370956 0.000039 +1.369430 0.000039 +1.367904 0.000040 +1.366378 0.000040 +1.364852 0.000041 +1.363326 0.000041 +1.361800 0.000042 +1.360273 0.000042 +1.358747 0.000043 +1.357221 0.000043 +1.355695 0.000044 +1.354169 0.000045 +1.352643 0.000045 +1.351117 0.000046 +1.349591 0.000046 +1.348065 0.000047 +1.346539 0.000048 +1.345013 0.000049 +1.343487 0.000049 +1.341961 0.000050 +1.340435 0.000051 +1.338909 0.000052 +1.337382 0.000052 +1.335856 0.000053 +1.334330 0.000054 +1.332804 0.000055 +1.331278 0.000056 +1.329752 0.000057 +1.328226 0.000058 +1.326700 0.000059 +1.325174 0.000060 +1.323648 0.000061 +1.322122 0.000062 +1.320596 0.000063 +1.319070 0.000064 +1.317544 0.000065 +1.316018 0.000066 +1.314492 0.000068 +1.312965 0.000069 +1.311439 0.000070 +1.309913 0.000071 +1.308387 0.000073 +1.306861 0.000074 +1.305335 0.000076 +1.303809 0.000077 +1.302283 0.000079 +1.300757 0.000080 +1.299231 0.000082 +1.297705 0.000084 +1.296179 0.000086 +1.294653 0.000087 +1.293127 0.000089 +1.291601 0.000091 +1.290074 0.000093 +1.288548 0.000096 +1.287022 0.000098 +1.285496 0.000100 +1.283970 0.000102 +1.282444 0.000105 +1.280918 0.000107 +1.279392 0.000110 +1.277866 0.000113 +1.276340 0.000116 +1.274814 0.000119 +1.273288 0.000122 +1.271762 0.000125 +1.270236 0.000128 +1.268710 0.000132 +1.267183 0.000135 +1.265657 0.000139 +1.264131 0.000143 +1.262605 0.000147 +1.261079 0.000152 +1.259553 0.000156 +1.258027 0.000161 +1.256501 0.000166 +1.254975 0.000172 +1.253449 0.000177 +1.251923 0.000183 +1.250397 0.000189 +1.248871 0.000195 +1.247345 0.000202 +1.245819 0.000209 +1.244293 0.000217 +1.242766 0.000225 +1.241240 0.000233 +1.239714 0.000242 +1.238188 0.000252 +1.236662 0.000262 +1.235136 0.000273 +1.233610 0.000284 +1.232084 0.000297 +1.230558 0.000310 +1.229032 0.000324 +1.227506 0.000339 +1.225980 0.000355 +1.224454 0.000372 +1.222928 0.000391 +1.221402 0.000411 +1.219875 0.000433 +1.218349 0.000457 +1.216823 0.000483 +1.215297 0.000512 +1.213771 0.000543 +1.212245 0.000577 +1.210719 0.000615 +1.209193 0.000657 +1.207667 0.000703 +1.206141 0.000755 +1.204615 0.000814 +1.203089 0.000880 +1.201563 0.000955 +1.200037 0.001041 +1.198511 0.001140 +1.196984 0.001256 +1.195458 0.001392 +1.193932 0.001553 +1.192406 0.001749 +1.190880 0.001988 +1.189354 0.002287 +1.187828 0.002668 +1.186302 0.003169 +1.184776 0.003849 +1.183250 0.004811 +1.181724 0.006251 +1.180198 0.008567 +1.178672 0.012694 +1.177146 0.021216 +1.175620 0.043304 +1.174094 0.121935 +1.172567 0.257300 +1.171041 0.095200 +1.169515 0.038199 +1.167989 0.021958 +1.166463 0.016372 +1.164937 0.014941 +1.163411 0.016125 +1.161885 0.020197 +1.160359 0.029368 +1.158833 0.051087 +1.157307 0.115229 +1.155781 0.357872 +1.154255 0.395628 +1.152729 0.126551 +1.151203 0.054396 +1.149676 0.030627 +1.148150 0.020718 +1.146624 0.016275 +1.145098 0.014810 +1.143572 0.015890 +1.142046 0.020784 +1.140520 0.035045 +1.138994 0.083935 +1.137468 0.241194 +1.135942 0.133202 +1.134416 0.045917 +1.132890 0.021967 +1.131364 0.012969 +1.129838 0.008684 +1.128312 0.006305 +1.126785 0.004837 +1.125259 0.003861 +1.123733 0.003174 +1.122207 0.002670 +1.120681 0.002286 +1.119155 0.001986 +1.117629 0.001746 +1.116103 0.001551 +1.114577 0.001389 +1.113051 0.001253 +1.111525 0.001137 +1.109999 0.001038 +1.108473 0.000952 +1.106947 0.000877 +1.105421 0.000811 +1.103895 0.000753 +1.102368 0.000701 +1.100842 0.000655 +1.099316 0.000613 +1.097790 0.000575 +1.096264 0.000541 +1.094738 0.000510 +1.093212 0.000482 +1.091686 0.000456 +1.090160 0.000432 +1.088634 0.000410 +1.087108 0.000390 +1.085582 0.000371 +1.084056 0.000354 +1.082530 0.000337 +1.081004 0.000322 +1.079477 0.000308 +1.077951 0.000295 +1.076425 0.000283 +1.074899 0.000272 +1.073373 0.000261 +1.071847 0.000251 +1.070321 0.000241 +1.068795 0.000232 +1.067269 0.000224 +1.065743 0.000216 +1.064217 0.000208 +1.062691 0.000201 +1.061165 0.000194 +1.059639 0.000188 +1.058113 0.000182 +1.056586 0.000176 +1.055060 0.000170 +1.053534 0.000165 +1.052008 0.000160 +1.050482 0.000155 +1.048956 0.000151 +1.047430 0.000146 +1.045904 0.000142 +1.044378 0.000138 +1.042852 0.000134 +1.041326 0.000131 +1.039800 0.000127 +1.038274 0.000124 +1.036748 0.000120 +1.035222 0.000117 +1.033696 0.000114 +1.032169 0.000111 +1.030643 0.000109 +1.029117 0.000106 +1.027591 0.000103 +1.026065 0.000101 +1.024539 0.000099 +1.023013 0.000096 +1.021487 0.000094 +1.019961 0.000092 +1.018435 0.000090 +1.016909 0.000088 +1.015383 0.000086 +1.013857 0.000084 +1.012331 0.000082 +1.010805 0.000081 +1.009278 0.000079 +1.007752 0.000077 +1.006226 0.000076 +1.004700 0.000074 +1.003174 0.000073 +1.001648 0.000071 +1.000122 0.000070 +0.998596 0.000068 +0.997070 0.000067 +0.995544 0.000066 +0.994018 0.000065 +0.992492 0.000063 +0.990966 0.000062 +0.989440 0.000061 +0.987914 0.000060 +0.986387 0.000059 +0.984861 0.000058 +0.983335 0.000057 +0.981809 0.000056 +0.980283 0.000055 +0.978757 0.000054 +0.977231 0.000053 +0.975705 0.000052 +0.974179 0.000051 +0.972653 0.000050 +0.971127 0.000050 +0.969601 0.000049 +0.968075 0.000048 +0.966549 0.000047 +0.965023 0.000047 +0.963497 0.000046 +0.961970 0.000045 +0.960444 0.000044 +0.958918 0.000044 +0.957392 0.000043 +0.955866 0.000042 +0.954340 0.000042 +0.952814 0.000041 +0.951288 0.000041 +0.949762 0.000040 +0.948236 0.000039 +0.946710 0.000039 +0.945184 0.000038 +0.943658 0.000038 +0.942132 0.000037 +0.940606 0.000037 +0.939079 0.000036 +0.937553 0.000036 +0.936027 0.000035 +0.934501 0.000035 +0.932975 0.000034 +0.931449 0.000034 +0.929923 0.000033 +0.928397 0.000033 +0.926871 0.000033 +0.925345 0.000032 +0.923819 0.000032 +0.922293 0.000031 +0.920767 0.000031 +0.919241 0.000031 +0.917715 0.000030 +0.916188 0.000030 +0.914662 0.000029 +0.913136 0.000029 +0.911610 0.000029 +0.910084 0.000028 +0.908558 0.000028 +0.907032 0.000028 +0.905506 0.000027 +0.903980 0.000027 +0.902454 0.000027 +0.900928 0.000026 +0.899402 0.000026 +0.897876 0.000026 +0.896350 0.000025 +0.894824 0.000025 +0.893298 0.000025 +0.891771 0.000025 +0.890245 0.000024 +0.888719 0.000024 +0.887193 0.000024 +0.885667 0.000024 +0.884141 0.000023 +0.882615 0.000023 +0.881089 0.000023 +0.879563 0.000023 +0.878037 0.000022 +0.876511 0.000022 +0.874985 0.000022 +0.873459 0.000022 +0.871933 0.000021 +0.870407 0.000021 +0.868880 0.000021 +0.867354 0.000021 +0.865828 0.000021 +0.864302 0.000020 +0.862776 0.000020 +0.861250 0.000020 +0.859724 0.000020 +0.858198 0.000020 +0.856672 0.000019 +0.855146 0.000019 +0.853620 0.000019 +0.852094 0.000019 +0.850568 0.000019 +0.849042 0.000018 +0.847516 0.000018 +0.845990 0.000018 +0.844463 0.000018 +0.842937 0.000018 +0.841411 0.000018 +0.839885 0.000017 +0.838359 0.000017 +0.836833 0.000017 +0.835307 0.000017 +0.833781 0.000017 +0.832255 0.000017 +0.830729 0.000017 +0.829203 0.000016 +0.827677 0.000016 +0.826151 0.000016 +0.824625 0.000016 +0.823099 0.000016 +0.821572 0.000016 +0.820046 0.000016 +0.818520 0.000015 +0.816994 0.000015 +0.815468 0.000015 +0.813942 0.000015 +0.812416 0.000015 +0.810890 0.000015 +0.809364 0.000015 +0.807838 0.000015 +0.806312 0.000014 +0.804786 0.000014 +0.803260 0.000014 +0.801734 0.000014 +0.800208 0.000014 +0.798681 0.000014 +0.797155 0.000014 +0.795629 0.000014 +0.794103 0.000014 +0.792577 0.000013 +0.791051 0.000013 +0.789525 0.000013 +0.787999 0.000013 +0.786473 0.000013 +0.784947 0.000013 +0.783421 0.000013 +0.781895 0.000013 +0.780369 0.000013 +0.778843 0.000012 +0.777317 0.000012 +0.775791 0.000012 +0.774264 0.000012 +0.772738 0.000012 +0.771212 0.000012 +0.769686 0.000012 +0.768160 0.000012 +0.766634 0.000012 +0.765108 0.000012 +0.763582 0.000012 +0.762056 0.000012 +0.760530 0.000011 +0.759004 0.000011 +0.757478 0.000011 +0.755952 0.000011 +0.754426 0.000011 +0.752900 0.000011 +0.751373 0.000011 +0.749847 0.000011 +0.748321 0.000011 +0.746795 0.000011 +0.745269 0.000011 +0.743743 0.000011 +0.742217 0.000010 +0.740691 0.000010 +0.739165 0.000010 +0.737639 0.000010 +0.736113 0.000010 +0.734587 0.000010 +0.733061 0.000010 +0.731535 0.000010 +0.730009 0.000010 +0.728482 0.000010 +0.726956 0.000010 +0.725430 0.000010 +0.723904 0.000010 +0.722378 0.000010 +0.720852 0.000010 +0.719326 0.000009 +0.717800 0.000009 +0.716274 0.000009 +0.714748 0.000009 +0.713222 0.000009 +0.711696 0.000009 +0.710170 0.000009 +0.708644 0.000009 +0.707118 0.000009 +0.705592 0.000009 +0.704065 0.000009 +0.702539 0.000009 +0.701013 0.000009 +0.699487 0.000009 +0.697961 0.000009 +0.696435 0.000009 +0.694909 0.000009 +0.693383 0.000009 +0.691857 0.000008 +0.690331 0.000008 +0.688805 0.000008 +0.687279 0.000008 +0.685753 0.000008 +0.684227 0.000008 +0.682701 0.000008 +0.681174 0.000008 +0.679648 0.000008 +0.678122 0.000008 +0.676596 0.000008 +0.675070 0.000008 +0.673544 0.000008 +0.672018 0.000008 +0.670492 0.000008 +0.668966 0.000008 +0.667440 0.000008 +0.665914 0.000008 +0.664388 0.000008 +0.662862 0.000008 +0.661336 0.000008 +0.659810 0.000007 +0.658283 0.000007 +0.656757 0.000007 +0.655231 0.000007 +0.653705 0.000007 +0.652179 0.000007 +0.650653 0.000007 +0.649127 0.000007 +0.647601 0.000007 +0.646075 0.000007 +0.644549 0.000007 +0.643023 0.000007 +0.641497 0.000007 +0.639971 0.000007 +0.638445 0.000007 +0.636919 0.000007 +0.635393 0.000007 +0.633866 0.000007 +0.632340 0.000007 +0.630814 0.000007 +0.629288 0.000007 +0.627762 0.000007 +0.626236 0.000007 +0.624710 0.000007 +0.623184 0.000007 +0.621658 0.000007 +0.620132 0.000007 +0.618606 0.000006 +0.617080 0.000006 +0.615554 0.000006 +0.614028 0.000006 +0.612502 0.000006 +0.610975 0.000006 +0.609449 0.000006 +0.607923 0.000006 +0.606397 0.000006 +0.604871 0.000006 +0.603345 0.000006 +0.601819 0.000006 +0.600293 0.000006 +0.598767 0.000006 +0.597241 0.000006 +0.595715 0.000006 +0.594189 0.000006 +0.592663 0.000006 +0.591137 0.000006 +0.589611 0.000006 +0.588084 0.000006 +0.586558 0.000006 +0.585032 0.000006 +0.583506 0.000006 +0.581980 0.000006 +0.580454 0.000006 +0.578928 0.000006 +0.577402 0.000006 +0.575876 0.000006 +0.574350 0.000006 +0.572824 0.000006 +0.571298 0.000006 +0.569772 0.000006 +0.568246 0.000005 +0.566720 0.000005 +0.565194 0.000005 +0.563667 0.000005 +0.562141 0.000005 +0.560615 0.000005 +0.559089 0.000005 +0.557563 0.000005 +0.556037 0.000005 +0.554511 0.000005 +0.552985 0.000005 +0.551459 0.000005 +0.549933 0.000005 +0.548407 0.000005 +0.546881 0.000005 +0.545355 0.000005 +0.543829 0.000005 +0.542303 0.000005 +0.540776 0.000005 +0.539250 0.000005 +0.537724 0.000005 +0.536198 0.000005 +0.534672 0.000005 +0.533146 0.000005 +0.531620 0.000005 +0.530094 0.000005 +0.528568 0.000005 +0.527042 0.000005 +0.525516 0.000005 +0.523990 0.000005 +0.522464 0.000005 +0.520938 0.000005 +0.519412 0.000005 +0.517885 0.000005 +0.516359 0.000005 +0.514833 0.000005 +0.513307 0.000005 +0.511781 0.000005 +0.510255 0.000005 +0.508729 0.000005 +0.507203 0.000005 +0.505677 0.000005 +0.504151 0.000005 +0.502625 0.000005 +0.501099 0.000005 +0.499573 0.000005 +0.498047 0.000004 +0.496521 0.000004 +0.494995 0.000004 +0.493468 0.000004 +0.491942 0.000004 +0.490416 0.000004 +0.488890 0.000004 +0.487364 0.000004 +0.485838 0.000004 +0.484312 0.000004 +0.482786 0.000004 +0.481260 0.000004 +0.479734 0.000004 +0.478208 0.000004 +0.476682 0.000004 +0.475156 0.000004 +0.473630 0.000004 +0.472104 0.000004 +0.470577 0.000004 +0.469051 0.000004 +0.467525 0.000004 +0.465999 0.000004 +0.464473 0.000004 +0.462947 0.000004 +0.461421 0.000004 +0.459895 0.000004 +0.458369 0.000004 +0.456843 0.000004 +0.455317 0.000004 +0.453791 0.000004 +0.452265 0.000004 +0.450739 0.000004 +0.449213 0.000004 +0.447686 0.000004 +0.446160 0.000004 +0.444634 0.000004 +0.443108 0.000004 +0.441582 0.000004 +0.440056 0.000004 +0.438530 0.000004 +0.437004 0.000004 +0.435478 0.000004 +0.433952 0.000004 +0.432426 0.000004 +0.430900 0.000004 +0.429374 0.000004 +0.427848 0.000004 +0.426322 0.000004 +0.424796 0.000004 +0.423269 0.000004 +0.421743 0.000004 +0.420217 0.000004 +0.418691 0.000004 +0.417165 0.000004 +0.415639 0.000004 +0.414113 0.000004 +0.412587 0.000004 +0.411061 0.000004 +0.409535 0.000004 +0.408009 0.000004 +0.406483 0.000004 +0.404957 0.000004 +0.403431 0.000004 +0.401905 0.000004 +0.400378 0.000003 +0.398852 0.000003 +0.397326 0.000003 +0.395800 0.000003 +0.394274 0.000003 +0.392748 0.000003 +0.391222 0.000003 +0.389696 0.000003 +0.388170 0.000003 +0.386644 0.000003 +0.385118 0.000003 +0.383592 0.000003 +0.382066 0.000003 +0.380540 0.000003 +0.379014 0.000003 +0.377487 0.000003 +0.375961 0.000003 +0.374435 0.000003 +0.372909 0.000003 +0.371383 0.000003 +0.369857 0.000003 +0.368331 0.000003 +0.366805 0.000003 +0.365279 0.000003 +0.363753 0.000003 +0.362227 0.000003 +0.360701 0.000003 +0.359175 0.000003 +0.357649 0.000003 +0.356123 0.000003 +0.354597 0.000003 +0.353070 0.000003 +0.351544 0.000003 +0.350018 0.000003 +0.348492 0.000003 +0.346966 0.000003 +0.345440 0.000003 +0.343914 0.000003 +0.342388 0.000003 +0.340862 0.000003 +0.339336 0.000003 +0.337810 0.000003 +0.336284 0.000003 +0.334758 0.000003 +0.333232 0.000003 +0.331706 0.000003 +0.330179 0.000003 +0.328653 0.000003 +0.327127 0.000003 +0.325601 0.000003 +0.324075 0.000003 +0.322549 0.000003 +0.321023 0.000003 +0.319497 0.000003 +0.317971 0.000003 +0.316445 0.000003 +0.314919 0.000003 +0.313393 0.000003 +0.311867 0.000003 +0.310341 0.000003 +0.308815 0.000003 +0.307288 0.000003 +0.305762 0.000003 +0.304236 0.000003 +0.302710 0.000003 +0.301184 0.000003 +0.299658 0.000003 +0.298132 0.000003 +0.296606 0.000003 +0.295080 0.000003 +0.293554 0.000003 +0.292028 0.000003 +0.290502 0.000003 +0.288976 0.000003 +0.287450 0.000003 +0.285924 0.000003 +0.284398 0.000003 +0.282871 0.000003 +0.281345 0.000003 +0.279819 0.000003 +0.278293 0.000003 +0.276767 0.000003 +0.275241 0.000003 +0.273715 0.000003 +0.272189 0.000003 +0.270663 0.000003 +0.269137 0.000003 +0.267611 0.000003 +0.266085 0.000003 +0.264559 0.000003 +0.263033 0.000003 +0.261507 0.000003 +0.259980 0.000003 +0.258454 0.000003 +0.256928 0.000003 +0.255402 0.000003 +0.253876 0.000003 +0.252350 0.000003 +0.250824 0.000003 +0.249298 0.000003 +0.247772 0.000003 +0.246246 0.000003 +0.244720 0.000003 +0.243194 0.000003 +0.241668 0.000002 +0.240142 0.000002 +0.238616 0.000002 +0.237089 0.000002 +0.235563 0.000002 +0.234037 0.000002 +0.232511 0.000002 +0.230985 0.000002 +0.229459 0.000002 +0.227933 0.000002 +0.226407 0.000002 +0.224881 0.000002 +0.223355 0.000002 +0.221829 0.000002 +0.220303 0.000002 +0.218777 0.000002 +0.217251 0.000002 +0.215725 0.000002 +0.214199 0.000002 +0.212672 0.000002 +0.211146 0.000002 +0.209620 0.000002 +0.208094 0.000002 +0.206568 0.000002 +0.205042 0.000002 +0.203516 0.000002 +0.201990 0.000002 +0.200464 0.000002 +0.198938 0.000002 +0.197412 0.000002 +0.195886 0.000002 +0.194360 0.000002 +0.192834 0.000002 +0.191308 0.000002 +0.189781 0.000002 +0.188255 0.000002 +0.186729 0.000002 +0.185203 0.000002 +0.183677 0.000002 +0.182151 0.000002 +0.180625 0.000002 +0.179099 0.000002 +0.177573 0.000002 +0.176047 0.000002 +0.174521 0.000002 +0.172995 0.000002 +0.171469 0.000002 +0.169943 0.000002 +0.168417 0.000002 +0.166890 0.000002 +0.165364 0.000002 +0.163838 0.000002 +0.162312 0.000002 +0.160786 0.000002 +0.159260 0.000002 +0.157734 0.000002 +0.156208 0.000002 +0.154682 0.000002 +0.153156 0.000002 +0.151630 0.000002 +0.150104 0.000002 +0.148578 0.000002 +0.147052 0.000002 +0.145526 0.000002 +0.144000 0.000002 +0.142473 0.000002 +0.140947 0.000002 +0.139421 0.000002 +0.137895 0.000002 +0.136369 0.000002 +0.134843 0.000002 +0.133317 0.000002 +0.131791 0.000002 +0.130265 0.000002 +0.128739 0.000002 +0.127213 0.000002 +0.125687 0.000002 +0.124161 0.000002 +0.122635 0.000002 +0.121109 0.000002 +0.119582 0.000002 +0.118056 0.000002 +0.116530 0.000002 +0.115004 0.000002 +0.113478 0.000002 +0.111952 0.000002 +0.110426 0.000002 +0.108900 0.000002 +0.107374 0.000002 +0.105848 0.000002 +0.104322 0.000002 +0.102796 0.000002 +0.101270 0.000002 +0.099744 0.000002 +0.098218 0.000002 +0.096691 0.000002 +0.095165 0.000002 +0.093639 0.000002 +0.092113 0.000002 +0.090587 0.000002 +0.089061 0.000002 +0.087535 0.000002 +0.086009 0.000002 +0.084483 0.000002 +0.082957 0.000002 +0.081431 0.000002 +0.079905 0.000002 +0.078379 0.000002 +0.076853 0.000002 +0.075327 0.000002 +0.073801 0.000002 +0.072274 0.000002 +0.070748 0.000002 +0.069222 0.000002 +0.067696 0.000002 +0.066170 0.000002 +0.064644 0.000002 +0.063118 0.000002 +0.061592 0.000002 +0.060066 0.000002 +0.058540 0.000002 +0.057014 0.000002 +0.055488 0.000002 +0.053962 0.000002 +0.052436 0.000002 +0.050910 0.000002 +0.049383 0.000002 +0.047857 0.000002 +0.046331 0.000002 +0.044805 0.000002 +0.043279 0.000002 +0.041753 0.000002 +0.040227 0.000002 +0.038701 0.000002 +0.037175 0.000002 +0.035649 0.000002 +0.034123 0.000002 +0.032597 0.000002 +0.031071 0.000002 +0.029545 0.000002 +0.028019 0.000002 +0.026492 0.000002 +0.024966 0.000002 +0.023440 0.000002 +0.021914 0.000002 +0.020388 0.000002 +0.018862 0.000002 +0.017336 0.000002 +0.015810 0.000002 +0.014284 0.000002 +0.012758 0.000002 +0.011232 0.000002 +0.009706 0.000002 +0.008180 0.000002 +0.006654 0.000002 +0.005128 0.000002 +0.003602 0.000002 +0.002075 0.000002 +0.000549 0.000002 +-0.000977 0.000002 +-0.002503 0.000002 +-0.004029 0.000002 +-0.005555 0.000002 +-0.007081 0.000002 +-0.008607 0.000002 +-0.010133 0.000002 +-0.011659 0.000002 +-0.013185 0.000002 +-0.014711 0.000002 +-0.016237 0.000002 +-0.017763 0.000002 +-0.019289 0.000002 +-0.020816 0.000002 +-0.022342 0.000002 +-0.023868 0.000002 +-0.025394 0.000002 +-0.026920 0.000002 +-0.028446 0.000002 +-0.029972 0.000002 +-0.031498 0.000002 +-0.033024 0.000002 +-0.034550 0.000002 +-0.036076 0.000002 +-0.037602 0.000002 +-0.039128 0.000002 +-0.040654 0.000002 +-0.042180 0.000002 +-0.043707 0.000002 +-0.045233 0.000002 +-0.046759 0.000002 +-0.048285 0.000002 +-0.049811 0.000002 +-0.051337 0.000002 +-0.052863 0.000002 +-0.054389 0.000002 +-0.055915 0.000002 +-0.057441 0.000002 +-0.058967 0.000002 +-0.060493 0.000002 +-0.062019 0.000002 +-0.063545 0.000002 +-0.065071 0.000002 +-0.066597 0.000002 +-0.068124 0.000001 +-0.069650 0.000001 +-0.071176 0.000001 +-0.072702 0.000001 +-0.074228 0.000001 +-0.075754 0.000001 +-0.077280 0.000001 +-0.078806 0.000001 +-0.080332 0.000001 +-0.081858 0.000001 +-0.083384 0.000001 +-0.084910 0.000001 +-0.086436 0.000001 +-0.087962 0.000001 +-0.089488 0.000001 +-0.091015 0.000001 +-0.092541 0.000001 +-0.094067 0.000001 +-0.095593 0.000001 +-0.097119 0.000001 +-0.098645 0.000001 +-0.100171 0.000001 +-0.101697 0.000001 +-0.103223 0.000001 +-0.104749 0.000001 +-0.106275 0.000001 +-0.107801 0.000001 +-0.109327 0.000001 +-0.110853 0.000001 +-0.112379 0.000001 +-0.113906 0.000001 +-0.115432 0.000001 +-0.116958 0.000001 +-0.118484 0.000001 +-0.120010 0.000001 +-0.121536 0.000001 +-0.123062 0.000001 +-0.124588 0.000001 +-0.126114 0.000001 +-0.127640 0.000001 +-0.129166 0.000001 +-0.130692 0.000001 +-0.132218 0.000001 +-0.133744 0.000001 +-0.135270 0.000001 +-0.136796 0.000001 +-0.138323 0.000001 +-0.139849 0.000001 +-0.141375 0.000001 +-0.142901 0.000001 +-0.144427 0.000001 +-0.145953 0.000001 +-0.147479 0.000001 +-0.149005 0.000001 +-0.150531 0.000001 +-0.152057 0.000001 +-0.153583 0.000001 +-0.155109 0.000001 +-0.156635 0.000001 +-0.158161 0.000001 +-0.159687 0.000001 +-0.161214 0.000001 +-0.162740 0.000001 +-0.164266 0.000001 +-0.165792 0.000001 +-0.167318 0.000001 +-0.168844 0.000001 +-0.170370 0.000001 +-0.171896 0.000001 +-0.173422 0.000001 +-0.174948 0.000001 +-0.176474 0.000001 +-0.178000 0.000001 +-0.179526 0.000001 +-0.181052 0.000001 +-0.182578 0.000001 +-0.184105 0.000001 +-0.185631 0.000001 +-0.187157 0.000001 +-0.188683 0.000001 +-0.190209 0.000001 +-0.191735 0.000001 +-0.193261 0.000001 +-0.194787 0.000001 +-0.196313 0.000001 +-0.197839 0.000001 +-0.199365 0.000001 +-0.200891 0.000001 +-0.202417 0.000001 +-0.203943 0.000001 +-0.205469 0.000001 +-0.206995 0.000001 +-0.208522 0.000001 +-0.210048 0.000001 +-0.211574 0.000001 +-0.213100 0.000001 +-0.214626 0.000001 +-0.216152 0.000001 +-0.217678 0.000001 +-0.219204 0.000001 +-0.220730 0.000001 +-0.222256 0.000001 +-0.223782 0.000001 +-0.225308 0.000001 +-0.226834 0.000001 +-0.228360 0.000001 +-0.229886 0.000001 +-0.231413 0.000001 +-0.232939 0.000001 +-0.234465 0.000001 +-0.235991 0.000001 +-0.237517 0.000001 +-0.239043 0.000001 +-0.240569 0.000001 +-0.242095 0.000001 +-0.243621 0.000001 +-0.245147 0.000001 +-0.246673 0.000001 +-0.248199 0.000001 +-0.249725 0.000001 +-0.251251 0.000001 +-0.252777 0.000001 +-0.254304 0.000001 +-0.255830 0.000001 +-0.257356 0.000001 +-0.258882 0.000001 +-0.260408 0.000001 +-0.261934 0.000001 +-0.263460 0.000001 +-0.264986 0.000001 +-0.266512 0.000001 +-0.268038 0.000001 +-0.269564 0.000001 +-0.271090 0.000001 +-0.272616 0.000001 +-0.274142 0.000001 +-0.275668 0.000001 +-0.277194 0.000001 +-0.278721 0.000001 +-0.280247 0.000001 +-0.281773 0.000001 +-0.283299 0.000001 +-0.284825 0.000001 +-0.286351 0.000001 +-0.287877 0.000001 +-0.289403 0.000001 +-0.290929 0.000001 +-0.292455 0.000001 +-0.293981 0.000001 +-0.295507 0.000001 +-0.297033 0.000001 +-0.298559 0.000001 +-0.300085 0.000001 +-0.301612 0.000001 +-0.303138 0.000001 +-0.304664 0.000001 +-0.306190 0.000001 +-0.307716 0.000001 +-0.309242 0.000001 +-0.310768 0.000001 +-0.312294 0.000001 +-0.313820 0.000001 +-0.315346 0.000001 +-0.316872 0.000001 +-0.318398 0.000001 +-0.319924 0.000001 +-0.321450 0.000001 +-0.322976 0.000001 +-0.324503 0.000001 +-0.326029 0.000001 +-0.327555 0.000001 +-0.329081 0.000001 +-0.330607 0.000001 +-0.332133 0.000001 +-0.333659 0.000001 +-0.335185 0.000001 +-0.336711 0.000001 +-0.338237 0.000001 +-0.339763 0.000001 +-0.341289 0.000001 +-0.342815 0.000001 +-0.344341 0.000001 +-0.345867 0.000001 +-0.347393 0.000001 +-0.348920 0.000001 +-0.350446 0.000001 +-0.351972 0.000001 +-0.353498 0.000001 +-0.355024 0.000001 +-0.356550 0.000001 +-0.358076 0.000001 +-0.359602 0.000001 +-0.361128 0.000001 +-0.362654 0.000001 +-0.364180 0.000001 +-0.365706 0.000001 +-0.367232 0.000001 +-0.368758 0.000001 +-0.370284 0.000001 +-0.371811 0.000001 +-0.373337 0.000001 +-0.374863 0.000001 +-0.376389 0.000001 +-0.377915 0.000001 +-0.379441 0.000001 +-0.380967 0.000001 +-0.382493 0.000001 +-0.384019 0.000001 +-0.385545 0.000001 +-0.387071 0.000001 +-0.388597 0.000001 +-0.390123 0.000001 +-0.391649 0.000001 +-0.393175 0.000001 +-0.394702 0.000001 +-0.396228 0.000001 +-0.397754 0.000001 +-0.399280 0.000001 +-0.400806 0.000001 +-0.402332 0.000001 +-0.403858 0.000001 +-0.405384 0.000001 +-0.406910 0.000001 +-0.408436 0.000001 +-0.409962 0.000001 +-0.411488 0.000001 +-0.413014 0.000001 +-0.414540 0.000001 +-0.416066 0.000001 +-0.417592 0.000001 +-0.419119 0.000001 +-0.420645 0.000001 +-0.422171 0.000001 +-0.423697 0.000001 +-0.425223 0.000001 +-0.426749 0.000001 +-0.428275 0.000001 +-0.429801 0.000001 +-0.431327 0.000001 +-0.432853 0.000001 +-0.434379 0.000001 +-0.435905 0.000001 +-0.437431 0.000001 +-0.438957 0.000001 +-0.440483 0.000001 +-0.442010 0.000001 +-0.443536 0.000001 +-0.445062 0.000001 +-0.446588 0.000001 +-0.448114 0.000001 +-0.449640 0.000001 +-0.451166 0.000001 +-0.452692 0.000001 +-0.454218 0.000001 +-0.455744 0.000001 +-0.457270 0.000001 +-0.458796 0.000001 +-0.460322 0.000001 +-0.461848 0.000001 +-0.463374 0.000001 +-0.464901 0.000001 +-0.466427 0.000001 +-0.467953 0.000001 +-0.469479 0.000001 +-0.471005 0.000001 +-0.472531 0.000001 +-0.474057 0.000001 +-0.475583 0.000001 +-0.477109 0.000001 +-0.478635 0.000001 +-0.480161 0.000001 +-0.481687 0.000001 +-0.483213 0.000001 +-0.484739 0.000001 +-0.486265 0.000001 +-0.487791 0.000001 +-0.489318 0.000001 +-0.490844 0.000001 +-0.492370 0.000001 +-0.493896 0.000001 +-0.495422 0.000001 +-0.496948 0.000001 +-0.498474 0.000001 +-0.500000 0.000001 diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate_signals.csv b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate_signals.csv new file mode 100644 index 00000000..58dbd32f --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate_signals.csv @@ -0,0 +1,4 @@ +shift_ppm,multiplicity,J_Hz,nH +4.104,q,7.1,2 +2.035,s,,3 +1.155,t,7.1,3 diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/input_configs.yaml b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/input_configs.yaml new file mode 100644 index 00000000..7b58ab51 --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/input_configs.yaml @@ -0,0 +1,11 @@ +smiles: +- CCOC(C)=O +- CCO +names: +- ethyl_acetate +- ethanol +field_mhz: 400.0 +linewidth: 1.0 +n_points: 8192 +output_dir: skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3 +quiet: false diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/literature_cdcl3.csv b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/literature_cdcl3.csv new file mode 100644 index 00000000..f6c4892c --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/literature_cdcl3.csv @@ -0,0 +1,7 @@ +compound,group,shift_ppm,multiplicity,J_Hz,nH,note +ethyl_acetate,CH3CO,2.05,s,,3, +ethyl_acetate,CH2 (OCH2CH3),4.12,q,7,2, +ethyl_acetate,CH3 (OCH2CH3),1.26,t,7,3, +ethanol,CH3,1.25,t,7,3, +ethanol,CH2,3.72,q,7,2,CH2-OH coupling (J = 5 Hz) may also be observed +ethanol,OH,1.32,s,,1,exchangeable; not all OH signals observable diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/nmr_vs_literature.png b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/nmr_vs_literature.png new file mode 100644 index 0000000000000000000000000000000000000000..855ea231501b23ac132a541aadd0e9e7ed4066ad GIT binary patch literal 80070 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Ð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 + + + + + + + 2026-10-10T00:03:19.355837 + image/svg+xml + + + Matplotlib v3.11.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/predictions.json b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/predictions.json new file mode 100644 index 00000000..297c47a0 --- /dev/null +++ b/skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/predictions.json @@ -0,0 +1,26 @@ +{ + "found": [ + { + "smiles": "CCOC(C)=O", + "name": "ethyl_acetate", + "n_signals": 3, + "n_atoms_h": 8, + "spectrum": "skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate.xy", + "signals": "skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethyl_acetate_signals.csv" + }, + { + "smiles": "CCO", + "name": "ethanol", + "n_signals": 2, + "n_atoms_h": 5, + "spectrum": "skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol.xy", + "signals": "skills/chem-nmr-predict/examples/ethyl_acetate_ethanol_cdcl3/ethanol_signals.csv" + } + ], + "failed": [], + "parameters": { + "field_mhz": 400.0, + "linewidth_hz": 1.0, + "n_points": 8192 + } +} From 5c54940ee8fb9ccf5c0cfa665098cf9db7b8989f Mon Sep 17 00:00:00 2001 From: bowen-bd Date: Sat, 10 Oct 2026 13:39:04 -0400 Subject: [PATCH 05/12] fix(chem-db-qmof, chem-db-mof): refcode lookup, exact MOF names, element matching; add examples - query_qmof.py / query_mof_db.py: --identifier now searches CSD refcodes (data.filename); query_qmof.py also saves band gaps and pore properties to qmof_properties.json. - query_mof_db.py: a full ARC-MOF name matches exactly (ddmof_42 no longer returns ddmof_4291); --elements requires all listed elements by default, with --element-match any for mixed-metal sets; cache dir saved as ~. - chem-db-mof SKILL.md now matches the code (Materials Cloud archive, EQeq charges, structure names, metadata file) and cites Burner et al. 2023. Examples: HKUST-1 (DOTSOV01) vs experiment and the QMOF release; ARC-MOF ddmof_559 vs Majumdar et al. 2021 and the ARC-MOF metadata. Co-Authored-By: Claude Opus 5.5 (1M context) --- skills/chem-db-mof/SKILL.md | 48 +- .../examples/arcmof_db7_ddmof_559/README.md | 185 ++++ .../arcmof_geometric_properties_ddmof_559.csv | 2 + .../arcmof_db7_ddmof_559/ddmof_559.cif | 919 ++++++++++++++++++ .../arcmof_db7_ddmof_559/input_configs.yaml | 8 + .../majumdar_metadata.csv | 2 + .../arcmof_db7_ddmof_559/validation.json | 57 ++ skills/chem-db-mof/scripts/query_mof_db.py | 71 +- skills/chem-db-qmof/SKILL.md | 6 +- .../examples/hkust1_dotsov01/README.md | 176 ++++ .../hkust1_dotsov01/input_configs.yaml | 4 + .../examples/hkust1_dotsov01/qmof-8b5bb88.cif | 182 ++++ .../hkust1_dotsov01/qmof_properties.json | 33 + .../examples/hkust1_dotsov01/validation.json | 27 + skills/chem-db-qmof/scripts/query_qmof.py | 87 +- 15 files changed, 1758 insertions(+), 49 deletions(-) create mode 100644 skills/chem-db-mof/examples/arcmof_db7_ddmof_559/README.md create mode 100644 skills/chem-db-mof/examples/arcmof_db7_ddmof_559/arcmof_geometric_properties_ddmof_559.csv create mode 100644 skills/chem-db-mof/examples/arcmof_db7_ddmof_559/ddmof_559.cif create mode 100644 skills/chem-db-mof/examples/arcmof_db7_ddmof_559/input_configs.yaml create mode 100644 skills/chem-db-mof/examples/arcmof_db7_ddmof_559/majumdar_metadata.csv create mode 100644 skills/chem-db-mof/examples/arcmof_db7_ddmof_559/validation.json create mode 100644 skills/chem-db-qmof/examples/hkust1_dotsov01/README.md create mode 100644 skills/chem-db-qmof/examples/hkust1_dotsov01/input_configs.yaml create mode 100644 skills/chem-db-qmof/examples/hkust1_dotsov01/qmof-8b5bb88.cif create mode 100644 skills/chem-db-qmof/examples/hkust1_dotsov01/qmof_properties.json create mode 100644 skills/chem-db-qmof/examples/hkust1_dotsov01/validation.json diff --git a/skills/chem-db-mof/SKILL.md b/skills/chem-db-mof/SKILL.md index 8c997d7c..ed979be6 100644 --- a/skills/chem-db-mof/SKILL.md +++ b/skills/chem-db-mof/SKILL.md @@ -1,6 +1,6 @@ --- name: chem-db-mof -description: Query multiple MOF databases (QMOF via MPContribs; ARC-MOF DB7/Majumdar et al. via Zenodo) and download CIF structures with optional element or identifier filters. +description: Query multiple MOF databases (QMOF via MPContribs; ARC-MOF DB7/Majumdar et al. via Materials Cloud) and download CIF structures with optional element or identifier filters. metadata: category: [chemistry] venv: [cpu] @@ -15,7 +15,7 @@ Provide a unified interface for retrieving Metal-Organic Framework (MOF) crystal | Database | Alias | Size | Access | Structures | |---|---|---|---|---| | Quantum MOF (QMOF) | `qmof` | ~20,000 DFT-relaxed | MPContribs API | DFT-optimized CIFs + bandgaps | -| ARC-MOF DB7 (Majumdar et al.) | `arcmof-majumdar` | 12,316 hypothetical | Zenodo stream | CIFs with REPEAT partial charges | +| ARC-MOF DB7 (Majumdar et al.) | `arcmof-majumdar` | 23,891 hypothetical (`ddmof_1`–`ddmof_23891`) | Materials Cloud archive | CIFs with EQeq partial charges + `mof_data.csv` metadata | ## Prerequisites @@ -34,9 +34,9 @@ Decide which database to query and which element/identifier filters to apply. - Use `--identifier` for a specific CSD refcode (e.g., `KAXQIL`) **For ARC-MOF DB7 (Majumdar et al.)** — best for diverse hypothetical MOFs with underrepresented inorganic SBUs: -- Use `--elements` for element filtering (e.g., `Zn,O,C`) -- Use `--identifier` for a specific structure ID (e.g., `DB7_00042`) -- **First run**: downloads `geometric_properties.csv` (~110 MB) to `~/.cache/arcmof/` — one-time only; subsequent runs are fast +- Use `--elements` for element filtering (e.g., `Zn`, or `Zn,F` for fluorinated Zn MOFs); by default every listed element must be present, while `--element-match any` keeps structures containing at least one of them +- Use `--identifier` for a specific structure name (e.g., `ddmof_559`); a full name matches exactly, anything else matches as a substring +- **First run**: downloads the Majumdar archive `mof_data.tar.gz` (~149 MB) from Materials Cloud to `~/.cache/arcmof/` — one-time only; subsequent runs are fast ### Step 2: Run the query @@ -50,10 +50,10 @@ MP_API_KEY= ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKI ``` ```bash -# ARC-MOF DB7 (Majumdar) — 20 Zn,O,C hypothetical MOFs +# ARC-MOF DB7 (Majumdar) — 20 Zn-containing hypothetical MOFs ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_mof_db.py \ --database arcmof-majumdar \ - --elements Zn,O,C \ + --elements Zn \ --max-results 20 \ --output-dir ./research/_/structures/arcmof_db7 ``` @@ -62,7 +62,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_ # ARC-MOF DB7 — retrieve a specific structure by identifier ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_mof_db.py \ --database arcmof-majumdar \ - --identifier DB7_00042 \ + --identifier ddmof_559 \ --output-dir ./research/_/structures/arcmof_db7 ``` @@ -72,7 +72,8 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_ |---|---|---| | `--database` | both | `qmof` or `arcmof-majumdar` | | `--formula` | qmof | Element/formula filter string (e.g., `Zn,O,C`) | -| `--elements` | arcmof-majumdar | Comma-separated required elements; ALL must be present | +| `--elements` | arcmof-majumdar | Comma-separated elements; by default a structure must contain ALL of them | +| `--element-match` | arcmof-majumdar | `all` (default) or `any` (keep structures containing at least one listed element, e.g. a mixed-metal screening set) | | `--identifier` | both | Specific structure name or ID substring | | `--max-results` | both | Max CIFs to download (default: 10) | | `--output-dir` | both | Directory for output CIF files | @@ -82,7 +83,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_ The script saves: - Individual `.cif` files named by structure identifier -- `arcmof_db7_metadata.csv` (ARC-MOF only) — geometric properties for the downloaded subset +- `majumdar_metadata.csv` (ARC-MOF only) — Majumdar `mof_data.csv` rows (building blocks, topology, volume, density, CO2 uptake) for the downloaded subset Verify the download: ```bash @@ -93,14 +94,16 @@ ls -lh /*.cif | head -20 The first call with `--database arcmof-majumdar` performs: -1. **Metadata download** (~110 MB, one-time): `geometric_properties.csv` cached at `~/.cache/arcmof/` -2. **DB7 filtering**: identifies the 12,316 Majumdar structures from the full 288k-entry CSV -3. **CIF streaming**: streams the ARC-MOF tarball (`ARCMOF_20241004.tar.gz`, ~670 MB) and extracts only the requested CIFs — the stream is read once but only matching files are written to disk +1. **Archive download** (~149 MB, one-time): the Majumdar et al. `mof_data.tar.gz` from Materials Cloud (DOI 10.24435/materialscloud:yn-de), cached at `~/.cache/arcmof/majumdar_mof_data.tar.gz` +2. **Metadata**: `mof_data.csv` inside the archive lists all 23,891 structures with their building blocks and properties +3. **CIF extraction**: the nested `mof_structures.tar` is read sequentially and only the CIFs that pass the identifier/metal filters are written to disk; an exact `--identifier` stops at the first hit Subsequent runs with the same `--output-dir` skip already-downloaded CIFs. ## Examples +**Literature-validated example: ARC-MOF DB7 `ddmof_559`** (the top post-combustion CO₂ MOF in Figure 7 of Majumdar et al. 2021). See [examples/arcmof_db7_ddmof_559/README.md](examples/arcmof_db7_ddmof_559/README.md). It retrieves the structure by exact identifier and checks its composition, Ni₄(μ₃-OH)₂ node stoichiometry, volume and density against the paper and the ARC-MOF metadata. + **Example 1: Query Zn MOFs from QMOF for CO₂ screening pre-processing** ```bash MP_API_KEY= \ @@ -116,38 +119,39 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_ # Zn-based ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_mof_db.py \ --database arcmof-majumdar \ - --elements Zn,O,C \ + --elements Zn \ --max-results 50 \ --output-dir ./research/2026-03-27_arcmof_zn # Ni-based ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_mof_db.py \ --database arcmof-majumdar \ - --elements Ni,O,C \ + --elements Ni \ --max-results 50 \ --output-dir ./research/2026-03-27_arcmof_ni # Mg-based ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_mof_db.py \ --database arcmof-majumdar \ - --elements Mg,O,C \ + --elements Mg \ --max-results 50 \ --output-dir ./research/2026-03-27_arcmof_mg ``` -> **Tip:** You can expand diversity by adding more elements to `--elements` (e.g., `Zn,Ni,O,C,N` to retrieve MOFs containing all of those elements simultaneously), or run separate queries per metal node and combine the resulting CIF directories for a broader screening campaign. +> **Tip:** To build a mixed-metal screening set in one query, list several metals with `--element-match any` (e.g., `--elements Zn,Ni,Mg --element-match any`), or run separate queries per metal node and combine the resulting CIF directories. With the default `all`, adding elements narrows the search (e.g., `Zn,F` returns only fluorinated Zn MOFs). ## Constraints - **API limits**: QMOF via MPContribs has rate limits; keep `--max-results` ≤ 100 per call. -- **ARC-MOF first-run time**: Downloading the metadata CSV (~110 MB) takes ~1–2 min; streaming the tarball for CIF extraction adds ~5–15 min depending on how many structures are requested and network speed. -- **ARC-MOF CIF fallback**: If some DB7 structures are not found in `ARCMOF_20241004.tar.gz`, they may reside in `all_structures_1.tar.gz` or `all_structures_2.tar.gz`. Update `ARCMOF_STRUCTURES_NAME` in the script if needed. -- **Element filtering (ARC-MOF)**: Requires a `formula` or `chemical_formula` column in `geometric_properties.csv`. If the column is absent, all DB7 entries are returned without element filtering. -- **Post-download**: Structures from ARC-MOF DB7 include REPEAT partial charges embedded in the CIF. These can be used directly for classical force-field simulations but should be relaxed with an MLIP before running Widom insertion (see [`chem-sorption-relax`](../chem-sorption-relax/SKILL.md)). +- **ARC-MOF first-run time**: Downloading the ~149 MB archive takes a few minutes depending on network speed; later runs read the cached copy. +- **ARC-MOF availability**: The Materials Cloud download server can be temporarily unavailable (HTTP 503); retry later if the first download fails. +- **Element filtering (ARC-MOF)**: Parsed from each CIF's `_atom_site_type_symbol`; all listed elements must be present unless `--element-match any` is given. +- **Existing outputs**: If `--output-dir` already holds `--max-results` CIFs, the query is skipped regardless of the filters; use a fresh directory per query. +- **Post-download**: Structures from ARC-MOF DB7 include EQeq partial charges embedded in the CIF. These can be used directly for classical force-field simulations but should be relaxed with an MLIP before running Widom insertion (see [`chem-sorption-relax`](../chem-sorption-relax/SKILL.md)). ## References -- Raza, A. et al., "ARC–MOF: A Diverse Database of Metal-Organic Frameworks with DFT-Derived Partial Atomic Charges and Descriptors for Machine Learning", *Chem. Mater.*, 2022. [DOI: 10.1021/acs.chemmater.2c02485](https://doi.org/10.1021/acs.chemmater.2c02485) +- Burner, J. et al., "ARC–MOF: A Diverse Database of Metal-Organic Frameworks with DFT-Derived Partial Atomic Charges and Descriptors for Machine Learning", *Chem. Mater.* 35, 900–916, 2023. [DOI: 10.1021/acs.chemmater.2c02485](https://doi.org/10.1021/acs.chemmater.2c02485) - Majumdar, S., Moosavi, S.M., Jablonka, K.M., Ongari, D., Smit, B., "Diversifying Databases of Metal Organic Frameworks for High-Throughput Computational Screening", *ACS Appl. Mater. Interfaces*, 2021. [DOI: 10.1021/acsami.1c16220](https://doi.org/10.1021/acsami.1c16220); dataset: *Materials Cloud Archive* 2021.126, [DOI: 10.24435/materialscloud:yn-de](https://doi.org/10.24435/materialscloud:yn-de) - Chung, Y.G. et al., "Computation-Ready, Experimental Metal-Organic Frameworks: A Tool To Enable High-Throughput Screening of Nanoporous Crystals", *Chem. Mater.*, 2014 (QMOF precursor). [DOI: 10.1021/cm502594j](https://doi.org/10.1021/cm502594j) - Rosen, A.S. et al., "Machine learning the quantum-chemical properties of metal-organic frameworks for accelerated materials discovery", *Matter*, 2021 (QMOF). [DOI: 10.1016/j.matt.2021.02.015](https://doi.org/10.1016/j.matt.2021.02.015) diff --git a/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/README.md b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/README.md new file mode 100644 index 00000000..a91b652d --- /dev/null +++ b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/README.md @@ -0,0 +1,185 @@ +# ARC-MOF DB7 (Majumdar et al.): Top Post-Combustion CO2 MOF `ddmof_559` + +## Goal + +Retrieve one specific hypothetical MOF by identifier from the Majumdar et al. (2021) database, +which ARC-MOF includes as **DB7**. Then validate the downloaded CIF and its metadata row against: + +1. the structure description in the original paper. Figure 7 of Majumdar et al. shows `ddmof_559` + as "a top performing MOF for post-combustion carbon capture": metal node **mn1** + organic edge + **oe31** + topology **snk**. The text defines mn1 as the six-connected + **Ni4(μ3-OH)2(COO)6** cluster; +2. the geometric descriptors published with ARC-MOF (`geometric_properties.csv`, Zenodo); and +3. the paper's CO2 screening benchmark (Zeolite-13X, ~5 mmol g−1 at 1 bar and 298 K). + +## Inputs + +| Input | Value | +|---|---| +| `--database` | `arcmof-majumdar` | +| `--identifier` | `ddmof_559` (a full MOF name, so it is matched exactly) | +| `--max-results` | `1` | +| Data source | Materials Cloud Archive 2021.126, `mof_data.tar.gz` (156,255,289 bytes, md5 `a424d0a320baaad4a97378a78d8022dd`), cached at `~/.cache/arcmof/` | +| Compute | CPU only. About 5 s with a warm cache. The first run downloads the 149 MB archive once. | + +MOF names in this database are `ddmof_` with N = 1 to 23891, without zero padding. + +## Command + +Run from the repository root: + +```bash +venv/run cpu python skills/chem-db-mof/scripts/query_mof_db.py \ + --database arcmof-majumdar \ + --identifier ddmof_559 \ + --max-results 1 \ + --output-dir skills/chem-db-mof/examples/arcmof_db7_ddmof_559 +``` + +Console output: + +```text +Using cached Majumdar tarball: ~/.cache/arcmof/majumdar_mof_data.tar.gz +Loading mof_data.csv metadata ... +Extracting CIFs from nested mof_structures.tar ... + Identifier filter (exact name): 'ddmof_559' + [1] ddmof_559.cif +Done. Checked 1 CIFs, saved 1 to skills/chem-db-mof/examples/arcmof_db7_ddmof_559. +Metadata (incl. CO2 uptake, selectivity) saved: skills/chem-db-mof/examples/arcmof_db7_ddmof_559/majumdar_metadata.csv +``` + +### Reference row from ARC-MOF + +This takes the `DB7-ddmof_559` row from ARC-MOF's `geometric_properties.csv` (110,395,714 bytes, +md5 `345ecb861674a3a25e7be580cd1ab716`, Zenodo record 16802743). The streaming `grep` avoids +loading the 521,316-row table into memory: + +```bash +curl -L -o ~/.cache/arcmof/geometric_properties.csv \ + "https://zenodo.org/records/16802743/files/geometric_properties.csv?download=1" +{ head -1 ~/.cache/arcmof/geometric_properties.csv; \ + grep -F ',DB7-ddmof_559.cif,' ~/.cache/arcmof/geometric_properties.csv; } \ + > skills/chem-db-mof/examples/arcmof_db7_ddmof_559/arcmof_geometric_properties_ddmof_559.csv +``` + +### Validation step + +This step derives the composition, the node motif counts, the net charge, the volume and the +density from the CIF with pymatgen, then compares them with both metadata rows and writes +[validation.json](validation.json): + +```bash +venv/run cpu python - <<'PY' +import json, tarfile +from pathlib import Path +import numpy as np +import pandas as pd +from pymatgen.core import Structure + +ex = "skills/chem-db-mof/examples/arcmof_db7_ddmof_559" +s = Structure.from_file(f"{ex}/ddmof_559.cif") +mj = pd.read_csv(f"{ex}/majumdar_metadata.csv").iloc[0] # skill output +arc = pd.read_csv(f"{ex}/arcmof_geometric_properties_ddmof_559.csv").iloc[0] # ARC-MOF reference row + +# Partial charges: 6-column rows of the atom-site loop (label, type, x, y, z, charge) +rows = [l.split() for l in open(f"{ex}/ddmof_559.cif")] +charges = [float(r[5]) for r in rows if len(r) == 6 and r[1].isalpha()] + +# Bond-based motif counts: mu3-OH hydrogens (H-O < 1.1 A), carboxylate carbons (two O < 1.4 A) +dm, sym = s.distance_matrix, np.array([site.specie.symbol for site in s]) +n_oh = int(sum((dm[i, sym == "O"] < 1.1).any() for i in np.where(sym == "H")[0])) +n_coo = int(sum((dm[i, sym == "O"] < 1.4).sum() == 2 for i in np.where(sym == "C")[0])) +el = s.composition.get_el_amt_dict() + +# Dataset-level check against the paper: count of MOFs above the Zeolite-13X benchmark (~5 mmol/g) +tar = Path("~/.cache/arcmof/majumdar_mof_data.tar.gz").expanduser() +with tarfile.open(tar, "r:gz") as t: + co2 = pd.read_csv(t.extractfile("mof_data/mof_data.csv"), usecols=["CO2_uptake_1bar_298K (mmol/g)"]).iloc[:, 0] + +out = { + "retrieved": { + "formula": s.composition.formula.replace(" ", ""), + "n_atoms": len(s), + "elements": sorted(el), + "n_Ni": int(el["Ni"]), "n_mu3_OH": n_oh, "n_carboxylate": n_coo, "n_F": int(el["F"]), + "net_charge_e": round(sum(charges), 4), + "volume_A3": round(s.volume, 2), + "density_g_cm3": round(float(s.density), 5), + "metal_node": mj["metal_node"], "organic_edge": mj["organic_edge"], "topology": mj["topology"], + "CO2_uptake_1bar_298K_mmol_g": round(float(mj["CO2_uptake_1bar_298K (mmol/g)"]), 3), + }, + "reference": { + "paper_fig7": {"metal_node": "mn1", "organic_edge": "oe31", "topology": "snk", + "mn1_cluster": "Ni4(mu3-OH)2(COO)6", "zeolite_13X_CO2_mmol_g": 5.0, + "n_above_13X": "around 800"}, + "majumdar_mof_data": {"volume_A3": float(mj["CellV (A^3)"]), "density_g_cm3": float(mj["Density (g/cm^3)"]), + "Di_A": float(mj["Di"]), "Df_A": float(mj["Df"])}, + "arcmof_geometric_properties": {"filename": arc["filename"], "volume_A3": float(arc["UC_volume"]), + "density_g_cm3": float(arc["Density"]), "Di_A": float(arc["Di"]), + "Df_A": float(arc["Df"]), "in_ARC-MOF": bool(arc["ARC-MOF"])}, + }, + "derived": { + "Ni_per_OH": el["Ni"] / n_oh, "COO_per_Ni4": 4 * n_coo / el["Ni"], "linkers_C8F4O4": int(el["F"] // 4), + "n_above_13X_in_dataset": int((co2 > 5.0).sum()), "n_with_CO2_data": int(co2.notna().sum()), + "volume_rel_dev_vs_arcmof_pct": round(100 * (s.volume / arc["UC_volume"] - 1), 4), + "density_rel_dev_vs_arcmof_pct": round(100 * (float(s.density) / arc["Density"] - 1), 4), + }, +} +json.dump(out, open(f"{ex}/validation.json", "w"), indent=2) +print(json.dumps(out, indent=2)) +PY +``` + +## Outputs + +| File | Content | +|---|---| +| [ddmof_559.cif](ddmof_559.cif) | UFF-optimised hypothetical MOF, 896 atoms in P1, with `_atom_site_charge` partial charges | +| [majumdar_metadata.csv](majumdar_metadata.csv) | The `mof_data.csv` row for `ddmof_559` (building blocks, topology, GCMC CO2/N2/H2 uptakes, Zeo++ descriptors, linker SMILES) | +| [input_configs.yaml](input_configs.yaml) | Arguments of the run | +| [arcmof_geometric_properties_ddmof_559.csv](arcmof_geometric_properties_ddmof_559.csv) | Reference row extracted from ARC-MOF `geometric_properties.csv` | +| [validation.json](validation.json) | Output of the validation step | + +## Results and Validation + +| Quantity | This run (skill output) | Reference | Agreement | Reference source | +|---|---|---|---|---| +| Building blocks | mn1 + `['oe31']`, topology `snk` | mn1 + oe31 + snk | exact | Majumdar et al. 2021, Figure 7 caption | +| Metal | Ni (elements C, F, H, Ni, O) | mn1 is "a Ni-based metal node" | yes | Majumdar et al. 2021, Section 3.2 | +| Node stoichiometry, Ni : μ3-OH : COO | 64 : 32 : 96 = **4 : 2 : 6** | Ni4(μ3-OH)2(COO)6 | exact (16 nodes) | Majumdar et al. 2021, Section 3.2 | +| Formula per cell | Ni64H32C384O224F192 = 16 Ni4(OH)2 + 48 C8F4O4 | linker SMILES `C(=O)([O])c1c(c(F)c(c(c1F)F)C(=O)[O])F` (tetrafluoroterephthalate) | consistent | `mof_data.csv` (`linker-SMILES`) | +| Cell volume (Å3), pymatgen | **32395.98** | 32396.0 (Majumdar) / 32396.0 (ARC-MOF `UC_volume`) | −0.0001 % | Materials Cloud 2021.126; ARC-MOF Zenodo | +| Density (g cm−3), pymatgen | **0.80127** | 0.80127 (Majumdar) / 0.80127 (ARC-MOF `Density`) | +0.0005 % | Materials Cloud 2021.126; ARC-MOF Zenodo | +| Largest included / free sphere Di / Df (Å) | 11.022 / 7.259 (metadata) | 11.02193 / 7.25913 (ARC-MOF) | exact | ARC-MOF `geometric_properties.csv` | +| Net framework charge (e) | 0.0000 (sum over 896 sites) | 0 (charge-neutral framework) | yes | — | +| Pure CO2 uptake, 1 bar, 298 K (mmol g−1) | **7.660** | > Zeolite-13X benchmark of ~5 | yes (rank 60 of 23,651) | Majumdar et al. 2021, Section 3.2 | +| Number of MOFs above ~5 mmol g−1 in the whole dataset | 807 | "around 800" | yes | Majumdar et al. 2021, Section 3.2 | + +### Discussion + +- The CIF the skill returns is the structure the paper describes. The building-block labels and + the snk net match the Figure 7 caption. The bond-perceived composition gives exactly + 16 Ni4(μ3-OH)2(COO)6 clusters linked by 48 tetrafluoroterephthalates. +- The volume and density pymatgen computes from the CIF agree with both published metadata + tables to the five significant digits they report. ARC-MOF's `UC_volume`, `Density`, `Di` and + `Df` for `DB7-ddmof_559` equal Majumdar's values digit for digit. The two tables are therefore + consistent with each other, but they may not be independent calculations. +- **ARC-MOF membership.** ARC-MOF's `geometric_properties.csv` lists 12,316 `DB7-` entries, + 6,955 of which are flagged `ARC-MOF = True`. `ddmof_559` is in the DB7 design space but + is flagged `ARC-MOF = False`, so it is not among the ARC-MOF structures with REPEAT charges. + The `arcmof-majumdar` option downloads from the original Materials Cloud archive, which + holds all 23,891 `ddmof_*` structures. Its charges were generated with EQeq on the + UFF-optimised frameworks (Majumdar et al., Section 2.2), not with REPEAT. +- The structure is UFF-optimised and stored in P1. Relax it with an MLIP before any + property calculation (see [chem-sorption-relax](../../../chem-sorption-relax/SKILL.md)). + +## References + +- S. Majumdar, S. M. Moosavi, K. M. Jablonka, D. Ongari, B. Smit, "Diversifying Databases of Metal Organic Frameworks for High-Throughput Computational Screening", *ACS Appl. Mater. Interfaces* **13**, 61004–61014 (2021). [DOI: 10.1021/acsami.1c16220](https://doi.org/10.1021/acsami.1c16220); open access: [PMC8719320](https://pmc.ncbi.nlm.nih.gov/articles/PMC8719320/) +- S. Majumdar, S. M. Moosavi, K. M. Jablonka, D. Ongari, B. Smit, "Diversifying databases of metal organic frameworks for high-throughput computational screening", *Materials Cloud Archive* 2021.126 (2021), CC BY 4.0. [DOI: 10.24435/materialscloud:yn-de](https://doi.org/10.24435/materialscloud:yn-de) +- J. Burner, J. Luo, A. White, A. Mirmiran, O. Kwon, P. G. Boyd, S. Maley, M. Gibaldi, S. Simrod, V. Ogden, T. K. Woo, "ARC–MOF: A Diverse Database of Metal-Organic Frameworks with DFT-Derived Partial Atomic Charges and Descriptors for Machine Learning", *Chem. Mater.* **35**, 900–916 (2023). [DOI: 10.1021/acs.chemmater.2c02485](https://doi.org/10.1021/acs.chemmater.2c02485) +- ARC-MOF dataset, "ab initio REPEAT Charge MOF Database (ARC-MOF)", Zenodo record 16802743 (concept DOI 10.5281/zenodo.6908727). [DOI: 10.5281/zenodo.16802743](https://doi.org/10.5281/zenodo.16802743) + +## 3D Structures + +- [ddmof_559.cif](ddmof_559.cif): `ddmof_559`, Ni4(μ3-OH)2 nodes and tetrafluoroterephthalate linkers on the snk net diff --git a/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/arcmof_geometric_properties_ddmof_559.csv b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/arcmof_geometric_properties_ddmof_559.csv new file mode 100644 index 00000000..4fa77eec --- /dev/null +++ b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/arcmof_geometric_properties_ddmof_559.csv @@ -0,0 +1,2 @@ +,filename,UC_volume,Density,ASA,vASA,gASA,NASA,gNASA,vNASA,AVA,AVAf,AVAg,NAVA,NAVAf,NAVAg,POAVA,POAVAf,POAVAg,NPOAVA,NPOAVAf,NPOAVAg,Di,Df,Dif,ARC-MOF,DB_num,order_geo,bool_geo +160561,DB7-ddmof_559.cif,32396.0,0.80127,6880.64,2123.92,2650.69,0.0,0.0,0.0,8993.77,0.27762,0.346475,0.0,0.0,0.0,15485.3,0.478,0.596553,0.0,0.0,0.0,11.02193,7.25913,9.85532,False,DB7,100001,False diff --git a/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/ddmof_559.cif b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/ddmof_559.cif new file mode 100644 index 00000000..67223161 --- /dev/null +++ b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/ddmof_559.cif @@ -0,0 +1,919 @@ +data_crystal + +_cell_length_a 34.56339 +_cell_length_b 34.40249 +_cell_length_c 27.25431 +_cell_angle_alpha 91.06539 +_cell_angle_beta 91.06641 +_cell_angle_gamma 90.00111 + +_symmetry_space_group_name_ 'P 1' +_symmetry_space_group_name_H-M 'P 1' + +loop_ +_symmetry_equiv_pos_as_xyz + x,y,z + +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_charge +Ni Ni 0.98423 0.97311 0.30735 1.11400 +O O 0.99262 0.96168 0.23459 -0.69700 +Ni Ni 0.02363 0.00872 0.21632 1.10600 +O O 0.94834 0.92619 0.31585 -0.30600 +O O 0.90856 0.94101 0.25091 -0.34100 +O O 0.02722 0.93426 0.32690 -0.32300 +Ni Ni 0.94377 0.96397 0.19700 1.10100 +O O 0.04487 0.99252 0.38882 -0.33900 +O O 0.92939 0.01691 0.22629 -0.38300 +O O 0.02949 0.99368 0.14444 -0.31000 +O O 0.01488 0.02047 0.28891 -0.70900 +O O 0.97896 0.98771 0.37944 -0.30900 +O O 0.05956 0.05559 0.20765 -0.30600 +O O 0.09948 0.04150 0.27286 -0.34800 +Ni Ni 0.06401 0.01817 0.32616 1.08500 +H H 0.00681 0.93717 0.22810 0.20200 +H H 0.00060 0.04495 0.29524 0.20200 +C C 0.94578 0.04873 0.21144 0.39100 +O O 0.07851 0.96611 0.29548 -0.36700 +C C 0.91966 0.91690 0.28543 0.38500 +C C 0.99896 0.98564 0.11639 0.39900 +C C 0.06225 0.93382 0.30893 0.38900 +C C 0.08881 0.06475 0.23720 0.38700 +C C 0.00971 0.99525 0.40725 0.38600 +O O 0.98141 0.04790 0.19548 -0.32100 +O O 0.96359 0.98877 0.13411 -0.33800 +Ni Ni 0.98269 0.96967 0.80736 1.11400 +O O 0.98984 0.95884 0.73413 -0.69600 +Ni Ni 0.01807 0.00770 0.71528 1.10600 +O O 0.94830 0.92185 0.81745 -0.29800 +O O 0.90703 0.93451 0.75333 -0.33800 +O O 0.02664 0.93175 0.82586 -0.32500 +Ni Ni 0.93991 0.95947 0.69876 1.10500 +O O 0.04487 0.99064 0.88680 -0.33100 +O O 0.92547 0.01076 0.73193 -0.38200 +O O 0.02227 0.99423 0.64278 -0.31000 +O O 0.01161 0.01786 0.78850 -0.70900 +O O 0.97882 0.98404 0.87958 -0.31500 +O O 0.05177 0.05612 0.70676 -0.30500 +O O 0.09518 0.03984 0.76733 -0.34500 +Ni Ni 0.06201 0.01610 0.82290 1.09300 +H H 0.00493 0.93504 0.72678 0.20700 +H H 0.99708 0.04193 0.79627 0.20300 +C C 0.93827 0.04355 0.71533 0.39200 +O O 0.07653 0.96401 0.79205 -0.37600 +C C 0.91985 0.91104 0.78751 0.38300 +C C 0.99133 0.98500 0.61622 0.38500 +C C 0.06123 0.93164 0.80682 0.39500 +C C 0.08287 0.06412 0.73358 0.38300 +C C 0.00998 0.99248 0.90630 0.38500 +O O 0.97348 0.04559 0.69815 -0.32400 +O O 0.95654 0.98648 0.63583 -0.33300 +Ni Ni 0.29083 0.27826 0.09363 1.11100 +O O 0.30136 0.27101 0.16691 -0.70000 +Ni Ni 0.25354 0.24102 0.18510 1.11200 +O O 0.33760 0.31402 0.08439 -0.29700 +O O 0.32329 0.35501 0.14837 -0.34000 +O O 0.32994 0.23529 0.07507 -0.32200 +Ni Ni 0.29891 0.32104 0.20243 1.10200 +O O 0.27218 0.21597 0.01315 -0.31400 +O O 0.24753 0.33381 0.16888 -0.37600 +O O 0.26669 0.23709 0.25782 -0.32900 +O O 0.24358 0.24770 0.11178 -0.70100 +O O 0.27685 0.28238 0.02132 -0.29600 +O O 0.20670 0.20509 0.19320 -0.31100 +O O 0.22369 0.16317 0.13113 -0.33800 +Ni Ni 0.24681 0.19757 0.07645 1.09700 +H H 0.32548 0.25660 0.17439 0.20800 +H H 0.21930 0.26174 0.10400 0.20600 +C C 0.21530 0.32004 0.18565 0.39300 +O O 0.29879 0.18405 0.10770 -0.37800 +C C 0.34728 0.34288 0.11446 0.38200 +C C 0.27445 0.26849 0.28455 0.39400 +C C 0.33070 0.20026 0.09331 0.39800 +C C 0.19912 0.17455 0.16488 0.39000 +C C 0.26953 0.25110 0.99410 0.34800 +O O 0.21412 0.28435 0.20200 -0.31700 +O O 0.27200 0.30336 0.26490 -0.34400 +Ni Ni 0.28721 0.27720 0.59245 1.11200 +O O 0.30040 0.26866 0.66475 -0.70300 +Ni Ni 0.25359 0.23846 0.68500 1.11100 +O O 0.33420 0.31250 0.58181 -0.30600 +O O 0.32226 0.35243 0.64775 -0.34500 +O O 0.32445 0.23318 0.57135 -0.33000 +Ni Ni 0.29988 0.31773 0.70258 1.09900 +O O 0.26473 0.21642 0.51189 -0.33600 +O O 0.24696 0.33351 0.67516 -0.37400 +O O 0.27034 0.23238 0.75624 -0.31900 +O O 0.24004 0.24743 0.61295 -0.70200 +O O 0.27079 0.28261 0.52100 -0.31900 +O O 0.20624 0.20389 0.69584 -0.29900 +O O 0.21718 0.16312 0.63021 -0.34500 +Ni Ni 0.24027 0.19797 0.57578 1.09600 +H H 0.32466 0.25394 0.67022 0.21100 +H H 0.21583 0.26227 0.60767 0.20200 +C C 0.21529 0.31726 0.69039 0.38900 +O O 0.29252 0.18250 0.60444 -0.39200 +C C 0.34520 0.34059 0.61243 0.38700 +C C 0.27854 0.26298 0.78432 0.39900 +C C 0.32452 0.19788 0.58897 0.40500 +C C 0.19529 0.17485 0.66673 0.37700 +C C 0.26264 0.25178 0.49338 0.39100 +O O 0.21621 0.28180 0.70735 -0.32200 +O O 0.27618 0.29856 0.76652 -0.34400 +Ni Ni 0.21281 0.73674 0.34012 1.11100 +O O 0.20269 0.74606 0.41304 -0.70200 +Ni Ni 0.25170 0.77426 0.43369 1.11200 +O O 0.16461 0.70276 0.32841 -0.29600 +O O 0.17680 0.66341 0.39326 -0.33800 +O O 0.17569 0.78112 0.32067 -0.33100 +Ni Ni 0.20305 0.69708 0.44873 1.10600 +O O 0.23397 0.79666 0.26193 -0.32800 +O O 0.25365 0.68017 0.41772 -0.36800 +O O 0.23851 0.78103 0.50552 -0.31800 +O O 0.26145 0.76535 0.36086 -0.70200 +O O 0.22639 0.73068 0.26832 -0.31800 +O O 0.30055 0.80718 0.44447 -0.29100 +O O 0.28571 0.84888 0.38274 -0.33900 +Ni Ni 0.26046 0.81499 0.32642 1.10400 +H H 0.17928 0.76175 0.41961 0.21200 +H H 0.28508 0.75007 0.35405 0.20500 +C C 0.28668 0.69380 0.43447 0.38200 +O O 0.20923 0.83147 0.35568 -0.38400 +C C 0.15297 0.67643 0.35922 0.38400 +C C 0.22982 0.75081 0.53205 0.39500 +C C 0.17656 0.81645 0.33961 0.40300 +C C 0.31008 0.83623 0.41654 0.38300 +C C 0.23534 0.76117 0.24226 0.39100 +O O 0.28869 0.72943 0.45255 -0.31800 +O O 0.23064 0.71525 0.51258 -0.34900 +Ni Ni 0.21753 0.73854 0.83877 1.11200 +O O 0.20366 0.74627 0.91085 -0.70400 +Ni Ni 0.24955 0.77751 0.93531 1.10800 +O O 0.17211 0.70191 0.82294 -0.29700 +O O 0.18299 0.66294 0.88841 -0.35200 +O O 0.17893 0.78133 0.81782 -0.32600 +Ni Ni 0.20547 0.69707 0.94607 1.09500 +O O 0.23787 0.80010 0.76211 -0.33800 +O O 0.25868 0.68300 0.91994 -0.37700 +O O 0.23258 0.78235 0.00607 -0.30300 +O O 0.26349 0.76967 0.86329 -0.70100 +O O 0.23468 0.73376 0.76826 -0.32200 +O O 0.29512 0.81410 0.95076 -0.29900 +O O 0.28373 0.85343 0.88570 -0.34000 +Ni Ni 0.26155 0.81900 0.82814 1.10100 +H H 0.17900 0.76030 0.91581 0.20600 +H H 0.28815 0.75562 0.85835 0.20100 +C C 0.28995 0.69958 0.93821 0.38000 +O O 0.20890 0.83308 0.85497 -0.38600 +C C 0.15989 0.67562 0.85334 0.38800 +C C 0.22561 0.75122 0.03185 0.40100 +C C 0.17742 0.81635 0.83775 0.39500 +C C 0.30688 0.84103 0.92089 0.37000 +C C 0.24110 0.76483 0.74220 0.39900 +O O 0.28848 0.73517 0.95648 -0.32700 +O O 0.22914 0.71603 0.01191 -0.33300 +Ni Ni 0.52457 0.04533 0.05915 1.11400 +O O 0.51645 0.05725 0.98651 -0.71300 +Ni Ni 0.48534 0.01049 0.96416 1.10100 +O O 0.56104 0.09151 0.07234 -0.29400 +O O 0.59980 0.07753 0.00765 -0.33900 +O O 0.48207 0.08461 0.07894 -0.32400 +Ni Ni 0.56517 0.05470 0.95080 1.09500 +O O 0.46364 0.02628 0.13655 -0.34000 +O O 0.57944 0.00177 0.97825 -0.39800 +O O 0.47963 0.02591 0.89292 -0.32700 +O O 0.49365 0.99839 0.03664 -0.68100 +O O 0.52960 0.03018 0.13053 -0.32000 +O O 0.44932 0.96402 0.95098 -0.29200 +O O 0.40981 0.97792 0.01497 -0.31500 +Ni Ni 0.44447 0.00117 0.07158 1.09600 +H H 0.50235 0.08182 0.98065 0.20300 +H H 0.50769 0.97378 0.04247 0.20700 +C C 0.56302 0.97005 0.96090 0.40100 +O O 0.43065 0.05352 0.04296 -0.38500 +C C 0.58793 0.10198 0.04181 0.38900 +C C 0.51021 0.03325 0.86657 0.40500 +C C 0.44694 0.08546 0.05973 0.40200 +C C 0.42173 0.95371 0.98055 0.36000 +C C 0.49872 0.02285 0.15637 0.39800 +O O 0.52733 0.97101 0.94349 -0.32100 +O O 0.54551 0.02998 0.88583 -0.35100 +Ni Ni 0.52115 0.04756 0.55865 1.10900 +O O 0.51227 0.05772 0.48574 -0.70300 +Ni Ni 0.48507 0.00812 0.46457 1.10700 +O O 0.55371 0.09670 0.57093 -0.29600 +O O 0.59425 0.08473 0.50735 -0.34000 +O O 0.47608 0.08395 0.57754 -0.32000 +Ni Ni 0.56152 0.05814 0.45120 1.10500 +O O 0.46170 0.02507 0.63654 -0.35400 +O O 0.57852 0.00734 0.48224 -0.38300 +O O 0.47898 0.02137 0.39261 -0.32000 +O O 0.49363 0.99825 0.53748 -0.69200 +O O 0.52723 0.03381 0.63033 -0.32300 +O O 0.45268 0.95876 0.45321 -0.28500 +O O 0.41101 0.97282 0.51509 -0.33400 +Ni Ni 0.44421 0.99815 0.57187 1.10600 +H H 0.49644 0.08106 0.47901 0.20300 +H H 0.50928 0.97481 0.54433 0.20500 +C C 0.56558 0.97406 0.46498 0.39900 +O O 0.42667 0.04914 0.54256 -0.38000 +C C 0.58083 0.10837 0.54146 0.38500 +C C 0.50926 0.03101 0.36690 0.39500 +C C 0.44110 0.08237 0.55796 0.38500 +C C 0.42386 0.94871 0.48107 0.38500 +C C 0.49701 0.02442 0.65633 0.39800 +O O 0.53033 0.97160 0.44630 -0.31700 +O O 0.54442 0.03036 0.38703 -0.35300 +Ni Ni 0.71732 0.77943 0.42945 1.11200 +O O 0.70656 0.77300 0.35589 -0.70200 +Ni Ni 0.75057 0.73780 0.33663 1.11200 +O O 0.67476 0.82041 0.43914 -0.30000 +O O 0.69600 0.85889 0.37786 -0.33800 +O O 0.67375 0.74061 0.44586 -0.31700 +Ni Ni 0.71447 0.82191 0.32157 1.09500 +O O 0.72992 0.71641 0.50746 -0.34000 +O O 0.76796 0.83055 0.35249 -0.37200 +O O 0.73603 0.73382 0.26432 -0.32300 +O O 0.76170 0.74449 0.41011 -0.70100 +O O 0.73128 0.78281 0.50201 -0.32200 +O O 0.79304 0.69703 0.32607 -0.30400 +O O 0.77455 0.65841 0.38867 -0.34100 +Ni Ni 0.75394 0.69523 0.44397 1.09600 +H H 0.68106 0.76119 0.34782 0.20500 +H H 0.78719 0.75639 0.41804 0.20400 +C C 0.79803 0.81192 0.33590 0.39200 +O O 0.70107 0.68661 0.41196 -0.38300 +C C 0.67009 0.85066 0.41086 0.38200 +C C 0.73136 0.76520 0.23800 0.40000 +C C 0.67064 0.70481 0.42842 0.39600 +C C 0.79988 0.66793 0.35549 0.38800 +C C 0.73610 0.75115 0.52784 0.39700 +O O 0.79445 0.77596 0.31926 -0.31500 +O O 0.73762 0.80017 0.25779 -0.34700 +Ni Ni 0.71805 0.77758 0.92962 1.10800 +O O 0.70576 0.77052 0.85646 -0.70100 +Ni Ni 0.74904 0.73457 0.83653 1.11200 +O O 0.67601 0.81877 0.94064 -0.30600 +O O 0.69395 0.85645 0.87689 -0.34600 +O O 0.67463 0.73923 0.94776 -0.33200 +Ni Ni 0.71365 0.81916 0.82149 1.09900 +O O 0.73076 0.71541 0.00854 -0.33000 +O O 0.76733 0.82748 0.85226 -0.37800 +O O 0.73374 0.73072 0.76432 -0.32100 +O O 0.76149 0.74179 0.90967 -0.70300 +O O 0.73353 0.78163 0.00159 -0.30500 +O O 0.79083 0.69302 0.82550 -0.30100 +O O 0.77375 0.65575 0.89003 -0.34400 +Ni Ni 0.75383 0.69322 0.94495 1.09000 +H H 0.67997 0.75901 0.84931 0.20500 +H H 0.78724 0.75344 0.91673 0.20000 +C C 0.79719 0.80802 0.83627 0.38900 +O O 0.70065 0.68459 0.91385 -0.38500 +C C 0.66875 0.84726 0.91036 0.38300 +C C 0.72953 0.76224 0.73808 0.39900 +C C 0.67058 0.70371 0.92972 0.39200 +C C 0.79866 0.66495 0.85622 0.38400 +C C 0.73763 0.75030 0.02812 0.39600 +O O 0.79278 0.77245 0.81855 -0.31500 +O O 0.73667 0.79700 0.75792 -0.34800 +Ni Ni 0.78788 0.23935 0.18385 1.11300 +O O 0.80046 0.24675 0.11169 -0.70000 +Ni Ni 0.75678 0.28201 0.09114 1.11400 +O O 0.83093 0.19919 0.19511 -0.30500 +O O 0.81455 0.16138 0.12816 -0.34500 +O O 0.83000 0.27915 0.20461 -0.32200 +Ni Ni 0.79399 0.19822 0.07359 1.10100 +O O 0.77490 0.30211 0.26392 -0.34600 +O O 0.74073 0.18832 0.10168 -0.37700 +O O 0.77250 0.28637 0.02007 -0.29000 +O O 0.74390 0.27435 0.16311 -0.70100 +O O 0.77287 0.23579 0.25528 -0.31400 +O O 0.71371 0.32209 0.07958 -0.29800 +O O 0.72927 0.36016 0.14660 -0.34000 +Ni Ni 0.75054 0.32329 0.20061 1.09300 +H H 0.82606 0.25871 0.10647 0.20700 +H H 0.71829 0.26236 0.16819 0.20600 +C C 0.71042 0.20788 0.08685 0.39200 +O O 0.80311 0.33321 0.17143 -0.37500 +C C 0.83928 0.17117 0.16356 0.38800 +C C 0.77692 0.25506 0.99222 0.35000 +C C 0.83372 0.31348 0.18494 0.38900 +C C 0.70506 0.35031 0.11067 0.38700 +C C 0.76842 0.26747 0.28243 0.39100 +O O 0.71451 0.24280 0.06899 -0.31400 +O O 0.77054 0.22006 0.00994 -0.32000 +Ni Ni 0.78602 0.23791 0.68362 1.11200 +O O 0.79791 0.24308 0.61097 -0.70300 +Ni Ni 0.75657 0.28095 0.59031 1.11200 +O O 0.82661 0.19519 0.69468 -0.29900 +O O 0.80477 0.15734 0.63044 -0.33800 +O O 0.83086 0.27518 0.70304 -0.31800 +Ni Ni 0.78694 0.19437 0.57489 1.09300 +O O 0.77745 0.30210 0.76323 -0.34200 +O O 0.73343 0.18955 0.60437 -0.37200 +O O 0.77141 0.28255 0.51860 -0.32100 +O O 0.74402 0.27534 0.66289 -0.69900 +O O 0.77142 0.23597 0.75527 -0.32400 +O O 0.71725 0.32452 0.57795 -0.31300 +O O 0.73302 0.36134 0.64593 -0.33800 +Ni Ni 0.75375 0.32402 0.69980 1.09700 +H H 0.82424 0.25296 0.60477 0.20800 +H H 0.71784 0.26491 0.66868 0.20300 +C C 0.70448 0.21080 0.58893 0.39100 +O O 0.80644 0.33015 0.66927 -0.38300 +C C 0.83124 0.16546 0.66436 0.37900 +C C 0.77340 0.25030 0.49195 0.39100 +C C 0.83610 0.30968 0.68432 0.39300 +C C 0.70840 0.35174 0.61030 0.38700 +C C 0.76936 0.26798 0.78226 0.39800 +O O 0.71089 0.24508 0.57031 -0.31800 +O O 0.76441 0.21645 0.51110 -0.34400 +Ni Ni 0.48188 0.54418 0.96984 1.10700 +O O 0.48917 0.55680 0.04292 -0.69300 +Ni Ni 0.52431 0.51293 0.06315 1.11600 +O O 0.44141 0.58691 0.95869 -0.30100 +O O 0.40382 0.56938 0.02258 -0.32800 +O O 0.52069 0.58715 0.95140 -0.32800 +Ni Ni 0.44080 0.54988 0.07829 1.10000 +O O 0.54366 0.53008 0.89119 -0.34200 +O O 0.43156 0.49587 0.04833 -0.37300 +O O 0.52868 0.52884 0.13510 -0.32100 +O O 0.51682 0.50007 0.99016 -0.71000 +O O 0.47769 0.52840 0.89791 -0.31800 +O O 0.56488 0.47028 0.07448 -0.29900 +O O 0.60239 0.48678 0.01007 -0.32900 +Ni Ni 0.56535 0.50691 0.95494 1.09200 +H H 0.50105 0.58256 0.04981 0.20900 +H H 0.50486 0.47434 0.98335 0.19900 +C C 0.45048 0.46572 0.06467 0.39700 +O O 0.57462 0.56036 0.98565 -0.39100 +C C 0.41305 0.59447 0.98889 0.36900 +C C 0.49755 0.53351 0.16168 0.40000 +C C 0.55609 0.59076 0.96945 0.39100 +C C 0.59299 0.46211 0.04416 0.38800 +C C 0.50889 0.52348 0.87157 0.39600 +O O 0.48604 0.46971 0.08198 -0.31400 +O O 0.46269 0.52703 0.14218 -0.34700 +Ni Ni 0.48251 0.54412 0.47042 1.11200 +O O 0.48877 0.55418 0.54412 -0.70200 +Ni Ni 0.52402 0.50992 0.56278 1.11200 +O O 0.44161 0.58687 0.46139 -0.30000 +O O 0.40310 0.56432 0.52176 -0.34000 +O O 0.52101 0.58820 0.45458 -0.31700 +Ni Ni 0.43996 0.54552 0.57789 1.09500 +O O 0.54518 0.53213 0.39208 -0.34100 +O O 0.43192 0.49202 0.54603 -0.37300 +O O 0.52766 0.52368 0.63541 -0.32200 +O O 0.51745 0.49946 0.48912 -0.70000 +O O 0.47909 0.53070 0.39773 -0.32400 +O O 0.56487 0.46737 0.57266 -0.30400 +O O 0.60324 0.48684 0.51041 -0.34300 +Ni Ni 0.56642 0.50763 0.45531 1.09500 +H H 0.50033 0.57981 0.55266 0.20500 +H H 0.50566 0.47390 0.48080 0.20200 +C C 0.45056 0.46176 0.56231 0.39100 +O O 0.57482 0.56051 0.48797 -0.38400 +C C 0.41109 0.59072 0.48915 0.38300 +C C 0.49623 0.52842 0.66140 0.39900 +C C 0.55674 0.59116 0.47174 0.39700 +C C 0.59407 0.46112 0.54339 0.38700 +C C 0.51054 0.52607 0.37176 0.39700 +O O 0.48627 0.46543 0.57923 -0.31500 +O O 0.46161 0.52179 0.64132 -0.34900 +Ni Ni 0.02321 0.47335 0.21910 1.11300 +O O 0.01440 0.46045 0.29081 -0.70300 +Ni Ni 0.97771 0.50325 0.31021 1.11200 +O O 0.06428 0.43081 0.20992 -0.30900 +O O 0.10030 0.45021 0.27705 -0.33400 +O O 0.98489 0.43030 0.19628 -0.32100 +Ni Ni 0.06168 0.46849 0.33055 1.09800 +O O 0.96288 0.48578 0.13621 -0.33900 +O O 0.07072 0.52253 0.30349 -0.37000 +O O 0.97208 0.48701 0.38103 -0.31700 +O O 0.98705 0.51687 0.23867 -0.70000 +O O 0.02859 0.48884 0.14797 -0.32800 +O O 0.93623 0.54503 0.32075 -0.30300 +O O 0.90114 0.53094 0.25083 -0.34000 +Ni Ni 0.93965 0.50975 0.19871 1.09600 +H H 0.00312 0.43436 0.29550 0.21300 +H H 0.99875 0.54281 0.23435 0.20700 +C C 0.04964 0.55223 0.31703 0.38900 +O O 0.93014 0.45675 0.22752 -0.38700 +C C 0.09294 0.42488 0.24132 0.38400 +C C 0.00280 0.48290 0.40978 0.39600 +C C 0.94973 0.42629 0.21300 0.40200 +C C 0.90992 0.55473 0.28776 0.38700 +C C 0.99783 0.49271 0.11930 0.40300 +O O 0.01490 0.54675 0.33424 -0.31700 +O O 0.03775 0.49080 0.39348 -0.34500 +Ni Ni 0.02276 0.47275 0.71784 1.11300 +O O 0.01856 0.46128 0.79091 -0.70000 +Ni Ni 0.98227 0.50411 0.81213 1.11200 +O O 0.06479 0.43178 0.70524 -0.29600 +O O 0.10342 0.45022 0.77030 -0.34800 +O O 0.98526 0.42778 0.69956 -0.32500 +Ni Ni 0.06789 0.47101 0.82586 1.09500 +O O 0.95735 0.48172 0.63999 -0.34000 +O O 0.07382 0.52389 0.79446 -0.37700 +O O 0.98163 0.49032 0.88439 -0.32600 +O O 0.98644 0.51546 0.73908 -0.70000 +O O 0.02340 0.48705 0.64597 -0.31500 +O O 0.94050 0.54549 0.82421 -0.31200 +O O 0.90142 0.52591 0.76000 -0.34000 +Ni Ni 0.93709 0.50563 0.70426 1.09700 +H H 0.00805 0.43518 0.79758 0.20700 +H H 0.99686 0.54158 0.73231 0.20300 +C C 0.05386 0.55397 0.80950 0.38600 +O O 0.93151 0.45274 0.73504 -0.38400 +C C 0.09322 0.42436 0.73639 0.38600 +C C 0.01417 0.48732 0.90990 0.39200 +C C 0.95114 0.42281 0.71894 0.39500 +C C 0.91128 0.55199 0.79388 0.38600 +C C 0.99106 0.48929 0.61988 0.39600 +O O 0.01996 0.54903 0.82954 -0.31400 +O O 0.04760 0.49553 0.88960 -0.35400 +C C 0.01728 0.45927 0.54341 0.30200 +C C 0.99348 0.48722 0.56606 -0.16900 +C C 0.97097 0.51216 0.53705 0.29000 +C C 0.97304 0.50997 0.48585 0.30100 +C C 0.99741 0.48250 0.46321 -0.17200 +C C 0.01933 0.45707 0.49223 0.29200 +F F 0.04263 0.43017 0.47079 -0.36200 +F F 0.03792 0.43384 0.57100 -0.32700 +F F 0.95245 0.53547 0.45829 -0.34000 +F F 0.94773 0.53909 0.55853 -0.36700 +C C 0.01945 0.52255 0.04191 0.32000 +C C 0.00319 0.49096 0.06594 -0.19500 +C C 0.99279 0.45723 0.03892 0.32900 +C C 0.99667 0.45594 0.98792 0.25400 +C C 0.01216 0.48783 0.96373 -0.16600 +C C 0.02407 0.52097 0.99100 0.25900 +F F 0.03941 0.55188 0.96805 -0.32800 +F F 0.03035 0.55495 0.06781 -0.35300 +F F 0.98581 0.42350 0.96206 -0.35300 +F F 0.98004 0.42533 0.06227 -0.32400 +C C 0.52504 0.49710 0.78890 0.28900 +C C 0.50462 0.52393 0.81787 -0.17100 +C C 0.48197 0.55273 0.79525 0.30100 +C C 0.47961 0.55444 0.74408 0.29100 +C C 0.50011 0.52768 0.71512 -0.17500 +C C 0.52265 0.49880 0.73774 0.30200 +F F 0.54145 0.47180 0.71009 -0.33800 +F F 0.54687 0.46910 0.81038 -0.36900 +F F 0.45778 0.58243 0.72260 -0.36800 +F F 0.46311 0.57967 0.82290 -0.32900 +C C 0.52442 0.50324 0.23738 0.30100 +C C 0.50203 0.53252 0.21536 -0.17300 +C C 0.48201 0.55928 0.24489 0.29000 +C C 0.48452 0.55701 0.29601 0.30200 +C C 0.50678 0.52762 0.31804 -0.17200 +C C 0.52692 0.50096 0.28851 0.28900 +F F 0.54848 0.47248 0.30940 -0.37200 +F F 0.54287 0.47635 0.20919 -0.34000 +F F 0.46607 0.58389 0.32421 -0.33900 +F F 0.46042 0.58773 0.22400 -0.36400 +C C 0.89235 0.34597 0.65324 0.28800 +C C 0.87323 0.32954 0.69279 -0.18200 +C C 0.88584 0.33833 0.74104 0.29200 +C C 0.91428 0.36667 0.74972 0.28900 +C C 0.93066 0.38593 0.71022 -0.18600 +C C 0.92122 0.37388 0.66191 0.29100 +F F 0.93787 0.39140 0.62336 -0.34800 +F F 0.88140 0.33653 0.60642 -0.36400 +F F 0.92431 0.37705 0.79656 -0.36400 +F F 0.86840 0.32162 0.77961 -0.34600 +C C 0.68888 0.41926 0.58891 0.29100 +C C 0.67867 0.38022 0.59595 -0.17900 +C C 0.64084 0.36769 0.58441 0.28900 +C C 0.61342 0.39396 0.56621 0.29100 +C C 0.62369 0.43291 0.55893 -0.17700 +C C 0.66151 0.44548 0.57063 0.29000 +F F 0.67153 0.48330 0.56522 -0.35000 +F F 0.72560 0.43156 0.59865 -0.35000 +F F 0.57690 0.38156 0.55542 -0.35500 +F F 0.63071 0.33000 0.59075 -0.35600 +C C 0.74792 0.28347 0.91640 0.29300 +C C 0.77594 0.25950 0.93863 -0.16100 +C C 0.80152 0.23812 0.90926 0.28200 +C C 0.79926 0.24072 0.85814 0.30200 +C C 0.77112 0.26453 0.83593 -0.17500 +C C 0.74572 0.28612 0.86528 0.29200 +F F 0.71846 0.30918 0.84420 -0.37000 +F F 0.72212 0.30330 0.94429 -0.34500 +F F 0.82493 0.22077 0.83018 -0.34200 +F F 0.82882 0.21509 0.93031 -0.37000 +C C 0.74353 0.23814 0.35842 0.29000 +C C 0.76918 0.26367 0.33610 -0.17600 +C C 0.79701 0.28390 0.36499 0.29300 +C C 0.79891 0.27881 0.41572 0.28900 +C C 0.77308 0.25349 0.43814 -0.17700 +C C 0.74538 0.23308 0.40917 0.29400 +F F 0.71964 0.20907 0.43034 -0.32900 +F F 0.71645 0.21860 0.33095 -0.34600 +F F 0.82617 0.29818 0.44311 -0.34800 +F F 0.82280 0.30780 0.34373 -0.32800 +C C 0.91073 0.38499 0.15560 0.29800 +C C 0.92857 0.39029 0.20191 -0.18200 +C C 0.92047 0.36451 0.23962 0.29400 +C C 0.89201 0.33595 0.23246 0.29300 +C C 0.87128 0.33338 0.18760 -0.18300 +C C 0.88260 0.35626 0.14829 0.28900 +F F 0.86429 0.35251 0.10393 -0.36200 +F F 0.91814 0.40996 0.11900 -0.33300 +F F 0.88268 0.31268 0.27014 -0.32600 +F F 0.93848 0.36868 0.28411 -0.36700 +C C 0.66036 0.44460 0.06938 0.29300 +C C 0.62192 0.43316 0.05949 -0.17300 +C C 0.61069 0.39458 0.06748 0.29300 +C C 0.63777 0.36758 0.08481 0.29300 +C C 0.67613 0.37908 0.09485 -0.17400 +C C 0.68734 0.41768 0.08681 0.29300 +F F 0.72461 0.42891 0.09500 -0.34400 +F F 0.67137 0.48204 0.06309 -0.34500 +F F 0.62669 0.33029 0.09211 -0.35200 +F F 0.57359 0.38326 0.05828 -0.35000 +C C 0.81684 0.59683 0.83356 0.28900 +C C 0.82775 0.63582 0.84176 -0.17700 +C C 0.86601 0.64730 0.83325 0.28900 +C C 0.89321 0.61998 0.81707 0.28900 +C C 0.88227 0.58105 0.80879 -0.17900 +C C 0.84398 0.56957 0.81737 0.28900 +F F 0.83326 0.53182 0.81089 -0.35100 +F F 0.77970 0.58553 0.84031 -0.35100 +F F 0.93016 0.63136 0.80913 -0.35400 +F F 0.87685 0.68490 0.84087 -0.35500 +C C 0.62480 0.67473 0.98827 0.27400 +C C 0.63501 0.68194 0.93957 -0.18300 +C C 0.61463 0.66332 0.90081 0.28600 +C C 0.58615 0.63574 0.91065 0.28800 +C C 0.57832 0.62610 0.95939 -0.18300 +C C 0.59678 0.64667 0.99812 0.27100 +F F 0.58874 0.63830 0.04534 -0.35300 +F F 0.64373 0.69316 0.02611 -0.33600 +F F 0.56788 0.61663 0.87283 -0.35200 +F F 0.62355 0.67080 0.85360 -0.36800 +C C 0.70608 0.77720 0.60415 0.30200 +C C 0.73503 0.75476 0.58161 -0.17200 +C C 0.76132 0.73379 0.61066 0.29000 +C C 0.75906 0.73558 0.66182 0.30200 +C C 0.73021 0.75814 0.68435 -0.17400 +C C 0.70385 0.77902 0.65531 0.29000 +F F 0.67585 0.80082 0.67669 -0.36500 +F F 0.67953 0.79644 0.57641 -0.33900 +F F 0.78558 0.71630 0.68957 -0.33800 +F F 0.78936 0.71203 0.58928 -0.36900 +C C 0.76143 0.73802 0.16241 0.30300 +C C 0.73255 0.76092 0.18435 -0.17400 +C C 0.70592 0.78097 0.15477 0.29300 +C C 0.70778 0.77781 0.10367 0.30200 +C C 0.73659 0.75482 0.08174 -0.16800 +C C 0.76326 0.73482 0.11131 0.29000 +F F 0.79126 0.71267 0.09048 -0.36600 +F F 0.78828 0.71964 0.19064 -0.33900 +F F 0.68102 0.79631 0.07541 -0.32400 +F F 0.67790 0.80310 0.17559 -0.36500 +C C 0.81606 0.60070 0.32702 0.29300 +C C 0.82827 0.63857 0.33987 -0.17600 +C C 0.86704 0.64924 0.33341 0.29300 +C C 0.89350 0.62215 0.31489 0.29200 +C C 0.88131 0.58428 0.30217 -0.17500 +C C 0.84245 0.57368 0.30835 0.29200 +F F 0.83048 0.53688 0.29744 -0.35000 +F F 0.77842 0.59033 0.33169 -0.35000 +F F 0.93103 0.63262 0.30943 -0.35400 +F F 0.87908 0.68586 0.34525 -0.35400 +C C 0.62654 0.67473 0.48834 0.29200 +C C 0.63588 0.68194 0.43933 -0.18000 +C C 0.61511 0.66298 0.40116 0.29100 +C C 0.58678 0.63543 0.41186 0.29200 +C C 0.57957 0.62604 0.46087 -0.18000 +C C 0.59876 0.64662 0.49904 0.29100 +F F 0.59145 0.63842 0.54652 -0.36300 +F F 0.64586 0.69345 0.52563 -0.35000 +F F 0.56784 0.61632 0.37458 -0.35000 +F F 0.62327 0.67032 0.35368 -0.36400 +C C 0.58035 0.90319 0.45395 0.29300 +C C 0.59323 0.94203 0.45572 -0.18200 +C C 0.63200 0.95036 0.44478 0.29200 +C C 0.65717 0.92045 0.43125 0.28800 +C C 0.64380 0.88190 0.42723 -0.17300 +C C 0.60547 0.87332 0.43946 0.28900 +F F 0.59236 0.83612 0.43652 -0.34700 +F F 0.54349 0.89442 0.46616 -0.35400 +F F 0.69475 0.92893 0.42242 -0.34400 +F F 0.64504 0.98760 0.44580 -0.35700 +C C 0.61690 0.16881 0.52376 0.28900 +C C 0.60536 0.14118 0.55776 -0.17200 +C C 0.62179 0.14191 0.60537 0.29500 +C C 0.65209 0.16751 0.61718 0.29100 +C C 0.66634 0.19240 0.58147 -0.18000 +C C 0.64709 0.19454 0.53564 0.29900 +F F 0.65915 0.21993 0.50158 -0.32600 +F F 0.60000 0.16953 0.47841 -0.36100 +F F 0.66889 0.16685 0.66259 -0.36000 +F F 0.61013 0.11607 0.63915 -0.33200 +C C 0.51947 0.05833 0.73332 0.30100 +C C 0.50092 0.02636 0.71008 -0.19000 +C C 0.48463 0.99722 0.73849 0.30300 +C C 0.48721 0.99972 0.78970 0.31500 +C C 0.50582 0.03163 0.81291 -0.19000 +C C 0.52208 0.06079 0.78452 0.29200 +F F 0.54007 0.09173 0.80661 -0.36100 +F F 0.53412 0.08744 0.70626 -0.32400 +F F 0.47256 0.97063 0.81679 -0.31800 +F F 0.46677 0.96620 0.71643 -0.35900 +C C 0.52322 0.05815 0.28511 0.29200 +C C 0.50569 0.02944 0.31307 -0.18900 +C C 0.48675 0.99794 0.28929 0.30900 +C C 0.48501 0.99552 0.23804 0.30500 +C C 0.50255 0.02421 0.21012 -0.18700 +C C 0.52157 0.05564 0.23386 0.30300 +F F 0.53756 0.08428 0.20722 -0.32700 +F F 0.54147 0.08873 0.30766 -0.35900 +F F 0.46662 0.96503 0.21546 -0.35700 +F F 0.47101 0.96914 0.31587 -0.32300 +C C 0.58757 0.92037 0.90127 0.29100 +C C 0.58746 0.93613 0.94930 -0.18700 +C C 0.61295 0.92133 0.98504 0.27400 +C C 0.63891 0.89165 0.97269 0.27600 +C C 0.63958 0.87648 0.92438 -0.17300 +C C 0.61354 0.89071 0.88893 0.28100 +F F 0.61365 0.87605 0.84233 -0.37300 +F F 0.56354 0.93483 0.86609 -0.34300 +F F 0.66431 0.87855 0.00722 -0.31700 +F F 0.61284 0.93599 0.03164 -0.34500 +C C 0.62585 0.16050 0.02074 0.29900 +C C 0.61353 0.13448 0.05628 -0.17900 +C C 0.62941 0.13690 0.10414 0.29500 +C C 0.65931 0.16317 0.11521 0.29000 +C C 0.67369 0.18707 0.07856 -0.18600 +C C 0.65581 0.18670 0.03177 0.30800 +F F 0.66908 0.21002 0.99610 -0.36100 +F F 0.60979 0.15933 0.97488 -0.38900 +F F 0.67537 0.16436 0.16107 -0.35800 +F F 0.61742 0.11227 0.13914 -0.33200 +C C 0.09785 0.64259 0.87054 0.28700 +C C 0.12721 0.65092 0.83752 -0.18000 +C C 0.12726 0.63234 0.79115 0.29600 +C C 0.10036 0.60306 0.77984 0.28600 +C C 0.07351 0.59183 0.81497 -0.17900 +C C 0.07075 0.61351 0.85909 0.29300 +F F 0.04302 0.60516 0.89187 -0.32300 +F F 0.09640 0.66179 0.91445 -0.37000 +F F 0.10152 0.58430 0.73561 -0.36000 +F F 0.15480 0.64106 0.75819 -0.33500 +C C 0.33906 0.65001 0.91403 0.27300 +C C 0.32384 0.67522 0.94987 -0.16800 +C C 0.33950 0.67522 0.99792 0.23500 +C C 0.36945 0.64964 0.01018 0.34000 +C C 0.38405 0.62378 0.97467 -0.21000 +C C 0.36901 0.62437 0.92632 0.30300 +F F 0.38246 0.59915 0.89172 -0.33900 +F F 0.32456 0.65008 0.86738 -0.36300 +F F 0.38399 0.64961 0.05681 -0.37800 +F F 0.32465 0.69897 0.03320 -0.32400 +C C 0.34774 0.87342 0.98664 0.23600 +C C 0.33991 0.86579 0.93645 -0.15600 +C C 0.36200 0.88427 0.90099 0.27300 +C C 0.38959 0.91215 0.91521 0.30200 +C C 0.39618 0.92109 0.96535 -0.20600 +C C 0.37610 0.90050 0.00090 0.34400 +F F 0.38355 0.90733 0.04940 -0.36900 +F F 0.32688 0.85577 0.02160 -0.30000 +F F 0.40877 0.93153 0.88016 -0.32700 +F F 0.35614 0.87578 0.85256 -0.36800 +C C 0.26399 0.77449 0.60829 0.29400 +C C 0.23226 0.75514 0.58577 -0.17500 +C C 0.20383 0.73855 0.61487 0.29100 +C C 0.20684 0.74149 0.66602 0.30200 +C C 0.23854 0.76084 0.68851 -0.17300 +C C 0.26691 0.77754 0.65945 0.29100 +F F 0.29766 0.79620 0.68082 -0.35900 +F F 0.29250 0.78933 0.58060 -0.32500 +F F 0.17854 0.72630 0.69378 -0.33000 +F F 0.17302 0.71996 0.59352 -0.35800 +C C 0.25888 0.77381 0.10904 0.30400 +C C 0.22733 0.75492 0.08560 -0.16900 +C C 0.19915 0.73696 0.11379 0.29200 +C C 0.20215 0.73826 0.16502 0.30000 +C C 0.23366 0.75724 0.18849 -0.16900 +C C 0.26191 0.77509 0.16026 0.29400 +F F 0.29251 0.79338 0.18251 -0.35400 +F F 0.28716 0.78997 0.08211 -0.31500 +F F 0.17388 0.72203 0.19191 -0.32700 +F F 0.16863 0.71856 0.09150 -0.35400 +C C 0.09391 0.63970 0.38059 0.28600 +C C 0.11965 0.65193 0.34475 -0.17100 +C C 0.11693 0.63577 0.29700 0.29400 +C C 0.09131 0.60514 0.28669 0.29200 +C C 0.06835 0.59033 0.32395 -0.18100 +C C 0.06835 0.60899 0.37029 0.29600 +F F 0.04555 0.59562 0.40635 -0.34100 +F F 0.09509 0.65626 0.42622 -0.36600 +F F 0.09015 0.58853 0.24109 -0.35900 +F F 0.14093 0.64796 0.26152 -0.32900 +C C 0.31138 0.62739 0.45451 0.28700 +C C 0.31903 0.66655 0.44393 -0.17900 +C C 0.35746 0.68015 0.44609 0.29100 +C C 0.38756 0.65538 0.46068 0.29000 +C C 0.37963 0.61665 0.47257 -0.17400 +C C 0.34152 0.60257 0.46809 0.28800 +F F 0.33369 0.56461 0.47653 -0.34700 +F F 0.27455 0.61360 0.45304 -0.36300 +F F 0.42434 0.66919 0.46404 -0.34600 +F F 0.36563 0.71737 0.43415 -0.35400 +C C 0.36357 0.88216 0.39830 0.29100 +C C 0.34229 0.86181 0.43293 -0.16800 +C C 0.35052 0.86769 0.48337 0.29400 +C C 0.37882 0.89445 0.49881 0.29100 +C C 0.39851 0.91642 0.46428 -0.16800 +C C 0.39122 0.90963 0.41380 0.29500 +F F 0.40974 0.93074 0.37980 -0.32000 +F F 0.35703 0.87573 0.34954 -0.35800 +F F 0.38656 0.89966 0.54753 -0.36100 +F F 0.33001 0.84868 0.51751 -0.32300 +C C 0.16524 0.34255 0.74750 0.28900 +C C 0.18144 0.34192 0.70050 -0.18500 +C C 0.16678 0.36679 0.66438 0.28700 +C C 0.13694 0.39283 0.67548 0.29400 +C C 0.12150 0.39418 0.72290 -0.17700 +C C 0.13542 0.36855 0.75857 0.28200 +F F 0.12045 0.36932 0.80430 -0.38100 +F F 0.17948 0.31906 0.78303 -0.34800 +F F 0.12403 0.41773 0.64073 -0.33200 +F F 0.18176 0.36603 0.61866 -0.36000 +C C 0.37668 0.38125 0.54920 0.29200 +C C 0.37630 0.36708 0.59733 -0.17500 +C C 0.40352 0.38115 0.63221 0.28500 +C C 0.42955 0.41047 0.61992 0.29100 +C C 0.42856 0.42608 0.57252 -0.17900 +C C 0.40273 0.41054 0.53690 0.28800 +F F 0.40213 0.42462 0.49068 -0.35900 +F F 0.35057 0.36801 0.51500 -0.34700 +F F 0.45434 0.42513 0.65481 -0.34300 +F F 0.40409 0.36709 0.67845 -0.36900 +C C 0.35743 0.15012 0.53467 0.29800 +C C 0.35727 0.17216 0.57850 -0.19000 +C C 0.38694 0.16732 0.61362 0.29000 +C C 0.41573 0.13934 0.60593 0.28600 +C C 0.41518 0.11625 0.56265 -0.18200 +C C 0.38661 0.12280 0.52639 0.28300 +F F 0.38654 0.10186 0.48365 -0.36200 +F F 0.32833 0.15401 0.50100 -0.34600 +F F 0.44295 0.13334 0.64156 -0.34200 +F F 0.38710 0.18873 0.65597 -0.37600 +C C 0.30582 0.27553 0.86838 0.29200 +C C 0.27704 0.25866 0.83789 -0.17300 +C C 0.24548 0.23970 0.85892 0.30100 +C C 0.24300 0.23734 0.90996 0.28300 +C C 0.27168 0.25437 0.94045 -0.16100 +C C 0.30328 0.27327 0.91944 0.29400 +F F 0.33191 0.28872 0.94850 -0.33300 +F F 0.33643 0.29384 0.84851 -0.36100 +F F 0.21235 0.21909 0.92984 -0.36800 +F F 0.21661 0.22467 0.82991 -0.32100 +C C 0.24198 0.28370 0.36363 0.29500 +C C 0.27238 0.26564 0.33824 -0.18000 +C C 0.29925 0.24277 0.36389 0.29000 +C C 0.29595 0.23809 0.41453 0.29400 +C C 0.26520 0.25558 0.43981 -0.17200 +C C 0.23848 0.27873 0.41425 0.28600 +F F 0.20894 0.29614 0.43837 -0.35500 +F F 0.21532 0.30526 0.33904 -0.35100 +F F 0.32335 0.21767 0.43933 -0.32900 +F F 0.32886 0.22544 0.33981 -0.35200 +C C 0.16282 0.41061 0.22808 0.28900 +C C 0.12410 0.39804 0.22655 -0.17400 +C C 0.11525 0.36016 0.20968 0.29000 +C C 0.14492 0.33491 0.19516 0.29400 +C C 0.18371 0.34728 0.19772 -0.17800 +C C 0.19243 0.38528 0.21448 0.29300 +F F 0.22976 0.39738 0.21879 -0.36900 +F F 0.17175 0.44768 0.24211 -0.34700 +F F 0.13596 0.29853 0.17841 -0.34300 +F F 0.07798 0.34767 0.20786 -0.34600 +C C 0.37837 0.38371 0.05129 0.28700 +C C 0.37800 0.36973 0.09950 -0.16800 +C C 0.40453 0.38463 0.13465 0.28300 +C C 0.42984 0.41458 0.12253 0.29600 +C C 0.42880 0.42997 0.07502 -0.18700 +C C 0.40368 0.41367 0.03916 0.31100 +F F 0.40309 0.42756 0.99284 -0.38100 +F F 0.35290 0.36962 0.01684 -0.32800 +F F 0.45395 0.43003 0.15765 -0.34500 +F F 0.40504 0.37082 0.18101 -0.37000 +C C 0.38311 0.15744 0.12516 0.28900 +C C 0.36484 0.17565 0.08536 -0.18800 +C C 0.37692 0.16725 0.03735 0.30500 +C C 0.40545 0.13915 0.02907 0.30300 +C C 0.42248 0.11966 0.06873 -0.19000 +C C 0.41207 0.12976 0.11692 0.29400 +F F 0.42866 0.11134 0.15561 -0.34900 +F F 0.37214 0.16587 0.17174 -0.36300 +F F 0.41572 0.12999 0.98242 -0.38900 +F F 0.35967 0.18496 0.99856 -0.36800 +C C 0.92244 0.11414 0.70671 0.29400 +C C 0.91044 0.07506 0.70488 -0.18200 +C C 0.87208 0.06598 0.69062 0.29300 +C C 0.84614 0.09550 0.67848 0.28700 +C C 0.85842 0.13447 0.67886 -0.17200 +C C 0.89659 0.14369 0.69350 0.28800 +F F 0.90877 0.18123 0.69429 -0.35100 +F F 0.95908 0.12348 0.72142 -0.35900 +F F 0.80885 0.08623 0.66686 -0.34800 +F F 0.86018 0.02838 0.68725 -0.37000 +C C 0.87983 0.85239 0.76802 0.28500 +C C 0.89395 0.87964 0.80290 -0.17100 +C C 0.87926 0.87989 0.85073 0.29100 +C C 0.84909 0.85476 0.86253 0.28900 +C C 0.83330 0.82921 0.82669 -0.18100 +C C 0.84965 0.82730 0.77978 0.29300 +F F 0.83484 0.80266 0.74473 -0.34300 +F F 0.89442 0.85119 0.72211 -0.37000 +F F 0.83444 0.85602 0.90841 -0.36400 +F F 0.89277 0.90590 0.88501 -0.33600 +C C 0.09497 0.88503 0.86172 0.29000 +C C 0.08640 0.89774 0.81401 -0.18600 +C C 0.10477 0.88023 0.77379 0.28600 +C C 0.13275 0.85143 0.78136 0.29200 +C C 0.14295 0.84040 0.82929 -0.18700 +C C 0.12331 0.85663 0.86931 0.28600 +F F 0.13259 0.84576 0.91571 -0.37600 +F F 0.07716 0.90157 0.90089 -0.35200 +F F 0.15134 0.83563 0.74232 -0.35000 +F F 0.09617 0.89177 0.72749 -0.36500 +C C 0.14058 0.12850 0.65001 0.28200 +C C 0.16496 0.14815 0.68403 -0.17200 +C C 0.16122 0.14113 0.73454 0.28800 +C C 0.13350 0.11482 0.75063 0.28800 +C C 0.10987 0.09434 0.71654 -0.17400 +C C 0.11349 0.10146 0.66603 0.29000 +F F 0.09162 0.08137 0.63232 -0.35500 +F F 0.14326 0.13545 0.60131 -0.37800 +F F 0.12979 0.10906 0.79948 -0.36700 +F F 0.18529 0.15882 0.76796 -0.33000 +C C 0.97035 0.01056 0.53467 0.28200 +C C 0.99433 0.98582 0.56237 -0.15900 +C C 0.02389 0.96493 0.53910 0.29100 +C C 0.02966 0.96881 0.48879 0.29300 +C C 0.00564 0.99346 0.46099 -0.15600 +C C 0.97590 0.01420 0.48421 0.27600 +F F 0.95277 0.03841 0.45799 -0.35400 +F F 0.94255 0.03208 0.55692 -0.35200 +F F 0.05819 0.94811 0.46692 -0.32700 +F F 0.04709 0.94080 0.56535 -0.34500 +C C 0.98568 0.95768 0.03284 0.32300 +C C 0.00334 0.98641 0.06279 -0.17200 +C C 0.02310 0.01730 0.04116 0.31900 +C C 0.02517 0.01932 0.99003 0.24300 +C C 0.00722 0.99075 0.96008 -0.13900 +C C 0.98777 0.95967 0.98173 0.26500 +F F 0.97161 0.93097 0.95325 -0.32500 +F F 0.96673 0.92762 0.05330 -0.36000 +F F 0.04402 0.04943 0.96956 -0.36800 +F F 0.03930 0.04597 0.06966 -0.34000 +C C 0.86963 0.12676 0.22477 0.29300 +C C 0.86919 0.14272 0.17758 -0.17700 +C C 0.89565 0.12934 0.14269 0.28500 +C C 0.92163 0.09956 0.15429 0.29300 +C C 0.92138 0.08284 0.20104 -0.18300 +C C 0.89565 0.09698 0.23641 0.28700 +F F 0.89553 0.08153 0.28189 -0.36200 +F F 0.84388 0.13907 0.25872 -0.34600 +F F 0.94595 0.08582 0.11945 -0.34300 +F F 0.89578 0.14480 0.09721 -0.36900 +C C 0.87734 0.85979 0.26488 0.28500 +C C 0.89224 0.88641 0.30007 -0.17300 +C C 0.87869 0.88565 0.34845 0.29300 +C C 0.84945 0.85962 0.36087 0.29000 +C C 0.83335 0.83417 0.32514 -0.17900 +C C 0.84808 0.83374 0.27732 0.29200 +F F 0.83276 0.80942 0.24228 -0.34300 +F F 0.89067 0.85968 0.21833 -0.36800 +F F 0.83604 0.85981 0.40740 -0.35800 +F F 0.89262 0.91131 0.38289 -0.34300 +C C 0.08865 0.87933 0.35873 0.29000 +C C 0.08636 0.89874 0.31375 -0.18000 +C C 0.11127 0.88786 0.27576 0.28500 +C C 0.13985 0.85980 0.28372 0.29600 +C C 0.14387 0.84250 0.32977 -0.19000 +C C 0.11760 0.85159 0.36684 0.29300 +F F 0.12063 0.83416 0.41104 -0.36800 +F F 0.06385 0.88844 0.39521 -0.32600 +F F 0.16443 0.85023 0.24713 -0.35500 +F F 0.10837 0.90522 0.23150 -0.36100 +C C 0.10557 0.13133 0.20916 0.29200 +C C 0.11721 0.09324 0.21997 -0.17600 +C C 0.15556 0.08171 0.21138 0.29000 +C C 0.18207 0.10805 0.19267 0.28800 +C C 0.17051 0.14620 0.18194 -0.17500 +C C 0.13218 0.15778 0.19049 0.28900 +F F 0.12069 0.19458 0.18049 -0.33700 +F F 0.06857 0.14277 0.21701 -0.35100 +F F 0.21927 0.09674 0.18591 -0.35000 +F F 0.16695 0.04468 0.22027 -0.35000 diff --git a/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/input_configs.yaml b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/input_configs.yaml new file mode 100644 index 00000000..a7b6abc9 --- /dev/null +++ b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/input_configs.yaml @@ -0,0 +1,8 @@ +database: arcmof-majumdar +formula: null +elements: null +element_match: all +identifier: ddmof_559 +max_results: 1 +output_dir: skills/chem-db-mof/examples/arcmof_db7_ddmof_559 +cache_dir: ~/.cache/arcmof diff --git a/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/majumdar_metadata.csv b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/majumdar_metadata.csv new file mode 100644 index 00000000..e6ea1613 --- /dev/null +++ b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/majumdar_metadata.csv @@ -0,0 +1,2 @@ +MOF_name,topology,metal_node,organic_node,organic_edge,H2_adsorbed_100bar_77K (mg/g),Gravimetric_Uptake_100bar_77K (wt%),Volumetric_Uptake_100bar_77K (g/L),CO2_uptake_1bar_298K (mmol/g),CO2_uptake_0.15bar_298K (mmol/g),N2_uptake_0.85bar_298K (mmol/g),CO2_uptake_0.015bar_363K (mmol/g),N2_uptake_0.085bar_363K (mmol/g),Working_Capacity (mmol/g),Selectivity,Di,Dif,Df,CellV (A^3),Density (g/cm^3),ASA (m^2/cm^3),NASA (m^2/cm^3),POAVF,PONAVF,POAV (cm^3/g),PONAV (cm^3/g),total_SA_volumetric,total_SA_gravimetric,total_POV_volumetric,total_POV_gravimetric,mc_CRY-chi-0-all,mc_CRY-chi-1-all,mc_CRY-chi-2-all,mc_CRY-chi-3-all,mc_CRY-Z-0-all,mc_CRY-Z-1-all,mc_CRY-Z-2-all,mc_CRY-Z-3-all,mc_CRY-I-0-all,mc_CRY-I-1-all,mc_CRY-I-2-all,mc_CRY-I-3-all,mc_CRY-T-0-all,mc_CRY-T-1-all,mc_CRY-T-2-all,mc_CRY-T-3-all,mc_CRY-S-0-all,mc_CRY-S-1-all,mc_CRY-S-2-all,mc_CRY-S-3-all,D_mc_CRY-chi-0-all,D_mc_CRY-chi-1-all,D_mc_CRY-chi-2-all,D_mc_CRY-chi-3-all,D_mc_CRY-Z-0-all,D_mc_CRY-Z-1-all,D_mc_CRY-Z-2-all,D_mc_CRY-Z-3-all,D_mc_CRY-I-0-all,D_mc_CRY-I-1-all,D_mc_CRY-I-2-all,D_mc_CRY-I-3-all,D_mc_CRY-T-0-all,D_mc_CRY-T-1-all,D_mc_CRY-T-2-all,D_mc_CRY-T-3-all,D_mc_CRY-S-0-all,D_mc_CRY-S-1-all,D_mc_CRY-S-2-all,D_mc_CRY-S-3-all,sum-mc_CRY-chi-0-all,sum-mc_CRY-chi-1-all,sum-mc_CRY-chi-2-all,sum-mc_CRY-chi-3-all,sum-mc_CRY-Z-0-all,sum-mc_CRY-Z-1-all,sum-mc_CRY-Z-2-all,sum-mc_CRY-Z-3-all,sum-mc_CRY-I-0-all,sum-mc_CRY-I-1-all,sum-mc_CRY-I-2-all,sum-mc_CRY-I-3-all,sum-mc_CRY-T-0-all,sum-mc_CRY-T-1-all,sum-mc_CRY-T-2-all,sum-mc_CRY-T-3-all,sum-mc_CRY-S-0-all,sum-mc_CRY-S-1-all,sum-mc_CRY-S-2-all,sum-mc_CRY-S-3-all,sum-D_mc_CRY-chi-0-all,sum-D_mc_CRY-chi-1-all,sum-D_mc_CRY-chi-2-all,sum-D_mc_CRY-chi-3-all,sum-D_mc_CRY-Z-0-all,sum-D_mc_CRY-Z-1-all,sum-D_mc_CRY-Z-2-all,sum-D_mc_CRY-Z-3-all,sum-D_mc_CRY-I-0-all,sum-D_mc_CRY-I-1-all,sum-D_mc_CRY-I-2-all,sum-D_mc_CRY-I-3-all,sum-D_mc_CRY-T-0-all,sum-D_mc_CRY-T-1-all,sum-D_mc_CRY-T-2-all,sum-D_mc_CRY-T-3-all,sum-D_mc_CRY-S-0-all,sum-D_mc_CRY-S-1-all,sum-D_mc_CRY-S-2-all,sum-D_mc_CRY-S-3-all,lc-chi-0-all,lc-chi-1-all,lc-chi-2-all,lc-chi-3-all,lc-Z-0-all,lc-Z-1-all,lc-Z-2-all,lc-Z-3-all,lc-I-0-all,lc-I-1-all,lc-I-2-all,lc-I-3-all,lc-T-0-all,lc-T-1-all,lc-T-2-all,lc-T-3-all,lc-S-0-all,lc-S-1-all,lc-S-2-all,lc-S-3-all,lc-alpha-0-all,lc-alpha-1-all,lc-alpha-2-all,lc-alpha-3-all,D_lc-chi-0-all,D_lc-chi-1-all,D_lc-chi-2-all,D_lc-chi-3-all,D_lc-Z-0-all,D_lc-Z-1-all,D_lc-Z-2-all,D_lc-Z-3-all,D_lc-I-0-all,D_lc-I-1-all,D_lc-I-2-all,D_lc-I-3-all,D_lc-T-0-all,D_lc-T-1-all,D_lc-T-2-all,D_lc-T-3-all,D_lc-S-0-all,D_lc-S-1-all,D_lc-S-2-all,D_lc-S-3-all,D_lc-alpha-0-all,D_lc-alpha-1-all,D_lc-alpha-2-all,D_lc-alpha-3-all,func-chi-0-all,func-chi-1-all,func-chi-2-all,func-chi-3-all,func-Z-0-all,func-Z-1-all,func-Z-2-all,func-Z-3-all,func-I-0-all,func-I-1-all,func-I-2-all,func-I-3-all,func-T-0-all,func-T-1-all,func-T-2-all,func-T-3-all,func-S-0-all,func-S-1-all,func-S-2-all,func-S-3-all,func-alpha-0-all,func-alpha-1-all,func-alpha-2-all,func-alpha-3-all,D_func-chi-0-all,D_func-chi-1-all,D_func-chi-2-all,D_func-chi-3-all,D_func-Z-0-all,D_func-Z-1-all,D_func-Z-2-all,D_func-Z-3-all,D_func-I-0-all,D_func-I-1-all,D_func-I-2-all,D_func-I-3-all,D_func-T-0-all,D_func-T-1-all,D_func-T-2-all,D_func-T-3-all,D_func-S-0-all,D_func-S-1-all,D_func-S-2-all,D_func-S-3-all,D_func-alpha-0-all,D_func-alpha-1-all,D_func-alpha-2-all,D_func-alpha-3-all,f-lig-chi-0,f-lig-chi-1,f-lig-chi-2,f-lig-chi-3,f-lig-Z-0,f-lig-Z-1,f-lig-Z-2,f-lig-Z-3,f-lig-I-0,f-lig-I-1,f-lig-I-2,f-lig-I-3,f-lig-T-0,f-lig-T-1,f-lig-T-2,f-lig-T-3,f-lig-S-0,f-lig-S-1,f-lig-S-2,f-lig-S-3,sum-lc-chi-0-all,sum-lc-chi-1-all,sum-lc-chi-2-all,sum-lc-chi-3-all,sum-lc-Z-0-all,sum-lc-Z-1-all,sum-lc-Z-2-all,sum-lc-Z-3-all,sum-lc-I-0-all,sum-lc-I-1-all,sum-lc-I-2-all,sum-lc-I-3-all,sum-lc-T-0-all,sum-lc-T-1-all,sum-lc-T-2-all,sum-lc-T-3-all,sum-lc-S-0-all,sum-lc-S-1-all,sum-lc-S-2-all,sum-lc-S-3-all,sum-lc-alpha-0-all,sum-lc-alpha-1-all,sum-lc-alpha-2-all,sum-lc-alpha-3-all,sum-D_lc-chi-0-all,sum-D_lc-chi-1-all,sum-D_lc-chi-2-all,sum-D_lc-chi-3-all,sum-D_lc-Z-0-all,sum-D_lc-Z-1-all,sum-D_lc-Z-2-all,sum-D_lc-Z-3-all,sum-D_lc-I-0-all,sum-D_lc-I-1-all,sum-D_lc-I-2-all,sum-D_lc-I-3-all,sum-D_lc-T-0-all,sum-D_lc-T-1-all,sum-D_lc-T-2-all,sum-D_lc-T-3-all,sum-D_lc-S-0-all,sum-D_lc-S-1-all,sum-D_lc-S-2-all,sum-D_lc-S-3-all,sum-D_lc-alpha-0-all,sum-D_lc-alpha-1-all,sum-D_lc-alpha-2-all,sum-D_lc-alpha-3-all,sum-func-chi-0-all,sum-func-chi-1-all,sum-func-chi-2-all,sum-func-chi-3-all,sum-func-Z-0-all,sum-func-Z-1-all,sum-func-Z-2-all,sum-func-Z-3-all,sum-func-I-0-all,sum-func-I-1-all,sum-func-I-2-all,sum-func-I-3-all,sum-func-T-0-all,sum-func-T-1-all,sum-func-T-2-all,sum-func-T-3-all,sum-func-S-0-all,sum-func-S-1-all,sum-func-S-2-all,sum-func-S-3-all,sum-func-alpha-0-all,sum-func-alpha-1-all,sum-func-alpha-2-all,sum-func-alpha-3-all,sum-D_func-chi-0-all,sum-D_func-chi-1-all,sum-D_func-chi-2-all,sum-D_func-chi-3-all,sum-D_func-Z-0-all,sum-D_func-Z-1-all,sum-D_func-Z-2-all,sum-D_func-Z-3-all,sum-D_func-I-0-all,sum-D_func-I-1-all,sum-D_func-I-2-all,sum-D_func-I-3-all,sum-D_func-T-0-all,sum-D_func-T-1-all,sum-D_func-T-2-all,sum-D_func-T-3-all,sum-D_func-S-0-all,sum-D_func-S-1-all,sum-D_func-S-2-all,sum-D_func-S-3-all,sum-D_func-alpha-0-all,sum-D_func-alpha-1-all,sum-D_func-alpha-2-all,sum-D_func-alpha-3-all,sum-f-lig-chi-0,sum-f-lig-chi-1,sum-f-lig-chi-2,sum-f-lig-chi-3,sum-f-lig-Z-0,sum-f-lig-Z-1,sum-f-lig-Z-2,sum-f-lig-Z-3,sum-f-lig-I-0,sum-f-lig-I-1,sum-f-lig-I-2,sum-f-lig-I-3,sum-f-lig-T-0,sum-f-lig-T-1,sum-f-lig-T-2,sum-f-lig-T-3,sum-f-lig-S-0,sum-f-lig-S-1,sum-f-lig-S-2,sum-f-lig-S-3,linker-SMILES,linker-count,RDKitLinkerSanity,AtomTypes +ddmof_559,snk,mn1, ,['oe31'],57.23146003,5.723146003,45.85809091,7.660127644,2.197966719,0.166187837,0.051662226,0.007957876,2.146304493,74.94618732,11.02193,9.85532,7.25913,32396.0,0.80127,2141.3,0.0,0.65468,0.0,0.817053,0.0,2141.3,2672.382593,0.65468,0.817053,3.6481,29.5668,30.03475,67.1747,784.0,1008.0,2506.0,2296.0,1.0,4.5,7.0,11.0,20.5,55.0,100.0,117.5,1.4641,3.97485,7.1269,9.8615,0.0,-6.885,-2.355,-14.16,0.0,90.0,106.5,226.0,0.0,0.0,0.0,0.0,0.0,8.5,10.0,24.0,0.0,2.16,2.58,5.16,233.4784,1892.2752,1922.224,4299.1808,50176.0,64512.0,160384.0,146944.0,64.0,288.0,448.0,704.0,1312.0,3520.0,6400.0,7520.0,93.7024,254.3904,456.1216,631.136,0.0,-440.64,-150.72,-906.24,0.0,5760.0,6816.0,14464.0,0.0,0.0,0.0,0.0,0.0,544.0,640.0,1536.0,0.0,138.24,165.12,330.24,11.8336,8.772,20.6056,17.544,64.0,48.0,112.0,96.0,1.0,1.0,2.0,2.0,1.0,3.0,4.0,6.0,0.5329,0.5621,1.095,1.1242,28.09,59.89,87.98,119.78,0.0,0.89,0.89,1.78,0.0,2.0,2.0,4.0,0.0,0.0,0.0,0.0,0.0,-2.0,-2.0,-4.0,0.0,-0.04,-0.04,-0.08,0.0,-6.0,-6.0,-12.0,15.8404,10.149,20.298,46.2874,81.0,54.0,108.0,243.0,1.0,1.0,2.0,4.0,1.0,3.0,6.0,10.0,0.5041,0.5467,1.0934,2.1442,13.9876,42.262,84.524,140.7736,0.0,1.43,2.86,4.29,0.0,3.0,6.0,9.0,0.0,0.0,0.0,0.0,0.0,-2.0,-4.0,-6.0,0.0,-0.06,-0.12,-0.18,0.0,-7.56,-15.12,-22.68,162.716,255.408,409.9444,538.3246,868.0,1392.0,2224.0,2892.0,16.0,32.0,48.0,58.0,80.0,192.0,256.0,250.0,8.8912,18.3568,27.2336,32.4314,568.0128,421.056,989.0688,842.112,3072.0,2304.0,5376.0,4608.0,48.0,48.0,96.0,96.0,48.0,144.0,192.0,288.0,25.5792,26.9808,52.56,53.9616,1348.32,2874.72,4223.04,5749.44,0.0,42.72,42.72,85.44,0.0,96.0,96.0,192.0,0.0,0.0,0.0,0.0,0.0,-96.0,-96.0,-192.0,0.0,-1.92,-1.92,-3.84,0.0,-288.0,-288.0,-576.0,760.3392,487.152,974.304,2221.7952,3888.0,2592.0,5184.0,11664.0,48.0,48.0,96.0,192.0,48.0,144.0,288.0,480.0,24.1968,26.2416,52.4832,102.9216,671.4048,2028.576,4057.152,6757.1328,0.0,68.64,137.28,205.92,0.0,144.0,288.0,432.0,0.0,0.0,0.0,0.0,0.0,-96.0,-192.0,-288.0,0.0,-2.88,-5.76,-8.64,0.0,-362.88,-725.76,-1088.64,7810.368,12259.584,19677.3312,25839.5808,41664.0,66816.0,106752.0,138816.0,768.0,1536.0,2304.0,2784.0,3840.0,9216.0,12288.0,12000.0,426.7776,881.1264,1307.2128,1556.7072,['C(=O)([O])c1c(c(F)c(c(c1F)F)C(=O)[O])F'],[48],True,"['Ni', 'C', 'F', 'O', 'H']" diff --git a/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/validation.json b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/validation.json new file mode 100644 index 00000000..a2dad6cc --- /dev/null +++ b/skills/chem-db-mof/examples/arcmof_db7_ddmof_559/validation.json @@ -0,0 +1,57 @@ +{ + "retrieved": { + "formula": "Ni64H32C384O224F192", + "n_atoms": 896, + "elements": [ + "C", + "F", + "H", + "Ni", + "O" + ], + "n_Ni": 64, + "n_mu3_OH": 32, + "n_carboxylate": 96, + "n_F": 192, + "net_charge_e": 0.0, + "volume_A3": 32395.98, + "density_g_cm3": 0.80127, + "metal_node": "mn1", + "organic_edge": "['oe31']", + "topology": "snk", + "CO2_uptake_1bar_298K_mmol_g": 7.66 + }, + "reference": { + "paper_fig7": { + "metal_node": "mn1", + "organic_edge": "oe31", + "topology": "snk", + "mn1_cluster": "Ni4(mu3-OH)2(COO)6", + "zeolite_13X_CO2_mmol_g": 5.0, + "n_above_13X": "around 800" + }, + "majumdar_mof_data": { + "volume_A3": 32396.0, + "density_g_cm3": 0.80127, + "Di_A": 11.02193, + "Df_A": 7.25913 + }, + "arcmof_geometric_properties": { + "filename": "DB7-ddmof_559.cif", + "volume_A3": 32396.0, + "density_g_cm3": 0.80127, + "Di_A": 11.02193, + "Df_A": 7.25913, + "in_ARC-MOF": false + } + }, + "derived": { + "Ni_per_OH": 2.0, + "COO_per_Ni4": 6.0, + "linkers_C8F4O4": 48, + "n_above_13X_in_dataset": 807, + "n_with_CO2_data": 23651, + "volume_rel_dev_vs_arcmof_pct": -0.0001, + "density_rel_dev_vs_arcmof_pct": 0.0005 + } +} diff --git a/skills/chem-db-mof/scripts/query_mof_db.py b/skills/chem-db-mof/scripts/query_mof_db.py index 0b0a6ab6..dcfb17e3 100644 --- a/skills/chem-db-mof/scripts/query_mof_db.py +++ b/skills/chem-db-mof/scripts/query_mof_db.py @@ -43,8 +43,9 @@ MAJUMDAR_MATERIALS_CLOUD_URL = "https://archive.materialscloud.org/api/records/et2ts-zxh44/files/mof_data.tar.gz/content" MAJUMDAR_TARBALL_CACHE_NAME = "majumdar_mof_data.tar.gz" -# Local cache directory — shared across runs to avoid repeated downloads -DEFAULT_CACHE_DIR = Path.home() / ".cache" / "arcmof" +# Local cache directory — shared across runs to avoid repeated downloads. +# Kept unexpanded ("~") so the saved input_configs.yaml stays machine-independent. +DEFAULT_CACHE_DIR = "~/.cache/arcmof" # DB7 (Majumdar et al.) structure filename prefix in ARC-MOF ARCMOF_DB7_PREFIX = "DB7-" @@ -91,7 +92,12 @@ def query_qmof( if formula: query["formula__contains"] = formula if identifier: - query["identifier__contains"] = identifier + if identifier.lower().startswith("qmof-"): + # The MPContribs identifier is the QMOF ID (e.g. qmof-8b5bb88) + query["identifier__contains"] = identifier + else: + # CSD refcodes and other source names are stored in data.filename + query["data__filename__contains"] = identifier print(f"Querying QMOF with: {query or '(no filter — returning first results)'}") try: @@ -114,7 +120,6 @@ def query_qmof( print(f"Found {len(results['data'])} MOFs. Downloading CIFs to {output_dir}...") for contrib in results["data"]: - contrib_id = contrib["id"] identifier_name = contrib["identifier"] formula_name = contrib["formula"] print(f" {identifier_name} ({formula_name})") @@ -322,7 +327,7 @@ def _elements_from_cif_bytes(cif_bytes: bytes) -> set[str]: # Fallback: _atom_site_label (strip trailing digits/signs) labels = re.findall(r"^\s*([A-Z][a-z]?\d*[+-]?)\s", text, re.MULTILINE) - elements = {re.sub(r"[^A-Za-z]", "", l).capitalize() for l in labels} + elements = {re.sub(r"[^A-Za-z]", "", label).capitalize() for label in labels} return {e for e in elements if e.isalpha() and 1 <= len(e) <= 2} @@ -377,10 +382,14 @@ def _extract_majumdar_cifs( max_results: int, metals: list[str], identifier: str | None, + element_match: str = "all", ) -> list[str]: """ Extract CIFs from the Majumdar et al. Materials Cloud tarball. + ``element_match="all"`` keeps structures containing every element in ``metals``; + ``"any"`` keeps structures containing at least one of them. + Tarball structure: majumdar_mof_data.tar.gz mof_data/mof_data.csv ← metadata + CO2 properties @@ -411,6 +420,11 @@ def _extract_majumdar_cifs( meta_df = _load_majumdar_metadata(tarball_path) meta_df["MOF_name"] = meta_df["MOF_name"].str.replace(".cif", "", regex=False) + # An identifier that is a full MOF name (e.g. "ddmof_42") selects exactly that + # structure; anything else is treated as a name substring. + ident = identifier.removesuffix(".cif") if identifier else None + exact_ident = ident is not None and ident in set(meta_df["MOF_name"]) + required_metals = {m.capitalize() for m in metals} saved_paths = list(existing) saved_stems: set[str] = {Path(p).stem for p in existing} @@ -418,9 +432,11 @@ def _extract_majumdar_cifs( print("Extracting CIFs from nested mof_structures.tar ...") if required_metals: - print(f" Metal filter (at least one required): {sorted(required_metals)}") + rule = "all required" if element_match == "all" else "at least one required" + print(f" Element filter ({rule}): {sorted(required_metals)}") if identifier: - print(f" Identifier filter: '{identifier}'") + mode = "exact name" if exact_ident else "substring" + print(f" Identifier filter ({mode}): '{ident}'") checked = 0 with tarfile.open(tarball_path, "r:gz") as outer: @@ -435,7 +451,9 @@ def _extract_majumdar_cifs( continue # Identifier filter - if identifier and identifier.lower() not in stem.lower(): + if exact_ident and stem != ident: + continue + if ident and not exact_ident and ident.lower() not in stem.lower(): continue f = inner.extractfile(member) @@ -448,8 +466,9 @@ def _extract_majumdar_cifs( # Metal element filter — parsed from CIF _atom_site_type_symbol if required_metals: found = _elements_from_cif_bytes(cif_bytes) - # Require at least one of the requested metals to be present - if not required_metals.intersection(found): + if element_match == "all" and not required_metals <= found: + continue + if element_match == "any" and not required_metals & found: continue out_path = output_dir / f"{stem}.cif" @@ -463,7 +482,7 @@ def _extract_majumdar_cifs( saved_meta_rows.append(row.iloc[0].to_dict()) print(f" [{len(saved_paths)}] {stem}.cif") - if len(saved_paths) >= max_results: + if exact_ident or len(saved_paths) >= max_results: break print(f"Done. Checked {checked} CIFs, saved {len(saved_paths)} to {output_dir}.") @@ -510,6 +529,7 @@ def query_arcmof_majumdar( max_results: int, output_dir: Path, cache_dir: Path, + element_match: str = "all", ) -> list[str]: """ Query the ARC-MOF DB7 (Majumdar et al. 2021) subset. @@ -523,7 +543,9 @@ def query_arcmof_majumdar( Element filtering: parsed from _atom_site_type_symbol in each CIF — no formula CSV needed. Args: - elements: List of required elements (e.g., ["Zn", "O", "C"]). + elements: Element filter (e.g., ["Zn", "F"]). + element_match: "all" keeps structures containing every listed element + (default); "any" keeps structures containing at least one of them. identifier: Specific structure name/ID substring to retrieve. max_results: Maximum number of CIFs to download. output_dir: Directory to save CIF files. @@ -538,6 +560,7 @@ def query_arcmof_majumdar( max_results=max_results, metals=elements, identifier=identifier, + element_match=element_match, ) @@ -579,17 +602,24 @@ def main(): "--elements", type=str, default=None, - help="[arcmof-majumdar] Comma-separated metal elements to filter by (e.g., 'Zn', 'Ni', 'Mg', or 'Zn,Ni'). " - "Structures containing AT LEAST ONE of the listed metals are returned. " - "Parsed from _atom_site_type_symbol in each CIF. " - "Add more metals to broaden diversity (e.g., 'Zn,Ni,Mg,Cu,Fe').", + help="[arcmof-majumdar] Comma-separated elements to filter by (e.g., 'Zn', 'Zn,F' or 'Zn,Cu'). " + "By default a structure must contain ALL listed elements (see --element-match). " + "Parsed from _atom_site_type_symbol in each CIF.", + ) + parser.add_argument( + "--element-match", + choices=["all", "any"], + default="all", + help="[arcmof-majumdar] 'all' (default): keep structures containing every element in --elements; " + "'any': keep structures containing at least one of them (e.g. --elements Zn,Ni,Mg " + "--element-match any for a mixed-metal screening set).", ) parser.add_argument( "--identifier", type=str, default=None, - help="Specific structure name or ID substring to retrieve (e.g., 'KAXQIL' for QMOF, " - "'DB7_00042' for ARC-MOF).", + help="Specific structure to retrieve: a QMOF ID or CSD refcode for QMOF (e.g., 'KAXQIL'); " + "a full MOF name for ARC-MOF DB7/Majumdar (e.g., 'ddmof_559', exact match) or a name substring.", ) parser.add_argument( "--max-results", @@ -606,13 +636,13 @@ def main(): parser.add_argument( "--cache-dir", type=str, - default=str(DEFAULT_CACHE_DIR), + default=DEFAULT_CACHE_DIR, help=f"Local cache directory for ARC-MOF metadata (default: {DEFAULT_CACHE_DIR}).", ) args = parser.parse_args() output_dir = Path(args.output_dir) - cache_dir = Path(args.cache_dir) + cache_dir = Path(args.cache_dir).expanduser() if args.database == "qmof": saved = query_qmof( @@ -632,6 +662,7 @@ def main(): max_results=args.max_results, output_dir=output_dir, cache_dir=cache_dir, + element_match=args.element_match, ) print(f"\nDone. {len(saved)} CIF(s) saved to {output_dir}.") diff --git a/skills/chem-db-qmof/SKILL.md b/skills/chem-db-qmof/SKILL.md index 685204db..867361e1 100644 --- a/skills/chem-db-qmof/SKILL.md +++ b/skills/chem-db-qmof/SKILL.md @@ -31,12 +31,16 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/query_ ### Available Arguments: - `--formula`: Search by chemical formula or elements (e.g., `Zn,O,C`). -- `--identifier`: Search by specific CSD refcode or MOF common name (e.g., `KAXQIL`). +- `--identifier`: Search by QMOF ID (e.g., `qmof-8b5bb88`) or CSD refcode (e.g., `KAXQIL`, `DOTSOV01`). Refcodes are matched as case-sensitive substrings of the QMOF source filename. MOF common names (e.g., HKUST-1) are not indexed. - `--max-results`: Maximum number of structures to download (default: 5). - `--output-dir`: Directory to save the resulting `.cif` files. +Outputs: one `.cif` per hit, `qmof_properties.json` (tabulated QMOF properties such as `EgPBE` band gap, density, pore sizes, source refcode/DOI, with a `units` block), and `input_configs.yaml`. + ## Examples +**Literature-validated example: HKUST-1 (CSD refcode DOTSOV01).** See [examples/hkust1_dotsov01/README.md](examples/hkust1_dotsov01/README.md). It retrieves the DFT-relaxed cell and PBE band gap, and checks them against the experimental lattice parameter and the official QMOF release. + **Example 1: Automated testing script (Zinc MOF)** ```bash bash ${CLAUDE_SKILL_DIR}/examples/test_qmof.sh diff --git a/skills/chem-db-qmof/examples/hkust1_dotsov01/README.md b/skills/chem-db-qmof/examples/hkust1_dotsov01/README.md new file mode 100644 index 00000000..c770501e --- /dev/null +++ b/skills/chem-db-qmof/examples/hkust1_dotsov01/README.md @@ -0,0 +1,176 @@ +# HKUST-1 (Cu-BTC) from QMOF: DFT-Relaxed Cell and PBE Band Gap + +## Goal + +Retrieve the PBE-D3(BJ)-relaxed crystal structure and the tabulated PBE band gap of +HKUST-1, Cu3(BTC)2 (BTC = benzene-1,3,5-tricarboxylate), from the +QMOF database by CSD refcode. Then validate: + +1. the relaxed cubic lattice parameter against the experimental single-crystal value from + the original synthesis paper (Chui et al., *Science* 1999), and +2. the band gap returned through MPContribs against the official QMOF dataset release + on figshare. + +## Locating HKUST-1 in QMOF + +QMOF does not index MOF common names, and `--identifier FIQCEN` returns no entry. +HKUST-1 is in QMOF as **`qmof-8b5bb88`** (CSD refcode **DOTSOV01**). It was found by listing +the 80 entries in the C-Cu-H-O chemical system and keeping the Fm-3m one whose formula, +Cu12C72H24O48, is 4 × Cu3(C9H3O6)2. +The official QMOF release confirms the assignment. Its MOFid is +`[Cu][Cu].[O-]C(=O)c1cc(cc(c1)C(=O)[O-])C(=O)[O-] MOFid-v1.tbo.cat0`, i.e. a Cu2 +paddlewheel and the BTC linker on the **tbo** net. Its source structure is +Wu et al., *Angew. Chem. Int. Ed.* 2008 (DOI 10.1002/anie.200803925). The dataset's own README +also uses `qmof-8b5bb88` as its worked example. + +## Inputs + +| Input | Value | +|---|---| +| `--identifier` | `DOTSOV01` (a CSD refcode, matched against the QMOF `data.filename` field) | +| `--max-results` | `1` | +| Credentials | `MP_API_KEY` exported in the environment | +| Compute | CPU only, ~10 s (network-bound) | + +## Command + +Run from the repository root: + +```bash +venv/run cpu python skills/chem-db-qmof/scripts/query_qmof.py \ + --identifier DOTSOV01 \ + --max-results 1 \ + --output-dir skills/chem-db-qmof/examples/hkust1_dotsov01 +``` + +Console output: + +```text +Querying QMOF with parameters: {'data__filename__contains': 'DOTSOV01'} +Found 1 matching MOFs. Downloading CIFs to skills/chem-db-qmof/examples/hkust1_dotsov01... +Downloading qmof-8b5bb88 (Formula: Cu12C72H24O48)... + Saved to skills/chem-db-qmof/examples/hkust1_dotsov01/qmof-8b5bb88.cif +Saved tabulated properties to skills/chem-db-qmof/examples/hkust1_dotsov01/qmof_properties.json +Done. +``` + +### Validation step + +This step derives the conventional cubic cell, the density and the shortest Cu-Cu distance +from the retrieved CIF with pymatgen, then writes [validation.json](validation.json): + +```bash +venv/run cpu python - <<'PY' +import json +from pymatgen.core import Structure +from pymatgen.symmetry.analyzer import SpacegroupAnalyzer + +ex = "skills/chem-db-qmof/examples/hkust1_dotsov01" +s = Structure.from_file(f"{ex}/qmof-8b5bb88.cif") +entry = json.load(open(f"{ex}/qmof_properties.json"))["entries"][0] + +sga = SpacegroupAnalyzer(s, symprec=0.01) +conv = sga.get_conventional_standard_structure() +cu = [i for i, site in enumerate(s) if site.specie.symbol == "Cu"] +d_cucu = min(s.get_distance(i, j) for i in cu for j in cu if i < j) + +ours = { + "reduced_formula": s.composition.reduced_formula, + "n_atoms_primitive": len(s), + "spacegroup": sga.get_space_group_symbol(), + "a_conventional_A": round(conv.lattice.a, 4), + "volume_primitive_A3": round(s.volume, 3), + "volume_conventional_A3": round(conv.volume, 3), + "density_g_cm3": round(float(s.density), 6), + "d_CuCu_A": round(d_cucu, 4), + "EgPBE_eV": entry["EgPBE"], +} +ref = {"a_exp_A": 26.343, "d_CuCu_exp_A": 2.63, + "EgPBE_official_eV": 0.886534, "density_official_g_cm3": 0.866108, + "volume_official_A3": 4638.737256} +dev = { + "a_rel_dev_pct": round(100 * (ours["a_conventional_A"] / ref["a_exp_A"] - 1), 2), + "volume_rel_dev_vs_exp_pct": round(100 * (ours["a_conventional_A"] ** 3 / ref["a_exp_A"] ** 3 - 1), 2), + "d_CuCu_dev_A": round(ours["d_CuCu_A"] - ref["d_CuCu_exp_A"], 3), + "EgPBE_abs_dev_eV": round(abs(ours["EgPBE_eV"] - ref["EgPBE_official_eV"]), 6), + "density_abs_dev_g_cm3": round(abs(ours["density_g_cm3"] - ref["density_official_g_cm3"]), 6), +} +out = {"retrieved": ours, "reference": ref, "deviation": dev} +json.dump(out, open(f"{ex}/validation.json", "w"), indent=2) +print(json.dumps(out, indent=2)) +PY +``` + +## Outputs + +| File | Content | +|---|---| +| [qmof-8b5bb88.cif](qmof-8b5bb88.cif) | PBE-D3(BJ)-relaxed primitive cell (156 atoms, written in P1) | +| [qmof_properties.json](qmof_properties.json) | Tabulated QMOF properties for the hit (refcode, source DOI, density, pore sizes, `EgPBE`, ...) plus a `units` block | +| [input_configs.yaml](input_configs.yaml) | Arguments of the run | +| [validation.json](validation.json) | Output of the validation step | + +## Results and Validation + +### (a) Structure vs. experiment, (b) band gap vs. official release + +| Quantity | This run (skill output) | Reference | Deviation | Reference source | +|---|---|---|---|---| +| Space group | Fm-3m (symprec 0.01 Å) | Fm-3m | — | Chui et al. 1999, as tabulated in Bristow et al. 2014, Table 1 | +| Conventional cubic *a* (Å) | **26.474** | **26.343** (experiment) | **+0.50 %** (+1.5 % in volume) | Chui et al. 1999, as tabulated in Bristow et al. 2014, Table 1 | +| Shortest Cu–Cu, paddlewheel (Å) | 2.457 | 2.63 (room-temperature experimental structure) | −0.17 Å (indicative only, see notes) | Bristow et al. 2014, Section 2 | +| PBE band gap `EgPBE` (eV) | **0.886534** | **0.886534** | 0 | QMOF figshare release v18, `qmof.csv`, `outputs.pbe.bandgap` | +| Density (g cm−3), computed by pymatgen from the CIF | 0.866108 | 0.866108 | 0 | QMOF `qmof.csv`, `info.density` | +| Primitive-cell volume (Å3) | 4638.737 | 4638.737256 | < 0.001 Å3 | QMOF `qmof.csv`, `info.volume` | +| Formula per cell | Cu12C72H24O48 | Cu12C72H24O48 | — | QMOF `qmof.csv`, `info.formula` | +| Net magnetic moment (PBE) | 0.0 | 0.0 | — | QMOF `qmof.csv`, `outputs.pbe.net_magmom` | + +The official values come from `qmof_database/qmof.csv` inside `qmof_database.zip` of the +QMOF figshare record (version 18, published 2025-11-15). For this entry the release also +records a spin-polarised PBE-D3(BJ) calculation (`inputs.pbe.spin = True`, ENCUT 520 eV, +Γ-only k-points), a direct gap, and spin-resolved gaps of 0.8865 / 0.8869 eV. +There are no HLE17, HSE06\* or HSE06 band gaps for this entry: those columns are empty in +`qmof.csv` and absent from the MPContribs record. + +### Discussion + +- **Lattice parameter.** The QMOF PBE-D3(BJ) cell is 0.50 % longer than the experimental + *a* = 26.343 Å, which reproduces the Fm-3m framework closely. The comparison is not exactly + like-for-like, for two reasons: + - Chui et al. characterised the hydrated framework [Cu3(TMA)2(H2O)3]n, + whereas QMOF relaxed the solvent-free framework derived from DOTSOV01. + - The DFT cell is static (0 K, no zero-point or thermal motion). HKUST-1 shows negative + thermal expansion (Wu et al. 2008), so a low-temperature cell is expected to be slightly + larger than a room-temperature one. +- **Band gap.** The MPContribs value matches the official release to all reported digits. + This confirms that the skill reads the right record and the right column (`EgPBE` = PBE-D3(BJ) gap). + PBE underestimates band gaps (Rosen et al. 2022). Use the HLE17/HSE06 columns in + `qmof_properties.json` when an entry has them. +- **Cu–Cu distance.** The paddlewheel Cu–Cu separation is 2.457 Å in the relaxed solvent-free + framework. Bristow et al. quote 2.63 Å for "the room temperature experimental crystal + structure" without giving its hydration state. Their Section 2 also notes axial water on Cu in + hydrated crystals, which the QMOF structure does not have. Because the two are not + like-for-like, this row is shown for information only and is not a pass/fail criterion. + +## Notes + +- `--identifier` takes either a QMOF ID with the `qmof-` prefix (e.g. `qmof-8b5bb88`) or a CSD + refcode or source-name substring. Matching is case-sensitive against `data.filename`: for + example, `DOTSOV` would also match any other `DOTSOV*` entry. +- QMOF stores the primitive cell (156 atoms for HKUST-1). Use + `SpacegroupAnalyzer.get_conventional_standard_structure()` to recover the 624-atom cubic + cell when comparing with crystallographic data. + +## References + +- S. S.-Y. Chui, S. M.-F. Lo, J. P. H. Charmant, A. G. Orpen, I. D. Williams, "A Chemically Functionalizable Nanoporous Material [Cu3(TMA)2(H2O)3]n", *Science* **283**, 1148–1150 (1999). [DOI: 10.1126/science.283.5405.1148](https://doi.org/10.1126/science.283.5405.1148) +- J. K. Bristow, D. Tiana, A. Walsh, "Transferable Force Field for Metal–Organic Frameworks from First-Principles: BTW-FF", *J. Chem. Theory Comput.* **10**, 4644–4652 (2014), Table 1 (experimental *a* of HKUST-1, citing Chui et al.) and Section 2 (Cu–Cu separation). [DOI: 10.1021/ct500515h](https://doi.org/10.1021/ct500515h); open access: [PMC4284133](https://pmc.ncbi.nlm.nih.gov/articles/PMC4284133/) +- Y. Wu, A. Kobayashi, G. J. Halder, V. K. Peterson, K. W. Chapman, N. Lock, P. D. Southon, C. J. Kepert, "Negative Thermal Expansion in the Metal–Organic Framework Material Cu3(1,3,5-benzenetricarboxylate)2", *Angew. Chem. Int. Ed.* **47**, 8929–8932 (2008), the source of CSD entry DOTSOV01. [DOI: 10.1002/anie.200803925](https://doi.org/10.1002/anie.200803925) +- A. S. Rosen, S. M. Iyer, D. Ray, Z. Yao, A. Aspuru-Guzik, L. Gagliardi, J. M. Notestein, R. Q. Snurr, "Machine learning the quantum-chemical properties of metal–organic frameworks for accelerated materials discovery", *Matter* **4**, 1578–1597 (2021). [DOI: 10.1016/j.matt.2021.02.015](https://doi.org/10.1016/j.matt.2021.02.015) +- A. S. Rosen, V. Fung, P. Huck, C. T. O'Donnell, M. K. Horton, D. G. Truhlar, K. A. Persson, J. M. Notestein, R. Q. Snurr, "High-throughput predictions of metal–organic framework electronic properties: theoretical challenges, graph neural networks, and data exploration", *npj Comput. Mater.* **8**, 112 (2022). [DOI: 10.1038/s41524-022-00796-6](https://doi.org/10.1038/s41524-022-00796-6) +- A. S. Rosen, "QMOF Database", figshare, version 18 (2025). [DOI: 10.6084/m9.figshare.13147324](https://doi.org/10.6084/m9.figshare.13147324) +- MPContribs QMOF project (data source queried by the skill): [contribs.materialsproject.org/projects/qmof](https://contribs.materialsproject.org/projects/qmof) + +## 3D Structures + +- [qmof-8b5bb88.cif](qmof-8b5bb88.cif): HKUST-1 (DOTSOV01), PBE-D3(BJ)-relaxed primitive cell diff --git a/skills/chem-db-qmof/examples/hkust1_dotsov01/input_configs.yaml b/skills/chem-db-qmof/examples/hkust1_dotsov01/input_configs.yaml new file mode 100644 index 00000000..56d7dda8 --- /dev/null +++ b/skills/chem-db-qmof/examples/hkust1_dotsov01/input_configs.yaml @@ -0,0 +1,4 @@ +formula: null +identifier: DOTSOV01 +max_results: 1 +output_dir: skills/chem-db-qmof/examples/hkust1_dotsov01 diff --git a/skills/chem-db-qmof/examples/hkust1_dotsov01/qmof-8b5bb88.cif b/skills/chem-db-qmof/examples/hkust1_dotsov01/qmof-8b5bb88.cif new file mode 100644 index 00000000..4af99fa3 --- /dev/null +++ b/skills/chem-db-qmof/examples/hkust1_dotsov01/qmof-8b5bb88.cif @@ -0,0 +1,182 @@ +# generated using pymatgen +data_CuH2(C3O2)2 +_symmetry_space_group_name_H-M P1 +_cell_length_a 18.71679002 +_cell_length_b 18.71683659 +_cell_length_c 18.71893229 +_cell_angle_alpha 119.98120558 +_cell_angle_beta 119.98162344 +_cell_angle_gamma 90.01953662 +_symmetry_Int_Tables_number 1 +_chemical_formula_structural CuH2(C3O2)2 +_chemical_formula_sum 'Cu12 H24 C72 O48' +_cell_volume 4638.73725646 +_cell_formula_units_Z 12 +loop_ + _symmetry_equiv_pos_site_id + _symmetry_equiv_pos_as_xyz + 1 'x, y, z' +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Cu Cu0 1 0.00000221 0.43434731 0.43435597 1 + Cu Cu1 1 0.00000624 0.56562479 0.00000272 1 + Cu Cu2 1 0.00000766 0.00001046 0.43434911 1 + Cu Cu3 1 0.43435597 0.99998960 0.99999260 1 + Cu Cu4 1 0.43437418 0.00000261 0.43437814 1 + Cu Cu5 1 0.43437784 0.43437636 0.43439098 1 + Cu Cu6 1 0.56561115 0.56560892 0.56559900 1 + Cu Cu7 1 0.56561180 0.99999813 0.56560659 1 + Cu Cu8 1 0.56564440 0.00000711 0.00000427 1 + Cu Cu9 1 0.99998921 0.43431691 0.99999184 1 + Cu Cu10 1 0.99999052 0.99998708 0.56562438 1 + Cu Cu11 1 0.99999469 0.56560502 0.56559631 1 + H H12 1 0.02850734 0.26611174 0.76238065 1 + H H13 1 0.02853947 0.49634136 0.76237879 1 + H H14 1 0.02853958 0.26616571 0.53222810 1 + H H15 1 0.26606529 0.73381184 0.76234253 1 + H H16 1 0.26610253 0.50365908 0.53222267 1 + H H17 1 0.26611107 0.02850445 0.76238306 1 + H H18 1 0.26616622 0.02853835 0.53222577 1 + H H19 1 0.26616903 0.50370719 0.23763971 1 + H H20 1 0.26618910 0.73393689 0.23765836 1 + H H21 1 0.49629287 0.73382948 0.76235566 1 + H H22 1 0.49633782 0.02853869 0.76238125 1 + H H23 1 0.49634409 0.73389461 0.46778017 1 + H H24 1 0.50366166 0.26610228 0.53222253 1 + H H25 1 0.50366705 0.97145998 0.23762391 1 + H H26 1 0.50370778 0.26617037 0.23764185 1 + H H27 1 0.73381706 0.26607278 0.76234497 1 + H H28 1 0.73383317 0.49629860 0.76235836 1 + H H29 1 0.73384014 0.97145853 0.46777933 1 + H H30 1 0.73388982 0.97149138 0.23761835 1 + H H31 1 0.73390001 0.49634649 0.46778298 1 + H H32 1 0.73393268 0.26618833 0.23766035 1 + H H33 1 0.97145928 0.73383422 0.46777632 1 + H H34 1 0.97146058 0.50366859 0.23762208 1 + H H35 1 0.97149473 0.73389058 0.23761749 1 + C C36 1 0.02412834 0.43060036 0.59354649 1 + C C37 1 0.02417442 0.16300480 0.59357677 1 + C C38 1 0.02418230 0.43060546 0.86117344 1 + C C39 1 0.02979244 0.25702384 0.64338936 1 + C C40 1 0.02979402 0.38642056 0.77277605 1 + C C41 1 0.02980195 0.38642484 0.64340074 1 + C C42 1 0.02989559 0.30013614 0.72976387 1 + C C43 1 0.02992590 0.42970789 0.72978193 1 + C C44 1 0.02992597 0.30015519 0.60023903 1 + C C45 1 0.16297313 0.56940403 0.59353492 1 + C C46 1 0.16300312 0.02417657 0.59357821 1 + C C47 1 0.16303804 0.56942134 0.13885461 1 + C C48 1 0.25700479 0.61356992 0.64339006 1 + C C49 1 0.25702189 0.02979060 0.64338944 1 + C C50 1 0.25704937 0.61361927 0.22723858 1 + C C51 1 0.30010676 0.69982695 0.72975694 1 + C C52 1 0.30011304 0.57027573 0.60023572 1 + C C53 1 0.30013505 0.02989125 0.72976314 1 + C C54 1 0.30015208 0.02992356 0.60023646 1 + C C55 1 0.30016654 0.57034200 0.27023808 1 + C C56 1 0.30017943 0.69989912 0.27024878 1 + C C57 1 0.38638189 0.61356989 0.64338654 1 + C C58 1 0.38638707 0.74295159 0.77275898 1 + C C59 1 0.38641779 0.02978980 0.77277622 1 + C C60 1 0.38641989 0.02979993 0.64339586 1 + C C61 1 0.38642595 0.61361463 0.35660893 1 + C C62 1 0.38643560 0.74299625 0.35661653 1 + C C63 1 0.42965959 0.69983086 0.72975638 1 + C C64 1 0.42970427 0.02992245 0.72977913 1 + C C65 1 0.42972617 0.69988444 0.39976667 1 + C C66 1 0.43056557 0.56940056 0.59354391 1 + C C67 1 0.43058478 0.83696284 0.86114741 1 + C C68 1 0.43059330 0.56943082 0.40645374 1 + C C69 1 0.43059882 0.02413308 0.59354268 1 + C C70 1 0.43059999 0.83702726 0.40646871 1 + C C71 1 0.43061590 0.02418554 0.86118320 1 + C C72 1 0.56939262 0.97581220 0.13881772 1 + C C73 1 0.56939982 0.16297417 0.59352838 1 + C C74 1 0.56940004 0.97586798 0.40645615 1 + C C75 1 0.56940118 0.43056397 0.59354235 1 + C C76 1 0.56942452 0.16303700 0.13884910 1 + C C77 1 0.56943208 0.43059494 0.40645543 1 + C C78 1 0.57027895 0.30011586 0.60023567 1 + C C79 1 0.57030058 0.97007535 0.27022299 1 + C C80 1 0.57034209 0.30016770 0.27024074 1 + C C81 1 0.61357061 0.25700691 0.64338610 1 + C C82 1 0.61357370 0.38638593 0.64338888 1 + C C83 1 0.61358162 0.97019780 0.35660568 1 + C C84 1 0.61358833 0.97020725 0.22722622 1 + C C85 1 0.61361504 0.38642902 0.35661251 1 + C C86 1 0.61361784 0.25705060 0.22724196 1 + C C87 1 0.69982737 0.30010929 0.72975520 1 + C C88 1 0.69983249 0.42966319 0.72975808 1 + C C89 1 0.69984949 0.97007277 0.39976847 1 + C C90 1 0.69987004 0.97010450 0.27024233 1 + C C91 1 0.69988355 0.42972835 0.39976848 1 + C C92 1 0.69989976 0.30018040 0.27025202 1 + C C93 1 0.74295198 0.38639281 0.77276083 1 + C C94 1 0.74298004 0.97020521 0.35661681 1 + C C95 1 0.74299538 0.38644133 0.35662258 1 + C C96 1 0.83696121 0.43058049 0.86114534 1 + C C97 1 0.83699811 0.97582221 0.40642881 1 + C C98 1 0.83702572 0.43060179 0.40647270 1 + C C99 1 0.97007486 0.69984952 0.39976556 1 + C C100 1 0.97007560 0.57029927 0.27022186 1 + C C101 1 0.97010725 0.69987138 0.27024190 1 + C C102 1 0.97019917 0.61358494 0.35660708 1 + C C103 1 0.97020686 0.61359092 0.22722693 1 + C C104 1 0.97020895 0.74298143 0.35661630 1 + C C105 1 0.97581152 0.56938815 0.13882157 1 + C C106 1 0.97582224 0.83699506 0.40642231 1 + C C107 1 0.97586870 0.56940097 0.40645319 1 + O O108 1 0.02086404 0.38630765 0.51273913 1 + O O109 1 0.02086828 0.50816884 0.63457685 1 + O O110 1 0.02091573 0.12650317 0.51276065 1 + O O111 1 0.02092083 0.12646901 0.63463007 1 + O O112 1 0.02093135 0.50818595 0.89444739 1 + O O113 1 0.02093448 0.38628938 0.89444440 1 + O O114 1 0.12643685 0.61370513 0.63456504 1 + O O115 1 0.12645445 0.49186620 0.51273252 1 + O O116 1 0.12646800 0.02092182 0.63463393 1 + O O117 1 0.12649900 0.02092038 0.51276331 1 + O O118 1 0.12651168 0.49183721 0.10557583 1 + O O119 1 0.12651313 0.61373950 0.10559267 1 + O O120 1 0.38626314 0.87346997 0.89439712 1 + O O121 1 0.38627122 0.49185424 0.51274009 1 + O O122 1 0.38629492 0.02093471 0.89445391 1 + O O123 1 0.38629628 0.49185521 0.36541664 1 + O O124 1 0.38629931 0.87355475 0.36543454 1 + O O125 1 0.38630445 0.02087358 0.51273317 1 + O O126 1 0.49181721 0.97905946 0.10555175 1 + O O127 1 0.49183912 0.97913011 0.36542473 1 + O O128 1 0.49183917 0.12651372 0.10557360 1 + O O129 1 0.49185533 0.38626719 0.51273703 1 + O O130 1 0.49185843 0.12645700 0.51271931 1 + O O131 1 0.49186008 0.38629452 0.36541992 1 + O O132 1 0.50813814 0.61372571 0.48726221 1 + O O133 1 0.50813853 0.61369898 0.63457964 1 + O O134 1 0.50813978 0.87354801 0.48727842 1 + O O135 1 0.50815897 0.02087011 0.63457132 1 + O O136 1 0.50816830 0.87348945 0.89442202 1 + O O137 1 0.50819112 0.02093879 0.89445204 1 + O O138 1 0.61369427 0.97913076 0.48726718 1 + O O139 1 0.61369584 0.12644246 0.63455724 1 + O O140 1 0.61369753 0.50813929 0.63457750 1 + O O141 1 0.61370894 0.97906303 0.10554235 1 + O O142 1 0.61372661 0.50814087 0.48726025 1 + O O143 1 0.61374319 0.12652466 0.10559785 1 + O O144 1 0.87347066 0.38626372 0.89439900 1 + O O145 1 0.87350074 0.50817446 0.89443180 1 + O O146 1 0.87350915 0.97908138 0.48724716 1 + O O147 1 0.87352489 0.97907540 0.36536615 1 + O O148 1 0.87355194 0.38630772 0.36544358 1 + O O149 1 0.87355306 0.50815058 0.48729173 1 + O O150 1 0.97905291 0.49181652 0.10555246 1 + O O151 1 0.97906429 0.61370476 0.10554047 1 + O O152 1 0.97907058 0.87352012 0.36535781 1 + O O153 1 0.97908345 0.87350389 0.48724138 1 + O O154 1 0.97912507 0.49184470 0.36542766 1 + O O155 1 0.97913355 0.61369986 0.48727460 1 diff --git a/skills/chem-db-qmof/examples/hkust1_dotsov01/qmof_properties.json b/skills/chem-db-qmof/examples/hkust1_dotsov01/qmof_properties.json new file mode 100644 index 00000000..63736acc --- /dev/null +++ b/skills/chem-db-qmof/examples/hkust1_dotsov01/qmof_properties.json @@ -0,0 +1,33 @@ +{ + "units": { + "volume": "A^3", + "density": "g/cm^3", + "pld": "A", + "lcd": "A", + "EgPBE": "eV", + "EgHLE17": "eV", + "EgHSE06star": "eV", + "EgHSE06": "eV" + }, + "entries": [ + { + "qmof_id": "qmof-8b5bb88", + "formula": "Cu12C72H24O48", + "filename": "DOTSOV01_FSR", + "csdRefcode": "DOTSOV01", + "source": "CSD", + "doi": "https://doi.org/10.1002/anie.200803925", + "synthesized": "True", + "reducedFormula": "CuC6H2O4", + "spacegroup": "Fm-3m", + "spacegroupNumber": "225", + "natoms": 156.0, + "volume": 4638.74, + "density": 0.866108, + "pld": 6.71716, + "lcd": 13.4521, + "EgPBE": 0.886534, + "netPBEMagmom": 0.0 + } + ] +} diff --git a/skills/chem-db-qmof/examples/hkust1_dotsov01/validation.json b/skills/chem-db-qmof/examples/hkust1_dotsov01/validation.json new file mode 100644 index 00000000..a5c4bee4 --- /dev/null +++ b/skills/chem-db-qmof/examples/hkust1_dotsov01/validation.json @@ -0,0 +1,27 @@ +{ + "retrieved": { + "reduced_formula": "CuH2(C3O2)2", + "n_atoms_primitive": 156, + "spacegroup": "Fm-3m", + "a_conventional_A": 26.474, + "volume_primitive_A3": 4638.737, + "volume_conventional_A3": 18554.951, + "density_g_cm3": 0.866108, + "d_CuCu_A": 2.4568, + "EgPBE_eV": 0.886534 + }, + "reference": { + "a_exp_A": 26.343, + "d_CuCu_exp_A": 2.63, + "EgPBE_official_eV": 0.886534, + "density_official_g_cm3": 0.866108, + "volume_official_A3": 4638.737256 + }, + "deviation": { + "a_rel_dev_pct": 0.5, + "volume_rel_dev_vs_exp_pct": 1.5, + "d_CuCu_dev_A": -0.173, + "EgPBE_abs_dev_eV": 0.0, + "density_abs_dev_g_cm3": 0.0 + } +} diff --git a/skills/chem-db-qmof/scripts/query_qmof.py b/skills/chem-db-qmof/scripts/query_qmof.py index a07570f8..0bb9542e 100644 --- a/skills/chem-db-qmof/scripts/query_qmof.py +++ b/skills/chem-db-qmof/scripts/query_qmof.py @@ -1,7 +1,60 @@ +""" +Query the QMOF database (MPContribs project ``qmof``) and download DFT-relaxed CIFs +together with the tabulated properties (PBE band gap, density, pore sizes, source). + +Usage: + python query_qmof.py --identifier DOTSOV01 --max-results 1 --output-dir ./qmof_hkust1 + python query_qmof.py --formula Zn --max-results 5 --output-dir ./qmof_zn + +Requirements: + - Environment: cpu + - Required packages: mpcontribs-client + - MP_API_KEY environment variable +""" + import argparse +import json import os from mpcontribs.client import Client +# Tabulated QMOF columns written to qmof_properties.json, with their MPContribs units. +PROPERTY_UNITS = { + "filename": None, + "csdRefcode": None, + "source": None, + "doi": None, + "synthesized": None, + "reducedFormula": None, + "spacegroup": None, + "spacegroupNumber": None, + "natoms": None, + "volume": "A^3", + "density": "g/cm^3", + "pld": "A", + "lcd": "A", + "EgPBE": "eV", + "EgHLE17": "eV", + "EgHSE06star": "eV", + "EgHSE06": "eV", + "netPBEMagmom": None, +} + + +def _flatten_data(data: dict) -> dict: + """ + Collapse MPContribs quantity entries ({"display", "value", "unit", ...}) to their value. + + Args: + data: The ``data`` block of an MPContribs contribution. + + Returns: + Dictionary mapping each QMOF column name to a plain string or float. + """ + return { + key: (val["value"] if isinstance(val, dict) and "value" in val else val) + for key, val in data.items() + } + def main(): parser = argparse.ArgumentParser( @@ -11,7 +64,10 @@ def main(): "--formula", type=str, help="Chemical formula to search for (e.g., Zn,O,C)." ) parser.add_argument( - "--identifier", type=str, help="Specific CSD Refcode or MOF name." + "--identifier", + type=str, + help="QMOF ID (e.g., qmof-8b5bb88) or a CSD refcode / source-filename substring " + "(e.g., KAXQIL, DOTSOV01). Case-sensitive.", ) parser.add_argument( "--max-results", @@ -42,15 +98,21 @@ def main(): # mpcontribs client allows filtering by elements in the formula query["formula__contains"] = args.formula if args.identifier: - # filter by identifier directly - query["identifier__contains"] = args.identifier + if args.identifier.lower().startswith("qmof-"): + # The MPContribs identifier is the QMOF ID (e.g. qmof-8b5bb88) + query["identifier__contains"] = args.identifier + else: + # CSD refcodes and other source names are stored in data.filename + # (e.g. "DOTSOV01_FSR", "core_KAXQIL_freeONLY") + query["data__filename__contains"] = args.identifier print(f"Querying QMOF with parameters: {query}") try: # Retrieve the matching contributions results = client.contributions.queryContributions( project="qmof", - _fields=["id", "identifier", "formula", "structures"], + _fields=["id", "identifier", "formula", "structures"] + + [f"data.{key}" for key in PROPERTY_UNITS], _limit=args.max_results, **query, ).result() @@ -67,11 +129,18 @@ def main(): f"Found {len(results['data'])} matching MOFs. Downloading CIFs to {args.output_dir}..." ) - # For each found contribution, we download the structure + # For each found contribution, record its tabulated properties and download the structure + records = [] for contrib in results["data"]: - contrib_id = contrib["id"] identifier = contrib["identifier"] formula = contrib["formula"] + records.append( + { + "qmof_id": identifier, + "formula": formula, + **_flatten_data(contrib.get("data", {})), + } + ) print(f"Downloading {identifier} (Formula: {formula})...") try: @@ -98,6 +167,12 @@ def main(): except Exception as e: print(f" Error downloading {identifier}: {e}") + props_path = os.path.join(args.output_dir, "qmof_properties.json") + units = {key: unit for key, unit in PROPERTY_UNITS.items() if unit} + with open(props_path, "w") as f: + json.dump({"units": units, "entries": records}, f, indent=2) + print(f"Saved tabulated properties to {props_path}") + print("Done.") # Save input configs for reproducibility From 555b397bcd1653ad7ccd1ea5ecba1a35f531286e Mon Sep 17 00:00:00 2001 From: bowen-bd Date: Sat, 10 Oct 2026 13:39:04 -0400 Subject: [PATCH 06/12] fix(general-arxiv-search, general-biorxiv-search): correct queries and filters; add examples - arXiv: multi-word queries were OR-ed (all:a b c); every term now gets its own field prefix and terms are AND-ed, authors are quoted phrases and categories are OR-ed. Errors propagate instead of returning []. - bioRxiv: multi-word categories never matched (cell_biology vs "cell biology"); DOI lookup returns the latest version; medRxiv URLs use medrxiv.org. Examples checked against the arXiv, bioRxiv and Crossref records. Removes the stale mlip_search_example.json produced by the old query. Co-Authored-By: Claude Opus 5.5 (1M context) --- skills/general-arxiv-search/SKILL.md | 6 + .../examples/keyword_category_mlip/README.md | 94 ++++++++ .../keyword_category_mlip/input_configs.yaml | 8 + .../keyword_category_mlip/results.json | 215 ++++++++++++++++++ .../examples/mlip_search_example.json | 47 ---- .../examples/title_search_mace/README.md | 56 +++++ .../title_search_mace/input_configs.yaml | 8 + .../examples/title_search_mace/results.json | 26 +++ .../scripts/arxiv_search.py | 151 +++++++----- skills/general-biorxiv-search/SKILL.md | 5 + .../examples/date_range_search/README.md | 114 ++++++++++ .../alphafold_keyword/input_configs.yaml | 10 + .../alphafold_keyword/results.json | 28 +++ .../input_configs.yaml | 10 + .../single_cell_cell_biology/results.json | 80 +++++++ .../examples/doi_lookup/README.md | 108 +++++++++ .../alphafold_multimer/input_configs.yaml | 10 + .../doi_lookup/alphafold_multimer/paper.json | 15 ++ .../doi_lookup/esm2/input_configs.yaml | 10 + .../examples/doi_lookup/esm2/paper.json | 15 ++ .../scripts/biorxiv_search.py | 15 +- 21 files changed, 928 insertions(+), 103 deletions(-) create mode 100644 skills/general-arxiv-search/examples/keyword_category_mlip/README.md create mode 100644 skills/general-arxiv-search/examples/keyword_category_mlip/input_configs.yaml create mode 100644 skills/general-arxiv-search/examples/keyword_category_mlip/results.json delete mode 100644 skills/general-arxiv-search/examples/mlip_search_example.json create mode 100644 skills/general-arxiv-search/examples/title_search_mace/README.md create mode 100644 skills/general-arxiv-search/examples/title_search_mace/input_configs.yaml create mode 100644 skills/general-arxiv-search/examples/title_search_mace/results.json create mode 100644 skills/general-biorxiv-search/examples/date_range_search/README.md create mode 100644 skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/input_configs.yaml create mode 100644 skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/results.json create mode 100644 skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/input_configs.yaml create mode 100644 skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/results.json create mode 100644 skills/general-biorxiv-search/examples/doi_lookup/README.md create mode 100644 skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/input_configs.yaml create mode 100644 skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/paper.json create mode 100644 skills/general-biorxiv-search/examples/doi_lookup/esm2/input_configs.yaml create mode 100644 skills/general-biorxiv-search/examples/doi_lookup/esm2/paper.json diff --git a/skills/general-arxiv-search/SKILL.md b/skills/general-arxiv-search/SKILL.md index f7ffceae..802aaccc 100644 --- a/skills/general-arxiv-search/SKILL.md +++ b/skills/general-arxiv-search/SKILL.md @@ -44,6 +44,11 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/arxiv_ ## Examples +Verified examples, each with its command, raw output and a comparison against the official arXiv record: + +- [Title search: the MACE paper](examples/title_search_mace/README.md) finds arXiv:2206.07697 and checks ID, authors, submission dates, categories, DOI and journal reference against its arXiv abstract page. +- [Keyword + category search: MLIPs in cond-mat.mtrl-sci](examples/keyword_category_mlip/README.md) checks that the top 10 results are all on-topic, spot-checks two of them against their abstract pages, and documents the query-construction fix. + ### Retrieval of Recent MACE Related Papers ```bash ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/arxiv_search.py "MACE force field" --max_results 3 --output mace_results.json @@ -55,6 +60,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/arxiv_ ``` ## Constraints +- **Query Semantics**: Every word of the keyword and `--title` strings must match (AND); wrap a phrase in double quotes inside the string to match it verbatim (e.g. `'"machine learning" potential'`). Each `--authors` name is matched as a phrase, and several `--categories` are OR-ed. - **Rate Limiting**: The ArXiv API requires a minimum of 3 seconds between requests. This script includes a small delay, but frequent calls should be avoided. - **Environment**: Requires the `cpu` environment. - **Dependencies**: Uses `feedparser` and `urllib`. diff --git a/skills/general-arxiv-search/examples/keyword_category_mlip/README.md b/skills/general-arxiv-search/examples/keyword_category_mlip/README.md new file mode 100644 index 00000000..482e52ac --- /dev/null +++ b/skills/general-arxiv-search/examples/keyword_category_mlip/README.md @@ -0,0 +1,94 @@ +# Keyword + Category Search: Machine Learning Interatomic Potentials in cond-mat.mtrl-sci + +## Goal + +Search for "machine learning interatomic potential" within Materials Science +(`cond-mat.mtrl-sci`), and confirm that every top result is on-topic, which the +query-construction fix below makes possible. + +## Command + +Run from the repository root: + +```bash +venv/run cpu python skills/general-arxiv-search/scripts/arxiv_search.py \ + "machine learning interatomic potential" --categories mtrl-sci --max_results 10 \ + --output skills/general-arxiv-search/examples/keyword_category_mlip/results.json --verbose +``` + +The script sends this `search_query`, which `--verbose` logs: + +``` +(all:machine AND all:learning AND all:interatomic AND all:potential) AND (cat:cond-mat.mtrl-sci) +``` + +The API echoes the query it ran in the feed ``. For this query the echo is unchanged, +and 950 records match. + +## Output Files + +- `results.json` holds the 10 records, ranked by relevance. +- `input_configs.yaml` holds the arguments. + +## Results (run 2026-10-10) + +| # | arXiv ID | First submitted | Primary | Title | +|:---|:---|:---|:---|:---| +| 1 | 2602.04861v2 | 2026-02-04 | cs.LG | From Evaluation to Design: Using Potential Energy Surface Smoothness Metrics to Guide Machine Learning Interatomic Potential Architectures | +| 2 | 2509.02927v2 | 2025-09-03 | cs.LG | P-DRUM: Post-hoc Descriptor-based Residual Uncertainty Modeling for Machine Learning Potentials | +| 3 | 2506.08818v1 | 2025-06-10 | cond-mat.mtrl-sci | Crystal Nucleation in Eutectic Al-Si Alloys by Machine-Learned Molecular Dynamics | +| 4 | 2402.11383v1 | 2024-02-17 | cond-mat.mtrl-sci | Machine Learning a Universal Harmonic Interatomic Potential for Predicting Phonons in Crystalline Solids | +| 5 | 2203.01117v1 | 2022-03-02 | cond-mat.mtrl-sci | Machine-learning interatomic potential for molecular dynamics simulation of ferroelectric KNbO3 perovskite | +| 6 | 2602.08849v1 | 2026-02-09 | stat.ML | Cutting Through the Noise: On-the-fly Outlier Detection for Robust Training of Machine Learning Interatomic Potentials | +| 7 | 2209.12322v1 | 2022-09-21 | cond-mat.mtrl-sci | Classical and Machine Learning Interatomic Potentials for BCC Vanadium | +| 8 | 2312.11708v1 | 2023-12-18 | cond-mat.mtrl-sci | Accelerating the prediction of inorganic surfaces with machine learning interatomic potentials | +| 9 | 2504.05565v1 | 2025-04-07 | cond-mat.mtrl-sci | Cross-functional transferability in universal machine learning interatomic potentials | +| 10 | 2512.15952v3 | 2025-12-17 | cond-mat.mtrl-sci | Machine-Learned Interatomic Potential for Predictive Simulation of MoS2 Epitaxy | + +The ranking is by relevance over a growing corpus, so a later re-run can return different +IDs. The checks below are therefore criteria, not a fixed ID list. + +## Comparison Against Ground Truth + +| Check | Result | +|:---|:---| +| All 10 records list `cond-mat.mtrl-sci` among their categories | 10/10; three are cross-lists with another primary (cs.LG, stat.ML) | +| All 10 titles + abstracts contain machine, learn(ed/ing), interatomic, potential | 10/10 | +| All 10 are about machine-learned interatomic potentials | 10/10 by title | + +Two records were spot-checked against their arXiv abstract pages: + +| Field | Script: 2203.01117v1 | [arxiv.org/abs/2203.01117](https://arxiv.org/abs/2203.01117) | Script: 2209.12322v1 | [arxiv.org/abs/2209.12322](https://arxiv.org/abs/2209.12322) | +|:---|:---|:---|:---|:---| +| Authors | Hao-Cheng Thong, XiaoYang Wang, Han Wang, Linfeng Zhang, Ke Wang, Ben Xu | Same 6, same order | Rui Wang, Xiaoxiao Ma, Linfeng Zhang, Han Wang, David J. Srolovitz, Tongqi Wen, Zhaoxuan Wu | Same 7, same order | +| First submission | 2022-03-02 | 2022/03/02 | 2022-09-21 | 2022/09/21 | +| Categories | cond-mat.mtrl-sci | Materials Science (cond-mat.mtrl-sci) | cond-mat.mtrl-sci | Materials Science (cond-mat.mtrl-sci) | +| DOI | 10.1103/PhysRevB.107.014101 | [10.1103/PhysRevB.107.014101](https://doi.org/10.1103/PhysRevB.107.014101) | 10.1103/PhysRevMaterials.6.113603 | [10.1103/PhysRevMaterials.6.113603](https://doi.org/10.1103/PhysRevMaterials.6.113603) | + +Both DOIs resolve via doi.org to link.aps.org, which refuses scripted clients (HTTP 403). Crossref +lists them as *Phys. Rev. B* 107, 014101 (2023) and *Phys. Rev. Materials* 6, 113603 (2022). + +## Query-Construction Fix + +Per the arXiv API manual, a field prefix applies only to the term right after it. Bare spaces +separate terms, and phrases must be double-quoted (`%22`). The previous script sent the whole +keyword string after a single prefix, `all:machine learning interatomic potential`. +The API's feed title shows how it read that string: + +``` +arXiv Query: search_query=all:machine OR all:learning OR all:interatomic OR all:potential +``` + +That OR query matches 806,447 records, any paper containing "machine", "learning" or +"potential". Its top hits were "Changing Data Sources in the Age of Machine Learning for Official +Statistics" (2306.04338) and "DOME: Recommendations for supervised machine learning validation in +biology" (2006.16189), the same records stored in the removed `mlip_search_example.json`. +The fixed script prefixes every term, ANDs the words and keeps "double-quoted phrases" intact, +for 950 records here. The same fix applies to `--title`, `--authors` (each name sent as a +phrase, e.g. `au:"Boris Kozinsky"`) and to several `--categories` (`cat:A OR cat:B`). + +## References + +- arXiv API User's Manual, Appendix 5.1 "Details of Query Construction": https://info.arxiv.org/help/api/user-manual.html +- Thong, H.-C. et al., "Machine learning interatomic potential for molecular dynamics simulation of the ferroelectric KNbO3 perovskite", *Phys. Rev. B* 107, 014101 (2023). [DOI](https://doi.org/10.1103/PhysRevB.107.014101) +- Wang, R. et al., "Classical and machine learning interatomic potentials for BCC vanadium", *Phys. Rev. Materials* 6, 113603 (2022). [DOI](https://doi.org/10.1103/PhysRevMaterials.6.113603) diff --git a/skills/general-arxiv-search/examples/keyword_category_mlip/input_configs.yaml b/skills/general-arxiv-search/examples/keyword_category_mlip/input_configs.yaml new file mode 100644 index 00000000..f820226d --- /dev/null +++ b/skills/general-arxiv-search/examples/keyword_category_mlip/input_configs.yaml @@ -0,0 +1,8 @@ +query: machine learning interatomic potential +authors: null +categories: +- mtrl-sci +title: null +max_results: 10 +output: skills/general-arxiv-search/examples/keyword_category_mlip/results.json +verbose: true diff --git a/skills/general-arxiv-search/examples/keyword_category_mlip/results.json b/skills/general-arxiv-search/examples/keyword_category_mlip/results.json new file mode 100644 index 00000000..f5722fe7 --- /dev/null +++ b/skills/general-arxiv-search/examples/keyword_category_mlip/results.json @@ -0,0 +1,215 @@ +[ + { + "id": "2602.04861v2", + "url": "http://arxiv.org/abs/2602.04861v2", + "title": "From Evaluation to Design: Using Potential Energy Surface Smoothness Metrics to Guide Machine Learning Interatomic Potential Architectures", + "authors": [ + "Ryan Liu", + "Eric Qu", + "Tobias Kreiman", + "Samuel M. Blau", + "Aditi S. Krishnapriyan" + ], + "summary": "Machine Learning Interatomic Potentials (MLIPs) sometimes fail to reproduce the physical smoothness of the quantum potential energy surface (PES), leading to erroneous behavior in downstream simulations that standard energy and force regression evaluations can miss. Existing evaluations, such as microcanonical molecular dynamics (MD), are computationally expensive and primarily probe near-equilibrium states. To improve evaluation metrics for MLIPs, we introduce the Bond Smoothness Characterization Test (BSCT). This efficient benchmark probes the PES via controlled bond deformations and detects non-smoothness, including discontinuities, artificial minima, and spurious forces, both near and far from equilibrium. We show that BSCT correlates strongly with MD stability while requiring a fraction of the cost of MD. To demonstrate how BSCT can guide iterative model design, we utilize an unconstrained Transformer backbone as a testbed, illustrating how refinements such as a new differentiable $k$-nearest neighbors algorithm and temperature-controlled attention reduce artifacts identified by our metric. By optimizing model design systematically based on BSCT, the resulting MLIP simultaneously achieves a low conventional E/F regression error, stable MD simulations, and robust atomistic property predictions. Our results establish BSCT as both a validation metric for practitioners to assess MLIP utility and as an \"in-the-loop\" model design proxy that alerts MLIP developers to physical challenges that cannot be efficiently evaluated by current MLIP benchmarks. The BSCT dataset and evaluation are available on https://github.com/ryanliu30/bsct.git", + "published": "2026-02-04T18:50:10Z", + "updated": "2026-05-29T18:09:08Z", + "categories": [ + "cs.LG", + "cond-mat.mtrl-sci", + "cs.AI", + "physics.chem-ph" + ], + "doi": null, + "journal_ref": null, + "primary_category": "cs.LG" + }, + { + "id": "2509.02927v2", + "url": "http://arxiv.org/abs/2509.02927v2", + "title": "P-DRUM: Post-hoc Descriptor-based Residual Uncertainty Modeling for Machine Learning Potentials", + "authors": [ + "Shih-Peng Huang", + "Nontawat Charoenphakdee", + "Yuta Tsuboi", + "Yong-Bin Zhuang", + "Wenwen Li" + ], + "summary": "Ensemble method is considered the gold standard for uncertainty quantification (UQ) in machine learning interatomic potentials (MLIPs). However, their high computational cost can limit its practicality. Alternative techniques, such as Monte Carlo dropout and deep kernel learning, have been proposed to improve computational efficiency; however, some of these methods cannot be applied to already trained models and may affect the prediction accuracy. In this paper, we propose a simple and efficient post-hoc framework for UQ that leverages the descriptor of a trained graph neural network potential to estimate residual errors. We refer to this method as post-hoc descriptor-based residual uncertainty modeling (P-DRUM). P-DRUM models the discrepancy between MLIP predictions and ground truth values, allowing these residuals to act as proxies for prediction uncertainty. We explore multiple variants of P-DRUM and benchmark them against established UQ methods, evaluating both their effectiveness and limitations.", + "published": "2025-09-03T01:36:27Z", + "updated": "2025-11-12T03:08:37Z", + "categories": [ + "cs.LG", + "cond-mat.mtrl-sci" + ], + "doi": null, + "journal_ref": null, + "primary_category": "cs.LG" + }, + { + "id": "2506.08818v1", + "url": "http://arxiv.org/abs/2506.08818v1", + "title": "Crystal Nucleation in Eutectic Al-Si Alloys by Machine-Learned Molecular Dynamics", + "authors": [ + "Quentin Bizot", + "Noel Jakse" + ], + "summary": "Solidification control is crucial in manufacturing technologies, as it determines the microstructure and, consequently, the performance of the final product. Investigating the mechanisms occurring during the early stages of nucleation remains experimentally challenging as it initiates on nanometer length and sub-picoseconds time scales. Large scale molecular dynamics simulations using machine learning interatomic potential with quantum accuracy appears the dedicated approach to complex, atomic level, multidimensional mechanisms with local symmetry breaking. A potential trained on a high-dimensional neural network on density functional theory-based ab initio molecular dynamics (AIMD) trajectories for liquid and undercooled states for Al-Si binary alloys enables us to study the nucleation mechanisms occurring at the early stages from the liquid phase near the eutectic composition. Our results indicate that nucleation starts with Al in hypoeutectic conditions and with Si in hypereutectic conditions. Whereas Al nuclei grow in a globular shape, Si ones grow with polygonal faceting, whose underlying mechanisms are further discussed.", + "published": "2025-06-10T14:09:53Z", + "updated": "2025-06-10T14:09:53Z", + "categories": [ + "cond-mat.mtrl-sci" + ], + "doi": "10.1103/jwmw-3lds", + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + }, + { + "id": "2402.11383v1", + "url": "http://arxiv.org/abs/2402.11383v1", + "title": "Machine Learning a Universal Harmonic Interatomic Potential for Predicting Phonons in Crystalline Solids", + "authors": [ + "Huiju Lee", + "Yi Xia" + ], + "summary": "Phonons, as quantized vibrational modes in crystalline materials, play a crucial role in determining a wide range of physical properties, such as thermal and electrical conductivity, making their study a cornerstone in materials science. In this study, we present a simple yet effective strategy for deep learning harmonic phonons in crystalline solids by leveraging existing phonon databases and state-of-the-art machine learning techniques. The key of our method lies in transforming existing phonon datasets, primarily represented in interatomic force constants, into a force-displacement representation suitable for training machine learning universal interatomic potentials. By applying our approach to one of the largest phonon databases publicly available, we demonstrate that the resultant machine learning universal harmonic interatomic potential not only accurately predicts full harmonic phonon spectra but also calculates key thermodynamic properties with remarkable precision. Furthermore, the restriction to a harmonic potential energy surface in our model provides a way of assessing uncertainty in machine learning predictions of vibrational properties, essential for guiding further improvements and applications in materials science.", + "published": "2024-02-17T21:21:21Z", + "updated": "2024-02-17T21:21:21Z", + "categories": [ + "cond-mat.mtrl-sci" + ], + "doi": null, + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + }, + { + "id": "2203.01117v1", + "url": "http://arxiv.org/abs/2203.01117v1", + "title": "Machine-learning interatomic potential for molecular dynamics simulation of ferroelectric KNbO3 perovskite", + "authors": [ + "Hao-Cheng Thong", + "XiaoYang Wang", + "Han Wang", + "Linfeng Zhang", + "Ke Wang", + "Ben Xu" + ], + "summary": "Ferroelectric perovskites have been ubiquitously applied in piezoelectric devices for decades, among which, eco-friendly lead-free (K,Na)NbO3-based materials have been recently demonstrated to be an excellent candidate for sustainable development. Molecular dynamics is a versatile theoretical calculation approach for the investigation of the dynamical properties of ferroelectric perovskites. However, molecular dynamics simulation of ferroelectric perovskites has been limited to simple systems, since the conventional construction of interatomic potential is rather difficult and inefficient. In the present study, we construct a machine-learning interatomic potential of KNbO3 (as a representative system of (K,Na)NbO3) by using a deep neural network model. Including first-principles calculation data into the training dataset ensures the quantum-mechanics accuracy of the interatomic potential. The molecular dynamics based on machine-learning interatomic potential shows good agreement with the first-principles calculations, which can accurately predict multiple fundamental properties, e.g., atomic force, energy, elastic properties, and phonon dispersion. In addition, the interatomic potential exhibits satisfactory performance in the simulation of domain wall and temperature-dependent phase transition. The construction of interatomic potential based on machine learning could potentially be transferred to other ferroelectric perovskites and consequently benefits the theoretical study of ferroelectrics.", + "published": "2022-03-02T14:15:44Z", + "updated": "2022-03-02T14:15:44Z", + "categories": [ + "cond-mat.mtrl-sci" + ], + "doi": "10.1103/PhysRevB.107.014101", + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + }, + { + "id": "2602.08849v1", + "url": "http://arxiv.org/abs/2602.08849v1", + "title": "Cutting Through the Noise: On-the-fly Outlier Detection for Robust Training of Machine Learning Interatomic Potentials", + "authors": [ + "Terry C. W. Lam", + "Niamh O'Neill", + "Christoph Schran", + "Lars L. Schaaf" + ], + "summary": "The accuracy of machine learning interatomic potentials suffers from reference data that contains numerical noise. Often originating from unconverged or inconsistent electronic-structure calculations, this noise is challenging to identify. Existing mitigation strategies such as manual filtering or iterative refinement of outliers, require either substantial expert effort or multiple expensive retraining cycles, making them difficult to scale to large datasets. Here, we introduce an on-the-fly outlier detection scheme that automatically down-weights noisy samples, without requiring additional reference calculations. By tracking the loss distribution via an exponential moving average, this unsupervised method identifies outliers throughout a single training run. We show that this approach prevents overfitting and matches the performance of iterative refinement baselines with significantly reduced overhead. The method's effectiveness is demonstrated by recovering accurate physical observables for liquid water from unconverged reference data, including diffusion coefficients. Furthermore, we validate its scalability by training a foundation model for organic chemistry on the SPICE dataset, where it reduces energy errors by a factor of three. This framework provides a simple, automated solution for training robust models on imperfect datasets across dataset sizes.", + "published": "2026-02-09T16:16:22Z", + "updated": "2026-02-09T16:16:22Z", + "categories": [ + "stat.ML", + "cond-mat.mtrl-sci", + "cs.LG", + "physics.chem-ph" + ], + "doi": null, + "journal_ref": null, + "primary_category": "stat.ML" + }, + { + "id": "2209.12322v1", + "url": "http://arxiv.org/abs/2209.12322v1", + "title": "Classical and Machine Learning Interatomic Potentials for BCC Vanadium", + "authors": [ + "Rui Wang", + "Xiaoxiao Ma", + "Linfeng Zhang", + "Han Wang", + "David J. Srolovitz", + "Tongqi Wen", + "Zhaoxuan Wu" + ], + "summary": "BCC transition metals (TMs) exhibit complex temperature and strain-rate dependent plastic deformation behaviour controlled by individual crystal lattice defects. Classical empirical and semi-empirical interatomic potentials have limited capability in modelling defect properties such as the screw dislocation core structures and Peierls barriers in the BCC structure. Machine learning (ML) potentials, trained on DFT-based datasets, have shown some successes in reproducing dislocation core properties. However, in group VB TMs, the most widely-used DFT functionals produce erroneous shear moduli C44 which are undesirably transferred to machine-learning interatomic potentials, leaving current ML approaches unsuitable for this important class of metals and alloys. Here, we develop two interatomic potentials for BCC vanadium (V) based on (i) an extension of the partial electron density and screening parameter in the classical semi-empirical modified embedded-atom method (XMEAM-V) and (ii) a recent hybrid descriptor in the ML Deep Potential framework (DP-HYB-V). We describe distinct features in these two disparate approaches, including their dataset generation, training procedure, weakness and strength in modelling lattice and defect properties in BCC V. Both XMEAM-V and DP-HYB-V reproduce a broad range of defect properties relevant to plastic deformation and fracture. In particular, XMEAM-V reproduces nearly all mechanical and thermodynamic properties at DFT accuracies and with C44 near experimental value. XMEAM-V also naturally exhibits the anomalous slip at 77 K widely observed in group VB and VIB TMs and outperforms all existing, publically available interatomic potentials for V. The XMEAM thus provides a practical path to developing accurate and efficient interatomic potentials for nonmagnetic BCC TMs and possibly multi-principal element TM alloys.", + "published": "2022-09-21T11:04:01Z", + "updated": "2022-09-21T11:04:01Z", + "categories": [ + "cond-mat.mtrl-sci" + ], + "doi": "10.1103/PhysRevMaterials.6.113603", + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + }, + { + "id": "2312.11708v1", + "url": "http://arxiv.org/abs/2312.11708v1", + "title": "Accelerating the prediction of inorganic surfaces with machine learning interatomic potentials", + "authors": [ + "Kyle Noordhoek", + "Christopher J. Bartel" + ], + "summary": "The surface properties of solid-state materials often dictate their functionality, especially for applications where nanoscale effects become important. The relevant surface(s) and their properties are determined, in large part, by the materials synthesis or operating conditions. These conditions dictate thermodynamic driving forces and kinetic rates responsible for yielding the observed surface structure and morphology. Computational surface science methods have long been applied to connect thermochemical conditions to surface phase stability, particularly in the heterogeneous catalysis and thin film growth communities. This review provides a brief introduction to first-principles approaches to compute surface phase diagrams before introducing emerging data-driven approaches. The remainder of the review focuses on the application of machine learning, predominantly in the form of learned interatomic potentials, to study complex surfaces. As machine learning algorithms and large datasets on which to train them become more commonplace in materials science, computational methods are poised to become even more predictive and powerful for modeling the complexities of inorganic surfaces at the nanoscale.", + "published": "2023-12-18T21:08:13Z", + "updated": "2023-12-18T21:08:13Z", + "categories": [ + "cond-mat.mtrl-sci", + "cs.LG" + ], + "doi": "10.1039/D3NR06468A", + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + }, + { + "id": "2504.05565v1", + "url": "http://arxiv.org/abs/2504.05565v1", + "title": "Cross-functional transferability in universal machine learning interatomic potentials", + "authors": [ + "Xu Huang", + "Bowen Deng", + "Peichen Zhong", + "Aaron D. Kaplan", + "Kristin A. Persson", + "Gerbrand Ceder" + ], + "summary": "The rapid development of universal machine learning interatomic potentials (uMLIPs) has demonstrated the possibility for generalizable learning of the universal potential energy surface. In principle, the accuracy of uMLIPs can be further improved by bridging the model from lower-fidelity datasets to high-fidelity ones. In this work, we analyze the challenge of this transfer learning problem within the CHGNet framework. We show that significant energy scale shifts and poor correlations between GGA and r$^2$SCAN pose challenges to cross-functional data transferability in uMLIPs. By benchmarking different transfer learning approaches on the MP-r$^2$SCAN dataset of 0.24 million structures, we demonstrate the importance of elemental energy referencing in the transfer learning of uMLIPs. By comparing the scaling law with and without the pre-training on a low-fidelity dataset, we show that significant data efficiency can still be achieved through transfer learning, even with a target dataset of sub-million structures. We highlight the importance of proper transfer learning and multi-fidelity learning in creating next-generation uMLIPs on high-fidelity data.", + "published": "2025-04-07T23:45:40Z", + "updated": "2025-04-07T23:45:40Z", + "categories": [ + "cond-mat.mtrl-sci", + "cs.LG" + ], + "doi": null, + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + }, + { + "id": "2512.15952v3", + "url": "http://arxiv.org/abs/2512.15952v3", + "title": "Machine-Learned Interatomic Potential for Predictive Simulation of MoS2 Epitaxy", + "authors": [ + "Emir Bilgili", + "Nicholas Taormina", + "Richard Hennig", + "Simon R. Phillpot", + "Youping Chen" + ], + "summary": "A machine-learned interatomic potential (MLIP) for multilayer MoS2 was developed using the ultra-fast force field (UF3) framework. The UF3 MLIP reproduces key properties in strong agreement with DFT including lattice constants, interlayer binding energies, and phase-stability. Furthermore, the potential reasonably captures the phonon spectra and the highly anisotropic elastic tensor across monolayer (1H) and bulk (2H, 3R) MoS2 phases. Critically, defect and edge formation energies are captured with high fidelity, exhibiting a strong correlation with DFT (R^2 = 0.91) across ten defective monolayers and reproducing the relative difference between the free energies of zigzag and armchair edges within 5% of DFT. Non-equilibrium molecular dynamics simulations reveal layered homoepitaxial growth consistent with experimental observations, demonstrating the formation of van der Waals gaps between successive epilayers and triangular domains bounded by zigzag edges. The robust UF3 MLIP, which is only ~2X slower than the fastest empirical potentials, enables large-scale atomistic simulations of MoS2 epitaxial growth.", + "published": "2025-12-17T20:26:05Z", + "updated": "2026-04-17T20:55:05Z", + "categories": [ + "cond-mat.mtrl-sci" + ], + "doi": "10.1103/71xp-pjb6", + "journal_ref": null, + "primary_category": "cond-mat.mtrl-sci" + } +] diff --git a/skills/general-arxiv-search/examples/mlip_search_example.json b/skills/general-arxiv-search/examples/mlip_search_example.json deleted file mode 100644 index f6c8d873..00000000 --- a/skills/general-arxiv-search/examples/mlip_search_example.json +++ /dev/null @@ -1,47 +0,0 @@ -[ - { - "id": "2306.04338v1", - "url": "http://arxiv.org/abs/2306.04338v1", - "title": "Changing Data Sources in the Age of Machine Learning for Official Statistics", - "authors": [ - "Cedric De Boom", - "Michael Reusens" - ], - "summary": "Data science has become increasingly essential for the production of official statistics, as it enables the automated collection, processing, and analysis of large amounts of data. With such data science practices in place, it enables more timely, more insightful and more flexible reporting. However, the quality and integrity of data-science-driven statistics rely on the accuracy and reliability of the data sources and the machine learning techniques that support them. In particular, changes in data sources are inevitable to occur and pose significant risks that are crucial to address in the context of machine learning for official statistics. This paper gives an overview of the main risks, liabilities, and uncertainties associated with changing data sources in the context of machine learning for official statistics. We provide a checklist of the most prevalent origins and causes of changing data sources; not only on a technical level but also regarding ownership, ethics, regulation, and public perception. Next, we highlight the repercussions of changing data sources on statistical reporting. These include technical effects such as concept drift, bias, availability, validity, accuracy and completeness, but also the neutrality and potential discontinuation of the statistical offering. We offer a few important precautionary measures, such as enhancing robustness in both data sourcing and statistical techniques, and thorough monitoring. In doing so, machine learning-based official statistics can maintain integrity, reliability, consistency, and relevance in policy-making, decision-making, and public discourse.", - "published": "2023-06-07T11:08:12Z", - "updated": "2023-06-07T11:08:12Z", - "categories": [ - "stat.ML", - "cs.LG" - ], - "doi": null, - "journal_ref": "UNECE Machine Learning for Official Statistics Workshop 2023", - "primary_category": "stat.ML" - }, - { - "id": "2006.16189v4", - "url": "http://arxiv.org/abs/2006.16189v4", - "title": "DOME: Recommendations for supervised machine learning validation in biology", - "authors": [ - "Ian Walsh", - "Dmytro Fishman", - "Dario Garcia-Gasulla", - "Tiina Titma", - "Gianluca Pollastri", - "The ELIXIR Machine Learning focus group", - "Jen Harrow", - "Fotis E. Psomopoulos", - "Silvio C. E. Tosatto" - ], - "summary": "Modern biology frequently relies on machine learning to provide predictions and improve decision processes. There have been recent calls for more scrutiny on machine learning performance and possible limitations. Here we present a set of community-wide recommendations aiming to help establish standards of supervised machine learning validation in biology. Adopting a structured methods description for machine learning based on data, optimization, model, evaluation (DOME) will aim to help both reviewers and readers to better understand and assess the performance and limitations of a method or outcome. The recommendations are formulated as questions to anyone wishing to pursue implementation of a machine learning algorithm. Answers to these questions can be easily included in the supplementary material of published papers.", - "published": "2020-06-25T12:01:39Z", - "updated": "2021-01-07T07:29:24Z", - "categories": [ - "q-bio.OT", - "cs.LG" - ], - "doi": null, - "journal_ref": null, - "primary_category": "q-bio.OT" - } -] diff --git a/skills/general-arxiv-search/examples/title_search_mace/README.md b/skills/general-arxiv-search/examples/title_search_mace/README.md new file mode 100644 index 00000000..893d2d05 --- /dev/null +++ b/skills/general-arxiv-search/examples/title_search_mace/README.md @@ -0,0 +1,56 @@ +# Title Search: the MACE Paper + +## Goal + +Find a known paper by words from its title, then check the returned metadata against the +paper's official arXiv record: Batatia et al., "MACE: Higher Order Equivariant Message Passing +Neural Networks for Fast and Accurate Force Fields", +[arXiv:2206.07697](https://arxiv.org/abs/2206.07697). + +## Command + +Run from the repository root: + +```bash +venv/run cpu python skills/general-arxiv-search/scripts/arxiv_search.py \ + --title "MACE higher order equivariant message passing" --max_results 5 \ + --output skills/general-arxiv-search/examples/title_search_mace/results.json --verbose +``` + +The script sends this `search_query`, which `--verbose` logs: + +``` +(ti:MACE AND ti:higher AND ti:order AND ti:equivariant AND ti:message AND ti:passing) +``` + +Every word carries its own `ti:` prefix, so all six must occur in the title. + +## Output Files + +- `results.json` holds the single matching record. +- `input_configs.yaml` holds the arguments. + +## Results vs. Ground Truth + +Ground truth is the arXiv abstract page, https://arxiv.org/abs/2206.07697 (citation metadata and submission history). + +| Field | Script output | arXiv abstract page | Match | +|:---|:---|:---|:---| +| Results | 1 record (of `--max_results 5`) | The paper above; no other arXiv title contains all six words | Yes | +| ID | 2206.07697v2 | arXiv:2206.07697, latest version v2 | Yes | +| Title | MACE: Higher Order Equivariant Message Passing Neural Networks for Fast and Accurate Force Fields | Same | Yes | +| Authors | Ilyes Batatia, Dávid Péter Kovács, Gregor N. C. Simm, Christoph Ortner, Gábor Csányi | Batatia, Ilyes; Kovács, Dávid Péter; Simm, Gregor N. C.; Ortner, Christoph; Csányi, Gábor | Yes, same order | +| First submission (`published`) | 2022-06-15T17:46:05Z | [v1] Wed, 15 Jun 2022 17:46:05 UTC | Yes | +| Last revision (`updated`) | 2023-01-26T10:07:20Z | [v2] Thu, 26 Jan 2023 10:07:20 UTC | Yes | +| Primary category | stat.ML | Machine Learning (stat.ML), listed first | Yes | +| Categories | stat.ML, cond-mat.mtrl-sci, cs.LG, physics.chem-ph | stat.ML; cond-mat.mtrl-sci; cs.LG; physics.chem-ph | Yes | +| `doi` | `null` | No publisher DOI on the record (only the arXiv-issued DOI [10.48550/arXiv.2206.07697](https://doi.org/10.48550/arXiv.2206.07697)) | Yes | +| `journal_ref` | `null` | No journal reference; the venue is given only in Comments: "Advances in Neural Information Processing Systems, 2022" | Yes | + +`doi` and `journal_ref` carry only what the authors entered on arXiv. For MACE, the NeurIPS 2022 +venue sits in the free-text Comments field, which the script does not export. + +## References + +- Batatia, I., Kovács, D. P., Simm, G. N. C., Ortner, C. & Csányi, G., "MACE: Higher Order Equivariant Message Passing Neural Networks for Fast and Accurate Force Fields", *Advances in Neural Information Processing Systems* 35 (NeurIPS 2022). [arXiv:2206.07697](https://arxiv.org/abs/2206.07697) +- arXiv API User's Manual, query construction: https://info.arxiv.org/help/api/user-manual.html diff --git a/skills/general-arxiv-search/examples/title_search_mace/input_configs.yaml b/skills/general-arxiv-search/examples/title_search_mace/input_configs.yaml new file mode 100644 index 00000000..40f1c082 --- /dev/null +++ b/skills/general-arxiv-search/examples/title_search_mace/input_configs.yaml @@ -0,0 +1,8 @@ +query: null +authors: null +categories: null +title: +- MACE higher order equivariant message passing +max_results: 5 +output: skills/general-arxiv-search/examples/title_search_mace/results.json +verbose: true diff --git a/skills/general-arxiv-search/examples/title_search_mace/results.json b/skills/general-arxiv-search/examples/title_search_mace/results.json new file mode 100644 index 00000000..fdb0dc27 --- /dev/null +++ b/skills/general-arxiv-search/examples/title_search_mace/results.json @@ -0,0 +1,26 @@ +[ + { + "id": "2206.07697v2", + "url": "http://arxiv.org/abs/2206.07697v2", + "title": "MACE: Higher Order Equivariant Message Passing Neural Networks for Fast and Accurate Force Fields", + "authors": [ + "Ilyes Batatia", + "Dávid Péter Kovács", + "Gregor N. C. Simm", + "Christoph Ortner", + "Gábor Csányi" + ], + "summary": "Creating fast and accurate force fields is a long-standing challenge in computational chemistry and materials science. Recently, several equivariant message passing neural networks (MPNNs) have been shown to outperform models built using other approaches in terms of accuracy. However, most MPNNs suffer from high computational cost and poor scalability. We propose that these limitations arise because MPNNs only pass two-body messages leading to a direct relationship between the number of layers and the expressivity of the network. In this work, we introduce MACE, a new equivariant MPNN model that uses higher body order messages. In particular, we show that using four-body messages reduces the required number of message passing iterations to just two, resulting in a fast and highly parallelizable model, reaching or exceeding state-of-the-art accuracy on the rMD17, 3BPA, and AcAc benchmark tasks. We also demonstrate that using higher order messages leads to an improved steepness of the learning curves.", + "published": "2022-06-15T17:46:05Z", + "updated": "2023-01-26T10:07:20Z", + "categories": [ + "stat.ML", + "cond-mat.mtrl-sci", + "cs.LG", + "physics.chem-ph" + ], + "doi": null, + "journal_ref": null, + "primary_category": "stat.ML" + } +] diff --git a/skills/general-arxiv-search/scripts/arxiv_search.py b/skills/general-arxiv-search/scripts/arxiv_search.py index 87fd7ace..f0ad9067 100644 --- a/skills/general-arxiv-search/scripts/arxiv_search.py +++ b/skills/general-arxiv-search/scripts/arxiv_search.py @@ -14,6 +14,7 @@ import sys import argparse import json +import re import urllib.parse import urllib.request import feedparser @@ -24,7 +25,7 @@ class ArXivSearcher: """Interface for ArXiv research paper search.""" - BASE_URL = "http://export.arxiv.org/api/query?" + BASE_URL = "https://export.arxiv.org/api/query?" # Common categories for Materials Science and Physics CATEGORIES = { @@ -48,6 +49,21 @@ def _log(self, message: str): if self.verbose: print(f"[INFO] {message}", file=sys.stderr) + @staticmethod + def _split_terms(texts: List[str]) -> List[str]: + """Split free text into search terms, keeping "double-quoted phrases" intact.""" + terms = [] + for text in texts: + for phrase, word in re.findall(r'"([^"]+)"|(\S+)', text): + terms.append(phrase or word) + return terms + + @staticmethod + def _field_term(field: str, term: str) -> str: + """Prefix one term with its field, quoting it if it contains spaces.""" + term = " ".join(term.split()) + return f'{field}:"{term}"' if " " in term else f"{field}:{term}" + def build_query( self, keywords: Optional[List[str]] = None, @@ -55,21 +71,43 @@ def build_query( categories: Optional[List[str]] = None, title_keywords: Optional[List[str]] = None, ) -> str: - """Construct a search query string for the ArXiv API.""" + """ + Construct a search query string for the ArXiv API. + + The API applies a field prefix only to the term that directly follows it + and treats a bare space as a separator, so every term gets its own prefix + and multi-word phrases are double-quoted. + + Args: + keywords: Free-text strings searched in all fields; every word must + match (AND), and "double-quoted phrases" must match verbatim. + authors: Author names; every author must match (AND), and each name + is matched as one phrase. + categories: Category shortcuts or full names; any may match (OR). + title_keywords: Free-text strings searched in titles, with the same + rules as ``keywords``. + + Returns: + The search_query string, e.g. ``(all:graphene AND all:strain) AND (cat:cond-mat.mtrl-sci)``. + """ query_parts = [] if keywords: - query_parts.append(f"all:{' AND '.join(keywords)}") + terms = self._split_terms(keywords) + query_parts.append(" AND ".join(self._field_term("all", t) for t in terms)) if authors: - query_parts.append(f"au:{' AND '.join(authors)}") + query_parts.append(" AND ".join(self._field_term("au", a) for a in authors)) if categories: cat_list = [self.CATEGORIES.get(c, c) for c in categories] - query_parts.append(f"cat:{' OR '.join(cat_list)}") + query_parts.append( + " OR ".join(self._field_term("cat", c) for c in cat_list) + ) if title_keywords: - query_parts.append(f"ti:{' AND '.join(title_keywords)}") + terms = self._split_terms(title_keywords) + query_parts.append(" AND ".join(self._field_term("ti", t) for t in terms)) return " AND ".join([f"({p})" for p in query_parts]) @@ -103,48 +141,60 @@ def search( url = self.BASE_URL + urllib.parse.urlencode(params) self._log(f"Requesting: {url}") - try: - # Respectful rate limiting - time.sleep(0.5) - - response = urllib.request.urlopen(url).read() - feed = feedparser.parse(response) - - papers = [] - for entry in feed.entries: - paper = { - "id": entry.id.split("/abs/")[-1], - "url": entry.id, - "title": entry.title.replace("\n", " ").strip(), - "authors": [author.name for author in entry.authors], - "summary": entry.summary.replace("\n", " ").strip(), - "published": entry.published, - "updated": entry.updated, - "categories": [tag.term for tag in entry.tags], - "doi": entry.get("arxiv_doi", None), - "journal_ref": entry.get("arxiv_journal_ref", None), - "primary_category": entry.arxiv_primary_category["term"] - if hasattr(entry, "arxiv_primary_category") - else None, - } - papers.append(paper) - - self._log(f"Found {len(papers)} papers") - return papers - - except Exception as e: - self._log(f"Error during ArXiv search: {e}") - return [] + # Respectful rate limiting + time.sleep(0.5) + + # HTTP errors (e.g. 429 rate limiting) propagate instead of silently + # producing an empty result list. + response = urllib.request.urlopen(url, timeout=60).read() + feed = feedparser.parse(response) + + papers = [] + for entry in feed.entries: + paper = { + "id": entry.id.split("/abs/")[-1], + "url": entry.id, + "title": " ".join(entry.title.split()), + "authors": [author.name for author in entry.authors], + "summary": entry.summary.replace("\n", " ").strip(), + "published": entry.published, + "updated": entry.updated, + "categories": [tag.term for tag in entry.tags], + "doi": entry.get("arxiv_doi", None), + "journal_ref": entry.get("arxiv_journal_ref", None), + "primary_category": entry.arxiv_primary_category["term"] + if hasattr(entry, "arxiv_primary_category") + else None, + } + papers.append(paper) + + self._log(f"Found {len(papers)} papers") + return papers def main(): parser = argparse.ArgumentParser(description="Search ArXiv for research papers.") - parser.add_argument("query", nargs="?", help="General keywords search") - parser.add_argument("--authors", nargs="+", help="Search by authors") parser.add_argument( - "--categories", nargs="+", help="Filter by categories (e.g. mtrl-sci, ml)" + "query", + nargs="?", + help="Keywords searched in all fields; all words must match, " + '"double-quoted phrases" must match verbatim', + ) + parser.add_argument( + "--authors", + nargs="+", + help='Author names, each matched as one phrase (e.g. "Gabor Csanyi"); all must match', + ) + parser.add_argument( + "--categories", + nargs="+", + help="Filter by categories (e.g. mtrl-sci, ml); any may match", + ) + parser.add_argument( + "--title", + nargs="+", + help="Keywords searched in titles, with the same rules as the query", ) - parser.add_argument("--title", nargs="+", help="Search in title") parser.add_argument( "--max_results", type=int, default=10, help="Maximum number of results" ) @@ -155,16 +205,13 @@ def main(): searcher = ArXivSearcher(verbose=args.verbose) - # If a direct query string is provided, use it, otherwise build from parts - if args.query and not (args.authors or args.categories or args.title): - search_query = f"all:{args.query}" - else: - search_query = searcher.build_query( - keywords=[args.query] if args.query else None, - authors=args.authors, - categories=args.categories, - title_keywords=args.title, - ) + search_query = searcher.build_query( + keywords=[args.query] if args.query else None, + authors=args.authors, + categories=args.categories, + title_keywords=args.title, + ) + searcher._log(f"search_query: {search_query}") if not search_query: print("Error: No search criteria provided.", file=sys.stderr) diff --git a/skills/general-biorxiv-search/SKILL.md b/skills/general-biorxiv-search/SKILL.md index f6fb1036..14327cec 100644 --- a/skills/general-biorxiv-search/SKILL.md +++ b/skills/general-biorxiv-search/SKILL.md @@ -63,6 +63,11 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/biorxi ## Examples +Verified examples, each with its command, raw output and a field-by-field comparison against the official record: + +- [DOI lookup: AlphaFold-Multimer and ESM-2](examples/doi_lookup/README.md) checks title, authors, version, posting date, category and the published-journal DOI against the bioRxiv API version list, Crossref and Europe PMC. +- [Date-range search, 2021-10-01 to 2021-10-07](examples/date_range_search/README.md) runs a keyword search and a keyword + multi-word category search over a fixed past window, with an independent recount of the matches and spot-checks against Crossref. + ### Recent Neuroscience Papers ```bash ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/biorxiv_search.py --category neuroscience --days 7 --max_results 5 diff --git a/skills/general-biorxiv-search/examples/date_range_search/README.md b/skills/general-biorxiv-search/examples/date_range_search/README.md new file mode 100644 index 00000000..62abaf5b --- /dev/null +++ b/skills/general-biorxiv-search/examples/date_range_search/README.md @@ -0,0 +1,114 @@ +# Date-Range Search: bioRxiv, 2021-10-01 to 2021-10-07 + +## Goal + +Search a fixed past window of bioRxiv postings, so the output is reproducible, with two filters: + +1. **Keyword only**: preprints mentioning "AlphaFold" in title or abstract. The window + contains the first posting of AlphaFold-Multimer (2021-10-04), a known record that + must appear in the results. +2. **Keyword + multi-word category**: preprints mentioning "single-cell" in + **cell biology**. This exercises the category filter for a name containing a space. + +## Commands + +Run from the repository root: + +```bash +venv/run cpu python skills/general-biorxiv-search/scripts/biorxiv_search.py "AlphaFold" \ + --start 2021-10-01 --end 2021-10-07 --max_results 10 \ + --output skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/results.json + +venv/run cpu python skills/general-biorxiv-search/scripts/biorxiv_search.py "single-cell" \ + --category cell-bio --start 2021-10-01 --end 2021-10-07 --max_results 10 \ + --output skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/results.json +``` + +Keyword filtering happens client-side, so each run pages through the whole window: 1,027 +records, 35 requests of 30, about 2 minutes. Every posted version is its own record, so a +revision posted inside the window appears with its version number and that version's date. + +## Output Files + +- `alphafold_keyword/results.json`, `alphafold_keyword/input_configs.yaml` +- `single_cell_cell_biology/results.json`, `single_cell_cell_biology/input_configs.yaml` + +## Results + +### Run 1: "AlphaFold", all categories (2 records) + +| DOI | Version, date | Category | Published | Title | +|:---|:---|:---|:---|:---| +| 10.1101/2021.09.15.460468 | v2, 2021-10-02 | bioinformatics | 10.1038/s41467-022-28865-w | Improved prediction of protein-protein interactions using AlphaFold2 and extended multiple-sequence alignments | +| 10.1101/2021.10.04.463034 | v1, 2021-10-04 | bioinformatics | NA | Protein complex prediction with AlphaFold-Multimer | + +### Run 2: "single-cell", category `cell-bio` (6 records) + +| DOI | Version, date | Published | Title | +|:---|:---|:---|:---| +| 10.1101/2021.10.01.462521 | v1, 2021-10-01 | 10.1182/bloodadvances.2022006969 | Single-cell transcriptomics reveals the identity and regulators of human mast cell progenitors | +| 10.1101/2021.09.28.462199 | v2, 2021-10-03 | 10.1186/s12915-022-01372-6 | Cell-ACDC: a user-friendly toolset embedding state-of-the-art neural networks for segmentation, tracking and cell cycle annotations of live-cell imaging data | +| 10.1101/2021.05.14.443718 | v2, 2021-10-04 | 10.1093/nar/gkab1068 | Chromatin loading of MCM hexamers is associated with di-/tri-methylation of histone H4K20 toward S phase entry | +| 10.1101/2021.10.05.463175 | v1, 2021-10-05 | 10.7554/eLife.79519 | DetecDiv, a deep-learning platform for automated cell division tracking and replicative lifespan analysis | +| 10.1101/2021.10.06.463357 | v1, 2021-10-07 | 10.1186/s12915-022-01244-z | Hyaluronidase-1-mediated glycocalyx impairment underlies endothelial abnormalities in polypoidal choroidal vasculopathy | +| 10.1101/2021.10.07.463508 | v1, 2021-10-07 | 10.1242/jcs.259392 | Fluorescence exclusion: a rapid, accurate and powerful method for measuring yeast cell volume | + +The keyword is a case-insensitive substring of title + abstract, so records match through their abstracts too +(e.g. Cell-ACDC, whose abstract mentions "single-cell segmentation"). + +## Comparison Against Ground Truth + +### Completeness: independent recount + +The whole window was downloaded again outside the script: all 1,027 records for Run 1, and for +Run 2 the 47 records returned by the API's own server-side category filter, +[`?category=cell_biology`](https://api.biorxiv.org/details/biorxiv/2021-10-01/2021-10-07/0/json?category=cell_biology). +The same substring test was then applied. + +| Run | Independent recount | Script | Match | +|:---|:---|:---|:---| +| "AlphaFold" | 2 records | 2 records | Same DOIs, versions and order | +| "single-cell" + cell biology | 6 of the 47 cell-biology records | 6 records | Same DOIs, versions and order | + +### Known record: AlphaFold-Multimer + +Run 1 returns 10.1101/2021.10.04.463034 as **v1, 2021-10-04, bioinformatics**. That matches the +[Crossref record](https://api.crossref.org/works/10.1101/2021.10.04.463034), posted 2021-10-04 +with group "Bioinformatics", and the [DOI lookup example](../doi_lookup/README.md). + +### Spot-check 1: Bryant et al. (Run 1) + +| Field | Script record | Ground truth ([Crossref preprint](https://api.crossref.org/works/10.1101/2021.09.15.460468), [Crossref article](https://api.crossref.org/works/10.1038/s41467-022-28865-w)) | Match | +|:---|:---|:---|:---| +| Authors | Bryant, P.; Pozzati, G.; Elofsson, A. | P. Bryant, G. Pozzati, A. Elofsson | Yes | +| Category | bioinformatics | group-title "Bioinformatics" | Yes | +| Version, date | v2, 2021-10-02 | First posted 2021-09-15 (Crossref); bioRxiv API versions: v1 2021-09-15, v2 2021-10-02, v3 2021-12-15 | Yes (v2 is the version posted in the window) | +| Published | 10.1038/s41467-022-28865-w | `is-preprint-of` 10.1038/s41467-022-28865-w = *Nature Communications* **13**, 1265, issued 2022-03-10 | Yes | +| Title | ...using AlphaFold2 and extended multiple-sequence alignments | Current title "Improved prediction of protein-protein interactions using AlphaFold2" | Expected difference: v3 shortened the title; v1 and v2 carry the long title | + +### Spot-check 2: DetecDiv (Run 2) + +| Field | Script record | Ground truth ([Crossref preprint](https://api.crossref.org/works/10.1101/2021.10.05.463175), [Crossref article](https://api.crossref.org/works/10.7554/eLife.79519)) | Match | +|:---|:---|:---|:---| +| Authors | Aspert, T.; Hentsch, D.; Charvin, G. | Théo Aspert, Didier Hentsch, Gilles Charvin | Yes | +| Category | cell biology | group-title "Cell Biology" | Yes | +| Version, date | v1, 2021-10-05 | Posted 2021-10-05 (Crossref) | Yes | +| Published | 10.7554/eLife.79519 | `is-preprint-of` 10.7554/eLife.79519 = *eLife* **11**, e79519, issued 2022-08-17 | Yes | +| Title | DetecDiv, a deep-learning platform ... replicative lifespan analysis | Current title "DetecDiv, a generalist deep-learning platform ... survival analysis" | Expected difference: the title changed in v4 (2022-04-15) | + +A date-range record is a snapshot of the version posted in the window. For a paper's current +metadata, use `--doi`, which returns the latest version. + +## Category Filter Fix + +The API reports categories with spaces ("cell biology"), while the script's shortcuts, like the +API's query parameter, use underscores (`cell-bio` -> `cell_biology`). The client-side check compared +the two strings literally, so every multi-word category matched nothing. Before the fix, Run 2 +returned **0 records**. It now normalizes underscores to spaces and returns the 6 records above. + +## References + +- Evans, R. et al., "Protein complex prediction with AlphaFold-Multimer", *bioRxiv*, 2021. [DOI](https://doi.org/10.1101/2021.10.04.463034) +- Bryant, P., Pozzati, G. & Elofsson, A., "Improved prediction of protein-protein interactions using AlphaFold2", *Nature Communications* 13, 1265, 2022. [DOI](https://doi.org/10.1038/s41467-022-28865-w) +- Aspert, T., Hentsch, D. & Charvin, G., "DetecDiv, a generalist deep-learning platform for automated cell division tracking and survival analysis", *eLife* 11, e79519, 2022. [DOI](https://doi.org/10.7554/eLife.79519) +- bioRxiv API documentation: https://api.biorxiv.org/ diff --git a/skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/input_configs.yaml b/skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/input_configs.yaml new file mode 100644 index 00000000..dc44e070 --- /dev/null +++ b/skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/input_configs.yaml @@ -0,0 +1,10 @@ +query: AlphaFold +server: biorxiv +category: null +days: 30 +start: '2021-10-01' +end: '2021-10-07' +doi: null +max_results: 10 +output: skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/results.json +verbose: false diff --git a/skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/results.json b/skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/results.json new file mode 100644 index 00000000..73c9ff09 --- /dev/null +++ b/skills/general-biorxiv-search/examples/date_range_search/alphafold_keyword/results.json @@ -0,0 +1,28 @@ +[ + { + "doi": "10.1101/2021.09.15.460468", + "url": "https://www.biorxiv.org/content/10.1101/2021.09.15.460468v2", + "title": "Improved prediction of protein-protein interactions using AlphaFold2 and extended multiple-sequence alignments", + "authors": "Bryant, P.; Pozzati, G.; Elofsson, A.", + "abstract": "Predicting the structure of interacting protein chains is a fundamental step towards understanding protein function. Unfortunately, no computational method can produce accurate structures of protein complexes. AlphaFold2, has shown unprecedented levels of accuracy in modelling single chain protein structures. Here, we apply AlphaFold2 for the prediction of heterodimeric protein complexes. We find that the AlphaFold2 protocol together with optimized multiple sequence alignments, generate models with acceptable quality (DockQ[≥]0.23) for 63% of the dimers. From the predicted interfaces we create a simple function to predict the DockQ score which distinguishes acceptable from incorrect models as well as interacting from non-interacting proteins with state-of-art accuracy. We find that, using the predicted DockQ scores, we can identify 51% of all interacting pairs at 1% FPR. The protocol can be found at: https://gitlab.com/ElofssonLab/FoldDock.", + "date": "2021-10-02", + "category": "bioinformatics", + "server": "bioRxiv", + "version": "2", + "license": "cc_by", + "published": "10.1038/s41467-022-28865-w" + }, + { + "doi": "10.1101/2021.10.04.463034", + "url": "https://www.biorxiv.org/content/10.1101/2021.10.04.463034v1", + "title": "Protein complex prediction with AlphaFold-Multimer", + "authors": "Evans, R.; O'Neill, M.; Pritzel, A.; Antropova, N.; Senior, A. W.; Green, T.; Zidek, A.; Bates, R.; Blackwell, S.; Yim, J.; Ronneberger, O.; Bodenstein, S.; Zielinski, M.; Bridgland, A.; Potapenko, A.; Cowie, A.; Tunyasuvunakool, K.; Jain, R.; Clancy, E.; Kohli, P.; Jumper, J.; Hassabis, D.", + "abstract": "While the vast majority of well-structured single protein chains can now be predicted to high accuracy due to the recent AlphaFold [1] model, the prediction of multi-chain protein complexes remains a challenge in many cases. In this work, we demonstrate that an AlphaFold model trained specifically for multimeric inputs of known stoichiometry, which we call AlphaFold-Multimer, significantly increases accuracy of predicted multimeric interfaces over input-adapted single-chain AlphaFold while maintaining high intra-chain accuracy. On a benchmark dataset of 17 heterodimer proteins without templates (introduced in [2]) we achieve at least medium accuracy (DockQ [3] [≥] 0.49) on 13 targets and high accuracy (DockQ [≥] 0.8) on 7 targets, compared to 9 targets of at least medium accuracy and 4 of high accuracy for the previous state of the art system (an AlphaFold-based system from [2]). We also predict structures for a large dataset of 4,446 recent protein complexes, from which we score all non-redundant interfaces with low template identity. For heteromeric interfaces we successfully predict the interface (DockQ [≥] 0.23) in 70% of cases, and produce high accuracy predictions (DockQ [≥] 0.8) in 26% of cases, an improvement of +27 and +14 percentage points over the flexible linker modification of AlphaFold [4] respectively. For homomeric inter-faces we successfully predict the interface in 72% of cases, and produce high accuracy predictions in 36% of cases, an improvement of +8 and +7 percentage points respectively.", + "date": "2021-10-04", + "category": "bioinformatics", + "server": "bioRxiv", + "version": "1", + "license": "cc_no", + "published": "NA" + } +] diff --git a/skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/input_configs.yaml b/skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/input_configs.yaml new file mode 100644 index 00000000..1f459634 --- /dev/null +++ b/skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/input_configs.yaml @@ -0,0 +1,10 @@ +query: single-cell +server: biorxiv +category: cell-bio +days: 30 +start: '2021-10-01' +end: '2021-10-07' +doi: null +max_results: 10 +output: skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/results.json +verbose: false diff --git a/skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/results.json b/skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/results.json new file mode 100644 index 00000000..bc0dcb77 --- /dev/null +++ b/skills/general-biorxiv-search/examples/date_range_search/single_cell_cell_biology/results.json @@ -0,0 +1,80 @@ +[ + { + "doi": "10.1101/2021.10.01.462521", + "url": "https://www.biorxiv.org/content/10.1101/2021.10.01.462521v1", + "title": "Single-cell transcriptomics reveals the identity and regulators of human mast cell progenitors", + "authors": "Wu, C.; Boey, D.; Bril, O.; Grootens, J.; Vijayabaskar, M. S.; Sorini, C.; Ekoff, M.; Wilson, N. K.; Ungerstedt, J. S.; Nilsson, G.; Dahlin, J. S.", + "abstract": "Mast cell accumulation is a hallmark of a number of diseases including allergic asthma and systemic mastocytosis. IgE-mediated crosslinking of the Fc{varepsilon}RI receptors causes mast cell activation and contributes to disease pathogenesis. The mast cell lineage is one of the least studied among the hematopoietic cell lineages and there are still controversies about the identity of the mast cell progenitor, i.e., whether Fc{varepsilon}RI expression appears during the hematopoietic progenitor stage or in maturing mast cells. Here, we used single-cell transcriptomics to reveal a temporal association between the appearance of Fc{varepsilon}RI and the mast cell gene signature in CD34+ hematopoietic progenitors. In agreement with these data, the Fc{varepsilon}RI+ hematopoietic progenitors formed morphologically, phenotypically and functionally mature mast cells in long-term culture assays. Single-cell transcriptomics analysis further revealed the expression patterns of prospective cytokine receptors regulating mast cell progenitor development. Culture assays showed that IL-3 and IL-5 promoted disparate effects on progenitor cell proliferation and survival, respectively, whereas IL-33 caused robust Fc{varepsilon}RI downregulation. Taken together, we have demonstrated that Fc{varepsilon}RI appears during the hematopoietic progenitor stage of mast cell differentiation and that external stimuli may regulate the Fc{varepsilon}RI expression. Thus, the results resolve the controversy regarding the appearance of Fc{varepsilon}RI during mast cell development.\n\nOne-sentence summarySingle-cell analysis of human hematopoiesis uncovers the stage at which Fc{varepsilon}RI appears during mast cell differentiation and reveals disparate effects of IL-3, IL-5 and IL-33 on mast cell progenitor proliferation, survival, and suppression of Fc{varepsilon}RI expression.", + "date": "2021-10-01", + "category": "cell biology", + "server": "bioRxiv", + "version": "1", + "license": "cc_no", + "published": "10.1182/bloodadvances.2022006969" + }, + { + "doi": "10.1101/2021.09.28.462199", + "url": "https://www.biorxiv.org/content/10.1101/2021.09.28.462199v2", + "title": "Cell-ACDC: a user-friendly toolset embedding state-of-the-art neural networks for segmentation, tracking and cell cycle annotations of live-cell imaging data", + "authors": "Padovani, F.; Mairhoermann, B.; Falter-Braun, P.; Lengefeld, J.; Schmoller, K. M.", + "abstract": "Live-cell imaging is a powerful tool to study dynamic cellular processes on the level of single cells with quantitative detail. Microfluidics enables parallel high-throughput imaging, creating a downstream bottleneck at the stage of data analysis. Recent progress on deep learning image analysis dramatically improved cell segmentation and tracking. Nevertheless, manual data validation and correction is typically still required and broadly used tools spanning the complete range of live-cell imaging analysis, from cell segmentation to pedigree analysis and signal quantification, are still needed. Here, we present Cell-ACDC, a user-friendly graphical user-interface (GUI)-based framework written in Python, for segmentation, tracking and cell cycle annotation. We included two state-of-the-art and high-accuracy deep learning models for single-cell segmentation of yeast and mammalian cells implemented in the most used deep learning frameworks TensorFlow and PyTorch. Additionally, we developed and implemented a cell tracking method and embedded it into an intuitive, semi-automated workflow for label-free cell cycle annotation of single cells. The open-source and modularized nature of Cell-ACDC will enable simple and fast integration of new deep learning-based and traditional methods for cell segmentation or downstream image analysis.\n\nSource codehttps://github.com/SchmollerLab/Cell_ACDC", + "date": "2021-10-03", + "category": "cell biology", + "server": "bioRxiv", + "version": "2", + "license": "cc_by_nc", + "published": "10.1186/s12915-022-01372-6" + }, + { + "doi": "10.1101/2021.05.14.443718", + "url": "https://www.biorxiv.org/content/10.1101/2021.05.14.443718v2", + "title": "Chromatin loading of MCM hexamers is associated with di-/tri-methylation of histone H4K20 toward S phase entry", + "authors": "Hayashi-Takanaka, Y.; Hayashi, Y.; Hirano, Y.; Miyawaki-Kuwakado, A.; Ohkawa, Y.; Obuse, C.; Kimura, H.; Haraguchi, T.; Hiraoka, Y.", + "abstract": "DNA replication is a key step in initiating cell proliferation. Loading hexameric complexes of minichromosome maintenance (MCM) helicase onto DNA replication origins during the G1 phase is essential for initiating DNA replication. Here, we examined MCM hexamer states during the cell cycle in human hTERT-RPE1 cells using multicolor immunofluorescence-based, single-cell plot analysis, and biochemical size fractionation. Experiments involving cell-cycle arrest at the G1 phase and release from the arrest revealed that a double MCM hexamer was formed via a single hexamer during G1 progression. A single MCM hexamer was recruited to chromatin in the early G1 phase. Another single hexamer was recruited to form a double hexamer in the late G1 phase. We further examined relationship between the MCM hexamer states and the methylation levels at lysine 20 of histone H4 (H4K20) and found that the double MCM hexamer state was correlated with di/trimethyl-H4K20 (H4K20me2/3). Inhibiting the conversion from monomethyl-H4K20 (H4K20me1) to H4K20me2/3 retained the cells in the single MCM hexamer state. Non-proliferative cells, including confluent cells or Cdk4/6 inhibitor-treated cells, also remained halted in the single MCM hexamer state. We propose that the single MCM hexamer state is a halting step in the determination of cell cycle progression.", + "date": "2021-10-04", + "category": "cell biology", + "server": "bioRxiv", + "version": "2", + "license": "cc_by_nc_nd", + "published": "10.1093/nar/gkab1068" + }, + { + "doi": "10.1101/2021.10.05.463175", + "url": "https://www.biorxiv.org/content/10.1101/2021.10.05.463175v1", + "title": "DetecDiv, a deep-learning platform for automated cell division tracking and replicative lifespan analysis", + "authors": "Aspert, T.; Hentsch, D.; Charvin, G.", + "abstract": "Automating the extraction of meaningful temporal information from sequences of microscopy images represents a major challenge to characterize dynamical biological processes. So far, strong limitations in the ability to quantitatively analyze single-cell trajectories have prevented large-scale investigations to assess the dynamics of entry into replicative senescence in yeast. Here, we have developed DetecDiv, a microfluidic-based image acquisition platform combined with deep learning-based software for high-throughput single-cell division tracking. We show that DetecDiv can automatically reconstruct cellular replicative lifespans with high accuracy and performs similarly with various imaging platforms and geometries of microfluidic traps. In addition, this methodology provides comprehensive temporal cellular metrics using time-series classification and image semantic segmentation. Last, we show that this method can be further applied to automatically quantify the dynamics of cellular adaptation and the real-time cell survival upon exposure to environmental stress. Hence, this methodology provides an all-in-one toolbox for high-throughput phenotyping for cell cycle, stress response, and replicative lifespan assays.", + "date": "2021-10-05", + "category": "cell biology", + "server": "bioRxiv", + "version": "1", + "license": "cc_by_nc_nd", + "published": "10.7554/eLife.79519" + }, + { + "doi": "10.1101/2021.10.06.463357", + "url": "https://www.biorxiv.org/content/10.1101/2021.10.06.463357v1", + "title": "Hyaluronidase-1-mediated glycocalyx impairment underlies endothelial abnormalities in polypoidal choroidal vasculopathy", + "authors": "Wu, K.-X.; Yeo, N. J. Y.; Ng, C.-Y.; Chioh, F. W. J.; Fan, Q.; Tian, X.; Yang, B.; Narayanan, G.; Tay, H. M.; Hou, H. W.; Dunn, R. N.; Su, X.; Cheung, C. M. G.; Cheung, C.", + "abstract": "BackgroundPolypoidal choroidal vasculopathy (PCV), a subtype of age-related macular degeneration (AMD), is characterized by polyp-like dilatation of blood vessels and turbulent blood flow in the choroid of the eye. Gold standard anti-vascular endothelial growth factor (anti-VEGF) therapy often fails to regress polypoidal lesions in patients. Current animal models have also been hampered by their inability to recapitulate such vascular lesions. These underscore the need to identify VEGF-independent pathways in PCV pathogenesis.\n\nResultsWe cultivated blood outgrowth endothelial cells (BOECs) from PCV patients and normal controls to serve as our experimental disease models. When BOECs were exposed to heterogeneous flow, single-cell transcriptomic analysis revealed that PCV BOECs preferentially adopted migratory-angiogenic cell state, while normal BOECs undertook proinflammatory cell state. PCV BOECs also had a repressed protective response to flow stress by demonstrating lower mitochondrial functions. We uncovered that elevated hyaluronidase-1 in PCV BOECs led to increased degradation of hyaluronan, a major component of glycocalyx that interfaces between flow stress and vascular endothelium. Notably, knockdown of hyaluronidase-1 in PCV BOEC improved mechanosensitivity through activation of Kruppel-like factor 2, a flow-responsive transcription factor, which in turn modulated PCV BOEC migration. Barrier permeability due to glycocalyx impairment in PCV BOECs was also reversed by hyaluronidase-1 knockdown. Correspondingly, hyaluronidase-1 was detected in PCV patient vitreous humor and plasma samples.\n\nConclusionsHyaluronidase-1 inhibition could be a potential therapeutic modality in preserving glycocalyx integrity and endothelial stability in ocular diseases with vascular origin.", + "date": "2021-10-07", + "category": "cell biology", + "server": "bioRxiv", + "version": "1", + "license": "cc_by_nc_nd", + "published": "10.1186/s12915-022-01244-z" + }, + { + "doi": "10.1101/2021.10.07.463508", + "url": "https://www.biorxiv.org/content/10.1101/2021.10.07.463508v1", + "title": "Fluorescence exclusion: a rapid, accurate and powerful method for measuring yeast cell volume", + "authors": "Garcia-Ruano, D.; Jain, A.; Ryan, J. C.; Balasubramaniam, V. R.; Venkova, L.; Piel, M.; Coudreuse, D.", + "abstract": "Cells exist in an astonishing range of volumes across and within species. However, our understanding of cell size control remains limited, due in large part to the challenges associated with accurate determination of cell volume. Much of our comprehension of size regulation derives from models such as budding and fission yeast, but even for these morphologically stereotypical cells, assessment of cell volume has relied on proxies and extrapolations from two-dimensional measurements. Recently, the fluorescence exclusion method (FXm) was developed to evaluate the size of mammalian cells, but whether it could be applied to smaller cells remained unknown. Using specifically designed microfluidic chips and an improved data analysis pipeline, we show here that FXm reliably detects subtle difference in the volume of fission yeast cells, even for those with altered shapes. Moreover, it allows for the monitoring of dynamic volume changes at the single-cell level with high time resolution. Collectively, our work reveals how coupling FXm with yeast genetics will bring new insights into the complex biology of cell growth.\n\nSUMMARY STATEMENTFluorescence exclusion provides a unique method to accurately measure the volume of yeast cells at both the population and single-cell levels.", + "date": "2021-10-07", + "category": "cell biology", + "server": "bioRxiv", + "version": "1", + "license": "cc_no", + "published": "10.1242/jcs.259392" + } +] diff --git a/skills/general-biorxiv-search/examples/doi_lookup/README.md b/skills/general-biorxiv-search/examples/doi_lookup/README.md new file mode 100644 index 00000000..e1d9e9ec --- /dev/null +++ b/skills/general-biorxiv-search/examples/doi_lookup/README.md @@ -0,0 +1,108 @@ +# DOI Lookup: AlphaFold-Multimer and ESM-2 + +## Goal + +Retrieve a bioRxiv preprint's metadata from its DOI, then check each field (title, +authors, posting date, version, category, published-journal DOI) against the official record. +Two well-known preprints cover both outcomes of the `published` field: + +| Preprint | DOI | Versions | Journal version | +|:---|:---|:---|:---| +| Evans et al., "Protein complex prediction with AlphaFold-Multimer" | [10.1101/2021.10.04.463034](https://doi.org/10.1101/2021.10.04.463034) | 2 | none | +| Lin et al., "Evolutionary-scale prediction of atomic level protein structure with a language model" (ESM-2) | [10.1101/2022.07.20.500902](https://doi.org/10.1101/2022.07.20.500902) | 3, title and author list changed after v1 | *Science* 2023 | + +## Commands + +Run from the repository root: + +```bash +venv/run cpu python skills/general-biorxiv-search/scripts/biorxiv_search.py \ + --doi 10.1101/2021.10.04.463034 \ + --output skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/paper.json + +venv/run cpu python skills/general-biorxiv-search/scripts/biorxiv_search.py \ + --doi 10.1101/2022.07.20.500902 \ + --output skills/general-biorxiv-search/examples/doi_lookup/esm2/paper.json +``` + +Each run makes one API request and writes a one-element JSON list, plus the +`input_configs.yaml` holding the arguments. + +## Output Files + +- `alphafold_multimer/paper.json`, `alphafold_multimer/input_configs.yaml` +- `esm2/paper.json`, `esm2/input_configs.yaml` + +## Ground Truth Sources + +The bioRxiv website (`www.biorxiv.org`) answers scripted requests with HTTP 429 (bot +protection), so its landing pages could not be fetched. The record was taken from three sources instead: + +1. **bioRxiv API, all versions**: the official bioRxiv record, one entry per posted version + ([AlphaFold-Multimer](https://api.biorxiv.org/details/biorxiv/10.1101/2021.10.04.463034/na/json), + [ESM-2](https://api.biorxiv.org/details/biorxiv/10.1101/2022.07.20.500902/na/json)), and its + published-article endpoint + ([AlphaFold-Multimer](https://api.biorxiv.org/pubs/biorxiv/10.1101/2021.10.04.463034/na/json), + [ESM-2](https://api.biorxiv.org/pubs/biorxiv/10.1101/2022.07.20.500902/na/json)). +2. **Crossref**: the DOI registration bioRxiv deposits, which is independent of the API + ([AlphaFold-Multimer](https://api.crossref.org/works/10.1101/2021.10.04.463034), + [ESM-2 preprint](https://api.crossref.org/works/10.1101/2022.07.20.500902), + [ESM-2 Science article](https://api.crossref.org/works/10.1126/science.ade2574)). +3. **Europe PMC** preprint record PPR403752 for AlphaFold-Multimer + ([REST record](https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=EXT_ID:PPR403752%20AND%20SRC:PPR&format=json&resultType=core)). + +Every DOI above resolves through doi.org (HTTP 302). The bioRxiv and *Science* landing pages it +redirects to refuse scripted clients (HTTP 429 and 403), so the Crossref records stand in for them. + +## Results vs. Ground Truth + +### AlphaFold-Multimer + +| Field | Script output | Ground truth | Match | +|:---|:---|:---|:---| +| Title | Protein complex prediction with AlphaFold-Multimer | Same title (Crossref, Europe PMC) | Yes | +| Authors | 22, from "Evans, R.; O'Neill, M.; Pritzel, A." to "Jumper, J.; Hassabis, D." | 22, from Richard Evans to Demis Hassabis, same order (Crossref, Europe PMC) | Yes | +| Version, date | v2, 2022-03-10 | v1 posted 2021-10-04 (Crossref `posted`, Europe PMC first publication); v2 posted 2022-03-10 (bioRxiv API version list) | Yes, latest version | +| Category | bioinformatics | Crossref `group-title` "Bioinformatics" | Yes | +| Published | `NA` | No `is-preprint-of` relation in Crossref; bioRxiv pubs endpoint: "no articles found for published version"; Europe PMC lists no journal version | Yes | +| URL | https://www.biorxiv.org/content/10.1101/2021.10.04.463034v2 | DOI resolves via doi.org to the bioRxiv lookup page | Yes | + +### ESM-2 + +| Field | Script output | Ground truth | Match | +|:---|:---|:---|:---| +| Title | Evolutionary-scale prediction of atomic level protein structure with a language model | Same title (Crossref preprint record) | Yes | +| Authors | 15, from "Lin, Z.; Akin, H.; Rao, R." to "Candido, S.; Rives, A." | 15, from Zeming Lin to Alexander Rives, same order (Crossref) | Yes | +| Version, date | v3, 2022-12-21 | v1 2022-07-21 (Crossref `posted`), v2 2022-10-31, v3 2022-12-21 (bioRxiv API version list) | Yes, latest version | +| Category | synthetic biology | Crossref `group-title` "Synthetic Biology" | Yes | +| Published | `10.1126/science.ade2574` | Crossref `is-preprint-of` 10.1126/science.ade2574 = Lin et al., *Science* **379**(6637), 1123-1130, published 2023-03-17; bioRxiv pubs endpoint: journal "Science", published 2023-03-17 | Yes | + +The `date` field is the posting date of the version returned. The first posting date is +the v1 date in the API's version list (also Crossref's `posted` date). + +## Latest-Version Selection + +The API returns one entry per version, oldest first. Before this example was added, the +script returned the first entry. For ESM-2 that meant the superseded v1 record: version 1, dated +2022-07-21, under the original title *"Language models of protein sequences at the scale of +evolution enable accurate structure prediction"*, with 11 of the 15 authors. The script now returns +the highest version, the one the DOI resolves to. + +| ESM-2 version | Date | Title | Authors | +|:---|:---|:---|:---| +| v1 | 2022-07-21 | Language models of protein sequences at the scale of evolution enable accurate structure prediction | 11 | +| v2 | 2022-10-31 | Evolutionary-scale prediction of atomic level protein structure with a language model | 15 | +| v3 | 2022-12-21 | Evolutionary-scale prediction of atomic level protein structure with a language model | 15 | + +## Notes + +- The API writes author names as "Surname, Initials" in ASCII ("Zidek, A."), whereas Crossref keeps + the full names and diacritics ("Augustin Žídek"). +- The `published` field is filled in only once bioRxiv links the preprint to a journal article, + so re-running the lookup later can change it from `NA` to a DOI. + +## References + +- Evans, R. et al., "Protein complex prediction with AlphaFold-Multimer", *bioRxiv*, 2021. [DOI](https://doi.org/10.1101/2021.10.04.463034) +- Lin, Z. et al., "Evolutionary-scale prediction of atomic-level protein structure with a language model", *Science* 379, 1123-1130, 2023. [DOI](https://doi.org/10.1126/science.ade2574) +- bioRxiv API documentation: https://api.biorxiv.org/ diff --git a/skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/input_configs.yaml b/skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/input_configs.yaml new file mode 100644 index 00000000..ab89f0f0 --- /dev/null +++ b/skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/input_configs.yaml @@ -0,0 +1,10 @@ +query: null +server: biorxiv +category: null +days: 30 +start: null +end: null +doi: 10.1101/2021.10.04.463034 +max_results: 10 +output: skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/paper.json +verbose: false diff --git a/skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/paper.json b/skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/paper.json new file mode 100644 index 00000000..dfeaccb6 --- /dev/null +++ b/skills/general-biorxiv-search/examples/doi_lookup/alphafold_multimer/paper.json @@ -0,0 +1,15 @@ +[ + { + "doi": "10.1101/2021.10.04.463034", + "url": "https://www.biorxiv.org/content/10.1101/2021.10.04.463034v2", + "title": "Protein complex prediction with AlphaFold-Multimer", + "authors": "Evans, R.; O'Neill, M.; Pritzel, A.; Antropova, N.; Senior, A. W.; Green, T.; Zidek, A.; Bates, R.; Blackwell, S.; Yim, J.; Ronneberger, O.; Bodenstein, S.; Zielinski, M.; Bridgland, A.; Potapenko, A.; Cowie, A.; Tunyasuvunakool, K.; Jain, R.; Clancy, E.; Kohli, P.; Jumper, J.; Hassabis, D.", + "abstract": "While the vast majority of well-structured single protein chains can now be predicted to high accuracy due to the recent AlphaFold [1] model, the prediction of multi-chain protein complexes remains a challenge in many cases. In this work, we demonstrate that an AlphaFold model trained specifically for multimeric inputs of known stoichiometry, which we call AlphaFold-Multimer, significantly increases accuracy of predicted multimeric interfaces over input-adapted single-chain AlphaFold while maintaining high intra-chain accuracy. On a benchmark dataset of 17 heterodimer proteins without templates (introduced in [2]) we achieve at least medium accuracy (DockQ [3] [≥] 0.49) on 13 targets and high accuracy (DockQ [≥] 0.8) on 7 targets, compared to 9 targets of at least medium accuracy and 4 of high accuracy for the previous state of the art system (an AlphaFold-based system from [2]). We also predict structures for a large dataset of 4,446 recent protein complexes, from which we score all non-redundant interfaces with low template identity. For heteromeric interfaces we successfully predict the interface (DockQ [≥] 0.23) in 70% of cases, and produce high accuracy predictions (DockQ [≥] 0.8) in 26% of cases, an improvement of +27 and +14 percentage points over the flexible linker modification of AlphaFold [4] respectively. For homomeric inter-faces we successfully predict the interface in 72% of cases, and produce high accuracy predictions in 36% of cases, an improvement of +8 and +7 percentage points respectively.", + "date": "2022-03-10", + "category": "bioinformatics", + "server": "bioRxiv", + "version": "2", + "license": "cc_no", + "published": "NA" + } +] diff --git a/skills/general-biorxiv-search/examples/doi_lookup/esm2/input_configs.yaml b/skills/general-biorxiv-search/examples/doi_lookup/esm2/input_configs.yaml new file mode 100644 index 00000000..0c69b991 --- /dev/null +++ b/skills/general-biorxiv-search/examples/doi_lookup/esm2/input_configs.yaml @@ -0,0 +1,10 @@ +query: null +server: biorxiv +category: null +days: 30 +start: null +end: null +doi: 10.1101/2022.07.20.500902 +max_results: 10 +output: skills/general-biorxiv-search/examples/doi_lookup/esm2/paper.json +verbose: false diff --git a/skills/general-biorxiv-search/examples/doi_lookup/esm2/paper.json b/skills/general-biorxiv-search/examples/doi_lookup/esm2/paper.json new file mode 100644 index 00000000..22e42374 --- /dev/null +++ b/skills/general-biorxiv-search/examples/doi_lookup/esm2/paper.json @@ -0,0 +1,15 @@ +[ + { + "doi": "10.1101/2022.07.20.500902", + "url": "https://www.biorxiv.org/content/10.1101/2022.07.20.500902v3", + "title": "Evolutionary-scale prediction of atomic level protein structure with a language model", + "authors": "Lin, Z.; Akin, H.; Rao, R.; Hie, B.; Zhu, Z.; Lu, W.; Smetanin, N.; Verkuil, R.; Kabeli, O.; Shmueli, Y.; dos Santos Costa, A.; Fazel-Zarandi, M.; Sercu, T.; Candido, S.; Rives, A.", + "abstract": "Artificial intelligence has the potential to open insight into the structure of proteins at the scale of evolution. It has only recently been possible to extend protein structure prediction to two hundred million cataloged proteins. Characterizing the structures of the exponentially growing billions of protein sequences revealed by large scale gene sequencing experiments would necessitate a break-through in the speed of folding. Here we show that direct inference of structure from primary sequence using a large language model enables an order of magnitude speed-up in high resolution structure prediction. Leveraging the insight that language models learn evolutionary patterns across millions of sequences, we train models up to 15B parameters, the largest language model of proteins to date. As the language models are scaled they learn information that enables prediction of the three-dimensional structure of a protein at the resolution of individual atoms. This results in prediction that is up to 60x faster than state-of-the-art while maintaining resolution and accuracy. Building on this, we present the ESM Metage-nomic Atlas. This is the first large-scale structural characterization of metagenomic proteins, with more than 617 million structures. The atlas reveals more than 225 million high confidence predictions, including millions whose structures are novel in comparison with experimentally determined structures, giving an unprecedented view into the vast breadth and diversity of the structures of some of the least understood proteins on earth.", + "date": "2022-12-21", + "category": "synthetic biology", + "server": "bioRxiv", + "version": "3", + "license": "cc_by_nc_nd", + "published": "10.1126/science.ade2574" + } +] diff --git a/skills/general-biorxiv-search/scripts/biorxiv_search.py b/skills/general-biorxiv-search/scripts/biorxiv_search.py index 938204a5..71c5c420 100644 --- a/skills/general-biorxiv-search/scripts/biorxiv_search.py +++ b/skills/general-biorxiv-search/scripts/biorxiv_search.py @@ -161,7 +161,11 @@ def search_recent( return papers def search_by_doi(self, doi: str) -> Optional[Dict[str, Any]]: - """Retrieve metadata for a specific preprint by DOI.""" + """Retrieve metadata for the latest version of a preprint by DOI. + + The API returns one record per posted version; the latest version is + the one the DOI resolves to and carries the current title and authors. + """ url = self.BASE_URL.format(server=self.server, interval=doi, cursor=0) self._log(f"Requesting DOI: {url}") time.sleep(0.5) @@ -170,7 +174,8 @@ def search_by_doi(self, doi: str) -> Optional[Dict[str, Any]]: data = response.json() collection = data.get("collection", []) if collection: - return self._parse_item(collection[0]) + latest = max(collection, key=lambda item: int(item.get("version", 1))) + return self._parse_item(latest) return None def _parse_item(self, item: Dict[str, Any]) -> Dict[str, Any]: @@ -178,7 +183,7 @@ def _parse_item(self, item: Dict[str, Any]) -> Dict[str, Any]: doi = item.get("doi", "") return { "doi": doi, - "url": f"https://www.biorxiv.org/content/{doi}v{item.get('version', 1)}" + "url": f"https://www.{self.server}.org/content/{doi}v{item.get('version', 1)}" if doi else "", "title": item.get("title", "").strip(), @@ -200,7 +205,9 @@ def _matches( ) -> bool: """Check if paper matches keyword and category filters.""" if category: - full_cat = self.CATEGORIES.get(category, category) + # The API reports categories with spaces ("cell biology"), while the + # shortcuts and its query parameter use underscores ("cell_biology"). + full_cat = self.CATEGORIES.get(category, category).replace("_", " ") if full_cat.lower() not in paper.get("category", "").lower(): return False From 42d27b949a4b087ff056e79ad79ef20d7b3eec8c Mon Sep 17 00:00:00 2001 From: bowen-bd <bowendeng@berkeley.edu> Date: Sat, 10 Oct 2026 13:39:04 -0400 Subject: [PATCH 07/12] fix(mat-elemental-energies): correct collapsed O2/Cl2 references and stale TensorNet file; add examples - MACE-MP-medium, MACE-MH-0 (3 heads), MACE-MATPES-PBE-0 O and MACE-MP-small Cl came from relaxations in which the molecular crystal collapsed; they are replaced by single points on the MP structure or converged values. - TensorNet-MatPES-r2SCAN-v2025.1-PES regenerated with the weights the wrapper now loads under that name. - get_elemental_energies.py resolves the library relative to the script, matches checkpoint names case-insensitively and no longer writes into resources/. Examples: MP2020 corrections reproduce Materials Project corrected energies exactly (Fe2O3, Al2O3, FeS2); library energies compared with MP GGA/r2SCAN. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --- skills/mat-dft-mixing-functionals/SKILL.md | 3 + .../Al2O3_mp-1143.cif | 36 +++ .../Fe2O3_mp-19770.cif | 36 +++ .../fe2o3_mp2020_reproduction/FeS2_mp-226.cif | 38 +++ .../fe2o3_mp2020_reproduction/README.md | 158 ++++++++++ .../apply_correction_output.txt | 20 ++ .../check_compatibility_output.txt | 15 + .../mp_reference_entries.json | 102 ++++++ skills/mat-elemental-energies/SKILL.md | 42 ++- .../elemental_energies.json | 7 + .../input_configs.yaml | 9 + .../Fe2O3_MACE-MP-medium_relaxed.cif | 35 +++ .../Li2O_MACE-MP-medium_relaxed.cif | 28 ++ .../elemental_energies.json | 7 + .../MACE-MATPES-R2SCAN-0/input_configs.yaml | 9 + .../MACE-MP-medium/elemental_energies.json | 7 + .../MACE-MP-medium/input_configs.yaml | 9 + .../O2_MACE-MP-medium_relaxed.cif | 33 ++ .../examples/li_fe_cu_o_si_vs_mp/README.md | 290 ++++++++++++++++++ .../elemental_energies.json | 7 + .../input_configs.yaml | 9 + .../li_fe_cu_o_si_vs_mp/comparison_vs_mp.csv | 21 ++ .../li_fe_cu_o_si_vs_mp/cpu_verification.json | 113 +++++++ .../formation_energies.csv | 5 + .../mp_reference_energies.json | 125 ++++++++ .../resources/MACE-MATPES-PBE-0_energies.json | 2 +- .../MACE-MH-0_matpes_r2scan_energies.json | 2 +- .../MACE-MH-0_oc20_usemppbe_energies.json | 2 +- .../MACE-MH-0_omat_pbe_energies.json | 2 +- .../resources/MACE-MP-medium_energies.json | 2 +- .../resources/MACE-MP-small_energies.json | 2 +- ...et-MatPES-r2SCAN-v2025.1-PES_energies.json | 178 +++++------ .../scripts/get_elemental_energies.py | 95 +++++- 33 files changed, 1332 insertions(+), 117 deletions(-) create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Al2O3_mp-1143.cif create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Fe2O3_mp-19770.cif create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/FeS2_mp-226.cif create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/README.md create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/apply_correction_output.txt create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/check_compatibility_output.txt create mode 100644 skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/mp_reference_entries.json create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/elemental_energies.json create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/input_configs.yaml create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Fe2O3_MACE-MP-medium_relaxed.cif create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Li2O_MACE-MP-medium_relaxed.cif create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/elemental_energies.json create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/input_configs.yaml create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/elemental_energies.json create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/input_configs.yaml create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/O2_MACE-MP-medium_relaxed.cif create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/elemental_energies.json create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/input_configs.yaml create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/comparison_vs_mp.csv create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/cpu_verification.json create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/formation_energies.csv create mode 100644 skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/mp_reference_energies.json diff --git a/skills/mat-dft-mixing-functionals/SKILL.md b/skills/mat-dft-mixing-functionals/SKILL.md index f2258550..2ed76bb5 100644 --- a/skills/mat-dft-mixing-functionals/SKILL.md +++ b/skills/mat-dft-mixing-functionals/SKILL.md @@ -75,6 +75,9 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/apply_ ### 2. Batch Processing For referencing or phase diagram generation, apply this correction to every entry before computing E_hull. +## Examples +- [Reproducing MP2020 corrections for Fe2O3, Al2O3 and FeS2](examples/fe2o3_mp2020_reproduction/README.md): starting from MP's raw GGA(+U) energies, the skill reproduces MP's corrected energies and per-species adjustments exactly, and the constants match Wang et al. (2021). + ## Constraints - **Environment**: `cpu` (requires `pymatgen`). - **Input Energy**: Must be the *total energy* in eV (not per atom). diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Al2O3_mp-1143.cif b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Al2O3_mp-1143.cif new file mode 100644 index 00000000..a51cceba --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Al2O3_mp-1143.cif @@ -0,0 +1,36 @@ +# generated using pymatgen +data_Al2O3 +_symmetry_space_group_name_H-M 'P 1' +_cell_length_a 5.17795525 +_cell_length_b 5.17795525 +_cell_length_c 5.17795522 +_cell_angle_alpha 55.28961179 +_cell_angle_beta 55.28961179 +_cell_angle_gamma 55.28961598 +_symmetry_Int_Tables_number 1 +_chemical_formula_structural Al2O3 +_chemical_formula_sum 'Al4 O6' +_cell_volume 87.42003700 +_cell_formula_units_Z 2 +loop_ + _symmetry_equiv_pos_site_id + _symmetry_equiv_pos_as_xyz + 1 'x, y, z' +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Al Al0 1 0.14790400 0.14790400 0.14790400 1.0 + Al Al1 1 0.35209600 0.35209600 0.35209600 1.0 + Al Al2 1 0.64790400 0.64790400 0.64790400 1.0 + Al Al3 1 0.85209600 0.85209600 0.85209600 1.0 + O O4 1 0.55614600 0.94385400 0.25000000 1.0 + O O5 1 0.75000000 0.44385400 0.05614600 1.0 + O O6 1 0.25000000 0.55614600 0.94385400 1.0 + O O7 1 0.94385400 0.25000000 0.55614600 1.0 + O O8 1 0.05614600 0.75000000 0.44385400 1.0 + O O9 1 0.44385400 0.05614600 0.75000000 1.0 diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Fe2O3_mp-19770.cif b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Fe2O3_mp-19770.cif new file mode 100644 index 00000000..43b9ac3c --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Fe2O3_mp-19770.cif @@ -0,0 +1,36 @@ +# generated using pymatgen +data_Fe2O3 +_symmetry_space_group_name_H-M 'P 1' +_cell_length_a 5.10499814 +_cell_length_b 5.10485749 +_cell_length_c 5.49506295 +_cell_angle_alpha 117.67780043 +_cell_angle_beta 89.99996354 +_cell_angle_gamma 120.00104735 +_symmetry_Int_Tables_number 1 +_chemical_formula_structural Fe2O3 +_chemical_formula_sum 'Fe4 O6' +_cell_volume 104.66803233 +_cell_formula_units_Z 2 +loop_ + _symmetry_equiv_pos_site_id + _symmetry_equiv_pos_as_xyz + 1 'x, y, z' +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Fe Fe0 1 0.64582500 0.29165200 0.93747400 1.0 + Fe Fe1 1 0.35417500 0.70834900 0.06252600 1.0 + Fe Fe2 1 0.85417000 0.70834100 0.56251600 1.0 + Fe Fe3 1 0.14583000 0.29165900 0.43748400 1.0 + O O4 1 0.44512100 0.19512000 0.24999300 1.0 + O O5 1 0.55487900 0.80488000 0.75000600 1.0 + O O6 1 0.74999900 0.80487800 0.25000500 1.0 + O O7 1 0.25000100 0.19512100 0.74999500 1.0 + O O8 1 0.05489000 0.50000000 0.24999900 1.0 + O O9 1 0.94511000 0.50000000 0.75000100 1.0 diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/FeS2_mp-226.cif b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/FeS2_mp-226.cif new file mode 100644 index 00000000..30946e1c --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/FeS2_mp-226.cif @@ -0,0 +1,38 @@ +# generated using pymatgen +data_FeS2 +_symmetry_space_group_name_H-M 'P 1' +_cell_length_a 5.40381100 +_cell_length_b 5.40381100 +_cell_length_c 5.40381100 +_cell_angle_alpha 90.00000000 +_cell_angle_beta 90.00000000 +_cell_angle_gamma 90.00000000 +_symmetry_Int_Tables_number 1 +_chemical_formula_structural FeS2 +_chemical_formula_sum 'Fe4 S8' +_cell_volume 157.79762162 +_cell_formula_units_Z 4 +loop_ + _symmetry_equiv_pos_site_id + _symmetry_equiv_pos_as_xyz + 1 'x, y, z' +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Fe Fe0 1 0.00000000 0.50000000 0.50000000 1.0 + Fe Fe1 1 0.50000000 0.50000000 0.00000000 1.0 + Fe Fe2 1 0.50000000 0.00000000 0.50000000 1.0 + Fe Fe3 1 0.00000000 0.00000000 0.00000000 1.0 + S S4 1 0.38288800 0.11711200 0.88288800 1.0 + S S5 1 0.11711200 0.88288800 0.38288800 1.0 + S S6 1 0.88288800 0.38288800 0.11711200 1.0 + S S7 1 0.61711200 0.61711200 0.61711200 1.0 + S S8 1 0.38288800 0.38288800 0.38288800 1.0 + S S9 1 0.11711200 0.61711200 0.88288800 1.0 + S S10 1 0.88288800 0.11711200 0.61711200 1.0 + S S11 1 0.61711200 0.88288800 0.11711200 1.0 diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/README.md b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/README.md new file mode 100644 index 00000000..7ad9b3e9 --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/README.md @@ -0,0 +1,158 @@ +# Reproducing Materials Project MP2020 Corrections (Fe2O3, Al2O3, FeS2) + +## Goal + +Validate `apply_correction.py` against the Materials Project (MP) database. MP stores both the raw +(uncorrected) DFT total energy of each calculation and the energy after the MP2020 compatibility scheme. +Starting from MP's raw energy, the skill should give MP's corrected energy and the same per-species +adjustments. Three compounds cover the three branches of the scheme: + +| Compound | MP ID | MP run type | What it tests | +| :--- | :--- | :--- | :--- | +| Fe2O3 (hematite) | mp-19770 | GGA+U (U<sub>Fe</sub> = 5.3 eV) | oxide anion correction **and** the Fe GGA/GGA+U mixing correction | +| Al2O3 (corundum) | mp-1143 | GGA | oxide anion correction only (Al has no U) | +| FeS2 (pyrite) | mp-226 | GGA | sulfide anion correction only; Fe gets no U correction in a sulfide | + +The example also checks the correction constants against the published values (Wang et al., 2021, Table 1) +and pymatgen's `MP2020Compatibility.yaml`. It also runs `check_compatibility.py` on models that need +the correction and on models that don't. + +## Inputs + +| File | Sites | MP uncorrected total energy (eV) | MP corrected total energy (eV) | +| :--- | :---: | ---: | ---: | +| [Fe2O3_mp-19770.cif](Fe2O3_mp-19770.cif) | 10 (Fe4O6) | -67.4927644 | -80.6387644 | +| [Al2O3_mp-1143.cif](Al2O3_mp-1143.cif) | 10 (Al4O6) | -74.81357943 | -78.93557943 | +| [FeS2_mp-226.cif](FeS2_mp-226.cif) | 12 (Fe4S8) | -73.03390479 | -77.05790479 | + +The structures, energies and MP's own correction breakdown are stored in +[`mp_reference_entries.json`](mp_reference_entries.json). They came from the MP API `materials/thermo` +endpoint with `thermo_types=["GGA_GGA+U"]` (MP database version 2026.04.13, retrieved 2026-10-10). +Each structure is the `ComputedStructureEntry.structure` of the entry, so it matches the energy: + +```python +from mp_api.client import MPRester + +with MPRester() as mpr: # reads MP_API_KEY from the environment + doc = mpr.materials.thermo.search( + material_ids=["mp-19770"], thermo_types=["GGA_GGA+U"], fields=["entries"] + )[0] +entry = next(iter(doc.entries.values())) # pymatgen ComputedStructureEntry +print(entry.uncorrected_energy, entry.energy) # -67.4927644 -80.6387644 +for adj in entry.energy_adjustments: + print(adj.name, adj.value, adj.uncertainty) +entry.structure.to(filename="Fe2O3_mp-19770.cif") +``` + +> [!IMPORTANT] +> Request `thermo_types=["GGA_GGA+U"]`. The default MP summary and thermo values use the +> GGA/GGA+U/r2SCAN mixing scheme (Kingsbury et al., 2022). For many materials that scheme reports an +> r2SCAN energy. For Fe2O3 the default `uncorrected_energy_per_atom` is -10.894 eV/atom (r2SCAN), while +> the GGA+U value is -6.749 eV/atom. MP2020 corrections only apply to the GGA/GGA+U energy. + +## Commands + +All commands run from the repository root. + +### 1. Apply the MP2020 correction to MP's raw energies + +```bash +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py \ + skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Fe2O3_mp-19770.cif --energy -67.4927644 +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py \ + skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Al2O3_mp-1143.cif --energy -74.81357943 +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py \ + skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/FeS2_mp-226.cif --energy -73.03390479 +``` + +The full output is in [`apply_correction_output.txt`](apply_correction_output.txt). + +### 2. Check which models need the correction + +```bash +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name MACE-MP-medium +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name MACE-MH-1 --head omat_pbe +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name CHGNet-MPtrj-2023.12.1-2.7M-PES +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name MACE-MATPES-R2SCAN-0 +``` + +The full output is in [`check_compatibility_output.txt`](check_compatibility_output.txt). + +## Results + +### Corrected energies: skill vs Materials Project + +| Compound | Uncorrected (eV) | MP corrected (eV) | Skill corrected (eV) | Difference (meV) | MP adjustments (eV) | Skill adjustments (eV) | +| :--- | ---: | ---: | ---: | ---: | :--- | :--- | +| Fe2O3 | -67.4928 | -80.6388 | -80.6388 | 0.0 | oxide -4.122; Fe mixing -9.024 | oxide -4.122; Fe mixing -9.024 | +| Al2O3 | -74.8136 | -78.9356 | -78.9356 | 0.0 | oxide -4.122 | oxide -4.122 | +| FeS2 | -73.0339 | -77.0579 | -77.0579 | 0.0 | S -4.024 | S -4.024 | + +The skill reproduces MP's corrected total energies and every per-species adjustment exactly. Per atom, +the Fe2O3 result is -80.6388 / 10 = -8.06388 eV/atom, which equals MP's GGA_GGA+U `energy_per_atom` +(-8.06387644 eV/atom). + +The script builds the GGA+U parameters itself (`hubbards = {"Fe": 5.3}` from the MP2020 `u_settings`). +These match the parameters stored on MP's entry (`{"Fe": 5.3, "O": 0.0}`). For FeS2 it sets no U +because MP2020 applies U, and therefore the mixing correction, only in oxides and fluorides. MP's own +FeS2 entry is likewise a plain GGA calculation with only the sulfide correction. + +### Correction constants vs literature + +Each adjustment divided by the number of atoms of that species in the cell gives the per-atom constant. +The MP uncertainty divided the same way gives the per-atom uncertainty. + +| Species (compound) | Atoms in cell | Adjustment (eV) | Per atom (eV/atom) | Wang et al. 2021, Table 1 (eV/atom) | `MP2020Compatibility.yaml` (eV/atom) | Uncertainty per atom: MP / Table 1 (eV/atom) | +| :--- | :---: | ---: | ---: | ---: | ---: | :---: | +| oxide (Fe2O3, Al2O3) | 6 O | -4.122 | -0.687 | -0.687 | -0.687 | 0.0020 / 0.0020 | +| Fe, GGA+U oxide (Fe2O3) | 4 Fe | -9.024 | -2.256 | -2.256 | -2.256 | 0.0101 / 0.0101 | +| S (FeS2) | 8 S | -4.024 | -0.503 | -0.503 | -0.503 | 0.0093 / 0.0093 | + +All three constants and their uncertainties agree with Table 1 of Wang et al. (2021), read from the +published article for this example. pymatgen 2026.9.24 is the version installed in the `cpu` +environment. Its `MP2020Compatibility.yaml` (`pymatgen/analysis/compatibility/`) is byte-identical to +the current upstream file on GitHub. MP computed its adjustments with pymatgen 2026.5.18 +(`builder_meta` in `mp_reference_entries.json`), and they are identical to the ones the skill +computes with 2026.9.24. + +### Which models need the correction + +| Model | Head | Training data | Requires MP2020? | Exit code | +| :--- | :--- | :--- | :---: | :---: | +| MACE-MP-medium | — | MPtrj (GGA/GGA+U) | True | 0 | +| MACE-MH-1 | `omat_pbe` | OMat-PBE head | True | 0 | +| CHGNet-MPtrj-2023.12.1-2.7M-PES | — | MPtrj with the MP2020 mixing correction already applied | False | 1 | +| MACE-MATPES-R2SCAN-0 | — | MatPES r2SCAN | False | 1 | + +CHGNet and MACE-MP are both trained on MPtrj, but they need different treatment. The CHGNet paper +states that the GGA/GGA+U mixing compatibility correction of Wang et al. was applied to the MPtrj +energies (Deng et al., 2023), so CHGNet predictions already include the correction. Correcting them +again would count it twice. MACE-MP-medium predicts uncorrected energies, as measured in the companion +example +[mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp](../../../mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md). +There, its raw Li2O energy is 9.5 meV/atom from MP's uncorrected value and 238 meV/atom from the +corrected one. Applying this script, with an O2 reference from a single point on MP's O2 structure, +brings its Li2O formation energy to within 0.2 meV/atom of MP's. + +## References + +- A. Wang, R. Kingsbury, M. McDermott, M. Horton, A. Jain, S. P. Ong, S. Dwaraknath, K. A. Persson, + "A framework for quantifying uncertainty in DFT energy corrections", *Sci. Rep.* **11**, 15496 (2021). + [DOI: 10.1038/s41598-021-94550-5](https://doi.org/10.1038/s41598-021-94550-5) +- pymatgen `MP2020Compatibility.yaml`: + [github.com/materialsproject/pymatgen/.../MP2020Compatibility.yaml](https://github.com/materialsproject/pymatgen/blob/main/src/pymatgen/analysis/compatibility/MP2020Compatibility.yaml) +- R. S. Kingsbury, A. S. Rosen, A. S. Gupta, J. M. Munro, S. P. Ong, A. Jain, S. Dwaraknath, M. K. Horton, + K. A. Persson, "A flexible and scalable scheme for mixing computed formation energies from different + levels of theory", *npj Comput. Mater.* **8**, 195 (2022). + [DOI: 10.1038/s41524-022-00881-w](https://doi.org/10.1038/s41524-022-00881-w) +- B. Deng, P. Zhong, K. Jun, J. Riebesell, K. Han, C. J. Bartel, G. Ceder, "CHGNet as a pretrained universal + neural network potential for charge-informed atomistic modelling", *Nat. Mach. Intell.* **5**, 1031–1041 + (2023). [DOI: 10.1038/s42256-023-00716-3](https://doi.org/10.1038/s42256-023-00716-3) +- A. Jain et al., "Commentary: The Materials Project: A materials genome approach to accelerating materials + innovation", *APL Mater.* **1**, 011002 (2013). [DOI: 10.1063/1.4812323](https://doi.org/10.1063/1.4812323) + +## 3D Structures + +- [Fe2O3_mp-19770.cif](Fe2O3_mp-19770.cif) +- [Al2O3_mp-1143.cif](Al2O3_mp-1143.cif) +- [FeS2_mp-226.cif](FeS2_mp-226.cif) diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/apply_correction_output.txt b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/apply_correction_output.txt new file mode 100644 index 00000000..b89fb9c0 --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/apply_correction_output.txt @@ -0,0 +1,20 @@ +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Fe2O3_mp-19770.cif --energy -67.4927644 +Structure Formula: Fe2O3 +Original Energy: -67.4928 eV +Corrected Energy: -80.6388 eV +Total Correction: -13.1460 eV +Corrections Details: {'MP2020 anion correction (oxide)': -4.122, 'MP2020 GGA/GGA+U mixing correction (Fe)': -9.024} + +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/Al2O3_mp-1143.cif --energy -74.81357943 +Structure Formula: Al2O3 +Original Energy: -74.8136 eV +Corrected Energy: -78.9356 eV +Total Correction: -4.1220 eV +Corrections Details: {'MP2020 anion correction (oxide)': -4.122} + +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/FeS2_mp-226.cif --energy -73.03390479 +Structure Formula: FeS2 +Original Energy: -73.0339 eV +Corrected Energy: -77.0579 eV +Total Correction: -4.0240 eV +Corrections Details: {'MP2020 anion correction (S)': -4.024} diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/check_compatibility_output.txt b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/check_compatibility_output.txt new file mode 100644 index 00000000..017b637b --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/check_compatibility_output.txt @@ -0,0 +1,15 @@ +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name MACE-MP-medium +Requires MP2020 Correction: True +exit code: 0 + +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name MACE-MH-1 --head omat_pbe +Requires MP2020 Correction: True +exit code: 0 + +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name CHGNet-MPtrj-2023.12.1-2.7M-PES +Requires MP2020 Correction: False +exit code: 1 + +$ venv/run cpu python skills/mat-dft-mixing-functionals/scripts/check_compatibility.py --name MACE-MATPES-R2SCAN-0 +Requires MP2020 Correction: False +exit code: 1 diff --git a/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/mp_reference_entries.json b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/mp_reference_entries.json new file mode 100644 index 00000000..7c061b9e --- /dev/null +++ b/skills/mat-dft-mixing-functionals/examples/fe2o3_mp2020_reproduction/mp_reference_entries.json @@ -0,0 +1,102 @@ +{ + "source": "Materials Project API, materials/thermo endpoint, thermo_type GGA_GGA+U (ComputedStructureEntry with MP2020 energy_adjustments)", + "mp_database_version": "2026.04.13", + "retrieved": "2026-10-10", + "entries": { + "mp-19770": { + "formula": "Fe2O3", + "entry_id": "mp-19770-GGA+U", + "run_type": "GGA+U", + "nsites": 10, + "uncorrected_total_energy_eV": -67.4927644, + "corrected_total_energy_eV": -80.6387644, + "total_correction_eV": -13.145999999999999, + "energy_adjustments": [ + { + "name": "MP2020 anion correction (oxide)", + "value_eV": -4.122, + "uncertainty_eV": 0.012 + }, + { + "name": "MP2020 GGA/GGA+U mixing correction (Fe)", + "value_eV": -9.024, + "uncertainty_eV": 0.0404 + } + ], + "parameters": { + "run_type": "GGA+U", + "is_hubbard": true, + "hubbards": { + "Fe": 5.3, + "O": 0.0 + } + }, + "thermo_uncorrected_energy_per_atom_eV": -6.74927644, + "thermo_energy_per_atom_eV": -8.06387644, + "thermo_formation_energy_per_atom_eV": -1.7070913529999998, + "builder_meta": { + "emmet_version": "0.87.0rc6", + "pymatgen_version": "2026.5.18" + }, + "last_updated": "2026-05-30 05:51:24.451000+00:00" + }, + "mp-1143": { + "formula": "Al2O3", + "entry_id": "mp-1143-GGA", + "run_type": "GGA", + "nsites": 10, + "uncorrected_total_energy_eV": -74.81357943, + "corrected_total_energy_eV": -78.93557943, + "total_correction_eV": -4.122, + "energy_adjustments": [ + { + "name": "MP2020 anion correction (oxide)", + "value_eV": -4.122, + "uncertainty_eV": 0.012 + } + ], + "parameters": { + "run_type": "GGA", + "is_hubbard": null, + "hubbards": null + }, + "thermo_uncorrected_energy_per_atom_eV": -7.481357943000001, + "thermo_energy_per_atom_eV": -7.893557943, + "thermo_formation_energy_per_atom_eV": -3.4265510080000006, + "builder_meta": { + "emmet_version": "0.87.0rc6", + "pymatgen_version": "2026.5.18" + }, + "last_updated": "2026-05-30 04:50:21.358000+00:00" + }, + "mp-226": { + "formula": "FeS2", + "entry_id": "mp-226-GGA", + "run_type": "GGA", + "nsites": 12, + "uncorrected_total_energy_eV": -73.03390479, + "corrected_total_energy_eV": -77.05790479, + "total_correction_eV": -4.024, + "energy_adjustments": [ + { + "name": "MP2020 anion correction (S)", + "value_eV": -4.024, + "uncertainty_eV": 0.0744 + } + ], + "parameters": { + "run_type": "GGA", + "is_hubbard": null, + "hubbards": null + }, + "thermo_uncorrected_energy_per_atom_eV": -6.0861587324999995, + "thermo_energy_per_atom_eV": -6.421492065833333, + "thermo_formation_energy_per_atom_eV": -0.840518417916666, + "builder_meta": { + "emmet_version": "0.87.0rc6", + "pymatgen_version": "2026.5.18" + }, + "last_updated": "2026-05-30 05:42:42.472000+00:00" + } + } +} diff --git a/skills/mat-elemental-energies/SKILL.md b/skills/mat-elemental-energies/SKILL.md index 92410642..1718a77c 100644 --- a/skills/mat-elemental-energies/SKILL.md +++ b/skills/mat-elemental-energies/SKILL.md @@ -18,6 +18,7 @@ To get the energies for a list of elements from a specific checkpoint: ```bash ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/get_elemental_energies.py --elements Li Fe O --checkpoint mace-mp-medium ``` +Checkpoint names are matched case-insensitively against `resources/<checkpoint>_energies.json`. Add `--output refs/energies.json` to save the energies, with `input_configs.yaml` next to them. ## Library Status @@ -26,20 +27,43 @@ As of **2026-01-30**, the library is fully expanded and contains **89 elements** - **MatGL**: CHGNet (MPtrj, MatPES), M3GNet (MP, MatPES), TensorNet (MatPES). - **FairChem**: UMA (S/M) with all heads (omat, omol, oc20). +**Corrections (2026-10):** `TensorNet-MatPES-r2SCAN-v2025.1-PES` was regenerated for all 89 +elements with the weights that name now loads. Four O entries whose relaxation collapses the O2 +crystal now hold the single point on the MP structure: MACE-MP-medium, and MACE-MH-0 omat_pbe, +matpes_r2scan and oc20_usemppbe (see Constraints). Two entries that the library protocol did not +reproduce were replaced by its converged, physical results: MACE-MATPES-PBE-0 O +(-5.575 → -4.905 eV/atom) and MACE-MP-small Cl (-2.146 → -1.838 eV/atom). + +## Examples +- [Li, Fe, Cu, O, Si references vs Materials Project](examples/li_fe_cu_o_si_vs_mp/README.md): MPtrj and MatPES-r2SCAN library energies compared with MP's GGA and r2SCAN energies, with a CPU reproducibility check and Li2O / Fe2O3 formation energies. It documents the corrected MACE-MP-medium O and regenerated TensorNet-MatPES-r2SCAN entries. + ## Constraints - **Materials Project**: Structures must be queried from Materials Project to ensure they represent the true ground-state phases. - **Naming**: Library files must follow the `<checkpoint_name>_energies.json` format. - **Units**: Energies are stored as **eV/atom** (total potential energy of the relaxed structure divided by the number of atoms). -- **Relaxation**: The stored value comes from relaxing **both cell and coordinates** - (`relax_cell=True`). A positions-only relaxation leaves the reference above the - potential's own minimum and biases every formation energy that uses it. +- **Relaxation (library protocol)**: No generation script ships with the library. Each + value is `relax_structure` on `resources/structures/<El>.cif` with `relax_cell=True`, + `fmax=0.02` eV/Å, at most 500 `FIRE` steps (the MCP tool defaults), and the stored + value is the final energy divided by the number of atoms. A positions-only relaxation + leaves the reference above the potential's own minimum and biases every formation + energy that uses it. - **Molecular-crystal elements are sensitive**: for O, N, F, Cl, H the MP ground state - is a van der Waals-bound molecular crystal whose MLIP-relaxed cell differs a lot from - the DFT cell, so the cell relaxation matters more here than for metals. With - `TensorNet-PES-MatPES-PBE-2025.2`, mp-12957 (O2) gives -5.118 eV/atom fully relaxed - versus -4.968 positions-only. More than one MP entry can also tie at - `energy_above_hull = 0` for these elements (O2: mp-12957 and mp-1524462), so pin the - `material_id` rather than relying on a formula lookup returning a stable order. + is a van der Waals-bound molecular crystal, so the relaxed cell can differ a lot from + the DFT cell. Some potentials have no molecular minimum for O2 (mp-12957): the + relaxation contracts the O=O bond and pulls molecules to an intermolecular O–O + contact below 2.0 Å (MP: 2.145 Å), 0.15–0.86 eV/atom below the single point. When + this happens the stored O value is the **single point on the MP structure** instead. + This applies to MACE-MP-medium and MACE-MH-0 (omat_pbe, matpes_r2scan, oc20_usemppbe). + TensorNet-PES-MatPES-PBE-2025.2 shows the same collapse (-5.117 eV/atom fully relaxed + vs -4.964 single point). More than one MP entry can also tie at `energy_above_hull = 0` for these + elements (O2: mp-12957 and mp-1524462), so pin the `material_id` rather than relying + on a formula lookup returning a stable order. +- **Checkpoint names vs weights**: matgl 4.x loads `TensorNet-MatPES-r2SCAN-v2025.1-PES` + and the `M3GNet-MatPES-*-v2025.1-PES` names as the 2025.2 weights. The TensorNet + r2SCAN file was regenerated with those weights (2026-10). The M3GNet-MatPES files + still hold the old weights' energies (e.g. Si -0.46 and -0.63 eV/atom off), and + `M3GNet-MP-2021.2.8-PES` now loads M3GNet-PES-MatPES-PBE-2025.2 weights, so check + that a library file matches the loaded model before use. --- **Author:** Bowen Deng diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/elemental_energies.json b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/elemental_energies.json new file mode 100644 index 00000000..17342ebf --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/elemental_energies.json @@ -0,0 +1,7 @@ +{ + "Li": -1.8634958267211914, + "Fe": -8.355609893798828, + "Cu": -4.072752952575684, + "O": -4.86834192276001, + "Si": -5.391512870788574 +} diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/input_configs.yaml b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/input_configs.yaml new file mode 100644 index 00000000..8b27f587 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/input_configs.yaml @@ -0,0 +1,9 @@ +elements: +- Li +- Fe +- Cu +- O +- Si +checkpoint: CHGNet-MPtrj-2023.12.1-2.7M-PES +resources_dir: null +output: skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/CHGNet-MPtrj-2023.12.1-2.7M-PES/elemental_energies.json diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Fe2O3_MACE-MP-medium_relaxed.cif b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Fe2O3_MACE-MP-medium_relaxed.cif new file mode 100644 index 00000000..f17cbada --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Fe2O3_MACE-MP-medium_relaxed.cif @@ -0,0 +1,35 @@ +data_image0 +_chemical_formula_structural Fe4O6 +_chemical_formula_sum "Fe4 O6" +_cell_length_a 5.124567914932183 +_cell_length_b 5.124481945523162 +_cell_length_c 5.508287714752676 +_cell_angle_alpha 117.72091687973541 +_cell_angle_beta 89.99997363839182 +_cell_angle_gamma 120.0006389909403 + +_space_group_name_H-M_alt "P 1" +_space_group_IT_number 1 + +loop_ + _space_group_symop_operation_xyz + 'x, y, z' + +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Fe Fe1 1.0 0.6466290649899857 0.2932597166039776 0.9398831326897369 1.0000 + Fe Fe2 1.0 0.353370950978191 0.7067400807721923 0.06011662429884256 1.0000 + Fe Fe3 1.0 0.8533695919671574 0.7067404818250409 0.5601172264501527 1.0000 + Fe Fe4 1.0 0.14663037764786604 0.29325949910363625 0.43988254399659205 1.0000 + O O1 1.0 0.44590413051607364 0.19590482114531088 0.2500017028239236 1.0000 + O O2 1.0 0.554095979679374 0.8040952843856216 0.7499982611353847 1.0000 + O O3 1.0 0.7499995524412113 0.8040950069476984 0.24999783125619657 1.0000 + O O4 1.0 0.2500004532111383 0.19590510009807402 0.7500019224820237 1.0000 + O O5 1.0 0.05409217124424231 0.49999994891585897 0.24999992157946171 1.0000 + O O6 1.0 0.9459077256618432 0.5000000566273195 0.7499998397403458 1.0000 diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Li2O_MACE-MP-medium_relaxed.cif b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Li2O_MACE-MP-medium_relaxed.cif new file mode 100644 index 00000000..c8dd0f7c --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Li2O_MACE-MP-medium_relaxed.cif @@ -0,0 +1,28 @@ +data_image0 +_chemical_formula_structural Li2O +_chemical_formula_sum "Li2 O1" +_cell_length_a 3.291308867503583 +_cell_length_b 3.2913088807339013 +_cell_length_c 3.291308869707207 +_cell_angle_alpha 59.999999914527585 +_cell_angle_beta 60.00000003093944 +_cell_angle_gamma 60.00000013099286 + +_space_group_name_H-M_alt "P 1" +_space_group_IT_number 1 + +loop_ + _space_group_symop_operation_xyz + 'x, y, z' + +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Li Li1 1.0 0.7500000071138943 0.749999994587705 0.7500000128941464 1.0000 + Li Li2 1.0 0.2500000007761159 0.25000000272450357 0.2499999897796277 1.0000 + O O1 1.0 0.9999999953847764 3.3680025338856316e-09 0.9999999979268095 1.0000 diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/elemental_energies.json b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/elemental_energies.json new file mode 100644 index 00000000..2873890a --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/elemental_energies.json @@ -0,0 +1,7 @@ +{ + "Li": -2.3633476893107095, + "Fe": -14.441841125488281, + "Cu": -10.839152336120605, + "O": -5.89470100402832, + "Si": -8.791337966918945 +} diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/input_configs.yaml b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/input_configs.yaml new file mode 100644 index 00000000..a51b7d8d --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/input_configs.yaml @@ -0,0 +1,9 @@ +elements: +- Li +- Fe +- Cu +- O +- Si +checkpoint: MACE-MATPES-R2SCAN-0 +resources_dir: null +output: skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MATPES-R2SCAN-0/elemental_energies.json diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/elemental_energies.json b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/elemental_energies.json new file mode 100644 index 00000000..1b36f059 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/elemental_energies.json @@ -0,0 +1,7 @@ +{ + "Li": -1.9065287907918294, + "Fe": -8.390863418579102, + "Cu": -4.08482027053833, + "O": -4.9250969886779785, + "Si": -5.342036247253418 +} diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/input_configs.yaml b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/input_configs.yaml new file mode 100644 index 00000000..cc495d98 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/input_configs.yaml @@ -0,0 +1,9 @@ +elements: +- Li +- Fe +- Cu +- O +- Si +checkpoint: MACE-MP-medium +resources_dir: null +output: skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/MACE-MP-medium/elemental_energies.json diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/O2_MACE-MP-medium_relaxed.cif b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/O2_MACE-MP-medium_relaxed.cif new file mode 100644 index 00000000..1c7b3ea2 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/O2_MACE-MP-medium_relaxed.cif @@ -0,0 +1,33 @@ +data_image0 +_chemical_formula_structural O8 +_chemical_formula_sum "O8" +_cell_length_a 7.429031267491584 +_cell_length_b 7.429030720869082 +_cell_length_c 4.283437887578915 +_cell_angle_alpha 73.99071702560799 +_cell_angle_beta 73.9907110220299 +_cell_angle_gamma 70.64019899601506 + +_space_group_name_H-M_alt "P 1" +_space_group_IT_number 1 + +loop_ + _space_group_symop_operation_xyz + 'x, y, z' + +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + O O1 1.0 0.8699921789326187 0.10775364823160681 0.13905100171626777 1.0000 + O O2 1.0 0.8922462726083039 0.13000774020357259 0.8609490816782351 1.0000 + O O3 1.0 0.1300077833933893 0.8922463978053948 0.8609489764063604 1.0000 + O O4 1.0 0.10775375075847891 0.8699922466852653 0.13905090654939015 1.0000 + O O5 1.0 0.8779063025937985 0.8779061370453227 0.8573277678291182 1.0000 + O O6 1.0 0.12209372696864633 0.1220938710873248 0.14267225870874478 1.0000 + O O7 1.0 0.9106395710428221 0.9106394419475687 0.5741372168238281 1.0000 + O O8 1.0 0.08936047313087253 0.08936052278444355 0.42586273211788694 1.0000 diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md new file mode 100644 index 00000000..c677e02b --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md @@ -0,0 +1,290 @@ +# Elemental Reference Energies vs Materials Project (Li, Fe, Cu, O, Si) + +## Goal + +Retrieve elemental reference energies (eV/atom) for Li, Fe, Cu, O and Si from four library checkpoints: + +- **GGA/GGA+U (MPtrj-trained):** `MACE-MP-medium`, `CHGNet-MPtrj-2023.12.1-2.7M-PES` +- **r2SCAN (MatPES-trained):** `TensorNet-MatPES-r2SCAN-v2025.1-PES`, `MACE-MATPES-R2SCAN-0` + +The example then: + +1. compares them with Materials Project (MP) DFT energies of the same ground-state materials, GGA for + the MPtrj models and r2SCAN for the MatPES models; +2. recomputes the library values on CPU to check that they are reproducible; +3. uses the references to compute Li2O and Fe2O3 formation energies and compares them with MP. + +An MLIP's absolute energy matches DFT only up to its training error, so the deviations are read against +the published energy MAEs of each model family. + +## Inputs + +**Library structures** are the CIFs in [`../../resources/structures/`](../../resources/structures/). +They carry no MP ID, so each was matched to MP's E<sub>hull</sub> = 0 entries with pymatgen's +`StructureMatcher`: + +| Element | Library CIF | MP ID | Space group | Atoms in CIF | +| :--- | :--- | :--- | :--- | :---: | +| Li | `Li.cif` | mp-1018134 | R-3m | 3 | +| Fe | `Fe.cif` | mp-13 | Im-3m (bcc) | 2 | +| Cu | `Cu.cif` | mp-30 | Fm-3m (fcc) | 1 | +| O | `O.cif` | mp-12957 | C2/m (O2 molecular crystal) | 8 | +| Si | `Si.cif` | mp-149 | Fd-3m (diamond) | 2 | + +**MP reference energies** are in [`mp_reference_energies.json`](mp_reference_energies.json). They come +from the MP API `materials/thermo` endpoint (database version 2026.04.13, retrieved 2026-10-10): + +```python +from mp_api.client import MPRester + +with MPRester() as mpr: # reads MP_API_KEY from the environment + docs = mpr.materials.thermo.search( + material_ids=["mp-1018134", "mp-13", "mp-30", "mp-12957", "mp-149", + "mp-1524462", "mp-1960", "mp-19770"], + thermo_types=["GGA_GGA+U", "R2SCAN"], + fields=["material_id", "thermo_type", "uncorrected_energy_per_atom", + "energy_per_atom", "formation_energy_per_atom"], + ) +``` + +- **GGA:** `uncorrected_energy_per_atom` of thermo type `GGA_GGA+U`. For elements the MP2020 correction + is zero, so corrected and uncorrected values are identical. +- **r2SCAN:** thermo type `R2SCAN`. mp-12957 has no r2SCAN calculation. The O r2SCAN reference is + therefore mp-1524462, a different C2/m O2 molecular-crystal polymorph that MP computed only with + r2SCAN. It is the ground state of MP's r2SCAN hull and ties with mp-12957 at E<sub>hull</sub> = 0 in + the default mixed hull. Because it is not the library's polymorph, the O r2SCAN comparison carries + an extra small polymorph uncertainty. +- Do **not** use the default (`GGA_GGA+U_R2SCAN`) summary energies. For Li, Cu and Si that mixed scheme + reports the r2SCAN energy (for example, Cu -10.847 eV/atom instead of the GGA value -4.099). + +## Commands + +All commands run from the repository root. + +### 1. Retrieve the library energies + +```bash +for ck in MACE-MP-medium CHGNet-MPtrj-2023.12.1-2.7M-PES TensorNet-MatPES-r2SCAN-v2025.1-PES MACE-MATPES-R2SCAN-0; do + venv/run cpu python skills/mat-elemental-energies/scripts/get_elemental_energies.py \ + --elements Li Fe Cu O Si --checkpoint $ck \ + --output skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/$ck/elemental_energies.json +done +``` + +Each `<checkpoint>/` folder holds the retrieved `elemental_energies.json` and the run's +`input_configs.yaml`. + +### 2. Recompute library values on CPU (verification) + +The library entries come from full cell + position relaxations (`relax_cell=True`), except +MACE-MP-medium O, which is a single point on MP's structure (see below). They were recomputed with +the MCP CLI fallback on CPU. The relaxations write trajectories, so the output +directories are in the gitignored scratch area. Only the relaxed CIFs and the energies are kept here, +in [`cpu_verification.json`](cpu_verification.json). + +```bash +S=skills/mat-elemental-energies/resources/structures +O=.agents/test/skill_examples +# MACE-MP-medium (GGA); predict_structure = single point on the MP structure +CUDA_VISIBLE_DEVICES="" venv/run mlip python -m src.mcp_server.cli mace load_model model_name=MACE-MP-medium device=cpu \ + predict_structure structure_data=$S/O.cif \ + relax_structure structure_data=$S/Li.cif output_dir=$O/mace_cpu/Li \ + relax_structure structure_data=$S/Fe.cif output_dir=$O/mace_cpu/Fe \ + relax_structure structure_data=$S/Cu.cif output_dir=$O/mace_cpu/Cu \ + relax_structure structure_data=$S/Si.cif output_dir=$O/mace_cpu/Si \ + relax_structure structure_data=$S/O.cif output_dir=$O/mace_cpu/O +# MACE-MATPES-R2SCAN-0 (r2SCAN) +CUDA_VISIBLE_DEVICES="" venv/run mlip python -m src.mcp_server.cli mace load_model model_name=MACE-MATPES-R2SCAN-0 device=cpu \ + predict_structure structure_data=$S/O.cif \ + relax_structure structure_data=$S/Li.cif output_dir=$O/mace_r2scan_cpu/Li \ + relax_structure structure_data=$S/Fe.cif output_dir=$O/mace_r2scan_cpu/Fe \ + relax_structure structure_data=$S/Cu.cif output_dir=$O/mace_r2scan_cpu/Cu \ + relax_structure structure_data=$S/Si.cif output_dir=$O/mace_r2scan_cpu/Si \ + relax_structure structure_data=$S/O.cif output_dir=$O/mace_r2scan_cpu/O +# TensorNet-MatPES-r2SCAN-v2025.1-PES (r2SCAN) +CUDA_VISIBLE_DEVICES="" venv/run mlip python -m src.mcp_server.cli matgl load_model model_name=TensorNet-MatPES-r2SCAN-v2025.1-PES device=cpu \ + predict_structure structure_data=$S/Si.cif predict_structure structure_data=$S/O.cif \ + relax_structure structure_data=$S/Li.cif output_dir=$O/tensornet_cpu/Li \ + relax_structure structure_data=$S/Fe.cif output_dir=$O/tensornet_cpu/Fe \ + relax_structure structure_data=$S/Cu.cif output_dir=$O/tensornet_cpu/Cu \ + relax_structure structure_data=$S/Si.cif output_dir=$O/tensornet_cpu/Si \ + relax_structure structure_data=$S/O.cif output_dir=$O/tensornet_cpu/O +``` + +The tool defaults are `fmax=0.02`, `steps=500`, `optimizer=FIRE` and `relax_cell=True`. The tool calls +were split over several CLI invocations, but the parameters are the same as above. Each run takes +seconds to a few minutes on CPU. `CHGNet-MPtrj-2023.12.1-2.7M-PES` is not recomputed: the current +matgl 4.x wrapper (`src/utils/mlips/matgl/matgl_wrapper.py`) cannot load it. + +### 3. Formation energies of Li2O and Fe2O3 (MACE-MP-medium) + +1. Relax the MP structures of Li2O (mp-1960) and Fe2O3 (mp-19770, the GGA+U entry structure) with the + same `mace relax_structure` call. +2. Apply the MP2020 correction with + [mat-dft-mixing-functionals](../../../mat-dft-mixing-functionals/SKILL.md). `check_compatibility.py` + reports that MACE-MP-medium requires it. + +```bash +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py \ + skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Li2O_MACE-MP-medium_relaxed.cif --energy -14.235254287719727 +# -> correction -0.687 eV (oxide); corrected -14.9223 eV +venv/run cpu python skills/mat-dft-mixing-functionals/scripts/apply_correction.py \ + skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/Fe2O3_MACE-MP-medium_relaxed.cif --energy -66.2035903930664 +# -> correction -13.146 eV (oxide -4.122, Fe GGA/GGA+U mixing -9.024); corrected -79.3496 eV +``` + +$$\Delta H_f = \frac{E^{\mathrm{MLIP}}_{\mathrm{compound}} + E^{\mathrm{MP2020}}_{\mathrm{corr}} - \sum_i n_i\,\mu_i^{\mathrm{MLIP}}}{\sum_i n_i}$$ + +Here μ<sub>i</sub> are the library energies from step 1. The results are in +[`formation_energies.csv`](formation_energies.csv). + +## Results + +### GGA: MPtrj checkpoints vs MP GGA (thermo type `GGA_GGA+U`) + +Δ = library − MP, in meV/atom ([`comparison_vs_mp.csv`](comparison_vs_mp.csv)). + +| Element | MP ID | MP GGA (eV/atom) | MACE-MP-medium (eV/atom) | Δ | CHGNet-MPtrj-2023.12.1 (eV/atom) | Δ | +| :--- | :--- | ---: | ---: | ---: | ---: | ---: | +| Li | mp-1018134 | -1.90892 | -1.90653 | +2.4 | -1.86350 | +45.4 | +| Fe | mp-13 | -8.47002 | -8.39086 | +79.2 | -8.35561 | +114.4 | +| Cu | mp-30 | -4.09921 | -4.08482 | +14.4 | -4.07275 | +26.5 | +| Si | mp-149 | -5.42532 | -5.34204 | +83.3 | -5.39151 | +33.8 | +| O | mp-12957 | -4.94796 | -4.92510 | +22.9 (single point, see below) | -4.86834 | +79.6 | +| **MAE** | | | | **40.4** | | **59.9** | +| **Published energy MAE** | | | | 18 (MACE-MP-0 medium, MPtrj) | | 30 (CHGNet, MPtrj test set) | + +The deviations are 2–114 meV/atom, and they are positive for every element. In other words, both +models slightly underbind these elements relative to DFT. The mean deviation is about 2.2× +MACE-MP-0's and 2.0× CHGNet's published MPtrj energy MAE. + +That is within expected scatter, for two reasons: + +- An MAE is an average over many structures. Individual structures, such as Fe (+79 and +114 meV/atom) + and Si (+83 meV/atom for MACE), can sit several MAEs away. +- The MP energies here are from the 2026.04.13 database, while MPtrj was parsed from the September 2022 + MP database (Deng et al., 2023). MP's current task for a material need not be the one the models + were trained on. + +The published CHGNet number is for the original CHGNet. `CHGNet-MPtrj-2023.12.1-2.7M-PES` is MatGL's +re-implementation trained on MPtrj; the MatPES paper reports 30 meV/atom validation MAE for a +MatGL CHGNet trained on MPtrj (Kaplan et al., 2025, Table 1). + +**MACE-MP-medium O is stored as a single point on MP's O2 structure.** MACE-MP-medium has no +molecular minimum for this crystal. The library protocol (cell relaxation, 500 FIRE steps) does not +converge and ends in an unphysical structure at -5.789 eV/atom +([O2_MACE-MP-medium_relaxed.cif](O2_MACE-MP-medium_relaxed.cif)): + +- the volume doubles from 13.46 to 26.2 Å<sup>3</sup>/atom; +- the O–O bond contracts from 1.231 to 1.13–1.14 Å; +- the shortest intermolecular contact drops from 2.14 to 1.92 Å. + +Even a positions-only relaxation in MP's cell collapses the same way (1.92 Å contacts). The library +therefore stores the single point, **-4.9251 eV/atom, +22.9 meV/atom from MP**. Before this +correction it held the collapsed -5.789 eV/atom, an O reference 0.86 eV/atom too low that made +every oxide formation energy too positive by 0.86 eV per O atom. The other MPtrj library entries for O are consistent with MP: + +| Checkpoint | Δ vs MP (meV/atom) | +| :--- | ---: | +| MACE-MP-small | -2.4 | +| MACE-MP-large | -38.6 | +| M3GNet-MP-2021.2.8-PES | +7.5 | +| CHGNet-MPtrj-2024.2.13-11M-PES | +87.0 | + +### r2SCAN: MatPES checkpoints vs MP r2SCAN (thermo type `R2SCAN`) + +Δ in meV/atom. + +| Element | MP ID | MP r2SCAN (eV/atom) | TensorNet-MatPES-r2SCAN (eV/atom) | Δ | MACE-MATPES-R2SCAN-0 (eV/atom) | Δ | +| :--- | :--- | ---: | ---: | ---: | ---: | ---: | +| Li | mp-1018134 | -2.38671 | -2.37420 | +12.5 | -2.36335 | +23.4 | +| Fe | mp-13 | -14.41339 | -14.41332 | +0.1 | -14.44184 | -28.5 | +| Cu | mp-30 | -10.84680 | -10.82150 | +25.3 | -10.83915 | +7.6 | +| Si | mp-149 | -8.77376 | -8.65597 | +117.8 | -8.79134 | -17.6 | +| O | mp-1524462 | -5.97253 | -5.88344 | +89.1 | -5.89470 | +77.8 | +| **MAE** | | | | 49.0 | | **31.0** | +| **Published energy MAE** (MatPES r2SCAN test set) | | | | 34 (TensorNet) | | — | + +- **MACE-MATPES-R2SCAN-0** agrees with MP r2SCAN to 31 meV/atom MAE (8–78 meV/atom per element). That + is in line with the 30–44 meV/atom test MAEs that Kaplan et al. (2025, Table 1) report for MatPES + r2SCAN models (CHGNet 30, TensorNet 34, M3GNet 44). The MatPES paper reports no number for the MACE + model itself. +- Exact agreement is not expected. MatPES uses the PBE 64 pseudopotential set and its own + `MatPESStaticSet` parameters (Kaplan et al., 2025), which differ from MP's r2SCAN workflow. Even so, + the MACE-MATPES-R2SCAN-0 deviations stay below 80 meV/atom for these elements. +- **TensorNet-MatPES-r2SCAN** deviates from MP r2SCAN by 49.0 meV/atom MAE, close to its published + 34 meV/atom. Its library file was regenerated (2026-10) with the weights the matgl wrapper loads + under this name (`TensorNet-PES-MatPES-r2SCAN-2025.2`). The previous file held the energies of the + older weights: Fe, Si and O were off by 11, 79 and 493 meV/atom, and the MAE vs MP was 164.5 meV/atom. + +**Do not mix functionals.** The MatPES-PBE checkpoints are on yet another absolute scale. For Cu the +library holds -3.746 (CHGNet-MatPES-PBE), -3.760 (TensorNet-MatPES-PBE) and -3.745 eV/atom +(MACE-MATPES-PBE-0), 339–354 meV/atom above MP's GGA value. Always take references and compound +energies from the same checkpoint. + +### Library reproducibility (CPU recomputation, [`cpu_verification.json`](cpu_verification.json)) + +Recomputed minus library, in meV/atom. + +| Checkpoint | Li | Fe | Cu | Si | O | +| :--- | ---: | ---: | ---: | ---: | ---: | +| MACE-MP-medium | 0.0 | 0.0 | 0.0 | 0.0 | -864.3 (collapsed relaxation; library stores the single point) | +| MACE-MATPES-R2SCAN-0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.2 (not converged, stays molecular) | +| TensorNet-MatPES-r2SCAN-v2025.1-PES | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 (regenerated library) | + +All three libraries are reproduced to within 0.05 meV/atom by the protocol stated in `SKILL.md`, except +the deliberate single-point O entry of MACE-MP-medium. +The MACE-MATPES-R2SCAN-0 O2 relaxation also hits the 500-step limit, but it ends at a final fmax of +0.09 eV/Å with the molecules intact (O–O 1.21–1.22 Å). Its stored value is therefore a reasonable +reference even though the relaxation is formally unconverged. + +### Formation energies with MACE-MP-medium ([`formation_energies.csv`](formation_energies.csv)) + +MP values are GGA_GGA+U `formation_energy_per_atom`. Δ = MLIP − MP. + +| Compound | MP ID | Variant | μ<sub>O</sub> (eV/atom) | ΔH<sub>f</sub> MLIP (eV/atom) | ΔH<sub>f</sub> MP (eV/atom) | Δ (meV/atom) | +| :--- | :--- | :--- | ---: | ---: | ---: | ---: | +| Li2O | mp-1960 | raw MLIP energy, no MP2020 | -4.9251 (library) | -1.8324 | -2.0616 | +229.2 | +| Li2O | mp-1960 | **MP2020-corrected** | -4.9251 (library) | **-2.0614** | -2.0616 | **+0.2** | +| Fe2O3 | mp-19770 | raw MLIP energy, no MP2020 | -4.9251 (library) | -0.3090 | -1.7071 | +1398.1 | +| Fe2O3 | mp-19770 | **MP2020-corrected** | -4.9251 (library) | **-1.6236** | -1.7071 | **+83.5** | + +- **The MP2020 correction is essential for MACE-MP-medium.** Without it, Li2O is off by 0.23 eV/atom + and Fe2O3 by 1.40 eV/atom. Fe2O3 is worse because the Fe GGA+U/GGA mixing correction is missing. +- **With the correction and a sound O reference:** + - Li2O matches MP to 0.2 meV/atom. The per-structure errors largely cancel: Li2O +9.5, Li +2.4 and + O +22.9 meV/atom. + - Fe2O3 is within 84 meV/atom. This error comes from the compound itself: MACE-MP-medium's Fe2O3 + energy is 129 meV/atom above MP's uncorrected GGA+U value, and only partly cancelled by the Fe + (+79) and O (+23) reference errors. +- **The O reference matters.** The former library value (-5.789 eV/atom, a collapsed relaxation) was + 0.86 eV per O atom too low. It raised the errors vs MP to +288 meV/atom for Li2O and +602 meV/atom + for Fe2O3. + +## References + +- A. Jain et al., "Commentary: The Materials Project: A materials genome approach to accelerating materials + innovation", *APL Mater.* **1**, 011002 (2013). [DOI: 10.1063/1.4812323](https://doi.org/10.1063/1.4812323) +- I. Batatia, P. Benner, Y. Chiang et al., "A foundation model for atomistic materials chemistry", + arXiv:2401.00096 (v3, 2025). The Methods section reports an energy MAE of 18 meV/atom and a force MAE + of 39 meV/Å for the medium model. [DOI: 10.48550/arXiv.2401.00096](https://doi.org/10.48550/arXiv.2401.00096) +- B. Deng, P. Zhong, K. Jun, J. Riebesell, K. Han, C. J. Bartel, G. Ceder, "CHGNet as a pretrained universal + neural network potential for charge-informed atomistic modelling", *Nat. Mach. Intell.* **5**, 1031–1041 + (2023). Table I: energy MAE 30 meV/atom on the MPtrj test set. + [DOI: 10.1038/s42256-023-00716-3](https://doi.org/10.1038/s42256-023-00716-3) +- A. D. Kaplan, R. Liu, J. Qi et al., "A Foundational Potential Energy Surface Dataset for Materials", + arXiv:2503.04070 (2025). Table 1: MatPES r2SCAN test energy MAEs of 30 (CHGNet), 34 (TensorNet) and + 44 (M3GNet) meV/atom. [DOI: 10.48550/arXiv.2503.04070](https://doi.org/10.48550/arXiv.2503.04070) +- A. Wang et al., "A framework for quantifying uncertainty in DFT energy corrections", *Sci. Rep.* **11**, + 15496 (2021). [DOI: 10.1038/s41598-021-94550-5](https://doi.org/10.1038/s41598-021-94550-5) +- R. S. Kingsbury et al., "A flexible and scalable scheme for mixing computed formation energies from + different levels of theory", *npj Comput. Mater.* **8**, 195 (2022). + [DOI: 10.1038/s41524-022-00881-w](https://doi.org/10.1038/s41524-022-00881-w) + +## 3D Structures + +- [O2_MACE-MP-medium_relaxed.cif](O2_MACE-MP-medium_relaxed.cif): unphysical, unconverged MACE-MP-medium + O2 relaxation that produced the former library O value +- [Li2O_MACE-MP-medium_relaxed.cif](Li2O_MACE-MP-medium_relaxed.cif) +- [Fe2O3_MACE-MP-medium_relaxed.cif](Fe2O3_MACE-MP-medium_relaxed.cif) +- [O.cif](../../resources/structures/O.cif): MP O2 ground state mp-12957 (library input) diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/elemental_energies.json b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/elemental_energies.json new file mode 100644 index 00000000..2fd87042 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/elemental_energies.json @@ -0,0 +1,7 @@ +{ + "Li": -2.374201933542887, + "Fe": -14.413324356079102, + "Cu": -10.82149887084961, + "O": -5.883436679840088, + "Si": -8.655970573425293 +} diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/input_configs.yaml b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/input_configs.yaml new file mode 100644 index 00000000..37cdff91 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/input_configs.yaml @@ -0,0 +1,9 @@ +elements: +- Li +- Fe +- Cu +- O +- Si +checkpoint: TensorNet-MatPES-r2SCAN-v2025.1-PES +resources_dir: null +output: skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/TensorNet-MatPES-r2SCAN-v2025.1-PES/elemental_energies.json diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/comparison_vs_mp.csv b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/comparison_vs_mp.csv new file mode 100644 index 00000000..2715eaf0 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/comparison_vs_mp.csv @@ -0,0 +1,21 @@ +element,mp_functional,mp_material_id,mp_energy_eV_per_atom,checkpoint,library_energy_eV_per_atom,delta_meV_per_atom +Li,GGA,mp-1018134,-1.908923,MACE-MP-medium,-1.906529,2.4 +Fe,GGA,mp-13,-8.470021,MACE-MP-medium,-8.390863,79.2 +Cu,GGA,mp-30,-4.099207,MACE-MP-medium,-4.08482,14.4 +O,GGA,mp-12957,-4.947961,MACE-MP-medium,-4.925097,22.9 +Si,GGA,mp-149,-5.425318,MACE-MP-medium,-5.342036,83.3 +Li,GGA,mp-1018134,-1.908923,CHGNet-MPtrj-2023.12.1-2.7M-PES,-1.863496,45.4 +Fe,GGA,mp-13,-8.470021,CHGNet-MPtrj-2023.12.1-2.7M-PES,-8.35561,114.4 +Cu,GGA,mp-30,-4.099207,CHGNet-MPtrj-2023.12.1-2.7M-PES,-4.072753,26.5 +O,GGA,mp-12957,-4.947961,CHGNet-MPtrj-2023.12.1-2.7M-PES,-4.868342,79.6 +Si,GGA,mp-149,-5.425318,CHGNet-MPtrj-2023.12.1-2.7M-PES,-5.391513,33.8 +Li,r2SCAN,mp-1018134,-2.386706,TensorNet-MatPES-r2SCAN-v2025.1-PES,-2.374202,12.5 +Fe,r2SCAN,mp-13,-14.413389,TensorNet-MatPES-r2SCAN-v2025.1-PES,-14.413324,0.1 +Cu,r2SCAN,mp-30,-10.846796,TensorNet-MatPES-r2SCAN-v2025.1-PES,-10.821499,25.3 +O,r2SCAN,mp-1524462,-5.972534,TensorNet-MatPES-r2SCAN-v2025.1-PES,-5.883437,89.1 +Si,r2SCAN,mp-149,-8.773765,TensorNet-MatPES-r2SCAN-v2025.1-PES,-8.655971,117.8 +Li,r2SCAN,mp-1018134,-2.386706,MACE-MATPES-R2SCAN-0,-2.363348,23.4 +Fe,r2SCAN,mp-13,-14.413389,MACE-MATPES-R2SCAN-0,-14.441841,-28.5 +Cu,r2SCAN,mp-30,-10.846796,MACE-MATPES-R2SCAN-0,-10.839152,7.6 +O,r2SCAN,mp-1524462,-5.972534,MACE-MATPES-R2SCAN-0,-5.894701,77.8 +Si,r2SCAN,mp-149,-8.773765,MACE-MATPES-R2SCAN-0,-8.791338,-17.6 diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/cpu_verification.json b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/cpu_verification.json new file mode 100644 index 00000000..1e4728b3 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/cpu_verification.json @@ -0,0 +1,113 @@ +{ + "protocol": "mace/matgl MCP CLI on CPU: relax_structure(relax_cell=True, fmax=0.02, steps=500, FIRE); single point = predict_structure on the library CIF (MP structure)", + "results": { + "MACE-MP-medium": { + "Li": { + "library_eV_per_atom": -1.906529, + "recomputed_relaxed_eV_per_atom": -1.906527, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + }, + "Fe": { + "library_eV_per_atom": -8.390863, + "recomputed_relaxed_eV_per_atom": -8.390862, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + }, + "Cu": { + "library_eV_per_atom": -4.08482, + "recomputed_relaxed_eV_per_atom": -4.08482, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + }, + "O": { + "library_eV_per_atom": -4.925097, + "recomputed_relaxed_eV_per_atom": -5.789394, + "recomputed_minus_library_meV_per_atom": -864.3, + "relaxation_converged": false, + "single_point_on_mp_structure_eV_per_atom": -4.925097, + "previous_library_eV_per_atom": -5.788798, + "library_source": "single point on the MP structure; the cell relaxation collapses the O2 crystal (not a molecular minimum of this model)" + }, + "Si": { + "library_eV_per_atom": -5.342036, + "recomputed_relaxed_eV_per_atom": -5.342029, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + } + }, + "MACE-MATPES-R2SCAN-0": { + "Li": { + "library_eV_per_atom": -2.363348, + "recomputed_relaxed_eV_per_atom": -2.363316, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + }, + "Fe": { + "library_eV_per_atom": -14.441841, + "recomputed_relaxed_eV_per_atom": -14.441834, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + }, + "Cu": { + "library_eV_per_atom": -10.839152, + "recomputed_relaxed_eV_per_atom": -10.839136, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + }, + "O": { + "library_eV_per_atom": -5.894701, + "recomputed_relaxed_eV_per_atom": -5.894891, + "recomputed_minus_library_meV_per_atom": -0.2, + "relaxation_converged": false, + "single_point_on_mp_structure_eV_per_atom": -5.778373 + }, + "Si": { + "library_eV_per_atom": -8.791338, + "recomputed_relaxed_eV_per_atom": -8.791319, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true + } + }, + "TensorNet-MatPES-r2SCAN-v2025.1-PES": { + "Li": { + "library_eV_per_atom": -2.374202, + "recomputed_relaxed_eV_per_atom": -2.374202, + "recomputed_minus_library_meV_per_atom": -0.0, + "relaxation_converged": true, + "previous_library_eV_per_atom": -2.374505 + }, + "Fe": { + "library_eV_per_atom": -14.413324, + "recomputed_relaxed_eV_per_atom": -14.413324, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true, + "previous_library_eV_per_atom": -14.402709 + }, + "Cu": { + "library_eV_per_atom": -10.821499, + "recomputed_relaxed_eV_per_atom": -10.821499, + "recomputed_minus_library_meV_per_atom": -0.0, + "relaxation_converged": true, + "previous_library_eV_per_atom": -10.825553 + }, + "O": { + "library_eV_per_atom": -5.883437, + "recomputed_relaxed_eV_per_atom": -5.883435, + "recomputed_minus_library_meV_per_atom": 0.0, + "relaxation_converged": true, + "single_point_on_mp_structure_eV_per_atom": -5.789088, + "previous_library_eV_per_atom": -5.390427 + }, + "Si": { + "library_eV_per_atom": -8.655971, + "recomputed_relaxed_eV_per_atom": -8.655971, + "recomputed_minus_library_meV_per_atom": -0.0, + "relaxation_converged": true, + "single_point_on_mp_structure_eV_per_atom": -8.655861, + "previous_library_eV_per_atom": -8.57743 + }, + "note": "library regenerated (2026-10) with the weights matgl 4.x loads under this name (TensorNet-PES-MatPES-r2SCAN-2025.2); previous_library_eV_per_atom are the stale entries" + } + } +} diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/formation_energies.csv b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/formation_energies.csv new file mode 100644 index 00000000..80e21cb9 --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/formation_energies.csv @@ -0,0 +1,5 @@ +formula,mp_material_id,variant,E_mlip_total_eV,mp2020_correction_eV,mu_O_eV_per_atom,Ef_mlip_eV_per_atom,Ef_mp_gga_eV_per_atom,delta_meV_per_atom +Li2O,mp-1960,"raw MLIP energy, O ref = library (O2 single point)",-14.2353,0.0,-4.9251,-1.8324,-2.0616,229.2 +Li2O,mp-1960,"MP2020-corrected, O ref = library (O2 single point)",-14.2353,-0.687,-4.9251,-2.0614,-2.0616,0.2 +Fe2O3,mp-19770,"raw MLIP energy, O ref = library (O2 single point)",-66.2036,0.0,-4.9251,-0.309,-1.7071,1398.1 +Fe2O3,mp-19770,"MP2020-corrected, O ref = library (O2 single point)",-66.2036,-13.146,-4.9251,-1.6236,-1.7071,83.5 diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/mp_reference_energies.json b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/mp_reference_energies.json new file mode 100644 index 00000000..8a02ba5c --- /dev/null +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/mp_reference_energies.json @@ -0,0 +1,125 @@ +{ + "source": "Materials Project API, materials/thermo endpoint (thermo_types GGA_GGA+U and R2SCAN)", + "mp_database_version": "2026.04.13", + "retrieved": "2026-10-10", + "elements": { + "Li": { + "material_id": "mp-1018134", + "formula": "Li", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -2.3867064133333336, + "energy_per_atom_eV": -2.3867064133333336, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + }, + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -1.9089228666666667, + "energy_per_atom_eV": -1.9089228666666667, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + } + }, + "Fe": { + "material_id": "mp-13", + "formula": "Fe", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -14.41338864, + "energy_per_atom_eV": -14.41338864, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + }, + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -8.47002121, + "energy_per_atom_eV": -8.47002121, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + } + }, + "Cu": { + "material_id": "mp-30", + "formula": "Cu", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -10.846796, + "energy_per_atom_eV": -10.846796, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + }, + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -4.09920667, + "energy_per_atom_eV": -4.09920667, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + } + }, + "O": { + "material_id": "mp-12957", + "formula": "O2", + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -4.947961005, + "energy_per_atom_eV": -4.947961005, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + } + }, + "Si": { + "material_id": "mp-149", + "formula": "Si", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -8.773764595, + "energy_per_atom_eV": -8.773764595, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + }, + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -5.42531803, + "energy_per_atom_eV": -5.42531803, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + } + } + }, + "O_r2SCAN_reference": { + "material_id": "mp-1524462", + "formula": "O2", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -5.97253365125, + "energy_per_atom_eV": -5.97253365125, + "formation_energy_per_atom_eV": 0.0, + "energy_above_hull_eV": 0.0 + } + }, + "compounds": { + "Li2O": { + "material_id": "mp-1960", + "formula": "Li2O", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -5.6088534800000005, + "energy_per_atom_eV": -5.6088534800000005, + "formation_energy_per_atom_eV": -2.0268713206944446, + "energy_above_hull_eV": 0.0 + }, + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -4.754533493333333, + "energy_per_atom_eV": -4.983533493333333, + "formation_energy_per_atom_eV": -2.0615979138888885, + "energy_above_hull_eV": 0.0 + } + }, + "Fe2O3": { + "material_id": "mp-19770", + "formula": "Fe2O3", + "r2SCAN": { + "uncorrected_energy_per_atom_eV": -10.894034464, + "energy_per_atom_eV": -10.894034464, + "formation_energy_per_atom_eV": -1.545158817250001, + "energy_above_hull_eV": 0.0 + }, + "GGA_GGA+U": { + "uncorrected_energy_per_atom_eV": -6.74927644, + "energy_per_atom_eV": -8.06387644, + "formation_energy_per_atom_eV": -1.7070913529999998, + "energy_above_hull_eV": 0.0 + } + } + } +} diff --git a/skills/mat-elemental-energies/resources/MACE-MATPES-PBE-0_energies.json b/skills/mat-elemental-energies/resources/MACE-MATPES-PBE-0_energies.json index 94c569c1..c2dd1139 100644 --- a/skills/mat-elemental-energies/resources/MACE-MATPES-PBE-0_energies.json +++ b/skills/mat-elemental-energies/resources/MACE-MATPES-PBE-0_energies.json @@ -50,7 +50,7 @@ "Ne": -0.017993777990341187, "Ni": -5.4747161865234375, "Np": -12.62132453918457, - "O": -5.574851036071777, + "O": -4.905177116394043, "Os": -11.212753295898438, "P": -5.29296148390997, "Pa": -9.410263061523438, diff --git a/skills/mat-elemental-energies/resources/MACE-MH-0_matpes_r2scan_energies.json b/skills/mat-elemental-energies/resources/MACE-MH-0_matpes_r2scan_energies.json index 23d3ae57..e072d6ff 100644 --- a/skills/mat-elemental-energies/resources/MACE-MH-0_matpes_r2scan_energies.json +++ b/skills/mat-elemental-energies/resources/MACE-MH-0_matpes_r2scan_energies.json @@ -50,7 +50,7 @@ "Ne": -0.010095709003508091, "Ni": -5.478516101837158, "Np": -12.625967025756836, - "O": -5.029990196228027, + "O": -4.8522562980651855, "Os": -11.245389938354492, "P": -5.3650767008463545, "Pa": -9.363788604736328, diff --git a/skills/mat-elemental-energies/resources/MACE-MH-0_oc20_usemppbe_energies.json b/skills/mat-elemental-energies/resources/MACE-MH-0_oc20_usemppbe_energies.json index a3a89d6d..8edde0e2 100644 --- a/skills/mat-elemental-energies/resources/MACE-MH-0_oc20_usemppbe_energies.json +++ b/skills/mat-elemental-energies/resources/MACE-MH-0_oc20_usemppbe_energies.json @@ -50,7 +50,7 @@ "Ne": -0.01036384329199791, "Ni": -4.90067720413208, "Np": -12.318536758422852, - "O": -5.511112689971924, + "O": -4.699367046356201, "Os": -10.560047149658203, "P": -5.085003807431176, "Pa": -9.082987785339355, diff --git a/skills/mat-elemental-energies/resources/MACE-MH-0_omat_pbe_energies.json b/skills/mat-elemental-energies/resources/MACE-MH-0_omat_pbe_energies.json index dafcede9..d0c91106 100644 --- a/skills/mat-elemental-energies/resources/MACE-MH-0_omat_pbe_energies.json +++ b/skills/mat-elemental-energies/resources/MACE-MH-0_omat_pbe_energies.json @@ -50,7 +50,7 @@ "Ne": -0.010580198839306831, "Ni": -5.4892730712890625, "Np": -12.712600708007812, - "O": -5.42378044128418, + "O": -4.9920454025268555, "Os": -11.244077682495117, "P": -5.409292311895461, "Pa": -9.393148422241211, diff --git a/skills/mat-elemental-energies/resources/MACE-MP-medium_energies.json b/skills/mat-elemental-energies/resources/MACE-MP-medium_energies.json index f39b847e..0019daa7 100644 --- a/skills/mat-elemental-energies/resources/MACE-MP-medium_energies.json +++ b/skills/mat-elemental-energies/resources/MACE-MP-medium_energies.json @@ -50,7 +50,7 @@ "Ne": 0.15439437329769135, "Ni": -5.73189640045166, "Np": -12.812625885009766, - "O": -5.788797855377197, + "O": -4.9250969886779785, "Os": -11.208642959594727, "P": -5.400138491675968, "Pa": -9.413429260253906, diff --git a/skills/mat-elemental-energies/resources/MACE-MP-small_energies.json b/skills/mat-elemental-energies/resources/MACE-MP-small_energies.json index c595a13c..d622e7d6 100644 --- a/skills/mat-elemental-energies/resources/MACE-MP-small_energies.json +++ b/skills/mat-elemental-energies/resources/MACE-MP-small_energies.json @@ -14,7 +14,7 @@ "Ca": -1.9989070892333984, "Cd": -0.887504518032074, "Ce": -5.86875057220459, - "Cl": -2.1461212635040283, + "Cl": -1.8377246856689453, "Co": -7.066658973693848, "Cr": -9.455997467041016, "Cs": -0.8426558971405029, diff --git a/skills/mat-elemental-energies/resources/TensorNet-MatPES-r2SCAN-v2025.1-PES_energies.json b/skills/mat-elemental-energies/resources/TensorNet-MatPES-r2SCAN-v2025.1-PES_energies.json index b495ca3c..ae49c264 100644 --- a/skills/mat-elemental-energies/resources/TensorNet-MatPES-r2SCAN-v2025.1-PES_energies.json +++ b/skills/mat-elemental-energies/resources/TensorNet-MatPES-r2SCAN-v2025.1-PES_energies.json @@ -1,91 +1,91 @@ { - "Ac": -68.5199966430664, - "Ag": -21.311115264892578, - "Al": -6.717072486877441, - "Ar": -4.841001510620117, - "As": -14.612239837646484, - "Au": -50.5753288269043, - "B": -7.083190282185872, - "Ba": -27.7448673248291, - "Be": -4.286919593811035, - "Bi": -58.351829528808594, - "Br": -13.141389846801758, - "C": -9.839143753051758, - "Ca": -7.049148082733154, - "Cd": -20.053632736206055, - "Ce": -30.76491355895996, - "Cl": -6.177238464355469, - "Co": -13.22635269165039, - "Cr": -14.867679595947266, - "Cs": -24.853504180908203, - "Cu": -10.825552940368652, - "Dy": -37.790679931640625, - "Er": -36.60657755533854, - "Eu": -39.65090560913086, - "F": -2.8148272037506104, - "Fe": -14.402709007263184, - "Ga": -11.378886222839355, - "Gd": -41.02098846435547, - "Ge": -13.749764442443848, - "H": -2.8555092811584473, - "He": -0.3381635844707489, - "Hf": -45.0371208190918, - "Hg": -49.269775390625, - "Ho": -37.30467987060547, - "I": -24.521251678466797, - "In": -22.559030532836914, - "Ir": -52.28070068359375, - "K": -5.825218677520752, - "Kr": -12.582908630371094, - "La": -29.67662239074707, - "Li": -2.374504566192627, - "Lu": -38.04894256591797, - "Mg": -4.152630805969238, - "Mn": -14.600432297279095, - "Mo": -26.037382125854492, - "N": -7.9742045402526855, - "Na": -3.4960460662841797, - "Nb": -24.67711067199707, - "Nd": -33.04716873168945, - "Ne": -2.66316819190979, - "Ni": -11.981596946716309, - "Np": -83.30326080322266, - "O": -5.3904266357421875, - "Os": -52.784427642822266, - "P": -8.7798338390532, - "Pa": -76.83678436279297, - "Pb": -56.23562240600586, - "Pd": -22.94574737548828, - "Pm": -34.86309051513672, - "Pr": -31.155899047851562, - "Pt": -51.43912887573242, - "Pu": -86.803955078125, - "Rb": -13.751441955566406, - "Re": -52.368797302246094, - "Rh": -24.118242263793945, - "Ru": -25.351791381835938, - "S": -7.612026691436768, - "Sb": -25.505401611328125, - "Sc": -11.378314018249512, - "Se": -13.986112594604492, - "Si": -8.57742977142334, - "Sm": -36.58612823486328, - "Sn": -24.481966018676758, - "Sr": -15.03050708770752, - "Ta": -48.41493326822917, - "Tb": -38.90611267089844, - "Tc": -25.977399826049805, - "Te": -25.18652852376302, - "Th": -73.30408477783203, - "Ti": -12.860307057698568, - "Tl": -53.10227966308594, - "Tm": -35.45771408081055, - "U": -79.79107666015625, - "V": -14.13802719116211, - "W": -51.26278305053711, - "Xe": -24.3206787109375, - "Y": -20.220199584960938, - "Yb": -35.580772399902344, - "Zn": -8.902527809143066, - "Zr": -22.67767333984375 + "Ac": -68.51582336425781, + "Ag": -21.298362731933594, + "Al": -6.699892044067383, + "Ar": -4.870091915130615, + "As": -14.662110328674316, + "Au": -50.58127212524414, + "B": -7.202457427978516, + "Ba": -27.67104148864746, + "Be": -4.202154159545898, + "Bi": -58.41495895385742, + "Br": -13.29550838470459, + "C": -9.983572959899902, + "Ca": -7.02008581161499, + "Cd": -20.0844669342041, + "Ce": -30.811059951782227, + "Cl": -6.1480865478515625, + "Co": -13.201118469238281, + "Cr": -14.657739639282227, + "Cs": -24.885639190673828, + "Cu": -10.82149887084961, + "Dy": -37.77997589111328, + "Er": -36.55847422281901, + "Eu": -39.68348693847656, + "F": -3.1113998889923096, + "Fe": -14.413324356079102, + "Ga": -11.394767761230469, + "Gd": -41.016265869140625, + "Ge": -13.812594413757324, + "H": -3.405813217163086, + "He": -0.8749738931655884, + "Hf": -45.08565139770508, + "Hg": -49.36217753092448, + "Ho": -37.23761749267578, + "I": -24.526453018188477, + "In": -22.561376571655273, + "Ir": -52.2913703918457, + "K": -5.858240127563477, + "Kr": -13.434647878011068, + "La": -29.675573348999023, + "Li": -2.374201933542887, + "Lu": -38.04622141520182, + "Mg": -4.140958309173584, + "Mn": -14.608786747373383, + "Mo": -26.038148880004883, + "N": -9.075651168823242, + "Na": -3.522449254989624, + "Nb": -24.7504825592041, + "Nd": -32.98007583618164, + "Ne": -1.921128273010254, + "Ni": -11.951407432556152, + "Np": -82.91304779052734, + "O": -5.883436679840088, + "Os": -52.864959716796875, + "P": -8.983903430757069, + "Pa": -76.88337707519531, + "Pb": -56.27177429199219, + "Pd": -22.93006706237793, + "Pm": -34.70112228393555, + "Pr": -31.176315307617188, + "Pt": -51.47840118408203, + "Pu": -86.37936401367188, + "Rb": -13.901825904846191, + "Re": -52.399200439453125, + "Rh": -24.062501907348633, + "Ru": -25.311603546142578, + "S": -7.995532989501953, + "Sb": -25.610464096069336, + "Sc": -11.319145202636719, + "Se": -14.289965629577637, + "Si": -8.655970573425293, + "Sm": -36.59526443481445, + "Sn": -24.585874557495117, + "Sr": -15.055648803710938, + "Ta": -48.557421875, + "Tb": -38.82282638549805, + "Tc": -25.956615447998047, + "Te": -25.323928833007812, + "Th": -73.37999725341797, + "Ti": -12.850779215494791, + "Tl": -53.14616012573242, + "Tm": -35.3858528137207, + "U": -79.81626892089844, + "V": -14.043255805969238, + "W": -51.37635040283203, + "Xe": -24.39073944091797, + "Y": -20.226383209228516, + "Yb": -35.59297561645508, + "Zn": -8.872861862182617, + "Zr": -22.72309112548828 } diff --git a/skills/mat-elemental-energies/scripts/get_elemental_energies.py b/skills/mat-elemental-energies/scripts/get_elemental_energies.py index eea736bf..18c1d2b9 100644 --- a/skills/mat-elemental-energies/scripts/get_elemental_energies.py +++ b/skills/mat-elemental-energies/scripts/get_elemental_energies.py @@ -2,24 +2,76 @@ Retrieve elemental energies from the library for a given list of elements and a checkpoint. Usage: - python get_elemental_energies.py --elements H Li Fe --checkpoint mace-mp-medium + python get_elemental_energies.py --elements H Li Fe --checkpoint MACE-MP-medium + python get_elemental_energies.py --elements Li O --checkpoint MACE-MP-medium --output refs/energies.json + +Requirements: + - Environment: cpu (run with: venv/run cpu python ...) + - Required packages: none beyond the standard library (PyYAML for input_configs.yaml) """ import argparse import json import os +import sys + +# The library ships next to this script, so resolve it independently of the working directory. +DEFAULT_RESOURCES_DIR = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "..", "resources" +) -def get_elemental_energies(elements, checkpoint, resources_dir="../resources"): +def resolve_library_path(checkpoint: str, resources_dir: str) -> str: """ - Retrieve energies for a list of elements from the library. + Locate the library file for a checkpoint, matching the name case-insensitively. + + Args: + checkpoint: MLIP checkpoint name (e.g. "MACE-MP-medium"). + resources_dir: Directory containing ``<checkpoint>_energies.json`` files. + + Returns: + Path to the library file, or the exact-case path if no file matches. """ - library_path = os.path.join(resources_dir, f"{checkpoint}_energies.json") + exact = os.path.join(resources_dir, f"{checkpoint}_energies.json") + if os.path.exists(exact) or not os.path.isdir(resources_dir): + return exact + target = f"{checkpoint}_energies.json".lower() + for fname in sorted(os.listdir(resources_dir)): + if fname.lower() == target: + return os.path.join(resources_dir, fname) + return exact + + +def get_elemental_energies( + elements: list[str], checkpoint: str, resources_dir: str = DEFAULT_RESOURCES_DIR +) -> dict[str, float] | None: + """ + Retrieve energies (eV/atom) for a list of elements from the library. + + Args: + elements: Element symbols (e.g. ["Li", "Fe", "O"]). + checkpoint: MLIP checkpoint name; matched case-insensitively. + resources_dir: Directory containing the library files. + + Returns: + Mapping of element symbol to energy per atom in eV, or None if the + checkpoint has no library file. + """ + library_path = resolve_library_path(checkpoint, resources_dir) if not os.path.exists(library_path): + available = [] + if os.path.isdir(resources_dir): + available = sorted( + f[: -len("_energies.json")] + for f in os.listdir(resources_dir) + if f.endswith("_energies.json") + ) print( f"Error: Library file not found for checkpoint '{checkpoint}' at {library_path}" ) + if available: + print(f"Available checkpoints: {', '.join(available)}") return None with open(library_path, "r") as f: @@ -45,23 +97,40 @@ def main(): description="Get elemental energies from the library." ) parser.add_argument("--elements", nargs="+", required=True, help="List of elements") - parser.add_argument("--checkpoint", required=True, help="MLIP checkpoint name") + parser.add_argument( + "--checkpoint", + required=True, + help="MLIP checkpoint name (case-insensitive), e.g. MACE-MP-medium", + ) parser.add_argument( "--resources_dir", - default="../resources", - help="Directory containing library files", + default=None, + help="Directory containing library files (default: the skill's resources/)", + ) + parser.add_argument( + "--output", + default=None, + help="Optional JSON file to write the energies to; input_configs.yaml is saved next to it", ) args = parser.parse_args() - results = get_elemental_energies(args.elements, args.checkpoint, args.resources_dir) + resources_dir = args.resources_dir or DEFAULT_RESOURCES_DIR + results = get_elemental_energies(args.elements, args.checkpoint, resources_dir) + if results is None: + sys.exit(1) + + print(json.dumps(results, indent=2)) - if results: - print(json.dumps(results, indent=2)) + if args.output: + out_dir = os.path.dirname(os.path.abspath(args.output)) + os.makedirs(out_dir, exist_ok=True) + with open(args.output, "w") as f: + json.dump(results, f, indent=2) - # Save input configs for reproducibility - from src.utils.config_utils import save_skill_inputs + # Save input configs for reproducibility next to the results, never into the library. + from src.utils.config_utils import save_skill_inputs - save_skill_inputs(args, args.resources_dir) + save_skill_inputs(args, out_dir) if __name__ == "__main__": From 1bb2a62456a32c2f91ca5e96e798997d125d9a42 Mon Sep 17 00:00:00 2001 From: bowen-bd <bowendeng@berkeley.edu> Date: Sat, 10 Oct 2026 13:39:05 -0400 Subject: [PATCH 08/12] docs(ml-mlip-nvalchemi): add batched-accuracy example; fix(ml-mlip-speed): shared results file - nvalchemi: batched vs sequential static inference agrees to float32 round-off for MACE-OMAT-0-small and TensorNet, matching the stored table. - ml-mlip-speed: runs and --only_plot share --results_file; --hardware_name labels replots; PROJECT_ROOT fixed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --- skills/ml-mlip-nvalchemi/SKILL.md | 4 + .../cu_batch_static_accuracy/README.md | 105 ++++++++++++++++++ .../results_mace.json | 48 ++++++++ .../results_matgl.json | 48 ++++++++ skills/ml-mlip-speed/SKILL.md | 8 +- .../ml-mlip-speed/scripts/benchmark_mlips.py | 61 +++++----- 6 files changed, 245 insertions(+), 29 deletions(-) create mode 100644 skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md create mode 100644 skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_mace.json create mode 100644 skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_matgl.json diff --git a/skills/ml-mlip-nvalchemi/SKILL.md b/skills/ml-mlip-nvalchemi/SKILL.md index 86afb179..3e637cd4 100644 --- a/skills/ml-mlip-nvalchemi/SKILL.md +++ b/skills/ml-mlip-nvalchemi/SKILL.md @@ -316,6 +316,10 @@ See [resources/benchmark_results.md](resources/benchmark_results.md) for the ful ¹ M3GNet energy errors (~0.7–1.8×10⁻³ eV) from different neighbor-list graph connectivity (NValchemi GPU warp kernel vs. CPU `radius_graph_pbc`). Forces are exact (ΔF = 0). Within 5×10⁻³ eV tolerance for PES screening. +## Examples + +- [Batched vs sequential static inference on strained Cu](examples/cu_batch_static_accuracy/README.md): re-runs `run_nvalchemi_benchmark.py` for MACE-OMAT-0-small and TensorNet-PES-MatPES-PBE-2025.2 (N = 2–20). Batched and sequential results agree to float32 round-off (ΔF = 0, ΔE ≤ 1.9e-6 eV), with speedups reported next to the stored table. + ## Constraints - **Explicit opt-in required**: Set `use_nvalchemi=True` for each batch request. diff --git a/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md new file mode 100644 index 00000000..cefa07bc --- /dev/null +++ b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md @@ -0,0 +1,105 @@ +# Batched vs sequential static inference on strained Cu (MACE-OMAT-0-small, TensorNet) + +## Goal + +Reproduce part of [`resources/benchmark_results.md`](../../resources/benchmark_results.md) with the +skill's benchmark script, for two models: + +- **Accuracy (the validation).** NValchemi-batched energies, forces and stresses must equal the + default sequential path (the model's own ASE calculator) to floating-point precision. +- **Speed.** Batched vs sequential wall time. This depends on hardware and load, so it is reported + next to the stored values rather than treated as a pass/fail check. + +The NValchemi backend is **experimental and opt-in**. The script requests it explicitly with +`static_calculation(structures, use_nvalchemi=True)`. Every batched call logged +`Using experimental NValchemi batching. Toolkit 0.2.0 dynamics has known correctness limitations`, +and the script rejects any call whose result does not report `backend == "nvalchemi"` (a silent +sequential fallback). All rows below passed that check. The baseline is the same call without the +flag (`backend == "sequential"`). + +## Inputs + +N = 2, 5, 10 and 20 primitive FCC Cu cells (1 atom each), `a = 3.6 Å` scaled by 0.96–1.04 +(`np.linspace(0.96, 1.04, N)`), built inside the script. Timing is best of 3. The header of +`benchmark_results.md` says "4 atoms", but `_make_cu_structures` calls `bulk("Cu", "fcc", a=...)` +without `cubic=True`, which gives the 1-atom primitive cell. + +## Commands (repository root) + +```bash +venv/run mlip python skills/ml-mlip-nvalchemi/scripts/run_nvalchemi_benchmark.py \ + --env mace --models MACE-OMAT-0-small --device cuda --n-repeat 3 --output results_mace.json +venv/run mlip python skills/ml-mlip-nvalchemi/scripts/run_nvalchemi_benchmark.py \ + --env matgl --models TensorNet-PES-PBE --device cuda --n-repeat 3 --output results_matgl.json +``` + +`--models` filters by label substring; `TensorNet-PES-PBE` selects +`TensorNet-PES-MatPES-PBE-2025.2`. Outputs: [`results_mace.json`](results_mace.json) and +[`results_matgl.json`](results_matgl.json). + +**Hardware:** NVIDIA GB10, unified memory (mlip env: mace-torch 0.3.16, matgl 4.1.0, +nvalchemi-toolkit 0.2.0). Peak memory of each run: 3.0 GB GPU / 2.9 GB RSS (MACE) and +0.5 GB GPU / 2.4 GB RSS (TensorNet). Each run takes under a minute. + +## Results + +### Accuracy: batched minus sequential (max over the N structures) + +| Model | N | ΔE max (eV) | ΔF max (eV/Å) | ΔS max (eV/ų) | Stored ΔE / ΔF / ΔS | +| :--- | :---: | :---: | :---: | :---: | :--- | +| MACE-OMAT-0-small | 2 | 4.8e-07 | 0.0 | 9.2e-08 | 4.8e-07 / 0.0 / 1.8e-07 | +| | 5 | 0.0 | 0.0 | 2.3e-07 | 9.5e-07 / 0.0 / 2.2e-07 | +| | 10 | 1.9e-06 | 0.0 | 3.9e-07 | 1.4e-06 / 0.0 / 2.5e-07 | +| | 20 | 1.4e-06 | 0.0 | 3.0e-07 | 9.5e-07 / 0.0 / 2.5e-07 | +| TensorNet-PES-MatPES-PBE-2025.2 | 2 | 5.7e-07 | 0.0 | 4.1e-08 | 3.8e-07 / 0.0 / 8.9e-08 | +| | 5 | 5.7e-07 | 0.0 | 1.3e-07 | 1.4e-07 / 0.0 / 1.8e-07 | +| | 10 | 8.6e-07 | 0.0 | 1.3e-07 | 8.6e-07 / 0.0 / 1.1e-07 | +| | 20 | 8.6e-07 | 0.0 | 4.3e-07 | 1.3e-06 / 0.0 / 2.4e-07 | + +**Validation passes.** Forces are identical (ΔF = 0) and energy and stress differences are +≤ 1.9 × 10⁻⁶ eV and ≤ 4.3 × 10⁻⁷ eV/ų. That is float32 round-off: the total energies are about +4 eV (MACE-OMAT) per structure, and float32 resolves about 1 part in 10⁷ (≈ 5 × 10⁻⁷ eV). The values +have the same magnitude as the stored table, whose notes attribute them to nondeterministic kernel +ordering. They are well inside the 5 × 10⁻³ eV screening tolerance used in +`benchmark_results.md`. + +### Speed: wall time and speedup (best of 3) + +| Model | N | NV (ms) | Seq (ms) | Speedup | Stored NV / Seq / speedup | +| :--- | :---: | ---: | ---: | ---: | :--- | +| MACE-OMAT-0-small | 2 | 173 | 160 | 0.93× | 158 / 143 / 0.90× | +| | 5 | 21 | 382 | 18.4× | 17 / 361 / 21.7× | +| | 10 | 38 | 952 | 25.1× | 18 / 733 / 41.2× | +| | 20 | 25 | 1562 | 61.7× | 21 / 1420 / 68.0× | +| TensorNet-PES-MatPES-PBE-2025.2 | 2 | 22 | 29 | 1.36× | 19 / 30 / 1.6× | +| | 5 | 22 | 74 | 3.37× | 21 / 75 / 3.6× | +| | 10 | 24 | 145 | 6.07× | 22 / 153 / 7.0× | +| | 20 | 27 | 290 | 10.6× | 28 / 310 / 11.1× | + +The trend reproduces. The batched call costs about the same for every N, while the sequential cost +grows linearly with N, so the speedup grows roughly as N. The per-N values are within 10–40 % of +the stored ones. The largest gap is MACE at N = 10, whose batched time (38 ms) is an outlier. + +Read the speedups with two caveats: + +- **The sequential baseline is dominated by per-structure overhead.** For MACE it rebuilds the ASE + calculator for every structure: about 75 ms per 1-atom cell, against about 7 ms per structure + for TensorNet. For 1-atom cells the comparison mostly measures Python and launch overhead, not + model throughput. It says nothing about MD or relaxation speed. +- **N = 2 for MACE is slower when batched** (0.93×), in both this run and the stored table. The + first batched call includes NValchemi warm-up that best-of-3 does not fully hide. + +## Not reproduced here + +The batched-MD timing (`scripts/run_md_benchmark.py`; stored: MACE-OMAT-0-small 54.5 s sequential +vs 11.1 s batched, 4.9×) was run once. It gave 59.9 s vs 42.8 s (1.4×), but an unrelated +70 GB GPU process was loading on the same unified-memory device during the run. That timing is +therefore not reported as a reproduction. + +## References + +- I. Batatia et al., "A foundation model for atomistic materials chemistry", + [arXiv:2401.00096](https://arxiv.org/abs/2401.00096) (MACE foundation models). +- MatGL / TensorNet: see [`../../SKILL.md`](../../SKILL.md) References. +- Stored values: [`resources/benchmark_results.md`](../../resources/benchmark_results.md) + (NVIDIA GB10, best of 3, same script). diff --git a/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_mace.json b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_mace.json new file mode 100644 index 00000000..2e8d6597 --- /dev/null +++ b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_mace.json @@ -0,0 +1,48 @@ +{ + "env": "mace", + "device": "cuda", + "models": [ + { + "label": "MACE-OMAT-0-small", + "skipped": false, + "rows": [ + { + "n": 2, + "t_nv_ms": 172.8, + "t_seq_ms": 160.2, + "speedup": 0.927, + "de_max": 4.76837158203125e-07, + "df_max": 0.0, + "ds_max": 9.21831997402478e-08 + }, + { + "n": 5, + "t_nv_ms": 20.7, + "t_seq_ms": 381.5, + "speedup": 18.409, + "de_max": 0.0, + "df_max": 0.0, + "ds_max": 2.3096799850463867e-07 + }, + { + "n": 10, + "t_nv_ms": 37.9, + "t_seq_ms": 951.6, + "speedup": 25.121, + "de_max": 1.9073486328125e-06, + "df_max": 0.0, + "ds_max": 3.855675458908081e-07 + }, + { + "n": 20, + "t_nv_ms": 25.3, + "t_seq_ms": 1561.9, + "speedup": 61.652, + "de_max": 1.430511474609375e-06, + "df_max": 0.0, + "ds_max": 2.980232238769531e-07 + } + ] + } + ] +} diff --git a/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_matgl.json b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_matgl.json new file mode 100644 index 00000000..a8f6eb64 --- /dev/null +++ b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/results_matgl.json @@ -0,0 +1,48 @@ +{ + "env": "matgl", + "device": "cuda", + "models": [ + { + "label": "TensorNet-PES-PBE-2025.2", + "skipped": false, + "rows": [ + { + "n": 2, + "t_nv_ms": 21.7, + "t_seq_ms": 29.4, + "speedup": 1.356, + "de_max": 5.719580076224418e-07, + "df_max": 0.0, + "ds_max": 4.0978193283081055e-08 + }, + { + "n": 5, + "t_nv_ms": 22.0, + "t_seq_ms": 74.1, + "speedup": 3.367, + "de_max": 5.719580076224418e-07, + "df_max": 0.0, + "ds_max": 1.2665987014770508e-07 + }, + { + "n": 10, + "t_nv_ms": 23.9, + "t_seq_ms": 145.2, + "speedup": 6.066, + "de_max": 8.585534669869332e-07, + "df_max": 0.0, + "ds_max": 1.2665987014770508e-07 + }, + { + "n": 20, + "t_nv_ms": 27.4, + "t_seq_ms": 289.6, + "speedup": 10.574, + "de_max": 8.585534669869332e-07, + "df_max": 0.0, + "ds_max": 4.3213367462158203e-07 + } + ] + } + ] +} diff --git a/skills/ml-mlip-speed/SKILL.md b/skills/ml-mlip-speed/SKILL.md index f643d379..f10b75da 100644 --- a/skills/ml-mlip-speed/SKILL.md +++ b/skills/ml-mlip-speed/SKILL.md @@ -40,7 +40,13 @@ ${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/bench - `--providers`: Corresponding providers (`mace`, `matgl`, `fairchem`). - `--output_dir`: Directory to save results and plots. - `--max_atoms_limit`: Maximum system size to test (default: 5000). -- `--only_plot`: Re-generate plots from an existing `speed_benchmark.yaml` file without running simulations. +- `--only_plot`: Re-generate plots from an existing results file without running simulations. +- `--results_file`: Results YAML that runs update and `--only_plot` reads (default: `<output_dir>/speed_benchmark.yaml`). +- `--hardware_name`: Label for plot titles and file names (default: the detected GPU name, or `CPU`). Set it when replotting data measured elsewhere, e.g. the stored reference: + ```bash + ${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/benchmark_mlips.py --only_plot \ + --results_file ${CLAUDE_SKILL_DIR}/resources/speed_benchmark_dgx_spark.yaml --hardware_name NVIDIA_GB10 --output_dir plots/ + ``` ### Metrics Explained - **Inference Time / Atom (ms):** The normalized time taken for a single force/energy calculation per atom. Converged values (for larger systems) provide the best comparison. diff --git a/skills/ml-mlip-speed/scripts/benchmark_mlips.py b/skills/ml-mlip-speed/scripts/benchmark_mlips.py index 2326ddd3..c4a2b152 100755 --- a/skills/ml-mlip-speed/scripts/benchmark_mlips.py +++ b/skills/ml-mlip-speed/scripts/benchmark_mlips.py @@ -10,7 +10,7 @@ from typing import List, Dict # Add project root to sys.path to allow absolute imports -PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../..")) +PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../..")) if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) @@ -113,8 +113,16 @@ def run_benchmark(wrapper, atoms: Atoms, steps: int = 10, name: str = ""): return None, None -def plot_results(results: Dict[str, Dict[str, List]], output_dir: str): - """Generate plots for benchmark results with provider grouping and shading.""" +def plot_results( + results: Dict[str, Dict[str, List]], output_dir: str, hardware: str +) -> None: + """Generate plots for benchmark results with provider grouping and shading. + + Args: + results: Benchmark results keyed by model name. + output_dir: Directory where the PNG plots are written. + hardware: Hardware label used in plot titles and file names. + """ # 1. Prepare data and grouping grouped_data = {"mace": [], "matgl": [], "fairchem": []} @@ -166,7 +174,6 @@ def get_shades(cmap_name, n): converged_val = y[-1] label = f"[{provider.upper()}] {model['name']} ({converged_val:.3f} ms/atom)" ylabel = "Inference Time / Atom (ms)" - hardware = get_hardware_name() title = f"MLIP Inference Speed Benchmark on {hardware.replace('_', ' ')}" else: y = data["memories"] @@ -174,7 +181,6 @@ def get_shades(cmap_name, n): converged_val = (y[-1] * 1024) / data["n_atoms"][-1] label = f"[{provider.upper()}] {model['name']} ({converged_val:.2f} MB/atom)" ylabel = "Memory Usage (GB)" - hardware = get_hardware_name() title = ( f"MLIP Memory Usage Benchmark on {hardware.replace('_', ' ')}" ) @@ -201,7 +207,6 @@ def get_shades(cmap_name, n): plt.legend(fontsize=10) plt.grid(True, linestyle="--", alpha=0.6) - hardware = get_hardware_name() plt.savefig( os.path.join(output_dir, f"{plot_type}_{hardware.lower()}.png"), dpi=300, @@ -234,10 +239,22 @@ def main(): parser.add_argument( "--max_atoms_limit", type=int, default=10000, help="Maximum atoms to test." ) + parser.add_argument( + "--results_file", + default=None, + help="Results YAML read and updated by runs and read by --only_plot " + "(default: <output_dir>/speed_benchmark.yaml).", + ) + parser.add_argument( + "--hardware_name", + default=None, + help="Hardware label for plot titles and file names " + "(default: detected GPU name, or CPU).", + ) parser.add_argument( "--only_plot", action="store_true", - help="Only generate plots from existing speed_benchmark.yaml", + help="Only regenerate plots from the existing results file (--results_file).", ) args = parser.parse_args() @@ -245,22 +262,22 @@ def main(): if not os.path.exists(args.output_dir): os.makedirs(args.output_dir) + yaml_path = args.results_file or os.path.join( + args.output_dir, "speed_benchmark.yaml" + ) + hardware = args.hardware_name or get_hardware_name() all_results = {} - yaml_path = os.path.join(args.output_dir, "speed_benchmark.yaml") if os.path.exists(yaml_path): with open(yaml_path, "r") as f: - try: - existing_results = yaml.safe_load(f) - if existing_results: - all_results.update(existing_results) - except Exception: - pass + existing_results = yaml.safe_load(f) + if existing_results: + all_results.update(existing_results) if args.only_plot: if not all_results: print(f"Error: No results found in {yaml_path}") return - plot_results(all_results, args.output_dir) + plot_results(all_results, args.output_dir, hardware) print(f"Plots updated in {args.output_dir}") return @@ -280,18 +297,6 @@ def main(): for m in DEFAULT_MODELS.get(p, []): to_benchmark.append((m, p)) - # Load existing results if they exist - all_results = {} - yaml_path = os.path.join(args.output_dir, "speed_benchmark_dgx_spark.yaml") - if os.path.exists(yaml_path): - with open(yaml_path, "r") as f: - try: - existing_results = yaml.safe_load(f) - if existing_results: - all_results.update(existing_results) - except Exception: - pass - for model_name, provider in to_benchmark: print(f"\nStarting benchmark for {model_name} ({provider})") wrapper = None @@ -382,7 +387,7 @@ def main(): yaml.dump(all_results, f, default_flow_style=False) # Plot results (all combined) - plot_results(all_results, args.output_dir) + plot_results(all_results, args.output_dir, hardware) print(f"\nBenchmark complete. Results saved to {args.output_dir}") # Save input configs for reproducibility From bdc0ecd221241595cfaa6709ccf3cf2f195fa4fa Mon Sep 17 00:00:00 2001 From: bowen-bd <bowendeng@berkeley.edu> Date: Sat, 10 Oct 2026 14:06:19 -0400 Subject: [PATCH 09/12] docs(ml-mlip-speed, ml-mlip-nvalchemi): add NaCl speed example; re-measure batched MD - ml-mlip-speed: small NaCl benchmark (MACE-MP-small/medium, TensorNet, uma-s-1p1 up to 2000 atoms) compared with the stored GB10 reference. - ml-mlip-nvalchemi: the batched-MD record (4.90x) does not reproduce with the committed locks; a quiet-GPU re-run gives 1.40x for MACE-OMAT-0-small at ~20 GB peak GPU memory, and TensorNet batched MD exceeded 37 GB. SKILL.md now reports the re-measured numbers and the memory cost. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --- skills/ml-mlip-nvalchemi/SKILL.md | 8 +- .../cu_batch_static_accuracy/README.md | 35 +- skills/ml-mlip-speed/SKILL.md | 3 + .../examples/nacl_gb10_small/README.md | 92 + .../nacl_gb10_small/compare_with_reference.py | 118 + .../comparison/comparison_vs_reference.csv | 29 + .../comparison/input_configs.yaml | 3 + .../comparison/speed_vs_reference.png | Bin 0 -> 114883 bytes .../comparison/speed_vs_reference.svg | 1941 +++++++++++++++++ .../nacl_gb10_small/run/input_configs.yaml | 10 + .../nacl_gb10_small/run/speed_benchmark.yaml | 104 + 11 files changed, 2334 insertions(+), 9 deletions(-) create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/README.md create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/compare_with_reference.py create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/comparison_vs_reference.csv create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/input_configs.yaml create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.png create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.svg create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/run/input_configs.yaml create mode 100644 skills/ml-mlip-speed/examples/nacl_gb10_small/run/speed_benchmark.yaml diff --git a/skills/ml-mlip-nvalchemi/SKILL.md b/skills/ml-mlip-nvalchemi/SKILL.md index 3e637cd4..a5944af2 100644 --- a/skills/ml-mlip-nvalchemi/SKILL.md +++ b/skills/ml-mlip-nvalchemi/SKILL.md @@ -143,8 +143,8 @@ Static-inference and MD tables below measure different operations. Speedup comparison for a 100-step MD simulation under the `nvt_nose_hoover` ensemble at 300 K on 20 strained Cu FCC structures, each expanded to a fixed 108-atom cubic supercell ($\ge 10\text{ \AA}$ sides). Sequential = NValchemi disabled, structures run one at a time; Batched = all 20 driven through NValchemi integrators in a single GPU batch. Best-of-2 wall time, measured serially (one environment at a time to avoid GPU contention). #### MACE-OMAT-0-small (`mlip`) -- **Sequential MD:** 54.48 s -- **Batched MD (NValchemi):** 11.12 s (**4.90x speedup**) +- **Sequential MD:** 53.1 s (earlier record: 54.48 s) +- **Batched MD (NValchemi):** 38.0 s (**1.40x speedup**), peak GPU memory 19.9 GB. An earlier record of 11.12 s (4.90x) does not reproduce with the committed locks: one batched forward on 2160 atoms takes ~398 ms, so the batched step is bound by the model forward. See the [example](examples/cu_batch_static_accuracy/README.md). #### TensorNet-PES-MatPES-PBE-2025.2 (`mlip`) - **Sequential MD:** baseline @@ -154,7 +154,7 @@ Speedup comparison for a 100-step MD simulation under the `nvt_nose_hoover` ense - **Sequential MD:** 339.74 s - **Batched MD:** disabled — routed to sequential (see note below; measured ~0.64x, i.e. *slower*, before being disabled) -> **When does batched MD help?** Batched MD yields substantial speedups for launch-latency-bound models at small system sizes (e.g. MACE at **4.90x**, TensorNet at **1.8x**). For heavy models like FairChem uma-s-1p2 whose single-system path is already compute-bound, batching provides no speedup and MD is routed to sequential. The wrappers still accept a list of structures (and batch **static/relax** remain available); only FairChem's MD path is gated. Measured on NVIDIA GB10 (aarch64, CUDA 13, Warp 1.14). +> **When does batched MD help?** Batched MD gives modest speedups for launch-latency-bound models at small system sizes (MACE **1.40x** in the latest re-run, TensorNet **1.8x** in the earlier record), at a much larger memory cost than static inference (≈20 GB GPU for 20 × 108-atom MACE structures; a TensorNet re-run of the same benchmark exceeded 37 GB and was stopped). Estimate memory before batching MD. For heavy models like FairChem uma-s-1p2 whose single-system path is already compute-bound, batching provides no speedup and MD is routed to sequential. The wrappers still accept a list of structures (and batch **static/relax** remain available); only FairChem's MD path is gated. Measured on NVIDIA GB10 (aarch64, CUDA 13, Warp 1.14). > **FairChem batched MD disabled (`_nvalchemi_supports_batch_md = False`):** uma-s-1p2's forward scales **superlinearly per atom** — ≈1.57 ms/atom at batch=1 (108 atoms) rising to ≈2.43 ms/atom at batch=20 (2160 atoms), 1.55x worse — so a single large batched step is *slower* than running the structures one at a time through the model's optimized single-system path (batched 0.64x). Two facts pin this down: (1) the cost is intrinsic to the eSCN/MoE forward, not the neighbor list — correcting the wrapper cutoff (12 A → the model's true 6 A) cut `adapt_input` edges from 530 to 78 per atom but left the per-step time unchanged at ~5.25 s; (2) uma-s-1p2 runs with `external_graph_gen=False`, so it **rebuilds its own graph internally and ignores the edges `adapt_input` provides** (energies are identical for any cutoff we pass, including a 0-edge 2 A list). Batched MD is therefore correct (energies match sequential to 0.00 meV/atom) but never a speedup, so `run_md` falls back to sequential. @@ -318,7 +318,7 @@ See [resources/benchmark_results.md](resources/benchmark_results.md) for the ful ## Examples -- [Batched vs sequential static inference on strained Cu](examples/cu_batch_static_accuracy/README.md): re-runs `run_nvalchemi_benchmark.py` for MACE-OMAT-0-small and TensorNet-PES-MatPES-PBE-2025.2 (N = 2–20). Batched and sequential results agree to float32 round-off (ΔF = 0, ΔE ≤ 1.9e-6 eV), with speedups reported next to the stored table. +- [Batched vs sequential static inference on strained Cu](examples/cu_batch_static_accuracy/README.md): re-runs `run_nvalchemi_benchmark.py` for MACE-OMAT-0-small and TensorNet-PES-MatPES-PBE-2025.2 (N = 2–20). Batched and sequential results agree to float32 round-off (ΔF = 0, ΔE ≤ 1.9e-6 eV), with speedups reported next to the stored table. A batched-MD re-run gives 1.4× for MACE (stored 4.9×; now bound by the model forward) and peaks at 20 GB GPU, while TensorNet batched MD exceeded 37 GB. ## Constraints diff --git a/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md index cefa07bc..294f4560 100644 --- a/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md +++ b/skills/ml-mlip-nvalchemi/examples/cu_batch_static_accuracy/README.md @@ -89,12 +89,37 @@ Read the speedups with two caveats: - **N = 2 for MACE is slower when batched** (0.93×), in both this run and the stored table. The first batched call includes NValchemi warm-up that best-of-3 does not fully hide. -## Not reproduced here +## Batched MD timing (`run_md_benchmark.py`) -The batched-MD timing (`scripts/run_md_benchmark.py`; stored: MACE-OMAT-0-small 54.5 s sequential -vs 11.1 s batched, 4.9×) was run once. It gave 59.9 s vs 42.8 s (1.4×), but an unrelated -70 GB GPU process was loading on the same unified-memory device during the run. That timing is -therefore not reported as a reproduction. +The script runs 20 strained Cu FCC supercells (108 atoms each, 2160 in the batch) for 100 steps of +`nvt_nose_hoover` at 300 K, dt = 2 fs. It compares one-at-a-time `run_md` calls (default path) +with a single `run_md(..., use_nvalchemi=True)` batch, best of 2. It ran on an otherwise idle GPU: + +```bash +venv/run mlip python skills/ml-mlip-nvalchemi/scripts/run_md_benchmark.py --env mace --n-repeat 2 +venv/run mlip python skills/ml-mlip-nvalchemi/scripts/run_md_benchmark.py --env matgl --n-repeat 2 +``` + +| Model | Sequential (s) | Batched (s) | Speedup | Stored (SKILL.md) | Peak GPU memory | +| :--- | ---: | ---: | ---: | :--- | ---: | +| MACE-OMAT-0-small | 53.1 | 38.0 (`backend=nvalchemi`) | **1.40×** | 54.5 / 11.1 s, 4.90× | 19.9 GB (batched) | +| TensorNet-PES-MatPES-PBE-2025.2 | 59.4 | stopped (> 37 GB) | — | 1.8× (16 structures × 200 steps) | > 37 GB (batched) | + +- **MACE: the sequential time reproduces (−3 %), the batched time does not (3.4× slower).** One + batched NValchemi forward on the 2160-atom batch takes 398 ms, against 28 ms for one 108-atom + structure (552 ms for 20). The batched step (about 380 ms) is therefore bound by the model + forward, and about 1.4× is the ceiling for this workload with the current stack (mace-torch + 0.3.16, nvalchemi-toolkit 0.2.0, no cuEquivariance). The stored 11.1 s (June 2026, mace-torch + 0.3.15) implies a forward 3.6× faster than today's. The 2.0.0 neighbor-cache guard adds only + 6–8 % for MACE ([verification report](../../../../docs/verification/nvalchemi-neighbor-cache.md)), + so it does not explain the gap. As `SKILL.md` warns, historical speedups do not certify the + current release. +- **TensorNet batched MD was stopped for memory safety.** GPU use jumped above 37 GB (from below + 28 GB within one second) on this unified-memory machine, and the run was killed before + finishing. Batched TensorNet MD for 20 × 108 atoms is not safe on a shared GB10. Use fewer or + smaller structures per batch. +- Batched MD memory is far larger than static inference. MACE needed 19.9 GB here versus 3 GB for + the static benchmark above, so size batches from a small trial run. ## References diff --git a/skills/ml-mlip-speed/SKILL.md b/skills/ml-mlip-speed/SKILL.md index f10b75da..263182a2 100644 --- a/skills/ml-mlip-speed/SKILL.md +++ b/skills/ml-mlip-speed/SKILL.md @@ -73,6 +73,9 @@ Performance benchmarks conducted on **NVIDIA GB10** reveal distinct performance > [!TIP] > Use these results to select models for long MD simulations or large-scale screening. For systems >1000 atoms, prioritize models with latency < 0.5 ms/atom if ns-scale MD is required. +## Examples +- [Small benchmark on NaCl supercells](examples/nacl_gb10_small/README.md): MACE-MP-small/medium, TensorNet-MatPES-r2SCAN and uma-s-1p1 up to 2000 atoms on NVIDIA GB10, compared with the stored reference. MACE and TensorNet reproduce it (ms/atom within 5–18 %, MB/atom within 1–7 %); uma-s-1p1 is now 4.5× faster. + ## Resources - [Example Benchmark Data (NVIDIA GB10)](resources/speed_benchmark_dgx_spark.yaml) --- diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/README.md b/skills/ml-mlip-speed/examples/nacl_gb10_small/README.md new file mode 100644 index 00000000..0341fbf0 --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/README.md @@ -0,0 +1,92 @@ +# Small speed benchmark on NaCl supercells (NVIDIA GB10) + +## Goal + +Re-measure MLIP inference speed (ms per atom per MD step) and peak GPU memory (MB per atom) for +four models up to 2000 atoms. Compare the results with the stored reference +[`resources/speed_benchmark_dgx_spark.yaml`](../../resources/speed_benchmark_dgx_spark.yaml), +which was measured on the same type of machine with an earlier software stack. + +## Protocol + +`scripts/benchmark_mlips.py` builds rocksalt NaCl supercells (2·n³ atoms, a = 5.64 Å) of +54–2000 atoms and runs 10 NVE velocity-Verlet steps (1 fs, 300 K Maxwell–Boltzmann start) through +each model's ASE calculator. It reports: + +- **time:** the mean wall time of the last 5 steps; +- **memory:** the peak `torch.cuda.max_memory_allocated` of those steps. + +`--max_atoms_limit 2000` stops the size scan at 2000 atoms. + +| Model | Provider (env) | Reference key | +| :--- | :--- | :--- | +| MACE-MP-small | mace (`mlip`) | same | +| MACE-MP-medium | mace (`mlip`) | same | +| TensorNet-MatPES-r2SCAN-v2025.1-PES | matgl (`mlip`) | same; matgl 4.x loads `TensorNet-PES-MatPES-r2SCAN-2025.2` under this name | +| uma-s-1p1 | fairchem (`fairchem`) | same | + +## Commands (repository root) + +```bash +OUT=.agents/test/speed_2000 +venv/run mlip python skills/ml-mlip-speed/scripts/benchmark_mlips.py \ + --models MACE-MP-small MACE-MP-medium TensorNet-MatPES-r2SCAN-v2025.1-PES --providers mace mace matgl \ + --device cuda --max_atoms_limit 2000 --hardware_name NVIDIA_GB10 --output_dir $OUT +venv/run fairchem python skills/ml-mlip-speed/scripts/benchmark_mlips.py \ + --models uma-s-1p1 --providers fairchem \ + --device cuda --max_atoms_limit 2000 --hardware_name NVIDIA_GB10 --output_dir $OUT + +# Compare with the stored reference (CPU) +EX=skills/ml-mlip-speed/examples/nacl_gb10_small +venv/run cpu python $EX/compare_with_reference.py $OUT/speed_benchmark.yaml \ + skills/ml-mlip-speed/resources/speed_benchmark_dgx_spark.yaml --output-dir $EX/comparison +``` + +Both runs add to the same `$OUT/speed_benchmark.yaml`, the default `--results_file`. A first trial +with `--max_atoms_limit 500` confirmed linear memory scaling before the full run. + +**Hardware and software:** NVIDIA GB10, unified memory, otherwise idle GPU. +- `mlip` env: torch 2.14.1, mace-torch 0.3.16, matgl 4.1.0. +- `fairchem` env: torch 2.13.0, fairchem-core 2.23.0. + +Peak per-process GPU memory was 22.6 GB in the `mlip` run (the caching allocator held memory +across sizes; the largest single allocation was 11.2 GB, TensorNet at 2000 atoms) and 7.8 GB in the +`fairchem` run. Each run takes a few minutes. + +## Files + +- [`run/speed_benchmark.yaml`](run/speed_benchmark.yaml): results (seconds per step, GB). `run/input_configs.yaml` holds the arguments of the last (FairChem) run. +- [`comparison/comparison_vs_reference.csv`](comparison/comparison_vs_reference.csv) and `comparison/speed_vs_reference.png/.svg`: per-atom comparison with the reference. +- `compare_with_reference.py`: the comparison script. + +## Results + +![Speed vs reference](comparison/speed_vs_reference.png) + +*Solid: this run; dashed: stored reference. Top: time per atom per MD step (log scale); bottom: +peak memory per atom.* + +Converged values at 2000 atoms (Δ = this run vs reference): + +| Model | ms/atom (this run) | ms/atom (reference) | Δ | MB/atom (this run) | MB/atom (reference) | Δ | +| :--- | ---: | ---: | ---: | ---: | ---: | ---: | +| MACE-MP-small | 0.104 | 0.127 | −18 % | 1.02 | 1.00 | +2 % | +| MACE-MP-medium | 0.254 | 0.279 | −9 % | 2.73 | 2.70 | +1 % | +| TensorNet-MatPES-r2SCAN | 0.135 | 0.142 | −5 % | 5.72 | 5.35 | +7 % | +| uma-s-1p1 | 0.145 | 0.653 | **−78 % (4.5× faster)** | 2.59 | 3.01 | −14 % | + +- **MACE and TensorNet reproduce the reference.** Asymptotic speeds are within 5–18 % (slightly + faster now), and memory per atom within 1–7 %. The model ranking is unchanged: + MACE-MP-small < TensorNet < MACE-MP-medium in ms/atom, and TensorNet uses the most memory per + atom. The TensorNet memory difference may partly come from the weights matgl 4.x now loads under + the old name. +- **Small cells are overhead-dominated.** At 54 atoms every model is 1.2–2.4× slower per atom + than at 2000 atoms, as `SKILL.md` describes. The current stack has much less constant overhead for + TensorNet: 0.33 vs 1.14 ms/atom at 54 atoms. +- **uma-s-1p1 is 4.5× faster than the stored value** with the current fairchem-core 2.23.0. + The reference does not record the fairchem version it used, so the cause is not pinned down + here. Treat the stored uma timings as outdated, and re-measure FairChem models before choosing + between them on speed. +- Memory per atom converges by about 1000 atoms. Multiply MB/atom by the system size to estimate + peak GPU memory, and add the caching allocator's headroom: process-level usage was about 2× the + peak allocation here. diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/compare_with_reference.py b/skills/ml-mlip-speed/examples/nacl_gb10_small/compare_with_reference.py new file mode 100644 index 00000000..31356d54 --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/compare_with_reference.py @@ -0,0 +1,118 @@ +""" +Compare a benchmark_mlips.py results file with the stored reference results. + +Writes a CSV of ms/atom and MB/atom (ours vs reference) for every model and system +size present in both files, and a two-panel plot of the per-atom time. + +Usage: + python compare_with_reference.py speed_benchmark.yaml \ + ../../resources/speed_benchmark_dgx_spark.yaml --output-dir . + +Requirements: + - Environment: cpu + - Required packages: pyyaml, matplotlib +""" + +import argparse +import csv +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt # noqa: E402 +import yaml # noqa: E402 + +from src.utils.config_utils import save_skill_inputs # noqa: E402 + +plt.rcParams.update({"font.size": 14}) + + +def per_atom(entry: dict) -> dict[int, tuple[float, float]]: + """ + Convert one model's results to per-atom metrics. + + Args: + entry: Results of one model ('n_atoms', 'times' in s/step, 'memories' in GB). + + Returns: + Mapping n_atoms -> (ms per atom per step, MB per atom). + """ + return { + n: (1000.0 * t / n, 1024.0 * m / n) + for n, t, m in zip(entry["n_atoms"], entry["times"], entry["memories"]) + } + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Compare MLIP speed results with a reference results file." + ) + parser.add_argument("results", help="Results YAML written by benchmark_mlips.py") + parser.add_argument("reference", help="Reference results YAML") + parser.add_argument( + "--output-dir", default=".", help="Where to write CSV and plots" + ) + args = parser.parse_args() + + out = Path(args.output_dir) + out.mkdir(parents=True, exist_ok=True) + ours = yaml.safe_load(open(args.results)) + ref = yaml.safe_load(open(args.reference)) + models = [m for m in ours if m in ref and ours[m].get("n_atoms")] + + rows = [] + for m in models: + o, r = per_atom(ours[m]), per_atom(ref[m]) + for n in sorted(set(o) & set(r)): + rows.append( + { + "model": m, + "n_atoms": n, + "ms_per_atom": round(o[n][0], 4), + "ref_ms_per_atom": round(r[n][0], 4), + "MB_per_atom": round(o[n][1], 3), + "ref_MB_per_atom": round(r[n][1], 3), + } + ) + with open(out / "comparison_vs_reference.csv", "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=list(rows[0])) + writer.writeheader() + writer.writerows(rows) + + colors = plt.get_cmap("tab10").colors + fig, (ax_t, ax_m) = plt.subplots(2, 1, figsize=(6, 5), sharex=True) + for i, m in enumerate(models): + sel = [r for r in rows if r["model"] == m] + n = [r["n_atoms"] for r in sel] + c = colors[i % len(colors)] + ax_t.plot( + n, [r["ms_per_atom"] for r in sel], "o-", color=c, linewidth=2.5, label=m + ) + ax_t.plot(n, [r["ref_ms_per_atom"] for r in sel], "s--", color=c, linewidth=1.5) + ax_m.plot(n, [r["MB_per_atom"] for r in sel], "o-", color=c, linewidth=2.5) + ax_m.plot(n, [r["ref_MB_per_atom"] for r in sel], "s--", color=c, linewidth=1.5) + ax_t.set_yscale("log") + ax_t.set_ylabel("ms / atom", fontweight="bold") + ax_m.set_ylabel("MB / atom", fontweight="bold") + ax_m.set_xlabel("Number of atoms", fontweight="bold") + handles, labels = ax_t.get_legend_handles_labels() + handles += [ + plt.Line2D([], [], color="k", marker="o", linewidth=2.5), + plt.Line2D([], [], color="k", marker="s", linestyle="--", linewidth=1.5), + ] + labels += ["this run", "reference"] + ax_m.legend(handles, labels, frameon=False, fontsize=8, loc="upper right") + for ax in (ax_t, ax_m): + ax.grid(False) + plt.tight_layout() + for suffix in (".png", ".svg"): + plt.savefig(out / f"speed_vs_reference{suffix}", dpi=200, bbox_inches="tight") + plt.close(fig) + save_skill_inputs(args, str(out)) + for r in rows: + print(r) + + +if __name__ == "__main__": + main() diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/comparison_vs_reference.csv b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/comparison_vs_reference.csv new file mode 100644 index 00000000..75a454c6 --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/comparison_vs_reference.csv @@ -0,0 +1,29 @@ +model,n_atoms,ms_per_atom,ref_ms_per_atom,MB_per_atom,ref_MB_per_atom +MACE-MP-medium,54,0.3077,0.3486,6.003,5.131 +MACE-MP-medium,128,0.2694,0.2951,4.183,3.808 +MACE-MP-medium,250,0.2598,0.2754,3.478,3.294 +MACE-MP-medium,432,0.2652,0.2873,3.144,3.037 +MACE-MP-medium,1024,0.2578,0.3051,2.834,2.787 +MACE-MP-medium,1458,0.2563,0.2763,2.77,2.736 +MACE-MP-medium,2000,0.2537,0.2787,2.726,2.701 +MACE-MP-small,54,0.2154,0.1979,2.545,1.663 +MACE-MP-small,128,0.1227,0.1402,1.63,1.375 +MACE-MP-small,250,0.113,0.1279,1.351,1.228 +MACE-MP-small,432,0.1165,0.1255,1.211,1.104 +MACE-MP-small,1024,0.1086,0.1424,1.069,1.021 +MACE-MP-small,1458,0.1058,0.1339,1.039,1.005 +MACE-MP-small,2000,0.1045,0.1268,1.019,0.996 +TensorNet-MatPES-r2SCAN-v2025.1-PES,54,0.3301,1.143,6.973,5.765 +TensorNet-MatPES-r2SCAN-v2025.1-PES,128,0.1903,0.3961,6.286,5.536 +TensorNet-MatPES-r2SCAN-v2025.1-PES,250,0.1554,0.2721,6.077,5.509 +TensorNet-MatPES-r2SCAN-v2025.1-PES,432,0.1441,0.1978,5.938,5.441 +TensorNet-MatPES-r2SCAN-v2025.1-PES,1024,0.1365,0.1408,5.787,5.389 +TensorNet-MatPES-r2SCAN-v2025.1-PES,1458,0.1352,0.1441,5.735,5.357 +TensorNet-MatPES-r2SCAN-v2025.1-PES,2000,0.1348,0.1418,5.721,5.348 +uma-s-1p1,54,0.278,1.9903,4.688,13.549 +uma-s-1p1,128,0.1981,1.0736,3.4,7.288 +uma-s-1p1,250,0.1673,0.7971,3.016,5.099 +uma-s-1p1,432,0.1556,0.7222,2.817,4.075 +uma-s-1p1,1024,0.1463,0.6862,2.641,3.283 +uma-s-1p1,1458,0.1446,0.6626,2.612,3.118 +uma-s-1p1,2000,0.145,0.6528,2.592,3.008 diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/input_configs.yaml b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/input_configs.yaml new file mode 100644 index 00000000..0693a3cc --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/input_configs.yaml @@ -0,0 +1,3 @@ +results: skills/ml-mlip-speed/examples/nacl_gb10_small/run/speed_benchmark.yaml +reference: skills/ml-mlip-speed/resources/speed_benchmark_dgx_spark.yaml +output_dir: skills/ml-mlip-speed/examples/nacl_gb10_small/comparison diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.png b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.png new file mode 100644 index 0000000000000000000000000000000000000000..628a44f0a5f3e12fdd30edc66c8a95adf29886b3 GIT binary patch literal 114883 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 L6=m|IA3y(JU@|k% literal 0 HcmV?d00001 diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.svg b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.svg new file mode 100644 index 00000000..ff011454 --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/comparison/speed_vs_reference.svg @@ -0,0 +1,1941 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="416.166901pt" height="344.161094pt" viewBox="0 0 416.166901 344.161094" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <metadata> + <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <cc:Work> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:date>2026-10-10T13:53:15.486744</dc:date> + <dc:format>image/svg+xml</dc:format> + <dc:creator> + <cc:Agent> + <dc:title>Matplotlib v3.11.2, https://matplotlib.org/</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <defs> + <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style> + </defs> + <g id="figure_1"> + <g id="patch_1"> + <path d="M 0 344.161094 +L 416.166901 344.161094 +L 416.166901 0 +L 0 0 +z +" style="fill: #ffffff"/> + </g> + <g id="axes_1"> + <g id="patch_2"> + <path d="M 65.1 142.106518 +L 406.678182 142.106518 +L 406.678182 7.2 +L 65.1 7.2 +z +" style="fill: #ffffff"/> + </g> + <g id="matplotlib.axis_1"> + <g id="xtick_1"> + <g id="line2d_1"> + <defs> + <path id="ma2b1edf0b5" d="M 0 0 +L 0 3.5 +" style="stroke: #000000; stroke-width: 0.8"/> + </defs> + <g> + <use xlink:href="#ma2b1edf0b5" x="72.009434" y="142.106518" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="xtick_2"> + <g id="line2d_2"> + <g> + <use xlink:href="#ma2b1edf0b5" x="151.795051" y="142.106518" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="xtick_3"> + <g id="line2d_3"> + <g> + <use xlink:href="#ma2b1edf0b5" x="231.580668" y="142.106518" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="xtick_4"> + <g id="line2d_4"> + <g> + <use xlink:href="#ma2b1edf0b5" x="311.366284" y="142.106518" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="xtick_5"> + <g id="line2d_5"> + <g> + <use xlink:href="#ma2b1edf0b5" x="391.151901" y="142.106518" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + </g> + <g id="matplotlib.axis_2"> + <g id="ytick_1"> + <g id="line2d_6"> + <defs> + <path id="m2e02633e01" d="M 0 0 +L -3.5 0 +" style="stroke: #000000; stroke-width: 0.8"/> + </defs> + <g> + <use xlink:href="#m2e02633e01" x="65.1" y="137.806301" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_1"> + <!-- $\mathdefault{10^{-1}}$ --> + <g transform="translate(25.2 144.316301) scale(0.14 -0.14)"> + <defs> + <path id="DejaVuSans-14" d="M 794 531 +L 1825 531 +L 1825 4091 +L 703 3866 +L 703 4441 +L 1819 4666 +L 2450 4666 +L 2450 531 +L 3481 531 +L 3481 0 +L 794 0 +L 794 531 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-13" d="M 2034 4250 +Q 1547 4250 1301 3770 +Q 1056 3291 1056 2328 +Q 1056 1369 1301 889 +Q 1547 409 2034 409 +Q 2525 409 2770 889 +Q 3016 1369 3016 2328 +Q 3016 3291 2770 3770 +Q 2525 4250 2034 4250 +z +M 2034 4750 +Q 2819 4750 3233 4129 +Q 3647 3509 3647 2328 +Q 3647 1150 3233 529 +Q 2819 -91 2034 -91 +Q 1250 -91 836 529 +Q 422 1150 422 2328 +Q 422 3509 836 4129 +Q 1250 4750 2034 4750 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-c9c" d="M 678 2272 +L 4684 2272 +L 4684 1741 +L 678 1741 +L 678 2272 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-14" transform="translate(0 0.665625)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(63.623047 0.665625)"/> + <use xlink:href="#DejaVuSans-c9c" transform="translate(128.203125 41.965625) scale(0.7)"/> + <use xlink:href="#DejaVuSans-14" transform="translate(186.855469 41.965625) scale(0.7)"/> + </g> + </g> + </g> + <g id="ytick_2"> + <g id="line2d_7"> + <g> + <use xlink:href="#m2e02633e01" x="65.1" y="41.977207" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_2"> + <!-- $\mathdefault{10^{0}}$ --> + <g transform="translate(33.46 48.557207) scale(0.14 -0.14)"> + <use xlink:href="#DejaVuSans-14" transform="translate(0 0.746875)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(63.623047 0.746875)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(128.203125 42.046875) scale(0.7)"/> + </g> + </g> + </g> + <g id="ytick_3"> + <g id="line2d_8"> + <defs> + <path id="mb1196be955" d="M 0 0 +L -2 0 +" style="stroke: #000000; stroke-width: 0.6"/> + </defs> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="108.958869" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_4"> + <g id="line2d_9"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="92.084203" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_5"> + <g id="line2d_10"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="80.111438" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_6"> + <g id="line2d_11"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="70.824639" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_7"> + <g id="line2d_12"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="63.236772" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_8"> + <g id="line2d_13"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="56.821322" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_9"> + <g id="line2d_14"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="51.264006" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_10"> + <g id="line2d_15"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="46.362106" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="ytick_11"> + <g id="line2d_16"> + <g> + <use xlink:href="#mb1196be955" x="65.1" y="13.129776" style="stroke: #000000; stroke-width: 0.6"/> + </g> + </g> + </g> + <g id="text_3"> + <!-- ms / atom --> + <g transform="translate(17.836719 113.717634) rotate(-90) scale(0.14 -0.14)"> + <defs> + <path id="DejaVuSans-Bold-50" d="M 3781 2919 +Q 3994 3244 4286 3414 +Q 4578 3584 4928 3584 +Q 5531 3584 5847 3212 +Q 6163 2841 6163 2131 +L 6163 0 +L 5038 0 +L 5038 1825 +Q 5041 1866 5042 1909 +Q 5044 1953 5044 2034 +Q 5044 2406 4934 2573 +Q 4825 2741 4581 2741 +Q 4263 2741 4089 2478 +Q 3916 2216 3909 1719 +L 3909 0 +L 2784 0 +L 2784 1825 +Q 2784 2406 2684 2573 +Q 2584 2741 2328 2741 +Q 2006 2741 1831 2477 +Q 1656 2213 1656 1722 +L 1656 0 +L 531 0 +L 531 3500 +L 1656 3500 +L 1656 2988 +Q 1863 3284 2130 3434 +Q 2397 3584 2719 3584 +Q 3081 3584 3359 3409 +Q 3638 3234 3781 2919 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-56" d="M 3272 3391 +L 3272 2541 +Q 2913 2691 2578 2766 +Q 2244 2841 1947 2841 +Q 1628 2841 1473 2761 +Q 1319 2681 1319 2516 +Q 1319 2381 1436 2309 +Q 1553 2238 1856 2203 +L 2053 2175 +Q 2913 2066 3209 1816 +Q 3506 1566 3506 1031 +Q 3506 472 3093 190 +Q 2681 -91 1863 -91 +Q 1516 -91 1145 -36 +Q 775 19 384 128 +L 384 978 +Q 719 816 1070 734 +Q 1422 653 1784 653 +Q 2113 653 2278 743 +Q 2444 834 2444 1013 +Q 2444 1163 2330 1236 +Q 2216 1309 1875 1350 +L 1678 1375 +Q 931 1469 631 1722 +Q 331 1975 331 2491 +Q 331 3047 712 3315 +Q 1094 3584 1881 3584 +Q 2191 3584 2531 3537 +Q 2872 3491 3272 3391 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-3" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-12" d="M 1644 4666 +L 2338 4666 +L 691 -594 +L 0 -594 +L 1644 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-44" d="M 2106 1575 +Q 1756 1575 1579 1456 +Q 1403 1338 1403 1106 +Q 1403 894 1545 773 +Q 1688 653 1941 653 +Q 2256 653 2472 879 +Q 2688 1106 2688 1447 +L 2688 1575 +L 2106 1575 +z +M 3816 1997 +L 3816 0 +L 2688 0 +L 2688 519 +Q 2463 200 2181 54 +Q 1900 -91 1497 -91 +Q 953 -91 614 226 +Q 275 544 275 1050 +Q 275 1666 698 1953 +Q 1122 2241 2028 2241 +L 2688 2241 +L 2688 2328 +Q 2688 2594 2478 2717 +Q 2269 2841 1825 2841 +Q 1466 2841 1156 2769 +Q 847 2697 581 2553 +L 581 3406 +Q 941 3494 1303 3539 +Q 1666 3584 2028 3584 +Q 2975 3584 3395 3211 +Q 3816 2838 3816 1997 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-57" d="M 1759 4494 +L 1759 3500 +L 2913 3500 +L 2913 2700 +L 1759 2700 +L 1759 1216 +Q 1759 972 1856 886 +Q 1953 800 2241 800 +L 2816 800 +L 2816 0 +L 1856 0 +Q 1194 0 917 276 +Q 641 553 641 1216 +L 641 2700 +L 84 2700 +L 84 3500 +L 641 3500 +L 641 4494 +L 1759 4494 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-52" d="M 2203 2784 +Q 1831 2784 1636 2517 +Q 1441 2250 1441 1747 +Q 1441 1244 1636 976 +Q 1831 709 2203 709 +Q 2569 709 2762 976 +Q 2956 1244 2956 1747 +Q 2956 2250 2762 2517 +Q 2569 2784 2203 2784 +z +M 2203 3584 +Q 3106 3584 3614 3096 +Q 4122 2609 4122 1747 +Q 4122 884 3614 396 +Q 3106 -91 2203 -91 +Q 1297 -91 786 396 +Q 275 884 275 1747 +Q 275 2609 786 3096 +Q 1297 3584 2203 3584 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-Bold-50"/> + <use xlink:href="#DejaVuSans-Bold-56" transform="translate(104.203125 0)"/> + <use xlink:href="#DejaVuSans-Bold-3" transform="translate(163.71875 0)"/> + <use xlink:href="#DejaVuSans-Bold-12" transform="translate(198.53125 0)"/> + <use xlink:href="#DejaVuSans-Bold-3" transform="translate(235.0625 0)"/> + <use xlink:href="#DejaVuSans-Bold-44" transform="translate(269.875 0)"/> + <use xlink:href="#DejaVuSans-Bold-57" transform="translate(337.359375 0)"/> + <use xlink:href="#DejaVuSans-Bold-52" transform="translate(385.15625 0)"/> + <use xlink:href="#DejaVuSans-Bold-50" transform="translate(453.859375 0)"/> + </g> + </g> + </g> + <g id="line2d_17"> + <path d="M 80.626281 91.029485 +L 92.434552 96.56169 +L 111.902243 98.071807 +L 140.944207 97.215634 +L 235.410377 98.393432 +L 304.664292 98.636292 +L 391.151901 99.060637 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke: #1f77b4; stroke-width: 2.5; stroke-linecap: square"/> + <defs> + <path id="md01c008cc9" d="M 0 3 +C 0.795609 3 1.55874 2.683901 2.12132 2.12132 +C 2.683901 1.55874 3 0.795609 3 0 +C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 +C 1.55874 -2.683901 0.795609 -3 0 -3 +C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 +C -2.683901 -1.55874 -3 -0.795609 -3 0 +C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 +C -1.55874 2.683901 -0.795609 3 0 3 +z +" style="stroke: #1f77b4"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#md01c008cc9" x="80.626281" y="91.029485" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="92.434552" y="96.56169" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="111.902243" y="98.071807" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="140.944207" y="97.215634" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="235.410377" y="98.393432" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="304.664292" y="98.636292" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="391.151901" y="99.060637" style="fill: #1f77b4; stroke: #1f77b4"/> + </g> + </g> + <g id="line2d_18"> + <path d="M 80.626281 85.835559 +L 92.434552 92.769577 +L 111.902243 95.644956 +L 140.944207 93.884413 +L 235.410377 91.382643 +L 304.664292 95.509171 +L 391.151901 95.149228 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #1f77b4; stroke-width: 1.5"/> + <defs> + <path id="ma0f57033ea" d="M -3 3 +L 3 3 +L 3 -3 +L -3 -3 +z +" style="stroke: #1f77b4; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#ma0f57033ea" x="80.626281" y="85.835559" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="92.434552" y="92.769577" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="111.902243" y="95.644956" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="140.944207" y="93.884413" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="235.410377" y="91.382643" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="304.664292" y="95.509171" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="391.151901" y="95.149228" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_19"> + <path d="M 80.626281 105.871667 +L 92.434552 129.292407 +L 111.902243 132.719841 +L 140.944207 131.450347 +L 235.410377 134.372761 +L 304.664292 135.459861 +L 391.151901 135.974404 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke: #ff7f0e; stroke-width: 2.5; stroke-linecap: square"/> + <defs> + <path id="mb57f732fb6" d="M 0 3 +C 0.795609 3 1.55874 2.683901 2.12132 2.12132 +C 2.683901 1.55874 3 0.795609 3 0 +C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 +C 1.55874 -2.683901 0.795609 -3 0 -3 +C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 +C -2.683901 -1.55874 -3 -0.795609 -3 0 +C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 +C -1.55874 2.683901 -0.795609 3 0 3 +z +" style="stroke: #ff7f0e"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#mb57f732fb6" x="80.626281" y="105.871667" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="92.434552" y="129.292407" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="111.902243" y="132.719841" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="140.944207" y="131.450347" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="235.410377" y="134.372761" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="304.664292" y="135.459861" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="391.151901" y="135.974404" style="fill: #ff7f0e; stroke: #ff7f0e"/> + </g> + </g> + <g id="line2d_20"> + <path d="M 80.626281 109.398169 +L 92.434552 123.743571 +L 111.902243 127.564993 +L 140.944207 128.353362 +L 235.410377 123.095577 +L 304.664292 125.657033 +L 391.151901 127.924476 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #ff7f0e; stroke-width: 1.5"/> + <defs> + <path id="m8e3da50f92" d="M -3 3 +L 3 3 +L 3 -3 +L -3 -3 +z +" style="stroke: #ff7f0e; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#m8e3da50f92" x="80.626281" y="109.398169" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="92.434552" y="123.743571" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="111.902243" y="127.564993" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="140.944207" y="128.353362" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="235.410377" y="123.095577" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="304.664292" y="125.657033" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="391.151901" y="127.924476" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_21"> + <path d="M 80.626281 88.10497 +L 92.434552 111.027935 +L 111.902243 119.459723 +L 140.944207 122.601675 +L 235.410377 124.856661 +L 304.664292 125.254923 +L 391.151901 125.378236 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke: #2ca02c; stroke-width: 2.5; stroke-linecap: square"/> + <defs> + <path id="m3309487d34" d="M 0 3 +C 0.795609 3 1.55874 2.683901 2.12132 2.12132 +C 2.683901 1.55874 3 0.795609 3 0 +C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 +C 1.55874 -2.683901 0.795609 -3 0 -3 +C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 +C -2.683901 -1.55874 -3 -0.795609 -3 0 +C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 +C -1.55874 2.683901 -0.795609 3 0 3 +z +" style="stroke: #2ca02c"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#m3309487d34" x="80.626281" y="88.10497" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="92.434552" y="111.027935" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="111.902243" y="119.459723" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="140.944207" y="122.601675" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="235.410377" y="124.856661" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="304.664292" y="125.254923" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="391.151901" y="125.378236" style="fill: #2ca02c; stroke: #2ca02c"/> + </g> + </g> + <g id="line2d_22"> + <path d="M 80.626281 36.41469 +L 92.434552 80.519205 +L 111.902243 96.146659 +L 140.944207 109.419204 +L 235.410377 123.565843 +L 304.664292 122.601675 +L 391.151901 123.271305 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #2ca02c; stroke-width: 1.5"/> + <defs> + <path id="mf697399bda" d="M -3 3 +L 3 3 +L 3 -3 +L -3 -3 +z +" style="stroke: #2ca02c; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#mf697399bda" x="80.626281" y="36.41469" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="92.434552" y="80.519205" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="111.902243" y="96.146659" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="140.944207" y="109.419204" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="235.410377" y="123.565843" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="304.664292" y="122.601675" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="391.151901" y="123.271305" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_23"> + <path d="M 80.626281 95.25389 +L 92.434552 109.35613 +L 111.902243 116.388887 +L 140.944207 119.406195 +L 235.410377 121.971087 +L 304.664292 122.457518 +L 391.151901 122.342551 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke: #d62728; stroke-width: 2.5; stroke-linecap: square"/> + <defs> + <path id="m82b9f5b983" d="M 0 3 +C 0.795609 3 1.55874 2.683901 2.12132 2.12132 +C 2.683901 1.55874 3 0.795609 3 0 +C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 +C 1.55874 -2.683901 0.795609 -3 0 -3 +C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 +C -2.683901 -1.55874 -3 -0.795609 -3 0 +C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 +C -1.55874 2.683901 -0.795609 3 0 3 +z +" style="stroke: #d62728"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#m82b9f5b983" x="80.626281" y="95.25389" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="92.434552" y="109.35613" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="111.902243" y="116.388887" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="140.944207" y="119.406195" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="235.410377" y="121.971087" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="304.664292" y="122.457518" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="391.151901" y="122.342551" style="fill: #d62728; stroke: #d62728"/> + </g> + </g> + <g id="line2d_24"> + <path d="M 80.626281 13.332114 +L 92.434552 39.021598 +L 111.902243 51.415146 +L 140.944207 55.521932 +L 235.410377 57.649987 +L 304.664292 59.106521 +L 391.151901 59.726658 +" clip-path="url(#p9a404c7721)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #d62728; stroke-width: 1.5"/> + <defs> + <path id="madafa35c9d" d="M -3 3 +L 3 3 +L 3 -3 +L -3 -3 +z +" style="stroke: #d62728; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#p9a404c7721)"> + <use xlink:href="#madafa35c9d" x="80.626281" y="13.332114" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="92.434552" y="39.021598" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="111.902243" y="51.415146" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="140.944207" y="55.521932" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="235.410377" y="57.649987" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="304.664292" y="59.106521" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="391.151901" y="59.726658" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + </g> + </g> + <g id="patch_3"> + <path d="M 65.1 142.106518 +L 65.1 7.2 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_4"> + <path d="M 406.678182 142.106518 +L 406.678182 7.2 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_5"> + <path d="M 65.1 142.106518 +L 406.678182 142.106518 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_6"> + <path d="M 65.1 7.2 +L 406.678182 7.2 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + </g> + <g id="axes_2"> + <g id="patch_7"> + <path d="M 65.1 297.96 +L 406.678182 297.96 +L 406.678182 163.053482 +L 65.1 163.053482 +z +" style="fill: #ffffff"/> + </g> + <g id="matplotlib.axis_3"> + <g id="xtick_6"> + <g id="line2d_25"> + <g> + <use xlink:href="#ma2b1edf0b5" x="72.009434" y="297.96" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_4"> + <!-- 0 --> + <g transform="translate(67.555684 315.596719) scale(0.14 -0.14)"> + <use xlink:href="#DejaVuSans-13"/> + </g> + </g> + </g> + <g id="xtick_7"> + <g id="line2d_26"> + <g> + <use xlink:href="#ma2b1edf0b5" x="151.795051" y="297.96" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_5"> + <!-- 500 --> + <g transform="translate(138.433801 315.596719) scale(0.14 -0.14)"> + <defs> + <path id="DejaVuSans-18" d="M 691 4666 +L 3169 4666 +L 3169 4134 +L 1269 4134 +L 1269 2991 +Q 1406 3038 1543 3061 +Q 1681 3084 1819 3084 +Q 2600 3084 3056 2656 +Q 3513 2228 3513 1497 +Q 3513 744 3044 326 +Q 2575 -91 1722 -91 +Q 1428 -91 1123 -41 +Q 819 9 494 109 +L 494 744 +Q 775 591 1075 516 +Q 1375 441 1709 441 +Q 2250 441 2565 725 +Q 2881 1009 2881 1497 +Q 2881 1984 2565 2268 +Q 2250 2553 1709 2553 +Q 1456 2553 1204 2497 +Q 953 2441 691 2322 +L 691 4666 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-18"/> + <use xlink:href="#DejaVuSans-13" transform="translate(63.625 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(127.25 0)"/> + </g> + </g> + </g> + <g id="xtick_8"> + <g id="line2d_27"> + <g> + <use xlink:href="#ma2b1edf0b5" x="231.580668" y="297.96" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_6"> + <!-- 1000 --> + <g transform="translate(213.765668 315.596719) scale(0.14 -0.14)"> + <use xlink:href="#DejaVuSans-14"/> + <use xlink:href="#DejaVuSans-13" transform="translate(63.625 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(127.25 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(190.875 0)"/> + </g> + </g> + </g> + <g id="xtick_9"> + <g id="line2d_28"> + <g> + <use xlink:href="#ma2b1edf0b5" x="311.366284" y="297.96" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_7"> + <!-- 1500 --> + <g transform="translate(293.551284 315.596719) scale(0.14 -0.14)"> + <use xlink:href="#DejaVuSans-14"/> + <use xlink:href="#DejaVuSans-18" transform="translate(63.625 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(127.25 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(190.875 0)"/> + </g> + </g> + </g> + <g id="xtick_10"> + <g id="line2d_29"> + <g> + <use xlink:href="#ma2b1edf0b5" x="391.151901" y="297.96" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_8"> + <!-- 2000 --> + <g transform="translate(373.336901 315.596719) scale(0.14 -0.14)"> + <defs> + <path id="DejaVuSans-15" d="M 1228 531 +L 3431 531 +L 3431 0 +L 469 0 +L 469 531 +Q 828 903 1448 1529 +Q 2069 2156 2228 2338 +Q 2531 2678 2651 2914 +Q 2772 3150 2772 3378 +Q 2772 3750 2511 3984 +Q 2250 4219 1831 4219 +Q 1534 4219 1204 4116 +Q 875 4013 500 3803 +L 500 4441 +Q 881 4594 1212 4672 +Q 1544 4750 1819 4750 +Q 2544 4750 2975 4387 +Q 3406 4025 3406 3419 +Q 3406 3131 3298 2873 +Q 3191 2616 2906 2266 +Q 2828 2175 2409 1742 +Q 1991 1309 1228 531 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-15"/> + <use xlink:href="#DejaVuSans-13" transform="translate(63.625 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(127.25 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(190.875 0)"/> + </g> + </g> + </g> + <g id="text_9"> + <!-- Number of atoms --> + <g transform="translate(167.476122 333.597812) scale(0.14 -0.14)"> + <defs> + <path id="DejaVuSans-Bold-31" d="M 588 4666 +L 1931 4666 +L 3628 1466 +L 3628 4666 +L 4769 4666 +L 4769 0 +L 3425 0 +L 1728 3200 +L 1728 0 +L 588 0 +L 588 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-58" d="M 500 1363 +L 500 3500 +L 1625 3500 +L 1625 3150 +Q 1625 2866 1622 2436 +Q 1619 2006 1619 1863 +Q 1619 1441 1641 1255 +Q 1663 1069 1716 984 +Q 1784 875 1895 815 +Q 2006 756 2150 756 +Q 2500 756 2700 1025 +Q 2900 1294 2900 1772 +L 2900 3500 +L 4019 3500 +L 4019 0 +L 2900 0 +L 2900 506 +Q 2647 200 2364 54 +Q 2081 -91 1741 -91 +Q 1134 -91 817 281 +Q 500 653 500 1363 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-45" d="M 2400 722 +Q 2759 722 2948 984 +Q 3138 1247 3138 1747 +Q 3138 2247 2948 2509 +Q 2759 2772 2400 2772 +Q 2041 2772 1848 2508 +Q 1656 2244 1656 1747 +Q 1656 1250 1848 986 +Q 2041 722 2400 722 +z +M 1656 2988 +Q 1888 3294 2169 3439 +Q 2450 3584 2816 3584 +Q 3463 3584 3878 3070 +Q 4294 2556 4294 1747 +Q 4294 938 3878 423 +Q 3463 -91 2816 -91 +Q 2450 -91 2169 54 +Q 1888 200 1656 506 +L 1656 0 +L 538 0 +L 538 4863 +L 1656 4863 +L 1656 2988 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-48" d="M 4031 1759 +L 4031 1441 +L 1416 1441 +Q 1456 1047 1700 850 +Q 1944 653 2381 653 +Q 2734 653 3104 758 +Q 3475 863 3866 1075 +L 3866 213 +Q 3469 63 3072 -14 +Q 2675 -91 2278 -91 +Q 1328 -91 801 392 +Q 275 875 275 1747 +Q 275 2603 792 3093 +Q 1309 3584 2216 3584 +Q 3041 3584 3536 3087 +Q 4031 2591 4031 1759 +z +M 2881 2131 +Q 2881 2450 2695 2645 +Q 2509 2841 2209 2841 +Q 1884 2841 1681 2658 +Q 1478 2475 1428 2131 +L 2881 2131 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-55" d="M 3138 2547 +Q 2991 2616 2845 2648 +Q 2700 2681 2553 2681 +Q 2122 2681 1889 2404 +Q 1656 2128 1656 1613 +L 1656 0 +L 538 0 +L 538 3500 +L 1656 3500 +L 1656 2925 +Q 1872 3269 2151 3426 +Q 2431 3584 2822 3584 +Q 2878 3584 2943 3579 +Q 3009 3575 3134 3559 +L 3138 2547 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-49" d="M 2841 4863 +L 2841 4128 +L 2222 4128 +Q 1984 4128 1890 4042 +Q 1797 3956 1797 3744 +L 1797 3500 +L 2753 3500 +L 2753 2700 +L 1797 2700 +L 1797 0 +L 678 0 +L 678 2700 +L 122 2700 +L 122 3500 +L 678 3500 +L 678 3744 +Q 678 4316 997 4589 +Q 1316 4863 1984 4863 +L 2841 4863 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-Bold-31"/> + <use xlink:href="#DejaVuSans-Bold-58" transform="translate(83.6875 0)"/> + <use xlink:href="#DejaVuSans-Bold-50" transform="translate(154.875 0)"/> + <use xlink:href="#DejaVuSans-Bold-45" transform="translate(259.078125 0)"/> + <use xlink:href="#DejaVuSans-Bold-48" transform="translate(330.65625 0)"/> + <use xlink:href="#DejaVuSans-Bold-55" transform="translate(398.484375 0)"/> + <use xlink:href="#DejaVuSans-Bold-3" transform="translate(447.796875 0)"/> + <use xlink:href="#DejaVuSans-Bold-52" transform="translate(482.609375 0)"/> + <use xlink:href="#DejaVuSans-Bold-49" transform="translate(551.3125 0)"/> + <use xlink:href="#DejaVuSans-Bold-3" transform="translate(594.8125 0)"/> + <use xlink:href="#DejaVuSans-Bold-44" transform="translate(629.625 0)"/> + <use xlink:href="#DejaVuSans-Bold-57" transform="translate(697.109375 0)"/> + <use xlink:href="#DejaVuSans-Bold-52" transform="translate(744.90625 0)"/> + <use xlink:href="#DejaVuSans-Bold-50" transform="translate(813.609375 0)"/> + <use xlink:href="#DejaVuSans-Bold-56" transform="translate(917.8125 0)"/> + </g> + </g> + </g> + <g id="matplotlib.axis_4"> + <g id="ytick_12"> + <g id="line2d_30"> + <g> + <use xlink:href="#m2e02633e01" x="65.1" y="252.708972" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_10"> + <!-- 5 --> + <g transform="translate(49.1925 258.027331) scale(0.14 -0.14)"> + <use xlink:href="#DejaVuSans-18"/> + </g> + </g> + </g> + <g id="ytick_13"> + <g id="line2d_31"> + <g> + <use xlink:href="#m2e02633e01" x="65.1" y="203.859179" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_11"> + <!-- 10 --> + <g transform="translate(40.285 209.177538) scale(0.14 -0.14)"> + <use xlink:href="#DejaVuSans-14"/> + <use xlink:href="#DejaVuSans-13" transform="translate(63.625 0)"/> + </g> + </g> + </g> + <g id="text_12"> + <!-- MB / atom --> + <g transform="translate(32.921719 270.41221) rotate(-90) scale(0.14 -0.14)"> + <defs> + <path id="DejaVuSans-Bold-30" d="M 588 4666 +L 2119 4666 +L 3181 2169 +L 4250 4666 +L 5778 4666 +L 5778 0 +L 4641 0 +L 4641 3413 +L 3566 897 +L 2803 897 +L 1728 3413 +L 1728 0 +L 588 0 +L 588 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-Bold-25" d="M 2456 2859 +Q 2741 2859 2887 2984 +Q 3034 3109 3034 3353 +Q 3034 3594 2887 3720 +Q 2741 3847 2456 3847 +L 1791 3847 +L 1791 2859 +L 2456 2859 +z +M 2497 819 +Q 2859 819 3042 972 +Q 3225 1125 3225 1434 +Q 3225 1738 3044 1889 +Q 2863 2041 2497 2041 +L 1791 2041 +L 1791 819 +L 2497 819 +z +M 3616 2497 +Q 4003 2384 4215 2081 +Q 4428 1778 4428 1338 +Q 4428 663 3972 331 +Q 3516 0 2584 0 +L 588 0 +L 588 4666 +L 2394 4666 +Q 3366 4666 3802 4372 +Q 4238 4078 4238 3431 +Q 4238 3091 4078 2852 +Q 3919 2613 3616 2497 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-Bold-30"/> + <use xlink:href="#DejaVuSans-Bold-25" transform="translate(99.515625 0)"/> + <use xlink:href="#DejaVuSans-Bold-3" transform="translate(175.734375 0)"/> + <use xlink:href="#DejaVuSans-Bold-12" transform="translate(210.546875 0)"/> + <use xlink:href="#DejaVuSans-Bold-3" transform="translate(247.078125 0)"/> + <use xlink:href="#DejaVuSans-Bold-44" transform="translate(281.890625 0)"/> + <use xlink:href="#DejaVuSans-Bold-57" transform="translate(349.375 0)"/> + <use xlink:href="#DejaVuSans-Bold-52" transform="translate(397.171875 0)"/> + <use xlink:href="#DejaVuSans-Bold-50" transform="translate(465.875 0)"/> + </g> + </g> + </g> + <g id="line2d_32"> + <path d="M 80.626281 242.909703 +L 92.434552 260.691028 +L 111.902243 267.578848 +L 140.944207 270.842015 +L 235.410377 273.870702 +L 304.664292 274.495979 +L 391.151901 274.925857 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke: #1f77b4; stroke-width: 2.5; stroke-linecap: square"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#md01c008cc9" x="80.626281" y="242.909703" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="92.434552" y="260.691028" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="111.902243" y="267.578848" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="140.944207" y="270.842015" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="235.410377" y="273.870702" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="304.664292" y="274.495979" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#md01c008cc9" x="391.151901" y="274.925857" style="fill: #1f77b4; stroke: #1f77b4"/> + </g> + </g> + <g id="line2d_33"> + <path d="M 80.626281 251.429107 +L 92.434552 264.354762 +L 111.902243 269.376521 +L 140.944207 271.8874 +L 235.410377 274.32989 +L 304.664292 274.828158 +L 391.151901 275.170106 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #1f77b4; stroke-width: 1.5"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#ma0f57033ea" x="80.626281" y="251.429107" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="92.434552" y="264.354762" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="111.902243" y="269.376521" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="140.944207" y="271.8874" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="235.410377" y="274.32989" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="304.664292" y="274.828158" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + <use xlink:href="#ma0f57033ea" x="391.151901" y="275.170106" style="fill: #1f77b4; stroke: #1f77b4; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_34"> + <path d="M 80.626281 276.69422 +L 92.434552 285.633732 +L 111.902243 288.35955 +L 140.944207 289.727344 +L 235.410377 291.114679 +L 304.664292 291.407777 +L 391.151901 291.603176 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke: #ff7f0e; stroke-width: 2.5; stroke-linecap: square"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#mb57f732fb6" x="80.626281" y="276.69422" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="92.434552" y="285.633732" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="111.902243" y="288.35955" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="140.944207" y="289.727344" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="235.410377" y="291.114679" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="304.664292" y="291.407777" style="fill: #ff7f0e; stroke: #ff7f0e"/> + <use xlink:href="#mb57f732fb6" x="391.151901" y="291.603176" style="fill: #ff7f0e; stroke: #ff7f0e"/> + </g> + </g> + <g id="line2d_35"> + <path d="M 80.626281 285.311323 +L 92.434552 288.125071 +L 111.902243 289.561255 +L 140.944207 290.77273 +L 235.410377 291.583637 +L 304.664292 291.739956 +L 391.151901 291.827886 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #ff7f0e; stroke-width: 1.5"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#m8e3da50f92" x="80.626281" y="285.311323" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="92.434552" y="288.125071" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="111.902243" y="289.561255" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="140.944207" y="290.77273" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="235.410377" y="291.583637" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="304.664292" y="291.739956" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + <use xlink:href="#m8e3da50f92" x="391.151901" y="291.827886" style="fill: #ff7f0e; stroke: #ff7f0e; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_36"> + <path d="M 80.626281 233.432843 +L 92.434552 240.144805 +L 111.902243 242.186726 +L 140.944207 243.544751 +L 235.410377 245.020014 +L 304.664292 245.528052 +L 391.151901 245.664832 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke: #2ca02c; stroke-width: 2.5; stroke-linecap: square"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#m3309487d34" x="80.626281" y="233.432843" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="92.434552" y="240.144805" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="111.902243" y="242.186726" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="140.944207" y="243.544751" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="235.410377" y="245.020014" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="304.664292" y="245.528052" style="fill: #2ca02c; stroke: #2ca02c"/> + <use xlink:href="#m3309487d34" x="391.151901" y="245.664832" style="fill: #2ca02c; stroke: #2ca02c"/> + </g> + </g> + <g id="line2d_37"> + <path d="M 80.626281 245.234953 +L 92.434552 247.472274 +L 111.902243 247.736063 +L 140.944207 248.40042 +L 235.410377 248.908458 +L 304.664292 249.221096 +L 391.151901 249.309026 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #2ca02c; stroke-width: 1.5"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#mf697399bda" x="80.626281" y="245.234953" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="92.434552" y="247.472274" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="111.902243" y="247.736063" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="140.944207" y="248.40042" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="235.410377" y="248.908458" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="304.664292" y="249.221096" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + <use xlink:href="#mf697399bda" x="391.151901" y="249.309026" style="fill: #2ca02c; stroke: #2ca02c; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_38"> + <path d="M 80.626281 255.757199 +L 92.434552 268.340905 +L 111.902243 272.092569 +L 140.944207 274.036791 +L 235.410377 275.756304 +L 304.664292 276.039633 +L 391.151901 276.235032 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke: #d62728; stroke-width: 2.5; stroke-linecap: square"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#m82b9f5b983" x="80.626281" y="255.757199" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="92.434552" y="268.340905" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="111.902243" y="272.092569" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="140.944207" y="274.036791" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="235.410377" y="275.756304" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="304.664292" y="276.039633" style="fill: #d62728; stroke: #d62728"/> + <use xlink:href="#m82b9f5b983" x="391.151901" y="276.235032" style="fill: #d62728; stroke: #d62728"/> + </g> + </g> + <g id="line2d_39"> + <path d="M 80.626281 169.185596 +L 92.434552 230.355307 +L 111.902243 251.741746 +L 140.944207 261.746183 +L 235.410377 269.48399 +L 304.664292 271.096034 +L 391.151901 272.170729 +" clip-path="url(#p09f07034f6)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #d62728; stroke-width: 1.5"/> + <g clip-path="url(#p09f07034f6)"> + <use xlink:href="#madafa35c9d" x="80.626281" y="169.185596" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="92.434552" y="230.355307" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="111.902243" y="251.741746" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="140.944207" y="261.746183" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="235.410377" y="269.48399" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="304.664292" y="271.096034" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + <use xlink:href="#madafa35c9d" x="391.151901" y="272.170729" style="fill: #d62728; stroke: #d62728; stroke-linejoin: miter"/> + </g> + </g> + <g id="patch_8"> + <path d="M 65.1 297.96 +L 65.1 163.053482 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_9"> + <path d="M 406.678182 297.96 +L 406.678182 163.053482 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_10"> + <path d="M 65.1 297.96 +L 406.678182 297.96 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_11"> + <path d="M 65.1 163.053482 +L 406.678182 163.053482 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="legend_1"> + <g id="line2d_40"> + <path d="M 217.748182 173.532232 +L 225.748182 173.532232 +L 233.748182 173.532232 +" style="fill: none; stroke: #1f77b4; stroke-width: 2.5; stroke-linecap: square"/> + <g> + <use xlink:href="#md01c008cc9" x="225.748182" y="173.532232" style="fill: #1f77b4; stroke: #1f77b4"/> + </g> + </g> + <g id="text_13"> + <!-- MACE-MP-medium --> + <g transform="translate(240.148182 176.332232) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-30" d="M 628 4666 +L 1569 4666 +L 2759 1491 +L 3956 4666 +L 4897 4666 +L 4897 0 +L 4281 0 +L 4281 4097 +L 3078 897 +L 2444 897 +L 1241 4097 +L 1241 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-24" d="M 2188 4044 +L 1331 1722 +L 3047 1722 +L 2188 4044 +z +M 1831 4666 +L 2547 4666 +L 4325 0 +L 3669 0 +L 3244 1197 +L 1141 1197 +L 716 0 +L 50 0 +L 1831 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-26" d="M 4122 4306 +L 4122 3641 +Q 3803 3938 3442 4084 +Q 3081 4231 2675 4231 +Q 1875 4231 1450 3742 +Q 1025 3253 1025 2328 +Q 1025 1406 1450 917 +Q 1875 428 2675 428 +Q 3081 428 3442 575 +Q 3803 722 4122 1019 +L 4122 359 +Q 3791 134 3420 21 +Q 3050 -91 2638 -91 +Q 1578 -91 968 557 +Q 359 1206 359 2328 +Q 359 3453 968 4101 +Q 1578 4750 2638 4750 +Q 3056 4750 3426 4639 +Q 3797 4528 4122 4306 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-28" d="M 628 4666 +L 3578 4666 +L 3578 4134 +L 1259 4134 +L 1259 2753 +L 3481 2753 +L 3481 2222 +L 1259 2222 +L 1259 531 +L 3634 531 +L 3634 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-10" d="M 313 2009 +L 1997 2009 +L 1997 1497 +L 313 1497 +L 313 2009 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-33" d="M 1259 4147 +L 1259 2394 +L 2053 2394 +Q 2494 2394 2734 2622 +Q 2975 2850 2975 3272 +Q 2975 3691 2734 3919 +Q 2494 4147 2053 4147 +L 1259 4147 +z +M 628 4666 +L 2053 4666 +Q 2838 4666 3239 4311 +Q 3641 3956 3641 3272 +Q 3641 2581 3239 2228 +Q 2838 1875 2053 1875 +L 1259 1875 +L 1259 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-50" d="M 3328 2828 +Q 3544 3216 3844 3400 +Q 4144 3584 4550 3584 +Q 5097 3584 5394 3201 +Q 5691 2819 5691 2113 +L 5691 0 +L 5113 0 +L 5113 2094 +Q 5113 2597 4934 2840 +Q 4756 3084 4391 3084 +Q 3944 3084 3684 2787 +Q 3425 2491 3425 1978 +L 3425 0 +L 2847 0 +L 2847 2094 +Q 2847 2600 2669 2842 +Q 2491 3084 2119 3084 +Q 1678 3084 1418 2786 +Q 1159 2488 1159 1978 +L 1159 0 +L 581 0 +L 581 3500 +L 1159 3500 +L 1159 2956 +Q 1356 3278 1631 3431 +Q 1906 3584 2284 3584 +Q 2666 3584 2933 3390 +Q 3200 3197 3328 2828 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-48" d="M 3597 1894 +L 3597 1613 +L 953 1613 +Q 991 1019 1311 708 +Q 1631 397 2203 397 +Q 2534 397 2845 478 +Q 3156 559 3463 722 +L 3463 178 +Q 3153 47 2828 -22 +Q 2503 -91 2169 -91 +Q 1331 -91 842 396 +Q 353 884 353 1716 +Q 353 2575 817 3079 +Q 1281 3584 2069 3584 +Q 2775 3584 3186 3129 +Q 3597 2675 3597 1894 +z +M 3022 2063 +Q 3016 2534 2758 2815 +Q 2500 3097 2075 3097 +Q 1594 3097 1305 2825 +Q 1016 2553 972 2059 +L 3022 2063 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-47" d="M 2906 2969 +L 2906 4863 +L 3481 4863 +L 3481 0 +L 2906 0 +L 2906 525 +Q 2725 213 2448 61 +Q 2172 -91 1784 -91 +Q 1150 -91 751 415 +Q 353 922 353 1747 +Q 353 2572 751 3078 +Q 1150 3584 1784 3584 +Q 2172 3584 2448 3432 +Q 2725 3281 2906 2969 +z +M 947 1747 +Q 947 1113 1208 752 +Q 1469 391 1925 391 +Q 2381 391 2643 752 +Q 2906 1113 2906 1747 +Q 2906 2381 2643 2742 +Q 2381 3103 1925 3103 +Q 1469 3103 1208 2742 +Q 947 2381 947 1747 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-4c" d="M 603 3500 +L 1178 3500 +L 1178 0 +L 603 0 +L 603 3500 +z +M 603 4863 +L 1178 4863 +L 1178 4134 +L 603 4134 +L 603 4863 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-58" d="M 544 1381 +L 544 3500 +L 1119 3500 +L 1119 1403 +Q 1119 906 1312 657 +Q 1506 409 1894 409 +Q 2359 409 2629 706 +Q 2900 1003 2900 1516 +L 2900 3500 +L 3475 3500 +L 3475 0 +L 2900 0 +L 2900 538 +Q 2691 219 2414 64 +Q 2138 -91 1772 -91 +Q 1169 -91 856 284 +Q 544 659 544 1381 +z +M 1991 3584 +L 1991 3584 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-30"/> + <use xlink:href="#DejaVuSans-24" transform="translate(86.28125 0)"/> + <use xlink:href="#DejaVuSans-26" transform="translate(152.9375 0)"/> + <use xlink:href="#DejaVuSans-28" transform="translate(222.765625 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(285.953125 0)"/> + <use xlink:href="#DejaVuSans-30" transform="translate(322.03125 0)"/> + <use xlink:href="#DejaVuSans-33" transform="translate(408.3125 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(466.40625 0)"/> + <use xlink:href="#DejaVuSans-50" transform="translate(502.484375 0)"/> + <use xlink:href="#DejaVuSans-48" transform="translate(599.890625 0)"/> + <use xlink:href="#DejaVuSans-47" transform="translate(661.421875 0)"/> + <use xlink:href="#DejaVuSans-4c" transform="translate(724.90625 0)"/> + <use xlink:href="#DejaVuSans-58" transform="translate(752.6875 0)"/> + <use xlink:href="#DejaVuSans-50" transform="translate(816.0625 0)"/> + </g> + </g> + <g id="line2d_41"> + <path d="M 217.748182 185.532857 +L 225.748182 185.532857 +L 233.748182 185.532857 +" style="fill: none; stroke: #ff7f0e; stroke-width: 2.5; stroke-linecap: square"/> + <g> + <use xlink:href="#mb57f732fb6" x="225.748182" y="185.532857" style="fill: #ff7f0e; stroke: #ff7f0e"/> + </g> + </g> + <g id="text_14"> + <!-- MACE-MP-small --> + <g transform="translate(240.148182 188.332857) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-56" d="M 2834 3397 +L 2834 2853 +Q 2591 2978 2328 3040 +Q 2066 3103 1784 3103 +Q 1356 3103 1142 2972 +Q 928 2841 928 2578 +Q 928 2378 1081 2264 +Q 1234 2150 1697 2047 +L 1894 2003 +Q 2506 1872 2764 1633 +Q 3022 1394 3022 966 +Q 3022 478 2636 193 +Q 2250 -91 1575 -91 +Q 1294 -91 989 -36 +Q 684 19 347 128 +L 347 722 +Q 666 556 975 473 +Q 1284 391 1588 391 +Q 1994 391 2212 530 +Q 2431 669 2431 922 +Q 2431 1156 2273 1281 +Q 2116 1406 1581 1522 +L 1381 1569 +Q 847 1681 609 1914 +Q 372 2147 372 2553 +Q 372 3047 722 3315 +Q 1072 3584 1716 3584 +Q 2034 3584 2315 3537 +Q 2597 3491 2834 3397 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-44" d="M 2194 1759 +Q 1497 1759 1228 1600 +Q 959 1441 959 1056 +Q 959 750 1161 570 +Q 1363 391 1709 391 +Q 2188 391 2477 730 +Q 2766 1069 2766 1631 +L 2766 1759 +L 2194 1759 +z +M 3341 1997 +L 3341 0 +L 2766 0 +L 2766 531 +Q 2569 213 2275 61 +Q 1981 -91 1556 -91 +Q 1019 -91 701 211 +Q 384 513 384 1019 +Q 384 1609 779 1909 +Q 1175 2209 1959 2209 +L 2766 2209 +L 2766 2266 +Q 2766 2663 2505 2880 +Q 2244 3097 1772 3097 +Q 1472 3097 1187 3025 +Q 903 2953 641 2809 +L 641 3341 +Q 956 3463 1253 3523 +Q 1550 3584 1831 3584 +Q 2591 3584 2966 3190 +Q 3341 2797 3341 1997 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-4f" d="M 603 4863 +L 1178 4863 +L 1178 0 +L 603 0 +L 603 4863 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-30"/> + <use xlink:href="#DejaVuSans-24" transform="translate(86.28125 0)"/> + <use xlink:href="#DejaVuSans-26" transform="translate(152.9375 0)"/> + <use xlink:href="#DejaVuSans-28" transform="translate(222.765625 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(285.953125 0)"/> + <use xlink:href="#DejaVuSans-30" transform="translate(322.03125 0)"/> + <use xlink:href="#DejaVuSans-33" transform="translate(408.3125 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(466.40625 0)"/> + <use xlink:href="#DejaVuSans-56" transform="translate(502.484375 0)"/> + <use xlink:href="#DejaVuSans-50" transform="translate(554.578125 0)"/> + <use xlink:href="#DejaVuSans-44" transform="translate(651.984375 0)"/> + <use xlink:href="#DejaVuSans-4f" transform="translate(713.265625 0)"/> + <use xlink:href="#DejaVuSans-4f" transform="translate(741.046875 0)"/> + </g> + </g> + <g id="line2d_42"> + <path d="M 217.748182 197.533482 +L 225.748182 197.533482 +L 233.748182 197.533482 +" style="fill: none; stroke: #2ca02c; stroke-width: 2.5; stroke-linecap: square"/> + <g> + <use xlink:href="#m3309487d34" x="225.748182" y="197.533482" style="fill: #2ca02c; stroke: #2ca02c"/> + </g> + </g> + <g id="text_15"> + <!-- TensorNet-MatPES-r2SCAN-v2025.1-PES --> + <g transform="translate(240.148182 200.333482) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-37" d="M -19 4666 +L 3928 4666 +L 3928 4134 +L 2272 4134 +L 2272 0 +L 1638 0 +L 1638 4134 +L -19 4134 +L -19 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-51" d="M 3513 2113 +L 3513 0 +L 2938 0 +L 2938 2094 +Q 2938 2591 2744 2837 +Q 2550 3084 2163 3084 +Q 1697 3084 1428 2787 +Q 1159 2491 1159 1978 +L 1159 0 +L 581 0 +L 581 3500 +L 1159 3500 +L 1159 2956 +Q 1366 3272 1645 3428 +Q 1925 3584 2291 3584 +Q 2894 3584 3203 3211 +Q 3513 2838 3513 2113 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-52" d="M 1959 3097 +Q 1497 3097 1228 2736 +Q 959 2375 959 1747 +Q 959 1119 1226 758 +Q 1494 397 1959 397 +Q 2419 397 2687 759 +Q 2956 1122 2956 1747 +Q 2956 2369 2687 2733 +Q 2419 3097 1959 3097 +z +M 1959 3584 +Q 2709 3584 3137 3096 +Q 3566 2609 3566 1747 +Q 3566 888 3137 398 +Q 2709 -91 1959 -91 +Q 1206 -91 779 398 +Q 353 888 353 1747 +Q 353 2609 779 3096 +Q 1206 3584 1959 3584 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-55" d="M 2631 2963 +Q 2534 3019 2420 3045 +Q 2306 3072 2169 3072 +Q 1681 3072 1420 2755 +Q 1159 2438 1159 1844 +L 1159 0 +L 581 0 +L 581 3500 +L 1159 3500 +L 1159 2956 +Q 1341 3275 1631 3429 +Q 1922 3584 2338 3584 +Q 2397 3584 2469 3576 +Q 2541 3569 2628 3553 +L 2631 2963 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-31" d="M 628 4666 +L 1478 4666 +L 3547 763 +L 3547 4666 +L 4159 4666 +L 4159 0 +L 3309 0 +L 1241 3903 +L 1241 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-57" d="M 1172 4494 +L 1172 3500 +L 2356 3500 +L 2356 3053 +L 1172 3053 +L 1172 1153 +Q 1172 725 1289 603 +Q 1406 481 1766 481 +L 2356 481 +L 2356 0 +L 1766 0 +Q 1100 0 847 248 +Q 594 497 594 1153 +L 594 3053 +L 172 3053 +L 172 3500 +L 594 3500 +L 594 4494 +L 1172 4494 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-36" d="M 3425 4513 +L 3425 3897 +Q 3066 4069 2747 4153 +Q 2428 4238 2131 4238 +Q 1616 4238 1336 4038 +Q 1056 3838 1056 3469 +Q 1056 3159 1242 3001 +Q 1428 2844 1947 2747 +L 2328 2669 +Q 3034 2534 3370 2195 +Q 3706 1856 3706 1288 +Q 3706 609 3251 259 +Q 2797 -91 1919 -91 +Q 1588 -91 1214 -16 +Q 841 59 441 206 +L 441 856 +Q 825 641 1194 531 +Q 1563 422 1919 422 +Q 2459 422 2753 634 +Q 3047 847 3047 1241 +Q 3047 1584 2836 1778 +Q 2625 1972 2144 2069 +L 1759 2144 +Q 1053 2284 737 2584 +Q 422 2884 422 3419 +Q 422 4038 858 4394 +Q 1294 4750 2059 4750 +Q 2388 4750 2728 4690 +Q 3069 4631 3425 4513 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-59" d="M 191 3500 +L 800 3500 +L 1894 563 +L 2988 3500 +L 3597 3500 +L 2284 0 +L 1503 0 +L 191 3500 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-11" d="M 684 794 +L 1344 794 +L 1344 0 +L 684 0 +L 684 794 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-37"/> + <use xlink:href="#DejaVuSans-48" transform="translate(44.09375 0)"/> + <use xlink:href="#DejaVuSans-51" transform="translate(105.625 0)"/> + <use xlink:href="#DejaVuSans-56" transform="translate(169 0)"/> + <use xlink:href="#DejaVuSans-52" transform="translate(221.09375 0)"/> + <use xlink:href="#DejaVuSans-55" transform="translate(282.28125 0)"/> + <use xlink:href="#DejaVuSans-31" transform="translate(323.390625 0)"/> + <use xlink:href="#DejaVuSans-48" transform="translate(398.203125 0)"/> + <use xlink:href="#DejaVuSans-57" transform="translate(459.734375 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(498.9375 0)"/> + <use xlink:href="#DejaVuSans-30" transform="translate(535.015625 0)"/> + <use xlink:href="#DejaVuSans-44" transform="translate(621.296875 0)"/> + <use xlink:href="#DejaVuSans-57" transform="translate(682.578125 0)"/> + <use xlink:href="#DejaVuSans-33" transform="translate(721.78125 0)"/> + <use xlink:href="#DejaVuSans-28" transform="translate(782.078125 0)"/> + <use xlink:href="#DejaVuSans-36" transform="translate(845.265625 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(908.75 0)"/> + <use xlink:href="#DejaVuSans-55" transform="translate(944.828125 0)"/> + <use xlink:href="#DejaVuSans-15" transform="translate(985.9375 0)"/> + <use xlink:href="#DejaVuSans-36" transform="translate(1049.5625 0)"/> + <use xlink:href="#DejaVuSans-26" transform="translate(1113.046875 0)"/> + <use xlink:href="#DejaVuSans-24" transform="translate(1182.875 0)"/> + <use xlink:href="#DejaVuSans-31" transform="translate(1251.28125 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(1326.09375 0)"/> + <use xlink:href="#DejaVuSans-59" transform="translate(1359.484375 0)"/> + <use xlink:href="#DejaVuSans-15" transform="translate(1418.671875 0)"/> + <use xlink:href="#DejaVuSans-13" transform="translate(1482.296875 0)"/> + <use xlink:href="#DejaVuSans-15" transform="translate(1545.921875 0)"/> + <use xlink:href="#DejaVuSans-18" transform="translate(1609.546875 0)"/> + <use xlink:href="#DejaVuSans-11" transform="translate(1673.171875 0)"/> + <use xlink:href="#DejaVuSans-14" transform="translate(1704.953125 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(1768.578125 0)"/> + <use xlink:href="#DejaVuSans-33" transform="translate(1804.65625 0)"/> + <use xlink:href="#DejaVuSans-28" transform="translate(1864.953125 0)"/> + <use xlink:href="#DejaVuSans-36" transform="translate(1928.140625 0)"/> + </g> + </g> + <g id="line2d_43"> + <path d="M 217.748182 209.534107 +L 225.748182 209.534107 +L 233.748182 209.534107 +" style="fill: none; stroke: #d62728; stroke-width: 2.5; stroke-linecap: square"/> + <g> + <use xlink:href="#m82b9f5b983" x="225.748182" y="209.534107" style="fill: #d62728; stroke: #d62728"/> + </g> + </g> + <g id="text_16"> + <!-- uma-s-1p1 --> + <g transform="translate(240.148182 212.334107) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-53" d="M 1159 525 +L 1159 -1331 +L 581 -1331 +L 581 3500 +L 1159 3500 +L 1159 2969 +Q 1341 3281 1617 3432 +Q 1894 3584 2278 3584 +Q 2916 3584 3314 3078 +Q 3713 2572 3713 1747 +Q 3713 922 3314 415 +Q 2916 -91 2278 -91 +Q 1894 -91 1617 61 +Q 1341 213 1159 525 +z +M 3116 1747 +Q 3116 2381 2855 2742 +Q 2594 3103 2138 3103 +Q 1681 3103 1420 2742 +Q 1159 2381 1159 1747 +Q 1159 1113 1420 752 +Q 1681 391 2138 391 +Q 2594 391 2855 752 +Q 3116 1113 3116 1747 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-58"/> + <use xlink:href="#DejaVuSans-50" transform="translate(63.375 0)"/> + <use xlink:href="#DejaVuSans-44" transform="translate(160.78125 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(222.0625 0)"/> + <use xlink:href="#DejaVuSans-56" transform="translate(258.140625 0)"/> + <use xlink:href="#DejaVuSans-10" transform="translate(310.234375 0)"/> + <use xlink:href="#DejaVuSans-14" transform="translate(346.3125 0)"/> + <use xlink:href="#DejaVuSans-53" transform="translate(409.9375 0)"/> + <use xlink:href="#DejaVuSans-14" transform="translate(473.421875 0)"/> + </g> + </g> + <g id="line2d_44"> + <path d="M 217.748182 221.534732 +L 225.748182 221.534732 +L 233.748182 221.534732 +" style="fill: none; stroke: #000000; stroke-width: 2.5; stroke-linecap: square"/> + <defs> + <path id="m3557f0c8c1" d="M 0 3 +C 0.795609 3 1.55874 2.683901 2.12132 2.12132 +C 2.683901 1.55874 3 0.795609 3 0 +C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 +C 1.55874 -2.683901 0.795609 -3 0 -3 +C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 +C -2.683901 -1.55874 -3 -0.795609 -3 0 +C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 +C -1.55874 2.683901 -0.795609 3 0 3 +z +" style="stroke: #000000"/> + </defs> + <g> + <use xlink:href="#m3557f0c8c1" x="225.748182" y="221.534732" style="stroke: #000000"/> + </g> + </g> + <g id="text_17"> + <!-- this run --> + <g transform="translate(240.148182 224.334732) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-4b" d="M 3513 2113 +L 3513 0 +L 2938 0 +L 2938 2094 +Q 2938 2591 2744 2837 +Q 2550 3084 2163 3084 +Q 1697 3084 1428 2787 +Q 1159 2491 1159 1978 +L 1159 0 +L 581 0 +L 581 4863 +L 1159 4863 +L 1159 2956 +Q 1366 3272 1645 3428 +Q 1925 3584 2291 3584 +Q 2894 3584 3203 3211 +Q 3513 2838 3513 2113 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-3" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-57"/> + <use xlink:href="#DejaVuSans-4b" transform="translate(39.203125 0)"/> + <use xlink:href="#DejaVuSans-4c" transform="translate(102.578125 0)"/> + <use xlink:href="#DejaVuSans-56" transform="translate(130.359375 0)"/> + <use xlink:href="#DejaVuSans-3" transform="translate(182.453125 0)"/> + <use xlink:href="#DejaVuSans-55" transform="translate(214.234375 0)"/> + <use xlink:href="#DejaVuSans-58" transform="translate(255.34375 0)"/> + <use xlink:href="#DejaVuSans-51" transform="translate(318.71875 0)"/> + </g> + </g> + <g id="line2d_45"> + <path d="M 217.748182 233.535357 +L 225.748182 233.535357 +L 233.748182 233.535357 +" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/> + <defs> + <path id="m5bf04e4d95" d="M -3 3 +L 3 3 +L 3 -3 +L -3 -3 +z +" style="stroke: #000000; stroke-linejoin: miter"/> + </defs> + <g> + <use xlink:href="#m5bf04e4d95" x="225.748182" y="233.535357" style="stroke: #000000; stroke-linejoin: miter"/> + </g> + </g> + <g id="text_18"> + <!-- reference --> + <g transform="translate(240.148182 236.335357) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-49" d="M 2375 4863 +L 2375 4384 +L 1825 4384 +Q 1516 4384 1395 4259 +Q 1275 4134 1275 3809 +L 1275 3500 +L 2222 3500 +L 2222 3053 +L 1275 3053 +L 1275 0 +L 697 0 +L 697 3053 +L 147 3053 +L 147 3500 +L 697 3500 +L 697 3744 +Q 697 4328 969 4595 +Q 1241 4863 1831 4863 +L 2375 4863 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-46" d="M 3122 3366 +L 3122 2828 +Q 2878 2963 2633 3030 +Q 2388 3097 2138 3097 +Q 1578 3097 1268 2742 +Q 959 2388 959 1747 +Q 959 1106 1268 751 +Q 1578 397 2138 397 +Q 2388 397 2633 464 +Q 2878 531 3122 666 +L 3122 134 +Q 2881 22 2623 -34 +Q 2366 -91 2075 -91 +Q 1284 -91 818 406 +Q 353 903 353 1747 +Q 353 2603 823 3093 +Q 1294 3584 2113 3584 +Q 2378 3584 2631 3529 +Q 2884 3475 3122 3366 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-55"/> + <use xlink:href="#DejaVuSans-48" transform="translate(38.90625 0)"/> + <use xlink:href="#DejaVuSans-49" transform="translate(100.4375 0)"/> + <use xlink:href="#DejaVuSans-48" transform="translate(135.640625 0)"/> + <use xlink:href="#DejaVuSans-55" transform="translate(197.171875 0)"/> + <use xlink:href="#DejaVuSans-48" transform="translate(236.078125 0)"/> + <use xlink:href="#DejaVuSans-51" transform="translate(297.609375 0)"/> + <use xlink:href="#DejaVuSans-46" transform="translate(360.984375 0)"/> + <use xlink:href="#DejaVuSans-48" transform="translate(415.96875 0)"/> + </g> + </g> + </g> + </g> + </g> + <defs> + <clipPath id="p9a404c7721"> + <rect x="65.1" y="7.2" width="341.578182" height="134.906518"/> + </clipPath> + <clipPath id="p09f07034f6"> + <rect x="65.1" y="163.053482" width="341.578182" height="134.906518"/> + </clipPath> + </defs> +</svg> diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/run/input_configs.yaml b/skills/ml-mlip-speed/examples/nacl_gb10_small/run/input_configs.yaml new file mode 100644 index 00000000..055f2d98 --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/run/input_configs.yaml @@ -0,0 +1,10 @@ +models: +- uma-s-1p1 +providers: +- fairchem +device: cuda +output_dir: .agents/test/speed_2000 +max_atoms_limit: 2000 +results_file: null +hardware_name: NVIDIA_GB10 +only_plot: false diff --git a/skills/ml-mlip-speed/examples/nacl_gb10_small/run/speed_benchmark.yaml b/skills/ml-mlip-speed/examples/nacl_gb10_small/run/speed_benchmark.yaml new file mode 100644 index 00000000..2441d64a --- /dev/null +++ b/skills/ml-mlip-speed/examples/nacl_gb10_small/run/speed_benchmark.yaml @@ -0,0 +1,104 @@ +MACE-MP-medium: + memories: + - 0.316558837890625 + - 0.522824764251709 + - 0.8491921424865723 + - 1.3263378143310547 + - 2.8342700004577637 + - 3.9444427490234375 + - 5.323500633239746 + n_atoms: + - 54 + - 128 + - 250 + - 432 + - 1024 + - 1458 + - 2000 + provider: mace + times: + - 0.016614770889282225 + - 0.03448519706726074 + - 0.0649592399597168 + - 0.11456565856933594 + - 0.26400156021118165 + - 0.37369871139526367 + - 0.5074428081512451 +MACE-MP-small: + memories: + - 0.13421249389648438 + - 0.20371294021606445 + - 0.32981348037719727 + - 0.5108985900878906 + - 1.069197177886963 + - 1.4788165092468262 + - 1.9906439781188965 + n_atoms: + - 54 + - 128 + - 250 + - 432 + - 1024 + - 1458 + - 2000 + provider: mace + times: + - 0.011630439758300781 + - 0.01570868492126465 + - 0.028258562088012695 + - 0.0503087043762207 + - 0.11117186546325683 + - 0.15428481101989747 + - 0.20895137786865234 +TensorNet-MatPES-r2SCAN-v2025.1-PES: + memories: + - 0.3677401542663574 + - 0.7857503890991211 + - 1.4836082458496094 + - 2.5049009323120117 + - 5.7869343757629395 + - 8.165530681610107 + - 11.173486709594727 + n_atoms: + - 54 + - 128 + - 250 + - 432 + - 1024 + - 1458 + - 2000 + provider: matgl + times: + - 0.01782646179199219 + - 0.024356889724731445 + - 0.038851165771484376 + - 0.06222996711730957 + - 0.13974223136901856 + - 0.197068452835083 + - 0.26959657669067383 +uma-s-1p1: + memories: + - 0.24720239639282227 + - 0.42501163482666016 + - 0.7363028526306152 + - 1.1884055137634277 + - 2.640913486480713 + - 3.7192511558532715 + - 5.061635494232178 + n_atoms: + - 54 + - 128 + - 250 + - 432 + - 1024 + - 1458 + - 2000 + provider: fairchem + times: + - 0.015010404586791991 + - 0.025355815887451172 + - 0.041822624206542966 + - 0.06720757484436035 + - 0.14981608390808104 + - 0.21080327033996582 + - 0.2900580406188965 From 46ae9ed71961b21c1a37a8495e6434103de2e183 Mon Sep 17 00:00:00 2001 From: bowen-bd <bowendeng@berkeley.edu> Date: Sat, 10 Oct 2026 14:06:19 -0400 Subject: [PATCH 10/12] fix(mat-elemental-energies): regenerate TensorNet-MatPES-PBE-v2025.1 library Adds the TensorNet-MatPES-PBE-v2025.1-PES alias to the 2025.2 weights, like the other v2025.1 names, and regenerates its library file with those weights. O stores the single point on the MP structure because the molecular crystal collapses under relaxation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --- skills/mat-elemental-energies/SKILL.md | 15 +- .../examples/li_fe_cu_o_si_vs_mp/README.md | 4 +- ...orNet-MatPES-PBE-v2025.1-PES_energies.json | 178 +++++++++--------- src/utils/mlips/matgl/matgl_wrapper.py | 1 + tests/matgl/test_matgl_wrapper.py | 9 + 5 files changed, 109 insertions(+), 98 deletions(-) diff --git a/skills/mat-elemental-energies/SKILL.md b/skills/mat-elemental-energies/SKILL.md index 1718a77c..e27ea68d 100644 --- a/skills/mat-elemental-energies/SKILL.md +++ b/skills/mat-elemental-energies/SKILL.md @@ -27,8 +27,9 @@ As of **2026-01-30**, the library is fully expanded and contains **89 elements** - **MatGL**: CHGNet (MPtrj, MatPES), M3GNet (MP, MatPES), TensorNet (MatPES). - **FairChem**: UMA (S/M) with all heads (omat, omol, oc20). -**Corrections (2026-10):** `TensorNet-MatPES-r2SCAN-v2025.1-PES` was regenerated for all 89 -elements with the weights that name now loads. Four O entries whose relaxation collapses the O2 +**Corrections (2026-10):** `TensorNet-MatPES-r2SCAN-v2025.1-PES` and +`TensorNet-MatPES-PBE-v2025.1-PES` were regenerated for all 89 elements with the 2025.2 weights +that those names now load (the PBE O entry is the MP single point, see Constraints). Four O entries whose relaxation collapses the O2 crystal now hold the single point on the MP structure: MACE-MP-medium, and MACE-MH-0 omat_pbe, matpes_r2scan and oc20_usemppbe (see Constraints). Two entries that the library protocol did not reproduce were replaced by its converged, physical results: MACE-MATPES-PBE-0 O @@ -54,13 +55,13 @@ reproduce were replaced by its converged, physical results: MACE-MATPES-PBE-0 O contact below 2.0 Å (MP: 2.145 Å), 0.15–0.86 eV/atom below the single point. When this happens the stored O value is the **single point on the MP structure** instead. This applies to MACE-MP-medium and MACE-MH-0 (omat_pbe, matpes_r2scan, oc20_usemppbe). - TensorNet-PES-MatPES-PBE-2025.2 shows the same collapse (-5.117 eV/atom fully relaxed - vs -4.964 single point). More than one MP entry can also tie at `energy_above_hull = 0` for these + The same rule gives the O entry of `TensorNet-MatPES-PBE-v2025.1-PES` (-5.117 eV/atom fully + relaxed vs -4.964 single point). More than one MP entry can also tie at `energy_above_hull = 0` for these elements (O2: mp-12957 and mp-1524462), so pin the `material_id` rather than relying on a formula lookup returning a stable order. -- **Checkpoint names vs weights**: matgl 4.x loads `TensorNet-MatPES-r2SCAN-v2025.1-PES` - and the `M3GNet-MatPES-*-v2025.1-PES` names as the 2025.2 weights. The TensorNet - r2SCAN file was regenerated with those weights (2026-10). The M3GNet-MatPES files +- **Checkpoint names vs weights**: matgl 4.x loads the `TensorNet-MatPES-*-v2025.1-PES` + and `M3GNet-MatPES-*-v2025.1-PES` names as the 2025.2 weights. Both TensorNet files were + regenerated with those weights (2026-10). The M3GNet-MatPES files still hold the old weights' energies (e.g. Si -0.46 and -0.63 eV/atom off), and `M3GNet-MP-2021.2.8-PES` now loads M3GNet-PES-MatPES-PBE-2025.2 weights, so check that a library file matches the loaded model before use. diff --git a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md index c677e02b..6637122d 100644 --- a/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md +++ b/skills/mat-elemental-energies/examples/li_fe_cu_o_si_vs_mp/README.md @@ -218,8 +218,8 @@ every oxide formation energy too positive by 0.86 eV per O atom. The other MPtrj older weights: Fe, Si and O were off by 11, 79 and 493 meV/atom, and the MAE vs MP was 164.5 meV/atom. **Do not mix functionals.** The MatPES-PBE checkpoints are on yet another absolute scale. For Cu the -library holds -3.746 (CHGNet-MatPES-PBE), -3.760 (TensorNet-MatPES-PBE) and -3.745 eV/atom -(MACE-MATPES-PBE-0), 339–354 meV/atom above MP's GGA value. Always take references and compound +library holds -3.746 (CHGNet-MatPES-PBE), -3.735 (TensorNet-MatPES-PBE) and -3.745 eV/atom +(MACE-MATPES-PBE-0), 353–365 meV/atom above MP's GGA value. Always take references and compound energies from the same checkpoint. ### Library reproducibility (CPU recomputation, [`cpu_verification.json`](cpu_verification.json)) diff --git a/skills/mat-elemental-energies/resources/TensorNet-MatPES-PBE-v2025.1-PES_energies.json b/skills/mat-elemental-energies/resources/TensorNet-MatPES-PBE-v2025.1-PES_energies.json index 3842bb01..40d5ba21 100644 --- a/skills/mat-elemental-energies/resources/TensorNet-MatPES-PBE-v2025.1-PES_energies.json +++ b/skills/mat-elemental-energies/resources/TensorNet-MatPES-PBE-v2025.1-PES_energies.json @@ -1,91 +1,91 @@ { - "Ac": -4.015091419219971, - "Ag": -2.720757007598877, - "Al": -3.7445180416107178, - "Ar": 0.03335728123784065, - "As": -4.72407341003418, - "Au": -3.2925941944122314, - "B": -6.137936274210612, - "Ba": -3.1301357746124268, - "Be": -3.6743335723876953, - "Bi": -3.7796473503112793, - "Br": -1.789527416229248, - "C": -9.153377532958984, - "Ca": -1.939705729484558, - "Cd": -0.7779848575592041, - "Ce": -5.930600166320801, - "Cl": -2.1007473468780518, - "Co": -6.9773850440979, - "Cr": -9.50151538848877, - "Cs": -0.7478464841842651, - "Cu": -3.75997257232666, - "Dy": -7.754642963409424, - "Er": -5.296450932820638, - "Eu": -11.43253231048584, - "F": -5.399975776672363, - "Fe": -8.199773788452148, - "Ga": -2.8990039825439453, - "Gd": -11.636702537536621, - "Ge": -4.431309223175049, - "H": -2.641566753387451, - "He": -0.014054946601390839, - "Hf": -9.887581825256348, - "Hg": -0.17109278837839761, - "Ho": -6.5945868492126465, - "I": -1.6696690320968628, - "In": -2.5503904819488525, - "Ir": -8.87661075592041, - "K": -0.9043551683425903, - "Kr": -0.6359727382659912, - "La": -4.872608661651611, - "Li": -1.881772518157959, - "Lu": -4.40321699778239, - "Mg": -1.4981659650802612, - "Mn": -8.837607548154633, - "Mo": -10.919683456420898, - "N": -7.177317142486572, - "Na": -1.2752339839935303, - "Nb": -10.077439308166504, - "Nd": -6.448848724365234, - "Ne": -0.7249330878257751, - "Ni": -5.5270562171936035, - "Np": -12.46453857421875, - "O": -5.113508224487305, - "Os": -11.093084335327148, - "P": -5.385415940057664, - "Pa": -9.454694747924805, - "Pb": -3.5530126094818115, - "Pd": -5.255769729614258, - "Pm": -7.729466438293457, - "Pr": -5.444699605305989, - "Pt": -6.1756463050842285, - "Pu": -14.488500595092773, - "Rb": -0.807735800743103, - "Re": -12.316848754882812, - "Rh": -7.314950942993164, - "Ru": -9.16293716430664, - "S": -4.377080917358398, - "Sb": -4.050452709197998, - "Sc": -6.208748817443848, - "Se": -3.475724935531616, - "Si": -5.243927001953125, - "Sm": -9.12646484375, - "Sn": -3.7108449935913086, - "Sr": -1.596495509147644, - "Ta": -11.737715657552084, - "Tb": -9.39816665649414, - "Tc": -10.319720268249512, - "Te": -3.1251586278279624, - "Th": -7.38339900970459, - "Ti": -7.715063730875651, - "Tl": -2.212744951248169, - "Tm": -4.05775785446167, - "U": -10.982026100158691, - "V": -8.996739387512207, - "W": -12.901537895202637, - "Xe": -0.6235040426254272, - "Y": -6.36667013168335, - "Yb": -3.643263578414917, - "Zn": -1.1402696371078491, - "Zr": -8.440990447998047 + "Ac": -4.0332722663879395, + "Ag": -2.7169182300567627, + "Al": -3.7137131690979004, + "Ar": -0.6184995174407959, + "As": -4.678127765655518, + "Au": -3.199343204498291, + "B": -6.555948257446289, + "Ba": -3.2250301837921143, + "Be": -3.6978728771209717, + "Bi": -3.8349649906158447, + "Br": -1.5994091033935547, + "C": -9.20433521270752, + "Ca": -1.938340187072754, + "Cd": -0.7252934575080872, + "Ce": -5.835724353790283, + "Cl": -1.81112802028656, + "Co": -6.979589939117432, + "Cr": -9.484265327453613, + "Cs": -0.7294954657554626, + "Cu": -3.7346038818359375, + "Dy": -7.891419887542725, + "Er": -5.184154192606608, + "Eu": -11.457599639892578, + "F": -1.8452584743499756, + "Fe": -8.24138355255127, + "Ga": -2.8794782161712646, + "Gd": -11.67426586151123, + "Ge": -4.489670753479004, + "H": -3.33870792388916, + "He": -0.048313163220882416, + "Hf": -9.84436321258545, + "Hg": -0.1737411618232727, + "Ho": -6.5366435050964355, + "I": -1.4911749362945557, + "In": -2.573744297027588, + "Ir": -8.871452331542969, + "K": -0.9592845439910889, + "Kr": -0.6737573941548666, + "La": -4.845357894897461, + "Li": -1.9145533243815105, + "Lu": -4.428648630777995, + "Mg": -1.494369387626648, + "Mn": -8.893234779094827, + "Mo": -10.887248039245605, + "N": -8.34013843536377, + "Na": -1.298863172531128, + "Nb": -10.053719520568848, + "Nd": -6.4420952796936035, + "Ne": -0.1282251477241516, + "Ni": -5.452908992767334, + "Np": -12.506216049194336, + "O": -4.964022636413574, + "Os": -11.149561882019043, + "P": -5.405718848818824, + "Pa": -9.388233184814453, + "Pb": -3.545029401779175, + "Pd": -5.204165458679199, + "Pm": -7.633066654205322, + "Pr": -5.466864267985026, + "Pt": -6.0618696212768555, + "Pu": -13.827624320983887, + "Rb": -0.8793045282363892, + "Re": -12.395001411437988, + "Rh": -7.222315788269043, + "Ru": -9.21462631225586, + "S": -4.117546081542969, + "Sb": -4.076771259307861, + "Sc": -6.2175612449646, + "Se": -3.489701509475708, + "Si": -5.361525058746338, + "Sm": -9.219436645507812, + "Sn": -3.6997601985931396, + "Sr": -1.6671594381332397, + "Ta": -11.716268920898438, + "Tb": -9.479571342468262, + "Tc": -10.392523765563965, + "Te": -3.0753113428751626, + "Th": -7.378896236419678, + "Ti": -7.7316640218098955, + "Tl": -2.231665849685669, + "Tm": -4.051190376281738, + "U": -11.014284133911133, + "V": -8.930377960205078, + "W": -12.92594051361084, + "Xe": -0.6049873232841492, + "Y": -6.3825531005859375, + "Yb": -3.5927276611328125, + "Zn": -1.1010684967041016, + "Zr": -8.473824501037598 } diff --git a/src/utils/mlips/matgl/matgl_wrapper.py b/src/utils/mlips/matgl/matgl_wrapper.py index bf31e07d..2a89d148 100644 --- a/src/utils/mlips/matgl/matgl_wrapper.py +++ b/src/utils/mlips/matgl/matgl_wrapper.py @@ -77,6 +77,7 @@ "TensorNet-MatPES-r2SCAN-v2025.1-PES": "TensorNet-PES-MatPES-r2SCAN-2025.2", "TensorNet-PES-MatPES-r2SCAN-2025.2": "TensorNet-PES-MatPES-r2SCAN-2025.2", "TensorNet-MatPES-PBE": "TensorNet-PES-MatPES-PBE-2025.2", + "TensorNet-MatPES-PBE-v2025.1-PES": "TensorNet-PES-MatPES-PBE-2025.2", "TensorNet-PES-MatPES-PBE-2025.2": "TensorNet-PES-MatPES-PBE-2025.2", "TensorNet-PES-ANI-1x-Subset": "TensorNet-PES-ANI-1x-Subset", # QET PES models diff --git a/tests/matgl/test_matgl_wrapper.py b/tests/matgl/test_matgl_wrapper.py index 69353e61..de8df6dc 100644 --- a/tests/matgl/test_matgl_wrapper.py +++ b/tests/matgl/test_matgl_wrapper.py @@ -181,6 +181,15 @@ def test_load_m3gnet(self, skip_if_wrong_env): assert wrapper.is_loaded assert wrapper.model is not None + def test_tensornet_pbe_v2025_1_alias(self, skip_if_wrong_env): + """The v2025.1 TensorNet PBE name resolves like the other v2025.1 aliases.""" + from src.utils.mlips.matgl.matgl_wrapper import AVAILABLE_MATGL_MODELS + + assert ( + AVAILABLE_MATGL_MODELS["TensorNet-MatPES-PBE-v2025.1-PES"] + == "TensorNet-PES-MatPES-PBE-2025.2" + ) + def test_static_calculation(self, sample_ase_atoms, skip_if_wrong_env): """Test static_calculation returns energy, forces, and stress""" from src.utils.mlips.matgl.matgl_wrapper import MatGLWrapper From d52cadb0009ae4f2ab77066440ee12333b213e95 Mon Sep 17 00:00:00 2001 From: bowen-bd <bowendeng@berkeley.edu> Date: Sat, 10 Oct 2026 19:30:41 -0400 Subject: [PATCH 11/12] fix(mlips): keep explicitly supplied zero momenta in run_md Requiring non-zero momenta treated an explicit all-zero momenta array as missing, so run_md relaxed the input and redrew velocities at the target temperature, changing intentional starts from rest (e.g. NVE). The presence of the momenta array alone now marks supplied velocities, matching CustomMDCalc.calc. Inputs without momenta still get Maxwell-Boltzmann velocities. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --- src/utils/mlips/base.py | 8 +++++--- tests/test_md_utils.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/utils/mlips/base.py b/src/utils/mlips/base.py index 455e27f2..c79c2438 100644 --- a/src/utils/mlips/base.py +++ b/src/utils/mlips/base.py @@ -1778,9 +1778,11 @@ def _single_run_md( pressure_ev_ang3 = pressure * units.bar if pressure is not None else 0.0 # ASE returns zeros (never None) from get_velocities() when no momenta - # are stored, so only a restart frame that carries momenta (e.g. a .traj - # written by a previous MD run) keeps its velocities and skips relaxation. - has_velocities = "momenta" in atoms.arrays and bool(atoms.get_momenta().any()) + # are stored, so test for the momenta array itself. Inputs that carry one + # (e.g. a .traj frame, or explicitly set momenta, including all zeros) + # keep their velocities and skip relaxation; others are relaxed and drawn + # from a Maxwell-Boltzmann distribution. + has_velocities = "momenta" in atoms.arrays md_calc = CustomMDCalc( calculator=calc, diff --git a/tests/test_md_utils.py b/tests/test_md_utils.py index 8247cd06..e01616dc 100644 --- a/tests/test_md_utils.py +++ b/tests/test_md_utils.py @@ -198,5 +198,34 @@ def frac_gap(a, b): assert frac_gap(final, last_frame) < 1e-5 +def test_run_md_keeps_explicit_zero_momenta(tmp_path): + """Explicitly stored zero momenta are a valid start from rest, not missing velocities. + + The input must not be relaxed and its velocities must not be redrawn at the + target temperature, so an NVE run starts from the given positions at 0 K. + """ + import numpy as np + from ase.io import read + + model = _EMTModel() + atoms = bulk("Cu", "fcc", a=3.6, cubic=True).repeat(2) + atoms.rattle(stdev=0.05, seed=0) + atoms.set_momenta(np.zeros((len(atoms), 3))) + + result = model.run_md( + atoms, + ensemble="nve", + temperature=300.0, + steps=1, + timestep=1.0, + log_interval=1, + output_dir=str(tmp_path), + ) + + first = read(result["trajectory_path"], index=0) + assert first.get_kinetic_energy() < 1e-8 + assert np.abs(first.get_positions() - atoms.get_positions()).max() < 1e-8 + + if __name__ == "__main__": pytest.main(["-v", __file__]) From d261d214ee909e329ac66ef9b7a36facd82d60fd Mon Sep 17 00:00:00 2001 From: bowen-bd <bowendeng@berkeley.edu> Date: Sat, 10 Oct 2026 19:30:41 -0400 Subject: [PATCH 12/12] fix(chem-nmr-analysis): count only in-range protons when --ppm-range is used A restricted fit normalizes each reference over the fitted range, so its signal fraction covers only the protons whose signals lie there; dividing by whole-molecule --protons gave wrong compositions with clean WD and noise diagnostics (e.g. 75:25 for a true 50:50). deconvolve.py and kinetics.py take --range-protons/--range_protons; without it each --protons count is scaled by the reference's area fraction inside the range. The camphor example states its H2 counts (1 1) and is unchanged at 13.1 % borneol. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --- .../reaction-to-nmr-quantification.md | 2 +- skills/chem-nmr-analysis/SKILL.md | 12 +- .../examples/deconvolution/README.md | 10 +- .../output/h2_window/deconvolve_result.json | 2 +- .../output/h2_window/input_configs.yaml | 3 + .../chem-nmr-analysis/scripts/deconvolve.py | 63 +++++++- skills/chem-nmr-analysis/scripts/kinetics.py | 50 +++++- skills/chem-nmr-analysis/scripts/spectra.py | 64 ++++++++ tests/test_chem_nmr_baseline.py | 144 +++++++++++++++++- 9 files changed, 331 insertions(+), 19 deletions(-) diff --git a/.agents/workflows/reaction-to-nmr-quantification.md b/.agents/workflows/reaction-to-nmr-quantification.md index a4992596..72bd56e1 100644 --- a/.agents/workflows/reaction-to-nmr-quantification.md +++ b/.agents/workflows/reaction-to-nmr-quantification.md @@ -59,7 +59,7 @@ Quantify component mole fractions via Wasserstein-distance deconvolution. - *Skill Reference:* `chem-nmr-analysis` (`deconvolve.py`) - **Action:** Run `deconvolve.py` with the crude spectrum, all reference spectra, proton counts, and component names, and `--baseline-window LO HI` set to the signal-free stretch from Step 5 (add `--baseline-stat max` for digitized spectra, whose baseline is a one-sided floor). Do not use the legacy `--baseline-correct` (minimum subtraction) on noisy or digitized spectra. Always use `--plot` and `--json`. - **Output:** Estimated mole fractions, Wasserstein distance (fit quality), unexplained (noise) signal fraction, subtracted baselines, and a multi-panel deconvolution plot. -- **Decision:** Review the Wasserstein distance *and* the noise fraction. If WD > 0.15, the fit is poor — check for missing components or ppm offsets before trusting the proportions. If the noise fraction exceeds about 0.2, revisit the baseline window/statistic and consider restricting `--ppm-range` to diagnostic signals, even when WD looks acceptable. If the proportions contradict known chemistry, flag this to the user. +- **Decision:** Review the Wasserstein distance *and* the noise fraction. If WD > 0.15, the fit is poor — check for missing components or ppm offsets before trusting the proportions. If the noise fraction exceeds about 0.2, revisit the baseline window/statistic and consider restricting `--ppm-range` to diagnostic signals (with `--range-protons` giving each component's protons in that range), even when WD looks acceptable. If the proportions contradict known chemistry, flag this to the user. ## References - Ciach, M. et al., "Masserstein: linear resampling of mass spectra by optimal transport", *Rapid Commun. Mass Spectrom.*, 2020. diff --git a/skills/chem-nmr-analysis/SKILL.md b/skills/chem-nmr-analysis/SKILL.md index 191fcf9b..2def342a 100644 --- a/skills/chem-nmr-analysis/SKILL.md +++ b/skills/chem-nmr-analysis/SKILL.md @@ -62,6 +62,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/deconv --names "borneol" "isoborneol" \ --baseline-window 3.70 3.94 \ --ppm-range 3.50 4.10 \ + --range-protons 1 1 \ --plot <research_dir>/deconvolution_result.png \ --json ``` @@ -71,7 +72,11 @@ mixture or any reference, preferably close to the peaks being quantified. Add `--baseline-stat max` when the baseline is a one-sided floor rather than noise (e.g. digitized spectra, whose traced flat line leaves a small positive residue). Use `--ppm-range` to fit only a region where each component has an isolated diagnostic -signal; omit it to fit the full spectrum. +signal; omit it to fit the full spectrum. A restricted fit only sees the protons whose +signals lie in the range, so give their number per component with `--range-protons` +(here 1 1: one H2 proton in each isomer). Without it, each `--protons` count is scaled +by the fraction of the reference's area inside the range, which is only as reliable as +the reference spectrum's full-range integrals. ### kinetics.py @@ -90,7 +95,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/kineti ``` `kinetics.py` takes the same baseline and range options as `deconvolve.py`, spelled -with underscores (`--baseline_window`, `--baseline_stat`, `--ppm_range`). +with underscores (`--baseline_window`, `--baseline_stat`, `--ppm_range`, `--range_protons`). `kinetics.csv` also records the noise fraction and the subtracted baseline of every time point. @@ -111,7 +116,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/plot.p ## Key Arguments for deconvolve.py `kinetics.py` accepts the same baseline and range options with underscores -(`--baseline_window`, `--baseline_stat`, `--ppm_range`, `--baseline_correct`). +(`--baseline_window`, `--baseline_stat`, `--ppm_range`, `--range_protons`, `--baseline_correct`). | Argument | Required | Description | |---|---|---| @@ -120,6 +125,7 @@ ${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/plot.p | `--baseline-window LO HI` | Recommended | Signal-free ppm window. Its `--baseline-stat` is subtracted from the mixture and every reference, and negatives are clipped to 0. If a spectrum has no samples in the window (dropped zero runs), the points bounding the gap are used. The agent should use this for any spectrum with noise or a baseline offset. | | `--baseline-stat` | No | `median` (default) for noisy or offset baselines; `max` for one-sided floors such as the residue of a digitized flat line, which a median only half removes. `max` subtracts about 3σ from every peak of a noisy spectrum, so do not use it there. | | `--ppm-range LO HI` | No | Deconvolve only this range, applied after the baseline step. Use it to fit isolated diagnostic signals. | +| `--range-protons` | With `--ppm-range` | Protons of each component whose signals lie inside `--ppm-range`, used for the proton correction instead of `--protons`. The agent should give it whenever the range is restricted and the counts are known (e.g. `1 1` for one diagnostic CH each). If omitted, each `--protons` count is scaled by the fraction of the full reference's area inside the range. | | `--baseline-correct` | No | Legacy: shifts each spectrum so its minimum is 0. Exact only for noise-free spectra with a constant offset. On noisy spectra the minimum is several σ below the baseline, which leaves a positive pedestal and pulls fractions toward an even mixture; on a reference floor with a zero-valued minimum it removes nothing. Mutually exclusive with `--baseline-window`. | | `--kappa` | No | Denoising penalty (default 0.25). The agent should not change this unless instructed. | | `--plot` | No | Output plot path. The agent should always generate a plot. | diff --git a/skills/chem-nmr-analysis/examples/deconvolution/README.md b/skills/chem-nmr-analysis/examples/deconvolution/README.md index 0bfde934..b0f641f2 100644 --- a/skills/chem-nmr-analysis/examples/deconvolution/README.md +++ b/skills/chem-nmr-analysis/examples/deconvolution/README.md @@ -101,7 +101,7 @@ mkdir -p $D/output/h2_window venv/run cpu python skills/chem-nmr-analysis/scripts/deconvolve.py \ $D/crude.csv $D/borneol.csv $D/isoborneol.csv \ --protons 18 18 --names borneol isoborneol \ - --baseline-window 3.70 3.94 --baseline-stat max --ppm-range 3.50 4.10 --json \ + --baseline-window 3.70 3.94 --baseline-stat max --ppm-range 3.50 4.10 --range-protons 1 1 --json \ --plot $D/output/h2_window/deconvolution_result.png \ | grep '^JSON:' | cut -c7- > $D/output/h2_window/deconvolve_result.json ``` @@ -124,6 +124,14 @@ awk -F, '$1>=3.95 && $1<=4.06 {b+=$2} $1>=3.57 && $1<=3.67 {i+=$2} | C (recommended) | 3.50–4.10 ppm | max of 3.70–3.94 ppm | 13.1 | 86.9 | 0.003 | 0.000 | | Direct H2 integral of `crude.csv` | 3.57–3.67 / 3.95–4.06 | none | 12.6 | 87.4 | – | – | +Run C fits only the H2 multiplets, so its proton correction uses the protons inside the +range: one H2 proton per isomer (`--range-protons 1 1`), not the 18 H of each molecule. +Leaving `--range-protons` out makes the script estimate them from the share of each +reference's area inside 3.50–4.10 ppm. For these digitized references that gives +1.06 H (borneol) and 1.41 H (isoborneol) instead of 1 and 1, and 16.7 % borneol. The +estimate inherits the distorted aliphatic region and the floor of the digitized traces, +so give the counts explicitly whenever they are known. + Subtracted baselines (Runs B and C): crude 2×10⁻⁶, borneol 0.0047, isoborneol 0.0063, as recorded in `deconvolve_result.json`. diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json index 3d7ead7a..6ebc67df 100644 --- a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json +++ b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolve_result.json @@ -1 +1 @@ -{"proportions": {"borneol": 0.13103552429003607, "isoborneol": 0.8689644757099639}, "Wasserstein distance": 0.0028563304400839873, "noise": 0.0, "baselines": {"mixture": 1.9018900606976861e-06, "borneol": 0.00471596572501887, "isoborneol": 0.00629459086901833}} +{"proportions": {"borneol": 0.13103552429003607, "isoborneol": 0.8689644757099638}, "Wasserstein distance": 0.0028563304400839873, "noise": 0.0, "baselines": {"mixture": 1.9018900606976861e-06, "borneol": 0.00471596572501887, "isoborneol": 0.00629459086901833}, "protons_used": {"borneol": 1.0, "isoborneol": 1.0}} diff --git a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml index 31a07971..0c9af78d 100644 --- a/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml +++ b/skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/input_configs.yaml @@ -18,6 +18,9 @@ baseline_stat: max ppm_range: - 3.5 - 4.1 +range_protons: +- 1.0 +- 1.0 plot: skills/chem-nmr-analysis/examples/deconvolution/output/h2_window/deconvolution_result.png json: true quiet: false diff --git a/skills/chem-nmr-analysis/scripts/deconvolve.py b/skills/chem-nmr-analysis/scripts/deconvolve.py index a4323e0c..6dd8636b 100644 --- a/skills/chem-nmr-analysis/scripts/deconvolve.py +++ b/skills/chem-nmr-analysis/scripts/deconvolve.py @@ -34,7 +34,12 @@ from scipy.optimize import linprog sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) -from spectra import BASELINE_STATS, preprocess_spectrum # noqa: E402 +from spectra import ( # noqa: E402 + BASELINE_STATS, + effective_protons, + preprocess_spectrum, + restrict_ppm, +) # --------------------------------------------------------------------------- @@ -241,8 +246,11 @@ def deconvolve_spectra( Mixture spectrum (ppm, intensity). comp_arrays : list of ndarray of shape (N_i, 2) Component reference spectra. - protons : list of int - Number of 1H protons per component molecule. + protons : list of float + Protons per component molecule that contribute to the supplied + component spectra. For full spectra this is the per-molecule count; for + spectra restricted to a ppm range it is the number of each component's + protons inside that range (see ``spectra.effective_protons``). kappa : float Denoising penalty. @@ -353,7 +361,18 @@ def main(): nargs=2, metavar=("LO", "HI"), default=None, - help="Deconvolve only this ppm range (applied after baseline correction).", + help="Deconvolve only this ppm range (applied after baseline correction). " + "The proton correction then counts only each reference's protons inside " + "the range: see --range-protons.", + ) + ap.add_argument( + "--range-protons", + type=float, + nargs="+", + default=None, + help="With --ppm-range: protons of each component whose signals lie inside " + "the range (e.g. 1 1 for one diagnostic CH each). If omitted, each --protons " + "count is scaled by the fraction of the full reference's area inside the range.", ) ap.add_argument( "--plot", @@ -371,6 +390,9 @@ def main(): mix_arr = load_xy(args.mixture, mnova=args.mnova) comp_arrays = [load_xy(p, mnova=args.mnova) for p in args.components] + if args.range_protons is not None and args.ppm_range is None: + print("ERROR: --range-protons requires --ppm-range.", file=sys.stderr) + sys.exit(2) prep = dict( baseline_correct=args.baseline_correct, baseline_window=args.baseline_window, @@ -378,8 +400,17 @@ def main(): ppm_range=args.ppm_range, ) mix_arr, mix_base = preprocess_spectrum(mix_arr, **prep) - comp_prepped = [preprocess_spectrum(a, **prep) for a in comp_arrays] - comp_arrays = [a for a, _ in comp_prepped] + # Keep the full baseline-corrected references: the proton correction of a + # cropped fit needs the share of each reference's signal inside the range. + comp_prepped = [ + preprocess_spectrum(a, **{**prep, "ppm_range": None}) for a in comp_arrays + ] + comp_full = [a for a, _ in comp_prepped] + comp_arrays = ( + [restrict_ppm(a, args.ppm_range) for a in comp_full] + if args.ppm_range is not None + else comp_full + ) baselines = [mix_base] + [b for _, b in comp_prepped] if not args.quiet: if args.baseline_window is not None: @@ -421,6 +452,25 @@ def main(): "NOTE: No --protons provided; assuming 1 for each component.", file=sys.stderr, ) + if args.range_protons is not None and len(args.range_protons) != n: + print( + "ERROR: --range-protons length must equal number of components.", + file=sys.stderr, + ) + sys.exit(2) + protons = effective_protons(comp_full, protons, args.ppm_range, args.range_protons) + if args.ppm_range is not None and not args.quiet: + source = ( + "--range-protons" + if args.range_protons is not None + else "reference area inside the range" + ) + print( + "Protons inside the ppm range (" + + source + + "): " + + ", ".join(f"{nm}={v:.4g}" for nm, v in zip(names, protons)) + ) # Deconvolve result = deconvolve_spectra(mix_arr, comp_arrays, protons, kappa=args.kappa) @@ -447,6 +497,7 @@ def main(): "Wasserstein distance": wd, "noise": result["noise"], "baselines": baseline_map, + "protons_used": dict(zip(names, protons)), } print("\nJSON:", json.dumps(out)) diff --git a/skills/chem-nmr-analysis/scripts/kinetics.py b/skills/chem-nmr-analysis/scripts/kinetics.py index 3d1fcf9e..36bf6327 100644 --- a/skills/chem-nmr-analysis/scripts/kinetics.py +++ b/skills/chem-nmr-analysis/scripts/kinetics.py @@ -28,7 +28,12 @@ sys.path.insert(0, os.path.dirname(__file__)) from deconvolve import load_xy, deconvolve_spectra # noqa: E402 -from spectra import BASELINE_STATS, preprocess_spectrum # noqa: E402 +from spectra import ( # noqa: E402 + BASELINE_STATS, + effective_protons, + preprocess_spectrum, + restrict_ppm, +) def save_kinetics_plot( @@ -147,7 +152,18 @@ def main(): nargs=2, metavar=("LO", "HI"), default=None, - help="Deconvolve only this ppm range (applied after baseline correction).", + help="Deconvolve only this ppm range (applied after baseline correction). " + "The proton correction then counts only each reference's protons inside " + "the range: see --range_protons.", + ) + ap.add_argument( + "--range_protons", + type=float, + nargs="+", + default=None, + help="With --ppm_range: protons of each reference whose signals lie inside " + "the range. If omitted, each --protons count is scaled by the fraction of " + "the full reference's area inside the range.", ) ap.add_argument( "--kappa", type=float, default=0.25, help="Denoising penalty (default: 0.25)" @@ -181,6 +197,14 @@ def main(): if args.protons and len(args.protons) != n_refs: print("ERROR: --protons length must equal number of --refs.", file=sys.stderr) sys.exit(1) + if args.range_protons is not None and ( + args.ppm_range is None or len(args.range_protons) != n_refs + ): + print( + "ERROR: --range_protons requires --ppm_range and one count per reference.", + file=sys.stderr, + ) + sys.exit(1) # Load reference spectra once prep = dict( @@ -189,9 +213,25 @@ def main(): baseline_stat=args.baseline_stat, ppm_range=args.ppm_range, ) - ref_arrays = [ - preprocess_spectrum(load_xy(p, mnova=args.mnova), **prep)[0] for p in args.refs + # Keep the full baseline-corrected references: the proton correction of a + # cropped fit needs the share of each reference's signal inside the range. + ref_full = [ + preprocess_spectrum( + load_xy(p, mnova=args.mnova), **{**prep, "ppm_range": None} + )[0] + for p in args.refs ] + ref_arrays = ( + [restrict_ppm(a, args.ppm_range) for a in ref_full] + if args.ppm_range is not None + else ref_full + ) + protons = effective_protons(ref_full, protons, args.ppm_range, args.range_protons) + if args.ppm_range is not None and not args.quiet: + print( + "Protons inside the ppm range: " + + ", ".join(f"{nm}={v:.4g}" for nm, v in zip(names, protons)) + ) proportions_over_time = [] wd_over_time = [] @@ -217,7 +257,7 @@ def main(): if not args.quiet: frac_str = " ".join( - f"{n}={props_dict.get(n, 0)*100:.1f}%" for n in names + f"{n}={props_dict.get(n, 0) * 100:.1f}%" for n in names ) print(f"{frac_str} WD={wd:.5f} noise={res['noise']:.3f}") except Exception as e: diff --git a/skills/chem-nmr-analysis/scripts/spectra.py b/skills/chem-nmr-analysis/scripts/spectra.py index 2bcceb39..005166c6 100644 --- a/skills/chem-nmr-analysis/scripts/spectra.py +++ b/skills/chem-nmr-analysis/scripts/spectra.py @@ -228,3 +228,67 @@ def preprocess_spectrum( if ppm_range is not None: arr = restrict_ppm(arr, ppm_range) return arr, value + + +def range_area_fraction(arr: np.ndarray, ppm_range: Tuple[float, float]) -> float: + """ + Fraction of a spectrum's (non-negative) area that lies inside a ppm range. + + For a reference spectrum covering all of a molecule's protons, this is the + fraction of those protons whose signals fall inside the range. + + Args: + arr: (N, 2) array of (ppm, intensity), already baseline-corrected. + ppm_range: (lo, hi) ppm limits. + + Returns: + Area inside the range divided by the total area (0.0 if the total is 0). + """ + order = np.argsort(arr[:, 0]) + ppm = arr[order, 0] + intensity = np.clip(arr[order, 1], 0.0, None) + total = float(np.trapezoid(intensity, ppm)) + if total <= 0: + return 0.0 + lo, hi = sorted(ppm_range) + inside = (ppm >= lo) & (ppm <= hi) + return float(np.trapezoid(intensity[inside], ppm[inside])) / total + + +def effective_protons( + full_refs: List[np.ndarray], + protons: List[float], + ppm_range: Optional[Tuple[float, float]] = None, + range_protons: Optional[List[float]] = None, +) -> List[float]: + """ + Proton counts to use for the proton correction of a (possibly cropped) fit. + + Deconvolution normalizes each reference over the fitted range, so its signal + fraction counts only the protons whose signals lie in that range. Without a + range, this is the per-molecule count. With a range, ``range_protons`` (the + protons of each reference inside the range) is used when given; otherwise + each per-molecule count is scaled by the fraction of the reference's area + inside the range, computed from the full baseline-corrected reference. + + Args: + full_refs: Baseline-corrected reference spectra over their full range. + protons: Protons per molecule for each reference. + ppm_range: Fitted ppm range, or None for the full spectra. + range_protons: Optional protons of each reference inside ``ppm_range``. + + Returns: + One proton count per reference. + """ + if range_protons is not None: + if ppm_range is None: + raise ValueError("range protons require a ppm range") + if len(range_protons) != len(full_refs): + raise ValueError("give one range proton count per reference") + return [float(n) for n in range_protons] + if ppm_range is None: + return [float(n) for n in protons] + return [ + float(n) * range_area_fraction(ref, ppm_range) + for n, ref in zip(protons, full_refs) + ] diff --git a/tests/test_chem_nmr_baseline.py b/tests/test_chem_nmr_baseline.py index caf99802..29e6b1bb 100644 --- a/tests/test_chem_nmr_baseline.py +++ b/tests/test_chem_nmr_baseline.py @@ -5,7 +5,10 @@ subtraction (``--baseline-correct``) does not. """ +import csv +import json import os +import subprocess import sys import numpy as np @@ -16,8 +19,9 @@ ) sys.path.insert(0, SCRIPTS) -from deconvolve import deconvolve_spectra # noqa: E402 -from spectra import ( # noqa: E402 +from deconvolve import deconvolve_spectra +from spectra import ( + effective_protons, min_baseline, preprocess_spectrum, restrict_ppm, @@ -133,3 +137,139 @@ def test_baseline_options_are_mutually_exclusive() -> None: ) with pytest.raises(ValueError): window_baseline(_spectrum(COMP_A), SIGNAL_FREE, "mean") + + +# --------------------------------------------------------------------------- +# Proton correction of a fit restricted to a ppm range +# --------------------------------------------------------------------------- + +# Two six-proton molecules in a 50:50 mixture with unequal protons in 0-3 ppm: +# A has 3 H at 1 ppm and 3 H at 7 ppm; B has 1 H at 2 ppm and 5 H at 8 ppm. +WIDE = np.linspace(0.0, 9.0, 3600) +WINDOW = (0.0, 3.0) + + +def _lines(centres_protons: list[tuple[float, float]]) -> np.ndarray: + """Spectrum on WIDE whose line areas are proportional to the proton counts.""" + width = 0.01 + return np.column_stack( + [ + WIDE, + sum( + n + * np.exp(-0.5 * ((WIDE - c) / width) ** 2) + / (width * np.sqrt(2 * np.pi)) + for c, n in centres_protons + ), + ] + ) + + +WIN_A = _lines([(1.0, 3.0), (7.0, 3.0)]) +WIN_B = _lines([(2.0, 1.0), (8.0, 5.0)]) +WIN_MIX = np.column_stack([WIDE, WIN_A[:, 1] + WIN_B[:, 1]]) # equal moles + + +def test_effective_protons_scale_by_reference_area_in_range() -> None: + """Without explicit counts, each count is scaled by the area share in range.""" + counts = effective_protons([WIN_A, WIN_B], [6, 6], WINDOW) + assert counts == pytest.approx([3.0, 1.0], rel=1e-3) + assert effective_protons([WIN_A, WIN_B], [6, 6]) == [6.0, 6.0] + assert effective_protons([WIN_A, WIN_B], [6, 6], WINDOW, [3, 1]) == [3.0, 1.0] + + +def test_cropped_fit_with_per_molecule_counts_is_biased() -> None: + """Dividing cropped signal fractions by whole-molecule counts gives 75:25.""" + crop = [restrict_ppm(a, WINDOW) for a in (WIN_MIX, WIN_A, WIN_B)] + res = deconvolve_spectra(crop[0], crop[1:], [6, 6]) + assert res["proportions"][0] == pytest.approx(0.75, abs=0.01) + + +def test_cropped_fit_with_range_protons_recovers_composition() -> None: + """Range proton counts recover 50:50 from the 0-3 ppm window.""" + crop = [restrict_ppm(a, WINDOW) for a in (WIN_MIX, WIN_A, WIN_B)] + counts = effective_protons([WIN_A, WIN_B], [6, 6], WINDOW) + res = deconvolve_spectra(crop[0], crop[1:], counts) + assert res["proportions"][0] == pytest.approx(0.5, abs=0.01) + + +def _write(path: str, arr: np.ndarray) -> str: + np.savetxt(path, arr, delimiter=",") + return path + + +@pytest.mark.parametrize("extra", [[], ["--range-protons", "3", "1"]]) +def test_deconvolve_cli_ppm_range_recovers_composition(tmp_path, extra) -> None: + """deconvolve.py --ppm-range returns 50:50 with automatic or explicit counts.""" + files = [ + _write(str(tmp_path / f"{n}.csv"), a) + for n, a in (("mix", WIN_MIX), ("a", WIN_A), ("b", WIN_B)) + ] + out = subprocess.run( + [ + sys.executable, + os.path.join(SCRIPTS, "deconvolve.py"), + *files, + "--protons", + "6", + "6", + "--names", + "A", + "B", + "--ppm-range", + "0", + "3", + "--json", + "--quiet", + *extra, + ], + capture_output=True, + text=True, + check=True, + cwd=tmp_path, + ).stdout + result = json.loads(out.split("JSON:", 1)[1]) + assert result["proportions"]["A"] == pytest.approx(0.5, abs=0.01) + + +@pytest.mark.parametrize("extra", [[], ["--range_protons", "3", "1"]]) +def test_kinetics_cli_ppm_range_recovers_composition(tmp_path, extra) -> None: + """kinetics.py --ppm_range returns 50:50 at every time point.""" + refs = [ + _write(str(tmp_path / f"{n}.csv"), a) for n, a in (("a", WIN_A), ("b", WIN_B)) + ] + tps = [_write(str(tmp_path / f"t{i}.csv"), WIN_MIX) for i in range(2)] + subprocess.run( + [ + sys.executable, + os.path.join(SCRIPTS, "kinetics.py"), + "--refs", + *refs, + "--timepoints", + *tps, + "--times", + "0", + "10", + "--protons", + "6", + "6", + "--names", + "A", + "B", + "--ppm_range", + "0", + "3", + "--quiet", + "--output_dir", + str(tmp_path / "out"), + *extra, + ], + capture_output=True, + text=True, + check=True, + cwd=tmp_path, + ) + with open(tmp_path / "out" / "kinetics.csv") as fh: + rows = list(csv.DictReader(fh)) + assert len(rows) == 2 + assert all(float(r["A"]) == pytest.approx(0.5, abs=0.01) for r in rows)