From ac4de8e244dd3ab82ce66034307b216e02cff270 Mon Sep 17 00:00:00 2001 From: Hossam Mahmoud Date: Thu, 24 Sep 2026 00:52:29 +0300 Subject: [PATCH 1/5] Rename mdforge to MolDynX Tools (moldynx) - git mv mdforge -> moldynx; imports, CLI, output folder, manifest key and plugin entry-point group renamed; prose and citation metadata use the display name "MolDynX Tools (formerly mdforge)". - Distribution renamed to moldynx-tools; version 0.3.0. - Compatibility for one minor version: an mdforge shim package aliases every mdforge.* import to the same moldynx module objects (one registry) with a DeprecationWarning; the mdforge console script is kept; plugins under the legacy mdforge.plugins entry-point group are still loaded, with a warning. - tests/test_rename.py covers the new identity and the shim. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 4 +- .gitignore | 4 +- .zenodo.json | 4 +- CHANGELOG.md | 17 +++++ CITATION.cff | 4 +- Dockerfile | 8 +-- README.md | 30 ++++---- ROADMAP.md | 54 +++++++------- docs/QUICKSTART.md | 18 ++--- examples/alpha_zein_A8HNE1/README.md | 6 +- examples/alpha_zein_A8HNE1/config.yaml | 6 +- mdforge/__init__.py | 72 +++++++++++-------- mdforge/cli/__init__.py | 1 - mdforge/io/__init__.py | 4 -- moldynx/__init__.py | 40 +++++++++++ {mdforge => moldynx}/analysis/__init__.py | 2 +- {mdforge => moldynx}/analysis/clustering.py | 6 +- {mdforge => moldynx}/analysis/com.py | 8 +-- {mdforge => moldynx}/analysis/contact_map.py | 10 +-- {mdforge => moldynx}/analysis/convergence.py | 10 +-- {mdforge => moldynx}/analysis/dccm.py | 8 +-- {mdforge => moldynx}/analysis/energies.py | 8 +-- {mdforge => moldynx}/analysis/hbonds.py | 8 +-- {mdforge => moldynx}/analysis/interface.py | 10 +-- {mdforge => moldynx}/analysis/ligand.py | 10 +-- {mdforge => moldynx}/analysis/mmpbsa.py | 8 +-- .../analysis/native_contacts.py | 10 +-- {mdforge => moldynx}/analysis/nucleic.py | 10 +-- {mdforge => moldynx}/analysis/pca.py | 8 +-- .../analysis/plugins/__init__.py | 2 +- .../analysis/plugins/example_end_to_end.py | 14 ++-- {mdforge => moldynx}/analysis/prolif.py | 6 +- {mdforge => moldynx}/analysis/ramachandran.py | 8 +-- {mdforge => moldynx}/analysis/rin.py | 8 +-- {mdforge => moldynx}/analysis/rmsd.py | 8 +-- {mdforge => moldynx}/analysis/rmsf.py | 10 +-- {mdforge => moldynx}/analysis/rog.py | 8 +-- {mdforge => moldynx}/analysis/salt_bridges.py | 10 +-- {mdforge => moldynx}/analysis/sasa.py | 8 +-- .../analysis/secondary_structure.py | 10 +-- .../analysis/statistics_summary.py | 8 +-- {mdforge => moldynx}/analysis/structural.py | 10 +-- moldynx/cli/__init__.py | 1 + {mdforge => moldynx}/cli/interactive.py | 0 {mdforge => moldynx}/cli/main.py | 36 +++++----- {mdforge => moldynx}/core/__init__.py | 0 {mdforge => moldynx}/core/base.py | 8 +-- {mdforge => moldynx}/core/config.py | 4 +- {mdforge => moldynx}/core/context.py | 4 +- {mdforge => moldynx}/core/pipeline.py | 18 ++--- {mdforge => moldynx}/core/provenance.py | 2 +- {mdforge => moldynx}/core/registry.py | 37 ++++++---- {mdforge => moldynx}/core/system.py | 0 moldynx/io/__init__.py | 4 ++ {mdforge => moldynx}/io/discovery.py | 0 {mdforge => moldynx}/io/validation.py | 2 +- {mdforge => moldynx}/plotting/__init__.py | 4 +- {mdforge => moldynx}/plotting/figures.py | 0 {mdforge => moldynx}/plotting/style.py | 0 {mdforge => moldynx}/report/__init__.py | 2 +- {mdforge => moldynx}/report/generator.py | 6 +- {mdforge => moldynx}/statistics/__init__.py | 6 +- .../statistics/correlation.py | 0 .../statistics/descriptive.py | 0 {mdforge => moldynx}/statistics/timeseries.py | 0 pyproject.toml | 17 +++-- requirements.txt | 2 +- tests/test_core.py | 8 +-- tests/test_rename.py | 38 ++++++++++ 69 files changed, 410 insertions(+), 287 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 mdforge/cli/__init__.py delete mode 100644 mdforge/io/__init__.py create mode 100644 moldynx/__init__.py rename {mdforge => moldynx}/analysis/__init__.py (76%) rename {mdforge => moldynx}/analysis/clustering.py (96%) rename {mdforge => moldynx}/analysis/com.py (95%) rename {mdforge => moldynx}/analysis/contact_map.py (92%) rename {mdforge => moldynx}/analysis/convergence.py (95%) rename {mdforge => moldynx}/analysis/dccm.py (92%) rename {mdforge => moldynx}/analysis/energies.py (95%) rename {mdforge => moldynx}/analysis/hbonds.py (97%) rename {mdforge => moldynx}/analysis/interface.py (95%) rename {mdforge => moldynx}/analysis/ligand.py (94%) rename {mdforge => moldynx}/analysis/mmpbsa.py (96%) rename {mdforge => moldynx}/analysis/native_contacts.py (92%) rename {mdforge => moldynx}/analysis/nucleic.py (93%) rename {mdforge => moldynx}/analysis/pca.py (94%) rename {mdforge => moldynx}/analysis/plugins/__init__.py (78%) rename {mdforge => moldynx}/analysis/plugins/example_end_to_end.py (84%) rename {mdforge => moldynx}/analysis/prolif.py (97%) rename {mdforge => moldynx}/analysis/ramachandran.py (95%) rename {mdforge => moldynx}/analysis/rin.py (95%) rename {mdforge => moldynx}/analysis/rmsd.py (94%) rename {mdforge => moldynx}/analysis/rmsf.py (92%) rename {mdforge => moldynx}/analysis/rog.py (93%) rename {mdforge => moldynx}/analysis/salt_bridges.py (94%) rename {mdforge => moldynx}/analysis/sasa.py (95%) rename {mdforge => moldynx}/analysis/secondary_structure.py (93%) rename {mdforge => moldynx}/analysis/statistics_summary.py (95%) rename {mdforge => moldynx}/analysis/structural.py (94%) create mode 100644 moldynx/cli/__init__.py rename {mdforge => moldynx}/cli/interactive.py (100%) rename {mdforge => moldynx}/cli/main.py (83%) rename {mdforge => moldynx}/core/__init__.py (100%) rename {mdforge => moldynx}/core/base.py (95%) rename {mdforge => moldynx}/core/config.py (98%) rename {mdforge => moldynx}/core/context.py (98%) rename {mdforge => moldynx}/core/pipeline.py (90%) rename {mdforge => moldynx}/core/provenance.py (98%) rename {mdforge => moldynx}/core/registry.py (78%) rename {mdforge => moldynx}/core/system.py (100%) create mode 100644 moldynx/io/__init__.py rename {mdforge => moldynx}/io/discovery.py (100%) rename {mdforge => moldynx}/io/validation.py (98%) rename {mdforge => moldynx}/plotting/__init__.py (59%) rename {mdforge => moldynx}/plotting/figures.py (100%) rename {mdforge => moldynx}/plotting/style.py (100%) rename {mdforge => moldynx}/report/__init__.py (53%) rename {mdforge => moldynx}/report/generator.py (98%) rename {mdforge => moldynx}/statistics/__init__.py (56%) rename {mdforge => moldynx}/statistics/correlation.py (100%) rename {mdforge => moldynx}/statistics/descriptive.py (100%) rename {mdforge => moldynx}/statistics/timeseries.py (100%) create mode 100644 tests/test_rename.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19e3eac..71ad4bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: CI on: push: - branches: [main, mdforge-framework] + branches: [main] pull_request: jobs: @@ -23,6 +23,6 @@ jobs: python -m pip install --upgrade pip python -m pip install -e ".[dev]" - name: Lint (ruff, non-blocking) - run: ruff check mdforge || true + run: ruff check moldynx || true - name: Run tests run: pytest -q diff --git a/.gitignore b/.gitignore index 3d376c4..4196460 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,9 @@ venv/ .pytest_cache/ .ruff_cache/ -# --- mdforge run outputs (regenerated) ------------------------------------ +# --- MolDynX Tools run outputs (regenerated; mdforge_* = pre-rename names) -- +moldynx_results/ +**/moldynx_out/ mdforge_results/ **/mdforge_out/ core.pdb diff --git a/.zenodo.json b/.zenodo.json index 365f6d3..8dc871b 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,6 +1,6 @@ { - "title": "mdforge: a reusable, reproducible analysis framework for GROMACS molecular dynamics simulations", - "description": "mdforge turns a GROMACS simulation directory into a complete, publication-quality, fully reproducible analysis. It discovers files, detects the biomolecular system (protein / ligand / DNA / RNA / membrane / ions / multi-chain), auto-selects the appropriate analyses, runs them with streaming-friendly performance, and produces 300-dpi figures, a reproducibility manifest, and Markdown/HTML/PDF reports. Extensible via a plugin architecture and drivable from a single YAML config.", + "title": "MolDynX Tools (formerly mdforge): a reusable, reproducible analysis framework for GROMACS molecular dynamics simulations", + "description": "MolDynX Tools (formerly mdforge) turns a GROMACS simulation directory into a complete, publication-quality, fully reproducible analysis. It discovers files, detects the biomolecular system (protein / ligand / DNA / RNA / membrane / ions / multi-chain), auto-selects the appropriate analyses, runs them with streaming-friendly performance, and produces 300-dpi figures, a reproducibility manifest, and Markdown/HTML/PDF reports. Extensible via a plugin architecture and drivable from a single YAML config.", "upload_type": "software", "license": "MIT", "access_right": "open", diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..dcf154b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +## 0.3.0 — unreleased + +### Renamed: mdforge → **MolDynX Tools** + +- Import package `mdforge` → `moldynx`; CLI `mdforge` → `moldynx`; distribution + `molecular-dynamics-forge` → `moldynx-tools`. +- Default output folder `mdforge_results` → `moldynx_results`; manifest key + `mdforge_version` → `moldynx_version`; plugin entry-point group `mdforge.plugins` → + `moldynx.plugins`. +- **Compatibility for one minor version (removed in 0.4.0):** `import mdforge` and every + `mdforge.` import still work (same module objects, one registry) with a + `DeprecationWarning`; the `mdforge` console script is kept as an alias; plugins advertised + under `mdforge.plugins` are still loaded, with a warning. +- The Zenodo concept DOI (10.5281/zenodo.21265946) is unchanged; citation metadata now reads + "MolDynX Tools (formerly mdforge)". diff --git a/CITATION.cff b/CITATION.cff index 91ac201..1df228b 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,8 +1,8 @@ cff-version: 1.2.0 message: "If you use this software, please cite it as below." -title: "mdforge: a reusable, reproducible analysis framework for GROMACS molecular dynamics simulations" +title: "MolDynX Tools (formerly mdforge): a reusable, reproducible analysis framework for GROMACS molecular dynamics simulations" abstract: >- - mdforge analyses GROMACS MD simulations of arbitrary biomolecular systems from + MolDynX Tools analyses GROMACS MD simulations of arbitrary biomolecular systems from a single simulation directory: it detects the system, auto-selects analyses, runs them with streaming performance, and produces publication-quality figures, a reproducibility manifest, and reports. Extensible via plugins and YAML config. diff --git a/Dockerfile b/Dockerfile index 3a70f2b..efc68c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -# mdforge -- reproducible container image. -# Build: docker build -t mdforge . -# Run: docker run --rm -v /data/sim:/sim mdforge analyze --input /sim --output /sim/results +# MolDynX Tools -- reproducible container image. +# Build: docker build -t moldynx . +# Run: docker run --rm -v /data/sim:/sim moldynx analyze --input /sim --output /sim/results FROM mambaorg/micromamba:1.5-jammy WORKDIR /app @@ -12,5 +12,5 @@ COPY --chown=$MAMBA_USER:$MAMBA_USER . /app ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN pip install --no-deps -e . -ENTRYPOINT ["mdforge"] +ENTRYPOINT ["moldynx"] CMD ["--help"] diff --git a/README.md b/README.md index 649911d..abfd629 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# mdforge — reusable, reproducible GROMACS MD analysis +# MolDynX Tools — reusable, reproducible, audited GROMACS MD analysis [![CI](https://github.com/SamDozer/molecular-dynamics-forge/actions/workflows/ci.yml/badge.svg)](https://github.com/SamDozer/molecular-dynamics-forge/actions) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](pyproject.toml) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21265946.svg)](https://doi.org/10.5281/zenodo.21265946) -**mdforge** turns a GROMACS simulation directory into a complete, publication-quality, +**MolDynX Tools** (`moldynx`; formerly *mdforge*) turns a GROMACS simulation directory into a complete, publication-quality, fully reproducible analysis — with minimal input. Point it at a folder; it discovers the files, **detects the system** (protein / ligand / DNA / RNA / membrane / ions / multi-chain / …), **auto-selects the right analyses**, runs them with streaming-friendly @@ -24,7 +24,7 @@ performance, and produces figures, tables, a provenance manifest, and a report. - **Automatic module selection** — each analysis declares the system types and files it supports; the pipeline runs exactly what applies (`--plan` shows *why*). - **Extensible via plugins** — drop a `BaseAnalysis` subclass into - `mdforge/analysis/plugins/` (or a `--plugin-dir`) and it is auto-discovered. + `moldynx/analysis/plugins/` (or a `--plugin-dir`) and it is auto-discovered. - **Config-driven** — describe a whole run in `config.yaml` and re-run with one command (ideal for HPC/batch). - **Reproducible by construction** — every run writes `manifest.json/yaml` with library @@ -51,11 +51,11 @@ python -m pip install -e ".[all]" # or ".[dev]" for tests ## Usage ```bash -mdforge detect --input /path/to/sim_dir # what's in my system? -mdforge analyze --input /path/to/sim_dir --plan # what would run, and why? -mdforge analyze --input /path/to/sim_dir -o results # run everything applicable -mdforge analyze --config examples/alpha_zein_A8HNE1/config.yaml # reproducible -mdforge list-analyses # registered analyses (incl. plugins) +moldynx detect --input /path/to/sim_dir # what's in my system? +moldynx analyze --input /path/to/sim_dir --plan # what would run, and why? +moldynx analyze --input /path/to/sim_dir -o results # run everything applicable +moldynx analyze --config examples/alpha_zein_A8HNE1/config.yaml # reproducible +moldynx list-analyses # registered analyses (incl. plugins) ``` See [`docs/QUICKSTART.md`](docs/QUICKSTART.md) for all options and the plugin template. @@ -63,7 +63,7 @@ See [`docs/QUICKSTART.md`](docs/QUICKSTART.md) for all options and the plugin te ## Architecture ``` -mdforge/ +moldynx/ core/ system.py (detection) · base.py (BaseAnalysis) · registry.py (+plugins) context.py · config.py (YAML+CLI) · provenance.py · pipeline.py io/ discovery.py · validation.py @@ -90,7 +90,7 @@ Every analysis subclasses `BaseAnalysis`, declaring `required_files`, | **Protein–DNA/RNA** | protein–nucleic contacts, nucleic RMSD | Each is a drop-in `BaseAnalysis`; the pipeline runs only those applicable to the -detected system (`mdforge list-analyses` shows all; `--plan` shows what runs and why). +detected system (`moldynx list-analyses` shows all; `--plan` shows what runs and why). The complex/ligand/nucleic modules are implemented and gate correctly but await validation on a matching test trajectory. @@ -103,14 +103,14 @@ cat results/manifest.json # versions, git commit, seeds, params, input hashe ## Container ```bash -docker build -t mdforge . -docker run --rm -v /data/sim:/sim mdforge analyze --input /sim --output /sim/results +docker build -t moldynx . +docker run --rm -v /data/sim:/sim moldynx analyze --input /sim --output /sim/results ``` ## Roadmap See **[ROADMAP.md](ROADMAP.md)** for the plan — the flagship being a -**comparison mode** (`mdforge compare`) that overlays control vs. protein–ligand / +**comparison mode** (`moldynx compare`) that overlays control vs. protein–ligand / protein–protein systems on shared axes (ΔRMSF maps, common-subspace PCA, ensemble similarity), plus parallel execution, a functional API, membrane and multi-engine support — drawing design influence from @@ -119,9 +119,9 @@ support — drawing design influence from ## Citation -If you use mdforge, please cite it (concept DOI — always resolves to the latest version): +If you use MolDynX Tools, please cite it (concept DOI — always resolves to the latest version): -> Mahmoud, H. *mdforge: a reusable, reproducible analysis framework for GROMACS +> Mahmoud, H. *MolDynX Tools: a reusable, reproducible analysis framework for GROMACS > molecular dynamics simulations.* Zenodo. https://doi.org/10.5281/zenodo.21265946 A machine-readable [`CITATION.cff`](CITATION.cff) is included (GitHub shows a diff --git a/ROADMAP.md b/ROADMAP.md index 382479f..4035b97 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ -# mdforge Roadmap +# MolDynX Tools Roadmap -> Turning mdforge from a solid single-run analyzer into a **comparative, parallel, +> Turning MolDynX Tools from a solid single-run analyzer into a **comparative, parallel, > multi-engine** MD analysis platform — inspired by the best of > [MDAnalysis](https://github.com/MDAnalysis/mdanalysis) and > [mdtraj](https://github.com/mdtraj/mdtraj), built to give the user *more options* @@ -29,11 +29,11 @@ architecture upgrades → testing/docs/release plan. ## 1. Design influences — what MDAnalysis & mdtraj do better, and what we adopt -| Capability | Their approach | mdforge today | Planned adoption | +| Capability | Their approach | MolDynX today | Planned adoption | |---|---|---|---| | **Per-frame analysis + parallelism** | MDAnalysis `AnalysisBase`: `_prepare/_single_frame/_conclude` + `run(backend="multiprocessing"/"dask", n_workers, n_parts)` with split-apply-combine (`_get_aggregator()` → `ResultsGroup`, `ndarray_vstack`) | `run(ctx)` monolithic, serial | **`FrameAnalysis` base** with the same lifecycle + a parallel executor (§4.1) | | **Ensemble similarity** | `encore`/`mdaencore`: `hes()`, `ces()`, `dres()`, `*_convergence()` (JS divergence between ensembles) | none | Wrap `mdaencore` for **comparison mode + convergence** (§3, §4.4) | -| **Functional API** | mdtraj `compute_rmsd/dssp/contacts/gyration_tensor/…` — composable, notebook-friendly | class + CLI only | Add `mdforge.compute.*` thin functions (§4.2) | +| **Functional API** | mdtraj `compute_rmsd/dssp/contacts/gyration_tensor/…` — composable, notebook-friendly | class + CLI only | Add `moldynx.compute.*` thin functions (§4.2) | | **Chunked streaming** | mdtraj `md.iterload(traj, chunk=100, top=…)` | pre-extract a solute trajectory once | Add real **chunked iteration** + keep extraction as an optimization (§4.3) | | **C-kernel speed** | mdtraj SIMD RMSD (QCP), contacts, SASA, DSSP, H-bonds | mixed (MDAnalysis Python loops in places) | Route hot paths (pairwise-RMSD, contacts, hbonds) through mdtraj kernels (§4.5) | | **On-the-fly transforms** | MDAnalysis `transformations` (unwrap/center/fit) composed on the trajectory | hard-coded unwrap in core extraction | Expose a **transform pipeline** via config (§4.6) | @@ -41,7 +41,7 @@ architecture upgrades → testing/docs/release plan. | **Rich selections/options** | powerful selection DSL, updating selections, reference choices | fixed `protein`/`name CA` | Per-analysis **selection/reference/alignment/unit** options (§5) | | **Format breadth** | both read AMBER/NAMD/CHARMM/… by extension | GROMACS-centric discovery | Broaden discovery + detection to any MDAnalysis-readable engine (§v0.4) | -**Principle:** *influence, not copy.* We reimplement the patterns against mdforge's +**Principle:** *influence, not copy.* We reimplement the patterns against MolDynX's own `ctx`/registry design and add the comparison/report/detection layers those libraries deliberately leave out. @@ -52,11 +52,11 @@ libraries deliberately leave out. - **Comparison & statistics** — overlays, difference maps, ensemble similarity, per-metric hypothesis tests, replica averaging. - **Performance** — parallel backends, chunked streaming, content-addressed cache/resume, benchmarks. - **Coverage** — membrane suite, multi-engine, validated complex modules, advanced dynamics (dPCA, LMI-DCCM, MSM). -- **UX & ecosystem** — functional API, `rich` UI, interactive HTML, docs site, PyPI/conda-forge, `mdforge reproduce`. +- **UX & ecosystem** — functional API, `rich` UI, interactive HTML, docs site, PyPI/conda-forge, `moldynx reproduce`. --- -## 3. FLAGSHIP — Comparison mode (`mdforge compare`) ⭐ v0.3 +## 3. FLAGSHIP — Comparison mode (`moldynx compare`) ⭐ v0.3 **Goal:** given several labeled systems — e.g. `control` (protein alone), `+ligand`, `+partner` (protein–protein) — analyze the **common entity** (the protein) in each @@ -67,7 +67,7 @@ and answer *"what does binding/partnering do to the protein?"*. ```bash # explicit labels -> directories -mdforge compare \ +moldynx compare \ --system control=/runs/apo \ --system holo=/runs/with_ligand \ --system dimer=/runs/complex \ @@ -77,7 +77,7 @@ mdforge compare \ --output compare_results/ # or drive it from YAML for reproducibility / HPC -mdforge compare --config compare.yaml +moldynx compare --config compare.yaml ``` ```yaml @@ -111,7 +111,7 @@ report_formats: [md, html] ### 3.3 Design & pseudocode ```python -# mdforge/compare/config.py +# moldynx/compare/config.py @dataclass class CompareConfig: systems: dict[str, RunConfig] # label -> per-system config @@ -125,7 +125,7 @@ class CompareConfig: ``` ```python -# mdforge/compare/pipeline.py +# moldynx/compare/pipeline.py def run_comparison(cfg: CompareConfig): # 1) Run each system through the normal pipeline, but RESTRICTED to the common # selection so metrics are apples-to-apples. Reuse existing analyses. @@ -160,7 +160,7 @@ def run_comparison(cfg: CompareConfig): ``` ```python -# mdforge/compare/overlay.py — one figure, many systems +# moldynx/compare/overlay.py — one figure, many systems PALETTE_BY_LABEL = cycle_palette() # deterministic, colour-blind-safe per label def timeseries(self, csv, col, ylabel): @@ -184,7 +184,7 @@ def per_residue(self, csv, col, diff=True): ``` ```python -# mdforge/compare/subspace.py — the key to a MEANINGFUL PCA comparison +# moldynx/compare/subspace.py — the key to a MEANINGFUL PCA comparison class CommonSubspace: """PCA eigenvectors from the reference ensemble; project any system into them.""" def __init__(self, ref_ca_coords): # (n, 3N), aligned @@ -197,7 +197,7 @@ class CommonSubspace: ``` ```python -# mdforge/compare/statistics.py +# moldynx/compare/statistics.py def compare_statistics(per_system, tests): rows = [] for metric in ("rmsd_backbone_nm", "rg_nm", "sasa_total_nm2"): @@ -222,8 +222,8 @@ def ensemble_similarity(projections): ``` ### 3.4 Tasks (v0.3 comparison) -- [ ] `mdforge/compare/` package: `config.py`, `pipeline.py`, `overlay.py`, `subspace.py`, `statistics.py`, `report.py`. -- [ ] `mdforge compare` CLI subcommand + YAML schema. +- [ ] `moldynx/compare/` package: `config.py`, `pipeline.py`, `overlay.py`, `subspace.py`, `statistics.py`, `report.py`. +- [ ] `moldynx compare` CLI subcommand + YAML schema. - [ ] Restrict per-system analyses to a shared `common_selection` (add a "common" param honored by RMSD/RMSF/Rg/PCA/…). - [ ] Common-subspace PCA projection + FEL difference. - [ ] ΔRMSF / ΔDCCM / Δcontact difference maps. @@ -239,7 +239,7 @@ def ensemble_similarity(projections): ### 4.1 `FrameAnalysis` base with parallel execution (influence: MDAnalysis `AnalysisBase`) ```python -# mdforge/core/frame_analysis.py +# moldynx/core/frame_analysis.py class FrameAnalysis(BaseAnalysis): """Opt-in lifecycle base for per-frame analyses that can run in parallel.""" parallelizable = True @@ -270,8 +270,8 @@ interface/report modules stay on the simpler `BaseAnalysis`. Backward compatible ### 4.2 Functional API (influence: mdtraj `compute_*`) ```python -# mdforge/compute.py — notebook-friendly, no CLI needed -import mdforge.compute as mfc +# moldynx/compute.py — notebook-friendly, no CLI needed +import moldynx.compute as mfc rmsd = mfc.rmsd(u, select="backbone", ref_frame=0) # -> np.ndarray (nm) rg = mfc.radius_of_gyration(u, select="protein") q = mfc.native_contacts(u, cutoff=8.0) @@ -283,7 +283,7 @@ sim = mfc.ensemble_similarity([u_apo, u_holo]) ### 4.3 Chunked streaming reader (influence: mdtraj `iterload`) ```python -# mdforge/io/stream.py +# moldynx/io/stream.py def iter_chunks(topology, trajectory, selection="all", chunk=200, stride=1): u = mda.Universe(topology, trajectory) ag = u.select_atoms(selection) @@ -297,7 +297,7 @@ def iter_chunks(topology, trajectory, selection="all", chunk=200, stride=1): ``` ### 4.4 Ensemble similarity + convergence module (influence: encore/mdaencore) -`mdforge/analysis/ensemble_similarity.py` (`ensemble` group): CES/DRES/HES between +`moldynx/analysis/ensemble_similarity.py` (`ensemble` group): CES/DRES/HES between systems (comparison mode) and `*_convergence` within a run (a rigorous alternative to the current RMSIP/block-averaging convergence check). @@ -326,18 +326,18 @@ section and `manifest.json` records methods used → publishable provenance. - **Frames:** `--start/--end/--stride`, or `--frames "0:1000:2,1500,2000"`. - **Output:** `--figure-format png,pdf,svg`, `--dpi`, `--palette`, `--theme light|dark`. - **Analyses:** `--only-category structure`, `--exclude`, per-analysis params via YAML. -- **Report:** `--report md,html,pdf`, `--no-figures`, `mdforge report ` to regen. +- **Report:** `--report md,html,pdf`, `--no-figures`, `moldynx report ` to regen. --- ## 6. Versioned roadmap ### v0.3 — Comparison & parallelism *(flagship)* -- ⭐ `mdforge compare` (§3) — overlays, difference maps, common-subspace PCA, stats, ensemble similarity. +- ⭐ `moldynx compare` (§3) — overlays, difference maps, common-subspace PCA, stats, ensemble similarity. - `FrameAnalysis` + parallel `--threads` backend (§4.1); wire `multiprocessing`. -- Functional `mdforge.compute.*` API (§4.2). +- Functional `moldynx.compute.*` API (§4.2). - Content-addressed **cache/resume** (skip unchanged analyses; checksum of inputs+params). -- `mdforge reproduce manifest.json` (re-run a past run bit-for-bit). +- `moldynx reproduce manifest.json` (re-run a past run bit-for-bit). - Expanded options (§5): reference/units/frames/selections. ### v0.4 — Coverage: membrane + multi-engine + validated complexes @@ -354,7 +354,7 @@ section and `manifest.json` records methods used → publishable provenance. ### v0.6 — Robustness & UX polish - `rich` CLI (progress, tables, `--plan` pretty output). -- `mdforge config init` scaffolder; user-extensible detection dictionaries. +- `moldynx config init` scaffolder; user-extensible detection dictionaries. - Missing-hydrogen handling for H-bond analyses (optional protonation step). - Benchmark suite + performance regression guard. @@ -377,7 +377,7 @@ section and `manifest.json` records methods used → publishable provenance. ## 8. Suggested execution order (next 3 PRs) -1. **PR: comparison MVP** — `mdforge compare` with RMSD/RMSF/Rg/SASA overlays + ΔRMSF map + KS/Welch/Cohen table + comparative report. (Delivers the headline value fastest.) +1. **PR: comparison MVP** — `moldynx compare` with RMSD/RMSF/Rg/SASA overlays + ΔRMSF map + KS/Welch/Cohen table + comparative report. (Delivers the headline value fastest.) 2. **PR: `FrameAnalysis` + `--threads`** — parallel execution for the per-frame analyses; benchmark on the 4.35 GB reference trajectory. 3. **PR: common-subspace PCA + FEL/DCCM difference + ensemble similarity** — completes the "what changed conformationally" story. diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index ad57c4b..36b4a21 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -1,4 +1,4 @@ -# mdforge — Quick Start +# MolDynX Tools — Quick Start ## Install @@ -16,7 +16,7 @@ python -m pip install -e . ## 1. Detect your system ```bash -mdforge detect --input /path/to/simulation_dir +moldynx detect --input /path/to/simulation_dir ``` Prints the discovered files, validation status, and the detected composition (protein chains, ligands, nucleic acids, lipids, ions, water) and system type. @@ -24,7 +24,7 @@ Prints the discovered files, validation status, and the detected composition ## 2. See what would run (dry-run) ```bash -mdforge analyze --input /path/to/simulation_dir --plan +moldynx analyze --input /path/to/simulation_dir --plan ``` Shows which analyses are selected for the detected system — and *why* each other one was skipped. @@ -32,7 +32,7 @@ one was skipped. ## 3. Run the full analysis ```bash -mdforge analyze --input /path/to/simulation_dir --output results/ +moldynx analyze --input /path/to/simulation_dir --output results/ ``` Discovers files → detects the system → auto-selects analyses → runs them → writes CSVs, 300-dpi PNG+PDF figures, a `manifest.json/yaml` provenance record, @@ -53,7 +53,7 @@ and a Markdown+HTML report. ## 4. Reproducible, config-driven workflow ```bash -mdforge analyze --config examples/alpha_zein_A8HNE1/config.yaml +moldynx analyze --config examples/alpha_zein_A8HNE1/config.yaml ``` Every run writes a `manifest.json` capturing library versions, git commit, input fingerprints, seeds, parameters and per-analysis runtimes — enough for another @@ -61,10 +61,10 @@ researcher to reproduce the analysis exactly. ## 5. Add your own analysis (plugin) -Drop a file into `mdforge/analysis/plugins/` (or any `--plugin-dir`): +Drop a file into `moldynx/analysis/plugins/` (or any `--plugin-dir`): ```python -from mdforge.core.base import BaseAnalysis +from moldynx.core.base import BaseAnalysis class MyAnalysis(BaseAnalysis): name = "my_analysis" @@ -76,5 +76,5 @@ class MyAnalysis(BaseAnalysis): ctx.write_csv(df, "my_analysis.csv") return {"figure": "my_analysis"} ``` -It is auto-discovered and appears in `mdforge list-analyses` immediately. -See `mdforge/analysis/plugins/example_end_to_end.py` for a complete template. +It is auto-discovered and appears in `moldynx list-analyses` immediately. +See `moldynx/analysis/plugins/example_end_to_end.py` for a complete template. diff --git a/examples/alpha_zein_A8HNE1/README.md b/examples/alpha_zein_A8HNE1/README.md index 01395d1..dc5faad 100644 --- a/examples/alpha_zein_A8HNE1/README.md +++ b/examples/alpha_zein_A8HNE1/README.md @@ -4,16 +4,16 @@ This directory holds the **reference example** that seeded the toolkit: a 100 ns GROMACS simulation of an AlphaFold 3 α-zein model (187 residues, explicit solvent, CHARMM36). -- `config.yaml` — a complete, reproducible mdforge workflow for this system. +- `config.yaml` — a complete, reproducible MolDynX Tools workflow for this system. - `figures/`, `results/`, `tables/`, `report/` — outputs produced by the original project-specific pipeline (now preserved in [`../../legacy/`](../../legacy)), kept here as a worked example of what a full analysis looks like. -## Reproduce with mdforge +## Reproduce with MolDynX Tools ```bash # edit input_dir in config.yaml to point at your copy of the raw files, then: -mdforge analyze --config examples/alpha_zein_A8HNE1/config.yaml +moldynx analyze --config examples/alpha_zein_A8HNE1/config.yaml ``` The raw simulation files (`step5_production.xtc/.tpr/.edr/...`) are **not** diff --git a/examples/alpha_zein_A8HNE1/config.yaml b/examples/alpha_zein_A8HNE1/config.yaml index cd491e7..c2bd1d0 100644 --- a/examples/alpha_zein_A8HNE1/config.yaml +++ b/examples/alpha_zein_A8HNE1/config.yaml @@ -1,15 +1,15 @@ # --------------------------------------------------------------------------- -# Reproducible mdforge workflow for the alpha-zein (A8HNE1) system. +# Reproducible MolDynX Tools workflow for the alpha-zein (A8HNE1) system. # # Run it with a single command: -# mdforge analyze --config examples/alpha_zein_A8HNE1/config.yaml +# moldynx analyze --config examples/alpha_zein_A8HNE1/config.yaml # # CLI flags override anything set here, so the same file works on HPC/batch. # --------------------------------------------------------------------------- # Point this at your GROMACS simulation directory (searched recursively). input_dir: /path/to/A8HNE1_MDS -output_dir: examples/alpha_zein_A8HNE1/mdforge_out +output_dir: examples/alpha_zein_A8HNE1/moldynx_out # Trajectory slicing / performance start: 0 diff --git a/mdforge/__init__.py b/mdforge/__init__.py index 188dfe2..0011212 100644 --- a/mdforge/__init__.py +++ b/mdforge/__init__.py @@ -1,38 +1,54 @@ """ -mdforge -- a reusable, extensible framework for analysing GROMACS molecular -dynamics simulations of arbitrary biomolecular systems. +Deprecated import name for MolDynX Tools. -Point it at a simulation directory and it will discover the files, detect the -system composition (protein / ligand / nucleic acid / membrane / ions / ...), -select the appropriate analyses, run them with streaming-friendly performance, -and produce publication-quality figures plus a fully reproducible report. - -Public API ----------- - from mdforge import analyze, detect_system, __version__ +``mdforge`` was renamed to ``moldynx`` in 0.3.0. This shim keeps existing code and +third-party plugins working for one minor version: ``import mdforge`` and any +``mdforge.`` import resolve to the same module objects as +``moldynx.`` (so analyses register once, in one registry), and a +``DeprecationWarning`` is emitted. It will be removed in 0.4.0. """ from __future__ import annotations -__version__ = "0.2.1" -__author__ = "Hossam Mahmoud" +import importlib +import importlib.abc +import importlib.util +import sys +import warnings + +warnings.warn( + "the 'mdforge' package has been renamed to 'moldynx' (MolDynX Tools); " + "'import mdforge' will stop working in 0.4.0", + DeprecationWarning, + stacklevel=2, +) + +import moldynx as _moldynx # noqa: E402 +from moldynx import * # noqa: E402,F401,F403 +from moldynx import __version__ # noqa: E402,F401 + + +class _AliasFinder(importlib.abc.MetaPathFinder, importlib.abc.Loader): + """Resolve ``mdforge.x.y`` to the already-importable ``moldynx.x.y``.""" + + prefix = "mdforge." + + def find_spec(self, fullname, path=None, target=None): + if fullname.startswith(self.prefix): + real = "moldynx." + fullname[len(self.prefix):] + if importlib.util.find_spec(real) is None: + return None + return importlib.util.spec_from_loader(fullname, self, is_package=True) + return None + + def create_module(self, spec): + return importlib.import_module("moldynx." + spec.name[len(self.prefix):]) -# Re-export the most commonly used entry points (kept import-light). -from mdforge.core.system import detect_system, SystemInfo, SystemType, ComponentType # noqa: E402 -from mdforge.core.registry import registry # noqa: E402 + def exec_module(self, module): # the real module is already executed + pass -__all__ = [ - "__version__", - "detect_system", - "SystemInfo", - "SystemType", - "ComponentType", - "registry", - "analyze", -] +if not any(isinstance(f, _AliasFinder) for f in sys.meta_path): + sys.meta_path.insert(0, _AliasFinder()) -def analyze(*args, **kwargs): - """Convenience wrapper around :func:`mdforge.core.pipeline.run_pipeline`.""" - from mdforge.core.pipeline import run_pipeline - return run_pipeline(*args, **kwargs) +__path__ = [] # make this a package so submodule imports reach the finder diff --git a/mdforge/cli/__init__.py b/mdforge/cli/__init__.py deleted file mode 100644 index dd4c185..0000000 --- a/mdforge/cli/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Command-line interface for mdforge.""" diff --git a/mdforge/io/__init__.py b/mdforge/io/__init__.py deleted file mode 100644 index 2cf932f..0000000 --- a/mdforge/io/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -"""I/O: recursive simulation-file discovery, validation, and GROMACS readers.""" - -from mdforge.io.discovery import FileSet, discover_files, pick_trajectory # noqa: F401 -from mdforge.io.validation import validate_fileset # noqa: F401 diff --git a/moldynx/__init__.py b/moldynx/__init__.py new file mode 100644 index 0000000..55d343f --- /dev/null +++ b/moldynx/__init__.py @@ -0,0 +1,40 @@ +""" +MolDynX Tools (``moldynx``; formerly ``mdforge``) -- a reusable, extensible +framework for analysing GROMACS molecular dynamics simulations of arbitrary +biomolecular systems. + +Point it at a simulation directory and it will discover the files, detect the +system composition (protein / ligand / nucleic acid / membrane / ions / ...), +select the appropriate analyses, run them with streaming-friendly performance, +and produce publication-quality figures plus a fully reproducible report. + +Public API +---------- + from moldynx import analyze, detect_system, __version__ +""" + +from __future__ import annotations + +__version__ = "0.3.0" +__display_name__ = "MolDynX Tools" +__author__ = "Hossam Mahmoud" + +# Re-export the most commonly used entry points (kept import-light). +from moldynx.core.system import detect_system, SystemInfo, SystemType, ComponentType # noqa: E402 +from moldynx.core.registry import registry # noqa: E402 + +__all__ = [ + "__version__", + "detect_system", + "SystemInfo", + "SystemType", + "ComponentType", + "registry", + "analyze", +] + + +def analyze(*args, **kwargs): + """Convenience wrapper around :func:`moldynx.core.pipeline.run_pipeline`.""" + from moldynx.core.pipeline import run_pipeline + return run_pipeline(*args, **kwargs) diff --git a/mdforge/analysis/__init__.py b/moldynx/analysis/__init__.py similarity index 76% rename from mdforge/analysis/__init__.py rename to moldynx/analysis/__init__.py index 9cd1636..f080aae 100644 --- a/mdforge/analysis/__init__.py +++ b/moldynx/analysis/__init__.py @@ -1,7 +1,7 @@ """ Built-in analysis modules. -Every module here defines one or more :class:`~mdforge.core.base.BaseAnalysis` +Every module here defines one or more :class:`~moldynx.core.base.BaseAnalysis` subclasses, which auto-register on import. The registry imports all modules in this package (except ``plugins``, handled separately) at selection time. """ diff --git a/mdforge/analysis/clustering.py b/moldynx/analysis/clustering.py similarity index 96% rename from mdforge/analysis/clustering.py rename to moldynx/analysis/clustering.py index 6bc9d92..3366a59 100644 --- a/mdforge/analysis/clustering.py +++ b/moldynx/analysis/clustering.py @@ -9,9 +9,9 @@ from sklearn.metrics import silhouette_score from tqdm import tqdm -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting _COLORS = ["#1f6f8b", "#e07a5f", "#5f9e6e", "#8367c7", "#d4a017", "#c0392b", "#2471a3", "#7f8c8d"] diff --git a/mdforge/analysis/com.py b/moldynx/analysis/com.py similarity index 95% rename from mdforge/analysis/com.py rename to moldynx/analysis/com.py index 718d047..dee3fc4 100644 --- a/mdforge/analysis/com.py +++ b/moldynx/analysis/com.py @@ -7,10 +7,10 @@ import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # noqa: F401 (registers 3d projection) -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class CenterOfMass(BaseAnalysis): diff --git a/mdforge/analysis/contact_map.py b/moldynx/analysis/contact_map.py similarity index 92% rename from mdforge/analysis/contact_map.py rename to moldynx/analysis/contact_map.py index 6508a5e..944ae9a 100644 --- a/mdforge/analysis/contact_map.py +++ b/moldynx/analysis/contact_map.py @@ -6,11 +6,11 @@ import pandas as pd from scipy.spatial.distance import cdist -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE, SEQ_CMAP, DIV_CMAP +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE, SEQ_CMAP, DIV_CMAP class ContactMap(BaseAnalysis): diff --git a/mdforge/analysis/convergence.py b/moldynx/analysis/convergence.py similarity index 95% rename from mdforge/analysis/convergence.py rename to moldynx/analysis/convergence.py index 9f340c1..d7d4665 100644 --- a/mdforge/analysis/convergence.py +++ b/moldynx/analysis/convergence.py @@ -8,11 +8,11 @@ from scipy import stats as sps from MDAnalysis.analysis import align, rms -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class Convergence(BaseAnalysis): diff --git a/mdforge/analysis/dccm.py b/moldynx/analysis/dccm.py similarity index 92% rename from mdforge/analysis/dccm.py rename to moldynx/analysis/dccm.py index b95dc10..d0b199d 100644 --- a/mdforge/analysis/dccm.py +++ b/moldynx/analysis/dccm.py @@ -6,10 +6,10 @@ import pandas as pd from MDAnalysis.analysis import align -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge.plotting import DIV_CMAP +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx.plotting import DIV_CMAP class DCCM(BaseAnalysis): diff --git a/mdforge/analysis/energies.py b/moldynx/analysis/energies.py similarity index 95% rename from mdforge/analysis/energies.py rename to moldynx/analysis/energies.py index 3218aba..6b21d54 100644 --- a/mdforge/analysis/energies.py +++ b/moldynx/analysis/energies.py @@ -7,10 +7,10 @@ import numpy as np import pandas as pd -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE _WANTED = { "Potential": ["Potential"], "Kinetic": ["Kinetic En.", "Kinetic"], diff --git a/mdforge/analysis/hbonds.py b/moldynx/analysis/hbonds.py similarity index 97% rename from mdforge/analysis/hbonds.py rename to moldynx/analysis/hbonds.py index a9ceda3..f64f68b 100644 --- a/mdforge/analysis/hbonds.py +++ b/moldynx/analysis/hbonds.py @@ -7,10 +7,10 @@ import matplotlib.pyplot as plt from MDAnalysis.analysis.hydrogenbonds import HydrogenBondAnalysis as HBA -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE WATER = "resname TIP3 SOL WAT HOH SPC TIP4" diff --git a/mdforge/analysis/interface.py b/moldynx/analysis/interface.py similarity index 95% rename from mdforge/analysis/interface.py rename to moldynx/analysis/interface.py index df1d381..a2d6e1d 100644 --- a/mdforge/analysis/interface.py +++ b/moldynx/analysis/interface.py @@ -17,11 +17,11 @@ from MDAnalysis.analysis import rms from MDAnalysis.analysis.distances import distance_array -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import COMPLEX_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import COMPLEX_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class InterfaceAnalysis(BaseAnalysis): diff --git a/mdforge/analysis/ligand.py b/moldynx/analysis/ligand.py similarity index 94% rename from mdforge/analysis/ligand.py rename to moldynx/analysis/ligand.py index 80eb7bd..018ccde 100644 --- a/mdforge/analysis/ligand.py +++ b/moldynx/analysis/ligand.py @@ -17,11 +17,11 @@ from MDAnalysis.analysis import align from MDAnalysis.analysis.distances import distance_array -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import SystemType -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import SystemType +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class LigandAnalysis(BaseAnalysis): diff --git a/mdforge/analysis/mmpbsa.py b/moldynx/analysis/mmpbsa.py similarity index 96% rename from mdforge/analysis/mmpbsa.py rename to moldynx/analysis/mmpbsa.py index 148a0ae..86ef560 100644 --- a/mdforge/analysis/mmpbsa.py +++ b/moldynx/analysis/mmpbsa.py @@ -14,13 +14,13 @@ import numpy as np import pandas as pd -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx.plotting import PALETTE MMPBSA_IN = """\ &general - sys_name = "mdforge_system", + sys_name = "moldynx_system", startframe = 1, endframe = 999999, interval = 10, verbose = 2, forcefields = "oldff/leaprc.ff99SB, leaprc.gaff", / diff --git a/mdforge/analysis/native_contacts.py b/moldynx/analysis/native_contacts.py similarity index 92% rename from mdforge/analysis/native_contacts.py rename to moldynx/analysis/native_contacts.py index 9a95560..bcd787e 100644 --- a/mdforge/analysis/native_contacts.py +++ b/moldynx/analysis/native_contacts.py @@ -6,11 +6,11 @@ import pandas as pd from scipy.spatial.distance import cdist -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE, SEQ_CMAP +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE, SEQ_CMAP class NativeContacts(BaseAnalysis): diff --git a/mdforge/analysis/nucleic.py b/moldynx/analysis/nucleic.py similarity index 93% rename from mdforge/analysis/nucleic.py rename to moldynx/analysis/nucleic.py index 9cc5e1b..30fdd2d 100644 --- a/mdforge/analysis/nucleic.py +++ b/moldynx/analysis/nucleic.py @@ -17,11 +17,11 @@ from MDAnalysis.analysis import rms from MDAnalysis.analysis.distances import distance_array -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import SystemType -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import SystemType +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class NucleicAnalysis(BaseAnalysis): diff --git a/mdforge/analysis/pca.py b/moldynx/analysis/pca.py similarity index 94% rename from mdforge/analysis/pca.py rename to moldynx/analysis/pca.py index 94abb58..227f904 100644 --- a/mdforge/analysis/pca.py +++ b/moldynx/analysis/pca.py @@ -7,10 +7,10 @@ import matplotlib.pyplot as plt from MDAnalysis.analysis import align -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge.plotting import PALETTE, DIV_CMAP, FEL_CMAP +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx.plotting import PALETTE, DIV_CMAP, FEL_CMAP KB_KJ = 0.00831446261815324 diff --git a/mdforge/analysis/plugins/__init__.py b/moldynx/analysis/plugins/__init__.py similarity index 78% rename from mdforge/analysis/plugins/__init__.py rename to moldynx/analysis/plugins/__init__.py index a80f203..1491ac2 100644 --- a/mdforge/analysis/plugins/__init__.py +++ b/moldynx/analysis/plugins/__init__.py @@ -2,7 +2,7 @@ Plugin package. Drop a ``*.py`` file here (or point ``--plugin-dir`` at an external folder) that -defines a :class:`~mdforge.core.base.BaseAnalysis` subclass, and it is +defines a :class:`~moldynx.core.base.BaseAnalysis` subclass, and it is auto-discovered and exposed through the CLI without touching the core. See ``example_end_to_end.py`` for a minimal template. """ diff --git a/mdforge/analysis/plugins/example_end_to_end.py b/moldynx/analysis/plugins/example_end_to_end.py similarity index 84% rename from mdforge/analysis/plugins/example_end_to_end.py rename to moldynx/analysis/plugins/example_end_to_end.py index baaaf86..926c51c 100644 --- a/mdforge/analysis/plugins/example_end_to_end.py +++ b/moldynx/analysis/plugins/example_end_to_end.py @@ -2,9 +2,9 @@ Example plugin: protein end-to-end distance. This is a complete, working template showing how to add a new analysis to -mdforge WITHOUT modifying the core. Copy this file, rename the class, implement +MolDynX Tools WITHOUT modifying the core. Copy this file, rename the class, implement ``run()``, and it will be auto-discovered and selectable on the CLI as -``mdforge analyze --analyses end_to_end`` (or run automatically for the systems +``moldynx analyze --analyses end_to_end`` (or run automatically for the systems it declares support for). """ @@ -13,11 +13,11 @@ import numpy as np import pandas as pd -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import SystemType -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import SystemType +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class EndToEndDistance(BaseAnalysis): diff --git a/mdforge/analysis/prolif.py b/moldynx/analysis/prolif.py similarity index 97% rename from mdforge/analysis/prolif.py rename to moldynx/analysis/prolif.py index f41788c..ef7710f 100644 --- a/mdforge/analysis/prolif.py +++ b/moldynx/analysis/prolif.py @@ -17,9 +17,9 @@ import pandas as pd from MDAnalysis.analysis.distances import distance_array -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx.plotting import PALETTE WATER = "resname TIP3 SOL WAT HOH SPC" WATER_O = "resname TIP3 SOL WAT HOH SPC and name OH2 OW OW1 O" diff --git a/mdforge/analysis/ramachandran.py b/moldynx/analysis/ramachandran.py similarity index 95% rename from mdforge/analysis/ramachandran.py rename to moldynx/analysis/ramachandran.py index 84cff06..e32bc3c 100644 --- a/mdforge/analysis/ramachandran.py +++ b/moldynx/analysis/ramachandran.py @@ -7,10 +7,10 @@ import matplotlib.pyplot as plt from MDAnalysis.analysis.dihedrals import Ramachandran as MDARama -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx.plotting import PALETTE def _favoured_fraction(phi, psi) -> float: diff --git a/mdforge/analysis/rin.py b/moldynx/analysis/rin.py similarity index 95% rename from mdforge/analysis/rin.py rename to moldynx/analysis/rin.py index 8804e8b..ea94e31 100644 --- a/mdforge/analysis/rin.py +++ b/moldynx/analysis/rin.py @@ -7,10 +7,10 @@ import networkx as nx from scipy.spatial.distance import cdist -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx.plotting import PALETTE _OCC = 0.5 diff --git a/mdforge/analysis/rmsd.py b/moldynx/analysis/rmsd.py similarity index 94% rename from mdforge/analysis/rmsd.py rename to moldynx/analysis/rmsd.py index c7ac85b..3df9e0e 100644 --- a/mdforge/analysis/rmsd.py +++ b/moldynx/analysis/rmsd.py @@ -6,10 +6,10 @@ import pandas as pd from MDAnalysis.analysis import rms -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class RMSDAnalysis(BaseAnalysis): diff --git a/mdforge/analysis/rmsf.py b/moldynx/analysis/rmsf.py similarity index 92% rename from mdforge/analysis/rmsf.py rename to moldynx/analysis/rmsf.py index c2336bd..a7ae45c 100644 --- a/mdforge/analysis/rmsf.py +++ b/moldynx/analysis/rmsf.py @@ -6,11 +6,11 @@ import pandas as pd from MDAnalysis.analysis import align, rms -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import SystemType -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import SystemType +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE _PROTEIN_SYSTEMS = {SystemType.PROTEIN_ONLY, SystemType.PROTEIN_PROTEIN, SystemType.PROTEIN_PEPTIDE, SystemType.PROTEIN_LIGAND, diff --git a/mdforge/analysis/rog.py b/moldynx/analysis/rog.py similarity index 93% rename from mdforge/analysis/rog.py rename to moldynx/analysis/rog.py index 87d7e3a..78712ca 100644 --- a/mdforge/analysis/rog.py +++ b/moldynx/analysis/rog.py @@ -5,10 +5,10 @@ import numpy as np import pandas as pd -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class RadiusOfGyration(BaseAnalysis): diff --git a/mdforge/analysis/salt_bridges.py b/moldynx/analysis/salt_bridges.py similarity index 94% rename from mdforge/analysis/salt_bridges.py rename to moldynx/analysis/salt_bridges.py index 7331a3b..bf62ed2 100644 --- a/mdforge/analysis/salt_bridges.py +++ b/moldynx/analysis/salt_bridges.py @@ -8,11 +8,11 @@ import pandas as pd from MDAnalysis.analysis.distances import distance_array -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE _ACIDIC = "(resname ASP and name OD1 OD2) or (resname GLU and name OE1 OE2)" _BASIC = ("(resname LYS and name NZ) or (resname ARG and name NH1 NH2 NE) or " diff --git a/mdforge/analysis/sasa.py b/moldynx/analysis/sasa.py similarity index 95% rename from mdforge/analysis/sasa.py rename to moldynx/analysis/sasa.py index 8470520..a4355a3 100644 --- a/mdforge/analysis/sasa.py +++ b/moldynx/analysis/sasa.py @@ -6,10 +6,10 @@ import pandas as pd import mdtraj as md -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE class SASAAnalysis(BaseAnalysis): diff --git a/mdforge/analysis/secondary_structure.py b/moldynx/analysis/secondary_structure.py similarity index 93% rename from mdforge/analysis/secondary_structure.py rename to moldynx/analysis/secondary_structure.py index cf900ff..f27f0c8 100644 --- a/mdforge/analysis/secondary_structure.py +++ b/moldynx/analysis/secondary_structure.py @@ -7,11 +7,11 @@ import mdtraj as md from matplotlib.colors import ListedColormap, BoundaryNorm -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE _MAP = {"C": 0, "H": 1, "E": 2} _LABELS = ["Coil", "Helix", "Sheet"] diff --git a/mdforge/analysis/statistics_summary.py b/moldynx/analysis/statistics_summary.py similarity index 95% rename from mdforge/analysis/statistics_summary.py rename to moldynx/analysis/statistics_summary.py index 1429471..6b470fc 100644 --- a/mdforge/analysis/statistics_summary.py +++ b/moldynx/analysis/statistics_summary.py @@ -5,10 +5,10 @@ import numpy as np import pandas as pd -from mdforge.core.base import BaseAnalysis -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import DIV_CMAP +from moldynx.core.base import BaseAnalysis +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import DIV_CMAP # (csv file, time col, value col, label) _SOURCES = [ diff --git a/mdforge/analysis/structural.py b/moldynx/analysis/structural.py similarity index 94% rename from mdforge/analysis/structural.py rename to moldynx/analysis/structural.py index 03d1108..f861bf6 100644 --- a/mdforge/analysis/structural.py +++ b/moldynx/analysis/structural.py @@ -8,11 +8,11 @@ from scipy.spatial import ConvexHull from scipy.spatial.distance import pdist -from mdforge.core.base import BaseAnalysis -from mdforge.core.system import PROTEIN_SYSTEMS -from mdforge import plotting -from mdforge import statistics as st -from mdforge.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.system import PROTEIN_SYSTEMS +from moldynx import plotting +from moldynx import statistics as st +from moldynx.plotting import PALETTE def _gyration(pos): diff --git a/moldynx/cli/__init__.py b/moldynx/cli/__init__.py new file mode 100644 index 0000000..062f041 --- /dev/null +++ b/moldynx/cli/__init__.py @@ -0,0 +1 @@ +"""Command-line interface for moldynx.""" diff --git a/mdforge/cli/interactive.py b/moldynx/cli/interactive.py similarity index 100% rename from mdforge/cli/interactive.py rename to moldynx/cli/interactive.py diff --git a/mdforge/cli/main.py b/moldynx/cli/main.py similarity index 83% rename from mdforge/cli/main.py rename to moldynx/cli/main.py index 3974cf0..1a71df9 100644 --- a/mdforge/cli/main.py +++ b/moldynx/cli/main.py @@ -1,12 +1,12 @@ """ -mdforge command-line entry point. +MolDynX Tools (moldynx) command-line entry point. Subcommands ----------- - mdforge analyze --input DIR [--output DIR] [options] run the pipeline - mdforge detect --input DIR detect system only - mdforge list-analyses [--system TYPE] list available analyses - mdforge version + moldynx analyze --input DIR [--output DIR] [options] run the pipeline + moldynx detect --input DIR detect system only + moldynx list-analyses [--system TYPE] list available analyses + moldynx version """ from __future__ import annotations @@ -14,7 +14,7 @@ import argparse import sys -from mdforge import __version__ +from moldynx import __version__ def _add_common(p): @@ -24,9 +24,9 @@ def _add_common(p): def build_parser() -> argparse.ArgumentParser: - parser = argparse.ArgumentParser(prog="mdforge", description=__doc__, + parser = argparse.ArgumentParser(prog="moldynx", description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument("--version", action="version", version=f"mdforge {__version__}") + parser.add_argument("--version", action="version", version=f"MolDynX Tools (moldynx) {__version__}") sub = parser.add_subparsers(dest="command") a = sub.add_parser("analyze", help="Run the analysis pipeline.") @@ -62,24 +62,24 @@ def build_parser() -> argparse.ArgumentParser: def _cmd_analyze(args) -> int: - from mdforge.core.config import RunConfig - from mdforge.core.pipeline import run_pipeline - from mdforge.cli.interactive import ask_choice + from moldynx.core.config import RunConfig + from moldynx.core.pipeline import run_pipeline + from moldynx.cli.interactive import ask_choice cfg = RunConfig.from_args(args, yaml_path=args.config) if cfg.input_dir is None: print("error: --input (or 'input_dir' in --config) is required.") return 2 if cfg.output_dir is None: - cfg.output_dir = cfg.input_dir / "mdforge_results" + cfg.output_dir = cfg.input_dir / "moldynx_results" ask = ask_choice if args.interactive else None run_pipeline(cfg, ask=ask, plan_only=args.plan) return 0 def _cmd_detect(args) -> int: - from mdforge.io.discovery import discover_files - from mdforge.io.validation import validate_fileset - from mdforge.core.system import detect_system + from moldynx.io.discovery import discover_files + from moldynx.io.validation import validate_fileset + from moldynx.core.system import detect_system if not args.input: print("error: --input is required.") return 2 @@ -98,8 +98,8 @@ def _cmd_detect(args) -> int: def _cmd_list(args) -> int: - from mdforge.core.registry import registry - from mdforge.core.system import SystemType + from moldynx.core.registry import registry + from moldynx.core.system import SystemType registry.ensure_builtins_loaded() filt = SystemType(args.system) if args.system else None print(f"{'name':22s} {'category':13s} systems") @@ -132,7 +132,7 @@ def main(argv=None) -> int: if not args.command: parser.print_help() return 1 - print(f"mdforge {__version__}") + print(f"MolDynX Tools (moldynx) {__version__}") return 0 return {"analyze": _cmd_analyze, "detect": _cmd_detect, "list-analyses": _cmd_list}[args.command](args) diff --git a/mdforge/core/__init__.py b/moldynx/core/__init__.py similarity index 100% rename from mdforge/core/__init__.py rename to moldynx/core/__init__.py diff --git a/mdforge/core/base.py b/moldynx/core/base.py similarity index 95% rename from mdforge/core/base.py rename to moldynx/core/base.py index 5dd1254..305dd72 100644 --- a/mdforge/core/base.py +++ b/moldynx/core/base.py @@ -21,11 +21,11 @@ import abc from typing import TYPE_CHECKING -from mdforge.core.system import SystemType +from moldynx.core.system import SystemType if TYPE_CHECKING: # avoid import cycle at runtime - from mdforge.core.context import AnalysisContext - from mdforge.core.system import SystemInfo + from moldynx.core.context import AnalysisContext + from moldynx.core.system import SystemInfo class BaseAnalysis(abc.ABC): @@ -46,7 +46,7 @@ def __init_subclass__(cls, register: bool = True, **kwargs): super().__init_subclass__(**kwargs) # Only register concrete, named analyses (skip intermediate bases). if register and getattr(cls, "name", ""): - from mdforge.core.registry import registry + from moldynx.core.registry import registry registry.register(cls) # -- applicability ---------------------------------------------------- # diff --git a/mdforge/core/config.py b/moldynx/core/config.py similarity index 98% rename from mdforge/core/config.py rename to moldynx/core/config.py index b1ac1fc..03c422a 100644 --- a/mdforge/core/config.py +++ b/moldynx/core/config.py @@ -4,7 +4,7 @@ Precedence (highest first): explicit CLI flags > YAML file > built-in defaults. A single ``config.yaml`` can therefore describe an entire reproducible workflow (inputs, selections, per-analysis parameters, report formats) and be re-run with -``mdforge analyze --config config.yaml``. +``moldynx analyze --config config.yaml``. """ from __future__ import annotations @@ -17,7 +17,7 @@ class RunConfig: # -- inputs / outputs ------------------------------------------------- # input_dir: Path | None = None - output_dir: Path = Path("mdforge_results") + output_dir: Path = Path("moldynx_results") # explicit overrides for auto-discovered files (optional) trajectory: Path | None = None topology: Path | None = None diff --git a/mdforge/core/context.py b/moldynx/core/context.py similarity index 98% rename from mdforge/core/context.py rename to moldynx/core/context.py index be98cdb..fd876d2 100644 --- a/mdforge/core/context.py +++ b/moldynx/core/context.py @@ -27,8 +27,8 @@ from MDAnalysis.transformations import unwrap # noqa: E402 from tqdm import tqdm # noqa: E402 -from mdforge.core.config import RunConfig -from mdforge.core.system import SystemInfo, ComponentType +from moldynx.core.config import RunConfig +from moldynx.core.system import SystemInfo, ComponentType class AnalysisContext: diff --git a/mdforge/core/pipeline.py b/moldynx/core/pipeline.py similarity index 90% rename from mdforge/core/pipeline.py rename to moldynx/core/pipeline.py index 2414adf..403d4db 100644 --- a/mdforge/core/pipeline.py +++ b/moldynx/core/pipeline.py @@ -11,13 +11,13 @@ import traceback from pathlib import Path -from mdforge.core.config import RunConfig -from mdforge.core.context import AnalysisContext -from mdforge.core.provenance import RunManifest -from mdforge.core.registry import registry -from mdforge.core.system import detect_system, SystemType -from mdforge.io.discovery import discover_files, pick_trajectory -from mdforge.io.validation import validate_fileset +from moldynx.core.config import RunConfig +from moldynx.core.context import AnalysisContext +from moldynx.core.provenance import RunManifest +from moldynx.core.registry import registry +from moldynx.core.system import detect_system, SystemType +from moldynx.io.discovery import discover_files, pick_trajectory +from moldynx.io.validation import validate_fileset def build_plan(config: RunConfig, ask=None): @@ -64,7 +64,7 @@ def run_pipeline(config: RunConfig | None = None, *, ask=None, fs, validation, system, selected, skipped = build_plan(config, ask=ask) log("=" * 74) - log(" mdforge -- MD analysis pipeline") + log(" MolDynX Tools -- MD analysis pipeline") log("=" * 74) log(f" input : {config.input_dir}") log(f" output: {config.output_dir}") @@ -116,7 +116,7 @@ def run_pipeline(config: RunConfig | None = None, *, ask=None, # -- report ----------------------------------------------------------- # try: - from mdforge.report.generator import generate_report + from moldynx.report.generator import generate_report report_paths = generate_report(ctx, results, manifest, formats=config.report_formats) for p in report_paths: diff --git a/mdforge/core/provenance.py b/moldynx/core/provenance.py similarity index 98% rename from mdforge/core/provenance.py rename to moldynx/core/provenance.py index 70946e6..1e39710 100644 --- a/mdforge/core/provenance.py +++ b/moldynx/core/provenance.py @@ -66,7 +66,7 @@ class RunManifest: def __init__(self) -> None: self._t0 = time.time() self.data: dict = { - "mdforge_version": _lib_version("mdforge"), + "moldynx_version": _lib_version("moldynx"), "timestamp_utc": datetime.now(timezone.utc).isoformat(), "command": " ".join(sys.argv), "python": sys.version.split()[0], diff --git a/mdforge/core/registry.py b/moldynx/core/registry.py similarity index 78% rename from mdforge/core/registry.py rename to moldynx/core/registry.py index 1e4d39c..21f0082 100644 --- a/mdforge/core/registry.py +++ b/moldynx/core/registry.py @@ -5,9 +5,9 @@ or plugin). It supports: * automatic selection of analyses for a detected system, -* discovery of plugins from (a) the built-in ``mdforge.analysis.plugins`` package, +* discovery of plugins from (a) the built-in ``moldynx.analysis.plugins`` package, (b) any user directory passed via ``--plugin-dir`` / config, and - (c) installed packages advertising a ``mdforge.plugins`` entry-point. + (c) installed packages advertising a ``moldynx.plugins`` entry-point. Adding an analysis requires no change to the core: define a ``BaseAnalysis`` subclass and make sure its module is imported. @@ -19,12 +19,13 @@ import importlib.util import pkgutil import sys +import warnings from pathlib import Path from typing import TYPE_CHECKING if TYPE_CHECKING: - from mdforge.core.base import BaseAnalysis - from mdforge.core.system import SystemInfo + from moldynx.core.base import BaseAnalysis + from moldynx.core.system import SystemInfo class AnalysisRegistry: @@ -87,11 +88,11 @@ def select(self, system: "SystemInfo", available_files: set[str], def ensure_builtins_loaded(self) -> None: if self._builtins_loaded: return - import mdforge.analysis as analysis_pkg + import moldynx.analysis as analysis_pkg for mod in pkgutil.iter_modules(analysis_pkg.__path__): if mod.name.startswith("_") or mod.name == "plugins": continue - importlib.import_module(f"mdforge.analysis.{mod.name}") + importlib.import_module(f"moldynx.analysis.{mod.name}") self.discover_plugins() # built-in plugins package self._builtins_loaded = True @@ -100,10 +101,10 @@ def discover_plugins(self, plugin_dirs: list[str | Path] | None = None) -> list[ loaded: list[str] = [] # (a) built-in plugins package try: - import mdforge.analysis.plugins as plug_pkg + import moldynx.analysis.plugins as plug_pkg for mod in pkgutil.iter_modules(plug_pkg.__path__): if not mod.name.startswith("_"): - importlib.import_module(f"mdforge.analysis.plugins.{mod.name}") + importlib.import_module(f"moldynx.analysis.plugins.{mod.name}") loaded.append(mod.name) except Exception: pass @@ -116,21 +117,27 @@ def discover_plugins(self, plugin_dirs: list[str | Path] | None = None) -> list[ if pyfile.name.startswith("_"): continue spec = importlib.util.spec_from_file_location( - f"mdforge_plugin_{pyfile.stem}", pyfile) + f"moldynx_plugin_{pyfile.stem}", pyfile) if spec and spec.loader: module = importlib.util.module_from_spec(spec) sys.modules[spec.name] = module spec.loader.exec_module(module) loaded.append(pyfile.stem) - # (c) installed entry-points + # (c) installed entry-points; "mdforge.plugins" is the pre-rename group name try: from importlib.metadata import entry_points eps = entry_points() - group = eps.select(group="mdforge.plugins") if hasattr(eps, "select") \ - else eps.get("mdforge.plugins", []) - for ep in group: - ep.load() - loaded.append(ep.name) + for group_name in ("moldynx.plugins", "mdforge.plugins"): + group = eps.select(group=group_name) if hasattr(eps, "select") \ + else eps.get(group_name, []) + for ep in group: + if group_name == "mdforge.plugins": + warnings.warn( + f"plugin {ep.name!r} uses the deprecated 'mdforge.plugins' " + f"entry-point group; advertise it under 'moldynx.plugins'", + DeprecationWarning, stacklevel=2) + ep.load() + loaded.append(ep.name) except Exception: pass return loaded diff --git a/mdforge/core/system.py b/moldynx/core/system.py similarity index 100% rename from mdforge/core/system.py rename to moldynx/core/system.py diff --git a/moldynx/io/__init__.py b/moldynx/io/__init__.py new file mode 100644 index 0000000..78de0de --- /dev/null +++ b/moldynx/io/__init__.py @@ -0,0 +1,4 @@ +"""I/O: recursive simulation-file discovery, validation, and GROMACS readers.""" + +from moldynx.io.discovery import FileSet, discover_files, pick_trajectory # noqa: F401 +from moldynx.io.validation import validate_fileset # noqa: F401 diff --git a/mdforge/io/discovery.py b/moldynx/io/discovery.py similarity index 100% rename from mdforge/io/discovery.py rename to moldynx/io/discovery.py diff --git a/mdforge/io/validation.py b/moldynx/io/validation.py similarity index 98% rename from mdforge/io/validation.py rename to moldynx/io/validation.py index 84c59e4..d71b0a3 100644 --- a/mdforge/io/validation.py +++ b/moldynx/io/validation.py @@ -9,7 +9,7 @@ from dataclasses import dataclass -from mdforge.io.discovery import FileSet +from moldynx.io.discovery import FileSet # role -> (why it is needed, how to obtain it) _GUIDANCE = { diff --git a/mdforge/plotting/__init__.py b/moldynx/plotting/__init__.py similarity index 59% rename from mdforge/plotting/__init__.py rename to moldynx/plotting/__init__.py index 038d90a..55e4acc 100644 --- a/mdforge/plotting/__init__.py +++ b/moldynx/plotting/__init__.py @@ -1,6 +1,6 @@ """Publication-quality plotting: consistent Nature-like style + PNG/PDF saving.""" -from mdforge.plotting.style import ( # noqa: F401 +from moldynx.plotting.style import ( # noqa: F401 set_style, new_axes, add_reference_line, PALETTE, SEQ_CMAP, DIV_CMAP, FEL_CMAP, ) -from mdforge.plotting.figures import save_figure # noqa: F401 +from moldynx.plotting.figures import save_figure # noqa: F401 diff --git a/mdforge/plotting/figures.py b/moldynx/plotting/figures.py similarity index 100% rename from mdforge/plotting/figures.py rename to moldynx/plotting/figures.py diff --git a/mdforge/plotting/style.py b/moldynx/plotting/style.py similarity index 100% rename from mdforge/plotting/style.py rename to moldynx/plotting/style.py diff --git a/mdforge/report/__init__.py b/moldynx/report/__init__.py similarity index 53% rename from mdforge/report/__init__.py rename to moldynx/report/__init__.py index d755470..44c56fd 100644 --- a/mdforge/report/__init__.py +++ b/moldynx/report/__init__.py @@ -1,3 +1,3 @@ """Automatic report generation (Markdown + HTML + best-effort PDF).""" -from mdforge.report.generator import generate_report # noqa: F401 +from moldynx.report.generator import generate_report # noqa: F401 diff --git a/mdforge/report/generator.py b/moldynx/report/generator.py similarity index 98% rename from mdforge/report/generator.py rename to moldynx/report/generator.py index 5709502..f26d842 100644 --- a/mdforge/report/generator.py +++ b/moldynx/report/generator.py @@ -88,8 +88,8 @@ def generate_report(ctx, results: dict, manifest, formats=("md", "html")) -> lis system = ctx.system blocks = [] blocks.append(("h1", f"MD Analysis Report — {system.system_type.value}")) - blocks.append(("p", f"*Generated {date.today().isoformat()} by mdforge " - f"v{manifest.data.get('mdforge_version')}.*")) + blocks.append(("p", f"*Generated {date.today().isoformat()} by MolDynX Tools " + f"v{manifest.data.get('moldynx_version')}.*")) # -- system ----------------------------------------------------------- # blocks.append(("h2", "1. System")) @@ -105,7 +105,7 @@ def generate_report(ctx, results: dict, manifest, formats=("md", "html")) -> lis libs = manifest.data.get("libraries", {}) lib_str = ", ".join(f"{k} {v}" for k, v in libs.items() if v) git = manifest.data.get("git", {}) - blocks.append(("p", f"Analyses were run with mdforge (Python " + blocks.append(("p", f"Analyses were run with MolDynX Tools (Python " f"{manifest.data.get('python')}). Key libraries: {lib_str}. " f"Git commit: `{git.get('commit')}`" f"{' (dirty)' if git.get('dirty') else ''}. " diff --git a/mdforge/statistics/__init__.py b/moldynx/statistics/__init__.py similarity index 56% rename from mdforge/statistics/__init__.py rename to moldynx/statistics/__init__.py index 53c6962..8996f91 100644 --- a/mdforge/statistics/__init__.py +++ b/moldynx/statistics/__init__.py @@ -1,8 +1,8 @@ """Statistics: descriptive stats, time-series helpers, correlation, bootstrap CIs.""" -from mdforge.statistics.descriptive import describe, summary_frame, bootstrap_ci # noqa: F401 -from mdforge.statistics.timeseries import ( # noqa: F401 +from moldynx.statistics.descriptive import describe, summary_frame, bootstrap_ci # noqa: F401 +from moldynx.statistics.timeseries import ( # noqa: F401 moving_average, rolling_std, running_mean, block_average, block_average_sem, plateau_detection, ) -from mdforge.statistics.correlation import correlation_matrices # noqa: F401 +from moldynx.statistics.correlation import correlation_matrices # noqa: F401 diff --git a/mdforge/statistics/correlation.py b/moldynx/statistics/correlation.py similarity index 100% rename from mdforge/statistics/correlation.py rename to moldynx/statistics/correlation.py diff --git a/mdforge/statistics/descriptive.py b/moldynx/statistics/descriptive.py similarity index 100% rename from mdforge/statistics/descriptive.py rename to moldynx/statistics/descriptive.py diff --git a/mdforge/statistics/timeseries.py b/moldynx/statistics/timeseries.py similarity index 100% rename from mdforge/statistics/timeseries.py rename to moldynx/statistics/timeseries.py diff --git a/pyproject.toml b/pyproject.toml index aee6fc5..21714c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,9 +3,9 @@ requires = ["setuptools>=64", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "molecular-dynamics-forge" -version = "0.2.1" -description = "Reusable, extensible framework for reproducible analysis of GROMACS molecular dynamics simulations of arbitrary biomolecular systems." +name = "moldynx-tools" +version = "0.3.0" +description = "MolDynX Tools (formerly mdforge): reusable, extensible framework for reproducible, audited analysis of GROMACS molecular dynamics simulations of arbitrary biomolecular systems." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } @@ -44,14 +44,17 @@ Homepage = "https://github.com/SamDozer/molecular-dynamics-forge" Repository = "https://github.com/SamDozer/molecular-dynamics-forge" [project.scripts] -mdforge = "mdforge.cli.main:main" +moldynx = "moldynx.cli.main:main" +# Deprecated alias kept for one minor version after the rename from mdforge. +mdforge = "moldynx.cli.main:main" -# Third-party packages advertise plugins under this entry-point group. -# [project.entry-points."mdforge.plugins"] +# Third-party packages advertise plugins under this entry-point group +# (the legacy "mdforge.plugins" group is still read, with a deprecation warning). +# [project.entry-points."moldynx.plugins"] # my_analysis = "my_package.my_module" [tool.setuptools.packages.find] -include = ["mdforge*"] +include = ["moldynx*", "mdforge*"] # mdforge = deprecated import shim [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/requirements.txt b/requirements.txt index 1742009..7994f3e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ pandas>=2.0 matplotlib>=3.7 seaborn>=0.12 tqdm>=4.65 -pyyaml>=6.0 # mdforge config-driven workflows +pyyaml>=6.0 # MolDynX Tools config-driven workflows # MD trajectory analysis MDAnalysis>=2.7 # validated with 2.10.0 diff --git a/tests/test_core.py b/tests/test_core.py index b10f7a3..89326e0 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1,15 +1,15 @@ -"""Unit tests for the mdforge core (no large trajectory data required).""" +"""Unit tests for the MolDynX Tools core (no large trajectory data required).""" from __future__ import annotations import numpy as np -from mdforge.core.system import ( +from moldynx.core.system import ( _classify_resname, _build_flags, _classify_system, ComponentType, SystemType, SystemInfo, Component, ) -from mdforge.core.registry import registry -from mdforge import statistics as st +from moldynx.core.registry import registry +from moldynx import statistics as st # --------------------------------------------------------------------------- # diff --git a/tests/test_rename.py b/tests/test_rename.py new file mode 100644 index 0000000..8d776b0 --- /dev/null +++ b/tests/test_rename.py @@ -0,0 +1,38 @@ +"""The mdforge -> moldynx (MolDynX Tools) rename and its one-version compatibility shim.""" + +from __future__ import annotations + +import importlib +import sys +import warnings + + +def test_new_package_identity(): + import moldynx + + assert moldynx.__display_name__ == "MolDynX Tools" + assert moldynx.__version__.startswith("0.3") + + +def test_legacy_import_warns_and_aliases(): + for name in [m for m in sys.modules if m == "mdforge" or m.startswith("mdforge.")]: + del sys.modules[name] + with warnings.catch_warnings(record=True) as caught: + warnings.simplefilter("always") + mdforge = importlib.import_module("mdforge") + assert any(issubclass(w.category, DeprecationWarning) and "moldynx" in str(w.message) + for w in caught) + + import moldynx + assert mdforge.__version__ == moldynx.__version__ + + +def test_legacy_submodules_are_the_same_objects(): + importlib.import_module("mdforge") + from mdforge.core.base import BaseAnalysis as Old + from moldynx.core.base import BaseAnalysis as New + assert Old is New + + from mdforge.core.registry import registry as old_registry + from moldynx.core.registry import registry as new_registry + assert old_registry is new_registry # one registry, analyses register once From 8c31431cb4bc2d875e5d7ad8771e82a68dd697e5 Mon Sep 17 00:00:00 2001 From: Hossam Mahmoud Date: Thu, 24 Sep 2026 01:10:52 +0300 Subject: [PATCH 2/5] Intake: choose the production run by evidence, report what is missing Discovery used to pick the largest file per role, which on real CHARMM-GUI folders selects an equilibration .tpr as the topology and a minimisation crash dump as the structure. Files are now classified by simulation stage; earlier analysis outputs, backups and caches are ignored; the production trajectory is the longest complete one whose atom count matches the run input, verified from file headers, and ambiguities are reported instead of resolved silently. - moldynx.io.gromacs: read-only log/mdp/xtc/tpr readers and a gmx runner with WSL fallback (the XTC scanner writes no offset cache into the data folder). - moldynx.io.validation: capability matrix, atom-count consistency check. - moldynx.io.intake + `moldynx intake`: INTAKE_REPORT.md / intake_manifest.json with per-stage summaries, temperature changes, clock offset, run extension and job-script inputs that are absent. - SystemInfo gains per-chain records and ion counts; the manifest records the evidence chain and fingerprints of every input. - Tests on real trimmed logs and miniature copies of two real folder layouts. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 23 + moldynx/cli/main.py | 62 +- moldynx/core/config.py | 10 + moldynx/core/pipeline.py | 17 +- moldynx/core/provenance.py | 13 +- moldynx/core/system.py | 83 + moldynx/io/discovery.py | 483 ++- moldynx/io/gromacs.py | 387 +++ moldynx/io/intake.py | 246 ++ moldynx/io/validation.py | 100 +- tests/conftest.py | 71 + tests/fixtures/README.md | 72 + ...A8HNE1_timeseries_step4.0_minimization.csv | 2410 ++++++++++++++ ...8HNE1_timeseries_step4.1_equilibration.csv | 127 + ...8HNE1_timeseries_step4.2_equilibration.csv | 2002 ++++++++++++ .../gb/FINAL_DECOMP_MMGBSA_frames1-3.csv | 727 +++++ .../gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.csv | 418 +++ .../gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.dat | 160 + tests/fixtures/gmx_mmpbsa/gb/mmgbsa.in | 22 + .../gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.csv | 418 +++ .../gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.dat | 125 + tests/fixtures/gmx_mmpbsa/pb/mmpbsa.in | 15 + tests/fixtures/raw_trees/A8HNE1_raw_tree.json | 2812 +++++++++++++++++ .../Q946V6_raw_archive_inventory.csv | 114 + .../structures/A8HNE1_ZmBiP2_CA_only.pdb | 851 +++++ tests/test_discovery.py | 93 + tests/test_gromacs_io.py | 169 + tests/test_intake.py | 59 + 28 files changed, 11987 insertions(+), 102 deletions(-) create mode 100644 moldynx/io/gromacs.py create mode 100644 moldynx/io/intake.py create mode 100644 tests/conftest.py create mode 100644 tests/fixtures/README.md create mode 100644 tests/fixtures/edr/A8HNE1_timeseries_step4.0_minimization.csv create mode 100644 tests/fixtures/edr/A8HNE1_timeseries_step4.1_equilibration.csv create mode 100644 tests/fixtures/edr/A8HNE1_timeseries_step4.2_equilibration.csv create mode 100644 tests/fixtures/gmx_mmpbsa/gb/FINAL_DECOMP_MMGBSA_frames1-3.csv create mode 100644 tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.csv create mode 100644 tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.dat create mode 100644 tests/fixtures/gmx_mmpbsa/gb/mmgbsa.in create mode 100644 tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.csv create mode 100644 tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.dat create mode 100644 tests/fixtures/gmx_mmpbsa/pb/mmpbsa.in create mode 100644 tests/fixtures/raw_trees/A8HNE1_raw_tree.json create mode 100644 tests/fixtures/raw_trees/Q946V6_raw_archive_inventory.csv create mode 100644 tests/fixtures/structures/A8HNE1_ZmBiP2_CA_only.pdb create mode 100644 tests/test_discovery.py create mode 100644 tests/test_gromacs_io.py create mode 100644 tests/test_intake.py diff --git a/CHANGELOG.md b/CHANGELOG.md index dcf154b..4e329c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,3 +15,26 @@ under `mdforge.plugins` are still loaded, with a warning. - The Zenodo concept DOI (10.5281/zenodo.21265946) is unchanged; citation metadata now reads "MolDynX Tools (formerly mdforge)". + +### Intake: the right files, chosen by evidence + +- **Fixed:** discovery picked the *largest* file per role. On real CHARMM-GUI folders that selects + an equilibration run input as the topology (equilibration `.tpr` files can be larger than the + production one) and a minimisation crash dump (`stepNc.pdb`) as the structure. +- Files are now classified by simulation **stage** (setup / minimisation / NVT / NPT / + production); folders of earlier analysis output, GROMACS backups and caches are ignored; the + production trajectory is the longest complete one whose atom count equals the run input's, + verified from file headers; ties and mismatches are reported as ambiguities (errors unless + `--allow-ambiguous`, `--traj/--top` or `--interactive`). +- New read-only evidence readers (`moldynx.io.gromacs`): mdrun logs (sessions, parameters, + coupling groups, minimisation outcome, warnings), `.mdp`, XTC frame headers (no offset cache is + written into the simulation folder), `.tpr` headers, and a GROMACS runner that falls back to WSL. +- New `moldynx intake` command and `INTAKE_REPORT.md` / `intake_manifest.json` (also written by + every `analyze` run): canonical run and why, per-stage summary, temperature changes between + stages, a **capability matrix** (what each missing file disables), cluster-clock offset, run + extensions, and inputs referenced by job scripts that are absent. +- `SystemInfo` now carries per-chain records (segid, atom range, residue range, sequence) and ion + counts. +- The run manifest records the evidence chain and fingerprints every file the run depends on. +- `analyze` output now defaults to `./moldynx_results/` (was + `./moldynx_results`), so runs of different simulations do not overwrite each other. diff --git a/moldynx/cli/main.py b/moldynx/cli/main.py index 1a71df9..5f0423f 100644 --- a/moldynx/cli/main.py +++ b/moldynx/cli/main.py @@ -3,10 +3,14 @@ Subcommands ----------- + moldynx intake --input DIR [--output DIR] which files, which run, what is missing moldynx analyze --input DIR [--output DIR] [options] run the pipeline moldynx detect --input DIR detect system only moldynx list-analyses [--system TYPE] list available analyses moldynx version + +MolDynX never writes into the simulation folder: outputs default to +./moldynx_results/. """ from __future__ import annotations @@ -50,6 +54,21 @@ def build_parser() -> argparse.ArgumentParser: a.add_argument("--plugin-dir", help="Extra directory of plugin modules.") a.add_argument("--interactive", action="store_true", help="Ask questions when ambiguous.") a.add_argument("--plan", action="store_true", help="Dry-run: show what would run and why.") + a.add_argument("--allow-ambiguous", dest="allow_ambiguous", action="store_true", default=None, + help="Proceed (with warnings) when the production run is ambiguous.") + a.add_argument("--include-dir", dest="include_dir", action="append", + help="Folder never to be treated as derived output (repeatable).") + a.add_argument("--pbc", choices=["auto", "none", "whole", "nojump"], + help="Periodic-boundary treatment of the solute trajectory (default auto).") + + it = sub.add_parser("intake", help="Report which files form the run and what is missing.") + _add_common(it) + it.add_argument("--no-deep", dest="deep", action="store_false", + help="Names/stages only; do not read trajectory, run-input or log headers.") + it.add_argument("--detect", action="store_true", + help="Also load the run input and describe chains, components and ions.") + it.add_argument("--allow-ambiguous", dest="allow_ambiguous", action="store_true") + it.add_argument("--include-dir", dest="include_dir", action="append") d = sub.add_parser("detect", help="Detect and print the system composition.") _add_common(d) @@ -69,13 +88,50 @@ def _cmd_analyze(args) -> int: if cfg.input_dir is None: print("error: --input (or 'input_dir' in --config) is required.") return 2 - if cfg.output_dir is None: - cfg.output_dir = cfg.input_dir / "moldynx_results" + if not args.output and "output_dir" not in _yaml_keys(args.config): + cfg.output_dir = default_output_dir(cfg.input_dir) + if args.include_dir: + cfg.include_dirs = list(cfg.include_dirs) + list(args.include_dir) ask = ask_choice if args.interactive else None run_pipeline(cfg, ask=ask, plan_only=args.plan) return 0 +def default_output_dir(input_dir) -> "Path": + """``./moldynx_results/`` -- never inside the simulation folder.""" + from pathlib import Path + return Path.cwd() / "moldynx_results" / Path(input_dir).resolve().name + + +def _yaml_keys(path) -> set: + if not path: + return set() + import yaml + from pathlib import Path + return set((yaml.safe_load(Path(path).read_text()) or {}).keys()) + + +def _cmd_intake(args) -> int: + from moldynx.io.intake import run_intake, write_intake + if not args.input: + print("error: --input is required.") + return 2 + res = run_intake(args.input, deep=args.deep, detect=args.detect, + allow_ambiguous=args.allow_ambiguous, include_dirs=args.include_dir) + out = args.output or default_output_dir(args.input) / "intake" + paths = write_intake(res, out) + fs, val = res.fileset, res.validation + print(f"trajectory : {fs.trajectory}") + print(f"run input : {fs.topology}") + print(f"evidence : {fs.evidence.get('trajectory_choice', '—')}") + print("\n" + val.capability_table()) + if val.errors or val.warnings: + print("\n" + val.report()) + for p in paths: + print(f"[intake] {p}") + return 0 if val.ok else 2 + + def _cmd_detect(args) -> int: from moldynx.io.discovery import discover_files from moldynx.io.validation import validate_fileset @@ -134,7 +190,7 @@ def main(argv=None) -> int: return 1 print(f"MolDynX Tools (moldynx) {__version__}") return 0 - return {"analyze": _cmd_analyze, "detect": _cmd_detect, + return {"analyze": _cmd_analyze, "detect": _cmd_detect, "intake": _cmd_intake, "list-analyses": _cmd_list}[args.command](args) diff --git a/moldynx/core/config.py b/moldynx/core/config.py index 03c422a..30eca5f 100644 --- a/moldynx/core/config.py +++ b/moldynx/core/config.py @@ -50,6 +50,15 @@ class RunConfig: seed: int = 0 interactive: bool = False + # -- intake / provenance (0.3) ---------------------------------------- # + allow_ambiguous: bool = False # proceed (with warnings) when the run is ambiguous + include_dirs: list[str] = field(default_factory=list) # folders never treated as derived output + pbc: str = "auto" # auto | none | whole | nojump (see core/pbc.py) + + # -- what only the user can supply (never invented) -------------------- # + annotations: dict = field(default_factory=dict) # chains, numbering, motifs, metadata + binding_energy: dict = field(default_factory=dict) # primary window, ionic strength, ... + def __post_init__(self): for k in ("input_dir", "output_dir", "trajectory", "topology", "energy", "index", "gmx_top"): @@ -102,6 +111,7 @@ def from_args(cls, args, yaml_path: str | Path | None = None) -> "RunConfig": "system_type": "system_type", "chains": "chains", "ligand": "ligand", "start": "start", "end": "end", "stride": "stride", "threads": "threads", "run_all": "all", "interactive": "interactive", "seed": "seed", + "allow_ambiguous": "allow_ambiguous", "pbc": "pbc", } for attr, argname in mapping.items(): val = getattr(args, argname, None) diff --git a/moldynx/core/pipeline.py b/moldynx/core/pipeline.py index 403d4db..e4562ba 100644 --- a/moldynx/core/pipeline.py +++ b/moldynx/core/pipeline.py @@ -22,13 +22,20 @@ def build_plan(config: RunConfig, ask=None): """Resolve files + system + selected analyses without running anything.""" - fs = discover_files(config.input_dir) + fs = discover_files(config.input_dir, include_dirs=config.include_dirs) fs.trajectory = pick_trajectory(fs, interactive=config.interactive, ask=ask) + explicit = bool(config.trajectory or config.topology) if config.trajectory: fs.trajectory = Path(config.trajectory) if config.topology: fs.topology = Path(config.topology) - validation = validate_fileset(fs) + for role in ("energy", "index", "gmx_top"): + if getattr(config, role, None): + setattr(fs, role, Path(getattr(config, role))) + if explicit or (config.interactive and ask is not None): + fs.ambiguities = [] # the user decided explicitly + fs.evidence["user_override"] = True + validation = validate_fileset(fs, allow_ambiguous=config.allow_ambiguous) system = None selected, skipped = [], [] @@ -90,6 +97,12 @@ def run_pipeline(config: RunConfig | None = None, *, ask=None, manifest.set_config(config) manifest.set_system(system) manifest.set_inputs(fs) + try: # the intake record travels with every run + from moldynx.io.intake import IntakeResult, _stage_summary, write_intake + write_intake(IntakeResult(fileset=fs, validation=validation, + stages=_stage_summary(fs)), config.output_dir / "intake") + except Exception: + log("[intake] could not write the intake report:\n" + traceback.format_exc()) ctx = AnalysisContext(config, system, fs, provenance=manifest) results: dict[str, dict] = {} diff --git a/moldynx/core/provenance.py b/moldynx/core/provenance.py index 1e39710..34f25f5 100644 --- a/moldynx/core/provenance.py +++ b/moldynx/core/provenance.py @@ -94,13 +94,20 @@ def set_system(self, system) -> None: self.data["system"] = system.to_dict() def set_inputs(self, fileset) -> None: + """Resolved inputs, *why* they were chosen, and fingerprints of everything used.""" d = fileset.to_dict() fp = {} - for role in ("trajectory", "topology", "energy"): - p = getattr(fileset, role) + for role in ("trajectory", "topology", "energy", "log", "structure", "gmx_top", "index"): + p = getattr(fileset, role, None) if p is not None: fp[role] = file_fingerprint(p) - self.data["inputs"] = {"resolved": d, "fingerprints": fp} + for stage in ("em", "nvt", "npt"): + for kind in ("tpr", "log", "edr"): + p = fileset.stage_file(stage, kind) if hasattr(fileset, "stage_file") else None + if p is not None: + fp[f"{stage}_{kind}"] = file_fingerprint(p) + self.data["inputs"] = {"resolved": d, "fingerprints": fp, + "evidence": getattr(fileset, "evidence", {})} def record_analysis(self, name: str, status: str, runtime_s: float, summary: dict | None = None, error: str | None = None) -> None: diff --git a/moldynx/core/system.py b/moldynx/core/system.py index b325237..1cec8af 100644 --- a/moldynx/core/system.py +++ b/moldynx/core/system.py @@ -126,6 +126,44 @@ class Component: selection: str +_ONE_LETTER = { + "ALA": "A", "ARG": "R", "ASN": "N", "ASP": "D", "CYS": "C", "GLN": "Q", "GLU": "E", + "GLY": "G", "HIS": "H", "ILE": "I", "LEU": "L", "LYS": "K", "MET": "M", "PHE": "F", + "PRO": "P", "SER": "S", "THR": "T", "TRP": "W", "TYR": "Y", "VAL": "V", + # CHARMM / AMBER protonation and naming variants + "HSD": "H", "HSE": "H", "HSP": "H", "HID": "H", "HIE": "H", "HIP": "H", "HISD": "H", + "HISE": "H", "HISH": "H", "ASPP": "D", "ASH": "D", "GLUP": "E", "GLH": "E", "LYN": "K", + "CYX": "C", "CYM": "C", "LSN": "K", "ARGN": "R", +} + + +@dataclass +class ChainRecord: + """ + Identity of one polymer chain, independent of any file format. + + PDB files truncate segment IDs to 4 characters (CHARMM-GUI's ``seg_0_PROA`` and + ``seg_1_PROB`` both become ``seg_``), so chain identity must be carried as atom + index ranges, not re-derived from a written structure. + """ + index: int # 0-based order in the topology + segid: str + n_residues: int + n_atoms: int + atom_start: int # 0-based, inclusive (topology atom order) + atom_stop: int # 0-based, exclusive + resid_first: int + resid_last: int + sequence: str # one-letter; X for unknown residues + + def selection(self) -> str: + """MDAnalysis selection that survives format round-trips (index-based).""" + return f"index {self.atom_start}:{self.atom_stop - 1}" + + def to_dict(self) -> dict: + return dict(self.__dict__) + + @dataclass class SystemInfo: """Structured description of a detected simulation system.""" @@ -138,6 +176,8 @@ class SystemInfo: selections: dict[str, str] = field(default_factory=dict) flags: dict[str, bool] = field(default_factory=dict) notes: list[str] = field(default_factory=list) + chains: list[ChainRecord] = field(default_factory=list) # protein chains, topology order + ion_counts: dict[str, int] = field(default_factory=dict) # resname -> number of ions # -- convenience ---------------------------------------------------- # def has(self, ctype: ComponentType | str) -> bool: @@ -159,6 +199,8 @@ def to_dict(self) -> dict: "selections": self.selections, "flags": self.flags, "notes": self.notes, + "chains": [c.to_dict() for c in self.chains], + "ion_counts": self.ion_counts, } def summary(self) -> str: @@ -174,6 +216,40 @@ def summary(self) -> str: return "\n".join(lines) +def chain_records(u: mda.Universe) -> list[ChainRecord]: + """ + Protein chains in topology order: one per segment, or per bonded fragment when a + topology puts several chains in one segment. Each chain must be a contiguous atom + block (true for GROMACS/CHARMM-GUI topologies); non-contiguous groups are skipped. + """ + protein = u.select_atoms("protein") + if protein.n_atoms == 0: + return [] + groups = [s.atoms.select_atoms("protein") for s in protein.segments] + groups = [g for g in groups if g.n_atoms] + if len(groups) <= 1: + try: + frags = [f.intersection(protein) for f in protein.fragments] + frags = [f for f in frags if f.select_atoms("name CA").n_atoms > 1] + if len(frags) > 1: + groups = frags + except Exception: # no bond information in this topology + pass + out = [] + for g in sorted(groups, key=lambda a: int(a.indices.min())): + idx = g.indices + if int(idx.max()) - int(idx.min()) + 1 != len(idx): + continue + res = g.residues + out.append(ChainRecord( + index=len(out), segid=str(g.segments[0].segid) if g.n_segments else "", + n_residues=int(res.n_residues), n_atoms=int(g.n_atoms), + atom_start=int(idx.min()), atom_stop=int(idx.max()) + 1, + resid_first=int(res.resids.min()), resid_last=int(res.resids.max()), + sequence="".join(_ONE_LETTER.get(r.upper(), "X") for r in res.resnames))) + return out + + def _count_protein_chains(u: mda.Universe) -> list[int]: """Return the residue count of each protein chain (by segment/fragment).""" protein = u.select_atoms("protein") @@ -259,6 +335,13 @@ def detect_system(topology: str | Path, coordinates: str | Path | None = None, ligand_resnames=sorted(set(ligand_resnames)), notes=notes, ) + try: + info.chains = chain_records(u) + except Exception as exc: # never let chain bookkeeping break detection + notes.append(f"chain records unavailable: {type(exc).__name__}") + resnames = [str(r).strip().upper() for r in u.residues.resnames] + for rn in sorted(set(resnames) & _IONS): + info.ion_counts[rn] = resnames.count(rn) info.selections = _build_selections(info) info.flags = _build_flags(info) info.system_type = _classify_system(info, peptide_cutoff) diff --git a/moldynx/io/discovery.py b/moldynx/io/discovery.py index 64bf16e..524f228 100644 --- a/moldynx/io/discovery.py +++ b/moldynx/io/discovery.py @@ -1,120 +1,459 @@ """ -Recursive discovery of GROMACS (and related) simulation files. +Recursive discovery of GROMACS simulation files -- decided by evidence, not size. -The user only provides a directory; this module finds trajectories, topologies, -structures, energy files, index and topology-parameter files, resolves the best -candidate for each semantic role, and (when several trajectories exist) supports -an interactive choice. +The user provides a directory. This module + +1. classifies every file by **stage** (setup / minimisation / NVT / NPT / + production) and **kind** (tpr, xtc, edr, log, mdp, ...), ignoring backups, + caches and folders that hold *earlier analysis outputs*; +2. picks the canonical production run from **evidence**: the trajectory's atom + count must equal the run input's, the longest complete, uniformly spaced + trajectory wins, and the production log's final step is recorded -- file + size and names are only a last-resort tie-breaker, and are labelled so; +3. records every piece of evidence, warning and ambiguity on the returned + :class:`FileSet`, which intake/validation turn into a report. + +Why not "largest file per role"? On a real CHARMM-GUI folder the equilibration +``.tpr`` files are larger than the production one and minimisation crash dumps +(``stepNc.pdb``) are the largest ``.pdb`` files, so size picks the wrong run. """ from __future__ import annotations +import json +import re from dataclasses import dataclass, field from pathlib import Path -# extension -> semantic category +from moldynx.io import gromacs + +# --------------------------------------------------------------------------- # +# Classification tables (data, so other naming schemes can be added) +# --------------------------------------------------------------------------- # _TRAJ_EXT = {".xtc", ".trr", ".dcd", ".nc", ".netcdf", ".h5", ".xyz"} -_TOPOLOGY_EXT = {".tpr", ".psf", ".prmtop", ".parm7", ".top"} # carry bonds/masses +_TOPOLOGY_EXT = {".tpr", ".psf", ".prmtop", ".parm7"} _STRUCTURE_EXT = {".gro", ".pdb", ".g96"} -_ENERGY_EXT = {".edr"} -_INDEX_EXT = {".ndx"} -_GMXTOP_EXT = {".top"} -_LOG_EXT = {".log"} + +# stage -> regex on the lower-case file name +STAGE_PATTERNS: list[tuple[str, str]] = [ + ("em", r"step4\.0|(^|[_.-])(em|min|minim|minimi[sz]ation)([_.-]|$)"), + ("nvt", r"step4\.1|(^|[_.-])nvt([_.-]|$)"), + ("npt", r"step4\.2|(^|[_.-])npt([_.-]|$)"), + ("production", r"step5|(^|[_.-])(prod|production|md)([_.-]|$)"), + ("setup", r"^step[123]_|^topol\.top$|^index\.ndx$|charmm-?gui|^readme$"), +] +STAGES = ("setup", "em", "nvt", "npt", "production") + +# folders that contain derived / earlier-analysis outputs, never inputs +_DERIVED_DIR = re.compile(r"analysis|diagnostic|^results?$|_results$|^mmpbsa|^__pycache__$|^\.git$", + re.I) +_CRASH_DUMP = re.compile(r"^step-?\d+[bc]\.pdb$", re.I) +_BACKUP = re.compile(r"^#.*#$") +_CACHE = re.compile(r"_offsets\.npz$|\.lock$", re.I) +_EXTEND_HINT = re.compile(r"(ext|extend|extended|\d+ns)(?=\.tpr$)|_ext[_.]", re.I) + + +def classify_stage(name: str) -> str | None: + low = name.lower() + for stage, pat in STAGE_PATTERNS: + if re.search(pat, low): + return stage + return None @dataclass class FileSet: - """Resolved semantic file roles for a simulation.""" + """Resolved semantic file roles for a simulation, with the evidence behind them.""" directory: Path trajectory: Path | None = None - topology: Path | None = None # best for MDAnalysis (bonds/masses) - structure: Path | None = None # .gro/.pdb single frame - energy: Path | None = None # .edr + topology: Path | None = None # the run input that produced the trajectory + structure: Path | None = None # single-frame .gro/.pdb (never a crash dump) + energy: Path | None = None # production .edr index: Path | None = None # .ndx - gmx_top: Path | None = None # .top (#includes) - log: Path | None = None # md .log + gmx_top: Path | None = None # topol.top (#includes) + toppar: Path | None = None # folder the topol.top includes from + log: Path | None = None # production md .log all_trajectories: list[Path] = field(default_factory=list) all_files: dict[str, list[Path]] = field(default_factory=dict) + # -- new in 0.3 ------------------------------------------------------- # + stages: dict[str, dict[str, list[Path]]] = field(default_factory=dict) + mdp: dict[str, Path] = field(default_factory=dict) # stage -> .mdp + job_scripts: list[Path] = field(default_factory=list) + crash_dumps: list[Path] = field(default_factory=list) + setup_package: list[Path] = field(default_factory=list) # CHARMM-GUI zip/tgz + ignored: list[tuple[str, str]] = field(default_factory=list) + unclassified: list[Path] = field(default_factory=list) + evidence: dict = field(default_factory=dict) + warnings: list[str] = field(default_factory=list) + ambiguities: list[str] = field(default_factory=list) + deep: bool = False def available_keys(self) -> set[str]: """Semantic keys that are present (used to gate analyses).""" keys = set() - for role in ("trajectory", "topology", "structure", "energy", "index", "gmx_top"): + for role in ("trajectory", "topology", "structure", "energy", "index", "gmx_top", + "toppar", "log"): if getattr(self, role) is not None: keys.add(role) - # 'topology' also satisfies analyses that only need coordinates. if self.topology or self.structure: keys.add("topology") + for stage in ("em", "nvt", "npt"): + files = self.stages.get(stage, {}) + if files.get("log") or files.get("edr"): + keys.add(stage) + if any(self.stages.get(s, {}).get("tpr") for s in ("em", "nvt", "npt")): + keys.add("stage_tprs") + if self.job_scripts: + keys.add("job_scripts") + if self.mdp: + keys.add("mdp") + if self.log is not None: + keys.add("production_log") return keys + def stage_file(self, stage: str, kind: str) -> Path | None: + files = self.stages.get(stage, {}).get(kind, []) + return files[0] if files else None + def to_dict(self) -> dict: - return {role: (str(getattr(self, role)) if getattr(self, role) else None) - for role in ("directory", "trajectory", "topology", "structure", - "energy", "index", "gmx_top", "log")} + out = {role: (str(getattr(self, role)) if getattr(self, role) else None) + for role in ("directory", "trajectory", "topology", "structure", + "energy", "index", "gmx_top", "toppar", "log")} + out["stages"] = {s: {k: [str(p) for p in v] for k, v in d.items()} + for s, d in self.stages.items()} + out["mdp"] = {k: str(v) for k, v in self.mdp.items()} + out["job_scripts"] = [str(p) for p in self.job_scripts] + out["crash_dumps"] = len(self.crash_dumps) + out["ignored"] = [list(x) for x in self.ignored] + out["unclassified"] = [str(p) for p in self.unclassified] + out["warnings"] = list(self.warnings) + out["ambiguities"] = list(self.ambiguities) + return out -def _score_topology(p: Path) -> int: - """Prefer .tpr (full parameters) > .psf/.prmtop > .pdb/.gro.""" - ext = p.suffix.lower() - return {".tpr": 5, ".psf": 4, ".prmtop": 4, ".parm7": 4, - ".pdb": 2, ".gro": 2}.get(ext, 1) +# --------------------------------------------------------------------------- # +# scanning +# --------------------------------------------------------------------------- # +def _is_derived_dir(d: Path) -> str | None: + if _DERIVED_DIR.search(d.name): + return f"folder name '{d.name}' marks derived/analysis output" + man = d / "manifest.json" + if man.exists(): + try: + data = json.loads(man.read_text(encoding="utf-8")) + if "moldynx_version" in data or "mdforge_version" in data: + return "contains a MolDynX/mdforge run manifest" + except (OSError, ValueError): + pass + return None -def _largest(paths: list[Path]) -> Path | None: - return max(paths, key=lambda p: p.stat().st_size) if paths else None +def _walk(root: Path, include_dirs: set[Path], fs: FileSet) -> list[Path]: + files: list[Path] = [] + stack = [root] + while stack: + d = stack.pop() + try: + entries = sorted(d.iterdir()) + except OSError as exc: + fs.warnings.append(f"cannot read folder {d}: {exc}") + continue + for p in entries: + if p.is_dir(): + reason = None if p.resolve() in include_dirs else _is_derived_dir(p) + if reason: + fs.ignored.append((str(p), reason)) + else: + stack.append(p) + elif p.is_file(): + files.append(p) + return files -def discover_files(directory: str | Path) -> FileSet: - """Recursively scan ``directory`` and resolve the best file for each role.""" +def _script_mentions_gromacs(p: Path) -> bool: + try: + text = p.read_text(encoding="utf-8", errors="replace") + except OSError: + return False + return bool(re.search(r"\b(grompp|mdrun|convert-tpr|trjconv)\b", text)) + + +def discover_files(directory: str | Path, deep: bool = True, + include_dirs: list[str | Path] | None = None) -> FileSet: + """ + Recursively scan ``directory`` and resolve the canonical file for each role. + + ``deep`` reads trajectory frame headers, run-input headers and logs (read-only; + a 6 GB XTC takes seconds). With ``deep=False`` only names/stages are used and + every choice is marked unverified. + """ directory = Path(directory) if not directory.exists(): raise FileNotFoundError(f"Input directory does not exist: {directory}") + fs = FileSet(directory=directory, deep=deep) + incl = {Path(p).resolve() for p in (include_dirs or [])} + files = _walk(directory, incl, fs) by_ext: dict[str, list[Path]] = {} - for p in sorted(directory.rglob("*")): - if p.is_file(): - by_ext.setdefault(p.suffix.lower(), []).append(p) - - traj = sorted([p for ext in _TRAJ_EXT for p in by_ext.get(ext, [])]) - topo_candidates = [p for ext in _TOPOLOGY_EXT | _STRUCTURE_EXT - for p in by_ext.get(ext, [])] - # best topology: highest score, then largest (bigger .tpr = production run) - topology = None - if topo_candidates: - topology = sorted(topo_candidates, - key=lambda p: (_score_topology(p), p.stat().st_size), - reverse=True)[0] - structure = _largest([p for ext in _STRUCTURE_EXT for p in by_ext.get(ext, [])]) - - fs = FileSet( - directory=directory, - trajectory=_largest(traj), # default: the largest (usually production) - topology=topology, - structure=structure, - energy=_largest([p for ext in _ENERGY_EXT for p in by_ext.get(ext, [])]), - index=_largest([p for ext in _INDEX_EXT for p in by_ext.get(ext, [])]), - gmx_top=_largest([p for ext in _GMXTOP_EXT for p in by_ext.get(ext, [])]), - log=_largest([p for ext in _LOG_EXT for p in by_ext.get(ext, [])]), - all_trajectories=traj, - all_files={k: v for k, v in by_ext.items()}, - ) + stages: dict[str, dict[str, list[Path]]] = {s: {} for s in STAGES} + for p in files: + name = p.name + if _BACKUP.match(name): + fs.ignored.append((str(p), "GROMACS backup (#…#)")) + continue + if _CACHE.search(name): + fs.ignored.append((str(p), "cache/lock file")) + continue + ext = p.suffix.lower() + by_ext.setdefault(ext, []).append(p) + if _CRASH_DUMP.match(name): + fs.crash_dumps.append(p) + continue + if ext in (".zip", ".tgz", ".gz") and re.search(r"charmm|gromacs", name, re.I): + fs.setup_package.append(p) + continue + if ext in (".sh", ".slurm", ".pbs", ".job") and _script_mentions_gromacs(p): + fs.job_scripts.append(p) + continue + if p.parent.name.lower() == "toppar" and ext == ".itp": + stages["setup"].setdefault("itp", []).append(p) + continue + stage = classify_stage(name) + kind = ext.lstrip(".") or name.lower() + if stage is None: + if ext in _TRAJ_EXT | _TOPOLOGY_EXT | {".edr", ".log", ".gro", ".mdp", ".top", ".ndx"}: + fs.unclassified.append(p) + continue + stages[stage].setdefault(kind, []).append(p) + + fs.stages = {s: d for s, d in stages.items() if d} + fs.all_files = by_ext + fs.all_trajectories = sorted(p for e in _TRAJ_EXT for p in by_ext.get(e, [])) + for stage in STAGES: + mdps = fs.stages.get(stage, {}).get("mdp", []) + # mdout.mdp is grompp's record; the CHARMM-GUI stage file is the input + inputs = [m for m in mdps if m.name.lower() != "mdout.mdp"] or mdps + if inputs: + fs.mdp[stage] = sorted(inputs, key=lambda m: (m.name.lower() == "mdout.mdp", str(m)))[0] + for p in by_ext.get(".mdp", []): + if p.name.lower() == "mdout.mdp": + fs.evidence.setdefault("mdout_mdp", []).append(str(p)) + + _resolve_production(fs) + _resolve_setup(fs) + _check_job_script_references(fs, files) return fs -def pick_trajectory(fs: FileSet, interactive: bool = False, - ask=None) -> Path | None: - """ - Choose the trajectory to analyse. +# --------------------------------------------------------------------------- # +# canonical production run +# --------------------------------------------------------------------------- # +def _candidates(fs: FileSet, kinds: set[str]) -> list[Path]: + prod = [p for k in kinds for p in fs.stages.get("production", {}).get(k, [])] + if prod: + return sorted(prod) + return sorted(p for p in fs.unclassified if p.suffix.lower().lstrip(".") in kinds) - If several trajectories are found and ``interactive`` is set, ``ask`` (a - callable returning the selected index) is used; otherwise the largest is - kept and a note is recorded by the caller. + +def _resolve_production(fs: FileSet) -> None: + ev = fs.evidence + trajs = _candidates(fs, {e.lstrip(".") for e in _TRAJ_EXT}) + tprs = _candidates(fs, {"tpr"}) + other_tops = _candidates(fs, {"psf", "prmtop", "parm7"}) + # --- evidence ------------------------------------------------------------ # + traj_info = {str(p): gromacs.scan_xtc(p) if (fs.deep and p.suffix.lower() == ".xtc") else None + for p in trajs} + tpr_info = {str(p): gromacs.tpr_header(p) if fs.deep else None for p in tprs} + ev["trajectory_candidates"] = {k: (v.to_dict() if v else None) for k, v in traj_info.items()} + ev["tpr_candidates"] = {k: (v.to_dict() if v else None) for k, v in tpr_info.items()} + + readable = {k: v for k, v in traj_info.items() if v and v.readable and not v.truncated} + verified = bool(readable) + if readable: + tpr_atoms = {k: v.natoms for k, v in tpr_info.items() if v and v.readable} + matched = {k: v for k, v in readable.items() + if not tpr_atoms or v.natoms in tpr_atoms.values()} + if tpr_atoms and not matched: + fs.ambiguities.append( + "no production trajectory has the same atom count as any production run input " + f"(trajectories: { {Path(k).name: v.natoms for k, v in readable.items()} }; " + f"run inputs: { {Path(k).name: n for k, n in tpr_atoms.items()} })") + matched = readable + span = {k: (v.t_last_ps or 0) - (v.t_first_ps or 0) for k, v in matched.items()} + best = max(span.values()) + winners = [k for k, s in span.items() if abs(s - best) < 1e-6] + if len(winners) > 1: + sizes = {Path(k).name: Path(k).stat().st_size for k in winners} + fs.ambiguities.append(f"{len(winners)} production trajectories cover the same span " + f"({best:.0f} ps): {sizes}") + chosen = sorted(winners, key=lambda k: Path(k).stat().st_size, reverse=True)[0] + fs.trajectory = Path(chosen) + t = matched[chosen] + ev["trajectory_choice"] = (f"longest complete trajectory with a matching atom count: " + f"{t.n_frames} frames, {t.t_first_ps:g}-{t.t_last_ps:g} ps, " + f"dt {t.dt_ps:g} ps, uniform={t.uniform_spacing}, " + f"{t.natoms} atoms") + for k, v in traj_info.items(): + if v and v.truncated: + fs.warnings.append(f"trajectory {Path(k).name} ends in an incomplete frame") + # --- run input: same atom count; extension hint only breaks ties -------- # + same = [k for k, n in tpr_atoms.items() if n == t.natoms] + if same: + fs.topology = Path(_pick_tpr(same, fs)) + ev["topology_choice"] = (f"run input with the trajectory's atom count ({t.natoms})" + + ("" if len(same) == 1 else + f"; {len(same)} candidates with identical atom counts " + f"({', '.join(Path(s).name for s in same)}) -- " + "the extended/latest one was taken, its inputrec is " + "compared in the provenance audit")) + if len(same) > 1: + fs.warnings.append(ev["topology_choice"]) + elif trajs: + # unreadable (or not XTC) -> fall back to stage + size, labelled unverified + fs.trajectory = max(trajs, key=lambda p: p.stat().st_size) + ev["trajectory_choice"] = "UNVERIFIED: largest production-stage trajectory (headers not read)" + if fs.topology is None and tprs: + fs.topology = Path(_pick_tpr([str(p) for p in tprs], fs)) + ev["topology_choice"] = ("UNVERIFIED: production-stage run input chosen by stage/name " + "(atom counts not compared)") if not verified else \ + ev.get("topology_choice", "production-stage run input") + if len(tprs) > 1: + fs.warnings.append(f"{len(tprs)} production run inputs " + f"({', '.join(p.name for p in tprs)}); took {fs.topology.name}") + if fs.topology is None and other_tops: + fs.topology = other_tops[0] + ev["verified"] = verified + + # --- energy / log / structure / index from the production stage --------- # + prod = fs.stages.get("production", {}) + edrs = prod.get("edr", []) + fs.energy = max(edrs, key=lambda p: p.stat().st_size) if edrs else None + logs = prod.get("log", []) + if logs: + fs.log = max(logs, key=lambda p: p.stat().st_size) + if fs.deep: + try: + info = gromacs.parse_log(fs.log) + ev["production_log"] = { + "path": str(fs.log), "sessions": info.n_sessions, + "last_statistics_steps": info.last_statistics_steps, + "simulated_ps": info.simulated_ps, + "first_block_nsteps": info.mdp.get("nsteps"), + "last_block_nsteps": info.mdp_last.get("nsteps"), + "finished": info.finished[-1:] or None, + } + try: + declared = int(float(info.mdp.get("nsteps", "-1"))) + except ValueError: + declared = -1 + ran = (info.last_statistics_steps or 1) - 1 + if declared >= 0 and ran > declared: + note = (f"the run input printed in the log declares nsteps = {declared:,} but " + f"{ran:,} steps were run: the run was extended (e.g. convert-tpr " + f"-extend) and continued with -cpi/-append, which does not reprint " + f"the parameters") + ev["production_log"]["extended"] = note + fs.warnings.append(note) + t = fs.trajectory and traj_info.get(str(fs.trajectory)) + if t and t.readable and info.simulated_ps is not None: + span = (t.t_last_ps or 0) - (t.t_first_ps or 0) + if abs(span - info.simulated_ps) > max(1.0, t.dt_ps or 0): + fs.warnings.append( + f"trajectory span {span:g} ps differs from the production log " + f"({info.simulated_ps:g} ps simulated)") + except (OSError, ValueError) as exc: + fs.warnings.append(f"could not parse production log {fs.log.name}: {exc}") + gros = [p for p in prod.get("gro", []) + prod.get("pdb", [])] + setup_structs = [p for k in ("gro", "pdb") for p in fs.stages.get("setup", {}).get(k, [])] + fs.structure = (sorted(gros)[0] if gros else (sorted(setup_structs)[0] if setup_structs + else None)) + ndx = prod.get("ndx", []) + fs.stages.get("setup", {}).get("ndx", []) + fs.index = ndx[0] if ndx else None + + +def _pick_tpr(paths: list[str], fs: FileSet) -> str: + """Among run inputs of the same run: prefer an extension (ext/extend/Nns), then newest.""" + hinted = [p for p in paths if _EXTEND_HINT.search(Path(p).name)] + pool = hinted or paths + return sorted(pool, key=lambda p: Path(p).stat().st_mtime, reverse=True)[0] + + +# --------------------------------------------------------------------------- # +# setup files (topol.top + toppar) and job-script references +# --------------------------------------------------------------------------- # +def _resolve_setup(fs: FileSet) -> None: + tops = [p for s in STAGES for p in fs.stages.get(s, {}).get("top", [])] + \ + [p for p in fs.unclassified if p.suffix.lower() == ".top"] + if tops: + ref = fs.topology.parent if fs.topology else fs.directory + + def distance(p: Path) -> tuple[int, int]: + try: + p.relative_to(ref) + inside = 0 + except ValueError: + inside = 1 + return inside, len(p.parts) + fs.gmx_top = sorted(tops, key=lambda p: (p.name.lower() != "topol.top", *distance(p)))[0] + tp = fs.gmx_top.parent / "toppar" + fs.toppar = tp if tp.is_dir() else None + includes = [] + try: + includes = re.findall(r'#include\s+"([^"]+)"', + fs.gmx_top.read_text(encoding="utf-8", errors="replace")) + except OSError: + pass + missing = [i for i in includes if not (fs.gmx_top.parent / i).exists()] + fs.evidence["gmx_top_includes"] = {"n": len(includes), "missing": missing} + if missing: + fs.warnings.append(f"{fs.gmx_top.name} includes files that are not present: " + f"{', '.join(missing[:6])}{' …' if len(missing) > 6 else ''}") + + +_ASSIGN = re.compile(r'^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)=["\']?([^"\'\s#]*)["\']?') +_FILE_TOKEN = re.compile(r"[^\s\"'<>|;]+\.(?:tpr|mdp|gro|top|ndx|cpt|pdb)\b") + + +def _check_job_script_references(fs: FileSet, files: list[Path]) -> None: + """Report inputs that job scripts reference but that are not in this folder.""" + names = {p.name for p in files} + missing: dict[str, list[str]] = {} + for script in fs.job_scripts: + try: + lines = script.read_text(encoding="utf-8", errors="replace").splitlines() + except OSError: + continue + env: dict[str, str] = {} + for line in lines: + m = _ASSIGN.match(line) + if m: + env[m.group(1)] = m.group(2) + continue + if not re.search(r"\b(grompp|mdrun|convert-tpr)\b", line): + continue + expanded = re.sub(r"\$\{?([A-Za-z_][A-Za-z0-9_]*)\}?", + lambda mm: env.get(mm.group(1), mm.group(0)), line) + outputs = set(re.findall(r"-o\s+(\S+)", expanded)) + for tok in _FILE_TOKEN.findall(expanded): + if tok in outputs or "$" in tok: + continue + base = Path(tok).name + if base not in names: + missing.setdefault(base, []) + if script.name not in missing[base]: + missing[base].append(script.name) + if missing: + fs.evidence["job_script_inputs_not_found"] = missing + + +def pick_trajectory(fs: FileSet, interactive: bool = False, ask=None) -> Path | None: + """ + Choose the trajectory to analyse. When discovery found the choice ambiguous and + ``interactive`` is set, ``ask(question, options) -> index`` decides. """ - if len(fs.all_trajectories) <= 1: - return fs.trajectory - if interactive and ask is not None: - options = [f"{p.name} ({p.stat().st_size/1e6:.1f} MB)" - for p in fs.all_trajectories] - idx = ask("Multiple trajectories found — which one to analyse?", options) + if interactive and ask is not None and fs.ambiguities and len(fs.all_trajectories) > 1: + options = [f"{p.name} ({p.stat().st_size / 1e6:.1f} MB)" for p in fs.all_trajectories] + idx = ask("Several trajectories are plausible — which one is the production run?", + options) return fs.all_trajectories[idx] - return fs.trajectory # default: largest + return fs.trajectory diff --git a/moldynx/io/gromacs.py b/moldynx/io/gromacs.py new file mode 100644 index 0000000..aa86115 --- /dev/null +++ b/moldynx/io/gromacs.py @@ -0,0 +1,387 @@ +""" +Read-only readers for GROMACS files, used as *evidence* by intake and audits. + +Everything here only reads. In particular the XTC scanner walks frame headers +without building MDAnalysis offset caches, which would write hidden ``.npz`` +files into the (raw, provenance-critical) simulation folder. + +* :func:`parse_log` -- mdrun ``.log``: sessions, the ``Input Parameters`` + dump, coupling groups, minimisation outcome, + warnings, timings. Tolerates trimmed logs. +* :func:`parse_mdp` -- ``.mdp`` key/value pairs. +* :func:`scan_xtc` -- atoms, frames, times, steps, spacing of an ``.xtc``. +* :func:`tpr_header` -- version, atom count, velocities flag of a ``.tpr``. +* :func:`find_gmx` / :func:`run_gmx` -- a GROMACS binary, native or through WSL, + for evidence that needs ``gmx dump`` / ``gmx check``. +""" + +from __future__ import annotations + +import os +import re +import shutil +import struct +import subprocess +import tempfile +from dataclasses import asdict, dataclass, field +from datetime import datetime +from pathlib import Path + +# --------------------------------------------------------------------------- # +# mdrun log +# --------------------------------------------------------------------------- # +_MINIMIZERS = r"(Steepest Descents|Polak-Ribiere Conjugate Gradients|Low-Memory BFGS Minimizer)" +_TIMESTAMP = "%a %b %d %H:%M:%S %Y" + + +@dataclass +class MinimizationResult: + algorithm: str | None = None + outcome: str | None = None # e.g. "converged to Fmax < 1000" + reached_emtol: bool | None = None # False when stopped on machine precision / max steps + steps: int | None = None + potential: float | None = None # kJ/mol + fmax: float | None = None # kJ/mol/nm + fmax_atom: int | None = None # 1-based atom number as printed by GROMACS + fnorm: float | None = None + + +@dataclass +class LogInfo: + path: str + gromacs_version: str | None = None + executable: str | None = None + working_dir: str | None = None + commands: list[str] = field(default_factory=list) # one per mdrun session + started: list[str] = field(default_factory=list) # ISO timestamps (cluster clock) + finished: list[str] = field(default_factory=list) + n_sessions: int = 0 + mdp: dict[str, str] = field(default_factory=dict) # first Input Parameters block + mdp_last: dict[str, str] = field(default_factory=dict) # last block (e.g. after -extend) + grpopts: dict[str, list[str]] = field(default_factory=dict) + last_statistics_steps: int | None = None + performance_ns_day: list[float] = field(default_factory=list) + wall_s: list[float] = field(default_factory=list) + counts: dict[str, int] = field(default_factory=dict) + minimization: MinimizationResult | None = None + trimmed: bool = False # fixture / excerpt marker seen + + # -- convenience ------------------------------------------------------ # + @property + def is_minimization(self) -> bool: + return self.mdp.get("integrator", "") in ("steep", "cg", "l-bfgs") + + def value(self, key: str, default=None): + """First-block MDP value as float if numeric, else string.""" + v = self.mdp.get(key) + if v is None: + return default + try: + return float(v) + except ValueError: + return v + + @property + def ref_t(self) -> list[float]: + return [float(x) for x in self.grpopts.get("ref-t", [])] + + @property + def simulated_ps(self) -> float | None: + dt, n = self.value("dt"), self.last_statistics_steps + if isinstance(dt, float) and n: + return (n - 1) * dt + return None + + def to_dict(self) -> dict: + return asdict(self) + + +def _parse_param_block(lines: list[str], start: int) -> tuple[dict, dict, int]: + """Parse an ``Input Parameters:`` dump beginning at ``start``; returns (mdp, grpopts, end).""" + mdp: dict[str, str] = {} + grp: dict[str, list[str]] = {} + in_grp = False + i = start + 1 + while i < len(lines): + line = lines[i] + if line.startswith("grpopts:"): + in_grp = True + elif in_grp: + if not line.strip(): + return mdp, grp, i + m = re.match(r"\s+([A-Za-z-]+):?\s+(.+?)\s*$", line) + if m and m.group(1) in ("nrdf", "ref-t", "tau-t", "annealing", "annealing-npoints"): + grp[m.group(1)] = m.group(2).split() + else: + m = re.match(r"\s+([A-Za-z0-9_-]+)\s+=\s+(.+?)\s*$", line) + if m and m.group(1) not in mdp: + mdp[m.group(1)] = m.group(2) + if "ref-p (3x3)" in line or "compressibility (3x3)" in line: + key = "ref-p_xx" if "ref-p" in line else "compressibility_xx" + if i + 1 < len(lines): + mm = re.search(r"\{\s*([-\d.e+]+)", lines[i + 1]) + if mm and key not in mdp: + mdp[key] = mm.group(1) + i += 1 + return mdp, grp, i + + +def _iso(stamp: str) -> str | None: + try: + return datetime.strptime(" ".join(stamp.split()), _TIMESTAMP).isoformat() + except ValueError: + return None + + +def parse_log(path: str | Path) -> LogInfo: + """Parse a GROMACS ``mdrun`` log (full or trimmed).""" + path = Path(path) + text = path.read_text(encoding="utf-8", errors="replace") + lines = text.splitlines() + info = LogInfo(path=str(path)) + info.trimmed = "lines trimmed by" in text + + m = re.search(r"GROMACS version:\s+(\S+)", text) + info.gromacs_version = m.group(1) if m else None + m = re.search(r"Executable:\s+(\S+)", text) + info.executable = m.group(1) if m else None + m = re.search(r"Working dir:\s+(\S+)", text) + info.working_dir = m.group(1) if m else None + info.commands = [c.strip() for c in re.findall(r"Command line:\n\s+(.+)", text)] + info.started = [s for s in (_iso(x) for x in re.findall(r"Started mdrun on rank 0 (.+)", text)) if s] + info.finished = [s for s in (_iso(x) for x in re.findall(r"Finished mdrun on rank 0 (.+)", text)) if s] + info.n_sessions = len(re.findall(r"Started mdrun on rank 0", text)) or len(info.commands) + + blocks = [i for i, line in enumerate(lines) if line.startswith("Input Parameters:")] + if blocks: + info.mdp, info.grpopts, _ = _parse_param_block(lines, blocks[0]) + info.mdp_last, _, _ = _parse_param_block(lines, blocks[-1]) + + steps = re.findall(r"Statistics over (\d+) steps", text) + info.last_statistics_steps = int(steps[-1]) if steps else None + info.performance_ns_day = [float(x) for x in re.findall(r"Performance:\s+([\d.]+)", text)] + info.wall_s = [float(x) for x in re.findall(r"Time:\s+[\d.]+\s+([\d.]+)\s+[\d.]+", text)] + info.counts = { + "lincs_warnings": len(re.findall(r"LINCS WARNING", text)), + "wrote_pdb": len(re.findall(r"Wrote pdb", text)), + "constraint_errors": len(re.findall(r"onstraint error", text)), + "warnings": len(re.findall(r"(?m)^WARNING", text)), + "fatal_errors": len(re.findall(r"Fatal error", text)), + } + + if info.is_minimization or re.search(_MINIMIZERS + r" (converged|did not converge)", text) \ + or "Energy minimization" in text: + em = MinimizationResult() + mm = re.search(_MINIMIZERS + r" (converged to .+?) in (\d+) steps", text) + if mm: + em.algorithm, em.outcome, em.steps = mm.group(1), mm.group(2), int(mm.group(3)) + elif "reached the maximum number of steps" in text: + em.outcome = "reached the maximum number of steps" + em.reached_emtol = bool(em.outcome) and "machine precision" not in em.outcome \ + and "did not reach the requested Fmax" not in text \ + and "maximum number of steps" not in (em.outcome or "") + for key, pat in (("potential", r"Potential Energy\s+=\s+(\S+)"), + ("fmax", r"Maximum force\s+=\s+(\S+)"), + ("fnorm", r"Norm of force\s+=\s+(\S+)")): + found = re.findall(pat, text) + if found: + setattr(em, key, float(found[-1])) + found = re.findall(r"Maximum force\s+=\s+\S+ on atom (\d+)", text) + em.fmax_atom = int(found[-1]) if found else None + info.minimization = em + return info + + +# --------------------------------------------------------------------------- # +# mdp +# --------------------------------------------------------------------------- # +def parse_mdp(path: str | Path) -> dict[str, str]: + """Key/value pairs of an ``.mdp`` (comments stripped, ``_`` normalised to ``-``).""" + out: dict[str, str] = {} + for raw in Path(path).read_text(encoding="utf-8", errors="replace").splitlines(): + line = raw.split(";", 1)[0].strip() + if "=" in line: + k, v = (s.strip() for s in line.split("=", 1)) + out[k.replace("_", "-").lower()] = v + return out + + +# --------------------------------------------------------------------------- # +# xtc +# --------------------------------------------------------------------------- # +@dataclass +class XtcInfo: + path: str + readable: bool + natoms: int | None = None + n_frames: int = 0 + t_first_ps: float | None = None + t_last_ps: float | None = None + dt_ps: float | None = None # modal spacing + uniform_spacing: bool | None = None + step_first: int | None = None + step_last: int | None = None + truncated: bool = False # last frame incomplete + error: str | None = None + + def to_dict(self) -> dict: + return asdict(self) + + +_XTC_MAGIC = 1995 + + +def scan_xtc(path: str | Path, max_frames: int | None = None) -> XtcInfo: + """ + Walk the frame headers of an XTC file (read-only; no offset cache written). + + Frame layout (XDR, big-endian): magic, natoms, step, time, box[9], natoms, + then for natoms > 9: precision, minint[3], maxint[3], smallidx, nbytes and + nbytes of compressed data padded to 4 bytes. + """ + path = Path(path) + info = XtcInfo(path=str(path), readable=False) + try: + size = path.stat().st_size + with open(path, "rb") as fh: + times, steps, pos = [], [], 0 + while pos < size: + head = fh.read(92) + if len(head) < 56: + info.truncated = len(head) > 0 + break + magic, natoms, step = struct.unpack(">iii", head[:12]) + (time,) = struct.unpack(">f", head[12:16]) + if magic != _XTC_MAGIC: + info.error = f"bad magic {magic} at byte {pos}" + break + if natoms <= 9: + nxt = pos + 56 + natoms * 12 + else: + if len(head) < 92: + info.truncated = True + break + (nbytes,) = struct.unpack(">i", head[88:92]) + nxt = pos + 92 + ((nbytes + 3) // 4) * 4 + if nxt > size: + info.truncated = True + break + info.natoms = natoms + times.append(float(time)) + steps.append(int(step)) + pos = nxt + fh.seek(pos) + if max_frames and len(times) >= max_frames: + break + info.n_frames = len(times) + if times: + info.readable = True + info.t_first_ps, info.t_last_ps = times[0], times[-1] + info.step_first, info.step_last = steps[0], steps[-1] + if len(times) > 1: + diffs = [round(b - a, 3) for a, b in zip(times, times[1:])] + info.dt_ps = max(set(diffs), key=diffs.count) + info.uniform_spacing = all(abs(d - info.dt_ps) < 1e-3 for d in diffs) + except OSError as exc: + info.error = str(exc) + return info + + +# --------------------------------------------------------------------------- # +# tpr +# --------------------------------------------------------------------------- # +@dataclass +class TprHeader: + path: str + readable: bool + version: str | None = None + natoms: int | None = None + n_tcoupl_groups: int | None = None + has_velocities: bool | None = None + has_box: bool | None = None + error: str | None = None + + def to_dict(self) -> dict: + return asdict(self) + + +def tpr_header(path: str | Path) -> TprHeader: + """Header of a ``.tpr`` (reads only the first few KB).""" + path = Path(path) + out = TprHeader(path=str(path), readable=False) + try: + from MDAnalysis.topology.tpr import utils as tpr_utils + with open(path, "rb") as fh: + data = tpr_utils.TPXUnpacker(fh.read(8192)) + th = tpr_utils.read_tpxheader(data) + out.readable = True + out.version = th.ver_str.decode(errors="replace").replace("VERSION", "").strip() \ + if isinstance(th.ver_str, bytes) else str(th.ver_str) + out.natoms, out.n_tcoupl_groups = int(th.natoms), int(th.ngtc) + out.has_velocities, out.has_box = bool(th.bV), bool(th.bBox) + except Exception as exc: # unreadable / not a TPR / fake test file + out.error = f"{type(exc).__name__}: {exc}" + return out + + +# --------------------------------------------------------------------------- # +# GROMACS binary (native or WSL) +# --------------------------------------------------------------------------- # +@dataclass +class Gmx: + kind: str # "native" | "wsl" + command: list[str] # prefix, e.g. ["gmx"] or ["wsl.exe", "-d", "Ubuntu", "--"] + version: str | None = None + + +def windows_to_wsl(path: str | Path) -> str: + """``E:\\a\\b`` -> ``/mnt/e/a/b`` (paths already POSIX are returned unchanged).""" + s = str(path) + m = re.match(r"^([A-Za-z]):[\\/](.*)$", s) + if not m: + return s.replace("\\", "/") + return f"/mnt/{m.group(1).lower()}/{m.group(2).replace(chr(92), '/')}" + + +def find_gmx(prefer_wsl_distro: str | None = None) -> Gmx | None: + """Locate GROMACS: ``gmx``/``gmx_mpi`` on PATH, else (Windows) inside WSL.""" + for name in ("gmx", "gmx_mpi"): + exe = shutil.which(name) + if exe: + return Gmx("native", [exe]) + if os.name == "nt" and shutil.which("wsl.exe"): + distro = ["-d", prefer_wsl_distro] if prefer_wsl_distro else [] + try: + r = subprocess.run(["wsl.exe", *distro, "--", "bash", "-lc", "command -v gmx"], + capture_output=True, text=True, timeout=60) + if r.returncode == 0 and r.stdout.strip(): + return Gmx("wsl", ["wsl.exe", *distro, "--"]) + except (OSError, subprocess.SubprocessError): + return None + return None + + +def run_gmx(gmx: Gmx, args: list[str], stdin: str | None = None, + timeout: int = 3600) -> subprocess.CompletedProcess: + """ + Run ``gmx ``. For WSL, the command is written to a script file (inline + ``$variables`` and quoting do not survive ``wsl.exe`` reliably) and Windows + paths in ``args`` are translated to ``/mnt//...``. + """ + if gmx.kind == "native": + return subprocess.run(gmx.command + args, input=stdin, capture_output=True, + text=True, timeout=timeout) + wargs = [windows_to_wsl(a) if re.match(r"^[A-Za-z]:[\\/]", a) else a for a in args] + quoted = " ".join("'" + a.replace("'", "'\"'\"'") + "'" for a in wargs) + script = f"#!/bin/bash\nset -o pipefail\ngmx {quoted}\n" + with tempfile.NamedTemporaryFile("w", suffix=".sh", delete=False, newline="\n") as fh: + fh.write(script) + spath = fh.name + try: + return subprocess.run(gmx.command + ["bash", windows_to_wsl(spath)], input=stdin, + capture_output=True, text=True, timeout=timeout) + finally: + try: + os.unlink(spath) + except OSError: + pass diff --git a/moldynx/io/intake.py b/moldynx/io/intake.py new file mode 100644 index 0000000..b662195 --- /dev/null +++ b/moldynx/io/intake.py @@ -0,0 +1,246 @@ +""" +Intake: the first stage of every run. + +Discovers the files (by evidence), validates them, summarises every simulation +stage from its log, measures the cluster-clock offset, reports what each missing +file disables, and writes + +* ``intake_manifest.json`` -- machine-readable, consumed by later stages; +* ``INTAKE_REPORT.md`` -- what a researcher reads before trusting the run. + +Nothing here modifies the simulation folder. +""" + +from __future__ import annotations + +import json +from dataclasses import dataclass, field +from datetime import datetime +from pathlib import Path + +from moldynx.io import gromacs +from moldynx.io.discovery import FileSet, discover_files +from moldynx.io.validation import ValidationResult, validate_fileset + +STAGE_LABEL = {"setup": "Setup", "em": "Energy minimisation", "nvt": "NVT equilibration", + "npt": "NPT equilibration", "production": "Production"} + + +@dataclass +class IntakeResult: + fileset: FileSet + validation: ValidationResult + stages: dict[str, dict] = field(default_factory=dict) + clock: dict = field(default_factory=dict) + system: dict | None = None + + @property + def ok(self) -> bool: + return self.validation.ok + + def to_dict(self) -> dict: + return {"fileset": self.fileset.to_dict(), "evidence": self.fileset.evidence, + "validation": {"ok": self.validation.ok, "errors": self.validation.errors, + "warnings": self.validation.warnings}, + "capabilities": self.validation.capabilities, + "stages": self.stages, "clock": self.clock, "system": self.system} + + +# --------------------------------------------------------------------------- # +def _stage_summary(fs: FileSet) -> dict[str, dict]: + out = {} + for stage in ("em", "nvt", "npt", "production"): + log = fs.log if stage == "production" else fs.stage_file(stage, "log") + files = {k: [str(p) for p in v] for k, v in fs.stages.get(stage, {}).items()} + entry: dict = {"files": files, "mdp": str(fs.mdp[stage]) if stage in fs.mdp else None} + if log is not None and fs.deep: + try: + info = gromacs.parse_log(log) + m = info.mdp + entry["log"] = { + "path": str(log), "gromacs": info.gromacs_version, + "sessions": info.n_sessions, "started": info.started[:1], + "finished": info.finished[-1:], "integrator": m.get("integrator"), + "dt_ps": m.get("dt"), "nsteps_first_block": m.get("nsteps"), + "nsteps_last_block": info.mdp_last.get("nsteps"), + "simulated_ps": info.simulated_ps, "tcoupl": m.get("tcoupl"), + "ref_t_K": info.ref_t, "pcoupl": m.get("pcoupl"), + "tau_p_ps": m.get("tau-p"), "continuation": m.get("continuation"), + "counts": info.counts, + "minimization": info.minimization.__dict__ if info.minimization else None, + } + except (OSError, ValueError) as exc: + entry["log"] = {"path": str(log), "error": str(exc)} + out[stage] = entry + return out + + +def _clock_offset(fs: FileSet) -> dict: + """Cluster clock (log 'Finished mdrun') minus local file mtime, per log, in hours.""" + logs = [fs.log] + [fs.stage_file(s, "log") for s in ("em", "nvt", "npt")] + rows = [] + for log in [p for p in logs if p is not None]: + try: + info = gromacs.parse_log(log) + except (OSError, ValueError): + continue + if not info.finished: + continue + cluster = datetime.fromisoformat(info.finished[-1]) + local = datetime.fromtimestamp(log.stat().st_mtime) + rows.append({"log": log.name, "cluster_finished": info.finished[-1], + "file_mtime": local.isoformat(timespec="seconds"), + "offset_h": round((cluster - local).total_seconds() / 3600, 3)}) + out: dict = {"per_log": rows} + if rows: + offs = [r["offset_h"] for r in rows] + out["spread_h"] = round(max(offs) - min(offs), 3) + out["constant"] = out["spread_h"] <= 0.1 # within 6 minutes + out["offset_h"] = round(sum(offs) / len(offs), 2) + return out + + +def run_intake(input_dir: str | Path, deep: bool = True, detect: bool = False, + allow_ambiguous: bool = False, + include_dirs: list[str | Path] | None = None) -> IntakeResult: + fs = discover_files(input_dir, deep=deep, include_dirs=include_dirs) + val = validate_fileset(fs, allow_ambiguous=allow_ambiguous) + res = IntakeResult(fileset=fs, validation=val) + res.stages = _stage_summary(fs) + if deep: + res.clock = _clock_offset(fs) + if res.clock.get("constant") is False: + val.warnings.append( + f"the cluster-clock offset varies by {res.clock['spread_h']} h between logs — " + "files may come from different runs or were copied at different times") + if detect and val.ok and fs.topology is not None: + from moldynx.core.system import detect_system + res.system = detect_system(fs.topology).to_dict() + return res + + +# --------------------------------------------------------------------------- # +# writers +# --------------------------------------------------------------------------- # +def _rel(p, root: Path) -> str: + if not p: + return "—" + try: + return Path(p).relative_to(root).as_posix() + except ValueError: + return str(p) + + +def write_intake(res: IntakeResult, out_dir: str | Path) -> list[Path]: + out_dir = Path(out_dir) + out_dir.mkdir(parents=True, exist_ok=True) + js = out_dir / "intake_manifest.json" + js.write_text(json.dumps(res.to_dict(), indent=2, default=str), encoding="utf-8") + md = out_dir / "INTAKE_REPORT.md" + md.write_text(render_report(res), encoding="utf-8") + return [js, md] + + +def render_report(res: IntakeResult) -> str: + fs, val = res.fileset, res.validation + root = fs.directory + ev = fs.evidence + L = [f"# Intake report — `{root.name}`", ""] + L.append(f"**Status:** {'ready' if val.ok else 'BLOCKED — resolve the errors below'}" + f" · evidence {'verified from file headers' if ev.get('verified') else 'NOT verified (names/stages only)'}") + L.append("") + if val.errors: + L += ["## Errors", ""] + [f"- {e}" for e in val.errors] + [""] + L += ["## Canonical production run", "", + "| Role | File | Why |", "|---|---|---|", + f"| trajectory | `{_rel(fs.trajectory, root)}` | {ev.get('trajectory_choice', '—')} |", + f"| run input | `{_rel(fs.topology, root)}` | {ev.get('topology_choice', '—')} |", + f"| energies | `{_rel(fs.energy, root)}` | production-stage energy file |", + f"| log | `{_rel(fs.log, root)}` | production-stage mdrun log |", + f"| structure | `{_rel(fs.structure, root)}` | production/setup structure (never a crash dump) |", + f"| topology (#include) | `{_rel(fs.gmx_top, root)}` | nearest `topol.top` to the run input |", + f"| force-field folder | `{_rel(fs.toppar, root)}` | next to `topol.top` |", ""] + pl = ev.get("production_log") + if pl: + L += [f"Production log: {pl['sessions']} mdrun session(s); final statistics over " + f"{pl['last_statistics_steps']} steps" + + (f" = {pl['simulated_ps'] / 1000:g} ns simulated" if pl.get("simulated_ps") else "") + + (f"; run input declared nsteps {pl['first_block_nsteps']} in the first session " + f"and {pl['last_block_nsteps']} in the last (extended)" + if pl.get("first_block_nsteps") != pl.get("last_block_nsteps") else "") + ".", ""] + if pl.get("extended"): + L += [f"> **Extended run:** {pl['extended']}.", ""] + L += ["## Stages", "", "| Stage | Log | Ensemble / settings | Outcome |", "|---|---|---|---|"] + for stage in ("em", "nvt", "npt", "production"): + s = res.stages.get(stage, {}) + lg = s.get("log") + if not lg or "error" in lg: + present = ", ".join(sorted(s.get("files", {}))) or "none" + L.append(f"| {STAGE_LABEL[stage]} | — | files present: {present} | not audited |") + continue + if lg.get("minimization"): + em = lg["minimization"] + outcome = (f"{em['outcome']} in {em['steps']} steps; Fmax {em['fmax']:.4g}" + if em.get("outcome") else "outcome not found") + if em.get("reached_emtol") is False: + outcome += " — **requested tolerance not reached**" + settings = f"{lg['integrator']}" + else: + settings = (f"{lg['integrator']}, dt {lg['dt_ps']} ps, {lg['tcoupl']} " + f"{'/'.join(str(t) for t in lg['ref_t_K'][:1])} K, pcoupl {lg['pcoupl']}") + sim = lg.get("simulated_ps") + outcome = (f"{sim / 1000:g} ns" if sim and sim >= 1000 else f"{sim:g} ps" if sim else "—") + outcome += f", {lg['sessions']} session(s)" + c = lg["counts"] + if c["lincs_warnings"] or c["fatal_errors"]: + outcome += f"; LINCS warnings {c['lincs_warnings']}, fatal errors {c['fatal_errors']}" + L.append(f"| {STAGE_LABEL[stage]} | `{_rel(lg['path'], root)}` | {settings} | {outcome} |") + L.append("") + temps = {st: res.stages[st]["log"]["ref_t_K"][:1] for st in ("nvt", "npt", "production") + if res.stages.get(st, {}).get("log", {}).get("ref_t_K")} + if len({tuple(v) for v in temps.values()}) > 1: + L += ["> **Temperature changes between stages:** " + + ", ".join(f"{STAGE_LABEL[k]} {v[0]:g} K" for k, v in temps.items()) + + ". Production starts from a state equilibrated at a different temperature.", ""] + L += ["## Capabilities", "", "| Capability | Status | Consequence |", "|---|---|---|"] + for c in val.capabilities: + cons = c["enables"] if c["status"] == "available" else \ + f"{c['without']} (missing: {', '.join(c['missing'])})" + L.append(f"| {c['capability']} | {c['status']} | {cons} |") + L.append("") + if res.clock.get("per_log"): + L += ["## Clock", "", + f"Cluster clock minus local file time: **{res.clock['offset_h']:+g} h**, " + f"{'constant' if res.clock['constant'] else 'NOT constant'} across " + f"{len(res.clock['per_log'])} log(s) (spread {res.clock['spread_h']} h).", ""] + if val.warnings: + L += ["## Warnings", ""] + [f"- {w}" for w in val.warnings] + [""] + miss = ev.get("job_script_inputs_not_found") + if miss: + L += ["## Inputs referenced by job scripts but not in this folder", "", + "| File | Referenced by |", "|---|---|"] + L += [f"| `{k}` | {', '.join(v)} |" for k, v in sorted(miss.items())] + [""] + L += ["## Ignored", ""] + reasons: dict[str, int] = {} + for _p, why in fs.ignored: + reasons[why] = reasons.get(why, 0) + 1 + L += [f"- {n} × {why}" for why, n in sorted(reasons.items())] or ["- nothing"] + if fs.crash_dumps: + L.append(f"- {len(fs.crash_dumps)} minimisation crash-dump structures (`stepN{{b,c}}.pdb`)" + " — accounted for in the equilibration audit, never used as structures") + if fs.unclassified: + L.append(f"- {len(fs.unclassified)} unclassified simulation file(s): " + + ", ".join(f"`{p.name}`" for p in fs.unclassified[:8]) + + (" …" if len(fs.unclassified) > 8 else "")) + if res.system: + s = res.system + L += ["", "## System", "", + f"{s['system_type']} · {s['n_atoms']:,} atoms · " + f"{s['n_protein_chains']} protein chain(s)", ""] + if s.get("chains"): + L += ["| # | segid | residues | atoms | resid range |", "|---|---|---|---|---|"] + L += [f"| {c['index']} | {c['segid']} | {c['n_residues']} | {c['n_atoms']:,} | " + f"{c['resid_first']}–{c['resid_last']} |" for c in s["chains"]] + if s.get("ion_counts"): + L += ["", "Ions: " + ", ".join(f"{k} {v}" for k, v in s["ion_counts"].items())] + return "\n".join(L) + "\n" diff --git a/moldynx/io/validation.py b/moldynx/io/validation.py index d71b0a3..1c70f9a 100644 --- a/moldynx/io/validation.py +++ b/moldynx/io/validation.py @@ -1,13 +1,14 @@ """ -Validation of a discovered :class:`FileSet`. +Validation of a discovered :class:`FileSet` and the **capability matrix**. -Produces clear, actionable messages: what is missing, why it is needed, and how -to obtain it -- so a researcher is never left guessing. +Produces clear, actionable messages: what is missing, why it is needed, what it +disables, and how to obtain it -- so a researcher is never left guessing, and no +analysis silently runs on the wrong or missing inputs. """ from __future__ import annotations -from dataclasses import dataclass +from dataclasses import dataclass, field from moldynx.io.discovery import FileSet @@ -19,30 +20,71 @@ "use the run input `.tpr` (best) or a `.gro`/`.pdb` of the system"), "energy": ("thermodynamic observables (T, P, density, energies)", "the `.edr` written by `gmx mdrun`; required only for energy analysis"), - "index": ("custom atom groups (e.g. for MM/PBSA group definitions)", - "create with `gmx make_ndx`; optional for most analyses"), + "index": ("custom atom groups", + "create with `gmx make_ndx`; optional -- MolDynX builds its own groups"), "gmx_top": ("the processed topology with #include's", - "the `topol.top` used for the run; required only for MM/PBSA"), + "the `topol.top` used by grompp (with its `toppar/`); required for MM-GBSA/PBSA"), } +# capability -> (required keys (all), description, what happens without it) +CAPABILITIES: list[tuple[str, tuple[str, ...], str, str]] = [ + ("core analyses", ("trajectory", "topology"), + "every structural / dynamic analysis", "nothing can run"), + ("energies", ("energy",), + "thermodynamic stability observables", "energy analysis is skipped"), + ("methods & completion proof", ("production_log",), + "Methods table, mdrun sessions, extension audit, proof the run finished", + "Methods come from the run input only; completion is reported as not proven"), + ("binding energy (MM-GBSA/PBSA)", ("gmx_top", "toppar"), + "a protein-only complex system for gmx_MMPBSA", + "skipped; a ready-to-run package is still written"), + ("minimisation audit", ("em",), "outcome, Fmax, crash-dump accounting", + "the equilibration report lists it as missing"), + ("NVT audit", ("nvt",), "temperature equilibration", "listed as missing"), + ("NPT audit", ("npt",), "pressure/density equilibration", "listed as missing"), + ("restraint & stage-parameter audit", ("stage_tprs",), + "position restraints and exact stage parameters from the run inputs", + "reported as not recoverable"), + ("MDP-only settings", ("mdp",), "gen-vel, gen-temp, define", + "reported as not recorded (gen-vel inferred only from evidence)"), + ("chain of custody", ("job_scripts",), "grompp -c/-r/-t links between stages", + "inferred from timestamps and continuation flags, labelled inferred"), +] + @dataclass class ValidationResult: ok: bool errors: list[str] warnings: list[str] + capabilities: list[dict] = field(default_factory=list) def report(self) -> str: - lines = [] - for e in self.errors: - lines.append(f" [ERROR] {e}") - for w in self.warnings: - lines.append(f" [warn ] {w}") + lines = [f" [ERROR] {e}" for e in self.errors] + lines += [f" [warn ] {w}" for w in self.warnings] return "\n".join(lines) if lines else " all required inputs present" + def capability_table(self) -> str: + rows = [f" {'capability':36s} {'status':11s} note"] + for c in self.capabilities: + rows.append(f" {c['capability']:36s} {c['status']:11s} " + f"{c['enables'] if c['status'] == 'available' else c['without']}") + return "\n".join(rows) + + +def capability_matrix(fs: FileSet) -> list[dict]: + keys = fs.available_keys() + out = [] + for name, req, enables, without in CAPABILITIES: + missing = [k for k in req if k not in keys] + out.append({"capability": name, "status": "available" if not missing else "unavailable", + "requires": list(req), "missing": missing, "enables": enables, + "without": without}) + return out -def validate_fileset(fs: FileSet) -> ValidationResult: - """Check that the minimum inputs (trajectory + topology) are present.""" + +def validate_fileset(fs: FileSet, allow_ambiguous: bool = False) -> ValidationResult: + """Check the minimum inputs and the consistency of the chosen production run.""" errors, warnings = [], [] def explain(role: str) -> str: @@ -54,14 +96,28 @@ def explain(role: str) -> str: if fs.topology is None and fs.structure is None: errors.append(explain("topology")) - # Non-fatal: features that will simply be skipped. + ev = fs.evidence + t = (ev.get("trajectory_candidates") or {}).get(str(fs.trajectory)) if fs.trajectory else None + h = (ev.get("tpr_candidates") or {}).get(str(fs.topology)) if fs.topology else None + if t and h and t.get("readable") and h.get("readable") and t["natoms"] != h["natoms"]: + errors.append(f"atom count mismatch: {fs.trajectory.name} has {t['natoms']} atoms but " + f"{fs.topology.name} has {h['natoms']} — they are not from the same run") + for a in fs.ambiguities: + (warnings if allow_ambiguous else errors).append( + f"ambiguous input: {a} — choose explicitly (--traj/--top, or --interactive)") + if fs.energy is None: - warnings.append("no '.edr' found — energy/stability analysis will be skipped.") + warnings.append("no production '.edr' found — energy analysis will be skipped.") if fs.gmx_top is None: - warnings.append("no '.top' found — MM/PBSA workflow generation will be limited.") - if len(fs.all_trajectories) > 1: - warnings.append(f"{len(fs.all_trajectories)} trajectories found — " - f"defaulting to the largest ({fs.trajectory.name}); " - f"use --interactive to choose.") + warnings.append("no 'topol.top' found — MM-GBSA/PBSA cannot be prepared.") + if not ev.get("verified", True) and fs.trajectory is not None: + warnings.append("production run chosen by stage/name only (trajectory headers could not " + "be read) — the choice is unverified") + warnings.extend(fs.warnings) + missing_refs = ev.get("job_script_inputs_not_found") + if missing_refs: + warnings.append("inputs referenced by job scripts are not in this folder: " + + ", ".join(sorted(missing_refs))) - return ValidationResult(ok=not errors, errors=errors, warnings=warnings) + return ValidationResult(ok=not errors, errors=errors, warnings=warnings, + capabilities=capability_matrix(fs)) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..c077b33 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,71 @@ +"""Shared fixtures: miniature copies of two real CHARMM-GUI/GROMACS simulation folders.""" + +from __future__ import annotations + +import csv +import json +import os +import shutil +import time +from pathlib import Path + +import pytest + +FIX = Path(__file__).parent / "fixtures" +TREES = FIX / "raw_trees" +LOGS = FIX / "gromacs_logs" + +A8_SCRIPT = """#!/bin/bash -l +module load GROMACS/2023.3 +IN_DIR="../../input/complex_A8HNE1" +init=step3_input +mini_prefix=step4.0_minimization +gmx grompp -f ${IN_DIR}/${mini_prefix}.mdp -o ${mini_prefix}.tpr -c ${IN_DIR}/${init}.gro -r ${IN_DIR}/${init}.gro -p ${IN_DIR}/topol.top -n ${IN_DIR}/index.ndx -maxwarn 1 +gmx mdrun -v -deffnm ${mini_prefix} -ntmpi 1 -ntomp 8 +""" +A8_APPEND = """#!/bin/bash -l +if [ ! -f step5_production_extended.tpr ]; then + gmx convert-tpr -s step5_production.tpr -o step5_production_extended.tpr -extend 99000 +fi +gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append +""" +# real (trimmed) logs dropped into the miniature tree at their real locations +A8_LOGS = { + "step4.0_minimization.log": "A8HNE1_step4.0_minimization_machine_precision.log", + "step4.1_equilibration.log": "A8HNE1_step4.1_equilibration_NVT.log", + "step4.2_equilibration.log": "A8HNE1_step4.2_equilibration_NPT_303K.log", + "step5_production.log": "A8HNE1_step5_production_11_sessions.log", +} + + +def materialise(root: Path, entries, scripts=None, logs=None): + """Create a tree; each file gets ceil(bytes / 1e6) bytes so relative sizes survive.""" + for i, (rel, nbytes) in enumerate(entries): + p = root / rel + p.parent.mkdir(parents=True, exist_ok=True) + if scripts and p.name in scripts: + p.write_text(scripts[p.name], encoding="utf-8") + elif logs and rel in logs: + shutil.copyfile(LOGS / logs[rel], p) + else: + p.write_bytes(b"\0" * (nbytes // 1_000_000 + 1)) + stamp = time.time() - 10_000 + i + os.utime(p, (stamp, stamp)) + + +@pytest.fixture +def a8_tree(tmp_path): + data = json.loads((TREES / "A8HNE1_raw_tree.json").read_text(encoding="utf-8")) + root = tmp_path / "complex_A8HNE1" + materialise(root, [(f["path"], f["bytes"]) for f in data["files"]], + scripts={"run_A8HNE1_gpu.sh": A8_SCRIPT, "run_append_100ns.sh": A8_APPEND}, + logs=A8_LOGS) + return root, data["expected"] + + +@pytest.fixture +def q9_tree(tmp_path): + rows = list(csv.DictReader((TREES / "Q946V6_raw_archive_inventory.csv").open(encoding="utf-8"))) + root = tmp_path / "Complex_Q94v6" + materialise(root, [(r["path"].replace("\\", "/"), int(r["bytes"])) for r in rows]) + return root, rows diff --git a/tests/fixtures/README.md b/tests/fixtures/README.md new file mode 100644 index 0000000..8738460 --- /dev/null +++ b/tests/fixtures/README.md @@ -0,0 +1,72 @@ +# Test fixtures (real data, trimmed — 0.96 MB total) + +All files come from the two finished datasets. Logs are trimmed: the head (banner, command line, +the full `Input Parameters:` dump and the `grpopts` block) and the tail (averages, timings, +minimisation result, `Finished mdrun`) are kept verbatim, and every marker line in between +(`Command line`, `Started mdrun`, `Finished mdrun`, `Statistics over`, checkpoint reads, `Wrote pdb`, +`Maximum force`, …) is kept with a line of context. Trimmed stretches are marked with +`[... N lines trimmed by the mdforge fixture builder ...]` — parsers must tolerate that line. + +## gromacs_logs/ — expected parser output + +| Fixture | Expected | +|---|---| +| `A8HNE1_step4.0_minimization_machine_precision.log` | integrator `steep`, `emtol` 100, `nsteps` 50000; outcome **machine precision, tolerance not reached**, 3056 steps; Epot −2.6774416e+07; Fmax 7.2325469e+03 on atom 6116; ‖F‖ 11.15; 4 `Wrote pdb` events; command `-ntmpi 1 -ntomp 8` | +| `A8HNE1_step4.1_equilibration_NVT.log` | md, dt 0.001, nsteps 125000; V-rescale; ref-t 303.15 ×2; tau-t 1 ×2; nrdf 33024 / 3.11729e+06; pcoupl No; continuation false; 1 session; 5.418 ns/day; started Thu Jun 4 04:11:36 2026, finished 04:44:50 | +| `A8HNE1_step4.2_equilibration_NPT_303K.log` | nsteps 2000000; ref-t **303.15**; pcoupl Berendsen, isotropic, tau-p 1, ref-p 1.0, compressibility 4.5e-05; refcoord-scaling COM; continuation true; 5.397 ns/day; finished Thu Jun 4 13:38:39 2026 | +| `A8HNE1_step5_production_11_sessions.log` | dt 0.002; first-block nsteps 500000 (1-ns TPR, later extended); V-rescale 303.15; C-rescale tau-p 5; **11** `Started mdrun` sessions; last `Statistics over 50000001 steps` (= 100 ns); finished Tue Jun 16 13:40:25 2026 | +| `Q946V6_step4.0_minimization_converged.log` | `emtol` 1000, `nsteps` 5000; outcome **converged** (Fmax < 1000) in 2027 steps; Fmax 7.1497339e+02 on atom 6883; 17 `Wrote pdb` events | +| `Q946V6_step4.2_equilibration_NPT_310K.log` | ref-t **310** ×2 (differs from production 303.15); Berendsen; 3.349 ns/day | +| `Q946V6_step5_production_12_sessions.log` | **12** sessions; last `Statistics over 50000001 steps`; 9.09 ns/day in the final session | + +The two NPT logs together are the test for "surface preparation differences between datasets" +(303.15 K vs 310 K). + +## edr/ + +- `A8HNE1_step4.1_equilibration.edr` — a real GROMACS energy file (NVT, 126 records, 0–125 ps). + With panedr: T[0] = 304.80 K, min T = 211.20 K at 1 ps, mean T over t ≥ 25 ps = 303.187 ± 0.249 K, + stays within ±2 K of 303.15 from 13 ps on. +- `A8HNE1_timeseries_step4.*.csv` — the series used for the equilibration figure. From the NPT CSV + the last-500-ps statistics are T 303.145 ± 0.261 K, P 1.65 ± 17.70 bar, density + 1014.53 ± 0.27 kg m⁻³; Box-X 25.500 → 24.989 nm; volume 16,581 → 15,605 nm³. + (Complete series: 2409 EM records, 126 NVT, 2001 NPT.) + +## gmx_mmpbsa/ — α-zein Q946V6–ZmBiP2, 101 frames (0–100 ns at 1 ns) + +- `gb/FINAL_RESULTS_MMGBSA.csv`, `pb/FINAL_RESULTS_MMPBSA.csv` — complete files. Sections: + `Complex / Receptor / Ligand / Delta Energy Terms`, each with a `Frame #,…` header and 101 rows. + Expected from the Delta section (kcal/mol, mean ± autocorrelation-corrected SEM, frame f ↦ + t = (f − 1) × 0.1 ns): GB 0–100 ns −33.4 ± 2.1, 80–100 ns −37.8 ± 2.4; PB −40.7 ± 2.5 / + −47.1 ± 3.3; Pearson r(GB, PB) = 0.73; every bonded Δ term (BOND, ANGLE, DIHED, UB, IMP, CMAP, + 1-4 VDW, 1-4 EEL) is exactly 0; GGAS identical in GB and PB. +- `gb/FINAL_DECOMP_MMGBSA_frames1-3.csv` — every section of the decomposition file + (`Complex / Receptor / Ligand / DELTAS` × `TDC / SDC / BDC`), frames 1–3 only. Residue labels + look like `L::THR:1` / `R:::` (R = receptor, renumbered from 1 by gmx_MMPBSA — verify + against the sequence; L = ligand). Parse with `^([LR])::([A-Z0-9]+):(-?\d+)$`. +- `*/gmx_MMPBSA.log`, `*.dat`, `mmgbsa.in`, `mmpbsa.in` — the exact inputs and logs. The GB + `.dat` contains `ENTROPY RESULTS (INTERACTION ENTROPY)` and `(C2 ENTROPY)` blocks, each followed by + gmx_MMPBSA's own warning that σ(Int. Energy) exceeds 3.6 kcal/mol (IE) / 6.0 kcal/mol (C2); + σ = 86.7 kcal/mol here, so the entropy gate must reject both. + +## raw_trees/ — for discovery and canonical-run tests + +- `A8HNE1_raw_tree.json` — every file of the A8HNE1 raw folder (464 files: path, bytes, mtime), plus + an `expected` block: the canonical production TPR/XTC/EDR/log, `topol.top` + `toppar/`, the three + equilibration stages, what a size-based heuristic would wrongly pick (the NPT TPR as topology, a + minimisation crash dump as structure), and which files are missing from the archive. Earlier + analysis outputs under `Production/analysis*` and `Production/mmpbsa_BiP2/` are marked — discovery + must ignore them. Build a fake tree from this listing (zero-byte or sparse files, sizes via + metadata) — do not commit multi-GB files. +- `Q946V6_raw_archive_inventory.csv` — all 113 files of the Q946V6 archive with SHA-256, role and + retained/excluded status: the answer key for classification, duplicate detection (3 byte-identical + pairs among the excluded `stepN{b,c}.pdb` dumps) and canonical-run identification + (`step5_production-001.xtc` + `step5_production_ext.tpr`). + +## structures/ + +- `A8HNE1_ZmBiP2_CA_only.pdb` — Cα atoms of the processed two-chain complex (850 residues: + α-zein A8HNE1 resid 1–187, ZmBiP2 resid 188–850 = ZmBiP2 1–663 + 187). For numbering-offset, + chain-split and selection tests. Segment IDs are the CHARMM-GUI style `seg_0_PROA`/`seg_1_PROB` + truncated to 4 characters by the PDB format (`seg_`) — a realistic trap for segid-based + selections. diff --git a/tests/fixtures/edr/A8HNE1_timeseries_step4.0_minimization.csv b/tests/fixtures/edr/A8HNE1_timeseries_step4.0_minimization.csv new file mode 100644 index 0000000..554adb2 --- /dev/null +++ b/tests/fixtures/edr/A8HNE1_timeseries_step4.0_minimization.csv @@ -0,0 +1,2410 @@ +Time,Pressure,Potential +0.0,-4243.0234375,-22656124.0 +1.0,-4265.96923828125,-22664814.0 +2.0,-4310.95458984375,-22686972.0 +3.0,-4446.9970703125,-22756948.0 +4.0,-4674.90478515625,-22894472.0 +5.0,-4894.927734375,-23017404.0 +6.0,-4935.134765625,-23057514.0 +7.0,-5023.55126953125,-23126990.0 +8.0,-5084.48388671875,-23157514.0 +9.0,-5148.02392578125,-23209124.0 +10.0,-5204.46533203125,-23239078.0 +11.0,-5254.2001953125,-23281004.0 +12.0,-5308.4296875,-23310266.0 +13.0,-5349.6015625,-23345608.0 +14.0,-5401.53466796875,-23373434.0 +15.0,-5435.78466796875,-23406354.0 +16.0,-5552.48681640625,-23450356.0 +17.0,-5543.3515625,-23489886.0 +19.0,-5623.923828125,-23521250.0 +20.0,-5622.31298828125,-23541460.0 +21.0,-5717.109375,-23602102.0 +22.0,-5756.62890625,-23635850.0 +24.0,-5827.958984375,-23661872.0 +25.0,-5962.28955078125,-23693886.0 +27.0,-5875.87744140625,-23734770.0 +28.0,-5992.92626953125,-23749626.0 +29.0,-5933.82763671875,-23750574.0 +30.0,-5979.68359375,-23814812.0 +31.0,-5988.3359375,-23818816.0 +32.0,-5974.56640625,-23844420.0 +34.0,-6008.494140625,-23854282.0 +36.0,-6123.43115234375,-23887212.0 +38.0,-6073.51806640625,-23909794.0 +39.0,-6163.72509765625,-23923396.0 +40.0,-6114.57177734375,-23943052.0 +41.0,-6195.13818359375,-23958900.0 +42.0,-6154.04931640625,-23977670.0 +43.0,-6226.771484375,-23990612.0 +44.0,-6212.95703125,-24006160.0 +45.0,-6201.78369140625,-24023908.0 +46.0,-6273.53173828125,-24024500.0 +47.0,-6239.458984375,-24062464.0 +50.0,-6249.93017578125,-24069876.0 +51.0,-6304.90234375,-24103236.0 +52.0,-6302.291015625,-24116002.0 +54.0,-6366.31640625,-24135562.0 +56.0,-6332.78955078125,-24155600.0 +57.0,-6389.48388671875,-24167966.0 +58.0,-6363.00634765625,-24185254.0 +59.0,-6411.51123046875,-24196782.0 +60.0,-6391.14208984375,-24212624.0 +61.0,-6432.392578125,-24222694.0 +62.0,-6422.35888671875,-24235778.0 +63.0,-6434.09326171875,-24249016.0 +64.0,-6460.87353515625,-24256214.0 +65.0,-6460.71484375,-24279314.0 +67.0,-6473.26513671875,-24289444.0 +68.0,-6481.09912109375,-24301394.0 +69.0,-6502.93212890625,-24303464.0 +70.0,-6500.58349609375,-24325650.0 +72.0,-6513.16650390625,-24335314.0 +73.0,-6518.732421875,-24348124.0 +74.0,-6543.81201171875,-24348480.0 +75.0,-6540.12255859375,-24372438.0 +77.0,-6550.029296875,-24380550.0 +78.0,-6553.23828125,-24393898.0 +80.0,-6560.3046875,-24403088.0 +81.0,-6566.74072265625,-24411692.0 +82.0,-6579.384765625,-24417868.0 +83.0,-6580.05078125,-24429134.0 +85.0,-6587.05908203125,-24438108.0 +86.0,-6592.01171875,-24447624.0 +87.0,-6606.95654296875,-24453108.0 +88.0,-6605.38818359375,-24464296.0 +90.0,-6613.71826171875,-24472638.0 +91.0,-6614.31103515625,-24484142.0 +92.0,-6637.35791015625,-24487016.0 +93.0,-6629.42626953125,-24503486.0 +95.0,-6636.94921875,-24511642.0 +96.0,-6639.279296875,-24520378.0 +97.0,-6656.89697265625,-24523586.0 +98.0,-6650.314453125,-24537134.0 +100.0,-6657.60595703125,-24544304.0 +101.0,-6657.943359375,-24553770.0 +102.0,-6678.86962890625,-24554816.0 +103.0,-6668.708984375,-24569632.0 +105.0,-6674.578125,-24575454.0 +106.0,-6675.173828125,-24584258.0 +108.0,-6680.30224609375,-24591874.0 +109.0,-6681.94189453125,-24600000.0 +110.0,-6693.55859375,-24605200.0 +111.0,-6690.15673828125,-24612256.0 +112.0,-6705.998046875,-24613472.0 +113.0,-6697.25341796875,-24628008.0 +115.0,-6709.36181640625,-24636558.0 +116.0,-6703.66162109375,-24647156.0 +118.0,-6710.57080078125,-24653482.0 +119.0,-6709.84521484375,-24659286.0 +120.0,-6719.21826171875,-24664194.0 +121.0,-6715.75390625,-24669850.0 +123.0,-6718.68994140625,-24675894.0 +124.0,-6719.06201171875,-24685622.0 +125.0,-6735.95166015625,-24686516.0 +126.0,-6726.73388671875,-24699242.0 +127.0,-6740.76708984375,-24708344.0 +128.0,-6735.384765625,-24726068.0 +129.0,-6774.54931640625,-24742390.0 +131.0,-6741.33349609375,-24777186.0 +133.0,-6750.09912109375,-24782698.0 +134.0,-6750.54638671875,-24787848.0 +135.0,-6759.92236328125,-24790556.0 +136.0,-6752.71875,-24799254.0 +138.0,-6757.20556640625,-24804806.0 +139.0,-6753.35107421875,-24812988.0 +141.0,-6756.37158203125,-24818110.0 +142.0,-6755.40625,-24822526.0 +143.0,-6760.27734375,-24826790.0 +144.0,-6757.74560546875,-24830560.0 +146.0,-6757.87451171875,-24837642.0 +147.0,-6759.43701171875,-24853066.0 +148.0,-6764.23193359375,-24857598.0 +149.0,-6759.70458984375,-24864888.0 +151.0,-6763.65380859375,-24869728.0 +152.0,-6760.99365234375,-24873986.0 +153.0,-6765.9765625,-24877586.0 +154.0,-6762.435546875,-24881234.0 +156.0,-6762.85302734375,-24888092.0 +157.0,-6761.47021484375,-24899834.0 +158.0,-6766.46484375,-24901634.0 +159.0,-6761.67041015625,-24909232.0 +161.0,-6763.48046875,-24915116.0 +162.0,-6761.76806640625,-24919478.0 +163.0,-6766.86962890625,-24922386.0 +164.0,-6762.5859375,-24925626.0 +166.0,-6764.10546875,-24930926.0 +167.0,-6759.89794921875,-24938792.0 +169.0,-6762.42333984375,-24942932.0 +170.0,-6759.93505859375,-24947152.0 +171.0,-6763.45556640625,-24950436.0 +172.0,-6759.71826171875,-24953906.0 +173.0,-6764.39794921875,-24955438.0 +174.0,-6760.1875,-24960200.0 +176.0,-6762.03955078125,-24965522.0 +177.0,-6757.03515625,-24971950.0 +179.0,-6759.48681640625,-24976186.0 +180.0,-6756.57666015625,-24979594.0 +181.0,-6760.029296875,-24983604.0 +182.0,-6756.26611328125,-24985698.0 +183.0,-6762.607421875,-24986640.0 +184.0,-6754.85693359375,-24994322.0 +186.0,-6758.40771484375,-24998382.0 +187.0,-6752.27734375,-25004094.0 +189.0,-6753.93017578125,-25008830.0 +190.0,-6751.42529296875,-25011848.0 +191.0,-6754.36572265625,-25016170.0 +192.0,-6750.38427734375,-25018120.0 +194.0,-6750.712890625,-25024016.0 +195.0,-6747.30126953125,-25031428.0 +197.0,-6748.744140625,-25035132.0 +198.0,-6745.54541015625,-25038660.0 +199.0,-6747.947265625,-25041914.0 +200.0,-6743.97265625,-25044862.0 +201.0,-6747.89208984375,-25047414.0 +202.0,-6742.72119140625,-25050526.0 +204.0,-6742.94482421875,-25056462.0 +205.0,-6739.53515625,-25062120.0 +206.0,-6744.98095703125,-25062662.0 +207.0,-6738.03515625,-25067546.0 +209.0,-6737.99609375,-25073390.0 +210.0,-6734.515625,-25078270.0 +211.0,-6739.63623046875,-25080254.0 +212.0,-6732.33349609375,-25085042.0 +214.0,-6732.95458984375,-25090688.0 +215.0,-6729.01806640625,-25094378.0 +216.0,-6733.84619140625,-25095026.0 +217.0,-6727.26904296875,-25099508.0 +219.0,-6728.67333984375,-25103724.0 +220.0,-6722.91943359375,-25110014.0 +222.0,-6724.763671875,-25113280.0 +223.0,-6721.005859375,-25116312.0 +224.0,-6724.28515625,-25118758.0 +225.0,-6719.01953125,-25121494.0 +226.0,-6724.64599609375,-25121696.0 +227.0,-6717.98583984375,-25126290.0 +229.0,-6717.99365234375,-25132376.0 +230.0,-6712.865234375,-25136560.0 +232.0,-6713.6015625,-25140918.0 +233.0,-6709.62939453125,-25145242.0 +234.0,-6713.47119140625,-25146382.0 +235.0,-6707.46630859375,-25150488.0 +237.0,-6707.58740234375,-25154960.0 +238.0,-6703.43505859375,-25157918.0 +239.0,-6705.06884765625,-25162492.0 +240.0,-6700.58251953125,-25165038.0 +242.0,-6700.83642578125,-25170276.0 +243.0,-6696.01708984375,-25174842.0 +244.0,-6700.34814453125,-25175070.0 +245.0,-6693.86328125,-25179480.0 +247.0,-6693.84912109375,-25184288.0 +248.0,-6689.640625,-25186126.0 +249.0,-6693.02294921875,-25187798.0 +250.0,-6684.93994140625,-25195108.0 +252.0,-6686.74609375,-25198812.0 +253.0,-6682.796875,-25200576.0 +254.0,-6686.60009765625,-25202680.0 +255.0,-6680.1953125,-25205204.0 +257.0,-6680.9609375,-25209804.0 +258.0,-6675.65087890625,-25214326.0 +260.0,-6677.01318359375,-25217412.0 +261.0,-6672.83740234375,-25219704.0 +262.0,-6675.306640625,-25222422.0 +263.0,-6670.060546875,-25223948.0 +264.0,-6674.521484375,-25225610.0 +265.0,-6667.06396484375,-25228432.0 +267.0,-6668.740234375,-25231390.0 +268.0,-6662.89697265625,-25234784.0 +269.0,-6668.78173828125,-25235668.0 +270.0,-6660.05712890625,-25241150.0 +272.0,-6661.71435546875,-25244084.0 +273.0,-6656.75390625,-25247572.0 +275.0,-6657.15625,-25251574.0 +276.0,-6653.30224609375,-25253892.0 +277.0,-6655.28271484375,-25257132.0 +278.0,-6650.447265625,-25258032.0 +279.0,-6655.53271484375,-25258540.0 +280.0,-6647.19677734375,-25263430.0 +282.0,-6649.35400390625,-25266506.0 +283.0,-6642.10205078125,-25271330.0 +285.0,-6643.90234375,-25274288.0 +286.0,-6639.35302734375,-25276042.0 +287.0,-6642.669921875,-25277680.0 +288.0,-6636.611328125,-25279784.0 +290.0,-6636.56689453125,-25284850.0 +291.0,-6631.38134765625,-25288652.0 +292.0,-6635.84521484375,-25288938.0 +293.0,-6628.72705078125,-25292316.0 +295.0,-6628.587890625,-25297300.0 +296.0,-6623.423828125,-25298914.0 +297.0,-6627.259765625,-25301162.0 +298.0,-6618.87451171875,-25307054.0 +300.0,-6621.24462890625,-25309722.0 +301.0,-6616.02783203125,-25311288.0 +302.0,-6620.552734375,-25311884.0 +303.0,-6613.6484375,-25315026.0 +305.0,-6614.025390625,-25319658.0 +306.0,-6608.89013671875,-25321180.0 +307.0,-6613.59912109375,-25322134.0 +308.0,-6605.642578125,-25325924.0 +310.0,-6606.265625,-25330808.0 +311.0,-6601.32177734375,-25332446.0 +313.0,-6601.03466796875,-25336690.0 +314.0,-6595.53759765625,-25341946.0 +315.0,-6598.61328125,-25342798.0 +316.0,-6592.21435546875,-25345394.0 +318.0,-6592.21337890625,-25349400.0 +319.0,-6586.67578125,-25351898.0 +320.0,-6587.06689453125,-25357134.0 +321.0,-6582.90283203125,-25358146.0 +323.0,-6582.56591796875,-25362736.0 +324.0,-6577.326171875,-25367114.0 +326.0,-6577.8828125,-25369516.0 +327.0,-6573.64599609375,-25371436.0 +328.0,-6574.98681640625,-25373902.0 +329.0,-6570.376953125,-25374848.0 +330.0,-6572.93603515625,-25377380.0 +332.0,-6567.63134765625,-25381020.0 +333.0,-6568.92822265625,-25383344.0 +334.0,-6561.79443359375,-25387858.0 +336.0,-6562.365234375,-25389826.0 +337.0,-6558.09912109375,-25391638.0 +338.0,-6559.86328125,-25393894.0 +339.0,-6554.91357421875,-25394914.0 +340.0,-6558.07763671875,-25397000.0 +341.0,-6551.97412109375,-25397054.0 +343.0,-6552.72265625,-25401648.0 +344.0,-6547.3046875,-25406250.0 +346.0,-6548.61376953125,-25408032.0 +347.0,-6544.029296875,-25410274.0 +348.0,-6546.81640625,-25411192.0 +349.0,-6540.58740234375,-25413766.0 +351.0,-6540.92822265625,-25416950.0 +352.0,-6535.95703125,-25418746.0 +353.0,-6537.28271484375,-25422366.0 +354.0,-6532.76806640625,-25422390.0 +355.0,-6536.38720703125,-25424180.0 +356.0,-6529.828125,-25425662.0 +358.0,-6530.98486328125,-25430082.0 +359.0,-6524.97216796875,-25433236.0 +361.0,-6526.02587890625,-25435756.0 +362.0,-6521.515625,-25436616.0 +363.0,-6523.63427734375,-25439420.0 +365.0,-6519.095703125,-25442278.0 +366.0,-6520.005859375,-25444296.0 +367.0,-6513.892578125,-25447904.0 +369.0,-6514.39013671875,-25449914.0 +370.0,-6510.21533203125,-25451656.0 +371.0,-6511.642578125,-25453702.0 +372.0,-6506.8515625,-25454638.0 +373.0,-6509.70068359375,-25456564.0 +375.0,-6504.443359375,-25460044.0 +376.0,-6504.95947265625,-25462838.0 +377.0,-6497.806640625,-25467476.0 +379.0,-6498.4375,-25469340.0 +380.0,-6494.13525390625,-25470908.0 +381.0,-6496.05859375,-25472498.0 +382.0,-6490.865234375,-25473638.0 +383.0,-6494.43896484375,-25474926.0 +384.0,-6488.19189453125,-25474968.0 +386.0,-6487.76806640625,-25480556.0 +387.0,-6481.41796875,-25486286.0 +389.0,-6481.98486328125,-25488270.0 +390.0,-6477.76318359375,-25489726.0 +391.0,-6479.78466796875,-25491448.0 +392.0,-6474.55224609375,-25492234.0 +393.0,-6478.53515625,-25493352.0 +394.0,-6471.90087890625,-25494648.0 +396.0,-6471.99658203125,-25499188.0 +397.0,-6467.26806640625,-25501650.0 +399.0,-6467.74267578125,-25504510.0 +400.0,-6463.13330078125,-25506004.0 +401.0,-6464.61181640625,-25508548.0 +403.0,-6460.5859375,-25510862.0 +404.0,-6461.5078125,-25512568.0 +405.0,-6456.14306640625,-25515162.0 +407.0,-6456.48388671875,-25516974.0 +408.0,-6452.18994140625,-25518748.0 +409.0,-6453.11572265625,-25521238.0 +410.0,-6448.81298828125,-25521804.0 +411.0,-6450.51220703125,-25524566.0 +413.0,-6446.15087890625,-25526908.0 +414.0,-6447.56494140625,-25528182.0 +415.0,-6441.8125,-25531198.0 +417.0,-6442.283203125,-25533130.0 +418.0,-6438.00244140625,-25534650.0 +419.0,-6439.07861328125,-25537000.0 +420.0,-6434.72216796875,-25537174.0 +421.0,-6436.81396484375,-25540026.0 +423.0,-6432.11279296875,-25542832.0 +424.0,-6433.85546875,-25543568.0 +425.0,-6427.46484375,-25546976.0 +427.0,-6428.07080078125,-25548984.0 +428.0,-6423.908203125,-25550084.0 +429.0,-6425.373046875,-25552400.0 +431.0,-6421.771484375,-25554326.0 +432.0,-6421.861328125,-25556424.0 +433.0,-6417.08203125,-25558738.0 +434.0,-6419.52734375,-25558838.0 +435.0,-6413.20166015625,-25561726.0 +437.0,-6413.71533203125,-25564206.0 +438.0,-6409.33349609375,-25565288.0 +439.0,-6410.4765625,-25568314.0 +441.0,-6406.84912109375,-25570080.0 +442.0,-6407.78564453125,-25571226.0 +443.0,-6402.96337890625,-25573418.0 +444.0,-6405.837890625,-25573630.0 +445.0,-6399.705078125,-25575754.0 +447.0,-6399.94287109375,-25578828.0 +448.0,-6394.83203125,-25579996.0 +449.0,-6395.796875,-25584012.0 +451.0,-6392.00390625,-25585688.0 +452.0,-6393.34619140625,-25586778.0 +453.0,-6388.48583984375,-25588466.0 +454.0,-6391.63232421875,-25588790.0 +455.0,-6385.4765625,-25590408.0 +457.0,-6385.52734375,-25594244.0 +458.0,-6379.39990234375,-25595826.0 +459.0,-6379.951171875,-25600520.0 +461.0,-6376.22900390625,-25602160.0 +462.0,-6377.78369140625,-25603044.0 +463.0,-6372.865234375,-25604628.0 +464.0,-6376.28759765625,-25604862.0 +465.0,-6370.05517578125,-25605990.0 +467.0,-6369.87646484375,-25610408.0 +468.0,-6363.38525390625,-25612154.0 +469.0,-6364.12353515625,-25616860.0 +471.0,-6360.265625,-25618698.0 +472.0,-6362.31640625,-25619268.0 +473.0,-6356.93603515625,-25621614.0 +475.0,-6357.37744140625,-25623716.0 +476.0,-6353.1796875,-25624774.0 +477.0,-6354.3125,-25627402.0 +479.0,-6350.88525390625,-25628954.0 +480.0,-6351.61767578125,-25630102.0 +481.0,-6347.20361328125,-25631780.0 +482.0,-6349.61865234375,-25632308.0 +483.0,-6343.984375,-25634136.0 +485.0,-6344.19189453125,-25636846.0 +486.0,-6338.88037109375,-25638234.0 +487.0,-6339.51318359375,-25641856.0 +489.0,-6335.99072265625,-25643322.0 +490.0,-6337.16943359375,-25644476.0 +491.0,-6332.84619140625,-25646012.0 +492.0,-6335.36865234375,-25646748.0 +493.0,-6329.95654296875,-25647492.0 +494.0,-6334.38916015625,-25647636.0 +495.0,-6327.51025390625,-25647808.0 +497.0,-6328.60693359375,-25652010.0 +498.0,-6323.36865234375,-25655328.0 +500.0,-6324.94384765625,-25656800.0 +501.0,-6320.62548828125,-25657998.0 +502.0,-6323.61181640625,-25658348.0 +503.0,-6317.828125,-25659180.0 +505.0,-6317.77001953125,-25663158.0 +506.0,-6310.61181640625,-25666268.0 +507.0,-6311.77978515625,-25670042.0 +509.0,-6307.98828125,-25671904.0 +510.0,-6309.619140625,-25672322.0 +511.0,-6304.41259765625,-25674778.0 +513.0,-6304.91162109375,-25676458.0 +514.0,-6300.96630859375,-25677346.0 +515.0,-6302.27978515625,-25679166.0 +517.0,-6298.99609375,-25680924.0 +518.0,-6299.3671875,-25682370.0 +519.0,-6295.03125,-25684282.0 +520.0,-6297.33935546875,-25684462.0 +521.0,-6291.6328125,-25686596.0 +523.0,-6292.15673828125,-25688778.0 +524.0,-6287.82470703125,-25689580.0 +525.0,-6288.97314453125,-25692302.0 +527.0,-6285.63232421875,-25693822.0 +528.0,-6286.55859375,-25694782.0 +529.0,-6282.20654296875,-25696424.0 +530.0,-6284.79541015625,-25696804.0 +531.0,-6279.244140625,-25698306.0 +533.0,-6279.513671875,-25700952.0 +534.0,-6274.44287109375,-25702074.0 +535.0,-6275.33447265625,-25705668.0 +537.0,-6271.90478515625,-25707160.0 +538.0,-6273.17919921875,-25707934.0 +539.0,-6268.74267578125,-25709260.0 +540.0,-6271.55029296875,-25709650.0 +541.0,-6266.00146484375,-25710752.0 +543.0,-6266.06982421875,-25714026.0 +544.0,-6259.923828125,-25715712.0 +545.0,-6260.66748046875,-25719624.0 +547.0,-6257.24072265625,-25721042.0 +548.0,-6258.70849609375,-25721826.0 +549.0,-6254.12646484375,-25723182.0 +550.0,-6257.390625,-25723284.0 +551.0,-6251.35302734375,-25724496.0 +553.0,-6251.52490234375,-25728042.0 +554.0,-6246.2578125,-25728982.0 +555.0,-6247.75244140625,-25732186.0 +557.0,-6243.84912109375,-25734184.0 +558.0,-6245.55859375,-25734314.0 +559.0,-6240.25537109375,-25736844.0 +561.0,-6240.86474609375,-25738288.0 +562.0,-6237.11083984375,-25739208.0 +563.0,-6238.53662109375,-25740892.0 +565.0,-6235.31591796875,-25742450.0 +566.0,-6235.61279296875,-25743794.0 +567.0,-6231.31005859375,-25745604.0 +568.0,-6233.6484375,-25745728.0 +569.0,-6228.01806640625,-25747894.0 +571.0,-6228.62841796875,-25749960.0 +572.0,-6224.474609375,-25750370.0 +573.0,-6225.73681640625,-25752842.0 +575.0,-6222.4609375,-25754310.0 +576.0,-6223.48046875,-25755120.0 +577.0,-6219.23828125,-25756716.0 +578.0,-6221.83154296875,-25756906.0 +579.0,-6216.33251953125,-25758400.0 +581.0,-6216.71923828125,-25760928.0 +582.0,-6211.830078125,-25761706.0 +583.0,-6212.75537109375,-25765014.0 +585.0,-6209.43505859375,-25766230.0 +586.0,-6210.72412109375,-25767164.0 +587.0,-6206.41162109375,-25768368.0 +588.0,-6209.28759765625,-25768622.0 +589.0,-6203.75390625,-25769490.0 +591.0,-6203.95703125,-25772822.0 +592.0,-6197.75244140625,-25774234.0 +593.0,-6198.55712890625,-25778136.0 +595.0,-6195.15087890625,-25779346.0 +596.0,-6196.73046875,-25780148.0 +597.0,-6192.31591796875,-25781218.0 +599.0,-6192.62548828125,-25783226.0 +600.0,-6187.43994140625,-25784996.0 +601.0,-6188.25341796875,-25787522.0 +603.0,-6185.26025390625,-25788708.0 +604.0,-6186.07958984375,-25789670.0 +605.0,-6182.40234375,-25790672.0 +606.0,-6184.27978515625,-25791454.0 +607.0,-6179.70654296875,-25792190.0 +608.0,-6183.1015625,-25792666.0 +609.0,-6177.494140625,-25792684.0 +611.0,-6177.24365234375,-25797268.0 +612.0,-6168.279296875,-25800488.0 +613.0,-6169.869140625,-25804040.0 +614.0,-6164.98193359375,-25804596.0 +616.0,-6165.712890625,-25807800.0 +618.0,-6162.67724609375,-25809026.0 +619.0,-6163.625,-25809966.0 +620.0,-6159.734375,-25811200.0 +621.0,-6162.17431640625,-25811614.0 +622.0,-6157.14599609375,-25812436.0 +624.0,-6157.408203125,-25815218.0 +625.0,-6150.80517578125,-25817436.0 +626.0,-6151.3203125,-25821090.0 +628.0,-6148.044921875,-25821960.0 +629.0,-6149.2265625,-25823038.0 +630.0,-6145.31396484375,-25823684.0 +631.0,-6147.61279296875,-25824748.0 +633.0,-6143.78857421875,-25826874.0 +634.0,-6143.24072265625,-25828312.0 +635.0,-6137.98095703125,-25831276.0 +637.0,-6138.57470703125,-25832384.0 +638.0,-6135.19482421875,-25833240.0 +639.0,-6136.673828125,-25834078.0 +640.0,-6132.51416015625,-25834794.0 +641.0,-6135.3046875,-25835370.0 +642.0,-6130.21630859375,-25835378.0 +643.0,-6134.87841796875,-25835534.0 +644.0,-6128.25537109375,-25835876.0 +646.0,-6129.65380859375,-25839262.0 +647.0,-6124.59765625,-25841988.0 +649.0,-6126.24169921875,-25843398.0 +650.0,-6122.224609375,-25843740.0 +651.0,-6125.31396484375,-25844246.0 +653.0,-6120.68115234375,-25847170.0 +654.0,-6119.869140625,-25848962.0 +655.0,-6113.41748046875,-25853300.0 +657.0,-6114.048828125,-25854166.0 +658.0,-6110.31005859375,-25855442.0 +659.0,-6112.49609375,-25855510.0 +660.0,-6107.53173828125,-25856730.0 +662.0,-6107.96484375,-25858806.0 +663.0,-6103.3203125,-25859612.0 +664.0,-6104.24267578125,-25862344.0 +666.0,-6101.20166015625,-25863300.0 +667.0,-6102.35546875,-25864054.0 +668.0,-6098.52197265625,-25865058.0 +669.0,-6100.92724609375,-25865424.0 +670.0,-6096.013671875,-25866072.0 +672.0,-6096.31884765625,-25868724.0 +673.0,-6089.89990234375,-25870860.0 +674.0,-6090.65625,-25874220.0 +676.0,-6087.55859375,-25875078.0 +677.0,-6088.79541015625,-25875884.0 +678.0,-6084.87109375,-25876746.0 +679.0,-6087.46435546875,-25877222.0 +680.0,-6082.55224609375,-25877566.0 +682.0,-6082.67822265625,-25880790.0 +683.0,-6074.48876953125,-25883824.0 +684.0,-6075.23486328125,-25887358.0 +686.0,-6072.09375,-25888408.0 +687.0,-6073.578125,-25888942.0 +688.0,-6069.44921875,-25890054.0 +690.0,-6069.78125,-25891822.0 +691.0,-6064.90234375,-25893180.0 +692.0,-6065.74609375,-25895506.0 +694.0,-6062.984375,-25896566.0 +695.0,-6063.76513671875,-25897332.0 +696.0,-6060.3046875,-25898128.0 +697.0,-6062.15869140625,-25898684.0 +698.0,-6057.90234375,-25899238.0 +699.0,-6061.05859375,-25899578.0 +701.0,-6056.48388671875,-25902584.0 +702.0,-6055.33154296875,-25904360.0 +703.0,-6048.97802734375,-25908372.0 +705.0,-6049.89990234375,-25909172.0 +706.0,-6046.21142578125,-25910034.0 +707.0,-6048.43310546875,-25910362.0 +708.0,-6043.78271484375,-25911088.0 +710.0,-6044.109375,-25913490.0 +711.0,-6038.54150390625,-25914854.0 +712.0,-6039.35400390625,-25917848.0 +714.0,-6036.36767578125,-25918700.0 +715.0,-6037.52099609375,-25919374.0 +716.0,-6033.865234375,-25920074.0 +717.0,-6036.13427734375,-25920616.0 +718.0,-6031.615234375,-25920778.0 +719.0,-6035.43603515625,-25921070.0 +721.0,-6030.03271484375,-25924730.0 +723.0,-6029.48974609375,-25926252.0 +724.0,-6026.15380859375,-25927704.0 +725.0,-6027.51171875,-25927870.0 +726.0,-6023.04833984375,-25929616.0 +728.0,-6023.61181640625,-25930880.0 +729.0,-6020.27685546875,-25931512.0 +730.0,-6021.470703125,-25932880.0 +732.0,-6018.849609375,-25933906.0 +733.0,-6019.12939453125,-25934874.0 +734.0,-6015.73681640625,-25936158.0 +735.0,-6017.47802734375,-25936216.0 +736.0,-6012.943359375,-25937410.0 +738.0,-6013.5703125,-25938846.0 +739.0,-6009.78466796875,-25939384.0 +740.0,-6010.921875,-25941158.0 +742.0,-6008.21484375,-25942196.0 +743.0,-6008.998046875,-25943078.0 +744.0,-6005.5703125,-25944166.0 +745.0,-6007.46923828125,-25944480.0 +746.0,-6003.04443359375,-25945488.0 +748.0,-6003.505859375,-25947356.0 +749.0,-5999.05224609375,-25948292.0 +750.0,-5999.990234375,-25950640.0 +752.0,-5997.19677734375,-25951436.0 +753.0,-5998.22900390625,-25952154.0 +754.0,-5994.712890625,-25952992.0 +755.0,-5996.86767578125,-25953278.0 +756.0,-5992.37255859375,-25953670.0 +758.0,-5992.72314453125,-25955980.0 +759.0,-5986.23828125,-25958088.0 +760.0,-5986.96337890625,-25961074.0 +762.0,-5983.94580078125,-25961856.0 +763.0,-5985.15771484375,-25962550.0 +764.0,-5981.61767578125,-25963046.0 +765.0,-5983.90087890625,-25963674.0 +766.0,-5979.49462890625,-25963702.0 +767.0,-5983.27294921875,-25963926.0 +769.0,-5978.04833984375,-25967528.0 +771.0,-5977.888671875,-25968794.0 +772.0,-5974.61181640625,-25970032.0 +773.0,-5975.96826171875,-25970320.0 +774.0,-5971.6171875,-25971896.0 +776.0,-5972.251953125,-25973062.0 +777.0,-5968.91015625,-25973560.0 +778.0,-5970.14208984375,-25974914.0 +780.0,-5967.58984375,-25975846.0 +781.0,-5968.06884765625,-25976576.0 +782.0,-5964.671875,-25977852.0 +783.0,-5966.4453125,-25977984.0 +784.0,-5962.10302734375,-25979228.0 +786.0,-5962.6875,-25980628.0 +787.0,-5958.953125,-25981062.0 +788.0,-5960.080078125,-25982818.0 +790.0,-5957.38232421875,-25983802.0 +791.0,-5958.267578125,-25984516.0 +792.0,-5954.86083984375,-25985392.0 +793.0,-5956.89306640625,-25985412.0 +794.0,-5952.51611328125,-25986382.0 +796.0,-5952.9921875,-25988224.0 +797.0,-5948.421875,-25988998.0 +798.0,-5949.39404296875,-25991342.0 +800.0,-5946.66748046875,-25992196.0 +801.0,-5947.73193359375,-25992822.0 +802.0,-5944.26708984375,-25993430.0 +803.0,-5946.45068359375,-25993954.0 +804.0,-5942.08154296875,-25994272.0 +806.0,-5942.45068359375,-25996628.0 +807.0,-5935.78759765625,-25998774.0 +808.0,-5936.54931640625,-26001818.0 +810.0,-5933.71875,-26002460.0 +811.0,-5934.88671875,-26003156.0 +812.0,-5931.353515625,-26003476.0 +813.0,-5933.681640625,-26004042.0 +815.0,-5930.26708984375,-26005916.0 +816.0,-5929.62890625,-26007242.0 +817.0,-5924.85986328125,-26009684.0 +819.0,-5925.50439453125,-26010394.0 +820.0,-5922.54541015625,-26011110.0 +821.0,-5924.01171875,-26011774.0 +822.0,-5920.25244140625,-26012338.0 +823.0,-5922.98388671875,-26012504.0 +824.0,-5918.3046875,-26012660.0 +826.0,-5918.509765625,-26015604.0 +827.0,-5911.67041015625,-26016994.0 +828.0,-5912.41552734375,-26020754.0 +830.0,-5909.32666015625,-26021454.0 +831.0,-5910.97265625,-26022034.0 +832.0,-5907.19482421875,-26022216.0 +833.0,-5910.103515625,-26022424.0 +835.0,-5906.01904296875,-26024980.0 +836.0,-5905.22314453125,-26026224.0 +837.0,-5899.51953125,-26029490.0 +839.0,-5900.47216796875,-26030120.0 +840.0,-5897.14404296875,-26030854.0 +841.0,-5899.1875,-26031146.0 +842.0,-5894.99462890625,-26031862.0 +844.0,-5895.47119140625,-26033822.0 +845.0,-5890.37451171875,-26034686.0 +846.0,-5891.27001953125,-26037332.0 +848.0,-5888.52978515625,-26038154.0 +849.0,-5889.6796875,-26038776.0 +850.0,-5886.27099609375,-26039212.0 +851.0,-5888.35888671875,-26039572.0 +852.0,-5884.31640625,-26039600.0 +853.0,-5887.88916015625,-26039614.0 +855.0,-5883.05126953125,-26042728.0 +857.0,-5882.69677734375,-26044008.0 +858.0,-5879.69482421875,-26045176.0 +859.0,-5880.83056640625,-26045386.0 +860.0,-5876.83251953125,-26046842.0 +862.0,-5877.48291015625,-26047804.0 +863.0,-5874.3828125,-26048462.0 +864.0,-5875.58935546875,-26049420.0 +866.0,-5873.25927734375,-26050272.0 +867.0,-5873.59521484375,-26050958.0 +868.0,-5870.53662109375,-26051998.0 +869.0,-5872.14404296875,-26052104.0 +870.0,-5868.06103515625,-26053304.0 +872.0,-5868.66259765625,-26054550.0 +873.0,-5865.30419921875,-26055016.0 +874.0,-5866.40869140625,-26056408.0 +876.0,-5864.00390625,-26057318.0 +877.0,-5864.77099609375,-26058012.0 +878.0,-5861.61962890625,-26058806.0 +879.0,-5863.48828125,-26058966.0 +880.0,-5859.40478515625,-26059624.0 +882.0,-5859.96630859375,-26061068.0 +883.0,-5855.94970703125,-26061604.0 +884.0,-5856.990234375,-26063576.0 +886.0,-5854.46533203125,-26064372.0 +887.0,-5855.46240234375,-26064904.0 +888.0,-5852.20703125,-26065598.0 +889.0,-5854.21044921875,-26065948.0 +890.0,-5850.15185546875,-26066284.0 +892.0,-5850.580078125,-26068304.0 +893.0,-5844.97900390625,-26069484.0 +894.0,-5845.80029296875,-26072070.0 +896.0,-5843.17578125,-26072688.0 +897.0,-5844.31298828125,-26073332.0 +898.0,-5841.06298828125,-26073700.0 +899.0,-5843.14208984375,-26074250.0 +901.0,-5840.078125,-26075882.0 +902.0,-5839.26416015625,-26077304.0 +903.0,-5834.966796875,-26079468.0 +905.0,-5835.58642578125,-26079944.0 +906.0,-5832.79638671875,-26080514.0 +907.0,-5834.17138671875,-26081040.0 +908.0,-5830.7265625,-26081628.0 +909.0,-5833.22265625,-26081702.0 +910.0,-5828.859375,-26081904.0 +912.0,-5829.20263671875,-26084460.0 +913.0,-5823.03759765625,-26085838.0 +914.0,-5823.849609375,-26089120.0 +916.0,-5820.98291015625,-26089694.0 +917.0,-5822.51416015625,-26090174.0 +918.0,-5818.98583984375,-26090306.0 +919.0,-5821.61279296875,-26090530.0 +921.0,-5817.98974609375,-26092552.0 +922.0,-5818.01318359375,-26093260.0 +923.0,-5812.927734375,-26095996.0 +925.0,-5813.85009765625,-26096508.0 +926.0,-5810.81640625,-26096916.0 +927.0,-5812.67626953125,-26097244.0 +928.0,-5808.83447265625,-26097606.0 +929.0,-5812.02978515625,-26097726.0 +931.0,-5807.90771484375,-26100186.0 +932.0,-5805.93115234375,-26102096.0 +933.0,-5800.2890625,-26105588.0 +935.0,-5801.24755859375,-26106172.0 +936.0,-5797.90966796875,-26106918.0 +938.0,-5798.39404296875,-26107794.0 +939.0,-5794.8828125,-26108812.0 +940.0,-5795.71484375,-26109944.0 +942.0,-5793.67431640625,-26110562.0 +943.0,-5794.18115234375,-26111138.0 +944.0,-5791.578125,-26111760.0 +945.0,-5792.79052734375,-26112216.0 +946.0,-5789.5546875,-26112802.0 +947.0,-5791.853515625,-26112972.0 +948.0,-5787.64599609375,-26113304.0 +950.0,-5788.07568359375,-26115606.0 +951.0,-5782.82666015625,-26116108.0 +952.0,-5783.73193359375,-26118922.0 +954.0,-5781.01611328125,-26119346.0 +955.0,-5782.42236328125,-26119948.0 +956.0,-5779.060546875,-26120256.0 +957.0,-5781.45361328125,-26120818.0 +959.0,-5778.18896484375,-26122602.0 +960.0,-5777.951171875,-26123360.0 +961.0,-5773.341796875,-26125744.0 +963.0,-5774.05029296875,-26126282.0 +964.0,-5771.29150390625,-26126896.0 +965.0,-5772.92333984375,-26127080.0 +966.0,-5769.27685546875,-26127592.0 +967.0,-5772.20654296875,-26127604.0 +969.0,-5768.45703125,-26129728.0 +970.0,-5766.26904296875,-26131764.0 +971.0,-5761.0625,-26134780.0 +973.0,-5761.861328125,-26134990.0 +974.0,-5758.91650390625,-26135802.0 +976.0,-5759.30322265625,-26136650.0 +977.0,-5755.86767578125,-26137680.0 +978.0,-5756.66650390625,-26138742.0 +979.0,-5753.64990234375,-26138772.0 +980.0,-5755.09765625,-26140180.0 +982.0,-5752.57177734375,-26141036.0 +983.0,-5753.591796875,-26141258.0 +984.0,-5750.29296875,-26142140.0 +986.0,-5750.80615234375,-26142928.0 +987.0,-5747.9140625,-26143538.0 +988.0,-5748.87646484375,-26144534.0 +990.0,-5746.92041015625,-26145200.0 +991.0,-5747.28662109375,-26145796.0 +992.0,-5744.65185546875,-26146514.0 +993.0,-5746.00634765625,-26146706.0 +994.0,-5742.68896484375,-26147604.0 +996.0,-5743.212890625,-26148602.0 +997.0,-5739.76416015625,-26149360.0 +998.0,-5740.74169921875,-26150562.0 +1000.0,-5738.625,-26150960.0 +1001.0,-5739.28173828125,-26151480.0 +1002.0,-5736.60986328125,-26151934.0 +1003.0,-5738.091796875,-26152198.0 +1004.0,-5734.72998046875,-26152772.0 +1005.0,-5737.341796875,-26152874.0 +1006.0,-5732.953125,-26153184.0 +1008.0,-5733.37646484375,-26155738.0 +1009.0,-5728.416015625,-26155740.0 +1010.0,-5729.31640625,-26158854.0 +1012.0,-5726.54443359375,-26159246.0 +1013.0,-5728.13427734375,-26159782.0 +1014.0,-5724.74267578125,-26159878.0 +1015.0,-5727.46142578125,-26160148.0 +1017.0,-5723.88232421875,-26162052.0 +1018.0,-5724.08544921875,-26162306.0 +1019.0,-5719.111328125,-26165104.0 +1021.0,-5720.11376953125,-26165574.0 +1022.0,-5717.15234375,-26166214.0 +1023.0,-5719.0703125,-26166370.0 +1024.0,-5715.30322265625,-26166728.0 +1026.0,-5715.77783203125,-26168318.0 +1027.0,-5710.98779296875,-26169252.0 +1028.0,-5711.91064453125,-26171352.0 +1030.0,-5709.5234375,-26171826.0 +1031.0,-5710.59814453125,-26172438.0 +1032.0,-5707.60546875,-26172696.0 +1033.0,-5709.58447265625,-26173110.0 +1035.0,-5706.826171875,-26174444.0 +1036.0,-5706.09619140625,-26175478.0 +1037.0,-5702.24853515625,-26177292.0 +1039.0,-5702.80419921875,-26177804.0 +1040.0,-5700.33837890625,-26178506.0 +1041.0,-5701.6328125,-26178840.0 +1042.0,-5698.474609375,-26179302.0 +1043.0,-5700.81103515625,-26179402.0 +1044.0,-5696.759765625,-26179456.0 +1046.0,-5697.19970703125,-26181568.0 +1047.0,-5691.81494140625,-26182168.0 +1048.0,-5692.70703125,-26184972.0 +1050.0,-5690.05419921875,-26185488.0 +1051.0,-5691.47119140625,-26186028.0 +1052.0,-5688.29833984375,-26186192.0 +1053.0,-5690.73388671875,-26186572.0 +1055.0,-5687.46484375,-26188250.0 +1056.0,-5687.83251953125,-26188414.0 +1057.0,-5683.39990234375,-26190704.0 +1059.0,-5684.234375,-26191092.0 +1060.0,-5681.50537109375,-26191574.0 +1061.0,-5683.17041015625,-26191866.0 +1062.0,-5679.69677734375,-26192270.0 +1064.0,-5680.18896484375,-26193802.0 +1065.0,-5674.71240234375,-26195280.0 +1066.0,-5675.625,-26197166.0 +1068.0,-5673.359375,-26197718.0 +1069.0,-5674.298828125,-26198112.0 +1070.0,-5671.578125,-26198500.0 +1071.0,-5673.33984375,-26198848.0 +1072.0,-5669.84521484375,-26198896.0 +1073.0,-5672.84228515625,-26199186.0 +1075.0,-5669.0625,-26201268.0 +1077.0,-5669.06103515625,-26202004.0 +1078.0,-5666.64990234375,-26202794.0 +1079.0,-5667.72021484375,-26202942.0 +1080.0,-5664.462890625,-26203892.0 +1082.0,-5665.0703125,-26204598.0 +1083.0,-5662.37158203125,-26205058.0 +1084.0,-5663.40771484375,-26206006.0 +1086.0,-5661.4921875,-26206582.0 +1087.0,-5661.95263671875,-26207130.0 +1088.0,-5659.42822265625,-26207826.0 +1089.0,-5660.86962890625,-26207900.0 +1090.0,-5657.54931640625,-26208576.0 +1092.0,-5658.08447265625,-26209428.0 +1093.0,-5655.02880859375,-26209910.0 +1094.0,-5656.02392578125,-26211158.0 +1096.0,-5654.0,-26211746.0 +1097.0,-5654.69775390625,-26212170.0 +1098.0,-5652.20361328125,-26212712.0 +1099.0,-5653.58984375,-26212918.0 +1100.0,-5650.26171875,-26213450.0 +1102.0,-5650.86083984375,-26214632.0 +1103.0,-5646.91845703125,-26215340.0 +1104.0,-5647.8203125,-26216932.0 +1106.0,-5645.67431640625,-26217430.0 +1107.0,-5646.63623046875,-26217916.0 +1108.0,-5644.037109375,-26218092.0 +1109.0,-5645.67529296875,-26218492.0 +1110.0,-5642.298828125,-26218696.0 +1111.0,-5645.150390625,-26218754.0 +1113.0,-5641.69189453125,-26220754.0 +1114.0,-5641.44287109375,-26221450.0 +1115.0,-5636.47265625,-26224134.0 +1117.0,-5637.51806640625,-26224500.0 +1118.0,-5634.60009765625,-26225048.0 +1120.0,-5635.09326171875,-26225816.0 +1121.0,-5631.51416015625,-26226740.0 +1122.0,-5632.37646484375,-26227834.0 +1124.0,-5630.533203125,-26228434.0 +1125.0,-5631.04345703125,-26228868.0 +1126.0,-5628.74462890625,-26229324.0 +1127.0,-5629.91162109375,-26229660.0 +1128.0,-5626.97705078125,-26230012.0 +1129.0,-5629.12255859375,-26230104.0 +1130.0,-5625.40625,-26230224.0 +1132.0,-5625.83349609375,-26232172.0 +1133.0,-5620.30859375,-26233166.0 +1134.0,-5621.19091796875,-26235782.0 +1136.0,-5618.76171875,-26236006.0 +1137.0,-5620.06005859375,-26236486.0 +1139.0,-5618.02099609375,-26237282.0 +1140.0,-5617.55810546875,-26238172.0 +1141.0,-5614.90771484375,-26239152.0 +1143.0,-5615.173828125,-26239734.0 +1144.0,-5613.16796875,-26240132.0 +1145.0,-5613.97314453125,-26240722.0 +1146.0,-5611.46923828125,-26241070.0 +1147.0,-5612.99951171875,-26241352.0 +1148.0,-5609.84228515625,-26241378.0 +1149.0,-5612.34619140625,-26241656.0 +1151.0,-5609.17919921875,-26243336.0 +1152.0,-5609.12451171875,-26243720.0 +1153.0,-5604.69091796875,-26246014.0 +1155.0,-5605.59326171875,-26246454.0 +1156.0,-5602.98681640625,-26246904.0 +1157.0,-5604.75,-26247088.0 +1158.0,-5601.337890625,-26247398.0 +1160.0,-5601.89208984375,-26248786.0 +1161.0,-5597.5390625,-26249334.0 +1162.0,-5598.50537109375,-26251040.0 +1164.0,-5596.33837890625,-26251406.0 +1165.0,-5597.37255859375,-26251894.0 +1166.0,-5594.73291015625,-26252230.0 +1167.0,-5596.57470703125,-26252630.0 +1169.0,-5594.08447265625,-26253820.0 +1170.0,-5593.44677734375,-26254706.0 +1171.0,-5590.01708984375,-26256232.0 +1173.0,-5590.61962890625,-26256632.0 +1174.0,-5588.3515625,-26257086.0 +1175.0,-5589.53955078125,-26257440.0 +1176.0,-5586.68505859375,-26257784.0 +1177.0,-5588.86083984375,-26257948.0 +1178.0,-5585.09130859375,-26258136.0 +1180.0,-5585.62890625,-26259918.0 +1181.0,-5580.70947265625,-26260464.0 +1182.0,-5581.69580078125,-26262820.0 +1184.0,-5579.25146484375,-26263114.0 +1185.0,-5580.57421875,-26263672.0 +1186.0,-5577.716796875,-26263774.0 +1187.0,-5580.013671875,-26264214.0 +1189.0,-5577.123046875,-26265632.0 +1190.0,-5577.50927734375,-26265766.0 +1191.0,-5573.57958984375,-26267554.0 +1193.0,-5574.375,-26267952.0 +1194.0,-5571.92236328125,-26268418.0 +1195.0,-5573.46142578125,-26268744.0 +1196.0,-5570.30322265625,-26268828.0 +1197.0,-5572.99365234375,-26268892.0 +1199.0,-5569.74462890625,-26270608.0 +1200.0,-5569.07763671875,-26271434.0 +1201.0,-5564.54052734375,-26273922.0 +1203.0,-5565.5,-26274248.0 +1204.0,-5562.8984375,-26274778.0 +1206.0,-5563.306640625,-26275292.0 +1207.0,-5560.20654296875,-26276106.0 +1208.0,-5560.97314453125,-26276988.0 +1210.0,-5559.30029296875,-26277480.0 +1211.0,-5559.830078125,-26277934.0 +1212.0,-5557.681640625,-26278300.0 +1213.0,-5558.82861328125,-26278788.0 +1214.0,-5556.091796875,-26279198.0 +1215.0,-5558.04296875,-26279334.0 +1216.0,-5554.54248046875,-26279464.0 +1218.0,-5555.052734375,-26280958.0 +1219.0,-5550.27294921875,-26281656.0 +1220.0,-5551.22705078125,-26283752.0 +1222.0,-5548.92333984375,-26284022.0 +1223.0,-5550.20556640625,-26284448.0 +1224.0,-5547.435546875,-26284492.0 +1225.0,-5549.484375,-26284934.0 +1227.0,-5546.86328125,-26286224.0 +1228.0,-5547.21142578125,-26286508.0 +1229.0,-5543.509765625,-26288170.0 +1231.0,-5544.26513671875,-26288458.0 +1232.0,-5541.9453125,-26288812.0 +1233.0,-5543.337890625,-26289120.0 +1234.0,-5540.37451171875,-26289298.0 +1235.0,-5542.73828125,-26289382.0 +1237.0,-5539.84716796875,-26290874.0 +1238.0,-5539.15771484375,-26291818.0 +1239.0,-5535.06884765625,-26293834.0 +1241.0,-5535.873046875,-26294192.0 +1242.0,-5533.41552734375,-26294736.0 +1243.0,-5535.072265625,-26294848.0 +1244.0,-5531.86474609375,-26295280.0 +1246.0,-5532.48291015625,-26296408.0 +1247.0,-5528.875,-26296824.0 +1248.0,-5529.85205078125,-26298328.0 +1250.0,-5527.84521484375,-26298704.0 +1251.0,-5528.81787109375,-26299122.0 +1252.0,-5526.310546875,-26299388.0 +1253.0,-5527.998046875,-26299680.0 +1254.0,-5524.818359375,-26299684.0 +1255.0,-5527.74365234375,-26299704.0 +1257.0,-5524.34765625,-26301654.0 +1258.0,-5524.77490234375,-26301700.0 +1259.0,-5519.99365234375,-26304230.0 +1261.0,-5521.09033203125,-26304598.0 +1262.0,-5518.40771484375,-26305004.0 +1264.0,-5518.92138671875,-26305750.0 +1265.0,-5515.662109375,-26306516.0 +1266.0,-5516.48828125,-26307536.0 +1268.0,-5514.740234375,-26307948.0 +1269.0,-5515.40380859375,-26308362.0 +1270.0,-5513.20361328125,-26308684.0 +1271.0,-5514.51708984375,-26308932.0 +1272.0,-5511.76611328125,-26309240.0 +1273.0,-5513.90234375,-26309298.0 +1274.0,-5510.322265625,-26309332.0 +1276.0,-5510.82666015625,-26311138.0 +1277.0,-5505.75732421875,-26311768.0 +1278.0,-5506.70361328125,-26314214.0 +1280.0,-5504.46337890625,-26314496.0 +1281.0,-5505.818359375,-26315002.0 +1282.0,-5503.04248046875,-26315010.0 +1283.0,-5505.27880859375,-26315380.0 +1285.0,-5502.55712890625,-26316698.0 +1287.0,-5502.5625,-26317388.0 +1288.0,-5500.69384765625,-26317854.0 +1289.0,-5501.49658203125,-26317934.0 +1290.0,-5498.99365234375,-26318458.0 +1292.0,-5499.46630859375,-26319004.0 +1293.0,-5497.10205078125,-26319404.0 +1294.0,-5497.96484375,-26320022.0 +1296.0,-5496.47998046875,-26320412.0 +1297.0,-5496.87646484375,-26320918.0 +1298.0,-5494.84619140625,-26321406.0 +1299.0,-5495.88134765625,-26321600.0 +1300.0,-5493.23779296875,-26322168.0 +1301.0,-5495.1640625,-26322204.0 +1302.0,-5491.76416015625,-26322580.0 +1304.0,-5492.44775390625,-26323746.0 +1306.0,-5490.50537109375,-26324264.0 +1307.0,-5491.140625,-26324766.0 +1308.0,-5488.98388671875,-26324960.0 +1309.0,-5490.00048828125,-26325542.0 +1311.0,-5488.37060546875,-26326122.0 +1312.0,-5488.54541015625,-26326472.0 +1313.0,-5486.373046875,-26327092.0 +1315.0,-5486.72802734375,-26327418.0 +1316.0,-5484.85302734375,-26327884.0 +1317.0,-5485.54736328125,-26328354.0 +1318.0,-5483.34521484375,-26328584.0 +1319.0,-5484.6171875,-26329176.0 +1321.0,-5482.84423828125,-26329762.0 +1322.0,-5482.814453125,-26330420.0 +1323.0,-5480.4921875,-26331284.0 +1325.0,-5480.88818359375,-26331734.0 +1326.0,-5478.99755859375,-26332174.0 +1327.0,-5479.86328125,-26332606.0 +1328.0,-5477.58349609375,-26332734.0 +1329.0,-5478.99462890625,-26333040.0 +1330.0,-5476.16796875,-26333182.0 +1331.0,-5478.5703125,-26333478.0 +1333.0,-5475.68994140625,-26334786.0 +1334.0,-5476.33349609375,-26334838.0 +1335.0,-5472.470703125,-26336672.0 +1337.0,-5473.36962890625,-26337052.0 +1338.0,-5470.99072265625,-26337310.0 +1339.0,-5472.69140625,-26337398.0 +1340.0,-5469.64306640625,-26337616.0 +1341.0,-5472.35302734375,-26337644.0 +1343.0,-5469.20068359375,-26339332.0 +1344.0,-5468.8125,-26339994.0 +1345.0,-5464.36865234375,-26342266.0 +1347.0,-5465.42041015625,-26342458.0 +1348.0,-5462.873046875,-26342898.0 +1350.0,-5463.37353515625,-26343590.0 +1351.0,-5460.58251953125,-26344112.0 +1352.0,-5461.50390625,-26345034.0 +1354.0,-5459.88525390625,-26345410.0 +1355.0,-5460.5234375,-26345810.0 +1356.0,-5458.44677734375,-26346210.0 +1357.0,-5459.66259765625,-26346438.0 +1358.0,-5456.98876953125,-26346652.0 +1359.0,-5459.09423828125,-26346666.0 +1360.0,-5455.6953125,-26346772.0 +1362.0,-5456.30419921875,-26348268.0 +1363.0,-5452.24853515625,-26348540.0 +1364.0,-5453.216796875,-26350670.0 +1366.0,-5451.1044921875,-26350952.0 +1367.0,-5452.3681640625,-26351390.0 +1369.0,-5450.64404296875,-26352068.0 +1370.0,-5450.33544921875,-26352714.0 +1371.0,-5447.9150390625,-26353582.0 +1373.0,-5448.31103515625,-26354122.0 +1374.0,-5446.58837890625,-26354480.0 +1375.0,-5447.35400390625,-26354794.0 +1376.0,-5445.14453125,-26355076.0 +1377.0,-5446.60400390625,-26355266.0 +1378.0,-5443.77880859375,-26355368.0 +1379.0,-5446.17333984375,-26355412.0 +1381.0,-5443.37744140625,-26356882.0 +1382.0,-5443.49951171875,-26357238.0 +1383.0,-5439.53857421875,-26359082.0 +1385.0,-5440.4697265625,-26359366.0 +1386.0,-5438.1376953125,-26359770.0 +1387.0,-5439.833984375,-26359816.0 +1388.0,-5436.72998046875,-26360104.0 +1390.0,-5437.40283203125,-26361190.0 +1391.0,-5433.97607421875,-26361630.0 +1392.0,-5434.99658203125,-26363088.0 +1394.0,-5433.09814453125,-26363422.0 +1395.0,-5434.14111328125,-26363810.0 +1396.0,-5431.787109375,-26363968.0 +1397.0,-5433.62353515625,-26364184.0 +1399.0,-5431.39453125,-26365170.0 +1400.0,-5430.94287109375,-26365918.0 +1401.0,-5427.943359375,-26367288.0 +1403.0,-5428.525390625,-26367600.0 +1404.0,-5426.53271484375,-26367906.0 +1405.0,-5427.72265625,-26368212.0 +1406.0,-5425.14892578125,-26368524.0 +1408.0,-5425.67529296875,-26369306.0 +1409.0,-5422.115234375,-26370172.0 +1410.0,-5423.05810546875,-26371282.0 +1412.0,-5421.34716796875,-26371684.0 +1413.0,-5422.08642578125,-26371928.0 +1414.0,-5420.0,-26372160.0 +1415.0,-5421.38623046875,-26372464.0 +1417.0,-5419.61328125,-26373132.0 +1418.0,-5418.94873046875,-26374062.0 +1419.0,-5416.52490234375,-26374954.0 +1421.0,-5416.8984375,-26375236.0 +1422.0,-5415.18505859375,-26375672.0 +1423.0,-5416.03173828125,-26376040.0 +1424.0,-5413.8447265625,-26376338.0 +1425.0,-5415.4453125,-26376506.0 +1426.0,-5412.54833984375,-26376726.0 +1427.0,-5415.07421875,-26376800.0 +1429.0,-5412.29931640625,-26378280.0 +1430.0,-5411.951171875,-26378880.0 +1431.0,-5408.025390625,-26380860.0 +1433.0,-5408.97900390625,-26381036.0 +1434.0,-5406.65087890625,-26381464.0 +1436.0,-5407.14111328125,-26381972.0 +1437.0,-5404.48974609375,-26382510.0 +1438.0,-5405.380859375,-26383334.0 +1440.0,-5403.90673828125,-26383638.0 +1441.0,-5404.43310546875,-26384008.0 +1442.0,-5402.56201171875,-26384362.0 +1443.0,-5403.65380859375,-26384568.0 +1444.0,-5401.27294921875,-26384830.0 +1446.0,-5401.765625,-26385310.0 +1447.0,-5398.12158203125,-26386694.0 +1448.0,-5398.9404296875,-26387720.0 +1450.0,-5397.40673828125,-26388246.0 +1451.0,-5398.04345703125,-26388590.0 +1452.0,-5396.11083984375,-26388926.0 +1453.0,-5397.263671875,-26389248.0 +1454.0,-5394.84521484375,-26389350.0 +1455.0,-5396.853515625,-26389624.0 +1457.0,-5394.50341796875,-26390676.0 +1458.0,-5394.83837890625,-26390758.0 +1459.0,-5391.59375,-26392212.0 +1461.0,-5392.32373046875,-26392532.0 +1462.0,-5390.30126953125,-26392860.0 +1463.0,-5391.67431640625,-26393032.0 +1464.0,-5389.06396484375,-26393302.0 +1465.0,-5391.38427734375,-26393344.0 +1467.0,-5388.7734375,-26394654.0 +1468.0,-5388.02392578125,-26395416.0 +1469.0,-5384.42333984375,-26397176.0 +1471.0,-5385.27783203125,-26397350.0 +1472.0,-5383.11572265625,-26397586.0 +1474.0,-5383.58203125,-26398098.0 +1475.0,-5381.11669921875,-26398672.0 +1476.0,-5381.892578125,-26399398.0 +1478.0,-5380.55126953125,-26399756.0 +1479.0,-5381.03564453125,-26400118.0 +1480.0,-5379.310546875,-26400446.0 +1481.0,-5380.310546875,-26400696.0 +1482.0,-5378.056640625,-26401042.0 +1483.0,-5379.79833984375,-26401136.0 +1484.0,-5376.818359375,-26401356.0 +1486.0,-5377.416015625,-26402518.0 +1487.0,-5373.76220703125,-26402820.0 +1488.0,-5374.70849609375,-26404414.0 +1490.0,-5372.8994140625,-26404666.0 +1491.0,-5374.02001953125,-26405016.0 +1492.0,-5371.73193359375,-26405020.0 +1493.0,-5373.52978515625,-26405318.0 +1495.0,-5371.42041015625,-26406268.0 +1496.0,-5371.7646484375,-26406816.0 +1497.0,-5368.80810546875,-26408056.0 +1499.0,-5369.49755859375,-26408344.0 +1500.0,-5367.62646484375,-26408650.0 +1501.0,-5368.876953125,-26408834.0 +1502.0,-5366.36669921875,-26409110.0 +1503.0,-5368.46484375,-26409234.0 +1504.0,-5365.27783203125,-26409254.0 +1506.0,-5365.91259765625,-26410802.0 +1507.0,-5361.6904296875,-26411024.0 +1508.0,-5362.72509765625,-26413010.0 +1510.0,-5360.7431640625,-26413220.0 +1511.0,-5362.11279296875,-26413466.0 +1513.0,-5360.40087890625,-26413972.0 +1514.0,-5360.55322265625,-26414596.0 +1515.0,-5358.26953125,-26415336.0 +1517.0,-5358.78759765625,-26415626.0 +1518.0,-5357.115234375,-26415938.0 +1519.0,-5357.99365234375,-26416286.0 +1520.0,-5355.9296875,-26416432.0 +1521.0,-5357.43359375,-26416696.0 +1522.0,-5354.79345703125,-26416796.0 +1523.0,-5357.24853515625,-26416956.0 +1525.0,-5354.4921875,-26418324.0 +1527.0,-5354.6298828125,-26418834.0 +1528.0,-5352.82080078125,-26419448.0 +1529.0,-5353.72216796875,-26419514.0 +1530.0,-5351.35302734375,-26420100.0 +1532.0,-5351.89501953125,-26420514.0 +1533.0,-5350.12451171875,-26420798.0 +1534.0,-5351.07373046875,-26421332.0 +1536.0,-5349.68994140625,-26421644.0 +1537.0,-5350.16259765625,-26421966.0 +1538.0,-5348.29150390625,-26422394.0 +1539.0,-5349.42919921875,-26422400.0 +1540.0,-5346.95166015625,-26422882.0 +1542.0,-5347.57568359375,-26423522.0 +1543.0,-5345.40185546875,-26423754.0 +1544.0,-5346.41845703125,-26424410.0 +1546.0,-5344.94580078125,-26424720.0 +1547.0,-5345.6328125,-26425012.0 +1548.0,-5343.77197265625,-26425390.0 +1549.0,-5345.00439453125,-26425434.0 +1550.0,-5342.55810546875,-26425854.0 +1552.0,-5343.115234375,-26426488.0 +1553.0,-5340.57080078125,-26426910.0 +1554.0,-5341.537109375,-26427814.0 +1556.0,-5339.99951171875,-26428196.0 +1557.0,-5340.791015625,-26428584.0 +1558.0,-5338.8681640625,-26428950.0 +1559.0,-5340.25634765625,-26428964.0 +1560.0,-5337.7490234375,-26429034.0 +1561.0,-5340.05126953125,-26429038.0 +1562.0,-5336.6953125,-26429040.0 +1564.0,-5337.33984375,-26430730.0 +1566.0,-5334.99951171875,-26431176.0 +1567.0,-5335.76953125,-26431740.0 +1569.0,-5334.46533203125,-26432122.0 +1570.0,-5335.01318359375,-26432398.0 +1571.0,-5333.37060546875,-26432684.0 +1572.0,-5334.330078125,-26433004.0 +1573.0,-5332.171875,-26433284.0 +1574.0,-5333.84326171875,-26433442.0 +1575.0,-5331.08203125,-26433608.0 +1577.0,-5331.73291015625,-26434674.0 +1578.0,-5328.46435546875,-26434944.0 +1579.0,-5329.50927734375,-26436306.0 +1581.0,-5327.74365234375,-26436768.0 +1582.0,-5328.78955078125,-26437088.0 +1583.0,-5326.58251953125,-26437202.0 +1584.0,-5328.322265625,-26437412.0 +1586.0,-5326.32861328125,-26438338.0 +1587.0,-5326.63525390625,-26438662.0 +1588.0,-5323.859375,-26439730.0 +1590.0,-5324.58154296875,-26440068.0 +1591.0,-5322.76416015625,-26440396.0 +1593.0,-5323.16162109375,-26440698.0 +1594.0,-5320.0107421875,-26442096.0 +1595.0,-5320.638671875,-26442660.0 +1596.0,-5318.53857421875,-26442862.0 +1597.0,-5319.52587890625,-26443558.0 +1599.0,-5318.03857421875,-26443954.0 +1600.0,-5318.81005859375,-26444174.0 +1601.0,-5316.91259765625,-26444566.0 +1602.0,-5318.24072265625,-26444684.0 +1603.0,-5315.76318359375,-26445042.0 +1605.0,-5316.31298828125,-26445824.0 +1606.0,-5313.77392578125,-26446082.0 +1607.0,-5314.79833984375,-26447044.0 +1609.0,-5313.232421875,-26447288.0 +1610.0,-5314.05810546875,-26447598.0 +1611.0,-5312.13818359375,-26447832.0 +1612.0,-5313.6328125,-26447924.0 +1613.0,-5311.060546875,-26448124.0 +1614.0,-5313.52490234375,-26448132.0 +1616.0,-5310.92529296875,-26449382.0 +1617.0,-5311.26953125,-26449572.0 +1618.0,-5307.60791015625,-26451346.0 +1620.0,-5308.62158203125,-26451550.0 +1621.0,-5306.45068359375,-26451826.0 +1622.0,-5308.28466796875,-26451890.0 +1623.0,-5305.3515625,-26452060.0 +1625.0,-5306.0166015625,-26453004.0 +1627.0,-5304.48779296875,-26453382.0 +1628.0,-5305.0185546875,-26453772.0 +1629.0,-5303.3349609375,-26454008.0 +1630.0,-5304.33203125,-26454484.0 +1632.0,-5302.97607421875,-26454766.0 +1633.0,-5303.37646484375,-26455110.0 +1634.0,-5301.62646484375,-26455584.0 +1635.0,-5302.85205078125,-26455592.0 +1636.0,-5300.384765625,-26456202.0 +1638.0,-5301.00048828125,-26456620.0 +1639.0,-5299.1171875,-26456848.0 +1640.0,-5300.14404296875,-26457460.0 +1642.0,-5298.73779296875,-26457860.0 +1643.0,-5299.42822265625,-26458004.0 +1644.0,-5297.541015625,-26458442.0 +1645.0,-5298.916015625,-26458506.0 +1646.0,-5296.41064453125,-26458908.0 +1648.0,-5297.04736328125,-26459630.0 +1649.0,-5294.82177734375,-26459816.0 +1650.0,-5295.82958984375,-26460702.0 +1652.0,-5294.39990234375,-26461032.0 +1653.0,-5295.24169921875,-26461268.0 +1654.0,-5293.32763671875,-26461532.0 +1655.0,-5294.78759765625,-26461596.0 +1656.0,-5292.26171875,-26461840.0 +1658.0,-5292.88818359375,-26462682.0 +1659.0,-5290.09912109375,-26463208.0 +1660.0,-5291.12353515625,-26464280.0 +1662.0,-5289.52880859375,-26464576.0 +1663.0,-5290.48193359375,-26464876.0 +1664.0,-5288.46142578125,-26465014.0 +1665.0,-5290.099609375,-26465174.0 +1667.0,-5288.27783203125,-26465814.0 +1668.0,-5288.21728515625,-26466306.0 +1669.0,-5285.76220703125,-26467298.0 +1671.0,-5286.29638671875,-26467522.0 +1672.0,-5284.72314453125,-26467850.0 +1673.0,-5285.7529296875,-26468080.0 +1674.0,-5283.60302734375,-26468412.0 +1675.0,-5285.42919921875,-26468536.0 +1676.0,-5282.59521484375,-26468640.0 +1678.0,-5283.296875,-26469684.0 +1679.0,-5280.11181640625,-26469792.0 +1680.0,-5281.1953125,-26471246.0 +1682.0,-5279.52734375,-26471560.0 +1683.0,-5280.66455078125,-26471764.0 +1684.0,-5278.50634765625,-26471936.0 +1685.0,-5280.32177734375,-26472112.0 +1687.0,-5278.36279296875,-26472960.0 +1688.0,-5279.015625,-26473220.0 +1689.0,-5276.12841796875,-26474330.0 +1691.0,-5276.91845703125,-26474656.0 +1692.0,-5275.15380859375,-26474898.0 +1693.0,-5276.490234375,-26475024.0 +1694.0,-5274.02490234375,-26475140.0 +1695.0,-5276.23974609375,-26475212.0 +1697.0,-5273.953125,-26476318.0 +1698.0,-5273.99462890625,-26476930.0 +1699.0,-5270.78515625,-26478474.0 +1701.0,-5271.6376953125,-26478652.0 +1702.0,-5269.73876953125,-26478960.0 +1703.0,-5271.19873046875,-26478964.0 +1704.0,-5268.625,-26479310.0 +1706.0,-5269.32177734375,-26480100.0 +1707.0,-5266.84130859375,-26480370.0 +1708.0,-5267.921875,-26481356.0 +1710.0,-5266.34619140625,-26481606.0 +1711.0,-5267.302734375,-26481850.0 +1712.0,-5265.35009765625,-26482046.0 +1713.0,-5267.02587890625,-26482114.0 +1715.0,-5265.291015625,-26482804.0 +1716.0,-5264.88525390625,-26483742.0 +1717.0,-5262.44482421875,-26484720.0 +1719.0,-5262.95556640625,-26484964.0 +1720.0,-5261.30029296875,-26485326.0 +1721.0,-5262.41259765625,-26485544.0 +1722.0,-5260.29345703125,-26485684.0 +1724.0,-5260.82373046875,-26486292.0 +1725.0,-5258.328125,-26486880.0 +1726.0,-5259.17724609375,-26487672.0 +1728.0,-5257.80419921875,-26487932.0 +1729.0,-5258.56298828125,-26488256.0 +1730.0,-5256.85107421875,-26488576.0 +1731.0,-5258.10400390625,-26488718.0 +1732.0,-5255.92724609375,-26488908.0 +1733.0,-5257.83642578125,-26488918.0 +1735.0,-5255.80810546875,-26489870.0 +1736.0,-5256.17626953125,-26490326.0 +1737.0,-5253.23486328125,-26491544.0 +1739.0,-5253.98779296875,-26491692.0 +1740.0,-5252.24951171875,-26491980.0 +1741.0,-5253.56982421875,-26492074.0 +1742.0,-5251.25732421875,-26492366.0 +1744.0,-5251.88134765625,-26493112.0 +1745.0,-5249.2890625,-26493516.0 +1746.0,-5250.25,-26494440.0 +1748.0,-5248.837890625,-26494494.0 +1749.0,-5249.68798828125,-26494870.0 +1750.0,-5247.85107421875,-26495062.0 +1751.0,-5249.27734375,-26495256.0 +1752.0,-5246.92529296875,-26495348.0 +1753.0,-5249.27490234375,-26495466.0 +1755.0,-5246.84814453125,-26496578.0 +1757.0,-5247.0546875,-26496948.0 +1758.0,-5245.4970703125,-26497316.0 +1759.0,-5246.4873046875,-26497512.0 +1760.0,-5244.3642578125,-26498054.0 +1762.0,-5244.92822265625,-26498390.0 +1763.0,-5243.30517578125,-26498674.0 +1764.0,-5244.24755859375,-26499164.0 +1765.0,-5242.416015625,-26499196.0 +1766.0,-5243.86572265625,-26499672.0 +1768.0,-5242.15283203125,-26500256.0 +1769.0,-5243.23095703125,-26500316.0 +1770.0,-5240.79931640625,-26501042.0 +1772.0,-5241.46923828125,-26501378.0 +1773.0,-5239.84521484375,-26501532.0 +1774.0,-5240.978515625,-26501886.0 +1776.0,-5239.62353515625,-26502214.0 +1777.0,-5240.08349609375,-26502524.0 +1778.0,-5238.271484375,-26503034.0 +1780.0,-5238.73486328125,-26503280.0 +1781.0,-5237.3125,-26503494.0 +1782.0,-5238.12353515625,-26503766.0 +1783.0,-5236.3994140625,-26503878.0 +1784.0,-5237.63525390625,-26504158.0 +1786.0,-5236.205078125,-26504630.0 +1787.0,-5236.58544921875,-26505226.0 +1788.0,-5234.64990234375,-26505780.0 +1790.0,-5235.06201171875,-26506056.0 +1791.0,-5233.70751953125,-26506256.0 +1792.0,-5234.54638671875,-26506470.0 +1793.0,-5232.78955078125,-26506648.0 +1794.0,-5234.17333984375,-26506840.0 +1795.0,-5231.82470703125,-26506860.0 +1796.0,-5234.08642578125,-26507034.0 +1798.0,-5231.80615234375,-26508092.0 +1800.0,-5232.021484375,-26508356.0 +1801.0,-5230.537109375,-26508678.0 +1802.0,-5231.3935546875,-26508860.0 +1803.0,-5229.42236328125,-26509344.0 +1805.0,-5229.923828125,-26509716.0 +1806.0,-5228.3623046875,-26509942.0 +1807.0,-5229.30224609375,-26510396.0 +1808.0,-5227.43798828125,-26510436.0 +1809.0,-5228.84716796875,-26510934.0 +1811.0,-5227.22216796875,-26511488.0 +1812.0,-5228.2109375,-26511522.0 +1813.0,-5226.03271484375,-26512160.0 +1815.0,-5226.63134765625,-26512402.0 +1816.0,-5225.076171875,-26512578.0 +1817.0,-5226.0634765625,-26512992.0 +1819.0,-5224.83740234375,-26513350.0 +1820.0,-5225.326171875,-26513664.0 +1821.0,-5223.66748046875,-26514152.0 +1823.0,-5224.11376953125,-26514404.0 +1824.0,-5222.73779296875,-26514658.0 +1825.0,-5223.4169921875,-26514992.0 +1826.0,-5221.845703125,-26515118.0 +1827.0,-5222.98876953125,-26515422.0 +1829.0,-5221.65380859375,-26515838.0 +1830.0,-5221.978515625,-26516140.0 +1831.0,-5220.06494140625,-26516746.0 +1833.0,-5220.54296875,-26517032.0 +1834.0,-5219.16650390625,-26517294.0 +1835.0,-5220.03759765625,-26517546.0 +1836.0,-5218.33056640625,-26517680.0 +1837.0,-5219.66943359375,-26517898.0 +1838.0,-5217.45263671875,-26517966.0 +1839.0,-5219.58154296875,-26518146.0 +1841.0,-5217.41259765625,-26519046.0 +1842.0,-5218.3828125,-26519074.0 +1843.0,-5215.30126953125,-26520338.0 +1845.0,-5216.21240234375,-26520544.0 +1846.0,-5214.37451171875,-26520826.0 +1848.0,-5214.84033203125,-26521202.0 +1849.0,-5212.509765625,-26521974.0 +1850.0,-5213.3134765625,-26522608.0 +1852.0,-5212.15576171875,-26522788.0 +1853.0,-5212.72119140625,-26523128.0 +1854.0,-5211.29541015625,-26523320.0 +1855.0,-5212.28515625,-26523608.0 +1856.0,-5210.419921875,-26523712.0 +1857.0,-5212.037109375,-26523892.0 +1859.0,-5210.35400390625,-26524570.0 +1860.0,-5210.55517578125,-26525230.0 +1861.0,-5208.12841796875,-26526190.0 +1863.0,-5208.78125,-26526356.0 +1864.0,-5207.25732421875,-26526652.0 +1865.0,-5208.36474609375,-26526808.0 +1866.0,-5206.3037109375,-26527028.0 +1868.0,-5206.876953125,-26527596.0 +1869.0,-5204.388671875,-26528298.0 +1870.0,-5205.38623046875,-26529038.0 +1872.0,-5204.029296875,-26529344.0 +1873.0,-5204.82470703125,-26529616.0 +1874.0,-5203.26513671875,-26529802.0 +1875.0,-5204.49462890625,-26530040.0 +1876.0,-5202.38623046875,-26530064.0 +1877.0,-5204.39990234375,-26530142.0 +1879.0,-5202.34423828125,-26531080.0 +1880.0,-5203.07177734375,-26531372.0 +1881.0,-5200.24072265625,-26532540.0 +1883.0,-5201.04248046875,-26532694.0 +1884.0,-5199.29296875,-26532910.0 +1886.0,-5199.796875,-26533312.0 +1887.0,-5197.75244140625,-26533834.0 +1888.0,-5198.47265625,-26534348.0 +1889.0,-5196.62255859375,-26534376.0 +1890.0,-5197.83935546875,-26535032.0 +1892.0,-5196.38818359375,-26535296.0 +1893.0,-5197.41357421875,-26535336.0 +1894.0,-5195.49609375,-26535628.0 +1896.0,-5196.03369140625,-26536064.0 +1897.0,-5194.345703125,-26536384.0 +1898.0,-5195.27001953125,-26536848.0 +1900.0,-5194.150390625,-26537126.0 +1901.0,-5194.70654296875,-26537408.0 +1902.0,-5193.26806640625,-26537678.0 +1903.0,-5194.39794921875,-26537860.0 +1904.0,-5192.36181640625,-26538126.0 +1906.0,-5192.90869140625,-26538606.0 +1907.0,-5190.962890625,-26539066.0 +1908.0,-5191.82177734375,-26539594.0 +1910.0,-5190.650390625,-26539926.0 +1911.0,-5191.36328125,-26540116.0 +1912.0,-5189.814453125,-26540390.0 +1913.0,-5190.990234375,-26540556.0 +1914.0,-5188.8984375,-26540708.0 +1915.0,-5190.81787109375,-26540766.0 +1916.0,-5188.10107421875,-26540810.0 +1918.0,-5188.830078125,-26541852.0 +1919.0,-5185.88134765625,-26542192.0 +1920.0,-5186.97802734375,-26543566.0 +1922.0,-5185.46826171875,-26543678.0 +1923.0,-5186.72021484375,-26543996.0 +1924.0,-5184.677734375,-26544026.0 +1925.0,-5186.52978515625,-26544266.0 +1927.0,-5184.591796875,-26545070.0 +1929.0,-5184.85595703125,-26545352.0 +1930.0,-5183.60888671875,-26545608.0 +1931.0,-5184.404296875,-26545762.0 +1932.0,-5182.58544921875,-26546124.0 +1934.0,-5183.11572265625,-26546468.0 +1935.0,-5181.56494140625,-26546700.0 +1936.0,-5182.41015625,-26547088.0 +1937.0,-5180.724609375,-26547102.0 +1938.0,-5182.041015625,-26547564.0 +1940.0,-5180.65625,-26547994.0 +1941.0,-5181.54248046875,-26548060.0 +1942.0,-5179.54638671875,-26548574.0 +1944.0,-5180.11962890625,-26548864.0 +1945.0,-5178.70166015625,-26549004.0 +1946.0,-5179.69580078125,-26549358.0 +1948.0,-5178.56103515625,-26549666.0 +1949.0,-5179.00732421875,-26549890.0 +1950.0,-5177.49267578125,-26550240.0 +1951.0,-5178.62890625,-26550382.0 +1952.0,-5176.5390625,-26550792.0 +1954.0,-5177.115234375,-26551192.0 +1955.0,-5175.55419921875,-26551436.0 +1956.0,-5176.56396484375,-26551846.0 +1958.0,-5175.4169921875,-26552090.0 +1959.0,-5175.994140625,-26552396.0 +1960.0,-5174.53076171875,-26552702.0 +1961.0,-5175.69140625,-26552796.0 +1962.0,-5173.5537109375,-26553130.0 +1964.0,-5174.21435546875,-26553590.0 +1965.0,-5172.52587890625,-26553710.0 +1966.0,-5173.54150390625,-26554312.0 +1968.0,-5172.29931640625,-26554638.0 +1969.0,-5173.06005859375,-26554844.0 +1970.0,-5171.412109375,-26555124.0 +1971.0,-5172.814453125,-26555190.0 +1972.0,-5170.58740234375,-26555474.0 +1974.0,-5171.22412109375,-26555986.0 +1975.0,-5169.15234375,-26556222.0 +1976.0,-5170.17626953125,-26557070.0 +1978.0,-5168.96630859375,-26557244.0 +1979.0,-5169.72509765625,-26557392.0 +1980.0,-5168.14404296875,-26557552.0 +1981.0,-5169.51171875,-26557630.0 +1982.0,-5167.26513671875,-26557916.0 +1983.0,-5169.5546875,-26557994.0 +1985.0,-5167.32470703125,-26558894.0 +1986.0,-5167.98291015625,-26559054.0 +1987.0,-5164.87841796875,-26560488.0 +1989.0,-5165.83642578125,-26560716.0 +1990.0,-5163.90087890625,-26561048.0 +1991.0,-5165.66015625,-26561104.0 +1992.0,-5163.11181640625,-26561360.0 +1994.0,-5163.955078125,-26562046.0 +1996.0,-5162.66943359375,-26562246.0 +1997.0,-5163.34423828125,-26562608.0 +1998.0,-5161.90087890625,-26562744.0 +1999.0,-5162.93115234375,-26563074.0 +2000.0,-5161.11865234375,-26563140.0 +2001.0,-5162.658203125,-26563416.0 +2003.0,-5161.0546875,-26564002.0 +2005.0,-5161.41943359375,-26564180.0 +2006.0,-5160.248046875,-26564404.0 +2007.0,-5160.97265625,-26564520.0 +2008.0,-5159.43310546875,-26564806.0 +2009.0,-5160.61181640625,-26564928.0 +2010.0,-5158.57080078125,-26565160.0 +2012.0,-5159.22119140625,-26565810.0 +2013.0,-5157.33740234375,-26566016.0 +2014.0,-5158.27880859375,-26566740.0 +2016.0,-5157.064453125,-26566982.0 +2017.0,-5157.8603515625,-26567186.0 +2018.0,-5156.22412109375,-26567340.0 +2019.0,-5157.63720703125,-26567542.0 +2020.0,-5155.5263671875,-26567694.0 +2022.0,-5156.14892578125,-26568306.0 +2023.0,-5153.76171875,-26568790.0 +2024.0,-5154.775390625,-26569594.0 +2026.0,-5153.47802734375,-26569792.0 +2027.0,-5154.34228515625,-26570072.0 +2028.0,-5152.7109375,-26570304.0 +2029.0,-5154.146484375,-26570370.0 +2031.0,-5152.69189453125,-26570836.0 +2032.0,-5152.837890625,-26571510.0 +2033.0,-5150.8193359375,-26572310.0 +2035.0,-5151.39990234375,-26572518.0 +2036.0,-5150.05078125,-26572680.0 +2037.0,-5151.01220703125,-26572862.0 +2038.0,-5149.25,-26572992.0 +2039.0,-5150.85302734375,-26573024.0 +2041.0,-5149.33740234375,-26573582.0 +2042.0,-5147.68505859375,-26575730.0 +2043.0,-5145.3798828125,-26576636.0 +2045.0,-5146.0078125,-26576806.0 +2046.0,-5144.56591796875,-26577082.0 +2047.0,-5145.65185546875,-26577188.0 +2048.0,-5143.73486328125,-26577530.0 +2050.0,-5144.328125,-26577948.0 +2051.0,-5142.70556640625,-26578182.0 +2052.0,-5143.640625,-26578688.0 +2054.0,-5142.59814453125,-26578960.0 +2055.0,-5143.1982421875,-26579266.0 +2056.0,-5141.728515625,-26579502.0 +2057.0,-5142.97265625,-26579620.0 +2058.0,-5140.91259765625,-26579840.0 +2060.0,-5141.56982421875,-26580302.0 +2061.0,-5139.73583984375,-26580496.0 +2062.0,-5140.6474609375,-26581084.0 +2064.0,-5139.44384765625,-26581388.0 +2065.0,-5140.28955078125,-26581592.0 +2066.0,-5138.71142578125,-26581796.0 +2067.0,-5140.037109375,-26581852.0 +2068.0,-5137.97900390625,-26581936.0 +2070.0,-5138.62646484375,-26582544.0 +2071.0,-5136.25634765625,-26583004.0 +2072.0,-5137.24169921875,-26583818.0 +2074.0,-5135.99169921875,-26584056.0 +2075.0,-5136.91845703125,-26584242.0 +2076.0,-5135.32080078125,-26584426.0 +2077.0,-5136.708984375,-26584588.0 +2078.0,-5134.52099609375,-26584698.0 +2079.0,-5136.73095703125,-26584748.0 +2081.0,-5134.59033203125,-26585714.0 +2083.0,-5134.91162109375,-26585836.0 +2084.0,-5133.6259765625,-26586238.0 +2085.0,-5134.556640625,-26586314.0 +2086.0,-5132.66796875,-26586704.0 +2088.0,-5133.189453125,-26587086.0 +2089.0,-5131.7919921875,-26587258.0 +2090.0,-5132.8154296875,-26587572.0 +2092.0,-5131.80126953125,-26587892.0 +2093.0,-5132.3369140625,-26588104.0 +2094.0,-5130.8671875,-26588428.0 +2095.0,-5131.99072265625,-26588494.0 +2096.0,-5129.97021484375,-26588912.0 +2098.0,-5130.57568359375,-26589236.0 +2099.0,-5129.10009765625,-26589332.0 +2100.0,-5130.08056640625,-26589736.0 +2102.0,-5129.001953125,-26590026.0 +2103.0,-5129.71533203125,-26590192.0 +2104.0,-5128.21435546875,-26590488.0 +2105.0,-5129.50732421875,-26590568.0 +2106.0,-5127.408203125,-26590878.0 +2108.0,-5128.07275390625,-26591362.0 +2109.0,-5126.40185546875,-26591510.0 +2110.0,-5127.45849609375,-26592084.0 +2112.0,-5126.30419921875,-26592380.0 +2113.0,-5127.07470703125,-26592528.0 +2114.0,-5125.5390625,-26592822.0 +2116.0,-5125.98095703125,-26593120.0 +2117.0,-5124.46728515625,-26593492.0 +2118.0,-5125.2421875,-26593882.0 +2120.0,-5124.30224609375,-26594106.0 +2121.0,-5124.75146484375,-26594306.0 +2122.0,-5123.60986328125,-26594544.0 +2123.0,-5124.46533203125,-26594748.0 +2124.0,-5122.85693359375,-26594934.0 +2125.0,-5124.3291015625,-26594974.0 +2126.0,-5122.09912109375,-26595128.0 +2128.0,-5122.765625,-26595900.0 +2129.0,-5120.66748046875,-26595998.0 +2130.0,-5121.74462890625,-26596874.0 +2132.0,-5120.47900390625,-26597062.0 +2133.0,-5121.48388671875,-26597224.0 +2134.0,-5119.7578125,-26597322.0 +2135.0,-5121.35205078125,-26597386.0 +2137.0,-5119.83154296875,-26597956.0 +2138.0,-5119.98193359375,-26598636.0 +2139.0,-5117.890625,-26599386.0 +2141.0,-5118.52099609375,-26599604.0 +2142.0,-5117.208984375,-26599802.0 +2143.0,-5118.20703125,-26599970.0 +2144.0,-5116.35107421875,-26600178.0 +2146.0,-5116.95751953125,-26600614.0 +2147.0,-5115.15478515625,-26601042.0 +2148.0,-5116.015625,-26601624.0 +2150.0,-5114.94775390625,-26601862.0 +2151.0,-5115.70751953125,-26602028.0 +2152.0,-5114.23779296875,-26602206.0 +2153.0,-5115.4150390625,-26602358.0 +2154.0,-5113.5693359375,-26602500.0 +2155.0,-5115.47265625,-26602526.0 +2157.0,-5113.671875,-26603270.0 +2158.0,-5113.85009765625,-26603910.0 +2159.0,-5111.32275390625,-26605006.0 +2162.0,-5111.68017578125,-26605144.0 +2163.0,-5110.48876953125,-26605286.0 +2164.0,-5111.01123046875,-26605518.0 +2165.0,-5109.8046875,-26605682.0 +2166.0,-5110.61083984375,-26605996.0 +2167.0,-5109.076171875,-26606022.0 +2168.0,-5110.2421875,-26606326.0 +2170.0,-5109.03076171875,-26606738.0 +2171.0,-5109.7724609375,-26606846.0 +2172.0,-5108.021484375,-26607332.0 +2174.0,-5108.56396484375,-26607622.0 +2175.0,-5107.34765625,-26607758.0 +2176.0,-5108.2568359375,-26608066.0 +2177.0,-5106.63427734375,-26608156.0 +2178.0,-5108.12548828125,-26608348.0 +2180.0,-5106.68603515625,-26608854.0 +2181.0,-5107.4208984375,-26609048.0 +2182.0,-5105.38134765625,-26609720.0 +2184.0,-5105.97216796875,-26609924.0 +2185.0,-5104.68310546875,-26610050.0 +2186.0,-5105.76318359375,-26610260.0 +2187.0,-5104.07421875,-26610384.0 +2188.0,-5105.71484375,-26610512.0 +2190.0,-5104.10498046875,-26611114.0 +2191.0,-5104.44189453125,-26611534.0 +2192.0,-5102.201171875,-26612358.0 +2194.0,-5102.95556640625,-26612468.0 +2195.0,-5101.49560546875,-26612734.0 +2196.0,-5102.61767578125,-26612850.0 +2197.0,-5100.77783203125,-26612988.0 +2199.0,-5101.345703125,-26613520.0 +2200.0,-5099.62353515625,-26613764.0 +2201.0,-5100.583984375,-26614364.0 +2203.0,-5099.42236328125,-26614754.0 +2204.0,-5100.18798828125,-26614918.0 +2205.0,-5098.765625,-26615138.0 +2206.0,-5100.00732421875,-26615236.0 +2207.0,-5098.03662109375,-26615298.0 +2208.0,-5099.95263671875,-26615306.0 +2209.0,-5097.35205078125,-26615332.0 +2211.0,-5098.06494140625,-26616424.0 +2213.0,-5096.61767578125,-26616854.0 +2214.0,-5097.33349609375,-26617174.0 +2216.0,-5096.43994140625,-26617316.0 +2217.0,-5096.98779296875,-26617506.0 +2218.0,-5095.75830078125,-26617772.0 +2219.0,-5096.65234375,-26617894.0 +2220.0,-5095.08154296875,-26618090.0 +2221.0,-5096.50146484375,-26618214.0 +2222.0,-5094.37890625,-26618366.0 +2224.0,-5095.03369140625,-26618998.0 +2225.0,-5092.91064453125,-26619168.0 +2226.0,-5093.98193359375,-26620062.0 +2228.0,-5092.69580078125,-26620236.0 +2229.0,-5093.685546875,-26620480.0 +2230.0,-5092.12744140625,-26620546.0 +2231.0,-5093.55322265625,-26620726.0 +2233.0,-5092.076171875,-26621262.0 +2234.0,-5092.5947265625,-26621526.0 +2235.0,-5090.4921875,-26622342.0 +2237.0,-5091.11962890625,-26622478.0 +2238.0,-5089.82958984375,-26622660.0 +2239.0,-5090.9130859375,-26622778.0 +2240.0,-5089.09130859375,-26622924.0 +2242.0,-5089.6650390625,-26623408.0 +2243.0,-5087.77783203125,-26623768.0 +2244.0,-5088.67919921875,-26624362.0 +2246.0,-5087.65673828125,-26624580.0 +2247.0,-5088.2998046875,-26624754.0 +2248.0,-5086.88916015625,-26624914.0 +2249.0,-5088.13134765625,-26625094.0 +2250.0,-5086.314453125,-26625204.0 +2251.0,-5088.09765625,-26625340.0 +2253.0,-5086.33740234375,-26626044.0 +2254.0,-5087.05908203125,-26626282.0 +2255.0,-5084.56982421875,-26627284.0 +2257.0,-5085.44580078125,-26627372.0 +2258.0,-5083.92333984375,-26627506.0 +2259.0,-5085.25341796875,-26627536.0 +2260.0,-5083.279296875,-26627734.0 +2262.0,-5083.89404296875,-26628212.0 +2263.0,-5082.04833984375,-26628592.0 +2264.0,-5083.02734375,-26629372.0 +2266.0,-5081.87548828125,-26629608.0 +2267.0,-5082.763671875,-26629806.0 +2268.0,-5081.193359375,-26629878.0 +2269.0,-5082.5859375,-26629988.0 +2271.0,-5081.26318359375,-26630454.0 +2272.0,-5081.31298828125,-26631024.0 +2273.0,-5079.40283203125,-26631766.0 +2275.0,-5079.962890625,-26631944.0 +2276.0,-5078.67431640625,-26632124.0 +2277.0,-5079.73046875,-26632244.0 +2278.0,-5078.04150390625,-26632398.0 +2279.0,-5079.666015625,-26632480.0 +2280.0,-5077.37841796875,-26632586.0 +2282.0,-5078.09716796875,-26633252.0 +2284.0,-5076.880859375,-26633578.0 +2285.0,-5077.53857421875,-26633878.0 +2286.0,-5076.25,-26633964.0 +2287.0,-5077.19091796875,-26634298.0 +2289.0,-5076.19189453125,-26634552.0 +2290.0,-5076.8310546875,-26634696.0 +2291.0,-5075.4296875,-26634982.0 +2293.0,-5075.89599609375,-26635158.0 +2294.0,-5074.74365234375,-26635346.0 +2295.0,-5075.47314453125,-26635646.0 +2296.0,-5074.0927734375,-26635710.0 +2297.0,-5075.20556640625,-26636010.0 +2299.0,-5074.126953125,-26636292.0 +2300.0,-5074.68505859375,-26636486.0 +2301.0,-5073.14111328125,-26636914.0 +2303.0,-5073.59765625,-26637128.0 +2304.0,-5072.51708984375,-26637306.0 +2305.0,-5073.30712890625,-26637498.0 +2306.0,-5071.88330078125,-26637618.0 +2307.0,-5073.13720703125,-26637786.0 +2309.0,-5071.89501953125,-26638234.0 +2310.0,-5072.38818359375,-26638510.0 +2311.0,-5070.7451171875,-26639112.0 +2313.0,-5071.31005859375,-26639386.0 +2314.0,-5070.10888671875,-26639568.0 +2315.0,-5070.95166015625,-26639770.0 +2316.0,-5069.46435546875,-26639860.0 +2317.0,-5070.84130859375,-26639982.0 +2318.0,-5068.79541015625,-26640052.0 +2320.0,-5069.38720703125,-26640750.0 +2321.0,-5066.87841796875,-26641164.0 +2322.0,-5067.865234375,-26642104.0 +2324.0,-5066.64892578125,-26642234.0 +2325.0,-5067.47412109375,-26642474.0 +2326.0,-5065.94921875,-26642508.0 +2327.0,-5067.41259765625,-26642710.0 +2329.0,-5066.0234375,-26643160.0 +2330.0,-5066.775390625,-26643226.0 +2331.0,-5064.787109375,-26643954.0 +2333.0,-5065.44140625,-26644084.0 +2334.0,-5064.12548828125,-26644318.0 +2335.0,-5065.2041015625,-26644400.0 +2336.0,-5063.53662109375,-26644504.0 +2337.0,-5065.21044921875,-26644628.0 +2338.0,-5062.916015625,-26644640.0 +2340.0,-5063.619140625,-26645480.0 +2341.0,-5061.013671875,-26645934.0 +2342.0,-5061.99951171875,-26647120.0 +2344.0,-5060.74560546875,-26647178.0 +2345.0,-5061.89306640625,-26647406.0 +2347.0,-5060.71533203125,-26647716.0 +2348.0,-5061.20947265625,-26647986.0 +2349.0,-5059.63134765625,-26648418.0 +2351.0,-5060.13623046875,-26648656.0 +2352.0,-5059.03466796875,-26648808.0 +2353.0,-5059.84326171875,-26649002.0 +2354.0,-5058.40771484375,-26649112.0 +2355.0,-5059.7197265625,-26649284.0 +2357.0,-5058.46435546875,-26649698.0 +2358.0,-5058.818359375,-26650016.0 +2359.0,-5057.041015625,-26650604.0 +2361.0,-5057.64306640625,-26650830.0 +2362.0,-5056.47314453125,-26650992.0 +2363.0,-5057.36376953125,-26651130.0 +2364.0,-5055.84326171875,-26651254.0 +2365.0,-5057.2578125,-26651296.0 +2366.0,-5055.24072265625,-26651330.0 +2368.0,-5055.8984375,-26652018.0 +2369.0,-5053.755859375,-26652404.0 +2370.0,-5054.72802734375,-26653248.0 +2372.0,-5053.45556640625,-26653374.0 +2373.0,-5054.44921875,-26653618.0 +2374.0,-5052.919921875,-26653646.0 +2375.0,-5054.3662109375,-26653796.0 +2377.0,-5052.94873046875,-26654274.0 +2378.0,-5053.66015625,-26654478.0 +2379.0,-5051.68212890625,-26655156.0 +2381.0,-5052.34912109375,-26655230.0 +2382.0,-5050.98974609375,-26655402.0 +2383.0,-5052.169921875,-26655618.0 +2384.0,-5050.40478515625,-26655788.0 +2385.0,-5052.06787109375,-26655832.0 +2387.0,-5050.50048828125,-26656436.0 +2388.0,-5050.708984375,-26656996.0 +2389.0,-5048.4814453125,-26657870.0 +2391.0,-5049.23681640625,-26657904.0 +2392.0,-5047.828125,-26658128.0 +2393.0,-5049.06396484375,-26658190.0 +2394.0,-5047.158203125,-26658396.0 +2396.0,-5047.7548828125,-26658916.0 +2397.0,-5046.23828125,-26659046.0 +2398.0,-5047.16064453125,-26659646.0 +2400.0,-5046.01953125,-26659790.0 +2401.0,-5046.869140625,-26659916.0 +2402.0,-5045.41943359375,-26660084.0 +2403.0,-5046.72412109375,-26660156.0 +2404.0,-5044.7626953125,-26660248.0 +2406.0,-5045.45654296875,-26660826.0 +2407.0,-5043.4443359375,-26661122.0 +2408.0,-5044.34912109375,-26661846.0 +2410.0,-5043.21728515625,-26662156.0 +2411.0,-5044.10546875,-26662366.0 +2412.0,-5042.59033203125,-26662486.0 +2413.0,-5043.9482421875,-26662624.0 +2415.0,-5042.64404296875,-26663080.0 +2417.0,-5042.75390625,-26663298.0 +2418.0,-5041.81396484375,-26663556.0 +2419.0,-5042.44482421875,-26663652.0 +2420.0,-5041.14404296875,-26663924.0 +2421.0,-5042.17041015625,-26664026.0 +2422.0,-5040.49658203125,-26664278.0 +2424.0,-5041.05126953125,-26664602.0 +2425.0,-5039.69970703125,-26664646.0 +2426.0,-5040.52783203125,-26665066.0 +2428.0,-5039.6279296875,-26665288.0 +2429.0,-5040.24169921875,-26665472.0 +2430.0,-5038.97802734375,-26665666.0 +2431.0,-5039.9765625,-26665712.0 +2432.0,-5038.38525390625,-26665910.0 +2434.0,-5038.93115234375,-26666314.0 +2435.0,-5037.2998046875,-26666424.0 +2436.0,-5038.23046875,-26666952.0 +2438.0,-5037.2119140625,-26667110.0 +2439.0,-5037.97314453125,-26667300.0 +2440.0,-5036.65185546875,-26667438.0 +2441.0,-5037.83251953125,-26667486.0 +2442.0,-5036.01025390625,-26667574.0 +2444.0,-5036.53955078125,-26668064.0 +2445.0,-5034.57861328125,-26668542.0 +2446.0,-5035.45751953125,-26669184.0 +2448.0,-5034.38623046875,-26669264.0 +2449.0,-5035.22021484375,-26669520.0 +2450.0,-5033.78271484375,-26669672.0 +2451.0,-5035.07861328125,-26669792.0 +2453.0,-5033.85986328125,-26670090.0 +2454.0,-5034.29736328125,-26670516.0 +2455.0,-5032.6044921875,-26671104.0 +2457.0,-5033.09033203125,-26671266.0 +2458.0,-5032.04248046875,-26671416.0 +2459.0,-5032.90234375,-26671452.0 +2460.0,-5031.38037109375,-26671650.0 +2461.0,-5032.77490234375,-26671742.0 +2463.0,-5031.46484375,-26672218.0 +2464.0,-5031.13623046875,-26673216.0 +2465.0,-5029.25927734375,-26673954.0 +2467.0,-5029.81201171875,-26674134.0 +2468.0,-5028.66162109375,-26674388.0 +2469.0,-5029.65966796875,-26674408.0 +2470.0,-5028.0146484375,-26674630.0 +2472.0,-5028.50341796875,-26674954.0 +2473.0,-5027.02587890625,-26675170.0 +2474.0,-5027.8818359375,-26675586.0 +2476.0,-5026.95361328125,-26675992.0 +2477.0,-5027.60107421875,-26676034.0 +2478.0,-5026.376953125,-26676218.0 +2479.0,-5027.39892578125,-26676350.0 +2480.0,-5025.724609375,-26676444.0 +2482.0,-5026.28564453125,-26676878.0 +2483.0,-5024.49072265625,-26677190.0 +2484.0,-5025.32421875,-26677762.0 +2486.0,-5024.29345703125,-26678048.0 +2487.0,-5025.0341796875,-26678152.0 +2488.0,-5023.72607421875,-26678234.0 +2489.0,-5024.93017578125,-26678354.0 +2491.0,-5023.77978515625,-26678678.0 +2492.0,-5024.0029296875,-26679158.0 +2493.0,-5022.43310546875,-26679616.0 +2495.0,-5022.88818359375,-26679804.0 +2496.0,-5021.83349609375,-26679908.0 +2497.0,-5022.60888671875,-26680076.0 +2498.0,-5021.26953125,-26680226.0 +2499.0,-5022.5703125,-26680342.0 +2500.0,-5020.70703125,-26680456.0 +2502.0,-5021.267578125,-26681046.0 +2503.0,-5019.283203125,-26681160.0 +2504.0,-5020.21630859375,-26681958.0 +2506.0,-5019.12890625,-26682076.0 +2507.0,-5019.998046875,-26682196.0 +2508.0,-5018.50732421875,-26682262.0 +2509.0,-5019.83642578125,-26682396.0 +2510.0,-5017.861328125,-26682404.0 +2511.0,-5019.97900390625,-26682446.0 +2513.0,-5018.00830078125,-26683292.0 +2515.0,-5018.52197265625,-26683582.0 +2516.0,-5017.26806640625,-26683796.0 +2517.0,-5018.29248046875,-26683808.0 +2518.0,-5016.501953125,-26684150.0 +2520.0,-5017.080078125,-26684422.0 +2521.0,-5015.8564453125,-26684538.0 +2522.0,-5016.76025390625,-26684850.0 +2524.0,-5015.8349609375,-26685100.0 +2525.0,-5016.44189453125,-26685180.0 +2526.0,-5015.08056640625,-26685442.0 +2528.0,-5015.50634765625,-26685666.0 +2529.0,-5014.47216796875,-26685784.0 +2530.0,-5015.14306640625,-26686044.0 +2531.0,-5013.86279296875,-26686174.0 +2532.0,-5014.8876953125,-26686406.0 +2534.0,-5013.89599609375,-26686674.0 +2535.0,-5014.45654296875,-26686756.0 +2536.0,-5013.09326171875,-26687124.0 +2538.0,-5013.54345703125,-26687364.0 +2539.0,-5012.49169921875,-26687446.0 +2540.0,-5013.224609375,-26687640.0 +2541.0,-5011.93505859375,-26687732.0 +2542.0,-5013.03173828125,-26687942.0 +2544.0,-5011.88916015625,-26688282.0 +2545.0,-5012.55078125,-26688480.0 +2546.0,-5010.96240234375,-26688942.0 +2548.0,-5011.44384765625,-26689134.0 +2549.0,-5010.43408203125,-26689278.0 +2550.0,-5011.2578125,-26689472.0 +2551.0,-5009.7744140625,-26689536.0 +2552.0,-5011.07958984375,-26689736.0 +2554.0,-5009.85400390625,-26690138.0 +2555.0,-5010.27197265625,-26690390.0 +2556.0,-5008.49267578125,-26690952.0 +2558.0,-5009.01904296875,-26691040.0 +2559.0,-5007.876953125,-26691164.0 +2560.0,-5008.79638671875,-26691344.0 +2561.0,-5007.38623046875,-26691438.0 +2562.0,-5008.77001953125,-26691440.0 +2563.0,-5006.69873046875,-26691508.0 +2565.0,-5007.326171875,-26692180.0 +2566.0,-5005.40771484375,-26692318.0 +2567.0,-5006.4453125,-26693278.0 +2569.0,-5005.283203125,-26693420.0 +2570.0,-5006.21826171875,-26693580.0 +2571.0,-5004.66748046875,-26693630.0 +2572.0,-5006.228515625,-26693718.0 +2574.0,-5004.73583984375,-26694210.0 +2576.0,-5004.96484375,-26694412.0 +2577.0,-5003.97705078125,-26694636.0 +2578.0,-5004.66943359375,-26694642.0 +2579.0,-5003.29833984375,-26694930.0 +2581.0,-5003.7734375,-26695116.0 +2582.0,-5002.69384765625,-26695190.0 +2583.0,-5003.31396484375,-26695504.0 +2584.0,-5001.97802734375,-26695528.0 +2585.0,-5003.0625,-26695818.0 +2587.0,-5002.03271484375,-26696120.0 +2588.0,-5002.759765625,-26696254.0 +2589.0,-5001.32763671875,-26696610.0 +2591.0,-5001.79345703125,-26696786.0 +2592.0,-5000.73876953125,-26696932.0 +2593.0,-5001.43359375,-26697162.0 +2594.0,-5000.04248046875,-26697186.0 +2595.0,-5001.2763671875,-26697402.0 +2597.0,-5000.15087890625,-26697786.0 +2598.0,-5000.80712890625,-26697882.0 +2599.0,-4999.22802734375,-26698308.0 +2601.0,-4999.681640625,-26698610.0 +2602.0,-4998.56298828125,-26698716.0 +2603.0,-4999.47998046875,-26698858.0 +2604.0,-4998.0517578125,-26698932.0 +2605.0,-4999.4208984375,-26699064.0 +2607.0,-4998.12158203125,-26699454.0 +2608.0,-4998.66064453125,-26699658.0 +2609.0,-4996.85498046875,-26700250.0 +2611.0,-4997.48193359375,-26700416.0 +2612.0,-4996.28466796875,-26700572.0 +2613.0,-4997.251953125,-26700678.0 +2614.0,-4995.697265625,-26700816.0 +2615.0,-4997.2548828125,-26700928.0 +2617.0,-4995.7880859375,-26701458.0 +2618.0,-4995.8447265625,-26702104.0 +2619.0,-4993.84326171875,-26702886.0 +2621.0,-4994.44384765625,-26702946.0 +2622.0,-4993.07373046875,-26703102.0 +2623.0,-4994.29345703125,-26703168.0 +2624.0,-4992.53076171875,-26703338.0 +2626.0,-4993.130859375,-26703754.0 +2627.0,-4991.634765625,-26703882.0 +2628.0,-4992.55419921875,-26704412.0 +2630.0,-4991.52978515625,-26704592.0 +2631.0,-4992.26220703125,-26704756.0 +2632.0,-4990.92236328125,-26704892.0 +2633.0,-4992.07763671875,-26704970.0 +2634.0,-4990.40673828125,-26705058.0 +2636.0,-4990.951171875,-26705562.0 +2637.0,-4989.16259765625,-26705744.0 +2638.0,-4989.99267578125,-26706382.0 +2640.0,-4988.97314453125,-26706420.0 +2641.0,-4989.810546875,-26706606.0 +2642.0,-4988.45556640625,-26706646.0 +2643.0,-4989.71533203125,-26706800.0 +2644.0,-4987.83984375,-26706832.0 +2645.0,-4989.79541015625,-26706884.0 +2647.0,-4987.95849609375,-26707602.0 +2649.0,-4988.38037109375,-26707762.0 +2650.0,-4987.193359375,-26708028.0 +2652.0,-4987.54052734375,-26708184.0 +2653.0,-4986.57568359375,-26708254.0 +2654.0,-4987.19287109375,-26708468.0 +2655.0,-4986.01220703125,-26708560.0 +2656.0,-4986.93212890625,-26708720.0 +2657.0,-4985.50537109375,-26708768.0 +2658.0,-4986.89111328125,-26708898.0 +2660.0,-4985.5849609375,-26709354.0 +2661.0,-4986.22607421875,-26709436.0 +2662.0,-4984.40234375,-26710060.0 +2664.0,-4985.02880859375,-26710280.0 +2665.0,-4983.865234375,-26710402.0 +2666.0,-4984.86962890625,-26710490.0 +2667.0,-4983.19140625,-26710640.0 +2669.0,-4983.71435546875,-26711066.0 +2670.0,-4981.79833984375,-26711600.0 +2671.0,-4982.5673828125,-26712148.0 +2673.0,-4981.64453125,-26712324.0 +2674.0,-4982.322265625,-26712436.0 +2675.0,-4981.03759765625,-26712546.0 +2676.0,-4982.10009765625,-26712660.0 +2677.0,-4980.43505859375,-26712670.0 +2678.0,-4982.11962890625,-26712736.0 +2680.0,-4980.59912109375,-26713322.0 +2681.0,-4981.544921875,-26713348.0 +2682.0,-4979.271484375,-26714150.0 +2684.0,-4980.03271484375,-26714272.0 +2685.0,-4978.681640625,-26714364.0 +2686.0,-4979.88818359375,-26714434.0 +2687.0,-4978.13134765625,-26714522.0 +2689.0,-4978.76416015625,-26715024.0 +2690.0,-4976.91748046875,-26715212.0 +2691.0,-4977.798828125,-26715878.0 +2693.0,-4976.76806640625,-26716022.0 +2694.0,-4977.56103515625,-26716210.0 +2695.0,-4976.15283203125,-26716266.0 +2696.0,-4977.50048828125,-26716368.0 +2698.0,-4976.27685546875,-26716760.0 +2699.0,-4976.69677734375,-26716902.0 +2700.0,-4974.94189453125,-26717448.0 +2702.0,-4975.47314453125,-26717596.0 +2703.0,-4974.39208984375,-26717716.0 +2704.0,-4975.36572265625,-26717794.0 +2705.0,-4973.83203125,-26717914.0 +2706.0,-4975.25,-26717952.0 +2707.0,-4973.26806640625,-26718014.0 +2709.0,-4973.9091796875,-26718658.0 +2710.0,-4971.99951171875,-26718834.0 +2711.0,-4972.97802734375,-26719692.0 +2713.0,-4971.77734375,-26719778.0 +2714.0,-4972.69189453125,-26719980.0 +2715.0,-4971.11865234375,-26720012.0 +2716.0,-4972.64794921875,-26720132.0 +2718.0,-4971.21533203125,-26720678.0 +2719.0,-4971.98486328125,-26720802.0 +2720.0,-4969.984375,-26721556.0 +2722.0,-4970.69189453125,-26721730.0 +2723.0,-4969.40966796875,-26721838.0 +2724.0,-4970.5390625,-26721924.0 +2725.0,-4968.87451171875,-26721974.0 +2727.0,-4969.39404296875,-26722398.0 +2728.0,-4967.51171875,-26722478.0 +2729.0,-4968.42138671875,-26723088.0 +2731.0,-4967.40234375,-26723282.0 +2732.0,-4968.1484375,-26723446.0 +2733.0,-4966.88037109375,-26723640.0 +2734.0,-4968.11767578125,-26723790.0 +2736.0,-4966.94287109375,-26724142.0 +2737.0,-4967.26025390625,-26724440.0 +2738.0,-4965.74853515625,-26724914.0 +2740.0,-4966.22509765625,-26725012.0 +2741.0,-4965.1552734375,-26725106.0 +2742.0,-4966.01123046875,-26725208.0 +2743.0,-4964.5673828125,-26725308.0 +2744.0,-4965.92431640625,-26725384.0 +2746.0,-4964.71337890625,-26725806.0 +2747.0,-4964.5439453125,-26726622.0 +2748.0,-4962.798828125,-26727232.0 +2750.0,-4963.34228515625,-26727358.0 +2751.0,-4962.2109375,-26727496.0 +2752.0,-4963.06982421875,-26727536.0 +2753.0,-4961.60595703125,-26727654.0 +2755.0,-4962.041015625,-26727976.0 +2756.0,-4960.72705078125,-26728078.0 +2757.0,-4961.546875,-26728448.0 +2759.0,-4960.67236328125,-26728518.0 +2760.0,-4961.28662109375,-26728688.0 +2761.0,-4960.12255859375,-26728854.0 +2762.0,-4961.07470703125,-26728960.0 +2763.0,-4959.544921875,-26729038.0 +2764.0,-4961.15576171875,-26729052.0 +2765.0,-4958.92724609375,-26729064.0 +2767.0,-4959.625,-26729786.0 +2769.0,-4958.42138671875,-26730042.0 +2770.0,-4959.03271484375,-26730330.0 +2771.0,-4957.81396484375,-26730338.0 +2772.0,-4958.77978515625,-26730672.0 +2774.0,-4957.80322265625,-26730920.0 +2775.0,-4958.46728515625,-26730986.0 +2776.0,-4957.09228515625,-26731182.0 +2778.0,-4957.60009765625,-26731364.0 +2779.0,-4956.521484375,-26731534.0 +2780.0,-4957.24755859375,-26731772.0 +2782.0,-4956.43505859375,-26731974.0 +2783.0,-4956.87451171875,-26732100.0 +2784.0,-4955.86083984375,-26732280.0 +2786.0,-4956.107421875,-26732370.0 +2787.0,-4955.24169921875,-26732546.0 +2788.0,-4955.7724609375,-26732706.0 +2789.0,-4954.69189453125,-26732754.0 +2790.0,-4955.46337890625,-26732968.0 +2792.0,-4954.64453125,-26733140.0 +2793.0,-4955.060546875,-26733348.0 +2794.0,-4953.95703125,-26733608.0 +2795.0,-4954.76123046875,-26733668.0 +2796.0,-4953.23193359375,-26733948.0 +2798.0,-4953.80859375,-26734162.0 +2799.0,-4952.6142578125,-26734242.0 +2800.0,-4953.39990234375,-26734516.0 +2802.0,-4952.6005859375,-26734678.0 +2803.0,-4953.212890625,-26734788.0 +2804.0,-4952.03369140625,-26735006.0 +2805.0,-4953.02978515625,-26735012.0 +2806.0,-4951.353515625,-26735210.0 +2808.0,-4951.8984375,-26735488.0 +2809.0,-4950.61767578125,-26735610.0 +2810.0,-4951.47021484375,-26735970.0 +2812.0,-4950.56787109375,-26736118.0 +2813.0,-4951.24072265625,-26736254.0 +2814.0,-4949.99755859375,-26736400.0 +2815.0,-4951.07568359375,-26736442.0 +2816.0,-4949.41650390625,-26736550.0 +2818.0,-4949.99072265625,-26736928.0 +2819.0,-4948.49658203125,-26737084.0 +2820.0,-4949.32666015625,-26737580.0 +2822.0,-4948.34228515625,-26737646.0 +2823.0,-4949.1787109375,-26737770.0 +2824.0,-4947.87060546875,-26737902.0 +2825.0,-4949.03564453125,-26737978.0 +2826.0,-4947.26123046875,-26738052.0 +2827.0,-4949.02685546875,-26738072.0 +2829.0,-4947.41748046875,-26738716.0 +2830.0,-4947.96240234375,-26738824.0 +2831.0,-4945.685546875,-26739728.0 +2833.0,-4946.49951171875,-26739900.0 +2834.0,-4945.1025390625,-26740064.0 +2836.0,-4945.54736328125,-26740336.0 +2837.0,-4944.21142578125,-26740496.0 +2838.0,-4944.98583984375,-26740836.0 +2840.0,-4944.18212890625,-26740932.0 +2841.0,-4944.72509765625,-26740976.0 +2842.0,-4943.5771484375,-26741148.0 +2843.0,-4944.466796875,-26741226.0 +2844.0,-4943.02294921875,-26741308.0 +2845.0,-4944.515625,-26741318.0 +2846.0,-4942.45556640625,-26741344.0 +2847.0,-4944.73193359375,-26741406.0 +2849.0,-4942.69677734375,-26742344.0 +2850.0,-4943.24462890625,-26742428.0 +2851.0,-4940.47021484375,-26743760.0 +2854.0,-4940.7470703125,-26743948.0 +2855.0,-4939.79443359375,-26744052.0 +2856.0,-4940.39990234375,-26744236.0 +2858.0,-4939.72998046875,-26744296.0 +2859.0,-4939.97314453125,-26744522.0 +2860.0,-4939.09423828125,-26744650.0 +2861.0,-4939.73193359375,-26744712.0 +2862.0,-4938.50341796875,-26744900.0 +2863.0,-4939.66064453125,-26744946.0 +2864.0,-4937.896484375,-26745110.0 +2866.0,-4938.47998046875,-26745490.0 +2867.0,-4937.01513671875,-26745544.0 +2868.0,-4937.98095703125,-26745950.0 +2870.0,-4937.05615234375,-26746284.0 +2871.0,-4937.70166015625,-26746404.0 +2872.0,-4936.3984375,-26746518.0 +2873.0,-4937.57763671875,-26746660.0 +2874.0,-4935.841796875,-26746732.0 +2876.0,-4936.42138671875,-26747208.0 +2877.0,-4934.65673828125,-26747318.0 +2878.0,-4935.61767578125,-26747890.0 +2880.0,-4934.64453125,-26747958.0 +2881.0,-4935.45068359375,-26748086.0 +2882.0,-4934.12890625,-26748138.0 +2883.0,-4935.36181640625,-26748224.0 +2885.0,-4934.26123046875,-26748602.0 +2886.0,-4934.58056640625,-26748990.0 +2887.0,-4933.00537109375,-26749512.0 +2889.0,-4933.49169921875,-26749636.0 +2890.0,-4932.37451171875,-26749750.0 +2891.0,-4933.24462890625,-26749798.0 +2892.0,-4931.77490234375,-26749970.0 +2894.0,-4932.29736328125,-26750262.0 +2895.0,-4930.87158203125,-26750492.0 +2896.0,-4931.57861328125,-26750986.0 +2898.0,-4930.65380859375,-26751070.0 +2899.0,-4931.30810546875,-26751232.0 +2900.0,-4930.13525390625,-26751348.0 +2901.0,-4931.12548828125,-26751472.0 +2902.0,-4929.60888671875,-26751540.0 +2903.0,-4931.05908203125,-26751570.0 +2904.0,-4929.1318359375,-26751598.0 +2906.0,-4929.73974609375,-26752290.0 +2907.0,-4927.43505859375,-26752466.0 +2908.0,-4928.4375,-26753382.0 +2910.0,-4927.28466796875,-26753500.0 +2911.0,-4928.26220703125,-26753630.0 +2913.0,-4927.33740234375,-26753900.0 +2914.0,-4927.771484375,-26753972.0 +2915.0,-4926.4921875,-26754328.0 +2917.0,-4926.89697265625,-26754460.0 +2918.0,-4925.87744140625,-26754556.0 +2919.0,-4926.69091796875,-26754680.0 +2920.0,-4925.365234375,-26754802.0 +2921.0,-4926.44287109375,-26754884.0 +2923.0,-4925.36865234375,-26755182.0 +2924.0,-4925.7265625,-26755372.0 +2925.0,-4924.28173828125,-26755804.0 +2927.0,-4924.724609375,-26755872.0 +2928.0,-4923.73193359375,-26755982.0 +2929.0,-4924.57373046875,-26756142.0 +2930.0,-4923.19384765625,-26756218.0 +2931.0,-4924.50048828125,-26756224.0 +2933.0,-4923.33984375,-26756622.0 +2934.0,-4923.17333984375,-26757572.0 +2935.0,-4921.49169921875,-26758126.0 +2938.0,-4921.78271484375,-26758174.0 +2939.0,-4920.92626953125,-26758236.0 +2940.0,-4921.30419921875,-26758388.0 +2941.0,-4920.390625,-26758526.0 +2942.0,-4920.98681640625,-26758600.0 +2943.0,-4919.86669921875,-26758804.0 +2944.0,-4920.7783203125,-26759008.0 +2946.0,-4919.8896484375,-26759198.0 +2947.0,-4920.29150390625,-26759358.0 +2948.0,-4919.111328125,-26759658.0 +2950.0,-4919.57373046875,-26759828.0 +2951.0,-4918.61181640625,-26759940.0 +2952.0,-4919.20654296875,-26760066.0 +2953.0,-4918.04248046875,-26760134.0 +2954.0,-4919.01953125,-26760296.0 +2956.0,-4918.10107421875,-26760552.0 +2957.0,-4918.51904296875,-26760780.0 +2958.0,-4917.18994140625,-26761066.0 +2960.0,-4917.67822265625,-26761136.0 +2961.0,-4916.67578125,-26761264.0 +2962.0,-4917.30810546875,-26761446.0 +2963.0,-4916.06591796875,-26761590.0 +2964.0,-4917.2431640625,-26761656.0 +2965.0,-4915.517578125,-26761682.0 +2966.0,-4917.20263671875,-26761686.0 +2967.0,-4915.162109375,-26761702.0 +2969.0,-4915.84765625,-26762538.0 +2971.0,-4914.45849609375,-26762658.0 +2972.0,-4915.10986328125,-26762942.0 +2974.0,-4914.33251953125,-26763028.0 +2975.0,-4914.81201171875,-26763294.0 +2976.0,-4913.85302734375,-26763370.0 +2977.0,-4914.64013671875,-26763450.0 +2978.0,-4913.37060546875,-26763552.0 +2979.0,-4914.591796875,-26763602.0 +2980.0,-4912.80078125,-26763670.0 +2982.0,-4913.3935546875,-26764116.0 +2983.0,-4911.46337890625,-26764360.0 +2984.0,-4912.39111328125,-26765066.0 +2986.0,-4911.28662109375,-26765198.0 +2987.0,-4912.23828125,-26765396.0 +2989.0,-4911.44482421875,-26765646.0 +2990.0,-4911.630859375,-26765840.0 +2991.0,-4910.49072265625,-26766110.0 +2993.0,-4910.833984375,-26766232.0 +2994.0,-4910.05078125,-26766328.0 +2995.0,-4910.5751953125,-26766458.0 +2996.0,-4909.50048828125,-26766574.0 +2997.0,-4910.4892578125,-26766686.0 +2998.0,-4908.9775390625,-26766754.0 +2999.0,-4910.47412109375,-26766780.0 +3001.0,-4909.08447265625,-26767308.0 +3002.0,-4909.623046875,-26767424.0 +3003.0,-4907.61865234375,-26768060.0 +3005.0,-4908.36376953125,-26768170.0 +3006.0,-4907.08740234375,-26768274.0 +3007.0,-4908.15478515625,-26768290.0 +3008.0,-4906.47265625,-26768434.0 +3010.0,-4907.140625,-26768808.0 +3011.0,-4905.6171875,-26768910.0 +3012.0,-4906.5029296875,-26769360.0 +3014.0,-4905.48681640625,-26769488.0 +3015.0,-4906.27978515625,-26769550.0 +3016.0,-4905.029296875,-26769584.0 +3017.0,-4906.05615234375,-26769648.0 +3018.0,-4904.44921875,-26769682.0 +3020.0,-4904.97119140625,-26770090.0 +3021.0,-4902.927734375,-26770592.0 +3022.0,-4903.81396484375,-26771264.0 +3024.0,-4902.83251953125,-26771352.0 +3025.0,-4903.572265625,-26771486.0 +3026.0,-4902.25146484375,-26771540.0 +3027.0,-4903.43603515625,-26771670.0 +3029.0,-4902.322265625,-26772026.0 +3030.0,-4902.98828125,-26772110.0 +3031.0,-4901.33642578125,-26772520.0 +3033.0,-4901.88623046875,-26772630.0 +3034.0,-4900.83349609375,-26772776.0 +3035.0,-4901.69140625,-26772900.0 +3036.0,-4900.40087890625,-26773002.0 +3038.0,-4900.90625,-26773288.0 +3039.0,-4898.86865234375,-26774006.0 +3040.0,-4899.64599609375,-26774416.0 diff --git a/tests/fixtures/edr/A8HNE1_timeseries_step4.1_equilibration.csv b/tests/fixtures/edr/A8HNE1_timeseries_step4.1_equilibration.csv new file mode 100644 index 0000000..f184979 --- /dev/null +++ b/tests/fixtures/edr/A8HNE1_timeseries_step4.1_equilibration.csv @@ -0,0 +1,127 @@ +Time,Temperature,Pressure,Potential,Total Energy +0.0,304.7964172363281,-3563.632080078125,-26771330.0,-22779536.0 +1.0,211.20382690429688,-1636.6607666015625,-24178948.0,-21412898.0 +2.0,241.4443359375,-1429.5589599609375,-23626590.0,-20464492.0 +3.0,258.9866943359375,-1340.88720703125,-23191416.0,-19799574.0 +4.0,270.7979431152344,-1269.5137939453125,-22861392.0,-19314862.0 +5.0,278.4690246582031,-1207.9495849609375,-22606488.0,-18959494.0 +6.0,285.0169677734375,-1126.5848388671875,-22424834.0,-18692084.0 +7.0,289.9903259277344,-1077.7947998046875,-22293360.0,-18495476.0 +8.0,293.0918273925781,-1017.0093383789062,-22189948.0,-18351444.0 +9.0,296.2287902832031,-1007.2875366210938,-22126960.0,-18247372.0 +10.0,298.4457702636719,-958.70458984375,-22073662.0,-18165040.0 +11.0,299.74835205078125,-967.1337890625,-22044540.0,-18118860.0 +12.0,300.6673583984375,-920.37451171875,-22014092.0,-18076376.0 +13.0,301.1547546386719,-938.6437377929688,-21989438.0,-18045338.0 +14.0,301.6093444824219,-961.261474609375,-21981048.0,-18030996.0 +15.0,302.16619873046875,-909.6609497070312,-21973436.0,-18016090.0 +16.0,302.28314208984375,-910.5536499023438,-21958710.0,-17999832.0 +17.0,302.7173156738281,-878.7803344726562,-21960524.0,-17995960.0 +18.0,302.74920654296875,-897.0750122070312,-21952916.0,-17987934.0 +19.0,302.7973327636719,-912.7500610351562,-21949494.0,-17983882.0 +20.0,302.97161865234375,-910.814208984375,-21939808.0,-17971914.0 +21.0,303.2252197265625,-911.55517578125,-21944476.0,-17973260.0 +22.0,302.9971618652344,-910.03759765625,-21945694.0,-17977464.0 +23.0,303.193359375,-915.7640991210938,-21943426.0,-17972628.0 +24.0,303.4058837890625,-920.5368041992188,-21947316.0,-17973734.0 +25.0,303.3064880371094,-871.4655151367188,-21947132.0,-17974852.0 +26.0,303.1213684082031,-905.3815307617188,-21945460.0,-17975604.0 +27.0,303.2519226074219,-907.830078125,-21946168.0,-17974602.0 +28.0,303.34478759765625,-888.077880859375,-21937836.0,-17965054.0 +29.0,303.35003662109375,-924.990234375,-21939134.0,-17966284.0 +30.0,303.2340087890625,-906.9249877929688,-21935144.0,-17963812.0 +31.0,303.6582946777344,-905.3956909179688,-21940520.0,-17963632.0 +32.0,303.41741943359375,-912.9348754882812,-21939786.0,-17966052.0 +33.0,303.07354736328125,-882.502685546875,-21939358.0,-17970128.0 +34.0,303.2958068847656,-887.2584838867188,-21941626.0,-17969486.0 +35.0,303.1047668457031,-909.63525390625,-21942116.0,-17972478.0 +36.0,303.3968811035156,-895.9158325195312,-21947360.0,-17973896.0 +37.0,303.62335205078125,-932.1360473632812,-21948172.0,-17971742.0 +38.0,302.99566650390625,-912.9492797851562,-21937728.0,-17969518.0 +39.0,302.9671936035156,-884.591796875,-21946404.0,-17978568.0 +40.0,303.0029602050781,-915.6740112304688,-21944764.0,-17976458.0 +41.0,302.9989318847656,-912.9147338867188,-21944058.0,-17975806.0 +42.0,303.3917236328125,-903.252685546875,-21947854.0,-17974458.0 +43.0,303.47344970703125,-910.3460083007812,-21946490.0,-17972024.0 +44.0,303.34979248046875,-948.6393432617188,-21942356.0,-17969508.0 +45.0,302.8062744140625,-918.56640625,-21938490.0,-17972760.0 +46.0,303.302734375,-916.9132690429688,-21940498.0,-17968268.0 +47.0,302.88623046875,-928.5449829101562,-21933406.0,-17966630.0 +48.0,303.5190734863281,-894.0086059570312,-21938858.0,-17963794.0 +49.0,303.3247985839844,-918.5298461914062,-21936926.0,-17964406.0 +50.0,303.1839904785156,-914.2434692382812,-21943512.0,-17972836.0 +51.0,303.4667053222656,-925.3673706054688,-21945968.0,-17971590.0 +52.0,303.21734619140625,-917.872314453125,-21943592.0,-17972480.0 +53.0,303.1031494140625,-912.9668579101562,-21941232.0,-17971614.0 +54.0,303.5224304199219,-878.4088745117188,-21945032.0,-17969924.0 +55.0,302.9212341308594,-904.4006958007812,-21942972.0,-17975736.0 +56.0,303.3028869628906,-910.67041015625,-21944742.0,-17972508.0 +57.0,302.76171875,-915.02099609375,-21946512.0,-17981366.0 +58.0,302.9114685058594,-928.7962036132812,-21943606.0,-17976500.0 +59.0,302.9564208984375,-924.1935424804688,-21942848.0,-17975152.0 +60.0,302.74078369140625,-899.0178833007812,-21941308.0,-17976436.0 +61.0,303.1263427734375,-897.8641967773438,-21942028.0,-17972108.0 +62.0,303.2218017578125,-884.0724487304688,-21940224.0,-17969052.0 +63.0,303.1838073730469,-906.248291015625,-21938832.0,-17968158.0 +64.0,303.7691650390625,-883.48876953125,-21939316.0,-17960976.0 +65.0,303.5456848144531,-908.4474487304688,-21935780.0,-17960368.0 +66.0,303.5096740722656,-912.2551879882812,-21936992.0,-17962050.0 +67.0,303.2980651855469,-921.57080078125,-21944096.0,-17971926.0 +68.0,302.91357421875,-889.0542602539062,-21940488.0,-17973354.0 +69.0,303.0370788574219,-896.5070190429688,-21936280.0,-17967528.0 +70.0,303.1720886230469,-888.3898315429688,-21944540.0,-17974020.0 +71.0,303.2520751953125,-904.76025390625,-21946724.0,-17975156.0 +72.0,303.234375,-907.2000122070312,-21947244.0,-17975908.0 +73.0,302.782470703125,-891.0250854492188,-21938442.0,-17973024.0 +74.0,302.7577819824219,-897.0895385742188,-21942032.0,-17976938.0 +75.0,303.66278076171875,-920.4035034179688,-21950752.0,-17973806.0 +76.0,303.3789367675781,-888.7321166992188,-21937860.0,-17964632.0 +77.0,303.2354431152344,-910.3715209960938,-21936740.0,-17965390.0 +78.0,303.1673889160156,-920.27685546875,-21932560.0,-17962102.0 +79.0,303.3273620605469,-913.2265014648438,-21938816.0,-17966262.0 +80.0,302.9779968261719,-912.9503784179688,-21941114.0,-17973136.0 +81.0,303.3407897949219,-892.4193725585938,-21947316.0,-17974588.0 +82.0,303.0836486816406,-896.87744140625,-21940900.0,-17971538.0 +83.0,302.8705749511719,-917.6741333007812,-21945468.0,-17978896.0 +84.0,303.2456359863281,-880.1615600585938,-21945926.0,-17974444.0 +85.0,303.0758361816406,-909.8202514648438,-21940588.0,-17971328.0 +86.0,302.61663818359375,-949.4501953125,-21943132.0,-17979886.0 +87.0,303.2823181152344,-917.977294921875,-21947296.0,-17975332.0 +88.0,303.239990234375,-927.0225219726562,-21946748.0,-17975340.0 +89.0,303.2162170410156,-922.5916137695312,-21946328.0,-17975230.0 +90.0,302.7700500488281,-909.484130859375,-21940792.0,-17975536.0 +91.0,303.41534423828125,-902.9974975585938,-21945116.0,-17971410.0 +92.0,302.86004638671875,-892.2996215820312,-21937532.0,-17971098.0 +93.0,302.92547607421875,-913.2173461914062,-21943026.0,-17975736.0 +94.0,302.7955017089844,-900.2982788085938,-21947056.0,-17981468.0 +95.0,303.5821838378906,-910.5183715820312,-21945926.0,-17970036.0 +96.0,302.96295166015625,-888.5094604492188,-21941922.0,-17974140.0 +97.0,303.3904113769531,-903.7435913085938,-21946280.0,-17972900.0 +98.0,303.1438903808594,-886.4281616210938,-21941768.0,-17971618.0 +99.0,303.0581970214844,-891.3944702148438,-21939008.0,-17969980.0 +100.0,303.2975158691406,-924.7879028320312,-21945498.0,-17973336.0 +101.0,302.97955322265625,-911.9213256835938,-21941092.0,-17973094.0 +102.0,302.82098388671875,-907.6354370117188,-21944572.0,-17978650.0 +103.0,303.0259704589844,-916.3557739257812,-21940660.0,-17972054.0 +104.0,303.0743103027344,-944.4728393554688,-21945560.0,-17976320.0 +105.0,302.9156799316406,-908.798583984375,-21944220.0,-17977058.0 +106.0,303.2958068847656,-910.5315551757812,-21949292.0,-17977152.0 +107.0,303.2253723144531,-934.9241333007812,-21944656.0,-17973438.0 +108.0,303.3775634765625,-910.7965698242188,-21947392.0,-17974180.0 +109.0,303.067626953125,-892.5729370117188,-21941858.0,-17972706.0 +110.0,303.0130920410156,-893.54052734375,-21937316.0,-17968878.0 +111.0,303.5130615234375,-918.8893432617188,-21939204.0,-17964218.0 +112.0,303.209228515625,-881.3751831054688,-21937460.0,-17966454.0 +113.0,303.11688232421875,-888.1023559570312,-21942352.0,-17972556.0 +114.0,303.337158203125,-907.0767211914062,-21941876.0,-17969194.0 +115.0,303.2660827636719,-918.7173461914062,-21943924.0,-17972172.0 +116.0,303.4932556152344,-909.8196411132812,-21944152.0,-17969426.0 +117.0,303.52838134765625,-890.625732421875,-21939560.0,-17964374.0 +118.0,303.66717529296875,-923.5717163085938,-21937820.0,-17960816.0 +119.0,303.1085205078125,-909.4363403320312,-21939308.0,-17969620.0 +120.0,303.6120910644531,-902.5042114257812,-21943244.0,-17966962.0 +121.0,303.1788024902344,-877.7609252929688,-21937460.0,-17966852.0 +122.0,303.19110107421875,-887.5392456054688,-21946766.0,-17975998.0 +123.0,302.8971252441406,-920.72705078125,-21943672.0,-17976752.0 +124.0,303.2171630859375,-885.3101196289062,-21944356.0,-17973246.0 +125.0,302.7710876464844,-876.97216796875,-21940640.0,-17975372.0 diff --git a/tests/fixtures/edr/A8HNE1_timeseries_step4.2_equilibration.csv b/tests/fixtures/edr/A8HNE1_timeseries_step4.2_equilibration.csv new file mode 100644 index 0000000..581b1cf --- /dev/null +++ b/tests/fixtures/edr/A8HNE1_timeseries_step4.2_equilibration.csv @@ -0,0 +1,2002 @@ +Time,Temperature,Pressure,Density,Volume,Potential,Total Energy,Box-X +0.0,302.77093505859375,-885.5507202148438,955.1350708007812,16581.375,-21940740.0,-17975474.0,25.5 +1.0,304.9201354980469,-419.1109619140625,982.0817260742188,16126.41015625,-22060332.0,-18066918.0,25.26460838317871 +2.0,304.1285095214844,-239.1086883544922,997.0487060546875,15884.33203125,-22124088.0,-18141042.0,25.13755226135254 +3.0,304.6080627441406,-121.20431518554688,1005.269775390625,15754.4306640625,-22163032.0,-18173706.0,25.06884002685547 +4.0,304.4075927734375,-81.17430877685547,1009.4898071289062,15688.5712890625,-22187788.0,-18201086.0,25.033859252929688 +5.0,303.9952697753906,-14.543159484863281,1011.701171875,15654.279296875,-22205952.0,-18224652.0,25.015605926513672 +6.0,303.510009765625,-27.099679946899414,1013.18115234375,15631.4130859375,-22212216.0,-18237270.0,25.003419876098633 +7.0,303.0581970214844,-16.643861770629883,1013.658447265625,15624.052734375,-22216346.0,-18247318.0,24.999494552612305 +8.0,303.52777099609375,4.608377933502197,1014.153564453125,15616.4248046875,-22228976.0,-18253798.0,24.995426177978516 +9.0,303.4350891113281,-0.37884458899497986,1014.24365234375,15615.0380859375,-22233906.0,-18259942.0,24.994686126708984 +10.0,303.28900146484375,10.531855583190918,1014.2928466796875,15614.2802734375,-22236940.0,-18264888.0,24.994281768798828 +11.0,303.53265380859375,-42.983245849609375,1014.09619140625,15617.30859375,-22230126.0,-18254884.0,24.99589729309082 +12.0,303.0286865234375,14.617740631103516,1014.1033325195312,15617.1982421875,-22222092.0,-18253450.0,24.995838165283203 +13.0,303.3509521484375,-11.566422462463379,1014.4547119140625,15611.7890625,-22226812.0,-18253950.0,24.992952346801758 +14.0,303.0219421386719,-15.772383689880371,1014.2296752929688,15615.2529296875,-22231224.0,-18262670.0,24.994800567626953 +15.0,303.5206604003906,-16.598684310913086,1014.556640625,15610.220703125,-22234922.0,-18259836.0,24.992115020751953 +16.0,303.2319030761719,13.430445671081543,1014.6813354492188,15608.3017578125,-22229080.0,-18257776.0,24.991090774536133 +17.0,303.38299560546875,7.468031406402588,1014.6002807617188,15609.548828125,-22236662.0,-18263380.0,24.991756439208984 +18.0,303.2470703125,10.051459312438965,1014.3046875,15614.09765625,-22237702.0,-18266200.0,24.994184494018555 +19.0,302.78936767578125,11.408371925354004,1013.8944091796875,15620.416015625,-22221552.0,-18256044.0,24.997554779052734 +20.0,303.1612243652344,-0.9169225692749023,1014.1300659179688,15616.7861328125,-22235740.0,-18265362.0,24.99561882019043 +21.0,303.2443542480469,-4.03508996963501,1014.4490966796875,15611.875,-22234086.0,-18262620.0,24.992998123168945 +22.0,302.7925109863281,-7.909104824066162,1014.5030517578125,15611.044921875,-22234076.0,-18268528.0,24.992555618286133 +23.0,303.2484130859375,2.710801362991333,1014.360595703125,15613.2373046875,-22241822.0,-18270302.0,24.993724822998047 +24.0,303.2276611328125,23.775876998901367,1014.6349487304688,15609.015625,-22238428.0,-18267180.0,24.991472244262695 +25.0,303.4795837402344,4.2339186668396,1014.2833251953125,15614.4267578125,-22236928.0,-18262382.0,24.994359970092773 +26.0,302.551025390625,-5.8363213539123535,1014.1495361328125,15616.486328125,-22230238.0,-18267852.0,24.995458602905273 +27.0,303.5037841796875,-7.201360702514648,1014.1240234375,15616.8798828125,-22242606.0,-18267742.0,24.995668411254883 +28.0,303.36395263671875,-26.693023681640625,1014.4102783203125,15612.47265625,-22234464.0,-18261432.0,24.993316650390625 +29.0,302.787841796875,-8.919574737548828,1014.256591796875,15614.8388671875,-22232534.0,-18267046.0,24.994579315185547 +30.0,303.3236389160156,-4.13284158706665,1014.4890747070312,15611.259765625,-22240492.0,-18267988.0,24.9926700592041 +31.0,303.1297302246094,14.40643310546875,1014.77880859375,15606.802734375,-22235382.0,-18265416.0,24.990291595458984 +32.0,303.1378479003906,-26.94489097595215,1014.81640625,15606.224609375,-22235240.0,-18265168.0,24.98998260498047 +33.0,303.06146240234375,12.648428916931152,1014.5126953125,15610.896484375,-22236076.0,-18267004.0,24.992475509643555 +34.0,303.0899353027344,2.8522613048553467,1014.5213623046875,15610.763671875,-22230436.0,-18260992.0,24.99240493774414 +35.0,303.31756591796875,20.182022094726562,1014.423095703125,15612.275390625,-22234884.0,-18262458.0,24.99321174621582 +36.0,303.2140808105469,23.430410385131836,1014.1673583984375,15616.2119140625,-22230596.0,-18259526.0,24.995311737060547 +37.0,303.2603759765625,-23.64423370361328,1014.498291015625,15611.1181640625,-22231322.0,-18259646.0,24.99259376525879 +38.0,303.23065185546875,24.625276565551758,1014.738037109375,15607.4296875,-22237020.0,-18265732.0,24.990625381469727 +39.0,303.3052978515625,-5.937386989593506,1014.7485961914062,15607.267578125,-22235284.0,-18263020.0,24.99053955078125 +40.0,303.33184814453125,4.841516494750977,1014.4514770507812,15611.8388671875,-22230856.0,-18258244.0,24.992979049682617 +41.0,303.5257873535156,12.330954551696777,1014.1880493164062,15615.8935546875,-22227288.0,-18252136.0,24.995141983032227 +42.0,302.95013427734375,-6.725822448730469,1014.59521484375,15609.626953125,-22228776.0,-18261164.0,24.991798400878906 +43.0,303.2466125488281,-3.517915725708008,1014.5062255859375,15610.99609375,-22231974.0,-18260478.0,24.992528915405273 +44.0,303.2295837402344,39.101314544677734,1014.5875244140625,15609.7451171875,-22231880.0,-18260606.0,24.99186134338379 +45.0,303.2566223144531,-11.907527923583984,1014.6082153320312,15609.4267578125,-22234812.0,-18263184.0,24.99169158935547 +46.0,303.3470153808594,0.0679829940199852,1014.43408203125,15612.1064453125,-22235480.0,-18262668.0,24.993122100830078 +47.0,303.0159912109375,-18.383317947387695,1014.210205078125,15615.552734375,-22237388.0,-18268912.0,24.99496078491211 +48.0,303.0368957519531,-21.25398826599121,1014.4749145507812,15611.4775390625,-22232946.0,-18264196.0,24.992786407470703 +49.0,303.0744323730469,0.8318781852722168,1014.3705444335938,15613.083984375,-22230448.0,-18261206.0,24.993642807006836 +50.0,303.2054443359375,20.433551788330078,1014.3255004882812,15613.77734375,-22231600.0,-18260644.0,24.9940128326416 +51.0,303.2071533203125,-3.9468681812286377,1014.3506469726562,15613.390625,-22229278.0,-18258298.0,24.993806838989258 +52.0,303.56842041015625,12.859875679016113,1014.5015869140625,15611.0673828125,-22235948.0,-18260236.0,24.99256706237793 +53.0,303.01397705078125,3.9105212688446045,1014.417236328125,15612.365234375,-22236238.0,-18267788.0,24.99325942993164 +54.0,302.99822998046875,-2.0125904083251953,1014.5429077148438,15610.431640625,-22239640.0,-18271396.0,24.99222755432129 +55.0,303.05206298828125,20.196016311645508,1014.3826293945312,15612.8984375,-22237344.0,-18268396.0,24.99354362487793 +56.0,303.111572265625,16.27722930908203,1014.637939453125,15608.9697265625,-22234678.0,-18264950.0,24.99144744873047 +57.0,303.43511962890625,-10.532505989074707,1014.3555297851562,15613.3154296875,-22234948.0,-18260984.0,24.99376678466797 +58.0,303.34747314453125,-1.761764407157898,1014.3110961914062,15613.9990234375,-22234300.0,-18261484.0,24.994131088256836 +59.0,303.2865295410156,19.38263511657715,1014.2796020507812,15614.484375,-22227250.0,-18255232.0,24.9943904876709 +60.0,302.947509765625,8.669119834899902,1013.99560546875,15618.857421875,-22226904.0,-18259324.0,24.996723175048828 +61.0,303.23919677734375,3.4515960216522217,1014.240966796875,15615.0791015625,-22234464.0,-18263066.0,24.994707107543945 +62.0,303.09771728515625,-40.11784744262695,1014.4036254882812,15612.5751953125,-22240040.0,-18270494.0,24.993371963500977 +63.0,303.1392517089844,-9.508790016174316,1014.7181396484375,15607.736328125,-22239280.0,-18269190.0,24.99078941345215 +64.0,303.2322692871094,42.415592193603516,1014.8668212890625,15605.44921875,-22235860.0,-18264552.0,24.98956871032715 +65.0,303.23406982421875,27.72026252746582,1014.6918334960938,15608.140625,-22238884.0,-18267552.0,24.991004943847656 +66.0,302.90106201171875,16.398298263549805,1014.5921630859375,15609.673828125,-22235690.0,-18268720.0,24.991823196411133 +67.0,303.18402099609375,4.096984386444092,1014.850830078125,15605.6953125,-22245112.0,-18274436.0,24.989700317382812 +68.0,303.2594299316406,-6.376451015472412,1015.1589965820312,15600.9580078125,-22247450.0,-18275786.0,24.987171173095703 +69.0,302.82452392578125,-3.844316244125366,1014.7459106445312,15607.30859375,-22242808.0,-18276840.0,24.99056053161621 +70.0,302.80609130859375,21.91997718811035,1014.9246215820312,15604.560546875,-22244094.0,-18278368.0,24.989093780517578 +71.0,303.0069885253906,-3.893139123916626,1015.03857421875,15602.80859375,-22250006.0,-18281648.0,24.9881591796875 +72.0,303.2561950683594,-11.09359359741211,1015.1729125976562,15600.744140625,-22245080.0,-18273458.0,24.987056732177734 +73.0,302.8744812011719,10.687821388244629,1014.855712890625,15605.6201171875,-22236312.0,-18269690.0,24.989660263061523 +74.0,303.2967834472656,27.80995750427246,1015.014404296875,15603.1806640625,-22236010.0,-18263856.0,24.988357543945312 +75.0,303.1484069824219,28.795801162719727,1014.83984375,15605.8642578125,-22231284.0,-18261074.0,24.989789962768555 +76.0,303.2069396972656,-8.947012901306152,1014.7755126953125,15606.853515625,-22233916.0,-18262940.0,24.990318298339844 +77.0,303.5651550292969,-0.9274066090583801,1014.6458129882812,15608.8486328125,-22234678.0,-18259010.0,24.991382598876953 +78.0,303.3125305175781,-1.7422332763671875,1014.342529296875,15613.515625,-22228348.0,-18255988.0,24.993873596191406 +79.0,302.97344970703125,16.152236938476562,1014.1987915039062,15615.728515625,-22225264.0,-18257346.0,24.995054244995117 +80.0,303.5511779785156,-6.667835235595703,1013.8252563476562,15621.4814453125,-22231090.0,-18255604.0,24.998123168945312 +81.0,303.4725341796875,-55.165435791015625,1014.1005249023438,15617.2412109375,-22233340.0,-18258884.0,24.995861053466797 +82.0,303.1507568359375,11.886788368225098,1014.0037841796875,15618.7314453125,-22227588.0,-18257348.0,24.99665641784668 +83.0,303.50372314453125,-45.96269607543945,1013.842041015625,15621.2236328125,-22232484.0,-18257620.0,24.99798583984375 +84.0,303.0678405761719,12.783543586730957,1014.63427734375,15609.0263671875,-22233768.0,-18264614.0,24.991477966308594 +85.0,303.039794921875,25.53041648864746,1014.6707153320312,15608.4658203125,-22238980.0,-18270192.0,24.991178512573242 +86.0,303.1739807128906,14.793971061706543,1014.4735107421875,15611.5,-22234084.0,-18263540.0,24.9927978515625 +87.0,302.9909362792969,13.163739204406738,1014.5905151367188,15609.69921875,-22231432.0,-18263284.0,24.991836547851562 +88.0,303.36004638671875,13.658241271972656,1014.4535522460938,15611.806640625,-22235832.0,-18262850.0,24.992961883544922 +89.0,303.19287109375,-3.4782793521881104,1014.5796508789062,15609.8662109375,-22239048.0,-18268256.0,24.991926193237305 +90.0,303.2231750488281,-24.789464950561523,1014.3455200195312,15613.4697265625,-22236896.0,-18265708.0,24.99384880065918 +91.0,303.06939697265625,-4.108850002288818,1014.3870849609375,15612.830078125,-22233672.0,-18264496.0,24.993507385253906 +92.0,303.18896484375,16.124372482299805,1014.3969116210938,15612.6787109375,-22236528.0,-18265788.0,24.993427276611328 +93.0,303.1867980957031,5.303240776062012,1014.5731201171875,15609.966796875,-22235748.0,-18265036.0,24.991979598999023 +94.0,303.1707763671875,-16.044086456298828,1014.7958984375,15606.5400390625,-22236808.0,-18266306.0,24.990150451660156 +95.0,303.3691711425781,16.75832176208496,1014.7490234375,15607.2607421875,-22238416.0,-18265314.0,24.990535736083984 +96.0,303.0185241699219,-11.005280494689941,1015.102294921875,15601.8291015625,-22245556.0,-18277048.0,24.98763656616211 +97.0,302.7181701660156,-11.088976860046387,1014.8558959960938,15605.6171875,-22237784.0,-18273208.0,24.98965835571289 +98.0,303.1494140625,-11.346966743469238,1014.7803955078125,15606.7783203125,-22238732.0,-18268508.0,24.990278244018555 +99.0,302.99652099609375,22.99579429626465,1014.805908203125,15606.3857421875,-22239068.0,-18270848.0,24.990068435668945 +100.0,303.07452392578125,14.641255378723145,1014.7628784179688,15607.0478515625,-22228648.0,-18259406.0,24.990421295166016 +101.0,303.16424560546875,23.43663215637207,1014.6823120117188,15608.287109375,-22229916.0,-18259500.0,24.9910831451416 +102.0,303.3627014160156,-0.9726007580757141,1014.3491821289062,15613.4130859375,-22225146.0,-18252130.0,24.993818283081055 +103.0,303.8843078613281,-7.1220574378967285,1014.3262939453125,15613.765625,-22236076.0,-18256228.0,24.994007110595703 +104.0,303.1500244140625,10.486044883728027,1014.4393920898438,15612.0244140625,-22236232.0,-18266000.0,24.993078231811523 +105.0,303.29388427734375,16.24564552307129,1014.6918334960938,15608.140625,-22236434.0,-18264320.0,24.991004943847656 +106.0,303.35528564453125,-34.46117401123047,1014.5403442382812,15610.470703125,-22233884.0,-18260964.0,24.99224853515625 +107.0,303.21380615234375,11.23251724243164,1014.3977661132812,15612.6650390625,-22235148.0,-18264082.0,24.993419647216797 +108.0,303.3716125488281,36.35479736328125,1014.5798950195312,15609.8623046875,-22235168.0,-18262036.0,24.991924285888672 +109.0,303.25042724609375,36.59864044189453,1014.3875732421875,15612.822265625,-22234928.0,-18263382.0,24.99350357055664 +110.0,303.21661376953125,-49.999080657958984,1014.3125610351562,15613.9765625,-22240436.0,-18269332.0,24.99411964416504 +111.0,303.215087890625,-6.7853684425354,1014.5780029296875,15609.8916015625,-22233388.0,-18262304.0,24.991939544677734 +112.0,303.28656005859375,-15.655296325683594,1014.3200073242188,15613.8623046875,-22228200.0,-18256180.0,24.99405860900879 +113.0,303.1742248535156,0.8054516911506653,1014.4630737304688,15611.66015625,-22234000.0,-18263452.0,24.992883682250977 +114.0,303.4383850097656,-2.5815093517303467,1014.7160034179688,15607.7685546875,-22236764.0,-18262756.0,24.990806579589844 +115.0,303.3705139160156,8.505865097045898,1014.9612426757812,15603.998046875,-22235712.0,-18262594.0,24.988794326782227 +116.0,303.4931945800781,23.510652542114258,1014.5403442382812,15610.470703125,-22238532.0,-18263808.0,24.99224853515625 +117.0,302.9502868652344,28.408309936523438,1014.8428955078125,15605.8173828125,-22240760.0,-18273144.0,24.989765167236328 +118.0,302.7625427246094,6.056426525115967,1014.8021850585938,15606.443359375,-22238678.0,-18273522.0,24.99009895324707 +119.0,303.0103454589844,-8.715194702148438,1014.7389526367188,15607.416015625,-22243852.0,-18275450.0,24.990617752075195 +120.0,302.96990966796875,9.066417694091797,1014.9014282226562,15604.9169921875,-22239880.0,-18272008.0,24.98928451538086 +121.0,302.7353515625,6.359666347503662,1014.6886596679688,15608.189453125,-22238316.0,-18273516.0,24.991031646728516 +122.0,303.2381286621094,20.97981071472168,1014.787109375,15606.6748046875,-22242606.0,-18271220.0,24.990222930908203 +123.0,303.39129638671875,-25.545557022094727,1014.729736328125,15607.5576171875,-22236340.0,-18262948.0,24.990694046020508 +124.0,303.58660888671875,27.590166091918945,1014.8763427734375,15605.302734375,-22239622.0,-18263674.0,24.989490509033203 +125.0,303.0146484375,-0.16668955981731415,1014.7706298828125,15606.9287109375,-22239816.0,-18271358.0,24.990358352661133 +126.0,302.9659118652344,-3.6275787353515625,1014.7578735351562,15607.125,-22241220.0,-18273400.0,24.990463256835938 +127.0,302.6294250488281,-21.01189613342285,1014.7908325195312,15606.6181640625,-22241568.0,-18278156.0,24.990192413330078 +128.0,302.932373046875,19.627302169799805,1014.787353515625,15606.671875,-22240276.0,-18272896.0,24.99022102355957 +129.0,302.917236328125,-23.057388305664062,1014.6718139648438,15608.4482421875,-22235552.0,-18268370.0,24.991168975830078 +130.0,303.09954833984375,28.0069637298584,1014.4760131835938,15611.4609375,-22232424.0,-18262854.0,24.99277687072754 +131.0,303.0181579589844,-15.856274604797363,1014.4375,15612.0537109375,-22225684.0,-18257180.0,24.993093490600586 +132.0,303.4563903808594,-12.927647590637207,1014.7002563476562,15608.0107421875,-22234086.0,-18259842.0,24.990936279296875 +133.0,303.66680908203125,-6.602255344390869,1014.5559692382812,15610.23046875,-22233256.0,-18256256.0,24.99212074279785 +134.0,303.5799865722656,13.308735847473145,1014.1622924804688,15616.2900390625,-22232214.0,-18256352.0,24.99535369873047 +135.0,303.1485900878906,-27.81123924255371,1014.1685791015625,15616.193359375,-22227024.0,-18256812.0,24.995302200317383 +136.0,303.0993957519531,-5.920314788818359,1014.5882568359375,15609.734375,-22228038.0,-18258470.0,24.99185562133789 +137.0,302.86273193359375,-1.0158756971359253,1014.4609985351562,15611.6923828125,-22227896.0,-18261428.0,24.992900848388672 +138.0,303.14495849609375,-40.95249938964844,1014.2763671875,15614.5341796875,-22231074.0,-18260908.0,24.994417190551758 +139.0,303.4237976074219,-0.4798361361026764,1014.7348022460938,15607.4794921875,-22235274.0,-18261458.0,24.990652084350586 +140.0,303.21844482421875,-22.65228271484375,1014.6823120117188,15608.287109375,-22235804.0,-18264676.0,24.9910831451416 +141.0,303.3826904296875,-9.22842788696289,1014.56982421875,15610.017578125,-22235668.0,-18262390.0,24.992006301879883 +142.0,303.3782043457031,8.282225608825684,1014.9521484375,15604.1376953125,-22237034.0,-18263814.0,24.988868713378906 +143.0,303.4156188964844,-14.192776679992676,1014.5968627929688,15609.6015625,-22234120.0,-18260410.0,24.991785049438477 +144.0,303.38470458984375,-13.885650634765625,1014.9304809570312,15604.470703125,-22235722.0,-18262418.0,24.989046096801758 +145.0,303.0354309082031,11.443102836608887,1014.979248046875,15603.720703125,-22234748.0,-18266018.0,24.988645553588867 +146.0,302.9685974121094,-2.862419843673706,1014.603271484375,15609.5029296875,-22234072.0,-18266218.0,24.991731643676758 +147.0,303.45770263671875,15.298599243164062,1014.5152587890625,15610.857421875,-22239702.0,-18265442.0,24.992454528808594 +148.0,302.92791748046875,-12.229296684265137,1014.1351928710938,15616.7080078125,-22233972.0,-18266650.0,24.995576858520508 +149.0,302.6313781738281,29.411684036254883,1014.6799926757812,15608.322265625,-22235436.0,-18271998.0,24.99110221862793 +150.0,303.11175537109375,-18.749643325805664,1014.5884399414062,15609.7314453125,-22236016.0,-18266286.0,24.991853713989258 +151.0,303.350341796875,-12.543248176574707,1014.2362060546875,15615.15234375,-22229186.0,-18256332.0,24.994747161865234 +152.0,303.33258056640625,8.275725364685059,1014.2749633789062,15614.5556640625,-22235848.0,-18263226.0,24.994428634643555 +153.0,303.5690002441406,5.532834529876709,1014.3775634765625,15612.9765625,-22232416.0,-18256698.0,24.99358558654785 +154.0,303.3614501953125,-3.7123374938964844,1014.5386962890625,15610.49609375,-22231908.0,-18258908.0,24.99226188659668 +155.0,303.47760009765625,16.188568115234375,1014.9320678710938,15604.4462890625,-22232032.0,-18257510.0,24.989032745361328 +156.0,303.6477966308594,-2.801955461502075,1014.6015014648438,15609.5302734375,-22230460.0,-18253710.0,24.99174690246582 +157.0,303.14190673828125,9.489533424377441,1014.6783447265625,15608.34765625,-22231524.0,-18261400.0,24.99111557006836 +158.0,303.1332702636719,-0.2033100128173828,1014.337890625,15613.5869140625,-22241172.0,-18271160.0,24.993911743164062 +159.0,303.0223388671875,30.03607940673828,1014.2303466796875,15615.2421875,-22239576.0,-18271018.0,24.994794845581055 +160.0,303.1377868652344,12.30298900604248,1014.366455078125,15613.1474609375,-22241874.0,-18271804.0,24.993677139282227 +161.0,303.05560302734375,20.871395111083984,1014.3745727539062,15613.0224609375,-22236732.0,-18267738.0,24.993610382080078 +162.0,303.16949462890625,-26.022216796875,1014.28125,15614.458984375,-22237600.0,-18267114.0,24.99437713623047 +163.0,303.0739440917969,-14.734353065490723,1014.299072265625,15614.1845703125,-22237036.0,-18267802.0,24.994230270385742 +164.0,303.2736511230469,-9.823220252990723,1014.3104858398438,15614.0087890625,-22235824.0,-18263974.0,24.994136810302734 +165.0,302.8806457519531,-19.386619567871094,1014.3025512695312,15614.130859375,-22232498.0,-18265796.0,24.99420166015625 +166.0,302.6441955566406,-7.119678020477295,1014.542724609375,15610.4345703125,-22237236.0,-18273630.0,24.992229461669922 +167.0,303.2179260253906,10.707141876220703,1014.812744140625,15606.28125,-22240548.0,-18269428.0,24.990013122558594 +168.0,302.9459228515625,21.38714027404785,1014.4883422851562,15611.271484375,-22231880.0,-18264322.0,24.99267578125 +169.0,303.289794921875,30.049802780151367,1014.7685546875,15606.9609375,-22232380.0,-18260318.0,24.990375518798828 +170.0,303.03485107421875,-16.5280704498291,1014.3738403320312,15613.033203125,-22232780.0,-18264058.0,24.993616104125977 +171.0,303.1128845214844,-5.045384883880615,1014.4165649414062,15612.3759765625,-22236878.0,-18267134.0,24.99326515197754 +172.0,303.15557861328125,-14.919967651367188,1014.5726928710938,15609.9736328125,-22234752.0,-18264448.0,24.99198341369629 +173.0,303.1349182128906,11.144783020019531,1015.0850219726562,15602.0947265625,-22237330.0,-18267296.0,24.987777709960938 +174.0,303.0747375488281,0.7964112162590027,1014.5773315429688,15609.90234375,-22233096.0,-18263852.0,24.991945266723633 +175.0,303.4050598144531,-16.64803123474121,1014.6681518554688,15608.5048828125,-22239856.0,-18266284.0,24.991199493408203 +176.0,303.1457824707031,12.5678129196167,1014.6883544921875,15608.1943359375,-22240104.0,-18269928.0,24.99103355407715 +177.0,302.9997253417969,24.870859146118164,1014.6398315429688,15608.9404296875,-22241856.0,-18273594.0,24.991432189941406 +178.0,303.03814697265625,-17.225461959838867,1014.3246459960938,15613.791015625,-22234086.0,-18265320.0,24.994020462036133 +179.0,303.1293029785156,-6.454464435577393,1014.5390625,15610.4912109375,-22230406.0,-18260446.0,24.992259979248047 +180.0,303.5906982421875,6.284149646759033,1014.6488647460938,15608.8017578125,-22239452.0,-18263450.0,24.991357803344727 +181.0,303.1471862792969,-12.59637451171875,1014.2254638671875,15615.3173828125,-22237812.0,-18267618.0,24.994834899902344 +182.0,302.70709228515625,-37.98128890991211,1014.5533447265625,15610.271484375,-22233524.0,-18269094.0,24.992141723632812 +183.0,303.0762023925781,-7.643905162811279,1014.7522583007812,15607.2109375,-22238932.0,-18269668.0,24.990509033203125 +184.0,303.18731689453125,12.976710319519043,1014.3910522460938,15612.7685546875,-22238688.0,-18267968.0,24.99347496032715 +185.0,303.3081359863281,24.497549057006836,1014.5118408203125,15610.91015625,-22237392.0,-18265090.0,24.992483139038086 +186.0,303.11041259765625,-4.2763237953186035,1014.3358154296875,15613.619140625,-22235412.0,-18265700.0,24.993928909301758 +187.0,303.10516357421875,9.584809303283691,1014.7222900390625,15607.671875,-22235014.0,-18265370.0,24.990755081176758 +188.0,303.0509948730469,14.650711059570312,1014.4536743164062,15611.8046875,-22235002.0,-18266068.0,24.99295997619629 +189.0,303.4408874511719,32.6353645324707,1014.4631958007812,15611.658203125,-22237016.0,-18262976.0,24.992881774902344 +190.0,303.3720397949219,0.6293560862541199,1014.221923828125,15615.3720703125,-22235340.0,-18262202.0,24.994863510131836 +191.0,303.3070373535156,-22.320810317993164,1014.2960815429688,15614.23046875,-22230144.0,-18257856.0,24.99425506591797 +192.0,303.1971435546875,-0.9204521179199219,1014.6021728515625,15609.51953125,-22227188.0,-18256340.0,24.991741180419922 +193.0,303.5727844238281,37.26811599731445,1014.210205078125,15615.552734375,-22228076.0,-18252308.0,24.99496078491211 +194.0,303.0871887207031,-6.952717304229736,1014.2003784179688,15615.7041015625,-22223574.0,-18254166.0,24.995040893554688 +195.0,303.20758056640625,7.30722188949585,1014.2188110351562,15615.419921875,-22219954.0,-18248970.0,24.994890213012695 +196.0,303.4254455566406,15.220809936523438,1014.0747680664062,15617.6376953125,-22224560.0,-18250722.0,24.99607276916504 +197.0,304.02777099609375,6.909006595611572,1014.2359008789062,15615.1572265625,-22234304.0,-18252578.0,24.994749069213867 +198.0,303.197509765625,0.8933714032173157,1014.251953125,15614.91015625,-22230156.0,-18259304.0,24.994617462158203 +199.0,302.8971862792969,-18.857864379882812,1013.9629516601562,15619.3603515625,-22226164.0,-18259244.0,24.996992111206055 +200.0,303.2377624511719,14.77241039276123,1014.2468872070312,15614.98828125,-22232990.0,-18261610.0,24.994659423828125 +201.0,303.23333740234375,24.914949417114258,1014.3090209960938,15614.03125,-22233420.0,-18262098.0,24.99414825439453 +202.0,303.2120056152344,37.11873245239258,1014.7657470703125,15607.00390625,-22230742.0,-18259700.0,24.990398406982422 +203.0,303.0295715332031,5.1363911628723145,1014.7102661132812,15607.857421875,-22229174.0,-18260520.0,24.990854263305664 +204.0,303.27813720703125,-25.0179386138916,1014.4783935546875,15611.4248046875,-22231918.0,-18260010.0,24.99275779724121 +205.0,303.1753234863281,1.7318376302719116,1014.5863037109375,15609.763671875,-22237020.0,-18266458.0,24.991870880126953 +206.0,303.5863342285156,0.37539586424827576,1014.9827880859375,15603.666015625,-22237058.0,-18261112.0,24.988616943359375 +207.0,303.2223205566406,-7.381479263305664,1014.5717163085938,15609.98828125,-22238384.0,-18267206.0,24.99199104309082 +208.0,303.0790100097656,15.648627281188965,1014.4449462890625,15611.939453125,-22233168.0,-18263868.0,24.993032455444336 +209.0,303.1325378417969,-11.727531433105469,1014.390380859375,15612.779296875,-22229204.0,-18259202.0,24.993480682373047 +210.0,303.089111328125,57.21782302856445,1014.443115234375,15611.9677734375,-22234868.0,-18265436.0,24.9930477142334 +211.0,303.0399475097656,-0.6400159001350403,1014.5460205078125,15610.3837890625,-22235544.0,-18266754.0,24.992202758789062 +212.0,303.12701416015625,-2.994999885559082,1014.49951171875,15611.099609375,-22231468.0,-18261538.0,24.992584228515625 +213.0,303.2784423828125,34.80693435668945,1014.5882568359375,15609.734375,-22234420.0,-18262508.0,24.99185562133789 +214.0,303.08831787109375,30.58363914489746,1014.2330932617188,15615.2001953125,-22231856.0,-18262434.0,24.99477195739746 +215.0,303.200439453125,-19.881446838378906,1014.1915893554688,15615.8388671875,-22233280.0,-18262388.0,24.995113372802734 +216.0,303.4560241699219,7.299034118652344,1014.4481811523438,15611.8896484375,-22234372.0,-18260134.0,24.993005752563477 +217.0,302.9892272949219,3.871248483657837,1014.8333740234375,15605.9638671875,-22233888.0,-18265762.0,24.989843368530273 +218.0,302.9721984863281,14.384323120117188,1014.5888671875,15609.724609375,-22232880.0,-18264978.0,24.991849899291992 +219.0,303.03143310546875,-0.7306788563728333,1014.6387939453125,15608.9560546875,-22232576.0,-18263898.0,24.991439819335938 +220.0,303.4977722167969,14.136263847351074,1014.6256103515625,15609.1591796875,-22236200.0,-18261414.0,24.991548538208008 +221.0,303.1417236328125,-31.235204696655273,1014.4447021484375,15611.943359375,-22230964.0,-18260842.0,24.99303436279297 +222.0,303.1763610839844,-0.6022427678108215,1014.676025390625,15608.3837890625,-22232390.0,-18261814.0,24.991134643554688 +223.0,303.0841369628906,9.36567211151123,1014.763916015625,15607.0322265625,-22237152.0,-18267784.0,24.990413665771484 +224.0,302.6781005859375,-0.8344599604606628,1014.6000366210938,15609.552734375,-22235128.0,-18271078.0,24.991758346557617 +225.0,302.7824401855469,42.47340393066406,1014.5045776367188,15611.021484375,-22236566.0,-18271148.0,24.992542266845703 +226.0,302.7745361328125,-9.177544593811035,1014.4620971679688,15611.6748046875,-22237702.0,-18272388.0,24.992891311645508 +227.0,303.2163391113281,-9.016495704650879,1014.313232421875,15613.966796875,-22234322.0,-18263222.0,24.99411392211914 +228.0,303.3165588378906,-14.989640235900879,1013.9847412109375,15619.0244140625,-22229610.0,-18257198.0,24.99681282043457 +229.0,303.13922119140625,3.007847547531128,1014.2584838867188,15614.8095703125,-22229936.0,-18259846.0,24.994564056396484 +230.0,303.0726013183594,24.543113708496094,1014.4056396484375,15612.5439453125,-22229280.0,-18260062.0,24.99335479736328 +231.0,302.9085998535156,10.091874122619629,1014.3673095703125,15613.1337890625,-22225356.0,-18258288.0,24.993669509887695 +232.0,303.11248779296875,9.489377975463867,1014.3110961914062,15613.9990234375,-22224488.0,-18254748.0,24.994131088256836 +233.0,303.15301513671875,64.45758819580078,1014.1094360351562,15617.1044921875,-22229006.0,-18258736.0,24.99578857421875 +234.0,302.885986328125,-20.985010147094727,1014.1513671875,15616.458984375,-22231728.0,-18264956.0,24.99544334411621 +235.0,303.1058044433594,11.156977653503418,1014.3471069335938,15613.4453125,-22242908.0,-18273256.0,24.99383544921875 +236.0,303.0304260253906,4.658911228179932,1014.622314453125,15609.2099609375,-22244016.0,-18275352.0,24.991575241088867 +237.0,302.88555908203125,-11.767779350280762,1014.8728637695312,15605.3564453125,-22249848.0,-18283080.0,24.989519119262695 +238.0,302.97076416015625,5.075425624847412,1015.0890502929688,15602.033203125,-22246504.0,-18278620.0,24.98774528503418 +239.0,302.7820739746094,-7.2009663581848145,1014.6804809570312,15608.3154296875,-22239658.0,-18274246.0,24.991098403930664 +240.0,302.7744445800781,23.06464958190918,1014.6326293945312,15609.0517578125,-22235172.0,-18269860.0,24.991491317749023 +241.0,303.3362731933594,21.29494285583496,1014.2134399414062,15615.5029296875,-22235560.0,-18262890.0,24.99493408203125 +242.0,303.1473083496094,-2.0240652561187744,1013.8968505859375,15620.37890625,-22233820.0,-18263624.0,24.997535705566406 +243.0,302.9747619628906,-16.109474182128906,1014.753662109375,15607.189453125,-22238126.0,-18270190.0,24.990497589111328 +244.0,303.1628112792969,16.157777786254883,1014.864013671875,15605.4921875,-22237276.0,-18266878.0,24.989591598510742 +245.0,303.2393798828125,-11.891507148742676,1014.5953979492188,15609.6240234375,-22239334.0,-18267932.0,24.991796493530273 +246.0,303.0819396972656,2.342371702194214,1014.4764404296875,15611.4541015625,-22242130.0,-18272790.0,24.992773056030273 +247.0,302.99700927734375,-13.58053970336914,1014.522216796875,15610.75,-22242372.0,-18274144.0,24.99239730834961 +248.0,303.2465515136719,27.103727340698242,1014.5255126953125,15610.69921875,-22235580.0,-18264084.0,24.99237060546875 +249.0,303.20947265625,27.789215087890625,1014.4514770507812,15611.8388671875,-22233928.0,-18262918.0,24.992979049682617 +250.0,303.34527587890625,15.464852333068848,1014.2684326171875,15614.65625,-22231264.0,-18258476.0,24.994482040405273 +251.0,303.05535888671875,-26.224380493164062,1014.3675537109375,15613.1298828125,-22235228.0,-18266236.0,24.993667602539062 +252.0,302.94671630859375,22.6224422454834,1014.7991943359375,15606.4892578125,-22235496.0,-18267928.0,24.990123748779297 +253.0,303.4557800292969,-9.511235237121582,1014.6764526367188,15608.376953125,-22234460.0,-18260224.0,24.991130828857422 +254.0,303.23565673828125,-11.128952026367188,1014.7333984375,15607.5009765625,-22239804.0,-18268452.0,24.990663528442383 +255.0,303.44720458984375,19.33635902404785,1015.0650634765625,15602.4013671875,-22241016.0,-18266894.0,24.98794174194336 +256.0,303.1001892089844,-7.940221786499023,1014.9228515625,15604.587890625,-22232752.0,-18263174.0,24.98910903930664 +257.0,303.081787109375,-17.49349021911621,1014.43408203125,15612.1064453125,-22236488.0,-18267150.0,24.993122100830078 +258.0,303.38861083984375,0.2894706726074219,1014.3921508789062,15612.751953125,-22240612.0,-18267256.0,24.993465423583984 +259.0,303.29412841796875,2.211954116821289,1014.5030517578125,15611.044921875,-22239104.0,-18266986.0,24.992555618286133 +260.0,303.114990234375,9.91072940826416,1014.5411376953125,15610.458984375,-22237992.0,-18268220.0,24.99224281311035 +261.0,303.0576171875,26.88146209716797,1014.2298583984375,15615.25,-22239858.0,-18270836.0,24.99479866027832 +262.0,303.09588623046875,-14.885077476501465,1014.4060668945312,15612.537109375,-22242756.0,-18273234.0,24.993350982666016 +263.0,302.9307556152344,-3.1267242431640625,1014.3857421875,15612.8505859375,-22240636.0,-18273276.0,24.993518829345703 +264.0,303.3562927246094,10.253832817077637,1014.7213745117188,15607.6865234375,-22243368.0,-18270436.0,24.99076271057129 +265.0,302.89764404296875,10.385674476623535,1014.4965209960938,15611.1455078125,-22233140.0,-18266214.0,24.99260902404785 +266.0,303.30120849609375,-3.0225346088409424,1014.5183715820312,15610.8095703125,-22234666.0,-18262456.0,24.992429733276367 +267.0,303.2403564453125,56.59490966796875,1014.4370727539062,15612.060546875,-22229278.0,-18257864.0,24.99309730529785 +268.0,303.10284423828125,8.977690696716309,1014.5850219726562,15609.7841796875,-22229724.0,-18260112.0,24.99188232421875 +269.0,302.8826599121094,4.307902812957764,1014.7389526367188,15607.416015625,-22235864.0,-18269134.0,24.990617752075195 +270.0,303.5065612792969,16.81461524963379,1014.6470336914062,15608.830078125,-22237866.0,-18262966.0,24.99137306213379 +271.0,303.2340087890625,-45.776275634765625,1014.46142578125,15611.685546875,-22232382.0,-18261052.0,24.992897033691406 +272.0,303.1463928222656,18.467357635498047,1014.849853515625,15605.7099609375,-22233944.0,-18263760.0,24.989707946777344 +273.0,303.3203125,5.016120910644531,1014.41357421875,15612.421875,-22234748.0,-18262286.0,24.993289947509766 +274.0,302.9596252441406,-7.467493534088135,1014.3104858398438,15614.0087890625,-22228190.0,-18260452.0,24.994136810302734 +275.0,303.0966796875,7.174427032470703,1014.6007690429688,15609.541015625,-22236648.0,-18267116.0,24.99175262451172 +276.0,303.0631408691406,23.20867156982422,1014.5726928710938,15609.9736328125,-22238324.0,-18269230.0,24.99198341369629 +277.0,303.2275695800781,18.400680541992188,1014.4883422851562,15611.271484375,-22236000.0,-18264754.0,24.99267578125 +278.0,303.11016845703125,1.786669373512268,1014.36181640625,15613.21875,-22234540.0,-18264832.0,24.993715286254883 +279.0,303.06512451171875,-14.75452709197998,1014.0897216796875,15617.408203125,-22228784.0,-18259664.0,24.99595069885254 +280.0,303.2985534667969,-3.802999496459961,1014.2730712890625,15614.5849609375,-22233588.0,-18261412.0,24.994443893432617 +281.0,302.9392395019531,6.729886531829834,1014.0587768554688,15617.884765625,-22229590.0,-18262120.0,24.996204376220703 +282.0,303.1154479980469,2.816990613937378,1014.2693481445312,15614.6416015625,-22237124.0,-18267346.0,24.994474411010742 +283.0,302.9403991699219,8.180874824523926,1014.6565551757812,15608.68359375,-22239244.0,-18271758.0,24.991294860839844 +284.0,302.80963134765625,-2.8926429748535156,1014.0728759765625,15617.6669921875,-22243416.0,-18277644.0,24.9960880279541 +285.0,303.0131530761719,-17.651391983032227,1014.4976806640625,15611.1279296875,-22246194.0,-18277756.0,24.992599487304688 +286.0,302.79736328125,17.615966796875,1014.3973388671875,15612.671875,-22239020.0,-18273408.0,24.993423461914062 +287.0,302.424072265625,-5.547130584716797,1014.252685546875,15614.8984375,-22236252.0,-18275528.0,24.994611740112305 +288.0,303.4514465332031,3.1455917358398438,1014.5536499023438,15610.2666015625,-22240680.0,-18266502.0,24.99213981628418 +289.0,303.060791015625,-9.931767463684082,1014.5169067382812,15610.83203125,-22236052.0,-18266990.0,24.992441177368164 +290.0,302.878173828125,12.808043479919434,1014.6788330078125,15608.3408203125,-22235444.0,-18268774.0,24.991111755371094 +291.0,303.6571044921875,-11.681975364685059,1014.41357421875,15612.421875,-22240840.0,-18263968.0,24.993289947509766 +292.0,303.0499572753906,11.960701942443848,1014.45654296875,15611.7607421875,-22238676.0,-18269756.0,24.992937088012695 +293.0,302.8816223144531,16.859146118164062,1014.6912231445312,15608.150390625,-22237404.0,-18270688.0,24.991010665893555 +294.0,303.0058898925781,-21.380287170410156,1014.4154663085938,15612.392578125,-22238558.0,-18270214.0,24.993274688720703 +295.0,302.8789978027344,4.442296504974365,1014.5325317382812,15610.591796875,-22236428.0,-18269746.0,24.992313385009766 +296.0,302.97039794921875,-1.9202378988265991,1014.9728393554688,15603.8193359375,-22241624.0,-18273746.0,24.988698959350586 +297.0,303.2589416503906,10.929335594177246,1014.6307373046875,15609.080078125,-22238132.0,-18266474.0,24.991506576538086 +298.0,303.0274658203125,25.422658920288086,1014.5487670898438,15610.341796875,-22230268.0,-18261642.0,24.99217987060547 +299.0,303.3193359375,19.328062057495117,1014.5643310546875,15610.1025390625,-22226992.0,-18254544.0,24.99205207824707 +300.0,303.4947814941406,4.558254718780518,1014.59423828125,15609.6416015625,-22235376.0,-18260630.0,24.991806030273438 +301.0,303.24139404296875,-23.63420295715332,1014.566162109375,15610.07421875,-22230724.0,-18259296.0,24.992036819458008 +302.0,303.1157531738281,23.302658081054688,1014.2457275390625,15615.005859375,-22227608.0,-18257826.0,24.99466896057129 +303.0,302.9332580566406,8.238608360290527,1014.3750610351562,15613.0146484375,-22233344.0,-18265952.0,24.993606567382812 +304.0,302.9974365234375,6.898254871368408,1014.6748657226562,15608.4013671875,-22238212.0,-18269980.0,24.99114418029785 +305.0,303.2453918457031,-19.945932388305664,1014.379638671875,15612.9443359375,-22234256.0,-18262776.0,24.993568420410156 +306.0,302.94097900390625,13.443989753723145,1014.3921508789062,15612.751953125,-22233864.0,-18266370.0,24.993465423583984 +307.0,302.9794006347656,-4.369009494781494,1014.1466064453125,15616.5322265625,-22241732.0,-18273736.0,24.9954833984375 +308.0,303.03045654296875,-22.445785522460938,1014.4932250976562,15611.1962890625,-22238680.0,-18270014.0,24.99263572692871 +309.0,303.25616455078125,37.83650207519531,1014.65478515625,15608.7109375,-22237020.0,-18265398.0,24.991310119628906 +310.0,303.099365234375,-39.21392822265625,1014.2672729492188,15614.673828125,-22231108.0,-18261540.0,24.994491577148438 +311.0,303.0381774902344,7.410427570343018,1014.6635131835938,15608.576171875,-22234144.0,-18265378.0,24.99123764038086 +312.0,303.15667724609375,34.71613693237305,1014.6393432617188,15608.9482421875,-22234896.0,-18264578.0,24.991436004638672 +313.0,303.30706787109375,-4.7690510749816895,1014.5167236328125,15610.8349609375,-22231084.0,-18258796.0,24.992443084716797 +314.0,302.7384948730469,13.438347816467285,1014.6019287109375,15609.5234375,-22227072.0,-18262230.0,24.991743087768555 +315.0,302.99853515625,-27.709327697753906,1014.1651611328125,15616.24609375,-22234252.0,-18266004.0,24.995330810546875 +316.0,303.4771423339844,-21.022598266601562,1014.524169921875,15610.7197265625,-22238918.0,-18264404.0,24.992382049560547 +317.0,303.12469482421875,6.037777423858643,1014.4846801757812,15611.328125,-22241268.0,-18271368.0,24.992706298828125 +318.0,302.7803649902344,-20.38593864440918,1014.6995239257812,15608.0224609375,-22238308.0,-18272918.0,24.990942001342773 +319.0,302.2934875488281,6.956761837005615,1014.6997680664062,15608.0185546875,-22232404.0,-18273390.0,24.99094009399414 +320.0,303.13922119140625,2.2287871837615967,1014.5796508789062,15609.8662109375,-22237580.0,-18267490.0,24.991926193237305 +321.0,303.2757568359375,0.6605687141418457,1014.25244140625,15614.90234375,-22232828.0,-18260950.0,24.994613647460938 +322.0,303.5196838378906,24.11531639099121,1014.869384765625,15605.41015625,-22236712.0,-18261640.0,24.989547729492188 +323.0,303.36669921875,-27.998374938964844,1014.460205078125,15611.7041015625,-22231464.0,-18258396.0,24.99290657043457 +324.0,303.01202392578125,-34.026607513427734,1014.3861694335938,15612.84375,-22226608.0,-18258184.0,24.993515014648438 +325.0,303.3048095703125,-21.060623168945312,1014.5113525390625,15610.9169921875,-22224904.0,-18252646.0,24.99248695373535 +326.0,303.4405212402344,-1.907742977142334,1014.7420654296875,15607.3681640625,-22234904.0,-18260868.0,24.99059295654297 +327.0,302.9276123046875,-8.39039134979248,1014.1774291992188,15616.0576171875,-22230804.0,-18263486.0,24.995229721069336 +328.0,303.3255615234375,19.256370544433594,1014.4254760742188,15612.2392578125,-22234444.0,-18261914.0,24.993192672729492 +329.0,302.8855895996094,17.062326431274414,1014.436767578125,15612.0654296875,-22236552.0,-18269784.0,24.993099212646484 +330.0,303.4085388183594,-6.818345546722412,1014.393310546875,15612.7333984375,-22243052.0,-18269436.0,24.99345588684082 +331.0,303.01910400390625,-8.498671531677246,1014.4942016601562,15611.181640625,-22238560.0,-18270044.0,24.99262809753418 +332.0,303.3389587402344,1.4828453063964844,1014.66162109375,15608.60546875,-22240508.0,-18267802.0,24.991252899169922 +333.0,303.045166015625,-33.41859817504883,1014.6767578125,15608.3720703125,-22237472.0,-18268614.0,24.99112892150879 +334.0,303.6787109375,10.964280128479004,1014.6239624023438,15609.1845703125,-22234520.0,-18257364.0,24.991561889648438 +335.0,303.3270263671875,19.63716697692871,1014.4586181640625,15611.728515625,-22232384.0,-18259836.0,24.992919921875 +336.0,303.3043518066406,3.6124207973480225,1014.6590576171875,15608.64453125,-22234596.0,-18262344.0,24.991273880004883 +337.0,303.2703857421875,1.0745601654052734,1014.3838500976562,15612.8798828125,-22233336.0,-18261528.0,24.993534088134766 +338.0,303.4659118652344,31.533309936523438,1014.2886352539062,15614.3447265625,-22234760.0,-18260392.0,24.99431610107422 +339.0,303.1636962890625,15.809231758117676,1014.5242919921875,15610.7177734375,-22230676.0,-18260266.0,24.992380142211914 +340.0,303.1683349609375,-18.00748634338379,1014.0447998046875,15618.099609375,-22225958.0,-18255488.0,24.996318817138672 +341.0,303.3425598144531,-7.718363285064697,1014.3070068359375,15614.0625,-22232488.0,-18259736.0,24.994165420532227 +342.0,303.38165283203125,3.6855361461639404,1014.701171875,15607.9970703125,-22236144.0,-18262880.0,24.990928649902344 +343.0,302.5177917480469,14.944796562194824,1014.6514282226562,15608.76171875,-22226786.0,-18264836.0,24.991336822509766 +344.0,303.1402587890625,-15.556766510009766,1014.4541625976562,15611.796875,-22232140.0,-18262036.0,24.992956161499023 +345.0,303.3710632324219,-3.053271532058716,1014.56982421875,15610.017578125,-22236888.0,-18263762.0,24.992006301879883 +346.0,303.36602783203125,20.718734741210938,1014.5072021484375,15610.9814453125,-22235824.0,-18262764.0,24.992521286010742 +347.0,302.9707946777344,-14.49837589263916,1014.6421508789062,15608.9052734375,-22240204.0,-18272320.0,24.991413116455078 +348.0,303.1405029296875,30.267446517944336,1014.8419189453125,15605.83203125,-22242920.0,-18272814.0,24.98977279663086 +349.0,302.9701843261719,19.962890625,1014.5613403320312,15610.1484375,-22238944.0,-18271068.0,24.992076873779297 +350.0,302.844482421875,14.200825691223145,1014.5197143554688,15610.7890625,-22236096.0,-18269866.0,24.99241828918457 +351.0,303.0615234375,-30.694740295410156,1014.7097778320312,15607.8642578125,-22239568.0,-18270496.0,24.99085807800293 +352.0,303.15380859375,-1.2791932821273804,1014.8641967773438,15605.4892578125,-22244056.0,-18273776.0,24.98958969116211 +353.0,302.76348876953125,-5.588181972503662,1014.6748657226562,15608.4013671875,-22235704.0,-18270536.0,24.99114418029785 +354.0,303.0250244140625,-6.239378452301025,1014.46142578125,15611.685546875,-22232576.0,-18263982.0,24.992897033691406 +355.0,303.1008605957031,17.212793350219727,1014.1578979492188,15616.3583984375,-22233052.0,-18263464.0,24.995389938354492 +356.0,303.279296875,25.222749710083008,1013.5828247070312,15625.2177734375,-22233424.0,-18261500.0,25.0001163482666 +357.0,303.3539123535156,4.587414264678955,1014.122802734375,15616.8984375,-22232068.0,-18259166.0,24.995677947998047 +358.0,303.1089782714844,6.7932610511779785,1013.771484375,15622.310546875,-22238436.0,-18268742.0,24.998565673828125 +359.0,302.959716796875,-48.18564224243164,1014.0831909179688,15617.5087890625,-22233174.0,-18265436.0,24.996004104614258 +360.0,303.34918212890625,-21.165573120117188,1014.3285522460938,15613.73046875,-22234776.0,-18261936.0,24.993988037109375 +361.0,303.671875,11.73669719696045,1014.309326171875,15614.0263671875,-22233684.0,-18256620.0,24.9941463470459 +362.0,303.73455810546875,-6.2013840675354,1014.2489624023438,15614.9560546875,-22233360.0,-18255474.0,24.99464225769043 +363.0,303.36370849609375,0.3973560333251953,1014.2194213867188,15615.4111328125,-22224618.0,-18251588.0,24.994884490966797 +364.0,303.17822265625,7.796010971069336,1014.1588134765625,15616.34375,-22231812.0,-18261212.0,24.99538230895996 +365.0,303.0606384277344,-11.535526275634766,1013.7726440429688,15622.29296875,-22227692.0,-18258632.0,24.99855613708496 +366.0,303.466552734375,-2.4175078868865967,1013.6461181640625,15624.2421875,-22228472.0,-18254096.0,24.999595642089844 +367.0,303.053955078125,5.899791717529297,1014.2453002929688,15615.0126953125,-22229274.0,-18260300.0,24.994672775268555 +368.0,303.10235595703125,-8.907761573791504,1014.2131958007812,15615.5068359375,-22229472.0,-18259866.0,24.994935989379883 +369.0,303.2484130859375,12.163490295410156,1014.6254272460938,15609.162109375,-22234048.0,-18262528.0,24.99155044555664 +370.0,303.0733337402344,-3.553323984146118,1013.9863891601562,15618.9990234375,-22233792.0,-18264566.0,24.99679946899414 +371.0,303.332763671875,-1.8876928091049194,1014.2113647460938,15615.53515625,-22238380.0,-18265756.0,24.994951248168945 +372.0,303.1954345703125,2.609121322631836,1014.3863525390625,15612.8408203125,-22235532.0,-18264706.0,24.993513107299805 +373.0,303.1114196777344,31.6264591217041,1014.3770751953125,15612.9833984375,-22235156.0,-18265430.0,24.993589401245117 +374.0,303.1888427734375,12.98403263092041,1014.6446533203125,15608.8662109375,-22236194.0,-18265454.0,24.991392135620117 +375.0,302.7095947265625,-11.041199684143066,1014.24658203125,15614.9921875,-22229488.0,-18265024.0,24.994661331176758 +376.0,303.0985412597656,-10.821059226989746,1014.4532470703125,15611.8115234375,-22238918.0,-18269362.0,24.992963790893555 +377.0,302.9938659667969,7.809070587158203,1014.4510498046875,15611.845703125,-22235342.0,-18267156.0,24.992982864379883 +378.0,302.8968505859375,-20.340524673461914,1014.25634765625,15614.841796875,-22228672.0,-18261756.0,24.99458122253418 +379.0,303.2193603515625,-25.94719886779785,1014.1478881835938,15616.51171875,-22237078.0,-18265940.0,24.995471954345703 +380.0,303.0088195800781,-16.663602828979492,1014.3155517578125,15613.9306640625,-22232576.0,-18264194.0,24.994094848632812 +381.0,303.1602478027344,-6.927457332611084,1013.97900390625,15619.11328125,-22233522.0,-18263156.0,24.99686050415039 +382.0,302.80352783203125,-15.138293266296387,1013.9364624023438,15619.7685546875,-22228336.0,-18262642.0,24.997209548950195 +383.0,303.37432861328125,-18.29503059387207,1014.213623046875,15615.5,-22235652.0,-18262484.0,24.994932174682617 +384.0,303.1318664550781,25.448333740234375,1014.3743286132812,15613.0263671875,-22231484.0,-18261490.0,24.99361228942871 +385.0,303.2281188964844,-18.86468505859375,1014.3104858398438,15614.0087890625,-22238188.0,-18266934.0,24.994136810302734 +386.0,302.927490234375,-16.309690475463867,1014.9918823242188,15603.5263671875,-22235110.0,-18267794.0,24.988542556762695 +387.0,303.3160705566406,-0.8622245788574219,1014.9337158203125,15604.4208984375,-22237840.0,-18265434.0,24.9890193939209 +388.0,303.2333679199219,-8.829585075378418,1014.6593017578125,15608.640625,-22238318.0,-18266996.0,24.99127197265625 +389.0,303.52423095703125,18.42011260986328,1014.6992797851562,15608.0263671875,-22239598.0,-18264466.0,24.990943908691406 +390.0,303.28289794921875,25.71666717529297,1014.4428100585938,15611.9716796875,-22232948.0,-18260976.0,24.99304962158203 +391.0,303.08551025390625,-1.8763364553451538,1014.2516479492188,15614.9140625,-22234260.0,-18264874.0,24.994619369506836 +392.0,303.09967041015625,-27.72327995300293,1014.280029296875,15614.4775390625,-22232122.0,-18262550.0,24.994386672973633 +393.0,303.2133483886719,-30.388635635375977,1014.2405395507812,15615.0859375,-22234320.0,-18263260.0,24.99471092224121 +394.0,303.2056884765625,-7.181214809417725,1014.6077880859375,15609.43359375,-22232040.0,-18261080.0,24.991695404052734 +395.0,303.1575622558594,-21.759145736694336,1014.7025146484375,15607.9765625,-22235788.0,-18265458.0,24.990917205810547 +396.0,303.2878112792969,10.0150728225708,1014.757568359375,15607.1298828125,-22232564.0,-18260528.0,24.99046516418457 +397.0,302.957763671875,7.880141735076904,1014.6430053710938,15608.8916015625,-22233112.0,-18265400.0,24.991405487060547 +398.0,303.4536437988281,-8.386734008789062,1014.5067138671875,15610.98828125,-22237140.0,-18262932.0,24.992525100708008 +399.0,303.0500793457031,-26.623329162597656,1014.4732666015625,15611.5029296875,-22236534.0,-18267612.0,24.992799758911133 +400.0,303.1257019042969,-18.823944091796875,1014.7562255859375,15607.150390625,-22242352.0,-18272440.0,24.990476608276367 +401.0,303.23394775390625,32.20876693725586,1015.1201782226562,15601.5546875,-22242186.0,-18270856.0,24.987489700317383 +402.0,302.908935546875,9.219300270080566,1015.1559448242188,15601.0048828125,-22237508.0,-18270434.0,24.98719596862793 +403.0,302.7235107421875,15.175567626953125,1014.8472900390625,15605.75,-22241950.0,-18277304.0,24.989728927612305 +404.0,302.7720031738281,14.587890625,1014.720458984375,15607.7001953125,-22242850.0,-18277570.0,24.99077033996582 +405.0,302.8760986328125,5.406135082244873,1014.6516723632812,15608.7587890625,-22239940.0,-18273296.0,24.991334915161133 +406.0,303.3450927734375,9.98605728149414,1014.854248046875,15605.642578125,-22239054.0,-18266268.0,24.98967170715332 +407.0,303.2463073730469,8.105427742004395,1014.3345947265625,15613.6376953125,-22234060.0,-18262568.0,24.993938446044922 +408.0,303.042236328125,7.2848076820373535,1014.4912109375,15611.2275390625,-22238154.0,-18269336.0,24.992652893066406 +409.0,303.3978576660156,13.622637748718262,1014.4688720703125,15611.5712890625,-22234500.0,-18261024.0,24.992835998535156 +410.0,303.67578125,27.0589542388916,1014.6181640625,15609.2734375,-22236820.0,-18259704.0,24.991609573364258 +411.0,303.076416015625,-4.425775051116943,1014.484130859375,15611.3359375,-22232756.0,-18263490.0,24.99271011352539 +412.0,303.2779235839844,6.309373378753662,1014.7418212890625,15607.3720703125,-22235020.0,-18263114.0,24.9905948638916 +413.0,303.1462097167969,17.63057518005371,1014.6361694335938,15608.9970703125,-22234996.0,-18264816.0,24.99146270751953 +414.0,303.0748596191406,-33.084774017333984,1014.5833740234375,15609.8095703125,-22232884.0,-18263638.0,24.99189567565918 +415.0,303.4271545410156,15.56265926361084,1014.5899047851562,15609.708984375,-22239782.0,-18265922.0,24.99184226989746 +416.0,303.15936279296875,-7.559458255767822,1014.7469482421875,15607.29296875,-22232174.0,-18261820.0,24.99055290222168 +417.0,303.44317626953125,12.580248832702637,1014.404296875,15612.564453125,-22234452.0,-18260382.0,24.993366241455078 +418.0,303.52587890625,-7.1140594482421875,1014.5126953125,15610.896484375,-22240702.0,-18265548.0,24.992475509643555 +419.0,303.1703796386719,-36.6052131652832,1014.1349487304688,15616.7109375,-22230494.0,-18259996.0,24.99557876586914 +420.0,303.2601013183594,-1.7560218572616577,1014.0134887695312,15618.58203125,-22230800.0,-18259128.0,24.9965763092041 +421.0,303.30499267578125,1.299576759338379,1014.1630859375,15616.2783203125,-22230932.0,-18258672.0,24.99534797668457 +422.0,303.22467041015625,-9.236193656921387,1014.5172119140625,15610.8271484375,-22234392.0,-18263184.0,24.99243927001953 +423.0,303.5354309082031,0.32714009284973145,1014.6702270507812,15608.47265625,-22244956.0,-18269678.0,24.991182327270508 +424.0,303.1257019042969,22.333486557006836,1014.5217895507812,15610.7568359375,-22240240.0,-18270328.0,24.992401123046875 +425.0,303.369384765625,-35.3463249206543,1014.541259765625,15610.45703125,-22237940.0,-18264836.0,24.99224090576172 +426.0,302.91192626953125,34.368865966796875,1014.4557495117188,15611.7724609375,-22235916.0,-18268804.0,24.992942810058594 +427.0,303.1563415527344,0.8374481201171875,1014.3539428710938,15613.33984375,-22230064.0,-18259750.0,24.9937801361084 +428.0,303.3223876953125,26.77130126953125,1014.3369750976562,15613.6005859375,-22228960.0,-18256472.0,24.993919372558594 +429.0,303.0166015625,-25.329198837280273,1014.1466064453125,15616.5322265625,-22233428.0,-18264944.0,24.9954833984375 +430.0,303.4124450683594,-9.649568557739258,1014.39990234375,15612.6328125,-22240568.0,-18266900.0,24.9934024810791 +431.0,303.17547607421875,8.415302276611328,1014.7236328125,15607.6513671875,-22239636.0,-18269072.0,24.99074363708496 +432.0,303.1306457519531,-0.07423019409179688,1015.00927734375,15603.2587890625,-22235740.0,-18265762.0,24.988399505615234 +433.0,302.87518310546875,3.2770843505859375,1014.4260864257812,15612.2294921875,-22236770.0,-18270138.0,24.993186950683594 +434.0,303.03558349609375,-5.468355178833008,1014.7310791015625,15607.537109375,-22243534.0,-18274802.0,24.99068260192871 +435.0,303.0579528808594,-20.399137496948242,1014.4476928710938,15611.896484375,-22242720.0,-18273696.0,24.993009567260742 +436.0,302.9981689453125,1.2351964712142944,1014.4869995117188,15611.2919921875,-22247266.0,-18279024.0,24.992687225341797 +437.0,302.65167236328125,-11.83714771270752,1014.4569702148438,15611.75390625,-22238218.0,-18274514.0,24.99293327331543 +438.0,302.89837646484375,-14.06274127960205,1014.82177734375,15606.1416015625,-22240596.0,-18273660.0,24.989938735961914 +439.0,302.9013671875,-15.708172798156738,1015.234375,15599.7998046875,-22239338.0,-18272364.0,24.986553192138672 +440.0,303.177978515625,-4.387856960296631,1015.1038818359375,15601.8046875,-22242816.0,-18272220.0,24.98762321472168 +441.0,303.0271911621094,-14.532774925231934,1014.6544189453125,15608.7158203125,-22242288.0,-18273666.0,24.99131202697754 +442.0,302.8428955078125,-13.898910522460938,1014.7268676757812,15607.6015625,-22247900.0,-18281692.0,24.9907169342041 +443.0,303.0086364746094,-16.39800453186035,1014.7880249023438,15606.6611328125,-22244472.0,-18276092.0,24.990215301513672 +444.0,303.08929443359375,-11.892437934875488,1014.6444702148438,15608.869140625,-22243140.0,-18273704.0,24.99139404296875 +445.0,302.9833679199219,-10.926199913024902,1014.3973388671875,15612.671875,-22236534.0,-18268486.0,24.993423461914062 +446.0,302.9222106933594,32.49364471435547,1014.6851196289062,15608.244140625,-22236922.0,-18269674.0,24.991060256958008 +447.0,303.0705261230469,5.941646575927734,1014.522216796875,15610.75,-22233504.0,-18264314.0,24.99239730834961 +448.0,303.41558837890625,-3.103321075439453,1014.5289306640625,15610.646484375,-22229224.0,-18255516.0,24.992341995239258 +449.0,303.5668640136719,-3.8721256256103516,1014.0645751953125,15617.794921875,-22232460.0,-18256770.0,24.996156692504883 +450.0,303.75390625,7.947045803070068,1013.9944458007812,15618.875,-22228036.0,-18249896.0,24.996732711791992 +451.0,303.43829345703125,-11.43946361541748,1013.9254760742188,15619.9375,-22227904.0,-18253898.0,24.997299194335938 +452.0,303.47369384765625,4.1060471534729,1014.067138671875,15617.755859375,-22229550.0,-18255080.0,24.996135711669922 +453.0,303.121826171875,-10.434632301330566,1014.1202392578125,15616.9375,-22228648.0,-18258786.0,24.995698928833008 +454.0,303.499267578125,-51.02091979980469,1014.481689453125,15611.3740234375,-22231988.0,-18257184.0,24.99273109436035 +455.0,303.1104736328125,0.08397674560546875,1014.9067993164062,15604.8349609375,-22240338.0,-18270624.0,24.989240646362305 +456.0,303.28826904296875,12.434586524963379,1014.5891723632812,15609.7197265625,-22236820.0,-18264778.0,24.99184799194336 +457.0,302.83221435546875,6.421945095062256,1014.63916015625,15608.951171875,-22233748.0,-18267680.0,24.991437911987305 +458.0,303.68511962890625,-32.1049690246582,1014.3515014648438,15613.376953125,-22238866.0,-18261628.0,24.993799209594727 +459.0,303.3802795410156,10.90310287475586,1014.5573120117188,15610.2099609375,-22235664.0,-18262418.0,24.992109298706055 +460.0,303.4066162109375,-13.326083183288574,1014.261962890625,15614.755859375,-22231936.0,-18258344.0,24.994535446166992 +461.0,302.9862976074219,-5.1581525802612305,1014.6135864257812,15609.3447265625,-22226332.0,-18258244.0,24.991647720336914 +462.0,303.6854248046875,21.061555862426758,1014.2276000976562,15615.28515625,-22239328.0,-18262086.0,24.99481773376465 +463.0,303.19427490234375,17.84771156311035,1014.0079956054688,15618.6669921875,-22231220.0,-18260408.0,24.99662208557129 +464.0,303.4263000488281,-3.2415835857391357,1014.2173461914062,15615.4423828125,-22237744.0,-18263894.0,24.994901657104492 +465.0,303.1978454589844,0.1929759979248047,1014.0562133789062,15617.923828125,-22233120.0,-18262264.0,24.996225357055664 +466.0,303.3714904785156,19.561004638671875,1014.6184692382812,15609.26953125,-22236576.0,-18263444.0,24.991607666015625 +467.0,303.29595947265625,20.41242027282715,1014.6409301757812,15608.923828125,-22232088.0,-18259946.0,24.991422653198242 +468.0,303.34698486328125,24.049795150756836,1014.2453002929688,15615.0126953125,-22234886.0,-18262076.0,24.994672775268555 +469.0,302.9830017089844,30.920530319213867,1014.0082397460938,15618.6630859375,-22234908.0,-18266864.0,24.996620178222656 +470.0,302.8531188964844,-8.758950233459473,1014.148681640625,15616.5,-22234192.0,-18267848.0,24.995466232299805 +471.0,302.7538757324219,11.694199562072754,1014.5130004882812,15610.8916015625,-22237196.0,-18272154.0,24.992473602294922 +472.0,302.867919921875,-26.17926788330078,1014.5873413085938,15609.748046875,-22238846.0,-18272310.0,24.991863250732422 +473.0,302.9789733886719,-6.500350475311279,1014.2713012695312,15614.6123046875,-22239936.0,-18271944.0,24.99445915222168 +474.0,303.2974548339844,-8.964274406433105,1013.8898315429688,15620.4873046875,-22233544.0,-18261382.0,24.99759292602539 +475.0,303.1619567871094,11.231689453125,1014.2110595703125,15615.5390625,-22235618.0,-18265230.0,24.994953155517578 +476.0,303.164306640625,24.2186222076416,1014.2493896484375,15614.94921875,-22231996.0,-18261578.0,24.994638442993164 +477.0,302.63592529296875,-7.4823479652404785,1014.5220947265625,15610.751953125,-22232264.0,-18268766.0,24.992399215698242 +478.0,303.1612243652344,15.944661140441895,1014.5287475585938,15610.6494140625,-22236858.0,-18266480.0,24.99234390258789 +479.0,303.0180969238281,-2.5938704013824463,1014.2108154296875,15615.54296875,-22232486.0,-18263984.0,24.99495506286621 +480.0,303.1375732421875,-14.2777738571167,1014.1170043945312,15616.9873046875,-22236240.0,-18266172.0,24.995725631713867 +481.0,303.09039306640625,-15.93740177154541,1014.614013671875,15609.337890625,-22233964.0,-18264514.0,24.99164390563965 +482.0,303.1625061035156,-17.897947311401367,1014.8972778320312,15604.9814453125,-22236266.0,-18265872.0,24.98931884765625 +483.0,303.27880859375,-8.482695579528809,1014.9688110351562,15603.880859375,-22237894.0,-18265976.0,24.988731384277344 +484.0,303.2580261230469,3.570995569229126,1014.87939453125,15605.255859375,-22241400.0,-18269756.0,24.989465713500977 +485.0,302.92230224609375,-3.9297091960906982,1015.1152954101562,15601.6298828125,-22240164.0,-18272916.0,24.987529754638672 +486.0,303.0606994628906,-7.53022575378418,1014.6069946289062,15609.4453125,-22241312.0,-18272252.0,24.991701126098633 +487.0,303.1402587890625,-5.544312953948975,1014.45068359375,15611.8505859375,-22232936.0,-18262832.0,24.992984771728516 +488.0,303.05108642578125,-13.787617683410645,1014.5684814453125,15610.0380859375,-22240782.0,-18271846.0,24.99201774597168 +489.0,302.9720153808594,-1.8984417915344238,1014.4620971679688,15611.6748046875,-22237416.0,-18269516.0,24.992891311645508 +490.0,303.0348815917969,11.824082374572754,1014.57568359375,15609.927734375,-22234816.0,-18266092.0,24.991958618164062 +491.0,303.2940368652344,-4.648900032043457,1014.3916625976562,15612.7587890625,-22234332.0,-18262216.0,24.99346923828125 +492.0,302.9244079589844,-13.09196949005127,1014.77197265625,15606.908203125,-22234108.0,-18266832.0,24.990346908569336 +493.0,303.4521789550781,1.3054221868515015,1014.3673095703125,15613.1337890625,-22238774.0,-18264586.0,24.993669509887695 +494.0,303.2032775878906,-39.09196472167969,1014.0850830078125,15617.4794921875,-22233898.0,-18262970.0,24.995988845825195 +495.0,303.3267517089844,-3.3995306491851807,1014.4121704101562,15612.443359375,-22233326.0,-18260780.0,24.993301391601562 +496.0,303.1875915527344,-11.649070739746094,1014.2882080078125,15614.3515625,-22229648.0,-18258924.0,24.994319915771484 +497.0,303.4118347167969,-3.7796108722686768,1014.0371704101562,15618.216796875,-22223776.0,-18250116.0,24.996381759643555 +498.0,303.48809814453125,36.361637115478516,1014.3973388671875,15612.671875,-22233618.0,-18258960.0,24.993423461914062 +499.0,303.55340576171875,-6.197600841522217,1014.2389526367188,15615.1103515625,-22232064.0,-18256550.0,24.99472427368164 +500.0,303.332763671875,28.31658935546875,1014.2763671875,15614.5341796875,-22231600.0,-18258976.0,24.994417190551758 +501.0,303.61993408203125,-16.366127014160156,1014.1806640625,15616.0078125,-22233642.0,-18257256.0,24.995203018188477 +502.0,303.2469787597656,-0.06177457049489021,1014.3668823242188,15613.140625,-22237378.0,-18265876.0,24.99367332458496 +503.0,302.9127197265625,6.103700160980225,1014.436279296875,15612.072265625,-22233730.0,-18266608.0,24.99310302734375 +504.0,303.55633544921875,-5.995119571685791,1014.2709350585938,15614.6171875,-22233058.0,-18257504.0,24.994461059570312 +505.0,302.8367614746094,-9.737671852111816,1014.1971435546875,15615.75390625,-22225620.0,-18259492.0,24.995067596435547 +506.0,303.3143005371094,-4.690390110015869,1014.374755859375,15613.01953125,-22224782.0,-18252400.0,24.993608474731445 +507.0,303.3953552246094,3.488640546798706,1014.2672729492188,15614.673828125,-22229612.0,-18256168.0,24.994491577148438 +508.0,303.38214111328125,-26.110267639160156,1014.3726806640625,15613.0517578125,-22230796.0,-18257524.0,24.99362564086914 +509.0,303.8153381347656,5.848424434661865,1014.38916015625,15612.7978515625,-22232660.0,-18253716.0,24.99349021911621 +510.0,303.2645263671875,-21.38477897644043,1014.01904296875,15618.49609375,-22226232.0,-18254502.0,24.996530532836914 +511.0,303.4555969238281,-28.158798217773438,1014.322509765625,15613.8232421875,-22237404.0,-18263172.0,24.994037628173828 +512.0,303.3893127441406,-0.021366437897086143,1014.6683959960938,15608.5009765625,-22238554.0,-18265188.0,24.99119758605957 +513.0,303.2535400390625,17.955299377441406,1014.4701538085938,15611.55078125,-22235030.0,-18263444.0,24.99282455444336 +514.0,302.9607238769531,-26.663101196289062,1014.0576171875,15617.90234375,-22234496.0,-18266744.0,24.996213912963867 +515.0,302.8934020996094,0.8320706486701965,1014.6053466796875,15609.470703125,-22229552.0,-18262682.0,24.991714477539062 +516.0,303.3923645019531,29.946176528930664,1014.9707641601562,15603.8515625,-22238316.0,-18264912.0,24.98871612548828 +517.0,303.5944519042969,10.326210975646973,1014.4544677734375,15611.79296875,-22237426.0,-18261374.0,24.99295425415039 +518.0,303.1912841796875,14.62007999420166,1014.733154296875,15607.5048828125,-22237648.0,-18266876.0,24.990665435791016 +519.0,303.01519775390625,2.621914863586426,1014.6043090820312,15609.4873046875,-22235706.0,-18267240.0,24.991724014282227 +520.0,303.4322204589844,5.696034908294678,1014.8570556640625,15605.599609375,-22241812.0,-18267886.0,24.989648818969727 +521.0,303.27978515625,-3.8286991119384766,1014.8131713867188,15606.2744140625,-22238240.0,-18266310.0,24.990009307861328 +522.0,303.2867736816406,1.827962875366211,1014.5543212890625,15610.255859375,-22233026.0,-18261004.0,24.99213409423828 +523.0,303.4267272949219,-31.27606964111328,1014.3787231445312,15612.9580078125,-22235772.0,-18261916.0,24.993576049804688 +524.0,302.99591064453125,3.112638473510742,1014.6478881835938,15608.81640625,-22238006.0,-18269794.0,24.991365432739258 +525.0,303.0887145996094,19.98665428161621,1014.570556640625,15610.005859375,-22240316.0,-18270888.0,24.992000579833984 +526.0,302.98175048828125,-3.24670147895813,1014.51513671875,15610.859375,-22228542.0,-18260514.0,24.992456436157227 +527.0,303.3008728027344,-2.7934226989746094,1014.56103515625,15610.15234375,-22237388.0,-18265180.0,24.99207878112793 +528.0,303.2081298828125,13.137755393981934,1014.8773193359375,15605.2880859375,-22241380.0,-18270388.0,24.989482879638672 +529.0,302.86053466796875,-25.202804565429688,1014.990966796875,15603.541015625,-22239768.0,-18273328.0,24.988550186157227 +530.0,303.4413146972656,21.940134048461914,1014.9832763671875,15603.6591796875,-22240016.0,-18265970.0,24.98861312866211 +531.0,302.99072265625,-16.86275291442871,1014.8921508789062,15605.0595703125,-22237580.0,-18269436.0,24.989360809326172 +532.0,302.9986572265625,-10.465445518493652,1014.6851196289062,15608.244140625,-22236504.0,-18268256.0,24.991060256958008 +533.0,302.97100830078125,8.250761985778809,1015.0634155273438,15602.4267578125,-22238536.0,-18270650.0,24.98795509338379 +534.0,303.6060485839844,11.018464088439941,1014.5932006835938,15609.658203125,-22238488.0,-18262284.0,24.9918155670166 +535.0,303.1911926269531,2.788395643234253,1014.5060424804688,15610.9990234375,-22234226.0,-18263456.0,24.992530822753906 +536.0,303.1817626953125,-0.6218401789665222,1014.1054077148438,15617.166015625,-22230128.0,-18259482.0,24.995820999145508 +537.0,303.12408447265625,10.177130699157715,1014.481689453125,15611.3740234375,-22236658.0,-18266768.0,24.99273109436035 +538.0,303.54388427734375,-2.076770782470703,1014.5003662109375,15611.0859375,-22235638.0,-18260248.0,24.992576599121094 +539.0,302.8436279296875,22.614294052124023,1014.34619140625,15613.458984375,-22230710.0,-18264492.0,24.99384307861328 +540.0,303.0355224609375,16.382951736450195,1014.618896484375,15609.2626953125,-22236710.0,-18267980.0,24.99160385131836 +541.0,303.11383056640625,-15.526341438293457,1014.3601684570312,15613.244140625,-22231320.0,-18261564.0,24.993728637695312 +542.0,303.3860778808594,-2.3774282932281494,1014.532958984375,15610.5849609375,-22229276.0,-18255954.0,24.9923095703125 +543.0,303.40460205078125,1.639147400856018,1014.27978515625,15614.4814453125,-22232844.0,-18259280.0,24.994388580322266 +544.0,303.5118103027344,-18.454679489135742,1014.5672607421875,15610.056640625,-22237248.0,-18262278.0,24.992027282714844 +545.0,302.9228210449219,-34.30949783325195,1014.5689086914062,15610.03125,-22231408.0,-18264152.0,24.992013931274414 +546.0,303.5358581542969,15.39094066619873,1014.6537475585938,15608.7265625,-22236624.0,-18261340.0,24.991317749023438 +547.0,303.4270935058594,-5.928811550140381,1014.5252685546875,15610.703125,-22235764.0,-18261904.0,24.992372512817383 +548.0,303.3249816894531,11.80315113067627,1014.323486328125,15613.80859375,-22230568.0,-18258046.0,24.994029998779297 +549.0,303.16387939453125,-18.923391342163086,1014.4360961914062,15612.0751953125,-22234838.0,-18264424.0,24.993104934692383 +550.0,303.1264953613281,-21.55474281311035,1014.8089599609375,15606.3388671875,-22229816.0,-18259892.0,24.99004364013672 +551.0,303.3350830078125,-4.043206691741943,1014.884765625,15605.173828125,-22234664.0,-18262010.0,24.989421844482422 +552.0,303.5069885253906,-13.60375690460205,1014.7994384765625,15606.4853515625,-22238338.0,-18263432.0,24.990121841430664 +553.0,303.36688232421875,-13.998137474060059,1014.6507568359375,15608.7724609375,-22236144.0,-18263072.0,24.991342544555664 +554.0,303.2737121582031,-15.144176483154297,1014.7404174804688,15607.3935546875,-22235720.0,-18263868.0,24.9906063079834 +555.0,303.26519775390625,-39.870697021484375,1014.4701538085938,15611.55078125,-22231812.0,-18260072.0,24.99282455444336 +556.0,303.32208251953125,-6.552298069000244,1014.7540893554688,15607.1826171875,-22234886.0,-18262402.0,24.990493774414062 +557.0,303.3532409667969,-4.0275187492370605,1014.8641967773438,15605.4892578125,-22237708.0,-18264816.0,24.98958969116211 +558.0,303.0128173828125,8.857844352722168,1014.5247802734375,15610.7109375,-22234402.0,-18265968.0,24.99237632751465 +559.0,302.5065612792969,18.877443313598633,1014.75830078125,15607.1181640625,-22230680.0,-18268876.0,24.990459442138672 +560.0,303.1962890625,22.200754165649414,1014.5445556640625,15610.40625,-22233768.0,-18262932.0,24.99221420288086 +561.0,303.13543701171875,18.79386329650879,1014.6114501953125,15609.376953125,-22231256.0,-18261216.0,24.99166488647461 +562.0,303.08392333984375,25.26249122619629,1014.16162109375,15616.30078125,-22234136.0,-18264770.0,24.995359420776367 +563.0,303.31658935546875,-8.175882339477539,1013.982421875,15619.060546875,-22232376.0,-18259964.0,24.9968318939209 +564.0,303.4002380371094,-8.006271362304688,1014.2579956054688,15614.81640625,-22236664.0,-18263156.0,24.99456787109375 +565.0,303.5171813964844,-6.439952850341797,1014.3894653320312,15612.79296875,-22235436.0,-18260396.0,24.993488311767578 +566.0,303.3094482421875,5.724776744842529,1014.2308959960938,15615.234375,-22238196.0,-18265876.0,24.99479103088379 +567.0,303.2874450683594,-10.115153312683105,1014.3820190429688,15612.9072265625,-22236554.0,-18264522.0,24.993549346923828 +568.0,303.114990234375,6.228521823883057,1014.7432861328125,15607.349609375,-22241414.0,-18271642.0,24.990583419799805 +569.0,302.8694763183594,-9.704298973083496,1014.5619506835938,15610.138671875,-22237976.0,-18271420.0,24.9920711517334 +570.0,303.26092529296875,11.219555854797363,1014.5963134765625,15609.6103515625,-22239952.0,-18268268.0,24.991788864135742 +571.0,302.8978271484375,-2.9230804443359375,1014.5192260742188,15610.7958984375,-22231960.0,-18265032.0,24.992422103881836 +572.0,303.3981628417969,-11.708846092224121,1014.4072875976562,15612.5185546875,-22232324.0,-18258844.0,24.99334144592285 +573.0,303.4443054199219,25.29142189025879,1014.451171875,15611.84375,-22237404.0,-18263318.0,24.99298095703125 +574.0,303.00494384765625,-1.5041694641113281,1014.0958862304688,15617.3125,-22234696.0,-18266364.0,24.995899200439453 +575.0,303.05865478515625,27.43890380859375,1014.3524780273438,15613.3623046875,-22235384.0,-18266350.0,24.993791580200195 +576.0,302.951171875,-6.696453094482422,1014.6986083984375,15608.0361328125,-22234656.0,-18267030.0,24.990949630737305 +577.0,302.9886169433594,13.535387992858887,1014.8388671875,15605.87890625,-22235540.0,-18267424.0,24.989797592163086 +578.0,303.47015380859375,-9.072892189025879,1014.6635131835938,15608.576171875,-22238338.0,-18263914.0,24.99123764038086 +579.0,303.15325927734375,2.7147629261016846,1014.7817993164062,15606.7568359375,-22235120.0,-18264846.0,24.990266799926758 +580.0,302.7147521972656,-7.513576507568359,1014.4776611328125,15611.435546875,-22237116.0,-18272586.0,24.99276351928711 +581.0,302.97515869140625,0.09254582971334457,1014.5498657226562,15610.32421875,-22243576.0,-18275636.0,24.992170333862305 +582.0,302.6844177246094,-2.8427207469940186,1014.786376953125,15606.6865234375,-22239850.0,-18275716.0,24.9902286529541 +583.0,302.56536865234375,-10.11092472076416,1014.5357666015625,15610.5419921875,-22235996.0,-18273422.0,24.992286682128906 +584.0,303.1235656738281,-2.0371973514556885,1014.2603149414062,15614.78125,-22240318.0,-18270434.0,24.994548797607422 +585.0,302.9928894042969,-5.797887325286865,1014.2774658203125,15614.5166015625,-22241790.0,-18273616.0,24.994407653808594 +586.0,303.02410888671875,-36.79584884643555,1014.4535522460938,15611.806640625,-22242532.0,-18273950.0,24.992961883544922 +587.0,302.9602966308594,-11.317887306213379,1014.7887573242188,15606.6494140625,-22239664.0,-18271918.0,24.990209579467773 +588.0,303.02703857421875,-8.841300010681152,1014.6201171875,15609.244140625,-22241976.0,-18273356.0,24.991594314575195 +589.0,303.075439453125,-10.253877639770508,1014.9364013671875,15604.3798828125,-22244648.0,-18275394.0,24.988998413085938 +590.0,303.1748962402344,6.896307468414307,1014.85791015625,15605.5859375,-22239780.0,-18269224.0,24.989641189575195 +591.0,303.4222412109375,14.420710563659668,1014.7289428710938,15607.5693359375,-22240628.0,-18266832.0,24.990699768066406 +592.0,303.2731628417969,-6.353359222412109,1014.8282470703125,15606.04296875,-22242536.0,-18270692.0,24.989885330200195 +593.0,302.95849609375,-15.525372505187988,1014.7313232421875,15607.533203125,-22233654.0,-18265932.0,24.990680694580078 +594.0,303.4934997558594,-3.904350996017456,1014.86376953125,15605.49609375,-22242510.0,-18267780.0,24.989593505859375 +595.0,303.3837585449219,5.8389458656311035,1014.4205322265625,15612.314453125,-22243192.0,-18269900.0,24.99323272705078 +596.0,302.83465576171875,-3.5645501613616943,1014.53369140625,15610.5732421875,-22235464.0,-18269364.0,24.9923038482666 +597.0,303.35186767578125,-3.112855911254883,1014.2276000976562,15615.28515625,-22240792.0,-18267918.0,24.99481773376465 +598.0,303.62371826171875,-8.26870059967041,1014.3480834960938,15613.4296875,-22238412.0,-18261976.0,24.99382781982422 +599.0,303.1741027832031,-4.025692462921143,1014.3817138671875,15612.912109375,-22241172.0,-18270626.0,24.99355125427246 +600.0,302.7411193847656,6.0665106773376465,1014.4423828125,15611.978515625,-22237504.0,-18272628.0,24.993053436279297 +601.0,302.7514343261719,-32.919281005859375,1014.4716186523438,15611.5283203125,-22238356.0,-18273346.0,24.992813110351562 +602.0,303.293701171875,-38.29144287109375,1014.7267456054688,15607.603515625,-22242212.0,-18270100.0,24.990718841552734 +603.0,302.986328125,8.176730155944824,1014.8243408203125,15606.1025390625,-22245616.0,-18277528.0,24.989917755126953 +604.0,302.9647521972656,31.997060775756836,1014.6593017578125,15608.640625,-22243776.0,-18275972.0,24.99127197265625 +605.0,303.0704345703125,-5.878146648406982,1014.975830078125,15603.7734375,-22239708.0,-18270520.0,24.98867416381836 +606.0,303.1785888671875,-3.4734690189361572,1014.9872436523438,15603.59765625,-22236864.0,-18266260.0,24.98858070373535 +607.0,303.23504638671875,-2.3315041065216064,1014.6072998046875,15609.44140625,-22232660.0,-18261316.0,24.99169921875 +608.0,303.2095947265625,11.24596118927002,1014.4033203125,15612.580078125,-22233100.0,-18262088.0,24.99337387084961 +609.0,303.11102294921875,-24.392059326171875,1014.1797485351562,15616.021484375,-22236002.0,-18266282.0,24.995210647583008 +610.0,303.3992614746094,-26.699594497680664,1014.5994262695312,15609.5625,-22234214.0,-18260718.0,24.991764068603516 +611.0,303.3415832519531,-9.26196575164795,1014.757568359375,15607.1298828125,-22235196.0,-18262456.0,24.99046516418457 +612.0,303.1856994628906,32.53695297241211,1014.3880004882812,15612.8154296875,-22232444.0,-18261746.0,24.993499755859375 +613.0,303.1597900390625,-32.642887115478516,1013.9562377929688,15619.4638671875,-22239456.0,-18269098.0,24.997047424316406 +614.0,303.0165710449219,3.212804079055786,1014.1959228515625,15615.7724609375,-22236556.0,-18268072.0,24.99507713317871 +615.0,303.099853515625,2.581097364425659,1014.7283325195312,15607.5791015625,-22239968.0,-18270394.0,24.990705490112305 +616.0,303.0140686035156,-18.862668991088867,1014.6597900390625,15608.6337890625,-22235998.0,-18267548.0,24.991268157958984 +617.0,303.382080078125,2.940585136413574,1014.7172241210938,15607.75,-22235420.0,-18262150.0,24.99079704284668 +618.0,302.9835205078125,22.82805824279785,1014.2554321289062,15614.8564453125,-22232776.0,-18264726.0,24.99458885192871 +619.0,303.1054382324219,-19.855789184570312,1014.1892700195312,15615.875,-22233102.0,-18263456.0,24.995132446289062 +620.0,302.859619140625,1.5165833234786987,1014.0422973632812,15618.138671875,-22232444.0,-18266016.0,24.996339797973633 +621.0,303.3900451660156,-7.569231033325195,1014.048828125,15618.0380859375,-22233084.0,-18259710.0,24.996286392211914 +622.0,303.6131591796875,14.51153564453125,1014.3782958984375,15612.96484375,-22233708.0,-18257412.0,24.993579864501953 +623.0,303.1042785644531,12.235886573791504,1014.39501953125,15612.7080078125,-22231760.0,-18262128.0,24.99344253540039 +624.0,303.3988342285156,5.392405986785889,1014.2036743164062,15615.6533203125,-22238934.0,-18265444.0,24.995014190673828 +625.0,302.7656555175781,-6.207210540771484,1014.6944580078125,15608.1005859375,-22238556.0,-18273358.0,24.990983963012695 +626.0,302.717041015625,-6.577106952667236,1014.7241821289062,15607.642578125,-22237732.0,-18273172.0,24.990739822387695 +627.0,303.3724365234375,2.1016299724578857,1014.47705078125,15611.4453125,-22241156.0,-18268012.0,24.992769241333008 +628.0,303.1451721191406,-1.0976333618164062,1014.5745849609375,15609.9443359375,-22234110.0,-18263942.0,24.991968154907227 +629.0,303.26654052734375,-8.8308744430542,1014.1455688476562,15616.5478515625,-22238524.0,-18266768.0,24.99549102783203 +630.0,303.2215270996094,10.568028450012207,1014.5921630859375,15609.673828125,-22232108.0,-18260940.0,24.991823196411133 +631.0,302.9874267578125,-15.630488395690918,1014.6138305664062,15609.3408203125,-22233714.0,-18265612.0,24.99164581298828 +632.0,303.1678466796875,2.0076992511749268,1014.8939208984375,15605.0322265625,-22233514.0,-18263050.0,24.98934555053711 +633.0,303.2585754394531,19.50266456604004,1014.599609375,15609.5595703125,-22229298.0,-18257646.0,24.991762161254883 +634.0,303.2170715332031,5.867877960205078,1014.1973876953125,15615.75,-22226048.0,-18254938.0,24.995065689086914 +635.0,303.57318115234375,21.483055114746094,1014.2333984375,15615.1953125,-22235728.0,-18259956.0,24.994770050048828 +636.0,303.2036437988281,-16.139524459838867,1014.1070556640625,15617.140625,-22227428.0,-18256494.0,24.995807647705078 +637.0,303.0037841796875,-17.81659507751465,1014.4356689453125,15612.08203125,-22234944.0,-18266628.0,24.99310874938965 +638.0,303.4288330078125,18.901762008666992,1015.0594482421875,15602.48828125,-22245860.0,-18271978.0,24.987987518310547 +639.0,303.01116943359375,13.835782051086426,1014.9608764648438,15604.0029296875,-22238404.0,-18269992.0,24.98879623413086 +640.0,303.1853942871094,-1.285169243812561,1014.821044921875,15606.1533203125,-22238748.0,-18268054.0,24.989944458007812 +641.0,302.92425537109375,10.967556953430176,1014.878173828125,15605.2744140625,-22234764.0,-18267490.0,24.98947525024414 +642.0,302.9066162109375,7.940042972564697,1014.4808959960938,15611.3857421875,-22232540.0,-18265496.0,24.99273681640625 +643.0,303.1984558105469,1.1684919595718384,1014.2918701171875,15614.294921875,-22230940.0,-18260076.0,24.99428939819336 +644.0,303.2562561035156,7.790232181549072,1014.4102783203125,15612.47265625,-22238894.0,-18267272.0,24.993316650390625 +645.0,302.963134765625,4.320734024047852,1014.5873413085938,15609.748046875,-22242148.0,-18274364.0,24.991863250732422 +646.0,302.79150390625,-19.333227157592773,1014.5003662109375,15611.0859375,-22242360.0,-18276824.0,24.992576599121094 +647.0,302.85748291015625,16.585538864135742,1014.8695678710938,15605.4072265625,-22246992.0,-18280592.0,24.989545822143555 +648.0,302.84124755859375,-19.79747200012207,1015.0975341796875,15601.90234375,-22245404.0,-18279216.0,24.987674713134766 +649.0,302.89996337890625,10.7418212890625,1015.090087890625,15602.0166015625,-22239554.0,-18272598.0,24.987735748291016 +650.0,303.2985534667969,-19.228036880493164,1014.5858764648438,15609.7705078125,-22242018.0,-18269842.0,24.99187469482422 +651.0,303.24188232421875,-33.636409759521484,1014.537109375,15610.5205078125,-22237036.0,-18265602.0,24.99227523803711 +652.0,303.32281494140625,-9.855326652526855,1014.3494873046875,15613.408203125,-22236688.0,-18264194.0,24.993816375732422 +653.0,303.1437683105469,3.348006010055542,1014.242431640625,15615.056640625,-22230060.0,-18259910.0,24.99469566345215 +654.0,303.0929870605469,17.334117889404297,1013.8893432617188,15620.494140625,-22225020.0,-18255536.0,24.997596740722656 +655.0,303.4072570800781,3.911149263381958,1013.9137573242188,15620.1181640625,-22225734.0,-18252134.0,24.99739646911621 +656.0,303.2841491699219,8.852747917175293,1013.7991333007812,15621.884765625,-22224836.0,-18252848.0,24.99833869934082 +657.0,303.2561950683594,-31.795812606811523,1014.1275634765625,15616.8251953125,-22237054.0,-18265432.0,24.99563980102539 +658.0,303.0286865234375,14.084423065185547,1014.5441284179688,15610.4130859375,-22239880.0,-18271238.0,24.992218017578125 +659.0,302.95458984375,-9.467597007751465,1014.6077880859375,15609.43359375,-22245116.0,-18277444.0,24.991695404052734 +660.0,302.7950134277344,4.155486583709717,1014.7157592773438,15607.7724609375,-22243796.0,-18278214.0,24.990808486938477 +661.0,303.1806640625,-5.731695175170898,1014.875244140625,15605.3203125,-22242584.0,-18271952.0,24.989500045776367 +662.0,303.1336364746094,7.693251132965088,1014.4664916992188,15611.607421875,-22234230.0,-18264214.0,24.992855072021484 +663.0,303.4553527832031,3.925830841064453,1014.548583984375,15610.3447265625,-22238552.0,-18264322.0,24.9921817779541 +664.0,303.4399719238281,29.993927001953125,1014.3244018554688,15613.794921875,-22238124.0,-18264096.0,24.994022369384766 +665.0,303.2627868652344,-16.262664794921875,1014.2493896484375,15614.94921875,-22233964.0,-18262256.0,24.994638442993164 +666.0,302.939697265625,-8.727997779846191,1014.5369262695312,15610.5234375,-22230796.0,-18263320.0,24.992277145385742 +667.0,302.9677734375,8.41669750213623,1014.4535522460938,15611.806640625,-22231902.0,-18264058.0,24.992961883544922 +668.0,303.04193115234375,-7.607165813446045,1014.5113525390625,15610.9169921875,-22239636.0,-18270820.0,24.99248695373535 +669.0,303.00030517578125,7.4101104736328125,1014.5230102539062,15610.73828125,-22240326.0,-18272056.0,24.99239158630371 +670.0,303.00054931640625,-18.130022048950195,1014.3074340820312,15614.0556640625,-22234664.0,-18266390.0,24.99416160583496 +671.0,303.1400146484375,-4.4566426277160645,1014.408203125,15612.5048828125,-22231770.0,-18261670.0,24.99333381652832 +672.0,303.1094970703125,-3.414184808731079,1014.4210205078125,15612.3076171875,-22232376.0,-18262676.0,24.993228912353516 +673.0,303.0519714355469,2.317802667617798,1014.4303588867188,15612.1640625,-22229980.0,-18261032.0,24.993152618408203 +674.0,303.25274658203125,3.438387155532837,1014.5533447265625,15610.271484375,-22237100.0,-18265524.0,24.992141723632812 +675.0,303.2217712402344,-9.995121955871582,1014.3433837890625,15613.501953125,-22237940.0,-18266768.0,24.993865966796875 +676.0,303.2153625488281,0.5105495452880859,1014.2791748046875,15614.4912109375,-22236254.0,-18265168.0,24.994394302368164 +677.0,303.29144287109375,-32.295475006103516,1014.1859741210938,15615.92578125,-22241820.0,-18269736.0,24.995159149169922 +678.0,302.9130554199219,11.494519233703613,1014.304443359375,15614.1015625,-22235524.0,-18268396.0,24.994186401367188 +679.0,302.8743591308594,-5.49712610244751,1014.3304443359375,15613.701171875,-22234576.0,-18267956.0,24.993972778320312 +680.0,302.70330810546875,-5.37123441696167,1014.5064697265625,15610.9921875,-22234604.0,-18270224.0,24.99252700805664 +681.0,303.1208801269531,-11.648140907287598,1014.0220947265625,15618.44921875,-22237254.0,-18267404.0,24.996505737304688 +682.0,303.2299499511719,22.191390991210938,1013.987060546875,15618.9892578125,-22235296.0,-18264018.0,24.996793746948242 +683.0,302.8784484863281,-8.4629545211792,1014.2824096679688,15614.44140625,-22238198.0,-18271524.0,24.994367599487305 +684.0,302.66156005859375,2.054574728012085,1014.6142578125,15609.333984375,-22232822.0,-18268988.0,24.991641998291016 +685.0,302.6784362792969,-16.036752700805664,1014.5338134765625,15610.5712890625,-22235742.0,-18271688.0,24.99230194091797 +686.0,303.11688232421875,-26.389333724975586,1014.2965087890625,15614.2236328125,-22244732.0,-18274936.0,24.994251251220703 +687.0,303.1274719238281,14.29724407196045,1014.3668823242188,15613.140625,-22241968.0,-18272032.0,24.99367332458496 +688.0,303.18109130859375,5.9073920249938965,1014.4242553710938,15612.2578125,-22244232.0,-18273594.0,24.993202209472656 +689.0,303.2048034667969,-18.131431579589844,1014.4309692382812,15612.154296875,-22238654.0,-18267706.0,24.993146896362305 +690.0,303.1618347167969,-12.129057884216309,1014.4370727539062,15612.060546875,-22238202.0,-18267816.0,24.99309730529785 +691.0,302.86932373046875,9.403145790100098,1014.4639892578125,15611.646484375,-22242724.0,-18276170.0,24.992876052856445 +692.0,302.7245178222656,-3.3015289306640625,1013.9575805664062,15619.443359375,-22237588.0,-18272930.0,24.99703598022461 +693.0,302.9657897949219,3.4967410564422607,1014.2777099609375,15614.513671875,-22240944.0,-18273126.0,24.99440574645996 +694.0,303.0245666503906,-14.006332397460938,1014.3262939453125,15613.765625,-22237012.0,-18268424.0,24.994007110595703 +695.0,302.980224609375,4.4331536293029785,1014.103759765625,15617.19140625,-22239332.0,-18271324.0,24.995834350585938 +696.0,302.7723693847656,-0.4511070251464844,1014.3299560546875,15613.708984375,-22244652.0,-18279368.0,24.993976593017578 +697.0,303.15570068359375,-17.835054397583008,1014.8152465820312,15606.2421875,-22249500.0,-18279194.0,24.989992141723633 +698.0,303.11090087890625,-17.476104736328125,1014.5361938476562,15610.53515625,-22242394.0,-18272676.0,24.99228286743164 +699.0,303.3132629394531,25.7009334564209,1014.7208862304688,15607.693359375,-22234210.0,-18261840.0,24.990766525268555 +700.0,303.0249328613281,-6.4623284339904785,1014.5907592773438,15609.6953125,-22233652.0,-18265060.0,24.99183464050293 +701.0,303.003173828125,-9.880064964294434,1014.4690551757812,15611.568359375,-22234620.0,-18266312.0,24.992834091186523 +702.0,303.0157470703125,-27.532377243041992,1014.9754028320312,15603.7802734375,-22237640.0,-18269168.0,24.988677978515625 +703.0,303.35504150390625,20.435813903808594,1015.0497436523438,15602.63671875,-22237364.0,-18264448.0,24.988067626953125 +704.0,302.8879699707031,-5.4935173988342285,1014.744140625,15607.3359375,-22234928.0,-18268128.0,24.990575790405273 +705.0,303.6049499511719,14.366138458251953,1014.343994140625,15613.4931640625,-22235882.0,-18259692.0,24.99386215209961 +706.0,302.93109130859375,-37.42097473144531,1015.0009155273438,15603.3876953125,-22234180.0,-18266816.0,24.988468170166016 +707.0,303.1627502441406,9.795218467712402,1014.6321411132812,15609.05859375,-22234396.0,-18264000.0,24.99149513244629 +708.0,303.40106201171875,4.598149299621582,1014.81005859375,15606.322265625,-22236322.0,-18262802.0,24.990034103393555 +709.0,303.1449890136719,-6.768887042999268,1014.7785034179688,15606.8076171875,-22238894.0,-18268728.0,24.990293502807617 +710.0,303.2311096191406,-17.194007873535156,1014.7750854492188,15606.8603515625,-22233264.0,-18261972.0,24.99032211303711 +711.0,303.36865234375,2.988369941711426,1014.6258544921875,15609.1552734375,-22235660.0,-18262566.0,24.991546630859375 +712.0,302.8298034667969,-6.762049198150635,1014.6304931640625,15609.083984375,-22234342.0,-18268304.0,24.99150848388672 +713.0,303.4111022949219,-40.21805953979492,1014.7606811523438,15607.08203125,-22239444.0,-18265794.0,24.990440368652344 +714.0,302.92926025390625,-14.52808666229248,1015.0764770507812,15602.2265625,-22237252.0,-18269912.0,24.98784828186035 +715.0,303.1322021484375,7.418834209442139,1014.75830078125,15607.1181640625,-22243704.0,-18273706.0,24.990459442138672 +716.0,303.18536376953125,7.9490838050842285,1014.3675537109375,15613.1298828125,-22244864.0,-18274170.0,24.993667602539062 +717.0,302.7704162597656,7.838076114654541,1014.2932739257812,15614.2734375,-22240802.0,-18275542.0,24.994277954101562 +718.0,302.8463134765625,31.538742065429688,1014.4263305664062,15612.2255859375,-22240286.0,-18274032.0,24.99318504333496 +719.0,303.29901123046875,25.558134078979492,1014.5392456054688,15610.48828125,-22246276.0,-18274094.0,24.992258071899414 +720.0,302.91375732421875,-1.0849214792251587,1014.2930297851562,15614.27734375,-22233334.0,-18266198.0,24.994279861450195 +721.0,302.9091491699219,20.468534469604492,1014.2628173828125,15614.7421875,-22237788.0,-18270712.0,24.99452781677246 +722.0,303.21331787109375,25.960100173950195,1014.4305419921875,15612.1611328125,-22237454.0,-18266394.0,24.99315071105957 +723.0,303.14593505859375,18.145097732543945,1014.1246948242188,15616.869140625,-22226742.0,-18256564.0,24.995662689208984 +724.0,302.9798278808594,10.938511848449707,1013.920166015625,15620.01953125,-22226520.0,-18258518.0,24.997343063354492 +725.0,303.1427917480469,-24.618627548217773,1014.4091186523438,15612.490234375,-22234344.0,-18264208.0,24.99332618713379 +726.0,303.1763916015625,13.916462898254395,1014.927001953125,15604.5244140625,-22231504.0,-18260928.0,24.98907470703125 +727.0,303.5243835449219,46.856536865234375,1014.414306640625,15612.4111328125,-22229260.0,-18254126.0,24.993284225463867 +728.0,303.35491943359375,17.555543899536133,1014.2091674804688,15615.568359375,-22230972.0,-18258058.0,24.99496841430664 +729.0,303.2587585449219,19.019081115722656,1014.3110961914062,15613.9990234375,-22229756.0,-18258100.0,24.994131088256836 +730.0,303.142333984375,-4.22598123550415,1014.4202270507812,15612.3193359375,-22238408.0,-18268278.0,24.993234634399414 +731.0,302.9351501464844,-12.223650932312012,1014.4681396484375,15611.58203125,-22238556.0,-18271140.0,24.992841720581055 +732.0,302.875,16.42047119140625,1014.4066162109375,15612.529296875,-22234912.0,-18268284.0,24.99334716796875 +733.0,302.9361267089844,-19.6635799407959,1014.380859375,15612.92578125,-22229440.0,-18262010.0,24.993558883666992 +734.0,303.3552551269531,25.840194702148438,1015.0404052734375,15602.7802734375,-22238452.0,-18265532.0,24.988143920898438 +735.0,303.18560791015625,-21.719764709472656,1014.5278930664062,15610.6630859375,-22229664.0,-18258968.0,24.992351531982422 +736.0,303.130859375,3.4984066486358643,1014.7353515625,15607.4716796875,-22239960.0,-18269980.0,24.99064826965332 +737.0,302.87225341796875,-14.878650665283203,1014.7838134765625,15606.7255859375,-22231256.0,-18264662.0,24.990249633789062 +738.0,303.1864013671875,6.714926242828369,1014.79736328125,15606.517578125,-22241840.0,-18271132.0,24.99013900756836 +739.0,302.2195739746094,-16.801593780517578,1014.6367797851562,15608.9873046875,-22232256.0,-18274212.0,24.991456985473633 +740.0,302.93072509765625,7.976683139801025,1014.541259765625,15610.45703125,-22236352.0,-18268992.0,24.99224090576172 +741.0,303.3097229003906,10.791156768798828,1014.6170043945312,15609.2919921875,-22236024.0,-18263702.0,24.991619110107422 +742.0,303.0733642578125,21.698274612426758,1014.7831420898438,15606.736328125,-22231282.0,-18262056.0,24.99025535583496 +743.0,303.0698547363281,23.750837326049805,1014.3720092773438,15613.0615234375,-22233950.0,-18264768.0,24.99363136291504 +744.0,303.04766845703125,-1.7575836181640625,1014.556884765625,15610.216796875,-22227752.0,-18258862.0,24.99211311340332 +745.0,303.62384033203125,-2.5628511905670166,1014.3494873046875,15613.408203125,-22232230.0,-18255794.0,24.993816375732422 +746.0,303.2214050292969,-16.28995132446289,1014.2543334960938,15614.873046875,-22229020.0,-18257854.0,24.994598388671875 +747.0,303.5981750488281,19.749916076660156,1014.6681518554688,15608.5048828125,-22232536.0,-18256436.0,24.991199493408203 +748.0,303.0255126953125,17.76134490966797,1014.6263427734375,15609.1484375,-22227040.0,-18258440.0,24.99154281616211 +749.0,303.4955749511719,-21.230867385864258,1014.5011596679688,15611.07421875,-22233392.0,-18258636.0,24.992570877075195 +750.0,303.7711181640625,-3.5339267253875732,1014.623779296875,15609.1875,-22238656.0,-18260292.0,24.99156379699707 +751.0,303.15386962890625,-4.704154014587402,1014.456787109375,15611.7568359375,-22231844.0,-18261564.0,24.992935180664062 +752.0,302.80743408203125,24.827035903930664,1014.5989379882812,15609.5693359375,-22226208.0,-18260464.0,24.99176788330078 +753.0,303.2033386230469,6.895140171051025,1014.3861694335938,15612.84375,-22230360.0,-18259430.0,24.993515014648438 +754.0,302.89996337890625,-14.354850769042969,1014.0537109375,15617.962890625,-22229678.0,-18262722.0,24.996246337890625 +755.0,303.2160339355469,-0.3695131838321686,1014.169921875,15616.1728515625,-22230500.0,-18259404.0,24.995290756225586 +756.0,303.58587646484375,-14.49785327911377,1014.29541015625,15614.2412109375,-22231680.0,-18255740.0,24.994260787963867 +757.0,303.5414733886719,-14.282137870788574,1013.7350463867188,15622.8720703125,-22225174.0,-18249816.0,24.998865127563477 +758.0,303.06976318359375,5.45026159286499,1014.21826171875,15615.4287109375,-22229192.0,-18260012.0,24.99489402770996 +759.0,303.2817687988281,37.63804626464844,1014.6558227539062,15608.6943359375,-22234176.0,-18262220.0,24.991300582885742 +760.0,303.6866149902344,31.404813766479492,1014.5034790039062,15611.0380859375,-22240944.0,-18263686.0,24.992551803588867 +761.0,303.2955627441406,14.677398681640625,1014.294921875,15614.248046875,-22234748.0,-18262612.0,24.994264602661133 +762.0,303.4089050292969,12.421269416809082,1014.4500122070312,15611.861328125,-22238690.0,-18265068.0,24.992990493774414 +763.0,302.97381591796875,13.470187187194824,1014.6897583007812,15608.1728515625,-22238558.0,-18270634.0,24.99102210998535 +764.0,302.91656494140625,13.899124145507812,1014.8070678710938,15606.3681640625,-22243620.0,-18276446.0,24.99005889892578 +765.0,302.99566650390625,-20.89314079284668,1014.4837036132812,15611.3427734375,-22239430.0,-18271220.0,24.992713928222656 +766.0,303.2130432128906,-16.83030891418457,1014.6095581054688,15609.40625,-22241788.0,-18270732.0,24.991680145263672 +767.0,302.8375549316406,7.767436981201172,1014.8017578125,15606.4501953125,-22236282.0,-18270142.0,24.990102767944336 +768.0,303.0579833984375,5.411834716796875,1014.5069580078125,15610.9853515625,-22240432.0,-18271406.0,24.992523193359375 +769.0,303.1139831542969,2.8527019023895264,1014.89892578125,15604.9560546875,-22242500.0,-18272740.0,24.98930549621582 +770.0,302.7276916503906,8.286728858947754,1014.6456909179688,15608.8505859375,-22240206.0,-18275506.0,24.991384506225586 +771.0,302.78997802734375,24.36100196838379,1014.672607421875,15608.4365234375,-22243444.0,-18277928.0,24.99116325378418 +772.0,302.84393310546875,-3.599257707595825,1014.42236328125,15612.287109375,-22241840.0,-18275618.0,24.99321746826172 +773.0,302.7317810058594,8.604726791381836,1014.2378540039062,15615.126953125,-22240744.0,-18275990.0,24.994733810424805 +774.0,302.9933166503906,-7.103407382965088,1014.548583984375,15610.3447265625,-22239240.0,-18271062.0,24.9921817779541 +775.0,302.9099426269531,-38.28133773803711,1014.6021728515625,15609.51953125,-22243536.0,-18276450.0,24.991741180419922 +776.0,302.8969421386719,-10.978561401367188,1014.9035034179688,15604.8857421875,-22242980.0,-18276064.0,24.989267349243164 +777.0,302.6756286621094,-13.390995979309082,1014.9100341796875,15604.78515625,-22243420.0,-18279402.0,24.989213943481445 +778.0,303.02764892578125,-6.724359512329102,1014.9364013671875,15604.3798828125,-22244656.0,-18276028.0,24.988998413085938 +779.0,303.03521728515625,-13.91722583770752,1015.15087890625,15601.0830078125,-22240108.0,-18271380.0,24.98723793029785 +780.0,303.2592468261719,-4.555084705352783,1015.2905883789062,15598.935546875,-22244052.0,-18272390.0,24.98609161376953 +781.0,303.23687744140625,-6.519815921783447,1014.9976806640625,15603.4375,-22240224.0,-18268856.0,24.988494873046875 +782.0,302.9096374511719,4.4385809898376465,1014.878662109375,15605.267578125,-22237520.0,-18270436.0,24.989471435546875 +783.0,303.2752380371094,6.528418064117432,1014.87353515625,15605.345703125,-22239920.0,-18268048.0,24.989513397216797 +784.0,303.0809326171875,-23.770803451538086,1014.664306640625,15608.564453125,-22231904.0,-18262578.0,24.99123191833496 +785.0,303.2303466796875,25.59418296813965,1014.68212890625,15608.2900390625,-22235404.0,-18264120.0,24.991085052490234 +786.0,302.8504333496094,24.66485023498535,1014.451171875,15611.84375,-22228200.0,-18261892.0,24.99298095703125 +787.0,303.38763427734375,-16.73520278930664,1014.2506103515625,15614.9306640625,-22229544.0,-18256200.0,24.99462890625 +788.0,303.6562805175781,-9.750101089477539,1014.3561401367188,15613.3056640625,-22235100.0,-18258238.0,24.99376106262207 +789.0,302.9149475097656,29.380815505981445,1014.8110961914062,15606.306640625,-22228118.0,-18260966.0,24.990026473999023 +790.0,303.2232971191406,3.251225233078003,1014.2394409179688,15615.1025390625,-22225894.0,-18254704.0,24.994720458984375 +791.0,303.3661804199219,-39.43758773803711,1014.223388671875,15615.349609375,-22226588.0,-18253526.0,24.99485206604004 +792.0,303.0760192871094,-14.854507446289062,1014.2675170898438,15614.669921875,-22224126.0,-18254864.0,24.994489669799805 +793.0,303.59539794921875,-7.033390045166016,1014.3585205078125,15613.26953125,-22229412.0,-18253348.0,24.993741989135742 +794.0,303.5194396972656,-8.125460624694824,1013.9478149414062,15619.59375,-22231084.0,-18256014.0,24.997116088867188 +795.0,303.0783996582031,7.417272567749023,1014.1932373046875,15615.8134765625,-22228124.0,-18258832.0,24.995100021362305 +796.0,303.35943603515625,-4.424005508422852,1014.7289428710938,15607.5693359375,-22230964.0,-18257990.0,24.990699768066406 +797.0,303.3053283691406,17.39729118347168,1014.1842041015625,15615.953125,-22226344.0,-18254080.0,24.995174407958984 +798.0,303.43438720703125,35.80464172363281,1014.625,15609.1689453125,-22226804.0,-18252848.0,24.991554260253906 +799.0,303.5919494628906,-0.49590396881103516,1014.5953979492188,15609.6240234375,-22232260.0,-18256242.0,24.991796493530273 +800.0,303.5032958984375,8.710192680358887,1014.610595703125,15609.390625,-22236484.0,-18261626.0,24.99167251586914 +801.0,303.1385803222656,21.530214309692383,1014.6683959960938,15608.5009765625,-22232414.0,-18262332.0,24.99119758605957 +802.0,303.1846923828125,1.9876693487167358,1014.6727905273438,15608.43359375,-22237408.0,-18266722.0,24.991161346435547 +803.0,302.7631530761719,24.32936668395996,1014.436767578125,15612.0654296875,-22236420.0,-18271256.0,24.993099212646484 +804.0,302.9767150878906,-36.74905776977539,1014.5443725585938,15610.4091796875,-22236540.0,-18268578.0,24.992216110229492 +805.0,303.2124328613281,-18.02275276184082,1014.5401000976562,15610.474609375,-22234612.0,-18263564.0,24.992250442504883 +806.0,303.0384521484375,25.617998123168945,1014.810791015625,15606.310546875,-22237552.0,-18268782.0,24.990028381347656 +807.0,303.1529541015625,6.876786708831787,1014.3328247070312,15613.6650390625,-22236192.0,-18265924.0,24.993953704833984 +808.0,303.1573791503906,-7.976341247558594,1014.633056640625,15609.044921875,-22240136.0,-18269808.0,24.991487503051758 +809.0,302.8213195800781,15.604621887207031,1014.7188110351562,15607.7255859375,-22237722.0,-18271796.0,24.99078369140625 +810.0,302.9899597167969,2.693025588989258,1014.642578125,15608.8984375,-22235820.0,-18267684.0,24.991409301757812 +811.0,303.33270263671875,-28.34193229675293,1014.6537475585938,15608.7265625,-22236892.0,-18264268.0,24.991317749023438 +812.0,303.2239990234375,2.763302803039551,1014.6334838867188,15609.0380859375,-22239012.0,-18267812.0,24.991483688354492 +813.0,303.2542419433594,-20.804298400878906,1014.5645141601562,15610.099609375,-22238148.0,-18266552.0,24.992050170898438 +814.0,302.88525390625,18.327463150024414,1014.8760986328125,15605.306640625,-22238768.0,-18272004.0,24.989492416381836 +815.0,303.33148193359375,-30.629819869995117,1014.623779296875,15609.1875,-22245560.0,-18272952.0,24.99156379699707 +816.0,303.0635681152344,-3.081242799758911,1014.7023315429688,15607.9794921875,-22239416.0,-18270316.0,24.99091911315918 +817.0,303.0763854980469,9.084185600280762,1014.6177368164062,15609.2802734375,-22237784.0,-18268516.0,24.991613388061523 +818.0,303.2960510253906,-27.79608726501465,1014.5729370117188,15609.9697265625,-22237490.0,-18265346.0,24.991981506347656 +819.0,303.2020568847656,2.3125956058502197,1014.3624267578125,15613.208984375,-22236058.0,-18265146.0,24.993709564208984 +820.0,302.9842529296875,-20.99838638305664,1014.6864624023438,15608.2236328125,-22235160.0,-18267100.0,24.99104881286621 +821.0,303.1014709472656,7.064859390258789,1014.8049926757812,15606.400390625,-22241128.0,-18271534.0,24.990076065063477 +822.0,302.93011474609375,6.984044551849365,1014.6704711914062,15608.46875,-22241342.0,-18273992.0,24.991180419921875 +823.0,303.26031494140625,-1.0265859365463257,1014.797119140625,15606.521484375,-22238970.0,-18267294.0,24.990140914916992 +824.0,303.2275085449219,-11.049931526184082,1014.503173828125,15611.04296875,-22238730.0,-18267484.0,24.9925537109375 +825.0,303.1302795410156,18.400747299194336,1014.7069702148438,15607.908203125,-22238184.0,-18268212.0,24.990880966186523 +826.0,303.3003845214844,6.911142349243164,1014.5623779296875,15610.1318359375,-22236432.0,-18264232.0,24.992067337036133 +827.0,303.3280334472656,-1.6691288948059082,1014.4577026367188,15611.7431640625,-22233776.0,-18261214.0,24.99292755126953 +828.0,303.37469482421875,-15.998015403747559,1014.4832763671875,15611.349609375,-22233224.0,-18260050.0,24.992717742919922 +829.0,303.3053283691406,16.981582641601562,1014.7548217773438,15607.171875,-22237362.0,-18265096.0,24.990488052368164 +830.0,303.15557861328125,18.47226333618164,1014.5689086914062,15610.03125,-22239480.0,-18269176.0,24.992013931274414 +831.0,303.2826232910156,-27.101516723632812,1014.4924926757812,15611.20703125,-22239876.0,-18267908.0,24.99264144897461 +832.0,303.3428039550781,36.151397705078125,1014.9869384765625,15603.6025390625,-22243340.0,-18270584.0,24.988582611083984 +833.0,303.00152587890625,25.54121971130371,1014.916748046875,15604.681640625,-22239032.0,-18270746.0,24.989158630371094 +834.0,302.4977722167969,-5.821888446807861,1014.8309936523438,15606.0,-22234400.0,-18272712.0,24.9898624420166 +835.0,302.91595458984375,2.0686371326446533,1014.6849365234375,15608.2470703125,-22235688.0,-18268522.0,24.99106216430664 +836.0,302.91363525390625,14.603861808776855,1014.4871826171875,15611.2890625,-22239008.0,-18271872.0,24.992685317993164 +837.0,303.30780029296875,0.3164571225643158,1014.8117065429688,15606.296875,-22242264.0,-18269968.0,24.990020751953125 +838.0,302.88299560546875,17.206567764282227,1014.208740234375,15615.5751953125,-22233786.0,-18267052.0,24.994972229003906 +839.0,303.1077880859375,-12.474109649658203,1014.3573608398438,15613.287109375,-22241508.0,-18271830.0,24.993751525878906 +840.0,302.8658142089844,10.614136695861816,1014.33056640625,15613.69921875,-22239824.0,-18273316.0,24.99397087097168 +841.0,303.1306457519531,-7.368124485015869,1014.29541015625,15614.2412109375,-22243780.0,-18273802.0,24.994260787963867 +842.0,302.88140869140625,-25.155471801757812,1014.2946166992188,15614.2529296875,-22240316.0,-18273604.0,24.994266510009766 +843.0,302.7966003417969,7.4274983406066895,1014.6823120117188,15608.287109375,-22242348.0,-18276746.0,24.9910831451416 +844.0,302.99554443359375,-1.1335029602050781,1014.624755859375,15609.1728515625,-22242130.0,-18273922.0,24.99155616760254 +845.0,303.0816650390625,8.564858436584473,1014.343994140625,15613.4931640625,-22243078.0,-18273742.0,24.99386215209961 +846.0,303.2976989746094,-0.7749484181404114,1014.5643310546875,15610.1025390625,-22241768.0,-18269604.0,24.99205207824707 +847.0,303.00555419921875,-60.64824295043945,1014.3931274414062,15612.736328125,-22239628.0,-18271288.0,24.993457794189453 +848.0,302.6531982421875,16.004247665405273,1014.7097778320312,15607.8642578125,-22235832.0,-18272108.0,24.99085807800293 +849.0,303.44390869140625,-29.860803604125977,1014.796875,15606.525390625,-22242084.0,-18268004.0,24.990142822265625 +850.0,303.2983093261719,1.014809250831604,1015.078369140625,15602.197265625,-22237064.0,-18264890.0,24.98783302307129 +851.0,302.8691101074219,36.46781539916992,1015.1596069335938,15600.9482421875,-22238270.0,-18271718.0,24.987165451049805 +852.0,302.8995361328125,6.251973628997803,1014.6065673828125,15609.4521484375,-22239152.0,-18272202.0,24.9917049407959 +853.0,303.0060729980469,11.790397644042969,1014.7359619140625,15607.4619140625,-22240376.0,-18272030.0,24.990642547607422 +854.0,302.8067321777344,6.013124942779541,1014.796875,15606.525390625,-22238744.0,-18273008.0,24.990142822265625 +855.0,302.6401672363281,-17.565303802490234,1014.7833862304688,15606.732421875,-22235808.0,-18272254.0,24.990253448486328 +856.0,303.2617492675781,24.00065040588379,1014.6516723632812,15608.7587890625,-22240968.0,-18269274.0,24.991334915161133 +857.0,302.6356506347656,19.51924705505371,1014.5399169921875,15610.4775390625,-22235908.0,-18272414.0,24.992252349853516 +858.0,303.69830322265625,-11.4381742477417,1014.3297119140625,15613.712890625,-22239072.0,-18261660.0,24.99397850036621 +859.0,302.798583984375,19.67595672607422,1014.8319091796875,15605.986328125,-22239074.0,-18273446.0,24.98985481262207 +860.0,302.554443359375,-21.67154884338379,1014.536376953125,15610.5322265625,-22235124.0,-18272692.0,24.992280960083008 +861.0,302.898681640625,-5.362117290496826,1014.9786376953125,15603.73046875,-22238968.0,-18272028.0,24.988651275634766 +862.0,303.05157470703125,25.70442771911621,1015.114501953125,15601.6416015625,-22239712.0,-18270770.0,24.98753547668457 +863.0,303.0726623535156,14.302992820739746,1015.0076293945312,15603.2841796875,-22242888.0,-18273670.0,24.988412857055664 +864.0,303.018798828125,-13.516124725341797,1014.8438110351562,15605.802734375,-22242476.0,-18273964.0,24.989757537841797 +865.0,302.87957763671875,51.9765510559082,1014.9353637695312,15604.3955078125,-22243334.0,-18276644.0,24.98900604248047 +866.0,303.09686279296875,7.402601718902588,1014.5264282226562,15610.685546875,-22244006.0,-18274472.0,24.99236297607422 +867.0,302.98797607421875,4.750277042388916,1014.5014038085938,15611.0703125,-22242732.0,-18274624.0,24.992568969726562 +868.0,302.8694152832031,-17.243906021118164,1014.3408813476562,15613.541015625,-22240856.0,-18274300.0,24.993886947631836 +869.0,303.00054931640625,20.390356063842773,1014.5001831054688,15611.0888671875,-22239324.0,-18271052.0,24.992578506469727 +870.0,303.40966796875,-0.5206080079078674,1014.1928100585938,15615.8203125,-22239948.0,-18266316.0,24.99510383605957 +871.0,303.4497375488281,2.344547986984253,1014.5357666015625,15610.5419921875,-22235912.0,-18261756.0,24.992286682128906 +872.0,303.3912353515625,11.206802368164062,1014.7176513671875,15607.7431640625,-22234792.0,-18261402.0,24.990793228149414 +873.0,303.20611572265625,10.001608848571777,1014.3362426757812,15613.6123046875,-22235384.0,-18264418.0,24.993925094604492 +874.0,303.3513488769531,30.005712509155273,1014.7947387695312,15606.5576171875,-22237588.0,-18264720.0,24.99015998840332 +875.0,303.05804443359375,4.722588539123535,1014.7420654296875,15607.3681640625,-22236572.0,-18267546.0,24.99059295654297 +876.0,303.29034423828125,-7.418928146362305,1014.892333984375,15605.056640625,-22237124.0,-18265056.0,24.98935890197754 +877.0,302.6848449707031,-13.231040954589844,1014.87744140625,15605.2861328125,-22236772.0,-18272632.0,24.98948097229004 +878.0,302.93310546875,-2.6701295375823975,1014.9030151367188,15604.892578125,-22242876.0,-18275486.0,24.98927116394043 +879.0,302.901123046875,-16.91069793701172,1014.8426513671875,15605.8212890625,-22241216.0,-18274244.0,24.98976707458496 +880.0,302.87335205078125,39.093379974365234,1014.8809814453125,15605.2314453125,-22242150.0,-18275542.0,24.989452362060547 +881.0,302.4930725097656,28.466766357421875,1014.6035766601562,15609.498046875,-22238594.0,-18276966.0,24.991729736328125 +882.0,303.1609802246094,16.826580047607422,1014.4916381835938,15611.220703125,-22243876.0,-18273502.0,24.99264907836914 +883.0,302.9472961425781,26.96897315979004,1014.5283203125,15610.65625,-22239258.0,-18271682.0,24.992347717285156 +884.0,302.86761474609375,12.553523063659668,1014.46484375,15611.6328125,-22245476.0,-18278944.0,24.992868423461914 +885.0,303.23895263671875,-16.533281326293945,1014.0901489257812,15617.4013671875,-22235534.0,-18264138.0,24.995946884155273 +886.0,303.3753662109375,-21.173227310180664,1014.1730346679688,15616.125,-22234654.0,-18261472.0,24.99526596069336 +887.0,303.1809997558594,21.53565216064453,1014.4609985351562,15611.6923828125,-22234646.0,-18264010.0,24.992900848388672 +888.0,302.8586120605469,-16.076276779174805,1014.5833740234375,15609.8095703125,-22233916.0,-18267502.0,24.99189567565918 +889.0,302.8951721191406,-2.8404247760772705,1014.6312866210938,15609.072265625,-22231924.0,-18265032.0,24.99150276184082 +890.0,303.1343078613281,-2.4193363189697266,1014.6730346679688,15608.4296875,-22236208.0,-18266184.0,24.991159439086914 +891.0,302.92926025390625,-10.572906494140625,1014.7369384765625,15607.447265625,-22231608.0,-18264268.0,24.99063491821289 +892.0,302.8232116699219,-9.7067232131958,1014.6023559570312,15609.5166015625,-22229828.0,-18263876.0,24.99173927307129 +893.0,302.9183044433594,4.674204349517822,1014.6514282226562,15608.76171875,-22232264.0,-18265068.0,24.991336822509766 +894.0,303.35089111328125,-11.738449096679688,1014.591064453125,15609.6904296875,-22232038.0,-18259176.0,24.991832733154297 +895.0,303.4928894042969,13.267807006835938,1014.3053588867188,15614.087890625,-22229980.0,-18255258.0,24.994178771972656 +896.0,303.40008544921875,-6.94208288192749,1014.57568359375,15609.927734375,-22233040.0,-18259534.0,24.991958618164062 +897.0,303.13275146484375,13.763543128967285,1014.6170043945312,15609.2919921875,-22233660.0,-18263656.0,24.991619110107422 +898.0,303.4409484863281,15.293383598327637,1014.427978515625,15612.2001953125,-22236660.0,-18262620.0,24.99317169189453 +899.0,302.9175720214844,-10.918368339538574,1014.4107055664062,15612.4658203125,-22233840.0,-18266654.0,24.99331283569336 +900.0,303.30474853515625,29.70876121520996,1014.3920288085938,15612.75390625,-22237612.0,-18265354.0,24.993467330932617 +901.0,303.4994812011719,-14.426777839660645,1014.2454833984375,15615.009765625,-22240280.0,-18265472.0,24.994670867919922 +902.0,303.3604431152344,18.041046142578125,1014.3873901367188,15612.8251953125,-22241188.0,-18268200.0,24.993505477905273 +903.0,303.2590637207031,-12.90567398071289,1014.3738403320312,15613.033203125,-22237090.0,-18265430.0,24.993616104125977 +904.0,302.9841613769531,-26.12801170349121,1014.304443359375,15614.1015625,-22229272.0,-18261214.0,24.994186401367188 +905.0,303.0644226074219,22.96428871154785,1014.6519165039062,15608.7548828125,-22236868.0,-18267758.0,24.9913330078125 +906.0,303.39178466796875,-20.35569190979004,1014.31884765625,15613.8798828125,-22240056.0,-18266658.0,24.994068145751953 +907.0,303.3146057128906,8.924273490905762,1015.0027465820312,15603.359375,-22234196.0,-18261810.0,24.988452911376953 +908.0,303.12469482421875,37.9838981628418,1014.63720703125,15608.98046875,-22239448.0,-18269548.0,24.991453170776367 +909.0,302.7730712890625,29.85675811767578,1014.5057373046875,15611.00390625,-22238356.0,-18273062.0,24.99253273010254 +910.0,303.4442138671875,-0.11286512762308121,1014.7267456054688,15607.603515625,-22240574.0,-18266490.0,24.990718841552734 +911.0,302.890869140625,7.46931266784668,1014.6900024414062,15608.1689453125,-22234118.0,-18267280.0,24.99102020263672 +912.0,302.9270935058594,-6.081361293792725,1014.6130981445312,15609.3515625,-22235554.0,-18268244.0,24.99165153503418 +913.0,303.071533203125,1.4787992238998413,1014.7443237304688,15607.3330078125,-22240856.0,-18271652.0,24.99057388305664 +914.0,303.1457824707031,14.374752044677734,1014.9207763671875,15604.6201171875,-22239870.0,-18269694.0,24.989126205444336 +915.0,303.25274658203125,6.0496506690979,1014.7218017578125,15607.6796875,-22238228.0,-18266652.0,24.990758895874023 +916.0,302.7994689941406,-2.7742080688476562,1014.6337890625,15609.033203125,-22236904.0,-18271264.0,24.99148178100586 +917.0,303.139404296875,10.829021453857422,1014.4685668945312,15611.5751953125,-22241328.0,-18271236.0,24.99283790588379 +918.0,303.3035583496094,-17.9008846282959,1014.792236328125,15606.5966796875,-22240064.0,-18267822.0,24.99018096923828 +919.0,303.0115966796875,-4.077460765838623,1014.648193359375,15608.8115234375,-22235068.0,-18266650.0,24.991363525390625 +920.0,303.1011962890625,-15.259953498840332,1014.686279296875,15608.2255859375,-22238786.0,-18269194.0,24.991050720214844 +921.0,303.1168212890625,-8.712718963623047,1014.6674194335938,15608.5166015625,-22240744.0,-18270948.0,24.9912052154541 +922.0,303.0943603515625,13.156956672668457,1014.6416625976562,15608.912109375,-22234252.0,-18264750.0,24.991416931152344 +923.0,302.9441223144531,26.157419204711914,1014.5858764648438,15609.7705078125,-22235680.0,-18268146.0,24.99187469482422 +924.0,303.25628662109375,-4.285873889923096,1014.6243896484375,15609.177734375,-22237400.0,-18265778.0,24.991558074951172 +925.0,303.1396789550781,2.2938244342803955,1014.6448974609375,15608.8623046875,-22235090.0,-18264994.0,24.991390228271484 +926.0,303.00653076171875,-8.232385635375977,1014.5147705078125,15610.8642578125,-22232988.0,-18264636.0,24.99245834350586 +927.0,302.843017578125,3.904879331588745,1014.3560180664062,15613.3076171875,-22230344.0,-18264134.0,24.993762969970703 +928.0,302.9566650390625,-10.07978343963623,1014.4349365234375,15612.0927734375,-22232560.0,-18264860.0,24.993114471435547 +929.0,303.1720886230469,-15.041844367980957,1014.6495361328125,15608.791015625,-22230768.0,-18260248.0,24.991352081298828 +930.0,303.3512878417969,-17.493141174316406,1014.52685546875,15610.6787109375,-22237004.0,-18264136.0,24.992359161376953 +931.0,302.9880676269531,6.382376194000244,1014.6767578125,15608.3720703125,-22235184.0,-18267074.0,24.99112892150879 +932.0,303.1754150390625,23.325281143188477,1015.11083984375,15601.6982421875,-22239922.0,-18269360.0,24.987565994262695 +933.0,303.2994384765625,-9.020071983337402,1014.974853515625,15603.7880859375,-22242458.0,-18270270.0,24.98868179321289 +934.0,303.26129150390625,-8.846282005310059,1015.04931640625,15602.6435546875,-22238956.0,-18267268.0,24.98807144165039 +935.0,303.1293029785156,14.919049263000488,1014.974609375,15603.7919921875,-22238648.0,-18268688.0,24.988683700561523 +936.0,303.2397766113281,-4.914283752441406,1014.304443359375,15614.1015625,-22233678.0,-18262272.0,24.994186401367188 +937.0,303.4046630859375,-23.327848434448242,1014.4547119140625,15611.7890625,-22234000.0,-18260434.0,24.992952346801758 +938.0,303.35186767578125,-9.415369987487793,1014.6351318359375,15609.0126953125,-22228274.0,-18255400.0,24.991470336914062 +939.0,303.3896484375,0.46006011962890625,1014.3338623046875,15613.6484375,-22231944.0,-18258576.0,24.99394416809082 +940.0,302.85711669921875,3.540822744369507,1014.3136596679688,15613.9599609375,-22231726.0,-18265330.0,24.994110107421875 +941.0,302.8882751464844,21.096097946166992,1014.6442260742188,15608.873046875,-22230616.0,-18263812.0,24.991395950317383 +942.0,302.91900634765625,5.052097797393799,1014.6077880859375,15609.43359375,-22236036.0,-18268830.0,24.991695404052734 +943.0,303.22003173828125,14.487079620361328,1014.4904174804688,15611.2392578125,-22231102.0,-18259954.0,24.992658615112305 +944.0,303.4537353515625,-23.243467330932617,1014.1337890625,15616.7294921875,-22229068.0,-18254860.0,24.995588302612305 +945.0,303.3227233886719,-13.855567932128906,1014.2085571289062,15615.578125,-22225844.0,-18253352.0,24.99497413635254 +946.0,303.0323486328125,-24.342557907104492,1014.447021484375,15611.9072265625,-22235548.0,-18266858.0,24.99301528930664 +947.0,302.88848876953125,-20.046388626098633,1014.161865234375,15616.296875,-22235718.0,-18268912.0,24.995357513427734 +948.0,303.2437438964844,-16.49155616760254,1013.9926147460938,15618.9033203125,-22235800.0,-18264342.0,24.996747970581055 +949.0,303.0850524902344,27.956207275390625,1014.4578857421875,15611.740234375,-22235088.0,-18265708.0,24.9929256439209 +950.0,303.3023681640625,-14.040465354919434,1014.224609375,15615.3310546875,-22235776.0,-18263550.0,24.994842529296875 +951.0,302.7810974121094,8.95259952545166,1014.51416015625,15610.8740234375,-22236648.0,-18271248.0,24.992464065551758 +952.0,302.8915100097656,-8.963956832885742,1014.5958251953125,15609.6171875,-22236230.0,-18269384.0,24.991792678833008 +953.0,303.0137939453125,24.072546005249023,1014.7673950195312,15606.978515625,-22232544.0,-18264098.0,24.990385055541992 +954.0,303.08331298828125,-15.556395530700684,1014.4300537109375,15612.16796875,-22229348.0,-18259992.0,24.993154525756836 +955.0,303.3999938964844,-15.974780082702637,1014.6063842773438,15609.455078125,-22235488.0,-18261984.0,24.99170684814453 +956.0,303.0312805175781,21.6705265045166,1014.8165893554688,15606.2216796875,-22231542.0,-18262866.0,24.989980697631836 +957.0,303.3204345703125,-21.96614646911621,1014.3046875,15614.09765625,-22227672.0,-18255210.0,24.994184494018555 +958.0,303.53558349609375,-3.0480575561523438,1014.2506103515625,15614.9306640625,-22228712.0,-18253432.0,24.99462890625 +959.0,303.3836669921875,-4.5589704513549805,1014.4774780273438,15611.4384765625,-22237772.0,-18264480.0,24.992765426635742 +960.0,303.3681945800781,4.826545238494873,1014.4532470703125,15611.8115234375,-22237544.0,-18264456.0,24.992963790893555 +961.0,303.8168029785156,10.574742317199707,1014.1563110351562,15616.3828125,-22230252.0,-18251288.0,24.995403289794922 +962.0,303.5035705566406,15.731117248535156,1014.1173095703125,15616.9833984375,-22231968.0,-18257106.0,24.995723724365234 +963.0,303.5076599121094,-27.72553062438965,1014.1354370117188,15616.7041015625,-22236896.0,-18261980.0,24.995574951171875 +964.0,303.28515625,19.583984375,1014.2152709960938,15615.474609375,-22236160.0,-18264160.0,24.994918823242188 +965.0,302.71905517578125,13.907581329345703,1014.1565551757812,15616.37890625,-22237448.0,-18272860.0,24.99540138244629 +966.0,302.93487548828125,-33.35114669799805,1014.256591796875,15614.8388671875,-22231874.0,-18264460.0,24.994579315185547 +967.0,303.2838439941406,-24.264978408813477,1014.9021606445312,15604.90625,-22238504.0,-18266520.0,24.98927879333496 +968.0,303.24822998046875,20.085813522338867,1015.1287841796875,15601.421875,-22240396.0,-18268880.0,24.98741912841797 +969.0,303.2852478027344,34.28852462768555,1015.1527709960938,15601.0537109375,-22238652.0,-18266650.0,24.98722267150879 +970.0,302.8351135253906,-9.247698783874512,1014.8070678710938,15606.3681640625,-22233556.0,-18267448.0,24.99005889892578 +971.0,302.9395446777344,-18.83162498474121,1014.8165893554688,15606.2216796875,-22237032.0,-18269558.0,24.989980697631836 +972.0,303.06103515625,7.206975936889648,1014.8649291992188,15605.478515625,-22237232.0,-18268166.0,24.98958396911621 +973.0,303.26043701171875,-3.7651784420013428,1014.6365966796875,15608.990234375,-22240514.0,-18268836.0,24.991458892822266 +974.0,303.04742431640625,23.687925338745117,1014.6497802734375,15608.787109375,-22231578.0,-18262690.0,24.991350173950195 +975.0,303.3279113769531,17.68562126159668,1014.30517578125,15614.0908203125,-22228372.0,-18255812.0,24.99418067932129 +976.0,303.542724609375,42.69046401977539,1014.4577026367188,15611.7431640625,-22230048.0,-18254674.0,24.99292755126953 +977.0,303.69866943359375,0.8897349238395691,1013.9454956054688,15619.62890625,-22228602.0,-18251186.0,24.997135162353516 +978.0,303.1382141113281,-6.226302623748779,1013.948486328125,15619.5830078125,-22230172.0,-18260096.0,24.99711036682129 +979.0,303.33123779296875,31.385726928710938,1014.7348022460938,15607.4794921875,-22241260.0,-18268656.0,24.990652084350586 +980.0,303.2312316894531,-13.200366020202637,1014.3053588867188,15614.087890625,-22239366.0,-18268072.0,24.994178771972656 +981.0,302.9062805175781,18.81101417541504,1014.690185546875,15608.166015625,-22239124.0,-18272084.0,24.991018295288086 +982.0,303.145751953125,-1.0319328308105469,1014.7366943359375,15607.4501953125,-22238180.0,-18268004.0,24.990636825561523 +983.0,303.5540771484375,-8.825695991516113,1014.80322265625,15606.427734375,-22237990.0,-18262468.0,24.99009132385254 +984.0,303.1043395996094,6.425024032592773,1015.3218994140625,15598.455078125,-22241892.0,-18272260.0,24.9858341217041 +985.0,302.8801574707031,10.668166160583496,1014.9091186523438,15604.798828125,-22238518.0,-18271820.0,24.989221572875977 +986.0,303.1345520019531,24.53151512145996,1014.7176513671875,15607.7431640625,-22240192.0,-18270164.0,24.990793228149414 +987.0,303.2547912597656,5.35689115524292,1014.8286743164062,15606.0361328125,-22238848.0,-18267246.0,24.98988151550293 +988.0,303.43170166015625,0.2908999025821686,1014.73828125,15607.42578125,-22239100.0,-18265180.0,24.990623474121094 +989.0,303.0786437988281,1.952208161354065,1014.8577880859375,15605.587890625,-22231536.0,-18262240.0,24.989643096923828 +990.0,303.33477783203125,4.521411418914795,1014.443115234375,15611.9677734375,-22231904.0,-18259254.0,24.9930477142334 +991.0,303.5912780761719,-6.745731353759766,1014.2298583984375,15615.25,-22239572.0,-18263562.0,24.99479866027832 +992.0,303.3963317871094,4.413853168487549,1014.4536743164062,15611.8046875,-22238468.0,-18265012.0,24.99295997619629 +993.0,303.3574523925781,-3.828221559524536,1014.1697998046875,15616.1748046875,-22236586.0,-18263638.0,24.99529266357422 +994.0,303.2181091308594,5.397055149078369,1014.2781372070312,15614.5068359375,-22235260.0,-18264138.0,24.994401931762695 +995.0,303.24932861328125,8.769259452819824,1014.3880004882812,15612.8154296875,-22234804.0,-18263272.0,24.993499755859375 +996.0,303.20654296875,-8.350489616394043,1014.3358154296875,15613.619140625,-22237128.0,-18266156.0,24.993928909301758 +997.0,303.2303771972656,-0.6941471099853516,1014.1100463867188,15617.0947265625,-22234292.0,-18263008.0,24.99578285217285 +998.0,303.60858154296875,-39.0069694519043,1013.9232788085938,15619.9716796875,-22232684.0,-18256448.0,24.997318267822266 +999.0,303.0625915527344,11.330967903137207,1014.0550537109375,15617.94140625,-22229900.0,-18260814.0,24.996234893798828 +1000.0,303.01910400390625,-20.01728630065918,1013.93994140625,15619.71484375,-22230064.0,-18261548.0,24.997180938720703 +1001.0,303.3913269042969,-45.66807556152344,1013.893310546875,15620.43359375,-22229834.0,-18256444.0,24.9975643157959 +1002.0,303.1133728027344,21.497037887573242,1014.1238403320312,15616.8828125,-22233090.0,-18263340.0,24.995670318603516 +1003.0,303.12353515625,2.6645865440368652,1013.840087890625,15621.2529296875,-22228804.0,-18258920.0,24.998001098632812 +1004.0,303.3255920410156,-10.797648429870605,1014.6353759765625,15609.0087890625,-22235140.0,-18262610.0,24.99146842956543 +1005.0,303.0476989746094,14.020684242248535,1014.5502319335938,15610.3193359375,-22233752.0,-18264862.0,24.992168426513672 +1006.0,303.70782470703125,2.073096990585327,1014.39453125,15612.71484375,-22244356.0,-18266820.0,24.993446350097656 +1007.0,302.7121887207031,29.125991821289062,1014.2308959960938,15615.234375,-22240628.0,-18276132.0,24.99479103088379 +1008.0,303.1171569824219,-8.694205284118652,1014.0901489257812,15617.4013671875,-22240432.0,-18270632.0,24.995946884155273 +1009.0,303.19403076171875,37.02696990966797,1014.270263671875,15614.6279296875,-22232388.0,-18261580.0,24.99446678161621 +1010.0,303.1322937011719,15.832779884338379,1013.7503662109375,15622.6357421875,-22236032.0,-18266034.0,24.99873924255371 +1011.0,303.2153015136719,14.347382545471191,1014.095703125,15617.3154296875,-22237972.0,-18266886.0,24.995901107788086 +1012.0,303.4800109863281,1.7062162160873413,1014.3216552734375,15613.8369140625,-22237292.0,-18262740.0,24.99404525756836 +1013.0,303.1630859375,32.287506103515625,1014.0277099609375,15618.36328125,-22231108.0,-18260706.0,24.9964599609375 +1014.0,303.3636779785156,15.623744010925293,1014.1530151367188,15616.43359375,-22231538.0,-18258508.0,24.99542999267578 +1015.0,303.7762145996094,-10.6950044631958,1013.8721923828125,15620.7587890625,-22239192.0,-18260760.0,24.997737884521484 +1016.0,303.00836181640625,-8.267263412475586,1014.0740966796875,15617.6484375,-22226672.0,-18258296.0,24.996078491210938 +1017.0,303.1061706542969,4.359861373901367,1014.2446899414062,15615.021484375,-22233558.0,-18263902.0,24.99467658996582 +1018.0,303.1145324707031,26.623090744018555,1014.29541015625,15614.2412109375,-22238856.0,-18269090.0,24.994260787963867 +1019.0,302.9796142578125,-6.220632076263428,1014.685546875,15608.2373046875,-22235924.0,-18267924.0,24.991056442260742 +1020.0,303.4686584472656,33.25485610961914,1014.7933349609375,15606.5791015625,-22240720.0,-18266316.0,24.990171432495117 +1021.0,302.9492492675781,-16.70652961730957,1014.4520874023438,15611.8291015625,-22233972.0,-18266370.0,24.99297332763672 +1022.0,302.9348449707031,35.91229248046875,1014.4379272460938,15612.046875,-22227548.0,-18260136.0,24.99308967590332 +1023.0,303.0300598144531,3.788316488265991,1014.5652465820312,15610.087890625,-22237542.0,-18268882.0,24.99204444885254 +1024.0,303.00262451171875,23.841611862182617,1014.3954467773438,15612.701171875,-22233262.0,-18264962.0,24.993438720703125 +1025.0,303.02630615234375,-3.3931286334991455,1014.379638671875,15612.9443359375,-22234654.0,-18266044.0,24.993568420410156 +1026.0,302.8843688964844,14.762537956237793,1014.23828125,15615.1201171875,-22231068.0,-18264316.0,24.99472999572754 +1027.0,303.6353454589844,-1.6574805974960327,1014.2180786132812,15615.431640625,-22237304.0,-18260716.0,24.994895935058594 +1028.0,303.330322265625,13.375407218933105,1014.2389526367188,15615.1103515625,-22229182.0,-18256590.0,24.99472427368164 +1029.0,303.6841735839844,21.247329711914062,1014.237548828125,15615.1318359375,-22233712.0,-18256486.0,24.994735717773438 +1030.0,303.121337890625,-11.04364013671875,1013.9905395507812,15618.935546875,-22230380.0,-18260524.0,24.99676513671875 +1031.0,303.24945068359375,2.039423704147339,1014.6179809570312,15609.2763671875,-22228420.0,-18256888.0,24.99161148071289 +1032.0,302.97869873046875,-10.427422523498535,1014.3928833007812,15612.740234375,-22231898.0,-18263912.0,24.993459701538086 +1033.0,303.098388671875,18.0355281829834,1014.166748046875,15616.2216796875,-22237960.0,-18268406.0,24.995317459106445 +1034.0,303.3570251464844,-12.630210876464844,1014.352294921875,15613.365234375,-22238316.0,-18265374.0,24.993793487548828 +1035.0,303.14178466796875,9.260591506958008,1014.3643188476562,15613.1796875,-22233990.0,-18263868.0,24.993694305419922 +1036.0,303.18310546875,-15.212498664855957,1014.4483642578125,15611.88671875,-22235660.0,-18264996.0,24.993003845214844 +1037.0,303.3236389160156,1.181058645248413,1014.4291381835938,15612.1826171875,-22242408.0,-18269904.0,24.993162155151367 +1038.0,302.99041748046875,-21.12664031982422,1014.1953125,15615.7822265625,-22232752.0,-18264612.0,24.99508285522461 +1039.0,303.3558044433594,19.598270416259766,1014.138427734375,15616.658203125,-22232482.0,-18259556.0,24.99555015563965 +1040.0,303.2713928222656,-43.56733322143555,1014.4015502929688,15612.607421875,-22229096.0,-18257276.0,24.993389129638672 +1041.0,303.1527404785156,-8.58194637298584,1014.3942260742188,15612.7197265625,-22226336.0,-18256070.0,24.99344825744629 +1042.0,303.1707458496094,-4.6820831298828125,1014.4950561523438,15611.16796875,-22226304.0,-18255802.0,24.99262046813965 +1043.0,303.6856384277344,-19.5416202545166,1014.38525390625,15612.857421875,-22232082.0,-18254836.0,24.99352264404297 +1044.0,303.4085998535156,-4.492633819580078,1014.4296264648438,15612.1748046875,-22232784.0,-18259166.0,24.9931583404541 +1045.0,303.20166015625,-5.688037872314453,1014.2057495117188,15615.62109375,-22231344.0,-18260436.0,24.994997024536133 +1046.0,303.3303527832031,-29.092744827270508,1014.048095703125,15618.048828125,-22230492.0,-18257900.0,24.996292114257812 +1047.0,303.2518310546875,-28.98883628845215,1014.3216552734375,15613.8369140625,-22235096.0,-18263532.0,24.99404525756836 +1048.0,303.03814697265625,-30.688199996948242,1014.6107788085938,15609.3876953125,-22233872.0,-18265106.0,24.991670608520508 +1049.0,303.2712707519531,-14.647144317626953,1014.562744140625,15610.126953125,-22230760.0,-18258940.0,24.9920654296875 +1050.0,303.3563232421875,-7.396477222442627,1014.51318359375,15610.888671875,-22229644.0,-18256712.0,24.99247169494629 +1051.0,303.4351501464844,19.855024337768555,1014.3313598632812,15613.6875,-22233252.0,-18259288.0,24.99396514892578 +1052.0,302.92431640625,2.520219564437866,1014.1349487304688,15616.7109375,-22229326.0,-18262050.0,24.99557876586914 +1053.0,303.3139343261719,-23.185440063476562,1014.049072265625,15618.0341796875,-22230020.0,-18257642.0,24.99628448486328 +1054.0,303.0856018066406,6.976073741912842,1014.633056640625,15609.044921875,-22230632.0,-18261244.0,24.991487503051758 +1055.0,303.7037353515625,-21.851648330688477,1014.2966918945312,15614.220703125,-22230770.0,-18253288.0,24.99424934387207 +1056.0,303.30084228515625,-12.201705932617188,1014.6112060546875,15609.380859375,-22230208.0,-18258002.0,24.991666793823242 +1057.0,303.5527038574219,18.175432205200195,1014.5369262695312,15610.5234375,-22231456.0,-18255952.0,24.992277145385742 +1058.0,303.42071533203125,13.958369255065918,1014.0673828125,15617.751953125,-22231748.0,-18257972.0,24.99613380432129 +1059.0,303.0938720703125,-29.25963020324707,1014.2310180664062,15615.232421875,-22234904.0,-18265408.0,24.994789123535156 +1060.0,303.2474670410156,20.055795669555664,1014.5301513671875,15610.6279296875,-22237780.0,-18266272.0,24.992332458496094 +1061.0,303.2545471191406,9.047656059265137,1014.4085083007812,15612.5,-22234250.0,-18262650.0,24.993331909179688 +1062.0,303.166259765625,30.209077835083008,1014.513671875,15610.8818359375,-22236748.0,-18266304.0,24.992467880249023 +1063.0,303.2613220214844,-5.110891342163086,1014.365234375,15613.166015625,-22235414.0,-18263726.0,24.99368667602539 +1064.0,303.09893798828125,-6.556704044342041,1014.379638671875,15612.9443359375,-22237924.0,-18268362.0,24.993568420410156 +1065.0,303.2341613769531,2.5978686809539795,1014.6303100585938,15609.0869140625,-22232358.0,-18261024.0,24.99151039123535 +1066.0,303.2666015625,-2.435513734817505,1014.542724609375,15610.4345703125,-22232796.0,-18261038.0,24.992229461669922 +1067.0,302.9699401855469,-37.60451889038086,1014.8180541992188,15606.19921875,-22234748.0,-18266876.0,24.98996925354004 +1068.0,302.9873352050781,33.134552001953125,1014.8372802734375,15605.9033203125,-22233868.0,-18265768.0,24.989810943603516 +1069.0,302.8611755371094,31.350540161132812,1014.7236328125,15607.6513671875,-22238390.0,-18271942.0,24.99074363708496 +1070.0,303.3465576171875,-2.1391544342041016,1014.4072875976562,15612.5185546875,-22241410.0,-18268604.0,24.99334144592285 +1071.0,303.0999755859375,3.602362871170044,1014.5979614257812,15609.5849609375,-22234660.0,-18265084.0,24.991775512695312 +1072.0,303.3825378417969,27.851621627807617,1014.4161376953125,15612.3828125,-22238334.0,-18265058.0,24.993268966674805 +1073.0,303.27142333984375,4.83272123336792,1014.3915405273438,15612.7607421875,-22234508.0,-18262688.0,24.993471145629883 +1074.0,303.6406555175781,14.776992797851562,1014.1843872070312,15615.9501953125,-22237694.0,-18261038.0,24.99517250061035 +1075.0,303.5047302246094,-19.295822143554688,1014.2442626953125,15615.0283203125,-22238628.0,-18263752.0,24.994680404663086 +1076.0,302.86273193359375,-22.29986572265625,1014.5003662109375,15611.0859375,-22233862.0,-18267394.0,24.992576599121094 +1077.0,303.3948059082031,11.73071002960205,1014.2208251953125,15615.388671875,-22234026.0,-18260588.0,24.994873046875 +1078.0,303.0638732910156,1.0930532217025757,1014.2728271484375,15614.5888671875,-22232116.0,-18263012.0,24.99444580078125 +1079.0,303.4090270996094,4.649674892425537,1014.3285522460938,15613.73046875,-22235340.0,-18261716.0,24.993988037109375 +1080.0,303.26812744140625,8.217761039733887,1014.2415161132812,15615.0703125,-22235372.0,-18263594.0,24.99470329284668 +1081.0,303.15203857421875,3.9506804943084717,1014.009765625,15618.6396484375,-22228948.0,-18258692.0,24.996606826782227 +1082.0,303.4375,-12.338223457336426,1014.2391967773438,15615.1064453125,-22235088.0,-18261092.0,24.994722366333008 +1083.0,303.6246337890625,8.441153526306152,1014.5060424804688,15610.9990234375,-22233396.0,-18256950.0,24.992530822753906 +1084.0,303.2541809082031,6.8959641456604,1014.7160034179688,15607.7685546875,-22233022.0,-18261426.0,24.990806579589844 +1085.0,303.3238220214844,5.8272385597229,1014.5274047851562,15610.669921875,-22230718.0,-18258210.0,24.992355346679688 +1086.0,303.2405090332031,-9.701042175292969,1014.0269775390625,15618.3740234375,-22226942.0,-18255526.0,24.9964656829834 +1087.0,303.2796325683594,13.758463859558105,1014.3603515625,15613.2412109375,-22232308.0,-18260380.0,24.99372673034668 +1088.0,302.78662109375,-6.7527289390563965,1014.1360473632812,15616.6943359375,-22236114.0,-18270642.0,24.995569229125977 +1089.0,302.7271728515625,-3.6833980083465576,1014.3076782226562,15614.0517578125,-22234568.0,-18269876.0,24.994159698486328 +1090.0,303.42889404296875,-16.354337692260742,1014.2684326171875,15614.65625,-22230704.0,-18256820.0,24.994482040405273 +1091.0,303.4889831542969,-54.70565414428711,1014.2235717773438,15615.3466796875,-22234380.0,-18259710.0,24.994850158691406 +1092.0,303.5003662109375,2.942631483078003,1014.628173828125,15609.1201171875,-22239468.0,-18264648.0,24.991527557373047 +1093.0,303.1677551269531,16.280153274536133,1014.4500122070312,15611.861328125,-22237132.0,-18266668.0,24.992990493774414 +1094.0,302.9742431640625,-6.432744979858398,1014.580810546875,15609.8486328125,-22239494.0,-18271564.0,24.99191665649414 +1095.0,303.1862487792969,32.14675521850586,1014.7838134765625,15606.7255859375,-22239068.0,-18268364.0,24.990249633789062 +1096.0,303.1268615722656,11.999011039733887,1014.1507568359375,15616.4677734375,-22229656.0,-18259728.0,24.99544906616211 +1097.0,303.3525390625,-19.479888916015625,1014.4384155273438,15612.0400390625,-22230956.0,-18258072.0,24.993085861206055 +1098.0,303.6850280761719,-10.93145751953125,1014.6303100585938,15609.0869140625,-22237108.0,-18259870.0,24.99151039123535 +1099.0,303.3113708496094,-15.35273265838623,1014.7066650390625,15607.912109375,-22235590.0,-18263246.0,24.990882873535156 +1100.0,303.2887268066406,23.413915634155273,1014.81591796875,15606.232421875,-22229134.0,-18257086.0,24.989986419677734 +1101.0,303.54364013671875,-18.0067138671875,1014.5303955078125,15610.6240234375,-22230988.0,-18255602.0,24.99233055114746 +1102.0,303.3833923339844,-39.28578567504883,1014.7499389648438,15607.2470703125,-22232944.0,-18259656.0,24.990528106689453 +1103.0,303.3586730957031,14.798664093017578,1014.7406005859375,15607.390625,-22230130.0,-18257166.0,24.990604400634766 +1104.0,303.699462890625,12.727282524108887,1014.4672241210938,15611.5966796875,-22230692.0,-18253266.0,24.992849349975586 +1105.0,303.6651916503906,-12.578449249267578,1014.19482421875,15615.7890625,-22236388.0,-18259410.0,24.995086669921875 +1106.0,302.87518310546875,-12.006251335144043,1014.4630737304688,15611.66015625,-22236626.0,-18269994.0,24.992883682250977 +1107.0,303.4972229003906,-14.833916664123535,1014.6776733398438,15608.3583984375,-22240622.0,-18265844.0,24.991121292114258 +1108.0,303.0641174316406,-23.503311157226562,1014.8703002929688,15605.3955078125,-22236876.0,-18267770.0,24.989540100097656 +1109.0,303.2711486816406,5.698643207550049,1014.8477172851562,15605.7431640625,-22240582.0,-18268764.0,24.98972511291504 +1110.0,303.06756591796875,8.48160457611084,1014.7854614257812,15606.7001953125,-22234574.0,-18265422.0,24.990236282348633 +1111.0,303.132568359375,-4.1347503662109375,1014.5879516601562,15609.73828125,-22237180.0,-18267178.0,24.991857528686523 +1112.0,303.3620300292969,-31.072708129882812,1014.1054077148438,15617.166015625,-22241172.0,-18268164.0,24.995820999145508 +1113.0,303.2842102050781,-8.369866371154785,1014.170654296875,15616.1611328125,-22230928.0,-18258940.0,24.995285034179688 +1114.0,303.622314453125,8.953774452209473,1014.2359008789062,15615.1572265625,-22227852.0,-18251436.0,24.994749069213867 +1115.0,303.4688415527344,22.567344665527344,1014.3313598632812,15613.6875,-22228604.0,-18254198.0,24.99396514892578 +1116.0,303.5037841796875,-16.249835968017578,1014.0736694335938,15617.6552734375,-22227932.0,-18253068.0,24.996082305908203 +1117.0,302.9499816894531,1.8763147592544556,1014.4795532226562,15611.40625,-22231894.0,-18264284.0,24.992748260498047 +1118.0,303.36859130859375,-9.920212745666504,1014.341552734375,15613.5302734375,-22235856.0,-18262762.0,24.993881225585938 +1119.0,303.0659484863281,-4.359170913696289,1014.68212890625,15608.2900390625,-22231292.0,-18262162.0,24.991085052490234 +1120.0,303.3840637207031,17.14518165588379,1014.4514770507812,15611.8388671875,-22233628.0,-18260332.0,24.992979049682617 +1121.0,303.18505859375,4.910345554351807,1014.6812133789062,15608.3037109375,-22239178.0,-18268488.0,24.991092681884766 +1122.0,303.0811462402344,-11.734813690185547,1014.8133544921875,15606.271484375,-22240780.0,-18271452.0,24.990007400512695 +1123.0,302.70697021484375,24.9815616607666,1014.7396850585938,15607.404296875,-22243608.0,-18279180.0,24.990612030029297 +1124.0,302.6734619140625,-16.35543441772461,1014.6221923828125,15609.2119140625,-22243040.0,-18279050.0,24.9915771484375 +1125.0,303.3019104003906,-16.031017303466797,1014.4906616210938,15611.2353515625,-22242392.0,-18270172.0,24.992656707763672 +1126.0,302.5706787109375,-10.110297203063965,1014.6328735351562,15609.0478515625,-22235340.0,-18272696.0,24.99148941040039 +1127.0,302.8998107910156,23.619491577148438,1014.6730346679688,15608.4296875,-22237236.0,-18270282.0,24.991159439086914 +1128.0,302.9740905761719,18.677886962890625,1014.518798828125,15610.802734375,-22236678.0,-18268752.0,24.9924259185791 +1129.0,303.18017578125,-24.68892478942871,1014.322265625,15613.8271484375,-22239532.0,-18268906.0,24.99403953552246 +1130.0,303.0009765625,-8.954718589782715,1014.7846069335938,15606.7138671875,-22236412.0,-18268134.0,24.990243911743164 +1131.0,303.29248046875,33.267974853515625,1014.9229736328125,15604.5859375,-22244850.0,-18272754.0,24.989107131958008 +1132.0,303.4130554199219,20.66993522644043,1014.5963134765625,15609.6103515625,-22240768.0,-18267092.0,24.991788864135742 +1133.0,303.2882385253906,27.62303352355957,1014.6700439453125,15608.4755859375,-22233532.0,-18261492.0,24.99118423461914 +1134.0,303.11517333984375,20.488941192626953,1015.0059814453125,15603.3095703125,-22230544.0,-18260770.0,24.988426208496094 +1135.0,303.43017578125,22.57524871826172,1014.6107788085938,15609.3876953125,-22233576.0,-18259676.0,24.991670608520508 +1136.0,303.07012939453125,-19.33155632019043,1014.3429565429688,15613.5087890625,-22229862.0,-18260678.0,24.99386978149414 +1137.0,303.3616943359375,-15.3306884765625,1014.50927734375,15610.94921875,-22235852.0,-18262848.0,24.992504119873047 +1138.0,303.2967224121094,12.528849601745605,1014.7782592773438,15606.8115234375,-22239944.0,-18267792.0,24.99029541015625 +1139.0,302.7807922363281,-5.822532653808594,1014.1246948242188,15616.869140625,-22233868.0,-18268472.0,24.995662689208984 +1140.0,302.9302978515625,-11.51578140258789,1014.3192749023438,15613.873046875,-22232140.0,-18264786.0,24.994064331054688 +1141.0,303.1580505371094,7.832357883453369,1014.677490234375,15608.361328125,-22237532.0,-18267196.0,24.99112319946289 +1142.0,303.1089172363281,4.232975482940674,1014.2698364257812,15614.634765625,-22231878.0,-18262186.0,24.994470596313477 +1143.0,303.4854736328125,-17.474931716918945,1014.380615234375,15612.9296875,-22234830.0,-18260206.0,24.993560791015625 +1144.0,303.2776184082031,29.455392837524414,1014.5548095703125,15610.2490234375,-22235404.0,-18263502.0,24.992130279541016 +1145.0,303.1020812988281,9.999547958374023,1014.648681640625,15608.8046875,-22239822.0,-18270218.0,24.99135971069336 +1146.0,302.89239501953125,7.752181529998779,1014.3601684570312,15613.244140625,-22233988.0,-18267130.0,24.993728637695312 +1147.0,303.5047912597656,2.9876861572265625,1014.5143432617188,15610.87109375,-22242470.0,-18267592.0,24.992462158203125 +1148.0,303.1419677734375,-11.896891593933105,1014.3060302734375,15614.0771484375,-22241016.0,-18270890.0,24.994173049926758 +1149.0,303.1572570800781,-0.020563125610351562,1014.3958740234375,15612.6943359375,-22237240.0,-18266914.0,24.99343490600586 +1150.0,302.8686218261719,-4.1297173500061035,1014.3313598632812,15613.6875,-22229420.0,-18262874.0,24.99396514892578 +1151.0,303.27593994140625,20.257869720458984,1014.541748046875,15610.44921875,-22225248.0,-18253368.0,24.992237091064453 +1152.0,303.3846435546875,5.815670490264893,1014.30322265625,15614.1201171875,-22223436.0,-18250132.0,24.99419593811035 +1153.0,303.31976318359375,-47.7804069519043,1014.2345581054688,15615.177734375,-22230924.0,-18258470.0,24.994760513305664 +1154.0,302.90789794921875,9.846911430358887,1014.4229125976562,15612.2783203125,-22227744.0,-18260684.0,24.993213653564453 +1155.0,303.53070068359375,-29.734176635742188,1014.29443359375,15614.255859375,-22236570.0,-18261352.0,24.9942684173584 +1156.0,303.06402587890625,-19.1987247467041,1014.5924072265625,15609.669921875,-22234554.0,-18265450.0,24.9918212890625 +1157.0,303.19317626953125,14.515190124511719,1014.757568359375,15607.1298828125,-22236532.0,-18265736.0,24.99046516418457 +1158.0,302.6858215332031,-16.400800704956055,1014.714111328125,15607.7978515625,-22229614.0,-18265462.0,24.990821838378906 +1159.0,302.73577880859375,7.664859771728516,1014.7327270507812,15607.51171875,-22239276.0,-18274470.0,24.99066925048828 +1160.0,303.0369873046875,9.244093894958496,1014.460205078125,15611.7041015625,-22236560.0,-18267810.0,24.99290657043457 +1161.0,302.8813171386719,17.162683486938477,1014.53759765625,15610.513671875,-22236416.0,-18269704.0,24.992271423339844 +1162.0,303.18438720703125,3.1888580322265625,1014.8663330078125,15605.45703125,-22233744.0,-18263062.0,24.989572525024414 +1163.0,303.2034606933594,-10.381394386291504,1014.4161376953125,15612.3828125,-22230060.0,-18259128.0,24.993268966674805 +1164.0,303.5519714355469,29.46562957763672,1015.0692749023438,15602.3369140625,-22233224.0,-18257730.0,24.98790740966797 +1165.0,303.4632263183594,-17.316152572631836,1014.8248901367188,15606.09375,-22241636.0,-18267304.0,24.989912033081055 +1166.0,303.27252197265625,11.808094024658203,1014.6110229492188,15609.3837890625,-22237372.0,-18265536.0,24.991668701171875 +1167.0,303.1748962402344,34.7570686340332,1014.8587036132812,15605.57421875,-22241640.0,-18271084.0,24.989635467529297 +1168.0,303.53369140625,-8.748046875,1014.8370971679688,15605.90625,-22240256.0,-18265000.0,24.98981285095215 +1169.0,302.8264465332031,9.822466850280762,1014.3151245117188,15613.9375,-22233200.0,-18267208.0,24.994098663330078 +1170.0,302.9919128417969,3.4024295806884766,1014.4572143554688,15611.75,-22236388.0,-18268228.0,24.992931365966797 +1171.0,303.3174743652344,-22.472246170043945,1014.0513305664062,15617.9990234375,-22231888.0,-18259464.0,24.996265411376953 +1172.0,303.21734619140625,-8.50621509552002,1014.2628173828125,15614.7421875,-22232328.0,-18261216.0,24.99452781677246 +1173.0,303.66534423828125,0.5744397044181824,1014.2675170898438,15614.669921875,-22229224.0,-18252244.0,24.994489669799805 +1174.0,303.4479064941406,7.144737720489502,1013.9224853515625,15619.9833984375,-22227676.0,-18253544.0,24.997323989868164 +1175.0,302.9781799316406,-8.5177583694458,1013.8118286132812,15621.6884765625,-22227400.0,-18259420.0,24.998233795166016 +1176.0,303.10052490234375,2.96496844291687,1014.1112670898438,15617.076171875,-22228748.0,-18259166.0,24.995773315429688 +1177.0,303.4053955078125,30.95159339904785,1014.1550903320312,15616.4013671875,-22232516.0,-18258940.0,24.995412826538086 +1178.0,303.4369201660156,-2.623220205307007,1014.251953125,15614.91015625,-22232552.0,-18258564.0,24.994617462158203 +1179.0,302.806396484375,3.675307035446167,1014.49609375,15611.15234375,-22232700.0,-18266968.0,24.992612838745117 +1180.0,303.0229187011719,0.5421231389045715,1014.6556396484375,15608.697265625,-22238464.0,-18269898.0,24.991302490234375 +1181.0,302.9794616699219,28.345178604125977,1014.8335571289062,15605.9609375,-22231718.0,-18263720.0,24.98984146118164 +1182.0,303.5440979003906,24.10756492614746,1014.5060424804688,15610.9990234375,-22236276.0,-18260884.0,24.992530822753906 +1183.0,302.9669494628906,-3.505605697631836,1014.2017822265625,15615.6826171875,-22233962.0,-18266128.0,24.99502944946289 +1184.0,302.93023681640625,-5.491861820220947,1014.2584838867188,15614.8095703125,-22238012.0,-18270660.0,24.994564056396484 +1185.0,303.2796630859375,-14.693641662597656,1014.5782470703125,15609.8876953125,-22237372.0,-18265444.0,24.9919376373291 +1186.0,303.0502624511719,-23.282991409301758,1014.3966064453125,15612.68359375,-22229308.0,-18260384.0,24.99342918395996 +1187.0,302.9978332519531,-27.842567443847656,1014.6288452148438,15609.109375,-22239262.0,-18271024.0,24.99152183532715 +1188.0,302.94696044921875,27.40125846862793,1014.8654174804688,15605.470703125,-22235180.0,-18267608.0,24.989580154418945 +1189.0,302.79656982421875,3.4056012630462646,1014.2404174804688,15615.087890625,-22231312.0,-18265710.0,24.994712829589844 +1190.0,303.2470397949219,2.7554209232330322,1014.5060424804688,15610.9990234375,-22233828.0,-18262326.0,24.992530822753906 +1191.0,303.0578918457031,-20.647937774658203,1014.3169555664062,15613.9091796875,-22237912.0,-18268888.0,24.994083404541016 +1192.0,302.9251708984375,15.554184913635254,1014.5460205078125,15610.3837890625,-22235544.0,-18268258.0,24.992202758789062 +1193.0,303.2549743652344,8.98998737335205,1014.442138671875,15611.982421875,-22235752.0,-18264146.0,24.99305534362793 +1194.0,302.92327880859375,-31.398818969726562,1014.3499145507812,15613.4013671875,-22236960.0,-18269698.0,24.993812561035156 +1195.0,303.1362609863281,18.447988510131836,1014.4284057617188,15612.193359375,-22234040.0,-18263988.0,24.993167877197266 +1196.0,302.57684326171875,17.777231216430664,1014.2835083007812,15614.423828125,-22233212.0,-18270488.0,24.99435806274414 +1197.0,303.0256652832031,-13.955147743225098,1014.67724609375,15608.365234375,-22240932.0,-18272330.0,24.991125106811523 +1198.0,303.160888671875,11.329968452453613,1014.6160888671875,15609.3056640625,-22239936.0,-18269562.0,24.991626739501953 +1199.0,303.2422790527344,-10.953861236572266,1014.8414306640625,15605.83984375,-22242588.0,-18271148.0,24.989776611328125 +1200.0,303.4086608886719,-6.937042236328125,1014.6553344726562,15608.7021484375,-22240516.0,-18266898.0,24.991304397583008 +1201.0,303.0191955566406,-23.121652603149414,1014.5974731445312,15609.591796875,-22237676.0,-18269158.0,24.991779327392578 +1202.0,303.15557861328125,7.9027838706970215,1014.4312133789062,15612.150390625,-22239152.0,-18268848.0,24.993144989013672 +1203.0,303.1123046875,-5.704426288604736,1014.4569702148438,15611.75390625,-22238368.0,-18268630.0,24.99293327331543 +1204.0,303.361083984375,19.06035804748535,1014.4468383789062,15611.91015625,-22242576.0,-18269580.0,24.993017196655273 +1205.0,303.46990966796875,19.48193359375,1014.3601684570312,15613.244140625,-22240852.0,-18266432.0,24.993728637695312 +1206.0,303.5472717285156,12.710654258728027,1014.4771728515625,15611.443359375,-22235784.0,-18260350.0,24.992767333984375 +1207.0,303.4637756347656,11.736905097961426,1014.6337890625,15609.033203125,-22233938.0,-18259598.0,24.99148178100586 +1208.0,303.0670166015625,-6.183647155761719,1014.5958251953125,15609.6171875,-22229552.0,-18260408.0,24.991792678833008 +1209.0,303.28118896484375,-49.50077438354492,1014.2351684570312,15615.16796875,-22231394.0,-18259446.0,24.994754791259766 +1210.0,303.0809326171875,8.853930473327637,1014.69580078125,15608.0791015625,-22232238.0,-18262912.0,24.9909725189209 +1211.0,303.2381896972656,13.805355072021484,1014.7841186523438,15606.720703125,-22239568.0,-18268182.0,24.99024772644043 +1212.0,302.70843505859375,-11.776813507080078,1014.4212646484375,15612.3037109375,-22230526.0,-18266078.0,24.993227005004883 +1213.0,303.2059020996094,15.890755653381348,1014.2396240234375,15615.099609375,-22235752.0,-18264790.0,24.994718551635742 +1214.0,302.9239807128906,-17.823640823364258,1014.271728515625,15614.60546875,-22235148.0,-18267878.0,24.994455337524414 +1215.0,302.90234375,-16.439477920532227,1014.3817138671875,15612.912109375,-22236516.0,-18269528.0,24.99355125427246 +1216.0,303.2446594238281,-1.689048409461975,1014.603271484375,15609.5029296875,-22234278.0,-18262808.0,24.991731643676758 +1217.0,303.3946228027344,-2.1439082622528076,1014.6012573242188,15609.5341796875,-22227376.0,-18253942.0,24.991748809814453 +1218.0,303.4844055175781,9.080424308776855,1014.25732421875,15614.8271484375,-22227904.0,-18253294.0,24.99457359313965 +1219.0,303.26092529296875,24.256338119506836,1014.3775634765625,15612.9765625,-22235518.0,-18263836.0,24.99358558654785 +1220.0,302.96075439453125,15.132615089416504,1013.9419555664062,15619.68359375,-22232976.0,-18265224.0,24.997163772583008 +1221.0,303.3273620605469,11.454731941223145,1014.1007690429688,15617.2373046875,-22232356.0,-18259802.0,24.995859146118164 +1222.0,303.4388732910156,14.381146430969238,1014.08984375,15617.40625,-22231520.0,-18257506.0,24.995948791503906 +1223.0,303.1980895996094,0.6743987202644348,1014.1272583007812,15616.830078125,-22231942.0,-18261082.0,24.995641708374023 +1224.0,303.40081787109375,20.99408531188965,1014.2345581054688,15615.177734375,-22233824.0,-18260308.0,24.994760513305664 +1225.0,302.961181640625,33.84841537475586,1014.1990356445312,15615.724609375,-22226168.0,-18258410.0,24.995052337646484 +1226.0,303.58514404296875,14.187545776367188,1014.2229614257812,15615.3564453125,-22226534.0,-18250604.0,24.994855880737305 +1227.0,303.37774658203125,51.32695388793945,1014.475830078125,15611.4638671875,-22230722.0,-18257508.0,24.992778778076172 +1228.0,303.4029846191406,2.395247220993042,1014.158203125,15616.353515625,-22230308.0,-18256764.0,24.99538803100586 +1229.0,303.2922058105469,6.509578704833984,1014.1075439453125,15617.1337890625,-22233492.0,-18261398.0,24.995803833007812 +1230.0,303.0157470703125,-13.973499298095703,1014.36181640625,15613.21875,-22232640.0,-18264168.0,24.993715286254883 +1231.0,302.7886047363281,10.083943367004395,1014.7554321289062,15607.162109375,-22235682.0,-18270184.0,24.990482330322266 +1232.0,303.19659423828125,19.693885803222656,1014.3531494140625,15613.3515625,-22238336.0,-18267496.0,24.993785858154297 +1233.0,302.96380615234375,2.629302978515625,1014.4105834960938,15612.4677734375,-22236976.0,-18269184.0,24.993314743041992 +1234.0,303.4414367675781,26.69814109802246,1014.4700317382812,15611.552734375,-22234752.0,-18260704.0,24.992826461791992 +1235.0,303.2033996582031,-8.171687126159668,1014.5945434570312,15609.6376953125,-22231184.0,-18260254.0,24.991804122924805 +1236.0,303.2508544921875,37.342498779296875,1014.8880004882812,15605.1240234375,-22239060.0,-18267508.0,24.989395141601562 +1237.0,303.287109375,11.63013744354248,1014.5925903320312,15609.6669921875,-22237100.0,-18265074.0,24.991819381713867 +1238.0,303.2128601074219,10.25755786895752,1014.642578125,15608.8984375,-22235278.0,-18264224.0,24.991409301757812 +1239.0,303.2679138183594,3.0477676391601562,1014.1838989257812,15615.9580078125,-22238414.0,-18266638.0,24.995176315307617 +1240.0,302.9574279785156,25.87457275390625,1014.5870971679688,15609.751953125,-22233888.0,-18266180.0,24.991865158081055 +1241.0,302.9472351074219,-1.9605787992477417,1014.4630737304688,15611.66015625,-22234760.0,-18267184.0,24.992883682250977 +1242.0,303.0865783691406,1.7035900354385376,1014.1300659179688,15616.7861328125,-22234908.0,-18265508.0,24.99561882019043 +1243.0,303.0147705078125,-7.3418660163879395,1014.4876098632812,15611.2822265625,-22237208.0,-18268748.0,24.9926815032959 +1244.0,303.39166259765625,21.4819393157959,1014.3648071289062,15613.1728515625,-22233836.0,-18260440.0,24.993690490722656 +1245.0,303.7371520996094,-20.833831787109375,1014.6040649414062,15609.4912109375,-22233832.0,-18255912.0,24.99172592163086 +1246.0,303.7173156738281,-11.983711242675781,1014.5659790039062,15610.0771484375,-22232196.0,-18254536.0,24.99203872680664 +1247.0,303.197021484375,30.373445510864258,1014.7098999023438,15607.8623046875,-22235834.0,-18264988.0,24.990856170654297 +1248.0,303.2778625488281,13.738215446472168,1014.51416015625,15610.8740234375,-22237048.0,-18265144.0,24.992464065551758 +1249.0,303.4136047363281,18.420520782470703,1014.5947875976562,15609.6337890625,-22237196.0,-18263512.0,24.991802215576172 +1250.0,303.1365051269531,-23.673620223999023,1014.412841796875,15612.43359375,-22237248.0,-18267194.0,24.993295669555664 +1251.0,303.2709655761719,-2.470158338546753,1014.2816772460938,15614.4521484375,-22237848.0,-18266032.0,24.994373321533203 +1252.0,303.70880126953125,22.069557189941406,1014.3650512695312,15613.1689453125,-22239904.0,-18262354.0,24.993688583374023 +1253.0,303.0480651855469,16.409780502319336,1014.0416259765625,15618.1484375,-22230716.0,-18261820.0,24.99634552001953 +1254.0,303.3277587890625,-7.581865310668945,1013.9254760742188,15619.9375,-22235692.0,-18263132.0,24.997299194335938 +1255.0,303.5691833496094,-5.256834030151367,1014.0687255859375,15617.7314453125,-22232978.0,-18257258.0,24.996122360229492 +1256.0,303.1507263183594,-15.491589546203613,1014.0462646484375,15618.0771484375,-22229102.0,-18258862.0,24.996307373046875 +1257.0,303.1790771484375,17.253751754760742,1014.1017456054688,15617.22265625,-22240458.0,-18269846.0,24.995851516723633 +1258.0,303.0120849609375,-0.37365850806236267,1014.1180419921875,15616.9716796875,-22236834.0,-18268408.0,24.995718002319336 +1259.0,303.0507507324219,-12.884867668151855,1014.431396484375,15612.1474609375,-22234952.0,-18266022.0,24.99314308166504 +1260.0,303.0679016113281,-36.38888931274414,1014.2131958007812,15615.5068359375,-22228338.0,-18259182.0,24.994935989379883 +1261.0,303.00518798828125,14.321754455566406,1014.615234375,15609.3193359375,-22226726.0,-18258392.0,24.991634368896484 +1262.0,303.31805419921875,47.668941497802734,1014.7894287109375,15606.6396484375,-22225248.0,-18252816.0,24.990203857421875 +1263.0,303.211669921875,25.147979736328125,1014.560791015625,15610.15625,-22229428.0,-18258390.0,24.992080688476562 +1264.0,303.34149169921875,17.916282653808594,1014.4342041015625,15612.1044921875,-22230532.0,-18257792.0,24.993120193481445 +1265.0,303.2768859863281,7.017335414886475,1014.5870971679688,15609.751953125,-22236228.0,-18264336.0,24.991865158081055 +1266.0,303.2757873535156,16.47957992553711,1014.66796875,15608.5078125,-22239784.0,-18267906.0,24.991201400756836 +1267.0,302.63397216796875,16.94600486755371,1014.7267456054688,15607.603515625,-22240404.0,-18276932.0,24.990718841552734 +1268.0,303.12274169921875,18.66103172302246,1014.8024291992188,15606.439453125,-22239234.0,-18269360.0,24.990097045898438 +1269.0,303.2012939453125,5.300905704498291,1014.6353759765625,15609.0087890625,-22240464.0,-18269562.0,24.99146842956543 +1270.0,302.8965148925781,39.320343017578125,1014.628173828125,15609.1201171875,-22233102.0,-18266192.0,24.991527557373047 +1271.0,302.8338623046875,33.514625549316406,1014.8758544921875,15605.310546875,-22238132.0,-18272042.0,24.98949432373047 +1272.0,302.6414794921875,-37.53476333618164,1014.6751098632812,15608.3974609375,-22236536.0,-18272964.0,24.99114227294922 +1273.0,302.9167175292969,10.311147689819336,1014.8387451171875,15605.880859375,-22241244.0,-18274068.0,24.98979949951172 +1274.0,303.13720703125,-36.13807678222656,1014.695068359375,15608.0908203125,-22248416.0,-18278352.0,24.990978240966797 +1275.0,302.89312744140625,2.757478713989258,1015.0025634765625,15603.3623046875,-22244248.0,-18277382.0,24.988454818725586 +1276.0,302.80322265625,-2.994732141494751,1014.8292236328125,15606.02734375,-22244760.0,-18279072.0,24.989877700805664 +1277.0,302.83099365234375,-1.0459638833999634,1015.102294921875,15601.8291015625,-22244264.0,-18278212.0,24.98763656616211 +1278.0,302.9832458496094,20.966745376586914,1015.0904541015625,15602.01171875,-22243120.0,-18275072.0,24.987733840942383 +1279.0,302.5438537597656,31.004987716674805,1014.6817016601562,15608.296875,-22241220.0,-18278928.0,24.9910888671875 +1280.0,302.5166320800781,7.956918239593506,1014.247802734375,15614.9736328125,-22243150.0,-18281214.0,24.994651794433594 +1281.0,302.9974060058594,1.4994150400161743,1014.59619140625,15609.6123046875,-22244600.0,-18276368.0,24.991790771484375 +1282.0,302.6468505859375,-19.9173583984375,1014.5809936523438,15609.845703125,-22242136.0,-18278496.0,24.991914749145508 +1283.0,302.8311767578125,2.5320003032684326,1014.523681640625,15610.7275390625,-22241024.0,-18274968.0,24.992385864257812 +1284.0,303.0025939941406,12.72564697265625,1014.3863525390625,15612.8408203125,-22237454.0,-18269154.0,24.993513107299805 +1285.0,303.181640625,10.035700798034668,1014.2168579101562,15615.4501953125,-22242168.0,-18271524.0,24.994905471801758 +1286.0,302.6142272949219,6.655490398406982,1014.2118530273438,15615.52734375,-22233242.0,-18270028.0,24.99494743347168 +1287.0,303.0036926269531,25.055505752563477,1014.6175537109375,15609.283203125,-22239380.0,-18271064.0,24.991615295410156 +1288.0,303.0490417480469,-6.80287504196167,1014.9944458007812,15603.4873046875,-22242650.0,-18273742.0,24.988521575927734 +1289.0,302.9336242675781,-36.996639251708984,1015.1426391601562,15601.208984375,-22239142.0,-18271744.0,24.9873046875 +1290.0,303.2373046875,23.881784439086914,1014.6375122070312,15608.9765625,-22243748.0,-18272374.0,24.991451263427734 +1291.0,303.1886291503906,-6.6562066078186035,1014.6181640625,15609.2734375,-22240420.0,-18269684.0,24.991609573364258 +1292.0,303.4654846191406,-1.1889591217041016,1014.7420654296875,15607.3681640625,-22241624.0,-18267262.0,24.99059295654297 +1293.0,303.0085144042969,35.52720642089844,1014.64404296875,15608.8759765625,-22236648.0,-18268270.0,24.991397857666016 +1294.0,303.0615234375,60.26838302612305,1014.7933349609375,15606.5791015625,-22235906.0,-18266834.0,24.990171432495117 +1295.0,302.99884033203125,7.139469146728516,1014.49560546875,15611.1591796875,-22235634.0,-18267384.0,24.992616653442383 +1296.0,303.47845458984375,-11.1326322555542,1014.4465942382812,15611.9140625,-22236836.0,-18262304.0,24.993019104003906 +1297.0,303.198974609375,36.57253646850586,1014.4918823242188,15611.216796875,-22236084.0,-18265212.0,24.992647171020508 +1298.0,303.37109375,4.233913421630859,1014.5155639648438,15610.8525390625,-22230812.0,-18257686.0,24.99245262145996 +1299.0,303.57098388671875,31.804296493530273,1014.4208374023438,15612.310546875,-22229580.0,-18253836.0,24.99323081970215 +1300.0,303.541259765625,-9.904420852661133,1014.5577392578125,15610.203125,-22236584.0,-18261230.0,24.99210548400879 +1301.0,303.1540222167969,24.240495681762695,1014.6791381835938,15608.3359375,-22228964.0,-18258680.0,24.99110984802246 +1302.0,303.2887878417969,17.783231735229492,1014.2314453125,15615.2255859375,-22227648.0,-18255600.0,24.99478530883789 +1303.0,303.26153564453125,17.366098403930664,1014.505126953125,15611.0126953125,-22234080.0,-18262388.0,24.992538452148438 +1304.0,303.4117736816406,1.858540415763855,1014.4541625976562,15611.796875,-22236148.0,-18262488.0,24.992956161499023 +1305.0,303.5186462402344,-13.492504119873047,1014.0548706054688,15617.9443359375,-22240326.0,-18265268.0,24.99623680114746 +1306.0,303.1371154785156,0.5275128483772278,1014.3494873046875,15613.408203125,-22232344.0,-18262282.0,24.993816375732422 +1307.0,303.26519775390625,15.364171028137207,1014.4609985351562,15611.6923828125,-22233960.0,-18262220.0,24.992900848388672 +1308.0,303.3917236328125,-14.572131156921387,1014.499755859375,15611.095703125,-22238380.0,-18264984.0,24.992582321166992 +1309.0,303.5505065917969,17.77062225341797,1014.4929809570312,15611.2001953125,-22235612.0,-18260136.0,24.992637634277344 +1310.0,303.1788330078125,-22.05574607849121,1014.0806274414062,15617.5478515625,-22241628.0,-18271020.0,24.99602508544922 +1311.0,302.9394836425781,-17.114099502563477,1014.3587036132812,15613.2666015625,-22234652.0,-18267178.0,24.99374008178711 +1312.0,302.98388671875,-3.236264944076538,1014.3833618164062,15612.88671875,-22234764.0,-18266708.0,24.99353790283203 +1313.0,302.9072570800781,-32.960166931152344,1014.25146484375,15614.9169921875,-22236850.0,-18269798.0,24.99462127685547 +1314.0,303.2217712402344,5.1007771492004395,1014.5394897460938,15610.484375,-22234018.0,-18262848.0,24.99225616455078 +1315.0,303.2118835449219,5.922536373138428,1014.8170166015625,15606.21484375,-22236950.0,-18265908.0,24.98997688293457 +1316.0,302.7696533203125,-6.918199062347412,1014.4532470703125,15611.8115234375,-22229162.0,-18263912.0,24.992963790893555 +1317.0,302.9560546875,-1.534847617149353,1014.5189819335938,15610.7998046875,-22237132.0,-18269442.0,24.99242401123047 +1318.0,302.695068359375,4.217584133148193,1014.3831787109375,15612.8896484375,-22234284.0,-18270012.0,24.993539810180664 +1319.0,303.00396728515625,22.35381507873535,1014.4265747070312,15612.2216796875,-22229296.0,-18260978.0,24.993183135986328 +1320.0,303.5561218261719,-8.928397178649902,1014.4432983398438,15611.96484375,-22232386.0,-18256836.0,24.993045806884766 +1321.0,303.35028076171875,28.682706832885742,1014.4620971679688,15611.6748046875,-22240284.0,-18267430.0,24.992891311645508 +1322.0,303.4480895996094,29.47808074951172,1014.1275634765625,15616.8251953125,-22234600.0,-18260466.0,24.99563980102539 +1323.0,303.1213684082031,10.38102912902832,1013.9649658203125,15619.3291015625,-22233644.0,-18263788.0,24.99697494506836 +1324.0,302.951904296875,-31.664480209350586,1014.5502319335938,15610.3193359375,-22232510.0,-18264874.0,24.992168426513672 +1325.0,303.1151428222656,3.642054557800293,1014.3200073242188,15613.8623046875,-22233280.0,-18263506.0,24.99405860900879 +1326.0,303.10888671875,3.9091527462005615,1014.2461547851562,15614.9990234375,-22233552.0,-18263860.0,24.994665145874023 +1327.0,303.04364013671875,-8.332425117492676,1014.2296752929688,15615.2529296875,-22232902.0,-18264064.0,24.994800567626953 +1328.0,303.34075927734375,12.191001892089844,1014.3035278320312,15614.1162109375,-22234060.0,-18261332.0,24.99419403076172 +1329.0,303.2408752441406,7.272398471832275,1014.0711059570312,15617.6943359375,-22234962.0,-18263542.0,24.996103286743164 +1330.0,303.1432800292969,-4.468710422515869,1014.2705078125,15614.6240234375,-22237752.0,-18267608.0,24.994464874267578 +1331.0,303.0404357910156,-21.473031997680664,1014.3209228515625,15613.84765625,-22246980.0,-18278184.0,24.994050979614258 +1332.0,303.0570068359375,-11.016197204589844,1014.5311889648438,15610.6123046875,-22241388.0,-18272376.0,24.992324829101562 +1333.0,303.2584228515625,-21.569623947143555,1014.6288452148438,15609.109375,-22237344.0,-18265694.0,24.99152183532715 +1334.0,302.94122314453125,30.75603675842285,1014.6874389648438,15608.2080078125,-22236292.0,-18268796.0,24.99104118347168 +1335.0,303.2479553222656,-0.7463836669921875,1014.5366821289062,15610.52734375,-22238224.0,-18266710.0,24.992279052734375 +1336.0,302.8599853515625,-11.130992889404297,1014.4022216796875,15612.5966796875,-22236684.0,-18270252.0,24.993383407592773 +1337.0,303.0035400390625,-11.949650764465332,1014.4288940429688,15612.1865234375,-22233792.0,-18265480.0,24.9931640625 +1338.0,303.4092102050781,8.025381088256836,1014.6574096679688,15608.669921875,-22231160.0,-18257534.0,24.991287231445312 +1339.0,303.23870849609375,15.392768859863281,1014.5289306640625,15610.646484375,-22229398.0,-18258006.0,24.992341995239258 +1340.0,303.1611328125,27.734338760375977,1014.5257568359375,15610.6953125,-22234664.0,-18264288.0,24.992368698120117 +1341.0,302.77435302734375,-12.036774635314941,1014.5555419921875,15610.2373046875,-22237820.0,-18272508.0,24.992124557495117 +1342.0,302.9629821777344,-15.95987319946289,1014.8421630859375,15605.828125,-22232620.0,-18264840.0,24.989770889282227 +1343.0,303.3713684082031,-3.2565090656280518,1014.5879516601562,15609.73828125,-22241704.0,-18268574.0,24.991857528686523 +1344.0,303.1673583984375,3.200678586959839,1014.3408813476562,15613.541015625,-22236788.0,-18266330.0,24.993886947631836 +1345.0,303.217041015625,-8.433820724487305,1014.6795654296875,15608.3291015625,-22234440.0,-18263332.0,24.991106033325195 +1346.0,303.02825927734375,4.54590368270874,1014.884765625,15605.173828125,-22237356.0,-18268720.0,24.989421844482422 +1347.0,303.1988830566406,28.07002067565918,1014.586181640625,15609.765625,-22234264.0,-18263394.0,24.991872787475586 +1348.0,303.7180480957031,4.565981388092041,1014.1248779296875,15616.8662109375,-22234008.0,-18256338.0,24.99566078186035 +1349.0,303.56341552734375,6.955862045288086,1013.987060546875,15618.9892578125,-22226776.0,-18251132.0,24.996793746948242 +1350.0,303.4423828125,9.09917163848877,1013.9960327148438,15618.8505859375,-22229188.0,-18255128.0,24.996719360351562 +1351.0,303.58770751953125,-9.576189994812012,1014.2786865234375,15614.498046875,-22234566.0,-18258604.0,24.99439811706543 +1352.0,303.3000183105469,9.058708190917969,1014.256591796875,15614.8388671875,-22235244.0,-18263048.0,24.994579315185547 +1353.0,303.0361022949219,-26.7955379486084,1014.251220703125,15614.9208984375,-22234254.0,-18265516.0,24.9946231842041 +1354.0,303.25848388671875,-0.7960694432258606,1014.7066650390625,15607.912109375,-22238486.0,-18266834.0,24.990882873535156 +1355.0,303.0779724121094,-3.9768760204315186,1014.9972534179688,15603.4443359375,-22245852.0,-18276564.0,24.98849868774414 +1356.0,302.5980529785156,-3.234950304031372,1014.77734375,15606.8251953125,-22241876.0,-18278874.0,24.99030303955078 +1357.0,303.0389404296875,-18.27110481262207,1014.223388671875,15615.349609375,-22243972.0,-18275196.0,24.99485206604004 +1358.0,302.83343505859375,16.819725036621094,1014.2493896484375,15614.94921875,-22237368.0,-18271284.0,24.994638442993164 +1359.0,302.6592102050781,7.579806804656982,1014.100341796875,15617.244140625,-22233832.0,-18270028.0,24.99586296081543 +1360.0,303.13983154296875,-19.266868591308594,1014.1987915039062,15615.728515625,-22236414.0,-18266316.0,24.995054244995117 +1361.0,303.196044921875,11.980574607849121,1014.97607421875,15603.76953125,-22236100.0,-18265266.0,24.988672256469727 +1362.0,303.09735107421875,5.148205757141113,1014.9070434570312,15604.8310546875,-22239736.0,-18270196.0,24.989238739013672 +1363.0,303.23748779296875,-0.11023557186126709,1015.00439453125,15603.333984375,-22239420.0,-18268044.0,24.988439559936523 +1364.0,302.9962463378906,25.950227737426758,1015.3377685546875,15598.2109375,-22232884.0,-18264666.0,24.98570442199707 +1365.0,303.2133483886719,30.272705078125,1014.572509765625,15609.9765625,-22234040.0,-18262980.0,24.991985321044922 +1366.0,303.2428283691406,-5.639472961425781,1014.5081176757812,15610.966796875,-22240808.0,-18269362.0,24.99251365661621 +1367.0,303.13140869140625,6.210756301879883,1014.6218872070312,15609.216796875,-22237976.0,-18267988.0,24.991579055786133 +1368.0,303.2137145996094,-16.321819305419922,1014.681884765625,15608.2939453125,-22243122.0,-18272056.0,24.991086959838867 +1369.0,303.4172058105469,39.58070755004883,1014.8438110351562,15605.802734375,-22241720.0,-18267990.0,24.989757537841797 +1370.0,303.49078369140625,-5.811910152435303,1014.3275146484375,15613.7470703125,-22236966.0,-18262272.0,24.99399757385254 +1371.0,303.1518249511719,-1.13259756565094,1014.3705444335938,15613.083984375,-22232860.0,-18262606.0,24.993642807006836 +1372.0,303.13385009765625,0.812088668346405,1014.4502563476562,15611.857421875,-22237888.0,-18267868.0,24.99298858642578 +1373.0,303.307373046875,18.91033172607422,1014.624755859375,15609.1728515625,-22239432.0,-18267140.0,24.99155616760254 +1374.0,303.2609558105469,30.320634841918945,1014.7554321289062,15607.162109375,-22239696.0,-18268012.0,24.990482330322266 +1375.0,303.24676513671875,-13.605807304382324,1014.65478515625,15608.7109375,-22235972.0,-18264474.0,24.991310119628906 +1376.0,302.8375244140625,-20.40266990661621,1014.2883911132812,15614.3486328125,-22235152.0,-18269014.0,24.99431800842285 +1377.0,302.8485107421875,-4.647331237792969,1014.6102905273438,15609.39453125,-22235504.0,-18269222.0,24.991674423217773 +1378.0,303.01220703125,-6.896970272064209,1014.6423950195312,15608.9013671875,-22233504.0,-18265078.0,24.991411209106445 +1379.0,303.06500244140625,3.8553435802459717,1014.5680541992188,15610.044921875,-22234964.0,-18265846.0,24.992021560668945 +1380.0,303.03448486328125,-10.005011558532715,1014.4656372070312,15611.62109375,-22235548.0,-18266830.0,24.992862701416016 +1381.0,303.2460632324219,27.416519165039062,1014.5408325195312,15610.4638671875,-22233320.0,-18261832.0,24.992244720458984 +1382.0,302.928955078125,-24.012880325317383,1014.2470703125,15614.9853515625,-22233540.0,-18266204.0,24.994657516479492 +1383.0,303.0445861816406,-13.849905967712402,1014.4428100585938,15611.9716796875,-22236078.0,-18267228.0,24.99304962158203 +1384.0,303.1880798339844,16.603700637817383,1014.4461059570312,15611.9208984375,-22239658.0,-18268928.0,24.993022918701172 +1385.0,302.8040771484375,-15.28454303741455,1014.6118774414062,15609.3701171875,-22234208.0,-18268508.0,24.991661071777344 +1386.0,303.0173645019531,-17.235000610351562,1014.67236328125,15608.4404296875,-22240554.0,-18272060.0,24.991165161132812 +1387.0,303.26458740234375,4.263847351074219,1014.0453491210938,15618.0908203125,-22237612.0,-18265880.0,24.996315002441406 +1388.0,303.16815185546875,7.991122722625732,1013.9102172851562,15620.1728515625,-22230920.0,-18260452.0,24.997425079345703 +1389.0,302.87738037109375,-28.56940269470215,1014.08984375,15617.40625,-22234880.0,-18268220.0,24.995948791503906 +1390.0,302.8083801269531,3.329453229904175,1014.4216918945312,15612.296875,-22239680.0,-18273924.0,24.993223190307617 +1391.0,302.9006042480469,-0.5416030883789062,1014.6776733398438,15608.3583984375,-22249264.0,-18282300.0,24.991121292114258 +1392.0,302.8307189941406,6.25836706161499,1014.5076904296875,15610.9736328125,-22243584.0,-18277534.0,24.992517471313477 +1393.0,303.1587219238281,-5.089894771575928,1014.6318359375,15609.0634765625,-22243074.0,-18272728.0,24.991497039794922 +1394.0,302.94598388671875,-23.174575805664062,1014.624755859375,15609.1728515625,-22238172.0,-18270614.0,24.99155616760254 +1395.0,302.83660888671875,-6.536230564117432,1014.65478515625,15608.7109375,-22235940.0,-18269814.0,24.991310119628906 +1396.0,303.18768310546875,41.66130447387695,1014.5830688476562,15609.8134765625,-22233600.0,-18262876.0,24.991897583007812 +1397.0,302.86090087890625,4.845300674438477,1014.6683959960938,15608.5009765625,-22234892.0,-18268448.0,24.99119758605957 +1398.0,303.29144287109375,3.6380093097686768,1014.6748657226562,15608.4013671875,-22240704.0,-18268620.0,24.99114418029785 +1399.0,303.19219970703125,35.97858428955078,1014.8677978515625,15605.4345703125,-22243028.0,-18272244.0,24.989561080932617 +1400.0,303.1450500488281,1.5600427389144897,1014.5325317382812,15610.591796875,-22238214.0,-18268048.0,24.992313385009766 +1401.0,302.9198303222656,-11.4392671585083,1014.4031372070312,15612.5830078125,-22235604.0,-18268388.0,24.993375778198242 +1402.0,303.37725830078125,-6.1779704093933105,1014.726318359375,15607.6103515625,-22245664.0,-18272458.0,24.99072265625 +1403.0,303.0577087402344,10.068852424621582,1014.7178344726562,15607.740234375,-22239688.0,-18270666.0,24.99079132080078 +1404.0,303.2034606933594,-3.7997677326202393,1014.7115478515625,15607.8369140625,-22237632.0,-18266702.0,24.990842819213867 +1405.0,303.1337585449219,13.615025520324707,1014.7538452148438,15607.1865234375,-22239908.0,-18269890.0,24.990495681762695 +1406.0,303.0085144042969,-26.436113357543945,1014.5341796875,15610.56640625,-22239368.0,-18270990.0,24.992300033569336 +1407.0,303.0418701171875,-17.44506072998047,1014.6021728515625,15609.51953125,-22235620.0,-18266804.0,24.991741180419922 +1408.0,302.74951171875,24.86320686340332,1014.45068359375,15611.8505859375,-22235952.0,-18270966.0,24.992984771728516 +1409.0,303.039794921875,2.9192326068878174,1014.2911987304688,15614.3056640625,-22231960.0,-18263172.0,24.994295120239258 +1410.0,303.0041198730469,1.4971944093704224,1013.9923706054688,15618.9072265625,-22232852.0,-18264532.0,24.996749877929688 +1411.0,303.62908935546875,14.179191589355469,1014.5573120117188,15610.2099609375,-22235266.0,-18258760.0,24.992109298706055 +1412.0,303.34490966796875,15.729613304138184,1014.5060424804688,15610.9990234375,-22226136.0,-18253352.0,24.992530822753906 +1413.0,303.3730163574219,-2.845979690551758,1014.7785034179688,15606.8076171875,-22228932.0,-18255780.0,24.990293502807617 +1414.0,303.30828857421875,-10.333491325378418,1014.35107421875,15613.3837890625,-22236286.0,-18263982.0,24.993803024291992 +1415.0,302.9934997558594,4.763586521148682,1014.2589111328125,15614.802734375,-22232404.0,-18264224.0,24.99456024169922 +1416.0,303.27886962890625,-21.071983337402344,1014.7083129882812,15607.88671875,-22234708.0,-18262790.0,24.990869522094727 +1417.0,303.0128173828125,19.76858901977539,1014.7257080078125,15607.619140625,-22236354.0,-18267920.0,24.990726470947266 +1418.0,303.5732421875,-2.8416717052459717,1014.5069580078125,15610.9853515625,-22235860.0,-18260086.0,24.992523193359375 +1419.0,303.0255432128906,10.762419700622559,1014.0476684570312,15618.0556640625,-22231252.0,-18262652.0,24.996295928955078 +1420.0,303.32647705078125,-11.10373306274414,1014.3977661132812,15612.6650390625,-22234296.0,-18261754.0,24.993419647216797 +1421.0,303.1078186035156,-1.3528233766555786,1014.48876953125,15611.2646484375,-22230216.0,-18260538.0,24.992671966552734 +1422.0,303.06927490234375,17.64417839050293,1014.5159912109375,15610.845703125,-22235146.0,-18265972.0,24.992448806762695 +1423.0,303.47705078125,23.71075439453125,1014.6897583007812,15608.1728515625,-22236118.0,-18261604.0,24.99102210998535 +1424.0,303.222412109375,4.804327487945557,1014.2164306640625,15615.45703125,-22237568.0,-18266388.0,24.994909286499023 +1425.0,302.8603515625,2.2990622520446777,1014.4525756835938,15611.8212890625,-22232056.0,-18265618.0,24.992969512939453 +1426.0,303.5912780761719,-43.03260803222656,1014.3345947265625,15613.6376953125,-22237856.0,-18261846.0,24.993938446044922 +1427.0,303.3798828125,-8.007041931152344,1014.2883911132812,15614.3486328125,-22231148.0,-18257906.0,24.99431800842285 +1428.0,302.9913635253906,-32.56623458862305,1014.261962890625,15614.755859375,-22227478.0,-18259326.0,24.994535446166992 +1429.0,303.4982604980469,22.713029861450195,1014.0537109375,15617.962890625,-22230566.0,-18255774.0,24.996246337890625 +1430.0,303.23968505859375,7.6747307777404785,1014.0571899414062,15617.9091796875,-22231728.0,-18260322.0,24.996217727661133 +1431.0,303.25152587890625,26.7221736907959,1014.4165649414062,15612.3759765625,-22234340.0,-18262780.0,24.99326515197754 +1432.0,302.9510192871094,8.569282531738281,1013.902587890625,15620.2900390625,-22228368.0,-18260744.0,24.997488021850586 +1433.0,303.23883056640625,-13.550605773925781,1014.0267944335938,15618.376953125,-22222748.0,-18251354.0,24.99646759033203 +1434.0,303.5993347167969,-8.21480655670166,1014.0517578125,15617.9921875,-22229734.0,-18253618.0,24.996261596679688 +1435.0,303.704345703125,-16.271265029907227,1014.1556396484375,15616.392578125,-22234838.0,-18257348.0,24.99540901184082 +1436.0,303.2162170410156,24.570398330688477,1014.5587158203125,15610.1884765625,-22228894.0,-18257796.0,24.992097854614258 +1437.0,303.3769836425781,-27.77374839782715,1014.4627685546875,15611.6650390625,-22237024.0,-18263820.0,24.99288558959961 +1438.0,302.9843444824219,6.934627056121826,1014.7041625976562,15607.951171875,-22229792.0,-18261730.0,24.990903854370117 +1439.0,303.1463317871094,-10.35616397857666,1014.184814453125,15615.943359375,-22236560.0,-18266378.0,24.995168685913086 +1440.0,303.1156005859375,-7.729961395263672,1014.1892700195312,15615.875,-22233684.0,-18263904.0,24.995132446289062 +1441.0,302.9399108886719,-7.53114652633667,1014.6474609375,15608.8232421875,-22233620.0,-18266140.0,24.991369247436523 +1442.0,303.221923828125,-11.881050109863281,1014.3155517578125,15613.9306640625,-22238680.0,-18267508.0,24.994094848632812 +1443.0,303.0555725097656,-13.061920166015625,1014.6967163085938,15608.0654296875,-22239474.0,-18270480.0,24.990964889526367 +1444.0,303.0713195800781,19.942276000976562,1014.75732421875,15607.1328125,-22240058.0,-18270858.0,24.990467071533203 +1445.0,302.7183837890625,26.522066116333008,1014.7363891601562,15607.455078125,-22236312.0,-18271734.0,24.990638732910156 +1446.0,303.1492614746094,9.026185989379883,1014.5157470703125,15610.849609375,-22243772.0,-18273550.0,24.992450714111328 +1447.0,302.93896484375,-11.155138969421387,1014.8410034179688,15605.8466796875,-22240538.0,-18273072.0,24.98978042602539 +1448.0,303.10845947265625,39.92063522338867,1014.6783447265625,15608.34765625,-22239944.0,-18270258.0,24.99111557006836 +1449.0,302.77276611328125,17.864233016967773,1014.2516479492188,15614.9140625,-22230902.0,-18265612.0,24.994619369506836 +1450.0,303.1474609375,5.9384894371032715,1014.603759765625,15609.4951171875,-22237658.0,-18267460.0,24.991727828979492 +1451.0,303.2410583496094,28.287199020385742,1014.5953979492188,15609.6240234375,-22241140.0,-18269716.0,24.991796493530273 +1452.0,303.179931640625,-13.16722583770752,1014.7362670898438,15607.45703125,-22244062.0,-18273440.0,24.99064064025879 +1453.0,302.7900085449219,5.189764022827148,1014.9702758789062,15603.8583984375,-22242946.0,-18277430.0,24.988719940185547 +1454.0,302.9494323730469,5.644799709320068,1015.003662109375,15603.345703125,-22237268.0,-18269664.0,24.988445281982422 +1455.0,303.16424560546875,-14.263827323913574,1014.9404907226562,15604.31640625,-22240392.0,-18269976.0,24.988964080810547 +1456.0,302.8921813964844,8.110812187194824,1014.6089477539062,15609.416015625,-22233812.0,-18266958.0,24.99168586730957 +1457.0,302.6824645996094,10.29400634765625,1014.75732421875,15607.1328125,-22230306.0,-18266198.0,24.990467071533203 +1458.0,302.4768371582031,13.050871849060059,1014.878662109375,15605.267578125,-22228426.0,-18267012.0,24.989471435546875 +1459.0,303.3124694824219,4.296894550323486,1014.5052490234375,15611.0107421875,-22231226.0,-18258868.0,24.992536544799805 +1460.0,303.2300109863281,-20.796661376953125,1014.304443359375,15614.1015625,-22239536.0,-18268258.0,24.994186401367188 +1461.0,302.86444091796875,-20.591249465942383,1014.6504516601562,15608.77734375,-22238578.0,-18272088.0,24.991344451904297 +1462.0,303.27288818359375,16.95791244506836,1014.48974609375,15611.25,-22242890.0,-18271050.0,24.992664337158203 +1463.0,302.88372802734375,2.814286470413208,1014.5726928710938,15609.9736328125,-22234712.0,-18267968.0,24.99198341369629 +1464.0,303.0462341308594,-16.18145179748535,1014.5803833007812,15609.85546875,-22236008.0,-18267136.0,24.991920471191406 +1465.0,303.01214599609375,-1.7865409851074219,1014.3388061523438,15613.5732421875,-22236968.0,-18268542.0,24.99390411376953 +1466.0,303.2537536621094,41.05221176147461,1014.2680053710938,15614.6630859375,-22232808.0,-18261218.0,24.99448585510254 +1467.0,303.2059326171875,14.055377006530762,1014.3350219726562,15613.630859375,-22232736.0,-18261772.0,24.993934631347656 +1468.0,303.41448974609375,-5.649435520172119,1014.3392333984375,15613.56640625,-22232780.0,-18259084.0,24.993900299072266 +1469.0,303.40911865234375,12.4895601272583,1014.2229614257812,15615.3564453125,-22233746.0,-18260122.0,24.994855880737305 +1470.0,303.5210876464844,27.70677375793457,1014.318115234375,15613.8916015625,-22234760.0,-18259670.0,24.99407386779785 +1471.0,303.2823181152344,2.14262318611145,1014.4969482421875,15611.138671875,-22239484.0,-18267520.0,24.992605209350586 +1472.0,303.02825927734375,20.65484046936035,1014.285888671875,15614.3876953125,-22238626.0,-18269990.0,24.994338989257812 +1473.0,302.6576232910156,-13.373383522033691,1014.3812866210938,15612.9189453125,-22229578.0,-18265796.0,24.993555068969727 +1474.0,303.3006896972656,-5.7053680419921875,1014.5615234375,15610.1455078125,-22237336.0,-18265132.0,24.992074966430664 +1475.0,303.2767028808594,-24.524330139160156,1014.6112060546875,15609.380859375,-22240648.0,-18268758.0,24.991666793823242 +1476.0,302.96942138671875,24.30194664001465,1014.4944458007812,15611.177734375,-22238698.0,-18270832.0,24.992626190185547 +1477.0,303.2821044921875,0.5885334014892578,1014.733154296875,15607.5048828125,-22237562.0,-18265600.0,24.990665435791016 +1478.0,303.2546081542969,-16.606069564819336,1014.6883544921875,15608.1943359375,-22240512.0,-18268912.0,24.99103355407715 +1479.0,303.150146484375,42.49613571166992,1014.456787109375,15611.7568359375,-22227140.0,-18256908.0,24.992935180664062 +1480.0,303.32025146484375,16.749608993530273,1014.1300659179688,15616.7861328125,-22229590.0,-18257130.0,24.99561882019043 +1481.0,303.16943359375,-2.2380597591400146,1014.0416259765625,15618.1484375,-22234428.0,-18263942.0,24.99634552001953 +1482.0,303.2939453125,-8.637835502624512,1014.4107055664062,15612.4658203125,-22231032.0,-18258916.0,24.99331283569336 +1483.0,303.3135070800781,-6.851093292236328,1014.111083984375,15617.0791015625,-22233942.0,-18261570.0,24.99577522277832 +1484.0,303.3711242675781,39.20296859741211,1014.260986328125,15614.7705078125,-22234732.0,-18261606.0,24.994543075561523 +1485.0,303.3557434082031,0.428302526473999,1014.4746704101562,15611.4814453125,-22239250.0,-18266324.0,24.992788314819336 +1486.0,303.4938049316406,-29.3641300201416,1014.3540649414062,15613.337890625,-22243060.0,-18268326.0,24.993778228759766 +1487.0,303.0752868652344,-10.990562438964844,1014.816162109375,15606.228515625,-22233524.0,-18264272.0,24.9899845123291 +1488.0,303.32391357421875,35.92563247680664,1015.0453491210938,15602.705078125,-22235788.0,-18263280.0,24.98810386657715 +1489.0,303.2547607421875,5.619386196136475,1014.8505249023438,15605.7001953125,-22234764.0,-18263162.0,24.989702224731445 +1490.0,303.4411926269531,23.081361770629883,1014.4630737304688,15611.66015625,-22234932.0,-18260888.0,24.992883682250977 +1491.0,303.2352294921875,-13.062394142150879,1014.6233520507812,15609.1943359375,-22231552.0,-18260206.0,24.991567611694336 +1492.0,303.49560546875,-21.4160099029541,1014.1387329101562,15616.6533203125,-22230360.0,-18255604.0,24.995548248291016 +1493.0,303.6578369140625,36.51911926269531,1014.5938110351562,15609.6484375,-22234864.0,-18257982.0,24.991809844970703 +1494.0,303.5319519042969,-25.789642333984375,1014.3810424804688,15612.9228515625,-22239888.0,-18264656.0,24.99355697631836 +1495.0,303.12554931640625,18.1904354095459,1014.7903442382812,15606.625,-22234564.0,-18264654.0,24.990196228027344 +1496.0,302.9065246582031,-12.522364616394043,1014.6694946289062,15608.484375,-22231190.0,-18264148.0,24.991188049316406 +1497.0,303.26007080078125,-2.933117151260376,1014.7406005859375,15607.390625,-22243558.0,-18271886.0,24.990604400634766 +1498.0,303.0319519042969,27.04640769958496,1014.5433349609375,15610.4248046875,-22236040.0,-18267356.0,24.992223739624023 +1499.0,302.9329528808594,33.844207763671875,1014.455322265625,15611.779296875,-22234272.0,-18266884.0,24.99294662475586 +1500.0,303.36492919921875,12.255642890930176,1014.408935546875,15612.4931640625,-22243496.0,-18270450.0,24.993328094482422 +1501.0,303.2262878417969,16.333837509155273,1014.4866943359375,15611.296875,-22233096.0,-18261866.0,24.99268913269043 +1502.0,303.12628173828125,-22.24472999572754,1014.29833984375,15614.1953125,-22236284.0,-18266364.0,24.99423599243164 +1503.0,303.2596740722656,4.719178676605225,1014.523681640625,15610.7275390625,-22235180.0,-18263514.0,24.992385864257812 +1504.0,303.1814270019531,0.2022714614868164,1014.4631958007812,15611.658203125,-22231708.0,-18261066.0,24.992881774902344 +1505.0,303.23431396484375,1.270534873008728,1014.3931274414062,15612.736328125,-22230556.0,-18259220.0,24.993457794189453 +1506.0,303.1988830566406,-19.304719924926758,1014.204345703125,15615.642578125,-22232000.0,-18261128.0,24.99500846862793 +1507.0,303.1278991699219,-0.7578582763671875,1014.35205078125,15613.369140625,-22228110.0,-18258168.0,24.99379539489746 +1508.0,303.2386779785156,0.5649547576904297,1014.103759765625,15617.19140625,-22230172.0,-18258780.0,24.995834350585938 +1509.0,303.3143005371094,-16.721948623657227,1014.4732666015625,15611.5029296875,-22233396.0,-18261014.0,24.992799758911133 +1510.0,303.106689453125,-31.719152450561523,1014.6260375976562,15609.15234375,-22230584.0,-18260920.0,24.991544723510742 +1511.0,303.27850341796875,21.86846923828125,1014.9005126953125,15604.931640625,-22238376.0,-18266462.0,24.98929214477539 +1512.0,303.14013671875,-15.816082000732422,1014.7135009765625,15607.8076171875,-22235284.0,-18265184.0,24.990827560424805 +1513.0,303.5653381347656,-3.5042498111724854,1014.4760131835938,15611.4609375,-22238220.0,-18262550.0,24.99277687072754 +1514.0,303.24322509765625,-28.67537498474121,1014.3594360351562,15613.2548828125,-22235860.0,-18264408.0,24.99373435974121 +1515.0,303.2149353027344,5.662357807159424,1014.2568969726562,15614.833984375,-22234496.0,-18263416.0,24.994577407836914 +1516.0,302.93206787109375,28.544145584106445,1014.2408447265625,15615.0810546875,-22232502.0,-18265126.0,24.994709014892578 +1517.0,302.83251953125,0.14453084766864777,1014.1998901367188,15615.7109375,-22234080.0,-18268008.0,24.995044708251953 +1518.0,303.18048095703125,16.570655822753906,1013.9208984375,15620.0078125,-22238236.0,-18267606.0,24.997337341308594 +1519.0,303.47528076171875,27.006929397583008,1014.2059936523438,15615.6171875,-22236236.0,-18261746.0,24.9949951171875 +1520.0,303.34674072265625,-20.593809127807617,1013.9427490234375,15619.671875,-22232420.0,-18259612.0,24.99715805053711 +1521.0,303.60809326171875,-16.629501342773438,1013.7440795898438,15622.732421875,-22228124.0,-18251894.0,24.998790740966797 +1522.0,303.90716552734375,-9.83946704864502,1013.9298095703125,15619.87109375,-22229308.0,-18249160.0,24.997264862060547 +1523.0,303.7336120605469,18.775497436523438,1014.3423461914062,15613.5185546875,-22234510.0,-18256636.0,24.99387550354004 +1524.0,302.76214599609375,23.235265731811523,1014.3715209960938,15613.0693359375,-22228676.0,-18263524.0,24.993635177612305 +1525.0,303.69134521484375,-5.609598636627197,1014.5396728515625,15610.4814453125,-22239460.0,-18262140.0,24.99225425720215 +1526.0,303.40679931640625,-11.379730224609375,1014.4447021484375,15611.943359375,-22237284.0,-18263690.0,24.99303436279297 +1527.0,302.8719177246094,9.602499961853027,1014.36181640625,15613.21875,-22232008.0,-18265420.0,24.993715286254883 +1528.0,303.0473327636719,-12.220654487609863,1014.1827392578125,15615.9755859375,-22230828.0,-18261942.0,24.99518585205078 +1529.0,303.1692810058594,-1.052240252494812,1014.48388671875,15611.33984375,-22237432.0,-18266948.0,24.992712020874023 +1530.0,303.151123046875,-9.178009986877441,1014.5919799804688,15609.6767578125,-22239628.0,-18269382.0,24.991825103759766 +1531.0,302.9337463378906,13.561213493347168,1014.5684814453125,15610.0380859375,-22237732.0,-18270334.0,24.99201774597168 +1532.0,302.9840087890625,-2.5177805423736572,1014.2946166992188,15614.2529296875,-22237124.0,-18269068.0,24.994266510009766 +1533.0,303.1762390136719,41.71333694458008,1014.21435546875,15615.48828125,-22235864.0,-18265290.0,24.99492645263672 +1534.0,302.93218994140625,36.13014221191406,1014.4449462890625,15611.939453125,-22240592.0,-18273214.0,24.993032455444336 +1535.0,303.304931640625,22.212594985961914,1014.3687744140625,15613.111328125,-22237976.0,-18265716.0,24.9936580657959 +1536.0,302.9960632324219,7.19384765625,1014.1890869140625,15615.8779296875,-22233254.0,-18265040.0,24.995134353637695 +1537.0,303.1703796386719,-12.492478370666504,1014.172119140625,15616.138671875,-22231680.0,-18261182.0,24.99527359008789 +1538.0,302.8158264160156,43.718963623046875,1014.462646484375,15611.6669921875,-22228740.0,-18262886.0,24.992887496948242 +1539.0,303.08984375,8.080506324768066,1013.987548828125,15618.9814453125,-22233450.0,-18264008.0,24.996789932250977 +1540.0,303.41400146484375,-25.8041934967041,1014.5001831054688,15611.0888671875,-22239048.0,-18265360.0,24.992578506469727 +1541.0,302.960205078125,14.676653861999512,1014.6233520507812,15609.1943359375,-22232454.0,-18264708.0,24.991567611694336 +1542.0,302.8244934082031,6.9798583984375,1014.6806640625,15608.3125,-22239134.0,-18273166.0,24.99109649658203 +1543.0,302.9898986816406,-24.1177978515625,1014.776123046875,15606.84375,-22242648.0,-18274514.0,24.990312576293945 +1544.0,302.7162780761719,-3.7850914001464844,1014.6987915039062,15608.033203125,-22234252.0,-18269702.0,24.990947723388672 +1545.0,303.32672119140625,53.89107894897461,1014.8392333984375,15605.8740234375,-22243976.0,-18271432.0,24.989795684814453 +1546.0,303.3005065917969,5.106001377105713,1014.2739868164062,15614.5703125,-22239026.0,-18266824.0,24.994436264038086 +1547.0,303.2833557128906,-11.367523193359375,1014.011962890625,15618.60546875,-22231080.0,-18259104.0,24.99658966064453 +1548.0,303.28045654296875,-39.773555755615234,1014.4320068359375,15612.138671875,-22235576.0,-18263636.0,24.993139266967773 +1549.0,303.40582275390625,1.5826244354248047,1014.4044799804688,15612.5615234375,-22237840.0,-18264260.0,24.993364334106445 +1550.0,302.7608337402344,-15.29712200164795,1014.270263671875,15614.6279296875,-22229024.0,-18263890.0,24.99446678161621 +1551.0,303.08416748046875,34.54129409790039,1014.5034790039062,15611.0380859375,-22228432.0,-18259064.0,24.992551803588867 +1552.0,303.6064147949219,-18.101573944091797,1014.4912109375,15611.2275390625,-22239748.0,-18263540.0,24.992652893066406 +1553.0,303.62518310546875,24.416643142700195,1014.7044067382812,15607.947265625,-22235196.0,-18258742.0,24.990901947021484 +1554.0,303.42413330078125,-21.3435115814209,1014.4453735351562,15611.9326171875,-22239234.0,-18265412.0,24.99302864074707 +1555.0,303.6649169921875,-16.664764404296875,1014.2730712890625,15614.5849609375,-22239262.0,-18262288.0,24.994443893432617 +1556.0,303.16070556640625,-31.332242965698242,1014.1143188476562,15617.029296875,-22237082.0,-18266712.0,24.99574851989746 +1557.0,303.07177734375,2.315842390060425,1014.0379638671875,15618.205078125,-22225624.0,-18256418.0,24.996376037597656 +1558.0,303.2858581542969,-8.112515449523926,1013.96875,15619.271484375,-22235034.0,-18263024.0,24.996944427490234 +1559.0,303.392578125,-11.925370216369629,1014.0374145507812,15618.2138671875,-22233082.0,-18259674.0,24.996379852294922 +1560.0,302.62164306640625,13.084403991699219,1014.1442260742188,15616.568359375,-22225520.0,-18262210.0,24.995502471923828 +1561.0,303.2508239746094,-13.559547424316406,1014.2781372070312,15614.5068359375,-22233676.0,-18262124.0,24.994401931762695 +1562.0,303.4197998046875,-11.08629322052002,1014.3751831054688,15613.0126953125,-22228748.0,-18254984.0,24.99360466003418 +1563.0,303.4510192871094,5.157094955444336,1014.7192993164062,15607.7177734375,-22234910.0,-18260736.0,24.990779876708984 +1564.0,303.029296875,26.968904495239258,1014.6458129882812,15608.8486328125,-22234980.0,-18266330.0,24.991382598876953 +1565.0,303.3398132324219,7.905709743499756,1014.7612915039062,15607.072265625,-22235328.0,-18262612.0,24.990434646606445 +1566.0,303.39056396484375,-9.758000373840332,1014.541748046875,15610.44921875,-22237884.0,-18264504.0,24.992237091064453 +1567.0,303.3076171875,5.173941612243652,1014.8934936523438,15605.0390625,-22239904.0,-18267608.0,24.989349365234375 +1568.0,303.0989685058594,5.890688419342041,1014.6005859375,15609.5439453125,-22236284.0,-18266722.0,24.99175453186035 +1569.0,302.9921875,-21.805856704711914,1014.6648559570312,15608.5556640625,-22236624.0,-18268460.0,24.991226196289062 +1570.0,303.3442077636719,-9.932265281677246,1014.830322265625,15606.0107421875,-22237784.0,-18265010.0,24.9898681640625 +1571.0,303.1639709472656,-4.354307651519775,1014.705810546875,15607.92578125,-22236444.0,-18266030.0,24.990890502929688 +1572.0,303.0076904296875,13.635417938232422,1014.7471313476562,15607.2900390625,-22232430.0,-18264064.0,24.990550994873047 +1573.0,303.22760009765625,-12.941818237304688,1014.580810546875,15609.8486328125,-22236824.0,-18265576.0,24.99191665649414 +1574.0,303.0920104980469,-22.9887638092041,1014.8048095703125,15606.4033203125,-22236556.0,-18267084.0,24.99007797241211 +1575.0,303.2494201660156,-13.108307838439941,1014.3826293945312,15612.8984375,-22234422.0,-18262890.0,24.99354362487793 +1576.0,303.3703308105469,10.634127616882324,1014.5635986328125,15610.11328125,-22239136.0,-18266020.0,24.99205780029297 +1577.0,302.95867919921875,19.156850814819336,1014.5812377929688,15609.841796875,-22237812.0,-18270088.0,24.991912841796875 +1578.0,303.2421875,22.06084442138672,1014.7920532226562,15606.599609375,-22236376.0,-18264938.0,24.990182876586914 +1579.0,302.8787536621094,-1.3915067911148071,1014.70947265625,15607.869140625,-22241642.0,-18274964.0,24.990859985351562 +1580.0,302.9834899902344,-35.99064636230469,1014.865234375,15605.4736328125,-22241876.0,-18273826.0,24.989582061767578 +1581.0,302.9930114746094,5.36763334274292,1014.8814086914062,15605.224609375,-22242722.0,-18274548.0,24.98944854736328 +1582.0,302.74627685546875,26.97992515563965,1014.5134887695312,15610.884765625,-22232460.0,-18267516.0,24.992469787597656 +1583.0,303.15887451171875,-9.147354125976562,1014.9872436523438,15603.59765625,-22232908.0,-18262562.0,24.98858070373535 +1584.0,303.14935302734375,-32.40456008911133,1014.7077026367188,15607.896484375,-22240960.0,-18270738.0,24.990875244140625 +1585.0,302.9457702636719,10.422499656677246,1014.8456420898438,15605.775390625,-22240076.0,-18272520.0,24.989742279052734 +1586.0,303.1170349121094,-0.3541683852672577,1014.8898315429688,15605.095703125,-22235884.0,-18266086.0,24.9893798828125 +1587.0,302.9039001464844,9.335259437561035,1014.8603515625,15605.548828125,-22231984.0,-18264976.0,24.989622116088867 +1588.0,303.7109375,-3.275932550430298,1015.0029907226562,15603.35546875,-22238380.0,-18260804.0,24.98845100402832 +1589.0,303.1217041015625,-7.0583109855651855,1014.9853515625,15603.626953125,-22231680.0,-18261820.0,24.988595962524414 +1590.0,303.280517578125,23.675979614257812,1014.5443725585938,15610.4091796875,-22236364.0,-18264424.0,24.992216110229492 +1591.0,302.9691162109375,-28.716796875,1014.3167724609375,15613.912109375,-22228248.0,-18260386.0,24.99408531188965 +1592.0,303.7002258300781,2.240506410598755,1014.467529296875,15611.591796875,-22236342.0,-18258906.0,24.992847442626953 +1593.0,303.09661865234375,13.29721450805664,1014.6558227539062,15608.6943359375,-22230580.0,-18261048.0,24.991300582885742 +1594.0,303.01190185546875,-18.955347061157227,1014.609375,15609.4091796875,-22232814.0,-18264392.0,24.991682052612305 +1595.0,303.23748779296875,-2.995164155960083,1014.5549926757812,15610.24609375,-22231736.0,-18260360.0,24.992128372192383 +1596.0,303.0566101074219,-1.1786702871322632,1014.8914184570312,15605.0712890625,-22233028.0,-18264020.0,24.98936653137207 +1597.0,303.165283203125,37.813385009765625,1014.7623291015625,15607.056640625,-22227718.0,-18257288.0,24.990427017211914 +1598.0,303.2458801269531,-5.337998867034912,1014.2210693359375,15615.3857421875,-22225312.0,-18253826.0,24.994871139526367 +1599.0,303.2342224121094,7.482187271118164,1014.2479248046875,15614.9716796875,-22231332.0,-18259998.0,24.99464988708496 +1600.0,303.6362609863281,-26.824180603027344,1014.3290405273438,15613.72265625,-22233224.0,-18256626.0,24.99398422241211 +1601.0,303.19384765625,6.187119960784912,1014.394775390625,15612.7109375,-22232608.0,-18261804.0,24.993444442749023 +1602.0,302.9827575683594,16.848527908325195,1014.1641235351562,15616.26171875,-22229912.0,-18261872.0,24.995338439941406 +1603.0,302.9378356933594,-49.56094741821289,1014.4003295898438,15612.6259765625,-22236116.0,-18268664.0,24.993398666381836 +1604.0,303.0226135253906,45.87529373168945,1014.5322265625,15610.595703125,-22238174.0,-18269612.0,24.9923152923584 +1605.0,303.1265869140625,7.948487758636475,1014.42724609375,15612.2119140625,-22236444.0,-18266520.0,24.99317741394043 +1606.0,303.1560974121094,6.1308135986328125,1014.4786376953125,15611.4208984375,-22235412.0,-18265100.0,24.992755889892578 +1607.0,302.72515869140625,-41.82033920288086,1014.572265625,15609.98046875,-22241520.0,-18276852.0,24.991987228393555 +1608.0,302.666748046875,-7.22602653503418,1014.7135009765625,15607.8076171875,-22241768.0,-18277866.0,24.990827560424805 +1609.0,303.2810363769531,25.124113082885742,1014.9539184570312,15604.1103515625,-22236120.0,-18264174.0,24.988853454589844 +1610.0,303.4322204589844,18.111143112182617,1014.6300659179688,15609.0908203125,-22237836.0,-18263910.0,24.991512298583984 +1611.0,303.7611999511719,22.445343017578125,1014.4932250976562,15611.1962890625,-22232068.0,-18253832.0,24.99263572692871 +1612.0,303.55877685546875,-36.4885139465332,1014.0439453125,15618.11328125,-22230696.0,-18255112.0,24.996326446533203 +1613.0,303.2532043457031,-7.833599090576172,1014.2986450195312,15614.19140625,-22230428.0,-18258846.0,24.994234085083008 +1614.0,303.7310485839844,39.54495620727539,1014.2317504882812,15615.220703125,-22234348.0,-18256508.0,24.994783401489258 +1615.0,303.034912109375,-18.168807983398438,1014.0485229492188,15618.0419921875,-22223984.0,-18255260.0,24.996288299560547 +1616.0,302.9246520996094,18.070533752441406,1014.271484375,15614.609375,-22232816.0,-18265536.0,24.994457244873047 +1617.0,303.23956298828125,1.3759193420410156,1013.7410278320312,15622.779296875,-22223524.0,-18252120.0,24.998815536499023 +1618.0,303.1766662597656,23.756540298461914,1014.0933837890625,15617.3515625,-22224818.0,-18254238.0,24.995920181274414 +1619.0,303.40673828125,11.91965103149414,1014.3046875,15614.09765625,-22235156.0,-18261564.0,24.994184494018555 +1620.0,303.2180480957031,-16.91859245300293,1014.2579956054688,15614.81640625,-22228104.0,-18256982.0,24.99456787109375 +1621.0,303.1022033691406,16.205644607543945,1014.9240112304688,15604.5703125,-22228704.0,-18259100.0,24.989099502563477 +1622.0,302.82452392578125,10.190672874450684,1014.3385620117188,15613.576171875,-22230022.0,-18264054.0,24.993906021118164 +1623.0,303.44085693359375,-7.704259872436523,1014.2354125976562,15615.1640625,-22232280.0,-18258240.0,24.994752883911133 +1624.0,303.0819091796875,2.4031269550323486,1014.4920654296875,15611.2138671875,-22242950.0,-18273612.0,24.992645263671875 +1625.0,302.8900451660156,9.28593921661377,1014.8098754882812,15606.3251953125,-22245488.0,-18278662.0,24.990036010742188 +1626.0,302.7834167480469,-1.0088697671890259,1014.8143310546875,15606.2568359375,-22238140.0,-18272710.0,24.989999771118164 +1627.0,302.915283203125,20.241506576538086,1015.0502319335938,15602.6298828125,-22238060.0,-18270904.0,24.98806381225586 +1628.0,303.17718505859375,-6.7026448249816895,1014.6159057617188,15609.30859375,-22243016.0,-18272428.0,24.991628646850586 +1629.0,302.9948425292969,-22.25115203857422,1014.62353515625,15609.19140625,-22242456.0,-18274258.0,24.991565704345703 +1630.0,303.00225830078125,15.235878944396973,1014.7657470703125,15607.00390625,-22239686.0,-18271390.0,24.990398406982422 +1631.0,302.76971435546875,3.432152032852173,1014.6231079101562,15609.1982421875,-22236072.0,-18270822.0,24.99156951904297 +1632.0,303.136474609375,13.32683277130127,1014.4808959960938,15611.3857421875,-22234858.0,-18264804.0,24.99273681640625 +1633.0,303.171630859375,-16.51618003845215,1014.4547119140625,15611.7890625,-22235624.0,-18265110.0,24.992952346801758 +1634.0,302.984130859375,0.30448880791664124,1014.8189697265625,15606.185546875,-22236776.0,-18268718.0,24.989961624145508 +1635.0,303.1614074707031,7.692440032958984,1014.8388671875,15605.87890625,-22242620.0,-18272240.0,24.989797592163086 +1636.0,303.5651550292969,27.048294067382812,1014.7039794921875,15607.9541015625,-22241924.0,-18266256.0,24.99090576171875 +1637.0,303.30218505859375,-3.03144907951355,1014.6834716796875,15608.26953125,-22232532.0,-18260308.0,24.991073608398438 +1638.0,303.6470642089844,-17.306598663330078,1014.2649536132812,15614.7099609375,-22238424.0,-18261684.0,24.994510650634766 +1639.0,303.6584777832031,2.865760087966919,1014.4987182617188,15611.111328125,-22237288.0,-18260398.0,24.992589950561523 +1640.0,303.3191223144531,-21.42686653137207,1014.443115234375,15611.9677734375,-22236044.0,-18263598.0,24.9930477142334 +1641.0,303.1208190917969,0.09184106439352036,1014.5979614257812,15609.5849609375,-22236984.0,-18267136.0,24.991775512695312 +1642.0,303.056884765625,0.7896289825439453,1014.1781005859375,15616.046875,-22234724.0,-18265714.0,24.995223999023438 +1643.0,302.96234130859375,-10.5613431930542,1014.12890625,15616.8046875,-22238916.0,-18271144.0,24.995628356933594 +1644.0,303.0252685546875,-10.07386302947998,1014.5528564453125,15610.2783203125,-22237388.0,-18268790.0,24.992145538330078 +1645.0,303.41009521484375,-19.45708465576172,1014.7560424804688,15607.1533203125,-22238552.0,-18264916.0,24.990478515625 +1646.0,303.22247314453125,22.830718994140625,1014.4879150390625,15611.2783203125,-22240892.0,-18269712.0,24.992679595947266 +1647.0,303.07171630859375,0.12447305768728256,1014.6707153320312,15608.4658203125,-22238984.0,-18269778.0,24.991178512573242 +1648.0,303.0702819824219,8.535374641418457,1014.4107055664062,15612.4658203125,-22236780.0,-18267594.0,24.99331283569336 +1649.0,303.31964111328125,5.705783367156982,1014.4461059570312,15611.9208984375,-22234126.0,-18261674.0,24.993022918701172 +1650.0,303.3765869140625,-13.490632057189941,1014.6537475585938,15608.7265625,-22233840.0,-18260642.0,24.991317749023438 +1651.0,303.3316345214844,-11.773372650146484,1014.453125,15611.8134765625,-22232300.0,-18259690.0,24.992965698242188 +1652.0,303.2612609863281,-14.361380577087402,1014.4461059570312,15611.9208984375,-22230892.0,-18259204.0,24.993022918701172 +1653.0,303.26715087890625,-0.1116383895277977,1014.8609008789062,15605.5400390625,-22235600.0,-18263836.0,24.98961639404297 +1654.0,302.6974182128906,31.69537925720215,1014.6737670898438,15608.4189453125,-22232848.0,-18268544.0,24.991153717041016 +1655.0,302.9581604003906,5.952597141265869,1014.9837036132812,15603.65234375,-22244834.0,-18277116.0,24.988609313964844 +1656.0,303.0308532714844,6.303316116333008,1014.6375122070312,15608.9765625,-22238682.0,-18270012.0,24.991451263427734 +1657.0,302.92388916015625,-12.43914794921875,1014.6502685546875,15608.7802734375,-22243552.0,-18276284.0,24.99134635925293 +1658.0,303.0830078125,8.532966613769531,1014.8726806640625,15605.359375,-22243302.0,-18273948.0,24.989521026611328 +1659.0,303.217529296875,-18.905588150024414,1014.6697998046875,15608.4794921875,-22232872.0,-18261756.0,24.991186141967773 +1660.0,303.5324401855469,-0.7060791850090027,1014.322509765625,15613.8232421875,-22233088.0,-18257848.0,24.994037628173828 +1661.0,303.0740966796875,10.515767097473145,1014.185791015625,15615.9287109375,-22226350.0,-18257114.0,24.995161056518555 +1662.0,303.403076171875,-8.920893669128418,1014.5982666015625,15609.580078125,-22237520.0,-18263974.0,24.99177360534668 +1663.0,303.0460510253906,9.719329833984375,1014.4932250976562,15611.1962890625,-22230252.0,-18261384.0,24.99263572692871 +1664.0,302.88299560546875,2.9675114154815674,1014.2536010742188,15614.884765625,-22230180.0,-18263446.0,24.994604110717773 +1665.0,303.0478210449219,-15.88233470916748,1013.854736328125,15621.02734375,-22236650.0,-18267758.0,24.997880935668945 +1666.0,303.04736328125,6.903453826904297,1014.3445434570312,15613.484375,-22233532.0,-18264646.0,24.99385643005371 +1667.0,303.1544494628906,-5.357908248901367,1014.4337768554688,15612.111328125,-22239688.0,-18269400.0,24.99312400817871 +1668.0,303.20233154296875,27.75309181213379,1014.3169555664062,15613.9091796875,-22234604.0,-18263688.0,24.994083404541016 +1669.0,303.41705322265625,22.384435653686523,1014.4967041015625,15611.142578125,-22241808.0,-18268080.0,24.99260711669922 +1670.0,303.1031188964844,4.810638904571533,1014.556884765625,15610.216796875,-22240456.0,-18270840.0,24.99211311340332 +1671.0,302.85980224609375,-1.383104920387268,1014.7246704101562,15607.6357421875,-22231064.0,-18264634.0,24.99073600769043 +1672.0,302.9958190917969,30.33790397644043,1014.7517700195312,15607.21875,-22231588.0,-18263376.0,24.99051284790039 +1673.0,303.1149597167969,-6.754247188568115,1014.7102661132812,15607.857421875,-22236350.0,-18266578.0,24.990854263305664 +1674.0,302.8239440917969,-0.029436111450195312,1014.7673950195312,15606.978515625,-22239900.0,-18273940.0,24.990385055541992 +1675.0,302.8557434082031,-36.03782272338867,1014.4110717773438,15612.4609375,-22241308.0,-18274932.0,24.993310928344727 +1676.0,302.7413024902344,-3.427168130874634,1014.7485961914062,15607.267578125,-22238270.0,-18273392.0,24.99053955078125 +1677.0,302.9732666015625,-8.15811538696289,1014.7587280273438,15607.111328125,-22241724.0,-18273808.0,24.990455627441406 +1678.0,303.2426452636719,5.591612339019775,1014.3966064453125,15612.68359375,-22235592.0,-18264148.0,24.99342918395996 +1679.0,303.0447692871094,1.85135018825531,1014.8858642578125,15605.15625,-22236426.0,-18267574.0,24.989412307739258 +1680.0,302.951904296875,13.8727388381958,1014.8554077148438,15605.625,-22238116.0,-18270480.0,24.989662170410156 +1681.0,303.36639404296875,7.042397975921631,1014.5454711914062,15610.392578125,-22234886.0,-18261822.0,24.992206573486328 +1682.0,303.30712890625,14.563175201416016,1014.369873046875,15613.0947265625,-22231480.0,-18259192.0,24.993648529052734 +1683.0,303.0157470703125,-26.19817352294922,1014.049560546875,15618.0263671875,-22235426.0,-18266954.0,24.996280670166016 +1684.0,303.5931396484375,-21.54107666015625,1014.1029052734375,15617.205078125,-22231968.0,-18255934.0,24.99584197998047 +1685.0,303.8001403808594,-14.853543281555176,1014.1834106445312,15615.96484375,-22225576.0,-18246830.0,24.995180130004883 +1686.0,303.6044616699219,30.83833885192871,1014.1838989257812,15615.9580078125,-22228688.0,-18252504.0,24.995176315307617 +1687.0,303.14080810546875,-17.873714447021484,1014.0808715820312,15617.5439453125,-22231440.0,-18261330.0,24.996023178100586 +1688.0,303.14935302734375,-26.404783248901367,1014.3624267578125,15613.208984375,-22238576.0,-18268354.0,24.993709564208984 +1689.0,303.34771728515625,-21.624155044555664,1014.172119140625,15616.138671875,-22235280.0,-18262460.0,24.99527359008789 +1690.0,303.25128173828125,-16.031118392944336,1014.4746704101562,15611.4814453125,-22234190.0,-18262632.0,24.992788314819336 +1691.0,302.9524230957031,-23.10028839111328,1014.43408203125,15612.1064453125,-22235338.0,-18267694.0,24.993122100830078 +1692.0,303.10736083984375,-9.791218757629395,1014.6586303710938,15608.6513671875,-22240894.0,-18271222.0,24.99127769470215 +1693.0,303.14898681640625,15.069419860839844,1014.5006713867188,15611.08203125,-22240080.0,-18269862.0,24.99257469177246 +1694.0,303.38153076171875,1.4416719675064087,1014.510498046875,15610.9306640625,-22239568.0,-18266304.0,24.992494583129883 +1695.0,302.8385925292969,12.494551658630371,1014.8442993164062,15605.7958984375,-22237012.0,-18270860.0,24.98975372314453 +1696.0,302.75299072265625,28.090003967285156,1014.7702026367188,15606.935546875,-22236058.0,-18271026.0,24.9903621673584 +1697.0,303.3682861328125,17.11137580871582,1014.4388427734375,15612.033203125,-22236084.0,-18262994.0,24.99308204650879 +1698.0,303.0152587890625,-5.8688483238220215,1014.6256103515625,15609.1591796875,-22236888.0,-18268422.0,24.991548538208008 +1699.0,303.27960205078125,7.727038860321045,1014.7362670898438,15607.45703125,-22238848.0,-18266920.0,24.99064064025879 +1700.0,303.2017517089844,6.598346710205078,1014.6226196289062,15609.205078125,-22235258.0,-18264350.0,24.991573333740234 +1701.0,303.49749755859375,18.841157913208008,1014.6043090820312,15609.4873046875,-22236472.0,-18261690.0,24.991724014282227 +1702.0,303.3656311035156,-3.0396728515625,1014.26220703125,15614.751953125,-22235522.0,-18262468.0,24.99453353881836 +1703.0,303.1413879394531,6.706865310668945,1014.2487182617188,15614.9599609375,-22232348.0,-18262230.0,24.994644165039062 +1704.0,303.2143249511719,-8.862969398498535,1014.28955078125,15614.3310546875,-22231940.0,-18260868.0,24.994308471679688 +1705.0,303.21343994140625,-26.08881378173828,1014.4345092773438,15612.099609375,-22234894.0,-18263832.0,24.993118286132812 +1706.0,303.2580871582031,-35.12398147583008,1014.3921508789062,15612.751953125,-22236832.0,-18265186.0,24.993465423583984 +1707.0,303.12677001953125,-3.5436975955963135,1014.65478515625,15608.7109375,-22239436.0,-18269510.0,24.991310119628906 +1708.0,303.6669921875,10.258816719055176,1014.6969604492188,15608.0615234375,-22238314.0,-18261312.0,24.990962982177734 +1709.0,303.4012451171875,-3.863323211669922,1014.61474609375,15609.326171875,-22239444.0,-18265924.0,24.99163818359375 +1710.0,302.9101867675781,-17.362213134765625,1014.7289428710938,15607.5693359375,-22234840.0,-18267750.0,24.990699768066406 +1711.0,303.222412109375,10.119122505187988,1014.7090454101562,15607.8759765625,-22231768.0,-18260588.0,24.990863800048828 +1712.0,303.0647888183594,-5.02703857421875,1014.6314086914062,15609.0703125,-22238744.0,-18269628.0,24.991500854492188 +1713.0,303.1313171386719,3.1902363300323486,1014.261474609375,15614.763671875,-22238942.0,-18268956.0,24.994539260864258 +1714.0,302.76226806640625,-21.95806312561035,1014.295654296875,15614.2373046875,-22236468.0,-18271316.0,24.994258880615234 +1715.0,303.26568603515625,-4.4018778800964355,1014.533203125,15610.5810546875,-22244692.0,-18272946.0,24.992307662963867 +1716.0,303.0216979980469,19.313913345336914,1014.757080078125,15607.13671875,-22244184.0,-18275634.0,24.990468978881836 +1717.0,302.99578857421875,-12.663021087646484,1014.6804809570312,15608.3154296875,-22242224.0,-18274012.0,24.991098403930664 +1718.0,303.3551330566406,13.318782806396484,1014.759033203125,15607.107421875,-22239400.0,-18266482.0,24.990453720092773 +1719.0,303.0444030761719,-14.47087574005127,1014.9019165039062,15604.91015625,-22240892.0,-18272044.0,24.989280700683594 +1720.0,302.8387451171875,8.389134407043457,1014.840087890625,15605.8603515625,-22240528.0,-18274374.0,24.989788055419922 +1721.0,303.16650390625,-1.03066885471344,1014.9766845703125,15603.759765625,-22242852.0,-18272404.0,24.988666534423828 +1722.0,303.2137145996094,0.37532079219818115,1015.0220947265625,15603.0625,-22245772.0,-18274708.0,24.98829460144043 +1723.0,303.18292236328125,-8.273871421813965,1015.0478515625,15602.666015625,-22241102.0,-18270440.0,24.988082885742188 +1724.0,303.3846740722656,16.3964900970459,1014.6721801757812,15608.443359375,-22238536.0,-18265232.0,24.991167068481445 +1725.0,303.3723449707031,-33.61552810668945,1014.0035400390625,15618.7353515625,-22234840.0,-18261698.0,24.996658325195312 +1726.0,303.1807861328125,1.3984050750732422,1014.4391479492188,15612.0283203125,-22237988.0,-18267354.0,24.993080139160156 +1727.0,303.3819580078125,36.6959342956543,1014.6098022460938,15609.40234375,-22236114.0,-18262846.0,24.99167823791504 +1728.0,302.99365234375,-6.551527500152588,1014.6897583007812,15608.1728515625,-22236164.0,-18267980.0,24.99102210998535 +1729.0,303.0528564453125,-5.258516311645508,1014.6669311523438,15608.5234375,-22230876.0,-18261918.0,24.991209030151367 +1730.0,303.19488525390625,51.06534957885742,1014.4962158203125,15611.150390625,-22233316.0,-18262496.0,24.992610931396484 +1731.0,303.36175537109375,-8.249998092651367,1013.9775390625,15619.1357421875,-22231996.0,-18258992.0,24.996871948242188 +1732.0,303.24346923828125,-17.768152236938477,1014.3064575195312,15614.0703125,-22236916.0,-18265460.0,24.994169235229492 +1733.0,303.3939514160156,-1.508680820465088,1014.0903930664062,15617.3974609375,-22237468.0,-18264042.0,24.99594497680664 +1734.0,302.8632507324219,-21.317628860473633,1014.314697265625,15613.9443359375,-22238848.0,-18272372.0,24.994102478027344 +1735.0,302.927490234375,-13.885688781738281,1014.3826293945312,15612.8984375,-22236740.0,-18269424.0,24.99354362487793 +1736.0,303.2918395996094,14.46426773071289,1014.307861328125,15614.048828125,-22239140.0,-18267052.0,24.994157791137695 +1737.0,302.7196350097656,-6.46252965927124,1014.3301391601562,15613.7060546875,-22233590.0,-18268996.0,24.993974685668945 +1738.0,303.373291015625,2.7461154460906982,1014.3427734375,15613.51171875,-22237272.0,-18264116.0,24.993871688842773 +1739.0,302.81011962890625,3.7209644317626953,1014.570556640625,15610.005859375,-22237344.0,-18271564.0,24.992000579833984 +1740.0,302.9372863769531,10.922252655029297,1014.7222900390625,15607.671875,-22243056.0,-18275612.0,24.990755081176758 +1741.0,303.2142639160156,-26.446054458618164,1014.585693359375,15609.7734375,-22246452.0,-18275380.0,24.99187660217285 +1742.0,302.698486328125,-0.28341975808143616,1014.3074340820312,15614.0556640625,-22241064.0,-18276748.0,24.99416160583496 +1743.0,302.8716125488281,-5.09283971786499,1014.54736328125,15610.36328125,-22240682.0,-18274098.0,24.992191314697266 +1744.0,302.7877502441406,1.7163619995117188,1014.8707885742188,15605.388671875,-22236280.0,-18270794.0,24.98953628540039 +1745.0,302.82568359375,19.428138732910156,1014.5687255859375,15610.0341796875,-22237022.0,-18271038.0,24.992015838623047 +1746.0,302.8282775878906,9.280034065246582,1014.5230102539062,15610.73828125,-22240652.0,-18274636.0,24.99239158630371 +1747.0,302.7994079589844,-30.456886291503906,1014.3206176757812,15613.8525390625,-22236598.0,-18270960.0,24.99405288696289 +1748.0,303.00604248046875,43.20790481567383,1014.7756958007812,15606.8505859375,-22234414.0,-18266068.0,24.99031639099121 +1749.0,303.1539611816406,-35.03044128417969,1014.55810546875,15610.1982421875,-22237888.0,-18267606.0,24.992103576660156 +1750.0,303.20098876953125,-4.661746978759766,1014.5255126953125,15610.69921875,-22239524.0,-18268626.0,24.99237060546875 +1751.0,302.8712463378906,-5.804230213165283,1014.5963134765625,15609.6103515625,-22240436.0,-18273856.0,24.991788864135742 +1752.0,302.84637451171875,21.285436630249023,1014.5247802734375,15610.7109375,-22241492.0,-18275238.0,24.99237632751465 +1753.0,303.0610656738281,23.148025512695312,1014.7199096679688,15607.708984375,-22233918.0,-18264852.0,24.990774154663086 +1754.0,303.2322998046875,16.238739013671875,1014.2825927734375,15614.4384765625,-22237042.0,-18265734.0,24.994365692138672 +1755.0,303.5056457519531,18.443971633911133,1014.2171630859375,15615.4453125,-22237348.0,-18262460.0,24.994903564453125 +1756.0,303.10003662109375,-6.799411296844482,1014.1734619140625,15616.1181640625,-22234108.0,-18264532.0,24.995262145996094 +1757.0,302.6044921875,12.470069885253906,1014.3675537109375,15613.1298828125,-22240076.0,-18276990.0,24.993667602539062 +1758.0,302.4541015625,41.498043060302734,1014.6900024414062,15608.1689453125,-22236800.0,-18275684.0,24.99102020263672 +1759.0,302.98089599609375,-41.709293365478516,1014.3423461914062,15613.5185546875,-22242780.0,-18274764.0,24.99387550354004 +1760.0,302.86669921875,12.0758695602417,1015.0474243164062,15602.6728515625,-22243580.0,-18277060.0,24.988086700439453 +1761.0,303.0906677246094,-3.698678970336914,1014.7554321289062,15607.162109375,-22242414.0,-18272960.0,24.990482330322266 +1762.0,302.81182861328125,-35.98771286010742,1014.2078247070312,15615.5888671875,-22238804.0,-18273002.0,24.994979858398438 +1763.0,302.98724365234375,-0.7280464172363281,1014.4288940429688,15612.1865234375,-22241864.0,-18273764.0,24.9931640625 +1764.0,303.0597229003906,-1.125351905822754,1014.7889404296875,15606.6474609375,-22241402.0,-18272354.0,24.99020767211914 +1765.0,303.4887390136719,0.8775126338005066,1014.2570190429688,15614.83203125,-22237140.0,-18262472.0,24.99457550048828 +1766.0,303.123291015625,1.4909677505493164,1014.2161865234375,15615.4609375,-22232912.0,-18263030.0,24.994911193847656 +1767.0,302.9286804199219,-1.6700083017349243,1014.3995971679688,15612.63671875,-22235624.0,-18268292.0,24.993404388427734 +1768.0,303.072265625,0.7478516697883606,1014.6040649414062,15609.4912109375,-22233936.0,-18264724.0,24.99172592163086 +1769.0,302.9667053222656,10.719704627990723,1014.759765625,15607.095703125,-22236828.0,-18268998.0,24.990447998046875 +1770.0,302.93157958984375,17.86232566833496,1014.656982421875,15608.6767578125,-22236862.0,-18269492.0,24.991291046142578 +1771.0,303.12249755859375,2.6828954219818115,1014.7007446289062,15608.00390625,-22238996.0,-18269126.0,24.99093246459961 +1772.0,302.9190368652344,19.905309677124023,1014.5767822265625,15609.91015625,-22237588.0,-18270382.0,24.9919490814209 +1773.0,302.9461669921875,2.267627716064453,1014.6648559570312,15608.5556640625,-22232440.0,-18264878.0,24.991226196289062 +1774.0,302.96893310546875,19.211027145385742,1014.6239624023438,15609.1845703125,-22234772.0,-18266912.0,24.991561889648438 +1775.0,303.22265625,-0.8097438812255859,1014.5113525390625,15610.9169921875,-22239676.0,-18268494.0,24.99248695373535 +1776.0,303.3527526855469,-9.405673027038574,1014.5741577148438,15609.951171875,-22242292.0,-18269406.0,24.991971969604492 +1777.0,303.4167175292969,-1.141649842262268,1015.0108642578125,15603.234375,-22239480.0,-18265756.0,24.988386154174805 +1778.0,302.8912048339844,0.7034596800804138,1015.01806640625,15603.1240234375,-22235904.0,-18269062.0,24.988327026367188 +1779.0,303.0697021484375,26.9356632232666,1014.7160034179688,15607.7685546875,-22238892.0,-18269712.0,24.990806579589844 +1780.0,302.882568359375,6.121142864227295,1014.8298950195312,15606.017578125,-22238600.0,-18271872.0,24.989871978759766 +1781.0,302.78619384765625,29.25516700744629,1014.767822265625,15606.9716796875,-22233992.0,-18268526.0,24.990381240844727 +1782.0,303.4090881347656,15.401481628417969,1014.5598754882812,15610.1708984375,-22234720.0,-18261096.0,24.992088317871094 +1783.0,303.6048583984375,7.020473003387451,1014.5283203125,15610.65625,-22235498.0,-18259310.0,24.992347717285156 +1784.0,303.51275634765625,10.479737281799316,1014.2921142578125,15614.2919921875,-22236252.0,-18261270.0,24.994287490844727 +1785.0,303.19683837890625,2.243345022201538,1014.3482666015625,15613.4267578125,-22237448.0,-18266604.0,24.993825912475586 +1786.0,302.8634948730469,-8.979833602905273,1014.076171875,15617.6162109375,-22238424.0,-18271946.0,24.996061325073242 +1787.0,302.792236328125,11.3971586227417,1014.370849609375,15613.0791015625,-22243176.0,-18277632.0,24.993640899658203 +1788.0,302.59210205078125,31.764429092407227,1014.3817138671875,15612.912109375,-22240028.0,-18277104.0,24.99355125427246 +1789.0,303.085205078125,-22.064207077026367,1014.4288940429688,15612.1865234375,-22242574.0,-18273192.0,24.9931640625 +1790.0,302.9388732910156,5.5053391456604,1014.4883422851562,15611.271484375,-22242920.0,-18275454.0,24.99267578125 +1791.0,302.791259765625,11.507866859436035,1014.7703857421875,15606.9326171875,-22242410.0,-18276878.0,24.990360260009766 +1792.0,302.7001037597656,0.5380904078483582,1014.4064331054688,15612.5322265625,-22240944.0,-18276604.0,24.993349075317383 +1793.0,302.8676452636719,-0.8211275935173035,1014.66650390625,15608.5302734375,-22238588.0,-18272054.0,24.991212844848633 +1794.0,303.3629150390625,21.289756774902344,1014.4011840820312,15612.6123046875,-22239124.0,-18266104.0,24.993391036987305 +1795.0,302.98779296875,2.709190607070923,1014.0897216796875,15617.408203125,-22235180.0,-18267074.0,24.99595069885254 +1796.0,302.8927917480469,0.5322169661521912,1014.1932373046875,15615.8134765625,-22239900.0,-18273038.0,24.995100021362305 +1797.0,302.9644775390625,17.97962188720703,1014.522216796875,15610.75,-22240936.0,-18273136.0,24.99239730834961 +1798.0,303.22650146484375,-21.18011474609375,1014.5538940429688,15610.2626953125,-22242326.0,-18271094.0,24.992137908935547 +1799.0,303.3022766113281,7.775224685668945,1014.3601684570312,15613.244140625,-22231832.0,-18259608.0,24.993728637695312 +1800.0,303.1894836425781,-7.928334712982178,1014.6953125,15608.0869140625,-22235794.0,-18265046.0,24.990976333618164 +1801.0,303.2427978515625,-8.80411434173584,1015.08544921875,15602.087890625,-22240890.0,-18269444.0,24.987773895263672 +1802.0,303.09765625,29.59556007385254,1014.9384155273438,15604.3486328125,-22234870.0,-18265324.0,24.988981246948242 +1803.0,303.2054138183594,2.095632314682007,1014.4913330078125,15611.2255859375,-22236022.0,-18265066.0,24.992650985717773 +1804.0,303.0363464355469,-24.60035514831543,1014.5073852539062,15610.978515625,-22238022.0,-18269280.0,24.99251937866211 +1805.0,302.8863830566406,12.935142517089844,1014.9962158203125,15603.4599609375,-22239600.0,-18272822.0,24.988506317138672 +1806.0,303.5393981933594,-11.50238037109375,1014.7008666992188,15608.001953125,-22244928.0,-18269596.0,24.990930557250977 +1807.0,303.2180480957031,5.458170413970947,1014.9144897460938,15604.716796875,-22241940.0,-18270818.0,24.989177703857422 +1808.0,302.9957275390625,23.11888313293457,1014.8533935546875,15605.65625,-22233052.0,-18264842.0,24.98967933654785 +1809.0,303.1371765136719,-31.7864990234375,1014.6251831054688,15609.166015625,-22234244.0,-18264180.0,24.991552352905273 +1810.0,302.9485778808594,8.141132354736328,1014.7418212890625,15607.3720703125,-22235680.0,-18268088.0,24.9905948638916 +1811.0,303.3128967285156,5.27308464050293,1014.7748413085938,15606.8642578125,-22242204.0,-18269840.0,24.990324020385742 +1812.0,303.3357238769531,-4.036314487457275,1014.8238525390625,15606.1103515625,-22244024.0,-18271362.0,24.98992156982422 +1813.0,303.173583984375,16.477842330932617,1015.0250854492188,15603.0166015625,-22241820.0,-18271280.0,24.988269805908203 +1814.0,302.99554443359375,11.204643249511719,1014.610595703125,15609.390625,-22241768.0,-18273560.0,24.99167251586914 +1815.0,303.3424072265625,12.925159454345703,1014.3518676757812,15613.3720703125,-22244610.0,-18271860.0,24.993797302246094 +1816.0,303.01629638671875,17.836654663085938,1014.7903442382812,15606.625,-22237180.0,-18268700.0,24.990196228027344 +1817.0,303.4561767578125,11.849261283874512,1014.7353515625,15607.4716796875,-22240710.0,-18266470.0,24.99064826965332 +1818.0,302.968505859375,28.989290237426758,1014.762451171875,15607.0546875,-22243668.0,-18275814.0,24.99042510986328 +1819.0,303.18994140625,-32.924232482910156,1014.7991943359375,15606.4892578125,-22243696.0,-18272942.0,24.990123748779297 +1820.0,302.99908447265625,12.198208808898926,1014.6448974609375,15608.8623046875,-22234048.0,-18265794.0,24.991390228271484 +1821.0,302.86212158203125,36.36357498168945,1014.5577392578125,15610.203125,-22232722.0,-18266262.0,24.99210548400879 +1822.0,303.4481201171875,5.542581081390381,1014.5879516601562,15609.73828125,-22232916.0,-18258780.0,24.991857528686523 +1823.0,303.55889892578125,-9.527571678161621,1014.3956909179688,15612.697265625,-22236172.0,-18260586.0,24.993436813354492 +1824.0,303.131591796875,-9.1276216506958,1014.4500122070312,15611.861328125,-22231496.0,-18261506.0,24.992990493774414 +1825.0,303.4515380859375,6.497788906097412,1014.1620483398438,15616.2939453125,-22236876.0,-18262696.0,24.9953556060791 +1826.0,302.98455810546875,2.518925905227661,1014.256103515625,15614.845703125,-22229812.0,-18261748.0,24.994583129882812 +1827.0,302.99822998046875,1.8217703104019165,1014.2152709960938,15615.474609375,-22229390.0,-18261148.0,24.994918823242188 +1828.0,303.2259216308594,23.5507869720459,1014.352294921875,15613.365234375,-22237512.0,-18266288.0,24.993793487548828 +1829.0,302.8928527832031,-4.563239574432373,1014.204833984375,15615.6357421875,-22230164.0,-18263300.0,24.995004653930664 +1830.0,303.2943420410156,7.654580593109131,1014.2283325195312,15615.2734375,-22230114.0,-18257992.0,24.99481201171875 +1831.0,303.4071044921875,-9.786232948303223,1014.4451904296875,15611.935546875,-22240164.0,-18266566.0,24.993030548095703 +1832.0,302.8829040527344,15.691205024719238,1014.6533203125,15608.7333984375,-22238392.0,-18271658.0,24.991321563720703 +1833.0,302.9122314453125,-20.16105842590332,1014.4342041015625,15612.1044921875,-22237368.0,-18270252.0,24.993120193481445 +1834.0,303.36273193359375,35.56828689575195,1014.9030151367188,15604.892578125,-22241340.0,-18268324.0,24.98927116394043 +1835.0,303.3162536621094,-3.098529815673828,1014.643798828125,15608.8798828125,-22243504.0,-18271096.0,24.99139976501465 +1836.0,302.8277587890625,-3.415872573852539,1014.580078125,15609.859375,-22237616.0,-18271606.0,24.99192237854004 +1837.0,303.2969665527344,32.155433654785156,1014.50927734375,15610.94921875,-22233820.0,-18261664.0,24.992504119873047 +1838.0,303.7393798828125,1.0973243713378906,1014.453125,15611.8134765625,-22242286.0,-18264336.0,24.992965698242188 +1839.0,303.1031494140625,-15.98108196258545,1014.3423461914062,15613.5185546875,-22234024.0,-18264408.0,24.99387550354004 +1840.0,303.4488830566406,-30.48406982421875,1014.3845825195312,15612.8681640625,-22230952.0,-18256808.0,24.993528366088867 +1841.0,303.34967041015625,-1.902587890625,1014.3095092773438,15614.0234375,-22234204.0,-18261358.0,24.994144439697266 +1842.0,302.9007263183594,-6.473100185394287,1014.167236328125,15616.2138671875,-22232906.0,-18265940.0,24.99531364440918 +1843.0,303.0946044921875,6.619001865386963,1014.1743774414062,15616.1044921875,-22230214.0,-18260708.0,24.995254516601562 +1844.0,302.9372253417969,8.657559394836426,1014.561767578125,15610.1416015625,-22238904.0,-18271460.0,24.99207305908203 +1845.0,303.133056640625,-8.595772743225098,1014.3838500976562,15612.8798828125,-22241352.0,-18271344.0,24.993534088134766 +1846.0,303.4009704589844,5.526830196380615,1014.6908569335938,15608.1552734375,-22241972.0,-18268454.0,24.991012573242188 +1847.0,303.15802001953125,-4.186178684234619,1014.869873046875,15605.40234375,-22242356.0,-18272020.0,24.989543914794922 +1848.0,302.9440002441406,1.4101567268371582,1014.9232788085938,15604.5810546875,-22242484.0,-18274952.0,24.989105224609375 +1849.0,302.8810119628906,-6.406813144683838,1015.13525390625,15601.3232421875,-22246552.0,-18279844.0,24.98736572265625 +1850.0,302.9081726074219,10.604848861694336,1015.1806030273438,15600.6259765625,-22251708.0,-18284644.0,24.98699378967285 +1851.0,302.72320556640625,42.323543548583984,1014.7369384765625,15607.447265625,-22247134.0,-18282492.0,24.99063491821289 +1852.0,302.5859680175781,-3.4509494304656982,1014.5717163085938,15609.98828125,-22241246.0,-18278402.0,24.99199104309082 +1853.0,302.7540588378906,8.419374465942383,1014.552001953125,15610.2919921875,-22240816.0,-18275770.0,24.99215316772461 +1854.0,303.1183166503906,2.1704261302948,1014.6069946289062,15609.4453125,-22238100.0,-18268284.0,24.991701126098633 +1855.0,302.9019775390625,44.01958084106445,1014.843994140625,15605.80078125,-22229700.0,-18262718.0,24.989755630493164 +1856.0,303.24432373046875,-14.7881498336792,1014.5726928710938,15609.9736328125,-22230226.0,-18258760.0,24.99198341369629 +1857.0,303.8132019042969,1.9755045175552368,1014.4356689453125,15612.08203125,-22234952.0,-18256036.0,24.99310874938965 +1858.0,303.4547119140625,-15.215540885925293,1014.5979614257812,15609.5849609375,-22239744.0,-18265522.0,24.991775512695312 +1859.0,302.951904296875,-5.895122051239014,1014.295654296875,15614.2373046875,-22231548.0,-18263912.0,24.994258880615234 +1860.0,303.0204772949219,-25.270957946777344,1014.643798828125,15608.8798828125,-22236688.0,-18268154.0,24.99139976501465 +1861.0,303.766357421875,9.537291526794434,1015.0245971679688,15603.0234375,-22241772.0,-18263468.0,24.98827362060547 +1862.0,303.0353698730469,21.9377498626709,1014.8193969726562,15606.1787109375,-22235394.0,-18266664.0,24.989957809448242 +1863.0,302.96099853515625,-10.701754570007324,1014.1593017578125,15616.3359375,-22228080.0,-18260324.0,24.995378494262695 +1864.0,303.2398376464844,6.888643264770508,1013.977783203125,15619.1318359375,-22229964.0,-18258556.0,24.996870040893555 +1865.0,303.1969909667969,26.917030334472656,1014.1743774414062,15616.1044921875,-22227646.0,-18256800.0,24.995254516601562 +1866.0,303.1903381347656,15.644068717956543,1014.333251953125,15613.658203125,-22230124.0,-18259366.0,24.99394989013672 +1867.0,303.56634521484375,0.13866455852985382,1014.0715942382812,15617.6875,-22231292.0,-18255608.0,24.9960994720459 +1868.0,303.0032043457031,-1.5725173950195312,1014.3460083007812,15613.4619140625,-22229774.0,-18261466.0,24.993844985961914 +1869.0,303.1929016113281,-14.953585624694824,1014.586181640625,15609.765625,-22239540.0,-18268748.0,24.991872787475586 +1870.0,303.0025329589844,-19.474241256713867,1014.9755249023438,15603.7783203125,-22242976.0,-18274676.0,24.988676071166992 +1871.0,302.76397705078125,3.258870840072632,1014.63330078125,15609.041015625,-22233826.0,-18268652.0,24.991485595703125 +1872.0,303.5596923828125,-8.182686805725098,1014.8152465820312,15606.2421875,-22242716.0,-18267120.0,24.989992141723633 +1873.0,303.1083984375,5.118971347808838,1014.7369384765625,15607.447265625,-22235542.0,-18265856.0,24.99063491821289 +1874.0,302.8489074707031,1.679273009300232,1014.9097900390625,15604.7890625,-22236572.0,-18270284.0,24.989215850830078 +1875.0,303.0303039550781,-16.343692779541016,1014.8123779296875,15606.2861328125,-22241128.0,-18272464.0,24.990015029907227 +1876.0,302.70330810546875,19.065183639526367,1014.3497314453125,15613.404296875,-22234708.0,-18270328.0,24.99381446838379 +1877.0,302.8132019042969,-3.2171363830566406,1014.2763671875,15614.5341796875,-22239244.0,-18273424.0,24.994417190551758 +1878.0,303.108642578125,-5.430280685424805,1014.8563232421875,15605.6103515625,-22245850.0,-18276160.0,24.989654541015625 +1879.0,303.12432861328125,-22.952865600585938,1014.9464721679688,15604.224609375,-22244990.0,-18275096.0,24.988914489746094 +1880.0,303.19451904296875,-12.045478820800781,1014.6764526367188,15608.376953125,-22235516.0,-18264702.0,24.991130828857422 +1881.0,303.082275390625,19.666444778442383,1014.4783935546875,15611.4248046875,-22234550.0,-18265206.0,24.99275779724121 +1882.0,303.0444641113281,1.1421765089035034,1014.6122436523438,15609.365234375,-22232908.0,-18264060.0,24.99165916442871 +1883.0,303.23480224609375,15.843475341796875,1014.3275146484375,15613.7470703125,-22236454.0,-18265112.0,24.99399757385254 +1884.0,303.09112548828125,5.919933319091797,1014.8117065429688,15606.296875,-22236872.0,-18267412.0,24.990020751953125 +1885.0,303.5523376464844,-10.7498779296875,1014.7288208007812,15607.5712890625,-22240652.0,-18265152.0,24.99070167541504 +1886.0,303.6003723144531,-31.262319564819336,1014.677490234375,15608.361328125,-22241148.0,-18265020.0,24.99112319946289 +1887.0,303.16650390625,-12.596545219421387,1015.067626953125,15602.3623046875,-22233912.0,-18263466.0,24.9879207611084 +1888.0,302.97149658203125,-0.5957368016242981,1014.4672241210938,15611.5966796875,-22235228.0,-18267336.0,24.992849349975586 +1889.0,302.94183349609375,-9.448200225830078,1014.4669189453125,15611.6005859375,-22235388.0,-18267884.0,24.99285125732422 +1890.0,303.2212219238281,-13.488846778869629,1014.4595336914062,15611.71484375,-22243540.0,-18272376.0,24.99291229248047 +1891.0,303.1239318847656,-30.6762752532959,1014.8468017578125,15605.7568359375,-22245224.0,-18275334.0,24.98973274230957 +1892.0,302.68328857421875,-14.94927978515625,1015.0462036132812,15602.69140625,-22243538.0,-18279420.0,24.988096237182617 +1893.0,302.6957092285156,-0.30912908911705017,1015.2084350585938,15600.1982421875,-22247852.0,-18283570.0,24.986764907836914 +1894.0,302.39825439453125,-31.783050537109375,1014.8433227539062,15605.810546875,-22248836.0,-18288450.0,24.989761352539062 +1895.0,302.5944519042969,46.26234817504883,1015.1612548828125,15600.9228515625,-22246776.0,-18283820.0,24.987152099609375 +1896.0,302.740234375,28.341035842895508,1014.7550048828125,15607.1689453125,-22239448.0,-18274584.0,24.99048614501953 +1897.0,303.2323913574219,11.757888793945312,1014.5549926757812,15610.24609375,-22241856.0,-18270546.0,24.992128372192383 +1898.0,302.7225341796875,1.6219381093978882,1014.4908447265625,15611.232421875,-22240618.0,-18275986.0,24.99265480041504 +1899.0,302.88861083984375,3.1735076904296875,1014.2396240234375,15615.099609375,-22239944.0,-18273136.0,24.994718551635742 +1900.0,302.39971923828125,14.425206184387207,1014.4965209960938,15611.1455078125,-22234900.0,-18274496.0,24.99260902404785 +1901.0,302.9353332519531,3.416203737258911,1014.81005859375,15606.322265625,-22239772.0,-18272352.0,24.990034103393555 +1902.0,302.9629211425781,-11.064911842346191,1014.771484375,15606.9150390625,-22240464.0,-18272684.0,24.9903507232666 +1903.0,303.5365295410156,-5.642180919647217,1014.3095092773438,15614.0234375,-22239810.0,-18264516.0,24.994144439697266 +1904.0,303.2100830078125,10.406441688537598,1014.395263671875,15612.7041015625,-22235088.0,-18264070.0,24.993440628051758 +1905.0,303.21990966796875,8.781747817993164,1014.5098876953125,15610.939453125,-22238224.0,-18267078.0,24.99249839782715 +1906.0,303.0830383300781,-0.4314219653606415,1014.51513671875,15610.859375,-22235692.0,-18266338.0,24.992456436157227 +1907.0,303.0693664550781,-16.566659927368164,1014.441162109375,15611.9970703125,-22236536.0,-18267362.0,24.99306297302246 +1908.0,303.2185974121094,-2.743480682373047,1014.1221923828125,15616.908203125,-22239186.0,-18268058.0,24.995683670043945 +1909.0,303.01141357421875,-6.402988910675049,1014.58544921875,15609.77734375,-22235330.0,-18266914.0,24.991878509521484 +1910.0,303.2992858886719,6.652512073516846,1014.4197998046875,15612.326171875,-22239728.0,-18267542.0,24.99323844909668 +1911.0,302.7502746582031,49.960269927978516,1014.3613891601562,15613.2255859375,-22240634.0,-18275638.0,24.99371910095215 +1912.0,302.9575500488281,15.499791145324707,1014.3743286132812,15613.0263671875,-22239828.0,-18272118.0,24.99361228942871 +1913.0,302.8219299316406,-29.801259994506836,1014.5718994140625,15609.9853515625,-22244190.0,-18278256.0,24.991989135742188 +1914.0,303.0406188964844,-19.59096336364746,1014.3380737304688,15613.583984375,-22244712.0,-18275914.0,24.99390983581543 +1915.0,302.64471435546875,3.513519525527954,1014.9774169921875,15603.7490234375,-22243204.0,-18279590.0,24.98866081237793 +1916.0,302.88421630859375,-23.522424697875977,1014.9718017578125,15603.8349609375,-22241238.0,-18274488.0,24.988706588745117 +1917.0,302.85009765625,13.156054496765137,1014.8524169921875,15605.6708984375,-22246510.0,-18280208.0,24.989686965942383 +1918.0,303.1889343261719,-5.921592712402344,1014.1846313476562,15615.9462890625,-22244002.0,-18273260.0,24.99517059326172 +1919.0,303.0855407714844,22.87822723388672,1014.6920776367188,15608.13671875,-22239388.0,-18270002.0,24.991003036499023 +1920.0,303.3226013183594,3.9118239879608154,1014.5250854492188,15610.7060546875,-22241578.0,-18269086.0,24.992374420166016 +1921.0,303.1082763671875,3.485227584838867,1014.4346313476562,15612.09765625,-22235218.0,-18265534.0,24.99311637878418 +1922.0,303.083984375,-20.150266647338867,1014.7432861328125,15607.349609375,-22238944.0,-18269578.0,24.990583419799805 +1923.0,302.9841003417969,-1.9653974771499634,1014.662841796875,15608.5869140625,-22240586.0,-18272528.0,24.991243362426758 +1924.0,302.8221130371094,26.2811222076416,1014.6900024414062,15608.1689453125,-22233810.0,-18267874.0,24.99102020263672 +1925.0,303.19268798828125,10.48715877532959,1014.2127075195312,15615.513671875,-22236354.0,-18265564.0,24.99493980407715 +1926.0,303.1388244628906,13.952315330505371,1014.5420532226562,15610.4453125,-22235588.0,-18265504.0,24.99223518371582 +1927.0,302.9827880859375,-2.0891265869140625,1014.560302734375,15610.1640625,-22237020.0,-18268980.0,24.992084503173828 +1928.0,303.3149719238281,-7.001815319061279,1014.5477905273438,15610.3564453125,-22238704.0,-18266312.0,24.9921875 +1929.0,303.3851013183594,-1.9437742233276367,1014.2973022460938,15614.2119140625,-22237618.0,-18264308.0,24.994245529174805 +1930.0,303.1450500488281,-7.227963924407959,1014.3757934570312,15613.00390625,-22233700.0,-18263534.0,24.993600845336914 +1931.0,303.41815185546875,5.762609958648682,1014.6510009765625,15608.7685546875,-22239652.0,-18265910.0,24.99134063720703 +1932.0,303.569580078125,29.941909790039062,1014.5167236328125,15610.8349609375,-22238400.0,-18262674.0,24.992443084716797 +1933.0,303.33990478515625,-18.30313491821289,1014.3729858398438,15613.046875,-22236244.0,-18263526.0,24.993623733520508 +1934.0,303.53662109375,9.169084548950195,1014.4871826171875,15611.2890625,-22232274.0,-18256980.0,24.992685317993164 +1935.0,303.7055969238281,5.664011478424072,1014.4100952148438,15612.4755859375,-22234040.0,-18256532.0,24.993318557739258 +1936.0,303.2109375,23.630517959594727,1014.4271240234375,15612.2138671875,-22234512.0,-18263484.0,24.993179321289062 +1937.0,302.97052001953125,27.50531578063965,1014.36669921875,15613.1435546875,-22234566.0,-18266686.0,24.993675231933594 +1938.0,303.4264831542969,-3.7529966831207275,1014.8426513671875,15605.8212890625,-22241406.0,-18267554.0,24.98976707458496 +1939.0,303.2405090332031,12.203391075134277,1014.8619384765625,15605.5244140625,-22239866.0,-18268450.0,24.989608764648438 +1940.0,303.1272888183594,11.248703002929688,1014.7145385742188,15607.791015625,-22244510.0,-18274576.0,24.99081802368164 +1941.0,303.2656555175781,-23.709915161132812,1014.6992797851562,15608.0263671875,-22241100.0,-18269356.0,24.990943908691406 +1942.0,303.5126953125,24.95105743408203,1015.1759643554688,15600.697265625,-22243422.0,-18268440.0,24.987031936645508 +1943.0,303.4622802734375,-5.4192938804626465,1014.7415771484375,15607.375,-22240216.0,-18265896.0,24.990596771240234 +1944.0,303.0732727050781,-6.209890842437744,1014.6398315429688,15608.9404296875,-22235292.0,-18266066.0,24.991432189941406 +1945.0,303.05767822265625,31.002220153808594,1014.4924926757812,15611.20703125,-22235196.0,-18266176.0,24.99264144897461 +1946.0,303.02734375,-10.15432357788086,1014.2045288085938,15615.6396484375,-22237676.0,-18269052.0,24.995006561279297 +1947.0,303.364013671875,-6.0078349113464355,1014.4725952148438,15611.513671875,-22237556.0,-18264522.0,24.99280548095703 +1948.0,303.0336608886719,-9.803483009338379,1014.2032470703125,15615.66015625,-22229644.0,-18260936.0,24.995018005371094 +1949.0,303.6402587890625,-9.531723976135254,1014.3471069335938,15613.4453125,-22236052.0,-18259400.0,24.99383544921875 +1950.0,303.40087890625,-0.6089842915534973,1014.09130859375,15617.3837890625,-22229654.0,-18256138.0,24.99593734741211 +1951.0,302.9781188964844,0.878455638885498,1013.9134521484375,15620.123046875,-22232994.0,-18265014.0,24.997398376464844 +1952.0,303.443359375,-14.209736824035645,1014.0042114257812,15618.724609375,-22233860.0,-18259788.0,24.996652603149414 +1953.0,302.858154296875,-21.955114364624023,1014.4990844726562,15611.1064453125,-22237368.0,-18270960.0,24.99258804321289 +1954.0,303.1465759277344,-13.138928413391113,1014.6871948242188,15608.2119140625,-22238406.0,-18268220.0,24.991043090820312 +1955.0,303.177490234375,7.879862308502197,1014.7097778320312,15607.8642578125,-22228038.0,-18257448.0,24.99085807800293 +1956.0,303.2380676269531,-9.59241771697998,1014.5891723632812,15609.7197265625,-22234290.0,-18262906.0,24.99184799194336 +1957.0,303.1439208984375,13.610527992248535,1014.5176391601562,15610.8203125,-22238732.0,-18268580.0,24.992435455322266 +1958.0,303.0088806152344,11.208389282226562,1014.01904296875,15618.49609375,-22239296.0,-18270914.0,24.996530532836914 +1959.0,302.9155578613281,-10.155951499938965,1014.2254638671875,15615.3173828125,-22230228.0,-18263068.0,24.994834899902344 +1960.0,303.099609375,4.157069683074951,1014.40966796875,15612.482421875,-22233050.0,-18263480.0,24.993322372436523 +1961.0,302.9147644042969,-18.85530662536621,1014.4783935546875,15611.4248046875,-22230792.0,-18263642.0,24.99275779724121 +1962.0,303.166259765625,6.065544605255127,1014.6069946289062,15609.4453125,-22236890.0,-18266446.0,24.991701126098633 +1963.0,303.37091064453125,12.155776977539062,1014.5735473632812,15609.9599609375,-22238036.0,-18264912.0,24.991975784301758 +1964.0,303.48944091796875,18.324777603149414,1014.4131469726562,15612.4287109375,-22229428.0,-18254752.0,24.99329376220703 +1965.0,303.6198425292969,15.835392951965332,1014.39453125,15612.71484375,-22230456.0,-18254072.0,24.993446350097656 +1966.0,303.5831298828125,-4.479199409484863,1014.2977294921875,15614.205078125,-22234028.0,-18258124.0,24.99424171447754 +1967.0,303.72393798828125,21.033668518066406,1014.7718505859375,15606.91015625,-22239604.0,-18261856.0,24.99034881591797 +1968.0,303.0452575683594,-7.862351894378662,1014.44091796875,15612.0009765625,-22228184.0,-18259324.0,24.993064880371094 +1969.0,303.61297607421875,10.569549560546875,1014.4403076171875,15612.0107421875,-22224962.0,-18248668.0,24.993070602416992 +1970.0,303.9415588378906,33.88661575317383,1014.2283325195312,15615.2734375,-22230116.0,-18249520.0,24.99481201171875 +1971.0,303.6850280761719,14.079812049865723,1014.0204467773438,15618.474609375,-22225184.0,-18247946.0,24.996519088745117 +1972.0,303.540771484375,-13.243193626403809,1013.9000854492188,15620.3291015625,-22224708.0,-18249360.0,24.997509002685547 +1973.0,303.0090026855469,37.98164367675781,1014.5366821289062,15610.52734375,-22224796.0,-18256412.0,24.992279052734375 +1974.0,303.34466552734375,-19.188901901245117,1014.4197998046875,15612.326171875,-22237716.0,-18264936.0,24.99323844909668 +1975.0,303.0127258300781,9.438480377197266,1014.6035766601562,15609.498046875,-22236998.0,-18268566.0,24.991729736328125 +1976.0,303.3808898925781,38.58857345581055,1014.6435546875,15608.8828125,-22241308.0,-18268054.0,24.99140167236328 +1977.0,303.1012878417969,-24.04827880859375,1014.484130859375,15611.3359375,-22233592.0,-18264000.0,24.99271011352539 +1978.0,302.9432067871094,23.044679641723633,1014.6823120117188,15608.287109375,-22233384.0,-18265862.0,24.9910831451416 +1979.0,303.2547912597656,-7.456541061401367,1014.7013549804688,15607.994140625,-22233314.0,-18261712.0,24.99092674255371 +1980.0,303.1841125488281,26.2252140045166,1014.8491821289062,15605.720703125,-22231264.0,-18260586.0,24.989713668823242 +1981.0,303.0810546875,7.635669708251953,1014.6593017578125,15608.640625,-22232544.0,-18263216.0,24.99127197265625 +1982.0,303.2637023925781,10.36050033569336,1014.6614379882812,15608.6083984375,-22233900.0,-18262180.0,24.991254806518555 +1983.0,303.3433837890625,-13.330706596374512,1014.4923095703125,15611.2099609375,-22237902.0,-18265138.0,24.992643356323242 +1984.0,303.440673828125,-24.3584041595459,1014.2728271484375,15614.5888671875,-22237856.0,-18263818.0,24.99444580078125 +1985.0,303.4089660644531,11.458815574645996,1014.2739868164062,15614.5703125,-22231614.0,-18257992.0,24.994436264038086 +1986.0,303.5313415527344,-17.444440841674805,1014.1641235351562,15616.26171875,-22232808.0,-18257584.0,24.995338439941406 +1987.0,303.3505859375,40.890777587890625,1014.2335205078125,15615.193359375,-22233736.0,-18260878.0,24.994768142700195 +1988.0,303.4634704589844,16.232025146484375,1014.1012573242188,15617.23046875,-22232670.0,-18258334.0,24.9958553314209 +1989.0,303.23480224609375,-1.2765617370605469,1014.3231811523438,15613.8134765625,-22232952.0,-18261610.0,24.99403190612793 +1990.0,303.4171447753906,10.95044994354248,1014.6897583007812,15608.1728515625,-22235188.0,-18261460.0,24.99102210998535 +1991.0,303.33673095703125,35.54364776611328,1014.6021728515625,15609.51953125,-22237156.0,-18264480.0,24.991741180419922 +1992.0,303.38720703125,-22.403709411621094,1014.7313232421875,15607.533203125,-22237508.0,-18264170.0,24.990680694580078 +1993.0,303.0079650878906,10.886578559875488,1014.6035766601562,15609.498046875,-22243940.0,-18275570.0,24.991729736328125 +1994.0,302.7568359375,-6.125051975250244,1014.9781494140625,15603.7373046875,-22247312.0,-18282230.0,24.98865509033203 +1995.0,302.6318664550781,12.00273609161377,1015.238037109375,15599.7431640625,-22243478.0,-18280034.0,24.986522674560547 +1996.0,303.2581481933594,17.003311157226562,1015.0250854492188,15603.0166015625,-22241708.0,-18270060.0,24.988269805908203 +1997.0,302.9945983886719,3.7165186405181885,1014.8574829101562,15605.5927734375,-22235804.0,-18267608.0,24.98964500427246 +1998.0,303.05426025390625,-2.667487382888794,1014.8763427734375,15605.302734375,-22245116.0,-18276140.0,24.989490509033203 +1999.0,302.5933532714844,-9.521361351013184,1014.9808959960938,15603.6953125,-22240846.0,-18277906.0,24.988632202148438 +2000.0,302.4264831542969,43.78459548950195,1014.8828125,15605.203125,-22243032.0,-18282276.0,24.989437103271484 diff --git a/tests/fixtures/gmx_mmpbsa/gb/FINAL_DECOMP_MMGBSA_frames1-3.csv b/tests/fixtures/gmx_mmpbsa/gb/FINAL_DECOMP_MMGBSA_frames1-3.csv new file mode 100644 index 0000000..9c3744f --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/gb/FINAL_DECOMP_MMGBSA_frames1-3.csv @@ -0,0 +1,727 @@ +"Generalized Born Decomposition Energies +" +Complex: +Total Decomposition Contribution (TDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,15.53,-0.17,-32.01,-24.53,1.09,-40.08 +1,L::ILE:2,17.0,-1.7,13.72,0.38,0.9,30.29 +1,L::PHE:3,32.69,7.78,21.24,-8.04,0.56,54.24 +1,L::PRO:4,22.74,-0.96,10.73,0.07,0.84,33.42 +1,L::GLN:5,22.7,-5.08,-41.94,-7.07,0.44,-30.95 +1,L::CYS:6,15.11,-3.8,14.4,-4.8,0.24,21.15 +1,L::SER:7,13.53,-1.01,19.8,-8.0,0.54,24.86 +1,L::GLN:8,24.86,-6.85,-44.9,-4.83,0.27,-31.46 +1,L::ALA:9,16.12,-2.32,23.9,-6.19,0.34,31.85 +1,L::PRO:10,27.02,-3.98,11.64,-4.88,0.57,30.36 +1,L::ILE:11,18.63,-3.56,12.13,-2.62,0.78,25.36 +1,L::ALA:12,8.97,-4.65,11.81,-2.32,0.04,13.84 +1,L::SER:13,15.86,-0.96,13.76,-5.52,0.41,23.56 +1,L::LEU:14,26.23,-0.95,-4.4,-4.72,1.39,17.55 +1,L::LEU:15,24.3,-2.39,8.98,-5.56,0.5,25.82 +1,L::PRO:16,29.02,-0.64,30.18,-8.46,0.61,50.72 +1,L::PRO:17,23.48,-1.93,12.04,-5.48,0.68,28.79 +1,L::TYR:18,27.78,5.56,-5.94,-8.99,1.21,19.62 +1,L::LEU:19,23.29,-7.13,-4.01,-2.14,0.28,10.29 +1,L::SER:20,19.98,-0.71,34.49,-10.11,0.5,44.15 +1,L::PRO:21,23.42,-2.25,7.08,-3.38,0.32,25.18 +1,L::VAL:23,20.84,-3.66,8.91,-2.47,0.28,23.89 +1,L::SER:24,12.05,-1.01,8.1,-1.52,0.0,17.62 +1,L::SER:25,20.6,-3.59,15.72,-3.68,0.33,29.39 +1,L::VAL:26,18.61,-4.34,6.23,-1.49,0.38,19.39 +1,L::CYS:27,17.74,-4.12,12.64,-2.97,0.1,23.4 +1,L::GLU:28,22.44,-0.53,-52.44,-39.9,0.32,-70.11 +1,L::ASN:29,23.49,-1.38,-48.83,-12.76,0.52,-38.95 +1,L::LEU:32,22.45,-6.43,-6.53,-0.73,0.55,9.31 +1,L::ARG:36,26.79,-3.07,-270.61,-1.62,0.75,-247.75 +1,R::ASN:252,22.52,-7.35,-66.48,-2.68,0.0,-53.99 +1,R::LYS:347,26.62,-6.42,-8.28,-39.49,0.77,-26.8 +1,R::LYS:348,23.66,-6.33,-34.59,-16.95,0.45,-33.75 +1,R::GLU:351,19.1,-4.49,-17.65,-70.84,0.59,-73.29 +1,R::ASP:352,21.48,1.04,-63.19,-57.38,0.24,-97.81 +1,R::GLY:354,9.38,-2.4,3.92,-5.21,0.48,6.18 +1,R::THR:429,16.64,-1.59,-10.57,-2.95,0.0,1.53 +1,R::ILE:432,19.76,-8.13,6.42,1.13,0.05,19.24 +1,R::GLU:433,18.31,-5.29,-15.35,-70.94,0.56,-72.71 +1,R::THR:434,17.71,-2.8,-15.45,-1.28,0.04,-1.77 +1,R::VAL:435,20.34,-2.46,12.83,-5.67,0.78,25.82 +1,R::VAL:438,20.46,-3.2,4.13,-2.28,0.14,19.25 +1,R::MET:439,22.33,-12.09,8.67,-2.96,0.0,15.95 +1,R::THR:440,19.7,-5.02,-9.43,-2.11,-0.0,3.14 +1,R::LYS:441,24.73,-9.94,-20.98,-20.98,0.11,-27.06 +1,R::LEU:442,18.92,-9.49,-5.58,-0.42,0.0,3.44 +1,R::ILE:443,24.3,-6.8,23.1,0.44,0.0,41.04 +1,R::PRO:444,26.04,-7.41,12.21,-3.88,0.04,27.0 +1,R::ARG:445,30.04,-3.82,-289.08,17.93,0.03,-244.91 +1,R::ASN:446,28.0,-4.23,-67.16,-6.82,0.19,-50.01 +1,R::THR:447,17.65,-3.96,-10.86,-1.51,0.15,1.45 +1,R::LYS:452,29.29,-5.1,-51.8,4.79,1.02,-21.8 +1,R::LYS:453,22.61,-7.65,-48.12,3.01,0.26,-29.89 +1,R::SER:454,17.31,-5.11,14.06,-2.15,0.1,24.22 +1,R::GLN:455,25.24,-8.99,-47.66,-4.01,0.03,-35.39 +1,R::VAL:456,13.75,-7.13,5.94,-0.04,0.02,12.53 +1,R::PHE:457,32.69,1.1,6.07,-1.79,0.08,38.15 +1,R::THR:458,19.41,-4.78,-7.55,-2.05,0.01,5.04 +1,R::THR:459,18.54,-4.95,-11.83,-1.15,0.0,0.61 +1,R::TYR:460,25.08,5.19,-10.61,-4.27,0.48,15.87 +1,R::GLU:475,18.57,-2.05,-72.79,-19.28,0.26,-75.29 +1,R::ARG:476,28.36,-6.1,-232.87,-29.42,0.93,-239.1 +1,R::SER:477,16.5,-5.02,16.93,-5.37,0.2,23.25 +1,R::MET:478,23.11,-7.38,9.78,-1.77,0.65,24.4 +1,R::ALA:496,11.59,-1.52,16.68,-1.44,0.17,25.47 +1,R::PRO:497,20.13,-2.08,9.87,-0.29,0.53,28.17 +1,R::ARG:498,35.06,-6.51,-264.96,-5.23,1.2,-240.43 +1,R::GLY:499,6.16,-4.33,2.5,-1.48,0.06,2.9 +1,R::THR:500,23.31,-1.15,1.37,-6.04,0.26,17.76 +1,R::PRO:501,24.58,-7.03,10.49,-0.52,0.05,27.57 +1,R::GLN:502,25.18,-10.12,-46.39,-4.94,0.09,-36.18 +1,R::ILE:503,16.81,-7.74,8.84,0.42,0.0,18.34 +1,R::GLU:504,20.42,-4.18,-14.87,-73.73,0.14,-72.22 +1,R::VAL:505,18.85,-7.68,5.05,-0.51,0.03,15.74 +1,R::THR:506,22.32,-5.75,-12.2,-3.08,0.09,1.39 +1,R::GLU:520,17.84,-6.91,5.42,-96.5,0.43,-79.71 +1,R::LYS:522,26.64,-3.8,-103.94,52.16,0.71,-28.23 +Sidechain Decomposition Contribution (SDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,11.44,-0.24,-23.86,-21.42,1.08,-32.99 +1,L::ILE:2,14.4,-2.4,14.88,0.41,0.82,28.11 +1,L::PHE:3,25.22,6.99,1.98,-2.58,0.5,32.11 +1,L::PRO:4,16.08,-1.01,7.25,1.37,0.82,24.52 +1,L::GLN:5,18.2,-5.16,-50.55,-1.73,0.32,-38.92 +1,L::CYS:6,11.58,-4.55,12.76,-3.91,0.24,16.12 +1,L::SER:7,10.03,-1.93,21.42,-4.93,0.4,24.99 +1,L::GLN:8,20.0,-5.75,-48.76,-3.64,0.26,-37.88 +1,L::ALA:9,10.57,-2.12,4.0,-1.85,0.34,10.93 +1,L::PRO:10,18.73,-2.56,0.26,8.02,0.43,24.87 +1,L::ILE:11,15.43,-2.64,9.71,-0.07,0.78,23.21 +1,L::ALA:12,7.31,-3.57,4.37,-0.7,0.02,7.43 +1,L::SER:13,11.08,-2.59,14.82,-2.41,0.33,21.24 +1,L::LEU:14,21.57,-1.14,-6.72,-2.11,1.23,12.82 +1,L::LEU:15,16.11,-3.32,-8.26,-0.45,0.36,4.43 +1,L::PRO:16,17.86,-0.46,-1.11,9.5,0.61,26.4 +1,L::PRO:17,15.6,-0.24,-2.58,10.57,0.68,24.03 +1,L::TYR:18,21.91,6.78,-10.8,-7.85,1.17,11.2 +1,L::LEU:19,18.04,-5.91,-7.12,0.26,0.27,5.54 +1,L::SER:20,14.9,-1.73,24.1,-7.15,0.5,30.62 +1,L::PRO:21,16.62,-2.54,2.93,5.54,0.32,22.88 +1,L::VAL:23,17.44,-3.99,6.23,-0.06,0.28,19.9 +1,L::SER:24,8.35,-0.71,13.59,-0.87,0.0,20.36 +1,L::SER:25,16.1,-3.04,19.82,-3.45,0.29,29.72 +1,L::VAL:26,15.41,-4.49,4.94,0.61,0.24,16.71 +1,L::CYS:27,13.07,-4.66,12.43,-2.83,0.07,18.08 +1,L::GLU:28,17.69,-1.58,-53.95,-38.33,0.28,-75.89 +1,L::ASN:29,16.16,-2.46,-63.75,-11.48,0.52,-61.01 +1,L::LEU:32,18.34,-5.88,-7.46,-0.84,0.55,4.72 +1,L::ARG:36,22.67,-4.18,-273.42,-0.33,0.74,-254.52 +1,R::ASN:252,19.19,-6.21,-74.53,0.02,0.0,-61.53 +1,R::LYS:347,21.78,-5.7,-15.6,-32.8,0.77,-31.54 +1,R::LYS:348,20.55,-6.05,-40.52,-11.83,0.44,-37.41 +1,R::GLU:351,15.15,-4.53,-21.28,-67.12,0.5,-77.28 +1,R::ASP:352,17.5,1.36,-70.85,-53.25,0.05,-105.2 +1,R::GLY:354,5.34,-2.05,8.12,-1.44,0.26,10.22 +1,R::THR:429,13.26,-1.97,-0.96,-2.41,0.0,7.92 +1,R::ILE:432,16.25,-6.9,8.18,1.94,0.05,19.52 +1,R::GLU:433,13.92,-4.06,-19.32,-68.18,0.46,-77.17 +1,R::THR:434,14.28,-2.42,-8.05,-0.08,0.03,3.76 +1,R::VAL:435,16.34,-3.05,7.24,-1.47,0.72,19.77 +1,R::VAL:438,17.36,-3.1,3.4,0.57,0.14,18.38 +1,R::MET:439,17.37,-11.13,5.45,-1.95,0.0,9.74 +1,R::THR:440,16.39,-4.81,-3.5,-0.93,-0.0,7.15 +1,R::LYS:441,21.02,-8.33,-26.5,-18.24,0.11,-31.95 +1,R::LEU:442,15.73,-7.93,-9.22,1.27,0.0,-0.15 +1,R::ILE:443,17.81,-7.0,11.42,1.11,0.0,23.33 +1,R::PRO:444,17.08,-4.86,-0.33,8.47,0.04,20.39 +1,R::ARG:445,25.43,-5.06,-293.07,19.19,0.01,-253.49 +1,R::ASN:446,23.42,-3.68,-74.88,-2.07,0.1,-57.1 +1,R::THR:447,13.42,-4.39,-2.25,-0.65,0.15,6.27 +1,R::LYS:452,25.8,-4.48,-53.62,4.13,0.97,-27.2 +1,R::LYS:453,17.47,-6.02,-51.12,4.51,0.26,-34.89 +1,R::SER:454,14.18,-3.65,16.14,-0.77,0.1,26.0 +1,R::GLN:455,19.68,-7.52,-51.89,-3.19,0.03,-42.89 +1,R::VAL:456,10.28,-5.91,7.79,0.64,0.02,12.81 +1,R::PHE:457,28.21,2.03,1.7,0.09,0.08,32.1 +1,R::THR:458,16.27,-4.14,-2.04,-0.2,0.0,9.89 +1,R::THR:459,14.38,-5.23,-3.47,-0.34,0.0,5.34 +1,R::TYR:460,20.88,5.9,-12.23,-3.86,0.39,11.08 +1,R::GLU:475,14.67,-2.4,-72.78,-21.41,0.21,-81.69 +1,R::ARG:476,24.37,-4.85,-240.54,-26.42,0.93,-246.5 +1,R::SER:477,11.19,-3.09,17.4,-1.7,0.2,24.0 +1,R::MET:478,19.06,-6.03,6.34,-2.27,0.65,17.75 +1,R::ALA:496,6.83,-0.99,0.13,-0.27,0.17,5.86 +1,R::PRO:497,13.5,-1.2,-2.78,11.47,0.53,21.52 +1,R::ARG:498,30.24,-5.93,-270.85,-3.27,1.08,-248.73 +1,R::GLY:499,3.65,-2.29,7.35,0.21,0.04,8.97 +1,R::THR:500,17.72,-1.53,-4.88,-2.37,0.25,9.19 +1,R::PRO:501,15.89,-4.9,-4.38,12.93,0.05,19.59 +1,R::GLN:502,19.92,-7.83,-50.49,-2.47,0.09,-40.77 +1,R::ILE:503,13.56,-7.13,10.23,0.69,0.0,17.35 +1,R::GLU:504,15.86,-3.27,-19.09,-71.59,0.14,-77.96 +1,R::VAL:505,15.14,-6.05,6.56,0.44,0.03,16.11 +1,R::THR:506,17.12,-4.72,-4.93,-1.31,0.09,6.26 +1,R::GLU:520,14.17,-5.98,4.11,-95.54,0.43,-82.81 +1,R::LYS:522,23.06,-3.58,-111.33,56.13,0.52,-35.21 +Backbone Decomposition Contribution (BDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,4.09,0.07,-8.15,-3.12,0.01,-7.1 +1,L::ILE:2,2.59,0.7,-1.16,-0.03,0.08,2.19 +1,L::PHE:3,7.48,0.8,19.26,-5.46,0.05,22.13 +1,L::PRO:4,6.66,0.04,3.48,-1.29,0.01,8.9 +1,L::GLN:5,4.5,0.09,8.61,-5.34,0.12,7.98 +1,L::CYS:6,3.53,0.75,1.64,-0.9,0.0,5.03 +1,L::SER:7,3.5,0.92,-1.62,-3.07,0.14,-0.13 +1,L::GLN:8,4.86,-1.11,3.85,-1.2,0.0,6.42 +1,L::ALA:9,5.55,-0.2,19.9,-4.34,0.0,20.92 +1,L::PRO:10,8.29,-1.42,11.37,-12.89,0.14,5.49 +1,L::ILE:11,3.2,-0.92,2.41,-2.55,0.0,2.14 +1,L::ALA:12,1.66,-1.09,7.44,-1.62,0.02,6.41 +1,L::SER:13,4.78,1.64,-1.06,-3.11,0.08,2.32 +1,L::LEU:14,4.66,0.19,2.32,-2.6,0.16,4.73 +1,L::LEU:15,8.19,0.93,17.25,-5.11,0.14,21.39 +1,L::PRO:16,11.17,-0.18,31.3,-17.96,-0.0,24.32 +1,L::PRO:17,7.88,-1.68,14.62,-16.05,-0.0,4.76 +1,L::TYR:18,5.87,-1.22,4.86,-1.14,0.04,8.41 +1,L::LEU:19,5.25,-1.22,3.1,-2.4,0.01,4.75 +1,L::SER:20,5.08,1.02,10.39,-2.96,0.0,13.53 +1,L::PRO:21,6.8,0.28,4.15,-8.93,-0.0,2.31 +1,L::VAL:23,3.39,0.33,2.68,-2.41,-0.0,3.99 +1,L::SER:24,3.7,-0.3,-5.49,-0.65,-0.0,-2.75 +1,L::SER:25,4.5,-0.55,-4.1,-0.22,0.04,-0.34 +1,L::VAL:26,3.2,0.15,1.29,-2.1,0.14,2.68 +1,L::CYS:27,4.68,0.54,0.22,-0.14,0.03,5.32 +1,L::GLU:28,4.75,1.05,1.51,-1.57,0.04,5.78 +1,L::ASN:29,7.34,1.08,14.92,-1.28,0.0,22.06 +1,L::LEU:32,4.11,-0.56,0.93,0.12,0.0,4.6 +1,L::ARG:36,4.13,1.11,2.81,-1.29,0.01,6.77 +1,R::ASN:252,3.33,-1.14,8.05,-2.7,0.0,7.54 +1,R::LYS:347,4.84,-0.72,7.31,-6.69,0.0,4.74 +1,R::LYS:348,3.11,-0.28,5.93,-5.12,0.01,3.65 +1,R::GLU:351,3.96,0.04,3.63,-3.72,0.09,3.99 +1,R::ASP:352,3.98,-0.32,7.66,-4.13,0.19,7.39 +1,R::GLY:354,4.04,-0.35,-4.19,-3.76,0.22,-4.04 +1,R::THR:429,3.37,0.38,-9.61,-0.54,0.0,-6.39 +1,R::ILE:432,3.51,-1.23,-1.76,-0.81,0.0,-0.29 +1,R::GLU:433,4.39,-1.23,3.98,-2.77,0.09,4.46 +1,R::THR:434,3.44,-0.39,-7.4,-1.19,0.01,-5.53 +1,R::VAL:435,4.0,0.59,5.59,-4.2,0.06,6.05 +1,R::VAL:438,3.09,-0.1,0.73,-2.85,0.0,0.87 +1,R::MET:439,4.96,-0.95,3.22,-1.01,-0.0,6.21 +1,R::THR:440,3.31,-0.21,-5.93,-1.17,-0.0,-4.01 +1,R::LYS:441,3.71,-1.6,5.52,-2.74,-0.0,4.89 +1,R::LEU:442,3.18,-1.56,3.65,-1.68,-0.0,3.59 +1,R::ILE:443,6.5,0.2,11.68,-0.67,0.0,17.71 +1,R::PRO:444,8.96,-2.55,12.54,-12.35,-0.0,6.61 +1,R::ARG:445,4.61,1.24,3.99,-1.26,0.02,8.58 +1,R::ASN:446,4.58,-0.55,7.73,-4.75,0.09,7.09 +1,R::THR:447,4.23,0.43,-8.62,-0.86,-0.0,-4.82 +1,R::LYS:452,3.49,-0.62,1.81,0.66,0.05,5.4 +1,R::LYS:453,5.13,-1.63,3.0,-1.51,0.0,5.0 +1,R::SER:454,3.13,-1.46,-2.08,-1.38,0.0,-1.78 +1,R::GLN:455,5.56,-1.47,4.23,-0.82,0.0,7.5 +1,R::VAL:456,3.48,-1.22,-1.86,-0.68,-0.0,-0.28 +1,R::PHE:457,4.48,-0.93,4.37,-1.88,0.0,6.05 +1,R::THR:458,3.14,-0.63,-5.52,-1.84,0.01,-4.84 +1,R::THR:459,4.16,0.29,-8.37,-0.81,0.0,-4.73 +1,R::TYR:460,4.21,-0.71,1.62,-0.41,0.08,4.79 +1,R::GLU:475,3.89,0.35,-0.01,2.13,0.05,6.4 +1,R::ARG:476,3.99,-1.25,7.67,-3.0,-0.0,7.4 +1,R::SER:477,5.31,-1.93,-0.46,-3.66,-0.0,-0.75 +1,R::MET:478,4.05,-1.35,3.44,0.5,0.0,6.64 +1,R::ALA:496,4.77,-0.53,16.56,-1.18,0.0,19.62 +1,R::PRO:497,6.63,-0.88,12.66,-11.76,-0.0,6.65 +1,R::ARG:498,4.82,-0.57,5.89,-1.96,0.12,8.3 +1,R::GLY:499,2.5,-2.04,-4.86,-1.69,0.02,-6.07 +1,R::THR:500,5.59,0.38,6.25,-3.67,0.02,8.57 +1,R::PRO:501,8.7,-2.13,14.87,-13.45,-0.0,7.99 +1,R::GLN:502,5.26,-2.3,4.09,-2.47,-0.0,4.59 +1,R::ILE:503,3.25,-0.61,-1.39,-0.27,0.0,0.99 +1,R::GLU:504,4.57,-0.92,4.22,-2.13,0.0,5.74 +1,R::VAL:505,3.72,-1.63,-1.51,-0.95,-0.0,-0.38 +1,R::THR:506,5.2,-1.03,-7.27,-1.77,0.0,-4.87 +1,R::GLU:520,3.67,-0.92,1.32,-0.96,0.0,3.1 +1,R::LYS:522,3.59,-0.22,7.39,-3.96,0.2,6.99 +" +" +Receptor: +Total Decomposition Contribution (TDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,R::ASN:252,22.52,-7.27,-67.02,-2.25,0.0,-54.03 +1,R::LYS:347,26.62,-6.33,-25.18,-22.86,0.77,-26.99 +1,R::LYS:348,23.66,-5.67,-54.29,1.72,0.68,-33.9 +1,R::GLU:351,19.1,-2.98,17.3,-109.17,1.08,-74.67 +1,R::ASP:352,21.48,1.64,-43.66,-77.99,0.36,-98.17 +1,R::GLY:354,9.38,-2.36,3.29,-4.63,0.48,6.16 +1,R::THR:429,16.64,-1.29,-11.14,-2.7,0.0,1.5 +1,R::ILE:432,19.76,-7.85,6.3,1.27,0.05,19.54 +1,R::GLU:433,18.31,-5.18,-7.91,-78.61,0.56,-72.82 +1,R::THR:434,17.71,-2.22,-10.89,-4.02,0.29,0.86 +1,R::VAL:435,20.34,-2.13,12.64,-5.75,0.82,25.92 +1,R::VAL:438,20.46,-2.28,3.87,-2.12,0.41,20.35 +1,R::MET:439,22.33,-11.09,8.26,-3.38,0.08,16.2 +1,R::THR:440,19.7,-3.25,-5.76,-4.95,0.25,5.98 +1,R::LYS:441,24.73,-6.64,-29.8,-15.98,0.69,-26.99 +1,R::LEU:442,18.92,-7.87,-5.17,-1.28,0.17,4.77 +1,R::ILE:443,24.3,-6.4,22.98,0.5,0.0,41.38 +1,R::PRO:444,26.04,-4.81,12.7,-4.35,0.5,30.08 +1,R::ARG:445,30.04,-1.27,-304.56,30.66,0.41,-244.71 +1,R::ASN:446,28.0,-3.95,-67.64,-6.65,0.24,-50.0 +1,R::THR:447,17.65,-3.79,-10.49,-1.98,0.16,1.55 +1,R::LYS:452,29.29,-4.65,-57.5,9.89,1.09,-21.88 +1,R::LYS:453,22.61,-5.93,-55.22,7.75,0.64,-30.15 +1,R::SER:454,17.31,-2.66,13.38,-3.51,0.46,24.98 +1,R::GLN:455,25.24,-5.38,-45.61,-6.98,0.63,-32.1 +1,R::VAL:456,13.75,-4.39,6.65,-1.69,0.46,14.78 +1,R::PHE:457,32.69,2.31,5.57,-1.96,0.24,38.86 +1,R::THR:458,19.41,-3.24,-3.82,-4.92,0.28,7.7 +1,R::THR:459,18.54,-4.72,-11.27,-1.88,0.01,0.68 +1,R::TYR:460,25.08,5.88,-10.77,-4.92,0.68,15.96 +1,R::GLU:475,18.57,-1.59,-57.03,-35.85,0.35,-75.55 +1,R::ARG:476,28.36,-5.81,-249.63,-13.32,0.97,-239.43 +1,R::SER:477,16.5,-4.08,17.26,-6.65,0.43,23.47 +1,R::MET:478,23.11,-7.01,9.76,-1.84,0.73,24.75 +1,R::ALA:496,11.59,-1.47,16.7,-1.46,0.17,25.53 +1,R::PRO:497,20.13,-1.96,9.57,-0.01,0.53,28.26 +1,R::ARG:498,35.06,-6.09,-275.54,4.68,1.3,-240.6 +1,R::GLY:499,6.16,-2.87,4.44,-3.6,0.27,4.4 +1,R::THR:500,23.31,0.5,-0.51,-6.0,0.6,17.9 +1,R::PRO:501,24.58,-6.67,10.34,-0.56,0.05,27.74 +1,R::GLN:502,25.18,-6.88,-45.9,-6.62,0.5,-33.72 +1,R::ILE:503,16.81,-7.55,8.83,0.4,0.0,18.5 +1,R::GLU:504,20.42,-4.24,0.97,-91.33,0.35,-73.83 +1,R::VAL:505,18.85,-7.51,5.12,-0.55,0.03,15.94 +1,R::THR:506,22.32,-5.59,-12.0,-3.36,0.09,1.45 +1,R::GLU:520,17.84,-6.82,10.19,-101.4,0.43,-79.76 +1,R::LYS:522,26.64,-2.82,-107.81,55.39,0.95,-27.65 +Sidechain Decomposition Contribution (SDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,R::ASN:252,19.19,-6.14,-74.75,0.13,0.0,-61.57 +1,R::LYS:347,21.78,-5.66,-32.9,-15.63,0.77,-31.65 +1,R::LYS:348,20.55,-5.47,-60.63,7.34,0.68,-37.52 +1,R::GLU:351,15.15,-3.26,13.87,-105.64,0.92,-78.95 +1,R::ASP:352,17.5,1.89,-50.99,-74.15,0.17,-105.58 +1,R::GLY:354,5.34,-2.02,7.81,-1.16,0.26,10.23 +1,R::THR:429,13.26,-1.7,-1.73,-2.02,0.0,7.82 +1,R::ILE:432,16.25,-6.66,8.24,1.88,0.05,19.76 +1,R::GLU:433,13.92,-3.99,-11.96,-75.77,0.46,-77.35 +1,R::THR:434,14.28,-1.92,-3.94,-2.52,0.28,6.18 +1,R::VAL:435,16.34,-2.78,7.13,-1.46,0.75,19.98 +1,R::VAL:438,17.36,-2.31,3.66,0.1,0.41,19.24 +1,R::MET:439,17.37,-10.72,5.32,-2.02,0.0,9.94 +1,R::THR:440,16.39,-3.34,-0.41,-3.38,0.25,9.51 +1,R::LYS:441,21.02,-5.91,-35.63,-12.0,0.54,-31.97 +1,R::LEU:442,15.73,-6.92,-9.44,1.36,0.08,0.83 +1,R::ILE:443,17.81,-6.72,11.39,1.16,0.0,23.64 +1,R::PRO:444,17.08,-2.59,-2.17,10.13,0.5,22.94 +1,R::ARG:445,25.43,-2.76,-308.83,32.28,0.36,-253.52 +1,R::ASN:446,23.42,-3.43,-75.43,-1.84,0.16,-57.13 +1,R::THR:447,13.42,-4.23,-1.76,-1.23,0.16,6.36 +1,R::LYS:452,25.8,-4.32,-59.56,9.87,0.98,-27.23 +1,R::LYS:453,17.47,-4.57,-58.11,9.44,0.64,-35.12 +1,R::SER:454,14.18,-2.29,15.69,-1.46,0.29,26.41 +1,R::GLN:455,19.68,-4.24,-49.89,-6.22,0.63,-40.03 +1,R::VAL:456,10.28,-3.73,8.21,-0.47,0.4,14.68 +1,R::PHE:457,28.21,3.07,1.54,-0.46,0.24,32.6 +1,R::THR:458,16.27,-2.76,1.3,-2.61,0.27,12.46 +1,R::THR:459,14.38,-5.11,-3.37,-0.53,0.0,5.37 +1,R::TYR:460,20.88,6.56,-12.58,-4.29,0.59,11.15 +1,R::GLU:475,14.67,-2.04,-57.09,-37.75,0.3,-81.91 +1,R::ARG:476,24.37,-4.63,-256.67,-10.66,0.97,-246.62 +1,R::SER:477,11.19,-2.31,18.22,-3.2,0.43,24.34 +1,R::MET:478,19.06,-5.68,6.14,-2.14,0.73,18.12 +1,R::ALA:496,6.83,-0.96,0.13,-0.28,0.17,5.89 +1,R::PRO:497,13.5,-1.14,-4.71,13.38,0.53,21.56 +1,R::ARG:498,30.24,-5.63,-281.91,7.25,1.17,-248.87 +1,R::GLY:499,3.65,-1.8,7.72,-0.24,0.1,9.43 +1,R::THR:500,17.72,-0.24,-4.52,-3.72,0.55,9.79 +1,R::PRO:501,15.89,-4.76,-5.52,14.0,0.05,19.67 +1,R::GLN:502,19.92,-4.66,-50.1,-4.09,0.5,-38.43 +1,R::ILE:503,13.56,-7.01,10.09,0.77,0.0,17.41 +1,R::GLU:504,15.86,-3.38,-3.14,-89.3,0.34,-79.62 +1,R::VAL:505,15.14,-5.94,6.59,0.36,0.03,16.17 +1,R::THR:506,17.12,-4.58,-4.64,-1.67,0.09,6.31 +1,R::GLU:520,14.17,-5.91,8.85,-100.41,0.43,-82.88 +1,R::LYS:522,23.06,-2.63,-115.3,59.5,0.76,-34.61 +Backbone Decomposition Contribution (BDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,R::ASN:252,3.33,-1.14,7.73,-2.38,0.0,7.54 +1,R::LYS:347,4.84,-0.67,7.72,-7.23,0.0,4.66 +1,R::LYS:348,3.11,-0.2,6.33,-5.62,0.01,3.63 +1,R::GLU:351,3.96,0.27,3.43,-3.53,0.15,4.28 +1,R::ASP:352,3.98,-0.24,7.33,-3.84,0.19,7.42 +1,R::GLY:354,4.04,-0.34,-4.52,-3.47,0.22,-4.07 +1,R::THR:429,3.37,0.41,-9.42,-0.68,0.0,-6.31 +1,R::ILE:432,3.51,-1.19,-1.93,-0.61,0.0,-0.21 +1,R::GLU:433,4.39,-1.18,4.06,-2.84,0.09,4.53 +1,R::THR:434,3.44,-0.3,-6.95,-1.51,0.01,-5.31 +1,R::VAL:435,4.0,0.65,5.51,-4.3,0.06,5.93 +1,R::VAL:438,3.09,0.02,0.21,-2.22,0.0,1.11 +1,R::MET:439,4.96,-0.37,2.95,-1.36,0.08,6.26 +1,R::THR:440,3.31,0.09,-5.36,-1.57,0.0,-3.53 +1,R::LYS:441,3.71,-0.73,5.83,-3.98,0.15,4.98 +1,R::LEU:442,3.18,-0.95,4.27,-2.64,0.09,3.94 +1,R::ILE:443,6.5,0.32,11.59,-0.66,0.0,17.74 +1,R::PRO:444,8.96,-2.22,14.87,-14.47,-0.0,7.14 +1,R::ARG:445,4.61,1.49,4.28,-1.62,0.05,8.82 +1,R::ASN:446,4.58,-0.52,7.78,-4.8,0.09,7.13 +1,R::THR:447,4.23,0.44,-8.73,-0.75,-0.0,-4.8 +1,R::LYS:452,3.49,-0.34,2.06,0.02,0.11,5.35 +1,R::LYS:453,5.13,-1.35,2.89,-1.69,0.0,4.97 +1,R::SER:454,3.13,-0.37,-2.31,-2.05,0.17,-1.43 +1,R::GLN:455,5.56,-1.15,4.28,-0.76,0.0,7.93 +1,R::VAL:456,3.48,-0.66,-1.56,-1.23,0.07,0.1 +1,R::PHE:457,4.48,-0.76,4.04,-1.5,0.0,6.26 +1,R::THR:458,3.14,-0.48,-5.12,-2.32,0.01,-4.76 +1,R::THR:459,4.16,0.39,-7.9,-1.35,0.01,-4.69 +1,R::TYR:460,4.21,-0.67,1.81,-0.62,0.08,4.81 +1,R::GLU:475,3.89,0.45,0.06,1.9,0.05,6.36 +1,R::ARG:476,3.99,-1.18,7.04,-2.66,-0.0,7.18 +1,R::SER:477,5.31,-1.77,-0.96,-3.45,-0.0,-0.87 +1,R::MET:478,4.05,-1.33,3.61,0.3,0.0,6.64 +1,R::ALA:496,4.77,-0.52,16.57,-1.18,0.0,19.64 +1,R::PRO:497,6.63,-0.82,14.28,-13.38,-0.0,6.7 +1,R::ARG:498,4.82,-0.46,6.37,-2.57,0.12,8.27 +1,R::GLY:499,2.5,-1.07,-3.28,-3.36,0.17,-5.03 +1,R::THR:500,5.59,0.74,4.01,-2.28,0.05,8.11 +1,R::PRO:501,8.7,-1.91,15.85,-14.56,-0.0,8.08 +1,R::GLN:502,5.26,-2.22,4.2,-2.53,-0.0,4.71 +1,R::ILE:503,3.25,-0.54,-1.26,-0.36,0.0,1.09 +1,R::GLU:504,4.57,-0.86,4.1,-2.03,0.0,5.79 +1,R::VAL:505,3.72,-1.57,-1.47,-0.91,-0.0,-0.24 +1,R::THR:506,5.2,-1.01,-7.36,-1.69,0.0,-4.86 +1,R::GLU:520,3.67,-0.9,1.34,-0.99,0.0,3.12 +1,R::LYS:522,3.59,-0.19,7.48,-4.11,0.2,6.96 +Ligand: +Total Decomposition Contribution (TDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,15.53,0.5,11.01,-69.78,1.22,-41.51 +1,L::ILE:2,17.0,-0.31,17.04,-3.47,1.27,31.52 +1,L::PHE:3,32.69,10.16,16.63,-4.97,1.12,55.64 +1,L::PRO:4,22.74,-0.48,15.44,-4.86,0.92,33.76 +1,L::GLN:5,22.7,-1.34,-39.99,-13.04,1.13,-30.53 +1,L::CYS:6,15.11,-1.44,13.41,-5.71,0.52,21.88 +1,L::SER:7,13.53,0.67,20.5,-10.55,0.85,25.0 +1,L::GLN:8,24.86,-3.79,-38.3,-12.07,0.83,-28.47 +1,L::ALA:9,16.12,-1.6,20.76,-4.18,0.37,31.46 +1,L::PRO:10,27.02,-1.28,10.87,-4.44,1.1,33.27 +1,L::ILE:11,18.63,-2.02,12.45,-3.67,0.88,26.27 +1,L::ALA:12,8.97,-2.18,13.67,-5.53,0.58,15.51 +1,L::SER:13,15.86,-0.1,23.48,-12.68,0.76,27.33 +1,L::LEU:14,26.23,-0.62,-4.32,-4.92,1.43,17.81 +1,L::LEU:15,24.3,-1.6,8.75,-5.71,0.6,26.33 +1,L::PRO:16,29.02,-0.01,28.61,-7.78,0.67,50.53 +1,L::PRO:17,23.48,-0.22,10.29,-5.56,0.97,28.95 +1,L::TYR:18,27.78,8.18,-4.79,-11.26,1.49,21.4 +1,L::LEU:19,23.29,-3.86,-0.61,-4.88,0.78,14.71 +1,L::SER:20,19.98,0.19,33.2,-9.78,0.53,44.12 +1,L::PRO:21,23.42,-0.37,6.76,-3.49,0.88,27.2 +1,L::VAL:23,20.84,-1.55,9.34,-3.32,0.57,25.89 +1,L::SER:24,12.05,0.58,14.7,-7.25,0.66,20.73 +1,L::SER:25,20.6,-2.77,16.46,-5.81,0.42,28.9 +1,L::VAL:26,18.61,-3.1,6.84,-2.72,0.47,20.1 +1,L::CYS:27,17.74,-0.81,13.82,-4.7,0.73,26.78 +1,L::GLU:28,22.44,0.02,-81.13,-12.85,0.46,-71.05 +1,L::ASN:29,23.49,-1.05,-47.93,-14.4,0.66,-39.23 +1,L::LEU:32,22.45,-6.34,-6.69,-0.64,0.55,9.33 +1,L::ARG:36,26.79,-2.9,-242.47,-29.95,0.76,-247.77 +Sidechain Decomposition Contribution (SDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,11.44,0.07,19.14,-66.1,1.16,-34.29 +1,L::ILE:2,14.4,-1.13,15.18,-0.42,1.19,29.22 +1,L::PHE:3,25.22,9.19,1.1,-2.7,1.06,33.87 +1,L::PRO:4,16.08,-0.8,16.03,-7.52,0.82,24.62 +1,L::GLN:5,18.2,-1.77,-45.9,-9.71,1.01,-38.17 +1,L::CYS:6,11.58,-3.18,11.12,-2.52,0.36,17.36 +1,L::SER:7,10.03,-0.58,22.14,-7.34,0.71,24.95 +1,L::GLN:8,20.0,-3.31,-43.29,-8.82,0.7,-34.72 +1,L::ALA:9,10.57,-1.82,3.73,-1.83,0.35,11.0 +1,L::PRO:10,18.73,-0.7,10.97,-3.13,0.93,26.8 +1,L::ILE:11,15.43,-1.93,9.54,0.06,0.78,23.88 +1,L::ALA:12,7.31,-1.87,4.45,-1.44,0.51,8.97 +1,L::SER:13,11.08,-1.91,23.94,-8.42,0.68,25.37 +1,L::LEU:14,21.57,-0.87,-7.23,-1.59,1.27,13.14 +1,L::LEU:15,16.11,-2.68,-8.17,-0.72,0.44,4.99 +1,L::PRO:16,17.86,-0.3,11.33,-2.97,0.61,26.53 +1,L::PRO:17,15.6,0.35,10.52,-2.67,0.77,24.57 +1,L::TYR:18,21.91,8.9,-10.57,-8.83,1.45,12.85 +1,L::LEU:19,18.04,-3.3,-6.63,-0.53,0.58,8.16 +1,L::SER:20,14.9,-1.19,23.74,-7.2,0.52,30.77 +1,L::PRO:21,16.62,-1.24,13.32,-5.16,0.88,24.41 +1,L::VAL:23,17.44,-2.38,6.85,-0.66,0.55,21.79 +1,L::SER:24,8.35,0.22,17.3,-4.58,0.5,21.79 +1,L::SER:25,16.1,-2.39,20.09,-4.56,0.38,29.63 +1,L::VAL:26,15.41,-3.4,5.25,0.39,0.33,17.98 +1,L::CYS:27,13.07,-1.69,11.71,-2.04,0.63,21.68 +1,L::GLU:28,17.69,-1.08,-82.24,-11.59,0.42,-76.81 +1,L::ASN:29,16.16,-2.15,-62.48,-13.39,0.66,-61.21 +1,L::LEU:32,18.34,-5.8,-7.53,-0.82,0.55,4.75 +1,L::ARG:36,22.67,-4.02,-245.37,-28.56,0.75,-254.53 +Backbone Decomposition Contribution (BDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,4.09,0.43,-8.13,-3.68,0.06,-7.22 +1,L::ILE:2,2.59,0.82,1.86,-3.05,0.08,2.3 +1,L::PHE:3,7.48,0.98,15.54,-2.27,0.05,21.77 +1,L::PRO:4,6.66,0.33,-0.6,2.66,0.09,9.14 +1,L::GLN:5,4.5,0.43,5.91,-3.33,0.12,7.63 +1,L::CYS:6,3.53,1.74,2.28,-3.2,0.16,4.52 +1,L::SER:7,3.5,1.25,-1.63,-3.21,0.14,0.05 +1,L::GLN:8,4.86,-0.49,4.99,-3.25,0.13,6.25 +1,L::ALA:9,5.55,0.22,17.02,-2.35,0.02,20.46 +1,L::PRO:10,8.29,-0.59,-0.1,-1.31,0.17,6.46 +1,L::ILE:11,3.2,-0.09,2.9,-3.73,0.1,2.39 +1,L::ALA:12,1.66,-0.31,9.21,-4.09,0.07,6.54 +1,L::SER:13,4.78,1.82,-0.46,-4.26,0.08,1.96 +1,L::LEU:14,4.66,0.26,2.92,-3.33,0.16,4.66 +1,L::LEU:15,8.19,1.08,16.92,-5.0,0.16,21.34 +1,L::PRO:16,11.17,0.3,17.28,-4.81,0.06,24.0 +1,L::PRO:17,7.88,-0.58,-0.22,-2.89,0.2,4.38 +1,L::TYR:18,5.87,-0.72,5.78,-2.43,0.04,8.55 +1,L::LEU:19,5.25,-0.56,6.02,-4.35,0.19,6.56 +1,L::SER:20,5.08,1.38,9.45,-2.58,0.01,13.35 +1,L::PRO:21,6.8,0.87,-6.56,1.67,0.0,2.78 +1,L::VAL:23,3.39,0.84,2.49,-2.66,0.03,4.09 +1,L::SER:24,3.7,0.36,-2.6,-2.68,0.16,-1.06 +1,L::SER:25,4.5,-0.38,-3.64,-1.25,0.04,-0.72 +1,L::VAL:26,3.2,0.3,1.59,-3.12,0.14,2.12 +1,L::CYS:27,4.68,0.87,2.11,-2.66,0.09,5.09 +1,L::GLU:28,4.75,1.11,1.11,-1.25,0.04,5.76 +1,L::ASN:29,7.34,1.1,14.55,-1.01,0.0,21.98 +1,L::LEU:32,4.11,-0.55,0.84,0.18,0.0,4.58 +1,L::ARG:36,4.13,1.12,2.9,-1.39,0.01,6.76 +DELTAS: +Total Decomposition Contribution (TDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,0.0,-0.67,-43.02,45.25,-0.13,1.43 +1,L::ILE:2,0.0,-1.39,-3.32,3.85,-0.37,-1.22 +1,L::PHE:3,0.0,-2.38,4.61,-3.07,-0.56,-1.4 +1,L::PRO:4,0.0,-0.49,-4.71,4.93,-0.08,-0.35 +1,L::GLN:5,0.0,-3.74,-1.95,5.97,-0.69,-0.41 +1,L::CYS:6,0.0,-2.36,0.99,0.91,-0.28,-0.74 +1,L::SER:7,0.0,-1.68,-0.7,2.55,-0.31,-0.14 +1,L::GLN:8,0.0,-3.06,-6.6,7.24,-0.56,-2.99 +1,L::ALA:9,0.0,-0.72,3.14,-2.0,-0.02,0.39 +1,L::PRO:10,0.0,-2.7,0.77,-0.44,-0.53,-2.9 +1,L::ILE:11,0.0,-1.54,-0.32,1.05,-0.1,-0.91 +1,L::ALA:12,0.0,-2.47,-1.86,3.2,-0.54,-1.66 +1,L::SER:13,0.0,-0.86,-9.71,7.15,-0.35,-3.77 +1,L::LEU:14,0.0,-0.33,-0.09,0.2,-0.04,-0.26 +1,L::LEU:15,0.0,-0.79,0.23,0.15,-0.1,-0.51 +1,L::PRO:16,0.0,-0.64,1.57,-0.69,-0.06,0.19 +1,L::PRO:17,0.0,-1.7,1.75,0.09,-0.29,-0.16 +1,L::TYR:18,0.0,-2.62,-1.15,2.27,-0.28,-1.78 +1,L::LEU:19,0.0,-3.27,-3.4,2.74,-0.5,-4.43 +1,L::SER:20,0.0,-0.9,1.3,-0.33,-0.03,0.03 +1,L::PRO:21,0.0,-1.88,0.32,0.11,-0.56,-2.01 +1,L::VAL:23,0.0,-2.11,-0.44,0.85,-0.29,-1.99 +1,L::SER:24,0.0,-1.59,-6.6,5.73,-0.66,-3.12 +1,L::SER:25,0.0,-0.82,-0.73,2.13,-0.1,0.48 +1,L::VAL:26,0.0,-1.24,-0.61,1.23,-0.09,-0.71 +1,L::CYS:27,0.0,-3.3,-1.17,1.73,-0.62,-3.38 +1,L::GLU:28,0.0,-0.56,28.69,-27.05,-0.14,0.95 +1,L::ASN:29,0.0,-0.33,-0.9,1.64,-0.14,0.28 +1,L::LEU:32,0.0,-0.09,0.16,-0.08,0.0,-0.02 +1,L::ARG:36,0.0,-0.16,-28.14,28.33,-0.01,0.02 +1,R::ASN:252,0.0,-0.08,0.54,-0.42,0.0,0.04 +1,R::LYS:347,0.0,-0.09,16.9,-16.63,0.0,0.18 +1,R::LYS:348,0.0,-0.66,19.7,-18.67,-0.23,0.14 +1,R::GLU:351,0.0,-1.5,-34.96,38.33,-0.49,1.38 +1,R::ASP:352,0.0,-0.6,-19.53,20.6,-0.11,0.36 +1,R::GLY:354,0.0,-0.04,0.63,-0.58,0.0,0.01 +1,R::THR:429,0.0,-0.3,0.57,-0.25,-0.0,0.02 +1,R::ILE:432,0.0,-0.28,0.12,-0.14,0.0,-0.3 +1,R::GLU:433,0.0,-0.11,-7.44,7.66,0.0,0.11 +1,R::THR:434,0.0,-0.58,-4.56,2.75,-0.25,-2.64 +1,R::VAL:435,0.0,-0.33,0.19,0.08,-0.04,-0.1 +1,R::VAL:438,0.0,-0.91,0.26,-0.17,-0.28,-1.1 +1,R::MET:439,0.0,-1.0,0.4,0.43,-0.08,-0.25 +1,R::THR:440,0.0,-1.77,-3.67,2.85,-0.25,-2.84 +1,R::LYS:441,0.0,-3.3,8.81,-5.0,-0.58,-0.07 +1,R::LEU:442,0.0,-1.62,-0.41,0.86,-0.17,-1.33 +1,R::ILE:443,0.0,-0.4,0.12,-0.06,0.0,-0.34 +1,R::PRO:444,0.0,-2.59,-0.49,0.47,-0.46,-3.08 +1,R::ARG:445,0.0,-2.56,15.48,-12.74,-0.39,-0.2 +1,R::ASN:446,0.0,-0.28,0.49,-0.17,-0.05,-0.01 +1,R::THR:447,0.0,-0.18,-0.38,0.47,-0.02,-0.1 +1,R::LYS:452,0.0,-0.44,5.7,-5.1,-0.08,0.08 +1,R::LYS:453,0.0,-1.72,7.11,-4.75,-0.39,0.25 +1,R::SER:454,0.0,-2.45,0.69,1.36,-0.36,-0.76 +1,R::GLN:455,0.0,-3.6,-2.05,2.97,-0.6,-3.29 +1,R::VAL:456,0.0,-2.74,-0.71,1.65,-0.45,-2.25 +1,R::PHE:457,0.0,-1.21,0.5,0.17,-0.16,-0.71 +1,R::THR:458,0.0,-1.53,-3.73,2.88,-0.27,-2.66 +1,R::THR:459,0.0,-0.23,-0.56,0.72,-0.01,-0.07 +1,R::TYR:460,0.0,-0.69,0.15,0.65,-0.2,-0.09 +1,R::GLU:475,0.0,-0.46,-15.76,16.57,-0.09,0.26 +1,R::ARG:476,0.0,-0.29,16.76,-16.11,-0.03,0.33 +1,R::SER:477,0.0,-0.94,-0.33,1.28,-0.23,-0.22 +1,R::MET:478,0.0,-0.37,0.02,0.07,-0.08,-0.36 +1,R::ALA:496,0.0,-0.05,-0.02,0.01,0.0,-0.05 +1,R::PRO:497,0.0,-0.11,0.3,-0.29,0.0,-0.1 +1,R::ARG:498,0.0,-0.42,10.59,-9.91,-0.09,0.17 +1,R::GLY:499,0.0,-1.46,-1.95,2.12,-0.21,-1.5 +1,R::THR:500,0.0,-1.65,1.88,-0.04,-0.34,-0.15 +1,R::PRO:501,0.0,-0.36,0.15,0.04,0.0,-0.17 +1,R::GLN:502,0.0,-3.24,-0.5,1.69,-0.4,-2.46 +1,R::ILE:503,0.0,-0.19,0.01,0.02,0.0,-0.17 +1,R::GLU:504,0.0,0.06,-15.84,17.6,-0.21,1.61 +1,R::VAL:505,0.0,-0.17,-0.07,0.04,0.0,-0.2 +1,R::THR:506,0.0,-0.16,-0.2,0.29,0.0,-0.07 +1,R::GLU:520,0.0,-0.09,-4.76,4.9,0.0,0.04 +1,R::LYS:522,0.0,-0.98,3.87,-3.23,-0.24,-0.58 +Sidechain Decomposition Contribution (SDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,0.0,-0.31,-42.99,44.69,-0.08,1.3 +1,L::ILE:2,0.0,-1.27,-0.3,0.83,-0.37,-1.11 +1,L::PHE:3,0.0,-2.2,0.89,0.11,-0.56,-1.76 +1,L::PRO:4,0.0,-0.2,-8.78,8.88,-0.0,-0.1 +1,L::GLN:5,0.0,-3.4,-4.65,7.98,-0.69,-0.76 +1,L::CYS:6,0.0,-1.37,1.63,-1.39,-0.11,-1.25 +1,L::SER:7,0.0,-1.36,-0.71,2.41,-0.31,0.03 +1,L::GLN:8,0.0,-2.44,-5.46,5.18,-0.43,-3.16 +1,L::ALA:9,0.0,-0.31,0.27,-0.02,-0.01,-0.07 +1,L::PRO:10,0.0,-1.87,-10.7,11.15,-0.5,-1.93 +1,L::ILE:11,0.0,-0.71,0.17,-0.13,-0.0,-0.67 +1,L::ALA:12,0.0,-1.7,-0.08,0.74,-0.49,-1.54 +1,L::SER:13,0.0,-0.68,-9.11,6.01,-0.35,-4.14 +1,L::LEU:14,0.0,-0.27,0.51,-0.52,-0.04,-0.32 +1,L::LEU:15,0.0,-0.64,-0.1,0.26,-0.08,-0.56 +1,L::PRO:16,0.0,-0.16,-12.44,12.47,0.0,-0.13 +1,L::PRO:17,0.0,-0.6,-13.09,13.24,-0.09,-0.54 +1,L::TYR:18,0.0,-2.12,-0.23,0.98,-0.28,-1.65 +1,L::LEU:19,0.0,-2.61,-0.49,0.79,-0.31,-2.62 +1,L::SER:20,0.0,-0.54,0.36,0.05,-0.02,-0.15 +1,L::PRO:21,0.0,-1.29,-10.39,10.7,-0.56,-1.54 +1,L::VAL:23,0.0,-1.6,-0.62,0.6,-0.27,-1.89 +1,L::SER:24,0.0,-0.93,-3.71,3.7,-0.49,-1.43 +1,L::SER:25,0.0,-0.64,-0.27,1.11,-0.1,0.1 +1,L::VAL:26,0.0,-1.09,-0.32,0.22,-0.09,-1.27 +1,L::CYS:27,0.0,-2.97,0.72,-0.79,-0.56,-3.6 +1,L::GLU:28,0.0,-0.5,28.3,-26.74,-0.14,0.93 +1,L::ASN:29,0.0,-0.31,-1.27,1.91,-0.14,0.2 +1,L::LEU:32,0.0,-0.08,0.07,-0.02,0.0,-0.03 +1,L::ARG:36,0.0,-0.16,-28.05,28.23,-0.01,0.01 +1,R::ASN:252,0.0,-0.07,0.21,-0.11,0.0,0.04 +1,R::LYS:347,0.0,-0.04,17.31,-17.16,0.0,0.1 +1,R::LYS:348,0.0,-0.58,20.11,-19.18,-0.23,0.12 +1,R::GLU:351,0.0,-1.27,-35.15,38.52,-0.43,1.67 +1,R::ASP:352,0.0,-0.53,-19.86,20.9,-0.11,0.39 +1,R::GLY:354,0.0,-0.03,0.31,-0.29,0.0,-0.01 +1,R::THR:429,0.0,-0.27,0.77,-0.39,-0.0,0.1 +1,R::ILE:432,0.0,-0.24,-0.06,0.06,0.0,-0.23 +1,R::GLU:433,0.0,-0.06,-7.36,7.6,0.0,0.18 +1,R::THR:434,0.0,-0.5,-4.11,2.43,-0.25,-2.42 +1,R::VAL:435,0.0,-0.27,0.11,-0.02,-0.04,-0.22 +1,R::VAL:438,0.0,-0.79,-0.26,0.47,-0.28,-0.86 +1,R::MET:439,0.0,-0.41,0.13,0.07,0.0,-0.2 +1,R::THR:440,0.0,-1.47,-3.09,2.45,-0.25,-2.36 +1,R::LYS:441,0.0,-2.42,9.13,-6.24,-0.44,0.03 +1,R::LEU:442,0.0,-1.01,0.21,-0.1,-0.08,-0.98 +1,R::ILE:443,0.0,-0.29,0.03,-0.05,0.0,-0.31 +1,R::PRO:444,0.0,-2.27,1.84,-1.66,-0.46,-2.55 +1,R::ARG:445,0.0,-2.3,15.77,-13.09,-0.35,0.03 +1,R::ASN:446,0.0,-0.25,0.55,-0.22,-0.05,0.02 +1,R::THR:447,0.0,-0.16,-0.49,0.58,-0.02,-0.09 +1,R::LYS:452,0.0,-0.16,5.94,-5.74,-0.01,0.02 +1,R::LYS:453,0.0,-1.44,6.99,-4.93,-0.39,0.23 +1,R::SER:454,0.0,-1.36,0.46,0.69,-0.19,-0.41 +1,R::GLN:455,0.0,-3.28,-2.01,3.03,-0.6,-2.85 +1,R::VAL:456,0.0,-2.18,-0.42,1.11,-0.38,-1.88 +1,R::PHE:457,0.0,-1.04,0.16,0.54,-0.16,-0.49 +1,R::THR:458,0.0,-1.38,-3.33,2.4,-0.27,-2.58 +1,R::THR:459,0.0,-0.12,-0.1,0.19,0.0,-0.03 +1,R::TYR:460,0.0,-0.66,0.35,0.44,-0.2,-0.07 +1,R::GLU:475,0.0,-0.35,-15.68,16.34,-0.09,0.22 +1,R::ARG:476,0.0,-0.22,16.13,-15.76,-0.03,0.12 +1,R::SER:477,0.0,-0.78,-0.82,1.49,-0.23,-0.34 +1,R::MET:478,0.0,-0.35,0.2,-0.13,-0.08,-0.36 +1,R::ALA:496,0.0,-0.04,-0.0,0.01,0.0,-0.03 +1,R::PRO:497,0.0,-0.06,1.93,-1.91,0.0,-0.05 +1,R::ARG:498,0.0,-0.31,11.07,-10.52,-0.09,0.14 +1,R::GLY:499,0.0,-0.48,-0.37,0.45,-0.06,-0.46 +1,R::THR:500,0.0,-1.29,-0.36,1.35,-0.31,-0.6 +1,R::PRO:501,0.0,-0.14,1.14,-1.07,0.0,-0.08 +1,R::GLN:502,0.0,-3.17,-0.39,1.62,-0.4,-2.34 +1,R::ILE:503,0.0,-0.13,0.14,-0.08,0.0,-0.06 +1,R::GLU:504,0.0,0.12,-15.95,17.7,-0.21,1.66 +1,R::VAL:505,0.0,-0.11,-0.03,0.08,0.0,-0.06 +1,R::THR:506,0.0,-0.14,-0.28,0.36,0.0,-0.06 +1,R::GLU:520,0.0,-0.07,-4.74,4.88,0.0,0.07 +1,R::LYS:522,0.0,-0.95,3.97,-3.38,-0.24,-0.6 +Backbone Decomposition Contribution (BDC) +Frame #,Residue,Internal,van der Waals,Electrostatic,Polar Solvation,Non-Polar Solv.,TOTAL +1,L::THR:1,0.0,-0.36,-0.02,0.56,-0.05,0.12 +1,L::ILE:2,0.0,-0.12,-3.02,3.02,0.0,-0.11 +1,L::PHE:3,0.0,-0.18,3.72,-3.18,-0.0,0.36 +1,L::PRO:4,0.0,-0.29,4.07,-3.96,-0.08,-0.25 +1,L::GLN:5,0.0,-0.34,2.7,-2.01,0.0,0.34 +1,L::CYS:6,0.0,-0.99,-0.64,2.3,-0.16,0.51 +1,L::SER:7,0.0,-0.33,0.01,0.14,0.0,-0.18 +1,L::GLN:8,0.0,-0.62,-1.14,2.05,-0.13,0.16 +1,L::ALA:9,0.0,-0.42,2.88,-1.98,-0.01,0.46 +1,L::PRO:10,0.0,-0.83,11.47,-11.58,-0.03,-0.97 +1,L::ILE:11,0.0,-0.83,-0.49,1.18,-0.1,-0.24 +1,L::ALA:12,0.0,-0.77,-1.77,2.47,-0.05,-0.13 +1,L::SER:13,0.0,-0.18,-0.6,1.15,0.0,0.37 +1,L::LEU:14,0.0,-0.06,-0.6,0.72,0.0,0.06 +1,L::LEU:15,0.0,-0.15,0.33,-0.11,-0.02,0.05 +1,L::PRO:16,0.0,-0.48,14.02,-13.15,-0.06,0.32 +1,L::PRO:17,0.0,-1.1,14.84,-13.16,-0.2,0.38 +1,L::TYR:18,0.0,-0.49,-0.92,1.29,-0.0,-0.13 +1,L::LEU:19,0.0,-0.66,-2.91,1.95,-0.19,-1.8 +1,L::SER:20,0.0,-0.36,0.94,-0.38,-0.01,0.19 +1,L::PRO:21,0.0,-0.59,10.71,-10.59,-0.0,-0.48 +1,L::VAL:23,0.0,-0.51,0.18,0.25,-0.03,-0.1 +1,L::SER:24,0.0,-0.66,-2.89,2.03,-0.16,-1.69 +1,L::SER:25,0.0,-0.18,-0.46,1.02,0.0,0.39 +1,L::VAL:26,0.0,-0.16,-0.29,1.01,0.0,0.56 +1,L::CYS:27,0.0,-0.33,-1.89,2.52,-0.06,0.23 +1,L::GLU:28,0.0,-0.06,0.39,-0.31,0.0,0.02 +1,L::ASN:29,0.0,-0.02,0.37,-0.27,0.0,0.08 +1,L::LEU:32,0.0,-0.01,0.09,-0.06,0.0,0.01 +1,L::ARG:36,0.0,-0.01,-0.08,0.1,0.0,0.01 +1,R::ASN:252,0.0,-0.0,0.32,-0.32,0.0,0.0 +1,R::LYS:347,0.0,-0.04,-0.41,0.54,0.0,0.08 +1,R::LYS:348,0.0,-0.08,-0.41,0.51,0.0,0.02 +1,R::GLU:351,0.0,-0.23,0.2,-0.19,-0.06,-0.29 +1,R::ASP:352,0.0,-0.07,0.33,-0.29,0.0,-0.03 +1,R::GLY:354,0.0,-0.01,0.33,-0.29,0.0,0.02 +1,R::THR:429,0.0,-0.02,-0.19,0.14,0.0,-0.08 +1,R::ILE:432,0.0,-0.04,0.18,-0.2,0.0,-0.07 +1,R::GLU:433,0.0,-0.05,-0.08,0.07,0.0,-0.06 +1,R::THR:434,0.0,-0.08,-0.45,0.31,0.0,-0.22 +1,R::VAL:435,0.0,-0.06,0.08,0.1,0.0,0.12 +1,R::VAL:438,0.0,-0.12,0.52,-0.64,0.0,-0.24 +1,R::MET:439,0.0,-0.59,0.27,0.35,-0.08,-0.05 +1,R::THR:440,0.0,-0.3,-0.58,0.4,-0.0,-0.48 +1,R::LYS:441,0.0,-0.88,-0.31,1.24,-0.15,-0.1 +1,R::LEU:442,0.0,-0.61,-0.62,0.96,-0.09,-0.35 +1,R::ILE:443,0.0,-0.12,0.09,-0.01,0.0,-0.04 +1,R::PRO:444,0.0,-0.32,-2.33,2.12,0.0,-0.53 +1,R::ARG:445,0.0,-0.26,-0.29,0.35,-0.04,-0.24 +1,R::ASN:446,0.0,-0.03,-0.06,0.05,0.0,-0.03 +1,R::THR:447,0.0,-0.01,0.11,-0.11,0.0,-0.01 +1,R::LYS:452,0.0,-0.28,-0.25,0.64,-0.06,0.05 +1,R::LYS:453,0.0,-0.28,0.12,0.18,0.0,0.02 +1,R::SER:454,0.0,-1.09,0.23,0.67,-0.16,-0.35 +1,R::GLN:455,0.0,-0.32,-0.05,-0.06,0.0,-0.43 +1,R::VAL:456,0.0,-0.56,-0.29,0.54,-0.07,-0.37 +1,R::PHE:457,0.0,-0.17,0.33,-0.37,0.0,-0.21 +1,R::THR:458,0.0,-0.15,-0.4,0.47,0.0,-0.08 +1,R::THR:459,0.0,-0.11,-0.46,0.54,-0.01,-0.04 +1,R::TYR:460,0.0,-0.03,-0.2,0.21,0.0,-0.02 +1,R::GLU:475,0.0,-0.11,-0.08,0.23,0.0,0.05 +1,R::ARG:476,0.0,-0.07,0.63,-0.34,0.0,0.21 +1,R::SER:477,0.0,-0.16,0.49,-0.21,0.0,0.12 +1,R::MET:478,0.0,-0.02,-0.18,0.2,0.0,0.01 +1,R::ALA:496,0.0,-0.02,-0.01,0.01,0.0,-0.02 +1,R::PRO:497,0.0,-0.05,-1.62,1.62,0.0,-0.05 +1,R::ARG:498,0.0,-0.11,-0.48,0.62,0.0,0.02 +1,R::GLY:499,0.0,-0.98,-1.58,1.66,-0.15,-1.04 +1,R::THR:500,0.0,-0.36,2.24,-1.39,-0.03,0.45 +1,R::PRO:501,0.0,-0.22,-0.99,1.11,0.0,-0.09 +1,R::GLN:502,0.0,-0.07,-0.11,0.06,0.0,-0.12 +1,R::ILE:503,0.0,-0.07,-0.14,0.1,0.0,-0.11 +1,R::GLU:504,0.0,-0.06,0.11,-0.1,0.0,-0.05 +1,R::VAL:505,0.0,-0.06,-0.04,-0.04,0.0,-0.14 +1,R::THR:506,0.0,-0.02,0.09,-0.08,0.0,-0.01 +1,R::GLU:520,0.0,-0.02,-0.03,0.02,0.0,-0.02 +1,R::LYS:522,0.0,-0.03,-0.1,0.15,0.0,0.02 +" +" diff --git a/tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.csv b/tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.csv new file mode 100644 index 0000000..414931e --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.csv @@ -0,0 +1,418 @@ +GENERALIZED BORN: +Complex Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EGB,ESURF,GGAS,GSOLV,TOTAL +1,2758.87,6806.35,8351.68,897.61,482.96,0.0,-5420.66,-54500.7,2367.77,38613.15,-13580.55,427.28,357.03,-13153.27,-12796.24 +11,2846.99,6906.22,8372.87,910.04,491.63,0.0,-5353.78,-53794.32,2333.02,38444.12,-14146.67,439.12,1156.78,-13707.54,-12550.76 +21,2736.17,6918.52,8252.03,880.84,476.12,0.0,-5398.22,-53925.75,2291.03,38617.85,-14055.74,430.61,848.61,-13625.13,-12776.52 +31,2753.52,6931.85,8280.87,930.7,464.36,0.0,-5444.04,-54240.95,2317.88,38614.41,-13810.4,426.33,608.6,-13384.07,-12775.47 +41,2799.69,6821.59,8229.85,904.55,496.19,0.0,-5442.45,-53822.11,2349.25,38457.96,-14038.9,424.6,794.53,-13614.3,-12819.78 +51,2768.73,6850.66,8315.67,911.34,486.1,0.0,-5460.27,-54228.84,2366.71,38636.74,-13735.75,423.75,646.84,-13311.99,-12665.15 +61,2798.22,6848.33,8198.27,908.84,463.55,0.0,-5410.43,-53938.24,2371.29,38350.96,-13896.07,423.01,590.77,-13473.06,-12882.29 +71,2760.78,6909.12,8227.24,906.78,473.68,0.0,-5464.54,-54005.01,2301.14,38365.26,-13885.83,420.28,474.46,-13465.55,-12991.09 +81,2781.4,6771.74,8294.4,900.07,462.87,0.0,-5483.24,-54606.32,2322.01,38590.82,-13363.33,424.7,33.73,-12938.63,-12904.9 +91,2778.5,6737.95,8291.84,888.35,484.77,0.0,-5453.54,-54475.69,2341.86,38605.77,-13505.03,419.8,199.82,-13085.23,-12885.4 +101,2768.51,6817.2,8326.81,907.79,460.17,0.0,-5464.17,-54224.84,2378.94,38647.43,-13748.98,423.77,617.82,-13325.21,-12707.39 +111,2764.59,6857.29,8354.99,890.49,485.62,0.0,-5460.35,-54411.45,2321.16,38483.61,-13482.18,422.85,285.94,-13059.33,-12773.39 +121,2709.96,6869.53,8261.76,891.91,462.71,0.0,-5484.58,-54430.53,2325.36,38244.25,-13285.52,417.99,-149.64,-12867.53,-13017.17 +131,2740.07,6902.08,8250.95,911.37,467.63,0.0,-5526.03,-54057.58,2346.42,38418.99,-13737.45,419.79,453.9,-13317.67,-12863.77 +141,2726.85,6836.72,8231.37,922.66,478.52,0.0,-5449.57,-54405.86,2376.78,38494.23,-13504.33,427.01,211.7,-13077.32,-12865.62 +151,2743.49,6875.57,8237.42,893.89,488.63,0.0,-5446.67,-54556.38,2305.08,38498.46,-13395.26,417.0,39.48,-12978.26,-12938.78 +161,2781.69,6911.61,8280.41,885.96,463.46,0.0,-5510.9,-54286.62,2351.55,38361.93,-13493.21,411.23,239.08,-13081.97,-12842.89 +171,2740.75,6895.38,8265.93,917.99,467.16,0.0,-5484.83,-54471.16,2312.8,38388.43,-13393.45,410.98,32.46,-12982.47,-12950.01 +181,2735.9,6911.12,8273.0,892.4,481.79,0.0,-5505.74,-54356.79,2361.29,38439.25,-13449.75,405.88,232.21,-13043.87,-12811.66 +191,2729.16,6865.38,8278.63,912.16,452.99,0.0,-5462.06,-54323.27,2368.63,38407.8,-13595.5,409.7,229.41,-13185.79,-12956.38 +201,2791.82,6718.04,8178.14,878.58,471.46,0.0,-5579.46,-54122.43,2316.8,38438.82,-13642.13,408.94,91.77,-13233.18,-13141.41 +211,2686.94,6786.16,8250.51,882.52,483.55,0.0,-5500.57,-54059.78,2345.08,38398.16,-13825.43,409.11,272.59,-13416.31,-13143.73 +221,2788.76,6847.86,8288.41,903.02,495.37,0.0,-5554.81,-53977.14,2305.13,38260.37,-13763.49,416.24,356.95,-13347.25,-12990.3 +231,2773.41,6883.36,8277.84,916.35,501.53,0.0,-5550.53,-54432.79,2363.96,38355.32,-13453.39,406.57,88.44,-13046.82,-12958.38 +241,2750.33,6842.56,8247.73,894.31,475.42,0.0,-5581.37,-53896.87,2346.27,38505.04,-13944.52,416.57,583.42,-13527.95,-12944.53 +251,2718.24,6886.79,8226.91,896.19,473.41,0.0,-5486.28,-53963.33,2362.36,38580.76,-13909.84,412.95,695.04,-13496.89,-12801.86 +261,2749.83,6833.6,8245.07,898.66,459.01,0.0,-5545.73,-54175.09,2321.02,38497.1,-13706.76,407.38,283.47,-13299.38,-13015.92 +271,2832.3,6785.84,8217.65,891.06,487.85,0.0,-5558.67,-54277.48,2372.74,38352.56,-13502.62,405.79,103.85,-13096.83,-12992.98 +281,2804.68,6882.23,8200.01,905.17,454.18,0.0,-5593.05,-54681.93,2319.98,38406.27,-13136.54,404.68,-302.47,-12731.86,-13034.33 +291,2747.97,6848.62,8206.66,901.07,476.04,0.0,-5551.08,-54923.33,2318.29,38462.1,-12986.5,402.0,-513.65,-12584.49,-13098.14 +301,2760.81,6978.48,8293.64,902.64,453.8,0.0,-5515.7,-54421.7,2283.61,38455.8,-13440.62,413.97,191.38,-13026.65,-12835.27 +311,2786.88,6840.5,8234.67,901.03,516.72,0.0,-5514.09,-54512.35,2332.43,38456.63,-13362.65,415.1,42.43,-12947.55,-12905.13 +321,2750.08,6810.52,8246.19,918.1,451.61,0.0,-5585.72,-54300.85,2274.72,38412.09,-13524.63,408.08,-23.27,-13116.55,-13139.81 +331,2771.54,6841.18,8244.22,896.66,465.57,0.0,-5496.67,-53838.22,2330.44,38376.07,-13994.73,413.41,590.79,-13581.32,-12990.52 +341,2730.55,6795.39,8307.09,904.21,486.82,0.0,-5557.79,-53967.36,2304.99,38321.94,-13733.28,407.01,325.83,-13326.27,-13000.44 +351,2792.98,6884.9,8248.05,929.55,502.18,0.0,-5558.63,-54099.94,2304.19,38296.14,-13569.25,408.96,299.43,-13160.29,-12860.85 +361,2761.94,6893.6,8237.98,901.57,498.48,0.0,-5566.92,-54296.66,2347.76,38313.67,-13455.21,402.23,91.42,-13052.98,-12961.56 +371,2771.22,6805.42,8300.79,904.29,473.52,0.0,-5550.85,-53991.98,2356.79,38361.41,-13783.66,412.0,430.63,-13371.65,-12941.02 +381,2827.3,6875.69,8242.03,920.24,484.95,0.0,-5505.71,-54198.85,2366.29,38283.1,-13577.75,409.13,295.03,-13168.62,-12873.59 +391,2720.27,6768.86,8235.69,886.79,489.18,0.0,-5557.49,-54650.67,2323.5,38461.57,-13191.29,407.89,-322.3,-12783.4,-13105.7 +401,2779.56,6766.1,8192.41,879.79,466.32,0.0,-5555.84,-54376.73,2308.59,38594.49,-13520.95,410.64,54.69,-13110.32,-13055.63 +411,2751.95,6824.15,8251.94,895.35,497.99,0.0,-5520.19,-54331.15,2320.54,38408.23,-13531.53,406.76,98.82,-13124.77,-13025.96 +421,2801.2,6905.82,8277.57,890.44,466.57,0.0,-5502.25,-54509.17,2290.39,38377.2,-13379.49,407.6,-2.23,-12971.9,-12974.13 +431,2798.89,6752.67,8243.73,890.89,458.14,0.0,-5522.81,-54429.71,2265.95,38499.73,-13503.94,411.25,-42.53,-13092.7,-13135.23 +441,2747.43,6884.37,8278.36,902.65,477.19,0.0,-5484.57,-54225.93,2338.35,38334.11,-13550.29,411.9,251.96,-13138.4,-12886.44 +451,2869.57,6839.46,8201.4,934.96,452.89,0.0,-5516.53,-54054.94,2329.94,38319.46,-13732.89,411.19,376.2,-13321.7,-12945.5 +461,2805.16,6930.31,8263.31,895.48,480.38,0.0,-5525.23,-54217.32,2308.19,38195.74,-13452.7,401.63,136.02,-13051.07,-12915.05 +471,2761.4,6869.57,8246.77,903.5,484.67,0.0,-5551.61,-54303.76,2350.06,38309.5,-13456.34,401.99,70.1,-13054.35,-12984.25 +481,2740.97,6892.2,8212.15,918.29,473.56,0.0,-5571.72,-54414.54,2317.44,38370.62,-13397.15,403.31,-61.03,-12993.83,-13054.86 +491,2827.45,6900.3,8229.27,935.15,482.3,0.0,-5525.64,-54191.6,2280.37,38348.88,-13628.18,408.99,286.48,-13219.18,-12932.7 +501,2819.63,6809.46,8192.18,912.62,502.72,0.0,-5554.94,-54273.49,2334.91,38336.98,-13486.79,409.02,80.07,-13077.78,-12997.7 +511,2807.87,6846.84,8250.98,898.11,480.61,0.0,-5633.79,-54141.63,2337.38,38427.12,-13629.8,402.47,273.49,-13227.32,-12953.83 +521,2744.01,6835.64,8244.67,896.65,470.56,0.0,-5654.29,-54275.08,2311.72,38382.78,-13441.1,402.33,-43.32,-13038.77,-13082.09 +531,2741.15,7047.16,8221.71,915.86,452.25,0.0,-5503.77,-54391.59,2258.89,38128.51,-13387.89,402.94,-129.84,-12984.94,-13114.78 +541,2753.06,6807.27,8274.55,872.84,469.32,0.0,-5541.17,-54034.78,2340.39,38308.65,-13675.09,409.88,250.13,-13265.21,-13015.08 +551,2748.77,6852.26,8181.07,897.99,451.87,0.0,-5546.29,-53931.06,2350.92,38312.13,-13753.93,410.58,317.67,-13343.34,-13025.67 +561,2761.67,6925.78,8190.38,902.88,486.05,0.0,-5540.17,-54067.16,2295.71,38186.56,-13630.03,408.85,141.69,-13221.18,-13079.49 +571,2842.47,6841.66,8232.53,905.19,475.91,0.0,-5557.9,-54217.69,2323.11,38290.49,-13561.97,404.99,135.77,-13156.98,-13021.21 +581,2819.44,6926.25,8256.02,919.75,475.73,0.0,-5616.98,-54062.69,2311.0,38323.66,-13674.76,409.71,352.18,-13265.05,-12912.87 +591,2782.03,6828.27,8201.05,904.19,477.54,0.0,-5577.39,-54585.96,2332.87,38469.12,-13281.66,402.36,-168.29,-12879.3,-13047.59 +601,2769.15,6853.36,8270.55,918.78,453.72,0.0,-5628.82,-54409.13,2311.74,38417.19,-13433.37,398.34,-43.44,-13035.03,-13078.47 +611,2784.5,6955.7,8227.73,923.5,489.92,0.0,-5645.76,-54321.41,2303.6,38378.05,-13446.3,399.25,95.84,-13047.05,-12951.21 +621,2783.64,6880.0,8144.08,880.46,465.06,0.0,-5544.36,-53746.09,2343.92,38287.72,-13944.92,406.01,494.43,-13538.92,-13044.49 +631,2759.31,6875.68,8223.65,894.18,484.99,0.0,-5499.56,-53935.7,2305.77,38395.78,-13840.67,412.17,504.1,-13428.5,-12924.4 +641,2716.47,6958.66,8180.58,905.64,479.41,0.0,-5536.37,-54014.95,2356.79,38394.61,-13769.39,409.77,440.84,-13359.61,-12918.77 +651,2801.72,6877.78,8308.33,886.49,484.67,0.0,-5609.34,-53915.62,2305.44,38343.52,-13808.79,407.94,482.98,-13400.85,-12917.87 +661,2716.88,6947.96,8164.13,890.23,477.14,0.0,-5513.36,-54604.65,2325.42,38567.82,-13339.01,407.5,-28.45,-12931.51,-12959.96 +671,2794.33,6942.49,8218.02,904.35,498.85,0.0,-5495.19,-54557.65,2336.5,38400.7,-13346.7,413.56,42.39,-12933.14,-12890.74 +681,2717.14,6895.08,8227.5,894.38,438.02,0.0,-5497.55,-54330.52,2292.77,38434.42,-13531.89,418.13,71.23,-13113.76,-13042.53 +691,2707.55,6873.99,8253.99,901.76,490.38,0.0,-5568.17,-54124.71,2339.38,38392.18,-13616.11,413.18,266.36,-13202.93,-12936.57 +701,2809.1,7035.27,8200.3,938.54,493.19,0.0,-5578.89,-53982.51,2313.79,38306.02,-13773.36,404.79,534.82,-13368.57,-12833.75 +711,2732.1,6867.04,8204.26,890.96,456.38,0.0,-5564.78,-54183.19,2322.29,38380.05,-13611.46,407.72,105.12,-13203.73,-13098.62 +721,2755.38,6882.37,8271.08,910.74,469.28,0.0,-5594.56,-53765.63,2317.81,38348.41,-14015.95,410.25,594.89,-13605.7,-13010.81 +731,2696.14,6824.23,8266.06,894.92,462.28,0.0,-5589.32,-54059.97,2271.26,38319.03,-13688.6,405.74,84.64,-13282.86,-13198.23 +741,2780.32,6796.51,8231.31,894.9,478.76,0.0,-5551.55,-54206.07,2302.45,38380.2,-13586.29,415.48,106.82,-13170.81,-13063.99 +751,2767.6,6953.29,8191.88,885.18,468.37,0.0,-5638.95,-53812.52,2354.19,38392.68,-13962.44,410.97,561.71,-13551.47,-12989.76 +761,2791.0,6940.54,8281.13,912.53,462.37,0.0,-5711.32,-54047.85,2314.33,38370.13,-13680.17,402.95,312.87,-13277.22,-12964.35 +771,2672.28,6894.42,8260.9,905.38,489.9,0.0,-5604.75,-54030.17,2342.35,38436.28,-13752.09,406.44,366.59,-13345.64,-12979.06 +781,2762.58,6907.69,8249.92,891.44,462.91,0.0,-5648.76,-53867.68,2334.55,38267.75,-13738.24,408.66,360.39,-13329.58,-12969.18 +791,2747.79,6924.95,8253.54,905.0,497.43,0.0,-5557.73,-54187.47,2303.89,38267.83,-13598.71,411.29,155.23,-13187.42,-13032.18 +801,2786.94,6824.43,8283.4,887.96,472.0,0.0,-5651.76,-53818.88,2308.64,38305.5,-13829.86,406.89,398.24,-13422.96,-13024.73 +811,2828.67,6834.72,8301.46,921.16,491.96,0.0,-5576.48,-53824.7,2337.29,38332.94,-13864.76,411.07,647.02,-13453.69,-12806.67 +821,2771.18,6860.36,8271.89,898.47,495.36,0.0,-5577.38,-54413.28,2264.57,38491.14,-13472.91,412.99,62.32,-13059.92,-12997.6 +831,2722.61,6816.82,8214.38,900.35,487.5,0.0,-5574.06,-54393.91,2355.75,38368.53,-13402.57,404.71,-102.03,-12997.86,-13099.89 +841,2734.01,6889.94,8230.06,903.69,451.41,0.0,-5564.02,-54389.02,2346.74,38570.27,-13587.12,405.43,173.07,-13181.69,-13008.62 +851,2677.94,6881.41,8229.9,893.49,495.45,0.0,-5618.52,-54361.68,2319.91,38405.82,-13514.55,404.83,-76.27,-13109.72,-13185.99 +861,2786.72,6807.99,8276.14,908.26,467.98,0.0,-5532.52,-54394.17,2327.38,38426.01,-13456.03,414.21,73.79,-13041.81,-12968.02 +871,2764.57,6859.75,8279.55,920.03,449.65,0.0,-5637.17,-54389.78,2340.99,38695.42,-13682.72,402.91,283.02,-13279.8,-12996.78 +881,2772.13,6806.73,8261.27,899.93,472.62,0.0,-5540.09,-54470.45,2332.39,38514.94,-13567.29,412.45,49.47,-13154.84,-13105.37 +891,2868.33,6864.5,8242.07,901.56,471.48,0.0,-5636.86,-54257.5,2300.81,38453.38,-13593.82,411.53,207.77,-13182.28,-12974.51 +901,2812.79,6954.36,8271.03,922.29,490.25,0.0,-5588.8,-54435.32,2334.32,38554.82,-13487.45,415.28,315.75,-13072.17,-12756.43 +911,2776.65,6951.54,8198.03,909.64,500.05,0.0,-5575.99,-54446.34,2341.65,38331.59,-13325.92,408.57,-13.18,-12917.35,-12930.53 +921,2747.81,6872.41,8267.41,903.79,449.32,0.0,-5598.42,-54561.25,2297.6,38555.72,-13333.71,409.08,-65.61,-12924.63,-12990.24 +931,2800.2,6786.74,8243.57,895.23,484.4,0.0,-5550.52,-54141.0,2318.19,38506.79,-13722.42,408.35,343.61,-13314.07,-12970.46 +941,2785.87,6904.18,8298.39,889.96,511.04,0.0,-5543.48,-54297.35,2310.31,38389.98,-13447.83,409.43,248.9,-13038.4,-12789.5 +951,2823.81,6804.95,8258.0,898.28,484.35,0.0,-5522.7,-54991.74,2331.95,38581.82,-13092.64,410.08,-331.28,-12682.56,-13013.84 +961,2746.38,6815.12,8180.56,895.74,454.16,0.0,-5604.46,-54412.43,2323.7,38629.02,-13483.55,409.67,27.79,-13073.88,-13046.09 +971,2704.88,6812.69,8223.06,891.7,490.49,0.0,-5619.82,-54117.16,2299.37,38471.33,-13726.73,407.07,156.55,-13319.66,-13163.11 +981,2711.36,6887.29,8164.3,888.28,474.44,0.0,-5612.48,-54434.29,2313.92,38509.22,-13478.78,407.62,-97.97,-13071.16,-13169.12 +991,2776.71,6801.09,8196.07,890.51,467.09,0.0,-5598.05,-54852.64,2353.02,38814.1,-13281.84,404.43,-152.11,-12877.4,-13029.51 +1001,2811.83,6905.08,8230.36,912.63,473.57,0.0,-5647.67,-54299.29,2304.99,38381.53,-13429.61,404.75,73.02,-13024.86,-12951.84 + +Receptor Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EGB,ESURF,GGAS,GSOLV,TOTAL +1,2089.71,5037.29,6304.72,664.0,371.33,0.0,-4391.28,-41568.45,1702.26,27859.33,-12306.61,276.24,-1931.08,-12030.37,-13961.45 +11,2120.7,5128.52,6340.02,681.92,365.5,0.0,-4327.97,-40905.53,1666.53,27779.01,-12875.17,289.85,-1151.3,-12585.32,-13736.61 +21,2073.51,5093.54,6274.96,658.03,359.68,0.0,-4303.57,-41101.54,1635.01,27830.86,-12694.47,288.98,-1479.52,-12405.5,-13885.01 +31,2053.09,5121.46,6276.32,680.07,339.86,0.0,-4272.92,-41461.47,1667.75,27946.54,-12489.07,293.07,-1649.29,-12196.0,-13845.29 +41,2086.88,5042.23,6243.76,673.03,376.07,0.0,-4274.1,-41027.92,1688.06,27792.79,-12740.09,294.13,-1399.21,-12445.96,-13845.17 +51,2098.2,5114.37,6277.14,679.45,372.84,0.0,-4261.88,-41308.78,1688.92,27833.18,-12490.61,293.94,-1506.58,-12196.68,-13703.26 +61,2086.11,5078.5,6194.97,677.31,365.66,0.0,-4226.86,-41149.24,1689.08,27679.64,-12572.08,294.38,-1604.83,-12277.71,-13882.54 +71,2091.32,5109.45,6198.33,671.41,367.1,0.0,-4245.51,-41209.83,1653.1,27656.87,-12551.54,295.09,-1707.77,-12256.45,-13964.22 +81,2092.49,5014.3,6254.95,668.84,350.57,0.0,-4271.1,-41634.77,1640.83,27773.5,-12100.09,298.17,-2110.4,-11801.92,-13912.32 +91,2114.29,5006.25,6262.22,656.43,370.59,0.0,-4233.86,-41635.51,1677.68,27818.04,-12188.07,293.65,-1963.87,-11894.42,-13858.29 +101,2102.53,5019.66,6282.6,675.54,344.42,0.0,-4260.25,-41336.52,1698.92,27803.13,-12401.32,295.58,-1669.97,-12105.74,-13775.72 +111,2052.18,5104.14,6305.25,655.58,367.39,0.0,-4252.87,-41553.48,1669.92,27766.51,-12246.5,300.32,-1885.37,-11946.17,-13831.54 +121,2025.61,5110.79,6247.14,660.84,357.12,0.0,-4238.74,-41715.83,1681.06,27602.42,-11984.13,293.81,-2269.61,-11690.32,-13959.93 +131,2056.56,5110.4,6250.64,671.4,354.79,0.0,-4287.86,-41186.02,1679.93,27748.34,-12529.15,296.93,-1601.81,-12232.23,-13834.04 +141,2075.58,5001.82,6214.72,675.81,361.98,0.0,-4245.07,-41507.01,1694.02,27809.15,-12281.15,299.34,-1918.99,-11981.81,-13900.8 +151,2084.9,5076.59,6235.19,666.52,371.97,0.0,-4268.03,-41614.61,1653.65,27802.9,-12186.57,288.88,-1990.91,-11897.69,-13888.6 +161,2069.6,5121.78,6263.94,654.73,349.4,0.0,-4311.82,-41384.7,1686.84,27654.15,-12264.24,286.72,-1896.08,-11977.52,-13873.61 +171,2088.59,5072.06,6244.23,679.28,360.16,0.0,-4270.87,-41608.45,1652.96,27650.06,-12143.88,286.15,-2131.97,-11857.73,-13989.7 +181,2057.14,5119.03,6235.88,656.45,377.61,0.0,-4279.38,-41470.66,1678.71,27733.26,-12254.11,285.23,-1891.96,-11968.88,-13860.84 +191,2041.87,5075.35,6261.96,677.51,342.58,0.0,-4255.25,-41393.53,1699.6,27672.4,-12354.88,286.76,-1877.52,-12068.12,-13945.64 +201,2103.94,4960.72,6174.38,650.79,356.42,0.0,-4320.11,-41219.5,1676.33,27713.96,-12442.43,287.82,-1903.07,-12154.62,-14057.69 +211,2043.19,5022.46,6262.61,652.68,369.37,0.0,-4301.38,-41050.55,1663.53,27615.78,-12624.28,285.54,-1722.3,-12338.74,-14061.04 +221,2100.52,5082.98,6293.21,669.68,382.18,0.0,-4343.92,-41155.64,1642.57,27583.88,-12474.55,290.76,-1744.53,-12183.79,-13928.32 +231,2098.05,5126.9,6264.47,689.71,383.41,0.0,-4302.55,-41575.2,1696.28,27682.8,-12209.06,285.84,-1936.12,-11923.23,-13859.35 +241,2084.73,5048.22,6236.41,668.14,360.65,0.0,-4362.75,-41001.9,1686.46,27728.86,-12675.0,290.14,-1551.17,-12384.86,-13936.03 +251,2054.35,5094.85,6221.51,668.13,369.76,0.0,-4303.87,-41071.45,1687.28,27853.62,-12663.7,288.36,-1425.82,-12375.34,-13801.16 +261,2074.0,5055.72,6247.37,677.89,363.06,0.0,-4346.6,-41206.75,1675.48,27746.35,-12515.39,284.74,-1713.48,-12230.65,-13944.14 +271,2111.45,5046.69,6214.06,659.03,359.36,0.0,-4295.28,-41388.16,1706.08,27690.09,-12301.59,284.78,-1896.69,-12016.81,-13913.5 +281,2093.52,5086.61,6205.3,670.06,346.76,0.0,-4322.34,-41775.64,1648.43,27657.83,-11928.62,286.67,-2389.47,-11641.94,-14031.42 +291,2044.9,5082.9,6213.02,667.6,367.64,0.0,-4311.96,-41977.52,1661.34,27771.9,-11786.35,283.31,-2480.2,-11503.04,-13983.24 +301,2065.84,5197.14,6288.64,674.41,346.91,0.0,-4285.94,-41585.59,1648.33,27775.35,-12181.42,289.76,-1874.92,-11891.67,-13766.59 +311,2102.41,5069.14,6236.49,673.17,391.66,0.0,-4316.18,-41686.65,1663.67,27723.78,-12014.61,286.6,-2142.53,-11728.01,-13870.54 +321,2062.79,5089.7,6208.21,690.34,342.43,0.0,-4379.88,-41482.45,1634.29,27715.68,-12215.02,283.63,-2118.89,-11931.39,-14050.28 +331,2075.03,5108.32,6220.81,663.73,358.1,0.0,-4307.95,-41172.13,1667.31,27800.95,-12604.36,290.96,-1585.84,-12313.41,-13899.25 +341,2022.76,5061.91,6268.1,672.74,364.94,0.0,-4310.46,-41121.08,1656.39,27615.39,-12448.81,288.03,-1769.32,-12160.78,-13930.1 +351,2075.42,5135.17,6232.66,696.94,378.16,0.0,-4304.1,-41297.45,1640.97,27659.26,-12295.13,289.51,-1782.97,-12005.62,-13788.59 +361,2090.22,5123.51,6220.05,674.96,369.28,0.0,-4300.02,-41627.89,1685.72,27683.77,-12107.15,283.19,-2080.4,-11823.97,-13904.36 +371,2056.89,5049.37,6285.16,673.84,355.19,0.0,-4315.05,-41304.18,1707.08,27723.53,-12404.87,291.28,-1768.17,-12113.59,-13881.76 +381,2134.98,5095.88,6252.71,682.39,377.31,0.0,-4251.36,-41464.87,1672.87,27622.01,-12208.3,289.32,-1878.1,-11918.98,-13797.08 +391,2027.28,5020.44,6227.16,659.73,377.86,0.0,-4269.35,-41863.02,1670.74,27716.95,-11867.77,292.21,-2432.21,-11575.57,-14007.78 +401,2090.94,4989.95,6199.21,655.75,358.12,0.0,-4303.52,-41559.66,1653.41,27815.69,-12178.66,294.04,-2100.09,-11884.62,-13984.71 +411,2072.71,5073.39,6247.39,675.27,384.31,0.0,-4263.0,-41572.54,1673.27,27735.9,-12178.86,289.33,-1973.3,-11889.53,-13862.83 +421,2074.84,5142.47,6255.16,660.72,358.63,0.0,-4249.32,-41788.16,1643.28,27731.01,-11995.84,291.71,-2171.38,-11704.13,-13875.51 +431,2128.71,4986.8,6241.0,663.78,346.49,0.0,-4256.03,-41690.91,1618.84,27832.34,-12175.35,294.51,-2128.98,-11880.85,-14009.82 +441,2068.92,5096.74,6279.33,678.98,370.76,0.0,-4253.61,-41564.02,1662.8,27707.32,-12177.89,291.4,-1952.77,-11886.49,-13839.25 +451,2144.25,5010.79,6202.21,692.95,347.53,0.0,-4251.83,-41394.31,1661.08,27717.18,-12375.78,292.83,-1870.16,-12082.95,-13953.11 +461,2102.36,5123.88,6266.73,668.6,378.17,0.0,-4253.97,-41638.01,1670.7,27603.06,-12030.3,285.93,-2078.48,-11744.37,-13822.85 +471,2053.39,5058.33,6256.7,673.56,377.17,0.0,-4294.21,-41648.7,1703.55,27671.14,-12053.08,286.05,-2149.08,-11767.02,-13916.1 +481,2076.99,5103.5,6227.89,675.25,361.16,0.0,-4265.38,-41712.47,1647.8,27715.01,-12048.24,290.22,-2170.26,-11758.02,-13928.27 +491,2142.57,5115.45,6195.65,691.27,376.39,0.0,-4254.0,-41462.53,1630.9,27651.25,-12255.83,293.79,-1913.05,-11962.04,-13875.09 +501,2124.1,5039.84,6196.72,671.1,393.88,0.0,-4281.46,-41498.11,1669.1,27609.93,-12151.31,292.46,-2074.91,-11858.85,-13933.76 +511,2127.97,5039.21,6217.87,675.57,345.26,0.0,-4313.22,-41347.89,1677.56,27722.99,-12326.08,290.53,-1854.68,-12035.55,-13890.23 +521,2022.13,5017.58,6216.65,665.93,355.94,0.0,-4329.38,-41446.35,1678.23,27720.28,-12191.51,293.57,-2099.0,-11897.93,-13996.93 +531,2117.58,5224.69,6231.88,691.76,350.64,0.0,-4224.99,-41534.31,1605.92,27360.18,-12083.53,289.94,-2176.66,-11793.59,-13970.24 +541,2052.55,5073.46,6262.91,648.22,350.59,0.0,-4282.31,-41215.62,1666.95,27543.23,-12301.58,292.68,-1900.01,-12008.9,-13908.9 +551,2048.03,5067.75,6178.5,667.28,344.98,0.0,-4249.67,-41129.67,1678.14,27603.51,-12438.36,295.54,-1791.15,-12142.82,-13933.97 +561,2074.75,5132.72,6217.53,674.58,371.89,0.0,-4269.88,-41179.25,1646.92,27505.55,-12412.03,294.47,-1825.19,-12117.56,-13942.75 +571,2147.92,5077.01,6225.4,676.16,360.9,0.0,-4257.88,-41393.02,1663.04,27600.48,-12263.48,292.65,-1900.0,-11970.83,-13870.83 +581,2115.17,5144.7,6216.24,680.48,353.18,0.0,-4314.38,-41240.26,1667.67,27623.01,-12365.44,294.7,-1754.21,-12070.75,-13824.96 +591,2089.9,5052.06,6191.0,670.48,371.05,0.0,-4242.58,-41728.42,1678.76,27745.22,-12022.75,291.39,-2172.54,-11731.36,-13903.89 +601,2088.03,5094.16,6233.76,679.85,355.7,0.0,-4298.97,-41559.34,1652.3,27675.69,-12191.11,289.56,-2078.82,-11901.55,-13980.37 +611,2065.67,5185.37,6211.5,694.52,380.87,0.0,-4330.1,-41514.5,1646.32,27683.65,-12145.71,288.67,-1976.7,-11857.04,-13833.74 +621,2107.93,5059.35,6135.52,659.21,352.61,0.0,-4263.07,-40945.92,1685.56,27670.45,-12692.76,292.15,-1538.35,-12400.61,-13938.96 +631,2100.37,5061.82,6212.63,659.86,374.09,0.0,-4219.63,-41082.3,1640.36,27667.07,-12610.09,298.95,-1585.73,-12311.14,-13896.87 +641,2039.03,5160.79,6193.27,667.81,363.69,0.0,-4269.25,-41195.68,1698.76,27764.84,-12556.87,294.18,-1576.74,-12262.69,-13839.43 +651,2108.63,5130.02,6259.62,659.22,361.15,0.0,-4298.42,-41149.3,1638.67,27628.7,-12487.03,293.6,-1661.72,-12193.43,-13855.15 +661,2039.98,5169.64,6164.14,656.4,371.39,0.0,-4271.81,-41651.7,1643.72,27789.31,-12112.45,292.36,-2088.93,-11820.09,-13909.02 +671,2105.56,5115.56,6193.12,663.79,375.05,0.0,-4238.48,-41762.72,1655.04,27792.86,-12093.64,295.15,-2100.21,-11798.49,-13898.7 +681,2025.21,5112.53,6192.85,656.28,346.26,0.0,-4215.93,-41638.89,1642.2,27783.47,-12189.63,298.63,-2096.02,-11890.99,-13987.01 +691,2069.12,5103.41,6217.82,668.66,373.02,0.0,-4317.18,-41362.54,1665.86,27754.75,-12348.62,295.15,-1827.06,-12053.48,-13880.54 +701,2119.09,5266.98,6179.82,706.69,382.57,0.0,-4250.49,-41146.55,1665.1,27597.16,-12515.8,295.65,-1479.63,-12220.14,-13699.77 +711,2033.47,5049.0,6185.06,658.64,339.86,0.0,-4272.86,-41434.97,1660.26,27782.87,-12329.44,294.28,-1998.66,-12035.16,-14033.82 +721,2057.29,5146.96,6209.96,672.25,352.55,0.0,-4287.37,-40951.14,1646.44,27655.36,-12741.39,298.02,-1497.72,-12443.37,-13941.09 +731,2005.36,5065.61,6249.93,664.69,350.72,0.0,-4270.13,-41229.36,1631.3,27685.25,-12470.47,295.26,-1846.63,-12175.21,-14021.84 +741,2082.37,5017.19,6191.04,663.81,358.55,0.0,-4265.01,-41387.2,1647.77,27689.21,-12314.38,300.11,-2002.28,-12014.27,-14016.54 +751,2067.47,5158.56,6169.29,651.47,347.34,0.0,-4308.37,-41009.71,1689.94,27734.5,-12679.75,299.82,-1499.51,-12379.93,-13879.44 +761,2059.27,5144.12,6248.8,675.3,358.65,0.0,-4340.6,-41202.58,1656.01,27641.19,-12423.87,294.01,-1759.84,-12129.86,-13889.71 +771,2002.22,5126.02,6211.62,666.45,371.37,0.0,-4305.15,-41188.56,1693.05,27709.96,-12491.86,295.35,-1713.03,-12196.51,-13909.54 +781,2077.93,5173.9,6222.76,668.89,359.93,0.0,-4341.45,-41018.3,1677.85,27560.57,-12458.9,296.22,-1617.92,-12162.68,-13780.6 +791,2073.52,5131.32,6238.81,675.11,381.08,0.0,-4261.57,-41365.75,1668.56,27568.45,-12322.68,296.78,-1890.47,-12025.9,-13916.37 +801,2107.7,5045.12,6262.64,654.39,357.67,0.0,-4323.5,-41044.32,1659.16,27581.15,-12500.21,294.18,-1699.99,-12206.03,-13906.02 +811,2128.17,5087.33,6246.19,678.73,370.36,0.0,-4319.84,-40927.32,1655.63,27612.69,-12614.93,294.87,-1468.06,-12320.07,-13788.12 +821,2063.22,5107.42,6245.56,679.06,377.31,0.0,-4287.46,-41510.31,1630.81,27794.29,-12263.74,294.41,-1900.11,-11969.33,-13869.44 +831,2081.4,5022.39,6196.02,661.3,368.58,0.0,-4311.23,-41501.61,1677.88,27662.99,-12185.14,288.94,-2142.28,-11896.19,-14038.47 +841,2052.31,5142.11,6185.91,678.0,346.4,0.0,-4254.53,-41447.71,1676.92,27826.91,-12398.14,294.46,-1793.67,-12103.68,-13897.35 +851,2036.62,5144.95,6226.81,668.72,370.94,0.0,-4287.86,-41349.55,1668.2,27673.81,-12381.85,296.55,-1847.37,-12085.29,-13932.66 +861,2057.0,5045.45,6217.24,677.63,355.07,0.0,-4273.49,-41519.92,1675.53,27749.19,-12228.03,297.41,-2016.3,-11930.62,-13946.92 +871,2064.82,5089.41,6230.37,677.42,345.72,0.0,-4284.05,-41397.16,1683.03,27910.97,-12503.98,294.94,-1679.47,-12209.04,-13888.51 +881,2065.51,5046.19,6227.03,671.42,372.15,0.0,-4252.77,-41473.07,1700.51,27810.0,-12400.59,297.93,-1833.04,-12102.65,-13935.69 +891,2165.75,5029.77,6177.9,667.69,354.06,0.0,-4306.56,-41262.88,1656.4,27717.82,-12475.02,300.14,-1800.05,-12174.88,-13974.93 +901,2127.85,5187.82,6243.6,684.02,377.97,0.0,-4271.65,-41539.68,1676.95,27873.53,-12334.22,302.13,-1639.57,-12032.09,-13671.66 +911,2113.69,5168.0,6185.53,679.1,378.71,0.0,-4238.89,-41460.1,1679.27,27621.51,-12228.03,297.74,-1873.16,-11930.29,-13803.45 +921,2082.83,5168.83,6226.93,675.31,346.92,0.0,-4318.89,-41570.38,1647.52,27842.55,-12225.89,297.88,-1898.37,-11928.01,-13826.38 +931,2102.0,5046.97,6220.97,672.8,357.61,0.0,-4257.29,-41185.04,1678.73,27836.1,-12623.32,296.29,-1527.14,-12327.03,-13854.17 +941,2099.62,5099.31,6242.54,664.76,382.64,0.0,-4209.09,-41238.62,1651.43,27691.09,-12437.33,299.08,-1616.31,-12138.25,-13754.56 +951,2117.62,5026.7,6244.84,660.41,366.94,0.0,-4214.57,-41978.44,1694.1,27823.76,-11947.29,296.59,-2258.65,-11650.7,-13909.35 +961,2064.56,5038.87,6163.96,662.74,347.52,0.0,-4285.94,-41428.82,1661.16,27879.06,-12359.11,298.44,-1896.9,-12060.68,-13957.57 +971,2081.72,5061.28,6200.65,658.14,360.6,0.0,-4298.19,-41176.05,1638.76,27750.46,-12569.95,295.43,-1722.63,-12274.52,-13997.15 +981,2026.9,5144.5,6147.22,659.01,360.38,0.0,-4295.49,-41468.89,1657.36,27777.31,-12334.53,296.96,-1991.71,-12037.57,-14029.28 +991,2122.7,5057.16,6159.08,662.15,355.69,0.0,-4277.54,-41782.62,1686.99,28016.37,-12181.13,294.46,-2000.03,-11886.67,-13886.69 +1001,2111.86,5107.01,6201.81,678.58,359.61,0.0,-4339.06,-41298.81,1641.32,27660.63,-12353.19,294.27,-1877.05,-12058.92,-13935.97 + +Ligand Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EGB,ESURF,GGAS,GSOLV,TOTAL +1,669.16,1769.06,2046.96,233.61,111.63,0.0,-935.57,-12777.29,665.51,10753.82,-1486.04,164.21,2536.87,-1321.83,1215.04 +11,726.28,1777.7,2032.84,228.12,126.13,0.0,-960.53,-12651.04,666.49,10665.11,-1540.51,159.99,2611.11,-1380.52,1230.59 +21,662.67,1824.98,1977.06,222.82,116.45,0.0,-1026.89,-12639.39,656.02,10787.0,-1585.9,151.57,2580.71,-1434.33,1146.38 +31,700.43,1810.39,2004.55,250.63,124.5,0.0,-1093.64,-12580.88,650.12,10667.88,-1562.6,144.82,2533.97,-1417.77,1116.19 +41,712.81,1779.36,1986.09,231.52,120.12,0.0,-1092.71,-12594.59,661.19,10665.17,-1535.73,141.53,2468.97,-1394.2,1074.77 +51,670.54,1736.29,2038.53,231.9,113.26,0.0,-1131.36,-12708.59,677.79,10803.56,-1490.23,139.73,2431.92,-1350.51,1081.41 +61,712.11,1769.83,2003.3,231.52,97.9,0.0,-1113.73,-12626.66,682.2,10671.32,-1525.34,139.18,2427.79,-1386.16,1041.62 +71,669.46,1799.68,2028.9,235.38,106.59,0.0,-1148.36,-12682.06,648.05,10708.4,-1485.0,135.3,2366.03,-1349.7,1016.33 +81,688.91,1757.44,2039.45,231.22,112.3,0.0,-1140.18,-12792.98,681.17,10817.33,-1485.41,137.03,2394.67,-1348.38,1046.3 +91,664.21,1731.71,2029.62,231.92,114.19,0.0,-1162.62,-12709.88,664.18,10787.74,-1494.72,135.05,2351.07,-1359.67,991.4 +101,665.97,1797.54,2044.21,232.25,115.75,0.0,-1142.53,-12764.85,680.01,10844.3,-1518.63,136.37,2472.65,-1382.26,1090.4 +111,712.41,1753.15,2049.74,234.91,118.23,0.0,-1153.52,-12661.23,651.23,10717.09,-1482.07,130.67,2422.01,-1351.4,1070.61 +121,684.35,1758.74,2014.62,231.07,105.6,0.0,-1189.31,-12561.92,644.3,10641.83,-1499.52,131.55,2329.28,-1367.97,961.3 +131,683.5,1791.69,2000.31,239.97,112.84,0.0,-1185.62,-12706.79,666.49,10670.64,-1417.45,130.35,2273.03,-1287.09,985.94 +141,651.27,1834.91,2016.65,246.85,116.54,0.0,-1184.39,-12707.99,682.76,10685.08,-1441.58,130.31,2341.67,-1311.27,1030.41 +151,658.58,1798.98,2002.23,227.37,116.66,0.0,-1141.7,-12734.54,651.43,10695.56,-1448.88,132.77,2274.58,-1316.12,958.46 +161,712.09,1789.84,2016.47,231.22,114.06,0.0,-1137.35,-12708.85,664.71,10707.78,-1462.01,132.86,2389.96,-1329.14,1060.82 +171,652.16,1823.33,2021.69,238.71,107.0,0.0,-1165.02,-12669.05,659.84,10738.36,-1494.19,130.83,2407.02,-1363.36,1043.66 +181,678.75,1792.09,2037.12,235.95,104.18,0.0,-1164.07,-12615.26,682.58,10705.99,-1507.96,129.97,2457.33,-1377.99,1079.34 +191,687.29,1790.03,2016.67,234.65,110.41,0.0,-1135.95,-12743.2,669.03,10735.4,-1471.34,132.91,2364.33,-1338.44,1025.89 +201,687.89,1757.32,2003.76,227.79,115.04,0.0,-1177.88,-12689.15,640.47,10724.85,-1463.21,132.12,2290.08,-1331.1,958.98 +211,643.75,1763.7,1987.91,229.85,114.17,0.0,-1133.07,-12798.51,681.54,10782.38,-1447.88,132.71,2271.72,-1315.17,956.54 +221,688.23,1764.88,1995.19,233.35,113.18,0.0,-1147.2,-12672.53,662.56,10676.48,-1480.21,133.77,2314.14,-1346.44,967.7 +231,675.36,1756.45,2013.37,226.63,118.12,0.0,-1181.21,-12644.6,667.68,10672.52,-1501.9,131.0,2304.31,-1370.9,933.41 +241,665.6,1794.33,2011.32,226.17,114.77,0.0,-1166.17,-12710.41,659.82,10776.18,-1491.57,133.24,2371.6,-1358.33,1013.27 +251,663.89,1791.94,2005.4,228.06,103.64,0.0,-1126.48,-12689.67,675.08,10727.14,-1487.16,132.84,2379.01,-1354.32,1024.68 +261,675.84,1777.88,1997.7,220.77,95.95,0.0,-1127.85,-12737.11,645.54,10750.74,-1465.15,132.6,2299.46,-1332.55,966.92 +271,720.86,1739.15,2003.59,232.03,128.5,0.0,-1182.87,-12662.5,666.66,10662.47,-1469.75,132.22,2307.89,-1337.53,970.36 +281,711.16,1795.62,1994.71,235.11,107.42,0.0,-1197.55,-12689.71,671.55,10748.43,-1470.41,128.84,2376.75,-1341.57,1035.18 +291,703.07,1765.72,1993.65,233.47,108.4,0.0,-1173.65,-12744.47,656.96,10690.2,-1441.3,128.62,2233.35,-1312.68,920.68 +301,694.97,1781.33,2005.01,228.23,106.9,0.0,-1175.18,-12652.64,635.29,10680.45,-1477.43,131.96,2304.34,-1345.47,958.87 +311,684.47,1771.36,1998.18,227.86,125.06,0.0,-1174.48,-12719.8,668.76,10732.85,-1474.91,131.3,2314.27,-1343.62,970.66 +321,687.29,1720.82,2037.98,227.75,109.17,0.0,-1177.42,-12703.03,640.43,10696.41,-1444.04,128.64,2239.41,-1315.41,924.0 +331,696.52,1732.85,2023.42,232.93,107.47,0.0,-1151.13,-12597.55,663.13,10575.12,-1485.79,127.94,2282.75,-1357.85,924.91 +341,707.8,1733.49,2038.99,231.47,121.88,0.0,-1197.56,-12711.03,648.6,10706.55,-1447.02,127.04,2280.17,-1319.98,960.19 +351,717.56,1749.74,2015.39,232.61,124.03,0.0,-1209.49,-12658.39,663.22,10636.89,-1440.28,126.12,2271.55,-1314.15,957.4 +361,671.72,1770.08,2017.93,226.61,129.21,0.0,-1208.34,-12585.55,662.04,10629.89,-1471.1,127.14,2313.58,-1343.96,969.63 +371,714.33,1756.06,2015.63,230.45,118.33,0.0,-1194.91,-12631.7,649.71,10637.88,-1459.1,127.47,2295.77,-1331.63,964.14 +381,692.33,1779.81,1989.32,237.85,107.64,0.0,-1213.83,-12719.34,693.43,10661.09,-1415.99,125.42,2228.29,-1290.57,937.72 +391,692.99,1748.42,2008.53,227.06,111.32,0.0,-1227.27,-12743.04,652.75,10744.62,-1402.85,123.54,2215.38,-1279.3,936.08 +401,688.62,1776.14,1993.2,224.03,108.21,0.0,-1189.22,-12759.98,655.18,10778.8,-1429.26,125.83,2274.97,-1303.43,971.55 +411,679.24,1750.76,2004.55,220.08,113.69,0.0,-1201.15,-12684.03,647.28,10672.33,-1455.75,125.09,2202.75,-1330.66,872.09 +421,726.36,1763.35,2022.41,229.72,107.94,0.0,-1187.44,-12670.91,647.12,10646.19,-1458.94,125.39,2284.73,-1333.56,951.17 +431,670.18,1765.86,2002.73,227.11,111.65,0.0,-1201.93,-12678.06,647.11,10667.38,-1421.32,125.07,2212.04,-1296.25,915.79 +441,678.5,1787.62,1999.03,223.67,106.43,0.0,-1177.18,-12615.04,675.54,10626.8,-1447.76,127.45,2305.37,-1320.31,985.06 +451,725.32,1828.67,1999.19,242.01,105.36,0.0,-1214.3,-12618.68,668.86,10602.29,-1428.35,125.56,2338.71,-1302.79,1035.92 +461,702.8,1806.43,1996.58,226.89,102.21,0.0,-1214.16,-12548.77,637.48,10592.68,-1485.78,123.74,2302.13,-1362.04,940.1 +471,708.01,1811.24,1990.07,229.94,107.51,0.0,-1207.07,-12626.14,646.51,10638.35,-1464.1,122.86,2298.43,-1341.24,957.19 +481,663.98,1788.7,1984.26,243.04,112.4,0.0,-1233.87,-12677.68,669.64,10655.6,-1411.97,123.06,2206.07,-1288.91,917.16 +491,684.88,1784.85,2033.62,243.88,105.91,0.0,-1215.46,-12635.37,649.47,10697.64,-1492.56,123.0,2349.41,-1369.55,979.85 +501,695.54,1769.61,1995.46,241.52,108.84,0.0,-1221.77,-12679.87,665.81,10727.05,-1467.01,124.19,2302.19,-1342.82,959.37 +511,679.9,1807.63,2033.11,222.54,135.35,0.0,-1253.57,-12661.3,659.82,10704.13,-1470.56,121.6,2327.61,-1348.96,978.65 +521,721.89,1818.06,2028.02,230.73,114.63,0.0,-1261.0,-12670.38,633.49,10662.5,-1431.54,118.96,2277.93,-1312.58,965.36 +531,623.57,1822.47,1989.83,224.1,101.61,0.0,-1216.89,-12703.92,652.97,10768.33,-1490.13,122.61,2262.07,-1367.52,894.54 +541,700.51,1733.81,2011.64,224.62,118.73,0.0,-1206.45,-12722.31,673.44,10765.42,-1493.62,124.85,2299.41,-1368.77,930.65 +551,700.74,1784.5,2002.57,230.71,106.9,0.0,-1233.98,-12697.65,672.78,10708.62,-1457.78,123.69,2275.21,-1334.09,941.12 +561,686.92,1793.06,1972.84,228.3,114.17,0.0,-1200.0,-12690.6,648.79,10681.01,-1460.66,124.5,2234.48,-1336.16,898.32 +571,694.55,1764.65,2007.13,229.04,115.01,0.0,-1240.11,-12720.6,660.07,10690.02,-1440.46,121.04,2199.74,-1319.42,880.32 +581,704.27,1781.55,2039.78,239.27,122.55,0.0,-1246.75,-12747.54,643.33,10700.66,-1414.03,123.21,2237.13,-1290.82,946.31 +591,692.13,1776.21,2010.05,233.7,106.49,0.0,-1279.54,-12767.38,654.11,10723.9,-1393.07,119.06,2149.67,-1274.01,875.66 +601,681.12,1759.21,2036.8,238.93,98.02,0.0,-1269.45,-12744.36,659.44,10741.5,-1379.1,116.64,2201.21,-1262.46,938.74 +611,718.83,1770.33,2016.23,228.98,109.06,0.0,-1239.81,-12703.16,657.29,10694.4,-1445.23,121.01,2252.15,-1324.22,927.93 +621,675.71,1820.65,2008.56,221.25,112.46,0.0,-1214.54,-12695.39,658.36,10617.27,-1398.86,122.89,2204.32,-1275.97,928.35 +631,658.94,1813.87,2011.02,234.31,110.9,0.0,-1225.83,-12704.53,665.41,10728.71,-1410.58,120.34,2292.81,-1290.25,1002.56 +641,677.44,1797.86,1987.31,237.83,115.72,0.0,-1197.61,-12594.64,658.04,10629.77,-1474.7,125.69,2311.72,-1349.01,962.71 +651,693.1,1747.76,2048.71,227.27,123.52,0.0,-1248.44,-12640.97,666.76,10714.82,-1490.82,122.28,2332.53,-1368.54,963.99 +661,676.9,1778.32,1999.98,233.83,105.74,0.0,-1174.74,-12814.64,681.7,10778.5,-1402.27,123.64,2265.6,-1278.63,986.97 +671,688.77,1826.92,2024.9,240.56,123.8,0.0,-1192.84,-12674.57,681.46,10607.84,-1407.55,126.13,2326.84,-1281.42,1045.42 +681,691.92,1782.55,2034.65,238.1,91.76,0.0,-1228.6,-12575.93,650.56,10650.95,-1491.06,125.54,2335.97,-1365.51,970.45 +691,638.43,1770.57,2036.17,233.1,117.36,0.0,-1199.15,-12594.22,673.52,10637.43,-1471.12,124.16,2313.22,-1346.96,966.26 +701,690.01,1768.29,2020.49,231.85,110.63,0.0,-1266.35,-12701.97,648.69,10708.87,-1420.19,116.98,2210.49,-1303.21,907.28 +711,698.62,1818.03,2019.2,232.32,116.52,0.0,-1235.27,-12603.83,662.03,10597.18,-1458.35,120.85,2304.82,-1337.51,967.31 +721,698.1,1735.41,2061.13,238.49,116.73,0.0,-1246.48,-12689.08,671.37,10693.05,-1438.84,119.91,2278.72,-1318.93,959.79 +731,690.78,1758.62,2016.13,230.24,111.56,0.0,-1260.56,-12705.07,639.96,10633.78,-1376.45,118.14,2115.44,-1258.31,857.13 +741,697.95,1779.32,2040.27,231.09,120.21,0.0,-1221.02,-12723.35,654.69,10690.99,-1406.15,123.38,2270.14,-1282.77,987.37 +751,700.13,1794.74,2022.58,233.71,121.03,0.0,-1258.08,-12711.02,664.25,10658.18,-1412.74,120.6,2225.52,-1292.13,933.38 +761,731.73,1796.42,2032.33,237.22,103.72,0.0,-1301.61,-12709.84,658.32,10728.95,-1433.55,118.09,2277.24,-1315.46,961.78 +771,670.06,1768.39,2049.29,238.93,118.53,0.0,-1231.68,-12719.25,649.3,10726.32,-1425.7,119.97,2269.89,-1305.73,964.16 +781,684.65,1733.79,2027.16,222.55,102.98,0.0,-1237.92,-12724.98,656.7,10707.17,-1442.85,121.8,2172.1,-1321.05,851.05 +791,674.28,1793.64,2014.73,229.89,116.34,0.0,-1235.76,-12665.76,635.33,10699.38,-1459.82,122.73,2262.07,-1337.09,924.98 +801,679.25,1779.31,2020.76,233.57,114.33,0.0,-1267.27,-12697.12,649.49,10724.35,-1447.8,120.17,2236.67,-1327.63,909.04 +811,700.5,1747.39,2055.27,242.43,121.59,0.0,-1206.1,-12811.58,681.66,10720.25,-1367.58,122.65,2251.41,-1244.93,1006.49 +821,707.96,1752.94,2026.33,219.42,118.06,0.0,-1232.12,-12794.15,633.76,10696.86,-1357.33,125.92,2129.05,-1231.41,897.64 +831,641.21,1794.42,2018.37,239.05,118.92,0.0,-1191.37,-12773.91,677.87,10705.54,-1385.48,125.34,2230.1,-1260.15,969.95 +841,681.7,1747.83,2044.15,225.69,105.01,0.0,-1219.93,-12820.61,669.82,10743.35,-1369.74,123.4,2177.0,-1246.34,930.66 +851,641.33,1736.45,2003.09,224.78,124.51,0.0,-1251.59,-12876.19,651.72,10732.02,-1319.83,119.6,1986.11,-1200.23,785.89 +861,729.72,1762.54,2058.9,230.62,112.91,0.0,-1191.92,-12745.98,651.85,10676.82,-1397.29,125.96,2285.46,-1271.33,1014.13 +871,699.76,1770.35,2049.18,242.61,103.93,0.0,-1265.44,-12794.25,657.96,10784.45,-1428.78,120.37,2248.54,-1308.41,940.13 +881,706.63,1760.54,2034.24,228.5,100.47,0.0,-1230.76,-12796.22,631.88,10704.94,-1412.73,121.19,2140.23,-1291.54,848.69 +891,702.59,1834.73,2064.17,233.87,117.42,0.0,-1235.32,-12749.8,644.4,10735.56,-1430.68,123.31,2347.62,-1307.37,1040.25 +901,684.94,1766.54,2027.43,238.27,112.28,0.0,-1234.34,-12636.77,657.36,10681.29,-1472.53,124.15,2297.0,-1348.38,948.62 +911,662.96,1783.53,2012.49,230.54,121.34,0.0,-1237.41,-12679.79,662.37,10710.08,-1463.07,123.92,2266.11,-1339.16,926.95 +921,664.98,1703.57,2040.48,228.48,102.4,0.0,-1199.13,-12678.08,650.08,10713.17,-1462.32,122.99,2225.95,-1339.33,886.63 +931,698.2,1739.77,2022.6,222.43,126.79,0.0,-1208.66,-12644.47,639.47,10670.69,-1471.41,123.45,2266.81,-1347.96,918.85 +941,686.26,1804.86,2055.84,225.2,128.4,0.0,-1252.18,-12710.63,658.88,10698.89,-1418.29,122.7,2295.52,-1295.59,999.93 +951,706.19,1778.25,2013.17,237.87,117.4,0.0,-1214.52,-12712.46,637.85,10758.06,-1509.54,126.11,2321.81,-1383.43,938.38 +961,681.82,1776.25,2016.6,233.0,106.64,0.0,-1220.95,-12733.02,662.54,10749.96,-1442.44,123.98,2272.84,-1318.46,954.38 +971,623.17,1751.41,2022.41,233.56,129.89,0.0,-1228.07,-12677.7,660.6,10720.87,-1494.9,124.41,2236.15,-1370.48,865.66 +981,684.46,1742.79,2017.09,229.27,114.06,0.0,-1234.2,-12635.68,656.56,10731.9,-1532.28,123.31,2306.25,-1408.96,897.28 +991,654.01,1743.93,2036.99,228.36,111.4,0.0,-1234.94,-12707.7,666.03,10797.73,-1510.69,123.46,2295.82,-1387.23,908.58 +1001,699.96,1798.07,2028.55,234.05,113.95,0.0,-1218.94,-12632.15,663.67,10720.9,-1501.92,124.24,2408.06,-1377.67,1030.39 + +Delta Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EGB,ESURF,GGAS,GSOLV,TOTAL +1,0.0,-0.0,0.0,0.0,-0.0,0.0,-93.81,-154.95,-0.0,0.0,212.1,-13.17,-248.76,198.93,-49.83 +11,0.0,-0.0,-0.0,-0.0,-0.0,0.0,-65.28,-237.75,0.0,-0.0,269.01,-10.72,-303.03,258.29,-44.74 +21,0.0,0.0,0.0,0.0,0.0,0.0,-67.76,-184.82,-0.0,-0.0,224.63,-9.93,-252.58,214.7,-37.88 +31,-0.0,0.0,0.0,0.0,0.0,0.0,-77.48,-198.6,0.0,0.0,241.27,-11.56,-276.08,229.7,-46.37 +41,0.0,0.0,0.0,-0.0,0.0,0.0,-75.63,-199.6,-0.0,0.0,236.92,-11.06,-275.23,225.86,-49.38 +51,-0.0,0.0,0.0,-0.0,-0.0,0.0,-67.03,-211.47,0.0,0.0,245.1,-9.91,-278.5,235.19,-43.31 +61,0.0,-0.0,-0.0,-0.0,0.0,0.0,-69.84,-162.34,0.0,0.0,201.36,-10.55,-232.18,190.81,-41.37 +71,0.0,-0.0,-0.0,0.0,-0.0,0.0,-70.67,-113.13,0.0,0.0,150.71,-10.11,-183.8,140.6,-43.2 +81,0.0,0.0,0.0,-0.0,0.0,0.0,-71.97,-178.57,0.0,0.0,222.17,-10.51,-250.54,211.66,-38.87 +91,0.0,-0.0,0.0,-0.0,0.0,0.0,-57.07,-130.3,-0.0,0.0,177.76,-8.9,-187.37,168.86,-18.51 +101,0.0,0.0,0.0,-0.0,-0.0,0.0,-61.39,-123.47,0.0,-0.0,170.97,-8.18,-184.86,162.79,-22.07 +111,0.0,0.0,-0.0,0.0,-0.0,0.0,-53.96,-196.74,0.0,-0.0,246.39,-8.14,-250.7,238.25,-12.46 +121,-0.0,0.0,-0.0,-0.0,-0.0,0.0,-56.53,-152.79,0.0,0.0,198.14,-7.37,-209.31,190.76,-18.55 +131,-0.0,0.0,-0.0,0.0,0.0,0.0,-52.55,-164.77,0.0,0.0,209.15,-7.5,-217.33,201.65,-15.67 +141,0.0,-0.0,-0.0,0.0,-0.0,0.0,-20.12,-190.86,0.0,0.0,218.39,-2.64,-210.98,215.75,4.77 +151,-0.0,0.0,-0.0,0.0,0.0,0.0,-36.95,-207.23,-0.0,-0.0,240.19,-4.65,-244.18,235.54,-8.64 +161,0.0,-0.0,0.0,0.0,-0.0,0.0,-61.73,-193.07,-0.0,0.0,233.04,-8.35,-254.8,224.7,-30.1 +171,0.0,0.0,0.0,-0.0,0.0,0.0,-48.94,-193.65,0.0,0.0,244.62,-6.0,-242.59,238.62,-3.97 +181,-0.0,0.0,0.0,0.0,0.0,0.0,-62.28,-270.87,0.0,0.0,312.32,-9.33,-333.16,303.0,-30.16 +191,0.0,-0.0,-0.0,0.0,0.0,0.0,-70.86,-186.54,-0.0,0.0,230.73,-9.96,-257.4,220.77,-36.64 +201,-0.0,0.0,-0.0,-0.0,0.0,0.0,-81.46,-213.78,0.0,0.0,263.52,-10.99,-295.24,252.53,-42.7 +211,-0.0,0.0,0.0,0.0,0.0,0.0,-66.12,-210.71,-0.0,0.0,246.73,-9.13,-276.83,237.6,-39.23 +221,-0.0,0.0,0.0,-0.0,-0.0,0.0,-63.69,-148.97,0.0,0.0,191.27,-8.29,-212.66,182.98,-29.68 +231,0.0,0.0,0.0,0.0,-0.0,0.0,-66.77,-212.98,-0.0,0.0,257.58,-10.27,-279.75,247.31,-32.44 +241,-0.0,0.0,-0.0,-0.0,0.0,0.0,-52.45,-184.56,-0.0,-0.0,222.05,-6.81,-237.01,215.24,-21.77 +251,0.0,-0.0,-0.0,0.0,0.0,0.0,-55.94,-202.21,-0.0,0.0,241.02,-8.25,-258.14,232.77,-25.38 +261,0.0,0.0,0.0,0.0,-0.0,0.0,-71.28,-231.23,0.0,0.0,273.78,-9.96,-302.51,263.82,-38.7 +271,0.0,0.0,-0.0,0.0,-0.0,0.0,-80.52,-226.82,0.0,-0.0,268.72,-11.21,-307.34,257.51,-49.83 +281,0.0,0.0,-0.0,0.0,-0.0,0.0,-73.16,-216.58,0.0,-0.0,262.49,-10.84,-289.74,251.65,-38.09 +291,0.0,0.0,0.0,0.0,-0.0,0.0,-65.46,-201.34,0.0,-0.0,241.16,-9.93,-266.8,231.23,-35.58 +301,-0.0,-0.0,-0.0,0.0,0.0,0.0,-54.57,-183.46,0.0,0.0,218.23,-7.75,-238.04,210.48,-27.55 +311,0.0,-0.0,-0.0,0.0,0.0,0.0,-23.44,-105.89,0.0,0.0,126.88,-2.81,-129.32,124.07,-5.25 +321,0.0,0.0,-0.0,0.0,0.0,0.0,-28.42,-115.36,-0.0,-0.0,134.43,-4.18,-143.78,130.25,-13.54 +331,0.0,0.0,0.0,0.0,0.0,0.0,-37.59,-68.54,-0.0,-0.0,95.42,-5.48,-106.13,89.94,-16.18 +341,-0.0,0.0,-0.0,-0.0,0.0,0.0,-49.78,-135.25,0.0,-0.0,162.55,-8.06,-185.03,154.49,-30.54 +351,0.0,-0.0,-0.0,-0.0,0.0,0.0,-45.04,-144.11,0.0,0.0,166.15,-6.67,-189.15,159.49,-29.67 +361,0.0,0.0,0.0,-0.0,0.0,0.0,-58.55,-83.22,0.0,0.0,123.05,-8.1,-141.77,114.94,-26.82 +371,0.0,0.0,0.0,0.0,0.0,0.0,-40.88,-56.09,0.0,-0.0,80.31,-6.74,-96.97,73.57,-23.4 +381,-0.0,0.0,0.0,-0.0,0.0,0.0,-40.51,-14.64,-0.0,0.0,46.54,-5.61,-55.15,40.93,-14.22 +391,-0.0,0.0,0.0,-0.0,0.0,0.0,-60.87,-44.6,0.0,0.0,79.33,-7.86,-105.47,71.47,-34.0 +401,0.0,-0.0,0.0,0.0,-0.0,0.0,-63.1,-57.09,-0.0,0.0,86.96,-9.24,-120.19,77.73,-42.46 +411,-0.0,0.0,0.0,-0.0,-0.0,0.0,-56.05,-74.58,-0.0,-0.0,103.08,-7.67,-130.62,95.41,-35.21 +421,-0.0,0.0,-0.0,-0.0,0.0,0.0,-65.49,-50.09,0.0,-0.0,75.29,-9.5,-115.58,65.79,-49.79 +431,-0.0,0.0,0.0,0.0,-0.0,0.0,-64.85,-60.74,0.0,0.0,92.72,-8.32,-125.59,84.4,-41.19 +441,0.0,0.0,-0.0,0.0,-0.0,0.0,-53.77,-46.87,0.0,0.0,75.36,-6.96,-100.64,68.4,-32.24 +451,-0.0,0.0,0.0,0.0,-0.0,0.0,-50.4,-41.95,0.0,-0.0,71.24,-7.2,-92.35,64.04,-28.31 +461,0.0,-0.0,0.0,-0.0,-0.0,0.0,-57.1,-30.53,-0.0,0.0,63.38,-8.04,-87.63,55.34,-32.29 +471,-0.0,0.0,0.0,0.0,0.0,0.0,-50.34,-28.92,-0.0,0.0,60.83,-6.91,-79.26,53.92,-25.34 +481,0.0,0.0,0.0,-0.0,-0.0,0.0,-72.47,-24.38,0.0,0.0,63.07,-9.97,-96.84,53.1,-43.75 +491,-0.0,0.0,-0.0,-0.0,0.0,0.0,-56.17,-93.7,0.0,-0.0,120.2,-7.8,-149.87,112.41,-37.46 +501,0.0,-0.0,0.0,0.0,-0.0,0.0,-51.71,-95.5,0.0,0.0,131.53,-7.64,-147.21,123.9,-23.31 +511,-0.0,-0.0,-0.0,-0.0,-0.0,0.0,-67.0,-132.44,-0.0,0.0,166.84,-9.65,-199.44,157.18,-42.26 +521,0.0,-0.0,0.0,0.0,-0.0,0.0,-63.91,-158.35,0.0,0.0,181.94,-10.21,-222.25,171.74,-50.52 +531,0.0,-0.0,0.0,0.0,-0.0,0.0,-61.88,-153.36,-0.0,0.0,185.77,-9.6,-215.24,176.17,-39.07 +541,-0.0,0.0,0.0,0.0,0.0,0.0,-52.42,-96.85,0.0,-0.0,120.11,-7.66,-149.27,112.45,-36.83 +551,-0.0,0.0,-0.0,-0.0,-0.0,0.0,-62.65,-103.74,0.0,-0.0,142.22,-8.65,-166.38,133.57,-32.82 +561,-0.0,0.0,0.0,0.0,-0.0,0.0,-70.29,-197.31,0.0,0.0,242.66,-10.12,-267.6,232.54,-35.07 +571,-0.0,-0.0,0.0,0.0,0.0,0.0,-59.91,-104.07,0.0,0.0,141.97,-8.7,-163.97,133.27,-30.7 +581,0.0,0.0,0.0,0.0,0.0,0.0,-55.85,-74.89,0.0,0.0,104.72,-8.2,-130.74,96.52,-34.22 +591,-0.0,0.0,-0.0,0.0,-0.0,0.0,-55.27,-90.15,0.0,-0.0,134.16,-8.1,-145.42,126.06,-19.36 +601,-0.0,-0.0,0.0,0.0,0.0,0.0,-60.4,-105.43,0.0,-0.0,136.84,-7.86,-165.83,128.99,-36.84 +611,0.0,-0.0,0.0,0.0,0.0,0.0,-75.85,-103.76,0.0,0.0,144.64,-10.43,-179.61,134.21,-45.4 +621,-0.0,-0.0,0.0,0.0,0.0,0.0,-66.75,-104.79,0.0,-0.0,146.7,-9.04,-171.54,137.66,-33.88 +631,0.0,0.0,-0.0,-0.0,-0.0,0.0,-54.1,-148.88,0.0,0.0,179.99,-7.11,-202.98,172.88,-30.09 +641,0.0,0.0,0.0,0.0,0.0,0.0,-69.51,-224.63,-0.0,0.0,262.18,-10.1,-294.14,252.09,-42.05 +651,0.0,0.0,0.0,-0.0,-0.0,0.0,-62.48,-125.35,0.0,-0.0,169.06,-7.94,-187.82,161.11,-26.71 +661,0.0,0.0,-0.0,0.0,-0.0,0.0,-66.81,-138.31,0.0,-0.0,175.71,-8.5,-205.12,167.21,-37.91 +671,0.0,-0.0,0.0,0.0,-0.0,0.0,-63.87,-120.36,0.0,-0.0,154.48,-7.71,-184.23,146.77,-37.46 +681,0.0,0.0,-0.0,0.0,0.0,0.0,-53.02,-115.7,0.0,0.0,148.79,-6.05,-168.72,142.74,-25.97 +691,-0.0,0.0,-0.0,-0.0,0.0,0.0,-51.84,-167.96,-0.0,-0.0,203.63,-6.12,-219.79,197.51,-22.28 +701,0.0,0.0,-0.0,-0.0,-0.0,0.0,-62.05,-133.99,-0.0,0.0,162.63,-7.84,-196.04,154.79,-41.25 +711,0.0,0.0,-0.0,-0.0,0.0,0.0,-56.65,-144.39,0.0,0.0,176.34,-7.4,-201.04,168.93,-32.1 +721,0.0,-0.0,-0.0,-0.0,0.0,0.0,-60.71,-125.41,0.0,0.0,164.28,-7.68,-186.11,156.6,-29.51 +731,-0.0,0.0,0.0,-0.0,-0.0,0.0,-58.63,-125.55,0.0,0.0,158.32,-7.66,-184.18,150.66,-33.52 +741,0.0,-0.0,0.0,0.0,-0.0,0.0,-65.52,-95.52,-0.0,-0.0,134.24,-8.01,-161.04,126.22,-34.82 +751,0.0,0.0,-0.0,-0.0,0.0,0.0,-72.5,-91.79,-0.0,-0.0,130.05,-9.46,-164.3,120.59,-43.71 +761,0.0,0.0,-0.0,0.0,0.0,0.0,-69.1,-135.43,0.0,-0.0,177.25,-9.15,-204.53,168.1,-36.42 +771,0.0,-0.0,0.0,0.0,0.0,0.0,-67.92,-122.36,0.0,0.0,165.48,-8.88,-190.28,156.6,-33.67 +781,-0.0,0.0,0.0,0.0,0.0,0.0,-69.4,-124.4,0.0,0.0,163.51,-9.35,-193.79,154.16,-39.63 +791,-0.0,-0.0,0.0,-0.0,0.0,0.0,-60.4,-155.96,-0.0,-0.0,183.79,-8.22,-216.36,175.57,-40.79 +801,0.0,0.0,-0.0,-0.0,-0.0,0.0,-61.0,-77.44,-0.0,0.0,118.15,-7.46,-138.44,110.69,-27.74 +811,0.0,-0.0,-0.0,0.0,-0.0,0.0,-50.54,-85.8,0.0,-0.0,117.75,-6.45,-136.34,111.31,-25.03 +821,-0.0,0.0,-0.0,0.0,-0.0,0.0,-57.81,-108.82,0.0,-0.0,148.16,-7.34,-166.63,140.82,-25.81 +831,-0.0,0.0,0.0,0.0,-0.0,0.0,-71.46,-118.39,-0.0,-0.0,168.05,-9.57,-189.85,158.48,-31.37 +841,-0.0,0.0,-0.0,0.0,0.0,0.0,-89.57,-120.69,-0.0,0.0,180.77,-12.43,-210.26,168.34,-41.92 +851,0.0,-0.0,-0.0,-0.0,-0.0,0.0,-79.07,-135.94,0.0,-0.0,187.12,-11.32,-215.02,175.8,-39.21 +861,-0.0,-0.0,-0.0,-0.0,0.0,0.0,-67.1,-128.27,0.0,0.0,169.29,-9.15,-195.37,160.14,-35.23 +871,0.0,-0.0,0.0,0.0,-0.0,0.0,-87.68,-198.37,-0.0,0.0,250.04,-12.39,-286.05,237.65,-48.4 +881,0.0,-0.0,0.0,0.0,-0.0,0.0,-56.56,-201.16,0.0,-0.0,246.02,-6.68,-257.72,239.35,-18.37 +891,-0.0,-0.0,0.0,0.0,0.0,0.0,-94.98,-244.81,-0.0,0.0,311.88,-11.91,-339.8,299.97,-39.83 +901,-0.0,0.0,0.0,0.0,-0.0,0.0,-82.81,-258.87,0.0,-0.0,319.3,-11.0,-341.68,308.3,-33.38 +911,0.0,-0.0,0.0,0.0,0.0,0.0,-99.69,-306.44,-0.0,0.0,365.18,-13.08,-406.13,352.1,-54.03 +921,-0.0,0.0,-0.0,-0.0,-0.0,0.0,-80.39,-312.8,-0.0,-0.0,354.5,-11.79,-393.19,342.7,-50.49 +931,0.0,-0.0,-0.0,-0.0,0.0,0.0,-84.56,-311.49,0.0,-0.0,372.31,-11.39,-396.06,360.91,-35.14 +941,-0.0,-0.0,-0.0,-0.0,0.0,0.0,-82.21,-348.1,-0.0,-0.0,407.8,-12.35,-430.31,395.44,-34.87 +951,0.0,-0.0,-0.0,0.0,-0.0,0.0,-93.61,-300.83,0.0,0.0,364.19,-12.61,-394.44,351.57,-42.87 +961,-0.0,-0.0,0.0,0.0,-0.0,0.0,-97.57,-250.59,0.0,-0.0,318.01,-12.75,-348.16,305.26,-42.9 +971,-0.0,-0.0,0.0,0.0,-0.0,0.0,-93.56,-263.41,0.0,-0.0,338.11,-12.78,-356.97,325.34,-31.63 +981,0.0,-0.0,-0.0,0.0,0.0,0.0,-82.78,-329.73,-0.0,-0.0,388.03,-12.66,-412.51,375.37,-37.13 +991,0.0,-0.0,0.0,-0.0,-0.0,0.0,-85.57,-362.32,0.0,-0.0,409.98,-13.49,-447.89,396.49,-51.4 +1001,-0.0,-0.0,0.0,0.0,0.0,0.0,-89.66,-368.32,-0.0,-0.0,425.49,-13.76,-457.99,411.73,-46.26 + + diff --git a/tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.dat b/tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.dat new file mode 100644 index 0000000..90ba247 --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/gb/FINAL_RESULTS_MMGBSA.dat @@ -0,0 +1,160 @@ +| Run on Tue Sep 22 19:44:45 2026 +| +|gmx_MMPBSA Version=1.7.0 based on MMPBSA.py v.14.0, AmberTools 26.0, GROMACS 2025.4-Ubuntu_2025.4_1 +|System name: Q946V6_ZmBiP2_GB +|Complex (GROMACS) topology file: complex.top +|Complex Structure file: complex.tpr +|Complex (AMBER) topology file: COM.prmtop +|Receptor (AMBER) topology file: REC.prmtop +|Ligand (AMBER) topology file: LIG.prmtop +|Initial trajectories: COM_traj_0.xtc +| +|Receptor mask: ":214-876" +|Ligand mask: ":1-213" +| +|Calculations performed using 101 complex frames +|Interaction Entropy reported from the full ensemble; the last 26 cumulative estimates are retained only as a convergence diagnostic +|IE and C2 uncertainty diagnostics use deterministic nonoverlapping trajectory blocks +| +|Generalized Born ESURF calculated using 'LCPO' surface areas +| +|Using temperature = 303.15 K +|All units are reported in kcal/mol +| +|SD - Population standard deviation of the frames (ddof=0), SEM - SD / sqrt(number of frames) +|SD(Prop.), SEM(Prop.) - SD and SEM obtained with propagation of uncertainty formula +|Block SD, Block SEM - sample SD and SEM of deterministic nonoverlapping block means; Block SEM is used for primary estimates +|https://en.wikipedia.org/wiki/Propagation_of_uncertainty#Example_formulae +| +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Normal [ -TΔS ] +ENTROPY RESULTS (INTERACTION ENTROPY): +Energy Method Entropy σ(Int. Energy) Full IE Block SD Block SEM +----------------------------------------------------------------------------------------------------- +GB IE 86.72 163.00 35.27 12.47 +Block diagnostic: 8 nonoverlapping blocks of 12 frames +Tail convergence diagnostic: 144.88 +/- 8.03 over the last 26 prefixes + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +WARNING: THE INTERACTION ENERGY STANDARD DEVIATION [ σ(Int. Energy) ] +IS GREATER THAN 3.6 kcal/mol (~15 kJ/mol). THUS, THE INTERACTION ENTROPY VALUES ARE +NOT RELIABLE. CHECK THIS PAPER FOR MORE INFO (https://doi.org/10.1021/acs.jctc.1c00374) + + +Normal [ -TΔS ] +ENTROPY RESULTS (C2 ENTROPY): +Energy Method Entropy σ(Int. Energy) C2 Value Block SD Block SEM Block P2.5-P97.5 +----------------------------------------------------------------------------------------------------- +GB C2 86.72 6241.81 1809.43 639.73 450.10-5243.25 +Block diagnostic: 8 nonoverlapping blocks of 12 frames + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +WARNING: THE INTERACTION ENERGY STANDARD DEVIATION [ σ(Int. Energy)] +IS GREATER THAN 6.0 kcal/mol (~25 kJ/mol). THE C2 ENTROPY MAGNITUDE MAY THEREFORE BE +UNREALISTIC. CHECK THIS PAPER FOR MORE INFO (https://doi.org/10.1021/acs.jctc.1c00374) + + +GENERALIZED BORN: + +Complex: +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +BOND 2767.54 38.96 38.96 3.88 3.88 13.91 4.92 +ANGLE 6865.03 58.50 58.50 5.82 5.82 22.31 7.89 +DIHED 8246.51 41.52 41.52 4.13 4.13 22.44 7.93 +UB 902.30 13.07 13.07 1.30 1.30 2.07 0.73 +IMP 476.35 15.53 15.53 1.55 1.55 1.19 0.42 +CMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +VDWAALS -5544.46 63.02 63.02 6.27 6.27 51.51 18.21 +EEL -54244.48 256.29 256.29 25.50 25.50 114.07 40.33 +1-4 VDW 2325.49 25.99 25.99 2.59 2.59 8.90 3.15 +1-4 EEL 38419.51 116.19 116.19 11.56 11.56 72.07 25.48 +EGB -13589.62 216.79 216.79 21.57 21.57 100.86 35.66 +ESURF 410.93 7.19 7.19 0.72 0.72 6.15 2.17 + +GGAS 213.80 301.51 269.76 30.00 26.84 147.99 52.32 +GSOLV -13178.69 216.91 214.10 21.58 21.30 96.98 34.29 + +TOTAL -12964.89 371.43 115.08 36.96 11.45 70.35 24.87 + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Receptor: +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +BOND 2080.79 32.75 32.75 3.26 3.26 10.62 3.76 +ANGLE 5089.36 54.26 54.26 5.40 5.40 19.86 7.02 +DIHED 6228.13 36.38 36.38 3.62 3.62 21.65 7.65 +UB 670.48 10.91 10.91 1.09 1.09 2.68 0.95 +IMP 363.10 12.43 12.43 1.24 1.24 1.67 0.59 +CMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +VDWAALS -4283.91 35.78 35.78 3.56 3.56 19.03 6.73 +EEL -41395.09 241.60 241.60 24.04 24.04 112.40 39.74 +1-4 VDW 1666.30 20.75 20.75 2.06 2.06 7.02 2.48 +1-4 EEL 27717.38 98.07 98.07 9.76 9.76 59.17 20.92 +EGB -12330.40 212.06 212.06 21.10 21.10 106.92 37.80 +ESURF 292.62 4.66 4.66 0.46 0.46 3.40 1.20 + +GGAS -1863.45 274.43 240.10 27.31 23.89 119.80 42.36 +GSOLV -12037.78 212.11 210.94 21.11 20.99 105.38 37.26 + +TOTAL -13901.22 346.85 79.84 34.51 7.94 26.77 9.46 + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Ligand: +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +BOND 686.75 22.39 22.39 2.23 2.23 6.49 2.29 +ANGLE 1775.67 27.30 27.30 2.72 2.72 9.56 3.38 +DIHED 2018.37 19.88 19.88 1.98 1.98 11.64 4.12 +UB 231.83 6.02 6.02 0.60 0.60 1.83 0.65 +IMP 113.25 8.00 8.00 0.80 0.80 1.65 0.58 +CMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +VDWAALS -1196.15 57.26 57.26 5.70 5.70 50.66 17.91 +EEL -12692.86 61.52 61.52 6.12 6.12 26.96 9.53 +1-4 VDW 659.19 13.18 13.18 1.31 1.31 4.94 1.75 +1-4 EEL 10702.13 51.81 51.81 5.16 5.16 24.98 8.83 +EGB -1455.74 44.48 44.48 4.43 4.43 31.35 11.09 +ESURF 127.26 7.80 7.80 0.78 0.78 7.33 2.59 + +GGAS 2298.18 107.99 93.39 10.75 9.29 76.44 27.03 +GSOLV -1328.47 45.16 40.38 4.49 4.02 24.51 8.67 + +TOTAL 969.71 117.06 70.31 11.65 7.00 54.11 19.13 + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Delta (Complex - Receptor - Ligand): +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +ΔBOND 0.00 16.18 0.00 1.61 0.00 0.00 0.00 +ΔANGLE -0.00 23.05 0.00 2.29 0.00 0.00 0.00 +ΔDIHED 0.00 14.75 0.00 1.47 0.00 0.00 0.00 +ΔUB -0.00 3.87 0.00 0.38 0.00 0.00 0.00 +ΔIMP -0.00 4.90 0.00 0.49 0.00 0.00 0.00 +ΔCMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +ΔVDWAALS -64.40 30.02 15.01 2.99 1.49 9.60 3.39 +ΔEEL -156.53 46.82 77.59 4.66 7.72 58.70 20.75 +Δ1-4 VDW 0.00 7.93 0.00 0.79 0.00 0.00 0.00 +Δ1-4 EEL -0.00 33.70 0.00 3.35 0.00 0.00 0.00 +ΔEGB 196.52 39.75 84.74 3.95 8.43 65.19 23.05 +ΔESURF -8.96 5.28 2.22 0.53 0.22 1.35 0.48 + +ΔGGAS -220.94 55.97 86.72 5.57 8.63 64.95 22.96 +ΔGSOLV 187.56 40.09 83.35 3.99 8.29 64.32 22.74 + +ΔTOTAL -33.37 68.85 11.11 6.85 1.11 5.16 1.83 +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Using Interaction Entropy Approximation: +ΔG binding = 129.63 +/- 12.60 +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Using C2 Entropy Approximation: +ΔG binding = 6208.44 +/- 639.73 +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- diff --git a/tests/fixtures/gmx_mmpbsa/gb/mmgbsa.in b/tests/fixtures/gmx_mmpbsa/gb/mmgbsa.in new file mode 100644 index 0000000..064d357 --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/gb/mmgbsa.in @@ -0,0 +1,22 @@ +MM-GBSA alpha-zein Q946V6 (ligand) - ZmBiP2 (receptor) CHARMM36-family, 303.15 K +&general + sys_name = "Q946V6_ZmBiP2_GB", + startframe = 1, + endframe = 1001, + interval = 10, + temperature = 303.15, + PBRadii = 3, + interaction_entropy = 1, + ie_segment = 25, + c2_entropy = 1, + verbose = 2, +/ +&gb + igb = 5, + saltcon = 0.150, +/ +&decomp + idecomp = 2, + dec_verbose = 3, + print_res = "within 6", +/ diff --git a/tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.csv b/tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.csv new file mode 100644 index 0000000..d1d2871 --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.csv @@ -0,0 +1,418 @@ +POISSON BOLTZMANN: +Complex Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EPB,ENPOLAR,EDISPER,GGAS,GSOLV,TOTAL +1,2758.87,6806.35,8351.68,897.61,482.96,0.0,-5420.66,-54500.7,2367.77,38613.15,-12048.35,250.81,0.0,357.03,-11797.55,-11440.52 +11,2846.99,6906.22,8372.87,910.04,491.63,0.0,-5353.78,-53794.32,2333.02,38444.12,-12620.1,251.72,0.0,1156.78,-12368.39,-11211.6 +21,2736.17,6918.52,8252.03,880.84,476.12,0.0,-5398.22,-53925.75,2291.03,38617.85,-12526.12,241.94,0.0,848.61,-12284.18,-11435.57 +31,2753.52,6931.85,8280.87,930.7,464.36,0.0,-5444.04,-54240.95,2317.88,38614.41,-12294.05,240.05,0.0,608.6,-12054.0,-11445.41 +41,2799.69,6821.59,8229.85,904.55,496.19,0.0,-5442.45,-53822.11,2349.25,38457.96,-12463.46,233.49,0.0,794.53,-12229.97,-11435.45 +51,2768.73,6850.66,8315.67,911.34,486.1,0.0,-5460.27,-54228.84,2366.71,38636.74,-12233.55,238.9,0.0,646.84,-11994.65,-11347.81 +61,2798.22,6848.33,8198.27,908.84,463.55,0.0,-5410.43,-53938.24,2371.29,38350.96,-12388.1,242.06,0.0,590.77,-12146.05,-11555.27 +71,2760.78,6909.12,8227.24,906.78,473.68,0.0,-5464.54,-54005.01,2301.14,38365.26,-12428.64,240.93,0.0,474.46,-12187.71,-11713.26 +81,2781.4,6771.74,8294.4,900.07,462.87,0.0,-5483.24,-54606.32,2322.01,38590.82,-11842.35,238.98,0.0,33.73,-11603.37,-11569.63 +91,2778.5,6737.95,8291.84,888.35,484.77,0.0,-5453.54,-54475.69,2341.86,38605.77,-11981.7,237.82,0.0,199.82,-11743.88,-11544.06 +101,2768.51,6817.2,8326.81,907.79,460.17,0.0,-5464.17,-54224.84,2378.94,38647.43,-12262.55,239.75,0.0,617.82,-12022.8,-11404.98 +111,2764.59,6857.29,8354.99,890.49,485.62,0.0,-5460.35,-54411.45,2321.16,38483.61,-11946.17,237.15,0.0,285.94,-11709.02,-11423.08 +121,2709.96,6869.53,8261.76,891.91,462.71,0.0,-5484.58,-54430.53,2325.36,38244.25,-11830.41,238.99,0.0,-149.64,-11591.42,-11741.06 +131,2740.07,6902.08,8250.95,911.37,467.63,0.0,-5526.03,-54057.58,2346.42,38418.99,-12236.68,237.01,0.0,453.9,-11999.67,-11545.78 +141,2726.85,6836.72,8231.37,922.66,478.52,0.0,-5449.57,-54405.86,2376.78,38494.23,-12001.59,241.61,0.0,211.7,-11759.98,-11548.27 +151,2743.49,6875.57,8237.42,893.89,488.63,0.0,-5446.67,-54556.38,2305.08,38498.46,-11916.59,232.4,0.0,39.48,-11684.19,-11644.71 +161,2781.69,6911.61,8280.41,885.96,463.46,0.0,-5510.9,-54286.62,2351.55,38361.93,-12007.65,229.73,0.0,239.08,-11777.92,-11538.84 +171,2740.75,6895.38,8265.93,917.99,467.16,0.0,-5484.83,-54471.16,2312.8,38388.43,-11922.65,231.48,0.0,32.46,-11691.17,-11658.71 +181,2735.9,6911.12,8273.0,892.4,481.79,0.0,-5505.74,-54356.79,2361.29,38439.25,-11943.6,227.98,0.0,232.21,-11715.62,-11483.41 +191,2729.16,6865.38,8278.63,912.16,452.99,0.0,-5462.06,-54323.27,2368.63,38407.8,-12174.1,232.64,0.0,229.41,-11941.46,-11712.05 +201,2791.82,6718.04,8178.14,878.58,471.46,0.0,-5579.46,-54122.43,2316.8,38438.82,-12072.63,228.08,0.0,91.77,-11844.55,-11752.78 +211,2686.94,6786.16,8250.51,882.52,483.55,0.0,-5500.57,-54059.78,2345.08,38398.16,-12352.76,229.82,0.0,272.59,-12122.94,-11850.36 +221,2788.76,6847.86,8288.41,903.02,495.37,0.0,-5554.81,-53977.14,2305.13,38260.37,-12285.69,233.03,0.0,356.95,-12052.66,-11695.71 +231,2773.41,6883.36,8277.84,916.35,501.53,0.0,-5550.53,-54432.79,2363.96,38355.32,-11950.12,227.72,0.0,88.44,-11722.41,-11633.96 +241,2750.33,6842.56,8247.73,894.31,475.42,0.0,-5581.37,-53896.87,2346.27,38505.04,-12395.73,230.19,0.0,583.42,-12165.54,-11582.12 +251,2718.24,6886.79,8226.91,896.19,473.41,0.0,-5486.28,-53963.33,2362.36,38580.76,-12374.53,232.43,0.0,695.04,-12142.09,-11447.05 +261,2749.83,6833.6,8245.07,898.66,459.01,0.0,-5545.73,-54175.09,2321.02,38497.1,-12220.44,228.77,0.0,283.47,-11991.66,-11708.2 +271,2832.3,6785.84,8217.65,891.06,487.85,0.0,-5558.67,-54277.48,2372.74,38352.56,-11972.99,227.34,0.0,103.85,-11745.65,-11641.79 +281,2804.68,6882.23,8200.01,905.17,454.18,0.0,-5593.05,-54681.93,2319.98,38406.27,-11572.52,227.37,0.0,-302.47,-11345.16,-11647.62 +291,2747.97,6848.62,8206.66,901.07,476.04,0.0,-5551.08,-54923.33,2318.29,38462.1,-11484.78,226.82,0.0,-513.65,-11257.95,-11771.6 +301,2760.81,6978.48,8293.64,902.64,453.8,0.0,-5515.7,-54421.7,2283.61,38455.8,-11896.86,231.23,0.0,191.38,-11665.63,-11474.25 +311,2786.88,6840.5,8234.67,901.03,516.72,0.0,-5514.09,-54512.35,2332.43,38456.63,-11837.91,234.74,0.0,42.43,-11603.16,-11560.74 +321,2750.08,6810.52,8246.19,918.1,451.61,0.0,-5585.72,-54300.85,2274.72,38412.09,-11945.63,229.49,0.0,-23.27,-11716.14,-11739.41 +331,2771.54,6841.18,8244.22,896.66,465.57,0.0,-5496.67,-53838.22,2330.44,38376.07,-12391.67,232.19,0.0,590.79,-12159.48,-11568.69 +341,2730.55,6795.39,8307.09,904.21,486.82,0.0,-5557.79,-53967.36,2304.99,38321.94,-12169.98,227.91,0.0,325.83,-11942.08,-11616.25 +351,2792.98,6884.9,8248.05,929.55,502.18,0.0,-5558.63,-54099.94,2304.19,38296.14,-11982.3,228.05,0.0,299.43,-11754.26,-11454.82 +361,2761.94,6893.6,8237.98,901.57,498.48,0.0,-5566.92,-54296.66,2347.76,38313.67,-11964.65,224.55,0.0,91.42,-11740.09,-11648.68 +371,2771.22,6805.42,8300.79,904.29,473.52,0.0,-5550.85,-53991.98,2356.79,38361.41,-12186.77,227.41,0.0,430.63,-11959.36,-11528.73 +381,2827.3,6875.69,8242.03,920.24,484.95,0.0,-5505.71,-54198.85,2366.29,38283.1,-12043.37,227.0,0.0,295.03,-11816.37,-11521.33 +391,2720.27,6768.86,8235.69,886.79,489.18,0.0,-5557.49,-54650.67,2323.5,38461.57,-11714.09,225.59,0.0,-322.3,-11488.5,-11810.8 +401,2779.56,6766.1,8192.41,879.79,466.32,0.0,-5555.84,-54376.73,2308.59,38594.49,-12007.56,231.28,0.0,54.69,-11776.28,-11721.59 +411,2751.95,6824.15,8251.94,895.35,497.99,0.0,-5520.19,-54331.15,2320.54,38408.23,-11972.86,227.22,0.0,98.82,-11745.64,-11646.82 +421,2801.2,6905.82,8277.57,890.44,466.57,0.0,-5502.25,-54509.17,2290.39,38377.2,-11794.76,226.14,0.0,-2.23,-11568.62,-11570.85 +431,2798.89,6752.67,8243.73,890.89,458.14,0.0,-5522.81,-54429.71,2265.95,38499.73,-11962.03,226.96,0.0,-42.53,-11735.07,-11777.6 +441,2747.43,6884.37,8278.36,902.65,477.19,0.0,-5484.57,-54225.93,2338.35,38334.11,-12009.3,226.97,0.0,251.96,-11782.33,-11530.37 +451,2869.57,6839.46,8201.4,934.96,452.89,0.0,-5516.53,-54054.94,2329.94,38319.46,-12143.89,226.66,0.0,376.2,-11917.22,-11541.02 +461,2805.16,6930.31,8263.31,895.48,480.38,0.0,-5525.23,-54217.32,2308.19,38195.74,-11878.04,222.62,0.0,136.02,-11655.43,-11519.41 +471,2761.4,6869.57,8246.77,903.5,484.67,0.0,-5551.61,-54303.76,2350.06,38309.5,-11904.18,222.26,0.0,70.1,-11681.92,-11611.82 +481,2740.97,6892.2,8212.15,918.29,473.56,0.0,-5571.72,-54414.54,2317.44,38370.62,-11834.24,224.53,0.0,-61.03,-11609.71,-11670.74 +491,2827.45,6900.3,8229.27,935.15,482.3,0.0,-5525.64,-54191.6,2280.37,38348.88,-12026.06,225.41,0.0,286.48,-11800.64,-11514.16 +501,2819.63,6809.46,8192.18,912.62,502.72,0.0,-5554.94,-54273.49,2334.91,38336.98,-11978.39,227.2,0.0,80.07,-11751.19,-11671.11 +511,2807.87,6846.84,8250.98,898.11,480.61,0.0,-5633.79,-54141.63,2337.38,38427.12,-12098.19,221.29,0.0,273.49,-11876.9,-11603.41 +521,2744.01,6835.64,8244.67,896.65,470.56,0.0,-5654.29,-54275.08,2311.72,38382.78,-11868.42,223.88,0.0,-43.32,-11644.54,-11687.86 +531,2741.15,7047.16,8221.71,915.86,452.25,0.0,-5503.77,-54391.59,2258.89,38128.51,-11906.52,224.33,0.0,-129.84,-11682.2,-11812.03 +541,2753.06,6807.27,8274.55,872.84,469.32,0.0,-5541.17,-54034.78,2340.39,38308.65,-12092.86,228.88,0.0,250.13,-11863.98,-11613.85 +551,2748.77,6852.26,8181.07,897.99,451.87,0.0,-5546.29,-53931.06,2350.92,38312.13,-12156.25,226.67,0.0,317.67,-11929.58,-11611.91 +561,2761.67,6925.78,8190.38,902.88,486.05,0.0,-5540.17,-54067.16,2295.71,38186.56,-12078.71,223.15,0.0,141.69,-11855.56,-11713.87 +571,2842.47,6841.66,8232.53,905.19,475.91,0.0,-5557.9,-54217.69,2323.11,38290.49,-12008.04,224.62,0.0,135.77,-11783.43,-11647.66 +581,2819.44,6926.25,8256.02,919.75,475.73,0.0,-5616.98,-54062.69,2311.0,38323.66,-12094.6,227.32,0.0,352.18,-11867.28,-11515.09 +591,2782.03,6828.27,8201.05,904.19,477.54,0.0,-5577.39,-54585.96,2332.87,38469.12,-11829.94,223.0,0.0,-168.29,-11606.94,-11775.23 +601,2769.15,6853.36,8270.55,918.78,453.72,0.0,-5628.82,-54409.13,2311.74,38417.19,-11912.96,221.68,0.0,-43.44,-11691.29,-11734.73 +611,2784.5,6955.7,8227.73,923.5,489.92,0.0,-5645.76,-54321.41,2303.6,38378.05,-11937.21,221.33,0.0,95.84,-11715.88,-11620.04 +621,2783.64,6880.0,8144.08,880.46,465.06,0.0,-5544.36,-53746.09,2343.92,38287.72,-12402.42,224.34,0.0,494.43,-12178.08,-11683.66 +631,2759.31,6875.68,8223.65,894.18,484.99,0.0,-5499.56,-53935.7,2305.77,38395.78,-12358.89,228.27,0.0,504.1,-12130.62,-11626.51 +641,2716.47,6958.66,8180.58,905.64,479.41,0.0,-5536.37,-54014.95,2356.79,38394.61,-12295.69,229.79,0.0,440.84,-12065.9,-11625.06 +651,2801.72,6877.78,8308.33,886.49,484.67,0.0,-5609.34,-53915.62,2305.44,38343.52,-12231.1,228.03,0.0,482.98,-12003.07,-11520.09 +661,2716.88,6947.96,8164.13,890.23,477.14,0.0,-5513.36,-54604.65,2325.42,38567.82,-11817.06,225.08,0.0,-28.45,-11591.98,-11620.44 +671,2794.33,6942.49,8218.02,904.35,498.85,0.0,-5495.19,-54557.65,2336.5,38400.7,-11810.62,227.16,0.0,42.39,-11583.46,-11541.07 +681,2717.14,6895.08,8227.5,894.38,438.02,0.0,-5497.55,-54330.52,2292.77,38434.42,-12006.03,229.52,0.0,71.23,-11776.51,-11705.28 +691,2707.55,6873.99,8253.99,901.76,490.38,0.0,-5568.17,-54124.71,2339.38,38392.18,-12090.28,227.39,0.0,266.36,-11862.89,-11596.53 +701,2809.1,7035.27,8200.3,938.54,493.19,0.0,-5578.89,-53982.51,2313.79,38306.02,-12240.23,222.27,0.0,534.82,-12017.96,-11483.13 +711,2732.1,6867.04,8204.26,890.96,456.38,0.0,-5564.78,-54183.19,2322.29,38380.05,-12125.47,223.49,0.0,105.12,-11901.98,-11796.86 +721,2755.38,6882.37,8271.08,910.74,469.28,0.0,-5594.56,-53765.63,2317.81,38348.41,-12492.34,222.59,0.0,594.89,-12269.75,-11674.86 +731,2696.14,6824.23,8266.06,894.92,462.28,0.0,-5589.32,-54059.97,2271.26,38319.03,-12162.8,222.54,0.0,84.64,-11940.26,-11855.62 +741,2780.32,6796.51,8231.31,894.9,478.76,0.0,-5551.55,-54206.07,2302.45,38380.2,-12026.46,227.03,0.0,106.82,-11799.44,-11692.61 +751,2767.6,6953.29,8191.88,885.18,468.37,0.0,-5638.95,-53812.52,2354.19,38392.68,-12426.41,227.66,0.0,561.71,-12198.75,-11637.04 +761,2791.0,6940.54,8281.13,912.53,462.37,0.0,-5711.32,-54047.85,2314.33,38370.13,-12164.04,220.15,0.0,312.87,-11943.89,-11631.02 +771,2672.28,6894.42,8260.9,905.38,489.9,0.0,-5604.75,-54030.17,2342.35,38436.28,-12203.04,219.23,0.0,366.59,-11983.82,-11617.23 +781,2762.58,6907.69,8249.92,891.44,462.91,0.0,-5648.76,-53867.68,2334.55,38267.75,-12147.76,223.87,0.0,360.39,-11923.9,-11563.5 +791,2747.79,6924.95,8253.54,905.0,497.43,0.0,-5557.73,-54187.47,2303.89,38267.83,-12050.04,227.1,0.0,155.23,-11822.94,-11667.7 +801,2786.94,6824.43,8283.4,887.96,472.0,0.0,-5651.76,-53818.88,2308.64,38305.5,-12268.14,222.93,0.0,398.24,-12045.21,-11646.98 +811,2828.67,6834.72,8301.46,921.16,491.96,0.0,-5576.48,-53824.7,2337.29,38332.94,-12299.64,224.21,0.0,647.02,-12075.44,-11428.42 +821,2771.18,6860.36,8271.89,898.47,495.36,0.0,-5577.38,-54413.28,2264.57,38491.14,-11886.81,227.18,0.0,62.32,-11659.63,-11597.31 +831,2722.61,6816.82,8214.38,900.35,487.5,0.0,-5574.06,-54393.91,2355.75,38368.53,-11760.74,222.65,0.0,-102.03,-11538.09,-11640.12 +841,2734.01,6889.94,8230.06,903.69,451.41,0.0,-5564.02,-54389.02,2346.74,38570.27,-12015.97,220.17,0.0,173.07,-11795.79,-11622.72 +851,2677.94,6881.41,8229.9,893.49,495.45,0.0,-5618.52,-54361.68,2319.91,38405.82,-11949.69,220.76,0.0,-76.27,-11728.93,-11805.2 +861,2786.72,6807.99,8276.14,908.26,467.98,0.0,-5532.52,-54394.17,2327.38,38426.01,-11897.31,229.64,0.0,73.79,-11667.67,-11593.87 +871,2764.57,6859.75,8279.55,920.03,449.65,0.0,-5637.17,-54389.78,2340.99,38695.42,-12193.38,224.93,0.0,283.02,-11968.45,-11685.43 +881,2772.13,6806.73,8261.27,899.93,472.62,0.0,-5540.09,-54470.45,2332.39,38514.94,-12064.64,226.53,0.0,49.47,-11838.11,-11788.64 +891,2868.33,6864.5,8242.07,901.56,471.48,0.0,-5636.86,-54257.5,2300.81,38453.38,-12054.1,225.35,0.0,207.77,-11828.76,-11620.99 +901,2812.79,6954.36,8271.03,922.29,490.25,0.0,-5588.8,-54435.32,2334.32,38554.82,-11965.45,227.36,0.0,315.75,-11738.09,-11422.34 +911,2776.65,6951.54,8198.03,909.64,500.05,0.0,-5575.99,-54446.34,2341.65,38331.59,-11829.69,224.98,0.0,-13.18,-11604.71,-11617.89 +921,2747.81,6872.41,8267.41,903.79,449.32,0.0,-5598.42,-54561.25,2297.6,38555.72,-11850.86,225.49,0.0,-65.61,-11625.37,-11690.98 +931,2800.2,6786.74,8243.57,895.23,484.4,0.0,-5550.52,-54141.0,2318.19,38506.79,-12185.59,226.11,0.0,343.61,-11959.48,-11615.87 +941,2785.87,6904.18,8298.39,889.96,511.04,0.0,-5543.48,-54297.35,2310.31,38389.98,-11889.32,222.87,0.0,248.9,-11666.45,-11417.55 +951,2823.81,6804.95,8258.0,898.28,484.35,0.0,-5522.7,-54991.74,2331.95,38581.82,-11612.46,226.15,0.0,-331.28,-11386.31,-11717.58 +961,2746.38,6815.12,8180.56,895.74,454.16,0.0,-5604.46,-54412.43,2323.7,38629.02,-11908.43,226.7,0.0,27.79,-11681.73,-11653.94 +971,2704.88,6812.69,8223.06,891.7,490.49,0.0,-5619.82,-54117.16,2299.37,38471.33,-12120.9,223.99,0.0,156.55,-11896.91,-11740.36 +981,2711.36,6887.29,8164.3,888.28,474.44,0.0,-5612.48,-54434.29,2313.92,38509.22,-11920.61,227.3,0.0,-97.97,-11693.31,-11791.28 +991,2776.71,6801.09,8196.07,890.51,467.09,0.0,-5598.05,-54852.64,2353.02,38814.1,-11739.68,225.34,0.0,-152.11,-11514.34,-11666.45 +1001,2811.83,6905.08,8230.36,912.63,473.57,0.0,-5647.67,-54299.29,2304.99,38381.53,-11917.05,225.07,0.0,73.02,-11691.98,-11618.95 + +Receptor Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EPB,ENPOLAR,EDISPER,GGAS,GSOLV,TOTAL +1,2089.71,5037.29,6304.72,664.0,371.33,0.0,-4391.28,-41568.45,1702.26,27859.33,-11137.09,150.63,0.0,-1931.08,-10986.47,-12917.55 +11,2120.7,5128.52,6340.02,681.92,365.5,0.0,-4327.97,-40905.53,1666.53,27779.01,-11675.75,155.65,0.0,-1151.3,-11520.1,-12671.4 +21,2073.51,5093.54,6274.96,658.03,359.68,0.0,-4303.57,-41101.54,1635.01,27830.86,-11503.2,154.79,0.0,-1479.52,-11348.41,-12827.93 +31,2053.09,5121.46,6276.32,680.07,339.86,0.0,-4272.92,-41461.47,1667.75,27946.54,-11293.26,155.99,0.0,-1649.29,-11137.27,-12786.56 +41,2086.88,5042.23,6243.76,673.03,376.07,0.0,-4274.1,-41027.92,1688.06,27792.79,-11491.17,155.07,0.0,-1399.21,-11336.1,-12735.31 +51,2098.2,5114.37,6277.14,679.45,372.84,0.0,-4261.88,-41308.78,1688.92,27833.18,-11298.47,158.71,0.0,-1506.58,-11139.76,-12646.34 +61,2086.11,5078.5,6194.97,677.31,365.66,0.0,-4226.86,-41149.24,1689.08,27679.64,-11358.11,162.75,0.0,-1604.83,-11195.35,-12800.19 +71,2091.32,5109.45,6198.33,671.41,367.1,0.0,-4245.51,-41209.83,1653.1,27656.87,-11381.81,162.79,0.0,-1707.77,-11219.02,-12926.79 +81,2092.49,5014.3,6254.95,668.84,350.57,0.0,-4271.1,-41634.77,1640.83,27773.5,-10859.18,161.09,0.0,-2110.4,-10698.08,-12808.48 +91,2114.29,5006.25,6262.22,656.43,370.59,0.0,-4233.86,-41635.51,1677.68,27818.04,-10972.53,160.15,0.0,-1963.87,-10812.38,-12776.25 +101,2102.53,5019.66,6282.6,675.54,344.42,0.0,-4260.25,-41336.52,1698.92,27803.13,-11202.62,161.0,0.0,-1669.97,-11041.62,-12711.6 +111,2052.18,5104.14,6305.25,655.58,367.39,0.0,-4252.87,-41553.48,1669.92,27766.51,-11000.95,162.93,0.0,-1885.37,-10838.02,-12723.39 +121,2025.61,5110.79,6247.14,660.84,357.12,0.0,-4238.74,-41715.83,1681.06,27602.42,-10831.34,162.88,0.0,-2269.61,-10668.46,-12938.07 +131,2056.56,5110.4,6250.64,671.4,354.79,0.0,-4287.86,-41186.02,1679.93,27748.34,-11325.23,162.42,0.0,-1601.81,-11162.81,-12764.62 +141,2075.58,5001.82,6214.72,675.81,361.98,0.0,-4245.07,-41507.01,1694.02,27809.15,-11063.46,162.84,0.0,-1918.99,-10900.61,-12819.61 +151,2084.9,5076.59,6235.19,666.52,371.97,0.0,-4268.03,-41614.61,1653.65,27802.9,-10969.99,154.38,0.0,-1990.91,-10815.61,-12806.52 +161,2069.6,5121.78,6263.94,654.73,349.4,0.0,-4311.82,-41384.7,1686.84,27654.15,-11058.62,154.83,0.0,-1896.08,-10903.78,-12799.87 +171,2088.59,5072.06,6244.23,679.28,360.16,0.0,-4270.87,-41608.45,1652.96,27650.06,-10971.91,156.14,0.0,-2131.97,-10815.77,-12947.73 +181,2057.14,5119.03,6235.88,656.45,377.61,0.0,-4279.38,-41470.66,1678.71,27733.26,-11031.93,153.92,0.0,-1891.96,-10878.01,-12769.97 +191,2041.87,5075.35,6261.96,677.51,342.58,0.0,-4255.25,-41393.53,1699.6,27672.4,-11208.74,155.7,0.0,-1877.52,-11053.04,-12930.56 +201,2103.94,4960.72,6174.38,650.79,356.42,0.0,-4320.11,-41219.5,1676.33,27713.96,-11152.57,152.82,0.0,-1903.07,-10999.75,-12902.82 +211,2043.19,5022.46,6262.61,652.68,369.37,0.0,-4301.38,-41050.55,1663.53,27615.78,-11430.58,154.52,0.0,-1722.3,-11276.06,-12998.36 +221,2100.52,5082.98,6293.21,669.68,382.18,0.0,-4343.92,-41155.64,1642.57,27583.88,-11298.26,157.11,0.0,-1744.53,-11141.15,-12885.68 +231,2098.05,5126.9,6264.47,689.71,383.41,0.0,-4302.55,-41575.2,1696.28,27682.8,-11009.11,153.71,0.0,-1936.12,-10855.4,-12791.52 +241,2084.73,5048.22,6236.41,668.14,360.65,0.0,-4362.75,-41001.9,1686.46,27728.86,-11435.84,155.73,0.0,-1551.17,-11280.12,-12831.28 +251,2054.35,5094.85,6221.51,668.13,369.76,0.0,-4303.87,-41071.45,1687.28,27853.62,-11424.21,155.46,0.0,-1425.82,-11268.75,-12694.58 +261,2074.0,5055.72,6247.37,677.89,363.06,0.0,-4346.6,-41206.75,1675.48,27746.35,-11296.67,155.72,0.0,-1713.48,-11140.95,-12854.43 +271,2111.45,5046.69,6214.06,659.03,359.36,0.0,-4295.28,-41388.16,1706.08,27690.09,-11068.23,154.98,0.0,-1896.69,-10913.25,-12809.94 +281,2093.52,5086.61,6205.3,670.06,346.76,0.0,-4322.34,-41775.64,1648.43,27657.83,-10658.66,156.5,0.0,-2389.47,-10502.16,-12891.64 +291,2044.9,5082.9,6213.02,667.6,367.64,0.0,-4311.96,-41977.52,1661.34,27771.9,-10578.61,156.69,0.0,-2480.2,-10421.92,-12902.12 +301,2065.84,5197.14,6288.64,674.41,346.91,0.0,-4285.94,-41585.59,1648.33,27775.35,-10936.55,157.1,0.0,-1874.92,-10779.45,-12654.37 +311,2102.41,5069.14,6236.49,673.17,391.66,0.0,-4316.18,-41686.65,1663.67,27723.78,-10769.4,157.52,0.0,-2142.53,-10611.88,-12754.41 +321,2062.79,5089.7,6208.21,690.34,342.43,0.0,-4379.88,-41482.45,1634.29,27715.68,-10941.12,154.99,0.0,-2118.89,-10786.13,-12905.03 +331,2075.03,5108.32,6220.81,663.73,358.1,0.0,-4307.95,-41172.13,1667.31,27800.95,-11290.06,158.27,0.0,-1585.84,-11131.79,-12717.62 +341,2022.76,5061.91,6268.1,672.74,364.94,0.0,-4310.46,-41121.08,1656.39,27615.39,-11181.17,154.62,0.0,-1769.32,-11026.55,-12795.87 +351,2075.42,5135.17,6232.66,696.94,378.16,0.0,-4304.1,-41297.45,1640.97,27659.26,-11004.05,157.53,0.0,-1782.97,-10846.52,-12629.49 +361,2090.22,5123.51,6220.05,674.96,369.28,0.0,-4300.02,-41627.89,1685.72,27683.77,-10914.31,153.36,0.0,-2080.4,-10760.95,-12841.35 +371,2056.89,5049.37,6285.16,673.84,355.19,0.0,-4315.05,-41304.18,1707.08,27723.53,-11110.0,154.94,0.0,-1768.17,-10955.05,-12723.22 +381,2134.98,5095.88,6252.71,682.39,377.31,0.0,-4251.36,-41464.87,1672.87,27622.01,-10969.54,155.3,0.0,-1878.1,-10814.24,-12692.34 +391,2027.28,5020.44,6227.16,659.73,377.86,0.0,-4269.35,-41863.02,1670.74,27716.95,-10693.45,156.15,0.0,-2432.21,-10537.3,-12969.52 +401,2090.94,4989.95,6199.21,655.75,358.12,0.0,-4303.52,-41559.66,1653.41,27815.69,-10965.05,159.97,0.0,-2100.09,-10805.08,-12905.17 +411,2072.71,5073.39,6247.39,675.27,384.31,0.0,-4263.0,-41572.54,1673.27,27735.9,-10915.24,156.37,0.0,-1973.3,-10758.87,-12732.18 +421,2074.84,5142.47,6255.16,660.72,358.63,0.0,-4249.32,-41788.16,1643.28,27731.01,-10704.57,157.22,0.0,-2171.38,-10547.35,-12718.73 +431,2128.71,4986.8,6241.0,663.78,346.49,0.0,-4256.03,-41690.91,1618.84,27832.34,-10936.47,157.38,0.0,-2128.98,-10779.09,-12908.07 +441,2068.92,5096.74,6279.33,678.98,370.76,0.0,-4253.61,-41564.02,1662.8,27707.32,-10929.15,156.21,0.0,-1952.77,-10772.94,-12725.71 +451,2144.25,5010.79,6202.21,692.95,347.53,0.0,-4251.83,-41394.31,1661.08,27717.18,-11080.65,156.85,0.0,-1870.16,-10923.8,-12793.95 +461,2102.36,5123.88,6266.73,668.6,378.17,0.0,-4253.97,-41638.01,1670.7,27603.06,-10766.79,155.56,0.0,-2078.48,-10611.23,-12689.71 +471,2053.39,5058.33,6256.7,673.56,377.17,0.0,-4294.21,-41648.7,1703.55,27671.14,-10800.85,153.57,0.0,-2149.08,-10647.28,-12796.36 +481,2076.99,5103.5,6227.89,675.25,361.16,0.0,-4265.38,-41712.47,1647.8,27715.01,-10778.95,157.5,0.0,-2170.26,-10621.46,-12791.71 +491,2142.57,5115.45,6195.65,691.27,376.39,0.0,-4254.0,-41462.53,1630.9,27651.25,-10967.0,157.65,0.0,-1913.05,-10809.35,-12722.4 +501,2124.1,5039.84,6196.72,671.1,393.88,0.0,-4281.46,-41498.11,1669.1,27609.93,-10935.35,158.94,0.0,-2074.91,-10776.41,-12851.32 +511,2127.97,5039.21,6217.87,675.57,345.26,0.0,-4313.22,-41347.89,1677.56,27722.99,-11100.75,155.93,0.0,-1854.68,-10944.82,-12799.5 +521,2022.13,5017.58,6216.65,665.93,355.94,0.0,-4329.38,-41446.35,1678.23,27720.28,-10893.81,158.87,0.0,-2099.0,-10734.95,-12833.95 +531,2117.58,5224.69,6231.88,691.76,350.64,0.0,-4224.99,-41534.31,1605.92,27360.18,-10890.87,157.0,0.0,-2176.66,-10733.88,-12910.53 +541,2052.55,5073.46,6262.91,648.22,350.59,0.0,-4282.31,-41215.62,1666.95,27543.23,-11020.58,159.41,0.0,-1900.01,-10861.17,-12761.18 +551,2048.03,5067.75,6178.5,667.28,344.98,0.0,-4249.67,-41129.67,1678.14,27603.51,-11124.55,159.33,0.0,-1791.15,-10965.22,-12756.37 +561,2074.75,5132.72,6217.53,674.58,371.89,0.0,-4269.88,-41179.25,1646.92,27505.55,-11150.91,156.34,0.0,-1825.19,-10994.57,-12819.76 +571,2147.92,5077.01,6225.4,676.16,360.9,0.0,-4257.88,-41393.02,1663.04,27600.48,-10990.48,156.81,0.0,-1900.0,-10833.67,-12733.67 +581,2115.17,5144.7,6216.24,680.48,353.18,0.0,-4314.38,-41240.26,1667.67,27623.01,-11072.41,159.44,0.0,-1754.21,-10912.97,-12667.19 +591,2089.9,5052.06,6191.0,670.48,371.05,0.0,-4242.58,-41728.42,1678.76,27745.22,-10847.53,157.53,0.0,-2172.54,-10690.0,-12862.53 +601,2088.03,5094.16,6233.76,679.85,355.7,0.0,-4298.97,-41559.34,1652.3,27675.69,-10941.68,157.08,0.0,-2078.82,-10784.6,-12863.42 +611,2065.67,5185.37,6211.5,694.52,380.87,0.0,-4330.1,-41514.5,1646.32,27683.65,-10914.33,156.87,0.0,-1976.7,-10757.46,-12734.16 +621,2107.93,5059.35,6135.52,659.21,352.61,0.0,-4263.07,-40945.92,1685.56,27670.45,-11444.91,158.33,0.0,-1538.35,-11286.58,-12824.93 +631,2100.37,5061.82,6212.63,659.86,374.09,0.0,-4219.63,-41082.3,1640.36,27667.07,-11400.65,160.52,0.0,-1585.73,-11240.14,-12825.86 +641,2039.03,5160.79,6193.27,667.81,363.69,0.0,-4269.25,-41195.68,1698.76,27764.84,-11381.56,162.1,0.0,-1576.74,-11219.46,-12796.21 +651,2108.63,5130.02,6259.62,659.22,361.15,0.0,-4298.42,-41149.3,1638.67,27628.7,-11201.29,160.49,0.0,-1661.72,-11040.8,-12702.52 +661,2039.98,5169.64,6164.14,656.4,371.39,0.0,-4271.81,-41651.7,1643.72,27789.31,-10854.84,158.99,0.0,-2088.93,-10695.85,-12784.78 +671,2105.56,5115.56,6193.12,663.79,375.05,0.0,-4238.48,-41762.72,1655.04,27792.86,-10839.21,159.96,0.0,-2100.21,-10679.25,-12779.46 +681,2025.21,5112.53,6192.85,656.28,346.26,0.0,-4215.93,-41638.89,1642.2,27783.47,-10964.7,160.33,0.0,-2096.02,-10804.38,-12900.4 +691,2069.12,5103.41,6217.82,668.66,373.02,0.0,-4317.18,-41362.54,1665.86,27754.75,-11111.6,158.53,0.0,-1827.06,-10953.07,-12780.13 +701,2119.09,5266.98,6179.82,706.69,382.57,0.0,-4250.49,-41146.55,1665.1,27597.16,-11248.45,157.61,0.0,-1479.63,-11090.84,-12570.47 +711,2033.47,5049.0,6185.06,658.64,339.86,0.0,-4272.86,-41434.97,1660.26,27782.87,-11103.92,158.23,0.0,-1998.66,-10945.68,-12944.34 +721,2057.29,5146.96,6209.96,672.25,352.55,0.0,-4287.37,-40951.14,1646.44,27655.36,-11501.59,157.11,0.0,-1497.72,-11344.48,-12842.2 +731,2005.36,5065.61,6249.93,664.69,350.72,0.0,-4270.13,-41229.36,1631.3,27685.25,-11205.52,157.66,0.0,-1846.63,-11047.86,-12894.49 +741,2082.37,5017.19,6191.04,663.81,358.55,0.0,-4265.01,-41387.2,1647.77,27689.21,-11029.66,159.86,0.0,-2002.28,-10869.79,-12872.07 +751,2067.47,5158.56,6169.29,651.47,347.34,0.0,-4308.37,-41009.71,1689.94,27734.5,-11416.33,161.4,0.0,-1499.51,-11254.93,-12754.44 +761,2059.27,5144.12,6248.8,675.3,358.65,0.0,-4340.6,-41202.58,1656.01,27641.19,-11212.64,158.3,0.0,-1759.84,-11054.34,-12814.18 +771,2002.22,5126.02,6211.62,666.45,371.37,0.0,-4305.15,-41188.56,1693.05,27709.96,-11223.55,155.93,0.0,-1713.03,-11067.62,-12780.65 +781,2077.93,5173.9,6222.76,668.89,359.93,0.0,-4341.45,-41018.3,1677.85,27560.57,-11180.66,158.94,0.0,-1617.92,-11021.72,-12639.64 +791,2073.52,5131.32,6238.81,675.11,381.08,0.0,-4261.57,-41365.75,1668.56,27568.45,-11077.46,161.85,0.0,-1890.47,-10915.61,-12806.08 +801,2107.7,5045.12,6262.64,654.39,357.67,0.0,-4323.5,-41044.32,1659.16,27581.15,-11223.62,157.05,0.0,-1699.99,-11066.56,-12766.56 +811,2128.17,5087.33,6246.19,678.73,370.36,0.0,-4319.84,-40927.32,1655.63,27612.69,-11344.0,156.7,0.0,-1468.06,-11187.3,-12655.35 +821,2063.22,5107.42,6245.56,679.06,377.31,0.0,-4287.46,-41510.31,1630.81,27794.29,-10977.18,158.54,0.0,-1900.11,-10818.63,-12718.74 +831,2081.4,5022.39,6196.02,661.3,368.58,0.0,-4311.23,-41501.61,1677.88,27662.99,-10833.83,155.0,0.0,-2142.28,-10678.84,-12821.12 +841,2052.31,5142.11,6185.91,678.0,346.4,0.0,-4254.53,-41447.71,1676.92,27826.91,-11119.05,156.63,0.0,-1793.67,-10962.42,-12756.09 +851,2036.62,5144.95,6226.81,668.72,370.94,0.0,-4287.86,-41349.55,1668.2,27673.81,-11096.41,157.71,0.0,-1847.37,-10938.7,-12786.06 +861,2057.0,5045.45,6217.24,677.63,355.07,0.0,-4273.49,-41519.92,1675.53,27749.19,-10960.99,161.71,0.0,-2016.3,-10799.27,-12815.57 +871,2064.82,5089.41,6230.37,677.42,345.72,0.0,-4284.05,-41397.16,1683.03,27910.97,-11295.1,161.46,0.0,-1679.47,-11133.64,-12813.11 +881,2065.51,5046.19,6227.03,671.42,372.15,0.0,-4252.77,-41473.07,1700.51,27810.0,-11168.86,160.33,0.0,-1833.04,-11008.53,-12841.57 +891,2165.75,5029.77,6177.9,667.69,354.06,0.0,-4306.56,-41262.88,1656.4,27717.82,-11210.98,162.14,0.0,-1800.05,-11048.84,-12848.89 +901,2127.85,5187.82,6243.6,684.02,377.97,0.0,-4271.65,-41539.68,1676.95,27873.53,-11089.38,163.45,0.0,-1639.57,-10925.93,-12565.5 +911,2113.69,5168.0,6185.53,679.1,378.71,0.0,-4238.89,-41460.1,1679.27,27621.51,-11006.38,161.37,0.0,-1873.16,-10845.01,-12718.17 +921,2082.83,5168.83,6226.93,675.31,346.92,0.0,-4318.89,-41570.38,1647.52,27842.55,-11008.74,161.83,0.0,-1898.37,-10846.9,-12745.28 +931,2102.0,5046.97,6220.97,672.8,357.61,0.0,-4257.29,-41185.04,1678.73,27836.1,-11363.71,160.67,0.0,-1527.14,-11203.04,-12730.18 +941,2099.62,5099.31,6242.54,664.76,382.64,0.0,-4209.09,-41238.62,1651.43,27691.09,-11157.63,160.66,0.0,-1616.31,-10996.97,-12613.29 +951,2117.62,5026.7,6244.84,660.41,366.94,0.0,-4214.57,-41978.44,1694.1,27823.76,-10762.86,162.18,0.0,-2258.65,-10600.68,-12859.33 +961,2064.56,5038.87,6163.96,662.74,347.52,0.0,-4285.94,-41428.82,1661.16,27879.06,-11081.95,162.99,0.0,-1896.9,-10918.95,-12815.85 +971,2081.72,5061.28,6200.65,658.14,360.6,0.0,-4298.19,-41176.05,1638.76,27750.46,-11280.74,160.54,0.0,-1722.63,-11120.19,-12842.82 +981,2026.9,5144.5,6147.22,659.01,360.38,0.0,-4295.49,-41468.89,1657.36,27777.31,-11068.5,162.99,0.0,-1991.71,-10905.51,-12897.21 +991,2122.7,5057.16,6159.08,662.15,355.69,0.0,-4277.54,-41782.62,1686.99,28016.37,-10922.39,161.97,0.0,-2000.03,-10760.41,-12760.44 +1001,2111.86,5107.01,6201.81,678.58,359.61,0.0,-4339.06,-41298.81,1641.32,27660.63,-11126.34,161.36,0.0,-1877.05,-10964.99,-12842.04 + +Ligand Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EPB,ENPOLAR,EDISPER,GGAS,GSOLV,TOTAL +1,669.16,1769.06,2046.96,233.61,111.63,0.0,-935.57,-12777.29,665.51,10753.82,-1177.37,112.21,0.0,2536.87,-1065.16,1471.71 +11,726.28,1777.7,2032.84,228.12,126.13,0.0,-960.53,-12651.04,666.49,10665.11,-1200.39,105.78,0.0,2611.11,-1094.61,1516.5 +21,662.67,1824.98,1977.06,222.82,116.45,0.0,-1026.89,-12639.39,656.02,10787.0,-1254.89,97.03,0.0,2580.71,-1157.86,1422.85 +31,700.43,1810.39,2004.55,250.63,124.5,0.0,-1093.64,-12580.88,650.12,10667.88,-1243.18,94.38,0.0,2533.97,-1148.8,1385.17 +41,712.81,1779.36,1986.09,231.52,120.12,0.0,-1092.71,-12594.59,661.19,10665.17,-1214.99,89.02,0.0,2468.97,-1125.97,1343.0 +51,670.54,1736.29,2038.53,231.9,113.26,0.0,-1131.36,-12708.59,677.79,10803.56,-1173.55,89.42,0.0,2431.92,-1084.12,1347.8 +61,712.11,1769.83,2003.3,231.52,97.9,0.0,-1113.73,-12626.66,682.2,10671.32,-1221.81,88.56,0.0,2427.79,-1133.25,1294.53 +71,669.46,1799.68,2028.9,235.38,106.59,0.0,-1148.36,-12682.06,648.05,10708.4,-1188.94,86.51,0.0,2366.03,-1102.44,1263.59 +81,688.91,1757.44,2039.45,231.22,112.3,0.0,-1140.18,-12792.98,681.17,10817.33,-1196.36,87.45,0.0,2394.67,-1108.91,1285.76 +91,664.21,1731.71,2029.62,231.92,114.19,0.0,-1162.62,-12709.88,664.18,10787.74,-1177.26,85.45,0.0,2351.07,-1091.81,1259.26 +101,665.97,1797.54,2044.21,232.25,115.75,0.0,-1142.53,-12764.85,680.01,10844.3,-1222.87,86.7,0.0,2472.65,-1136.18,1336.48 +111,712.41,1753.15,2049.74,234.91,118.23,0.0,-1153.52,-12661.23,651.23,10717.09,-1183.86,83.28,0.0,2422.01,-1100.57,1321.44 +121,684.35,1758.74,2014.62,231.07,105.6,0.0,-1189.31,-12561.92,644.3,10641.83,-1200.4,85.12,0.0,2329.28,-1115.28,1213.99 +131,683.5,1791.69,2000.31,239.97,112.84,0.0,-1185.62,-12706.79,666.49,10670.64,-1113.97,83.21,0.0,2273.03,-1030.76,1242.27 +141,651.27,1834.91,2016.65,246.85,116.54,0.0,-1184.39,-12707.99,682.76,10685.08,-1156.93,83.36,0.0,2341.67,-1073.57,1268.1 +151,658.58,1798.98,2002.23,227.37,116.66,0.0,-1141.7,-12734.54,651.43,10695.56,-1170.67,84.86,0.0,2274.58,-1085.81,1188.77 +161,712.09,1789.84,2016.47,231.22,114.06,0.0,-1137.35,-12708.85,664.71,10707.78,-1170.29,84.23,0.0,2389.96,-1086.06,1303.9 +171,652.16,1823.33,2021.69,238.71,107.0,0.0,-1165.02,-12669.05,659.84,10738.36,-1194.91,84.39,0.0,2407.02,-1110.51,1296.51 +181,678.75,1792.09,2037.12,235.95,104.18,0.0,-1164.07,-12615.26,682.58,10705.99,-1223.82,85.15,0.0,2457.33,-1138.67,1318.66 +191,687.29,1790.03,2016.67,234.65,110.41,0.0,-1135.95,-12743.2,669.03,10735.4,-1182.76,87.58,0.0,2364.33,-1095.18,1269.15 +201,687.89,1757.32,2003.76,227.79,115.04,0.0,-1177.88,-12689.15,640.47,10724.85,-1174.38,86.64,0.0,2290.08,-1087.74,1202.34 +211,643.75,1763.7,1987.91,229.85,114.17,0.0,-1133.07,-12798.51,681.54,10782.38,-1151.76,85.74,0.0,2271.72,-1066.02,1205.7 +221,688.23,1764.88,1995.19,233.35,113.18,0.0,-1147.2,-12672.53,662.56,10676.48,-1184.34,86.89,0.0,2314.14,-1097.45,1216.69 +231,675.36,1756.45,2013.37,226.63,118.12,0.0,-1181.21,-12644.6,667.68,10672.52,-1191.89,85.03,0.0,2304.31,-1106.86,1197.45 +241,665.6,1794.33,2011.32,226.17,114.77,0.0,-1166.17,-12710.41,659.82,10776.18,-1170.45,83.59,0.0,2371.6,-1086.86,1284.74 +251,663.89,1791.94,2005.4,228.06,103.64,0.0,-1126.48,-12689.67,675.08,10727.14,-1183.26,85.72,0.0,2379.01,-1097.54,1281.47 +261,675.84,1777.88,1997.7,220.77,95.95,0.0,-1127.85,-12737.11,645.54,10750.74,-1191.06,83.42,0.0,2299.46,-1107.64,1191.82 +271,720.86,1739.15,2003.59,232.03,128.5,0.0,-1182.87,-12662.5,666.66,10662.47,-1169.03,83.54,0.0,2307.89,-1085.5,1222.39 +281,711.16,1795.62,1994.71,235.11,107.42,0.0,-1197.55,-12689.71,671.55,10748.43,-1159.0,81.07,0.0,2376.75,-1077.93,1298.82 +291,703.07,1765.72,1993.65,233.47,108.4,0.0,-1173.65,-12744.47,656.96,10690.2,-1140.04,80.35,0.0,2233.35,-1059.69,1173.67 +301,694.97,1781.33,2005.01,228.23,106.9,0.0,-1175.18,-12652.64,635.29,10680.45,-1175.28,82.68,0.0,2304.34,-1092.6,1211.74 +311,684.47,1771.36,1998.18,227.86,125.06,0.0,-1174.48,-12719.8,668.76,10732.85,-1187.7,82.22,0.0,2314.27,-1105.48,1208.8 +321,687.29,1720.82,2037.98,227.75,109.17,0.0,-1177.42,-12703.03,640.43,10696.41,-1135.5,79.68,0.0,2239.41,-1055.83,1183.58 +331,696.52,1732.85,2023.42,232.93,107.47,0.0,-1151.13,-12597.55,663.13,10575.12,-1181.85,80.84,0.0,2282.75,-1101.01,1181.75 +341,707.8,1733.49,2038.99,231.47,121.88,0.0,-1197.56,-12711.03,648.6,10706.55,-1141.56,80.79,0.0,2280.17,-1060.78,1219.4 +351,717.56,1749.74,2015.39,232.61,124.03,0.0,-1209.49,-12658.39,663.22,10636.89,-1141.39,77.96,0.0,2271.55,-1063.43,1208.12 +361,671.72,1770.08,2017.93,226.61,129.21,0.0,-1208.34,-12585.55,662.04,10629.89,-1176.11,79.05,0.0,2313.58,-1097.07,1216.52 +371,714.33,1756.06,2015.63,230.45,118.33,0.0,-1194.91,-12631.7,649.71,10637.88,-1165.82,80.12,0.0,2295.77,-1085.71,1210.06 +381,692.33,1779.81,1989.32,237.85,107.64,0.0,-1213.83,-12719.34,693.43,10661.09,-1119.26,78.7,0.0,2228.29,-1040.55,1187.73 +391,692.99,1748.42,2008.53,227.06,111.32,0.0,-1227.27,-12743.04,652.75,10744.62,-1095.29,77.88,0.0,2215.38,-1017.41,1197.97 +401,688.62,1776.14,1993.2,224.03,108.21,0.0,-1189.22,-12759.98,655.18,10778.8,-1131.34,80.27,0.0,2274.97,-1051.07,1223.9 +411,679.24,1750.76,2004.55,220.08,113.69,0.0,-1201.15,-12684.03,647.28,10672.33,-1154.86,78.95,0.0,2202.75,-1075.91,1126.84 +421,726.36,1763.35,2022.41,229.72,107.94,0.0,-1187.44,-12670.91,647.12,10646.19,-1172.27,78.45,0.0,2284.73,-1093.82,1190.91 +431,670.18,1765.86,2002.73,227.11,111.65,0.0,-1201.93,-12678.06,647.11,10667.38,-1114.38,78.45,0.0,2212.04,-1035.93,1176.11 +441,678.5,1787.62,1999.03,223.67,106.43,0.0,-1177.18,-12615.04,675.54,10626.8,-1145.95,78.93,0.0,2305.37,-1067.02,1238.34 +451,725.32,1828.67,1999.19,242.01,105.36,0.0,-1214.3,-12618.68,668.86,10602.29,-1126.63,77.7,0.0,2338.71,-1048.93,1289.78 +461,702.8,1806.43,1996.58,226.89,102.21,0.0,-1214.16,-12548.77,637.48,10592.68,-1168.67,76.5,0.0,2302.13,-1092.17,1209.97 +471,708.01,1811.24,1990.07,229.94,107.51,0.0,-1207.07,-12626.14,646.51,10638.35,-1153.64,76.34,0.0,2298.43,-1077.3,1221.13 +481,663.98,1788.7,1984.26,243.04,112.4,0.0,-1233.87,-12677.68,669.64,10655.6,-1117.12,76.42,0.0,2206.07,-1040.7,1165.37 +491,684.88,1784.85,2033.62,243.88,105.91,0.0,-1215.46,-12635.37,649.47,10697.64,-1173.75,76.58,0.0,2349.41,-1097.17,1252.23 +501,695.54,1769.61,1995.46,241.52,108.84,0.0,-1221.77,-12679.87,665.81,10727.05,-1168.37,77.33,0.0,2302.19,-1091.04,1211.15 +511,679.9,1807.63,2033.11,222.54,135.35,0.0,-1253.57,-12661.3,659.82,10704.13,-1161.02,74.77,0.0,2327.61,-1086.24,1241.36 +521,721.89,1818.06,2028.02,230.73,114.63,0.0,-1261.0,-12670.38,633.49,10662.5,-1146.28,75.08,0.0,2277.93,-1071.2,1206.73 +531,623.57,1822.47,1989.83,224.1,101.61,0.0,-1216.89,-12703.92,652.97,10768.33,-1189.91,76.59,0.0,2262.07,-1113.32,1148.74 +541,700.51,1733.81,2011.64,224.62,118.73,0.0,-1206.45,-12722.31,673.44,10765.42,-1181.7,77.41,0.0,2299.41,-1104.29,1195.12 +551,700.74,1784.5,2002.57,230.71,106.9,0.0,-1233.98,-12697.65,672.78,10708.62,-1161.03,76.76,0.0,2275.21,-1084.27,1190.93 +561,686.92,1793.06,1972.84,228.3,114.17,0.0,-1200.0,-12690.6,648.79,10681.01,-1162.28,76.59,0.0,2234.48,-1085.68,1148.8 +571,694.55,1764.65,2007.13,229.04,115.01,0.0,-1240.11,-12720.6,660.07,10690.02,-1149.2,76.28,0.0,2199.74,-1072.92,1126.82 +581,704.27,1781.55,2039.78,239.27,122.55,0.0,-1246.75,-12747.54,643.33,10700.66,-1116.45,75.88,0.0,2237.13,-1040.57,1196.56 +591,692.13,1776.21,2010.05,233.7,106.49,0.0,-1279.54,-12767.38,654.11,10723.9,-1111.48,74.06,0.0,2149.67,-1037.43,1112.24 +601,681.12,1759.21,2036.8,238.93,98.02,0.0,-1269.45,-12744.36,659.44,10741.5,-1105.05,74.0,0.0,2201.21,-1031.05,1170.16 +611,718.83,1770.33,2016.23,228.98,109.06,0.0,-1239.81,-12703.16,657.29,10694.4,-1157.58,74.96,0.0,2252.15,-1082.62,1169.53 +621,675.71,1820.65,2008.56,221.25,112.46,0.0,-1214.54,-12695.39,658.36,10617.27,-1102.87,75.35,0.0,2204.32,-1027.52,1176.8 +631,658.94,1813.87,2011.02,234.31,110.9,0.0,-1225.83,-12704.53,665.41,10728.71,-1125.59,75.67,0.0,2292.81,-1049.92,1242.88 +641,677.44,1797.86,1987.31,237.83,115.72,0.0,-1197.61,-12594.64,658.04,10629.77,-1173.47,78.42,0.0,2311.72,-1095.05,1216.67 +651,693.1,1747.76,2048.71,227.27,123.52,0.0,-1248.44,-12640.97,666.76,10714.82,-1187.53,75.91,0.0,2332.53,-1111.62,1220.91 +661,676.9,1778.32,1999.98,233.83,105.74,0.0,-1174.74,-12814.64,681.7,10778.5,-1114.2,74.98,0.0,2265.6,-1039.22,1226.38 +671,688.77,1826.92,2024.9,240.56,123.8,0.0,-1192.84,-12674.57,681.46,10607.84,-1107.07,75.35,0.0,2326.84,-1031.72,1295.12 +681,691.92,1782.55,2034.65,238.1,91.76,0.0,-1228.6,-12575.93,650.56,10650.95,-1170.19,75.83,0.0,2335.97,-1094.36,1241.61 +691,638.43,1770.57,2036.17,233.1,117.36,0.0,-1199.15,-12594.22,673.52,10637.43,-1163.46,75.96,0.0,2313.22,-1087.5,1225.71 +701,690.01,1768.29,2020.49,231.85,110.63,0.0,-1266.35,-12701.97,648.69,10708.87,-1141.24,73.23,0.0,2210.49,-1068.01,1142.48 +711,698.62,1818.03,2019.2,232.32,116.52,0.0,-1235.27,-12603.83,662.03,10597.18,-1196.62,74.21,0.0,2304.82,-1122.41,1182.41 +721,698.1,1735.41,2061.13,238.49,116.73,0.0,-1246.48,-12689.08,671.37,10693.05,-1148.03,74.32,0.0,2278.72,-1073.71,1205.01 +731,690.78,1758.62,2016.13,230.24,111.56,0.0,-1260.56,-12705.07,639.96,10633.78,-1108.76,73.75,0.0,2115.44,-1035.01,1080.43 +741,697.95,1779.32,2040.27,231.09,120.21,0.0,-1221.02,-12723.35,654.69,10690.99,-1127.37,76.0,0.0,2270.14,-1051.37,1218.77 +751,700.13,1794.74,2022.58,233.71,121.03,0.0,-1258.08,-12711.02,664.25,10658.18,-1125.16,75.07,0.0,2225.52,-1050.09,1175.43 +761,731.73,1796.42,2032.33,237.22,103.72,0.0,-1301.61,-12709.84,658.32,10728.95,-1116.31,72.09,0.0,2277.24,-1044.22,1233.02 +771,670.06,1768.39,2049.29,238.93,118.53,0.0,-1231.68,-12719.25,649.3,10726.32,-1132.3,72.4,0.0,2269.89,-1059.9,1209.99 +781,684.65,1733.79,2027.16,222.55,102.98,0.0,-1237.92,-12724.98,656.7,10707.17,-1133.84,74.56,0.0,2172.1,-1059.28,1112.82 +791,674.28,1793.64,2014.73,229.89,116.34,0.0,-1235.76,-12665.76,635.33,10699.38,-1139.9,74.45,0.0,2262.07,-1065.46,1196.61 +801,679.25,1779.31,2020.76,233.57,114.33,0.0,-1267.27,-12697.12,649.49,10724.35,-1152.38,74.55,0.0,2236.67,-1077.83,1158.84 +811,700.5,1747.39,2055.27,242.43,121.59,0.0,-1206.1,-12811.58,681.66,10720.25,-1061.89,75.25,0.0,2251.41,-986.65,1264.77 +821,707.96,1752.94,2026.33,219.42,118.06,0.0,-1232.12,-12794.15,633.76,10696.86,-1045.05,77.87,0.0,2129.05,-967.18,1161.87 +831,641.21,1794.42,2018.37,239.05,118.92,0.0,-1191.37,-12773.91,677.87,10705.54,-1086.7,77.81,0.0,2230.1,-1008.89,1221.21 +841,681.7,1747.83,2044.15,225.69,105.01,0.0,-1219.93,-12820.61,669.82,10743.35,-1081.64,77.1,0.0,2177.0,-1004.54,1172.46 +851,641.33,1736.45,2003.09,224.78,124.51,0.0,-1251.59,-12876.19,651.72,10732.02,-1032.36,74.7,0.0,1986.11,-957.65,1028.46 +861,729.72,1762.54,2058.9,230.62,112.91,0.0,-1191.92,-12745.98,651.85,10676.82,-1094.57,78.07,0.0,2285.46,-1016.5,1268.96 +871,699.76,1770.35,2049.18,242.61,103.93,0.0,-1265.44,-12794.25,657.96,10784.45,-1149.53,74.98,0.0,2248.54,-1074.54,1174.0 +881,706.63,1760.54,2034.24,228.5,100.47,0.0,-1230.76,-12796.22,631.88,10704.94,-1134.17,75.84,0.0,2140.23,-1058.33,1081.9 +891,702.59,1834.73,2064.17,233.87,117.42,0.0,-1235.32,-12749.8,644.4,10735.56,-1155.37,76.76,0.0,2347.62,-1078.61,1269.01 +901,684.94,1766.54,2027.43,238.27,112.28,0.0,-1234.34,-12636.77,657.36,10681.29,-1182.85,77.81,0.0,2297.0,-1105.05,1191.95 +911,662.96,1783.53,2012.49,230.54,121.34,0.0,-1237.41,-12679.79,662.37,10710.08,-1175.05,77.27,0.0,2266.11,-1097.78,1168.33 +921,664.98,1703.57,2040.48,228.48,102.4,0.0,-1199.13,-12678.08,650.08,10713.17,-1182.55,77.09,0.0,2225.95,-1105.46,1120.49 +931,698.2,1739.77,2022.6,222.43,126.79,0.0,-1208.66,-12644.47,639.47,10670.69,-1172.85,78.49,0.0,2266.81,-1094.36,1172.45 +941,686.26,1804.86,2055.84,225.2,128.4,0.0,-1252.18,-12710.63,658.88,10698.89,-1128.55,76.65,0.0,2295.52,-1051.9,1243.62 +951,706.19,1778.25,2013.17,237.87,117.4,0.0,-1214.52,-12712.46,637.85,10758.06,-1219.35,78.51,0.0,2321.81,-1140.84,1180.98 +961,681.82,1776.25,2016.6,233.0,106.64,0.0,-1220.95,-12733.02,662.54,10749.96,-1136.24,77.5,0.0,2272.84,-1058.73,1214.11 +971,623.17,1751.41,2022.41,233.56,129.89,0.0,-1228.07,-12677.7,660.6,10720.87,-1179.51,77.49,0.0,2236.15,-1102.02,1134.12 +981,684.46,1742.79,2017.09,229.27,114.06,0.0,-1234.2,-12635.68,656.56,10731.9,-1225.36,77.84,0.0,2306.25,-1147.52,1158.73 +991,654.01,1743.93,2036.99,228.36,111.4,0.0,-1234.94,-12707.7,666.03,10797.73,-1220.16,77.05,0.0,2295.82,-1143.11,1152.7 +1001,699.96,1798.07,2028.55,234.05,113.95,0.0,-1218.94,-12632.15,663.67,10720.9,-1204.68,77.93,0.0,2408.06,-1126.75,1281.31 + +Delta Energy Terms +Frame #,BOND,ANGLE,DIHED,UB,IMP,CMAP,VDWAALS,EEL,1-4 VDW,1-4 EEL,EPB,ENPOLAR,EDISPER,GGAS,GSOLV,TOTAL +1,0.0,-0.0,0.0,0.0,-0.0,0.0,-93.81,-154.95,-0.0,0.0,266.11,-12.03,0.0,-248.76,254.08,5.31 +11,0.0,-0.0,-0.0,-0.0,-0.0,0.0,-65.28,-237.75,0.0,-0.0,256.04,-9.71,0.0,-303.03,246.33,-56.7 +21,0.0,0.0,0.0,0.0,0.0,0.0,-67.76,-184.82,-0.0,-0.0,231.96,-9.87,0.0,-252.58,222.09,-30.49 +31,-0.0,0.0,0.0,0.0,0.0,0.0,-77.48,-198.6,0.0,0.0,242.39,-10.33,0.0,-276.08,232.06,-44.02 +41,0.0,0.0,0.0,-0.0,0.0,0.0,-75.63,-199.6,-0.0,0.0,242.7,-10.6,0.0,-275.23,232.09,-43.14 +51,-0.0,0.0,0.0,-0.0,-0.0,0.0,-67.03,-211.47,0.0,0.0,238.47,-9.24,0.0,-278.5,229.23,-49.26 +61,0.0,-0.0,-0.0,-0.0,0.0,0.0,-69.84,-162.34,0.0,0.0,191.81,-9.25,0.0,-232.18,182.56,-49.62 +71,0.0,-0.0,-0.0,0.0,-0.0,0.0,-70.67,-113.13,0.0,0.0,142.12,-8.37,0.0,-183.8,133.74,-50.06 +81,0.0,0.0,0.0,-0.0,0.0,0.0,-71.97,-178.57,0.0,0.0,213.19,-9.57,0.0,-250.54,203.62,-46.92 +91,0.0,-0.0,0.0,-0.0,0.0,0.0,-57.07,-130.3,-0.0,0.0,168.08,-7.77,0.0,-187.37,160.31,-27.06 +101,0.0,0.0,0.0,-0.0,-0.0,0.0,-61.39,-123.47,0.0,-0.0,162.94,-7.95,0.0,-184.86,155.0,-29.86 +111,0.0,0.0,-0.0,0.0,-0.0,0.0,-53.96,-196.74,0.0,-0.0,238.64,-9.06,0.0,-250.7,229.58,-21.12 +121,-0.0,0.0,-0.0,-0.0,-0.0,0.0,-56.53,-152.79,0.0,0.0,201.33,-9.0,0.0,-209.31,192.33,-16.98 +131,-0.0,0.0,-0.0,0.0,0.0,0.0,-52.55,-164.77,0.0,0.0,202.52,-8.62,0.0,-217.33,193.9,-23.43 +141,0.0,-0.0,-0.0,0.0,-0.0,0.0,-20.12,-190.86,0.0,0.0,218.8,-4.59,0.0,-210.98,214.21,3.23 +151,-0.0,0.0,-0.0,0.0,0.0,0.0,-36.95,-207.23,-0.0,-0.0,224.07,-6.85,0.0,-244.18,217.22,-26.96 +161,0.0,-0.0,0.0,0.0,-0.0,0.0,-61.73,-193.07,-0.0,0.0,221.26,-9.33,0.0,-254.8,211.93,-42.87 +171,0.0,0.0,0.0,-0.0,0.0,0.0,-48.94,-193.65,0.0,0.0,244.16,-9.06,0.0,-242.59,235.11,-7.49 +181,-0.0,0.0,0.0,0.0,0.0,0.0,-62.28,-270.87,0.0,0.0,312.15,-11.1,0.0,-333.16,301.05,-32.11 +191,0.0,-0.0,-0.0,0.0,0.0,0.0,-70.86,-186.54,-0.0,0.0,217.4,-10.64,0.0,-257.4,206.76,-50.64 +201,-0.0,0.0,-0.0,-0.0,0.0,0.0,-81.46,-213.78,0.0,0.0,254.32,-11.38,0.0,-295.24,242.94,-52.3 +211,-0.0,0.0,0.0,0.0,0.0,0.0,-66.12,-210.71,-0.0,0.0,229.58,-10.44,0.0,-276.83,219.14,-57.69 +221,-0.0,0.0,0.0,-0.0,-0.0,0.0,-63.69,-148.97,0.0,0.0,196.91,-10.97,0.0,-212.66,185.94,-26.72 +231,0.0,0.0,0.0,0.0,-0.0,0.0,-66.77,-212.98,-0.0,0.0,250.88,-11.02,0.0,-279.75,239.86,-39.89 +241,-0.0,0.0,-0.0,-0.0,0.0,0.0,-52.45,-184.56,-0.0,-0.0,210.56,-9.12,0.0,-237.01,201.44,-35.57 +251,0.0,-0.0,-0.0,0.0,0.0,0.0,-55.94,-202.21,-0.0,0.0,232.95,-8.74,0.0,-258.14,224.2,-33.94 +261,0.0,0.0,0.0,0.0,-0.0,0.0,-71.28,-231.23,0.0,0.0,267.29,-10.36,0.0,-302.51,256.93,-45.58 +271,0.0,0.0,-0.0,0.0,-0.0,0.0,-80.52,-226.82,0.0,-0.0,264.28,-11.18,0.0,-307.34,253.1,-54.24 +281,0.0,0.0,-0.0,0.0,-0.0,0.0,-73.16,-216.58,0.0,-0.0,245.14,-10.2,0.0,-289.74,234.94,-54.8 +291,0.0,0.0,0.0,0.0,-0.0,0.0,-65.46,-201.34,0.0,-0.0,233.87,-10.22,0.0,-266.8,223.65,-43.15 +301,-0.0,-0.0,-0.0,0.0,0.0,0.0,-54.57,-183.46,0.0,0.0,214.97,-8.56,0.0,-238.04,206.42,-31.62 +311,0.0,-0.0,-0.0,0.0,0.0,0.0,-23.44,-105.89,0.0,0.0,119.19,-5.0,0.0,-129.32,114.2,-15.13 +321,0.0,0.0,-0.0,0.0,0.0,0.0,-28.42,-115.36,-0.0,-0.0,131.0,-5.18,0.0,-143.78,125.82,-17.96 +331,0.0,0.0,0.0,0.0,0.0,0.0,-37.59,-68.54,-0.0,-0.0,80.23,-6.92,0.0,-106.13,73.31,-32.82 +341,-0.0,0.0,-0.0,-0.0,0.0,0.0,-49.78,-135.25,0.0,-0.0,152.75,-7.5,0.0,-185.03,145.24,-39.78 +351,0.0,-0.0,-0.0,-0.0,0.0,0.0,-45.04,-144.11,0.0,0.0,163.14,-7.44,0.0,-189.15,155.7,-33.46 +361,0.0,0.0,0.0,-0.0,0.0,0.0,-58.55,-83.22,0.0,0.0,125.78,-7.85,0.0,-141.77,117.93,-23.84 +371,0.0,0.0,0.0,0.0,0.0,0.0,-40.88,-56.09,0.0,-0.0,89.05,-7.65,0.0,-96.97,81.39,-15.58 +381,-0.0,0.0,0.0,-0.0,0.0,0.0,-40.51,-14.64,-0.0,0.0,45.43,-7.0,0.0,-55.15,38.42,-16.73 +391,-0.0,0.0,0.0,-0.0,0.0,0.0,-60.87,-44.6,0.0,0.0,74.65,-8.44,0.0,-105.47,66.22,-39.25 +401,0.0,-0.0,0.0,0.0,-0.0,0.0,-63.1,-57.09,-0.0,0.0,88.83,-8.96,0.0,-120.19,79.87,-40.32 +411,-0.0,0.0,0.0,-0.0,-0.0,0.0,-56.05,-74.58,-0.0,-0.0,97.24,-8.1,0.0,-130.62,89.14,-41.49 +421,-0.0,0.0,-0.0,-0.0,0.0,0.0,-65.49,-50.09,0.0,-0.0,82.07,-9.52,0.0,-115.58,72.55,-43.03 +431,-0.0,0.0,0.0,0.0,-0.0,0.0,-64.85,-60.74,0.0,0.0,88.81,-8.87,0.0,-125.59,79.95,-45.64 +441,0.0,0.0,-0.0,0.0,-0.0,0.0,-53.77,-46.87,0.0,0.0,65.81,-8.17,0.0,-100.64,57.64,-43.0 +451,-0.0,0.0,0.0,0.0,-0.0,0.0,-50.4,-41.95,0.0,-0.0,63.4,-7.9,0.0,-92.35,55.5,-36.85 +461,0.0,-0.0,0.0,-0.0,-0.0,0.0,-57.1,-30.53,-0.0,0.0,57.41,-9.44,0.0,-87.63,47.97,-39.67 +471,-0.0,0.0,0.0,0.0,0.0,0.0,-50.34,-28.92,-0.0,0.0,50.31,-7.65,0.0,-79.26,42.66,-36.6 +481,0.0,0.0,0.0,-0.0,-0.0,0.0,-72.47,-24.38,0.0,0.0,61.84,-9.39,0.0,-96.84,52.45,-44.4 +491,-0.0,0.0,-0.0,-0.0,0.0,0.0,-56.17,-93.7,0.0,-0.0,114.69,-8.81,0.0,-149.87,105.88,-43.99 +501,0.0,-0.0,0.0,0.0,-0.0,0.0,-51.71,-95.5,0.0,0.0,125.33,-9.07,0.0,-147.21,116.26,-30.95 +511,-0.0,-0.0,-0.0,-0.0,-0.0,0.0,-67.0,-132.44,-0.0,0.0,163.58,-9.41,0.0,-199.44,154.16,-45.28 +521,0.0,-0.0,0.0,0.0,-0.0,0.0,-63.91,-158.35,0.0,0.0,171.67,-10.06,0.0,-222.25,161.61,-60.64 +531,0.0,-0.0,0.0,0.0,-0.0,0.0,-61.88,-153.36,-0.0,0.0,174.26,-9.26,0.0,-215.24,165.0,-50.24 +541,-0.0,0.0,0.0,0.0,0.0,0.0,-52.42,-96.85,0.0,-0.0,109.42,-7.94,0.0,-149.27,101.48,-47.79 +551,-0.0,0.0,-0.0,-0.0,-0.0,0.0,-62.65,-103.74,0.0,-0.0,129.33,-9.42,0.0,-166.38,119.91,-46.47 +561,-0.0,0.0,0.0,0.0,-0.0,0.0,-70.29,-197.31,0.0,0.0,234.48,-9.79,0.0,-267.6,224.69,-42.91 +571,-0.0,-0.0,0.0,0.0,0.0,0.0,-59.91,-104.07,0.0,0.0,131.63,-8.47,0.0,-163.97,123.16,-40.82 +581,0.0,0.0,0.0,0.0,0.0,0.0,-55.85,-74.89,0.0,0.0,94.26,-7.99,0.0,-130.74,86.27,-44.47 +591,-0.0,0.0,-0.0,0.0,-0.0,0.0,-55.27,-90.15,0.0,-0.0,129.07,-8.59,0.0,-145.42,120.49,-24.93 +601,-0.0,-0.0,0.0,0.0,0.0,0.0,-60.4,-105.43,0.0,-0.0,133.78,-9.41,0.0,-165.83,124.37,-41.46 +611,0.0,-0.0,0.0,0.0,0.0,0.0,-75.85,-103.76,0.0,0.0,134.7,-10.49,0.0,-179.61,124.2,-55.41 +621,-0.0,-0.0,0.0,0.0,0.0,0.0,-66.75,-104.79,0.0,-0.0,145.36,-9.34,0.0,-171.54,136.02,-35.52 +631,0.0,0.0,-0.0,-0.0,-0.0,0.0,-54.1,-148.88,0.0,0.0,167.36,-7.92,0.0,-202.98,159.44,-43.53 +641,0.0,0.0,0.0,0.0,0.0,0.0,-69.51,-224.63,-0.0,0.0,259.34,-10.73,0.0,-294.14,248.62,-45.52 +651,0.0,0.0,0.0,-0.0,-0.0,0.0,-62.48,-125.35,0.0,-0.0,157.72,-8.37,0.0,-187.82,149.35,-38.47 +661,0.0,0.0,-0.0,0.0,-0.0,0.0,-66.81,-138.31,0.0,-0.0,151.97,-8.89,0.0,-205.12,143.09,-62.04 +671,0.0,-0.0,0.0,0.0,-0.0,0.0,-63.87,-120.36,0.0,-0.0,135.66,-8.15,0.0,-184.23,127.51,-56.72 +681,0.0,0.0,-0.0,0.0,0.0,0.0,-53.02,-115.7,0.0,0.0,128.86,-6.63,0.0,-168.72,122.23,-46.49 +691,-0.0,0.0,-0.0,-0.0,0.0,0.0,-51.84,-167.96,-0.0,-0.0,184.78,-7.1,0.0,-219.79,177.68,-42.11 +701,0.0,0.0,-0.0,-0.0,-0.0,0.0,-62.05,-133.99,-0.0,0.0,149.46,-8.56,0.0,-196.04,140.9,-55.14 +711,0.0,0.0,-0.0,-0.0,0.0,0.0,-56.65,-144.39,0.0,0.0,175.07,-8.96,0.0,-201.04,166.11,-34.93 +721,0.0,-0.0,-0.0,-0.0,0.0,0.0,-60.71,-125.41,0.0,0.0,157.28,-8.84,0.0,-186.11,148.44,-37.68 +731,-0.0,0.0,0.0,-0.0,-0.0,0.0,-58.63,-125.55,0.0,0.0,151.49,-8.87,0.0,-184.18,142.62,-41.56 +741,0.0,-0.0,0.0,0.0,-0.0,0.0,-65.52,-95.52,-0.0,-0.0,130.56,-8.84,0.0,-161.04,121.72,-39.32 +751,0.0,0.0,-0.0,-0.0,0.0,0.0,-72.5,-91.79,-0.0,-0.0,115.08,-8.81,0.0,-164.3,106.27,-58.03 +761,0.0,0.0,-0.0,0.0,0.0,0.0,-69.1,-135.43,0.0,-0.0,164.91,-10.24,0.0,-204.53,154.67,-49.86 +771,0.0,-0.0,0.0,0.0,0.0,0.0,-67.92,-122.36,0.0,0.0,152.81,-9.11,0.0,-190.28,143.71,-46.57 +781,-0.0,0.0,0.0,0.0,0.0,0.0,-69.4,-124.4,0.0,0.0,166.74,-9.64,0.0,-193.79,157.1,-36.69 +791,-0.0,-0.0,0.0,-0.0,0.0,0.0,-60.4,-155.96,-0.0,-0.0,167.32,-9.19,0.0,-216.36,158.13,-58.23 +801,0.0,0.0,-0.0,-0.0,-0.0,0.0,-61.0,-77.44,-0.0,0.0,107.85,-8.68,0.0,-138.44,99.18,-39.26 +811,0.0,-0.0,-0.0,0.0,-0.0,0.0,-50.54,-85.8,0.0,-0.0,106.25,-7.74,0.0,-136.34,98.51,-37.83 +821,-0.0,0.0,-0.0,0.0,-0.0,0.0,-57.81,-108.82,0.0,-0.0,135.42,-9.23,0.0,-166.63,126.18,-40.44 +831,-0.0,0.0,0.0,0.0,-0.0,0.0,-71.46,-118.39,-0.0,-0.0,159.79,-10.15,0.0,-189.85,149.63,-40.22 +841,-0.0,0.0,-0.0,0.0,0.0,0.0,-89.57,-120.69,-0.0,0.0,184.72,-13.55,0.0,-210.26,171.17,-39.09 +851,0.0,-0.0,-0.0,-0.0,-0.0,0.0,-79.07,-135.94,0.0,-0.0,179.07,-11.66,0.0,-215.02,167.42,-47.6 +861,-0.0,-0.0,-0.0,-0.0,0.0,0.0,-67.1,-128.27,0.0,0.0,158.25,-10.14,0.0,-195.37,148.11,-47.26 +871,0.0,-0.0,0.0,0.0,-0.0,0.0,-87.68,-198.37,-0.0,0.0,251.24,-11.51,0.0,-286.05,239.73,-46.32 +881,0.0,-0.0,0.0,0.0,-0.0,0.0,-56.56,-201.16,0.0,-0.0,238.39,-9.63,0.0,-257.72,228.75,-28.96 +891,-0.0,-0.0,0.0,0.0,0.0,0.0,-94.98,-244.81,-0.0,0.0,312.24,-13.56,0.0,-339.8,298.69,-41.11 +901,-0.0,0.0,0.0,0.0,-0.0,0.0,-82.81,-258.87,0.0,-0.0,306.78,-13.89,0.0,-341.68,292.89,-48.79 +911,0.0,-0.0,0.0,0.0,0.0,0.0,-99.69,-306.44,-0.0,0.0,351.74,-13.66,0.0,-406.13,338.08,-68.05 +921,-0.0,0.0,-0.0,-0.0,-0.0,0.0,-80.39,-312.8,-0.0,-0.0,340.43,-13.43,0.0,-393.19,326.99,-66.2 +931,0.0,-0.0,-0.0,-0.0,0.0,0.0,-84.56,-311.49,0.0,-0.0,350.97,-13.06,0.0,-396.06,337.92,-58.14 +941,-0.0,-0.0,-0.0,-0.0,0.0,0.0,-82.21,-348.1,-0.0,-0.0,396.86,-14.44,0.0,-430.31,382.43,-47.89 +951,0.0,-0.0,-0.0,0.0,-0.0,0.0,-93.61,-300.83,0.0,0.0,369.74,-14.53,0.0,-394.44,355.21,-39.23 +961,-0.0,-0.0,0.0,0.0,-0.0,0.0,-97.57,-250.59,0.0,-0.0,309.75,-13.79,0.0,-348.16,295.96,-52.2 +971,-0.0,-0.0,0.0,0.0,-0.0,0.0,-93.56,-263.41,0.0,-0.0,339.35,-14.04,0.0,-356.97,325.3,-31.67 +981,0.0,-0.0,-0.0,0.0,0.0,0.0,-82.78,-329.73,-0.0,-0.0,373.24,-13.53,0.0,-412.51,359.71,-52.8 +991,0.0,-0.0,0.0,-0.0,-0.0,0.0,-85.57,-362.32,0.0,-0.0,402.86,-13.68,0.0,-447.89,389.18,-58.71 +1001,-0.0,-0.0,0.0,0.0,0.0,0.0,-89.66,-368.32,-0.0,-0.0,413.98,-14.22,0.0,-457.99,399.76,-58.23 + + diff --git a/tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.dat b/tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.dat new file mode 100644 index 0000000..1aef3ef --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/pb/FINAL_RESULTS_MMPBSA.dat @@ -0,0 +1,125 @@ +| Run on Tue Sep 22 21:46:59 2026 +| +|gmx_MMPBSA Version=1.7.0 based on MMPBSA.py v.14.0, AmberTools 26.0, GROMACS 2025.4-Ubuntu_2025.4_1 +|System name: Q946V6_ZmBiP2_PB +|Complex (GROMACS) topology file: complex.top +|Complex Structure file: complex.tpr +|Complex (AMBER) topology file: COM.prmtop +|Receptor (AMBER) topology file: REC.prmtop +|Ligand (AMBER) topology file: LIG.prmtop +|Initial trajectories: COM_traj_0.xtc +| +|Receptor mask: ":214-876" +|Ligand mask: ":1-213" +| +|Calculations performed using 101 complex frames +|Poisson Boltzmann calculations performed using internal PBSA solver in sander +| +|Using temperature = 303.15 K +|All units are reported in kcal/mol +| +|SD - Population standard deviation of the frames (ddof=0), SEM - SD / sqrt(number of frames) +|SD(Prop.), SEM(Prop.) - SD and SEM obtained with propagation of uncertainty formula +|Block SD, Block SEM - sample SD and SEM of deterministic nonoverlapping block means; Block SEM is used for primary estimates +|https://en.wikipedia.org/wiki/Propagation_of_uncertainty#Example_formulae +| +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- + +POISSON BOLTZMANN: + +Complex: +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +BOND 2767.54 38.96 38.96 3.88 3.88 13.91 4.92 +ANGLE 6865.03 58.50 58.50 5.82 5.82 22.31 7.89 +DIHED 8246.51 41.52 41.52 4.13 4.13 22.44 7.93 +UB 902.30 13.07 13.07 1.30 1.30 2.07 0.73 +IMP 476.35 15.53 15.53 1.55 1.55 1.19 0.42 +CMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +VDWAALS -5544.46 63.02 63.02 6.27 6.27 51.51 18.21 +EEL -54244.48 256.29 256.29 25.50 25.50 114.07 40.33 +1-4 VDW 2325.49 25.99 25.99 2.59 2.59 8.90 3.15 +1-4 EEL 38419.51 116.19 116.19 11.56 11.56 72.07 25.48 +EPB -12057.03 213.77 213.77 21.27 21.27 102.12 36.11 +ENPOLAR 228.51 6.17 6.17 0.61 0.61 5.80 2.05 +EDISPER 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + +GGAS 213.80 301.51 269.76 30.00 26.84 147.99 52.32 +GSOLV -11828.52 213.86 211.91 21.28 21.09 98.60 34.86 + +TOTAL -11614.72 369.66 116.67 36.78 11.61 62.88 22.23 + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Receptor: +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +BOND 2080.79 32.75 32.75 3.26 3.26 10.62 3.76 +ANGLE 5089.36 54.26 54.26 5.40 5.40 19.86 7.02 +DIHED 6228.13 36.38 36.38 3.62 3.62 21.65 7.65 +UB 670.48 10.91 10.91 1.09 1.09 2.68 0.95 +IMP 363.10 12.43 12.43 1.24 1.24 1.67 0.59 +CMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +VDWAALS -4283.91 35.78 35.78 3.56 3.56 19.03 6.73 +EEL -41395.09 241.60 241.60 24.04 24.04 112.40 39.74 +1-4 VDW 1666.30 20.75 20.75 2.06 2.06 7.02 2.48 +1-4 EEL 27717.38 98.07 98.07 9.76 9.76 59.17 20.92 +EPB -11089.34 212.82 212.82 21.18 21.18 114.08 40.34 +ENPOLAR 158.15 2.83 2.83 0.28 0.28 1.59 0.56 +EDISPER 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + +GGAS -1863.45 274.43 240.10 27.31 23.89 119.80 42.36 +GSOLV -10931.19 212.84 212.72 21.18 21.17 113.35 40.08 + +TOTAL -12794.63 347.29 87.13 34.56 8.67 30.64 10.83 + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Ligand: +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +BOND 686.75 22.39 22.39 2.23 2.23 6.49 2.29 +ANGLE 1775.67 27.30 27.30 2.72 2.72 9.56 3.38 +DIHED 2018.37 19.88 19.88 1.98 1.98 11.64 4.12 +UB 231.83 6.02 6.02 0.60 0.60 1.83 0.65 +IMP 113.25 8.00 8.00 0.80 0.80 1.65 0.58 +CMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +VDWAALS -1196.15 57.26 57.26 5.70 5.70 50.66 17.91 +EEL -12692.86 61.52 61.52 6.12 6.12 26.96 9.53 +1-4 VDW 659.19 13.18 13.18 1.31 1.31 4.94 1.75 +1-4 EEL 10702.13 51.81 51.81 5.16 5.16 24.98 8.83 +EPB -1157.50 40.16 40.16 4.00 4.00 26.74 9.45 +ENPOLAR 79.98 6.36 6.36 0.63 0.63 6.01 2.12 +EDISPER 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + +GGAS 2298.18 107.99 93.39 10.75 9.29 76.44 27.03 +GSOLV -1077.52 40.66 37.35 4.05 3.72 21.27 7.52 + +TOTAL 1220.66 115.40 74.48 11.48 7.41 57.91 20.47 + +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- +Delta (Complex - Receptor - Ligand): +Energy Component Average SD(Prop.) SD SEM(Prop.) SEM Block SD Block SEM +----------------------------------------------------------------------------------------------------- +ΔBOND 0.00 16.18 0.00 1.61 0.00 0.00 0.00 +ΔANGLE -0.00 23.05 0.00 2.29 0.00 0.00 0.00 +ΔDIHED 0.00 14.75 0.00 1.47 0.00 0.00 0.00 +ΔUB -0.00 3.87 0.00 0.38 0.00 0.00 0.00 +ΔIMP -0.00 4.90 0.00 0.49 0.00 0.00 0.00 +ΔCMAP 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +ΔVDWAALS -64.40 30.02 15.01 2.99 1.49 9.60 3.39 +ΔEEL -156.53 46.82 77.59 4.66 7.72 58.70 20.75 +Δ1-4 VDW 0.00 7.93 0.00 0.79 0.00 0.00 0.00 +Δ1-4 EEL -0.00 33.70 0.00 3.35 0.00 0.00 0.00 +ΔEPB 189.81 39.21 84.53 3.90 8.41 65.07 23.01 +ΔENPOLAR -9.62 3.01 2.07 0.30 0.21 1.43 0.50 +ΔEDISPER 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + +ΔGGAS -220.94 55.97 86.72 5.57 8.63 64.95 22.96 +ΔGSOLV 180.19 39.33 82.96 3.91 8.25 63.98 22.62 + +ΔTOTAL -40.74 68.40 13.29 6.81 1.32 6.09 2.15 +----------------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------------- diff --git a/tests/fixtures/gmx_mmpbsa/pb/mmpbsa.in b/tests/fixtures/gmx_mmpbsa/pb/mmpbsa.in new file mode 100644 index 0000000..1261b16 --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/pb/mmpbsa.in @@ -0,0 +1,15 @@ +MM-PBSA alpha-zein Q946V6 (ligand) - ZmBiP2 (receptor) CHARMM36-family, 303.15 K +&general + sys_name = "Q946V6_ZmBiP2_PB", + startframe = 1, + endframe = 1001, + interval = 10, + temperature = 303.15, + PBRadii = 7, + verbose = 2, +/ +&pb + istrng = 0.150, + fillratio = 4.0, + inp = 1, +/ diff --git a/tests/fixtures/raw_trees/A8HNE1_raw_tree.json b/tests/fixtures/raw_trees/A8HNE1_raw_tree.json new file mode 100644 index 0000000..a674059 --- /dev/null +++ b/tests/fixtures/raw_trees/A8HNE1_raw_tree.json @@ -0,0 +1,2812 @@ +{ + "root": "complex_A8HNE1", + "files": [ + { + "path": "#step5_production.gro.1#", + "bytes": 108356265, + "mtime": "2026-06-04 05:52:14", + "note": "" + }, + { + "path": "#step5_production.gro.2#", + "bytes": 108356265, + "mtime": "2026-06-16 02:15:04", + "note": "" + }, + { + "path": "Production/.step5_production-002.xtc_offsets.npz", + "bytes": 9028, + "mtime": "2026-07-06 01:56:41", + "note": "" + }, + { + "path": "Production/analysis/data/.protein.xtc_offsets.npz", + "bytes": 9028, + "mtime": "2026-07-06 02:16:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/data/meta.json", + "bytes": 21236, + "mtime": "2026-07-06 02:12:17", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/data/protein.pdb", + "bytes": 1389509, + "mtime": "2026-07-06 02:09:53", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/data/protein.xtc", + "bytes": 50635832, + "mtime": "2026-07-06 02:12:17", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/cluster_pca.pdf", + "bytes": 33016, + "mtime": "2026-07-06 03:30:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/cluster_pca.png", + "bytes": 185710, + "mtime": "2026-07-06 03:30:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/cluster_populations.pdf", + "bytes": 21180, + "mtime": "2026-07-06 03:30:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/cluster_populations.png", + "bytes": 80617, + "mtime": "2026-07-06 03:30:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/cluster_timeline.pdf", + "bytes": 17808, + "mtime": "2026-07-06 03:30:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/cluster_timeline.png", + "bytes": 48992, + "mtime": "2026-07-06 03:30:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/com_3d.pdf", + "bytes": 469859, + "mtime": "2026-07-06 03:28:14", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/com_3d.png", + "bytes": 423603, + "mtime": "2026-07-06 03:28:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/com_distance.pdf", + "bytes": 38102, + "mtime": "2026-07-06 03:28:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/com_distance.png", + "bytes": 205652, + "mtime": "2026-07-06 03:28:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/com_orientation.pdf", + "bytes": 38091, + "mtime": "2026-07-06 03:28:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/com_orientation.png", + "bytes": 257869, + "mtime": "2026-07-06 03:28:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contact_difference.pdf", + "bytes": 109258, + "mtime": "2026-07-06 03:28:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contact_difference.png", + "bytes": 194451, + "mtime": "2026-07-06 03:28:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contact_lifetime_distribution.pdf", + "bytes": 22002, + "mtime": "2026-07-10 22:52:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contact_lifetime_distribution.png", + "bytes": 83758, + "mtime": "2026-07-10 22:52:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contact_occupancy.pdf", + "bytes": 151887, + "mtime": "2026-07-06 03:28:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contact_occupancy.png", + "bytes": 242598, + "mtime": "2026-07-06 03:28:30", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contacts_vs_time.pdf", + "bytes": 33960, + "mtime": "2026-07-06 03:28:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/contacts_vs_time.png", + "bytes": 289742, + "mtime": "2026-07-06 03:28:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/convergence_blocks.pdf", + "bytes": 24245, + "mtime": "2026-07-06 03:38:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/convergence_blocks.png", + "bytes": 77393, + "mtime": "2026-07-06 03:38:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/convergence_halves.pdf", + "bytes": 26822, + "mtime": "2026-07-06 03:38:49", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/convergence_halves.png", + "bytes": 114778, + "mtime": "2026-07-06 03:38:49", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/convergence_running.pdf", + "bytes": 43636, + "mtime": "2026-07-06 03:38:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/convergence_running.png", + "bytes": 254777, + "mtime": "2026-07-06 03:38:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/correlation_pearson.pdf", + "bytes": 41383, + "mtime": "2026-07-06 03:38:52", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/correlation_pearson.png", + "bytes": 443754, + "mtime": "2026-07-06 03:38:51", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/correlation_spearman.pdf", + "bytes": 41855, + "mtime": "2026-07-06 03:38:53", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/correlation_spearman.png", + "bytes": 431160, + "mtime": "2026-07-06 03:38:53", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/dccm.pdf", + "bytes": 2425325, + "mtime": "2026-07-06 03:29:01", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/dccm.png", + "bytes": 2869402, + "mtime": "2026-07-06 03:29:00", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/dccm_interchain.pdf", + "bytes": 1244920, + "mtime": "2026-07-06 03:29:03", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/dccm_interchain.png", + "bytes": 1488455, + "mtime": "2026-07-06 03:29:02", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/energies.pdf", + "bytes": 370283, + "mtime": "2026-07-06 03:14:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/energies.png", + "bytes": 410275, + "mtime": "2026-07-06 03:14:22", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/essential_dynamics_overlap.pdf", + "bytes": 35225, + "mtime": "2026-07-06 03:38:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/essential_dynamics_overlap.png", + "bytes": 93328, + "mtime": "2026-07-06 03:38:49", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/hbonds_occupancy.pdf", + "bytes": 26248, + "mtime": "2026-07-06 03:37:55", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/hbonds_occupancy.png", + "bytes": 187783, + "mtime": "2026-07-06 03:37:55", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/hbonds_timeseries.pdf", + "bytes": 45546, + "mtime": "2026-07-06 03:37:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/hbonds_timeseries.png", + "bytes": 460147, + "mtime": "2026-07-06 03:37:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/interface_contact_map.pdf", + "bytes": 53252, + "mtime": "2026-07-06 03:28:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/interface_contact_map.png", + "bytes": 129708, + "mtime": "2026-07-06 03:28:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/interface_mindist.pdf", + "bytes": 45565, + "mtime": "2026-07-06 03:28:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/interface_mindist.png", + "bytes": 373687, + "mtime": "2026-07-06 03:28:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/interface_residues.pdf", + "bytes": 37748, + "mtime": "2026-07-06 03:28:49", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/interface_residues.png", + "bytes": 138933, + "mtime": "2026-07-06 03:28:49", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/native_contact_map.pdf", + "bytes": 91023, + "mtime": "2026-07-06 03:28:21", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/native_contact_map.png", + "bytes": 139516, + "mtime": "2026-07-06 03:28:21", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/native_contact_survival.pdf", + "bytes": 37984, + "mtime": "2026-07-10 22:52:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/native_contact_survival.png", + "bytes": 142200, + "mtime": "2026-07-10 22:52:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/native_contacts_Q.pdf", + "bytes": 31153, + "mtime": "2026-07-06 03:28:20", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/native_contacts_Q.png", + "bytes": 121613, + "mtime": "2026-07-06 03:28:20", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/network_betweenness.pdf", + "bytes": 193746, + "mtime": "2026-07-10 22:52:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/network_betweenness.png", + "bytes": 323393, + "mtime": "2026-07-10 22:52:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/network_communities.pdf", + "bytes": 40497, + "mtime": "2026-07-10 22:52:30", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/network_communities.png", + "bytes": 276119, + "mtime": "2026-07-10 22:52:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_covariance.pdf", + "bytes": 1751209, + "mtime": "2026-07-06 03:29:11", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_covariance.png", + "bytes": 2143455, + "mtime": "2026-07-06 03:29:10", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_eigenvalues.pdf", + "bytes": 21746, + "mtime": "2026-07-10 22:41:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_eigenvalues.png", + "bytes": 101979, + "mtime": "2026-07-10 22:41:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_fel.pdf", + "bytes": 99288, + "mtime": "2026-07-06 03:29:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_fel.png", + "bytes": 83425, + "mtime": "2026-07-06 03:29:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_fel_A8HNE1.pdf", + "bytes": 101134, + "mtime": "2026-07-06 03:29:19", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_fel_A8HNE1.png", + "bytes": 87195, + "mtime": "2026-07-06 03:29:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_fel_BiP.pdf", + "bytes": 100743, + "mtime": "2026-07-06 03:29:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_fel_BiP.png", + "bytes": 101654, + "mtime": "2026-07-06 03:29:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc1_pc2.pdf", + "bytes": 46930, + "mtime": "2026-07-06 03:29:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc1_pc2.png", + "bytes": 604733, + "mtime": "2026-07-06 03:29:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc1_pc2_A8HNE1.pdf", + "bytes": 47716, + "mtime": "2026-07-06 03:29:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc1_pc2_A8HNE1.png", + "bytes": 489930, + "mtime": "2026-07-06 03:29:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc1_pc2_BiP.pdf", + "bytes": 46927, + "mtime": "2026-07-06 03:29:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc1_pc2_BiP.png", + "bytes": 643193, + "mtime": "2026-07-06 03:29:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc_time.pdf", + "bytes": 35976, + "mtime": "2026-07-06 03:29:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_pc_time.png", + "bytes": 247471, + "mtime": "2026-07-06 03:29:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_scree.pdf", + "bytes": 23895, + "mtime": "2026-07-10 22:41:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_scree.png", + "bytes": 133345, + "mtime": "2026-07-10 22:41:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_variance.pdf", + "bytes": 23128, + "mtime": "2026-07-06 03:29:11", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_variance.png", + "bytes": 128649, + "mtime": "2026-07-06 03:29:11", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_variance_A8HNE1.pdf", + "bytes": 23751, + "mtime": "2026-07-06 03:29:17", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_variance_A8HNE1.png", + "bytes": 126954, + "mtime": "2026-07-06 03:29:17", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_variance_BiP.pdf", + "bytes": 22857, + "mtime": "2026-07-06 03:29:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/pca_variance_BiP.png", + "bytes": 130404, + "mtime": "2026-07-06 03:29:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/porcupine_pc1.pdf", + "bytes": 85472, + "mtime": "2026-07-10 22:41:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/porcupine_pc1.png", + "bytes": 1014888, + "mtime": "2026-07-10 22:41:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/prolif_interaction_types.pdf", + "bytes": 23136, + "mtime": "2026-07-06 03:38:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/prolif_interaction_types.png", + "bytes": 98584, + "mtime": "2026-07-06 03:38:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/prolif_residue_frequency.pdf", + "bytes": 27514, + "mtime": "2026-07-06 03:38:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/prolif_residue_frequency.png", + "bytes": 196305, + "mtime": "2026-07-06 03:38:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ramachandran_before_after.pdf", + "bytes": 50482, + "mtime": "2026-07-06 03:30:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ramachandran_before_after.png", + "bytes": 419203, + "mtime": "2026-07-06 03:30:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ramachandran_density.pdf", + "bytes": 193464, + "mtime": "2026-07-06 03:30:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ramachandran_density.png", + "bytes": 93423, + "mtime": "2026-07-06 03:30:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rin_hubs.pdf", + "bytes": 19278, + "mtime": "2026-07-06 03:38:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rin_hubs.png", + "bytes": 97063, + "mtime": "2026-07-06 03:38:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rin_interface_network.pdf", + "bytes": 17446, + "mtime": "2026-07-06 03:38:08", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rin_interface_network.png", + "bytes": 566269, + "mtime": "2026-07-06 03:38:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rin_network.pdf", + "bytes": 191888, + "mtime": "2026-07-06 03:38:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rin_network.png", + "bytes": 255567, + "mtime": "2026-07-06 03:38:06", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rmsd.pdf", + "bytes": 55777, + "mtime": "2026-07-06 03:14:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rmsd.png", + "bytes": 274614, + "mtime": "2026-07-06 03:14:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rmsf.pdf", + "bytes": 42322, + "mtime": "2026-07-06 03:14:43", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rmsf.png", + "bytes": 253509, + "mtime": "2026-07-06 03:14:43", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rog.pdf", + "bytes": 66767, + "mtime": "2026-07-06 03:14:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/rog.png", + "bytes": 348208, + "mtime": "2026-07-06 03:14:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/salt_bridges_occupancy.pdf", + "bytes": 23314, + "mtime": "2026-07-06 03:30:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/salt_bridges_occupancy.png", + "bytes": 81043, + "mtime": "2026-07-06 03:30:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/salt_bridges_timeseries.pdf", + "bytes": 34383, + "mtime": "2026-07-06 03:30:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/salt_bridges_timeseries.png", + "bytes": 147115, + "mtime": "2026-07-06 03:30:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/sasa_per_residue.pdf", + "bytes": 42534, + "mtime": "2026-07-06 03:28:10", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/sasa_per_residue.png", + "bytes": 82273, + "mtime": "2026-07-06 03:28:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/sasa_timeseries.pdf", + "bytes": 58554, + "mtime": "2026-07-06 03:28:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/sasa_timeseries.png", + "bytes": 396430, + "mtime": "2026-07-06 03:28:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ss_fractions.pdf", + "bytes": 49982, + "mtime": "2026-07-06 03:30:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ss_fractions.png", + "bytes": 246187, + "mtime": "2026-07-06 03:30:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ss_timeline.pdf", + "bytes": 51858, + "mtime": "2026-07-06 03:30:34", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/ss_timeline.png", + "bytes": 134816, + "mtime": "2026-07-06 03:30:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/structural_descriptors.pdf", + "bytes": 85940, + "mtime": "2026-07-06 03:14:56", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/structural_descriptors.png", + "bytes": 533449, + "mtime": "2026-07-06 03:14:56", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/water_bridge_timeseries.pdf", + "bytes": 23194, + "mtime": "2026-07-10 22:52:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/figures/water_bridge_timeseries.png", + "bytes": 169017, + "mtime": "2026-07-10 22:52:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/report/analysis_report.md", + "bytes": 17441, + "mtime": "2026-07-10 22:52:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/report/mmgbsa_workflow.md", + "bytes": 1485, + "mtime": "2026-07-10 22:41:30", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/advanced_summary.json", + "bytes": 4216, + "mtime": "2026-07-10 22:52:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/block_averages.csv", + "bytes": 686, + "mtime": "2026-07-06 03:38:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/cluster_assignments.csv", + "bytes": 7926, + "mtime": "2026-07-06 03:30:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/cluster_populations.csv", + "bytes": 124, + "mtime": "2026-07-06 03:30:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/cluster_silhouette.csv", + "bytes": 168, + "mtime": "2026-07-06 03:30:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/cluster_structures/cluster_01.pdb", + "bytes": 1084361, + "mtime": "2026-07-06 03:30:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/cluster_structures/cluster_02.pdb", + "bytes": 1084361, + "mtime": "2026-07-06 03:30:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/com.csv", + "bytes": 154787, + "mtime": "2026-07-06 03:28:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/contact_lifetime.csv", + "bytes": 24943, + "mtime": "2026-07-10 22:52:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/contact_occupancy.csv", + "bytes": 3021172, + "mtime": "2026-07-06 03:28:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/contacts_vs_time.csv", + "bytes": 20584, + "mtime": "2026-07-06 03:28:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/convergence_summary.csv", + "bytes": 386, + "mtime": "2026-07-06 03:38:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/correlation_pearson.csv", + "bytes": 3425, + "mtime": "2026-07-06 03:38:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/correlation_spearman.csv", + "bytes": 3451, + "mtime": "2026-07-06 03:38:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/dccm.csv", + "bytes": 8030310, + "mtime": "2026-07-06 03:28:59", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/energies.csv", + "bytes": 4867613, + "mtime": "2026-07-06 03:14:19", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/hbonds_lifetime_autocorr.csv", + "bytes": 728, + "mtime": "2026-07-06 03:37:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/hbonds_occupancy.csv", + "bytes": 136635, + "mtime": "2026-07-06 03:37:54", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/hbonds_timeseries.csv", + "bytes": 31391, + "mtime": "2026-07-06 03:37:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/interface_contact_frequency.csv", + "bytes": 507043, + "mtime": "2026-07-06 03:28:49", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/interface_residues.csv", + "bytes": 17698, + "mtime": "2026-07-06 03:28:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/interface_timeseries.csv", + "bytes": 37072, + "mtime": "2026-07-06 03:28:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/metrics_merged.csv", + "bytes": 167892, + "mtime": "2026-07-06 03:38:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/native_contact_survival.csv", + "bytes": 25409, + "mtime": "2026-07-10 22:52:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/native_contacts.csv", + "bytes": 43699, + "mtime": "2026-07-06 03:28:20", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_eigenvalues.csv", + "bytes": 95323, + "mtime": "2026-07-06 03:29:08", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_eigenvalues_A8HNE1.csv", + "bytes": 23408, + "mtime": "2026-07-06 03:29:17", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_eigenvalues_BiP.csv", + "bytes": 76217, + "mtime": "2026-07-06 03:29:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_fel.csv", + "bytes": 21580, + "mtime": "2026-07-06 03:29:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_fel_A8HNE1.csv", + "bytes": 18671, + "mtime": "2026-07-06 03:29:19", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_fel_BiP.csv", + "bytes": 21942, + "mtime": "2026-07-06 03:29:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_projections.csv", + "bytes": 57327, + "mtime": "2026-07-06 03:29:08", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_projections_A8HNE1.csv", + "bytes": 58478, + "mtime": "2026-07-06 03:29:17", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pca_projections_BiP.csv", + "bytes": 57629, + "mtime": "2026-07-06 03:29:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/pipeline_summary.json", + "bytes": 48490, + "mtime": "2026-07-06 03:38:53", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/porcupine_pc1.csv", + "bytes": 43120, + "mtime": "2026-07-10 22:41:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/porcupine_pc1.pdb", + "bytes": 1394623, + "mtime": "2026-07-10 22:41:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/prolif_interaction_types.csv", + "bytes": 115, + "mtime": "2026-07-06 03:38:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/prolif_residue_frequency.csv", + "bytes": 5203, + "mtime": "2026-07-06 03:38:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/ramachandran_first_last.csv", + "bytes": 65601, + "mtime": "2026-07-06 03:30:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rin_edges.csv", + "bytes": 40024, + "mtime": "2026-07-06 03:37:59", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rin_interface_edges.csv", + "bytes": 1634, + "mtime": "2026-07-06 03:38:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rin_interface_nodes.csv", + "bytes": 1910, + "mtime": "2026-07-06 03:38:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rin_node_metrics.csv", + "bytes": 47440, + "mtime": "2026-07-06 03:38:04", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rmsd.csv", + "bytes": 137721, + "mtime": "2026-07-06 03:14:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rmsf.csv", + "bytes": 33021, + "mtime": "2026-07-06 03:14:42", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/rog.csv", + "bytes": 116547, + "mtime": "2026-07-06 03:14:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/salt_bridges_occupancy.csv", + "bytes": 8948, + "mtime": "2026-07-06 03:30:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/salt_bridges_timeseries.csv", + "bytes": 25391, + "mtime": "2026-07-06 03:30:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/sasa_per_residue.csv", + "bytes": 30051, + "mtime": "2026-07-06 03:28:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/sasa_total.csv", + "bytes": 101460, + "mtime": "2026-07-06 03:28:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/ss_fractions.csv", + "bytes": 102312, + "mtime": "2026-07-06 03:30:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/ss_per_residue.csv", + "bytes": 31261, + "mtime": "2026-07-06 03:30:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/ss_timeline.csv", + "bytes": 1710901, + "mtime": "2026-07-06 03:30:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/structural.csv", + "bytes": 135830, + "mtime": "2026-07-06 03:14:55", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/results/water_bridges.csv", + "bytes": 505, + "mtime": "2026-07-10 22:52:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/energy_summary.csv", + "bytes": 997, + "mtime": "2026-07-06 03:14:19", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/hbonds_donor_acceptor.csv", + "bytes": 2887, + "mtime": "2026-07-06 03:37:54", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/mmgbsa_run.sh", + "bytes": 1052, + "mtime": "2026-07-10 22:41:30", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/mmpbsa.in", + "bytes": 630, + "mtime": "2026-07-10 22:41:30", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/network_hubs.csv", + "bytes": 42536, + "mtime": "2026-07-10 22:52:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/pca_variance.csv", + "bytes": 167383, + "mtime": "2026-07-10 22:41:30", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/summary_statistics.csv", + "bytes": 1961, + "mtime": "2026-07-06 03:38:50", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis/tables/water_bridge_summary.csv", + "bytes": 5240, + "mtime": "2026-07-10 22:52:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/data/.protein.xtc_offsets.npz", + "bytes": 9028, + "mtime": "2026-07-26 13:47:59", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/data/meta.json", + "bytes": 21287, + "mtime": "2026-07-26 13:47:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/data/protein.pdb", + "bytes": 1389509, + "mtime": "2026-07-26 13:45:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/data/protein.xtc", + "bytes": 50635832, + "mtime": "2026-07-26 13:47:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/cluster_pca.pdf", + "bytes": 33016, + "mtime": "2026-07-26 14:03:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/cluster_pca.png", + "bytes": 185710, + "mtime": "2026-07-26 14:03:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/cluster_populations.pdf", + "bytes": 21180, + "mtime": "2026-07-26 14:03:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/cluster_populations.png", + "bytes": 80617, + "mtime": "2026-07-26 14:03:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/cluster_timeline.pdf", + "bytes": 17808, + "mtime": "2026-07-26 14:03:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/cluster_timeline.png", + "bytes": 48992, + "mtime": "2026-07-26 14:03:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/com_3d.pdf", + "bytes": 469859, + "mtime": "2026-07-26 14:01:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/com_3d.png", + "bytes": 423603, + "mtime": "2026-07-26 14:01:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/com_distance.pdf", + "bytes": 38102, + "mtime": "2026-07-26 14:01:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/com_distance.png", + "bytes": 205652, + "mtime": "2026-07-26 14:01:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/com_orientation.pdf", + "bytes": 38091, + "mtime": "2026-07-26 14:01:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/com_orientation.png", + "bytes": 257869, + "mtime": "2026-07-26 14:01:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contact_difference.pdf", + "bytes": 109258, + "mtime": "2026-07-26 14:01:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contact_difference.png", + "bytes": 194451, + "mtime": "2026-07-26 14:01:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contact_lifetime_distribution.pdf", + "bytes": 22002, + "mtime": "2026-07-26 14:22:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contact_lifetime_distribution.png", + "bytes": 83758, + "mtime": "2026-07-26 14:22:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contact_occupancy.pdf", + "bytes": 151887, + "mtime": "2026-07-26 14:01:56", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contact_occupancy.png", + "bytes": 242598, + "mtime": "2026-07-26 14:01:55", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contacts_vs_time.pdf", + "bytes": 33960, + "mtime": "2026-07-26 14:01:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/contacts_vs_time.png", + "bytes": 289742, + "mtime": "2026-07-26 14:01:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/convergence_blocks.pdf", + "bytes": 24245, + "mtime": "2026-07-26 14:12:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/convergence_blocks.png", + "bytes": 77393, + "mtime": "2026-07-26 14:12:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/convergence_halves.pdf", + "bytes": 26822, + "mtime": "2026-07-26 14:12:34", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/convergence_halves.png", + "bytes": 114778, + "mtime": "2026-07-26 14:12:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/convergence_running.pdf", + "bytes": 43636, + "mtime": "2026-07-26 14:12:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/convergence_running.png", + "bytes": 254777, + "mtime": "2026-07-26 14:12:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/correlation_pearson.pdf", + "bytes": 41383, + "mtime": "2026-07-26 14:12:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/correlation_pearson.png", + "bytes": 443754, + "mtime": "2026-07-26 14:12:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/correlation_spearman.pdf", + "bytes": 41855, + "mtime": "2026-07-26 14:12:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/correlation_spearman.png", + "bytes": 431160, + "mtime": "2026-07-26 14:12:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/dccm.pdf", + "bytes": 2425325, + "mtime": "2026-07-26 14:02:27", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/dccm.png", + "bytes": 2869402, + "mtime": "2026-07-26 14:02:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/dccm_interchain.pdf", + "bytes": 1244920, + "mtime": "2026-07-26 14:02:29", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/dccm_interchain.png", + "bytes": 1488455, + "mtime": "2026-07-26 14:02:28", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/energies.pdf", + "bytes": 370283, + "mtime": "2026-07-26 13:47:58", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/energies.png", + "bytes": 410275, + "mtime": "2026-07-26 13:47:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/essential_dynamics_overlap.pdf", + "bytes": 35225, + "mtime": "2026-07-26 14:12:34", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/essential_dynamics_overlap.png", + "bytes": 93328, + "mtime": "2026-07-26 14:12:34", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/hbonds_occupancy.pdf", + "bytes": 26248, + "mtime": "2026-07-26 14:11:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/hbonds_occupancy.png", + "bytes": 187783, + "mtime": "2026-07-26 14:11:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/hbonds_timeseries.pdf", + "bytes": 45546, + "mtime": "2026-07-26 14:11:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/hbonds_timeseries.png", + "bytes": 460147, + "mtime": "2026-07-26 14:11:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/interface_contact_map.pdf", + "bytes": 53252, + "mtime": "2026-07-26 14:02:16", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/interface_contact_map.png", + "bytes": 129708, + "mtime": "2026-07-26 14:02:16", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/interface_mindist.pdf", + "bytes": 45565, + "mtime": "2026-07-26 14:02:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/interface_mindist.png", + "bytes": 373687, + "mtime": "2026-07-26 14:02:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/interface_residues.pdf", + "bytes": 37748, + "mtime": "2026-07-26 14:02:15", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/interface_residues.png", + "bytes": 138933, + "mtime": "2026-07-26 14:02:14", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/native_contact_map.pdf", + "bytes": 91023, + "mtime": "2026-07-26 14:01:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/native_contact_map.png", + "bytes": 139516, + "mtime": "2026-07-26 14:01:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/native_contact_survival.pdf", + "bytes": 37984, + "mtime": "2026-07-26 14:22:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/native_contact_survival.png", + "bytes": 142200, + "mtime": "2026-07-26 14:22:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/native_contacts_Q.pdf", + "bytes": 31153, + "mtime": "2026-07-26 14:01:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/native_contacts_Q.png", + "bytes": 121613, + "mtime": "2026-07-26 14:01:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/network_betweenness.pdf", + "bytes": 193746, + "mtime": "2026-07-26 14:22:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/network_betweenness.png", + "bytes": 323393, + "mtime": "2026-07-26 14:22:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/network_communities.pdf", + "bytes": 40497, + "mtime": "2026-07-26 14:22:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/network_communities.png", + "bytes": 276119, + "mtime": "2026-07-26 14:22:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_covariance.pdf", + "bytes": 1751209, + "mtime": "2026-07-26 14:02:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_covariance.png", + "bytes": 2143455, + "mtime": "2026-07-26 14:02:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_eigenvalues.pdf", + "bytes": 21746, + "mtime": "2026-07-26 14:12:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_eigenvalues.png", + "bytes": 101979, + "mtime": "2026-07-26 14:12:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_fel.pdf", + "bytes": 99288, + "mtime": "2026-07-26 14:02:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_fel.png", + "bytes": 83425, + "mtime": "2026-07-26 14:02:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_fel_A8HNE1.pdf", + "bytes": 101134, + "mtime": "2026-07-26 14:02:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_fel_A8HNE1.png", + "bytes": 87195, + "mtime": "2026-07-26 14:02:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_fel_BiP.pdf", + "bytes": 100743, + "mtime": "2026-07-26 14:02:53", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_fel_BiP.png", + "bytes": 101654, + "mtime": "2026-07-26 14:02:52", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc1_pc2.pdf", + "bytes": 46930, + "mtime": "2026-07-26 14:02:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc1_pc2.png", + "bytes": 604733, + "mtime": "2026-07-26 14:02:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc1_pc2_A8HNE1.pdf", + "bytes": 47716, + "mtime": "2026-07-26 14:02:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc1_pc2_A8HNE1.png", + "bytes": 489930, + "mtime": "2026-07-26 14:02:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc1_pc2_BiP.pdf", + "bytes": 46927, + "mtime": "2026-07-26 14:02:52", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc1_pc2_BiP.png", + "bytes": 643193, + "mtime": "2026-07-26 14:02:52", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc_time.pdf", + "bytes": 35976, + "mtime": "2026-07-26 14:02:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_pc_time.png", + "bytes": 247471, + "mtime": "2026-07-26 14:02:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_scree.pdf", + "bytes": 23895, + "mtime": "2026-07-26 14:12:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_scree.png", + "bytes": 133345, + "mtime": "2026-07-26 14:12:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_variance.pdf", + "bytes": 23128, + "mtime": "2026-07-26 14:02:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_variance.png", + "bytes": 128649, + "mtime": "2026-07-26 14:02:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_variance_A8HNE1.pdf", + "bytes": 23751, + "mtime": "2026-07-26 14:02:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_variance_A8HNE1.png", + "bytes": 126954, + "mtime": "2026-07-26 14:02:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_variance_BiP.pdf", + "bytes": 22857, + "mtime": "2026-07-26 14:02:51", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/pca_variance_BiP.png", + "bytes": 130404, + "mtime": "2026-07-26 14:02:51", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/porcupine_pc1.pdf", + "bytes": 85472, + "mtime": "2026-07-26 14:12:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/porcupine_pc1.png", + "bytes": 1014888, + "mtime": "2026-07-26 14:12:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/prolif_interaction_types.pdf", + "bytes": 23136, + "mtime": "2026-07-26 14:12:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/prolif_interaction_types.png", + "bytes": 98584, + "mtime": "2026-07-26 14:12:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/prolif_residue_frequency.pdf", + "bytes": 27514, + "mtime": "2026-07-26 14:12:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/prolif_residue_frequency.png", + "bytes": 196305, + "mtime": "2026-07-26 14:12:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ramachandran_before_after.pdf", + "bytes": 50482, + "mtime": "2026-07-26 14:04:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ramachandran_before_after.png", + "bytes": 419203, + "mtime": "2026-07-26 14:04:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ramachandran_density.pdf", + "bytes": 193464, + "mtime": "2026-07-26 14:04:14", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ramachandran_density.png", + "bytes": 93423, + "mtime": "2026-07-26 14:04:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rin_hubs.pdf", + "bytes": 19278, + "mtime": "2026-07-26 14:11:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rin_hubs.png", + "bytes": 97063, + "mtime": "2026-07-26 14:11:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rin_interface_network.pdf", + "bytes": 17446, + "mtime": "2026-07-26 14:11:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rin_interface_network.png", + "bytes": 566269, + "mtime": "2026-07-26 14:11:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rin_network.pdf", + "bytes": 191888, + "mtime": "2026-07-26 14:11:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rin_network.png", + "bytes": 255567, + "mtime": "2026-07-26 14:11:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rmsd.pdf", + "bytes": 55777, + "mtime": "2026-07-26 13:48:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rmsd.png", + "bytes": 274614, + "mtime": "2026-07-26 13:48:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rmsf.pdf", + "bytes": 42322, + "mtime": "2026-07-26 13:48:20", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rmsf.png", + "bytes": 253509, + "mtime": "2026-07-26 13:48:19", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rog.pdf", + "bytes": 66767, + "mtime": "2026-07-26 13:48:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/rog.png", + "bytes": 348208, + "mtime": "2026-07-26 13:48:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/salt_bridges_occupancy.pdf", + "bytes": 23314, + "mtime": "2026-07-26 14:04:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/salt_bridges_occupancy.png", + "bytes": 81043, + "mtime": "2026-07-26 14:04:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/salt_bridges_timeseries.pdf", + "bytes": 34383, + "mtime": "2026-07-26 14:04:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/salt_bridges_timeseries.png", + "bytes": 147115, + "mtime": "2026-07-26 14:04:09", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/sasa_per_residue.pdf", + "bytes": 42534, + "mtime": "2026-07-26 14:01:34", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/sasa_per_residue.png", + "bytes": 82273, + "mtime": "2026-07-26 14:01:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/sasa_timeseries.pdf", + "bytes": 58554, + "mtime": "2026-07-26 14:01:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/sasa_timeseries.png", + "bytes": 396430, + "mtime": "2026-07-26 14:01:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ss_fractions.pdf", + "bytes": 49982, + "mtime": "2026-07-26 14:04:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ss_fractions.png", + "bytes": 246187, + "mtime": "2026-07-26 14:04:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ss_timeline.pdf", + "bytes": 51858, + "mtime": "2026-07-26 14:04:07", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/ss_timeline.png", + "bytes": 134816, + "mtime": "2026-07-26 14:04:06", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/structural_descriptors.pdf", + "bytes": 85940, + "mtime": "2026-07-26 13:48:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/structural_descriptors.png", + "bytes": 533449, + "mtime": "2026-07-26 13:48:33", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/water_bridge_timeseries.pdf", + "bytes": 23194, + "mtime": "2026-07-26 14:22:27", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/figures/water_bridge_timeseries.png", + "bytes": 169017, + "mtime": "2026-07-26 14:22:27", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/report/analysis_report.md", + "bytes": 17441, + "mtime": "2026-07-26 14:22:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/report/mmgbsa_workflow.md", + "bytes": 1485, + "mtime": "2026-07-26 14:12:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/block_averages.csv", + "bytes": 686, + "mtime": "2026-07-26 14:12:24", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/cluster_assignments.csv", + "bytes": 7926, + "mtime": "2026-07-26 14:03:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/cluster_populations.csv", + "bytes": 124, + "mtime": "2026-07-26 14:03:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/cluster_silhouette.csv", + "bytes": 168, + "mtime": "2026-07-26 14:03:55", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/cluster_structures/cluster_01.pdb", + "bytes": 1084361, + "mtime": "2026-07-26 14:03:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/cluster_structures/cluster_02.pdb", + "bytes": 1084361, + "mtime": "2026-07-26 14:03:57", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/com.csv", + "bytes": 154787, + "mtime": "2026-07-26 14:01:36", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/contact_lifetime.csv", + "bytes": 24943, + "mtime": "2026-07-26 14:22:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/contact_occupancy.csv", + "bytes": 3021172, + "mtime": "2026-07-26 14:01:54", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/contacts_vs_time.csv", + "bytes": 20584, + "mtime": "2026-07-26 14:01:54", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/convergence_summary.csv", + "bytes": 386, + "mtime": "2026-07-26 14:12:34", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/correlation_pearson.csv", + "bytes": 3425, + "mtime": "2026-07-26 14:12:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/correlation_spearman.csv", + "bytes": 3451, + "mtime": "2026-07-26 14:12:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/dccm.csv", + "bytes": 8030310, + "mtime": "2026-07-26 14:02:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/energies.csv", + "bytes": 4867613, + "mtime": "2026-07-26 13:47:54", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/hbonds_lifetime_autocorr.csv", + "bytes": 728, + "mtime": "2026-07-26 14:11:37", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/hbonds_occupancy.csv", + "bytes": 136635, + "mtime": "2026-07-26 14:11:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/hbonds_timeseries.csv", + "bytes": 31391, + "mtime": "2026-07-26 14:11:25", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/interface_contact_frequency.csv", + "bytes": 507043, + "mtime": "2026-07-26 14:02:15", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/interface_residues.csv", + "bytes": 17698, + "mtime": "2026-07-26 14:02:13", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/interface_timeseries.csv", + "bytes": 37072, + "mtime": "2026-07-26 14:02:12", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/metrics_merged.csv", + "bytes": 167892, + "mtime": "2026-07-26 14:12:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/native_contact_survival.csv", + "bytes": 25409, + "mtime": "2026-07-26 14:22:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/native_contacts.csv", + "bytes": 43699, + "mtime": "2026-07-26 14:01:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_eigenvalues.csv", + "bytes": 95323, + "mtime": "2026-07-26 14:02:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_eigenvalues_A8HNE1.csv", + "bytes": 23408, + "mtime": "2026-07-26 14:02:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_eigenvalues_BiP.csv", + "bytes": 76217, + "mtime": "2026-07-26 14:02:51", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_fel.csv", + "bytes": 21580, + "mtime": "2026-07-26 14:02:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_fel_A8HNE1.csv", + "bytes": 18671, + "mtime": "2026-07-26 14:02:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_fel_BiP.csv", + "bytes": 21942, + "mtime": "2026-07-26 14:02:53", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_projections.csv", + "bytes": 57327, + "mtime": "2026-07-26 14:02:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_projections_A8HNE1.csv", + "bytes": 58478, + "mtime": "2026-07-26 14:02:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pca_projections_BiP.csv", + "bytes": 57629, + "mtime": "2026-07-26 14:02:51", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/pipeline_summary.json", + "bytes": 52596, + "mtime": "2026-07-26 14:22:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/porcupine_pc1.csv", + "bytes": 43120, + "mtime": "2026-07-26 14:12:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/porcupine_pc1.pdb", + "bytes": 1394623, + "mtime": "2026-07-26 14:12:47", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/prolif_interaction_types.csv", + "bytes": 115, + "mtime": "2026-07-26 14:12:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/prolif_residue_frequency.csv", + "bytes": 5203, + "mtime": "2026-07-26 14:12:23", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/ramachandran_first_last.csv", + "bytes": 65601, + "mtime": "2026-07-26 14:04:11", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rin_edges.csv", + "bytes": 40024, + "mtime": "2026-07-26 14:11:38", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rin_interface_edges.csv", + "bytes": 1634, + "mtime": "2026-07-26 14:11:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rin_interface_nodes.csv", + "bytes": 1910, + "mtime": "2026-07-26 14:11:46", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rin_node_metrics.csv", + "bytes": 47440, + "mtime": "2026-07-26 14:11:43", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rmsd.csv", + "bytes": 137721, + "mtime": "2026-07-26 13:48:05", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rmsf.csv", + "bytes": 33021, + "mtime": "2026-07-26 13:48:19", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/rog.csv", + "bytes": 116547, + "mtime": "2026-07-26 13:48:22", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/salt_bridges_occupancy.csv", + "bytes": 8948, + "mtime": "2026-07-26 14:04:08", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/salt_bridges_timeseries.csv", + "bytes": 25391, + "mtime": "2026-07-26 14:04:08", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/sasa_per_residue.csv", + "bytes": 30051, + "mtime": "2026-07-26 14:01:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/sasa_total.csv", + "bytes": 101460, + "mtime": "2026-07-26 14:01:31", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/ss_fractions.csv", + "bytes": 102312, + "mtime": "2026-07-26 14:04:04", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/ss_per_residue.csv", + "bytes": 31261, + "mtime": "2026-07-26 14:04:04", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/ss_timeline.csv", + "bytes": 1710901, + "mtime": "2026-07-26 14:04:04", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/structural.csv", + "bytes": 135830, + "mtime": "2026-07-26 13:48:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/results/water_bridges.csv", + "bytes": 505, + "mtime": "2026-07-26 14:22:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/energy_summary.csv", + "bytes": 997, + "mtime": "2026-07-26 13:47:54", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/hbonds_donor_acceptor.csv", + "bytes": 2887, + "mtime": "2026-07-26 14:11:32", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/mmgbsa_run.sh", + "bytes": 1052, + "mtime": "2026-07-26 14:12:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/mmpbsa.in", + "bytes": 630, + "mtime": "2026-07-26 14:12:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/network_hubs.csv", + "bytes": 42536, + "mtime": "2026-07-26 14:22:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/pca_variance.csv", + "bytes": 167383, + "mtime": "2026-07-26 14:12:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/summary_statistics.csv", + "bytes": 1961, + "mtime": "2026-07-26 14:12:35", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/analysis_nopbc/tables/water_bridge_summary.csv", + "bytes": 5240, + "mtime": "2026-07-26 14:22:26", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/index.ndx", + "bytes": 46005260, + "mtime": "2026-06-16 08:39:22", + "note": "" + }, + { + "path": "Production/mdout.mdp", + "bytes": 10815, + "mtime": "2026-06-04 15:41:00", + "note": "" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmgbsa_hotspots.pdf", + "bytes": 42383, + "mtime": "2026-09-22 03:29:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmgbsa_hotspots.png", + "bytes": 316274, + "mtime": "2026-09-22 03:29:43", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmgbsa_per_residue_profile.pdf", + "bytes": 33807, + "mtime": "2026-09-22 03:29:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmgbsa_per_residue_profile.png", + "bytes": 144645, + "mtime": "2026-09-22 03:29:44", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmpbsa_components.pdf", + "bytes": 27912, + "mtime": "2026-09-22 03:29:42", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmpbsa_components.png", + "bytes": 99589, + "mtime": "2026-09-22 03:29:42", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmpbsa_dG_timeseries.pdf", + "bytes": 33033, + "mtime": "2026-09-22 03:29:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmpbsa_dG_timeseries.png", + "bytes": 341101, + "mtime": "2026-09-22 03:29:41", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmpbsa_gb_vs_pb.pdf", + "bytes": 23909, + "mtime": "2026-09-22 03:29:42", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/figures/mmpbsa_gb_vs_pb.png", + "bytes": 162132, + "mtime": "2026-09-22 03:29:42", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/mmpbsa_summary.json", + "bytes": 3157, + "mtime": "2026-09-22 03:29:45", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/tables/mmgbsa_decomp_per_residue.csv", + "bytes": 7962, + "mtime": "2026-09-22 03:29:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/tables/mmgbsa_saltbridge_crosscheck.csv", + "bytes": 378, + "mtime": "2026-09-22 03:29:40", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/tables/mmpbsa_per_frame.csv", + "bytes": 6806, + "mtime": "2026-09-22 03:29:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/tables/mmpbsa_summary.csv", + "bytes": 927, + "mtime": "2026-09-22 03:29:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/analysis/tables/mmpbsa_windows.csv", + "bytes": 592, + "mtime": "2026-09-22 03:29:39", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/complex.ndx", + "bytes": 79358, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/complex.top", + "bytes": 417, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/gb/FINAL_DECOMP_MMGBSA.csv", + "bytes": 4352430, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/gb/FINAL_DECOMP_MMGBSA.dat", + "bytes": 727806, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/gb/FINAL_RESULTS_MMGBSA.csv", + "bytes": 47163, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/gb/FINAL_RESULTS_MMGBSA.dat", + "bytes": 11928, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/gb/gmx_MMPBSA.log", + "bytes": 25228, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/gb/mmgbsa.in", + "bytes": 553, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/mmgbsa.in", + "bytes": 553, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/mmpbsa.in", + "bytes": 400, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/pb/FINAL_RESULTS_MMPBSA.csv", + "bytes": 48627, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/pb/FINAL_RESULTS_MMPBSA.dat", + "bytes": 9850, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/pb/gmx_MMPBSA.log", + "bytes": 22336, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/pb/mmpbsa.in", + "bytes": 400, + "mtime": "2026-09-22 02:40:18", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/mmpbsa_BiP2/production.log", + "bytes": 757, + "mtime": "2026-09-22 03:10:48", + "note": "earlier analysis output (must be ignored by discovery)" + }, + { + "path": "Production/step5_production-002.xtc", + "bytes": 5966482016, + "mtime": "2026-07-05 21:30:56", + "note": "" + }, + { + "path": "Production/step5_production.edr", + "bytes": 31801368, + "mtime": "2026-06-16 03:40:24", + "note": "" + }, + { + "path": "Production/step5_production.gro", + "bytes": 108356265, + "mtime": "2026-06-16 03:40:24", + "note": "" + }, + { + "path": "Production/step5_production.tpr", + "bytes": 43962680, + "mtime": "2026-06-04 03:38:44", + "note": "" + }, + { + "path": "Production/topol.top", + "bytes": 503, + "mtime": "2026-07-10 21:57:56", + "note": "" + }, + { + "path": "Production/toppar/CLA.itp", + "bytes": 334, + "mtime": "2026-05-18 09:19:20", + "note": "" + }, + { + "path": "Production/toppar/POT.itp", + "bytes": 334, + "mtime": "2026-05-18 09:19:18", + "note": "" + }, + { + "path": "Production/toppar/PROA.itp", + "bytes": 931681, + "mtime": "2026-05-18 09:18:32", + "note": "" + }, + { + "path": "Production/toppar/PROB.itp", + "bytes": 3262655, + "mtime": "2026-05-18 09:19:16", + "note": "" + }, + { + "path": "Production/toppar/TIP3.itp", + "bytes": 654, + "mtime": "2026-05-18 09:19:22", + "note": "" + }, + { + "path": "Production/toppar/forcefield.itp", + "bytes": 113813, + "mtime": "2026-05-18 09:18:16", + "note": "" + }, + { + "path": "filenames.txt", + "bytes": 2056, + "mtime": "2026-07-06 00:45:53", + "note": "" + }, + { + "path": "run_100ns.sh", + "bytes": 1450, + "mtime": "2026-06-04 15:40:30", + "note": "" + }, + { + "path": "run_A8HNE1_gpu.sh", + "bytes": 1722, + "mtime": "2026-06-03 18:02:14", + "note": "" + }, + { + "path": "run_append_100ns.sh", + "bytes": 917, + "mtime": "2026-06-04 15:43:36", + "note": "" + }, + { + "path": "step132b.pdb", + "bytes": 124060160, + "mtime": "2026-06-03 18:03:18", + "note": "" + }, + { + "path": "step132c.pdb", + "bytes": 124060171, + "mtime": "2026-06-03 18:03:20", + "note": "" + }, + { + "path": "step23b.pdb", + "bytes": 124060160, + "mtime": "2026-06-03 18:02:38", + "note": "" + }, + { + "path": "step23c.pdb", + "bytes": 124060171, + "mtime": "2026-06-03 18:02:42", + "note": "" + }, + { + "path": "step33b.pdb", + "bytes": 124060160, + "mtime": "2026-06-03 18:02:46", + "note": "" + }, + { + "path": "step33c.pdb", + "bytes": 124060171, + "mtime": "2026-06-03 18:02:50", + "note": "" + }, + { + "path": "step4.0_minimization.edr", + "bytes": 501892, + "mtime": "2026-06-03 18:11:18", + "note": "" + }, + { + "path": "step4.0_minimization.gro", + "bytes": 70667145, + "mtime": "2026-06-03 18:11:22", + "note": "" + }, + { + "path": "step4.0_minimization.log", + "bytes": 1290773, + "mtime": "2026-06-03 18:11:22", + "note": "" + }, + { + "path": "step4.0_minimization.tpr", + "bytes": 22689636, + "mtime": "2026-06-03 18:02:26", + "note": "" + }, + { + "path": "step4.0_minimization.trr", + "bytes": 18844680, + "mtime": "2026-06-03 18:11:22", + "note": "" + }, + { + "path": "step4.1_equilibration.cpt", + "bytes": 37691116, + "mtime": "2026-06-03 18:44:46", + "note": "" + }, + { + "path": "step4.1_equilibration.edr", + "bytes": 71728, + "mtime": "2026-06-03 18:44:50", + "note": "" + }, + { + "path": "step4.1_equilibration.gro", + "bytes": 108356265, + "mtime": "2026-06-03 18:44:50", + "note": "" + }, + { + "path": "step4.1_equilibration.log", + "bytes": 117117, + "mtime": "2026-06-03 18:44:50", + "note": "" + }, + { + "path": "step4.1_equilibration.tpr", + "bytes": 44674988, + "mtime": "2026-06-03 18:11:32", + "note": "" + }, + { + "path": "step4.1_equilibration.xtc", + "bytes": 155316304, + "mtime": "2026-06-03 18:44:50", + "note": "" + }, + { + "path": "step4.1_equilibration_prev.cpt", + "bytes": 37691116, + "mtime": "2026-06-03 18:44:46", + "note": "" + }, + { + "path": "step4.2_equilibration-003.xtc", + "bytes": 2390248360, + "mtime": "2026-07-05 21:13:51", + "note": "" + }, + { + "path": "step4.2_equilibration.cpt", + "bytes": 37691344, + "mtime": "2026-06-04 03:38:36", + "note": "" + }, + { + "path": "step4.2_equilibration.edr", + "bytes": 1297404, + "mtime": "2026-06-04 03:38:38", + "note": "" + }, + { + "path": "step4.2_equilibration.gro", + "bytes": 108356265, + "mtime": "2026-06-04 03:38:38", + "note": "" + }, + { + "path": "step4.2_equilibration.log", + "bytes": 1423888, + "mtime": "2026-06-04 03:38:38", + "note": "" + }, + { + "path": "step4.2_equilibration.tpr", + "bytes": 44674988, + "mtime": "2026-06-03 18:44:58", + "note": "" + }, + { + "path": "step4.2_equilibration_prev.cpt", + "bytes": 37691344, + "mtime": "2026-06-04 03:38:36", + "note": "" + }, + { + "path": "step48b.pdb", + "bytes": 124060160, + "mtime": "2026-06-03 18:02:56", + "note": "" + }, + { + "path": "step48c.pdb", + "bytes": 124060171, + "mtime": "2026-06-03 18:02:58", + "note": "" + }, + { + "path": "step5_production.cpt", + "bytes": 37691296, + "mtime": "2026-06-16 02:15:00", + "note": "" + }, + { + "path": "step5_production.log", + "bytes": 33518187, + "mtime": "2026-06-16 03:40:24", + "note": "" + }, + { + "path": "step5_production_prev.cpt", + "bytes": 37691296, + "mtime": "2026-06-16 02:15:00", + "note": "" + } + ], + "expected": { + "canonical_topology": "Production/step5_production.tpr", + "canonical_trajectory": "Production/step5_production-002.xtc", + "canonical_energy": "Production/step5_production.edr", + "canonical_log": "step5_production.log", + "gmx_top": "Production/topol.top", + "toppar_dir": "Production/toppar", + "equilibration": { + "EM": "step4.0_minimization", + "NVT": "step4.1_equilibration", + "NPT": "step4.2_equilibration" + }, + "size_heuristic_would_pick": { + "topology": "step4.2_equilibration.tpr (44,674,988 B > production 43,962,680 B) -- WRONG", + "structure": "step33c.pdb, a minimisation crash dump (124 MB) -- WRONG", + "trajectory": "Production/step5_production-002.xtc -- right, by luck" + }, + "missing_from_archive": [ + "stage .mdp files", + "CHARMM-GUI package / step3_input.gro", + "step5_production_extended.tpr (convert-tpr -extend 99000)" + ] + } +} \ No newline at end of file diff --git a/tests/fixtures/raw_trees/Q946V6_raw_archive_inventory.csv b/tests/fixtures/raw_trees/Q946V6_raw_archive_inventory.csv new file mode 100644 index 0000000..2f91a91 --- /dev/null +++ b/tests/fixtures/raw_trees/Q946V6_raw_archive_inventory.csv @@ -0,0 +1,114 @@ +path,bytes,mtime,sha256,role,status,duplicate_of +complex_Q946v6 input\README,1915,2026-05-30 05:08,b758fb50324def66f7797890d3357f630e20eee1d3802e61b172a81554335721,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\gromacs_complex_Q946v6.zip,85965861,2026-05-30 06:32,dca5d9c55abdf7ec54b13c3eae981333f1d6fde9eae9b295d351106e6a21033a,"setup (CHARMM-GUI package, all input files)",retained (charmm-gui/), +complex_Q946v6 input\index.ndx,29624473,2026-05-30 05:07,40d11ab3fdc30dfec3382290d14bfe95cebae1aae2a6f27e97b37630ed7c66f8,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\step3_input.gro,88766641,2026-05-30 05:07,fe214d9b5e0602638a9ab786ba59548099fc41415ff8554f51e3794bcc4ac026,setup (CHARMM-GUI initial system),not copied (inside the retained CHARMM-GUI zip), +complex_Q946v6 input\step3_input.pdb,155834547,2026-05-30 05:07,474f91fd87844d66656a05b47b191a142c8cd3a3420f6a33f77ebfd0b35285e0,setup (CHARMM-GUI initial system),not copied (inside the retained CHARMM-GUI zip), +complex_Q946v6 input\step3_input.psf,261527423,2026-05-30 05:07,708d26a1978a2b0b18c87becfddb3e2a2e33cae4b21ad93e7db7cd56ff601933,setup (CHARMM-GUI initial system),not copied (inside the retained CHARMM-GUI zip), +complex_Q946v6 input\step4.0_minimization.mdp,525,2026-05-30 05:08,b35f7a2dfc138648fbf068c183cfaa89e770ee2a4b7c61718acd8170bd8746a4,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\step4.1_equilibration.mdp,1075,2026-05-30 05:08,25c16d57cd269819ee584199c841decd79b9bdc535fe4d03819ece8b8e745c07,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\step4.2_equilibration.mdp,1337,2026-05-16 13:58,7cda29bff93f98f3a44c1f1c21667cda5df7836c641459cf2377ec7ca615105c,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\step5_production.mdp,1110,2026-06-03 15:52,5274774b962a2f99d0d5ee5567fadbd261fea5e8b5b68ffe9034ff1de252fe72,"setup (CHARMM-GUI; edited: nsteps 500,000 -> 50,000,000)",retained (charmm-gui/), +complex_Q946v6 input\topol.top,503,2026-05-30 05:07,d582efb6719f6435091991406d44d326b286960977fe78b87944577fa559fab9,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\toppar\CLA.itp,334,2026-05-30 05:07,38e867b7fb0ae3af0d04abcb8fb5a48d8cb021cfe2fe5ef0707744920b37847f,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\toppar\POT.itp,334,2026-05-30 05:07,9dbc9f0fdfbeb0b848352a2af04398a9fd4781f5518a80842b82dad74ff70b65,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\toppar\PROA.itp,1067067,2026-05-30 05:06,ea1e13b3f750d5cac38d28f4ad20fccab1853e0be32d780245955a5e97213deb,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\toppar\PROB.itp,3262811,2026-05-30 05:07,2fd78016954d1262899e1450d3f2718e8215bd769bd26f15f45b4e100e7c3c33,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\toppar\TIP3.itp,654,2026-05-30 05:07,156b8f3774ae5eddd2311a841fb54f7b58bc85a9b5423171392e60580753b548,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 input\toppar\forcefield.itp,114049,2026-05-30 05:06,01c249e720fd72735fe2001120dc37be216932de6a8cf03a0bcadfe21d26a962,setup (CHARMM-GUI),retained (charmm-gui/), +complex_Q946v6 output\complex_Q946v6_analysis\gyrate.xvg,59910,2026-06-21 05:08,3a85691ca582350322fc8331f3934b0db7dfc803326fd081f9fe22481c0caa88,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\hbond.xvg,35861,2026-06-21 05:16,b787a033a948105fdb71e482bf09f5585556a927a833d3e9f5dab0512c50fb38,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\index.ndx,58884549,2026-06-21 05:13,d46a8c3f9035719e01b6a3b46ba2f022b84c0c84cb72bd077f67421a5df4c31e,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\mindist.xvg,27837,2026-06-21 05:24,101b819360b16f9ecea99a6044d051ef9477fb93a589249cc504a7e38a7fc859,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\nojump.xtc,52468588,2026-06-21 05:08,eb87275a52b448584a691a9c1efbb72bab98fdf5455dfb3608fe06e33236c548,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\rama.xvg,23648977,2026-06-21 05:11,12f11d8f3f2c2f2009a167781bc5fe1f40156fa9b66330303403e538bdf2dd7a,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\rmsd.xvg,27595,2026-06-21 05:08,e9f650f0434207c248b138b8bbb7caaf2e25ed6a2b7512b09e32baafd9061ce2,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\rmsf.xvg,13749,2026-06-21 05:08,48ddc8f5790598b902c5cde54af0059f09467a15cbf0ad86cb69c00b5fa73367,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\complex_Q946v6_analysis\sasa.xvg,21788,2026-06-21 05:11,a68fdcf44c786a5e3113a893ec18eb9f535fb97de30c42b4d9f6201d61bc0058,earlier analysis attempt (2026-06-21; undocumented processing),excluded: superseded by validated re-analysis, +complex_Q946v6 output\diagnostics_1ns\hb_interface.xvg,1196,2026-05-31 16:55,f33a9e2599e0e9200b3d2332945b916aecea6e22e974749f785420d40265e92c,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\diagnostics_1ns\initial_mindist.xvg,976,2026-05-30 06:44,169d90c9319f2c44309ca258a6dc5df264b12492f09788bf0003face2b07e46d,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\diagnostics_1ns\mindist.xvg,1101,2026-05-31 16:52,03856b09fec27a52f3df1b9dbb4fe86ef03f2576b40e304be1a4998703a920b5,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\diagnostics_1ns\rmsd.xvg,915,2026-05-31 16:56,2c5a57911d672b1f8ab5acd37927bc09e98cee6c7c42188928eff0af39f09fb0,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\diagnostics_1ns\rmsd_BiP2.xvg,939,2026-05-31 16:58,4ca7ce5b9182c33e9d847250d6a3d30a39b62225f642f0315c39381763d8b580,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\diagnostics_1ns\rmsd_Q946v6.xvg,1022,2026-05-31 16:58,b6b1a315c08a0b04ec48e1ae6f608840201c83ed87890909a600942276283506,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\diagnostics_1ns\step5_fixed.xtc,83260852,2026-05-31 16:44,ddfea4be9bd7b2702bf22474812854baa49314367bdbea0a8acbda5ac4f0ca5d,"earlier 1-ns diagnostics (2026-05-31, before the extension)",excluded: covers only the first 1 ns, +complex_Q946v6 output\index_split.ndx,58884577,2026-05-31 16:51,1af4608223196bd76b10fe13846f3f6e83d94e2809c97890549294c424576e07,"make_ndx index (21 groups; 'BiP2' naming), not used by the MD",excluded: superseded, +complex_Q946v6 output\mdout.mdp,10818,2026-05-31 08:13,707a7a57dacabbede8b8a16d60c2ae1c2a1c3eae6679536cc77c111d6fc3fc41,CANONICAL grompp record of the original 1-ns production TPR,retained (0_raw_production/), +complex_Q946v6 output\run_complex_Q946v6_gpu.sh,1350,2026-06-03 16:01,013101af9147630c7f945bfe1322fac5e06d6373c2118857345e6341b21f30b4,CANONICAL SLURM script of the continuation jobs,retained (0_raw_production/), +complex_Q946v6 output\step-1b.pdb,155834671,2026-05-30 17:06,c6a5910ff00aaac5f8088b185a9863e2822d85ab5f3cee61ddea39a4ca29d110,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step-1c.pdb,155834682,2026-05-30 17:06,373a84da8e8ed3cafa9e02b9febd5c5a732563325c58d945680f36a38332327f,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step101b.pdb,155834671,2026-05-30 17:08,b85d225472789e09246a353dfbd10648be48bd44d2039085434c31ef3d2504f9,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step101c.pdb,155834682,2026-05-30 17:08,9a03e7d2da4111c859e99f6c801c84a6a0052baf1d4967d9ff6736881b8fb2c3,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step116b.pdb,155834671,2026-05-30 17:08,d2dff70d16e5140b7e6f0bae47bf8d4ce71039a1e0662c4907913eb4b009c0ea,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step116c.pdb,155834682,2026-05-30 17:08,f1376ff245623360bb57dd9ceb62f04c72aaf42539eb106a2313de12266b1ce2,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step119b.pdb,155834671,2026-05-30 17:08,1f43afbb8bd3c5276d455878651e1a65815df51f1fbc87a6ed16a95d853bbc90,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step119c.pdb,155834682,2026-05-30 17:08,5c7668d1719e9aba327c7e187a2c1f97d46c2093977d948ec690d1791d915353,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step11b.pdb,155834671,2026-05-30 17:06,508173ba3e00802aa00786485e3c19d23c2410ef390fc3894cfc7c0de1ad128c,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step11c.pdb,155834682,2026-05-30 17:06,bb1efcf8ab02cb8f912333b5fdb85c14fe99dad37ff41cf089d95e75209221af,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step18b.pdb,155834671,2026-05-30 17:06,f9657792048ad1cc40d17b21f0cc38c69422e8bc151b33ef4d21838abb3677e1,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step18c.pdb,155834682,2026-05-30 17:06,3b32d68aa25a43dc6cb125a82e01286893aab1632c3ecaecb74f68d3e78ad2f2,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step29b.pdb,155834671,2026-05-30 17:06,973d6be17e4b73eb2bb1d40e23601eb3c0b1df1daf22974f2716b26aad18cfe9,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step29c.pdb,155834682,2026-05-30 17:06,0ba74097a414aaca7669704a0253616659b172d369d63423042797e4238d0bfa,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step31b.pdb,155834671,2026-05-30 17:06,88fb981b33a503afb3427227ea9ae12ec012634ae95856a8a539eafbf6ce51a5,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step31c.pdb,155834682,2026-05-30 17:07,1c9ae7dc5615f9651e41c990bf183706a7acaadf6d273775377102777aa22ff5,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step38b.pdb,155834671,2026-05-30 17:07,a171bbf1ac7da8aaf4ed62e906e301f59cc2c23bbd39e6b4394faafe8704f22a,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step38c.pdb,155834682,2026-05-30 17:07,46eb8d4f3d6faf16d249c8672f5c3cf2492f5b9d7069594628e95f361b118d48,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step39b.pdb,155834671,2026-05-30 07:21,52897699dce2c431893f1e745fd783a2d40ac5a7cbe6079ef5e92689cb3f2be0,constraint-failure dump from energy minimisation (not production),excluded,complex_Q946v6 output\step40b.pdb +complex_Q946v6 output\step39c.pdb,155834682,2026-05-30 07:21,c37321f9cbbe426fe303429c589b705d8eb23bb33461ba55e3dbadb233936cd5,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step4.0_minimization.edr,334868,2026-05-30 17:14,9bf242f17ec26f39aa2e3ace86862b724fc19e5e9510be2e885dd04099be5232,equilibration/minimisation stage output,retained (equilibration/), +complex_Q946v6 output\step4.0_minimization.gro,88766550,2026-05-30 17:14,df512d305cfdff67ec82de75d9d13227eb81340fd3ae9580790407cf14bfaf44,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.0_minimization.log,866905,2026-05-30 17:14,259099153511a5ab1d1ac8650be90d885ab0b1c63dbf5adb7c3f6e9e2f5ce96d,equilibration/minimisation stage output,retained (equilibration/), +complex_Q946v6 output\step4.0_minimization.tpr,27637200,2026-05-30 17:06,b8429c6367ccab57cfe82993455a8cd0113358f9a3a9cb9f875981dcfeaf8cda,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.0_minimization.trr,23671188,2026-05-30 17:14,34c223fba4bbb081d2e46bede11055a2575926d1e61a2b26285fb88da4dd93b9,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.1_equilibration.cpt,47344132,2026-05-30 17:53,17608399e315330a04f5b30aedf520f15ded9f71e90c0fe83d50eefc5f95eef8,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.1_equilibration.edr,71728,2026-05-30 17:53,6eea3600a3869cf88497443ad83e5ed90c1c5858ee182006a5addd7b14a92543,equilibration/minimisation stage output,retained (equilibration/), +complex_Q946v6 output\step4.1_equilibration.gro,136108686,2026-05-30 17:53,0254304e081d577686f8101bfbdd3a84d07b59e681fd5101364f0ca8e4cbcab0,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.1_equilibration.log,104204,2026-05-30 17:53,5450528d2ec67036ad09741c6cc62fdb9458a656b6320ea1dc0045f79f59b25f,equilibration/minimisation stage output,retained (equilibration/), +complex_Q946v6 output\step4.1_equilibration.tpr,55253476,2026-05-30 17:14,446827b429ceb0e99bc1cc6e1a9c83f32cbb6bb9cf7d264a2235fa753032fd2a,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.1_equilibration.xtc,198172888,2026-05-30 17:53,bbb7b494d9614d4e04b8dd9d20a16bbcd1bd1aea01ef31194890bc7ead3b8517,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.1_equilibration_prev.cpt,47344132,2026-05-30 17:53,12b1bebb98a332a56715f373f84c4a024a0077022ead7ec273dc56b64abef4d4,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.2_equilibration-003.xtc,3050531844,2026-09-22 04:35,fa416e3a08fdaecabae002370877d317d39d9e18c5a3d27960715871294b713b,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.2_equilibration.cpt,47344360,2026-05-31 08:13,4a8fbe88b799daf69d50cc61528d57a5dace469c32265b027634229359fe1310,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.2_equilibration.edr,1297404,2026-05-31 08:13,9cecbfe49e09244c82078c1e9e6375e1295a371509327ae92af2301cd354b07c,equilibration/minimisation stage output,retained (equilibration/), +complex_Q946v6 output\step4.2_equilibration.gro,136108686,2026-05-31 08:13,e1c9a0b8c43388ed80ba44f8cb9778d3090370e5b9bdeb9cdffd555d0c4a6882,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.2_equilibration.log,1294109,2026-05-31 08:13,ad2fbe9099f525dea5db6c0b3a6e706716ad01506cbe67747739a2e2e458989e,equilibration/minimisation stage output,retained (equilibration/), +complex_Q946v6 output\step4.2_equilibration.tpr,55253476,2026-05-30 17:53,799782f3fb7b6b5e57a3d7e3ea64d53c6e88041b4c7db41ac4079b9bbcab0d26,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step4.2_equilibration_prev.cpt,47344360,2026-05-31 08:13,7e49e1678acbfcc38a9f5669a7d9e09a0284dbff0a5724692e796f7c68a94429,equilibration/minimisation stage output,excluded: pre-production stage, +complex_Q946v6 output\step40b.pdb,155834671,2026-05-30 07:21,52897699dce2c431893f1e745fd783a2d40ac5a7cbe6079ef5e92689cb3f2be0,constraint-failure dump from energy minimisation (not production),excluded,complex_Q946v6 output\step39b.pdb +complex_Q946v6 output\step40c.pdb,155834682,2026-05-30 07:21,70d9b92bfe27fa45b941a15fb3bf49072ef5b986d37a2f62fb0e691b2b971447,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step44b.pdb,155834671,2026-05-30 17:07,932513ccb37b459242af38bcd47ff62c33115c536cbb241b2eab195f1f221c8e,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step44c.pdb,155834682,2026-05-30 17:07,dda9e7c37773f05335080a46a1cb5033352ef2d1b13b179c6ea5b4778e6ad30a,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step46b.pdb,155834671,2026-05-30 17:07,c5bda7315827ecfddea023cce454aa08716dfe23bbb074fe3a443531cc576d9d,constraint-failure dump from energy minimisation (not production),excluded,complex_Q946v6 output\step47b.pdb +complex_Q946v6 output\step46c.pdb,155834682,2026-05-30 17:07,f0d4eb71b5616c46d0bf335373a6f07f044cbffc48990bf67fcd7f8bfc48d93b,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step47b.pdb,155834671,2026-05-30 17:07,c5bda7315827ecfddea023cce454aa08716dfe23bbb074fe3a443531cc576d9d,constraint-failure dump from energy minimisation (not production),excluded,complex_Q946v6 output\step46b.pdb +complex_Q946v6 output\step47c.pdb,155834682,2026-05-30 17:07,40a9b73613ea7e7ce38d094e610c2822ee497f604a7de3b94358d00d02dfb5a2,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step49b.pdb,155834671,2026-05-30 07:21,12af80de24e677eaa90deb41d95927e50eab29be17baf9a649dfcf5f83380b22,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step49c.pdb,155834682,2026-05-30 07:21,3119fa8d963ae00b05888ae5d29b3f6912950b6b0871b3c72bcffa469b76eee6,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step5_production-001.xtc,7577098176,2026-09-22 05:10,0efc1785f603dff3adc13e9f49e4fca9aae45e228cf7c1eaa2cd192a864c76bc,"CANONICAL trajectory (0-100 ns, 1001 frames)",retained (0_raw_production/), +complex_Q946v6 output\step5_production.cpt,47344312,2026-06-16 19:06,cd7d04112a9f483e67860aa6664ab38452acde00ca1dec7a18ae5662a54bb7ca,"CANONICAL final checkpoint (t = 100,000 ps)",retained (0_raw_production/), +complex_Q946v6 output\step5_production.edr,31801368,2026-06-16 19:06,7c21cd54a9d88dbf9dc6b171046416a188bb2b52fbfcf3d1680986f99e813859,"CANONICAL energies (50,001 frames, 0-100 ns)",retained (0_raw_production/), +complex_Q946v6 output\step5_production.gro,136108686,2026-06-16 19:06,5cf668cac3f230f134f0ab048c9f1c37e86e164df631dc9c60c8081c980ced9b,CANONICAL final structure (t = 100 ns),retained (0_raw_production/), +complex_Q946v6 output\step5_production.log,33507755,2026-06-16 19:06,ed26c2bf55c49820f2608150405ef40c76313ba2f6c14f544cff4c8cfe4459c9,"CANONICAL log (12 mdrun sessions; Finished mdrun at step 50,000,000)",retained (0_raw_production/), +complex_Q946v6 output\step5_production.tpr,54518224,2026-05-31 08:13,9a1d0698d87f57a3840f84ecd7c8972a8818e783008c3b9b1cacb4d5a6e1d57c,"CANONICAL run input for steps 0-500,000 (the original 1-ns segment)",retained (0_raw_production/), +complex_Q946v6 output\step5_production_ext.tpr,54518224,2026-06-03 15:56,8742745948db8798f857c1cb53e9b5e19e00cb9f283f333abf6ec05f0b6ca792,"CANONICAL run input for steps 500,000-50,000,000 (identical physics to step5_production.tpr)",retained (0_raw_production/), +complex_Q946v6 output\step5_production_prev.cpt,47344312,2026-06-16 19:06,cd43ffa49383e7d3b64fa7517eaf550eb1ddf796030565e5ef80e4d19a96a11d,"CANONICAL previous checkpoint (t = 99,963.8 ps)",retained (0_raw_production/), +complex_Q946v6 output\step62b.pdb,155834671,2026-05-30 17:07,cbb529c3e23ccc1b166adc1acc8011af3c9236916134f69b01d889c61a1dbfea,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step62c.pdb,155834682,2026-05-30 17:07,8e7fbf756568a3a99db30c222d7121f2ab261917d83dd931a889680050d9b757,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step63b.pdb,155834671,2026-05-30 07:21,ad16b4a9bc45787ebd2ae8cb1db5655e1a9f9364a06cb33f925ebce11c842d71,constraint-failure dump from energy minimisation (not production),excluded,complex_Q946v6 output\step64b.pdb +complex_Q946v6 output\step63c.pdb,155834682,2026-05-30 07:21,399f56a25ca7562a4bffce67b4f28f5d4732a2cfb5a8bb838dd296e1a5b827a5,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step64b.pdb,155834671,2026-05-30 07:21,ad16b4a9bc45787ebd2ae8cb1db5655e1a9f9364a06cb33f925ebce11c842d71,constraint-failure dump from energy minimisation (not production),excluded,complex_Q946v6 output\step63b.pdb +complex_Q946v6 output\step64c.pdb,155834682,2026-05-30 07:21,cdd2227afe4c9337b1d00d8efd36f44b21ecb4a8797e2acd9685e12bd3c39064,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step65b.pdb,155834671,2026-05-30 17:07,33885d79719945c4df83d20677d3baffaaae73a3d6232d98c0bc88c65ab52175,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step65c.pdb,155834682,2026-05-30 17:07,e66c373a9e786f1fd50dc793ee7e2e6db3ea374dd49249cc9ddb8af192711fe0,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step72b.pdb,155834671,2026-05-30 17:07,8585dc0a83b0cc7fc0f5ee0d5c537ed70c8b031ec9efd6ad81b5db60b19dd017,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step72c.pdb,155834682,2026-05-30 17:08,1207ddf8ed5ed8e98b3d6fc2dbac4d9f3c2ac51843402c6f78b7640769d10e12,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step77b.pdb,155834671,2026-05-30 17:08,999b679ed5bc73f37c60b24078c30bb9378ff6ab70b646be183f49ba9f9c5d9c,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step77c.pdb,155834682,2026-05-30 17:08,78d34a8c11205648b9b0532c9a9cb80800ca3dcdb7d29d48294c44c91c63ec72,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step81b.pdb,155834671,2026-05-30 07:21,7f99cc177bdfeed04867497ee926367a4a663239eddc0a2b5f8be2f52e1cf57e,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step81c.pdb,155834682,2026-05-30 07:21,18d4c9d000fed0762e035b321bc983f947cb63f54501f0f8baa63c85bac7fa7d,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step85b.pdb,155834671,2026-05-30 07:22,0704fcff4ad3151955d387731ca8bccca59dcb3cdbfa40909c12e9c16be799c4,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step85c.pdb,155834682,2026-05-30 07:22,61d93cbebfea1e64ec268ffee79f46757248e5c808ddcc4db7b03870c3f7c8c1,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step86b.pdb,155834671,2026-05-30 17:08,1771ab2b8cbc7707872ea3434dbf619090d66f6db8e669d1b10501878a709a34,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\step86c.pdb,155834682,2026-05-30 17:08,d2ab0ecd08d9ff943ed9ce4d0572a008a88affa10ea8ae2c303fba7ff59e6336,constraint-failure dump from energy minimisation (not production),excluded, +complex_Q946v6 output\test_init.tpr,27637200,2026-05-30 06:43,f6428284c7612fbe119a58198c8ab06c9eac6695cd978700323359e1c7a2a942,setup test (2026-05-30 morning),excluded, +complex_Q946v6 output\visual_center_test.gro,88766550,2026-05-30 06:46,a0caee4d26a83201688337d58d9745e2897293da1cb01a165d15e11e87a8dd01,setup test (2026-05-30 morning),excluded, diff --git a/tests/fixtures/structures/A8HNE1_ZmBiP2_CA_only.pdb b/tests/fixtures/structures/A8HNE1_ZmBiP2_CA_only.pdb new file mode 100644 index 0000000..50445f6 --- /dev/null +++ b/tests/fixtures/structures/A8HNE1_ZmBiP2_CA_only.pdb @@ -0,0 +1,851 @@ +ATOM 5 CA ALA X 1 129.140 83.370 131.160 1.00 0.00 seg_ C +ATOM 15 CA ALA X 2 128.780 87.090 131.460 1.00 0.00 seg_ C +ATOM 25 CA THR X 3 125.290 88.560 131.010 1.00 0.00 seg_ C +ATOM 39 CA ALA X 4 124.240 90.760 127.980 1.00 0.00 seg_ C +ATOM 49 CA THR X 5 123.780 94.390 128.890 1.00 0.00 seg_ C +ATOM 63 CA ILE X 6 120.060 94.520 127.850 1.00 0.00 seg_ C +ATOM 82 CA PHE X 7 118.570 97.980 127.710 1.00 0.00 seg_ C +ATOM 104 CA PRO X 8 114.790 98.270 128.340 1.00 0.00 seg_ C +ATOM 116 CA GLN X 9 112.660 99.290 125.280 1.00 0.00 seg_ C +ATOM 133 CA CYS X 10 110.600 102.320 126.390 1.00 0.00 seg_ C +ATOM 144 CA SER X 11 108.730 103.500 123.370 1.00 0.00 seg_ C +ATOM 155 CA GLN X 12 107.380 107.020 123.740 1.00 0.00 seg_ C +ATOM 172 CA ALA X 13 104.060 108.520 122.540 1.00 0.00 seg_ C +ATOM 184 CA PRO X 14 103.580 111.390 120.130 1.00 0.00 seg_ C +ATOM 196 CA ILE X 15 103.060 113.960 122.950 1.00 0.00 seg_ C +ATOM 215 CA ALA X 16 103.080 116.820 120.300 1.00 0.00 seg_ C +ATOM 225 CA SER X 17 99.640 115.520 119.070 1.00 0.00 seg_ C +ATOM 236 CA LEU X 18 98.460 115.520 122.720 1.00 0.00 seg_ C +ATOM 255 CA LEU X 19 100.060 118.010 125.070 1.00 0.00 seg_ C +ATOM 276 CA PRO X 20 100.250 121.830 124.560 1.00 0.00 seg_ C +ATOM 290 CA PRO X 21 103.800 123.150 123.690 1.00 0.00 seg_ C +ATOM 302 CA TYR X 22 103.260 125.690 126.540 1.00 0.00 seg_ C +ATOM 323 CA LEU X 23 103.350 122.820 129.090 1.00 0.00 seg_ C +ATOM 342 CA SER X 24 106.000 122.630 131.960 1.00 0.00 seg_ C +ATOM 355 CA PRO X 25 109.070 120.770 130.410 1.00 0.00 seg_ C +ATOM 367 CA ALA X 26 109.100 118.020 133.170 1.00 0.00 seg_ C +ATOM 377 CA VAL X 27 108.170 115.340 130.590 1.00 0.00 seg_ C +ATOM 393 CA SER X 28 111.670 113.930 130.830 1.00 0.00 seg_ C +ATOM 404 CA SER X 29 110.600 111.900 133.940 1.00 0.00 seg_ C +ATOM 415 CA VAL X 30 109.610 108.600 132.240 1.00 0.00 seg_ C +ATOM 431 CA CYS X 31 112.970 108.560 130.460 1.00 0.00 seg_ C +ATOM 442 CA GLU X 32 114.990 109.600 133.720 1.00 0.00 seg_ C +ATOM 457 CA ASN X 33 117.270 107.360 135.790 1.00 0.00 seg_ C +ATOM 473 CA PRO X 34 115.400 105.990 138.830 1.00 0.00 seg_ C +ATOM 485 CA ILE X 35 117.480 107.530 141.620 1.00 0.00 seg_ C +ATOM 504 CA LEU X 36 117.170 111.030 140.100 1.00 0.00 seg_ C +ATOM 523 CA GLN X 37 113.380 110.580 139.440 1.00 0.00 seg_ C +ATOM 542 CA PRO X 38 112.230 110.970 143.140 1.00 0.00 seg_ C +ATOM 554 CA TYR X 39 114.500 114.010 143.650 1.00 0.00 seg_ C +ATOM 575 CA ARG X 40 113.370 115.850 140.360 1.00 0.00 seg_ C +ATOM 599 CA ILE X 41 109.580 115.240 140.810 1.00 0.00 seg_ C +ATOM 618 CA GLN X 42 109.940 116.420 144.480 1.00 0.00 seg_ C +ATOM 635 CA GLN X 43 111.510 119.700 143.490 1.00 0.00 seg_ C +ATOM 652 CA ALA X 44 109.000 120.250 140.590 1.00 0.00 seg_ C +ATOM 662 CA ILE X 45 105.870 119.880 142.650 1.00 0.00 seg_ C +ATOM 681 CA THR X 46 107.420 122.180 145.360 1.00 0.00 seg_ C +ATOM 695 CA ALA X 47 108.430 124.730 142.680 1.00 0.00 seg_ C +ATOM 705 CA GLY X 48 105.060 124.240 140.940 1.00 0.00 seg_ C +ATOM 712 CA ILE X 49 102.600 124.940 143.780 1.00 0.00 seg_ C +ATOM 731 CA LEU X 50 104.670 128.040 144.640 1.00 0.00 seg_ C +ATOM 752 CA PRO X 51 103.690 130.700 141.940 1.00 0.00 seg_ C +ATOM 764 CA LEU X 52 100.040 129.870 142.070 1.00 0.00 seg_ C +ATOM 783 CA SER X 53 98.280 131.910 139.400 1.00 0.00 seg_ C +ATOM 796 CA PRO X 54 95.660 134.410 140.650 1.00 0.00 seg_ C +ATOM 808 CA LEU X 55 94.200 134.150 137.120 1.00 0.00 seg_ C +ATOM 827 CA PHE X 56 93.460 130.410 137.950 1.00 0.00 seg_ C +ATOM 847 CA LEU X 57 92.310 131.340 141.440 1.00 0.00 seg_ C +ATOM 866 CA GLN X 58 89.800 133.900 139.820 1.00 0.00 seg_ C +ATOM 883 CA GLN X 59 88.700 131.480 137.100 1.00 0.00 seg_ C +ATOM 900 CA SER X 60 88.060 128.780 139.670 1.00 0.00 seg_ C +ATOM 911 CA SER X 61 86.020 131.330 141.550 1.00 0.00 seg_ C +ATOM 922 CA ALA X 62 84.070 132.360 138.540 1.00 0.00 seg_ C +ATOM 932 CA LEU X 63 83.300 128.630 137.820 1.00 0.00 seg_ C +ATOM 951 CA LEU X 64 82.080 127.950 141.450 1.00 0.00 seg_ C +ATOM 970 CA HSD X 65 80.110 131.290 141.240 1.00 0.00 seg_ C +ATOM 987 CA GLN X 66 78.290 130.100 138.000 1.00 0.00 seg_ C +ATOM 1004 CA LEU X 67 76.970 126.850 139.590 1.00 0.00 seg_ C +ATOM 1025 CA PRO X 68 74.170 128.640 141.640 1.00 0.00 seg_ C +ATOM 1037 CA LEU X 69 73.300 131.120 138.780 1.00 0.00 seg_ C +ATOM 1056 CA VAL X 70 72.960 128.300 136.170 1.00 0.00 seg_ C +ATOM 1072 CA HSD X 71 70.740 126.420 138.670 1.00 0.00 seg_ C +ATOM 1089 CA LEU X 72 68.710 129.610 139.410 1.00 0.00 seg_ C +ATOM 1108 CA LEU X 73 68.180 130.160 135.720 1.00 0.00 seg_ C +ATOM 1127 CA ALA X 74 67.310 126.520 135.210 1.00 0.00 seg_ C +ATOM 1137 CA GLN X 75 64.880 126.440 138.200 1.00 0.00 seg_ C +ATOM 1154 CA ASN X 76 63.240 129.510 136.490 1.00 0.00 seg_ C +ATOM 1168 CA ILE X 77 62.780 127.540 133.260 1.00 0.00 seg_ C +ATOM 1187 CA ARG X 78 61.360 124.410 135.190 1.00 0.00 seg_ C +ATOM 1211 CA ALA X 79 58.830 126.620 137.180 1.00 0.00 seg_ C +ATOM 1221 CA GLN X 80 57.770 128.540 134.070 1.00 0.00 seg_ C +ATOM 1238 CA GLN X 81 57.060 125.410 132.030 1.00 0.00 seg_ C +ATOM 1255 CA LEU X 82 55.100 123.960 134.890 1.00 0.00 seg_ C +ATOM 1274 CA GLN X 83 53.100 127.290 135.390 1.00 0.00 seg_ C +ATOM 1291 CA GLN X 84 52.420 127.210 131.570 1.00 0.00 seg_ C +ATOM 1308 CA LEU X 85 50.990 123.710 131.450 1.00 0.00 seg_ C +ATOM 1327 CA VAL X 86 49.000 124.670 134.640 1.00 0.00 seg_ C +ATOM 1343 CA LEU X 87 47.590 127.720 132.750 1.00 0.00 seg_ C +ATOM 1362 CA ALA X 88 46.820 125.520 129.670 1.00 0.00 seg_ C +ATOM 1372 CA ASN X 89 45.230 122.820 131.740 1.00 0.00 seg_ C +ATOM 1386 CA LEU X 90 42.880 125.320 133.290 1.00 0.00 seg_ C +ATOM 1405 CA ALA X 91 42.140 126.970 129.840 1.00 0.00 seg_ C +ATOM 1415 CA ALA X 92 41.130 123.560 128.240 1.00 0.00 seg_ C +ATOM 1425 CA TYR X 93 38.940 122.480 131.220 1.00 0.00 seg_ C +ATOM 1446 CA SER X 94 37.270 125.920 131.490 1.00 0.00 seg_ C +ATOM 1457 CA GLN X 95 36.340 125.770 127.820 1.00 0.00 seg_ C +ATOM 1474 CA GLN X 96 34.840 122.310 128.270 1.00 0.00 seg_ C +ATOM 1491 CA GLN X 97 32.960 123.700 131.470 1.00 0.00 seg_ C +ATOM 1508 CA GLN X 98 31.340 126.190 128.960 1.00 0.00 seg_ C +ATOM 1525 CA PHE X 99 30.600 123.460 126.380 1.00 0.00 seg_ C +ATOM 1545 CA LEU X 100 28.390 121.470 128.760 1.00 0.00 seg_ C +ATOM 1566 CA PRO X 101 25.480 123.920 129.250 1.00 0.00 seg_ C +ATOM 1578 CA PHE X 102 25.820 125.030 125.610 1.00 0.00 seg_ C +ATOM 1598 CA ASN X 103 25.300 121.460 124.180 1.00 0.00 seg_ C +ATOM 1612 CA GLN X 104 22.660 120.870 126.890 1.00 0.00 seg_ C +ATOM 1629 CA LEU X 105 20.750 124.000 125.580 1.00 0.00 seg_ C +ATOM 1648 CA ALA X 106 21.270 122.820 121.980 1.00 0.00 seg_ C +ATOM 1658 CA ALA X 107 19.660 119.480 122.820 1.00 0.00 seg_ C +ATOM 1668 CA LEU X 108 16.810 121.210 124.600 1.00 0.00 seg_ C +ATOM 1687 CA ASN X 109 15.970 123.510 121.770 1.00 0.00 seg_ C +ATOM 1701 CA SER X 110 16.250 120.440 119.450 1.00 0.00 seg_ C +ATOM 1712 CA ALA X 111 13.680 118.520 121.500 1.00 0.00 seg_ C +ATOM 1722 CA SER X 112 11.580 121.820 121.650 1.00 0.00 seg_ C +ATOM 1733 CA TYR X 113 11.460 122.130 117.820 1.00 0.00 seg_ C +ATOM 1754 CA LEU X 114 10.660 118.290 117.470 1.00 0.00 seg_ C +ATOM 1773 CA GLN X 115 7.940 118.590 120.260 1.00 0.00 seg_ C +ATOM 1790 CA GLN X 116 6.490 121.610 118.330 1.00 0.00 seg_ C +ATOM 1807 CA GLN X 117 6.190 119.480 115.160 1.00 0.00 seg_ C +ATOM 1824 CA GLN X 118 4.220 116.890 117.090 1.00 0.00 seg_ C +ATOM 1841 CA LEU X 119 1.570 119.690 117.870 1.00 0.00 seg_ C +ATOM 1862 CA PRO X 120 -0.954 120.120 114.990 1.00 0.00 seg_ C +ATOM 1874 CA PHE X 121 -1.814 123.830 115.010 1.00 0.00 seg_ C +ATOM 1894 CA SER X 122 -5.464 124.240 113.700 1.00 0.00 seg_ C +ATOM 1905 CA GLN X 123 -7.144 127.460 112.610 1.00 0.00 seg_ C +ATOM 1922 CA LEU X 124 -4.024 129.640 113.670 1.00 0.00 seg_ C +ATOM 1943 CA PRO X 125 -2.514 132.940 112.940 1.00 0.00 seg_ C +ATOM 1955 CA ALA X 126 -1.434 133.210 109.180 1.00 0.00 seg_ C +ATOM 1965 CA ALA X 127 -2.984 136.630 108.700 1.00 0.00 seg_ C +ATOM 1975 CA TYR X 128 0.210 138.720 109.020 1.00 0.00 seg_ C +ATOM 1998 CA PRO X 129 3.530 137.440 107.570 1.00 0.00 seg_ C +ATOM 2010 CA GLN X 130 6.200 138.020 110.190 1.00 0.00 seg_ C +ATOM 2027 CA GLN X 131 9.820 138.310 108.770 1.00 0.00 seg_ C +ATOM 2044 CA PHE X 132 11.910 135.850 110.590 1.00 0.00 seg_ C +ATOM 2064 CA LEU X 133 15.690 135.980 110.250 1.00 0.00 seg_ C +ATOM 2085 CA PRO X 134 17.470 132.540 110.290 1.00 0.00 seg_ C +ATOM 2097 CA PHE X 135 20.250 132.890 112.940 1.00 0.00 seg_ C +ATOM 2117 CA ASN X 136 21.860 129.580 111.790 1.00 0.00 seg_ C +ATOM 2131 CA GLN X 137 23.240 131.280 108.520 1.00 0.00 seg_ C +ATOM 2148 CA LEU X 138 25.320 134.070 110.410 1.00 0.00 seg_ C +ATOM 2167 CA ALA X 139 26.920 131.460 112.890 1.00 0.00 seg_ C +ATOM 2177 CA ALA X 140 27.610 129.050 109.960 1.00 0.00 seg_ C +ATOM 2187 CA LEU X 141 30.170 131.290 108.250 1.00 0.00 seg_ C +ATOM 2206 CA ASN X 142 32.380 131.200 111.340 1.00 0.00 seg_ C +ATOM 2220 CA SER X 143 32.710 127.400 111.290 1.00 0.00 seg_ C +ATOM 2233 CA PRO X 144 35.240 127.180 108.300 1.00 0.00 seg_ C +ATOM 2245 CA ALA X 145 37.070 130.320 109.610 1.00 0.00 seg_ C +ATOM 2255 CA TYR X 146 38.430 128.350 112.610 1.00 0.00 seg_ C +ATOM 2276 CA LEU X 147 39.650 125.320 110.380 1.00 0.00 seg_ C +ATOM 2295 CA GLN X 148 41.740 127.950 108.350 1.00 0.00 seg_ C +ATOM 2312 CA GLN X 149 43.840 128.660 111.530 1.00 0.00 seg_ C +ATOM 2329 CA GLN X 150 45.160 125.140 112.050 1.00 0.00 seg_ C +ATOM 2346 CA GLN X 151 47.720 125.910 109.270 1.00 0.00 seg_ C +ATOM 2363 CA LEU X 152 51.470 125.760 109.870 1.00 0.00 seg_ C +ATOM 2382 CA LEU X 153 52.790 129.500 109.760 1.00 0.00 seg_ C +ATOM 2403 CA PRO X 154 50.660 131.310 107.150 1.00 0.00 seg_ C +ATOM 2415 CA PHE X 155 51.830 134.810 108.290 1.00 0.00 seg_ C +ATOM 2435 CA SER X 156 55.380 133.750 107.570 1.00 0.00 seg_ C +ATOM 2446 CA GLN X 157 54.380 132.750 103.890 1.00 0.00 seg_ C +ATOM 2463 CA LEU X 158 52.410 135.870 103.400 1.00 0.00 seg_ C +ATOM 2482 CA ALA X 159 55.670 137.720 104.210 1.00 0.00 seg_ C +ATOM 2492 CA GLY X 160 57.230 136.900 107.650 1.00 0.00 seg_ C +ATOM 2499 CA VAL X 161 59.560 139.880 107.310 1.00 0.00 seg_ C +ATOM 2515 CA SER X 162 60.400 142.940 109.680 1.00 0.00 seg_ C +ATOM 2528 CA PRO X 163 59.540 146.170 108.010 1.00 0.00 seg_ C +ATOM 2540 CA ALA X 164 61.350 149.180 109.500 1.00 0.00 seg_ C +ATOM 2550 CA THR X 165 63.990 149.720 112.280 1.00 0.00 seg_ C +ATOM 2564 CA PHE X 166 61.830 152.470 113.900 1.00 0.00 seg_ C +ATOM 2584 CA LEU X 167 61.180 150.840 117.330 1.00 0.00 seg_ C +ATOM 2603 CA ILE X 168 58.690 153.030 118.920 1.00 0.00 seg_ C +ATOM 2622 CA GLN X 169 60.020 154.480 122.230 1.00 0.00 seg_ C +ATOM 2641 CA PRO X 170 57.830 156.090 124.980 1.00 0.00 seg_ C +ATOM 2653 CA GLN X 171 59.850 159.300 125.680 1.00 0.00 seg_ C +ATOM 2670 CA LEU X 172 60.040 158.790 129.430 1.00 0.00 seg_ C +ATOM 2689 CA LEU X 173 63.320 158.950 131.290 1.00 0.00 seg_ C +ATOM 2710 CA PRO X 174 63.520 158.020 135.020 1.00 0.00 seg_ C +ATOM 2722 CA PHE X 175 64.650 161.350 136.370 1.00 0.00 seg_ C +ATOM 2742 CA TYR X 176 66.570 160.070 139.370 1.00 0.00 seg_ C +ATOM 2763 CA GLN X 177 67.530 162.470 142.240 1.00 0.00 seg_ C +ATOM 2780 CA HSD X 178 71.270 162.150 142.670 1.00 0.00 seg_ C +ATOM 2797 CA ALA X 179 72.670 163.850 145.830 1.00 0.00 seg_ C +ATOM 2807 CA ALA X 180 74.990 166.540 144.870 1.00 0.00 seg_ C +ATOM 2819 CA PRO X 181 78.250 166.460 147.020 1.00 0.00 seg_ C +ATOM 2831 CA ASN X 182 78.290 169.520 149.360 1.00 0.00 seg_ C +ATOM 2845 CA ALA X 183 80.860 172.230 148.730 1.00 0.00 seg_ C +ATOM 2855 CA GLY X 184 82.440 173.590 151.960 1.00 0.00 seg_ C +ATOM 2862 CA THR X 185 84.050 176.730 150.960 1.00 0.00 seg_ C +ATOM 2876 CA LEU X 186 86.130 178.230 153.950 1.00 0.00 seg_ C +ATOM 2895 CA LEU X 187 86.080 182.030 154.240 1.00 0.00 seg_ C +ATOM 2917 CA MET X 188 115.110 99.940 156.250 1.00 0.00 seg_ C +ATOM 2934 CA ASP X 189 116.980 102.960 154.880 1.00 0.00 seg_ C +ATOM 2946 CA ARG X 190 120.390 101.330 154.630 1.00 0.00 seg_ C +ATOM 2970 CA ALA X 191 118.960 98.350 152.760 1.00 0.00 seg_ C +ATOM 2980 CA ARG X 192 117.680 100.570 149.980 1.00 0.00 seg_ C +ATOM 3004 CA GLY X 193 121.310 101.930 149.810 1.00 0.00 seg_ C +ATOM 3011 CA SER X 194 123.050 98.590 149.560 1.00 0.00 seg_ C +ATOM 3022 CA ALA X 195 120.500 97.450 147.050 1.00 0.00 seg_ C +ATOM 3032 CA PHE X 196 121.470 100.360 144.830 1.00 0.00 seg_ C +ATOM 3052 CA LEU X 197 125.220 100.000 145.310 1.00 0.00 seg_ C +ATOM 3071 CA LEU X 198 125.240 96.320 144.310 1.00 0.00 seg_ C +ATOM 3090 CA GLY X 199 123.140 97.390 141.400 1.00 0.00 seg_ C +ATOM 3097 CA VAL X 200 125.800 99.920 140.180 1.00 0.00 seg_ C +ATOM 3113 CA LEU X 201 128.600 97.150 140.530 1.00 0.00 seg_ C +ATOM 3132 CA LEU X 202 126.640 94.720 138.470 1.00 0.00 seg_ C +ATOM 3151 CA ALA X 203 126.060 97.090 135.610 1.00 0.00 seg_ C +ATOM 3161 CA GLY X 204 129.710 98.200 135.550 1.00 0.00 seg_ C +ATOM 3168 CA SER X 205 130.600 94.480 135.230 1.00 0.00 seg_ C +ATOM 3179 CA LEU X 206 128.130 94.020 132.350 1.00 0.00 seg_ C +ATOM 3198 CA PHE X 207 129.510 97.090 130.620 1.00 0.00 seg_ C +ATOM 3218 CA ALA X 208 133.040 95.810 131.040 1.00 0.00 seg_ C +ATOM 3228 CA PHE X 209 132.500 92.390 129.400 1.00 0.00 seg_ C +ATOM 3248 CA SER X 210 130.370 94.280 126.660 1.00 0.00 seg_ C +ATOM 3259 CA VAL X 211 133.240 96.480 125.560 1.00 0.00 seg_ C +ATOM 3275 CA ALA X 212 135.900 93.630 126.160 1.00 0.00 seg_ C +ATOM 3285 CA LYS X 213 134.440 92.020 123.020 1.00 0.00 seg_ C +ATOM 3307 CA GLU X 214 136.260 94.440 120.670 1.00 0.00 seg_ C +ATOM 3322 CA GLU X 215 139.650 94.700 119.150 1.00 0.00 seg_ C +ATOM 3337 CA THR X 216 141.690 96.920 121.480 1.00 0.00 seg_ C +ATOM 3351 CA LYS X 217 144.490 98.700 119.760 1.00 0.00 seg_ C +ATOM 3373 CA LYS X 218 147.890 98.560 121.580 1.00 0.00 seg_ C +ATOM 3395 CA LEU X 219 147.910 102.230 122.730 1.00 0.00 seg_ C +ATOM 3414 CA GLY X 220 151.080 104.490 122.990 1.00 0.00 seg_ C +ATOM 3421 CA THR X 221 152.230 106.570 126.010 1.00 0.00 seg_ C +ATOM 3435 CA VAL X 222 148.940 108.410 126.100 1.00 0.00 seg_ C +ATOM 3451 CA ILE X 223 149.210 112.200 126.640 1.00 0.00 seg_ C +ATOM 3470 CA GLY X 224 146.290 114.220 128.140 1.00 0.00 seg_ C +ATOM 3477 CA ILE X 225 146.040 117.380 126.110 1.00 0.00 seg_ C +ATOM 3496 CA ASP X 226 143.780 120.160 127.450 1.00 0.00 seg_ C +ATOM 3508 CA LEU X 227 142.600 122.130 124.360 1.00 0.00 seg_ C +ATOM 3527 CA GLY X 228 141.770 125.320 126.210 1.00 0.00 seg_ C +ATOM 3534 CA THR X 229 140.380 128.410 124.440 1.00 0.00 seg_ C +ATOM 3548 CA THR X 230 143.150 130.880 125.660 1.00 0.00 seg_ C +ATOM 3562 CA TYR X 231 145.730 128.230 126.660 1.00 0.00 seg_ C +ATOM 3583 CA SER X 232 146.550 124.540 125.800 1.00 0.00 seg_ C +ATOM 3594 CA CYS X 233 148.380 122.340 128.300 1.00 0.00 seg_ C +ATOM 3605 CA VAL X 234 149.430 118.690 128.140 1.00 0.00 seg_ C +ATOM 3621 CA GLY X 235 150.170 116.250 130.880 1.00 0.00 seg_ C +ATOM 3628 CA VAL X 236 151.470 112.590 130.840 1.00 0.00 seg_ C +ATOM 3644 CA TYR X 237 151.450 109.850 133.480 1.00 0.00 seg_ C +ATOM 3665 CA LYS X 238 154.950 108.630 134.080 1.00 0.00 seg_ C +ATOM 3687 CA ASN X 239 156.840 106.870 137.010 1.00 0.00 seg_ C +ATOM 3701 CA GLY X 240 153.530 106.620 138.930 1.00 0.00 seg_ C +ATOM 3708 CA HSD X 241 152.910 110.400 139.000 1.00 0.00 seg_ C +ATOM 3725 CA VAL X 242 152.000 113.170 136.390 1.00 0.00 seg_ C +ATOM 3741 CA GLU X 243 154.460 115.290 134.550 1.00 0.00 seg_ C +ATOM 3756 CA ILE X 244 152.980 118.410 133.150 1.00 0.00 seg_ C +ATOM 3775 CA ILE X 245 155.150 119.080 130.020 1.00 0.00 seg_ C +ATOM 3794 CA ALA X 246 156.930 122.500 129.650 1.00 0.00 seg_ C +ATOM 3804 CA ASN X 247 157.290 124.130 126.220 1.00 0.00 seg_ C +ATOM 3818 CA ASP X 248 160.010 125.800 124.040 1.00 0.00 seg_ C +ATOM 3830 CA GLN X 249 160.360 128.820 126.410 1.00 0.00 seg_ C +ATOM 3847 CA GLY X 250 159.680 126.480 129.390 1.00 0.00 seg_ C +ATOM 3854 CA ASN X 251 156.000 127.200 130.130 1.00 0.00 seg_ C +ATOM 3868 CA ARG X 252 153.400 124.510 131.050 1.00 0.00 seg_ C +ATOM 3892 CA ILE X 253 150.620 126.480 129.360 1.00 0.00 seg_ C +ATOM 3911 CA THR X 254 151.110 127.160 125.660 1.00 0.00 seg_ C +ATOM 3927 CA PRO X 255 148.850 129.860 124.050 1.00 0.00 seg_ C +ATOM 3939 CA SER X 256 146.140 128.430 121.710 1.00 0.00 seg_ C +ATOM 3950 CA TRP X 257 146.850 131.250 119.280 1.00 0.00 seg_ C +ATOM 3974 CA VAL X 258 148.340 130.960 115.720 1.00 0.00 seg_ C +ATOM 3990 CA ALA X 259 149.940 133.690 113.620 1.00 0.00 seg_ C +ATOM 4000 CA PHE X 260 150.790 133.800 109.930 1.00 0.00 seg_ C +ATOM 4020 CA THR X 261 153.670 135.920 108.580 1.00 0.00 seg_ C +ATOM 4034 CA ASP X 262 155.260 136.030 105.100 1.00 0.00 seg_ C +ATOM 4046 CA SER X 263 158.130 133.610 106.050 1.00 0.00 seg_ C +ATOM 4057 CA GLU X 264 156.890 131.950 109.140 1.00 0.00 seg_ C +ATOM 4072 CA ARG X 265 154.000 130.270 110.810 1.00 0.00 seg_ C +ATOM 4096 CA LEU X 266 154.010 131.160 114.520 1.00 0.00 seg_ C +ATOM 4115 CA ILE X 267 152.230 129.390 117.470 1.00 0.00 seg_ C +ATOM 4134 CA GLY X 268 152.160 129.980 121.320 1.00 0.00 seg_ C +ATOM 4141 CA GLU X 269 153.750 133.010 122.940 1.00 0.00 seg_ C +ATOM 4156 CA ALA X 270 155.110 134.300 119.610 1.00 0.00 seg_ C +ATOM 4166 CA ALA X 271 151.660 134.380 117.880 1.00 0.00 seg_ C +ATOM 4176 CA LYS X 272 150.410 136.470 120.870 1.00 0.00 seg_ C +ATOM 4198 CA ASN X 273 153.490 138.750 120.740 1.00 0.00 seg_ C +ATOM 4212 CA GLN X 274 153.080 139.330 116.970 1.00 0.00 seg_ C +ATOM 4229 CA ALA X 275 149.290 139.920 117.280 1.00 0.00 seg_ C +ATOM 4239 CA ALA X 276 150.090 143.590 117.550 1.00 0.00 seg_ C +ATOM 4249 CA VAL X 277 152.050 143.560 114.320 1.00 0.00 seg_ C +ATOM 4265 CA ASN X 278 149.810 141.140 112.360 1.00 0.00 seg_ C +ATOM 4281 CA PRO X 279 146.350 141.430 114.020 1.00 0.00 seg_ C +ATOM 4293 CA GLU X 280 144.440 140.280 110.840 1.00 0.00 seg_ C +ATOM 4308 CA ARG X 281 146.790 137.260 110.340 1.00 0.00 seg_ C +ATOM 4332 CA THR X 282 146.740 136.080 114.020 1.00 0.00 seg_ C +ATOM 4346 CA ILE X 283 143.870 133.570 114.840 1.00 0.00 seg_ C +ATOM 4365 CA PHE X 284 142.800 133.200 118.450 1.00 0.00 seg_ C +ATOM 4385 CA ASP X 285 139.580 132.050 120.240 1.00 0.00 seg_ C +ATOM 4397 CA VAL X 286 139.250 129.300 117.500 1.00 0.00 seg_ C +ATOM 4413 CA LYS X 287 137.540 127.020 120.110 1.00 0.00 seg_ C +ATOM 4435 CA ARG X 288 134.530 129.350 119.960 1.00 0.00 seg_ C +ATOM 4459 CA LEU X 289 133.920 128.720 116.190 1.00 0.00 seg_ C +ATOM 4478 CA ILE X 290 134.260 124.870 116.500 1.00 0.00 seg_ C +ATOM 4497 CA GLY X 291 130.990 123.000 115.690 1.00 0.00 seg_ C +ATOM 4504 CA ARG X 292 129.000 126.120 115.200 1.00 0.00 seg_ C +ATOM 4528 CA LYS X 293 127.260 127.560 112.050 1.00 0.00 seg_ C +ATOM 4550 CA PHE X 294 128.030 130.880 110.330 1.00 0.00 seg_ C +ATOM 4570 CA ALA X 295 124.450 131.690 111.030 1.00 0.00 seg_ C +ATOM 4580 CA ASP X 296 124.800 131.290 114.760 1.00 0.00 seg_ C +ATOM 4592 CA LYS X 297 124.440 134.420 116.920 1.00 0.00 seg_ C +ATOM 4614 CA GLU X 298 127.650 133.870 118.950 1.00 0.00 seg_ C +ATOM 4629 CA VAL X 299 129.830 133.750 115.840 1.00 0.00 seg_ C +ATOM 4645 CA GLN X 300 127.980 136.730 114.370 1.00 0.00 seg_ C +ATOM 4662 CA ARG X 301 128.500 138.840 117.520 1.00 0.00 seg_ C +ATOM 4686 CA ASP X 302 132.200 137.900 117.670 1.00 0.00 seg_ C +ATOM 4698 CA MET X 303 132.870 139.210 114.110 1.00 0.00 seg_ C +ATOM 4715 CA LYS X 304 132.500 142.890 115.320 1.00 0.00 seg_ C +ATOM 4737 CA LEU X 305 135.320 142.440 117.920 1.00 0.00 seg_ C +ATOM 4756 CA VAL X 306 137.400 139.810 116.020 1.00 0.00 seg_ C +ATOM 4774 CA PRO X 307 140.190 141.130 113.690 1.00 0.00 seg_ C +ATOM 4786 CA TYR X 308 140.790 138.170 111.310 1.00 0.00 seg_ C +ATOM 4807 CA LYS X 309 138.100 137.800 108.590 1.00 0.00 seg_ C +ATOM 4829 CA ILE X 310 135.490 135.110 108.860 1.00 0.00 seg_ C +ATOM 4848 CA ILE X 311 133.910 133.870 105.590 1.00 0.00 seg_ C +ATOM 4867 CA ASN X 312 130.810 131.620 104.980 1.00 0.00 seg_ C +ATOM 4881 CA LYS X 313 131.780 128.280 103.440 1.00 0.00 seg_ C +ATOM 4903 CA ASP X 314 128.990 125.590 103.530 1.00 0.00 seg_ C +ATOM 4915 CA GLY X 315 127.100 127.040 106.590 1.00 0.00 seg_ C +ATOM 4922 CA LYS X 316 130.110 127.270 108.950 1.00 0.00 seg_ C +ATOM 4946 CA PRO X 317 132.640 129.900 109.880 1.00 0.00 seg_ C +ATOM 4958 CA TYR X 318 135.750 129.430 107.760 1.00 0.00 seg_ C +ATOM 4979 CA ILE X 319 138.730 131.810 108.470 1.00 0.00 seg_ C +ATOM 4998 CA GLN X 320 140.220 133.800 105.510 1.00 0.00 seg_ C +ATOM 5015 CA VAL X 321 143.910 134.860 105.910 1.00 0.00 seg_ C +ATOM 5031 CA LYS X 322 146.920 135.750 103.760 1.00 0.00 seg_ C +ATOM 5053 CA ILE X 323 149.780 133.320 104.620 1.00 0.00 seg_ C +ATOM 5072 CA LYS X 324 153.330 132.650 103.240 1.00 0.00 seg_ C +ATOM 5094 CA ASP X 325 154.280 134.130 99.820 1.00 0.00 seg_ C +ATOM 5106 CA GLY X 326 151.040 136.160 100.070 1.00 0.00 seg_ C +ATOM 5113 CA GLU X 327 148.800 133.140 99.440 1.00 0.00 seg_ C +ATOM 5128 CA ASN X 328 145.060 133.450 100.450 1.00 0.00 seg_ C +ATOM 5142 CA LYS X 329 144.530 130.070 102.190 1.00 0.00 seg_ C +ATOM 5164 CA VAL X 330 141.120 129.730 103.770 1.00 0.00 seg_ C +ATOM 5180 CA PHE X 331 141.350 127.580 106.960 1.00 0.00 seg_ C +ATOM 5200 CA SER X 332 138.500 125.750 108.910 1.00 0.00 seg_ C +ATOM 5213 CA PRO X 333 138.190 125.750 112.760 1.00 0.00 seg_ C +ATOM 5225 CA GLU X 334 139.490 122.120 112.720 1.00 0.00 seg_ C +ATOM 5240 CA GLU X 335 142.610 123.200 110.590 1.00 0.00 seg_ C +ATOM 5255 CA ILE X 336 143.650 126.020 113.000 1.00 0.00 seg_ C +ATOM 5274 CA SER X 337 142.580 123.720 115.950 1.00 0.00 seg_ C +ATOM 5285 CA ALA X 338 144.930 120.960 114.670 1.00 0.00 seg_ C +ATOM 5295 CA MET X 339 148.050 123.330 114.770 1.00 0.00 seg_ C +ATOM 5312 CA ILE X 340 147.920 123.930 118.490 1.00 0.00 seg_ C +ATOM 5331 CA LEU X 341 147.400 119.990 119.040 1.00 0.00 seg_ C +ATOM 5350 CA GLY X 342 150.290 119.660 116.620 1.00 0.00 seg_ C +ATOM 5357 CA LYS X 343 152.330 121.890 118.920 1.00 0.00 seg_ C +ATOM 5379 CA MET X 344 151.150 120.040 122.120 1.00 0.00 seg_ C +ATOM 5396 CA LYS X 345 152.060 116.750 120.510 1.00 0.00 seg_ C +ATOM 5418 CA ASP X 346 155.480 118.130 119.400 1.00 0.00 seg_ C +ATOM 5430 CA THR X 347 156.350 119.480 122.910 1.00 0.00 seg_ C +ATOM 5444 CA ALA X 348 155.350 116.090 124.270 1.00 0.00 seg_ C +ATOM 5454 CA GLU X 349 157.420 114.170 121.720 1.00 0.00 seg_ C +ATOM 5469 CA ALA X 350 160.550 116.320 122.240 1.00 0.00 seg_ C +ATOM 5479 CA TYR X 351 160.350 115.800 125.960 1.00 0.00 seg_ C +ATOM 5500 CA LEU X 352 159.400 112.030 125.950 1.00 0.00 seg_ C +ATOM 5519 CA GLY X 353 162.030 111.480 123.140 1.00 0.00 seg_ C +ATOM 5526 CA LYS X 354 159.730 109.330 121.110 1.00 0.00 seg_ C +ATOM 5548 CA LYS X 355 157.020 109.500 118.360 1.00 0.00 seg_ C +ATOM 5570 CA ILE X 356 153.480 109.930 120.060 1.00 0.00 seg_ C +ATOM 5589 CA ASN X 357 150.330 108.710 118.300 1.00 0.00 seg_ C +ATOM 5603 CA ASP X 358 147.390 107.980 120.640 1.00 0.00 seg_ C +ATOM 5615 CA ALA X 359 146.150 110.960 122.860 1.00 0.00 seg_ C +ATOM 5625 CA VAL X 360 143.230 112.270 125.000 1.00 0.00 seg_ C +ATOM 5641 CA VAL X 361 141.760 115.700 124.070 1.00 0.00 seg_ C +ATOM 5657 CA THR X 362 139.320 117.730 126.200 1.00 0.00 seg_ C +ATOM 5671 CA VAL X 363 136.030 119.440 125.590 1.00 0.00 seg_ C +ATOM 5689 CA PRO X 364 133.830 121.790 127.660 1.00 0.00 seg_ C +ATOM 5701 CA ALA X 365 131.120 119.880 129.670 1.00 0.00 seg_ C +ATOM 5711 CA TYR X 366 128.350 121.840 128.060 1.00 0.00 seg_ C +ATOM 5732 CA PHE X 367 129.830 121.280 124.570 1.00 0.00 seg_ C +ATOM 5752 CA ASN X 368 127.230 119.630 122.390 1.00 0.00 seg_ C +ATOM 5766 CA ASP X 369 128.090 116.680 120.340 1.00 0.00 seg_ C +ATOM 5778 CA ALA X 370 128.670 118.340 116.850 1.00 0.00 seg_ C +ATOM 5788 CA GLN X 371 131.570 120.220 118.770 1.00 0.00 seg_ C +ATOM 5805 CA ARG X 372 132.700 116.970 120.570 1.00 0.00 seg_ C +ATOM 5829 CA GLN X 373 133.120 115.440 117.130 1.00 0.00 seg_ C +ATOM 5846 CA ALA X 374 134.880 118.420 115.520 1.00 0.00 seg_ C +ATOM 5856 CA THR X 375 137.420 118.280 118.380 1.00 0.00 seg_ C +ATOM 5870 CA LYS X 376 138.420 114.680 117.670 1.00 0.00 seg_ C +ATOM 5892 CA ASP X 377 138.340 115.670 113.970 1.00 0.00 seg_ C +ATOM 5904 CA ALA X 378 140.990 118.360 114.640 1.00 0.00 seg_ C +ATOM 5914 CA GLY X 379 142.760 115.640 116.570 1.00 0.00 seg_ C +ATOM 5921 CA VAL X 380 143.180 113.360 113.550 1.00 0.00 seg_ C +ATOM 5937 CA ILE X 381 144.410 116.270 111.400 1.00 0.00 seg_ C +ATOM 5956 CA ALA X 382 147.360 116.800 113.790 1.00 0.00 seg_ C +ATOM 5966 CA GLY X 383 148.300 113.090 113.330 1.00 0.00 seg_ C +ATOM 5973 CA LEU X 384 146.810 112.140 116.760 1.00 0.00 seg_ C +ATOM 5992 CA ASN X 385 144.610 108.960 117.350 1.00 0.00 seg_ C +ATOM 6006 CA VAL X 386 141.960 110.320 119.710 1.00 0.00 seg_ C +ATOM 6022 CA ALA X 387 141.490 107.830 122.520 1.00 0.00 seg_ C +ATOM 6032 CA ARG X 388 138.700 109.580 124.380 1.00 0.00 seg_ C +ATOM 6056 CA ILE X 389 136.980 112.960 124.420 1.00 0.00 seg_ C +ATOM 6075 CA ILE X 390 136.340 113.850 128.050 1.00 0.00 seg_ C +ATOM 6094 CA ASN X 391 134.790 116.950 129.700 1.00 0.00 seg_ C +ATOM 6108 CA GLU X 392 137.090 119.610 131.300 1.00 0.00 seg_ C +ATOM 6126 CA PRO X 393 135.550 120.040 134.970 1.00 0.00 seg_ C +ATOM 6138 CA THR X 394 135.180 116.230 135.070 1.00 0.00 seg_ C +ATOM 6152 CA ALA X 395 138.930 115.990 134.180 1.00 0.00 seg_ C +ATOM 6162 CA ALA X 396 139.870 118.480 137.010 1.00 0.00 seg_ C +ATOM 6172 CA ALA X 397 137.740 116.520 139.450 1.00 0.00 seg_ C +ATOM 6182 CA ILE X 398 140.050 113.500 138.730 1.00 0.00 seg_ C +ATOM 6201 CA ALA X 399 143.100 115.650 139.450 1.00 0.00 seg_ C +ATOM 6211 CA TYR X 400 141.480 116.410 142.990 1.00 0.00 seg_ C +ATOM 6232 CA GLY X 401 140.230 112.880 143.550 1.00 0.00 seg_ C +ATOM 6239 CA LEU X 402 143.480 111.060 142.920 1.00 0.00 seg_ C +ATOM 6258 CA ASP X 403 144.880 111.890 146.330 1.00 0.00 seg_ C +ATOM 6270 CA LYS X 404 141.590 111.500 148.310 1.00 0.00 seg_ C +ATOM 6292 CA LYS X 405 140.980 108.610 150.630 1.00 0.00 seg_ C +ATOM 6314 CA GLY X 406 137.510 107.860 151.950 1.00 0.00 seg_ C +ATOM 6321 CA GLY X 407 133.990 107.070 150.970 1.00 0.00 seg_ C +ATOM 6328 CA GLU X 408 131.540 109.570 149.750 1.00 0.00 seg_ C +ATOM 6343 CA LYS X 409 132.510 113.240 148.960 1.00 0.00 seg_ C +ATOM 6365 CA ASN X 410 130.420 115.470 146.800 1.00 0.00 seg_ C +ATOM 6379 CA ILE X 411 132.430 118.230 145.080 1.00 0.00 seg_ C +ATOM 6398 CA LEU X 412 131.420 121.240 142.960 1.00 0.00 seg_ C +ATOM 6417 CA VAL X 413 133.790 122.050 140.080 1.00 0.00 seg_ C +ATOM 6433 CA PHE X 414 133.790 125.360 138.240 1.00 0.00 seg_ C +ATOM 6453 CA ASP X 415 135.950 125.820 135.070 1.00 0.00 seg_ C +ATOM 6465 CA LEU X 416 136.330 129.390 134.110 1.00 0.00 seg_ C +ATOM 6484 CA GLY X 417 138.750 129.680 131.200 1.00 0.00 seg_ C +ATOM 6491 CA GLY X 418 139.270 131.920 128.150 1.00 0.00 seg_ C +ATOM 6498 CA GLY X 419 135.900 131.650 126.430 1.00 0.00 seg_ C +ATOM 6505 CA THR X 420 134.010 128.820 128.310 1.00 0.00 seg_ C +ATOM 6519 CA PHE X 421 132.280 128.470 131.730 1.00 0.00 seg_ C +ATOM 6539 CA ASP X 422 131.320 125.070 132.990 1.00 0.00 seg_ C +ATOM 6551 CA VAL X 423 129.810 123.690 136.400 1.00 0.00 seg_ C +ATOM 6567 CA SER X 424 129.970 119.920 137.170 1.00 0.00 seg_ C +ATOM 6578 CA ILE X 425 129.070 118.170 140.580 1.00 0.00 seg_ C +ATOM 6597 CA LEU X 426 130.850 114.870 141.290 1.00 0.00 seg_ C +ATOM 6616 CA THR X 427 130.470 112.180 143.950 1.00 0.00 seg_ C +ATOM 6630 CA ILE X 428 134.000 110.870 144.640 1.00 0.00 seg_ C +ATOM 6649 CA ASP X 429 133.560 107.530 146.400 1.00 0.00 seg_ C +ATOM 6661 CA ASN X 430 136.330 104.940 146.840 1.00 0.00 seg_ C +ATOM 6675 CA GLY X 431 137.800 105.730 143.410 1.00 0.00 seg_ C +ATOM 6682 CA VAL X 432 134.520 106.190 141.490 1.00 0.00 seg_ C +ATOM 6698 CA PHE X 433 133.850 109.650 140.090 1.00 0.00 seg_ C +ATOM 6718 CA GLU X 434 130.170 110.120 139.220 1.00 0.00 seg_ C +ATOM 6733 CA VAL X 435 128.660 113.210 137.780 1.00 0.00 seg_ C +ATOM 6749 CA LEU X 436 125.380 114.210 139.350 1.00 0.00 seg_ C +ATOM 6768 CA ALA X 437 124.720 117.290 137.190 1.00 0.00 seg_ C +ATOM 6778 CA THR X 438 126.640 119.280 134.520 1.00 0.00 seg_ C +ATOM 6792 CA ASN X 439 125.740 122.710 133.020 1.00 0.00 seg_ C +ATOM 6806 CA GLY X 440 127.540 125.880 131.710 1.00 0.00 seg_ C +ATOM 6813 CA ASP X 441 127.720 128.740 129.250 1.00 0.00 seg_ C +ATOM 6825 CA THR X 442 130.210 128.030 126.350 1.00 0.00 seg_ C +ATOM 6839 CA HSD X 443 130.720 131.700 125.490 1.00 0.00 seg_ C +ATOM 6856 CA LEU X 444 131.810 133.550 128.700 1.00 0.00 seg_ C +ATOM 6875 CA GLY X 445 135.470 133.410 129.970 1.00 0.00 seg_ C +ATOM 6882 CA GLY X 446 138.500 135.590 130.560 1.00 0.00 seg_ C +ATOM 6889 CA GLU X 447 138.580 137.180 127.110 1.00 0.00 seg_ C +ATOM 6904 CA ASP X 448 135.010 138.520 127.280 1.00 0.00 seg_ C +ATOM 6916 CA PHE X 449 136.280 140.520 130.430 1.00 0.00 seg_ C +ATOM 6936 CA ASP X 450 139.290 141.950 128.650 1.00 0.00 seg_ C +ATOM 6948 CA GLN X 451 136.940 142.710 125.700 1.00 0.00 seg_ C +ATOM 6965 CA ARG X 452 135.150 145.040 128.140 1.00 0.00 seg_ C +ATOM 6989 CA ILE X 453 138.630 146.640 129.000 1.00 0.00 seg_ C +ATOM 7008 CA MET X 454 139.170 147.510 125.340 1.00 0.00 seg_ C +ATOM 7025 CA GLU X 455 135.540 148.800 125.260 1.00 0.00 seg_ C +ATOM 7040 CA TYR X 456 136.280 150.900 128.470 1.00 0.00 seg_ C +ATOM 7061 CA PHE X 457 139.520 152.280 126.970 1.00 0.00 seg_ C +ATOM 7081 CA ILE X 458 138.090 153.130 123.540 1.00 0.00 seg_ C +ATOM 7100 CA LYS X 459 135.440 155.150 125.490 1.00 0.00 seg_ C +ATOM 7122 CA LEU X 460 138.230 156.950 127.390 1.00 0.00 seg_ C +ATOM 7141 CA ILE X 461 140.440 157.850 124.450 1.00 0.00 seg_ C +ATOM 7160 CA LYS X 462 137.480 159.160 122.670 1.00 0.00 seg_ C +ATOM 7182 CA LYS X 463 136.540 161.470 125.570 1.00 0.00 seg_ C +ATOM 7204 CA LYS X 464 139.950 162.770 126.440 1.00 0.00 seg_ C +ATOM 7226 CA TYR X 465 141.520 162.970 122.990 1.00 0.00 seg_ C +ATOM 7247 CA SER X 466 138.630 162.630 120.300 1.00 0.00 seg_ C +ATOM 7258 CA LYS X 467 140.420 159.650 118.640 1.00 0.00 seg_ C +ATOM 7280 CA ASP X 468 138.780 156.450 117.500 1.00 0.00 seg_ C +ATOM 7292 CA ILE X 469 141.210 153.590 117.720 1.00 0.00 seg_ C +ATOM 7311 CA SER X 470 138.390 151.060 116.890 1.00 0.00 seg_ C +ATOM 7322 CA LYS X 471 139.090 151.740 113.180 1.00 0.00 seg_ C +ATOM 7344 CA ASP X 472 142.530 150.320 113.630 1.00 0.00 seg_ C +ATOM 7356 CA ASN X 473 142.880 146.630 114.470 1.00 0.00 seg_ C +ATOM 7370 CA ARG X 474 146.640 147.050 115.330 1.00 0.00 seg_ C +ATOM 7394 CA ALA X 475 145.610 149.510 118.040 1.00 0.00 seg_ C +ATOM 7404 CA LEU X 476 143.020 147.030 119.310 1.00 0.00 seg_ C +ATOM 7423 CA GLY X 477 145.850 144.250 119.090 1.00 0.00 seg_ C +ATOM 7430 CA LYS X 478 148.210 146.550 121.130 1.00 0.00 seg_ C +ATOM 7452 CA LEU X 479 145.350 147.270 123.680 1.00 0.00 seg_ C +ATOM 7471 CA ARG X 480 144.230 143.550 123.850 1.00 0.00 seg_ C +ATOM 7495 CA ARG X 481 147.670 142.460 124.800 1.00 0.00 seg_ C +ATOM 7519 CA GLU X 482 147.700 145.140 127.670 1.00 0.00 seg_ C +ATOM 7534 CA ALA X 483 144.250 144.270 128.750 1.00 0.00 seg_ C +ATOM 7544 CA GLU X 484 145.360 140.790 129.650 1.00 0.00 seg_ C +ATOM 7559 CA ARG X 485 148.470 142.240 131.420 1.00 0.00 seg_ C +ATOM 7583 CA ALA X 486 146.270 144.650 133.270 1.00 0.00 seg_ C +ATOM 7593 CA LYS X 487 143.650 142.160 134.380 1.00 0.00 seg_ C +ATOM 7615 CA ARG X 488 146.470 139.630 135.540 1.00 0.00 seg_ C +ATOM 7639 CA ALA X 489 147.920 142.500 137.760 1.00 0.00 seg_ C +ATOM 7649 CA LEU X 490 144.380 143.400 138.890 1.00 0.00 seg_ C +ATOM 7668 CA SER X 491 143.960 139.960 140.660 1.00 0.00 seg_ C +ATOM 7679 CA ASN X 492 146.620 140.920 143.240 1.00 0.00 seg_ C +ATOM 7693 CA GLN X 493 146.750 144.740 142.690 1.00 0.00 seg_ C +ATOM 7710 CA HSD X 494 144.260 147.470 143.740 1.00 0.00 seg_ C +ATOM 7727 CA GLN X 495 145.330 149.870 141.040 1.00 0.00 seg_ C +ATOM 7744 CA VAL X 496 147.400 149.430 137.850 1.00 0.00 seg_ C +ATOM 7760 CA ARG X 497 148.740 151.660 135.080 1.00 0.00 seg_ C +ATOM 7784 CA VAL X 498 148.050 150.710 131.510 1.00 0.00 seg_ C +ATOM 7800 CA GLU X 499 150.430 152.640 129.280 1.00 0.00 seg_ C +ATOM 7815 CA ILE X 500 150.830 151.990 125.520 1.00 0.00 seg_ C +ATOM 7834 CA GLU X 501 153.590 153.740 123.710 1.00 0.00 seg_ C +ATOM 7849 CA SER X 502 152.380 155.210 120.400 1.00 0.00 seg_ C +ATOM 7860 CA LEU X 503 148.900 153.560 120.460 1.00 0.00 seg_ C +ATOM 7879 CA PHE X 504 147.370 155.900 117.700 1.00 0.00 seg_ C +ATOM 7899 CA ASP X 505 149.370 158.220 115.380 1.00 0.00 seg_ C +ATOM 7911 CA GLY X 506 152.730 158.560 117.420 1.00 0.00 seg_ C +ATOM 7918 CA THR X 507 150.670 159.400 120.710 1.00 0.00 seg_ C +ATOM 7932 CA ASP X 508 151.450 157.690 124.050 1.00 0.00 seg_ C +ATOM 7944 CA PHE X 509 148.430 157.030 126.330 1.00 0.00 seg_ C +ATOM 7964 CA SER X 510 148.650 156.250 130.120 1.00 0.00 seg_ C +ATOM 7975 CA GLU X 511 145.680 155.510 132.420 1.00 0.00 seg_ C +ATOM 7992 CA PRO X 512 145.570 154.400 136.140 1.00 0.00 seg_ C +ATOM 8004 CA LEU X 513 142.530 152.150 136.370 1.00 0.00 seg_ C +ATOM 8023 CA THR X 514 141.460 150.850 139.780 1.00 0.00 seg_ C +ATOM 8037 CA ARG X 515 140.400 147.190 140.430 1.00 0.00 seg_ C +ATOM 8061 CA ALA X 516 136.850 148.610 141.100 1.00 0.00 seg_ C +ATOM 8071 CA ARG X 517 136.530 150.170 137.620 1.00 0.00 seg_ C +ATOM 8095 CA PHE X 518 136.570 146.700 135.880 1.00 0.00 seg_ C +ATOM 8115 CA GLU X 519 134.650 144.910 138.760 1.00 0.00 seg_ C +ATOM 8130 CA GLU X 520 131.700 147.400 138.290 1.00 0.00 seg_ C +ATOM 8145 CA LEU X 521 132.060 146.960 134.510 1.00 0.00 seg_ C +ATOM 8164 CA ASN X 522 132.070 143.120 134.690 1.00 0.00 seg_ C +ATOM 8178 CA ASN X 523 129.810 142.370 137.710 1.00 0.00 seg_ C +ATOM 8192 CA ASP X 524 126.940 141.480 135.370 1.00 0.00 seg_ C +ATOM 8204 CA LEU X 525 129.120 138.960 133.460 1.00 0.00 seg_ C +ATOM 8223 CA PHE X 526 130.030 137.420 136.920 1.00 0.00 seg_ C +ATOM 8243 CA ARG X 527 126.270 137.350 137.740 1.00 0.00 seg_ C +ATOM 8267 CA LYS X 528 125.850 135.350 134.570 1.00 0.00 seg_ C +ATOM 8289 CA THR X 529 128.500 132.830 135.790 1.00 0.00 seg_ C +ATOM 8303 CA MET X 530 126.510 132.700 139.060 1.00 0.00 seg_ C +ATOM 8320 CA GLY X 531 123.580 131.420 136.770 1.00 0.00 seg_ C +ATOM 8329 CA PRO X 532 124.660 127.890 135.850 1.00 0.00 seg_ C +ATOM 8341 CA VAL X 533 125.730 127.040 139.410 1.00 0.00 seg_ C +ATOM 8357 CA LYS X 534 122.140 127.500 140.460 1.00 0.00 seg_ C +ATOM 8379 CA LYS X 535 120.790 125.120 137.720 1.00 0.00 seg_ C +ATOM 8401 CA ALA X 536 123.420 122.340 138.430 1.00 0.00 seg_ C +ATOM 8411 CA MET X 537 122.730 122.530 142.070 1.00 0.00 seg_ C +ATOM 8428 CA GLU X 538 118.880 122.170 141.410 1.00 0.00 seg_ C +ATOM 8443 CA ASP X 539 119.650 119.210 138.930 1.00 0.00 seg_ C +ATOM 8455 CA ALA X 540 121.870 117.480 141.520 1.00 0.00 seg_ C +ATOM 8465 CA GLY X 541 118.990 117.810 144.190 1.00 0.00 seg_ C +ATOM 8472 CA LEU X 542 121.520 118.760 146.890 1.00 0.00 seg_ C +ATOM 8491 CA GLU X 543 121.730 121.380 149.490 1.00 0.00 seg_ C +ATOM 8506 CA LYS X 544 124.720 123.480 150.420 1.00 0.00 seg_ C +ATOM 8528 CA SER X 545 126.040 121.450 153.270 1.00 0.00 seg_ C +ATOM 8539 CA GLN X 546 125.930 118.370 150.980 1.00 0.00 seg_ C +ATOM 8556 CA ILE X 547 128.860 119.600 148.820 1.00 0.00 seg_ C +ATOM 8575 CA HSD X 548 132.180 119.040 150.820 1.00 0.00 seg_ C +ATOM 8592 CA GLU X 549 134.380 121.010 148.440 1.00 0.00 seg_ C +ATOM 8607 CA ILE X 550 134.650 123.730 145.730 1.00 0.00 seg_ C +ATOM 8626 CA VAL X 551 137.330 123.060 142.970 1.00 0.00 seg_ C +ATOM 8642 CA LEU X 552 138.560 126.060 140.830 1.00 0.00 seg_ C +ATOM 8661 CA VAL X 553 139.620 125.320 137.230 1.00 0.00 seg_ C +ATOM 8677 CA GLY X 554 140.690 127.840 134.620 1.00 0.00 seg_ C +ATOM 8684 CA GLY X 555 142.690 131.050 134.970 1.00 0.00 seg_ C +ATOM 8691 CA SER X 556 139.820 133.480 135.510 1.00 0.00 seg_ C +ATOM 8702 CA THR X 557 139.080 131.900 138.820 1.00 0.00 seg_ C +ATOM 8716 CA ARG X 558 142.100 134.010 140.070 1.00 0.00 seg_ C +ATOM 8740 CA ILE X 559 139.820 136.970 139.680 1.00 0.00 seg_ C +ATOM 8761 CA PRO X 560 138.780 138.030 143.360 1.00 0.00 seg_ C +ATOM 8773 CA LYS X 561 135.300 139.160 142.260 1.00 0.00 seg_ C +ATOM 8795 CA VAL X 562 134.080 135.800 141.160 1.00 0.00 seg_ C +ATOM 8811 CA GLN X 563 135.490 133.960 144.310 1.00 0.00 seg_ C +ATOM 8828 CA GLN X 564 133.730 136.620 146.550 1.00 0.00 seg_ C +ATOM 8845 CA LEU X 565 130.290 135.810 144.890 1.00 0.00 seg_ C +ATOM 8864 CA LEU X 566 130.780 132.100 145.340 1.00 0.00 seg_ C +ATOM 8883 CA ARG X 567 131.660 132.670 149.070 1.00 0.00 seg_ C +ATOM 8907 CA ASP X 568 128.480 134.710 149.390 1.00 0.00 seg_ C +ATOM 8919 CA TYR X 569 126.220 132.020 147.840 1.00 0.00 seg_ C +ATOM 8940 CA PHE X 570 127.730 129.030 149.750 1.00 0.00 seg_ C +ATOM 8960 CA ASP X 571 127.490 130.780 153.190 1.00 0.00 seg_ C +ATOM 8972 CA GLY X 572 131.340 131.300 153.760 1.00 0.00 seg_ C +ATOM 8979 CA LYS X 573 132.860 128.240 152.200 1.00 0.00 seg_ C +ATOM 9001 CA GLU X 574 136.380 129.010 150.790 1.00 0.00 seg_ C +ATOM 9018 CA PRO X 575 137.280 126.970 147.650 1.00 0.00 seg_ C +ATOM 9030 CA ASN X 576 140.270 124.560 147.320 1.00 0.00 seg_ C +ATOM 9044 CA LYS X 577 143.700 126.200 146.880 1.00 0.00 seg_ C +ATOM 9066 CA GLY X 578 145.750 122.990 146.350 1.00 0.00 seg_ C +ATOM 9073 CA VAL X 579 144.340 122.400 142.990 1.00 0.00 seg_ C +ATOM 9089 CA ASN X 580 146.110 124.360 140.170 1.00 0.00 seg_ C +ATOM 9105 CA PRO X 581 143.750 126.040 137.640 1.00 0.00 seg_ C +ATOM 9117 CA ASP X 582 146.510 126.000 135.040 1.00 0.00 seg_ C +ATOM 9129 CA GLU X 583 147.260 122.280 135.160 1.00 0.00 seg_ C +ATOM 9144 CA ALA X 584 144.410 120.340 136.710 1.00 0.00 seg_ C +ATOM 9154 CA VAL X 585 142.420 119.450 133.570 1.00 0.00 seg_ C +ATOM 9170 CA ALA X 586 145.400 118.080 131.710 1.00 0.00 seg_ C +ATOM 9180 CA PHE X 587 146.440 116.170 134.820 1.00 0.00 seg_ C +ATOM 9200 CA GLY X 588 143.070 114.420 134.880 1.00 0.00 seg_ C +ATOM 9207 CA ALA X 589 143.240 113.860 131.060 1.00 0.00 seg_ C +ATOM 9217 CA ALA X 590 146.710 112.270 131.560 1.00 0.00 seg_ C +ATOM 9227 CA VAL X 591 145.370 110.010 134.300 1.00 0.00 seg_ C +ATOM 9243 CA GLN X 592 142.530 108.920 131.940 1.00 0.00 seg_ C +ATOM 9260 CA GLY X 593 145.170 108.330 129.330 1.00 0.00 seg_ C +ATOM 9267 CA SER X 594 147.040 105.960 131.630 1.00 0.00 seg_ C +ATOM 9278 CA ILE X 595 143.840 103.990 132.220 1.00 0.00 seg_ C +ATOM 9297 CA LEU X 596 143.010 103.590 128.530 1.00 0.00 seg_ C +ATOM 9316 CA SER X 597 146.710 102.520 127.970 1.00 0.00 seg_ C +ATOM 9327 CA GLY X 598 146.880 100.090 130.970 1.00 0.00 seg_ C +ATOM 9334 CA GLU X 599 150.270 101.640 131.840 1.00 0.00 seg_ C +ATOM 9349 CA GLY X 600 148.940 103.640 134.770 1.00 0.00 seg_ C +ATOM 9356 CA GLY X 601 150.110 102.850 138.330 1.00 0.00 seg_ C +ATOM 9363 CA ASP X 602 148.330 101.240 141.310 1.00 0.00 seg_ C +ATOM 9375 CA GLU X 603 146.150 104.320 142.510 1.00 0.00 seg_ C +ATOM 9390 CA THR X 604 144.690 104.550 138.830 1.00 0.00 seg_ C +ATOM 9404 CA LYS X 605 143.330 100.960 138.980 1.00 0.00 seg_ C +ATOM 9426 CA ASP X 606 140.380 101.880 141.250 1.00 0.00 seg_ C +ATOM 9438 CA ILE X 607 139.480 105.020 139.050 1.00 0.00 seg_ C +ATOM 9457 CA LEU X 608 136.160 104.560 137.070 1.00 0.00 seg_ C +ATOM 9476 CA LEU X 609 134.210 107.480 135.610 1.00 0.00 seg_ C +ATOM 9495 CA LEU X 610 130.450 107.720 135.120 1.00 0.00 seg_ C +ATOM 9514 CA ASP X 611 129.560 110.890 133.180 1.00 0.00 seg_ C +ATOM 9526 CA VAL X 612 126.210 112.090 131.950 1.00 0.00 seg_ C +ATOM 9542 CA ALA X 613 124.290 113.830 129.190 1.00 0.00 seg_ C +ATOM 9554 CA PRO X 614 124.440 117.660 129.220 1.00 0.00 seg_ C +ATOM 9566 CA LEU X 615 121.610 118.120 126.720 1.00 0.00 seg_ C +ATOM 9585 CA THR X 616 118.320 116.420 126.050 1.00 0.00 seg_ C +ATOM 9599 CA LEU X 617 118.000 114.430 122.800 1.00 0.00 seg_ C +ATOM 9618 CA GLY X 618 114.690 113.670 120.940 1.00 0.00 seg_ C +ATOM 9625 CA ILE X 619 112.700 113.610 117.700 1.00 0.00 seg_ C +ATOM 9644 CA GLU X 620 110.160 116.210 116.610 1.00 0.00 seg_ C +ATOM 9659 CA THR X 621 106.630 114.780 116.760 1.00 0.00 seg_ C +ATOM 9673 CA VAL X 622 103.710 116.080 114.670 1.00 0.00 seg_ C +ATOM 9689 CA GLY X 623 102.350 119.150 116.510 1.00 0.00 seg_ C +ATOM 9696 CA GLY X 624 105.670 120.900 117.460 1.00 0.00 seg_ C +ATOM 9703 CA VAL X 625 106.760 119.110 120.750 1.00 0.00 seg_ C +ATOM 9719 CA MET X 626 110.000 117.310 121.190 1.00 0.00 seg_ C +ATOM 9736 CA THR X 627 109.810 113.720 122.620 1.00 0.00 seg_ C +ATOM 9750 CA LYS X 628 112.480 113.820 125.350 1.00 0.00 seg_ C +ATOM 9772 CA LEU X 629 113.990 110.380 124.500 1.00 0.00 seg_ C +ATOM 9791 CA ILE X 630 117.280 110.890 126.370 1.00 0.00 seg_ C +ATOM 9812 CA PRO X 631 117.140 113.420 129.310 1.00 0.00 seg_ C +ATOM 9824 CA ARG X 632 119.880 115.660 130.580 1.00 0.00 seg_ C +ATOM 9848 CA ASN X 633 122.040 113.990 133.240 1.00 0.00 seg_ C +ATOM 9862 CA THR X 634 121.580 110.390 131.860 1.00 0.00 seg_ C +ATOM 9876 CA VAL X 635 124.810 108.080 132.250 1.00 0.00 seg_ C +ATOM 9892 CA ILE X 636 126.470 107.690 128.900 1.00 0.00 seg_ C +ATOM 9913 CA PRO X 637 126.370 103.870 127.920 1.00 0.00 seg_ C +ATOM 9925 CA THR X 638 122.570 103.710 127.120 1.00 0.00 seg_ C +ATOM 9939 CA LYS X 639 120.580 102.760 124.070 1.00 0.00 seg_ C +ATOM 9961 CA LYS X 640 116.890 103.710 123.670 1.00 0.00 seg_ C +ATOM 9983 CA SER X 641 114.910 101.610 121.310 1.00 0.00 seg_ C +ATOM 9994 CA GLN X 642 111.560 103.310 120.550 1.00 0.00 seg_ C +ATOM 10011 CA VAL X 643 108.680 102.280 118.240 1.00 0.00 seg_ C +ATOM 10027 CA PHE X 644 106.900 105.130 116.530 1.00 0.00 seg_ C +ATOM 10047 CA THR X 645 103.910 104.450 114.260 1.00 0.00 seg_ C +ATOM 10061 CA THR X 646 102.650 106.450 111.130 1.00 0.00 seg_ C +ATOM 10075 CA TYR X 647 100.690 109.700 111.510 1.00 0.00 seg_ C +ATOM 10096 CA GLN X 648 98.820 109.260 108.260 1.00 0.00 seg_ C +ATOM 10113 CA ASP X 649 97.010 106.380 106.370 1.00 0.00 seg_ C +ATOM 10125 CA GLN X 650 99.070 104.790 103.550 1.00 0.00 seg_ C +ATOM 10142 CA GLN X 651 102.200 106.770 104.610 1.00 0.00 seg_ C +ATOM 10159 CA THR X 652 105.140 105.100 102.800 1.00 0.00 seg_ C +ATOM 10173 CA THR X 653 107.650 107.840 103.730 1.00 0.00 seg_ C +ATOM 10187 CA VAL X 654 108.420 109.100 107.330 1.00 0.00 seg_ C +ATOM 10203 CA SER X 655 110.840 112.130 107.800 1.00 0.00 seg_ C +ATOM 10214 CA ILE X 656 112.600 111.570 111.170 1.00 0.00 seg_ C +ATOM 10233 CA GLN X 657 114.100 114.830 112.480 1.00 0.00 seg_ C +ATOM 10250 CA VAL X 658 116.520 114.680 115.470 1.00 0.00 seg_ C +ATOM 10266 CA PHE X 659 116.640 117.530 117.980 1.00 0.00 seg_ C +ATOM 10286 CA GLU X 660 118.840 118.590 120.960 1.00 0.00 seg_ C +ATOM 10301 CA GLY X 661 117.830 120.970 123.960 1.00 0.00 seg_ C +ATOM 10308 CA GLU X 662 116.360 121.630 127.450 1.00 0.00 seg_ C +ATOM 10323 CA ARG X 663 112.790 122.810 126.330 1.00 0.00 seg_ C +ATOM 10347 CA SER X 664 110.090 120.480 125.060 1.00 0.00 seg_ C +ATOM 10358 CA MET X 665 109.020 123.010 122.400 1.00 0.00 seg_ C +ATOM 10375 CA THR X 666 110.760 122.030 119.170 1.00 0.00 seg_ C +ATOM 10389 CA LYS X 667 111.290 125.640 118.060 1.00 0.00 seg_ C +ATOM 10411 CA ASP X 668 113.150 126.040 121.340 1.00 0.00 seg_ C +ATOM 10423 CA CYS X 669 115.440 123.030 120.300 1.00 0.00 seg_ C +ATOM 10434 CA ARG X 670 118.250 122.600 117.750 1.00 0.00 seg_ C +ATOM 10458 CA LEU X 671 118.170 120.410 114.730 1.00 0.00 seg_ C +ATOM 10477 CA LEU X 672 120.870 117.830 114.650 1.00 0.00 seg_ C +ATOM 10496 CA GLY X 673 119.900 116.600 111.230 1.00 0.00 seg_ C +ATOM 10503 CA LYS X 674 116.910 114.910 109.620 1.00 0.00 seg_ C +ATOM 10525 CA PHE X 675 116.460 111.780 107.420 1.00 0.00 seg_ C +ATOM 10545 CA ASP X 676 113.490 110.480 105.330 1.00 0.00 seg_ C +ATOM 10557 CA LEU X 677 112.860 106.780 105.960 1.00 0.00 seg_ C +ATOM 10576 CA ASN X 678 111.450 105.420 102.680 1.00 0.00 seg_ C +ATOM 10590 CA GLY X 679 110.110 101.880 102.110 1.00 0.00 seg_ C +ATOM 10597 CA ILE X 680 107.280 101.750 104.710 1.00 0.00 seg_ C +ATOM 10616 CA ALA X 681 104.020 99.560 104.230 1.00 0.00 seg_ C +ATOM 10628 CA PRO X 682 100.900 101.380 102.930 1.00 0.00 seg_ C +ATOM 10640 CA ALA X 683 98.530 100.490 105.870 1.00 0.00 seg_ C +ATOM 10652 CA PRO X 684 96.270 102.650 108.140 1.00 0.00 seg_ C +ATOM 10664 CA ARG X 685 97.730 105.210 110.630 1.00 0.00 seg_ C +ATOM 10688 CA GLY X 686 98.950 103.340 113.770 1.00 0.00 seg_ C +ATOM 10695 CA THR X 687 99.610 100.130 111.880 1.00 0.00 seg_ C +ATOM 10711 CA PRO X 688 103.240 100.240 110.620 1.00 0.00 seg_ C +ATOM 10723 CA GLN X 689 105.860 99.800 113.370 1.00 0.00 seg_ C +ATOM 10740 CA ILE X 690 109.010 101.960 112.790 1.00 0.00 seg_ C +ATOM 10759 CA GLU X 691 111.690 101.030 115.350 1.00 0.00 seg_ C +ATOM 10774 CA VAL X 692 114.180 103.870 115.780 1.00 0.00 seg_ C +ATOM 10790 CA THR X 693 117.090 103.260 118.270 1.00 0.00 seg_ C +ATOM 10804 CA PHE X 694 119.120 106.170 119.780 1.00 0.00 seg_ C +ATOM 10824 CA GLU X 695 122.390 104.880 121.100 1.00 0.00 seg_ C +ATOM 10839 CA VAL X 696 124.990 106.920 123.230 1.00 0.00 seg_ C +ATOM 10855 CA ASP X 697 128.780 106.100 123.300 1.00 0.00 seg_ C +ATOM 10867 CA ALA X 698 131.350 106.750 126.220 1.00 0.00 seg_ C +ATOM 10877 CA ASN X 699 132.040 110.290 125.050 1.00 0.00 seg_ C +ATOM 10891 CA GLY X 700 128.320 111.510 124.880 1.00 0.00 seg_ C +ATOM 10898 CA ILE X 701 127.960 111.170 121.130 1.00 0.00 seg_ C +ATOM 10917 CA LEU X 702 124.530 110.170 119.640 1.00 0.00 seg_ C +ATOM 10936 CA ASN X 703 124.200 107.410 116.920 1.00 0.00 seg_ C +ATOM 10950 CA VAL X 704 120.840 106.450 115.350 1.00 0.00 seg_ C +ATOM 10966 CA LYS X 705 119.640 103.080 113.970 1.00 0.00 seg_ C +ATOM 10988 CA ALA X 706 116.300 102.950 111.930 1.00 0.00 seg_ C +ATOM 10998 CA GLU X 707 114.910 99.530 111.110 1.00 0.00 seg_ C +ATOM 11013 CA ASP X 708 111.930 98.500 109.220 1.00 0.00 seg_ C +ATOM 11025 CA LYS X 709 109.860 95.530 110.720 1.00 0.00 seg_ C +ATOM 11047 CA GLY X 710 108.200 94.970 107.290 1.00 0.00 seg_ C +ATOM 11054 CA THR X 711 110.800 94.240 104.710 1.00 0.00 seg_ C +ATOM 11068 CA GLY X 712 113.490 93.540 107.400 1.00 0.00 seg_ C +ATOM 11075 CA LYS X 713 115.760 96.430 106.280 1.00 0.00 seg_ C +ATOM 11097 CA SER X 714 118.140 98.340 108.550 1.00 0.00 seg_ C +ATOM 11108 CA GLU X 715 119.110 101.870 107.460 1.00 0.00 seg_ C +ATOM 11123 CA LYS X 716 122.050 102.860 109.600 1.00 0.00 seg_ C +ATOM 11145 CA ILE X 717 122.530 106.520 109.880 1.00 0.00 seg_ C +ATOM 11164 CA THR X 718 125.660 107.880 111.730 1.00 0.00 seg_ C +ATOM 11178 CA ILE X 719 124.650 111.200 113.180 1.00 0.00 seg_ C +ATOM 11197 CA THR X 720 127.120 113.590 111.600 1.00 0.00 seg_ C +ATOM 11211 CA ASN X 721 126.140 116.710 109.770 1.00 0.00 seg_ C +ATOM 11225 CA GLU X 722 126.800 116.890 106.020 1.00 0.00 seg_ C +ATOM 11240 CA LYS X 723 127.140 120.720 106.270 1.00 0.00 seg_ C +ATOM 11262 CA GLY X 724 129.200 120.600 109.530 1.00 0.00 seg_ C +ATOM 11269 CA ARG X 725 131.770 117.820 109.680 1.00 0.00 seg_ C +ATOM 11293 CA LEU X 726 134.800 117.360 107.370 1.00 0.00 seg_ C +ATOM 11312 CA SER X 727 134.680 114.320 104.840 1.00 0.00 seg_ C +ATOM 11323 CA GLN X 728 137.300 111.430 104.990 1.00 0.00 seg_ C +ATOM 11340 CA GLU X 729 139.170 112.770 101.900 1.00 0.00 seg_ C +ATOM 11355 CA GLU X 730 139.170 116.340 103.450 1.00 0.00 seg_ C +ATOM 11370 CA ILE X 731 140.670 114.930 106.600 1.00 0.00 seg_ C +ATOM 11389 CA ASP X 732 143.300 112.820 104.740 1.00 0.00 seg_ C +ATOM 11401 CA ARG X 733 144.410 115.910 102.640 1.00 0.00 seg_ C +ATOM 11425 CA MET X 734 144.450 117.970 105.840 1.00 0.00 seg_ C +ATOM 11442 CA VAL X 735 146.580 115.360 107.620 1.00 0.00 seg_ C +ATOM 11458 CA ARG X 736 149.210 115.620 104.870 1.00 0.00 seg_ C +ATOM 11482 CA GLU X 737 148.940 119.470 104.970 1.00 0.00 seg_ C +ATOM 11497 CA ALA X 738 149.850 119.220 108.660 1.00 0.00 seg_ C +ATOM 11507 CA GLU X 739 152.870 117.060 107.670 1.00 0.00 seg_ C +ATOM 11522 CA GLU X 740 154.080 119.810 105.450 1.00 0.00 seg_ C +ATOM 11537 CA PHE X 741 153.560 122.550 108.110 1.00 0.00 seg_ C +ATOM 11557 CA ALA X 742 155.490 120.430 110.610 1.00 0.00 seg_ C +ATOM 11567 CA GLU X 743 158.350 120.090 108.080 1.00 0.00 seg_ C +ATOM 11582 CA GLU X 744 158.300 123.930 107.790 1.00 0.00 seg_ C +ATOM 11597 CA ASP X 745 158.200 124.180 111.650 1.00 0.00 seg_ C +ATOM 11609 CA LYS X 746 161.200 121.800 112.080 1.00 0.00 seg_ C +ATOM 11631 CA LYS X 747 163.220 123.700 109.420 1.00 0.00 seg_ C +ATOM 11653 CA VAL X 748 163.160 127.070 111.080 1.00 0.00 seg_ C +ATOM 11669 CA LYS X 749 163.870 125.330 114.420 1.00 0.00 seg_ C +ATOM 11691 CA GLU X 750 167.120 124.190 113.060 1.00 0.00 seg_ C +ATOM 11706 CA ARG X 751 167.860 127.670 111.890 1.00 0.00 seg_ C +ATOM 11730 CA ILE X 752 167.400 128.890 115.500 1.00 0.00 seg_ C +ATOM 11749 CA ASP X 753 169.840 126.200 116.810 1.00 0.00 seg_ C +ATOM 11761 CA ALA X 754 172.320 127.170 114.040 1.00 0.00 seg_ C +ATOM 11771 CA ARG X 755 172.110 130.820 114.980 1.00 0.00 seg_ C +ATOM 11795 CA ASN X 756 172.290 130.080 118.700 1.00 0.00 seg_ C +ATOM 11809 CA GLN X 757 175.410 127.770 118.250 1.00 0.00 seg_ C +ATOM 11826 CA LEU X 758 177.220 130.360 116.130 1.00 0.00 seg_ C +ATOM 11845 CA GLU X 759 176.440 133.280 118.510 1.00 0.00 seg_ C +ATOM 11860 CA THR X 760 177.030 131.020 121.580 1.00 0.00 seg_ C +ATOM 11874 CA TYR X 761 180.480 129.820 120.170 1.00 0.00 seg_ C +ATOM 11895 CA VAL X 762 181.580 133.470 119.550 1.00 0.00 seg_ C +ATOM 11911 CA TYR X 763 180.690 134.820 123.050 1.00 0.00 seg_ C +ATOM 11932 CA ASN X 764 181.950 131.760 124.960 1.00 0.00 seg_ C +ATOM 11946 CA MET X 765 185.240 132.080 123.080 1.00 0.00 seg_ C +ATOM 11963 CA LYS X 766 185.360 135.950 123.230 1.00 0.00 seg_ C +ATOM 11985 CA ASN X 767 185.060 135.780 127.020 1.00 0.00 seg_ C +ATOM 11999 CA THR X 768 187.920 133.240 127.300 1.00 0.00 seg_ C +ATOM 12013 CA VAL X 769 190.190 135.420 125.060 1.00 0.00 seg_ C +ATOM 12029 CA GLY X 770 189.500 138.360 127.350 1.00 0.00 seg_ C +ATOM 12036 CA ASP X 771 189.500 136.560 130.710 1.00 0.00 seg_ C +ATOM 12048 CA LYS X 772 192.960 136.760 132.480 1.00 0.00 seg_ C +ATOM 12070 CA ASP X 773 193.560 133.240 133.900 1.00 0.00 seg_ C +ATOM 12082 CA LYS X 774 192.210 131.680 130.810 1.00 0.00 seg_ C +ATOM 12104 CA LEU X 775 193.880 132.710 127.570 1.00 0.00 seg_ C +ATOM 12123 CA ALA X 776 194.400 136.520 127.810 1.00 0.00 seg_ C +ATOM 12133 CA ASP X 777 198.020 136.450 128.970 1.00 0.00 seg_ C +ATOM 12145 CA LYS X 778 198.610 133.160 127.050 1.00 0.00 seg_ C +ATOM 12167 CA LEU X 779 197.900 134.450 123.500 1.00 0.00 seg_ C +ATOM 12186 CA GLU X 780 200.480 136.350 121.390 1.00 0.00 seg_ C +ATOM 12201 CA ALA X 781 199.230 139.720 120.060 1.00 0.00 seg_ C +ATOM 12211 CA GLU X 782 198.910 138.660 116.450 1.00 0.00 seg_ C +ATOM 12226 CA GLU X 783 197.160 135.430 117.440 1.00 0.00 seg_ C +ATOM 12241 CA LYS X 784 194.820 137.490 119.550 1.00 0.00 seg_ C +ATOM 12263 CA GLU X 785 194.310 140.290 116.900 1.00 0.00 seg_ C +ATOM 12278 CA LYS X 786 193.380 137.480 114.260 1.00 0.00 seg_ C +ATOM 12300 CA VAL X 787 190.990 135.960 116.840 1.00 0.00 seg_ C +ATOM 12316 CA GLU X 788 189.380 139.280 117.630 1.00 0.00 seg_ C +ATOM 12331 CA GLU X 789 188.830 139.830 113.890 1.00 0.00 seg_ C +ATOM 12346 CA ALA X 790 187.430 136.220 113.510 1.00 0.00 seg_ C +ATOM 12356 CA LEU X 791 184.860 136.940 116.260 1.00 0.00 seg_ C +ATOM 12375 CA LYS X 792 184.020 140.620 115.190 1.00 0.00 seg_ C +ATOM 12397 CA GLU X 793 183.470 139.620 111.550 1.00 0.00 seg_ C +ATOM 12412 CA ALA X 794 181.240 136.630 112.530 1.00 0.00 seg_ C +ATOM 12422 CA LEU X 795 179.010 138.920 114.710 1.00 0.00 seg_ C +ATOM 12441 CA GLU X 796 178.950 141.550 111.970 1.00 0.00 seg_ C +ATOM 12456 CA TRP X 797 178.050 138.740 109.520 1.00 0.00 seg_ C +ATOM 12480 CA LEU X 798 175.330 137.610 111.990 1.00 0.00 seg_ C +ATOM 12499 CA ASP X 799 173.570 141.010 112.180 1.00 0.00 seg_ C +ATOM 12511 CA ASP X 800 173.150 141.440 108.360 1.00 0.00 seg_ C +ATOM 12523 CA ASN X 801 172.460 137.690 107.780 1.00 0.00 seg_ C +ATOM 12537 CA GLN X 802 169.440 137.280 110.170 1.00 0.00 seg_ C +ATOM 12554 CA SER X 803 167.370 135.620 107.460 1.00 0.00 seg_ C +ATOM 12565 CA ALA X 804 170.010 133.070 106.640 1.00 0.00 seg_ C +ATOM 12575 CA GLU X 805 169.270 129.340 106.860 1.00 0.00 seg_ C +ATOM 12590 CA LYS X 806 170.950 126.350 108.520 1.00 0.00 seg_ C +ATOM 12612 CA GLU X 807 173.900 125.780 106.200 1.00 0.00 seg_ C +ATOM 12627 CA ASP X 808 175.080 129.470 106.250 1.00 0.00 seg_ C +ATOM 12639 CA TYR X 809 175.620 129.540 110.070 1.00 0.00 seg_ C +ATOM 12660 CA GLU X 810 176.850 125.860 110.430 1.00 0.00 seg_ C +ATOM 12675 CA GLU X 811 179.320 126.920 107.480 1.00 0.00 seg_ C +ATOM 12690 CA LYS X 812 180.330 130.260 109.220 1.00 0.00 seg_ C +ATOM 12712 CA LEU X 813 180.780 128.390 112.520 1.00 0.00 seg_ C +ATOM 12731 CA LYS X 814 183.090 125.860 110.790 1.00 0.00 seg_ C +ATOM 12753 CA GLU X 815 185.270 128.800 109.430 1.00 0.00 seg_ C +ATOM 12768 CA VAL X 816 185.390 130.500 112.960 1.00 0.00 seg_ C +ATOM 12784 CA GLU X 817 186.400 127.100 114.460 1.00 0.00 seg_ C +ATOM 12799 CA ALA X 818 189.090 126.670 111.880 1.00 0.00 seg_ C +ATOM 12809 CA VAL X 819 190.920 129.780 113.360 1.00 0.00 seg_ C +ATOM 12825 CA CYS X 820 189.820 129.760 116.940 1.00 0.00 seg_ C +ATOM 12836 CA ASN X 821 190.270 126.060 117.960 1.00 0.00 seg_ C +ATOM 12852 CA PRO X 822 193.890 125.530 116.670 1.00 0.00 seg_ C +ATOM 12864 CA ILE X 823 195.190 128.870 118.200 1.00 0.00 seg_ C +ATOM 12883 CA VAL X 824 193.670 127.760 121.660 1.00 0.00 seg_ C +ATOM 12899 CA SER X 825 194.960 124.080 121.330 1.00 0.00 seg_ C +ATOM 12910 CA ALA X 826 198.450 125.300 120.510 1.00 0.00 seg_ C +ATOM 12920 CA VAL X 827 198.310 128.080 123.270 1.00 0.00 seg_ C +ATOM 12936 CA TYR X 828 197.110 125.660 125.940 1.00 0.00 seg_ C +ATOM 12957 CA GLN X 829 199.970 123.220 125.040 1.00 0.00 seg_ C +ATOM 12974 CA ARG X 830 202.410 126.180 125.160 1.00 0.00 seg_ C +ATOM 12998 CA SER X 831 201.650 126.440 129.000 1.00 0.00 seg_ C +ATOM 13009 CA GLY X 832 202.060 122.630 129.380 1.00 0.00 seg_ C +ATOM 13016 CA GLY X 833 198.210 121.910 129.140 1.00 0.00 seg_ C +ATOM 13023 CA ALA X 834 197.610 118.320 128.280 1.00 0.00 seg_ C +ATOM 13035 CA PRO X 835 194.790 118.430 125.530 1.00 0.00 seg_ C +ATOM 13047 CA GLY X 836 191.640 116.870 126.840 1.00 0.00 seg_ C +ATOM 13054 CA GLY X 837 190.090 113.870 124.840 1.00 0.00 seg_ C +ATOM 13061 CA ASP X 838 186.570 115.060 125.890 1.00 0.00 seg_ C +ATOM 13073 CA ALA X 839 184.320 115.270 122.810 1.00 0.00 seg_ C +ATOM 13083 CA ASP X 840 181.100 114.000 124.550 1.00 0.00 seg_ C +ATOM 13095 CA GLY X 841 178.250 116.540 123.840 1.00 0.00 seg_ C +ATOM 13102 CA GLY X 842 176.250 114.620 126.590 1.00 0.00 seg_ C +ATOM 13109 CA VAL X 843 173.800 116.800 128.370 1.00 0.00 seg_ C +ATOM 13125 CA ASP X 844 173.470 116.670 132.160 1.00 0.00 seg_ C +ATOM 13137 CA ASP X 845 170.460 114.630 133.430 1.00 0.00 seg_ C +ATOM 13149 CA ASP X 846 170.840 115.770 137.060 1.00 0.00 seg_ C +ATOM 13161 CA HSD X 847 168.390 118.590 137.720 1.00 0.00 seg_ C +ATOM 13178 CA ASP X 848 167.890 118.490 141.540 1.00 0.00 seg_ C +ATOM 13190 CA GLU X 849 166.820 121.550 143.610 1.00 0.00 seg_ C +ATOM 13205 CA LEU X 850 166.600 124.200 140.820 1.00 0.00 seg_ C +END diff --git a/tests/test_discovery.py b/tests/test_discovery.py new file mode 100644 index 0000000..83e63ef --- /dev/null +++ b/tests/test_discovery.py @@ -0,0 +1,93 @@ +"""Discovery on miniature copies of two real CHARMM-GUI/GROMACS folders (sizes scaled 1e-6).""" + +from __future__ import annotations + +from pathlib import Path + +import pytest + +from moldynx.io.discovery import classify_stage, discover_files + + +def test_stage_classification(): + assert classify_stage("step4.0_minimization.tpr") == "em" + assert classify_stage("step4.1_equilibration.log") == "nvt" + assert classify_stage("step4.2_equilibration-003.xtc") == "npt" + assert classify_stage("step5_production_ext.tpr") == "production" + assert classify_stage("md.tpr") == "production" + assert classify_stage("topol.top") == "setup" and classify_stage("step3_input.gro") == "setup" + assert classify_stage("mdout.mdp") is None # grompp record, not a stage input + assert classify_stage("filenames.txt") is None + + +def test_a8_production_chosen_by_stage_not_size(a8_tree): + root, expected = a8_tree + fs = discover_files(root, deep=True) # fake bytes -> falls back, labelled + rel = lambda p: p.relative_to(root).as_posix() if p else None # noqa: E731 + assert rel(fs.topology) == expected["canonical_topology"] # NOT step4.2_equilibration.tpr + assert rel(fs.trajectory) == expected["canonical_trajectory"] + assert rel(fs.energy) == expected["canonical_energy"] + assert rel(fs.log) == expected["canonical_log"] + assert rel(fs.gmx_top) == expected["gmx_top"] + assert rel(fs.toppar) == expected["toppar_dir"] + assert rel(fs.structure) == "Production/step5_production.gro" # not the step33c.pdb dump + assert len(fs.crash_dumps) == 8 + assert "UNVERIFIED" in fs.evidence["trajectory_choice"] # honest about fake files + assert fs.evidence["verified"] is False + + +def test_a8_ignores_earlier_analysis_outputs(a8_tree): + root, _ = a8_tree + fs = discover_files(root, deep=False) + ignored = {Path(p).name for p, _ in fs.ignored} + assert {"analysis", "analysis_nopbc", "mmpbsa_BiP2"} <= ignored + assert all("analysis" not in str(p) for p in fs.all_trajectories) + assert any("backup" in why for _, why in fs.ignored) # #step5_production.gro.1# + + +def test_a8_stages_and_missing_inputs(a8_tree): + root, _ = a8_tree + fs = discover_files(root, deep=False) + for stage in ("em", "nvt", "npt"): + assert fs.stage_file(stage, "log") is not None + assert fs.stage_file(stage, "edr") is not None + assert fs.stage_file(stage, "tpr") is not None + assert fs.mdp == {} # the stage MDPs are not in the archive + missing = fs.evidence["job_script_inputs_not_found"] + assert "step4.0_minimization.mdp" in missing and "step3_input.gro" in missing + assert "step5_production_extended.tpr" in missing # referenced, never copied + keys = fs.available_keys() + assert {"em", "nvt", "npt", "stage_tprs", "gmx_top", "toppar", "production_log"} <= keys + assert "mdp" not in keys + + +def test_q9_archive(q9_tree): + root, rows = q9_tree + fs = discover_files(root, deep=True) + rel = lambda p: p.relative_to(root).as_posix() if p else None # noqa: E731 + assert rel(fs.trajectory) == "complex_Q946v6 output/step5_production-001.xtc" + assert rel(fs.topology) == "complex_Q946v6 output/step5_production_ext.tpr" + assert any("production run inputs" in w for w in fs.warnings) # two TPRs, choice explained + assert rel(fs.gmx_top) == "complex_Q946v6 input/topol.top" + assert set(fs.mdp) == {"em", "nvt", "npt", "production"} + ignored = {Path(p).name for p, _ in fs.ignored} + assert {"complex_Q946v6_analysis", "diagnostics_1ns"} <= ignored # nojump.xtc, step5_fixed.xtc + assert len(fs.crash_dumps) == 48 + assert any(p.name == "gromacs_complex_Q946v6.zip" for p in fs.setup_package) + assert {p.name for p in fs.unclassified} >= {"test_init.tpr", "visual_center_test.gro", + "index_split.ndx"} + + +def test_ambiguous_equal_trajectories_are_flagged(tmp_path): + """Two complete production trajectories covering the same span must not be chosen silently.""" + import MDAnalysis as mda + import numpy as np + for name in ("md_run1.xtc", "md_run2.xtc"): + u = mda.Universe.empty(20, trajectory=True) + with mda.Writer(str(tmp_path / name), 20) as w: + for i in range(3): + u.atoms.positions = np.random.default_rng(i).uniform(0, 9, (20, 3)) + u.trajectory.ts.time = i * 10.0 + w.write(u.atoms) + fs = discover_files(tmp_path, deep=True) + assert fs.ambiguities and "same span" in fs.ambiguities[0] diff --git a/tests/test_gromacs_io.py b/tests/test_gromacs_io.py new file mode 100644 index 0000000..5628837 --- /dev/null +++ b/tests/test_gromacs_io.py @@ -0,0 +1,169 @@ +"""GROMACS evidence readers, checked against real (trimmed) logs from two production datasets.""" + +from __future__ import annotations + +from pathlib import Path + +import numpy as np +import pytest + +from moldynx.io.gromacs import parse_log, parse_mdp, scan_xtc, tpr_header, windows_to_wsl + +FIX = Path(__file__).parent / "fixtures" +LOGS = FIX / "gromacs_logs" + + +# --------------------------------------------------------------------------- # +# logs +# --------------------------------------------------------------------------- # +def test_em_stopped_on_machine_precision(): + log = parse_log(LOGS / "A8HNE1_step4.0_minimization_machine_precision.log") + assert log.trimmed + assert log.gromacs_version == "2023.3" + assert log.is_minimization + assert log.mdp["integrator"] == "steep" + assert log.value("emtol") == 100.0 and log.value("nsteps") == 50000.0 + em = log.minimization + assert em.algorithm == "Steepest Descents" + assert em.outcome == "converged to machine precision" + assert em.reached_emtol is False # tolerance NOT reached + assert em.steps == 3056 + assert em.fmax == pytest.approx(7232.5469, rel=1e-6) + assert em.fmax_atom == 6116 + assert em.potential == pytest.approx(-2.6774416e7) + assert em.fnorm == pytest.approx(11.151116, rel=1e-6) + assert log.counts["wrote_pdb"] == 4 + assert "-ntmpi 1 -ntomp 8" in log.commands[0] + + +def test_em_converged(): + log = parse_log(LOGS / "Q946V6_step4.0_minimization_converged.log") + em = log.minimization + assert em.outcome == "converged to Fmax < 1000" and em.reached_emtol is True + assert em.steps == 2027 + assert em.fmax == pytest.approx(714.97339, rel=1e-6) and em.fmax_atom == 6883 + assert log.value("emtol") == 1000.0 and log.value("nsteps") == 5000.0 + assert log.counts["wrote_pdb"] == 17 + + +def test_nvt_stage(): + log = parse_log(LOGS / "A8HNE1_step4.1_equilibration_NVT.log") + assert not log.is_minimization and log.minimization is None + assert log.mdp["tcoupl"] == "V-rescale" and log.mdp["pcoupl"] == "No" + assert log.value("dt") == 0.001 and log.value("nsteps") == 125000.0 + assert log.mdp["continuation"] == "false" + assert log.ref_t == [303.15, 303.15] + assert log.grpopts["tau-t"] == ["1", "1"] + assert log.grpopts["nrdf"] == ["33024", "3.11729e+06"] + assert log.n_sessions == 1 + assert log.started == ["2026-06-04T04:11:36"] and log.finished == ["2026-06-04T04:44:50"] + assert log.performance_ns_day == [5.418] + assert log.last_statistics_steps == 125001 + assert log.simulated_ps == pytest.approx(125.0) + assert log.counts["lincs_warnings"] == 0 and log.counts["fatal_errors"] == 0 + + +@pytest.mark.parametrize("name, ref_t", [ + ("A8HNE1_step4.2_equilibration_NPT_303K.log", 303.15), + ("Q946V6_step4.2_equilibration_NPT_310K.log", 310.0), +]) +def test_npt_stage_temperatures_differ(name, ref_t): + log = parse_log(LOGS / name) + assert log.mdp["pcoupl"] == "Berendsen" and log.mdp["pcoupltype"] == "Isotropic" + assert log.value("tau-p") == 1.0 + assert float(log.mdp["ref-p_xx"]) == 1.0 + assert float(log.mdp["compressibility_xx"]) == pytest.approx(4.5e-5) + assert log.mdp["refcoord-scaling"] == "COM" and log.mdp["continuation"] == "true" + assert log.ref_t == [ref_t, ref_t] + assert log.simulated_ps == pytest.approx(2000.0) + + +@pytest.mark.parametrize("name, sessions", [ + ("A8HNE1_step5_production_11_sessions.log", 11), + ("Q946V6_step5_production_12_sessions.log", 12), +]) +def test_production_sessions_and_extension(name, sessions): + log = parse_log(LOGS / name) + assert log.n_sessions == sessions + assert log.value("dt") == 0.002 + assert log.value("nsteps") == 500000.0 # the 1-ns TPR that was later extended + assert log.mdp["pcoupl"] == "C-rescale" and log.value("tau-p") == 5.0 + assert log.last_statistics_steps == 50000001 + assert log.simulated_ps == pytest.approx(100000.0) # 100 ns proven from the log + assert log.mdp_last.get("nsteps") == "500000" # appended sessions do not reprint params + + +# --------------------------------------------------------------------------- # +# mdp +# --------------------------------------------------------------------------- # +def test_parse_mdp(tmp_path): + p = tmp_path / "x.mdp" + p.write_text("; comment\ndefine = -DPOSRES ; restraints\nnsteps=125000\ngen_vel = yes\n") + mdp = parse_mdp(p) + assert mdp == {"define": "-DPOSRES", "nsteps": "125000", "gen-vel": "yes"} + + +# --------------------------------------------------------------------------- # +# xtc +# --------------------------------------------------------------------------- # +def _write_xtc(path: Path, n_atoms: int, n_frames: int, dt: float = 5.0): + import MDAnalysis as mda + u = mda.Universe.empty(n_atoms, trajectory=True) + u.dimensions = [30, 30, 30, 90, 90, 90] + rng = np.random.default_rng(0) + with mda.Writer(str(path), n_atoms) as w: + for i in range(n_frames): + u.atoms.positions = rng.uniform(0, 30, (n_atoms, 3)) + u.trajectory.ts.time = i * dt + u.trajectory.ts.data["step"] = i * 5000 + w.write(u.atoms) + + +@pytest.mark.parametrize("n_atoms", [5, 250]) # uncompressed (<= 9) and compressed +def test_scan_xtc_matches_mdanalysis(tmp_path, n_atoms): + import MDAnalysis as mda + p = tmp_path / "t.xtc" + _write_xtc(p, n_atoms, 26) + info = scan_xtc(p) + assert info.readable and not info.truncated and info.error is None + assert info.natoms == n_atoms and info.n_frames == 26 + assert info.t_first_ps == 0.0 and info.t_last_ps == pytest.approx(125.0) + assert info.dt_ps == pytest.approx(5.0) and info.uniform_spacing + u = mda.Universe.empty(n_atoms, trajectory=False) + u.load_new(str(p)) + assert len(u.trajectory) == info.n_frames + + +def test_scan_xtc_does_not_write_cache_files(tmp_path): + p = tmp_path / "t.xtc" + _write_xtc(p, 100, 5) + before = sorted(x.name for x in tmp_path.iterdir()) + scan_xtc(p) + assert sorted(x.name for x in tmp_path.iterdir()) == before + + +def test_scan_xtc_truncated_and_fake(tmp_path): + p = tmp_path / "t.xtc" + _write_xtc(p, 100, 5) + data = p.read_bytes() + (tmp_path / "cut.xtc").write_bytes(data[: len(data) - 50]) + cut = scan_xtc(tmp_path / "cut.xtc") + assert cut.n_frames == 4 and cut.truncated + (tmp_path / "fake.xtc").write_bytes(b"") + fake = scan_xtc(tmp_path / "fake.xtc") + assert not fake.readable and fake.n_frames == 0 + + +# --------------------------------------------------------------------------- # +# tpr / paths +# --------------------------------------------------------------------------- # +def test_tpr_header_unreadable_is_reported_not_raised(tmp_path): + p = tmp_path / "fake.tpr" + p.write_bytes(b"\x00" * 16) + h = tpr_header(p) + assert not h.readable and h.error + + +def test_windows_to_wsl(): + assert windows_to_wsl(r"E:\a b\c.tpr") == "/mnt/e/a b/c.tpr" + assert windows_to_wsl("/already/posix") == "/already/posix" diff --git a/tests/test_intake.py b/tests/test_intake.py new file mode 100644 index 0000000..0d85d49 --- /dev/null +++ b/tests/test_intake.py @@ -0,0 +1,59 @@ +"""Intake report on a miniature real folder with real (trimmed) stage logs.""" + +from __future__ import annotations + +import json + +from moldynx.cli.main import main +from moldynx.io.intake import render_report, run_intake, write_intake + + +def test_intake_stages_from_real_logs(a8_tree): + root, _ = a8_tree + res = run_intake(root) + em = res.stages["em"]["log"]["minimization"] + assert em["reached_emtol"] is False and em["steps"] == 3056 + assert res.stages["npt"]["log"]["ref_t_K"] == [303.15, 303.15] + assert res.stages["production"]["log"]["sessions"] == 11 + pl = res.fileset.evidence["production_log"] + assert pl["simulated_ps"] == 100000.0 + assert "extended" in pl and "50,000,000 steps were run" in pl["extended"] + + +def test_intake_report_sections(a8_tree, tmp_path): + root, _ = a8_tree + res = run_intake(root) + text = render_report(res) + for heading in ("## Canonical production run", "## Stages", "## Capabilities", + "## Inputs referenced by job scripts but not in this folder", "## Ignored"): + assert heading in text + assert "requested tolerance not reached" in text + assert "Extended run" in text + assert "UNVERIFIED" in text # the miniature files have no real headers + js, md = write_intake(res, tmp_path / "out") + data = json.loads(js.read_text(encoding="utf-8")) + assert data["validation"]["ok"] is True + caps = {c["capability"]: c["status"] for c in data["capabilities"]} + assert caps["MDP-only settings"] == "unavailable" + assert caps["binding energy (MM-GBSA/PBSA)"] == "available" + + +def test_intake_never_writes_into_the_simulation_folder(a8_tree, tmp_path, monkeypatch): + root, _ = a8_tree + before = sorted(str(p) for p in root.rglob("*")) + monkeypatch.chdir(tmp_path) + rc = main(["intake", "--input", str(root)]) + assert rc == 0 + assert sorted(str(p) for p in root.rglob("*")) == before + assert (tmp_path / "moldynx_results" / root.name / "intake" / "INTAKE_REPORT.md").exists() + + +def test_temperature_change_between_stages_is_flagged(a8_tree): + """A later NPT log at 310 K (as in one of the reference datasets) must be surfaced.""" + root, _ = a8_tree + from conftest import LOGS + (root / "step4.2_equilibration.log").write_text( + (LOGS / "Q946V6_step4.2_equilibration_NPT_310K.log").read_text(encoding="utf-8"), + encoding="utf-8") + text = render_report(run_intake(root)) + assert "Temperature changes between stages" in text and "310 K" in text From 66951e5dd6b166a7d65038874fd34d2c0c49c585 Mon Sep 17 00:00:00 2001 From: Hossam Mahmoud Date: Thu, 24 Sep 2026 01:11:32 +0300 Subject: [PATCH 3/5] Track the curated test fixtures that *.log/*.edr ignore rules excluded Co-Authored-By: Claude Opus 5.5 --- .gitignore | 3 + .../edr/A8HNE1_step4.1_equilibration.edr | Bin 0 -> 71728 bytes tests/fixtures/gmx_mmpbsa/gb/gmx_MMPBSA.log | 432 +++++++++++ tests/fixtures/gmx_mmpbsa/pb/gmx_MMPBSA.log | 406 +++++++++++ ...step4.0_minimization_machine_precision.log | 414 +++++++++++ .../A8HNE1_step4.1_equilibration_NVT.log | 502 +++++++++++++ .../A8HNE1_step4.2_equilibration_NPT_303K.log | 502 +++++++++++++ .../A8HNE1_step5_production_11_sessions.log | 658 +++++++++++++++++ .../Q946V6_step4.0_minimization_converged.log | 464 ++++++++++++ .../Q946V6_step4.2_equilibration_NPT_310K.log | 500 +++++++++++++ .../Q946V6_step5_production_12_sessions.log | 676 ++++++++++++++++++ 11 files changed, 4557 insertions(+) create mode 100644 tests/fixtures/edr/A8HNE1_step4.1_equilibration.edr create mode 100644 tests/fixtures/gmx_mmpbsa/gb/gmx_MMPBSA.log create mode 100644 tests/fixtures/gmx_mmpbsa/pb/gmx_MMPBSA.log create mode 100644 tests/fixtures/gromacs_logs/A8HNE1_step4.0_minimization_machine_precision.log create mode 100644 tests/fixtures/gromacs_logs/A8HNE1_step4.1_equilibration_NVT.log create mode 100644 tests/fixtures/gromacs_logs/A8HNE1_step4.2_equilibration_NPT_303K.log create mode 100644 tests/fixtures/gromacs_logs/A8HNE1_step5_production_11_sessions.log create mode 100644 tests/fixtures/gromacs_logs/Q946V6_step4.0_minimization_converged.log create mode 100644 tests/fixtures/gromacs_logs/Q946V6_step4.2_equilibration_NPT_310K.log create mode 100644 tests/fixtures/gromacs_logs/Q946V6_step5_production_12_sessions.log diff --git a/.gitignore b/.gitignore index 4196460..d1c01b9 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,9 @@ step5_production.* step4_*.* toppar/ +# ...except the small, curated test fixtures (real trimmed logs, one small .edr) +!tests/fixtures/** + # --- OS cruft ------------------------------------------------------------- .DS_Store Thumbs.db diff --git a/tests/fixtures/edr/A8HNE1_step4.1_equilibration.edr b/tests/fixtures/edr/A8HNE1_step4.1_equilibration.edr new file mode 100644 index 0000000000000000000000000000000000000000..7e9200eb7e06c93c2da09c14469e983398643a31 GIT binary patch literal 71728 zcmb5$2Uycy-#C0^$p+a&5fK5wfeREF9XTgS+mz)1T*wj-S#CuIM3xI>6ciN~MFqu; zfYO#Uprwj}3W_)o#f^xF3*UJEp8LM^`9JsdYOkwp`prqmNk2U~EByFj`&~gnL4|&f zrJu^I*qBiIU3DpE;|GiEdUl#ZK+TXWT zXA?~C|7`jDIu#yg{G_Qr_xO8UgB`mvI(Av`zgPZxEJJx5D|3wKHveAv z>o)&dH^C|)EF?1SX9j*3Y>bs}*zy(s%HD75)xBd^gvG3gT>Q`J`E8vh zH!>z{MP!H-i1~lci`J~z6^od zij@grKl3?+`}0*nLCrfMZ29tkf=a=Q6Mn|%yu~bEkwE8e+47&?<X z`|~&c-yTCey@QEc?~i?>6a4Fk^iM*??0;_nxOYpS)$(Pq&(WWKbKXg^;PFkUkaZ9< zXL)k)2U)V`mv^Bh(+(lddo5*+o?_1O!<4LChW&i93&P$@7gmjME-*FYz>^VZQJ5O$ zWu=G~MV;eJ8?1!e7bwu5m%{D-B95CVQ5xTnR%bGysP6V1vpSQh%cNer&M^FU+S8v? z8U8JO(!dsLU^M(WTOfPDE?AP|nWUib^Z9FDJ$wFrWi#&@tQ+isxx4a7FK2=yPYwDild(pmBp2|K0w^zG( zrIfzGl_IKM%s{PI0?UkM=(7@x}an>qocE=fS1&lQr5d1LTfG3%%UZyx_V=l|qeK>@$JwAhy) zq|eQsI|mIqoan{5dIZO9U&1d-D!pSWaD3ijLo}#_jyDPExI5ldZts)t;>Jx|CV^(9 zNnTnbCt?KwkKvcFV(*x zhhtB$>R$CZN>Xgw(X`o@>GaW8PK>1EN4C|y`Z!27s!hcowydNMtO;k^uUW%6v{?eQ zqRZKV7NKDS8T`*Y6_$233p;w#0%=n4guYQtaP9MXBxlP~=pIx= zDHTnG!xBQ!&4!xj1=TT_+37R*!PNV>h}X&)+t}+}%wNWB>-Uz)C|%#9MPubjHA(2w zySMpW`@OJBn+_sx^&f%SLq}lVc|vxMdCE8JUW7a(zmLQCLHcyKMRL1*(_}@XF8Ga6 z+bf5!57TDeL%iY%ZDtWWK3;^3f9?i!CO zw>GcgC)a0U;&&3z{=SlU(mw+;9g{`J2l&Z#)|j{_8^0rX#Bcewio1oE1KL!R_}U-l zVHy%&@L;GK@#KdioqjxMGgIJe54^%OYB~5_lO+Bo<*nQ;K4ZuWnW3nQ>w7A8RjFj| zx&*LU7E7YKE5wPmEaV6OOkH8nLpt6EHdCWWR1YIh7r#PnZtbO_T9rLV<~ReBW6_dc zw-Rxp+X&=G-~~GUCQr+dYG86oS<>s|OrCl*7ah^2PAxeYip-jIn4_?N4Ai=NkiCBO z4}^E{6fn|?W5>_QM#k^I0d#{c{>Y5lf56ZSnw5WLW;nVE50SZ}RlPgl!$(u`-bg(x z(>Whib5Lt)O z@r;EitggiGwYGY(vG?2z_XFfH)A>MLoJ|EBED_&X;fLf*np}7E@(bp19b@ELgeTMZ zY>oKNnq^3iQ)AuHx^radz3B)#3I*($xP#_EzGoc zxd?9u&N5oBN*<~E2rj89QnS7kBLU@r!zk_o%`p$y88f8p>-aNZbD7Cbj@DpDtvd@w zM4JDR8NFZ4=obH#8LK8+?6vC+RC*&3KFyti4?Q#v+p+iys)`8FElVRXVQ~_2_xuCY zZoms}-{L~fwq6I$kpNeGl!c3OYB}aU9^ST${akYH zY8j~neXT?L^nk^)dv`iRIdu7}6wiSP%SkNCxMC2p2a z3Rx_A49=X$qWH#(#m;N*B8~dVk|3|G;!g)w0$s=R62Ltrb}rb8$hyRmAeVG=8M;?L>0+i&zt9XOTsho`U4SREnE& zA2A;9hHpKH1MZ_Bc6Lo6+edmCObqB|r}LUv6etB_zBm7o8N*-A7-amF85@NFOr-t| zmEA9aua0Kpn}S|oyRK%Ss&j(T>hTts@Zlunl^p@|##qDMZXe0n7A$y$JA_h7D}hEI z_0X_++UTXKrI=Y+HNLxK02lG6bByd4dR6Zo;9lOiLMD#S^*QdmN4|W#eX7TNmOFby z(`MGA_LU@U<_UYNn>q_@3*x$@Nj7{QmiwC(|t<9mcz?sO> zjRD7^j!1joP9~b-7g3MT9*53{N{Fl>o4~OHhIof=1YhG@J~wOGENSGp^4Gxwr8QD@&v)-iKa9!qmrj+I<>9=D#fgBBgA~vxmXlqLu|Tr`?vA z3_M`Qj~b8M+xCK$b@C`P_45Ou>EtXiRZt~!+BX6J_$!oqa0C)t9E-o|pAD`a3TN*Y zOl9s4eg~XARXX@b5<0S-U&}&BQu0j6R1GLk9{bTwFIrwJ&BoRT*Wmf z8{(n~JdQrc)N5$;I&S3}nXLArjgR&6HS)OpS~RYJg?Em&!HukUA^m{}kX*V2_vmeu zoiI-JuD=^9pHpPd32AZh5^~<~v`6d9cI^G)<9jMhKE*GDHWL7)<~(`81SR&4lyNM@ z7vq6bb}YH=)HK*(cCeqUeOW??YDz)d z^C)EaRS_}iL_c(xjo|HQD}VOrE8MKzky7uf3PLIAEamI+l&qCKBSe=C!My|xsdw2L zLTSeV%6Ee+e*bz9A6IMQW`5<6JF7Oq_*83Z`fy8+OFIk^$Kxtu;kH+dokpFJa}0w?200{p5}l$u?yuKYsO>?Au`q`l?AJ689U=bkWT(b5wFXh$v*G} z89NPQ!44j|Rcis*=<$)7a$pKFRNBQ^|7AC*vTbGOvujw9I-h~7(qs0HWusY&kM07e zRoDN>%6zhq@j=Xm2<-vq{9>A`}s$8F|#IJD!x=r8h)>MjJU`V$V+3q2r#4)GEnY z{9Z^B|8}V(H_P=RII}yAxb>tEcDr>@Zk2^Z|NcAVr*p;NOzt3Y>v9?FwmpNldp;u4 zi#oWO{SIVSYbUS}ZKlQzvGlaKoQyb#1gvRI$Cx#vuLDirbDl-=x1Q$2EW|;4nKg|% zLZ<9&fd_S`UFKZ*TpP8LMB-jAZ18O?wLDXvdbF|d2=t`moE$2 zjjqi}z>~UngT3od5xmk_h|d-qysf&Ge|fBoo9X=!X}{b= zxOmNny?Gy?`kvRsY459WXJHZ2?wL)vMEStpwIqIjs~SJXx{RCoflaO*hyZEn&Xjfe zHPQ8^3rG;^RXcRGtvDy?A#&b#qQs%`r0Dv|CM0P2=~`vYJ~B~31IU6CDVq^_BF?)# z$OOCb65MZ4oKvBSoL`|Wad=lJ;>1`Z6Q&tTa2FFYCA1vukj$rS+Zg29x7Rqw=Y5n` zsEF7Fk}0gCu4jSU7mU4oT{lyYQ3jloU;mLA>tD@`w*M zvvm#l)~9WF?e%hwR*yY#^>7OJ^xRppn#L}#8fz1IbnG2;{fd=%O8k7>;$0=un?Dsi zf8!4KE;}eIZL0K&$h|4|^Wk!$uWjQeu35n|2-lQtbqV)Y`J5@Au)2XZV+gC}ZKusN zvU5k^4Czh`Ob?Ti>u)UqTP@yD!z14QX6F75dw%-Ma&Cs%Rm!6m@C{B}rI7q9(tX%& z;#$g3IOMJtorE?+KFypM`{~2oV{1P+tLas*0e~HzF%NY-~I^s_I#6= z^obSkHh2LPE5jv8UyR5^=|}Lq`T{j#7pHF6&JMge%2hha@(w%y`b_3gyWPO;^;~wY z(RT(l@f(;Pu<4J?*!*h7?q@6N&#z5m73?t+gF&=;#%tJX_7O`#nV2AMHL9A&M+YC2 zW2GZ=k#}PxsORx_Q1EUB3GXh1hmpmUn#~4ibmSt+(JMi#*J@&BDc|sDJ3GAgSvE&2 z(}|dWX*l=Pr%GAP+zVdb$?N4yPXwUrxH9aj>2!Q}$tmP3wF-EdzlB9Rb!4Rx2fS3q z*vow{G;(6Hr}D>}2lEWm-DFw$1z!7G*2>4{ey7chgLm!BXfylRc{6kw=_`G~j2k=2 z*m6@~HE}LwHZ%PyyJC*c%ctjT^kN;_hb_# zPWvd9YaHIjXyvaSXy#^E%%$94e&9#;n!wkW+Q|7%Y(l*G1zBBcOu0W(=SP0K3`8lwTG*~z4|9f z*RZQ7v&EiLw|fYUcIBXr50|6W>#x%7rpwrm$tt+WZX!qX#z|uIdmi_cZj-D=jpS!$ zdCHfL6`+aVw6PDN&bXys1M=Zp4y^9af2)7aANmJh$W>)JfmPu zS(aNkzx+tNeB7t&be~=?y7ZMQZ6=eQ_wbtMd6WxWA9Kj~hHQ{|Y&2yYJ@~ts2TlBe z+hyF05zf%wE}B1*IanurpeHTWT1aHPy$L&PacDnz79D5Q9m&(f?<+U(v+p}`Gwhlv zEhiz7zK>f!ZvSqn@M8>-(U=AwyqiX8Iou@DbN1JdJ0FYRw-fPMJDzbfHXD=6dWS&u zAVZR6CTlve_qbmZ<>hN ztmC824~N0tEhs)}_*^XiH49bAt;5(eYA|7k0D1Pj40Q7WS) z4eswp`>6u7syPZX+xr1eU!;$V4Ba@I&#QRtL<#rgmdruF=^M5#RL`V(}c#a!&u zxh~u?cn$LL(kFPIOoMwLrO1SRkU!-#Q|_yJmlHRqnHWFrFwf|Hw=DBTG{5vqoP1o? z0@_Rln%Q7Ln{j35&yMy?Pc8*B^Vnp#$pG>rMMfF6g#2daZf^rWa)SXkW6B6*?(j!^ zrBO3ra!xuqAa^2Cjjq)zJ?0{Fa_IPkr!YCC1HV%*;s^C+b2DsXkfGc3h~w&CVE={& za=nKA(cCFbSJ{U9o ztweu>7Q<8-MQX+lu#$;4wWi5DFb1!b=+pI?MQ3}#&iEIU;WEwIB&#UoTyc(Mvv4ZI zBrP4OvG8UkdnME+n^&piur$2` zfM;(SJD=;|nfiJGn3=ikkIXpy2MoP1x#6$OjIDcwg~xZI&CjpEz6sB;_xB!Sf`>0r zm2_h)qRIsmUhhZVx_yV;Pwb%Js*FU7jM4cn`zht2-q66n1_j?j(Mv+QoC)s6z1ux- zk$OEx{n_vGfN>w$`8hW{Cnqfg zZptUgsAE%*EZbaaSfBOpW+L>whJ)4I^kbG(ahw%@RQMt4TGb<|uJ|J0Iw9QjC&z(B$XkM$#H4mV&XNkBOym20JWrk4)CDXy#}Le2 z->BWqd+>XQO8NV|H*wP&I?3QkyCL1{M-9t9!LqgK0#oypSgE?U%u$u0AXMne(vLD= z+1d?)sk_&)QngQ!u_v~G!m#6%epag}W5^a{TEi>mi?5TJqt4v`p*vMs`q@#Uj8S)x zX>AtF7afIUjAaryb=`>?CVEOL!|R-6qj2`eA#vyN2gv$r&*7 zTlgQD8TYFh=Ze2F;}B(o>wj`UZ?15JJuyMp<002Dfvyj#YJUY&Nnei%mq#F9wn|Zr z(ok5q+MHZ;s1|i9`A#YKX+q-(rkLW<2DB>mDrWkMh2LEz!E3(+ax}KP^4{(J&MmK) zAgd0wA&%esB#)Xm0o~-W6MK-h4<9*l7SjJ?FWi$B3k%j%%7kZYcw)y6xleg3C*CBN z`_g11&v^e>S!VV%!ayXDk5lE-W-wT1wum+(W#`L(c(_b_2i&4XWSn;mvO%ztGSK+F zK65XP?guVZ=Vr|Epcc&y;1A{bf`bos)}2@KCvvy?Q#*DIQj73u{Gr?l;BdSn-X4?0 zU$u7@H@%-B9iKoSb6rDy_65bdbBc8O-4m!C%k!n`K6w_x?z)y4R|Zy5i;RzGe= zqCL4x^As@8?xhSuE0{7ZccgbfUA$SC8ty70hejFC)F5TEv@g2nh2;T^95+#=b3WagjwDE|Y;wcxMJ z*zdl8UDV{E%|j{pE~y$0mn4pOO?D}ShpHdR^o2*2~g%F8;qpPS+01Wd%QiNnJf zRAK!LIQp#)UvJz5X=Z5}FnL-;93B!$6_&=~_t)$34-H(S+w#ifyj9JhF4317cKj4` z-IeV?t#KE#V?9%R@umQn_)TVn%yMR~+gc3N~4E0{q{iwO`e>ZmW6 z`PfE$g1;OW5$8A>MJ2p_g-P6Ur#@M=8-uX%+aQlJFGe@|Pr>#5-s2-{o*^GXJ>ZaW zbXz-3EE8r}@TC0;a-a1TocM!l2-Sz3Jma_XWto1jiEVvD<&GjVS$WMDnAPJ)n_0vb z*m!vQ8MXnpn?_{F;aFf8Kwq1f3BQ?XyI{{(G6dfDyy;M5!&I7z{s6GGeesym8dkyJmFD)W<_(M4V$SXLycsg-q;ZZ8R z$3<#=l8$S4!}&WG;&&BIy;PE$xar4R$R*Ey07q}y!1qq^#@#Mpvz7sq@i|&t_H;hd zShAQk&P+kPah(y^taFCR^xsN`-BblNO+zWYk5!CQP6A}dt^hQXvP}n z6u>ySbv?2}svxFFb#lRE44ThTrgWPskyQ~xIk%5!fccB`*n2ieSf}621RiUH*#ZlD z&q#Ky1B%mhnp`^ikq{cVPyy^3KXL?E6Xsmt@ClsNuO|0oDE0Q@&_^E zvN^YW87Zswk`Ym7*U6(yR-l{ecVfpl8u-ZDqmaSdi(s-@Dm=tHBNJ{d;ceN#ko&|r zbK<{v@$$)YJQGV*Stf5jS2EsJ?pS(`HuDnpd`Y0qIIsotZhE{LmOElUfCC|@4gk%Htx^Z2AVN4}E$Vo9 z8{T?ekAER0iJNZVAuT_nLu_~*3}WyCFty5@5L9je%@HhVdD(Sh!=X7K=3*s&S0#u~ z3FEoxr&f`^Po;nyI7{h_SjG74pp8&2nUceS8lpChRmf?j8KNiVM;M>=+Y!n$PjWcj zoDBX{2Tl+3ptJ@9nUfcdK#E-@V()p4qSkA2K)Hex(nrXkzM(mb?uhY88Z=fVWTE%#>}a}b5jFbFng-UgVHU)T~+^&%uN2(4D|jh zGvly+wD+|u+MJHU9#eJf;YKq|pxlS5eA$dHeQb#d(}Tom(&qfvE|&=;q2%Wb#Gs;9*fQ!4MvqZBTo zNz+$hTjK)pk#CkEJsvn*LyvdvIdM!TOuWWJQ|`-sf;Vy!6z=fGePi)VW_rmo-A?gl zqfEJD&T-nz0eE>oUmoCik1bgA%p=`D4!BPWB!dt+@|?AT(pePro0+yL{`?i>J#KnV zZe7es1-{W1O}K4DJ!KL+kJwxjP0fzgu3L7Uj<3B2w^?-JckVRs-4^O{(;4G{*(?cP zY5sTksNRP%ahpPH-kUcPsvunvvY}I!iKiR1k<*c!tvP zdm^&Eybz4`h?fK(>SC^^`*l~<<}!2F%of?!*MiZLpGty@Ka%spf`Gf&oYHm}A-a2N z2T-nmCD|%4Vy<6YhpgJ<%*@^GA!;>k1je7r}S$GjERlA0KzFLBsUrmPjM<x_!b&jYoXeyu4whl z<(OH)Ydre%3tYr<;Aq56Cs;)nx#fHlS+&hfV*kNP+Kf56>1i*n^yDNy@?izi|Ed92 znR&o{`C2mJDhpoo)Yo#K1)iJ)jSAj$^JhF0Zhw3L+4^e09b6(qorZuhoii!zX$yZhbEBBQVa{!C`qU&aY6Hn1_Bjrw+MERMnO?+m zzo($z`ZgGq^OQgA%}kg&W)&y06tvReJzNeX^HKd$(5XzoQ6w zc`Z^@ZgQ)3>Xjfc>P4qyS`SKwFCPX?w4PGhsvKrhR~52rd^4*}t6S_}a0hw$@Er9;4iamMK5S zgi(3OK&=gGjk923$Xs$Idn`J$!--N-Uk43~MCkcNUT8H#j+xz0!aijRaZ%_Ejz(Z9 zF>~fhZn?oTS+$-Aacz83WL*I6^JB@7bHl-+ z`lFQ2sEFUp+!a0Izl_Y{rr&G@d~XBZrzdf6l*Jhsw;f!Pw z3njx6_kr3oeUz@sDRDXT7?NUwGM;YVCc4BEAlW8y5+v3{T<)rcqzo4`o+;iYmt;3X zZU1aaYo;-2P!-C#tychc`Ngmc-n?PzXy*Y>Ck3`(%?ghePfOrFcl{rknf8yCe_nmn z{>qGP)-=rDhlk$$It#v!=3_N223UdhB2-0|flWE;fR%iqkiK`h=m?#9nCq`i&K@}$ z4s=9O3Y&GIiFy|L=0_!3J?lGWuCN>{V4tPu&rING%q}E?Mn!SUUOtgkn+6gcOO51_ z?N`wxXKQTRjL*20f(R(cBA{1xE8K%d$%N5--lc|Exepw}NeK4j**1CbOoF$|GObj3 zao_#qj?0o|<<$eIj{SPt%viRdsKp~CV>fUQjweGpGk~gaJEdde{hOIK=>UIW(J8vV zQOEXiFDA@a9jc#pv7RjWI6&0CSq?j#ve|^H6=A+)XZ^HmEWFKefM4*$gPWf3hD4`2 z5n5wL!Y?udvS8i-Au@7@9lG7fGL;HKOLYwVQqzmKZs_Lk*Y4$}udpM-8L1#)Wd)@( zf2hcPQ8~h~U(AwFW3EKbgt?)fV-PGL=0ZnhEH+<6%GmMda& zR_?+CYf)6C%o=m^?!<(yy~v|c3s8rzn_*6?GwE{I2E||ArW9U_p#FChjasRKR$*^2 zGq*I{llK9y?OM;#*fhZF>p0FWyS`CYJ@Pma>u^IJ*>)UF+S!fm`7#q9`TZsGokhYs zZ8EsOq|h#v()nQao0(Qo67k$Zi<^G7M>;NHfYA1i2ZbUVXqvr; zKMFBKku}Lu#}0o&dl3T^KH7-4g*_r(Z>GzQN7qQ*B@F(M1tnCnRU$N9pFpPvD3Z8^ z)NvK@hcE}JWD^nIdeoF3P^-aBul68=_m2SvS#gxkq1RVl9k_{Toc<^t@^Za+yE6i8 zq~9b*jJvOVv|Wd2-0BxAY91xSPLD=9nM*0%*vE{#t2|(^BAlgkOf24RwHw%wqa{Zy zR2g}Rp1@$1BTK1RP6oTY1FKyzN{8CO1}T=D@#D(bx8Y-U{==Otn=9jir(HN(kUZOC zcE^6Y?5+Kya>nIXGXbrCWoGOKE9|U+5qe8=CVVd$z;3%4V1lhNsEU6T=G+~L39)jd zE9n+Y@=k#H#yKP}r~+M-X(s)w=?IOQTA);+1g+{6VrHKpu4h7<=~3Wls68M|#Ma!h z?>@3>Ek5CDa7-Tg;1inUbPMa7%)zZjd_X=3*TShG^{{A}f=n32E* zynsQvoC&v+Wm;b27PMx|9iuI1GiPD`z%|;;Nw%OsomQu*1%?5ebEqHCx&H8|u0m_Is|*b=i+dVTqNytVxi z-?fu2HzW(8T?wDKKDM4>xa6^G-1La9NiEd(o?d7tFCnf6)=~`1QFvRd6<>Humz(x2 zl?-376y!CUQd(nF#Kz~75y9*xh8Dm)V+#C`_V914!c#h8% z`URz{SuH-cx&!&rZq735!abw!UP9V;7qSXV=7^6KPe;C**szRRUCFS(OmNEj3Z)tP zLXwz{apK1If}rG7cHuA{bL7E=z*9q!Ey%6&I1hd4vN!pU%>1nN{^zkkL@)mNc$4ib zJ|AH2r;^&WjR{Kyo;GtCSZD@MYu@i8%M+P0xuua;g&1RkX0L1^V+@4XfvI39XJhF zm}P-m*?1!Z`u(WZ4Q*HyEtLu5@9~BqiL{v{PC~j1_q%*G&t(01`r7n?(;$eEJBH`b zW>%s@XI`MqtYiz$_Ibd(RN$Wcf(*BwhnyP9ptSg^znfX%M6^Adz)jyC4cayRiAxVG zshy%5VAtuX#H!ohkuI(VxSv}|T#|jKvNbgEdjx|&rnj4$jt-U1ZBFAWeVhtazhhum zE<&ujZcCR7Dbl$m#(bq82chco61=TQ#Gn7Uh?^$TBf}2F()n?wv!qnA=eSN182mwwoXTs+pv{P9kUT#}UlX7qSdT1j?{n}$Znz$_DSjkCJg zq1Y2STB#(uyeps4)U^p2h-8XuMz)e+?vuef`Fl!ZsTo`C<2laI+m;~P>l<4j>|yyG zI0ifp8nXrG3_aWybpiK{9e-qI#(%)j3yVwt%FLKSElguuDSD&oB>dne!FFBn!1BKx zLX|%$pxJ8ck-pLG@PV!^%r~+lJ#Jlu;fH;sU*`lv12-*nUbz&lYPf)z>0|g* z{0J`6tl?--?YxGvTikN}J+kVtJBUeGn>_NdBbwy55o=ep#7Fji zHnWj8GX4!+pK0JEBs}J6=o#=#R4U)3OP9G+S~?AcwBTI5ITp`*9RUE@VBl zv8F*PBeJ|I@z-r{$#ARzOh@<9<&vrR;#mpOcQ%Z*Eo)g1)lY~o=G;O0 z5^u7WoR*MtRwzQd*D^{YWF4ZoV>YMv=1yQSFM?f=|A^VWW*6{Cf58?UIqea)q#3xc zt^Xr4uD_ZI%l<1fV|NUqb;E+tn@!(gzpoUx+d*N1=KHA1q-ALMa1tx2Zbe=l8id)e z?!mnIIpo5VPVm0}ergCa1sd&tiPkLQqL((Hm{~*$mX)lE*FIID+uBLQ@U#|gxz;XO z^@tc^#xq17`SdNCG_e{-&fdeVrip>l0|U4~SrZ=qdW5dexN_f3(3Sgeo^uii1#V53 zfM*h4B+Inf!?|{-gRajc(Ps4E)As%HfUzIgf}NQj22C4)`%07y_FoE|_(v%1%}0MT z(>5xCFPu;Jxn+lf+naTWm+`y7;^=A8j`QOQ!<5;eF+~B~UUP_exp)o;-gOvn^T_5; zSsKSppRtNPKBAb&^?n zNVXb~Epwu@TNvUA)jmjLU%NPM&t>LxWHkHwt9Y@Ra)Wq6#UZ5eg_Ag~>kApW&;;Pk z^qdRwj%e?`QAoGb1j+c#dzsV2D%m%bABl$&fugVBTU<<}PWC|OH19#~twjjII!)SCda9Q;F%{FUTXiW}!(g<+wr> zUCs>Z1C_|p@Uk`=7RwjQgt0~3jxm99AA-k8SaN}9Io^zC5_d+HX?>J??JV7HinpT8 zsG+(hQ)n}_Y(cT7$Le&9K0nrE@JB1;ZPOx3>(2kWCr*EWA8+f*O`j7F4dX+Jc~*_k zq|TQLD@h>|TrBFR&$5JuehS1qy%cD2|25v`+D){)8RVvyUWY9452F6aN~v!Og9^K7 zP9#M2)=yvX8nT*J67{9^QXiEyc$Pkr4u+@MrH=bCE!>uPG?884q zX>mc!E@KNM^W0R{L8*Z_tn(hi&YdhuyG@W`{^dwDJ)W+En22w!bV6F@IWfw=_cFWe zMj@F^*I5T|Sc`9^DkCk6ZZXPMuP1|&1Hj1^ZAx=q8@sx27-z!$s~}iefnCsF&LGzx z1D;D5bX#)2M^p(tUK!K+M`ql9HM1<}ugo|`?#6DlUO}7hyn#JFrMN0bh6x%KP?ZgS zXgOGlm84!r-k29dAt{CeWt^Pz(F#tCAEbuv!J&c34UJ5+K&#f7U}hgD;RSsMaglcd zM`Jn3do_Frx2%tnRqL!HhK(2^kG!6WZW^e?9AB)(M>Yllg%c0KtI?kD$bov9aM2uY zx-vc9l_3vuO{#2%1k>i*yzh(02B45aUGs*=L?FPXHNShk?d+9M~z7Pu!| zBNr-vL%Jrtr8MX7`>mY0ohITZspN9g;!~m8B6ETYnnVQ_50aved}3tgX{56}8>*o_ z1m*sn3iQMAHqRdZoOF6FM8-9;nbk?${p1DY0}N7>ZA^^Jxr%gkGRS7jPNG%C2V9?8 zjJNJ|;;$E9=ce6UOU@2`4AR+)DD~K0@y@2%i133s^TA*w}Yr z`5VX}auL`-_EH)b`s!{ueZ!kir6Kf= zU(Lj0e`RJ|coa4vEf{UlItzP0yu$95_F)A}Pt#_$qT`$CYg7Liq|bX4s;&DF79Q>* z=kJuDc6rYzovby`=-56?b>Skkdf_w7Y+eM8v+v=xjs6_Km4XnoBy$t;&; z>W6a`i|gc$bG2wQ9_X4$S7sFN$3YWi;GPpgF7XUPo)*rfv^TB$&CI>kar}jo z32wU2Udnv1m3Vei7g~$I?fg!lfNdTdA(r40TW7hX&ci( zRSC&9ua!(NzbQ`pF$g9v6^Kj#!Zfftk7OH1N+wJ{PA=*R1Uo*yrL+=KkgfHQv(IZ1 zu&SlU4k8b*7Oj*5k9}5b!SU-JrHSUiJ$v^bneq75%*vmm+<)F~8oLq2GT)e@x1H&^ zo$8_3sU=IW0znq4veyE=w(2n5Zn}hgoMeb<6+VS|H~Ptik`6RA*p^b)S`Up5^k7yW z^wBC04rcDqgx~IG;k7?ba5N@A;hnK`<(A#jr_Ed>lC#_8k&QO!ru8w{zWkfGmD+3M z3pxYFn)t#4H)qR)frh->)s}Lf=|?yTp<0AtxRhs-y-${@y_;KLDU>_T+CZB@VCWlq zKJZw2-pIZ_&j{9A;9jIh23Jo(j#;CWcHHjY%(S5m{1wybI&Ek-IA#@145aqKl7pt8 zGnmIW54#=&sOCCobeDincJ4;2r_ggdn^N!@$N^k5Vk<{u zei!f1DpPLx_($~EftVP6Xf55RmxCsO)A;c54Y-xN5ArQJ7+f-Mfcq}plnFy~dG-rO z$$eZ&PC``&&tdglp2^<5w3+F=zzfsmj(!hlGuBWl?3V}F*RusJY>zFW4}klzTV!y6 zAF}h+BTC~TeS7OK{}ewOk(|BQHW@pQdfFePQl zw(*UAC_`ZyZDzh2e@;plH=QG;boWIQldLnSw1CN!U+op*!Er&o+NwHAw-O^JIWD8p zww%WA4i@vx?k?q~?Yl=V>B|QntEwoCzD!2F`(iNW+-8Z^0X~ybI*N4qUS);%x-;rG zTY)hL%q3c9+R30tx*$i zPqjnHg)Xy!iAOM{zI;DoX*iX$dW9VbDDGwNITFcyY9s-SDfBsMJmj%uUpR0-^zM($ zFn%?&;pc}xFK2AD+1NV2Nc7gJLfCtHIKFl27EDlc302)F#GFOunDAvS@~%1$E;sOi z`8T>rKTa=PnLbFVRTx6Unv?Jg&O@tw)iAS?1Z?Ni5L~3gqsy5ZVm!l=TXz1stXe&m z$h+nxkCgsEHyKXEB-=Z2EA|oOM_vgu-_!$(rZ~~#O=E~5_6OuX)4p*MGV=)Y$#y)G zjAB{luwKqR#ECZ3A}gowxjgi|f;N-R7MzdqjGwgtxbHR~LucLwzA>tl&hpd0nQ5yQ z@s--?d3UXtbj{#P;_MJdu*$<3JWtjjexy^>-gG_bT9+u|tYRiunLmKH4Mgx$299zw zMukwSD@%y4+imL^n(x7L#DVy+dLgwpUx`vpjw8P2wAVBA!tqv4kC&s1DK{Nfkl_=x zfL=~1rSsU9k$bcQDMz1(_leJm*Y_kNUDiXH*J7tLav$D8%DIi=efji!n_zvAW+tWd zoJKR(odQ68^#WGqxryTSXAF=o1IWC#{V{W0{Ys#o_>xswDJBQ8Bed9k}m|KeTn)L60fN9;^!^kxJ4 zSvMK2u3CVZ$@{U^*onAk)*wgYxF*lt=nl7RP>mjMTEP<#^KWKuzkbBu9;3re>$**aRoo#O9hub3 zz>jq~1xdtPGM~ynj8b9e&Jm4vC^a)|3*M?w%FhhGK#w<-lTXZwh@FGGsCCb^>++7% z=?|Tt@>2%L$DPCJ_zP;i-V^+8Ul1Yh=;x+S7Laq8`e0YAfYKZZm>+L%K?W+!nd7bd zuME`g07JC{SX!5QnIGE{k%8kknB%7(B7^ju!Nv)Fly+A-W9PIyq$Ga?OPBb1r7x)r zs1D3yX%*aH>@+)sln4lxZb%HdXuBICI&4E}>9^E9yo+%hCf!0NH3`@ST`kOFH4EV0 zPp}1BE_vFS%mMCMtNzFg^A|D-sZD=n#{SiMEN$Utv}uede7`UlUyuT@0xfG)Wq~ca zK$C@)Je-caaWzNvY6D?DVN1@-xei~f`AjL;ltAM*GBo{JAX>e|2{U_h1>0HXjf)sN zI2zJ+V))HB+;YtlS+!LlQ8@JrZRQ=C#J+-^e6E9AjgccguhgKPodzt#?#YDVmwD{Y zmvSGsI8H)b1uyx8G0!AXL6&JMw)?6_$wM98q~-9%YcDb)TdfX-j`6MZw);N{dk$S_d^9S?%q zDP{PbhDZGD+VR}<*ribI$q=GMw?SI*y%IY2+#&iH7Vz@C^HA-Pm?#--DLrk+#9QYn z@S}Jqx#@?#kPE%qkk428D0O>EgjDt-SBFX@in3hs{mNA?L=eV}|rMlR@qN zVDlC`N(ZZ|d!gFS(J3~N?z23{E@<>&p3MpX9{%*4qC>SFBKbYwo}~C^W|DqElTrCs zW=1x1a213^ZyGtm_cxy7TB!|K{>2BVs=^y=^apiJXwZ&)Qk(#vS3iaMXD*VVFEU_n z079u%RYIfFLbO28jaD7sOW&)akDCQO!$q^tax}bkcmeS@xn*7Sy()T-cu6cfdF1U( zbkmwzoKSbitrk233Sb@l94&`?#*1XaC1ubuf2Mno33a} zUd+LG=iYro=CQ7VatTRX$eRzx9S$ZhPN3s&P9qC1;CO3hHed9aZf9lIfS{-vB5(Rs zxc_kwD8G&n7a}U)xQbaIs3e%~>pKGv=p4iERb}%*R~I)!yOdl|@fgIvKSOCY6nf5> zCtx>kIUr8|Vj#9cM-f=Q2R*zqC$#AKGmw+8C5YERX7NncUX^8zLb#)kWzu7m&9s^SkFxg+YoZI= zb^+-f>8OCHh@jZ8JSc%Av)0TcnZaIYBA|c@3ie7=q$naN5X0*E~9fuDpL$7~im!Rrwx5l}@sR>>*pwaMO%(j(ZIK&W>PJ`c z^D@YuI!89W52R0rqIF~Db2w-Ss`pw<#$)SjKtoO}%bvA589 zrre&MG0<6$#5rk>=k_1=R$HB6Cz@;z-&LVu8x31km%T5gt)}TU)R?PWbCa6Y4kp5=39TCQ4W}8TAg3 z9(ah6Fji%g(q-B8+M;W3pyC#Rn3=eU?aScchd96X`?Z?W`&ueZelCdFD_<19E!nL zas_K-xQ@Gk69xucImnF;JF9z3_AAL7IK+r#79-o4#k(@VaN7b_|FI>u?@X*9 zRJ;t!TDgOtu?^Mq?xXwTfg5~@vWIhH?n(5WO!*^b`2RshC2iGTF*6dcAqV`~W`qJPO8A;b;F+Du#vsVc+U6UQygXnK^ zy>bm1ne-47>*q?l%<7rNItRdt$)&8p30*Jq-1FGAqUl~+H@=hUI+oh}V>6Ap`X0cj>7DCgVVR+%1<#@@9dcrzlE?Lx%&NGo}0$rIlrR_Rj zSop5BwrpfGm6<<78Q#!`Z_DZ=-HHHd_uvvx+s*}bZP74q?fKe*RRcxkA#;^8J>CnV z$3%&e=J<&$mu;&}bPf@9-s(f=nOTS#F?g%x4F{+5&kN&GVS~ zeUpIxk?E{n$!RaKBNw}(R?ZVgwQ}dXYJ-vILS@-6rg_DPoUkhnYCQ3V3?|@l04V<+ z#Oja#QWYEbQ83cA9czhM%1;-3=FwW_fV1x&`WzRM>kRfEWK<4&{S`AK zyX|mAg#mu&LLBUFn@mnTn2&r1<+!>;ozQ0S!Xx7&khZg3bW$)2^|ez3(Qd5hW&|JU^w1gD5eO3#ZYf=& zNyJPDEFE(hF_Xuah!=a>hN2#B;4voT^)R3%xx^Zre){`5bF_z!DODh{Wh0Ib z2HR3gsn_Z0tOgTXCAo&4(?i)6Kb^@|yK&y;XHA6hn~_$~#0R9sY-0_rj>sHreXt9c zzVb|;x=QbixB`rRt>TVdM9UnUHLwe<8+fKa%b1``X<(MIKdb-6-pg#D0+Sf=xTQL& z(%T;g0b|{b+_4L~y-XiX$0X*h+>*snOxU+gaOjsIs6X|F85E^2$p3hkaX4Pem!#(K z)LY8H^g`5w6HoMXG`o#7S4n@yjQBs$ufD+hF%gPipX#95h|%~Q7>}2VQP%6S05T-7 zg_QcG33M%-sc6muVd4A0+A@O~)J2<#=nOm^kMVsfv({VXLIkUI`OmyL&cqNlY5 z%eRX70Uwn!Nwm&P>=n6g7>m}Kf3*<5gtHQ}l`bmhac^KO1Snce4T63#f~^5;(Z`iz4x2J$2MY43F3AeL%P~ytxctMrSzNbAy4Y!Pu>6?O9$De^9~h?T zD*w<@!vsxU3%0MF#pZkGAhT7|B9L6u^)(yu5a+VM{cn9r5|xLc>p09s)K7Jj>f&t3yJ*hGVEP z+;j?QA^e3UFZGb-sQDH-;}Bv7_2Y_%d#a3YLbZrP%;LJyz^R&I4UX6U#!QPw zE^TqBO_)I1R^8m;MNO-(XWLudq2X(PDnqT158hZ0=K`cMl2_#vAuD!M<*Q z=h4R+|5)I8D8mL@@OT4H5VuX1_-!I~pgNJeTXxX%aNj&^LEdtnAgzcA*slvNTZggw z7XC6Fq{aI3;f5?k)+bBs*1`@{D7bruRLFFKbWzP`lPqM_5hi#i4zlu3vwE%asvQ~| z1heN$K*HnO{Pc~lxvSjVP%pa;)y7wQs8kgpi!Rf@{RZ;T_!rhyvq(u#Zva@J)8kF#WKQnf+k^On!ho{>L6b%W))* z9Y_79UnuKUCySifvzU~+mkD%d_EIxuYYGc*TGy7L^Kj^lY0B^>4O~p55Iw7>llIO@ zKy&m8-1h5vc%;$=oo75mi5!`7CKe%xKBy;}Z&WR^+*Ob6O^1ai>YpoJg1#VT8sYOw zls_{9X~@g7I41?Vs7{{B1gDPx*J6@bLld9hm}xax;H{hZ60I|GrgG>>>S56m_LkjP z7;G$|LEvmqWb4UPPO+jM?qAQ|(z;4E&C8{e&Qzkk%!fJA(?vyT#)Ue5x7R`4?HDi zDN&Fj$6jmGxc0$oFk_%Ev%-2UK2lM{>Iqb!`J`gJ+OQ5UU6V{$AL}DM&nzOP+Xo4B zE`6ppduSrfl~!%(PZ_o3axyy4pmoMpMmh(*AnlDxfyTo@;Kj*j@c7OnwFP0$!jW1r zsHV3RX(7r*#zO{*EHgvUy{TAaxL%0#GX{v6Q&1l4g_uE}xI&h*c$XgVD9~pjoL++{ z9JTihGk#}g*9Q7C6CsR0^aAXiBUrfIo|`^SFuy1L_|~NzR%ff-JWFI%O1M! z0J@ink22wRFT(+g#H}mNt4+OLOi972v?6$V_g6EKYjeP} zZ=YBL2et|}xe89I-mCKZSj^98+{#T^rUpDsjQEmMIUL_7TY$&0Kf7x~@qeH>SMztw zbjb*E2>Undazh8mDk46Oh<4V2fg3&O&z>$PQSk<|Xns6JC`hKq*; zkalgTcM!P-sQFgFhMWMHm+Dbl5ST5pl%ewsCtnb)ze^O`5rArX4{HTI2BtP& z0`cRQQLDrR?obqmJ#h`B4p?Tu)GznQrmZUU=VldQ{H-u%mFFRFbYmAgP%~9p+1vyI z-#y`-I5tx@UauYtx8Ewi?qMyhe6S4!K5OHhNT0$4)dL_N+RPfgJ1Q;ohuFnWW%7A5 zzstr?8Hx`~sRGpCMzo1m@j9 zSt22cBH;M~?M>}SLq1seRe@@Hu}^CgEuiq)3Jl$~PatNd!iQ&d5i>l#BwxzGrl2$M z-cV+V`)bT2ZF6S#QE3gK}xN^sTVLy;ZSy@&u}6Q7HQkY2sG) zbkJ`5ufvA2E)0Y!y$I7ih zdRIucsMXQ-dysy(IfV(VUI}IlZe@+Wg?OqD)BsE12Kh$I@m|f^6R>-SjM3zXEKilk zBv`^#mv3})XO?q@0j@<9YuG-g^3t52V6yi_t2j3ypP z59SVLf=|@|m!B4_;qxl~%5_TxenYFVxz`r*vnK84#r-@4ILjCFB}eXZLiQlP_8x;j zV@CWRXs%}b6*D91uM$_cIpg)>RQRdTjr91GO-LTD#Wm(9;K7`cME;LBtml0Wu0JLO z9z3tdgutWl$F3Eu;mb^DwhrJfueRf*chb;|3|nHxP%bGo=@aO*T8l2~#tREe_tlp6 zzM&Q_h*pLx_v0}iE)cIrt|IMiCIIclS7H5dQ+Ui*Qd=DQ?@L=axE{>gYhSEw6_@E#nE} z?*u89>*rCqb9m6wv=At5o6+Yt;oPhU#j>AYs9cw5XwkHUY%cDiEsc<0J9{$|sx=Hq z_QkM<$y>SW?sWjC{#Y*+UaBl;g$UTTjFZ>rp5d;mEd)-Ve|o7pPh}$WM}nJ@sjT5? zd#?Vz<5DY<|<0@Z=TaLtSwynEjyBLCr2tgk*6-fG}p?WanB z`qC7*ak&{harX_=LCr+&O*L}tf@$Il_=Z+ait4whnR7N_ik@j zE*##%m&l_yN#2)$$4PT$k$5jKo2JhixL*2=nWn51y8EBk!uXPM1%FQxHTJANd!Qo@ zsAeps8ojdF*hF&$fA#}vY~l&_K;Kxhv8ji?(0@i4_cM+u*>RG3bsr`~%9(__{!5u+fKwv0z!8x?3~KL@Xt%*0EZvkB{6=0r~W z9kQ|+^$rX)MYT(EgoT&J)Rz8&6#T(ehBK%>^WKBlbL1deXO;l1Iw$z!-ZVwWOjGSPYO0OzUAc;Inb zk6DuU5)AzLo;B1>{f(Jcw!?dj%TrWyOH)K`8csze2Ea#sAK2KlKD3rmK6~FGMGhzoWGVt!M9(S6R&~w`soqI#B(3 z4%r$RNPV)ICX8HS|8q6~CGeLb1bg$4iHJgJ1ptquZl+OAH=x#kYDus2z|y z*4}5rB3=R0QfJmMMp||M^F(sgzUxeq3CYhm^^hl+G6irxd`0{91J0{^?}11DpVjop z|Ka7||5Y>oikXp;6vC$e0DkXVFzmUePev{tL`VV#;_CO8;=+=3L_YQm`}lysP3$n3 zUcQ-`Ui2Dv>Kn1@21B6flLFj#YYkqqZ4zO9Y8g5HBg%T6G(@0l94l&GoF^<~d{9kq z5Vd394WuETjf=Zt$&vGYNPAaDpfbW6w>zT=vri62-rE(T6%wSM@fa+KURWn8Aa@}> zuqQeLPY~TO@>IGkL>lrdSK+#Yj}SA_Nc+0iQ|&qG9UMBugzP(r#TI{H4Y&ON?oGa8 z`o^SAVSLORtj{Kp5^VHlh4+-uVBQ&8>+2-o_1y;RbM2r6K6b3|=v}huwUjoQi}bxW z-e6mY2U2%ck`yO1MbH2{L~C^`0msi7+k9S1-Bp{WIQcP!Y&n=hThHSN6ZA1A{4EAv zitSm0CA!i#Q|@Bas(C!~8%JeP-!Pz)a9etVu#>*w&Bdq%D|zPUcQFAiH^K0*WvpT0 z2hVZW{ID0(^0|xUFJw`TQ-My*Y$+?z_ncUqg1z`Bof~AofeCq04E|A*vqr%;<+F|_ z2!tQjDRjr6Y^y*k-i+_7fya8JpUD```LVzQeJ9`lXm29L|HATrU)595n?GM?M!q|a zH@!TJ*FTy9KX!=75SJ7p{lYz5{dO#2U7JJXhZ|$hk6yzKPw2pdx8j*~@;OWl zc7?S2?gIwk%VCqlBzQ!v8~K~2iY)oX%9%uqAo{>*QJhMu$Z`j|Hw~^5`6rj4nw|q< zW+U7#%|*=O~8%Oj3Xq zTd3R>?rcq|8y0>2DV5tYO)>oYRI>SK2dy_UQy6bp#6+|hf+M>!StHe3vRUsnfSr4_ z{GG`GulNmbup>iQo^R@X*=(a5z;1Gm{GHY*CUk@WR<$A!oq-=q$1zP<{p)1UI2Vpr z{7f!(WRecgH?B!Ku15{4f7a$1H}n#-SbGKb{LU*@FYpHzHFFrLZ2AZ;C*S60%<1Ee zszCdZ(vUAHwdK^!6Ql3M`Hz?p{0}ex{;#!1fBu3Q6SPK*+>hT?QNT}nm&h=O@#wCN zw4H4}s6KNB`6zR+xBqzK!@hLEtic1B?feDsZTTkFC~6WkvzjAgPv$`r6|Hv7hs&DkGr4yK(Sb)r2cw4~Pn;prT!{sZPmmsX3CfhdLf{-%r0pEm#g`na=e&Gw z2Rv5KW0tIMz#iS_vHI_@-evm}FB$wv1?|x4%^v#!vpJNI89vk{>%&?SDR3u`?2V{^Pf5nj2^cwTu3R^GDA)M$G%T~Tk5{tr zj!gff5f}-RtDpFotGz&keLXgU*JaVmHBr;YGM|L;N_j0)*^P~0(n&6>zxoCvjBXW#t~-bAU+T)w7`&gG{cQ>AOQPC%)>=-li7EO{ zqW_E;F~a13UU#(7yFX`URLnmFPcj~_pFI(NTzH7oFt8vbJ~8-!SFS_`H;c%>8iBnW z=!b^}orRfuM=`-$C*vX~4r>s78JeA1hhyHy@sjs@3F`tLIp_eIchIUW&>fN|!o;q^ z!h2pwL*7m~p%nS>dm+fL?L$tRU`N`|3&Z+j>LKB95$1fWtu0v6FOnSALp8m6q|<|< zm=!4JYIPl2XYL3m-9&oeVB|ZvVg_5YQKs~;e5BKJ<5YJB0gnwjOo+#0Y@Fx-YtXXu zH)dM6fpmh~bYc89HSq8?MjOOlW^*ExkgxHI9^~|u^>Nt(9^OQ=0@usfoS1uLOJ_5+ zXW~GlySoSH+U3)O?}RIwekDV`$!>a(^Jvz`JQdCzeU=_vdqdH5>I%|!N@>t|0`;|r zF~J)Tg7l3ktig_FvQ0>*WjSOHPu;^wR=T?m46)LpWz$G|~gR z)fQdufYm>{5i@@1-t>qwc1k($$lA#GX1QQ5SL?He^RE5IOrvffeIa3oFuv4Q5n#H2 zUa2w*wrF~ReS$FRt7tPQU-(Pm-;zN`ek_75T0h9f1-bMYj!2l`RR=m>Y^N$z3ZQt| zKVToFO?@@r2Fhbrg3h~nRE6$2D2`AgTh^=4!DYzX>v5WyoB0b=c_81x6bJ6W4;Enl z8(i-AW`gv4^B$mTUM4Fkf5RPkeE~}q+ zM*98XTcGk)RaR0rSO)!nV&|n`}9wN3R4PnO%RzjQIcH^8fyAZ2miDCTJ7ayCr!2=e4kR=ue{m9b(2V z3fBmqM@-_bCJKgmVBHm8af{=#VdmIL%u4OuF!9+V)?ngoXg*AiS0sMKOKuD#tQ&QS zo!BX)?Yu3}NWFMft>73|+^Dm^I*@DN6`%F}qO(yN0Y{7mI6*%O};gO~1 zY74>xL@A#tlrwp61kuCwMLU<=K$@#q)YpC>I(S8j_9i{V%n7)}qyaHAgfCh9nxj04 z&NEvInIP*E*uAN*S%W(le`lsA!CQ;J9Qho-fD4{z>|dI$qWO%YVt9WcO?~lX4^M9Z z7ZyIJEfUWtnsv62&Bh&cevBc?$D5AL)muZWD&E4FlfjDNy-76n!<{{Bi(_++meZ;? zi=fy>hipCOM2|5VDU9#`$@nHs0bN$9to};AY-sdjU>P!qds!aL)f|)q7M`2J3%qty zHgsz1ZW5&+v8X zO?Xf_oe8^r03T+Z$Lbl*h8E7ED=zfvb%ZlT$N)}g4c9YEPnK)r)+R;WHB zqvB6IRfa#3;@dcj$jK_tQ9iIS_A|R2iigI*tVby4YQ;U#;IA&|415jMfrpD`m&YIt zIr3}UCJTcnJwtk66U5ABnB|eBTwi?#p!|(p4=5{aY z)-R-?I*IDDAMa7ecgC`PC#R-r9*xWf3= zx^S@i2FhnpB0lEGN6aU41tnG5A;0ZnIN0hGIq}`94uWB zOQcuL`x3;@pmuP3m+eFv@^8qCp~@+83_;&X)}JvW{tq;jWMI8*xwZy2oj- zcQ~3I9e#^Qe}S@I%TowdQ*X4+490pyqhZB^*Kq%QDH9aE44%D6vsyPkK?~E>_~6qs z@UrpG2y5Gq#KV=J$;#qI0^MOrA~vH~Son28ZJAjjW%`^&`7_sXace(uWjv3xpVkXh zSE)ezhEkZjii7&vglOBDF-UWT&NBl-MZ5b=kjI~2n>e;jlrwrK($Aku)s>I8!=t1kpD&!|*jNay4 zTE}7+Zv3{SD#m;qJxHuj$T!=P&EYEajSahz9@trNDx!#zrkAtnqjocTv+QY|p+j*K zm4S*=*A`RK+)g%q&Uv!ccmqAIw^n8sMRzB(S zTv;5~-0M6hpK+6C+?&pXCHI4=!fe*ixSKKAh~_gIuTdPdR`L)2)j<3RN%9@D+ z&LOOS(=7Z%nmNj!$zzuJYQnl&OV&7kEi`?rj*~x-wln<;Vcq3Gs`~Cl^9}+8x?|j^ zDI0jg!sg3pZyHQ_Ew)1I4C-sw^$}N&+LQL9-(c^@LfB!N26HvC(7ox9==6+lC`$yL zXB>1Xb>%dq)9XPxJs)Ag{Bo4rxfe0xg}YxmgP7UIm#jJC>D_>SQ;Q3kunC{QCe8@f z=z!~QdsE9@C+`V6QEh*QI`-N4B=z~9nQV6A5nva&fZ91P6pAqx``i^qeV!?2vm;lK zEhA^p{=06YGw?hxx$8T%uqGGEUE6@2u%FuLwgQUDH(+uP>Vs5jLOGmDwhig`9u(dw zObG2{Le~#~BL%svftj9kA=0#KwDEavE7!_Yr`*C~@8fd+C+DRLpM3!uFDrR&vs0On zvEx97#&Fhn@^xwBkc(JQdWL+|KMgWf$1$kZG*0f{)hBHn(S!vhqUSSjGAnuup}i)W z!4WBACY{hj$JbMerM&I$Ap;QAN!CHUDjQBs$Jm2tF%s82~ zE;`7m^MEV|2T;p&Xu}EM*6bQ}&l^YxIvE$X@LAyG}pSp%Gdq0;o zzjhp2=$7M&*)4d#_)qBsc&H{AooDPt3AR;8b7dijcHxND=tqkzmmrV-uxmmhtq$dO zo~tdo^cLQqGZ!(#=Sw!N;8gUZyuqcA3Dpk<6KrZ(!%6dhW2V)inLZ&$y#r|qOb#ih z)thH9A5P1`UhEq6dEf}e^ABAxd2u1F&Q>$;?_MEW&xz>+8*GtJ;k2T9Qx9#Q!-H2R zt^#|xU5Gb{;(4QrqI$EKw!e55UUflxQ;acPq>eP?a0e5%>H)a^eKc$Mphj+99Rh5E z$8pa_yp!3sy8{#bja;eeHMu$C1#D)xbI*y|9sB@VqzjF(D6S zwrvZ6iNjN_R6P(qF9U;D9Fvdnd&LCF#(@j5=nVYe8#a9UEWuW_JV4zU%Rl(sgJ)y1 z7EEt{igbFHIAv?(z$5g^A2CD!2N{)Dfq%u!@LgvK2jt$mJA6CrscRuPFStbd8ed#P zM+@FP;zQ)i2<$CyA5`|efd`9EFf&;d*fLv#RVyC~t*j>C=>~czPftYHpv<#~j383V zu@vY||47aF`9xSWk%ww}a;muIGs?Nj!ef%Q5G-dZX>aC+^;vqs_UI!pI}K$PEwvQ| zonp+a+q&**maV4D!aN<6tf80lL;#$ArdQ^qzLhRmZ6Q3{z6v`<5 zVoH&JX*bza7)Bd)OOc081UT(-TGeeDT30<4*CQH57o@AJP5jmX&vB4e6)l7ZwcOmbfA-2SD(A)wvgc$*qV~h5wXMe_w_&?CR z`?q8H=k*!KC^-@Q+z!9zk`B8M{X;YmC>w2e2d4^lZhj2E_VOrUqZ&f${W?fie##K&VuqsifkDE;?_<$AlPk(! zK%;f03Xj>#BU;9MChe_1V&B~EKtt2XFq4CHdZBS5ASyx`jN=8-w3^7Z1obFG?;xEX zD{_vhQMxSmK+MF0nuI3h!l6hzoidt}P;vs*vNV{$_1;*Eiw~=x)%F`REfbn)uQP*$ z@q>7ZL0+S22W2);>MT&atvpNJ*J)*1#RnCGV#;ZU+85wfaRJ%bTSw14T_KEnu?5qd zltN8k`W?PPlTzOXHd77#1DWP!N=*GTdLG#gUrpOYHs^NGqwb(wtfMYW@Q58?g4z#O z-{zKA^|e4SKD$CT^=Ajyc3>0MwV}z&ik;w9{bes0e^^5{^#r&VjB3PRy_PG*ADyy6m<3GN8MriJS9a z40jKIBj$HS&eIp?GC|vYK*NXGtj-flW@e{Quqvz^q&+j|XTD#~({u9yoIw)4B;CYg z{j3$p!|wEF%!vO3&1b8>VrJBaNW4Fl!tdG4fgfJGk^w#vLNd|^G4l$yxC)2@M~L+v z`~lv0g`hccPE1f-BAoSg6>Ajq8k(IY@T8o2ymY}L!g`bl4NDfH48}nM-4X7h&xucj zg>O*rKw}d%XuxSy2kyYPz4=N+dZSr9)ha;k#6(=jbw8@+exRwgyh6FD}Ut#$D28 zf-Xlvl`##hfkg$^e{c)%jOdmfQZJQ8ZrBd^artuB_g}gGnrXmu&2iZwI~T^MHw3$p zqhxi;H*>YF>SMJ_b-1k+N2QUkegMAYi`@0`Wv*8FE37tXGPkw+GP6vp1=Lt@Sl!$~ zOmgE$LFD#qEO$TJkDh(TIeE8@Qtlnr% zXkqjdKl8X1FKxR_SYNq9Mh?Wt%AaEdx?6Bj^UONb*Y>R~8|Xv@PrHcpGjcrUW+%ZE zn3DEm_h7w(OnBG-7d)(vw4FijqFi${TX4!HLG;~ZQAX_^k>!CUwTar=!k$mwN|#w} zwM7@-K+l^Fh#4Keq;n0Y+ZN@39ofV9JtDBz1q5sG$^JKHTH>ctzc#Hw^^?(63x26k zIezMJoia(mC=IFNy@RlG<*rq8OVRVSeQ;gN2J-$yC%S7A(r8^b2MJ~GX#HQa*ryw< z6iksTRUEF5or_KeXf85spmBL6934m(>!1wkqXU_c`D3y7oljYVN7|g`sLfdU z#a5ZsMk}tkTNP{1OsL#Z>&LloX^55I-6*q4O=4y}TngUPSJCXAV3}jHI?%rJmAA{T zk1K9Jg|)AKT)D$7Mdo;GE6{Eo!`n6d60<0r586U$)}Zram3-PE!PWXB{4tf^`I%nv z+#gGJ1J7`j;n`lndEIp!)y9kej2W;0j~Eq|A6FACgwUSxTWtWDHx7P`gAl`dctV&**z^F!;5J<3B+v~bQ9 zb^;GMnvpU17$&aNMEdF*zcJI4lR-QFlZCR&JfUG*G4+tIP`I!2VW>zk)nn@iEke7X z;pZLHL!TZ>2&085!lQGpJkU z2Wx=#eoN2e*%8bNpby?9Anio7nN0kO5BML4aIFtmc>d_D!n&V}WlG<}GI8G+!2f)j zYf}-x1WLbvE1iJV517xt6haC1wqL+r-Rb9Nanrcck&gk_wt_FI9KyNoi#+}%v;K@3 z@&7WTs#^C~%#50|l&C{lzzt2Y@B`->@lprP$QWyeYdBBEFHcV*@^3%DUgyn6vs411 zguTpoWFN&xlzwLQhUi1nZYMl%UIbq9Y6fAQ*Fj$S@{6o|`BR|t?Vad-=W*ntoQ!-2 zI@HiNN0s3+RG+~Pkyh<}q&)`*YMk>>Ytl@3WWYkCxjK*LTHjaB948e-A6_TyjL1Xl z%#Yec-J!xw0(GT}P>Pr-!I!!s4Y_?PUn2A1jCXztJaPq0i1A!3+pG)e^d|hqO!Ky8 zYMYZO%6h%2I6iAXm6z-S#5=;kY^QqaWbai);P(NFf%rjAZ)L4EKe zqri$eb1CVlWw2j070h-(pMR&W2z*`(R{Zmck`5aN`+lODo@O8&_Ee1O#%9c-Z*5qC z1In9SZq9XHEyUQNv!&NB9+qicnT1`Svfk@e_fxL(JO##%I4P~X`k7fWG7TI#a)>q5 z+AOVKu@-w2T`T&yS!MMiCAi{oyBa!cg^tNdzV`|GVnC7d=EG^vubM@b$-$)TOBSz!f zY|we;?qI_DcrT&5g^P50hNuqwhSL70U08SyA`Q7A7IrC zD!c>E*fB8g$zJ56Oc9;;Kr_Fl4--U3If>Q{)B9WaQf*j8x{)VbH$3&7aHghOYVTex9a@# zJTGdul>iFuJQSy|PoPJHnS&w~ig3kT9=XFZqrTp2jBer`3+EL zLs$LuK+i80<8GsNkuAC7yj7+3s1AIa39%jrc664o246e5yJ$X``ng)l>&dJrRqw}g z!q&<)S8n3&nqvi~_CJvFxy8s!yA%{Z>|hPUuW)h%mw;`yll<~dtm0bgK`bZyl3a5| zFDK7%3b5T9DZjkRlUZu54pnN=d8yKZ=a%Rs*i`L-P08NRPoG`L3!Hx$a0DBXcJVsr z#&`5P+V^MKXfyv885LEX+`nRGWN{iXByt#D*L@B42AGhOVseP|QC_%)V=vqtc7n(+ zh{L+$Pr`Gpr=Y}SF0(G72-gGttfff}G|Rn-+oes!O9!_T)+;xWd)NAsm9KRKx{{M3 zy8%m(_ZE5LEM(NUTaQqW@*N)2S&iRTeL~uuTaA66`2^NEQ}CGb0=hTFiWL(cTUy8|2mwsFPt&g?fhKHXBQ!*~SahmsbtdRtE^Ev!{y+b?QUU0of#4 zKwsdEMR)BrirZ5b)26w@;j*X6&}`LA>dP%yZFSUDaeLk=+B8oCF3U!ljjlcP-uF|5 z@ncpn{=eeD!nqNwQN&kS=5h=R%}$e_pPDS&Y}^1e+ckNYRsCd{0p(ceuA%6;1>+al z0?PI)SUvY{u6uALFw?p$cPf7<+w>z7Xe#&cE*l@?y6ScYdBw?R68Du@=?wW@&LB_@PW-;yUWvdUHNUp&1$Tu|Ha8W_tZEG^z#(f5nVb zbPDlwEy|xcEQh_BF68cd#EkeluCeAYp%PX`K{=y+N}&+EUzQ- zb;D4eo*7VoRtQx;pMgg`d9?+8BGC!WKD5rD`pmQn(V3~oP+xmqZK7F&h~M=<=@Q^u zTU6YITeTvco*mM@##VZ2^rQR2mMA9Bel=KDGoCd(_j~W4>Hbt&J`K&{sVRbXBhBf^ zOJ`W#Q8~M`?Ame!7)xQVFE%?z}^}SW}rrju%l6@eymNsE`%7Zv>l& zncVVpCAT*z2^gLk&(j(1FDvj@1)K1n-10=0S<+UC=3swkjgnoshWE|`mB~|NO81@I z-V`-pSZ2)AF_^|RESw2c#zUFX%Zc#~cmbZ8-(?L-j$xBty9hMql!JlNOr#-y$#b?F z4m?Jgqggy(IsK1EpuYB;KVwGxA7)He{S`BgXOx8O%|QI_G$nk$+mL8Z+=w*frMQMl z4DPjf0J=AIVjqo$;oSLeVfxj7m>G4(Fyz8wRy!aYT0S$!Z*=hR(pr>1qvK7+R@akK zx2Xc%&FYkv?h#>O+i>K)l~AfG7`kg;#bXYSCdU@dCGB0*fl68jcy!te<`~FPUprFx ztz#F;pV=>no*yI{*d2xZO%qVg)ee!xHI!W+unRHs95$p~M9k!(d!-g<$!CdgsAL?F%1E zw#3%aX6F>b_%E4^uSyL_eXyI=kNsGwoRo!i8jx}eciU2RyW z^BTE@#DMYXSO-e|%~=CtC(rv{Gl)GB#EbPRk(K)P0`soIC$)KmKQT!byYOkAss2!(>v*_kau3X`%IwBw3gJQnq;5kn4DwO@T=iHw$BmECE z<_rFcnb9flh`kT);Pub9!CtU{oKMduBr7d(jaD^c^u(P+{;x;aixc*^QSCRFHvSW{ z@IyFES)QluFVLbOH^hnF6 zEwDwn^&%rhiNP;w- z{p@}6w5}K~wt5Ga3^Tch=Pi?!SiA-H^DN|PuRk;4r)Gc?gZZq%8%HMj$zDO2)lqDz z@Hsy{>I%1`yaaF#?&M33ZQyiAY9T$a=#QA0^}oods9Jmd6*DeWKQYG}&B(|S!`^x? zVi%(zB<2TkO*ACS_sJn5zi}1Ttvem}&`0x|*3~jWwfkUZuM?~N(+`^67>4^>=HjJQ z+X-ur=j5L9(WKM}-L(T>P$7HI2@CrQYs+i}l&jumq=h(#i!B7?u>HtK+4>FpF{=em zpYsvsUD|>2^sb2Z_sl_Bh+LFIZZDb_^-*NGc4=+mhzY_|r3C6x;)t1O`1p7dVg~uy zb5uA5$~NG!Nu3G0r359~Ev#YV_TQLkT@pqsH`<^aDp!zNKu}S=EUxB8!|^|E(zCl- z*eRD6fYcl(D(dA(T+MYR*@Dg|3u|r(<1a0S27*`An!_?U!#fO)?~bEqH=SpvlqW$0 zjxn`n*CRM1MuluL4fCEIutgaE<}efP6#*KyXt0L)^Q94+7;KraOFnPwJXu9I4z_EJ z<}!Jkq!DvxVaq&_$2Q7{3D(~Ue6`(K!&zmrj3;93z$|x}@>rg%q9Y%Of6nJJCm+Z% z8fRe#_$c_GVI|{dy$LS%>1U00M`7X-`GWoH`Am~JkHT?{#p1mF$GE>#>~*o$Nk&@t7a#H=9BZ`{-A!mRD$yKW+sve8KEdsxQOUXt> z4}EgPNnu<~78vHYjk>e-0gTbOt*Ab@hAQ0n8rKYAz_3V`x)XN>#&|TNbxDQZn1ytG zVjm{JycVQbp>@Olsn-Gli>-0|C0CoVfjh_46w57jk?;Gg<~2Vc30q_3AXi&EpILZ3 z51f8y!Rq>ss9fFbkG-4ZE4y1<#+^efz;fGv$oKW(m1`pBWA8i_vb%34Fd@4`KqO(p z8l1CY{JqQt&4b4(HX8KvB^|rDDSF+2V{XHj1T}H?&us=CQNe%4jQD?uQBhGHYW!Es zjOfWEGDqLS?;L#z-+PLQYfTG?^etC#O)U#N=l&O>Kxa0ZH_F1>=e|Hm!yab!l1uQN zQwPd7Hh^Yd>u}AR`go~pBw<}MnV3MLxhh`BN4dyVRI@2SSa=?J{7o$=UC-;tue~4N z#(pEi<93twUazqJ`e@KH?>o%7--vpY38Gyi+EHfF6hX9FhGmIJ_yv}nex7Z^VF-cE&qXnVDyIcv;wEnbEDQt6Ajr&S?^vD;v zxd#jH-tr=v)};xRfxWmT+v1ULtPgM8yQ-|?uc4A%_lmg26BEP<$p*sW0rhBl@jP+j z5(`1dg~iaf4gWo6;>{IJEO@w|sY3_C!#hSw+q z&!V&tHpR#u`rz+*_mWQ5Sbr$DZh7@#CW7|>Z8$| zw~ZDmF4yDr^)3l(2c1P0TU+ESgA)`-2aY1XXq-}sPI&DKtoc+LH)xw_-*=Q1#-SQ?o)giGnX z&5Si)!;kFNg-U~Wu|^R`_!84mT#9iVGv;SFZ~wxCZrE1N`q0tR$lHzl;79M6fKRLW z6=g-JRQ{DUN?grfxv_&E{QMQO-prg|@!68DFQZs@vt!ao_nDlV{|7v34R}PKe(E&+ ze7N|o)qP=Jb(q3+++k$#aD>Q=nCLY5OS||^yT33muNL&EFA?dU&l`2u5M~jxh@Fe; zgw6|R51LKg2oi28gh5@yk>iJj}G39IKEg&dF~6d4l*bzm!Q&@z=|#_m%{O}n=^ zd77VSqgyl*_<}cDwyQul9_kO>1Sp?*&7@w5v^@xNXC7fr@#o*?kf7Tg2I0Fw6r0Rn& z#J)Y;lEkaT`*>%#Q^fqT&eYd5vDbgVI>WYOn`fh$s2AN)+N_VL`e`$BrPqCaf1VAt zdBQSLPs31J!8VxJmb2Sl)kq^LOEf+>mbFfqjz)+BP<7RP=1T7he*d8!XneFkYaLyM zhF9v*jU}B-$w0X@O614+%s!3eU&o-k3=JXdw@obxJ|4JV|hQV}+kh92KP_ ztccWiLGn<`o1D8{Kjc&Uj@MuQO}^gxE^^Q*ROl_OQBZRX;r)HWj;1#GdU69A)vl?~ z8*a(1#QTYIawu<{IGBrj|6D@Y&sJ4-eibM6Y!?~6TY{V>>;ZkqYe7tM8Qir^evg@u z|1dK;?~jWIe;@RlMw8l-7HY|v<5XsNU*g@d8|0dA6*%cc z2)A^6BhIfK1;~G_D{pZ4>C5HrS%Qu`F|G&nGNUJE$_R&1YV=>s_7r*ov-yJA+N^ zcSIUF_pT~D6yCod$M2Z!h4%h^kh!#KD0Y06t_qLjnO7IT@;laSq8n7F*a0W4Ad?+) ze)bozg)!(udKNjol&>VdT&ojh*?20fe|8WD*i5BvDed&4X&3P&xl)uhGJ;zo;?VI) z+j#w=K0?Ew3^d62s7PnuTg6bD(ZqrAtCYIuLxhIgglJ%Aqe$oUX>O_NEX)(^=M4;= zE9)%MCH@CT6WN0k#L1JUi0Fg$$jJic1ox{6x@tjBen|Oy%*g-4%=n}~VrKZ`&D4%< zSIC-L4!^gYPdoZAfSMjjYF5UP2M<4_GGl%cAMd{=n+EK}35}z;`RAwNv(hKLPFVsr zt+yvVW4Dq;6)=07=1FzL!|biW8Ht{4xh(AR5NY;HnAg_oWP0}p{Y-@|86uoS)ih>9 zkFpkZOZUchdne*_({7-jah7$^m#SutTQ3O+vXL#)n+^S@b(PV*+-2(|i>vHr&H-k| z;*2gGU?v@UE3X9EU%-ERe;wz;ZYRo54(0X74gQ6hhNGj|SB`MrIJW{No{=%GpbJbH zlqT*LCud@@oJD z)BQnriPW*`%KfQ><=M+?332{NWsfN_;K3+Gmk++>dyJl;sN5zZ4ohbV3El2a_ljJJ zRJ*6j{jm*-O0OrxVY~H0Vqz<|e8F|(Ru6d!_63}%-Da4q*C5hkhi`%2-EEVSOvd?$XDZ752Q2`!(FF=owj{oJSVv!mP^1S+ve~Yg#@C zW^bqLX4E`RLKe?Idf>6L`(0~cUV9K3GR%mok9+~%^)HaRbw9jUs}rA!-43(2S7h-m zaGr4KEb>PRqj0N7^QU%Pw{MTO&g63Svx7vFYe8_8v zuT(p)pIiMaGxuh&v75EPhbo)nmfdH&2`o_T^{2SUim`0(k1LVZl|5XU3p^jY6vaMm zr5h(Eu`Xk6q>=tM;w3O6skbdcWq+ju_wY?)d$(>zn$LOh@mr$NPE&>-J7=hV1^AW?*+`{AD z$k0H+>p_Ot{;llxMel;4hjU1`z(NOQvF-&%q-`Bp;4di z_eadw{+LM70k!1Kk|Nx4^)p@Ua)L@UlYt(%o~&M!L}f;#5gkV<(&gxM9RFbuCn_}{ z$2>LW^{+0)ebi=?cE0n;BF_S<-xV+F^**QrkA-{FE+r%W7z$d5bjZk9!R%wBA&aLM zx&25Ol^$V0TMlU>eukuAS#l&!+xP}*dW|x=dIji#Va9*cb6Fok8+3XD!0Yvh)MnE^ zJ<45`IeBvYzHJ^bV<1k(i1dkCppjlb%+Ab7{k#$eqrYBWjT9y)lO-|yBqxA z$}_B5=@8Y-8m!tnLCiWBM)Mci&H2Hv&a-Marm1Fb8bvq!n8At;BuXPcwGv>iEjE4WI$tj~G!J|}fAr@T*mg&6FTLb@ge3`c zGBQxlhkpxGr+sjKA$fst(-zUd@n3~G$|b1h`*vZfbse`fdIsJl4iT7fv5D}925HpU*8NF8P}Vz*&ma`>QXQYvRS743)hD`clb#&tX8E(oMV^-@)?Nyyq z@mRxJn@K-ciB7Zz(e-C%u&!#4rIBv=MEQyx%$>{rICb`EZmL}@tJS#as?PBRM7h5! zb0_H&P8|ueD#_(+T0#W)@0D{4$L6C#oqU+V_g1W0{)Q-#*()sO4RpHYw*={j*obx; z-B7IBwumV49<8ug<^Ml9DKqEJhHPaUdB0POiI%I|m7@ZmJKcH*p7xtGM7wpD$ou8a zCRz^bDo06QbKY8u(WRV~yb*Dn~ki0x(IMwgQ7CJi3k(L|lNc2oj$=($~kMa{} zA&di8jepqDTPdSfwZL16M6@!l7N1>vIDup zp{Cbd8EvO4d$!4{%Fh1@FcXe874`&X;5@T-t>D!#$ZuNqn)6*bl=%4=GSuvM|FX_B zbi}%7YsN?;8fT;8-WrUZ{Vi4GQ88C!m&p{Te?T*us!*}*V8+g4yejg_GPpZVs`&Rh+%EiRgz z-_dZ~tG=D@A&XHgM+*q%r-AU$qi-b_XEzb$MUHYU^Yx15?wSN^dqH@pWi{tBJ`2q- zuHyBj`ob;lr-(Q628hNcC6<)Dv?Iz-kC1CFKPKEV_bl-yf)tJ2KZ#qiT7V=U%fT;2 zSDfUzMsnd^1NVwNEKUmOB{IrwMvi^JgK^b)!4o_gIr{ycKk)2-kx^5pEdPv|H-*%+ z2Rq1H=^?naWHVJCr3C+(EK)0^ni| zcHKdzXAb^ON7o5FujL{~UnRFtZ!YqS(cpVLm;S;`eFf#BGi{zUvaAIUJs89M2)QKo zlE_iOdRX;`9fZ|^@GASQ9&G3{H;vjc*VG& zHq_sGtT4p!FNN#oWyHawwaSFcU7W{U0!^=d2tMTUva?;y62s>aqWmyxagxYS`2E^9 z`2r`dfYxGEAr74?p%$`@$`#gvgzw z)?OpBd@J-0#$^*tUVh~614nVvgmawCumYd4Nml(FQ;JQlwUT_k6?s|hI@K>qlO8ib z0cYUr5^mLLJx$?oH{8+L&bMH;KvZ3+~dEc@{9Mf{xE47U*L5gl8)@oY+%Zt z?Vd$92A=t|rg|3}u$ntTa{C0;zF{U608Qe-0W~~nsx_%5tmiKPSZ+~gx z=DJ=$(f(U`J>y`aN!vqGzUd;muwtw@X@06`;5UEdSP43`$WX!P?o#kc`@Q+5*&+X7 z#-;U-n6WXiq53>3CaWWN;g<9W^7Y^WR00u8YB_eN)^zTpGSA;8ns4kU$Gty^6FOgT zMALm-XdvUY9W}AZ({bd~ac9WO6A{&KdjoaZ)0UPG@RxMwzA~B@1k&sy0pKaE&G6zv zIL}-nLqg}!V`SdIOf%9lli;auIh^Ts0A_D5B;-o_m#UROq_&ZPS)Ud`%!~ zUqQ~->I?jiScNLNcr%mSeCw)D=T@RNy_z|=AdKI!Xa;@%vN0RJ0X&Yp!7F2OJ<|DZ z${X&N3U3X%jm(@MC?0mbc79{9hfvNQBYLs(+}da&+ZA79Lhfy^R>twR0%qclk|CFrR8=IbGiq%} zebr99W2`&QSO-1Ib=5NTCKk>!`y~OZTVxw8^kI$?d?BoRN$1>$xdVR%Fq4MA@x6eV zY;j`x5YPj|z0wc7(YEbDmdnS$9LKI-nMw6x2bqnMMy?vjQ;U6A9lt>SYUwgA|M_Uy z4fYWwHP?jISu5hNri$nWZ}9uA%aKNAY*Pu3KV{Z_mEx%;3%S2Ljb-0I_E8;r zK13zFv5{H(`6iyym_;{SjAC1E6iFjP?{iC?RwHT^^qc%7!dG2FWExJ0c8qFq4(hr= zn7TPS?Z5j$`07IrGTn7iw8Q*0=OfHS1E)OW4VV6KKH9<(e(_5bVUzuwgTPnBbW)7d zo>f1ck6Gvte!H|4JH9({zF+sDZ+EWq2KBR)2d8yOW?Ynu%Eb2Kq##aMp*0mvPXsTK z<1YloGay%G#qQr?X3oFJsHxBW2cX~ALJTQ8OC|m|Mcx`b0DmlfNS$anL?yU;k(%${ zk(Di*smzTn#K-roI9=?6lcZss_%lJ8#Z>_#32X2y~sk!2LquZy-MAE9o&`k?ho@8it3$3b&dA{*8p zywT{Fk^o;qdb`^NnVH`uV5X1sTrbFPT3ZOrq~kKZLSP2!d{o7C77Es#f$GQCXei8DJQsh;ayoyP~Q{=qaK=;F`zj8wL2gs>x$M{tH$ zLg;&M{n?UzaM%7igLr>7iBYOXV9iC(_@Ffcrg?Q9f7U#cX!!)suliz5Y8+kv!k;Pm zN1b<;W(eNjWOFj>NfJRE*JMS)@ z$E{ty0p-sZLB{)4`JH*Eh-Xv2E3SQWf%oSk^(!*b@aA&)ogWp%GohE_+Kb+t_YEK7 zUeFBQ$f}NToKYeXZm=i|N?s*SbTb#82n0=tH~btO4HpckTLj-^`tLF0{4X@>?x+5U z8QY!()JA(}@)pnH4`0Sm_MP*o#3z2F=Fhq0!Lb2U=7vt9&3pl=z0VOJpjUA7oomRc zS`T==v8C8F?>cVDenu9pZiS4DRN6Q`59SWw-qdG;tZjU$H2d*vSZ7ihpM~F{uWe3l z56`Du)L@L2Jcrg0OgslT)W=pa`r}s#@=g~jD z5N5#43Vhh-C@?bR0R5(Og0#g0kfYD(-(x1^Kg@W>{t+|Q8$+m#Ma|^xcrX0n)(VO_Q%xoK zrjuG5I5NSIq%xBXiBHKtaExLPP8#XX(YZ1B=HXgiv-@>ysu@p?ni&Ok;F(mvYY*wb zzpjCPW}QT@r=u)4w?UfSlw5gPN6s)taM!*!nG7+BqE7XKO!i&`(y_HCLzxbo*8EQ$ z*j(nkG7)Nemm~pN<}$wI0Azmkhjk`cdg-AT%=nK6X3X%NaF~f3U;_H0{Z0d-ULwbp z&$uNXU4&EBdEQ_}(XY&acfDZxCSb;cC{}T-=CY^!#DSmC%}gaTYkxd`WZs>)d|i{( zT++r*T;)L5#W{o5{a|Ti_CZ8)fwK4k8u)%%9J(33m6^3OA3quwfyhg3vUuA#e7|%! z-Pq?b8y#pMja+w-TYNebIlb8nJx6c3&(1D1@y#KjvgvPyv%NpDsByJ2C^uccWaoV} z@tLl$Y|l#aU*#QJzre4ze>6FQJTWpa5b^0;;u4?FP6tl4;NRREmv;s z`o#HtFh{3t_VNZ3u5hzWDM|8{ZQ}3q#p0wcFHuBrCK5Py)IAtJ!a(p zVP;A2A2BmTexEv>J(Rrl@hfxA0Ie;zig@ zsGp2*ekUJ96gS2z_1|kb56LtkcE;O?#faY|o>|k-kU4R@o<*wM zdR#jpR8A3cM~68N*{nb zR`TIMs-HBKwlc2*FOhJGp3Pfk;OAgz_7io;y-j0g+;FQ}ew!gf5|`7yVc$SM<3s#B zTZe<&e&9@NLFGx066xBMR`4NrmjsxF%a%kwgC1o}W%Ph5>7&iyKjS{BGAH*rezjpJ zFmqU(xTcTbyxvCWQGVwahcB;gQ{`7wBe4bk6Im5;xUI? z<2ws+%14aB&5gXY@D1G%7R*j5FOx>@9Kp?fo`qru)bRSM6sJ#Xo)Z^}Toi9QMb3vF zKO;(eY!&v*ZFXum4<{~g>lANF>Nw9S6VOq?US2P$P0^=iGoh8-DI6LW1xTOP5qmZCQyurrNT*Qt^lEo&OstL~d;-qVXh03n)$Z0X; zQLb1j$o%RH{ifg3Ld(Eax$I0(b3AvOR|e z{_h#sx=9w3wzUF6F48{HPVay z&KoS>_6su&OY+#+ZfVlU13^4BsDRnE^C+J+_5k)WG-PUHrX#^d6Q0r;%j{aN;tx4)s$-J+HHPnAlImU7g?S0%4*>`+?VSd1JxDW!hhWNxYH02HTO z2_DFPWl`GeBu?#XxNv?vcpcOVGkI_D(E9;1aWe!rIzfl_*Y9N|&kgwxGiyix5i?fX z{iy6Jb+Y<7)PYayQr*5|Dj^**OuL7X8D4QzMuju+`0)gMkN=M2qF->cW9E=Yw%mZ+ zTOl_6=|NhYTSyij1^rCsBwCg+iI(f8O7z6lvcf1A=xe7|UhdnMi7q@^wft!=x&6^% z+OnmIw$w>P8g7Si=w^4E8FB;e+Vf;js>eVbI6@MjH$#@+3OR8e!IjaY4Q1B(e3jk$ zSHMgN_I(fMnf{R7>09GuG_(piE}FwF?rlb7z3AZemq!1>%$+S!Z0R!{X++usRaa>y z%wMnP^QFG%K*lcSy|)pr^&GA0Y6xKDBNp)auC{c2n?Gyl51AKbn>h!kSmwa~Dfk^- zf)1P#Fz-D-<62Ueb0{}v4#arkcMC4kjl#ZcbwCSf)Q@qqYhu} zo-G>wd85bJ`koBH4+bV28o9MSjG7)jY7t(oHuNFTiUL?Lo6O=qVzgx ztPsDoMh0V2l&;tMm9|fOMl2q_ROwX^#QFVPi<&OO-luh!ON_FVye%^(mW=?t;=L^* zH3t(keU=00>JK{gx}XhNz&5{ip822a_5a02eSP0QV#eMffI3x{K-T&l!fjuhX}4<> zm1G=2YBuj9w|@FWWmFXrpXMGX2OSE>@rRFabGUlaXp=Rsv%CYF(l^NXGC5h$mPGZN zdx4(e5JQ*VR!a1I%VoJ9y`?#}kYQ?`#7u3QUA6pKEg7QombNh0qAkb!BDFqoq)z@c zoVmI2pWXqZnf3whO)-*yEQzezy9RocpoQpHBg3G0j=FeAfCVP4hze$T{-*TS8K z7+-^aTm!e{_(!n|qx!1p*y;K4BCg1+329EvrBrTJ@M|(Rf2z z{Tzi#Ei0Lm@4~pFCt&vEd@GCphKvl2=V)SJEYrhj6}EmECk}P9WLmn}l7qFMpovFy znI5wj;i1C<>4t8{*!+>VAoJ9RTk*pioh=LD4T2^q?8e3sdlEJ|kLg%bdSrb%va%tR z+2iaLcFR8ydm`33k7~HjE&9tGt@k{|_t+C7zj>@f{O+YxkvHW;>5=gz$jWwzGJ9Gt z`OWKL;`hdWioC7%oVQALE_~=iEn*xk~sZaZVwPg6`vBEc7Gtu9n6#^%b?#R zbdUttC&)%lf!x~wSZAzCq<7Z1gU?lLWll~9E-4EGW}rv8MI?xfg**}P2Jx^wgz^@0 zypfyHFU-_Awz{nG*dUGEZ_fJ-+r`?>{D3pm>{0KVJ6Y#>atpaQym5R6c$aw!KUW2#@#_vLO>dr-8`s((RCiQyvLssg`FbrHzj24s^u7t_ z-qR8(GkWkw`EgDoqsJ0A3!W<{)v$77mwO03Jfk?dm3JC(%b&RUYN>M4wF=IA&p>Rv z+6v|lrg6iKy(F2HdfbbPupdpIAw0k94HC?Q`oorYf?a#{VScCm_n2}17aH}=O@G9U zjf|jzYCFlA*WM^Z~>L z7`N@a3CskF6VH8dto;GrXgdSB#Vv_Q(#wxGdYbw8+n;iZJG|)_!}rSP z*Lpue`yNqD>1i|6l;_JG_JZdFn)$W1FX_7umhAg4u-9B1gh%_nVs=H)IO|aboNepj z{pYCZHq1);k??#z&U(FsZh-kI+WHt|F;C@|FPn$8wq53plP5dpoJuG7iM1l@r7Pvb zV2-lr(N%?&>v-p!L$?WDNQ$hfbKKkqJy2Vq6K^>8yCSP^DM8+9P+7s^DJQ?cbK^rJv(w5Q`q-h5k8{gt^rfC$cGn!Je9(t6>RuVAt zkknuj^bSIN;I4g3y7WRC+_jB>nZx)@g$S4#CQgi7>9|O1CET@D+@eFv(5m_Nynfx; zUzoYOTaA^wn@S`6I#Bh=qs$ENODH;YBntCQXP$o7K%1VMpz1xnnHl@FP}JKty8f?f zHY^K#$cx;#{PB~Sl;(+uP+mh}D>>$wC4quPOSyczc}z;v9YoB3PuJxfV{5HGOCuj) zZr&t0y1i7&>ptvMthxbaC!-%L9-ru;&<*&Gj7QIsUq9YgvFhAILhRe9cswV9Tg-h% z34z^s!z~`p`+UlY`+kJN^^>+jcN0R!w7vXVTcz_puj#~nUn_;{6%prgXA7$8Va^-b z7nDuQUqGuWmZ{D!A0bZK8X+Q2?M8yNsp7>*L_1}MkW(2o92_I?Kg4!H!JQhi)wO1(OJIx zy587y>ld=;i)mz$67Je(INE5_aqvcaF40@IQ8uB)O`2VH8ax=!$U+Tdus6AoA>y;N z>C@%3rCuM@Z7YidCWPS=bK*b`d`uc%408w0nvwu#W0~%`G{|HJ{S0WjXYKq{Ww)3H zX8iGuR}3axyN%eluJAmS6_|A5Fh54o^MBM+Mg+h3zeLw_8l}ZaRG0zf4{QVN&_@6a-8B~{6%47 z=ovJ6I^%So^H%m+Zi40ou2NiFKbKqBTMZ>LoxH(=3F2DEB1w9CGO@P<>cGoNM8k7h zk-*6fzDb2(ar!ajxb5|CtuyogMMh0M;@F=t6Hr8H_qa{gCN<(Vy)^3Qu+>zeKX}*U zT=Gm2==3Is5|6nxScxL=!MU5bxnJCH>FUY6LCbaAJM9{FD4RtVra_PLfHCzXe;(u= zG=Qgc3!`V@D9t{nfH_J5v%v*sRc?8ZA^vZvZ^mwrEw~(Msz~{trAHFfD zoNjF|r>RQwz*TYZjQG4woNeO`^eujb6A z9|(~~jm_me&%H+T_b%m)gzFR^JeH$A$rF@LR?p>iCo{$MCdtb3@NbF_b zm{4wM$O;tI<;)vin5xiNnt?)_JVmQ1e|f!ymALNH7iD?0heBi5TNK*%LbU2fD!10B z4dv$T;EfO4a;f|b$rUX(mCYlVHTa$&8ZZ-IH}vHc2Z6&^tjwU=?`ryS@VoR_(r20bv@2^#XRGQ>ho+^Tjs&s>nSo;(U# zh|85Z*)Pb+k3px`7v?Dc@)o2l24B;)8@VN4KO`v8>Nx9+9wu~1(W{M&U&TTG zUV0GPRc6fO@ab445U3s%*f4(iZv4F?gX#K#x@`Yzk+KPw~X@?)N#b^$T&ql^|a4`Cr&9vyqG$fypAe7`#L-Qr8Fd zg}yfAQ4Y3|ot;ntHNBaj?bMb%c|Q+odYR;QkGB+_-9is~bpvUIKEY#OEW;Tuc7p%R zHrd{JJD{eQE(tJ-lqL8K1|{S==!`vS}m;>6{B1aB9B-(YZm z&buj#xU>Z{QEHN3m}#(XW!|khAdRe^M@(OA$h}@^wepCV z!+8y#6M0=Z7gVgy)ch%D&EPOOvbZiS~j5`JB;%H-S}?u_VsJHrJ^6TpLC!S4icp1+XLj^#^F?^mLJh}eJjoj zqj7wYE4OG>Fysdm@!E>TxVJ|h>DslIEPMqyaaGspF^A*m(ogmhy=h6Z%TwK?Ir>?Z zm-U00*^gU554?li_7rk>jz6ONo z8|Y96n)71ull9JQuMf7Wi<94>H`Cz#+@V+3KYl5GIxvLo^&mlY@!(*(;bQ^o+e=Rx zY5tt^dZJPIRDYJz=-dsnMP6|YVP4gAYTN~l7{X?uiZN5-{>{c`>cYsK+cmcO; z`!uv}>I%q$x$I={7e+&$OcVx&XDgOpjzowv5vz|+cG9mpgoak`7Y05X&n>W0-F9&6K1yu3Fb772Y;27zs1agf00pBPjLPt zW`-@?Nd_e@CTmvg!!2VGZGK@Rm1NtK)bz+F!}teO#+@3Xy(t@Se%~7>?q19>PXsu- zdp_S?u@PqcUy>)Mhmr;UgP}f?N{>I{L6@eSm2^LUh?)OQCe3~-hklbja5)b zvns*BOgbJl7Us3hE`qi*%t%ZBk&|NryNIIIK zSQ6~(G|O!T(%$JHqE{?Z=*qf?q}^i_OQ<+*byhHHT?Ah1Pp6ix_IWI^ZEr{0qwoHc ziy?eJtrJaO6b|3yxRZ7Y^qbaf|2<~@!Q}t`Qctmk-~IkNGwc&dX%<3>V3Ps{x zR>9wWWJ$|4A4>Ej!LqLzkl*xdTIFR^ZN}h37ig}E$&jIkXglXldQhbjX&hgMZlt^5 z^spB2?YtqIzH%q5GoXbS{8BbV544@jK7*IYI_a)}bjZjk0%n}>b!(W{HVc8?$^^mo zAyc9651RaO=E!iz72fbj>MzVRjQ3+x+E+;itKP@?s}c?^ zWjxf5VC#y3bfZj-m0pCJ;p_gK@8lck%#10Z?evjnru9Po!!v|E`g;nkA00+U)Mnwb zNB88Jo&Ko*{sqDwhvsk#7Fwa2hgQ77LJMKfGmiYlJ;3 zS_lC%SCM`Ye8@GIAQ5$tH+nyd+uF|5Zg#15Zz<=h5@gFfW)cz5rQ?rY_y|om7IK7$Tc5zffhdcDO(@EF&6;$SmeZ+?z z7xCDGYB*u{e$Kb%4CxxYhS$Hf1o!4_N!RucvT%1Z)qg++oqygK`b{R_C9;vx(U|}m z^5V+NgFeb`?&wjq{8c@<-6x2uOj`u~rXr;6`xWb`=HU|;?o^)KkS`mdsHmFh+E)_b zpC{|D`UrbdIxurgvSacq$Zu)^X3Vk3P7KUUgFC_lL4YI7FmD2HmNYHYv(p&zL;t_I z1F08#2EqBnN=+4=oWyKQp9+2`gH#n0OISV6PSq>dX{zXR!OX_kE%;OboKHqNvnShk zNh4QwmDwvhne~aIu>I3uRYhM9R&PeZmLW%fJZd0-^A{}4boJ|7Kx(+S98Zsa^Y zhoST3Yxo{5dd@#y%ZcddIOTW?58)7_T-0mf2Is=reVl*xzeGewa?0`Q>717+6UFz` z=MCs~fy)TcOE_Ug=E_##;MPdgYrchZ!8;EDn^{2YwA-l2+#=&v5+XEr5%}pbkGcIn z?$Fnt!oPjad~ssSZINN>CN!OcI%kH7AoP$Q>`lLyuf0J2A7+ks{t+|wzDnwYqJq4= z?=x=2{?y%lpQ(foeMl|S*<{T^=xaN=5?%56Wc1R3_~6f4&V73lo*wa(@9uO6_ZFVR zv4i0}Q&>;+i$6sN(uTC$)>fi7%AbjwdIEf|mViz#o#}Wig)E-OWXRNIbe|dTfSIkt zPs8n~bkt0oR=ftzz^7#E`Wr#!*E30gHzmyt6~Mje9^AD(W%CLaRoMk(SLS53klHJo zs^<6k4w|$Efo{xbxHrw=mR}x<;%z7J2I1wutTPX^%Go=Udq^YepyVZ&^?akM{MV-EMAaRn+ryU|Sl^V4}Zhh|lNVJ_SK zR6l;tD|^+lTQivcnZ0?}Hy)7R6y>6prvvj%3%I~x!Kk@};f+k@D0DlEh*#%_2$Pg2 zgqu%4f&8yzk(T79Lih18;#KNEVbWi1oZt9~s8#}5FpRcPo!m#zA~)ggC-a4y*A*kJ zCQ78WP$E?Cx0#^F4-@WAf$W$&N~~7#l{awcBF+ramz;WAO)xMUnAAF0q^Ab{t}o%P zoh%ge)`z>~nqI%P&ba@JjGB7J<3D0%_>Qa8wI34lcHCS1VgGG<`>j|i@t!@YXE&gEKi^kHMhxiXu-e8UPgQSiLXN_DQ) zp02m7XENtCgBSg6uIro^qo=S$!?(w9WW_PYxnVSaS(V9k9d~B*%3G10!9&pL$=Qm> z52X&sNSXqC88k9F` ztX;?JDJV{>LLzCrFbJKRXD&`wy%%Y3&xiUfeZRS>0AH_w^ zxx7x}2;AFDgB;S413k*2kj2wVhncK|`KHejz12&Yk=IQj?*P`B-fx(&*dgHcs!49U zaDuAf#Pp!Lw@7=`0X%v3OPsDnLGNIUY*zOJP}7?z2@t8t_Vi(7W-|%MF#RBn?%N&o zz%PKAP@MA(>cD+=h!dku3GN9Bk)!N3=V_fq9OylWH`Jc<3p4eP=CK}*X41$bZF~=_ zU{=>R;p)U`D^y9kG0eR%Q&k4%#rH7LWp!ssu1*xm==#KJHraczG~ycpKmXU5GbxW% zmp)%qC01lI_jY@$GEV&9^(PiFXA-WfE)Djl?>gnNW&7f!k*@+cpAjq2;s96hU?haW zTg`~?H|<14heio?usiXo@Ssro`HC>uE0XwrE<;q5=E!+>TaHdW*vt1QIwm|E*FnfF zrV49}4TL&c4aBFiXrc6OxbX0n8HBulx$t&cJ~!8SBzmMJ<&Dk{A`(8lkrbWxQ*A#3 zo+|S#MOLtH2`0dKIC{9C*6ccRlq~o?We>IKw!`4*zc8Qmmh^Yck(jY@d9ihVB452NV1f-i6fT_2x_*7re z&v>}XPJDp9N#HCAm{=#9)L#QU7|%j}Q;^JMvM+eO&IV>y;*FwmU}gq*Amj-4;r^gC zdc=8pC!zka{=ELP{l79}m*+A;1a;kU&8jD5BUn9kCqjL@HE(Jf&N#HJ;O`vYq10(tzhVO8Wqo zn^T{LVi5;Ay&=R2Hc+x}SO|A^Y)^60=HtRc8M#Ps@PasTyPn`s;V0OytA39e`G1%> zm-I)>Sm*7c(45}n?Jcu#o6{ib!qI3dvCEj$YBi@^ri4_(g*t>MNS zOe0;j6M3C0rnt}gFXa1~zU1XC;6r}yIh8Z(7WB1eNc432%Q(|z&^uTNckOYq@LNGu z%lS_7ua9Z;iqSE&C6$kK`VPX)^Wt%45a?&THKbtr1z9{rl7PcDvc1~8%q&);GTLyF zv@RQbuH0Z&C2Kg&swoC$%poHqTW~*rGx+ncoNvKfEy5F{i)z^SY)Us!QQ&jPbn<{IgSYRmm`mefsTjUU$f4x?vy1_UrdV8aeSPuN}OR z?WXxa_37ao)upw;Oi%TE{#j}Ouf6In+fB<|)n@R6ZYZ#1KQBm;Mke3jd|$jp3Uedg z;GL7u-D?CC9ev_<4Or1?Ovk!pY4S1Q|=RGlm8Z8of8fi{`)S6ds5k4bM|WI+NA7rK9#^t;9aOVLu<`o@1*dI~)3P z%?Cb;lSb?nSr5I0oO(h{Prgs^fSrgO6X*XHGYkJkMos)m(ujGC zFYVurPlb+ybtXl&&qh==b3&FRz~hTdmRuq;+f@UeMVF-qCz*gZT1REhnRcA17*jRh z^ockzrCe~VKh((&)^H2wbweXo=JERGzh?2=jX1{MOZ^J@+Uej$CtD@LaYXglP?E~w2Y-laP1Iy ze{~Zax#9yF>EFvrUg-QUH0p(Zf5uGfVrrb)Te2o#GyXKUlRBrfhf26xL~5SuO%@zi zQJF`xh>oW&_zAeOBzy$D(5Y^?X3}R~t34U_9C;M3P(TnBR74~=7z-osdcOMJn(@b5rTpsZ zI={Lu_St){bzf_pxi2OkH3WAu9j?DVI4X(?`=of_H(s#L@-`+Pw^0xnFo#*XU5WCp z?PEFe2<$;uh`8N#7`YwF7iH=s3kD*xpw9~Gl}Q(P?!TRc-z4h$)|tqEF>`In4>2<} z0Vfk}R}hU%HU9S}ee%naN-|?%C!y`pNR*a<7ouwpHrQZHklqxY%8g_^raR&Fk}WL9 zAI?op`NXNNL&O#3deZ#o7HWqM_-DAyVtt#J(jr4g$=OGr!E+TzbA4;UbJa>j`l(S) zOB^UG^)pB}s0W`~Is-rb@Y4E9K;I6+}8$ZrivMB{>2W!Q^ z%niKwz$9P>-1P;vyb3Awz9wPtKllQR?|8~`XD5HdOxxW~*^yWoxX$K^I+Emc^uQXn zy1kH{;xmcnCMKy2zlMl9wyDw4?=Q2}%wDSXP!D}S)@Z>h|hmw@-&7|Tu( z@1eP2&s2ubZIRDhUzs(szXAK7uMA!G97atfRmC<8ni4Lv>m&gSM z@hp}?t$!Eq+@Kve80Fu`jQn5BD4c(Y89N6xfJ?2)w{#Dcl1ukgn<< z3G0kf9J(P}x_)ZB)O6Q#s5f;>Y~Q5UPxGn+W>(=H-PBsIoTAJ_%;A3e+01-gcj{K^ zUK=Sp=kit($8lgbh7aKC;+3pXnvWpJyaTJfw5KZ1Xnm#IzOP8Pse-`*T0hd=l>Tf(@~U$+HPJgzz-;Sxn>_ z=)aC!&W`RVh5H$bkU41(;z|2|c#JezyhuMx4!xh}NFR`N7k@QrVI`Xc}?vDm# zPvk80e(Y=d@J=3{@adp3b#AWAZd0eSCt(NGb}(3$xBG}BPNSRg3)jURahL`CMWrZH zS)Ws0%!TNOd%TkN`5fZ~45B}G{cfmT1TRg4`rXS|QQA#-vsWcD=#Rt2?4G)f|f zo#mnkvhKjHull68f9a0Esxbixzs3k+f8Ndb;~FT#Vi#*vkY1f=Ss{Mv8m>I~lolPF zI7$#Q#})D1;m+#nT3&}Y?D3*ozmFL{VDkU})NhV}Pv2i}vUO`Dt!Njb>1iDP-ldCr zdL^4of7C^2eI7+d7#<<>RLR)8YisZtK{%dKIgSZ1n2H}+(#smPXy9YQZ3(O%=Bm^! zC(X(!YEDuFC8tWn`qE%&rX&*j^x)jY`6RX9{}6hvwh@0Mj-<4NAK~3(f((BS!2Pus z;f0Hx;oMXr4Qq!vajuZ@KPHxH_`fL}DBBL44d=4^gQm}^eEWTmp-my5@$^YgE9w?Q4Rr&P8{#@ndlpJ<*u8qvtHC7ea zpQY@(Ge|#tzfyTQ@iWz`3YL{mfE+<|CfZLfr!UQ@W1UBrvzzly!t(>Fz}GX;erXPU zX?{KH>^DH&JGVp@G$IK+684P8j8!P*#9h|NxKiL!e-LX@nhGu!X$UnZQpj2-K={;u zn!x3e7;94H3of3?W_)zC(fu`tS*~ZY+$q}=J71z9obEd$)SNs9S?f*`KHczK?o>F0 zoxf@-oSrm+@u*Uv@R*~lp`(^aPbXNMJol_HOA#nK$k7o-7C~0)iyY2Pw!B|H+=O*z z()TeF`M<F=9X5m+ruyR0iu2Os zHwIGE*rm1cx@D62dbjGQEuL3fc)A|ujvWDJ{J_(`j`yTF8ZAl=Vb*nJp#7Vsvz%(? z8)n)sjF5f44D%&ddzL9)Z z|La~%^e9>ExyS*YIRgEpTqS)6N^T-VQUZzI-1u@_#YY(E3BnOmLq` zD)(v;w})Htzw@NzleT)u9ViLysT+y*FU@40&sl6JtBK&$IpXR1yO?!b4iY*Zr&%uj zJ8t~`6~Q?ZNR%rhNOS%+%D(CaC13tVtnaXcwlQ&sd*BAR)61icv*PO4tCkVF-YY1J z>z84jS%wlSNBMudNNEdF;0uOlvyqkKZa~28fr@6%e zGX=z)cF4qy9SdiKF5ZFgR`8JfGiz55py;x+|9a!UVWw@u;9|{e@X6$FV9(iok|o?Y zsM3D%m-31>k1kp_2lwtYV$V65$r5flsI*@}E;1%l7IusyiQTsr*@S7)^?&uTr-vUY z%T+OSQLsAheQqbR8Ja@Zvr_hST^ZFn54@dMV778d5#u*44Oj#Jo_#b_OV$CEh_s}zWAKs5OPJb=98xk(y zJ4ImGd-p5en!CyS>ix0Cb#;QfBa#_!Qh-8xZ?asUg`z$mGx79}^VsyWuA)rJR_Lv# zLOdJrb|&`ljte03l~nUx%y|BTjGB7We*yabchl5JcQW%UO*Cru;%_rInARZ~Yg{sj1e>k5cnnJ3Az2CP(J-)KGbL<72GPV32Oaud^%sHX#_+By;J~P!^hc zQLP(E*w$4s5&EDCq+{o^1qoX-l?5A@2DTP9$Yfq8?TH{4%=dGz0c0W97ka^@xs|%g?-!B2Vt=z$(2=1x3lz<(qH2AbR%~e%44H zul5>!fS||emFWN7>1A}!gG}6Zap+39bh>+()HG`{FtbNu^%;6Q z-3NggXS{zyAut1ep7f`@*wavtJN1!S9efcxKX(DFd*8azng`St|MU~MSW~&EKiZOh zw%8A)6>dhkX$f@k-C0n(d4T$}8t7+!^HJJw@zlK|+hkcKa1R{zhw|v8BQoFVN$jP| z6w0mlri;7NS)+`l%AJ z{)Gw)_cW~1&Owl4*&(pW4MDrBJ%oCJUW{i>9d_%rAIsgjz54C86!DBzIo0<+*@-g$ zV=U-VgKXfPT2V&o7G8>H0Q@E~-^WbkznFQD{6oyx1@w@=_3tK{q9X9Vws>;r#9}gC z3lZ9BK}75qKQiytOYHIH2I9|;HF(Au2@@o6BXpi5vRtQDn0qTDMp$hH&(%HBtWQ9C zPdG%$O=gJoFZ@Jf=l_%xs*~XD?4xV)qQO}NXYHLvQpPwNp?-O9M+9swjsemmhzILT3WIinauo|PADi->772sHvIKgmhvi1 zwX`aoYE_rZve)>4uP=>p7r#O5L5elF_nJTas~7fO&rKK+W-dSZ?izN~^|LVR!z$Y7=@Sg`wm2Rl*iIA+f~a7a=6>RejhXP ze=*a!?T47Ly`Dy{O4KD9Gf8~#a})WFzm-gLF(kBlw-L7cC~j`I~sq0u8aYsb(F zmpVZI%noAL<6JV`M+h~_7^G`B63@If2R~CYwf5A83Tb5TW$@{(6^Bl+kh%{q1P7xY z^mew2UsW1H|BO{_VSWvvb@3H2GfR{a+RQ6(*MK~GBGh8yFc>P!a@SRS!%UlPr%dPX zjgr{Rnb^Q4CzzEw~&->EDKUrhNWUw-1YoJW+%>~xc&zib-$4M6CGDQ;8Rm}KJYC*ck zR-ozalKCA+)}qOFEv`|C9~C;MT#;727Jr3HFSB`CBRbKvjx{_s zli!YKBl9r|!T!}-;Q5JYva7ah)NPjE{#zR|AL%UEKapX)7QRBi=60|K!VE0BZj*Rj z!eo?N_fC`+=p(ckn~xU8O%P>l^WmOv))VsWYh#9*n@5#qg?TN0cgfuj|S|5SZEOMM4xc&7>6s(i;0NXtyS`SFThuv}l`)PC zPEE%DntUEVvjMUy8%IO-)&hF2qQQ-pB`w?n%xoMDS(RaF>DO_<%r0Q25Wk`D0%kP8 zjaKKXTfPeVi&iln%i6Gd@8>Kh;oJR8%f*#4`q52E%wtTcw&w<&{@D#5+8c!WEv;o5 zgM-9G^_xnygdRFWZ7)8wBa&*_qb7TV2TEcSrOHzq@@OM&ol56YB(6wY%G-soi3luE(Dse%o=wMKVFkt6Hv@ijBJJX-I z>g+XwjDPj_F~k1{8ucFX$C!y+NCt;*A{yUc!Uw&^QZsGdlj-+A654GV#QyVqGOx80 z8#FjZcxJuBGnVq1;JZSC^EHR%mbBugVFtt=**fA%?grA#t%@q1A*JL_hGPBHBsI+g_ST8`qkRd*8F_@VQagb3eDYD+wD)+Cw-Ry(4bs96Gw?#p0yo-H zX^uVAC^r~@f5sZb{+5tCI0wvN#FFHK`c}Mb%-JFRa7m55vm}~oA{%5i!O(A006snc z+emX+0m}{XxW4cGcx<3FOu$Kg%}>pY!ZN3a@t=>%xxT+g9~-#&PQcCC05!5slyY{M z<#1y7dFSP#Zntou*fWZsy6hpAY3auA-m1mVyZu_!?bR(5TW@EU&>zt4>+P)m{3NV# n)>Uz%*;^EOfFsI8Dxscb4q5~?g$!?rE5}#`4#wdBi<$ocd?{(F literal 0 HcmV?d00001 diff --git a/tests/fixtures/gmx_mmpbsa/gb/gmx_MMPBSA.log b/tests/fixtures/gmx_mmpbsa/gb/gmx_MMPBSA.log new file mode 100644 index 0000000..69c942b --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/gb/gmx_MMPBSA.log @@ -0,0 +1,432 @@ +[INFO ] Starting gmx_MMPBSA 1.7.0 +[INFO ] Command line + mpirun -np 6 gmx_MMPBSA -O -nogui -i mmgbsa.in -cs complex.tpr -ci complex.ndx -cg 0 1 -ct complex.xtc -cp complex.top -o FINAL_RESULTS_MMGBSA.dat -eo FINAL_RESULTS_MMGBSA.csv -do FINAL_DECOMP_MMGBSA.dat -deo FINAL_DECOMP_MMGBSA.csv (reconstructed) + +[DEBUG ] |Input file: +[DEBUG ] |-------------------------------------------------------------- +[DEBUG ] |MM-GBSA alpha-zein Q946V6 (ligand) - ZmBiP2 (receptor) CHARMM36-family, 303.15 K +[DEBUG ] |&general +[DEBUG ] | sys_name = "Q946V6_ZmBiP2_GB", +[DEBUG ] | startframe = 1, +[DEBUG ] | endframe = 1001, +[DEBUG ] | interval = 10, +[DEBUG ] | temperature = 303.15, +[DEBUG ] | PBRadii = 3, +[DEBUG ] | interaction_entropy = 1, +[DEBUG ] | ie_segment = 25, +[DEBUG ] | c2_entropy = 1, +[DEBUG ] | verbose = 2, +[DEBUG ] |/ +[DEBUG ] |&gb +[DEBUG ] | igb = 5, +[DEBUG ] | saltcon = 0.150, +[DEBUG ] |/ +[DEBUG ] |&decomp +[DEBUG ] | idecomp = 2, +[DEBUG ] | dec_verbose = 3, +[DEBUG ] | print_res = "within 6", +[DEBUG ] |/ +[DEBUG ] |-------------------------------------------------------------- +[DEBUG ] + +[WARNING] PB inp=1: aligning parameters with Amber PBSA guidance (sprob: 0.557 -> 1.4, cavity_surften: 0.0378 -> 0.005, cavity_offset: -0.5692 -> 0.0). These values are used for generated mdins, saved INPUT metadata, and decomposition nonpolar scaling. + +[INFO ] Checking mmgbsa.in input file... +[INFO ] Checking mmgbsa.in input file...Done. + +[INFO ] Checking external programs... +[INFO ] cpptraj found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/cpptraj +[INFO ] tleap found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/tleap +[INFO ] parmchk2 found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/parmchk2 +[INFO ] sander found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/sander +[INFO ] Using GROMACS version > 5.x.x! +[INFO ] gmx found! Using /usr/bin/gmx +[INFO ] Checking external programs...Done. + +[INFO ] Building AMBER topologies from GROMACS files... +[INFO ] Generating PDB files from GROMACS structure files... +[INFO ] Making gmx_MMPBSA index for complex... +[DEBUG ] Running command: echo -e "name 0 GMXMMPBSA_REC\n name 1 GMXMMPBSA_LIG\n 0 | 1\n name 2 GMXMMPBSA_REC_GMXMMPBSA_LIG\n q\n" | /usr/bin/gmx make_ndx -n complex.ndx -o _GMXMMPBSA_COM_index.ndx -f complex.tpr +[DEBUG ] :-) GROMACS - gmx make_ndx, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_gb +[DEBUG ] Command line: +[DEBUG ] gmx make_ndx -n complex.ndx -o _GMXMMPBSA_COM_index.ndx -f complex.tpr +[DEBUG ] +[DEBUG ] +[DEBUG ] Reading structure file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] +[DEBUG ] GROMACS reminds you: "The great tragedy of science - the slaying of a beautiful hypothesis by an ugly fact." (Thomas Henry Huxley) +[DEBUG ] +[DEBUG ] Going to read 1 old index file(s) +[DEBUG ] +[DEBUG ] 0 ZmBiP2 : 10311 atoms +[DEBUG ] 1 Q946V6 : 3337 atoms +[DEBUG ] +[DEBUG ] nr : group '!': not 'name' nr name 'splitch' nr Enter: list groups +[DEBUG ] 'a': atom '&': and 'del' nr 'splitres' nr 'l': list residues +[DEBUG ] 't': atom type '|': or 'keep' nr 'splitat' nr 'h': help +[DEBUG ] 'r': residue 'res' nr 'chain' char +[DEBUG ] "name": group 'case': case sensitive 'q': save and quit +[DEBUG ] 'ri': residue index +[DEBUG ] +[DEBUG ] > +[DEBUG ] +[DEBUG ] > +[DEBUG ] +[DEBUG ] > +[DEBUG ] Copied index group 0 'GMXMMPBSA_REC' +[DEBUG ] Copied index group 1 'GMXMMPBSA_LIG' +[DEBUG ] Merged two groups with OR: 10311 3337 -> 13648 +[DEBUG ] +[DEBUG ] > +[DEBUG ] +[DEBUG ] > +[INFO ] Normal Complex: Saving group ZmBiP2_Q946V6 (0_1) in _GMXMMPBSA_COM_index.ndx file as _GMXMMPBSA_COM.pdb +[DEBUG ] Running command: echo -e "GMXMMPBSA_REC_GMXMMPBSA_LIG"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_COM.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_gb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_COM.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] +[DEBUG ] Will write pdb: Protein data bank file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 +[DEBUG ] Dumping frame at t= 0 ps +[DEBUG ] Last written: frame 0 time 0.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "The great tragedy of science - the slaying of a beautiful hypothesis by an ugly fact." (Thomas Henry Huxley) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 2: 'GMXMMPBSA_REC_GMXMMPBSA_LIG' +[INFO ] No receptor structure file was defined. Using ST approach... +[INFO ] Using receptor structure from complex to generate AMBER topology +[INFO ] Normal Receptor: Saving group ZmBiP2 (0) in _GMXMMPBSA_COM_index.ndx file as _GMXMMPBSA_REC.pdb +[DEBUG ] Running command: echo -e "0"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_REC.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_gb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_REC.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] +[DEBUG ] Will write pdb: Protein data bank file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 +[DEBUG ] Dumping frame at t= 0 ps +[DEBUG ] Last written: frame 0 time 0.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "The great tragedy of science - the slaying of a beautiful hypothesis by an ugly fact." (Thomas Henry Huxley) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 0: 'GMXMMPBSA_REC' +[INFO ] No ligand structure file was defined. Using ST approach... +[INFO ] Using ligand structure from complex to generate AMBER topology +[INFO ] Normal Ligand: Saving group Q946V6 (1) in _GMXMMPBSA_COM_index.ndx file as _GMXMMPBSA_LIG.pdb +[DEBUG ] Running command: echo -e "1"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_LIG.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_gb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_LIG.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] +[DEBUG ] Will write pdb: Protein data bank file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 +[DEBUG ] Dumping frame at t= 0 ps +[DEBUG ] Last written: frame 0 time 0.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "Teemu [Murtola] keeps beating our code, but that's fine because he's always right." (Berk Hess) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 1: 'GMXMMPBSA_LIG' +[INFO ] Loading extracted complex, receptor, and ligand PDB files with ParmEd... +[INFO ] Loaded structures: complex 13648 atoms/876 residues, receptor 10311 atoms/663 residues, ligand 3337 atoms/213 residues. +[INFO ] Reading receptor/ligand atom indexes and building residue maps... +[INFO ] Residue map built: 663 receptor residues, 213 ligand residues. +[INFO ] Checking structural consistency... +[INFO ] Validating complex structure... +[INFO ] Validating receptor structure... +[INFO ] Validating ligand structure... +[INFO ] No reference structure or chain IDs were provided; assigning chain IDs automatically. +[INFO ] Writing fixed complex structure to _GMXMMPBSA_COM_FIXED.pdb... +[INFO ] Structure consistency checks complete. +[INFO ] Using topology conversion. Setting radiopt = 0... +[INFO ] Building Normal Complex Amber topology... +[INFO ] Preparing complex topology from complex.top using 13648 selected atom indexes... +[INFO ] Preprocessing complex.top include tree for complex topology conversion with solvent/ion removal... + +[WARNING] Ignoring CMAP terms in complex.top include tree for GROMACS topology conversion. The converted topology omits CMAP energy terms. For STP (single-trajectory) MM/PB(GB)SA this is not an issue: CMAP contributions cancel in the C−R−L difference. Consider the omission only for MTP (multiple-trajectory) calculations, where receptor and ligand come from separate ensembles. + +[INFO ] Reading preprocessed complex topology with ParmEd... +[INFO ] Applying complex index selection to topology (13648 atoms selected)... +[INFO ] Prepared complex topology selection: 13648 atoms/876 residues retained. +[INFO ] Assigning complex coordinates to the selected topology... +[INFO ] Writing complex restart coordinates to _GMXMMPBSA_COM.inpcrd... +[INFO ] Converting selected complex topology to AMBER ChamberParm... +[INFO ] Detected CHARMM force field topology format... +[INFO ] Assigning PBRadii mbondi2 to Complex... +[INFO ] Writing Normal Complex AMBER topology... +[INFO ] No Receptor topology file was defined. Using ST approach... +[INFO ] Building AMBER Receptor topology from Complex... +[INFO ] Preserving Receptor GB radii inherited from Complex: H(N)-modified Bondi radii (mbondi2) +[INFO ] Writing Normal Receptor AMBER topology... +[INFO ] No Ligand topology file was defined. Using ST approach... +[INFO ] Building AMBER Ligand topology from Complex... +[INFO ] Preserving Ligand GB radii inherited from Complex: H(N)-modified Bondi radii (mbondi2) +[INFO ] Writing Normal Ligand AMBER topology... +[INFO ] Scanning receptor/ligand residue contacts within 6 Å (663 receptor residues x 213 ligand residues)... +[INFO ] Contact scan selected 47 receptor and 30 ligand residues. +[INFO ] Selecting residues by distance (6 Å) between receptor and ligand for decomposition analysis... +[INFO ] Selected 77 residues: +L::THR:1 L::ILE:2 L::PHE:3 L::PRO:4 L::GLN:5 L::CYS:6 L::SER:7 L::GLN:8 L::ALA:9 L::PRO:10 +L::ILE:11 L::ALA:12 L::SER:13 L::LEU:14 L::LEU:15 L::PRO:16 L::PRO:17 L::TYR:18 L::LEU:19 L::SER:20 +L::PRO:21 L::VAL:23 L::SER:24 L::SER:25 L::VAL:26 L::CYS:27 L::GLU:28 L::ASN:29 L::LEU:32 L::ARG:36 +R::ASN:252 R::LYS:347 R::LYS:348 R::GLU:351 R::ASP:352 R::GLY:354 R::THR:429 R::ILE:432 R::GLU:433 R::THR:434 +R::VAL:435 R::VAL:438 R::MET:439 R::THR:440 R::LYS:441 R::LEU:442 R::ILE:443 R::PRO:444 R::ARG:445 R::ASN:446 +R::THR:447 R::LYS:452 R::LYS:453 R::SER:454 R::GLN:455 R::VAL:456 R::PHE:457 R::THR:458 R::THR:459 R::TYR:460 +R::GLU:475 R::ARG:476 R::SER:477 R::MET:478 R::ALA:496 R::PRO:497 R::ARG:498 R::GLY:499 R::THR:500 R::PRO:501 +R::GLN:502 R::ILE:503 R::GLU:504 R::VAL:505 R::THR:506 R::GLU:520 R::LYS:522 + +[INFO ] Cleaning normal complex trajectories... +[DEBUG ] Running command: echo -e "GMXMMPBSA_REC_GMXMMPBSA_LIG"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o COM_traj_0.xtc -n _GMXMMPBSA_COM_index.ndx +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_gb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o COM_traj_0.xtc -n _GMXMMPBSA_COM_index.ndx +[DEBUG ] +[DEBUG ] Will write xtc: Compressed trajectory (portable xdr format): xtc +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] Using output precision of 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 -> frame 0 time 0.000 + +Reading frame 2 time 200.000 -> frame 1 time 100.000 + +Reading frame 3 time 300.000 -> frame 2 time 200.000 + +Reading frame 4 time 400.000 -> frame 3 time 300.000 + +Reading frame 5 time 500.000 -> frame 4 time 400.000 + +Reading frame 6 time 600.000 -> frame 5 time 500.000 + +Reading frame 7 time 700.000 -> frame 6 time 600.000 + +Reading frame 8 time 800.000 -> frame 7 time 700.000 + +Reading frame 9 time 900.000 -> frame 8 time 800.000 + +Reading frame 10 time 1000.000 -> frame 9 time 900.000 + +Reading frame 11 time 1100.000 -> frame 10 time 1000.000 + +Reading frame 12 time 1200.000 -> frame 11 time 1100.000 + +Reading frame 13 time 1300.000 -> frame 12 time 1200.000 + +Reading frame 14 time 1400.000 -> frame 13 time 1300.000 + +Reading frame 15 time 1500.000 -> frame 14 time 1400.000 + +Reading frame 16 time 1600.000 -> frame 15 time 1500.000 + +Reading frame 17 time 1700.000 -> frame 16 time 1600.000 + +Reading frame 18 time 1800.000 -> frame 17 time 1700.000 + +Reading frame 19 time 1900.000 -> frame 18 time 1800.000 + +Reading frame 20 time 2000.000 -> frame 19 time 1900.000 + +Reading frame 30 time 3000.000 -> frame 29 time 2900.000 + +Reading frame 40 time 4000.000 -> frame 39 time 3900.000 + +Reading frame 50 time 5000.000 -> frame 49 time 4900.000 + +Reading frame 60 time 6000.000 -> frame 59 time 5900.000 + +Reading frame 70 time 7000.000 -> frame 69 time 6900.000 + +Reading frame 80 time 8000.000 -> frame 79 time 7900.000 + +Reading frame 90 time 9000.000 -> frame 89 time 8900.000 + +Reading frame 100 time 10000.000 -> frame 99 time 9900.000 + +Reading frame 110 time 11000.000 -> frame 109 time 10900.000 + +Reading frame 120 time 12000.000 -> frame 119 time 11900.000 + +Reading frame 130 time 13000.000 -> frame 129 time 12900.000 + +Reading frame 140 time 14000.000 -> frame 139 time 13900.000 + +Reading frame 150 time 15000.000 -> frame 149 time 14900.000 + +Reading frame 160 time 16000.000 -> frame 159 time 15900.000 + +Reading frame 170 time 17000.000 -> frame 169 time 16900.000 + +Reading frame 180 time 18000.000 -> frame 179 time 17900.000 + +Reading frame 190 time 19000.000 -> frame 189 time 18900.000 + +Reading frame 200 time 20000.000 -> frame 199 time 19900.000 + +Reading frame 300 time 30000.000 -> frame 299 time 29900.000 + +Reading frame 400 time 40000.000 -> frame 399 time 39900.000 + +Reading frame 500 time 50000.000 -> frame 499 time 49900.000 + +Reading frame 600 time 60000.000 -> frame 599 time 59900.000 + +Reading frame 700 time 70000.000 -> frame 699 time 69900.000 + +Reading frame 800 time 80000.000 -> frame 799 time 79900.000 + +Reading frame 900 time 90000.000 -> frame 899 time 89900.000 + +Reading frame 1000 time 100000.000 -> frame 999 time 99900.000 + +Last frame 1000 time 100000.000 +[DEBUG ] Last written: frame 1000 time 100000.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "Quite frankly, even if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C." (Linus Torvalds) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 2: 'GMXMMPBSA_REC_GMXMMPBSA_LIG' + +[WARNING] CHARMM topology with AMBER mbondi2 radii for GB is a cross-parameterization protocol; a native CHARMM implicit-solvent parameterization has not been established here. + +[WARNING] CHARMM topology with AMBER mbondi2 radii for GB is a cross-parameterization protocol; a native CHARMM implicit-solvent parameterization has not been established here. + +[WARNING] CHARMM topology with AMBER mbondi2 radii for GB is a cross-parameterization protocol; a native CHARMM implicit-solvent parameterization has not been established here. + +[INFO ] Continuum-radius provenance written to GMXMMPBSA_radii.json +[INFO ] Radii complex requested=mbondi2 effective=mbondi2 RADIUS_SET='H(N)-modified Bondi radii (mbondi2)' route=parmed_ChRad source=charmm RADII=49428684b38c5b55eb3d4f92c5f0538d10b6f5787b4093c09431dd9a38d95f60 SCREEN=4913fe68b4703518dfcef1f4a42218b20b725e2a35ad339515babecdd081594e +[INFO ] Radii receptor requested=mbondi2 effective=mbondi2 RADIUS_SET='H(N)-modified Bondi radii (mbondi2)' route=parmed_ChRad source=charmm RADII=578941fc9a4062cd54cb1b9e44c87761682369e4bf41d861e163e213a773f51a SCREEN=ca3a4e37679eb4334bcbbf86556d64e19ea520074c318e8a1b4df7fe50bf4082 +[INFO ] Radii ligand requested=mbondi2 effective=mbondi2 RADIUS_SET='H(N)-modified Bondi radii (mbondi2)' route=parmed_ChRad source=charmm RADII=f7ad99a112aa04ac39591bdbade1259a8a31316b4d47d090a3d80864f611821e SCREEN=cf74a45260c4aa77d7c77b0526d240dc903394011d52607d90979935a45ff79c +[INFO ] Building AMBER topologies from GROMACS files... Done. + +[INFO ] Loading and checking parameter files for compatibility... +[INFO ] Preparing trajectories for simulation... + +[INFO ] 101 frames were prepared by cpptraj for the calculations. +[INFO ] Starting calculations across 6 MPI ranks... +[INFO ] Running calculations on normal system... +[INFO ] Beginning GB calculations with /home/hossam/miniconda3/envs/gmxMMPBSA/bin/sander +[INFO ] calculating complex contribution... +[DEBUG ] Complex progress: 12/101 frames (11%), 0.11 frame/s, elapsed 01:49, ETA 13:31 [6 MPI ranks] +[DEBUG ] Complex progress: 21/101 frames (20%), 0.10 frame/s, elapsed 03:26, ETA 13:06 [6 MPI ranks] +[DEBUG ] Complex progress: 31/101 frames (30%), 0.10 frame/s, elapsed 05:02, ETA 11:23 [6 MPI ranks] +[DEBUG ] Complex progress: 41/101 frames (40%), 0.12 frame/s, elapsed 05:55, ETA 08:40 [6 MPI ranks] +[DEBUG ] Complex progress: 51/101 frames (50%), 0.11 frame/s, elapsed 07:33, ETA 07:24 [6 MPI ranks] +[DEBUG ] Complex progress: 62/101 frames (61%), 0.11 frame/s, elapsed 09:10, ETA 05:46 [6 MPI ranks] +[DEBUG ] Complex progress: 71/101 frames (70%), 0.12 frame/s, elapsed 10:05, ETA 04:16 [6 MPI ranks] +[DEBUG ] Complex progress: 81/101 frames (80%), 0.12 frame/s, elapsed 11:41, ETA 02:53 [6 MPI ranks] +[DEBUG ] Complex progress: 92/101 frames (91%), 0.11 frame/s, elapsed 13:25, ETA 01:18 [6 MPI ranks] +[INFO ] Complex completed: 101 frames in 14:20 (0.12 frame/s) +[INFO ] calculating receptor contribution... +[DEBUG ] Receptor progress: 11/101 frames (10%), 0.17 frame/s, elapsed 01:06, ETA 09:02 [6 MPI ranks] +[DEBUG ] Receptor progress: 22/101 frames (21%), 0.17 frame/s, elapsed 02:09, ETA 07:44 [6 MPI ranks] +[DEBUG ] Receptor progress: 31/101 frames (30%), 0.19 frame/s, elapsed 02:46, ETA 06:15 [6 MPI ranks] +[DEBUG ] Receptor progress: 41/101 frames (40%), 0.18 frame/s, elapsed 03:48, ETA 05:34 [6 MPI ranks] +[DEBUG ] Receptor progress: 51/101 frames (50%), 0.18 frame/s, elapsed 04:50, ETA 04:44 [6 MPI ranks] +[DEBUG ] Receptor progress: 61/101 frames (60%), 0.18 frame/s, elapsed 05:30, ETA 03:36 [6 MPI ranks] +[DEBUG ] Receptor progress: 71/101 frames (70%), 0.18 frame/s, elapsed 06:28, ETA 02:44 [6 MPI ranks] +[DEBUG ] Receptor progress: 81/101 frames (80%), 0.18 frame/s, elapsed 07:24, ETA 01:49 [6 MPI ranks] +[DEBUG ] Receptor progress: 91/101 frames (90%), 0.19 frame/s, elapsed 08:05, ETA 00:53 [6 MPI ranks] +[INFO ] Receptor completed: 101 frames in 09:08 (0.18 frame/s) +[INFO ] calculating ligand contribution... +[DEBUG ] Ligand progress: 12/101 frames (11%), 230.36 frame/s, elapsed 00:00, ETA 00:00 [6 MPI ranks] +[DEBUG ] Ligand progress: 21/101 frames (20%), 1.74 frame/s, elapsed 00:12, ETA 00:45 [6 MPI ranks] +[DEBUG ] Ligand progress: 31/101 frames (30%), 1.19 frame/s, elapsed 00:26, ETA 00:58 [6 MPI ranks] +[DEBUG ] Ligand progress: 41/101 frames (40%), 1.14 frame/s, elapsed 00:36, ETA 00:52 [6 MPI ranks] +[DEBUG ] Ligand progress: 51/101 frames (50%), 1.00 frame/s, elapsed 00:51, ETA 00:50 [6 MPI ranks] +[DEBUG ] Ligand progress: 61/101 frames (60%), 0.92 frame/s, elapsed 01:06, ETA 00:43 [6 MPI ranks] +[DEBUG ] Ligand progress: 71/101 frames (70%), 0.87 frame/s, elapsed 01:21, ETA 00:34 [6 MPI ranks] +[DEBUG ] Ligand progress: 81/101 frames (80%), 0.84 frame/s, elapsed 01:36, ETA 00:23 [6 MPI ranks] +[DEBUG ] Ligand progress: 91/101 frames (90%), 0.81 frame/s, elapsed 01:52, ETA 00:12 [6 MPI ranks] +[INFO ] Ligand completed: 101 frames in 02:10 (0.78 frame/s) +[INFO ] Parsing results to output files... + +[INFO ] Beginning Interaction Entropy calculations... +[INFO ] Beginning C2 Entropy calculations... +[INFO ] Timing: +[INFO ] Total GROMACS setup time: 1.133 min. +[INFO ] Total AMBER setup time: 0.043 min. +[INFO ] Creating trajectories with cpptraj: 0.072 min. +[INFO ] Total calculation time: 25.830 min. +[INFO ] Total GB calculation time: 25.641 min. +[INFO ] Statistics calculation & output writing: 0.057 min. +[INFO ] Total time taken: 27.142 min. + +[INFO ] Run completed with 0 errors and 5 warnings. See gmx_MMPBSA.log for details. +[INFO ] + Thank you for using gmx_MMPBSA. Please consider supporting gmx_MMPBSA by citing our publication: + Valdés-Tresanco, M.S., Valdés-Tresanco, M.E., Valiente, P.A. and Moreno E. + gmx_MMPBSA: A New Tool to Perform End-State Free Energy Calculations with GROMACS. + J Chem Theory Comput., 2021, 17 (10):6281-6291. Epub 2021 Sep 29. PMID: 34586825. + https://pubs.acs.org/doi/10.1021/acs.jctc.1c00645 + +Also consider citing MMPBSA.py: + Miller III, B. R., McGee Jr., T. D., Swails, J. M. Homeyer, N. Gohlke, H. and Roitberg, A. E. + MMPBSA.py: An Efficient Program for End-State Free Energy Calculations. + J. Chem. Theory Comput., 2012, 8 (9) pp 3314-3321 + +[INFO ] Finalized... diff --git a/tests/fixtures/gmx_mmpbsa/pb/gmx_MMPBSA.log b/tests/fixtures/gmx_mmpbsa/pb/gmx_MMPBSA.log new file mode 100644 index 0000000..bce7f32 --- /dev/null +++ b/tests/fixtures/gmx_mmpbsa/pb/gmx_MMPBSA.log @@ -0,0 +1,406 @@ +[INFO ] Starting gmx_MMPBSA 1.7.0 +[INFO ] Command line + mpirun -np 2 gmx_MMPBSA -O -nogui -i mmpbsa.in -cs complex.tpr -ci complex.ndx -cg 0 1 -ct complex.xtc -cp complex.top -o FINAL_RESULTS_MMPBSA.dat -eo FINAL_RESULTS_MMPBSA.csv (reconstructed) + +[DEBUG ] |Input file: +[DEBUG ] |-------------------------------------------------------------- +[DEBUG ] |MM-PBSA alpha-zein Q946V6 (ligand) - ZmBiP2 (receptor) CHARMM36-family, 303.15 K +[DEBUG ] |&general +[DEBUG ] | sys_name = "Q946V6_ZmBiP2_PB", +[DEBUG ] | startframe = 1, +[DEBUG ] | endframe = 1001, +[DEBUG ] | interval = 10, +[DEBUG ] | temperature = 303.15, +[DEBUG ] | PBRadii = 7, +[DEBUG ] | verbose = 2, +[DEBUG ] |/ +[DEBUG ] |&pb +[DEBUG ] | istrng = 0.150, +[DEBUG ] | fillratio = 4.0, +[DEBUG ] | inp = 1, +[DEBUG ] |/ +[DEBUG ] |-------------------------------------------------------------- +[DEBUG ] + +[WARNING] PB inp=1: aligning parameters with Amber PBSA guidance (sprob: 0.557 -> 1.4, cavity_surften: 0.0378 -> 0.005, cavity_offset: -0.5692 -> 0.0). These values are used for generated mdins, saved INPUT metadata, and decomposition nonpolar scaling. + +[INFO ] Checking mmpbsa.in input file... +[INFO ] Checking mmpbsa.in input file...Done. + +[INFO ] Checking external programs... +[INFO ] cpptraj found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/cpptraj +[INFO ] tleap found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/tleap +[INFO ] parmchk2 found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/parmchk2 +[INFO ] sander found! Using /home/hossam/miniconda3/envs/gmxMMPBSA/bin/sander +[INFO ] Using GROMACS version > 5.x.x! +[INFO ] gmx found! Using /usr/bin/gmx +[INFO ] Checking external programs...Done. + +[INFO ] Building AMBER topologies from GROMACS files... +[INFO ] Generating PDB files from GROMACS structure files... +[INFO ] Making gmx_MMPBSA index for complex... +[DEBUG ] Running command: echo -e "name 0 GMXMMPBSA_REC\n name 1 GMXMMPBSA_LIG\n 0 | 1\n name 2 GMXMMPBSA_REC_GMXMMPBSA_LIG\n q\n" | /usr/bin/gmx make_ndx -n complex.ndx -o _GMXMMPBSA_COM_index.ndx -f complex.tpr +[DEBUG ] :-) GROMACS - gmx make_ndx, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_pb +[DEBUG ] Command line: +[DEBUG ] gmx make_ndx -n complex.ndx -o _GMXMMPBSA_COM_index.ndx -f complex.tpr +[DEBUG ] +[DEBUG ] +[DEBUG ] Reading structure file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] +[DEBUG ] GROMACS reminds you: "Don’t bring an anecdote to a data fight." (Molly Hodgdon) +[DEBUG ] +[DEBUG ] Going to read 1 old index file(s) +[DEBUG ] +[DEBUG ] 0 ZmBiP2 : 10311 atoms +[DEBUG ] 1 Q946V6 : 3337 atoms +[DEBUG ] +[DEBUG ] nr : group '!': not 'name' nr name 'splitch' nr Enter: list groups +[DEBUG ] 'a': atom '&': and 'del' nr 'splitres' nr 'l': list residues +[DEBUG ] 't': atom type '|': or 'keep' nr 'splitat' nr 'h': help +[DEBUG ] 'r': residue 'res' nr 'chain' char +[DEBUG ] "name": group 'case': case sensitive 'q': save and quit +[DEBUG ] 'ri': residue index +[DEBUG ] +[DEBUG ] > +[DEBUG ] +[DEBUG ] > +[DEBUG ] +[DEBUG ] > +[DEBUG ] Copied index group 0 'GMXMMPBSA_REC' +[DEBUG ] Copied index group 1 'GMXMMPBSA_LIG' +[DEBUG ] Merged two groups with OR: 10311 3337 -> 13648 +[DEBUG ] +[DEBUG ] > +[DEBUG ] +[DEBUG ] > +[INFO ] Normal Complex: Saving group ZmBiP2_Q946V6 (0_1) in _GMXMMPBSA_COM_index.ndx file as _GMXMMPBSA_COM.pdb +[DEBUG ] Running command: echo -e "GMXMMPBSA_REC_GMXMMPBSA_LIG"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_COM.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_pb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_COM.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] +[DEBUG ] Will write pdb: Protein data bank file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 +[DEBUG ] Dumping frame at t= 0 ps +[DEBUG ] Last written: frame 0 time 0.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "Don’t bring an anecdote to a data fight." (Molly Hodgdon) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 2: 'GMXMMPBSA_REC_GMXMMPBSA_LIG' +[INFO ] No receptor structure file was defined. Using ST approach... +[INFO ] Using receptor structure from complex to generate AMBER topology +[INFO ] Normal Receptor: Saving group ZmBiP2 (0) in _GMXMMPBSA_COM_index.ndx file as _GMXMMPBSA_REC.pdb +[DEBUG ] Running command: echo -e "0"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_REC.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_pb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_REC.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] +[DEBUG ] Will write pdb: Protein data bank file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 +[DEBUG ] Dumping frame at t= 0 ps +[DEBUG ] Last written: frame 0 time 0.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "Don’t bring an anecdote to a data fight." (Molly Hodgdon) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 0: 'GMXMMPBSA_REC' +[INFO ] No ligand structure file was defined. Using ST approach... +[INFO ] Using ligand structure from complex to generate AMBER topology +[INFO ] Normal Ligand: Saving group Q946V6 (1) in _GMXMMPBSA_COM_index.ndx file as _GMXMMPBSA_LIG.pdb +[DEBUG ] Running command: echo -e "1"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_LIG.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_pb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o _GMXMMPBSA_LIG.pdb -n _GMXMMPBSA_COM_index.ndx -dump 0 +[DEBUG ] +[DEBUG ] Will write pdb: Protein data bank file +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 +[DEBUG ] Dumping frame at t= 0 ps +[DEBUG ] Last written: frame 0 time 0.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "Don’t bring an anecdote to a data fight." (Molly Hodgdon) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 1: 'GMXMMPBSA_LIG' +[INFO ] Loading extracted complex, receptor, and ligand PDB files with ParmEd... +[INFO ] Loaded structures: complex 13648 atoms/876 residues, receptor 10311 atoms/663 residues, ligand 3337 atoms/213 residues. +[INFO ] Reading receptor/ligand atom indexes and building residue maps... +[INFO ] Residue map built: 663 receptor residues, 213 ligand residues. +[INFO ] Checking structural consistency... +[INFO ] Validating complex structure... +[INFO ] Validating receptor structure... +[INFO ] Validating ligand structure... +[INFO ] No reference structure or chain IDs were provided; assigning chain IDs automatically. +[INFO ] Writing fixed complex structure to _GMXMMPBSA_COM_FIXED.pdb... +[INFO ] Structure consistency checks complete. +[INFO ] Using topology conversion. Setting radiopt = 0... +[INFO ] Building Normal Complex Amber topology... +[INFO ] Preparing complex topology from complex.top using 13648 selected atom indexes... +[INFO ] Preprocessing complex.top include tree for complex topology conversion with solvent/ion removal... + +[WARNING] Ignoring CMAP terms in complex.top include tree for GROMACS topology conversion. The converted topology omits CMAP energy terms. For STP (single-trajectory) MM/PB(GB)SA this is not an issue: CMAP contributions cancel in the C−R−L difference. Consider the omission only for MTP (multiple-trajectory) calculations, where receptor and ligand come from separate ensembles. + +[INFO ] Reading preprocessed complex topology with ParmEd... +[INFO ] Applying complex index selection to topology (13648 atoms selected)... +[INFO ] Prepared complex topology selection: 13648 atoms/876 residues retained. +[INFO ] Assigning complex coordinates to the selected topology... +[INFO ] Writing complex restart coordinates to _GMXMMPBSA_COM.inpcrd... +[INFO ] Converting selected complex topology to AMBER ChamberParm... +[INFO ] Detected CHARMM force field topology format... +[INFO ] Assigning PBRadii charmm_radii to Complex... +[INFO ] Writing Normal Complex AMBER topology... +[INFO ] No Receptor topology file was defined. Using ST approach... +[INFO ] Building AMBER Receptor topology from Complex... +[INFO ] Preserving Receptor GB radii inherited from Complex: charmm radii (charmm_radii) +[INFO ] Writing Normal Receptor AMBER topology... +[INFO ] No Ligand topology file was defined. Using ST approach... +[INFO ] Building AMBER Ligand topology from Complex... +[INFO ] Preserving Ligand GB radii inherited from Complex: charmm radii (charmm_radii) +[INFO ] Writing Normal Ligand AMBER topology... +[INFO ] Cleaning normal complex trajectories... +[DEBUG ] Running command: echo -e "GMXMMPBSA_REC_GMXMMPBSA_LIG"| /usr/bin/gmx trjconv -f complex.xtc -s complex.tpr -o COM_traj_0.xtc -n _GMXMMPBSA_COM_index.ndx +[DEBUG ] :-) GROMACS - gmx trjconv, 2025.4-Ubuntu_2025.4_1 (-: +[DEBUG ] +[DEBUG ] Executable: /usr/bin/gmx +[DEBUG ] Data prefix: /usr +[DEBUG ] Working dir: /home/hossam/mmpbsa_Q946V6_ZmBiP2/run_pb +[DEBUG ] Command line: +[DEBUG ] gmx trjconv -f complex.xtc -s complex.tpr -o COM_traj_0.xtc -n _GMXMMPBSA_COM_index.ndx +[DEBUG ] +[DEBUG ] Will write xtc: Compressed trajectory (portable xdr format): xtc +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Reading file complex.tpr, VERSION 2025.4-Ubuntu_2025.4_1 (single precision) +[DEBUG ] Group 0 ( GMXMMPBSA_REC) has 10311 elements +[DEBUG ] Group 1 ( GMXMMPBSA_LIG) has 3337 elements +[DEBUG ] Group 2 (GMXMMPBSA_REC_GMXMMPBSA_LIG) has 13648 elements +[DEBUG ] Select a group: +Reading frame 0 time 0.000 +[DEBUG ] Precision of complex.xtc is 0.001 (nm) +[DEBUG ] Using output precision of 0.001 (nm) +[DEBUG ] +Reading frame 1 time 100.000 -> frame 0 time 0.000 + +Reading frame 2 time 200.000 -> frame 1 time 100.000 + +Reading frame 3 time 300.000 -> frame 2 time 200.000 + +Reading frame 4 time 400.000 -> frame 3 time 300.000 + +Reading frame 5 time 500.000 -> frame 4 time 400.000 + +Reading frame 6 time 600.000 -> frame 5 time 500.000 + +Reading frame 7 time 700.000 -> frame 6 time 600.000 + +Reading frame 8 time 800.000 -> frame 7 time 700.000 + +Reading frame 9 time 900.000 -> frame 8 time 800.000 + +Reading frame 10 time 1000.000 -> frame 9 time 900.000 + +Reading frame 11 time 1100.000 -> frame 10 time 1000.000 + +Reading frame 12 time 1200.000 -> frame 11 time 1100.000 + +Reading frame 13 time 1300.000 -> frame 12 time 1200.000 + +Reading frame 14 time 1400.000 -> frame 13 time 1300.000 + +Reading frame 15 time 1500.000 -> frame 14 time 1400.000 + +Reading frame 16 time 1600.000 -> frame 15 time 1500.000 + +Reading frame 17 time 1700.000 -> frame 16 time 1600.000 + +Reading frame 18 time 1800.000 -> frame 17 time 1700.000 + +Reading frame 19 time 1900.000 -> frame 18 time 1800.000 + +Reading frame 20 time 2000.000 -> frame 19 time 1900.000 + +Reading frame 30 time 3000.000 -> frame 29 time 2900.000 + +Reading frame 40 time 4000.000 -> frame 39 time 3900.000 + +Reading frame 50 time 5000.000 -> frame 49 time 4900.000 + +Reading frame 60 time 6000.000 -> frame 59 time 5900.000 + +Reading frame 70 time 7000.000 -> frame 69 time 6900.000 + +Reading frame 80 time 8000.000 -> frame 79 time 7900.000 + +Reading frame 90 time 9000.000 -> frame 89 time 8900.000 + +Reading frame 100 time 10000.000 -> frame 99 time 9900.000 + +Reading frame 110 time 11000.000 -> frame 109 time 10900.000 + +Reading frame 120 time 12000.000 -> frame 119 time 11900.000 + +Reading frame 130 time 13000.000 -> frame 129 time 12900.000 + +Reading frame 140 time 14000.000 -> frame 139 time 13900.000 + +Reading frame 150 time 15000.000 -> frame 149 time 14900.000 + +Reading frame 160 time 16000.000 -> frame 159 time 15900.000 + +Reading frame 170 time 17000.000 -> frame 169 time 16900.000 + +Reading frame 180 time 18000.000 -> frame 179 time 17900.000 + +Reading frame 190 time 19000.000 -> frame 189 time 18900.000 + +Reading frame 200 time 20000.000 -> frame 199 time 19900.000 + +Reading frame 300 time 30000.000 -> frame 299 time 29900.000 + +Reading frame 400 time 40000.000 -> frame 399 time 39900.000 + +Reading frame 500 time 50000.000 -> frame 499 time 49900.000 + +Reading frame 600 time 60000.000 -> frame 599 time 59900.000 + +Reading frame 700 time 70000.000 -> frame 699 time 69900.000 + +Reading frame 800 time 80000.000 -> frame 799 time 79900.000 + +Reading frame 900 time 90000.000 -> frame 899 time 89900.000 + +Reading frame 1000 time 100000.000 -> frame 999 time 99900.000 + +Last frame 1000 time 100000.000 +[DEBUG ] Last written: frame 1000 time 100000.000 +[DEBUG ] +[DEBUG ] +[DEBUG ] GROMACS reminds you: "The final page is written in the books of history" (Bad Religion) +[DEBUG ] +[DEBUG ] Note that major changes are planned in future for trjconv, to improve usability and utility. +[DEBUG ] Select group for output +[DEBUG ] Selected 2: 'GMXMMPBSA_REC_GMXMMPBSA_LIG' +[INFO ] Continuum-radius provenance written to GMXMMPBSA_radii.json +[INFO ] Radii complex requested=charmm_radii effective=charmm_radii RADIUS_SET='charmm radii (charmm_radii)' route=parmed_ChRad source=charmm RADII=00b77f2384f280389cb1896d21daa36e9975aff943d72b66671f3b23ce5eee95 SCREEN=4913fe68b4703518dfcef1f4a42218b20b725e2a35ad339515babecdd081594e +[INFO ] Radii receptor requested=charmm_radii effective=charmm_radii RADIUS_SET='charmm radii (charmm_radii)' route=parmed_ChRad source=charmm RADII=fe90a975776074d00cdbafe25adb6f8778dae8fd45b4dad79f25707428f58f79 SCREEN=ca3a4e37679eb4334bcbbf86556d64e19ea520074c318e8a1b4df7fe50bf4082 +[INFO ] Radii ligand requested=charmm_radii effective=charmm_radii RADIUS_SET='charmm radii (charmm_radii)' route=parmed_ChRad source=charmm RADII=d406b1c2ab37edc74dc699df009eb8c5d794f39ee767fde619f917a47d9fc019 SCREEN=cf74a45260c4aa77d7c77b0526d240dc903394011d52607d90979935a45ff79c +[INFO ] Building AMBER topologies from GROMACS files... Done. + +[INFO ] Loading and checking parameter files for compatibility... +[INFO ] Preparing trajectories for simulation... + +[INFO ] 101 frames were prepared by cpptraj for the calculations. +[INFO ] Starting calculations across 2 MPI ranks... + +[WARNING] PB/RISM/NMODE will run across 2 MPI ranks; ensure the system has enough RAM. + +[INFO ] Running calculations on normal system... +[INFO ] Beginning PB calculations with /home/hossam/miniconda3/envs/gmxMMPBSA/bin/sander +[INFO ] calculating complex contribution... +[DEBUG ] Complex progress: 11/101 frames (10%), 0.02 frame/s, elapsed 08:24, ETA 1:08:45 [2 MPI ranks] +[DEBUG ] Complex progress: 21/101 frames (20%), 0.02 frame/s, elapsed 16:17, ETA 1:02:02 [2 MPI ranks] +[DEBUG ] Complex progress: 31/101 frames (30%), 0.02 frame/s, elapsed 23:25, ETA 52:53 [2 MPI ranks] +[DEBUG ] Complex progress: 41/101 frames (40%), 0.02 frame/s, elapsed 30:05, ETA 44:02 [2 MPI ranks] +[DEBUG ] Complex progress: 51/101 frames (50%), 0.02 frame/s, elapsed 36:55, ETA 36:12 [2 MPI ranks] +[DEBUG ] Complex progress: 61/101 frames (60%), 0.02 frame/s, elapsed 43:43, ETA 28:40 [2 MPI ranks] +[DEBUG ] Complex progress: 71/101 frames (70%), 0.02 frame/s, elapsed 50:50, ETA 21:28 [2 MPI ranks] +[DEBUG ] Complex progress: 81/101 frames (80%), 0.02 frame/s, elapsed 58:19, ETA 14:24 [2 MPI ranks] +[DEBUG ] Complex progress: 91/101 frames (90%), 0.02 frame/s, elapsed 1:05:24, ETA 07:11 [2 MPI ranks] +[INFO ] Complex completed: 101 frames in 1:12:53 (0.02 frame/s) +[INFO ] calculating receptor contribution... +[DEBUG ] Receptor progress: 11/101 frames (10%), 0.05 frame/s, elapsed 03:23, ETA 27:41 [2 MPI ranks] +[DEBUG ] Receptor progress: 21/101 frames (20%), 0.05 frame/s, elapsed 07:10, ETA 27:18 [2 MPI ranks] +[DEBUG ] Receptor progress: 31/101 frames (30%), 0.05 frame/s, elapsed 10:50, ETA 24:28 [2 MPI ranks] +[DEBUG ] Receptor progress: 41/101 frames (40%), 0.05 frame/s, elapsed 14:23, ETA 21:03 [2 MPI ranks] +[DEBUG ] Receptor progress: 51/101 frames (50%), 0.05 frame/s, elapsed 18:24, ETA 18:02 [2 MPI ranks] +[DEBUG ] Receptor progress: 61/101 frames (60%), 0.05 frame/s, elapsed 22:29, ETA 14:45 [2 MPI ranks] +[DEBUG ] Receptor progress: 71/101 frames (70%), 0.04 frame/s, elapsed 26:29, ETA 11:11 [2 MPI ranks] +[DEBUG ] Receptor progress: 81/101 frames (80%), 0.04 frame/s, elapsed 30:27, ETA 07:31 [2 MPI ranks] +[DEBUG ] Receptor progress: 91/101 frames (90%), 0.04 frame/s, elapsed 34:44, ETA 03:49 [2 MPI ranks] +[INFO ] Receptor completed: 101 frames in 38:54 (0.04 frame/s) +[INFO ] calculating ligand contribution... +[DEBUG ] Ligand progress: 11/101 frames (10%), 0.17 frame/s, elapsed 01:06, ETA 09:00 [2 MPI ranks] +[DEBUG ] Ligand progress: 21/101 frames (20%), 0.18 frame/s, elapsed 01:58, ETA 07:29 [2 MPI ranks] +[DEBUG ] Ligand progress: 31/101 frames (30%), 0.18 frame/s, elapsed 02:50, ETA 06:24 [2 MPI ranks] +[DEBUG ] Ligand progress: 41/101 frames (40%), 0.18 frame/s, elapsed 03:44, ETA 05:28 [2 MPI ranks] +[DEBUG ] Ligand progress: 51/101 frames (50%), 0.19 frame/s, elapsed 04:34, ETA 04:28 [2 MPI ranks] +[DEBUG ] Ligand progress: 61/101 frames (60%), 0.18 frame/s, elapsed 05:37, ETA 03:41 [2 MPI ranks] +[DEBUG ] Ligand progress: 71/101 frames (70%), 0.18 frame/s, elapsed 06:32, ETA 02:45 [2 MPI ranks] +[DEBUG ] Ligand progress: 81/101 frames (80%), 0.18 frame/s, elapsed 07:33, ETA 01:51 [2 MPI ranks] +[DEBUG ] Ligand progress: 91/101 frames (90%), 0.18 frame/s, elapsed 08:22, ETA 00:55 [2 MPI ranks] +[INFO ] Ligand completed: 101 frames in 09:51 (0.17 frame/s) +[INFO ] Parsing results to output files... + +[INFO ] Timing: +[INFO ] Total GROMACS setup time: 0.006 hr. +[INFO ] Total AMBER setup time: 0.001 hr. +[INFO ] Creating trajectories with cpptraj: 0.001 hr. +[INFO ] Total calculation time: 2.028 hr. +[INFO ] Total PB calculation time: 2.006 hr. +[INFO ] Statistics calculation & output writing: 0.000 hr. +[INFO ] Total time taken: 2.035 hr. + +[INFO ] Run completed with 0 errors and 3 warnings. See gmx_MMPBSA.log for details. +[INFO ] + Thank you for using gmx_MMPBSA. Please consider supporting gmx_MMPBSA by citing our publication: + Valdés-Tresanco, M.S., Valdés-Tresanco, M.E., Valiente, P.A. and Moreno E. + gmx_MMPBSA: A New Tool to Perform End-State Free Energy Calculations with GROMACS. + J Chem Theory Comput., 2021, 17 (10):6281-6291. Epub 2021 Sep 29. PMID: 34586825. + https://pubs.acs.org/doi/10.1021/acs.jctc.1c00645 + +Also consider citing MMPBSA.py: + Miller III, B. R., McGee Jr., T. D., Swails, J. M. Homeyer, N. Gohlke, H. and Roitberg, A. E. + MMPBSA.py: An Efficient Program for End-State Free Energy Calculations. + J. Chem. Theory Comput., 2012, 8 (9) pp 3314-3321 + +[INFO ] Finalized... diff --git a/tests/fixtures/gromacs_logs/A8HNE1_step4.0_minimization_machine_precision.log b/tests/fixtures/gromacs_logs/A8HNE1_step4.0_minimization_machine_precision.log new file mode 100644 index 0000000..08f1694 --- /dev/null +++ b/tests/fixtures/gromacs_logs/A8HNE1_step4.0_minimization_machine_precision.log @@ -0,0 +1,414 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_A8HNE1 +Process ID: 993341 +Command line: + gmx mdrun -v -deffnm step4.0_minimization -ntmpi 1 -ntomp 8 + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 24 cores, 24 processing units, 3 compatible GPUs +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] [ 14] [ 15] [ 16] [ 17] [ 18] [ 19] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] [ 34] [ 35] [ 36] [ 37] [ 38] [ 39] + CPU limit set by OS: -1 Recommended max number of threads: 24 + GPU info: + Number of GPUs detected: 3 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #1: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #2: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 8 (and the command-line setting agreed with that) + +Input Parameters: + integrator = steep + tinit = 0 + dt = 0.001 + nsteps = 50000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = 2013230334 + emtol = 100 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 0 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 10 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.26 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 216 + fourier-ny = 216 + fourier-nz = 216 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = not available + ensemble-temperature = -1 + tcoupl = No + nsttcouple = -1 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = No + pcoupltype = Isotropic + nstpcouple = -1 + tau-p = 1 + compressibility (3x3): + compressibility[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p (3x3): + ref-p[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + refcoord-scaling = No + posres-com (3): + posres-com[0]= 0.00000e+00 + posres-com[1]= 0.00000e+00 + posres-com[2]= 0.00000e+00 + posres-comB (3): + posres-comB[0]= 0.00000e+00 + posres-comB[1]= 0.00000e+00 + posres-comB[2]= 0.00000e+00 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = false + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 3.15032e+06 + ref-t: 0 + tau-t: 0 +annealing: No +annealing-npoints: 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 28479 lines trimmed by the mdforge fixture builder ...] +Constraint error in algorithm Lincs at step 23 +Wrote pdb files with previous and current coordinates + Step Time + 23 23.00000 +Constraint error in algorithm Lincs at step 33 +Wrote pdb files with previous and current coordinates + Step Time + 33 33.00000 +Constraint error in algorithm Lincs at step 48 +Wrote pdb files with previous and current coordinates + Step Time + 48 48.00000 +Constraint error in algorithm Lincs at step 132 +Wrote pdb files with previous and current coordinates + Step Time + 132 132.00000 +[... 0 lines trimmed by the mdforge fixture builder ...] + + Step Time + 3043 3043.00000 + + Step Time + 3044 3044.00000 + + Step Time + 3045 3045.00000 + + Step Time + 3046 3046.00000 + + Step Time + 3047 3047.00000 + + Step Time + 3048 3048.00000 + + Step Time + 3049 3049.00000 + + Step Time + 3050 3050.00000 + + Step Time + 3051 3051.00000 + + Step Time + 3052 3052.00000 + + Step Time + 3053 3053.00000 + + Step Time + 3054 3054.00000 + + Step Time + 3055 3055.00000 + + +Energy minimization has stopped, but the forces have not converged to the +requested precision Fmax < 100 (which may not be possible for your system). +It stopped because the algorithm tried to make a new step whose size was too +small, or there was no change in the energy since last step. Either way, we +regard the minimization as converged to within the available machine +precision, given your starting configuration and EM parameters. + +Double precision normally gives you higher accuracy, but this is often not +needed for preparing to run molecular dynamics. +You might need to increase your constraint accuracy, or turn +off constraints altogether (set constraints = none in mdp file) + +Steepest Descents converged to machine precision in 3056 steps, +but did not reach the requested Fmax < 100. +Potential Energy = -2.6774416e+07 +Maximum force = 7.2325469e+03 on atom 6116 +Norm of force = 1.1151116e+01 +Finished mdrun on rank 0 Thu Jun 4 04:11:23 2026 + diff --git a/tests/fixtures/gromacs_logs/A8HNE1_step4.1_equilibration_NVT.log b/tests/fixtures/gromacs_logs/A8HNE1_step4.1_equilibration_NVT.log new file mode 100644 index 0000000..bba8491 --- /dev/null +++ b/tests/fixtures/gromacs_logs/A8HNE1_step4.1_equilibration_NVT.log @@ -0,0 +1,502 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_A8HNE1 +Process ID: 993519 +Command line: + gmx mdrun -v -deffnm step4.1_equilibration -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 24 cores, 24 processing units, 3 compatible GPUs +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] [ 14] [ 15] [ 16] [ 17] [ 18] [ 19] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] [ 34] [ 35] [ 36] [ 37] [ 38] [ 39] + CPU limit set by OS: -1 Recommended max number of threads: 24 + GPU info: + Number of GPUs detected: 3 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #1: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #2: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 8 (and the command-line setting agreed with that) + +Input Parameters: + integrator = md + tinit = 0 + dt = 0.001 + nsteps = 125000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = -538053638 + emtol = 10 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 5000 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 20 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.2 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 216 + fourier-ny = 216 + fourier-nz = 216 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = constant + ensemble-temperature = 303.15 + tcoupl = V-rescale + nsttcouple = 100 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = No + pcoupltype = Isotropic + nstpcouple = -1 + tau-p = 1 + compressibility (3x3): + compressibility[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p (3x3): + ref-p[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + refcoord-scaling = No + posres-com (3): + posres-com[0]= 0.00000e+00 + posres-com[1]= 0.00000e+00 + posres-com[2]= 0.00000e+00 + posres-comB (3): + posres-comB[0]= 0.00000e+00 + posres-comB[1]= 0.00000e+00 + posres-comB[2]= 0.00000e+00 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = false + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 33024 3.11729e+06 + ref-t: 303.15 303.15 + tau-t: 1 1 +annealing: No No +annealing-npoints: 0 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 2029 lines trimmed by the mdforge fixture builder ...] + +Started mdrun on rank 0 Thu Jun 4 04:11:36 2026 + + Step Time +[... 0 lines trimmed by the mdforge fixture builder ...] + Temperature Pressure (bar) Constr. rmsd + 3.03217e+02 -8.85310e+02 4.53276e-06 + + +DD step 124999 load imb.: force 2.8% pme mesh/force 0.965 + Step Time + 125000 125.00000 + +Writing checkpoint, step 125000 at Thu Jun 4 04:44:47 2026 + + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.08481e+04 3.07675e+04 3.42650e+04 1.92036e+03 -9.63301e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.69326e+03 1.57011e+05 2.27050e+06 -2.45221e+07 6.52433e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.19810e+03 -2.19406e+07 3.96527e+06 -1.79754e+07 -2.27616e+07 + Temperature Pressure (bar) Constr. rmsd + 3.02771e+02 -8.76972e+02 4.53276e-06 + + +Energy conservation over simulation part #1 of length 125 ps, time 0 to 125 ps + Conserved energy drift: 9.13e-05 kJ/mol/ps per atom + + + <====== ############### ==> + <==== A V E R A G E S ====> + <== ############### ======> + + Statistics over 125001 steps using 1251 frames + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.07090e+04 3.08009e+04 3.41590e+04 1.91164e+03 -8.71452e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.53360e+03 1.57379e+05 2.28936e+06 -2.46241e+07 6.49505e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.06338e+03 -2.20241e+07 3.93052e+06 -1.80936e+07 -2.27677e+07 + Temperature Pressure (bar) Constr. rmsd + 3.00118e+02 -9.39058e+02 0.00000e+00 + + Total Virial (kJ/mol) + 1.78006e+06 9.72425e+02 7.60537e+02 + 9.72545e+02 1.77796e+06 4.64891e+02 + 7.60574e+02 4.64855e+02 1.77905e+06 + + Pressure (bar) + -9.41485e+02 -1.91144e+00 -1.60802e+00 + -1.91169e+00 -9.36928e+02 -4.94335e-01 + -1.60809e+00 -4.94263e-01 -9.38761e+02 + + T-SOLU T-SOLV + 3.02050e+02 3.00097e+02 + + + P P - P M E L O A D B A L A N C I N G + + PP/PME load balancing changed the cut-off and PME settings: + particle-particle PME + rcoulomb rlist grid spacing 1/beta + initial 1.200 nm 1.202 nm 216 216 216 0.118 nm 0.384 nm + final 1.275 nm 1.277 nm 200 200 200 0.127 nm 0.408 nm + cost-ratio 1.20 0.79 + (note that these numbers concern only part of the total PP and PME load) + + + M E G A - F L O P S A C C O U N T I N G + + NB=Group-cutoff nonbonded kernels NxN=N-by-N cluster Verlet kernels + RF=Reaction-Field VdW=Van der Waals QSTab=quadratic-spline table + W3=SPC/TIP3p W4=TIP4p (single or pairs) + V&F=Potential and force V=Potential only F=Force only + + Computing: M-Number M-Flops % Flops +----------------------------------------------------------------------------- + Pair Search distance check 244126.832368 2197141.491 0.0 + NxN QSTab Elec. + LJ [F] 250457358.634560 13274240007.632 98.4 + NxN QSTab Elec. + LJ [V&F] 2531888.130368 205082938.560 1.5 + 1,4 nonbonded interactions 4374.034992 393663.149 0.0 + Reset In Box 1964.545380 5893.636 0.0 + CG-CoM 1966.115760 5898.347 0.0 + Bonds 836.256690 49339.145 0.0 + Propers 4250.784006 973429.537 0.0 + Impropers 279.252234 58084.465 0.0 + Pos. Restr. 822.881583 41144.079 0.0 + Virial 1964.657970 35363.843 0.0 + Stop-CM 1966.115760 19661.158 0.0 + Calc-Ekin 3929.090760 106085.451 0.0 + Lincs 0.013278 0.797 0.0 + Lincs-Mat 0.073608 0.294 0.0 + Constraint-V 1.567458 14.107 0.0 + Settle 1.036120 383.364 0.0 + CMAP 105.750846 179776.438 0.0 + Urey-Bradley 3027.149217 553968.307 0.0 +----------------------------------------------------------------------------- + Total 13483942793.801 100.0 +----------------------------------------------------------------------------- + + + D O M A I N D E C O M P O S I T I O N S T A T I S T I C S + + av. #atoms communicated per step for force: 2 x 152523.6 + + +Dynamic load balancing report: + DLB was off during the run due to low measured imbalance. + Average load imbalance: 2.7%. + The balanceable part of the MD step is 49%, load imbalance is computed from this. + Part of the total run time spent waiting due to load imbalance: 1.3%. + Average PME mesh/force load: 0.972 + Part of the total run time spent waiting due to PP/PME imbalance: 0.3 % + + + R E A L C Y C L E A N D T I M E A C C O U N T I N G + +On 2 MPI ranks doing PP, each using 8 OpenMP threads, and +on 1 MPI rank doing PME, using 8 OpenMP threads + + Activity: Num Num Call Wall time Giga-Cycles + Ranks Threads Count (s) total sum % +-------------------------------------------------------------------------------- + Domain decomp. 2 8 1251 110.335 4402.958 3.7 + DD comm. load 2 8 1223 0.525 20.953 0.0 + Send X to PME 2 8 125001 376.230 15013.600 12.6 + Neighbor search 2 8 1251 54.969 2193.566 1.8 + Launch PP GPU ops. 2 8 373752 29.533 1178.534 1.0 + Comm. coord. 2 8 123750 189.144 7547.856 6.3 + Force 2 8 125001 96.224 3839.858 3.2 + Wait + Comm. F 2 8 125001 63.806 2546.201 2.1 + PME GPU mesh * 1 8 125001 689.758 13762.530 11.5 + PME wait for PP * 1303.619 26010.693 21.8 + Wait + Recv. PME F 2 8 125001 420.865 16794.768 14.1 + Wait GPU NB nonloc. 2 8 125001 2.175 86.799 0.1 + Wait GPU NB local 2 8 125001 11.401 454.952 0.4 + Wait GPU state copy 2 8 380003 623.924 24897.920 20.9 + NB X/F buffer ops. 2 8 2502 0.739 29.485 0.0 + Write traj. 2 8 28 3.182 126.980 0.1 + Constraints 2 8 2 0.002 0.073 0.0 + Comm. energies 2 8 1251 6.100 243.438 0.2 + Rest 4.329 172.731 0.1 +-------------------------------------------------------------------------------- + Total 1993.483 119326.007 100.0 +-------------------------------------------------------------------------------- +(*) Note that with separate PME ranks, the walltime column actually sums to + twice the total reported, but the cycle count total and % are correct. +-------------------------------------------------------------------------------- + Breakdown of PME mesh activities +-------------------------------------------------------------------------------- + Wait PME GPU gather 1 8 125001 682.960 13626.891 11.4 + Launch PME GPU ops. 1 8 1000024 7.040 140.474 0.1 +-------------------------------------------------------------------------------- + + Core t (s) Wall t (s) (%) + Time: 47842.878 1993.483 2400.0 + 33:13 + (ns/day) (hour/ns) +Performance: 5.418 4.430 +Finished mdrun on rank 0 Thu Jun 4 04:44:50 2026 + diff --git a/tests/fixtures/gromacs_logs/A8HNE1_step4.2_equilibration_NPT_303K.log b/tests/fixtures/gromacs_logs/A8HNE1_step4.2_equilibration_NPT_303K.log new file mode 100644 index 0000000..830729f --- /dev/null +++ b/tests/fixtures/gromacs_logs/A8HNE1_step4.2_equilibration_NPT_303K.log @@ -0,0 +1,502 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_A8HNE1 +Process ID: 994046 +Command line: + gmx mdrun -v -deffnm step4.2_equilibration -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 24 cores, 24 processing units, 3 compatible GPUs +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] [ 14] [ 15] [ 16] [ 17] [ 18] [ 19] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] [ 34] [ 35] [ 36] [ 37] [ 38] [ 39] + CPU limit set by OS: -1 Recommended max number of threads: 24 + GPU info: + Number of GPUs detected: 3 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #1: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #2: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 8 (and the command-line setting agreed with that) + +Input Parameters: + integrator = md + tinit = 0 + dt = 0.001 + nsteps = 2000000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = -1344290881 + emtol = 10 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 5000 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 20 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.2 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 216 + fourier-ny = 216 + fourier-nz = 216 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = constant + ensemble-temperature = 303.15 + tcoupl = V-rescale + nsttcouple = 100 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = Berendsen + pcoupltype = Isotropic + nstpcouple = 100 + tau-p = 1 + compressibility (3x3): + compressibility[ 0]={ 4.50000e-05, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 4.50000e-05, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 4.50000e-05} + ref-p (3x3): + ref-p[ 0]={ 1.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 1.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 1.00000e+00} + refcoord-scaling = COM + posres-com (3): + posres-com[0]= 5.01361e-01 + posres-com[1]= 5.00075e-01 + posres-com[2]= 4.99735e-01 + posres-comB (3): + posres-comB[0]= 5.01361e-01 + posres-comB[1]= 5.00075e-01 + posres-comB[2]= 4.99735e-01 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = true + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 33024 3.11729e+06 + ref-t: 303.15 303.15 + tau-t: 1 1 +annealing: No No +annealing-npoints: 0 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 30261 lines trimmed by the mdforge fixture builder ...] + +Started mdrun on rank 0 Thu Jun 4 04:45:03 2026 + + Step Time +[... 0 lines trimmed by the mdforge fixture builder ...] + Temperature Pressure (bar) Constr. rmsd + 3.02593e+02 -9.52136e+00 0.00000e+00 + + +DD step 1999999 load imb.: force 4.4% pme mesh/force 0.924 + Step Time + 2000000 2000.00000 + +Writing checkpoint, step 2000000 at Thu Jun 4 13:38:35 2026 + + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.02948e+04 3.00435e+04 3.36118e+04 1.82710e+03 -8.45393e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.62111e+03 1.57306e+05 2.36410e+06 -2.49132e+07 6.18998e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.28892e+03 -2.22430e+07 3.96076e+06 -1.82823e+07 -1.77528e+07 + Temperature Pressure (bar) Constr. rmsd + 3.02426e+02 4.37846e+01 0.00000e+00 + + +Energy conservation over simulation part #1 of length 2000 ps, time 0 to 2000 ps + Conserved energy drift: 6.64e-05 kJ/mol/ps per atom + + + <====== ############### ==> + <==== A V E R A G E S ====> + <== ############### ======> + + Statistics over 2000001 steps using 20001 frames + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.06694e+04 3.07969e+04 3.37888e+04 1.91368e+03 -8.77340e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.56690e+03 1.57110e+05 2.34982e+06 -2.48922e+07 6.15130e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.30462e+03 -2.22356e+07 3.97032e+06 -1.82652e+07 -1.78602e+07 + Temperature Pressure (bar) Constr. rmsd + 3.03157e+02 3.28770e-01 0.00000e+00 + + Box-X Box-Y Box-Z + 2.49930e+01 2.49930e+01 2.49930e+01 + + Total Virial (kJ/mol) + 1.32327e+06 -1.88108e+02 -1.47624e+02 + -1.88110e+02 1.32329e+06 3.27471e+02 + -1.47604e+02 3.27477e+02 1.32332e+06 + + Pressure (bar) + 2.04963e-01 3.45939e-01 2.09212e-01 + 3.45944e-01 3.84324e-01 -7.86882e-01 + 2.09169e-01 -7.86896e-01 3.97024e-01 + + T-SOLU T-SOLV + 3.03183e+02 3.03156e+02 + + + P P - P M E L O A D B A L A N C I N G + + PP/PME load balancing changed the cut-off and PME settings: + particle-particle PME + rcoulomb rlist grid spacing 1/beta + initial 1.200 nm 1.202 nm 216 216 216 0.118 nm 0.384 nm + final 1.275 nm 1.277 nm 200 200 200 0.127 nm 0.408 nm + cost-ratio 1.20 0.79 + (note that these numbers concern only part of the total PP and PME load) + + + M E G A - F L O P S A C C O U N T I N G + + NB=Group-cutoff nonbonded kernels NxN=N-by-N cluster Verlet kernels + RF=Reaction-Field VdW=Van der Waals QSTab=quadratic-spline table + W3=SPC/TIP3p W4=TIP4p (single or pairs) + V&F=Potential and force V=Potential only F=Force only + + Computing: M-Number M-Flops % Flops +----------------------------------------------------------------------------- + Pair Search distance check 4068975.861840 36620782.757 0.0 + NxN QSTab Elec. + LJ [F] 4198008576.605184 222494454560.075 98.4 + NxN QSTab Elec. + LJ [V&F] 42406247.412352 3434906040.401 1.5 + 1,4 nonbonded interactions 69984.034992 6298563.149 0.0 + Reset In Box 31404.459240 94213.378 0.0 + CG-CoM 31409.170380 94227.511 0.0 + Bonds 13380.006690 789420.395 0.0 + Propers 68012.034006 15574755.787 0.0 + Impropers 4468.002234 929344.465 0.0 + Pos. Restr. 13166.006583 658300.329 0.0 + Virial 31410.970470 565397.468 0.0 + Stop-CM 31409.170380 314091.704 0.0 + P-Coupling 31409.170380 188455.022 0.0 + Calc-Ekin 62818.340760 1696095.201 0.0 + CMAP 1692.000846 2876401.438 0.0 + Urey-Bradley 48434.024217 8863426.432 0.0 +----------------------------------------------------------------------------- + Total 226004924075.511 100.0 +----------------------------------------------------------------------------- + + + D O M A I N D E C O M P O S I T I O N S T A T I S T I C S + + av. #atoms communicated per step for force: 2 x 155277.0 + + +Dynamic load balancing report: + DLB got disabled because it was unsuitable to use. + Average load imbalance: 4.4%. + The balanceable part of the MD step is 48%, load imbalance is computed from this. + Part of the total run time spent waiting due to load imbalance: 2.1%. + Average PME mesh/force load: 0.926 + Part of the total run time spent waiting due to PP/PME imbalance: 0.9 % + + + R E A L C Y C L E A N D T I M E A C C O U N T I N G + +On 2 MPI ranks doing PP, each using 8 OpenMP threads, and +on 1 MPI rank doing PME, using 8 OpenMP threads + + Activity: Num Num Call Wall time Giga-Cycles + Ranks Threads Count (s) total sum % +-------------------------------------------------------------------------------- + Domain decomp. 2 8 20000 1930.726 77047.257 4.0 + DD comm. load 2 8 19973 11.394 454.696 0.0 + DD comm. bounds 2 8 40 0.107 4.269 0.0 + Send X to PME 2 8 2000001 5809.180 231820.233 12.1 + Neighbor search 2 8 20001 880.482 35136.377 1.8 + Launch PP GPU ops. 2 8 5980002 450.220 17966.421 0.9 + Comm. coord. 2 8 1980000 3017.588 120419.396 6.3 + Force 2 8 2000001 1530.828 61088.980 3.2 + Wait + Comm. F 2 8 2000001 1083.570 43240.783 2.3 + PME GPU mesh * 1 8 2000001 11038.688 220254.079 11.5 + PME wait for PP * 20976.669 418545.850 21.8 + Wait + Recv. PME F 2 8 2000001 6484.495 258769.244 13.5 + Wait GPU NB nonloc. 2 8 2000001 36.997 1476.405 0.1 + Wait GPU NB local 2 8 2000001 199.329 7954.384 0.4 + Wait GPU state copy 2 8 6080003 10406.891 415295.771 21.7 + NB X/F buffer ops. 2 8 40002 11.888 474.416 0.0 + Write traj. 2 8 436 30.267 1207.817 0.1 + Comm. energies 2 8 20001 62.696 2501.934 0.1 + Rest 68.729 2742.687 0.1 +-------------------------------------------------------------------------------- + Total 32015.387 1916401.601 100.0 +-------------------------------------------------------------------------------- +(*) Note that with separate PME ranks, the walltime column actually sums to + twice the total reported, but the cycle count total and % are correct. +-------------------------------------------------------------------------------- + Breakdown of PME mesh activities +-------------------------------------------------------------------------------- + Wait PME GPU gather 1 8 2000001 10937.404 218233.175 11.4 + Launch PME GPU ops. 1 8 16019998 107.478 2144.492 0.1 +-------------------------------------------------------------------------------- + + Core t (s) Wall t (s) (%) + Time: 768368.555 32015.387 2400.0 + 8h53:35 + (ns/day) (hour/ns) +Performance: 5.397 4.447 +Finished mdrun on rank 0 Thu Jun 4 13:38:39 2026 + diff --git a/tests/fixtures/gromacs_logs/A8HNE1_step5_production_11_sessions.log b/tests/fixtures/gromacs_logs/A8HNE1_step5_production_11_sessions.log new file mode 100644 index 0000000..350ac05 --- /dev/null +++ b/tests/fixtures/gromacs_logs/A8HNE1_step5_production_11_sessions.log @@ -0,0 +1,658 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_A8HNE1 +Process ID: 1001947 +Command line: + gmx mdrun -v -deffnm step5_production -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 24 cores, 24 processing units, 3 compatible GPUs +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] [ 14] [ 15] [ 16] [ 17] [ 18] [ 19] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] [ 34] [ 35] [ 36] [ 37] [ 38] [ 39] + CPU limit set by OS: -1 Recommended max number of threads: 24 + GPU info: + Number of GPUs detected: 3 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #1: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + #2: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 8 (and the command-line setting agreed with that) + +Input Parameters: + integrator = md + tinit = 0 + dt = 0.002 + nsteps = 500000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = -328278273 + emtol = 10 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 50000 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 20 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.226 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 216 + fourier-ny = 216 + fourier-nz = 216 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = constant + ensemble-temperature = 303.15 + tcoupl = V-rescale + nsttcouple = 100 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = C-rescale + pcoupltype = Isotropic + nstpcouple = 100 + tau-p = 5 + compressibility (3x3): + compressibility[ 0]={ 4.50000e-05, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 4.50000e-05, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 4.50000e-05} + ref-p (3x3): + ref-p[ 0]={ 1.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 1.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 1.00000e+00} + refcoord-scaling = No + posres-com (3): + posres-com[0]= 0.00000e+00 + posres-com[1]= 0.00000e+00 + posres-com[2]= 0.00000e+00 + posres-comB (3): + posres-comB[0]= 0.00000e+00 + posres-comB[1]= 0.00000e+00 + posres-comB[2]= 0.00000e+00 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = true + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 33024 3.11729e+06 + ref-t: 303.15 303.15 + tau-t: 1 1 +annealing: No No +annealing-npoints: 0 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 754637 lines trimmed by the mdforge fixture builder ...] + +Started mdrun on rank 0 Thu Jun 4 13:38:48 2026 + + Step Time + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Thu Jun 4 15:52:11 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1012735 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Fri Jun 5 01:44:06 2026 + + Step Time + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sat Jun 6 01:44:08 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1034212 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Sat Jun 6 01:44:47 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sun Jun 7 01:44:51 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1055656 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Sun Jun 7 01:45:13 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Mon Jun 8 01:45:15 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1076923 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Mon Jun 8 01:45:33 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Tue Jun 9 01:30:36 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1108468 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Tue Jun 9 02:20:05 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Wed Jun 10 02:20:07 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 64358 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Fri Jun 12 14:58:52 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sat Jun 13 14:43:54 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 99832 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Sat Jun 13 14:58:59 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sun Jun 14 14:59:02 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 172409 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Sun Jun 14 14:59:31 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Mon Jun 15 14:59:34 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 125451 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + + +Started mdrun on rank 0 Mon Jun 15 15:34:16 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Tue Jun 16 12:15:01 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 120327 +Command line: + gmx mdrun -v -deffnm step5_production -s step5_production_extended.tpr -cpi step5_production.cpt -append -nb gpu -pme gpu -ntmpi 3 -ntomp 8 -npme 1 -pin on + +[... 0 lines trimmed by the mdforge fixture builder ...] +Overriding thread affinity set outside gmx mdrun + +Pinning threads with an auto-selected logical cpu stride of 1 + +Initializing LINear Constraint Solver + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and H. Bekker and H. J. C. Berendsen and J. G. E. M. Fraaije +LINCS: A Linear Constraint Solver for molecular simulations +J. Comp. Chem. 18 (1997) pp. 1463-1472 +-------- -------- --- Thank You --- -------- -------- + +The number of constraints is 6639 + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Miyamoto and P. A. Kollman +SETTLE: An Analytical Version of the SHAKE and RATTLE Algorithms for Rigid +Water Models +J. Comp. Chem. 13 (1992) pp. 952-962 +-------- -------- --- Thank You --- -------- -------- + +Intra-simulation communication will occur every 100 steps. +There are: 1570380 Atoms +Atom distribution over 2 domains: av 785190 stddev 167 min 785023 max 785357 + +Updating coordinates and applying constraints on the GPU. + +NOTE: DLB will not turn on during the first phase of PME tuning +Center of mass motion removal mode is Linear +We have the following groups for center of mass motion removal: + 0: SOLU + 1: SOLV + +Started mdrun on rank 0 Tue Jun 16 13:40:21 2026 + + Step Time + 50000000 100000.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.06768e+04 3.12402e+04 3.33964e+04 1.98083e+03 -1.35958e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.29907e+03 1.56427e+05 2.35050e+06 -2.49165e+07 7.55619e+04 + Potential Kinetic En. Total Energy Conserved En. Temperature + -2.22488e+07 3.97133e+06 -1.82775e+07 -9.17678e+06 3.03234e+02 + Pressure (bar) Constr. rmsd + -1.58321e+00 0.00000e+00 + + +Time interval for measuring conserved energy has length 0, time 100000 to 100000 ps + + + <====== ############### ==> + <==== A V E R A G E S ====> + <== ############### ======> + + Statistics over 50000001 steps using 500001 frames + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.08823e+04 3.13514e+04 3.32828e+04 1.91028e+03 -1.33754e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.30229e+03 1.55963e+05 2.35029e+06 -2.48984e+07 6.21229e+04 + Potential Kinetic En. Total Energy Conserved En. Temperature + -2.22447e+07 3.97033e+06 -1.82743e+07 -1.37080e+07 3.03158e+02 + Pressure (bar) Constr. rmsd + 1.13137e+00 0.00000e+00 + + Box-X Box-Y Box-Z + 2.49896e+01 2.49896e+01 2.49896e+01 + + Total Virial (kJ/mol) + 1.32288e+06 -3.27662e+01 -4.26959e+00 + -3.27682e+01 1.32293e+06 1.37543e+01 + -4.25335e+00 1.37572e+01 1.32294e+06 + + Pressure (bar) + 1.12619e+00 1.77344e-03 2.22727e-02 + 1.77786e-03 1.14986e+00 2.91826e-02 + 2.22381e-02 2.91764e-02 1.11806e+00 + + T-SOLU T-SOLV + 3.03654e+02 3.03153e+02 + + + M E G A - F L O P S A C C O U N T I N G + + NB=Group-cutoff nonbonded kernels NxN=N-by-N cluster Verlet kernels + RF=Reaction-Field VdW=Van der Waals QSTab=quadratic-spline table + W3=SPC/TIP3p W4=TIP4p (single or pairs) + V&F=Potential and force V=Potential only F=Force only + + Computing: M-Number M-Flops % Flops +----------------------------------------------------------------------------- + Pair Search distance check 204.222048 1837.998 1.1 + NxN QSTab Elec. + LJ [V&F] 2040.680512 165295.121 98.8 + 1,4 nonbonded interactions 0.034992 3.149 0.0 + CG-CoM 1.570380 4.711 0.0 + Bonds 0.006690 0.395 0.0 + Propers 0.034006 7.787 0.0 + Impropers 0.002234 0.465 0.0 + Virial 1.570470 28.268 0.0 + Stop-CM 1.570380 15.704 0.0 + P-Coupling 1.570380 9.422 0.0 + Calc-Ekin 1.570380 42.400 0.0 + CMAP 0.000846 1.438 0.0 + Urey-Bradley 0.024217 4.432 0.0 +----------------------------------------------------------------------------- + Total 167251.292 100.0 +----------------------------------------------------------------------------- + + + D O M A I N D E C O M P O S I T I O N S T A T I S T I C S + + av. #atoms communicated per step for force: 2 x 186675.0 + + + R E A L C Y C L E A N D T I M E A C C O U N T I N G + +On 2 MPI ranks doing PP, each using 8 OpenMP threads, and +on 1 MPI rank doing PME, using 8 OpenMP threads + + Activity: Num Num Call Wall time Giga-Cycles + Ranks Threads Count (s) total sum % +-------------------------------------------------------------------------------- + Send X to PME 2 8 1 0.084 3.326 1.5 + Neighbor search 2 8 1 0.192 7.611 3.4 + Launch PP GPU ops. 2 8 2 0.018 0.702 0.3 + Force 2 8 1 0.002 0.082 0.0 + Wait + Comm. F 2 8 1 0.002 0.095 0.0 + PME GPU mesh * 1 8 1 0.006 0.122 0.1 + PME wait for PP * 3.678 72.953 33.0 + Wait + Recv. PME F 2 8 1 0.003 0.121 0.1 + Wait GPU NB nonloc. 2 8 1 0.000 0.000 0.0 + Wait GPU NB local 2 8 1 0.000 0.000 0.0 + Wait GPU state copy 2 8 3 0.002 0.088 0.0 + NB X/F buffer ops. 2 8 2 0.001 0.030 0.0 + Write traj. 2 8 1 1.720 68.254 30.8 + Comm. energies 2 8 1 1.703 67.555 30.5 +-------------------------------------------------------------------------------- + Total 3.719 221.323 100.0 +-------------------------------------------------------------------------------- +(*) Note that with separate PME ranks, the walltime column actually sums to + twice the total reported, but the cycle count total and % are correct. +-------------------------------------------------------------------------------- + Breakdown of PME mesh activities +-------------------------------------------------------------------------------- + Wait PME GPU gather 1 8 1 0.006 0.117 0.1 + Launch PME GPU ops. 1 8 9 0.000 0.004 0.0 +-------------------------------------------------------------------------------- + +NOTE: 31 % of the run time was spent communicating energies, + you might want to increase some nst* mdp options + + Core t (s) Wall t (s) (%) + Time: 88.610 3.719 2382.5 + (ns/day) (hour/ns) +Performance: 0.046 516.560 +Finished mdrun on rank 0 Tue Jun 16 13:40:25 2026 + diff --git a/tests/fixtures/gromacs_logs/Q946V6_step4.0_minimization_converged.log b/tests/fixtures/gromacs_logs/Q946V6_step4.0_minimization_converged.log new file mode 100644 index 0000000..8f7405b --- /dev/null +++ b/tests/fixtures/gromacs_logs/Q946V6_step4.0_minimization_converged.log @@ -0,0 +1,464 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_Q946v6 +Process ID: 906175 +Command line: + gmx mdrun -v -deffnm step4.0_minimization -ntmpi 1 + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 12 cores, 12 processing units, 1 compatible GPU +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] + CPU limit set by OS: -1 Recommended max number of threads: 12 + GPU info: + Number of GPUs detected: 1 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 12 + +Input Parameters: + integrator = steep + tinit = 0 + dt = 0.001 + nsteps = 5000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = -17825921 + emtol = 1000 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 0 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 10 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.26 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 240 + fourier-ny = 240 + fourier-nz = 240 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = not available + ensemble-temperature = -1 + tcoupl = No + nsttcouple = -1 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = No + pcoupltype = Isotropic + nstpcouple = -1 + tau-p = 1 + compressibility (3x3): + compressibility[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p (3x3): + ref-p[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + refcoord-scaling = No + posres-com (3): + posres-com[0]= 0.00000e+00 + posres-com[1]= 0.00000e+00 + posres-com[2]= 0.00000e+00 + posres-comB (3): + posres-comB[0]= 0.00000e+00 + posres-comB[1]= 0.00000e+00 + posres-comB[2]= 0.00000e+00 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = false + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 3.95571e+06 + ref-t: 0 + tau-t: 0 +annealing: No +annealing-npoints: 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 18992 lines trimmed by the mdforge fixture builder ...] +Constraint error in algorithm Lincs at step -1 +Wrote pdb files with previous and current coordinates +Started Steepest Descents on rank 0 Sun May 31 03:06:23 2026 + +Check for bad contacts and/or reduce the timestep if appropriate. +Wrote pdb files with previous and current coordinates + Step Time + 11 11.00000 +Check for bad contacts and/or reduce the timestep if appropriate. +Wrote pdb files with previous and current coordinates + Step Time + 18 18.00000 +Constraint error in algorithm Lincs at step 29 +Wrote pdb files with previous and current coordinates + Step Time + 29 29.00000 +Constraint error in algorithm Lincs at step 31 +Wrote pdb files with previous and current coordinates + Step Time + 31 31.00000 +Constraint error in algorithm Lincs at step 38 +Wrote pdb files with previous and current coordinates + Step Time + 38 38.00000 +Constraint error in algorithm Lincs at step 44 +Wrote pdb files with previous and current coordinates + Step Time + 44 44.00000 +Check for bad contacts and/or reduce the timestep if appropriate. +Wrote pdb files with previous and current coordinates + Step Time + 46 46.00000 +Check for bad contacts and/or reduce the timestep if appropriate. +Wrote pdb files with previous and current coordinates + Step Time + 47 47.00000 +Constraint error in algorithm Lincs at step 62 +Wrote pdb files with previous and current coordinates + Step Time + 62 62.00000 +Check for bad contacts and/or reduce the timestep if appropriate. +Wrote pdb files with previous and current coordinates + Step Time + 65 65.00000 +Constraint error in algorithm Lincs at step 72 +Wrote pdb files with previous and current coordinates + Step Time + 72 72.00000 +Constraint error in algorithm Lincs at step 77 +Wrote pdb files with previous and current coordinates + Step Time + 77 77.00000 +Constraint error in algorithm Lincs at step 86 +Wrote pdb files with previous and current coordinates + Step Time + 86 86.00000 +Constraint error in algorithm Lincs at step 101 +Wrote pdb files with previous and current coordinates + Step Time + 101 101.00000 +Constraint error in algorithm Lincs at step 116 +Wrote pdb files with previous and current coordinates + Step Time + 116 116.00000 +Constraint error in algorithm Lincs at step 119 +Wrote pdb files with previous and current coordinates + Step Time + 119 119.00000 +[... 0 lines trimmed by the mdforge fixture builder ...] + Position Rest. Potential Pressure (bar) Constr. rmsd + 6.05336e+02 -3.34154e+07 -5.15517e+03 6.17896e-06 + + Step Time + 2021 2021.00000 + + Step Time + 2022 2022.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 3.49908e+03 1.03129e+04 3.21960e+04 4.34908e+02 -1.19349e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 8.63522e+03 1.63253e+05 4.00715e+06 -3.77577e+07 1.17056e+05 + Position Rest. Potential Pressure (bar) Constr. rmsd + 6.05537e+02 -3.34157e+07 -5.15505e+03 6.16275e-06 + + Step Time + 2023 2023.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 3.50387e+03 1.03127e+04 3.21959e+04 4.34775e+02 -1.19354e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 8.63306e+03 1.63243e+05 4.00734e+06 -3.77579e+07 1.17038e+05 + Position Rest. Potential Pressure (bar) Constr. rmsd + 6.05683e+02 -3.34158e+07 -5.15452e+03 6.11124e-06 + + Step Time + 2024 2024.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 3.79354e+03 1.03472e+04 3.21957e+04 4.34958e+02 -1.19361e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 8.63595e+03 1.63254e+05 4.00757e+06 -3.77586e+07 1.17034e+05 + Position Rest. Potential Pressure (bar) Constr. rmsd + 6.05881e+02 -3.34159e+07 -5.15472e+03 6.04463e-06 + + Step Time + 2025 2025.00000 + + Step Time + 2026 2026.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 3.19262e+03 1.02788e+04 3.21956e+04 4.34750e+02 -1.19365e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 8.63353e+03 1.63247e+05 4.00766e+06 -3.77586e+07 1.17023e+05 + Position Rest. Potential Pressure (bar) Constr. rmsd + 6.05937e+02 -3.34166e+07 -5.15399e+03 6.11137e-06 + + +Steepest Descents converged to Fmax < 1000 in 2027 steps +Potential Energy = -3.3416566e+07 +Maximum force = 7.1497339e+02 on atom 6883 +Norm of force = 1.0526346e+01 +Finished mdrun on rank 0 Sun May 31 03:14:27 2026 + diff --git a/tests/fixtures/gromacs_logs/Q946V6_step4.2_equilibration_NPT_310K.log b/tests/fixtures/gromacs_logs/Q946V6_step4.2_equilibration_NPT_310K.log new file mode 100644 index 0000000..0d7f142 --- /dev/null +++ b/tests/fixtures/gromacs_logs/Q946V6_step4.2_equilibration_NPT_310K.log @@ -0,0 +1,500 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_Q946v6 +Process ID: 906899 +Command line: + gmx mdrun -v -deffnm step4.2_equilibration -nb gpu -pme gpu -ntmpi 1 + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 12 cores, 12 processing units, 1 compatible GPU +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] + CPU limit set by OS: -1 Recommended max number of threads: 12 + GPU info: + Number of GPUs detected: 1 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 12 + +Input Parameters: + integrator = md + tinit = 0 + dt = 0.001 + nsteps = 2000000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = -1208092689 + emtol = 10 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 5000 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 20 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.2 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 240 + fourier-ny = 240 + fourier-nz = 240 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = constant + ensemble-temperature = 310 + tcoupl = V-rescale + nsttcouple = 100 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = Berendsen + pcoupltype = Isotropic + nstpcouple = 100 + tau-p = 1 + compressibility (3x3): + compressibility[ 0]={ 4.50000e-05, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 4.50000e-05, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 4.50000e-05} + ref-p (3x3): + ref-p[ 0]={ 1.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 1.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 1.00000e+00} + refcoord-scaling = COM + posres-com (3): + posres-com[0]= 5.01428e-01 + posres-com[1]= 4.99590e-01 + posres-com[2]= 5.00066e-01 + posres-comB (3): + posres-comB[0]= 5.01428e-01 + posres-comB[1]= 4.99590e-01 + posres-comB[2]= 5.00066e-01 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = true + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 34088 3.92162e+06 + ref-t: 310 310 + tau-t: 1 1 +annealing: No No +annealing-npoints: 0 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 26216 lines trimmed by the mdforge fixture builder ...] + +Started mdrun on rank 0 Sun May 31 03:53:35 2026 + + Step Time +[... 0 lines trimmed by the mdforge fixture builder ...] + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.97985e+03 1.61613e+05 2.90160e+06 -3.09737e+07 9.72525e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.53869e+03 -2.77210e+07 5.10015e+06 -2.26208e+07 -2.23546e+07 + Temperature Pressure (bar) Constr. rmsd + 3.10138e+02 -1.88898e+01 0.00000e+00 + + Step Time + 1997000 1997.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.11818e+04 3.21146e+04 3.50837e+04 1.94795e+03 -9.97117e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 1.00511e+04 1.61495e+05 2.90000e+06 -3.09712e+07 9.75996e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.58135e+03 -2.77201e+07 5.09751e+06 -2.26226e+07 -2.23541e+07 + Temperature Pressure (bar) Constr. rmsd + 3.09978e+02 -1.79127e+01 0.00000e+00 + + Step Time + 1998000 1998.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.09242e+04 3.22918e+04 3.47138e+04 2.04303e+03 -9.09508e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.96480e+03 1.61930e+05 2.91081e+06 -3.09856e+07 9.76832e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.54627e+03 -2.77236e+07 5.10285e+06 -2.26207e+07 -2.23543e+07 + Temperature Pressure (bar) Constr. rmsd + 3.10302e+02 4.60587e+00 0.00000e+00 + + Step Time + 1999000 1999.00000 + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.09845e+04 3.22346e+04 3.48081e+04 1.98725e+03 -9.29575e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.96241e+03 1.61671e+05 2.90716e+06 -3.09758e+07 9.73127e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.42499e+03 -2.77182e+07 5.09479e+06 -2.26234e+07 -2.23546e+07 + Temperature Pressure (bar) Constr. rmsd + 3.09812e+02 2.56449e+00 0.00000e+00 + + Step Time + 2000000 2000.00000 + +Writing checkpoint, step 2000000 at Sun May 31 18:13:30 2026 + + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.11896e+04 3.21260e+04 3.49330e+04 2.02010e+03 -8.93677e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.90848e+03 1.61554e+05 2.90462e+06 -3.09830e+07 9.73070e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.50768e+03 -2.77278e+07 5.09862e+06 -2.26292e+07 -2.23540e+07 + Temperature Pressure (bar) Constr. rmsd + 3.10045e+02 -1.64561e+01 0.00000e+00 + + +Energy conservation over simulation part #1 of length 2000 ps, time 0 to 2000 ps + Conserved energy drift: 6.01e-05 kJ/mol/ps per atom + + + <====== ############### ==> + <==== A V E R A G E S ====> + <== ############### ======> + + Statistics over 2000001 steps using 20001 frames + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.12197e+04 3.23734e+04 3.49417e+04 2.00986e+03 -9.16264e+02 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 1.00178e+04 1.61980e+05 2.90733e+06 -3.09761e+07 9.74383e+04 + Position Rest. Potential Kinetic En. Total Energy Conserved En. + 2.40935e+03 -2.77173e+07 5.09788e+06 -2.26194e+07 -2.24777e+07 + Temperature Pressure (bar) Constr. rmsd + 3.10000e+02 4.14419e-01 0.00000e+00 + + Box-X Box-Y Box-Z + 2.70222e+01 2.70222e+01 2.70222e+01 + + Total Virial (kJ/mol) + 1.69890e+06 -3.80416e+02 -7.34926e+02 + -3.80408e+02 1.69895e+06 -1.03793e+02 + -7.35089e+02 -1.03945e+02 1.69932e+06 + + Pressure (bar) + 5.87102e-01 6.66665e-01 1.18717e+00 + 6.66651e-01 6.88635e-01 2.20658e-01 + 1.18745e+00 2.20914e-01 -3.24797e-02 + + T-SOLU T-SOLV + 3.10130e+02 3.09999e+02 + + + M E G A - F L O P S A C C O U N T I N G + + NB=Group-cutoff nonbonded kernels NxN=N-by-N cluster Verlet kernels + RF=Reaction-Field VdW=Van der Waals QSTab=quadratic-spline table + W3=SPC/TIP3p W4=TIP4p (single or pairs) + V&F=Potential and force V=Potential only F=Force only + + Computing: M-Number M-Flops % Flops +----------------------------------------------------------------------------- + Pair Search distance check 4858421.829488 43725796.465 -0.0 + 1,4 nonbonded interactions 72252.036126 6502683.251 -0.0 + Shift-X 39453.752589 236722.516 -0.0 + Bonds 13814.006907 815026.408 -0.0 + Propers 70188.035094 16073060.037 -0.0 + Impropers 4628.002314 962624.481 -0.0 + Pos. Restr. 13590.006795 679500.340 -0.0 + Virial 39454.652634 710183.747 -0.0 + Stop-CM 39453.752589 394537.526 -0.0 + P-Coupling 39453.752589 236722.516 -0.0 + Calc-Ekin 78907.505178 2130502.640 -0.0 + CMAP 1744.000872 2964801.482 -0.0 + Urey-Bradley 49990.024995 9148174.574 -0.0 +----------------------------------------------------------------------------- + Total 84580335.982 -0.0 +----------------------------------------------------------------------------- + + + R E A L C Y C L E A N D T I M E A C C O U N T I N G + +On 1 MPI rank, each using 12 OpenMP threads + + Activity: Num Num Call Wall time Giga-Cycles + Ranks Threads Count (s) total sum % +-------------------------------------------------------------------------------- + Neighbor search 1 12 20001 2681.887 80267.309 5.2 + Launch PP GPU ops. 1 12 3980001 208.898 6252.207 0.4 + Force 1 12 2000001 2382.636 71310.903 4.6 + PME GPU mesh 1 12 2000001 143.719 4301.438 0.3 + Wait GPU NB local 1 12 1980000 45.055 1348.463 0.1 + Wait GPU state copy 1 12 2120003 45133.374 1350815.550 87.5 + NB X/F buffer ops. 1 12 20001 66.627 1994.102 0.1 + Write traj. 1 12 457 63.651 1905.049 0.1 + Rest 873.236 26135.446 1.7 +-------------------------------------------------------------------------------- + Total 51599.084 1544330.467 100.0 +-------------------------------------------------------------------------------- + Breakdown of PME mesh activities +-------------------------------------------------------------------------------- + Wait PME GPU gather 1 12 2000001 48.404 1448.709 0.1 + Reduce GPU PME F 1 12 2000001 17.201 514.808 0.0 + Launch PME GPU ops. 1 12 18000009 70.263 2102.921 0.1 +-------------------------------------------------------------------------------- + + Core t (s) Wall t (s) (%) + Time: 619188.762 51599.084 1200.0 + 14h19:59 + (ns/day) (hour/ns) +Performance: 3.349 7.167 +Finished mdrun on rank 0 Sun May 31 18:13:34 2026 + diff --git a/tests/fixtures/gromacs_logs/Q946V6_step5_production_12_sessions.log b/tests/fixtures/gromacs_logs/Q946V6_step5_production_12_sessions.log new file mode 100644 index 0000000..85b3cef --- /dev/null +++ b/tests/fixtures/gromacs_logs/Q946V6_step5_production_12_sessions.log @@ -0,0 +1,676 @@ + :-) GROMACS - gmx mdrun, 2023.3 (-: + +Copyright 1991-2023 The GROMACS Authors. +GROMACS is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 +of the License, or (at your option) any later version. + + Current GROMACS contributors: + Mark Abraham Andrey Alekseenko Cathrine Bergh + Christian Blau Eliane Briand Mahesh Doijade + Stefan Fleischmann Vytas Gapsys Gaurav Garg + Sergey Gorelov Gilles Gouaillardet Alan Gray + M. Eric Irrgang Farzaneh Jalalypour Joe Jordan + Christoph Junghans Prashanth Kanduri Sebastian Keller + Carsten Kutzner Justin A. Lemkul Magnus Lundborg + Pascal Merz Vedran Miletic Dmitry Morozov + Szilard Pall Roland Schulz Michael Shirts + Alexey Shvetsov Balint Soproni David van der Spoel + Philip Turner Carsten Uphoff Alessandra Villa + Sebastian Wingbermuehle Artem Zhmurov + + Previous GROMACS contributors: + Emile Apol Rossen Apostolov James Barnett + Herman J.C. Berendsen Par Bjelkmar Viacheslav Bolnykh + Kevin Boyd Aldert van Buuren Carlo Camilloni + Rudi van Drunen Anton Feenstra Oliver Fleetwood + Gerrit Groenhof Bert de Groot Anca Hamuraru + Vincent Hindriksen Victor Holanda Aleksei Iupinov + Dimitrios Karkoulis Peter Kasson Sebastian Kehl + Jiri Kraus Per Larsson Viveca Lindahl + Erik Marklund Pieter Meulenhoff Teemu Murtola + Sander Pronk Alfons Sijbers Peter Tieleman + Jon Vincent Teemu Virolainen Christian Wennberg + Maarten Wolf + + Coordinated by the GROMACS project leaders: + Paul Bauer, Berk Hess, and Erik Lindahl + +GROMACS: gmx mdrun, version 2023.3 +Executable: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx +Data prefix: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0 +Working dir: /cluster/project/MDS/output/complex_Q946v6 +Process ID: 919705 +Command line: + gmx mdrun -v -deffnm step5_production -nb gpu -pme gpu -ntmpi 1 + +GROMACS version: 2023.3 +Precision: mixed +Memory model: 64 bit +MPI library: thread_mpi +OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128) +GPU support: CUDA +NB cluster size: 8 +SIMD instructions: AVX_512 +CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128 +GPU FFT library: cuFFT +Multi-GPU FFT: none +RDTSCP usage: enabled +TNG support: enabled +Hwloc support: disabled +Tracing support: disabled +C compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicc GNU 11.3.0 +C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -O3 -DNDEBUG +C++ compiler: /eb/software/OpenMPI/4.1.4-GCC-11.3.0/bin/mpicxx GNU 11.3.0 +C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +BLAS library: External - user-supplied +LAPACK library: External - user-supplied +CUDA compiler: /eb/software/CUDA/11.7.0/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2022 NVIDIA Corporation;Built on Tue_May__3_18:49:52_PDT_2022;Cuda compilation tools, release 11.7, V11.7.64;Build cuda_11.7.r11.7/compiler.31294372_0 +CUDA compiler flags:-std=c++17;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_70,code=sm_70;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx512f -mfma -mavx512vl -mavx512dq -mavx512bw -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG +CUDA driver: 13.0 +CUDA runtime: 11.70 + + +Running on 1 node with total 12 cores, 12 processing units, 1 compatible GPU +Hardware detected on host gpu05: + CPU info: + Vendor: Intel + Brand: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz + Family: 6 Model: 85 Stepping: 7 + Features: aes apic avx avx2 avx512f avx512cd avx512bw avx512vl avx512secondFMA clfsh cmov cx8 cx16 f16c fma htt intel lahf mmx msr nonstop_tsc pcid pclmuldq pdcm pdpe1gb popcnt pse rdrnd rdtscp sse2 sse3 sse4.1 sse4.2 ssse3 tdt x2apic + Number of AVX-512 FMA units: 2 + Hardware topology: Basic + Packages, cores, and logical processors: + [indices refer to OS logical processors] + Package 0: [ 8] [ 9] [ 10] [ 11] [ 12] [ 13] + Package 1: [ 28] [ 29] [ 30] [ 31] [ 32] [ 33] + CPU limit set by OS: -1 Recommended max number of threads: 12 + GPU info: + Number of GPUs detected: 1 + #0: NVIDIA Tesla V100-SXM2-32GB, compute cap.: 7.0, ECC: yes, stat: compatible + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. +Lindahl +GROMACS: High performance molecular simulations through multi-level +parallelism from laptops to supercomputers +SoftwareX 1 (2015) pp. 19-25 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl +Tackling Exascale Software Challenges in Molecular Dynamics Simulations with +GROMACS +In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. +Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl +GROMACS 4.5: a high-throughput and highly parallel open source molecular +simulation toolkit +Bioinformatics 29 (2013) pp. 845-54 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl +GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable +molecular simulation +J. Chem. Theory Comput. 4 (2008) pp. 435-447 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. +Berendsen +GROMACS: Fast, Flexible and Free +J. Comp. Chem. 26 (2005) pp. 1701-1719 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +E. Lindahl and B. Hess and D. van der Spoel +GROMACS 3.0: A package for molecular simulation and trajectory analysis +J. Mol. Mod. 7 (2001) pp. 306-317 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE READ AND CITE THE FOLLOWING REFERENCE ++++ +H. J. C. Berendsen, D. van der Spoel and R. van Drunen +GROMACS: A message-passing parallel molecular dynamics implementation +Comp. Phys. Comm. 91 (1995) pp. 43-56 +-------- -------- --- Thank You --- -------- -------- + + +++++ PLEASE CITE THE DOI FOR THIS VERSION OF GROMACS ++++ +https://doi.org/10.5281/zenodo.10017686 +-------- -------- --- Thank You --- -------- -------- + + +The number of OpenMP threads was set by environment variable OMP_NUM_THREADS to 12 + +Input Parameters: + integrator = md + tinit = 0 + dt = 0.002 + nsteps = 500000 + init-step = 0 + simulation-part = 1 + mts = false + comm-mode = Linear + nstcomm = 100 + bd-fric = 0 + ld-seed = 2145779070 + emtol = 10 + emstep = 0.01 + niter = 20 + fcstep = 0 + nstcgsteep = 1000 + nbfgscorr = 10 + rtpi = 0.05 + nstxout = 0 + nstvout = 0 + nstfout = 0 + nstlog = 1000 + nstcalcenergy = 100 + nstenergy = 1000 + nstxout-compressed = 50000 + compressed-x-precision = 1000 + cutoff-scheme = Verlet + nstlist = 20 + pbc = xyz + periodic-molecules = false + verlet-buffer-tolerance = 0.005 + rlist = 1.225 + coulombtype = PME + coulomb-modifier = Potential-shift + rcoulomb-switch = 0 + rcoulomb = 1.2 + epsilon-r = 1 + epsilon-rf = inf + vdw-type = Cut-off + vdw-modifier = Force-switch + rvdw-switch = 1 + rvdw = 1.2 + DispCorr = No + table-extension = 1 + fourierspacing = 0.12 + fourier-nx = 240 + fourier-ny = 240 + fourier-nz = 240 + pme-order = 4 + ewald-rtol = 1e-05 + ewald-rtol-lj = 0.001 + lj-pme-comb-rule = Geometric + ewald-geometry = 3d + epsilon-surface = 0 + ensemble-temperature-setting = constant + ensemble-temperature = 303.15 + tcoupl = V-rescale + nsttcouple = 100 + nh-chain-length = 0 + print-nose-hoover-chain-variables = false + pcoupl = C-rescale + pcoupltype = Isotropic + nstpcouple = 100 + tau-p = 5 + compressibility (3x3): + compressibility[ 0]={ 4.50000e-05, 0.00000e+00, 0.00000e+00} + compressibility[ 1]={ 0.00000e+00, 4.50000e-05, 0.00000e+00} + compressibility[ 2]={ 0.00000e+00, 0.00000e+00, 4.50000e-05} + ref-p (3x3): + ref-p[ 0]={ 1.00000e+00, 0.00000e+00, 0.00000e+00} + ref-p[ 1]={ 0.00000e+00, 1.00000e+00, 0.00000e+00} + ref-p[ 2]={ 0.00000e+00, 0.00000e+00, 1.00000e+00} + refcoord-scaling = No + posres-com (3): + posres-com[0]= 0.00000e+00 + posres-com[1]= 0.00000e+00 + posres-com[2]= 0.00000e+00 + posres-comB (3): + posres-comB[0]= 0.00000e+00 + posres-comB[1]= 0.00000e+00 + posres-comB[2]= 0.00000e+00 + QMMM = false +qm-opts: + ngQM = 0 + constraint-algorithm = Lincs + continuation = true + Shake-SOR = false + shake-tol = 0.0001 + lincs-order = 4 + lincs-iter = 1 + lincs-warnangle = 30 + nwall = 0 + wall-type = 9-3 + wall-r-linpot = -1 + wall-atomtype[0] = -1 + wall-atomtype[1] = -1 + wall-density[0] = 0 + wall-density[1] = 0 + wall-ewald-zfac = 3 + pull = false + awh = false + rotation = false + interactiveMD = false + disre = No + disre-weighting = Conservative + disre-mixed = false + dr-fc = 1000 + dr-tau = 0 + nstdisreout = 100 + orire-fc = 0 + orire-tau = 0 + nstorireout = 100 + free-energy = no + cos-acceleration = 0 + deform (3x3): + deform[ 0]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 1]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + deform[ 2]={ 0.00000e+00, 0.00000e+00, 0.00000e+00} + simulated-tempering = false + swapcoords = no + userint1 = 0 + userint2 = 0 + userint3 = 0 + userint4 = 0 + userreal1 = 0 + userreal2 = 0 + userreal3 = 0 + userreal4 = 0 + applied-forces: + electric-field: + x: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + y: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + z: + E0 = 0 + omega = 0 + t0 = 0 + sigma = 0 + density-guided-simulation: + active = false + group = protein + similarity-measure = inner-product + atom-spreading-weight = unity + force-constant = 1e+09 + gaussian-transform-spreading-width = 0.2 + gaussian-transform-spreading-range-in-multiples-of-width = 4 + reference-density-filename = reference.mrc + nst = 1 + normalize-densities = true + adaptive-force-scaling = false + adaptive-force-scaling-time-constant = 4 + shift-vector = + transformation-matrix = + qmmm-cp2k: + active = false + qmgroup = System + qmmethod = PBE + qmfilenames = + qmcharge = 0 + qmmultiplicity = 1 +grpopts: + nrdf: 34088 3.92162e+06 + ref-t: 303.15 303.15 + tau-t: 1 1 +annealing: No No +annealing-npoints: 0 0 + acc: 0 0 0 + nfreeze: N N N + energygrp-flags[ 0]: 0 + +[... 754328 lines trimmed by the mdforge fixture builder ...] + +Started mdrun on rank 0 Sun May 31 18:13:46 2026 + + Step Time + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sun May 31 22:06:05 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1602701 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Thu Jun 4 02:01:58 2026 + + Step Time + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Fri Jun 5 01:47:00 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 1623720 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Fri Jun 5 02:02:10 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sat Jun 6 02:02:12 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 2625850 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Sat Jun 6 18:52:10 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sun Jun 7 18:37:13 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 2647186 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Sun Jun 7 18:52:27 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Mon Jun 8 18:37:31 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 2668464 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Mon Jun 8 18:53:32 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Tue Jun 9 18:38:36 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 2689558 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Tue Jun 9 18:54:00 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Wed Jun 10 18:39:02 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 37864 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Fri Jun 12 14:58:54 2026 + + Step Time + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sat Jun 13 14:43:57 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 78975 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Sat Jun 13 15:33:32 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Sun Jun 14 15:33:35 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 105369 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Sun Jun 14 15:34:04 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Mon Jun 15 15:19:07 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 203750 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Mon Jun 15 16:21:17 2026 + + + +Reading checkpoint file step5_production.cpt + file generated by: /eb/software/GROMACS/2023.3-foss-2022a-CUDA-11.7.0/bin/gmx + file generated at: Tue Jun 16 16:06:20 2026 +----------------------------------------------------------- +Restarting from checkpoint, appending to previous log file. + + :-) GROMACS - gmx mdrun, 2023.3 (-: +Process ID: 123758 +Command line: + gmx mdrun -v -s step5_production_ext.tpr -cpi step5_production.cpt -append -deffnm step5_production -nb gpu -pme gpu -ntmpi 4 -npme 1 + + +Started mdrun on rank 0 Tue Jun 16 16:45:32 2026 + + +[... 0 lines trimmed by the mdforge fixture builder ...] + +DD step 49999999 load imb.: force 2.9% pme mesh/force 1.509 + Step Time + 50000000 100000.00000 + +Writing checkpoint, step 50000000 at Wed Jun 17 05:06:23 2026 + + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.14615e+04 3.25488e+04 3.44204e+04 1.96840e+03 -1.21557e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.63954e+03 1.60586e+05 2.96057e+06 -3.12482e+07 8.28752e+04 + Potential Kinetic En. Total Energy Conserved En. Temperature + -2.79554e+07 4.98632e+06 -2.29691e+07 -1.15458e+07 3.03216e+02 + Pressure (bar) Constr. rmsd + -4.12692e+00 0.00000e+00 + + +Energy conservation over simulation part #12 of length 4677.2 ps, time 95322.8 to 100000 ps + Conserved energy drift: 5.88e-05 kJ/mol/ps per atom + + + <====== ############### ==> + <==== A V E R A G E S ====> + <== ############### ======> + + Statistics over 50000001 steps using 500001 frames + + Energies (kJ/mol) + Bond U-B Proper Dih. Improper Dih. CMAP Dih. + 1.12277e+04 3.23357e+04 3.44952e+04 1.97148e+03 -1.24858e+03 + LJ-14 Coulomb-14 LJ (SR) Coulomb (SR) Coul. recip. + 9.72016e+03 1.60808e+05 2.96248e+06 -3.12432e+07 6.91879e+04 + Potential Kinetic En. Total Energy Conserved En. Temperature + -2.79622e+07 4.98537e+06 -2.29768e+07 -1.70830e+07 3.03158e+02 + Pressure (bar) Constr. rmsd + 9.25195e-01 0.00000e+00 + + Box-X Box-Y Box-Z + 2.69648e+01 2.69648e+01 2.69648e+01 + + Total Virial (kJ/mol) + 1.66119e+06 7.80724e-01 -2.08884e-02 + 7.72089e-01 1.66125e+06 1.22412e+01 + -2.43839e-02 1.22540e+01 1.66130e+06 + + Pressure (bar) + 9.06656e-01 8.72563e-03 1.14022e-02 + 8.74026e-03 9.37851e-01 -1.00004e-02 + 1.14081e-02 -1.00221e-02 9.31078e-01 + + T-SOLU T-SOLV + 3.03669e+02 3.03154e+02 + + + P P - P M E L O A D B A L A N C I N G + + PP/PME load balancing changed the cut-off and PME settings: + particle-particle PME + rcoulomb rlist grid spacing 1/beta + initial 1.200 nm 1.201 nm 240 240 240 0.112 nm 0.384 nm + final 1.248 nm 1.249 nm 216 216 216 0.125 nm 0.400 nm + cost-ratio 1.13 0.73 + (note that these numbers concern only part of the total PP and PME load) + + + M E G A - F L O P S A C C O U N T I N G + + NB=Group-cutoff nonbonded kernels NxN=N-by-N cluster Verlet kernels + RF=Reaction-Field VdW=Van der Waals QSTab=quadratic-spline table + W3=SPC/TIP3p W4=TIP4p (single or pairs) + V&F=Potential and force V=Potential only F=Force only + + Computing: M-Number M-Flops % Flops +----------------------------------------------------------------------------- + Pair Search distance check 6422615.560672 57803540.046 0.0 + NxN QSTab Elec. + LJ [F] 6420234127.298112 340272408746.800 98.4 + NxN QSTab Elec. + LJ [V&F] 64853621.341952 5253143328.698 1.5 + 1,4 nonbonded interactions 84484.299726 7603586.975 0.0 + Reset In Box 46130.966354 138392.899 0.0 + CG-CoM 46132.938943 138398.817 0.0 + Bonds 16152.717107 953010.309 0.0 + Propers 82070.863494 18794227.740 0.0 + Impropers 5411.522714 1125596.725 0.0 + Virial 46136.096188 830449.731 0.0 + Stop-CM 46132.938943 461329.389 0.0 + P-Coupling 46132.938943 276797.634 0.0 + Calc-Ekin 92263.905297 2491125.443 0.0 + CMAP 2039.260072 3466742.122 0.0 + Urey-Bradley 58453.331995 10696959.755 0.0 +----------------------------------------------------------------------------- + Total 345630332233.084 100.0 +----------------------------------------------------------------------------- + + + D O M A I N D E C O M P O S I T I O N S T A T I S T I C S + + av. #atoms communicated per step for force: 2 x 275854.5 + + +Dynamic load balancing report: + DLB was off during the run due to low measured imbalance. + Average load imbalance: 2.8%. + The balanceable part of the MD step is 53%, load imbalance is computed from this. + Part of the total run time spent waiting due to load imbalance: 1.5%. + Average PME mesh/force load: 1.524 + Part of the total run time spent waiting due to PP/PME imbalance: 9.4 % + +NOTE: 9.4 % performance was lost because the PME ranks + had more work to do than the PP ranks. + You might want to increase the number of PME ranks + or increase the cut-off and the grid spacing. + + + R E A L C Y C L E A N D T I M E A C C O U N T I N G + +On 3 MPI ranks doing PP, each using 6 OpenMP threads, and +on 1 MPI rank doing PME, using 6 OpenMP threads + + Activity: Num Num Call Wall time Giga-Cycles + Ranks Threads Count (s) total sum % +-------------------------------------------------------------------------------- + Domain decomp. 3 6 23386 2387.242 107172.578 4.0 + DD comm. load 3 6 23363 18.997 852.847 0.0 + Send X to PME 3 6 2338601 9587.430 430417.000 16.2 + Neighbor search 3 6 23387 1139.622 51162.052 1.9 + Launch PP GPU ops. 3 6 6992416 487.465 21884.196 0.8 + Comm. coord. 3 6 2315214 6490.409 291379.678 10.9 + Force 3 6 2338601 1428.817 64145.150 2.4 + Wait + Comm. F 3 6 2338601 1718.017 77128.442 2.9 + PME GPU mesh * 1 6 2338601 16172.399 242013.954 9.1 + PME wait for PP * 28283.367 423250.113 15.9 + Wait + Recv. PME F 3 6 2338601 10640.538 477695.133 18.0 + Wait GPU NB nonloc. 3 6 2338601 18.719 840.376 0.0 + Wait GPU NB local 3 6 2338601 139.855 6278.617 0.2 + Wait GPU state copy 3 6 7109347 10218.111 458730.723 17.2 + NB X/F buffer ops. 3 6 46774 15.892 713.472 0.0 + Write traj. 3 6 96 12.588 565.132 0.0 + Comm. energies 3 6 23387 69.989 3142.095 0.1 + Rest 82.119 3686.639 0.1 +-------------------------------------------------------------------------------- + Total 44455.809 2661058.840 100.0 +-------------------------------------------------------------------------------- +(*) Note that with separate PME ranks, the walltime column actually sums to + twice the total reported, but the cycle count total and % are correct. +-------------------------------------------------------------------------------- + Breakdown of PME mesh activities +-------------------------------------------------------------------------------- + Wait PME GPU gather 1 6 2338601 16054.534 240250.150 9.0 + Launch PME GPU ops. 1 6 18732176 119.528 1788.693 0.1 +-------------------------------------------------------------------------------- + + Core t (s) Wall t (s) (%) + Time: 1066938.407 44455.809 2400.0 + 12h20:55 + (ns/day) (hour/ns) +Performance: 9.090 2.640 +Finished mdrun on rank 0 Wed Jun 17 05:06:27 2026 + From a93e4c8bb5d6baa3a5e6b646b5c80f03d737502f Mon Sep 17 00:00:00 2001 From: Hossam Mahmoud Date: Thu, 24 Sep 2026 01:32:21 +0300 Subject: [PATCH 4/5] PBC: diagnose, treat and prove the solute trajectory in one pass - moldynx.core.pbc.PBCProcessor: per frame, measure the raw coordinates (split molecules, COM continuity, PBC-aware partner distance), apply none/whole/nojump (auto: nojump for multi-molecule solutes, first-frame clustering), then prove the result against the raw frame (whole-box translations only, bonds short, partner distances preserved, two translation vectors exactly where a molecule was split). - AnalysisContext: no more silent try/except around unwrap; the solute cache is keyed on input fingerprints, PBC mode, slice and selection; chain identity persisted as atom-index ranges (chain_groups()). - interface: partners from persisted chain identity (PDB truncates CHARMM-GUI segids to 'seg_', collapsing both chains into one segment). - New pbc_validation analysis. - Reproduces an independent manual audit of two 100 ns complexes exactly. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 24 +++ moldynx/analysis/interface.py | 51 +++--- moldynx/analysis/pbc_validation.py | 88 ++++++++++ moldynx/core/context.py | 128 ++++++++++++-- moldynx/core/pbc.py | 258 +++++++++++++++++++++++++++++ tests/test_pbc.py | 121 ++++++++++++++ 6 files changed, 629 insertions(+), 41 deletions(-) create mode 100644 moldynx/analysis/pbc_validation.py create mode 100644 moldynx/core/pbc.py create mode 100644 tests/test_pbc.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e329c4..55b45fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,3 +38,27 @@ - The run manifest records the evidence chain and fingerprints every file the run depends on. - `analyze` output now defaults to `./moldynx_results/` (was `./moldynx_results`), so runs of different simulations do not overwrite each other. + +### Periodic boundaries: diagnose, treat, prove — in one pass + +- **Fixed:** solute extraction applied `unwrap` inside `try/except: pass`, so a topology without + bonds silently produced a trajectory that was never made whole; the cached solute trajectory was + reused whenever the files existed, whatever the inputs, frame slice or treatment. +- New `moldynx.core.pbc`: for every frame the raw coordinates are diagnosed first (molecules split + across the boundary, centre-of-mass continuity, PBC-aware minimum distance between partners), + then treated (`--pbc auto|none|whole|nojump`; `auto` = nojump for multi-molecule solutes, with + first-frame clustering), then **proven** against the raw frame: only whole-box translations, + all bonds short, partner distances preserved, and a split molecule shows two translation vectors + exactly in the frames where it was split. Nothing is repaired silently. +- New `pbc_validation` analysis (runs first) with `results/pbc_summary.json`, + `results/pbc_per_frame.csv` and a figure. +- The solute cache (`data/core_meta.json`) is keyed on input fingerprints, PBC mode, frame slice + and selection. +- **Fixed:** `interface` could not resolve the two partners of CHARMM-GUI complexes: the PDB + format truncates `seg_0_PROA` / `seg_1_PROB` to `seg_`, so both chains read back from the cached + structure as one segment. Chain identity is now persisted as atom-index ranges + (`AnalysisContext.chain_groups()`); `interface` returns an explicit `skipped` reason instead of a + silent note when partners cannot be resolved. +- Validated on two 100 ns protein–protein trajectories (1.6 M and 2.0 M atoms): split-frame + counts, zero whole-box translations, minimum inter-chain distances and molecular extents + reproduce an independent manual audit exactly. diff --git a/moldynx/analysis/interface.py b/moldynx/analysis/interface.py index a2d6e1d..04e0996 100644 --- a/moldynx/analysis/interface.py +++ b/moldynx/analysis/interface.py @@ -33,30 +33,38 @@ class InterfaceAnalysis(BaseAnalysis): default_params = {"cutoff": 5.0} outputs = ["results/interface.csv", "figures/interface.png"] - def _partners(self, u, system) -> tuple[str, str]: - if system.flags.get("has_nucleic"): - return "protein", "nucleic" - segs = [s for s in u.select_atoms("protein").segments - if s.atoms.select_atoms("name CA").n_residues > 0] - segs = sorted(segs, key=lambda s: s.atoms.n_atoms, reverse=True) - if len(segs) >= 2: - return f"segid {segs[0].segid}", f"segid {segs[1].segid}" - return "protein", "protein" + def _partners(self, ctx, u): + """ + The two interface partners as (label, AtomGroup) pairs. + + Protein chains come from the chain identity persisted at extraction + (atom-index ranges): the PDB format truncates CHARMM-GUI segment IDs + (``seg_0_PROA``/``seg_1_PROB`` -> ``seg_``), so segments read back from + ``core.pdb`` cannot tell the chains apart. + """ + if ctx.system.flags.get("has_nucleic"): + return ("protein", u.select_atoms("protein")), ("nucleic", u.select_atoms("nucleic")) + chains = sorted(ctx.chain_groups(u), key=lambda rc: rc[1].n_atoms, reverse=True) + if len(chains) >= 2: + (ra, a), (rb, b) = chains[0], chains[1] + return (ra.get("segid") or "chain A", a), (rb.get("segid") or "chain B", b) + return None, None def run(self, ctx) -> dict: p = self.params(ctx) plotting.set_style() u = ctx.core_universe() - selA, selB = self._partners(u, ctx.system) - A, B = u.select_atoms(selA), u.select_atoms(selB) - if A.n_atoms == 0 or B.n_atoms == 0 or selA == selB: - return {"note": f"could not resolve two interface partners ({selA}/{selB})"} + pa, pb = self._partners(ctx, u) + if pa is None or pa[1].n_atoms == 0 or pb[1].n_atoms == 0: + return {"status": "skipped", + "reason": "could not resolve two interface partners " + f"({len(ctx.chain_groups(u))} protein chain(s) recorded)"} + (selA, A), (selB, B) = pa, pb - # BSA via mdtraj on the cached core trajectory + # BSA via mdtraj on the cached core trajectory (same atom order as the universe) traj = md.load(str(ctx.config.data_dir / "core.xtc"), top=str(ctx.config.data_dir / "core.pdb")) - idxA = traj.topology.select(_mda_to_mdtraj(selA)) - idxB = traj.topology.select(_mda_to_mdtraj(selB)) + idxA, idxB = A.indices, B.indices sasa_all = md.shrake_rupley(traj, mode="atom") bsa = (sasa_all[:, idxA].sum(1) + sasa_all[:, idxB].sum(1) - md.shrake_rupley(traj.atom_slice(np.concatenate([idxA, idxB])), @@ -82,14 +90,3 @@ def run(self, ctx) -> dict: return {"partners": [selA, selB], "bsa": st.describe(bsa, "bsa_nm2"), "mean_interface_contacts": float(contacts.mean()), "figure": "interface"} - - -def _mda_to_mdtraj(sel: str) -> str: - """Best-effort translation of the simple selections used here to mdtraj DSL.""" - if sel == "protein": - return "protein" - if sel == "nucleic": - return "nucleic" - if sel.startswith("segid "): - return f"chainid {sel.split()[1]}" # approximate - return "all" diff --git a/moldynx/analysis/pbc_validation.py b/moldynx/analysis/pbc_validation.py new file mode 100644 index 0000000..21454e4 --- /dev/null +++ b/moldynx/analysis/pbc_validation.py @@ -0,0 +1,88 @@ +""" +PBC validation: the diagnosis of the raw trajectory and the proof that processing +changed nothing but molecular wholeness / continuity. + +The measurements are taken during solute extraction (one pass over the raw data, +see :mod:`moldynx.core.pbc`); this analysis reports them and draws the evidence. +""" + +from __future__ import annotations + +import json + +import pandas as pd + +from moldynx import plotting +from moldynx.core.base import BaseAnalysis +from moldynx.plotting import PALETTE + + +class PBCValidation(BaseAnalysis): + name = "pbc_validation" + label = "Periodic-boundary diagnosis and proof" + category = "quality" + required_files = {"trajectory", "topology"} + supported_systems = {"*"} + order = 1 # first: every other analysis relies on the processed trajectory + outputs = ["results/pbc_per_frame.csv", "results/pbc_summary.json", + "figures/pbc_validation.png"] + + def run(self, ctx) -> dict: + plotting.set_style() + ctx.core_universe() # extraction records diagnosis + proof + summary = json.loads(ctx.csv_path("pbc_summary.json").read_text(encoding="utf-8")) + df = pd.read_csv(ctx.csv_path("pbc_per_frame.csv")) + t = df.time_ps.to_numpy() / 1000.0 + + n_panels = 2 if summary.get("pairs") else 1 + fig, axes = plotting.style.plt.subplots(n_panels, 1, figsize=(7.6, 2.9 * n_panels + 0.6), + sharex=True, squeeze=False) + ax = axes[0, 0] + colours = [PALETTE[c] for c in ("primary", "secondary", "green", "purple", "accent")] + for k, unit in enumerate(summary["units"][:5]): + col = f"extent_whole_nm_{k}" + if col in df: + ax.plot(t, df[col], color=colours[k % 5], lw=1.2, + label=f"{unit['label']} ({unit['frames_split_in_raw']} split frames)") + split = df.get(f"split_raw_{k}", pd.Series(False, index=df.index)).astype(bool) + if split.any(): + ax.plot(t[split], df[col][split], "o", ms=3, color=colours[k % 5]) + if summary.get("half_box_min_nm"): + ax.axhline(summary["half_box_min_nm"], ls="--", lw=1, color=PALETTE["muted"], + label=f"half box ({summary['half_box_min_nm']:.2f} nm)") + ax.set_ylabel("Molecule extent (nm)") + ax.set_title(f"PBC treatment: {summary['mode']}") + ax.legend(fontsize=8, loc="best") + if n_panels == 2: + ax2 = axes[1, 0] + for p in summary["pairs"][:3]: + i, j = summary_labels_index(summary, p["pair"]) + raw = df.get(f"min_dist_raw_pbc_nm_{i}_{j}") + proc = df.get(f"min_dist_processed_nm_{i}_{j}") + if raw is None: + continue + ax2.plot(t, raw, color=PALETTE["primary"], lw=1.4, + label=f"{p['pair'][0]}–{p['pair'][1]} raw (PBC-aware)") + ax2.plot(t, proc, color=PALETTE["secondary"], lw=0.8, ls="--", + label="processed") + ax2.axhline(0.45, ls=":", lw=1, color=PALETTE["muted"], label="0.45 nm contact") + ax2.set_ylabel("Min. heavy-atom\ndistance (nm)") + ax2.legend(fontsize=8, loc="best") + axes[-1, 0].set_xlabel("Time (ns)") + plotting.save_figure(fig, ctx.fig_path("pbc_validation"), dpi=ctx.config.dpi) + + return {"mode": summary["mode"], "made_whole": summary["made_whole"], + "checks": summary["checks"], + "all_checks_pass": bool(all(summary["checks"].values())), + "units": [{k: u[k] for k in ("label", "frames_split_in_raw", + "whole_box_translations_undone")} + for u in summary["units"]], + "pairs": summary.get("pairs", []), + "max_dev_from_box_translation_A": summary.get("max_dev_from_box_translation_A"), + "figure": "pbc_validation"} + + +def summary_labels_index(summary: dict, pair: list[str]) -> tuple[int, int]: + labels = [u["label"] for u in summary["units"]] + return labels.index(pair[0]), labels.index(pair[1]) + diff --git a/moldynx/core/context.py b/moldynx/core/context.py index fd876d2..899081c 100644 --- a/moldynx/core/context.py +++ b/moldynx/core/context.py @@ -24,7 +24,6 @@ warnings.filterwarnings("ignore", category=DeprecationWarning, module="MDAnalysis") import MDAnalysis as mda # noqa: E402 -from MDAnalysis.transformations import unwrap # noqa: E402 from tqdm import tqdm # noqa: E402 from moldynx.core.config import RunConfig @@ -71,39 +70,140 @@ def core_selection(self) -> str: def core_universe(self) -> mda.Universe: """ - A cached, PBC-corrected, solute-only trajectory universe. + A cached, PBC-treated, solute-only trajectory universe. - Built once and stored under ``data/core.{pdb,xtc}``; reused on subsequent - analyses and subsequent runs. + Stored under ``data/core.{pdb,xtc}`` with ``data/core_meta.json``. The cache is + reused only if its key -- input fingerprints, PBC mode, frame slice, solute + selection -- matches the current run; otherwise it is rebuilt. """ if self._core is not None: return self._core core_pdb = self.config.data_dir / "core.pdb" core_xtc = self.config.data_dir / "core.xtc" - if not (core_pdb.exists() and core_xtc.exists()): + meta = self._read_core_meta() + if not (core_pdb.exists() and core_xtc.exists() and meta + and meta.get("cache_key") == self._core_cache_key()): self._extract_core(core_pdb, core_xtc) self._core = mda.Universe(str(core_pdb), str(core_xtc)) return self._core + # -- cache bookkeeping ------------------------------------------------ # + _EXTRACT_VERSION = 2 # bump when the extraction algorithm changes + + def _core_cache_key(self) -> dict: + from moldynx.core.provenance import file_fingerprint + sl = self.frame_slice() + return {"version": self._EXTRACT_VERSION, + "topology": file_fingerprint(self.topology), + "trajectory": file_fingerprint(self.trajectory), + "selection": self.core_selection(), "pbc": self.config.pbc, + "slice": [sl.start, sl.stop, sl.step]} + + def _read_core_meta(self) -> dict | None: + p = self.config.data_dir / "core_meta.json" + if not p.exists(): + return None + try: + import json + return json.loads(p.read_text(encoding="utf-8")) + except ValueError: + return None + + @property + def core_meta(self) -> dict: + """Chain identity, PBC treatment and cache key of the solute trajectory.""" + self.core_universe() + return self._read_core_meta() or {} + + def chain_groups(self, universe: mda.Universe | None = None) -> list[tuple[dict, "mda.AtomGroup"]]: + """ + Protein chains of the solute trajectory as ``(record, AtomGroup)`` pairs, + addressed by atom index ranges (robust to PDB segid truncation). + """ + u = universe or self.core_universe() + out = [] + for rec in self.core_meta.get("chains", []): + ag = u.atoms[rec["core_start"]:rec["core_stop"]] + if ag.n_atoms: + out.append((rec, ag)) + return out + + # -- extraction ------------------------------------------------------- # def _extract_core(self, core_pdb: Path, core_xtc: Path) -> None: + import json + from moldynx.core.pbc import PBCProcessor + u = self.full_universe() core = u.select_atoms(self.core_selection()) if core.n_atoms == 0: raise RuntimeError(f"Core selection matched no atoms: {self.core_selection()!r}") - # make the solute whole across PBC (needs bonds; .tpr provides them) - try: - u.trajectory.add_transformations(unwrap(core)) - except Exception: - pass # some topologies lack bonds; proceed unwrapped + core_ix = core.indices + + # units: protein chains (from the full topology) + other bonded molecules + chains = [c for c in getattr(self.system, "chains", []) + if np.isin(np.arange(c.atom_start, c.atom_stop), core_ix).all()] + units, labels, in_chain = [], [], np.zeros(core.n_atoms, bool) + for c in chains: + units.append(u.atoms[c.atom_start:c.atom_stop]) + labels.append(c.segid or f"chain{c.index}") + lo = int(np.searchsorted(core_ix, c.atom_start)) + in_chain[lo:lo + (c.atom_stop - c.atom_start)] = True + rest = core[~in_chain] + if rest.n_atoms: + try: + frags = [f.intersection(rest) for f in rest.fragments] + except Exception: # no bonds + frags = [s.atoms.intersection(rest) for s in rest.segments] + for f in sorted((f for f in frags if f.n_atoms), key=lambda a: int(a.indices[0])): + units.append(f) + labels.append(f"{f.residues[0].resname}{f.residues[0].resid}") + if not units: + units, labels = [core], ["solute"] + n_prot = len(chains) + pairs = [(i, j) for i in range(min(n_prot, 6)) for j in range(i + 1, min(n_prot, 6))] + pairs += [(0, k) for k in range(n_prot, min(len(units), n_prot + 6))] if n_prot else [] + + proc = PBCProcessor(core, units, labels, mode=self.config.pbc, pairs=pairs) + if not proc.has_bonds and proc.mode != "none": + print("[core-extract] WARNING: the topology has no bonds -- molecules cannot be " + "made whole; this is recorded in data/core_meta.json and results/pbc_summary.json") sl = self.frame_slice() - u.trajectory[sl.start or 0] - core.write(str(core_pdb)) n = len(range(*sl.indices(len(u.trajectory)))) + wrote_pdb = False with mda.Writer(str(core_xtc), core.n_atoms) as W: - for _ in tqdm(u.trajectory[sl], total=n, - desc="[core-extract] solute", unit="frame"): + for ts in tqdm(u.trajectory[sl], total=n, + desc=f"[core-extract] solute ({proc.mode})", unit="frame"): + proc.process(ts) + if not wrote_pdb: + core.write(str(core_pdb)) + wrote_pdb = True W.write(core) + summary = proc.summary() + self.config.results_dir.mkdir(parents=True, exist_ok=True) + proc.per_frame().to_csv(self.config.results_dir / "pbc_per_frame.csv", index=False) + (self.config.results_dir / "pbc_summary.json").write_text( + json.dumps(summary, indent=2, default=float), encoding="utf-8") + chain_meta = [] + for c in chains: + lo = int(np.searchsorted(core_ix, c.atom_start)) + d = c.to_dict() + d.update(core_start=lo, core_stop=lo + (c.atom_stop - c.atom_start)) + chain_meta.append(d) + meta = {"cache_key": self._core_cache_key(), "n_atoms": int(core.n_atoms), + "n_frames": n, "selection": self.core_selection(), + "pbc_mode": summary["mode"], "made_whole": summary["made_whole"], + "whole_box_translations_undone": {u_["label"]: u_["whole_box_translations_undone"] + for u_ in summary["units"]}, + "first_frame_clustered": summary["first_frame_clustered"], + "checks": summary["checks"], "chains": chain_meta, "units": labels} + (self.config.data_dir / "core_meta.json").write_text( + json.dumps(meta, indent=2, default=str), encoding="utf-8") + if self.provenance is not None: + self.provenance.data["pbc"] = {k: meta[k] for k in + ("pbc_mode", "made_whole", "checks", + "whole_box_translations_undone")} + # -- frames / time ---------------------------------------------------- # def frame_slice(self) -> slice: return slice(self.config.start, self.config.end, self.config.stride) diff --git a/moldynx/core/pbc.py b/moldynx/core/pbc.py new file mode 100644 index 0000000..af247d5 --- /dev/null +++ b/moldynx/core/pbc.py @@ -0,0 +1,258 @@ +""" +Periodic-boundary handling for the solute trajectory: **diagnose, treat, prove** -- in one pass. + +For every frame, before anything is changed, the raw coordinates are measured: +is each molecule split across the box boundary? would its centre of mass need a +whole-box translation to stay continuous with the previous frame? how close are +the partners, measured the PBC-aware way? Then the chosen treatment is applied, +and the result is checked against the raw frame: every atom may only have moved +by an integer combination of box vectors, every bond must be short again, and the +PBC-aware inter-molecular distances must be preserved. + +Treatments (``mode``): + +* ``none`` -- write raw coordinates (diagnosis and proof still recorded). +* ``whole`` -- make every molecule whole (``unwrap`` over bonded fragments). +* ``nojump`` -- whole, then translate each molecule by whole box vectors so its + centre of mass follows a continuous path (≙ ``gmx trjconv -pbc nojump``); on the + first frame each molecule is placed in the image nearest to the largest one + (≙ ``-pbc cluster``) so a complex starts together. +* ``auto`` -- ``nojump`` for solutes of several molecules, ``whole`` otherwise. + +Nothing is repaired silently: if the topology has no bonds the solute cannot be +made whole, and this is recorded (``made_whole = False``), not swallowed. +""" + +from __future__ import annotations + +import numpy as np + +try: # MDAnalysis >= 2.0 + from MDAnalysis.lib.distances import capped_distance +except ImportError: # pragma: no cover + capped_distance = None + +SPLIT_TOL_A = 0.1 # raw extent larger than whole extent by more than this -> split +BOND_MAX_A = 2.5 # a whole molecule has no bond longer than this (Å) +DIST_TOL_A = 0.02 # PBC-aware vs processed minimum distance must agree within this +BOX_TRANSLATION_TOL_A = 0.01 # at or below XTC precision (0.001 nm) +CONTACT_A = 4.5 # heavy-atom contact cutoff used for the "still in contact" record +MIN_DIST_CUTOFFS_A = (8.0, 25.0, 60.0) # widen the search only when nothing is found + + +def _box_matrix(ts) -> np.ndarray | None: + m = getattr(ts, "triclinic_dimensions", None) + if m is None or not np.all(np.isfinite(m)) or np.linalg.det(m) <= 0: + return None + return np.asarray(m, dtype=float) + + +def _extent(pos: np.ndarray) -> float: + return float((pos.max(0) - pos.min(0)).max()) if len(pos) else 0.0 + + +def _min_dist(a: np.ndarray, b: np.ndarray, box=None) -> float: + if capped_distance is None or not len(a) or not len(b): + return float("nan") + for cutoff in MIN_DIST_CUTOFFS_A: + _pairs, d = capped_distance(a, b, max_cutoff=cutoff, box=box, return_distances=True) + if len(d): + return float(d.min()) + return float("inf") + + +class PBCProcessor: + """ + Applies the treatment frame by frame and records diagnosis + proof. + + Parameters + ---------- + core : the solute AtomGroup that is written out. + units : list of AtomGroups (subsets of ``core``) treated as rigid-body units for + continuity -- normally one per molecule (bonded fragment) or chain. + labels : one label per unit (e.g. chain segids). + pairs : (i, j) unit pairs whose minimum heavy-atom distance is tracked. + """ + + def __init__(self, core, units, labels, mode: str = "auto", pairs=None): + self.core = core + self.units = units + self.labels = labels + self.mode = mode if mode != "auto" else ("nojump" if len(units) > 1 else "whole") + self.pairs = pairs if pairs is not None else ( + [(0, 1)] if len(units) >= 2 else []) + self.has_bonds = self._has_bonds() + self.made_whole = self.mode in ("whole", "nojump") and self.has_bonds + # map each unit to positions inside `core` (core order is what is written) + pos_in_core = {int(ix): k for k, ix in enumerate(core.indices)} + self._unit_idx = [np.array([pos_in_core[int(i)] for i in u.indices]) for u in units] + self._heavy = [np.array([pos_in_core[int(i)] for i in u.select_atoms("not name H*").indices]) + for u in units] + self._bonds = self._core_bonds(pos_in_core) + self._prev_com: list[np.ndarray | None] = [None] * len(units) + self.rows: list[dict] = [] + # jump *events*: frames where the whole-box translation needed to keep a unit + # continuous changes; once a unit has crossed, the same translation is applied on + # every later frame, counted separately as frames_translated + self.jumps = np.zeros(len(units), dtype=int) + self.frames_translated = np.zeros(len(units), dtype=int) + self._applied = [np.zeros(3, dtype=int) for _ in units] + self.first_frame_cluster = False + + # ------------------------------------------------------------------ # + def _has_bonds(self) -> bool: + try: + return len(self.core.bonds) > 0 + except Exception: # topology without bond information + return False + + def _core_bonds(self, pos_in_core) -> np.ndarray: + if not self.has_bonds: + return np.empty((0, 2), dtype=int) + b = self.core.bonds.indices + keep = [(pos_in_core[int(i)], pos_in_core[int(j)]) for i, j in b + if int(i) in pos_in_core and int(j) in pos_in_core] + return np.array(keep, dtype=int) if keep else np.empty((0, 2), dtype=int) + + @staticmethod + def _com(pos, masses): + return (pos * masses[:, None]).sum(0) / masses.sum() + + # ------------------------------------------------------------------ # + def process(self, ts) -> np.ndarray: + """Treat the current frame of ``core`` in place; return the processed positions.""" + box = _box_matrix(ts) + dims = ts.dimensions + raw = self.core.positions.copy() + masses = self.core.masses + row: dict = {"frame": int(ts.frame), "time_ps": float(ts.time), + "box_a_nm": float(dims[0]) / 10 if dims is not None else np.nan} + + # ---- diagnosis on the raw frame ---------------------------------- # + raw_ext = [_extent(raw[ix]) for ix in self._unit_idx] + raw_min = [_min_dist(raw[self._heavy[i]], raw[self._heavy[j]], dims) + for i, j in self.pairs] + + # ---- treatment ------------------------------------------------------ # + if self.made_whole: + self.core.unwrap(compound="fragments", reference=None, inplace=True) + pos = self.core.positions + whole_ext = [_extent(pos[ix]) for ix in self._unit_idx] + if self.mode == "nojump" and box is not None: + inv = np.linalg.inv(box) + coms = [self._com(pos[ix], masses[ix]) for ix in self._unit_idx] + if self._prev_com[0] is None: # first frame: cluster around the largest + big = int(np.argmax([len(ix) for ix in self._unit_idx])) + for k, ix in enumerate(self._unit_idx): + if k == big: + continue + n = np.round((coms[k] - coms[big]) @ inv) + if np.any(n != 0): + pos[ix] -= n @ box + coms[k] = coms[k] - n @ box + self.first_frame_cluster = True + else: + for k, ix in enumerate(self._unit_idx): + n = np.round((coms[k] - self._prev_com[k]) @ inv).astype(int) + if np.any(n != 0): + pos[ix] -= n @ box + coms[k] = coms[k] - n @ box + self.frames_translated[k] += 1 + if np.any(n != self._applied[k]): + self.jumps[k] += 1 + self._applied[k] = n + self._prev_com = coms + self.core.positions = pos + + # ---- proof: processed vs raw ---------------------------------------- # + pos = self.core.positions + disp = pos - raw + if box is not None: + frac = disp @ np.linalg.inv(box) + dev = np.abs(disp - np.round(frac) @ box).max() if len(disp) else 0.0 + row["max_dev_from_box_translation_A"] = float(dev) + for k, ix in enumerate(self._unit_idx): + n_vec = len({tuple(v) for v in np.round(frac[ix]).astype(int)}) + row[f"translations_{k}"] = n_vec + for k, ix in enumerate(self._unit_idx): + row[f"split_raw_{k}"] = bool(raw_ext[k] > whole_ext[k] + SPLIT_TOL_A) + row[f"extent_whole_nm_{k}"] = whole_ext[k] / 10 + if len(self._bonds): + bl = np.linalg.norm(pos[self._bonds[:, 0]] - pos[self._bonds[:, 1]], axis=1) + row["max_bond_A"] = float(bl.max()) + for (i, j), rm in zip(self.pairs, raw_min): + pm = _min_dist(pos[self._heavy[i]], pos[self._heavy[j]], None) + row[f"min_dist_raw_pbc_nm_{i}_{j}"] = rm / 10 + row[f"min_dist_processed_nm_{i}_{j}"] = pm / 10 + self.rows.append(row) + return pos + + # ------------------------------------------------------------------ # + def summary(self) -> dict: + import pandas as pd + df = pd.DataFrame(self.rows) + n = len(df) + units = [] + for k, lab in enumerate(self.labels): + split = df.get(f"split_raw_{k}", pd.Series(dtype=bool)).astype(bool) + multi = df.get(f"translations_{k}", pd.Series(1, index=df.index)) > 1 + # making a split molecule whole moves only its wrapped atoms, so it shows two + # translation vectors in exactly the frames where it was split in the raw data + consistent = (multi == split) if self.made_whole else (~multi | split) + units.append({ + "label": lab, "n_atoms": int(len(self._unit_idx[k])), + "frames_split_in_raw": int(split.sum()), + "first_split_frames": [int(f) for f in df.frame[split].head(10)], + "frames_with_multiple_translations": int(multi.sum()), + "multiple_translations_only_where_split": bool(consistent.all()) if n else True, + "whole_box_translations_undone": int(self.jumps[k]), + "frames_translated": int(self.frames_translated[k]), + "extent_whole_nm_mean": float(df.get(f"extent_whole_nm_{k}", + pd.Series([np.nan])).mean()), + "extent_whole_nm_max": float(df.get(f"extent_whole_nm_{k}", + pd.Series([np.nan])).max()), + }) + pairs = [] + for i, j in self.pairs: + raw = df.get(f"min_dist_raw_pbc_nm_{i}_{j}") + proc = df.get(f"min_dist_processed_nm_{i}_{j}") + if raw is None: + continue + diff = (proc - raw).abs() + pairs.append({ + "pair": [self.labels[i], self.labels[j]], + "min_dist_raw_pbc_nm": [float(raw.min()), float(raw.mean()), float(raw.max())], + "frames_without_heavy_atom_contact": int((raw > CONTACT_A / 10).sum()), + "max_abs_diff_processed_vs_raw_nm": float(diff.max()), + "frames_separated_in_processed": int((diff > DIST_TOL_A / 10).sum()), + }) + dev = df.get("max_dev_from_box_translation_A") + bond = df.get("max_bond_A") + checks = { + "only_whole_box_translations": bool(dev is None + or dev.max() <= BOX_TRANSLATION_TOL_A) if n else True, + "molecules_whole": bool(bond is None or bond.max() < BOND_MAX_A) if n else True, + "multiple_translations_only_in_split_frames": all( + u["multiple_translations_only_where_split"] for u in units), + "interchain_distance_preserved": all(p["frames_separated_in_processed"] == 0 + for p in pairs), + } + if not self.made_whole: + checks["molecules_whole"] = False if self.mode != "none" else checks["molecules_whole"] + box = df.get("box_a_nm") + return { + "mode": self.mode, "made_whole": self.made_whole, "has_bonds": self.has_bonds, + "first_frame_clustered": self.first_frame_cluster, "n_frames": n, + "box_a_nm": [float(box.iloc[0]), float(box.iloc[-1]), float(box.min())] + if box is not None and n else None, + "half_box_min_nm": float(box.min()) / 2 if box is not None and n else None, + "max_dev_from_box_translation_A": float(dev.max()) if dev is not None and n else None, + "max_bond_A": float(bond.max()) if bond is not None and n else None, + "units": units, "pairs": pairs, "checks": checks, + "tolerances": {"split_A": SPLIT_TOL_A, "bond_A": BOND_MAX_A, + "distance_A": DIST_TOL_A, "box_translation_A": BOX_TRANSLATION_TOL_A}, + } + + def per_frame(self): + import pandas as pd + return pd.DataFrame(self.rows) diff --git a/tests/test_pbc.py b/tests/test_pbc.py new file mode 100644 index 0000000..b6f2ce8 --- /dev/null +++ b/tests/test_pbc.py @@ -0,0 +1,121 @@ +"""PBC diagnose -> treat -> prove on synthetic two-chain systems with known answers.""" + +from __future__ import annotations + +import numpy as np +import pytest + +from moldynx.core.pbc import PBCProcessor + +BOX = 30.0 +N = 10 # atoms per chain, bonded in a line 1 Å apart + + +def _universe(frames_true: list[np.ndarray]): + """Two bonded 10-atom chains (segments A, B); coordinates wrapped into a 30 Å box.""" + import MDAnalysis as mda + from MDAnalysis.coordinates.memory import MemoryReader + u = mda.Universe.empty(2 * N, n_residues=2 * N, n_segments=2, + atom_resindex=np.arange(2 * N), + residue_segindex=[0] * N + [1] * N, trajectory=True) + u.add_TopologyAttr("name", ["CA"] * (2 * N)) + u.add_TopologyAttr("resname", ["ALA"] * (2 * N)) + u.add_TopologyAttr("segid", ["A", "B"]) + u.add_TopologyAttr("masses", np.full(2 * N, 12.0)) + bonds = [(i, i + 1) for i in range(N - 1)] + [(N + i, N + i + 1) for i in range(N - 1)] + u.add_TopologyAttr("bonds", bonds) + coords = np.array([np.mod(f, BOX) for f in frames_true], dtype=np.float32) + dims = np.tile([BOX, BOX, BOX, 90, 90, 90], (len(frames_true), 1)).astype(np.float32) + u.load_new(coords, format=MemoryReader, dimensions=dims) + return u + + +def _chain(x0: float) -> np.ndarray: + return np.column_stack([x0 + np.arange(N), np.full(N, 15.0), np.full(N, 15.0)]) + + +def _run(u, mode="nojump"): + chains = [u.segments[0].atoms, u.segments[1].atoms] + proc = PBCProcessor(u.atoms, chains, ["A", "B"], mode=mode, pairs=[(0, 1)]) + out = [] + for ts in u.trajectory: + out.append(proc.process(ts).copy()) + return proc, proc.summary(), np.array(out) + + +def test_split_chain_is_made_whole_and_proven(): + # chain B sits across the x boundary (true x 25..34); chain A at 13..22 (3 Å away) + frames = [np.vstack([_chain(13.0), _chain(25.0)]) for _ in range(5)] + proc, s, out = _run(_universe(frames)) + b = s["units"][1] + assert b["frames_split_in_raw"] == 5 and s["units"][0]["frames_split_in_raw"] == 0 + assert b["frames_with_multiple_translations"] == 5 # wrapped atoms moved, rest not + assert all(s["checks"].values()), s["checks"] + assert s["max_bond_A"] == pytest.approx(1.0, abs=1e-3) + pair = s["pairs"][0] + assert pair["min_dist_raw_pbc_nm"][0] == pytest.approx(0.3, abs=1e-4) + assert pair["frames_separated_in_processed"] == 0 + np.testing.assert_allclose(np.ptp(out[0, N:, 0]), N - 1, atol=1e-4) # B whole + + +def test_drift_through_the_boundary_counts_one_jump_event_and_flags_separation(): + # B moves +1 Å per frame from x 21 to 32 and passes through the boundary; + # A stays at 10..19, so through the boundary B approaches A's *other* side + frames = [np.vstack([_chain(10.0), _chain(21.0 + k)]) for k in range(12)] + proc, s, out = _run(_universe(frames)) + b = s["units"][1] + assert b["whole_box_translations_undone"] == 1 # one crossing event + assert b["frames_translated"] >= 1 + # the processed trajectory is continuous: B keeps moving +1 Å per frame + com_x = out[:, N:, 0].mean(axis=1) + np.testing.assert_allclose(np.diff(com_x), 1.0, atol=1e-3) + assert s["checks"]["only_whole_box_translations"] and s["checks"]["molecules_whole"] + # ...but the nearest image of B is now on A's other side: reported, not hidden + assert s["checks"]["interchain_distance_preserved"] is False + assert s["pairs"][0]["frames_separated_in_processed"] > 0 + + +def test_mode_none_records_but_does_not_touch(): + frames = [np.vstack([_chain(13.0), _chain(25.0)]) for _ in range(3)] + u = _universe(frames) + raw = u.trajectory.coordinate_array.copy() + proc, s, out = _run(u, mode="none") + np.testing.assert_array_equal(out, raw) + assert s["mode"] == "none" and s["made_whole"] is False + assert s["units"][1]["frames_split_in_raw"] == 0 # cannot be detected without making whole + + +def test_chain_identity_survives_pdb_segid_truncation(tmp_path): + """CHARMM-GUI segids collapse to 'seg_' in PDB files; chain groups must not depend on them.""" + import json + + import MDAnalysis as mda + from moldynx.core.config import RunConfig + from moldynx.core.context import AnalysisContext + + frames = [np.vstack([_chain(13.0), _chain(25.0)])] + u = _universe(frames) + u.segments.segids = ["seg_0_PROA", "seg_1_PROB"] + pdb = tmp_path / "core.pdb" + u.atoms.write(str(pdb)) + back = mda.Universe(str(pdb)) + assert len(set(back.segments.segids)) == 1 # the trap: both chains read back as one + + cfg = RunConfig(output_dir=tmp_path / "out") + ctx = AnalysisContext.__new__(AnalysisContext) + ctx.config, ctx._core = cfg, back + cfg.ensure_dirs() + (cfg.data_dir / "core_meta.json").write_text(json.dumps({"chains": [ + {"segid": "seg_0_PROA", "core_start": 0, "core_stop": N}, + {"segid": "seg_1_PROB", "core_start": N, "core_stop": 2 * N}]})) + groups = ctx.chain_groups() + assert [r["segid"] for r, _ in groups] == ["seg_0_PROA", "seg_1_PROB"] + assert [g.n_atoms for _, g in groups] == [N, N] + + +def test_auto_mode_choice(): + frames = [np.vstack([_chain(13.0), _chain(25.0)])] + u = _universe(frames) + two = PBCProcessor(u.atoms, [u.segments[0].atoms, u.segments[1].atoms], ["A", "B"]) + one = PBCProcessor(u.atoms, [u.atoms], ["all"]) + assert two.mode == "nojump" and one.mode == "whole" From 7fdc1586378ddcaa92c332d0faf665d93a1da501 Mon Sep 17 00:00:00 2001 From: Hossam Mahmoud Date: Thu, 24 Sep 2026 02:07:25 +0300 Subject: [PATCH 5/5] Equilibration audit, interface suite, multi-frame-safe SASA; record next steps - analysis/equilibration.py: stage parameters, minimisation outcome and Fmax location, crash dumps, energy statistics, position restraints (gmx dump), protonation, chain of custody (io/jobscripts.py), timeline, figure. - io/gromacs.py: filtered gmx dump pipeline and position-restraint reader. - analysis/interface.py: legacy-validated suite with full core lists, residues ever within 6 A, buried area, iRMSD, trends. - core/surface.py: frame-by-frame Shrake-Rupley (mdtraj 1.11.1 multi-frame calls return wrong values for some frames); sasa and interface stride 10. - docs/NEXT_STEPS.md: remaining phases 5-10 and acceptance values. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 23 ++ docs/NEXT_STEPS.md | 79 ++++++ moldynx/analysis/equilibration.py | 424 ++++++++++++++++++++++++++++++ moldynx/analysis/interface.py | 275 +++++++++++++++---- moldynx/analysis/sasa.py | 7 +- moldynx/core/surface.py | 23 ++ moldynx/io/gromacs.py | 90 +++++++ moldynx/io/jobscripts.py | 91 +++++++ tests/test_equilibration.py | 95 +++++++ tests/test_gromacs_io.py | 28 ++ tests/test_interface.py | 74 ++++++ tests/test_surface.py | 37 +++ 12 files changed, 1189 insertions(+), 57 deletions(-) create mode 100644 docs/NEXT_STEPS.md create mode 100644 moldynx/analysis/equilibration.py create mode 100644 moldynx/core/surface.py create mode 100644 moldynx/io/jobscripts.py create mode 100644 tests/test_equilibration.py create mode 100644 tests/test_interface.py create mode 100644 tests/test_surface.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 55b45fb..e893288 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,3 +62,26 @@ - Validated on two 100 ns protein–protein trajectories (1.6 M and 2.0 M atoms): split-frame counts, zero whole-box translations, minimum inter-chain distances and molecular extents reproduce an independent manual audit exactly. + +### Preparation and equilibration audit + +- New `equilibration` analysis: per-stage parameters from the logs, minimisation outcome (states + plainly when the force tolerance was *not* reached) and the chain/residue/atom carrying the + largest residual force, crash-dump accounting, energy-file statistics (tail means, residual + drift, settling times), position restraints per force constant and molecule type (`gmx dump`, + native or WSL; production must have none), protonation states, chain of custody from job + scripts (`moldynx.io.jobscripts`), stage timeline, figure. Missing inputs are reported. +- Reproduces the manual audit of both reference datasets and additionally located the largest + residual force of one system on a protonated aspartate. + +### Interface and surface area + +- `interface` rewritten from the validated legacy suite: residue–residue contacts, interface + occupancy with **full** core lists, persistent contacts, residues ever within 6 Å (the set a + binding-energy decomposition must cover), buried area, interface Cα RMSD, trends. +- **Fixed:** `mdtraj.shrake_rupley` (1.11.1) returns wrong values for some frames of a + multi-frame call (±0.5 nm² on a real trajectory; negative buried areas in a rigid-body test). + `moldynx.core.surface.shrake_rupley` computes frame by frame; `sasa` and `interface` buried + area now stride by 10 frames by default (parameters `stride` / `bsa_stride`). + +Remaining 0.3 work: `docs/NEXT_STEPS.md`. diff --git a/docs/NEXT_STEPS.md b/docs/NEXT_STEPS.md new file mode 100644 index 0000000..daa9efa --- /dev/null +++ b/docs/NEXT_STEPS.md @@ -0,0 +1,79 @@ +# MolDynX Tools 0.3 — remaining work + +Work paused after Phase 5 (part 1) on branch `feature/moldynx-dataset-pipeline`. The goal of +0.3: running MolDynX on any GROMACS/CHARMM-GUI simulation folder always yields the same audited, +reproducible dataset. The quality baseline is two hand-made analyses of protein–protein +complexes (α-zein A8HNE1–ZmBiP2, α-zein Q946V6–ZmBiP2). They are **test cases only**: no code +may name a system, chain, residue range or folder. The full specification is in the handoff +package `MolDynX_handoff_2026-09-23/PROMPT.md` (kept outside the repo); the essentials are below. + +## Done + +| Phase | Result | +|---|---| +| 1 Rename | mdforge → MolDynX Tools (`moldynx`), `mdforge` shim for one version | +| 2 Intake | evidence-based discovery, capability matrix, `moldynx intake`, INTAKE_REPORT | +| 3 PBC | one-pass diagnose → treat → prove (`core/pbc.py`), chain identity, cache key, `pbc_validation` | +| 4 Equilibration | `equilibration` analysis: stage parameters, minimisation outcome + Fmax location, crash dumps, energy statistics, position restraints (`gmx dump`), protonation, chain of custody, timeline, figure | +| 5 (part) | `interface` rewritten (full core lists, residues ever within 6 Å, buried area, iRMSD, trends); `core/surface.py` works around an mdtraj multi-frame SASA bug | + +Phases 2–4 reproduce the manual audit of both reference datasets exactly (see CHANGELOG). + +## Remaining + +### Phase 5 — finish complex analyses +- Run `interface` end to end on a real 100 ns complex; compare with the legacy values + (A8HNE1: 27.9 nm² buried, mean minimum distance 0.266 nm, 34 persistent contacts). +- Port from the legacy pipeline (`alpha-zein-md-analysis/scripts/`), generalised, as + `BaseAnalysis` classes: `contact_lifetime`, `dynamic_network`, `water_bridges`, `porcupine`, + eigenvalue spectrum into `pca`. Do **not** port `report_advanced.py` or legacy `mmgbsa.py`. +- SASA speed: single-frame calls are correct but serial (~4 s/frame for 13 k atoms); + `sasa` and `interface` stride by 10. Parallelise with a process pool, then restore stride 1. + +### Phase 6 — annotation and analysis window +- `annotations:` in the YAML config (template written by `moldynx intake --detect`): + chain display names and roles, biological numbering offsets, homology reference, motifs file, + docking-site residues, unresolved metadata (force-field variant, salt, protonation rationale — + never guessed). +- Domains by homology only (Needleman–Wunsch, BLOSUM62, gap −10/−0.5; CATH edges of a reference + structure through SIFTS; map author numbering to UniProt by alignment; DSSP cross-check; flag + uncertain edges). Motifs only from a user-supplied file; report partial matches honestly. +- Window selection: Chodera t₀ per binding-relevant observable, slope + Welch half-vs-half; + if nothing is stationary, report time-resolved values and ask for the primary window. + +### Phase 7 — MM-GBSA / MM-PBSA (rewrite `analysis/mmpbsa.py`) +- prepare → probe → run → analyse. Protein-only `complex.tpr` (convert-tpr on the Protein group), + `complex.top` with protein molecule types only, `complex.ndx` from chain identity + (0 = receptor, 1 = ligand); **no Amber `forcefields=` line**. +- Probe gate: 11 frames GB; abort unless every bonded Δ term is exactly 0. +- GB: igb 5, PBRadii 3, idecomp 2, IE + C2 entropy (reported only if σ < 3.6 / 6.0 kcal/mol). + PB: PBRadii 7, inp 1, fillratio 4. Same frames (1 ns spacing). Ionic strength **derived** from + ion counts (`SystemInfo.ion_counts`) and box volume, or labelled assumed. +- Decomposition: explicit `print_res` = `interface` residues within 6 Å ever + (`residues_within_6A_ever`), closure check Σ residues vs ΔG_bind (Q946V6 legacy gap +3.73 + kcal/mol at 80–100 ns should close). +- MPI ranks ≤ physical cores; PB ≈ 3.3 GB per rank. Analysis: autocorrelation-corrected SEM, + windows, drift, GB vs PB, hotspots, region sums. Test data: `tests/fixtures/gmx_mmpbsa/`. + +### Phase 8 — documents +- Data-driven README, AUDIT_PROVENANCE, PBC_VALIDATION, EQUILIBRATION, BINDING_ENERGY, + analysis report; Observations / Interpretation / Limitations / Conclusions; no hard-coded + system names or conclusions; never call a system "stable" from an RMSD plateau (current + `report/generator.py` `_interpretation` does — fix); render Markdown properly to + self-contained HTML; validator (pair `**` across the whole document). + +### Phase 9 — dataset, verify, package +- `moldynx dataset` (numbered layout 0_raw_production … 7_binding_energy with SHA-256 manifests), + `moldynx verify` (layout, references, manifests, Rg smoke test), `moldynx package` + (analysis-only zip when raw data > ~1 GB; stub injected into the zip only; extract + verify). + +### Phase 10 — wrap-up +- README rewrite (input-file contract, annotations schema, new commands), QUICKSTART, + CITATION/.zenodo titles (done), ROADMAP ticks, fix README claim about a `legacy/` folder. +- The user renames the GitHub repository and creates the release (Zenodo DOI); not automated. + +## Acceptance values (manual audit, for the desktop data) + +A8HNE1 — MM-GBSA 0–100 ns −55.2 ± 4.0, 80–100 −69.8 ± 3.7; MM-PBSA −57.2 ± 7.4 / −76.6 ± 4.6 +kcal/mol; r(GB,PB) 0.86. Q946V6 — MM-GBSA −33.4 ± 2.1 / −37.8 ± 2.4; MM-PBSA −40.7 ± 2.5 / +−47.1 ± 3.3; r 0.73; entropy σ 86.7 → invalid. diff --git a/moldynx/analysis/equilibration.py b/moldynx/analysis/equilibration.py new file mode 100644 index 0000000..2fb3639 --- /dev/null +++ b/moldynx/analysis/equilibration.py @@ -0,0 +1,424 @@ +""" +Preparation and equilibration audit: minimisation, NVT, NPT -- and how they fed production. + +From the stage logs, energy files, run inputs and job scripts found at intake: + +* stage parameters (integrator, dt, steps, thermostat/barostat and targets, restraints + reference scaling, continuation), sessions, timings, warnings; +* the minimisation outcome -- whether the requested force tolerance was reached -- + and where the largest residual force sits (chain / residue / atom); +* crash-dump accounting (``stepN{b,c}.pdb`` vs ``Wrote pdb`` events); +* energy-file statistics per stage: whole-stage and tail means, residual drift, + time for temperature and density to settle; +* position restraints stored in each run input (and none in production); +* protonation states of titratable residues in the simulated system; +* the chain of custody (grompp -c/-r/-t, convert-tpr) and the stage timeline. + +Missing inputs are reported, never invented. +""" + +from __future__ import annotations + +import json +import re +from datetime import datetime +from pathlib import Path + +import numpy as np +import pandas as pd + +from moldynx import plotting +from moldynx.core.base import BaseAnalysis +from moldynx.io import gromacs +from moldynx.io.jobscripts import chain_of_custody +from moldynx.plotting import PALETTE + +STAGES = ("em", "nvt", "npt") +LABEL = {"em": "Energy minimisation", "nvt": "NVT equilibration", "npt": "NPT equilibration", + "production": "Production"} +TERMS = ("Temperature", "Pressure", "Density", "Volume", "Box-X", "Potential", "Total Energy") + +# residue/atom signatures of non-default protonation states (CHARMM and AMBER names) +PROTONATION = [ + ("GLU", "HE2", "protonated glutamate"), ("GLUP", None, "protonated glutamate"), + ("GLH", None, "protonated glutamate"), ("ASP", "HD2", "protonated aspartate"), + ("ASPP", None, "protonated aspartate"), ("ASH", None, "protonated aspartate"), + ("HSP", None, "doubly protonated histidine"), ("HIP", None, "doubly protonated histidine"), + ("HSE", None, "histidine, Nε-H tautomer"), ("HIE", None, "histidine, Nε-H tautomer"), + ("LSN", None, "neutral lysine"), ("LYN", None, "neutral lysine"), + ("CYM", None, "deprotonated cysteine"), +] + + +# --------------------------------------------------------------------------- # +# statistics helpers +# --------------------------------------------------------------------------- # +def _drift(t: np.ndarray, x: np.ndarray) -> tuple[float, float]: + """Linear slope per ns over the second half, and its p-value.""" + from scipy import stats + h = len(x) // 2 + if len(x) - h < 5 or np.ptp(t[h:]) == 0: + return float("nan"), float("nan") + r = stats.linregress(t[h:], x[h:]) + return float(r.slope * 1000.0), float(r.pvalue) + + +def energy_statistics(df: pd.DataFrame, tail_ps: float = 500.0) -> dict: + """Whole-stage and tail statistics of the standard terms of one stage.""" + t = df["Time"].to_numpy(float) + dur = float(t[-1] - t[0]) if len(t) > 1 else 0.0 + tail = min(tail_ps, 0.5 * dur) if dur > 0 else 0.0 + tail_mask = t >= t[-1] - tail + out: dict = {"n_records": int(len(df)), "t_first_ps": float(t[0]), "t_last_ps": float(t[-1]), + "tail_ps": tail, "terms": {}} + for term in TERMS: + if term not in df: + continue + x = df[term].to_numpy(float) + slope, p = _drift(t, x) + out["terms"][term] = { + "mean": float(x.mean()), "sd": float(x.std(ddof=1)) if len(x) > 1 else 0.0, + "first": float(x[0]), "last": float(x[-1]), + "tail_mean": float(x[tail_mask].mean()), + "tail_sd": float(x[tail_mask].std(ddof=1)) if tail_mask.sum() > 1 else 0.0, + "drift_per_ns": slope, "drift_p": p, + } + return out + + +def settle_time(t: np.ndarray, x: np.ndarray, target: float, tol: float) -> float | None: + """First time after which ``x`` stays within ``target ± tol`` until the end.""" + inside = np.abs(x - target) <= tol + if not inside[-1]: + return None + bad = np.where(~inside)[0] + return float(t[0] if not len(bad) else t[min(bad[-1] + 1, len(t) - 1)]) + + +def fraction_time(t: np.ndarray, x: np.ndarray, frac: float = 0.999) -> float | None: + """First time ``x`` comes within ``1 - frac`` of its final value (mean of the last 10 %).""" + if len(x) < 10: + return None + final = x[-max(5, len(x) // 10):].mean() + ok = np.abs(x - final) <= abs(final) * (1 - frac) + idx = np.argmax(ok) if ok.any() else None + return float(t[idx]) if idx is not None else None + + +class EquilibrationAudit(BaseAnalysis): + name = "equilibration" + label = "Preparation and equilibration audit" + category = "preparation" + required_files = {"trajectory", "topology"} + supported_systems = {"*"} + order = 2 + default_params = {"tail_ps": 500.0, "nvt_settle_tol_K": 2.0} + outputs = ["results/equilibration_summary.json", "results/equilibration_stats.csv", + "figures/equilibration_overview.png"] + + # ------------------------------------------------------------------ # + def run(self, ctx) -> dict: + p = self.params(ctx) + fs = ctx.fileset + present = {s: {k: [str(x) for x in v] for k, v in fs.stages.get(s, {}).items()} + for s in STAGES} + if not any(fs.stage_file(s, k) for s in STAGES for k in ("log", "edr", "tpr")): + return {"status": "skipped", + "reason": "no minimisation / NVT / NPT files were found with the production run"} + summary: dict = {"stages": {}, "missing": [], "files": present} + logs: dict[str, gromacs.LogInfo] = {} + for stage in STAGES + ("production",): + log = fs.log if stage == "production" else fs.stage_file(stage, "log") + if log is None: + if stage != "production": + summary["missing"].append(f"{LABEL[stage]}: no .log") + continue + info = gromacs.parse_log(log) + logs[stage] = info + summary["stages"][stage] = self._stage_record(info) + for stage in STAGES: + if fs.stage_file(stage, "edr") is None: + summary["missing"].append(f"{LABEL[stage]}: no .edr") + + # -- energies ----------------------------------------------------- # + series = self._energies(ctx, p, summary) + # -- minimisation: Fmax location + crash dumps ---------------------- # + if "em" in logs and logs["em"].minimization: + summary["stages"]["em"]["fmax_location"] = self._locate_atom( + ctx, logs["em"].minimization.fmax_atom) + summary["crash_dumps"] = self._crash_dumps(fs, logs.get("em")) + # -- restraints ---------------------------------------------------- # + summary["position_restraints"] = self._restraints(ctx, fs) + # -- protonation, custody, timeline -------------------------------- # + summary["protonation"] = self._protonation(ctx) + summary["chain_of_custody"] = chain_of_custody(fs.job_scripts) + summary["timeline"] = self._timeline(logs) + summary["mdp_files"] = {k: str(v) for k, v in fs.mdp.items()} + # thermostat targets of the dynamics stages (minimisation has no temperature) + summary["temperatures_K"] = {s: logs[s].ref_t[:1] for s in logs + if logs[s].ref_t and not logs[s].is_minimization + and any(t > 0 for t in logs[s].ref_t)} + summary["verdicts"] = self._verdicts(summary) + + ctx.csv_path("equilibration_summary.json").write_text( + json.dumps(summary, indent=2, default=str), encoding="utf-8") + fig = self._figure(ctx, series, summary) + brief = { + "stages": {s: {k: v for k, v in r.items() + if k in ("integrator", "dt_ps", "nsteps", "simulated_ps", "tcoupl", + "ref_t_K", "pcoupl", "minimization")} + for s, r in summary["stages"].items()}, + "missing": summary["missing"], "verdicts": summary["verdicts"], + "restrained_atoms": {s: r.get("n_restrained") for s, r in + summary["position_restraints"].items()}, + "protonation": summary["protonation"].get("non_default", []), + } + if fig: + brief["figure"] = fig + return brief + + # ------------------------------------------------------------------ # + @staticmethod + def _stage_record(info: gromacs.LogInfo) -> dict: + m = info.mdp + rec = {"log": info.path, "gromacs": info.gromacs_version, "commands": info.commands, + "sessions": info.n_sessions, "started": info.started[:1], + "finished": info.finished[-1:], "ns_per_day": info.performance_ns_day[-1:], + "wall_h": round(sum(info.wall_s) / 3600, 3) if info.wall_s else None, + "integrator": m.get("integrator"), "dt_ps": m.get("dt"), "nsteps": m.get("nsteps"), + "simulated_ps": info.simulated_ps, "tcoupl": m.get("tcoupl"), + "ref_t_K": info.ref_t, "tau_t_ps": info.grpopts.get("tau-t"), + "nrdf": info.grpopts.get("nrdf"), "pcoupl": m.get("pcoupl"), + "pcoupltype": m.get("pcoupltype"), "tau_p_ps": m.get("tau-p"), + "ref_p_bar": m.get("ref-p_xx"), "compressibility": m.get("compressibility_xx"), + "refcoord_scaling": m.get("refcoord-scaling"), "continuation": m.get("continuation"), + "emtol": m.get("emtol"), "coulombtype": m.get("coulombtype"), + "rcoulomb": m.get("rcoulomb"), "rvdw": m.get("rvdw"), + "vdw_modifier": m.get("vdw-modifier"), "fourier_nx": m.get("fourier-nx"), + "constraint_algorithm": m.get("constraint-algorithm"), + "nstlist": m.get("nstlist"), "counts": info.counts} + if info.minimization: + rec["minimization"] = info.minimization.__dict__ + return rec + + def _energies(self, ctx, p, summary) -> dict: + try: + import panedr + except ImportError: + summary["missing"].append("panedr not installed — energy-file statistics skipped " + "(pip install panedr)") + return {} + series = {} + for stage in STAGES: + edr = ctx.fileset.stage_file(stage, "edr") + if edr is None: + continue + try: + df = panedr.edr_to_df(str(edr)) + except Exception as exc: # corrupt / unreadable energy file + summary["missing"].append(f"{LABEL[stage]}: energy file unreadable ({exc})") + continue + keep = ["Time"] + [c for c in TERMS if c in df] + series[stage] = df[keep] + df[keep].to_csv(ctx.csv_path(f"equilibration_timeseries_{stage}.csv"), index=False) + st = energy_statistics(df, p["tail_ps"]) + rec = summary["stages"].setdefault(stage, {}) + rec["energy"] = st + t = df["Time"].to_numpy(float) + ref = rec.get("ref_t_K") or [] + if stage == "nvt" and "Temperature" in df and ref: + rec["temperature_settled_ps"] = settle_time( + t, df["Temperature"].to_numpy(float), ref[0], p["nvt_settle_tol_K"]) + if rec["temperature_settled_ps"] is not None: + m = t >= rec["temperature_settled_ps"] + x = df["Temperature"].to_numpy(float)[m] + rec["temperature_after_settling"] = {"mean": float(x.mean()), + "sd": float(x.std(ddof=1))} + if stage == "npt" and "Density" in df: + rec["density_reached_99_9pct_ps"] = fraction_time(t, df["Density"].to_numpy(float)) + if "Box-X" in df: + rec["box_x_nm"] = [float(df["Box-X"].iloc[0]), float(df["Box-X"].iloc[-1])] + if "Volume" in df: + v0, v1 = float(df["Volume"].iloc[0]), float(df["Volume"].iloc[-1]) + rec["volume_nm3"] = [v0, v1, (v1 / v0 - 1) * 100 if v0 else None] + rows = [] + for stage, rec in summary["stages"].items(): + for term, s in rec.get("energy", {}).get("terms", {}).items(): + rows.append({"stage": stage, "term": term, **s}) + if rows: + pd.DataFrame(rows).to_csv(ctx.csv_path("equilibration_stats.csv"), index=False) + return series + + @staticmethod + def _locate_atom(ctx, atom_number: int | None) -> dict | None: + """GROMACS 1-based atom number -> chain / residue / atom (from the run input).""" + if not atom_number: + return None + try: + u = ctx.full_universe() + a = u.atoms[atom_number - 1] + except Exception: + return None + loc = {"atom_number": atom_number, "atom": a.name, "resname": a.resname, + "resid": int(a.resid), "segid": a.segid} + for c in getattr(ctx.system, "chains", []): + if c.atom_start <= atom_number - 1 < c.atom_stop: + loc["chain"] = c.segid + loc["chain_residue"] = int(a.resid) - c.resid_first + 1 + return loc + + @staticmethod + def _crash_dumps(fs, em_log) -> dict: + steps = sorted({int(m.group(1)) for p in fs.crash_dumps + if (m := re.match(r"step-?(\d+)[bc]\.pdb$", p.name, re.I))}) + pairs = len(steps) + events = em_log.counts.get("wrote_pdb", 0) if em_log else None + return {"files": len(fs.crash_dumps), "steps": steps, "pairs": pairs, + "wrote_pdb_events_in_em_log": events, + "all_accounted_for": (events is not None and events == pairs) if pairs else True} + + @staticmethod + def _restraints(ctx, fs) -> dict: + gmx = gromacs.find_gmx() + out = {} + for stage in STAGES: + tpr = fs.stage_file(stage, "tpr") + if tpr is not None: + out[stage] = gromacs.tpr_position_restraints(gmx, tpr).to_dict() + if fs.topology is not None and Path(fs.topology).suffix.lower() == ".tpr": + out["production"] = gromacs.tpr_position_restraints(gmx, fs.topology).to_dict() + return out + + @staticmethod + def _protonation(ctx) -> dict: + try: + u = ctx.full_universe() + prot = u.select_atoms("protein") + except Exception as exc: + return {"error": str(exc)} + found = [] + chains = getattr(ctx.system, "chains", []) + for res in prot.residues: + rn = res.resname.upper() + names = set(res.atoms.names) + for resname, atom, what in PROTONATION: + if rn == resname and (atom is None or atom in names): + rec = {"resname": rn, "resid": int(res.resid), "state": what} + for c in chains: + if c.atom_start <= int(res.atoms.indices[0]) < c.atom_stop: + rec["chain"] = c.segid + rec["chain_residue"] = int(res.resid) - c.resid_first + 1 + found.append(rec) + break + his = {} + for res in prot.residues: + if res.resname.upper() in ("HSD", "HSE", "HSP", "HID", "HIE", "HIP", "HIS"): + his[res.resname.upper()] = his.get(res.resname.upper(), 0) + 1 + return {"non_default": [r for r in found if "tautomer" not in r["state"]], + "histidine_tautomers": his, + "note": "HSD/HID (Nδ-H) is the CHARMM/AMBER default neutral histidine"} + + @staticmethod + def _timeline(logs: dict) -> list[dict]: + rows = [] + for stage in STAGES + ("production",): + info = logs.get(stage) + if info is None: + continue + start = info.started[0] if info.started else None + end = info.finished[-1] if info.finished else None + rows.append({"stage": stage, "started": start, "finished": end}) + for prev, cur in zip(rows, rows[1:]): + if prev["finished"] and cur["started"]: + gap = (datetime.fromisoformat(cur["started"]) - + datetime.fromisoformat(prev["finished"])).total_seconds() + cur["gap_after_previous_s"] = gap + return rows + + @staticmethod + def _verdicts(summary: dict) -> list[str]: + """Plain statements of what the evidence shows (documents word them further).""" + v = [] + em = summary["stages"].get("em", {}).get("minimization") + if em: + if em.get("reached_emtol") is False: + v.append(f"minimisation stopped ({em.get('outcome')}) without reaching the " + f"requested force tolerance; Fmax = {em.get('fmax'):.4g} kJ/mol/nm") + elif em.get("reached_emtol"): + v.append(f"minimisation {em.get('outcome')} in {em.get('steps')} steps") + warn = sum(r.get("counts", {}).get("lincs_warnings", 0) + + r.get("counts", {}).get("fatal_errors", 0) + for s, r in summary["stages"].items() if s != "em") + v.append("no LINCS warnings or fatal errors in the MD stages" if warn == 0 else + f"{warn} LINCS warnings / fatal errors in the MD stages") + npt = summary["stages"].get("npt", {}).get("energy", {}).get("terms", {}) + for term, unit in (("Density", "kg m⁻³"), ("Volume", "nm³"), ("Potential", "kJ mol⁻¹")): + s = npt.get(term) + if s and s["drift_p"] == s["drift_p"] and s["drift_p"] < 0.01: + v.append(f"NPT {term.lower()} still drifting at the end of the stage " + f"({s['drift_per_ns']:+.3g} {unit} per ns, p = {s['drift_p']:.1g})") + temps = summary.get("temperatures_K", {}) + distinct = {tuple(x) for x in temps.values() if x} + if len(distinct) > 1: + v.append("reference temperature changes between stages: " + + ", ".join(f"{LABEL[s]} {x[0]:g} K" for s, x in temps.items() if x)) + pr = summary.get("position_restraints", {}) + if pr.get("production", {}).get("available"): + n = pr["production"]["n_restrained"] + v.append("production run input has no position restraints" if n == 0 else + f"production run input still contains {n} position restraints") + cd = summary.get("crash_dumps", {}) + if cd.get("files"): + v.append(f"{cd['pairs']} minimisation crash-dump pairs; " + + ("all matched to 'Wrote pdb' events in the minimisation log" + if cd.get("all_accounted_for") else + f"{cd.get('wrote_pdb_events_in_em_log')} 'Wrote pdb' events in the " + "surviving minimisation log — the rest cannot be matched to a log")) + if not summary.get("mdp_files"): + v.append("stage .mdp files are not present: MDP-only settings (gen-vel, define) " + "are not recorded") + return v + + # ------------------------------------------------------------------ # + def _figure(self, ctx, series: dict, summary: dict) -> str | None: + if not series: + return None + plotting.set_style() + plt = plotting.style.plt + panels = [] + if "em" in series and "Potential" in series["em"]: + panels.append(("em", "Potential", "Potential energy (10⁶ kJ mol⁻¹)", 1e-6, "step")) + if "nvt" in series and "Temperature" in series["nvt"]: + panels.append(("nvt", "Temperature", "Temperature (K)", 1, "ps")) + for term, lab in (("Temperature", "Temperature (K)"), ("Pressure", "Pressure (bar)"), + ("Density", "Density (kg m⁻³)"), ("Volume", "Volume (nm³)")): + if "npt" in series and term in series["npt"]: + panels.append(("npt", term, lab, 1, "ns")) + if not panels: + return None + ncol = 3 if len(panels) > 4 else 2 + nrow = int(np.ceil(len(panels) / ncol)) + fig, axes = plt.subplots(nrow, ncol, figsize=(4.4 * ncol, 3.3 * nrow), squeeze=False) + for ax in axes.flat[len(panels):]: + ax.axis("off") + for ax, (stage, term, lab, scale, tunit) in zip(axes.flat, panels): + df = series[stage] + t = df["Time"].to_numpy(float) + x = df[term].to_numpy(float) * scale + tt = t / 1000.0 if tunit == "ns" else t + ax.plot(tt, x, lw=0.8, color=PALETTE["primary"]) + ref = summary["stages"].get(stage, {}).get("ref_t_K") or [] + if term == "Temperature" and ref: + ax.axhline(ref[0], ls="--", lw=1, color=PALETTE["accent"]) + if term == "Pressure": + run = pd.Series(x).rolling(50, center=True, min_periods=10).mean() + ax.plot(tt, run, lw=1.4, color=PALETTE["secondary"]) + lo, hi = np.nanpercentile(x, [1, 99]) + ax.set_ylim(lo - 0.1 * abs(hi - lo), hi + 0.1 * abs(hi - lo)) + ax.set_title(f"{LABEL[stage]} — {term.lower()}", fontsize=10) + ax.set_xlabel({"step": "Step", "ps": "Time (ps)", "ns": "Time (ns)"}[tunit], + fontsize=9) + ax.set_ylabel(lab, fontsize=9) + ax.tick_params(labelsize=8) + plotting.save_figure(fig, ctx.fig_path("equilibration_overview"), dpi=ctx.config.dpi) + return "equilibration_overview" diff --git a/moldynx/analysis/interface.py b/moldynx/analysis/interface.py index 04e0996..6f787ab 100644 --- a/moldynx/analysis/interface.py +++ b/moldynx/analysis/interface.py @@ -1,54 +1,77 @@ """ -Interface analysis for complexes (protein-protein / protein-nucleic). +Interface analysis for complexes (protein–protein / protein–nucleic). -Computes buried surface area (BSA), interface residues/contacts over time, and -interface-RMSD. Two partners are auto-selected: protein-vs-nucleic when a nucleic -acid is present, otherwise the two largest protein chains (by segment). +Streaming one frame at a time over heavy atoms, with PBC-aware distances: -NOTE: implemented but not yet validated end-to-end (the reference dataset is a -single-chain protein). Validate on a real complex trajectory before publication. +* minimum inter-partner heavy-atom distance (is the complex in contact? -- + the centre-of-mass distance is *not* a proximity measure for extended chains); +* residue–residue contacts (heavy atoms < ``contact_cutoff``) per frame and the + full contact-frequency map; persistent contacts (occupancy ≥ ``persistent``); +* interface residues (heavy atoms < ``interface_cutoff``) per frame and the + per-residue interface occupancy; core interface residues (occupancy ≥ + ``core_occupancy``) -- reported in full, never truncated; +* residues that come within ``ever_cutoff`` of the partner in *any* frame -- the + residue set a binding-energy decomposition must cover (late binders included); +* buried surface area (Shrake–Rupley, mdtraj) and interface Cα RMSD; +* the trend of contacts and buried area (slope per 10 ns, p) -- an interface that + is still growing is reported as such. + +Partners: protein vs nucleic acid when present; otherwise the two largest protein +chains, addressed through the chain identity persisted at extraction. """ from __future__ import annotations import numpy as np import pandas as pd -import mdtraj as md -from MDAnalysis.analysis import rms -from MDAnalysis.analysis.distances import distance_array +from MDAnalysis.lib.distances import capped_distance -from moldynx.core.base import BaseAnalysis -from moldynx.core.system import COMPLEX_SYSTEMS from moldynx import plotting from moldynx import statistics as st -from moldynx.plotting import PALETTE +from moldynx.core.base import BaseAnalysis +from moldynx.core.surface import shrake_rupley +from moldynx.core.system import COMPLEX_SYSTEMS +from moldynx.plotting import PALETTE, SEQ_CMAP + +HEAVY = "not name H*" + + +def _trend(t_ns: np.ndarray, x: np.ndarray) -> dict: + from scipy import stats + ok = np.isfinite(x) + if ok.sum() < 5 or np.ptp(t_ns[ok]) == 0: + return {"slope_per_10ns": None, "p": None} + r = stats.linregress(t_ns[ok], x[ok]) + return {"slope_per_10ns": float(r.slope * 10), "p": float(r.pvalue)} class InterfaceAnalysis(BaseAnalysis): name = "interface" - label = "Interface (BSA, contacts, iRMSD)" + label = "Interface (contacts, residues, buried area, iRMSD)" category = "interactions" required_files = {"trajectory", "topology"} supported_systems = COMPLEX_SYSTEMS - default_params = {"cutoff": 5.0} - outputs = ["results/interface.csv", "figures/interface.png"] + order = 40 + default_params = {"contact_cutoff": 4.5, "interface_cutoff": 5.0, "ever_cutoff": 6.0, + "core_occupancy": 0.5, "persistent": 0.5, "bsa_stride": 10, + "window": 20} + outputs = ["results/interface_timeseries.csv", "results/interface_residues.csv", + "results/interface_contact_frequency.csv", + "results/interface_persistent_contacts.csv", + "figures/interface.png", "figures/interface_residues.png", + "figures/interface_contact_map.png"] + # ------------------------------------------------------------------ # def _partners(self, ctx, u): - """ - The two interface partners as (label, AtomGroup) pairs. - - Protein chains come from the chain identity persisted at extraction - (atom-index ranges): the PDB format truncates CHARMM-GUI segment IDs - (``seg_0_PROA``/``seg_1_PROB`` -> ``seg_``), so segments read back from - ``core.pdb`` cannot tell the chains apart. - """ + """The two interface partners as (label, AtomGroup) pairs, in topology order.""" if ctx.system.flags.get("has_nucleic"): return ("protein", u.select_atoms("protein")), ("nucleic", u.select_atoms("nucleic")) - chains = sorted(ctx.chain_groups(u), key=lambda rc: rc[1].n_atoms, reverse=True) - if len(chains) >= 2: - (ra, a), (rb, b) = chains[0], chains[1] - return (ra.get("segid") or "chain A", a), (rb.get("segid") or "chain B", b) - return None, None + chains = ctx.chain_groups(u) + if len(chains) < 2: + return None, None + two = sorted(sorted(chains, key=lambda rc: rc[1].n_atoms, reverse=True)[:2], + key=lambda rc: int(rc[1].indices[0])) + return tuple((rec.get("segid") or f"chain {rec.get('index')}", ag) for rec, ag in two) def run(self, ctx) -> dict: p = self.params(ctx) @@ -59,34 +82,178 @@ def run(self, ctx) -> dict: return {"status": "skipped", "reason": "could not resolve two interface partners " f"({len(ctx.chain_groups(u))} protein chain(s) recorded)"} - (selA, A), (selB, B) = pa, pb - - # BSA via mdtraj on the cached core trajectory (same atom order as the universe) - traj = md.load(str(ctx.config.data_dir / "core.xtc"), - top=str(ctx.config.data_dir / "core.pdb")) - idxA, idxB = A.indices, B.indices - sasa_all = md.shrake_rupley(traj, mode="atom") - bsa = (sasa_all[:, idxA].sum(1) + sasa_all[:, idxB].sum(1) - - md.shrake_rupley(traj.atom_slice(np.concatenate([idxA, idxB])), - mode="atom").sum(1)) - times = traj.time / 1000.0 + (nameA, A), (nameB, B) = pa, pb + hA, hB = A.select_atoms(HEAVY), B.select_atoms(HEAVY) + resA, resB = A.residues, B.residues + locA = np.searchsorted(resA.resindices, hA.resindices) + locB = np.searchsorted(resB.resindices, hB.resindices) + nA, nB = resA.n_residues, resB.n_residues + c_cut, i_cut, e_cut = p["contact_cutoff"], p["interface_cutoff"], p["ever_cutoff"] + search = max(c_cut, i_cut, e_cut, 8.0) n = len(u.trajectory) - contacts = np.empty(n) + times = np.empty(n) + min_dist = np.full(n, np.nan) + n_contacts = np.zeros(n, int) + n_iface = np.zeros(n, int) + occA, occB = np.zeros(nA), np.zeros(nB) + everA, everB = np.zeros(nA, bool), np.zeros(nB, bool) + freq = np.zeros((nA, nB)) for i, ts in enumerate(ctx.iter_frames(u, desc="[interface]")): - D = distance_array(A.positions, B.positions) - contacts[i] = int((D < p["cutoff"]).sum()) - - ctx.write_csv(pd.DataFrame({"time_ns": times, "bsa_nm2": bsa, - "interface_contacts": contacts}), "interface.csv") - fig, (a1, a2) = plotting.style.plt.subplots(2, 1, figsize=(7.4, 6.0), sharex=True) - a1.plot(times, bsa, color=PALETTE["primary"], lw=1.6) - a1.set_ylabel("Buried SASA (nm$^2$)"); a1.set_title("Interface") - a2.plot(times, contacts, color=PALETTE["secondary"], lw=1.6) - a2.set_ylabel("Interface contacts"); a2.set_xlabel("Time (ns)") - for a in (a1, a2): - a.spines["top"].set_visible(False); a.spines["right"].set_visible(False) + times[i] = ts.time / 1000.0 + pairs, d = capped_distance(hA.positions, hB.positions, max_cutoff=search, + box=ts.dimensions, return_distances=True) + if not len(d): + continue + min_dist[i] = d.min() / 10.0 + ia, ib = locA[pairs[:, 0]], locB[pairs[:, 1]] + cm = d < c_cut + if cm.any(): + rp = np.unique(np.stack([ia[cm], ib[cm]], axis=1), axis=0) + freq[rp[:, 0], rp[:, 1]] += 1 + n_contacts[i] = len(rp) + im = d < i_cut + if im.any(): + ua, ub = np.unique(ia[im]), np.unique(ib[im]) + occA[ua] += 1 + occB[ub] += 1 + n_iface[i] = len(ua) + len(ub) + em = d < e_cut + everA[np.unique(ia[em])] = True + everB[np.unique(ib[em])] = True + freq /= n + occA /= n + occB /= n + + bsa = self._buried_area(ctx, A, B, p["bsa_stride"], n) + irmsd = self._interface_rmsd(u, A, B, occA, occB, p["core_occupancy"]) + + # ---- tables ------------------------------------------------------- # + ts_df = pd.DataFrame({"time_ns": times, "min_interface_dist_nm": min_dist, + "n_inter_contacts": n_contacts, "n_interface_residues": n_iface, + "buried_area_nm2": bsa, "interface_ca_rmsd_nm": irmsd, + "contacts_movavg": st.moving_average(n_contacts.astype(float), + p["window"])}) + ctx.write_csv(ts_df, "interface_timeseries.csv") + + def residue_rows(name, res, occ, ever): + first = int(res.resids[0]) + return [{"partner": name, "resid": int(r.resid), "partner_residue": int(r.resid) - first + 1, + "resname": r.resname, "interface_occupancy": float(o), + f"within_{e_cut:g}A_ever": bool(e)} + for r, o, e in zip(res, occ, ever)] + res_df = pd.DataFrame(residue_rows(nameA, resA, occA, everA) + + residue_rows(nameB, resB, occB, everB)) + ctx.write_csv(res_df, "interface_residues.csv") + ctx.write_csv(pd.DataFrame(freq, index=resA.resids, columns=resB.resids), + "interface_contact_frequency.csv", index=True) + fi, fj = np.where(freq > 0) + contacts = pd.DataFrame({ + "a_resid": resA.resids[fi], "a_resname": resA.resnames[fi], + "b_resid": resB.resids[fj], "b_resname": resB.resnames[fj], + "occupancy": freq[fi, fj]}).sort_values("occupancy", ascending=False) + ctx.write_csv(contacts, "interface_contacts_all.csv") + persistent = contacts[contacts.occupancy >= p["persistent"]] + ctx.write_csv(persistent, "interface_persistent_contacts.csv") + + self._figures(ctx, p, nameA, nameB, times, min_dist, n_contacts, bsa, irmsd, + resA, resB, occA, occB, freq) + + coreA = [int(r) for r in resA.resids[occA >= p["core_occupancy"]]] + coreB = [int(r) for r in resB.resids[occB >= p["core_occupancy"]]] + return { + "partners": [nameA, nameB], + "partner_residue_ranges": [[int(resA.resids[0]), int(resA.resids[-1])], + [int(resB.resids[0]), int(resB.resids[-1])]], + "cutoffs_A": {"contact": c_cut, "interface": i_cut, "ever": e_cut}, + "n_interface_residues": [int((occA > 0).sum()), int((occB > 0).sum())], + "core_interface_residues": [coreA, coreB], # full lists, never truncated + "n_core_interface_residues": [len(coreA), len(coreB)], + f"residues_within_{e_cut:g}A_ever": [[int(r) for r in resA.resids[everA]], + [int(r) for r in resB.resids[everB]]], + "min_interface_dist_nm": st.describe(min_dist[np.isfinite(min_dist)], + "min_interface_dist_nm"), + "frames_without_contact": int((~np.isfinite(min_dist)).sum() + + (min_dist[np.isfinite(min_dist)] >= c_cut / 10).sum()), + "n_inter_contacts": st.describe(n_contacts.astype(float), "n_inter_contacts"), + "n_persistent_contacts": int(len(persistent)), + "buried_area_nm2": st.describe(bsa[np.isfinite(bsa)], "buried_area_nm2") + if np.isfinite(bsa).any() else None, + "trend": {"contacts": _trend(times, n_contacts.astype(float)), + "buried_area": _trend(times, bsa), + "interface_residues": _trend(times, n_iface.astype(float))}, + "figure": "interface", + } + + # ------------------------------------------------------------------ # + @staticmethod + def _buried_area(ctx, A, B, stride: int, n: int) -> np.ndarray: + """Buried surface area (nm²) = SASA(A) + SASA(B) − SASA(A∪B), heavy atoms + H (mdtraj).""" + out = np.full(n, np.nan) + try: + import mdtraj as md + traj = md.load(str(ctx.config.data_dir / "core.xtc"), + top=str(ctx.config.data_dir / "core.pdb"), stride=stride) + except Exception: + return out + ia, ib = A.indices, B.indices + both = np.concatenate([ia, ib]) + sa = shrake_rupley(traj.atom_slice(ia), mode="atom").sum(1) + sb = shrake_rupley(traj.atom_slice(ib), mode="atom").sum(1) + sab = shrake_rupley(traj.atom_slice(both), mode="atom").sum(1) + out[::stride] = (sa + sb - sab)[: len(out[::stride])] + return out + + @staticmethod + def _interface_rmsd(u, A, B, occA, occB, core: float) -> np.ndarray: + """Cα RMSD of the core interface (both partners), superposed on itself, vs frame 0.""" + from MDAnalysis.analysis import rms + n = len(u.trajectory) + sel_res = list(A.residues[occA >= core]) + list(B.residues[occB >= core]) + if len(sel_res) < 3: + return np.full(n, np.nan) + ca = sum((r.atoms.select_atoms("name CA") for r in sel_res[1:]), + sel_res[0].atoms.select_atoms("name CA")) + if ca.n_atoms < 3: + return np.full(n, np.nan) + r = rms.RMSD(ca, ca, ref_frame=0).run() + return r.results.rmsd[:, 2] / 10.0 + + def _figures(self, ctx, p, nameA, nameB, times, min_dist, n_contacts, bsa, irmsd, + resA, resB, occA, occB, freq) -> None: + plt = plotting.style.plt + rows = [("Min. heavy-atom\ndistance (nm)", min_dist, PALETTE["primary"]), + ("Residue–residue\ncontacts", n_contacts, PALETTE["secondary"])] + if np.isfinite(bsa).any(): + rows.append(("Buried area (nm²)", bsa, PALETTE["green"])) + if np.isfinite(irmsd).any(): + rows.append(("Interface Cα\nRMSD (nm)", irmsd, PALETTE["purple"])) + fig, axes = plt.subplots(len(rows), 1, figsize=(7.6, 2.2 * len(rows) + 0.6), sharex=True) + for ax, (lab, y, col) in zip(np.atleast_1d(axes), rows): + ok = np.isfinite(y) + ax.plot(times[ok], y[ok], color=col, lw=0.9, alpha=0.5) + ma = st.moving_average(np.where(ok, y, np.nan).astype(float), p["window"]) + ax.plot(times, ma, color=col, lw=2.0) + ax.set_ylabel(lab, fontsize=10) + np.atleast_1d(axes)[0].set_title(f"Interface: {nameA} – {nameB}") + np.atleast_1d(axes)[-1].set_xlabel("Time (ns)") plotting.save_figure(fig, ctx.fig_path("interface"), dpi=ctx.config.dpi) - return {"partners": [selA, selB], "bsa": st.describe(bsa, "bsa_nm2"), - "mean_interface_contacts": float(contacts.mean()), "figure": "interface"} + fig, (a1, a2) = plt.subplots(2, 1, figsize=(8.4, 6.0)) + a1.bar(resA.resids, occA * 100, color=PALETTE["primary"], width=1.0) + a1.set_ylabel("Interface\noccupancy (%)") + a1.set_title(f"{nameA} interface residues") + a2.bar(resB.resids, occB * 100, color=PALETTE["green"], width=1.0) + a2.set_ylabel("Interface\noccupancy (%)") + a2.set_xlabel("Residue number") + a2.set_title(f"{nameB} interface residues") + plotting.save_figure(fig, ctx.fig_path("interface_residues"), dpi=ctx.config.dpi) + + fig, ax = plotting.new_axes(figsize=(7.2, 5.6)) + im = ax.imshow(freq, cmap=SEQ_CMAP, origin="lower", aspect="auto", vmin=0, vmax=1, + extent=[resB.resids[0], resB.resids[-1], resA.resids[0], resA.resids[-1]]) + ax.set_xlabel(f"{nameB} residue") + ax.set_ylabel(f"{nameA} residue") + ax.set_title("Inter-partner contact frequency") + fig.colorbar(im, ax=ax, shrink=0.85, label="Occupancy (fraction of frames)") + plotting.save_figure(fig, ctx.fig_path("interface_contact_map"), dpi=ctx.config.dpi) diff --git a/moldynx/analysis/sasa.py b/moldynx/analysis/sasa.py index a4355a3..a3080b4 100644 --- a/moldynx/analysis/sasa.py +++ b/moldynx/analysis/sasa.py @@ -7,6 +7,7 @@ import mdtraj as md from moldynx.core.base import BaseAnalysis +from moldynx.core.surface import shrake_rupley from moldynx import plotting from moldynx import statistics as st from moldynx.plotting import PALETTE @@ -20,7 +21,7 @@ class SASAAnalysis(BaseAnalysis): supported_systems = {"*"} outputs = ["results/sasa_total.csv", "results/sasa_per_residue.csv", "figures/sasa_timeseries.png", "figures/sasa_per_residue.png"] - default_params = {"window": 20} + default_params = {"window": 20, "stride": 10} # SASA is computed frame by frame (see core.surface) def run(self, ctx) -> dict: p = self.params(ctx) @@ -28,9 +29,9 @@ def run(self, ctx) -> dict: # mdtraj reads the cached solute trajectory ctx.core_universe() # ensure core.{pdb,xtc} exist traj = md.load(str(ctx.config.data_dir / "core.xtc"), - top=str(ctx.config.data_dir / "core.pdb")) + top=str(ctx.config.data_dir / "core.pdb"), stride=p["stride"]) time_ns = traj.time / 1000.0 - sasa_res = md.shrake_rupley(traj, mode="residue") # nm^2 + sasa_res = shrake_rupley(traj, mode="residue") # nm^2 (multi-frame-safe) total = sasa_res.sum(axis=1) resids = np.array([r.resSeq for r in traj.topology.residues]) resnames = np.array([r.name for r in traj.topology.residues]) diff --git a/moldynx/core/surface.py b/moldynx/core/surface.py new file mode 100644 index 0000000..a739652 --- /dev/null +++ b/moldynx/core/surface.py @@ -0,0 +1,23 @@ +""" +Shrake–Rupley SASA that is correct on multi-frame trajectories. + +``mdtraj.shrake_rupley`` (verified with mdtraj 1.11.1) can return wrong values +for some frames of a *multi-frame* call: on a real 100 ns trajectory every other +frame was off by ~0.5 nm², and on a rigid-body test the per-partner area jumped +by 54 nm² -- enough to make buried surface area negative. Single-frame calls were +correct in every test, so this wrapper computes frame by frame. + +Cost: single-frame calls run on one core (~4 s per frame for ~13 k atoms); +callers stride long trajectories. A process-pool version is on the roadmap. +""" + +from __future__ import annotations + +import numpy as np + + +def shrake_rupley(traj, mode: str = "atom", **kwargs) -> np.ndarray: + """Drop-in replacement for ``mdtraj.shrake_rupley`` (nm² per atom/residue per frame).""" + import mdtraj as md + return np.concatenate([md.shrake_rupley(traj[i], mode=mode, **kwargs) + for i in range(traj.n_frames)]) diff --git a/moldynx/io/gromacs.py b/moldynx/io/gromacs.py index aa86115..9f675f3 100644 --- a/moldynx/io/gromacs.py +++ b/moldynx/io/gromacs.py @@ -361,6 +361,96 @@ def find_gmx(prefer_wsl_distro: str | None = None) -> Gmx | None: return None +def _shell_quote(a: str) -> str: + return "'" + a.replace("'", "'\"'\"'") + "'" + + +def run_gmx_pipeline(gmx: Gmx, args: list[str], pipe: str, timeout: int = 3600 + ) -> subprocess.CompletedProcess: + """``gmx 2>/dev/null | `` in bash (native or WSL) -- filters huge dumps at the source.""" + if gmx.kind == "wsl": + wargs = [windows_to_wsl(a) if re.match(r"^[A-Za-z]:[\\/]", a) else a for a in args] + exe = "gmx" + else: + wargs, exe = args, gmx.command[0] + script = f"#!/bin/bash\n{_shell_quote(exe)} {' '.join(_shell_quote(a) for a in wargs)} " \ + f"2>/dev/null | {pipe}\n" + with tempfile.NamedTemporaryFile("w", suffix=".sh", delete=False, newline="\n") as fh: + fh.write(script) + spath = fh.name + try: + if gmx.kind == "wsl": + cmd = gmx.command + ["bash", windows_to_wsl(spath)] + else: + bash = shutil.which("bash") + if bash is None: + raise RuntimeError("bash is required to filter gmx output") + cmd = [bash, spath] + return subprocess.run(cmd, capture_output=True, text=True, timeout=timeout) + finally: + try: + os.unlink(spath) + except OSError: + pass + + +@dataclass +class PositionRestraints: + tpr: str + available: bool + n_restrained: int = 0 + by_force_constant: dict[str, int] = field(default_factory=dict) # "400" -> atoms + by_molecule_block: list[int] = field(default_factory=list) # restrained atoms per block + error: str | None = None + + def to_dict(self) -> dict: + return asdict(self) + + +def tpr_position_restraints(gmx: Gmx | None, tpr: str | Path) -> PositionRestraints: + """ + Position restraints stored in a run input (``gmx dump``): restrained atoms per force + constant (x component, kJ mol⁻¹ nm⁻²) and per molecule block. ``gmx dump`` prints one + ``Position Rest.`` interaction list per molecule type; its ``nr:`` counts integers + (2 per restraint: type + atom). + """ + out = PositionRestraints(tpr=str(tpr), available=False) + if gmx is None: + out.error = "GROMACS not available" + return out + pattern = r"functype\[[0-9]+\]=POSRES|Position Rest\.:|\(POSRES\)" + try: + r = run_gmx_pipeline(gmx, ["dump", "-s", str(tpr)], + f"grep -E {_shell_quote(pattern)}", timeout=3600) + except (OSError, subprocess.SubprocessError, RuntimeError) as exc: + out.error = str(exc) + return out + fc: dict[int, str] = {} + blocks: list[int] = [] + counts: dict[str, int] = {} + for line in r.stdout.splitlines(): + m = re.search(r"functype\[(\d+)\]=POSRES.*?fcA=\(\s*([-\d.eE+]+)", line) + if m: + fc[int(m.group(1))] = f"{float(m.group(2)):g}" + continue + if "Position Rest.:" in line: + blocks.append(0) + continue + m = re.search(r"type=(\d+) \(POSRES\)", line) + if m and blocks: + blocks[-1] += 1 + key = fc.get(int(m.group(1)), "?") + counts[key] = counts.get(key, 0) + 1 + out.available = r.returncode == 0 or bool(blocks) + out.by_molecule_block = [b for b in blocks if b] if any(blocks) else blocks[:0] + out.by_force_constant = dict(sorted(counts.items(), key=lambda kv: -float(kv[0]) + if kv[0] != "?" else 0)) + out.n_restrained = sum(counts.values()) + if not out.available: + out.error = (r.stderr or "gmx dump failed")[-300:] + return out + + def run_gmx(gmx: Gmx, args: list[str], stdin: str | None = None, timeout: int = 3600) -> subprocess.CompletedProcess: """ diff --git a/moldynx/io/jobscripts.py b/moldynx/io/jobscripts.py new file mode 100644 index 0000000..69b5422 --- /dev/null +++ b/moldynx/io/jobscripts.py @@ -0,0 +1,91 @@ +""" +Chain of custody from job scripts: which file fed which GROMACS step. + +Reads shell / SLURM scripts, expands simple ``VAR=value`` assignments and +``${VAR}`` references, and extracts every ``gmx grompp``, ``gmx mdrun`` and +``gmx convert-tpr`` call with its file arguments. Reading only -- nothing runs. +""" + +from __future__ import annotations + +import re +import shlex +from dataclasses import asdict, dataclass, field +from pathlib import Path + +_ASSIGN = re.compile(r'^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)=["\']?([^"\'\s#]*)["\']?\s*(#.*)?$') +_VAR = re.compile(r"\$\{?([A-Za-z_][A-Za-z0-9_]*)\}?") +_TOOL = re.compile(r"\bgmx(?:_mpi|_d)?\s+(grompp|mdrun|convert-tpr)\b(.*)$") + +# the flags that matter for provenance +FLAGS = { + "grompp": {"-f": "mdp", "-c": "coordinates", "-r": "restraint_reference", "-t": "checkpoint", + "-p": "topology", "-n": "index", "-o": "output_tpr", "-maxwarn": "maxwarn"}, + "mdrun": {"-s": "tpr", "-deffnm": "deffnm", "-cpi": "checkpoint_in", "-append": "append", + "-nb": "nb", "-pme": "pme", "-ntmpi": "ntmpi", "-ntomp": "ntomp", "-npme": "npme"}, + "convert-tpr": {"-s": "tpr_in", "-o": "tpr_out", "-extend": "extend_ps", "-until": "until_ps", + "-nsteps": "nsteps"}, +} +_BOOL_FLAGS = {"-append", "-v"} + + +@dataclass +class GmxCall: + script: str + line_no: int + tool: str + args: dict[str, str] = field(default_factory=dict) + raw: str = "" + + def to_dict(self) -> dict: + return asdict(self) + + +def parse_job_script(path: str | Path) -> list[GmxCall]: + path = Path(path) + env: dict[str, str] = {} + calls: list[GmxCall] = [] + try: + lines = path.read_text(encoding="utf-8", errors="replace").splitlines() + except OSError: + return calls + for no, line in enumerate(lines, 1): + stripped = line.split("#", 1)[0] if not line.lstrip().startswith("#!") else "" + m = _ASSIGN.match(line) + if m and "gmx" not in line: + env[m.group(1)] = _VAR.sub(lambda mm: env.get(mm.group(1), mm.group(0)), m.group(2)) + continue + expanded = _VAR.sub(lambda mm: env.get(mm.group(1), mm.group(0)), stripped) + t = _TOOL.search(expanded) + if not t: + continue + tool, rest = t.group(1), t.group(2) + try: + toks = shlex.split(rest, posix=True) + except ValueError: + toks = rest.split() + wanted = FLAGS[tool] + args: dict[str, str] = {} + i = 0 + while i < len(toks): + tok = toks[i] + if tok in ("|", ";", "&&", "||", ">", "2>", "<"): + break + if tok in wanted: + if tok in _BOOL_FLAGS: + args[wanted[tok]] = "yes" + elif i + 1 < len(toks) and not toks[i + 1].startswith("-"): + args[wanted[tok]] = toks[i + 1] + i += 1 + i += 1 + calls.append(GmxCall(script=path.name, line_no=no, tool=tool, args=args, + raw=" ".join(expanded.split()))) + return calls + + +def chain_of_custody(scripts: list[str | Path]) -> list[dict]: + """All grompp / mdrun / convert-tpr calls found in the scripts, in order.""" + out = [] + for s in scripts: + out.extend(c.to_dict() for c in parse_job_script(s)) + return out diff --git a/tests/test_equilibration.py b/tests/test_equilibration.py new file mode 100644 index 0000000..ae8d1ec --- /dev/null +++ b/tests/test_equilibration.py @@ -0,0 +1,95 @@ +"""Equilibration audit on a miniature real folder (real trimmed logs, one real .edr).""" + +from __future__ import annotations + +import json +import shutil + +import numpy as np +import pandas as pd +import pytest + +from conftest import FIX +from moldynx.analysis.equilibration import (EquilibrationAudit, energy_statistics, + fraction_time, settle_time) +from moldynx.core.config import RunConfig +from moldynx.core.context import AnalysisContext +from moldynx.io import gromacs +from moldynx.io.discovery import discover_files + + +@pytest.fixture +def ctx(a8_tree, tmp_path, monkeypatch): + root, _ = a8_tree + shutil.copyfile(FIX / "edr" / "A8HNE1_step4.1_equilibration.edr", + root / "step4.1_equilibration.edr") + monkeypatch.setattr(gromacs, "find_gmx", lambda *a, **k: None) + fs = discover_files(root) + cfg = RunConfig(input_dir=root, output_dir=tmp_path / "out") + return AnalysisContext(cfg, None, fs) + + +def test_audit_on_real_logs(ctx): + pytest.importorskip("panedr") + out = EquilibrationAudit().run(ctx) + summary = json.loads(ctx.csv_path("equilibration_summary.json").read_text(encoding="utf-8")) + em = summary["stages"]["em"]["minimization"] + assert em["reached_emtol"] is False and em["steps"] == 3056 + nvt = summary["stages"]["nvt"] + assert nvt["ref_t_K"] == [303.15, 303.15] and nvt["tcoupl"] == "V-rescale" + assert nvt["temperature_settled_ps"] == pytest.approx(13.0) # real NVT energy file + assert nvt["temperature_after_settling"]["mean"] == pytest.approx(303.2, abs=0.1) + assert summary["stages"]["npt"]["pcoupl"] == "Berendsen" + assert summary["crash_dumps"]["pairs"] == 4 and summary["crash_dumps"]["all_accounted_for"] + assert summary["position_restraints"]["em"]["available"] is False # no GROMACS: reported + custody = summary["chain_of_custody"] + grompp = [c for c in custody if c["tool"] == "grompp"][0] + assert grompp["args"]["restraint_reference"].endswith("step3_input.gro") + assert any(c["tool"] == "convert-tpr" and c["args"]["extend_ps"] == "99000" for c in custody) + gaps = [r.get("gap_after_previous_s") for r in summary["timeline"]] + assert gaps[1:3] == [13.0, 13.0] # EM->NVT->NPT back to back + v = " | ".join(out["verdicts"]) + assert "without reaching the requested force tolerance" in v + assert "all matched to 'Wrote pdb' events" in v + assert "stage .mdp files are not present" in v + assert (ctx.config.figures_dir / "equilibration_overview.png").exists() + + +def test_skipped_without_stage_files(tmp_path): + (tmp_path / "md.xtc").write_bytes(b"") + (tmp_path / "md.tpr").write_bytes(b"") + fs = discover_files(tmp_path, deep=False) + ctx = AnalysisContext(RunConfig(input_dir=tmp_path, output_dir=tmp_path / "o"), None, fs) + out = EquilibrationAudit().run(ctx) + assert out["status"] == "skipped" + + +def test_statistics_helpers(): + t = np.arange(0, 2001, 1.0) + x = 1000 + 0.1 * t / 1000 + np.random.default_rng(0).normal(0, 0.02, len(t)) # SE ≈ 0.002/ns + s = energy_statistics(pd.DataFrame({"Time": t, "Density": x})) + d = s["terms"]["Density"] + assert s["tail_ps"] == 500.0 + assert d["drift_per_ns"] == pytest.approx(0.1, abs=0.03) and d["drift_p"] < 1e-3 + temp = np.r_[np.linspace(200, 303, 20), np.full(100, 303.0)] + assert settle_time(np.arange(len(temp), dtype=float), temp, 303.15, 2.0) == pytest.approx(19.0) + dens = np.r_[np.linspace(950, 1014, 10), np.full(90, 1014.5)] + assert fraction_time(np.arange(len(dens), dtype=float), dens) == pytest.approx(9.0) + + +def test_job_script_parsing(tmp_path): + from moldynx.io.jobscripts import parse_job_script + s = tmp_path / "run.sh" + s.write_text('IN="../in"\nequi=step4.1_equilibration\n' + 'gmx grompp -f ${IN}/${equi}.mdp -o ${equi}.tpr -c step4.0_minimization.gro ' + '-r ${IN}/step3_input.gro -p ${IN}/topol.top -n ${IN}/index.ndx -maxwarn 1\n' + 'gmx mdrun -v -deffnm ${equi} -nb gpu -ntmpi 3 -ntomp 8 -pin on\n' + '# gmx mdrun -deffnm commented_out\n', encoding="utf-8") + calls = parse_job_script(s) + assert [c.tool for c in calls] == ["grompp", "mdrun"] + g = calls[0].args + assert g["mdp"] == "../in/step4.1_equilibration.mdp" + assert g["coordinates"] == "step4.0_minimization.gro" + assert g["restraint_reference"] == "../in/step3_input.gro" and g["maxwarn"] == "1" + assert calls[1].args == {"deffnm": "step4.1_equilibration", "nb": "gpu", "ntmpi": "3", + "ntomp": "8"} diff --git a/tests/test_gromacs_io.py b/tests/test_gromacs_io.py index 5628837..fae64c4 100644 --- a/tests/test_gromacs_io.py +++ b/tests/test_gromacs_io.py @@ -164,6 +164,34 @@ def test_tpr_header_unreadable_is_reported_not_raised(tmp_path): assert not h.readable and h.error +def test_position_restraint_parser(monkeypatch): + import subprocess + + from moldynx.io import gromacs as g + # gmx dump lines in the real format (filtered by grep at the source) + dump = "\n".join([ + " functype[1240]=POSRES, pos0A=( 0.0e+00, 0.0e+00, 0.0e+00), " + "fcA=( 4.00000000e+02, 4.00000000e+02, 4.00000000e+02), pos0B=( 0, 0, 0), fcB=( 400, 400, 400)", + " functype[1242]=POSRES, pos0A=( 0.0e+00, 0.0e+00, 0.0e+00), " + "fcA=( 4.00000000e+01, 4.00000000e+01, 4.00000000e+01), pos0B=( 0, 0, 0), fcB=( 40, 40, 40)", + " Position Rest.:", + " 0 type=1240 (POSRES) 0", + " 1 type=1240 (POSRES) 4", + " 2 type=1242 (POSRES) 6", + " Position Rest.:", + " 0 type=1242 (POSRES) 0", + " Position Rest.:", + ]) + monkeypatch.setattr(g, "run_gmx_pipeline", + lambda *a, **k: subprocess.CompletedProcess([], 0, dump, "")) + r = g.tpr_position_restraints(g.Gmx("native", ["gmx"]), "x.tpr") + assert r.available and r.n_restrained == 4 + assert r.by_force_constant == {"400": 2, "40": 2} + assert r.by_molecule_block == [3, 1] + none = g.tpr_position_restraints(None, "x.tpr") + assert not none.available and "not available" in none.error + + def test_windows_to_wsl(): assert windows_to_wsl(r"E:\a b\c.tpr") == "/mnt/e/a b/c.tpr" assert windows_to_wsl("/already/posix") == "/already/posix" diff --git a/tests/test_interface.py b/tests/test_interface.py new file mode 100644 index 0000000..48fa69c --- /dev/null +++ b/tests/test_interface.py @@ -0,0 +1,74 @@ +"""Interface analysis on the real two-chain geometry of a reference complex (Cα-only fixture).""" + +from __future__ import annotations + +import json + +import numpy as np +import pandas as pd +import pytest + +from conftest import FIX +from moldynx.analysis.interface import InterfaceAnalysis +from moldynx.core.config import RunConfig +from moldynx.core.context import AnalysisContext + + +class _System: + flags = {"has_nucleic": False} + chains = [] + + +@pytest.fixture +def ctx(tmp_path): + import MDAnalysis as mda + src = mda.Universe(str(FIX / "structures" / "A8HNE1_ZmBiP2_CA_only.pdb")) + assert len(set(src.segments.segids)) == 1 # truncated 'seg_' in the fixture + cfg = RunConfig(output_dir=tmp_path / "out", + params={"interface": {"contact_cutoff": 8.0, "interface_cutoff": 8.0, + "ever_cutoff": 10.0, "window": 2, "bsa_stride": 1}}) + cfg.ensure_dirs() + # a 5-frame trajectory: the real complex, with the second chain drifting away by 0.5 Å/frame + core_pdb, core_xtc = cfg.data_dir / "core.pdb", cfg.data_dir / "core.xtc" + src.atoms.write(str(core_pdb)) + with mda.Writer(str(core_xtc), src.atoms.n_atoms) as w: + for k in range(5): + src.atoms[187:].translate([0.5 * k, 0, 0]) if k else None + src.trajectory.ts.time = k * 100.0 + w.write(src.atoms) + (cfg.data_dir / "core_meta.json").write_text(json.dumps({"chains": [ + {"segid": "seg_0_PROA", "index": 0, "core_start": 0, "core_stop": 187}, + {"segid": "seg_1_PROB", "index": 1, "core_start": 187, "core_stop": 850}]})) + c = AnalysisContext.__new__(AnalysisContext) + c.config, c.system, c._core = cfg, _System(), mda.Universe(str(core_pdb), str(core_xtc)) + return c + + +def test_interface_on_real_complex_geometry(ctx): + out = InterfaceAnalysis().run(ctx) + assert out["partners"] == ["seg_0_PROA", "seg_1_PROB"] # resolved despite 'seg_' PDB + assert out["partner_residue_ranges"] == [[1, 187], [188, 850]] + ts = pd.read_csv(ctx.csv_path("interface_timeseries.csv")) + assert len(ts) == 5 + # the partner drifts away -> the minimum distance grows, contacts do not increase + assert np.all(np.diff(ts.min_interface_dist_nm) > 0) + assert ts.n_inter_contacts.iloc[-1] <= ts.n_inter_contacts.iloc[0] + core_a, core_b = out["core_interface_residues"] + res = pd.read_csv(ctx.csv_path("interface_residues.csv")) + assert len(core_a) == int(((res.partner == "seg_0_PROA") & + (res.interface_occupancy >= 0.5)).sum()) # full list, no [:10] + ever_a, ever_b = out["residues_within_10A_ever"] + assert set(core_a) <= set(ever_a) and set(core_b) <= set(ever_b) + bsa = ts.buried_area_nm2.to_numpy() + assert np.isfinite(bsa).all() and (bsa > 0).all() + assert np.all(np.diff(bsa) <= 1e-3) # partner leaves -> less buried + assert out["trend"]["contacts"]["slope_per_10ns"] is not None + for f in ("interface", "interface_residues", "interface_contact_map"): + assert (ctx.config.figures_dir / f"{f}.png").exists() + + +def test_interface_skips_with_reason_for_single_chain(ctx): + (ctx.config.data_dir / "core_meta.json").write_text(json.dumps({"chains": [ + {"segid": "only", "index": 0, "core_start": 0, "core_stop": 850}]})) + out = InterfaceAnalysis().run(ctx) + assert out["status"] == "skipped" and "1 protein chain" in out["reason"] diff --git a/tests/test_surface.py b/tests/test_surface.py new file mode 100644 index 0000000..86fdfbb --- /dev/null +++ b/tests/test_surface.py @@ -0,0 +1,37 @@ +"""Multi-frame SASA must equal single-frame SASA (mdtraj 1.11.1 per-thread state bug).""" + +from __future__ import annotations + +import numpy as np +import pytest + +from conftest import FIX + + +@pytest.fixture +def moving_traj(): + import mdtraj as md + t = md.load(str(FIX / "structures" / "A8HNE1_ZmBiP2_CA_only.pdb")) + xyz = np.repeat(t.xyz, 8, axis=0) + for k in range(8): # partner B moves as a rigid body + xyz[k, 187:, 0] += 0.05 * k * (k + 1) / 2 + return md.Trajectory(xyz, t.topology) + + +def test_wrapper_matches_single_frame_calls(moving_traj): + import mdtraj as md + from moldynx.core.surface import shrake_rupley + ref = np.array([md.shrake_rupley(moving_traj[k], mode="atom")[0] + for k in range(moving_traj.n_frames)]) + got = shrake_rupley(moving_traj, mode="atom") + np.testing.assert_allclose(got, ref, atol=1e-5) + + +def test_rigid_partner_area_is_constant_and_buried_area_positive(moving_traj): + from moldynx.core.surface import shrake_rupley + b = shrake_rupley(moving_traj.atom_slice(np.arange(187, 850)), mode="atom").sum(1) + assert np.ptp(b) < 1e-3 # a rigid body keeps its own area + a = shrake_rupley(moving_traj.atom_slice(np.arange(187)), mode="atom").sum(1) + ab = shrake_rupley(moving_traj, mode="atom").sum(1) + bsa = a + b - ab + assert (bsa > -1e-3).all() and np.all(np.diff(bsa) <= 1e-3) # shrinks as B leaves