diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6a7695c0..42c4bc26 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,12 @@ version: 2 +registries: + pytorch-cuda: + type: python-index + url: https://download.pytorch.org/whl/cu121 #so Dependabot retrieves cuda wheels for torch updates: - package-ecosystem: "pip" directory: "/" schedule: interval: "weekly" + registries: ["pytorch-cuda"] + diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 00000000..cae5795b --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,31 @@ +name-template: 'v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' +categories: + - title: '🚀 Features' + labels: + - 'feature' + - 'enhancement' + - title: '🐛 Bug Fixes' + labels: + - 'fix' + - 'bugfix' + - 'bug' + - title: '🧰 Maintenance' + label: 'chore' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. +version-resolver: + major: + labels: + - 'major' + minor: + labels: + - 'minor' + patch: + labels: + - 'patch' + default: patch +template: | + ## Changes + + $CHANGES diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 00000000..6176ca1c --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,43 @@ +name: Release Drafter + +on: + push: + # branches to consider in the event; optional, defaults to all + branches: + - main + - master + + # pull_request event is required only for autolabeler + pull_request: + # Only following types are handled by the action, but one can default to all as well + types: [opened, reopened, synchronize] + # pull_request_target event is required for autolabeler to support PRs from forks + pull_request_target: + types: [opened, reopened, synchronize] + +permissions: + contents: read + +jobs: + update_release_draft: + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: write + runs-on: ubuntu-latest + steps: + # (Optional) GitHub Enterprise requires GHE_HOST variable set + #- name: Set GHE_HOST + # run: | + # echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV + + # Drafts your next Release notes as Pull Requests are merged into "master" + - uses: release-drafter/release-drafter@v6 + # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml + # with: + # config-name: my-config.yml + # disable-autolabeler: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 76ee8feb..87d60498 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -3,16 +3,8 @@ name: Unit Tests & Coverage on: push: branches: [main] - paths: - - "ionerdss/**" - - "tests/**" - - ".github/workflows/unittest.yml" pull_request: branches: [main] - paths: - - "ionerdss/**" - - "tests/**" - - ".github/workflows/unittest.yml" #Stop redundant CI runs for superseded commits concurrency: @@ -41,14 +33,14 @@ jobs: with: python-version: ${{ matrix.python-version }} cache: pip # built‑in dependency+wheel cache - cache-dependency-path: env/requirements.txt + cache-dependency-path: env/requirements-dev.txt #Extra cache layer: pre‑built wheels in ~/.cache/pip so can work between OS/versions - name: Cache compiled pip wheels uses: actions/cache@v4 with: path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('env/requirements.txt') }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('env/requirements-dev.txt') }} restore-keys: | ${{ runner.os }}-pip-${{ matrix.python-version }} ${{ runner.os }}-pip- @@ -56,11 +48,8 @@ jobs: # Qt/OpenGL runtime (Linux only; no‑op elsewhere as stated in the action repo, mac shouldn't need it) - uses: tlambert03/setup-qt-libs@v1 - - name: Install project dependencies - run: pip install -r env/requirements.txt - - - name: Install package in editable mode - run: pip install -e .[tests] # optional pytest/pytest-cov deps as defined in toml file + - name: Install package in editable mode with test dependencies + run: pip install -e .[test] - name: Configure headless Qt run: echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV #avoids xcb/display errors, according to the web diff --git a/.gitignore b/.gitignore index fac1da65..c6169e71 100644 --- a/.gitignore +++ b/.gitignore @@ -78,7 +78,6 @@ celerybeat.pid .venv venv/ -ENV/ env.bak/ venv.bak/ @@ -112,3 +111,7 @@ cython_debug/ ~* *~ .DS_Store + + +# Specficially ignore pdbfiles in proaffinity +proaffinity-gnn/pdbfiles \ No newline at end of file diff --git a/README.md b/README.md index cdcbab66..95c49c39 100644 --- a/README.md +++ b/README.md @@ -6,123 +6,156 @@ ![PyPI - Wheel](https://img.shields.io/pypi/wheel/ioNERDSS.svg) [![codecov](https://codecov.io/gh/JohnsonBiophysicsLab/ionerdss/graph/badge.svg?token=IUUUOZT0VJ)](https://codecov.io/gh/JohnsonBiophysicsLab/ionerdss) -**ionerdss** is a Python library that provides user‐friendly tools for setting up and analyzing output from the [NERDSS](https://github.com/JohnsonBiophysicsLab/NERDSS) reaction‐diffusion simulator. Its goal is to streamline model building (from PDB files or from scratch), data analysis, and visualization for simulation workflows. +**ionerdss** is a Python library that provides user‐friendly tools for setting up and analyzing output from the [NERDSS](https://github.com/JohnsonBiophysicsLab/NERDSS) reaction‐diffusion simulator. --- ## Installation -1. From PyPI (recommended): - - **Python version:** 3.9 or later +### 1. From PyPI (Recommended) -Create a conda environment (optional but recommended): - -Download and install Anaconda or Miniconda, then create a new conda environment for `ionerdss`: +Requires Python 3.9 or later. ```bash -conda create -n ionerdss python=3.9 -conda activate ionerdss +pip install ioNERDSS +``` +To include optional features, you can specify them during installation: +```bash +# Example: Install with ODE solver and rendering tools +pip install "ioNERDSS[ode,ovito_rendering]" ``` -Install the latest release directly from PyPI: +### 2. For Development (from GitHub) +**Quick Start (Clone and Test):** ```bash -pip install ioNERDSS +# Requires Python 3.9+ +git clone https://github.com/JohnsonBiophysicsLab/ionerdss.git +cd ionerdss +pip install -e ".[test,jupyter]" # Essential dev dependencies +pytest ``` -2. From GitHub (for the latest development version): - - If you want to use the latest features or contribute to the development, you can install directly from the GitHub repository: +**Detailed Setup for Contributors:** + +If you want to contribute to development, work with examples, or need a specific environment setup: + +**Prerequisites:** +* [Git](https://git-scm.com/) +* Python 3.9+ +* Your choice of environment manager: `conda`, `venv`, etc. +* Optionally, [uv](https://github.com/astral-sh/uv) for faster performance + +**Setup Instructions:** + +1. **Clone the repository:** + ```bash + git clone https://github.com/JohnsonBiophysicsLab/ionerdss.git + cd ionerdss + ``` + +2. **Create and activate an environment:** + + * **Using `conda` (Recommended for full environment):** + ```bash + conda env create -f env/environment.yml + conda activate ionerdss-dev + ``` + * **Using `uv` and `venv` (Fastest):** + ```bash + python -m venv .venv + source .venv/bin/activate # On Windows: .venv\Scripts\activate + uv pip install -r env/requirements-dev.txt + ``` + * **Using `pip` and `venv`:** + ```bash + python -m venv .venv + source .venv/bin/activate # On Windows: .venv\Scripts\activate + pip install -r env/requirements-dev.txt + ``` + +This installs `ionerdss` in editable mode with testing and Jupyter dependencies for typical development. + +**For comprehensive development** (including heavy rendering and documentation tools): +```bash +pip install -e ".[all]" +``` -To install from source (e.g., if you’ve cloned this repo and want the most recent changes): +--- +## Running Tests + +To run the unit tests locally, ensure you have installed the development environment (which includes `pytest` and `pytest-cov`). + +Then, from the project root folder, run: ```bash -git clone https://github.com/JohnsonBiophysicsLab/ionerdss.git -cd ionerdss -pip install -r requirements.txt -pip install -e . # Editable mode: updates reflect immediately in the environment +pytest ``` --- -## Quick Start +## Usage ```python import ionerdss as ion -ion.some_function() # Replace with actual function calls to set up model and analyze results + +# Create a PDB model from structure +model = ion.PDBModel(pdb_id="1abc") +model.generate_model() + +# Run analysis on simulation data +analysis = ion.Analysis("path/to/simulation/data") +analysis.plot_time_evolution() ``` -For extended examples, see the [tutorials](https://ionerdss.readthedocs.io/en/latest/ionerdss_tutorials.html). +## Examples -### Run a quick trial with our server +The `examples/` directory contains hands-on Jupyter notebooks demonstrating real molecular systems: + +- **`Homo-3mer-5VA4.ipynb`** - 3-component homogeneous assembly +- **`Hetero-30mer-4YD9.ipynb`** - 30-component heterogeneous system +- **`Homo-720mer-6MX4.ipynb`** - Large 720-component viral capsid +- **`book_chapter_example_system_1.ipynb`** - Comprehensive tutorial example + +To run the examples locally: +```bash +git clone https://github.com/JohnsonBiophysicsLab/ionerdss.git +cd ionerdss +pip install -e ".[jupyter]" # Install with Jupyter support +jupyter lab examples/ +``` + +For additional tutorials, see the [online documentation](https://ionerdss.readthedocs.io/en/latest/ionerdss_tutorials.html). +### Run a quick trial with our server Go to the [NERDSS server](http://52.15.142.249:5000/). --- ## Documentation - **User Guide:** [ionerdss user guide](https://ionerdss.readthedocs.io/en/latest/ionerdss_documentation_v1_1.html). +- **API Reference:** [API](https://ionerdss.readthedocs.io/en/latest/ionerdss.html). -- **API Reference:** [API](https://ionerdss.readthedocs.io/en/latest/ionerdss.html). You can also build the docs locally using Sphinx: +You can also build the docs locally using Sphinx: ```bash -sphinx-apidoc -o docs/source ionerdss -cd docs +# Ensure you are in your activated environment +pip install -e ".[docs]" # Install documentation dependencies +sphinx-apidoc -o website/source ionerdss +cd website make html ``` -Then open docs/build/html/index.html in your browser. +Then open `website/build/html/index.html` in your browser. --- -## Repository Structure -``` -ionerdss/ -├── .github/workflows/ # Continuous Integration workflows -├── docs/ # Documentation -│ ├── source/ # Sphinx source files -│ ├── make.bat # Windows build script -│ └── Makefile # Unix build script -├── ionerdss/ # Main Python package -│ ├── nerdss_model/ # Model building tools (v1.2.0) -│ ├── nerdss_simulation/ # Simulation tools (v1.2.0) -│ ├── nerdss_analysis/ # Data analysis tools (v1.2.0) -│ └── __init__.py -├── tests/ # Unit tests -├── data/ # Test and tutorial data -└── setup.py # Installation & packaging -``` - ---- +## Docker Development Environment -## Develop using docker container: +For isolated development with Jupyter Lab: ```bash docker build --no-cache -t ionerdss_dev . docker run -it --rm -v $(pwd):/app -p 8888:8888 ionerdss_dev ``` - ---- - -## Best Practices - -1. **Docstrings & Sphinx** - - Write clear docstrings in Google‐style to help auto‐generate documentation. - -2. **Code Organization** - - Keep related functionality grouped in submodules. - -3. **Tests** - - Add or update unit tests in `tests/` for any new function. We use [unittest](https://docs.python.org/3/library/unittest.html). - - - To run the tests locally, in the project root folder, use the following command: - ```bash - pip install -r requirements.txt - export PYTHONPATH=$(pwd) - pytest - ``` - -4. **Versioning & Releases** - - Update `setup.py` with a new version number. A GitHub release will auto‐update the PyPI package. - -5. **Contributions** - - Fork the repo, create a feature branch, and open a pull request. +This creates a containerized environment with Jupyter Lab accessible at `http://localhost:8888`. --- diff --git a/data/7uhy.cif b/data/7uhy.cif index 73f2fabd..7d39a723 100644 --- a/data/7uhy.cif +++ b/data/7uhy.cif @@ -3645,7 +3645,7 @@ _entity.details 2 polymer man "GATOR complex protein WDR24" 88326.953 2 ? ? ? ? 3 polymer man "GATOR complex protein WDR59" 109938.391 2 ? ? ? ? 4 polymer man "Isoform B of Nucleoporin SEH1" 46636.289 6 ? ? ? ? -5 polymer man "Protein SEC13 homolog" 35578.438 2 ? ? ? ? +5 polymer man "Protein SEC13 repeated_chain" 35578.438 2 ? ? ? ? 6 polymer man Unknown 1294.587 2 ? ? ? ? 7 polymer man Unknown 698.854 2 ? ? ? ? 8 non-polymer syn "ZINC ION" 65.409 32 ? ? ? ? diff --git a/env/README.md b/env/README.md index bcc747ea..8ae5788d 100644 --- a/env/README.md +++ b/env/README.md @@ -42,6 +42,52 @@ pip install -r env/requirements.txt --- +## Additional functionalities + +### Automatic Reaction System Generation and ODE / Gillespie Solver + +With `conda`: + +```bash +conda env update -f env/environment-ode.yml --prune +``` + +With `pip`: + +```bash +# Create and activate a virtual environment +python -m venv .venv +source .venv/bin/activate # On Windows use: .venv\Scripts\activate + +# Install requirements +pip install -r env/requirements-ode.txt +``` + +--- + +### Enable all optional functionalities + +Install all dependencies for all optional functionalities. Use this version if you would like to run `pytest` for the whole repository. + +With `conda`: + +```bash +conda env update -f env/environment-full.yml --prune +``` + +With `pip`: + +```bash +# Create and activate a virtual environment +python -m venv .venv +source .venv/bin/activate # On Windows use: .venv\Scripts\activate + +# Install requirements +pip install -r env/requirements-full.txt +``` + +--- + ## Files in this folder * `environment.yml` — full Conda environment specification (Python version, dependencies, pip fallback). diff --git a/env/environment.yml b/env/environment.yml index 4f579c4c..9f7a4cb0 100644 --- a/env/environment.yml +++ b/env/environment.yml @@ -1,25 +1,14 @@ -name: ionerdss_env +# Conda environment for developing ionerdss +# This file installs conda-based dependencies and then uses pip +# to install the local ionerdss package in editable mode. +name: ionerdss-dev channels: - conda-forge dependencies: - python=3.9 - - pyqt=6 - - numpy - - pandas - - matplotlib - - seaborn - - tqdm - - jupyter - - jupyterlab - - ipykernel - - scikit-learn - - pyqtgraph - - PyOpenGL - - scipy - - requests - - ipympl - - ipywidgets - - pytest - pip + - pyqt - pip: - - biopython \ No newline at end of file + # Install the local package in editable mode with typical dev dependencies + # This reads dependencies from pyproject.toml + - -e .[test,jupyter] diff --git a/env/requirements-dev.txt b/env/requirements-dev.txt new file mode 100644 index 00000000..58a94a84 --- /dev/null +++ b/env/requirements-dev.txt @@ -0,0 +1 @@ +-e .[test,jupyter] diff --git a/env/requirements.txt b/env/requirements.txt deleted file mode 100644 index d53e80fb..00000000 --- a/env/requirements.txt +++ /dev/null @@ -1,14 +0,0 @@ -numpy -pandas -matplotlib -seaborn -tqdm -pyqt6 -pyqtgraph -PyOpenGL -biopython -scipy -scikit-learn -requests -ipympl -pytest \ No newline at end of file diff --git a/examples/Hete-3mer-8ERQ.ipynb b/examples/Hete-3mer-8ERQ.ipynb index e0c01122..441718d5 100644 --- a/examples/Hete-3mer-8ERQ.ipynb +++ b/examples/Hete-3mer-8ERQ.ipynb @@ -87,7 +87,7 @@ "text": [ "Using original chain IDs as molecular types:\n", "{'H': 'A', 'L': 'B', 'A': 'C'}\n", - "Homologous chain groups identified:\n", + "Repeated chain groups identified:\n", "[['A'], ['H'], ['L']]\n", "Regularized coarse-grained structure saved to /Users/sikao/Documents/8erq_dir/regularized_coarse_grained_structure.cif.\n", "PyMOL script saved to /Users/sikao/Documents/8erq_dir/visualize_regularized_coarse_grained.pml.\n", @@ -96,7 +96,7 @@ } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/Hetero-30mer-4YD9.ipynb b/examples/Hetero-30mer-4YD9.ipynb index 81248a99..44f6d84e 100644 --- a/examples/Hetero-30mer-4YD9.ipynb +++ b/examples/Hetero-30mer-4YD9.ipynb @@ -86,8 +86,8 @@ "## 2. Set up and create a coarse-grained model\n", "\n", "- Initialize the pdb model given pdb id and save folder\n", - "- Set up the coarse grain model from pdb model. For all tunable parameters, see [`pdb_model.coarse_grain`](https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.coarse_grain)\n", - "- Identify, align, and regularize all molecular chains so that homologous chains share the same relative geometry. For all tunable parameters, see [`pdb_model.regularize_homologous_chains`](https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.regularize_homologous_chains)" + "- Set up the coarse grain model from pdb model. For all tunable parameters, see [`pdb_model.coarse_grain`](https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.coarse_grain)\n", + "- Identify, align, and regularize all molecular chains so that repeated chains share the same relative geometry. For all tunable parameters, see [`pdb_model.regularize_repeated_chains`](https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.regularize_repeated_chains)" ] }, { @@ -397,10 +397,10 @@ " Interface Coordinates: \n", " (134.15234375, -87.06200408935547, 127.80399322509766)\n", " Interface Energy: -1.30\n", - "Homologous chains identified using CIF header:\n", + "Repeated chains identified using CIF header:\n", "{'A': 'A', 'D': 'A', 'G': 'A', 'J': 'A', 'M': 'A', 'P': 'A', 'S': 'A', 'V': 'A', 'Y': 'A', 'b': 'A', 'B': 'B', 'E': 'B', 'H': 'B', 'K': 'B', 'N': 'B', 'Q': 'B', 'T': 'B', 'W': 'B', 'Z': 'B', 'c': 'B', 'C': 'C', 'F': 'C', 'I': 'C', 'L': 'C', 'O': 'C', 'R': 'C', 'U': 'C', 'X': 'C', 'a': 'C', 'd': 'C'}\n", "Chain mapping validation passed: 30 chains mapped\n", - "3 homologous chain groups identified:\n", + "3 repeated chain groups identified:\n", "[['A', 'D', 'G', 'J', 'M', 'P', 'S', 'V', 'Y', 'b'], ['B', 'E', 'H', 'K', 'N', 'Q', 'T', 'W', 'Z', 'c'], ['C', 'F', 'I', 'L', 'O', 'R', 'U', 'X', 'a', 'd']]\n", "Multiple matches found. Using closest match: A1 (A)\n", "Multiple conjugated matches found. Using closest match: A2 (A)\n", @@ -443,7 +443,7 @@ "# set up the coarse grain model from pdb model,\n", "# by detecting binding interfaces between chains based on atomic distances\n", "# for all tunable parameters see\n", - "# https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.coarse_grain\n", + "# https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.coarse_grain\n", "# set standard_output=True to see the determined interfaces\n", "pdb_model.coarse_grain(distance_cutoff=0.35, \n", " residue_cutoff=3,\n", @@ -451,12 +451,12 @@ " save_pymol_script=False, \n", " standard_output=True)\n", "\n", - "# identify, align, and regularize all molecular chains so that homologous chains share \n", + "# identify, align, and regularize all molecular chains so that repeated chains share \n", "# the same relative geometry. This method organizes molecule and interface objects \n", "# accordingly and sets up reaction objects.\n", "# for all tunable parameters see\n", - "# https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.regularize_homologous_chains\n", - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "# https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.regularize_repeated_chains\n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/Homo-180mer-8LQP.ipynb b/examples/Homo-180mer-8LQP.ipynb index 610d7ea0..4c5e8a5a 100644 --- a/examples/Homo-180mer-8LQP.ipynb +++ b/examples/Homo-180mer-8LQP.ipynb @@ -2102,9 +2102,9 @@ "output_type": "stream", "text": [ "Header parsing results appear invalid, falling back to sequence alignment...\n", - "Homologous chains identified using sequence alignment:\n", + "Repeated chains identified using sequence alignment:\n", "{'FZ': 'A', 'DC': 'A', 'ET': 'A', 'GG': 'A', 'EP': 'A', 'ER': 'A', 'EM': 'A', 'DL': 'A', 'EX': 'A', 'BT': 'A', 'DW': 'A', 'BC': 'A', 'DP': 'A', 'DV': 'A', 'FC': 'A', 'FO': 'A', 'AW': 'A', 'GW': 'A', 'CP': 'A', 'EY': 'A', 'GV': 'A', 'EO': 'A', 'AH': 'A', 'FX': 'A', 'CW': 'A', 'CV': 'A', 'FJ': 'A', 'BH': 'A', 'BM': 'A', 'GX': 'A', 'EL': 'A', 'DT': 'A', 'AK': 'A', 'CT': 'A', 'AJ': 'A', 'FA': 'A', 'FM': 'A', 'DG': 'A', 'FN': 'A', 'GY': 'A', 'CK': 'A', 'CA': 'A', 'GE': 'A', 'GB': 'A', 'AU': 'A', 'BU': 'A', 'DR': 'A', 'FD': 'A', 'DA': 'A', 'CH': 'A', 'FU': 'A', 'CG': 'A', 'CE': 'A', 'BF': 'A', 'BB': 'A', 'BO': 'A', 'GO': 'A', 'CN': 'A', 'FY': 'A', 'AF': 'A', 'DI': 'A', 'CL': 'A', 'GS': 'A', 'FT': 'A', 'BI': 'A', 'DY': 'A', 'CY': 'A', 'BJ': 'A', 'BE': 'A', 'BW': 'A', 'AP': 'A', 'FP': 'A', 'CJ': 'A', 'AD': 'A', 'GT': 'A', 'GD': 'A', 'BZ': 'A', 'BS': 'A', 'EE': 'A', 'CD': 'A', 'FL': 'A', 'EC': 'A', 'GP': 'A', 'AL': 'A', 'DF': 'A', 'EK': 'A', 'EG': 'A', 'EB': 'A', 'CZ': 'A', 'BN': 'A', 'DB': 'A', 'EQ': 'A', 'FV': 'A', 'AE': 'A', 'DN': 'A', 'BR': 'A', 'GL': 'A', 'AX': 'A', 'BD': 'A', 'EI': 'A', 'GN': 'A', 'AC': 'A', 'EA': 'A', 'ED': 'A', 'CB': 'A', 'CS': 'A', 'AT': 'A', 'BL': 'A', 'ES': 'A', 'GC': 'A', 'DU': 'A', 'FK': 'A', 'DM': 'A', 'CM': 'A', 'EW': 'A', 'BA': 'A', 'GK': 'A', 'FW': 'A', 'CI': 'A', 'AO': 'A', 'FQ': 'A', 'CO': 'A', 'DD': 'A', 'FH': 'A', 'AY': 'A', 'AZ': 'A', 'DX': 'A', 'BK': 'A', 'BY': 'A', 'FI': 'A', 'BP': 'A', 'CC': 'A', 'FE': 'A', 'GA': 'A', 'AR': 'A', 'CF': 'A', 'EU': 'A', 'AI': 'A', 'DS': 'A', 'AB': 'A', 'GJ': 'A', 'FB': 'A', 'EV': 'A', 'AQ': 'A', 'AN': 'A', 'DK': 'A', 'FG': 'A', 'DJ': 'A', 'EZ': 'A', 'GU': 'A', 'GM': 'A', 'GF': 'A', 'AV': 'A', 'DO': 'A', 'BQ': 'A', 'GQ': 'A', 'GR': 'A', 'DQ': 'A', 'EN': 'A', 'EH': 'A', 'DH': 'A', 'FF': 'A', 'EJ': 'A', 'CX': 'A', 'FR': 'A', 'BX': 'A', 'DZ': 'A', 'GI': 'A', 'AM': 'A', 'GH': 'A', 'EF': 'A', 'DE': 'A', 'BV': 'A', 'BG': 'A', 'CR': 'A', 'AG': 'A', 'CQ': 'A', 'CU': 'A', 'FS': 'A', 'AS': 'A'}\n", - "Homologous chain groups identified:\n", + "Repeated chain groups identified:\n", "[['AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CI', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CQ', 'CR', 'CS', 'CT', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'DG', 'DH', 'DI', 'DJ', 'DK', 'DL', 'DM', 'DN', 'DO', 'DP', 'DQ', 'DR', 'DS', 'DT', 'DU', 'DV', 'DW', 'DX', 'DY', 'DZ', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'EG', 'EH', 'EI', 'EJ', 'EK', 'EL', 'EM', 'EN', 'EO', 'EP', 'EQ', 'ER', 'ES', 'ET', 'EU', 'EV', 'EW', 'EX', 'EY', 'EZ', 'FA', 'FB', 'FC', 'FD', 'FE', 'FF', 'FG', 'FH', 'FI', 'FJ', 'FK', 'FL', 'FM', 'FN', 'FO', 'FP', 'FQ', 'FR', 'FS', 'FT', 'FU', 'FV', 'FW', 'FX', 'FY', 'FZ', 'GA', 'GB', 'GC', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GJ', 'GK', 'GL', 'GM', 'GN', 'GO', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GV', 'GW', 'GX', 'GY']]\n", "Regularized coarse-grained structure saved to /Users/sikao/Documents/5lqp_dir/regularized_coarse_grained_structure.cif.\n", "PyMOL script saved to /Users/sikao/Documents/5lqp_dir/visualize_regularized_coarse_grained.pml.\n", @@ -2113,7 +2113,7 @@ } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/Homo-18mer-5L93.ipynb b/examples/Homo-18mer-5L93.ipynb index 66140980..ff4465b8 100644 --- a/examples/Homo-18mer-5L93.ipynb +++ b/examples/Homo-18mer-5L93.ipynb @@ -1402,182 +1402,182 @@ " Residue Count: 12\n", " Residues: [211, 214, 215, 278, 286, 287, 289, 325, 327, 329, 358, 370]\n", "Reaction: A(A-2) + A-2(A) <-> A(A-2!1).A-2(A!1)\n", - " Reactants: [(A, ), (A-2, )]\n", + " Reactants: [(A, ), (A-2, )]\n", " Products: ['A(A-2!1).A-2(A!1)']\n", " Binding Angles: ['2.274196', '1.760567', '-3.068020', '1.998954', '0.410161']\n", " Binding Radius: 0.846013 nm\n", "Reaction: A(A-6) + A-6(A) <-> A(A-6!1).A-6(A!1)\n", - " Reactants: [(A, ), (A-6, )]\n", + " Reactants: [(A, ), (A-6, )]\n", " Products: ['A(A-6!1).A-6(A!1)']\n", " Binding Angles: ['1.760557', '2.274203', '1.998946', '-3.068032', '0.410168']\n", " Binding Radius: 0.846019 nm\n", "Reaction: A(B) + B(A) <-> A(B!1).B(A!1)\n", - " Reactants: [(A, ), (B, )]\n", + " Reactants: [(A, ), (B, )]\n", " Products: ['A(B!1).B(A!1)']\n", " Binding Angles: ['2.077216', '2.092690', '-1.904780', '-1.888629', '-1.784251']\n", " Binding Radius: 0.435002 nm\n", "Reaction: A(B-6) + B-6(A) <-> A(B-6!1).B-6(A!1)\n", - " Reactants: [(A, ), (B-6, )]\n", + " Reactants: [(A, ), (B-6, )]\n", " Products: ['A(B-6!1).B-6(A!1)']\n", " Binding Angles: ['2.459938', '2.677116', '-0.503700', '-0.115297', '0.468300']\n", " Binding Radius: 0.714424 nm\n", "Reaction: A(C) + C(A) <-> A(C!1).C(A!1)\n", - " Reactants: [(A, ), (C, )]\n", + " Reactants: [(A, ), (C, )]\n", " Products: ['A(C!1).C(A!1)']\n", " Binding Angles: ['2.676293', '2.481686', '0.308746', '-0.304456', '-0.071335']\n", " Binding Radius: 0.719166 nm\n", "Reaction: A-2(A-3) + A-3(A-2) <-> A-2(A-3!1).A-3(A-2!1)\n", - " Reactants: [(A-2, ), (A-3, )]\n", + " Reactants: [(A-2, ), (A-3, )]\n", " Products: ['A-2(A-3!1).A-3(A-2!1)']\n", " Binding Angles: ['2.274200', '1.760562', '-3.068028', '1.998950', '0.410167']\n", " Binding Radius: 0.845999 nm\n", "Reaction: A-2(B) + B(A-2) <-> A-2(B!1).B(A-2!1)\n", - " Reactants: [(A-2, ), (B, )]\n", + " Reactants: [(A-2, ), (B, )]\n", " Products: ['A-2(B!1).B(A-2!1)']\n", " Binding Angles: ['2.460042', '2.678960', '-0.498893', '-0.105900', '0.456495']\n", " Binding Radius: 0.713984 nm\n", "Reaction: A-2(B-2) + B-2(A-2) <-> A-2(B-2!1).B-2(A-2!1)\n", - " Reactants: [(A-2, ), (B-2, )]\n", + " Reactants: [(A-2, ), (B-2, )]\n", " Products: ['A-2(B-2!1).B-2(A-2!1)']\n", " Binding Angles: ['2.074000', '2.090382', '-1.903871', '-1.883644', '-1.787367']\n", " Binding Radius: 0.436092 nm\n", "Reaction: A-2(C-2) + C-2(A-2) <-> A-2(C-2!1).C-2(A-2!1)\n", - " Reactants: [(A-2, ), (C-2, )]\n", + " Reactants: [(A-2, ), (C-2, )]\n", " Products: ['A-2(C-2!1).C-2(A-2!1)']\n", " Binding Angles: ['2.690903', '2.443512', '-0.132292', '-0.507781', '0.485195']\n", " Binding Radius: 0.722390 nm\n", "Reaction: A-3(A-4) + A-4(A-3) <-> A-3(A-4!1).A-4(A-3!1)\n", - " Reactants: [(A-3, ), (A-4, )]\n", + " Reactants: [(A-3, ), (A-4, )]\n", " Products: ['A-3(A-4!1).A-4(A-3!1)']\n", " Binding Angles: ['2.274200', '1.760560', '-3.068029', '1.998952', '0.410165']\n", " Binding Radius: 0.846009 nm\n", "Reaction: A-3(B-2) + B-2(A-3) <-> A-3(B-2!1).B-2(A-3!1)\n", - " Reactants: [(A-3, ), (B-2, )]\n", + " Reactants: [(A-3, ), (B-2, )]\n", " Products: ['A-3(B-2!1).B-2(A-3!1)']\n", " Binding Angles: ['2.459941', '2.677125', '-0.503664', '-0.115239', '0.468228']\n", " Binding Radius: 0.714411 nm\n", "Reaction: A-3(B-3) + B-3(A-3) <-> A-3(B-3!1).B-3(A-3!1)\n", - " Reactants: [(A-3, ), (B-3, )]\n", + " Reactants: [(A-3, ), (B-3, )]\n", " Products: ['A-3(B-3!1).B-3(A-3!1)']\n", " Binding Angles: ['2.073993', '2.090382', '-1.903875', '-1.883649', '-1.787373']\n", " Binding Radius: 0.436096 nm\n", "Reaction: A-3(C-3) + C-3(A-3) <-> A-3(C-3!1).C-3(A-3!1)\n", - " Reactants: [(A-3, ), (C-3, )]\n", + " Reactants: [(A-3, ), (C-3, )]\n", " Products: ['A-3(C-3!1).C-3(A-3!1)']\n", " Binding Angles: ['2.690924', '2.443669', '-0.131699', '-0.507013', '0.484212']\n", " Binding Radius: 0.722335 nm\n", "Reaction: A-4(A-5) + A-5(A-4) <-> A-4(A-5!1).A-5(A-4!1)\n", - " Reactants: [(A-4, ), (A-5, )]\n", + " Reactants: [(A-4, ), (A-5, )]\n", " Products: ['A-4(A-5!1).A-5(A-4!1)']\n", " Binding Angles: ['2.274195', '1.760566', '-3.068024', '1.998918', '0.410167']\n", " Binding Radius: 0.846010 nm\n", "Reaction: A-4(B-3) + B-3(A-4) <-> A-4(B-3!1).B-3(A-4!1)\n", - " Reactants: [(A-4, ), (B-3, )]\n", + " Reactants: [(A-4, ), (B-3, )]\n", " Products: ['A-4(B-3!1).B-3(A-4!1)']\n", " Binding Angles: ['2.459944', '2.677116', '-0.503679', '-0.115266', '0.468255']\n", " Binding Radius: 0.714425 nm\n", "Reaction: A-4(B-4) + B-4(A-4) <-> A-4(B-4!1).B-4(A-4!1)\n", - " Reactants: [(A-4, ), (B-4, )]\n", + " Reactants: [(A-4, ), (B-4, )]\n", " Products: ['A-4(B-4!1).B-4(A-4!1)']\n", " Binding Angles: ['2.074009', '2.090380', '-1.903862', '-1.883657', '-1.787369']\n", " Binding Radius: 0.436101 nm\n", "Reaction: A-4(C-4) + C-4(A-4) <-> A-4(C-4!1).C-4(A-4!1)\n", - " Reactants: [(A-4, ), (C-4, )]\n", + " Reactants: [(A-4, ), (C-4, )]\n", " Products: ['A-4(C-4!1).C-4(A-4!1)']\n", " Binding Angles: ['2.690905', '2.443793', '-0.131395', '-0.506707', '0.483723']\n", " Binding Radius: 0.722303 nm\n", "Reaction: A-5(A-6) + A-6(A-5) <-> A-5(A-6!1).A-6(A-5!1)\n", - " Reactants: [(A-5, ), (A-6, )]\n", + " Reactants: [(A-5, ), (A-6, )]\n", " Products: ['A-5(A-6!1).A-6(A-5!1)']\n", " Binding Angles: ['2.274197', '1.760565', '-3.068033', '1.998951', '0.410166']\n", " Binding Radius: 0.846000 nm\n", "Reaction: A-5(B-4) + B-4(A-5) <-> A-5(B-4!1).B-4(A-5!1)\n", - " Reactants: [(A-5, ), (B-4, )]\n", + " Reactants: [(A-5, ), (B-4, )]\n", " Products: ['A-5(B-4!1).B-4(A-5!1)']\n", " Binding Angles: ['2.459943', '2.677125', '-0.503652', '-0.115223', '0.468208']\n", " Binding Radius: 0.714424 nm\n", "Reaction: A-5(B-5) + B-5(A-5) <-> A-5(B-5!1).B-5(A-5!1)\n", - " Reactants: [(A-5, ), (B-5, )]\n", + " Reactants: [(A-5, ), (B-5, )]\n", " Products: ['A-5(B-5!1).B-5(A-5!1)']\n", " Binding Angles: ['2.073987', '2.090369', '-1.903847', '-1.883616', '-1.787379']\n", " Binding Radius: 0.436099 nm\n", "Reaction: A-5(C-5) + C-5(A-5) <-> A-5(C-5!1).C-5(A-5!1)\n", - " Reactants: [(A-5, ), (C-5, )]\n", + " Reactants: [(A-5, ), (C-5, )]\n", " Products: ['A-5(C-5!1).C-5(A-5!1)']\n", " Binding Angles: ['2.690920', '2.443788', '-0.131347', '-0.506674', '0.483665']\n", " Binding Radius: 0.722291 nm\n", "Reaction: A-6(B-5) + B-5(A-6) <-> A-6(B-5!1).B-5(A-6!1)\n", - " Reactants: [(A-6, ), (B-5, )]\n", + " Reactants: [(A-6, ), (B-5, )]\n", " Products: ['A-6(B-5!1).B-5(A-6!1)']\n", " Binding Angles: ['2.459938', '2.677120', '-0.503686', '-0.115267', '0.468276']\n", " Binding Radius: 0.714416 nm\n", "Reaction: A-6(B-6) + B-6(A-6) <-> A-6(B-6!1).B-6(A-6!1)\n", - " Reactants: [(A-6, ), (B-6, )]\n", + " Reactants: [(A-6, ), (B-6, )]\n", " Products: ['A-6(B-6!1).B-6(A-6!1)']\n", " Binding Angles: ['2.073997', '2.090379', '-1.903871', '-1.883654', '-1.787372']\n", " Binding Radius: 0.436088 nm\n", "Reaction: A-6(C-6) + C-6(A-6) <-> A-6(C-6!1).C-6(A-6!1)\n", - " Reactants: [(A-6, ), (C-6, )]\n", + " Reactants: [(A-6, ), (C-6, )]\n", " Products: ['A-6(C-6!1).C-6(A-6!1)']\n", " Binding Angles: ['2.690917', '2.443786', '-0.131365', '-0.506687', '0.483679']\n", " Binding Radius: 0.722283 nm\n", "Reaction: B(C) + C(B) <-> B(C!1).C(B!1)\n", - " Reactants: [(B, ), (C, )]\n", + " Reactants: [(B, ), (C, )]\n", " Products: ['B(C!1).C(B!1)']\n", " Binding Angles: ['2.276147', '1.757254', '-3.079727', '1.997937', '0.415791']\n", " Binding Radius: 0.848591 nm\n", "Reaction: B(C-2) + C-2(B) <-> B(C-2!1).C-2(B!1)\n", - " Reactants: [(B, ), (C-2, )]\n", + " Reactants: [(B, ), (C-2, )]\n", " Products: ['B(C-2!1).C-2(B!1)']\n", " Binding Angles: ['2.448975', '2.681256', '-0.518279', '-0.142328', '0.503405']\n", " Binding Radius: 0.712222 nm\n", "Reaction: B-2(C-2) + C-2(B-2) <-> B-2(C-2!1).C-2(B-2!1)\n", - " Reactants: [(B-2, ), (C-2, )]\n", + " Reactants: [(B-2, ), (C-2, )]\n", " Products: ['B-2(C-2!1).C-2(B-2!1)']\n", " Binding Angles: ['2.275711', '1.758115', '-3.075673', '1.999808', '0.413230']\n", " Binding Radius: 0.848913 nm\n", "Reaction: B-2(C-3) + C-3(B-2) <-> B-2(C-3!1).C-3(B-2!1)\n", - " Reactants: [(B-2, ), (C-3, )]\n", + " Reactants: [(B-2, ), (C-3, )]\n", " Products: ['B-2(C-3!1).C-3(B-2!1)']\n", " Binding Angles: ['2.447335', '2.681652', '-0.522798', '-0.145868', '0.509772']\n", " Binding Radius: 0.712687 nm\n", "Reaction: B-3(C-3) + C-3(B-3) <-> B-3(C-3!1).C-3(B-3!1)\n", - " Reactants: [(B-3, ), (C-3, )]\n", + " Reactants: [(B-3, ), (C-3, )]\n", " Products: ['B-3(C-3!1).C-3(B-3!1)']\n", " Binding Angles: ['2.275548', '1.758138', '-3.076131', '1.999131', '0.413786']\n", " Binding Radius: 0.848885 nm\n", "Reaction: B-3(C-4) + C-4(B-3) <-> B-3(C-4!1).C-4(B-3!1)\n", - " Reactants: [(B-3, ), (C-4, )]\n", + " Reactants: [(B-3, ), (C-4, )]\n", " Products: ['B-3(C-4!1).C-4(B-3!1)']\n", " Binding Angles: ['2.447342', '2.681787', '-0.522483', '-0.145255', '0.508989']\n", " Binding Radius: 0.712660 nm\n", "Reaction: B-4(C-4) + C-4(B-4) <-> B-4(C-4!1).C-4(B-4!1)\n", - " Reactants: [(B-4, ), (C-4, )]\n", + " Reactants: [(B-4, ), (C-4, )]\n", " Products: ['B-4(C-4!1).C-4(B-4!1)']\n", " Binding Angles: ['2.275516', '1.758094', '-3.076277', '1.998929', '0.413946']\n", " Binding Radius: 0.848947 nm\n", "Reaction: B-4(C-5) + C-5(B-4) <-> B-4(C-5!1).C-5(B-4!1)\n", - " Reactants: [(B-4, ), (C-5, )]\n", + " Reactants: [(B-4, ), (C-5, )]\n", " Products: ['B-4(C-5!1).C-5(B-4!1)']\n", " Binding Angles: ['2.447353', '2.681786', '-0.522451', '-0.145201', '0.508916']\n", " Binding Radius: 0.712659 nm\n", "Reaction: B-5(C-5) + C-5(B-5) <-> B-5(C-5!1).C-5(B-5!1)\n", - " Reactants: [(B-5, ), (C-5, )]\n", + " Reactants: [(B-5, ), (C-5, )]\n", " Products: ['B-5(C-5!1).C-5(B-5!1)']\n", " Binding Angles: ['2.275518', '1.758092', '-3.076275', '1.998932', '0.413949']\n", " Binding Radius: 0.848937 nm\n", "Reaction: B-5(C-6) + C-6(B-5) <-> B-5(C-6!1).C-6(B-5!1)\n", - " Reactants: [(B-5, ), (C-6, )]\n", + " Reactants: [(B-5, ), (C-6, )]\n", " Products: ['B-5(C-6!1).C-6(B-5!1)']\n", " Binding Angles: ['2.447349', '2.681785', '-0.522472', '-0.145241', '0.508962']\n", " Binding Radius: 0.712661 nm\n", "Reaction: B-6(C) + C(B-6) <-> B-6(C!1).C(B-6!1)\n", - " Reactants: [(B-6, ), (C, )]\n", + " Reactants: [(B-6, ), (C, )]\n", " Products: ['B-6(C!1).C(B-6!1)']\n", " Binding Angles: ['2.447354', '2.681855', '-0.522304', '-0.144909', '0.508543']\n", " Binding Radius: 0.712645 nm\n", "Reaction: B-6(C-6) + C-6(B-6) <-> B-6(C-6!1).C-6(B-6!1)\n", - " Reactants: [(B-6, ), (C-6, )]\n", + " Reactants: [(B-6, ), (C-6, )]\n", " Products: ['B-6(C-6!1).C-6(B-6!1)']\n", " Binding Angles: ['2.275517', '1.758093', '-3.076269', '1.998937', '0.413950']\n", " Binding Radius: 0.848935 nm\n", @@ -1588,7 +1588,7 @@ } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=10.0, \n", " show_coarse_grained_structure=False, \n", @@ -2430,7 +2430,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.21" + "version": "3.9.23" } }, "nbformat": 4, diff --git a/examples/Homo-3mer-5VA4.ipynb b/examples/Homo-3mer-5VA4.ipynb index 7b106513..f44c243e 100644 --- a/examples/Homo-3mer-5VA4.ipynb +++ b/examples/Homo-3mer-5VA4.ipynb @@ -85,9 +85,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Homologous chains identified using sequence alignment:\n", + "Repeated chains identified using sequence alignment:\n", "{'A-2': 'A', 'A': 'A', 'A-3': 'A'}\n", - "Homologous chain groups identified:\n", + "Repeated chain groups identified:\n", "[['A', 'A-2', 'A-3']]\n", "Regularized coarse-grained structure saved to /Users/sikao/Documents/5va4_dir/regularized_coarse_grained_structure.cif.\n", "PyMOL script saved to /Users/sikao/Documents/5va4_dir/visualize_regularized_coarse_grained.pml.\n", @@ -96,7 +96,7 @@ } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/Homo-4mer-8Y7S.ipynb b/examples/Homo-4mer-8Y7S.ipynb index 449acf8e..91401abb 100644 --- a/examples/Homo-4mer-8Y7S.ipynb +++ b/examples/Homo-4mer-8Y7S.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -40,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -56,9 +56,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# (optional) show the thumbnail of the protein structure form RCSB PDB\n", "# Get the image file from RCSB and display the image\n", @@ -74,14 +87,70 @@ "\n", "- Initialize the pdb model given pdb id and save folder\n", "- Set up the coarse grain model from pdb model. For all tunable parameters, see [`pdb_model.coarse_grain`](https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.coarse_grain)\n", - "- Identify, align, and regularize all molecular chains so that homologous chains share the same relative geometry. For all tunable parameters, see [`pdb_model.regularize_homologous_chains`](https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.regularize_homologous_chains)" + "- Identify, align, and regularize all molecular chains so that repeated chains share the same relative geometry. For all tunable parameters, see [`pdb_model.regularize_repeated_chains`](https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.regularize_repeated_chains)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully downloaded assembly file: /Users/yueying/Documents/8y7s_dir/8y7s-assembly1.cif.gz\n", + "Binding interfaces detected:\n", + "Chain A:\n", + " Center of Mass (COM): (-34.339210510253906, 24.67936134338379, 53.31415557861328)\n", + " Interfaces: ['B', 'E', 'F']\n", + " Interface Coordinates: \n", + " (-41.347171783447266, 10.364765167236328, 67.06111145019531)\n", + " Interface Energy: -26.91\n", + " (-23.852462768554688, 22.23109245300293, 42.94672775268555)\n", + " Interface Energy: -24.41\n", + " (-29.409713745117188, -3.090428590774536, 42.99185562133789)\n", + " Interface Energy: 0.02\n", + "Chain B:\n", + " Center of Mass (COM): (-30.53473663330078, -12.089882850646973, 71.74038696289062)\n", + " Interfaces: ['A', 'E', 'F']\n", + " Interface Coordinates: \n", + " (-43.43027877807617, 4.43478536605835, 66.61664581298828)\n", + " Interface Energy: -26.91\n", + " (-9.94083309173584, 10.356165885925293, 67.6988296508789)\n", + " Interface Energy: -0.33\n", + " (-16.25308609008789, -15.30644702911377, 68.10027313232422)\n", + " Interface Energy: -32.38\n", + "Chain E:\n", + " Center of Mass (COM): (-6.33309268951416, 14.933263778686523, 30.68675994873047)\n", + " Interfaces: ['A', 'B', 'F']\n", + " Interface Coordinates: \n", + " (-17.488887786865234, 21.960044860839844, 38.76604080200195)\n", + " Interface Energy: -24.41\n", + " (-5.424167156219482, 14.917166709899902, 60.185665130615234)\n", + " Interface Energy: -0.33\n", + " (6.9928131103515625, 1.0576878786087036, 37.52962112426758)\n", + " Interface Energy: -23.97\n", + "Chain F:\n", + " Center of Mass (COM): (4.565953254699707, -13.369412422180176, 59.1125602722168)\n", + " Interfaces: ['A', 'B', 'E']\n", + " Interface Coordinates: \n", + " (-24.323625564575195, -10.179375648498535, 45.17625045776367)\n", + " Interface Energy: 0.02\n", + " (-9.588534355163574, -15.176178932189941, 65.54202270507812)\n", + " Interface Energy: -32.38\n", + " (9.926722526550293, -0.46388891339302063, 41.9386100769043)\n", + " Interface Energy: -23.97\n", + "Repeated chains identified using sequence alignment:\n", + "{'B': 'A', 'F': 'A', 'A': 'A', 'E': 'A'}\n", + "Repeated chain groups identified:\n", + "[['A', 'B', 'E', 'F']]\n", + "Regularized coarse-grained structure saved to /Users/yueying/Documents/8y7s_dir/regularized_coarse_grained_structure.cif.\n", + "PyMOL script saved to /Users/yueying/Documents/8y7s_dir/visualize_regularized_coarse_grained.pml.\n", + "Model saved successfully to /Users/yueying/Documents/8y7s_dir/8y7s_model.json\n" + ] + } + ], "source": [ "# initialize the pdb model given pdb id and save folder\n", "pdb_model = ion.PDBModel(pdb_id=pdb_id, save_dir=save_folder)\n", @@ -89,7 +158,7 @@ "# set up the coarse grain model from pdb model,\n", "# by detecting binding interfaces between chains based on atomic distances\n", "# for all tunable parameters see\n", - "# https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.coarse_grain\n", + "# https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.coarse_grain\n", "# set standard_output=True to see the determined interfaces\n", "pdb_model.coarse_grain(distance_cutoff=0.35, \n", " residue_cutoff=3,\n", @@ -97,12 +166,12 @@ " save_pymol_script=False, \n", " standard_output=True)\n", "\n", - "# identify, align, and regularize all molecular chains so that homologous chains share \n", + "# identify, align, and regularize all molecular chains so that repeated chains share \n", "# the same relative geometry. This method organizes molecule and interface objects \n", "# accordingly and sets up reaction objects.\n", "# for all tunable parameters see\n", - "# https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.regularize_homologous_chains\n", - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "# https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.regularize_repeated_chains\n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/Homo-5mer-8F8P.ipynb b/examples/Homo-5mer-8F8P.ipynb index 61da641f..7bf65cc5 100644 --- a/examples/Homo-5mer-8F8P.ipynb +++ b/examples/Homo-5mer-8F8P.ipynb @@ -109,9 +109,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Homologous chains identified using sequence alignment:\n", + "Repeated chains identified using sequence alignment:\n", "{'B': 'A', 'D': 'A', 'E': 'A', 'A': 'A', 'C': 'A'}\n", - "Homologous chain groups identified:\n", + "Repeated chain groups identified:\n", "[['A', 'B', 'C', 'D', 'E']]\n", "Regularized coarse-grained structure saved to /Users/sikao/Documents/8f8p_dir/regularized_coarse_grained_structure.cif.\n", "PyMOL script saved to /Users/sikao/Documents/8f8p_dir/visualize_regularized_coarse_grained.pml.\n", @@ -120,7 +120,7 @@ } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/Homo-720mer-6MX4.ipynb b/examples/Homo-720mer-6MX4.ipynb index 82f0ddc7..7d4b319f 100644 --- a/examples/Homo-720mer-6MX4.ipynb +++ b/examples/Homo-720mer-6MX4.ipynb @@ -60,13 +60,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Homologous chains identified using CIF header:\n", + "Repeated chains identified using CIF header:\n", "{'A-13': 'A', 'G-14': 'A', 'D-51': 'A', 'G-20': 'A', 'A-19': 'A', 'G-18': 'A', 'J-25': 'A', 'D-7': 'A', 'J-11': 'A', 'A-12': 'A', 'A': 'A', 'A-27': 'A', 'A-17': 'A', 'A-36': 'A', 'J-18': 'A', 'D-50': 'A', 'G-50': 'A', 'J-8': 'A', 'A-56': 'A', 'J-58': 'A', 'A-26': 'A', 'J-59': 'A', 'J-16': 'A', 'A-24': 'A', 'G-42': 'A', 'G-16': 'A', 'D-25': 'A', 'G-9': 'A', 'A-20': 'A', 'J-17': 'A', 'J-39': 'A', 'D-60': 'A', 'G-28': 'A', 'D-44': 'A', 'A-22': 'A', 'G-32': 'A', 'G-46': 'A', 'G-49': 'A', 'J-2': 'A', 'A-52': 'A', 'J-12': 'A', 'D-27': 'A', 'D-45': 'A', 'D-9': 'A', 'A-5': 'A', 'J-40': 'A', 'G-8': 'A', 'J-23': 'A', 'A-21': 'A', 'G-25': 'A', 'G-51': 'A', 'G-2': 'A', 'D-30': 'A', 'A-40': 'A', 'G-44': 'A', 'D-52': 'A', 'G-48': 'A', 'D-15': 'A', 'D-28': 'A', 'D-20': 'A', 'D-43': 'A', 'J-6': 'A', 'A-48': 'A', 'J-42': 'A', 'D-36': 'A', 'J-46': 'A', 'J-4': 'A', 'A-41': 'A', 'A-29': 'A', 'J-41': 'A', 'J-31': 'A', 'D-4': 'A', 'J-43': 'A', 'G-38': 'A', 'G-41': 'A', 'J-15': 'A', 'D-38': 'A', 'J-37': 'A', 'J-13': 'A', 'D-47': 'A', 'D-40': 'A', 'D-13': 'A', 'J-34': 'A', 'D': 'A', 'J-32': 'A', 'G-37': 'A', 'J-3': 'A', 'D-6': 'A', 'A-4': 'A', 'D-22': 'A', 'J-47': 'A', 'D-3': 'A', 'G-34': 'A', 'G-53': 'A', 'J-30': 'A', 'A-33': 'A', 'J-28': 'A', 'A-39': 'A', 'J-22': 'A', 'A-43': 'A', 'D-35': 'A', 'A-55': 'A', 'A-54': 'A', 'J-14': 'A', 'A-10': 'A', 'J-38': 'A', 'G-17': 'A', 'G-39': 'A', 'J-60': 'A', 'A-37': 'A', 'G-56': 'A', 'D-41': 'A', 'A-51': 'A', 'J-54': 'A', 'D-2': 'A', 'G-13': 'A', 'A-8': 'A', 'A-38': 'A', 'J-53': 'A', 'A-44': 'A', 'J-44': 'A', 'D-55': 'A', 'D-11': 'A', 'D-32': 'A', 'A-7': 'A', 'G-12': 'A', 'G-11': 'A', 'A-59': 'A', 'D-34': 'A', 'G-10': 'A', 'A-2': 'A', 'G-6': 'A', 'J-48': 'A', 'G-45': 'A', 'D-46': 'A', 'D-54': 'A', 'G-60': 'A', 'A-32': 'A', 'G-24': 'A', 'J-26': 'A', 'A-35': 'A', 'J-9': 'A', 'G-52': 'A', 'D-48': 'A', 'J-10': 'A', 'A-50': 'A', 'G-3': 'A', 'A-14': 'A', 'D-33': 'A', 'D-19': 'A', 'D-24': 'A', 'G-35': 'A', 'J-36': 'A', 'D-53': 'A', 'G-4': 'A', 'A-9': 'A', 'G-21': 'A', 'G-59': 'A', 'J-27': 'A', 'J-35': 'A', 'A-28': 'A', 'J-50': 'A', 'D-14': 'A', 'D-29': 'A', 'G-5': 'A', 'A-31': 'A', 'D-5': 'A', 'D-18': 'A', 'A-30': 'A', 'J-45': 'A', 'J-5': 'A', 'A-46': 'A', 'J-29': 'A', 'D-23': 'A', 'G-15': 'A', 'A-11': 'A', 'G-30': 'A', 'G-22': 'A', 'D-39': 'A', 'D-37': 'A', 'G-29': 'A', 'A-42': 'A', 'A-47': 'A', 'D-12': 'A', 'D-31': 'A', 'G-58': 'A', 'D-21': 'A', 'A-58': 'A', 'J': 'A', 'J-51': 'A', 'A-6': 'A', 'A-18': 'A', 'G-27': 'A', 'D-58': 'A', 'A-34': 'A', 'G-57': 'A', 'A-23': 'A', 'J-7': 'A', 'G-54': 'A', 'G-55': 'A', 'D-16': 'A', 'A-3': 'A', 'D-42': 'A', 'J-57': 'A', 'D-59': 'A', 'A-60': 'A', 'G-31': 'A', 'J-24': 'A', 'A-49': 'A', 'G-43': 'A', 'D-17': 'A', 'G-23': 'A', 'J-52': 'A', 'J-19': 'A', 'D-10': 'A', 'J-33': 'A', 'J-49': 'A', 'G-26': 'A', 'G-36': 'A', 'J-20': 'A', 'D-8': 'A', 'A-45': 'A', 'A-53': 'A', 'G-33': 'A', 'G-19': 'A', 'A-25': 'A', 'A-57': 'A', 'G': 'A', 'D-56': 'A', 'G-7': 'A', 'D-26': 'A', 'G-40': 'A', 'J-56': 'A', 'J-21': 'A', 'J-55': 'A', 'D-49': 'A', 'D-57': 'A', 'G-47': 'A', 'A-16': 'A', 'A-15': 'A', 'B-56': 'B', 'K-13': 'B', 'E-55': 'B', 'K-31': 'B', 'E-31': 'B', 'K-10': 'B', 'E-42': 'B', 'H-20': 'B', 'E-12': 'B', 'E-58': 'B', 'H-35': 'B', 'H-40': 'B', 'H-41': 'B', 'K-49': 'B', 'B-4': 'B', 'B-31': 'B', 'B-53': 'B', 'E-34': 'B', 'E-23': 'B', 'H-50': 'B', 'K-32': 'B', 'E': 'B', 'E-3': 'B', 'K-59': 'B', 'B-34': 'B', 'H-3': 'B', 'E-38': 'B', 'H-13': 'B', 'K-48': 'B', 'H': 'B', 'H-58': 'B', 'E-37': 'B', 'B-9': 'B', 'K-21': 'B', 'H-45': 'B', 'K-20': 'B', 'E-39': 'B', 'B-19': 'B', 'H-42': 'B', 'H-9': 'B', 'B-16': 'B', 'E-36': 'B', 'K-53': 'B', 'B-41': 'B', 'K-22': 'B', 'B-60': 'B', 'K-3': 'B', 'K-11': 'B', 'H-38': 'B', 'K-41': 'B', 'K-19': 'B', 'B-3': 'B', 'B-29': 'B', 'B-30': 'B', 'K-54': 'B', 'H-49': 'B', 'E-44': 'B', 'E-41': 'B', 'B-27': 'B', 'K-24': 'B', 'B-48': 'B', 'E-49': 'B', 'H-33': 'B', 'K-25': 'B', 'B-8': 'B', 'H-2': 'B', 'B-28': 'B', 'H-19': 'B', 'K-38': 'B', 'E-48': 'B', 'E-46': 'B', 'H-46': 'B', 'H-29': 'B', 'H-54': 'B', 'K-5': 'B', 'E-18': 'B', 'B-52': 'B', 'H-37': 'B', 'K-28': 'B', 'K-50': 'B', 'H-34': 'B', 'H-6': 'B', 'B-43': 'B', 'B-18': 'B', 'H-10': 'B', 'E-32': 'B', 'H-22': 'B', 'H-32': 'B', 'B-10': 'B', 'K-39': 'B', 'E-2': 'B', 'H-12': 'B', 'E-24': 'B', 'B-6': 'B', 'B-12': 'B', 'E-29': 'B', 'E-7': 'B', 'E-16': 'B', 'E-5': 'B', 'K-18': 'B', 'H-18': 'B', 'E-54': 'B', 'H-30': 'B', 'B-57': 'B', 'B-11': 'B', 'H-47': 'B', 'E-25': 'B', 'B-21': 'B', 'B-51': 'B', 'E-50': 'B', 'B-59': 'B', 'B-5': 'B', 'E-10': 'B', 'H-26': 'B', 'H-7': 'B', 'H-14': 'B', 'H-56': 'B', 'K-58': 'B', 'E-9': 'B', 'K-16': 'B', 'E-19': 'B', 'H-4': 'B', 'E-27': 'B', 'H-57': 'B', 'E-52': 'B', 'K-30': 'B', 'E-56': 'B', 'H-23': 'B', 'B-24': 'B', 'B-33': 'B', 'E-35': 'B', 'H-17': 'B', 'B-25': 'B', 'K-26': 'B', 'K-40': 'B', 'H-60': 'B', 'K-29': 'B', 'K-8': 'B', 'H-25': 'B', 'E-8': 'B', 'B-54': 'B', 'E-59': 'B', 'B': 'B', 'K-27': 'B', 'B-20': 'B', 'H-16': 'B', 'K-57': 'B', 'K-4': 'B', 'K-17': 'B', 'K-56': 'B', 'H-24': 'B', 'E-47': 'B', 'H-52': 'B', 'K-34': 'B', 'B-15': 'B', 'B-2': 'B', 'B-23': 'B', 'B-13': 'B', 'H-43': 'B', 'H-48': 'B', 'H-51': 'B', 'K-51': 'B', 'K-44': 'B', 'K': 'B', 'K-6': 'B', 'E-51': 'B', 'E-57': 'B', 'B-50': 'B', 'K-47': 'B', 'E-43': 'B', 'B-58': 'B', 'E-13': 'B', 'H-36': 'B', 'B-7': 'B', 'B-38': 'B', 'K-43': 'B', 'K-45': 'B', 'K-9': 'B', 'K-52': 'B', 'E-45': 'B', 'K-60': 'B', 'B-55': 'B', 'H-21': 'B', 'B-39': 'B', 'K-42': 'B', 'H-44': 'B', 'K-35': 'B', 'B-42': 'B', 'B-44': 'B', 'H-31': 'B', 'E-33': 'B', 'B-36': 'B', 'H-39': 'B', 'E-28': 'B', 'H-27': 'B', 'K-55': 'B', 'E-21': 'B', 'B-17': 'B', 'H-59': 'B', 'E-22': 'B', 'K-36': 'B', 'B-40': 'B', 'K-14': 'B', 'E-17': 'B', 'H-15': 'B', 'K-2': 'B', 'B-32': 'B', 'B-46': 'B', 'B-47': 'B', 'H-8': 'B', 'E-6': 'B', 'B-22': 'B', 'H-11': 'B', 'E-14': 'B', 'E-11': 'B', 'E-53': 'B', 'H-55': 'B', 'K-46': 'B', 'E-26': 'B', 'E-4': 'B', 'B-26': 'B', 'H-5': 'B', 'K-33': 'B', 'B-45': 'B', 'B-35': 'B', 'K-7': 'B', 'E-30': 'B', 'E-40': 'B', 'K-37': 'B', 'B-14': 'B', 'B-37': 'B', 'E-20': 'B', 'B-49': 'B', 'K-12': 'B', 'H-28': 'B', 'K-15': 'B', 'H-53': 'B', 'E-15': 'B', 'K-23': 'B', 'E-60': 'B', 'L-34': 'C', 'C-46': 'C', 'C-29': 'C', 'I-35': 'C', 'F-21': 'C', 'C-17': 'C', 'I-30': 'C', 'L-13': 'C', 'F-26': 'C', 'I-33': 'C', 'C-37': 'C', 'L-30': 'C', 'C-15': 'C', 'L-29': 'C', 'L-14': 'C', 'C-18': 'C', 'C-26': 'C', 'F-27': 'C', 'F-60': 'C', 'C-54': 'C', 'L-7': 'C', 'I-2': 'C', 'I-52': 'C', 'C-19': 'C', 'C-20': 'C', 'F-20': 'C', 'F-2': 'C', 'I-53': 'C', 'I-50': 'C', 'L-10': 'C', 'C-23': 'C', 'C-60': 'C', 'I-9': 'C', 'F-32': 'C', 'L-36': 'C', 'F-28': 'C', 'C-55': 'C', 'F-56': 'C', 'I-36': 'C', 'I-47': 'C', 'L-50': 'C', 'L-18': 'C', 'C-5': 'C', 'F-55': 'C', 'L-51': 'C', 'I-19': 'C', 'I-45': 'C', 'I-12': 'C', 'I-37': 'C', 'C-14': 'C', 'C-35': 'C', 'L-19': 'C', 'I-3': 'C', 'L-38': 'C', 'L-55': 'C', 'I-57': 'C', 'L-41': 'C', 'I-31': 'C', 'L-2': 'C', 'C-8': 'C', 'I-20': 'C', 'F-36': 'C', 'F-15': 'C', 'F-58': 'C', 'L-22': 'C', 'L-12': 'C', 'C-28': 'C', 'F-48': 'C', 'L-58': 'C', 'L-37': 'C', 'I-49': 'C', 'I-17': 'C', 'C-27': 'C', 'F-24': 'C', 'I-10': 'C', 'C-42': 'C', 'L-31': 'C', 'L-57': 'C', 'L-6': 'C', 'F-44': 'C', 'L-17': 'C', 'I-23': 'C', 'L-25': 'C', 'C-24': 'C', 'C-41': 'C', 'C-48': 'C', 'I-48': 'C', 'C-21': 'C', 'F-39': 'C', 'L-45': 'C', 'L-46': 'C', 'C-36': 'C', 'L-48': 'C', 'F-52': 'C', 'L-39': 'C', 'L-40': 'C', 'I-29': 'C', 'C-31': 'C', 'C-11': 'C', 'F-33': 'C', 'C-47': 'C', 'C-56': 'C', 'I-14': 'C', 'L-59': 'C', 'C-50': 'C', 'I-7': 'C', 'F': 'C', 'F-35': 'C', 'F-5': 'C', 'F-37': 'C', 'L-27': 'C', 'I-26': 'C', 'F-38': 'C', 'I-54': 'C', 'F-41': 'C', 'I-43': 'C', 'F-53': 'C', 'F-25': 'C', 'I-15': 'C', 'C-53': 'C', 'I-16': 'C', 'I-24': 'C', 'C-2': 'C', 'L-8': 'C', 'C-45': 'C', 'C-16': 'C', 'F-17': 'C', 'F-45': 'C', 'C-51': 'C', 'F-30': 'C', 'F-29': 'C', 'C-33': 'C', 'L-15': 'C', 'L-11': 'C', 'F-49': 'C', 'C-6': 'C', 'C': 'C', 'F-12': 'C', 'F-31': 'C', 'F-57': 'C', 'I-58': 'C', 'I-56': 'C', 'C-25': 'C', 'F-14': 'C', 'I-21': 'C', 'C-40': 'C', 'L-20': 'C', 'C-43': 'C', 'I-6': 'C', 'I-39': 'C', 'I-34': 'C', 'I-4': 'C', 'I-27': 'C', 'F-7': 'C', 'L-43': 'C', 'L-23': 'C', 'F-22': 'C', 'C-52': 'C', 'L-4': 'C', 'F-16': 'C', 'L-44': 'C', 'F-3': 'C', 'L-42': 'C', 'F-46': 'C', 'F-34': 'C', 'C-7': 'C', 'C-30': 'C', 'F-11': 'C', 'L-33': 'C', 'F-59': 'C', 'C-4': 'C', 'C-3': 'C', 'I-40': 'C', 'C-32': 'C', 'C-49': 'C', 'L-32': 'C', 'I-18': 'C', 'F-42': 'C', 'L-53': 'C', 'L-5': 'C', 'I-32': 'C', 'I-44': 'C', 'I-42': 'C', 'I-38': 'C', 'C-13': 'C', 'I-46': 'C', 'I-8': 'C', 'C-10': 'C', 'I-25': 'C', 'F-8': 'C', 'F-13': 'C', 'L-9': 'C', 'C-44': 'C', 'L-60': 'C', 'C-57': 'C', 'F-18': 'C', 'F-50': 'C', 'I-13': 'C', 'C-58': 'C', 'L-16': 'C', 'C-9': 'C', 'C-34': 'C', 'L-52': 'C', 'F-23': 'C', 'C-38': 'C', 'L-26': 'C', 'F-9': 'C', 'F-47': 'C', 'L-47': 'C', 'L-49': 'C', 'I': 'C', 'L-35': 'C', 'I-51': 'C', 'I-28': 'C', 'C-22': 'C', 'L-28': 'C', 'I-59': 'C', 'I-5': 'C', 'I-55': 'C', 'L-56': 'C', 'C-59': 'C', 'L-54': 'C', 'L-3': 'C', 'L': 'C', 'F-43': 'C', 'I-11': 'C', 'L-24': 'C', 'F-6': 'C', 'L-21': 'C', 'F-40': 'C', 'F-4': 'C', 'F-19': 'C', 'I-22': 'C', 'I-60': 'C', 'F-51': 'C', 'C-39': 'C', 'F-10': 'C', 'I-41': 'C', 'C-12': 'C', 'F-54': 'C', ';A': 'A', ';B': 'B', ';C': 'C'}\n", "Invalid chain identifier found: ';A' (must be letters or letters-number format)\n", "Header parsing results appear invalid, falling back to sequence alignment...\n", - "Homologous chains identified using sequence alignment:\n", + "Repeated chains identified using sequence alignment:\n", "{'A-13': 'A', 'G-14': 'A', 'D-51': 'A', 'G-20': 'A', 'A-19': 'A', 'G-18': 'A', 'J-25': 'A', 'D-7': 'A', 'J-11': 'A', 'A-12': 'A', 'A': 'A', 'A-27': 'A', 'A-17': 'A', 'A-36': 'A', 'J-18': 'A', 'D-50': 'A', 'G-50': 'A', 'J-8': 'A', 'A-56': 'A', 'J-58': 'A', 'A-26': 'A', 'J-59': 'A', 'J-16': 'A', 'A-24': 'A', 'G-42': 'A', 'G-16': 'A', 'D-25': 'A', 'G-9': 'A', 'A-20': 'A', 'J-17': 'A', 'J-39': 'A', 'D-60': 'A', 'G-28': 'A', 'D-44': 'A', 'A-22': 'A', 'G-32': 'A', 'G-46': 'A', 'G-49': 'A', 'J-2': 'A', 'A-52': 'A', 'J-12': 'A', 'D-27': 'A', 'D-45': 'A', 'D-9': 'A', 'A-5': 'A', 'J-40': 'A', 'G-8': 'A', 'J-23': 'A', 'A-21': 'A', 'G-25': 'A', 'G-51': 'A', 'G-2': 'A', 'D-30': 'A', 'A-40': 'A', 'G-44': 'A', 'D-52': 'A', 'G-48': 'A', 'D-15': 'A', 'D-28': 'A', 'D-20': 'A', 'D-43': 'A', 'J-6': 'A', 'A-48': 'A', 'J-42': 'A', 'D-36': 'A', 'J-46': 'A', 'J-4': 'A', 'A-41': 'A', 'A-29': 'A', 'J-41': 'A', 'J-31': 'A', 'D-4': 'A', 'J-43': 'A', 'G-38': 'A', 'G-41': 'A', 'J-15': 'A', 'D-38': 'A', 'J-37': 'A', 'J-13': 'A', 'D-47': 'A', 'D-40': 'A', 'D-13': 'A', 'J-34': 'A', 'D': 'A', 'J-32': 'A', 'G-37': 'A', 'J-3': 'A', 'D-6': 'A', 'A-4': 'A', 'D-22': 'A', 'J-47': 'A', 'D-3': 'A', 'G-34': 'A', 'G-53': 'A', 'J-30': 'A', 'A-33': 'A', 'J-28': 'A', 'A-39': 'A', 'J-22': 'A', 'A-43': 'A', 'D-35': 'A', 'A-55': 'A', 'A-54': 'A', 'J-14': 'A', 'A-10': 'A', 'J-38': 'A', 'G-17': 'A', 'G-39': 'A', 'J-60': 'A', 'A-37': 'A', 'G-56': 'A', 'D-41': 'A', 'A-51': 'A', 'J-54': 'A', 'D-2': 'A', 'G-13': 'A', 'A-8': 'A', 'A-38': 'A', 'J-53': 'A', 'A-44': 'A', 'J-44': 'A', 'D-55': 'A', 'D-11': 'A', 'D-32': 'A', 'A-7': 'A', 'G-12': 'A', 'G-11': 'A', 'A-59': 'A', 'D-34': 'A', 'G-10': 'A', 'A-2': 'A', 'G-6': 'A', 'J-48': 'A', 'G-45': 'A', 'D-46': 'A', 'D-54': 'A', 'G-60': 'A', 'A-32': 'A', 'G-24': 'A', 'J-26': 'A', 'A-35': 'A', 'J-9': 'A', 'G-52': 'A', 'D-48': 'A', 'J-10': 'A', 'A-50': 'A', 'G-3': 'A', 'A-14': 'A', 'D-33': 'A', 'D-19': 'A', 'D-24': 'A', 'G-35': 'A', 'J-36': 'A', 'D-53': 'A', 'G-4': 'A', 'A-9': 'A', 'G-21': 'A', 'G-59': 'A', 'J-27': 'A', 'J-35': 'A', 'A-28': 'A', 'J-50': 'A', 'D-14': 'A', 'D-29': 'A', 'G-5': 'A', 'A-31': 'A', 'D-5': 'A', 'D-18': 'A', 'A-30': 'A', 'J-45': 'A', 'J-5': 'A', 'A-46': 'A', 'J-29': 'A', 'D-23': 'A', 'G-15': 'A', 'A-11': 'A', 'G-30': 'A', 'G-22': 'A', 'D-39': 'A', 'D-37': 'A', 'G-29': 'A', 'A-42': 'A', 'A-47': 'A', 'D-12': 'A', 'D-31': 'A', 'G-58': 'A', 'D-21': 'A', 'A-58': 'A', 'J': 'A', 'J-51': 'A', 'A-6': 'A', 'A-18': 'A', 'G-27': 'A', 'D-58': 'A', 'A-34': 'A', 'G-57': 'A', 'A-23': 'A', 'J-7': 'A', 'G-54': 'A', 'G-55': 'A', 'D-16': 'A', 'A-3': 'A', 'D-42': 'A', 'J-57': 'A', 'D-59': 'A', 'A-60': 'A', 'G-31': 'A', 'J-24': 'A', 'A-49': 'A', 'G-43': 'A', 'D-17': 'A', 'G-23': 'A', 'J-52': 'A', 'J-19': 'A', 'D-10': 'A', 'J-33': 'A', 'J-49': 'A', 'G-26': 'A', 'G-36': 'A', 'J-20': 'A', 'D-8': 'A', 'A-45': 'A', 'A-53': 'A', 'G-33': 'A', 'G-19': 'A', 'A-25': 'A', 'A-57': 'A', 'G': 'A', 'D-56': 'A', 'G-7': 'A', 'D-26': 'A', 'G-40': 'A', 'J-56': 'A', 'J-21': 'A', 'J-55': 'A', 'D-49': 'A', 'D-57': 'A', 'G-47': 'A', 'A-16': 'A', 'A-15': 'A', 'B-56': 'B', 'K-13': 'B', 'E-55': 'B', 'K-31': 'B', 'E-31': 'B', 'K-10': 'B', 'E-42': 'B', 'H-20': 'B', 'E-12': 'B', 'E-58': 'B', 'H-35': 'B', 'H-40': 'B', 'H-41': 'B', 'K-49': 'B', 'B-4': 'B', 'B-31': 'B', 'B-53': 'B', 'E-34': 'B', 'E-23': 'B', 'H-50': 'B', 'K-32': 'B', 'E': 'B', 'E-3': 'B', 'K-59': 'B', 'B-34': 'B', 'H-3': 'B', 'E-38': 'B', 'H-13': 'B', 'K-48': 'B', 'H': 'B', 'H-58': 'B', 'E-37': 'B', 'B-9': 'B', 'K-21': 'B', 'H-45': 'B', 'K-20': 'B', 'E-39': 'B', 'B-19': 'B', 'H-42': 'B', 'H-9': 'B', 'B-16': 'B', 'E-36': 'B', 'K-53': 'B', 'B-41': 'B', 'K-22': 'B', 'B-60': 'B', 'K-3': 'B', 'K-11': 'B', 'H-38': 'B', 'K-41': 'B', 'K-19': 'B', 'B-3': 'B', 'B-29': 'B', 'B-30': 'B', 'K-54': 'B', 'H-49': 'B', 'E-44': 'B', 'E-41': 'B', 'B-27': 'B', 'K-24': 'B', 'B-48': 'B', 'E-49': 'B', 'H-33': 'B', 'K-25': 'B', 'B-8': 'B', 'H-2': 'B', 'B-28': 'B', 'H-19': 'B', 'K-38': 'B', 'E-48': 'B', 'E-46': 'B', 'H-46': 'B', 'H-29': 'B', 'H-54': 'B', 'K-5': 'B', 'E-18': 'B', 'B-52': 'B', 'H-37': 'B', 'K-28': 'B', 'K-50': 'B', 'H-34': 'B', 'H-6': 'B', 'B-43': 'B', 'B-18': 'B', 'H-10': 'B', 'E-32': 'B', 'H-22': 'B', 'H-32': 'B', 'B-10': 'B', 'K-39': 'B', 'E-2': 'B', 'H-12': 'B', 'E-24': 'B', 'B-6': 'B', 'B-12': 'B', 'E-29': 'B', 'E-7': 'B', 'E-16': 'B', 'E-5': 'B', 'K-18': 'B', 'H-18': 'B', 'E-54': 'B', 'H-30': 'B', 'B-57': 'B', 'B-11': 'B', 'H-47': 'B', 'E-25': 'B', 'B-21': 'B', 'B-51': 'B', 'E-50': 'B', 'B-59': 'B', 'B-5': 'B', 'E-10': 'B', 'H-26': 'B', 'H-7': 'B', 'H-14': 'B', 'H-56': 'B', 'K-58': 'B', 'E-9': 'B', 'K-16': 'B', 'E-19': 'B', 'H-4': 'B', 'E-27': 'B', 'H-57': 'B', 'E-52': 'B', 'K-30': 'B', 'E-56': 'B', 'H-23': 'B', 'B-24': 'B', 'B-33': 'B', 'E-35': 'B', 'H-17': 'B', 'B-25': 'B', 'K-26': 'B', 'K-40': 'B', 'H-60': 'B', 'K-29': 'B', 'K-8': 'B', 'H-25': 'B', 'E-8': 'B', 'B-54': 'B', 'E-59': 'B', 'B': 'B', 'K-27': 'B', 'B-20': 'B', 'H-16': 'B', 'K-57': 'B', 'K-4': 'B', 'K-17': 'B', 'K-56': 'B', 'H-24': 'B', 'E-47': 'B', 'H-52': 'B', 'K-34': 'B', 'B-15': 'B', 'B-2': 'B', 'B-23': 'B', 'B-13': 'B', 'H-43': 'B', 'H-48': 'B', 'H-51': 'B', 'K-51': 'B', 'K-44': 'B', 'K': 'B', 'K-6': 'B', 'E-51': 'B', 'E-57': 'B', 'B-50': 'B', 'K-47': 'B', 'E-43': 'B', 'B-58': 'B', 'E-13': 'B', 'H-36': 'B', 'B-7': 'B', 'B-38': 'B', 'K-43': 'B', 'K-45': 'B', 'K-9': 'B', 'K-52': 'B', 'E-45': 'B', 'K-60': 'B', 'B-55': 'B', 'H-21': 'B', 'B-39': 'B', 'K-42': 'B', 'H-44': 'B', 'K-35': 'B', 'B-42': 'B', 'B-44': 'B', 'H-31': 'B', 'E-33': 'B', 'B-36': 'B', 'H-39': 'B', 'E-28': 'B', 'H-27': 'B', 'K-55': 'B', 'E-21': 'B', 'B-17': 'B', 'H-59': 'B', 'E-22': 'B', 'K-36': 'B', 'B-40': 'B', 'K-14': 'B', 'E-17': 'B', 'H-15': 'B', 'K-2': 'B', 'B-32': 'B', 'B-46': 'B', 'B-47': 'B', 'H-8': 'B', 'E-6': 'B', 'B-22': 'B', 'H-11': 'B', 'E-14': 'B', 'E-11': 'B', 'E-53': 'B', 'H-55': 'B', 'K-46': 'B', 'E-26': 'B', 'E-4': 'B', 'B-26': 'B', 'H-5': 'B', 'K-33': 'B', 'B-45': 'B', 'B-35': 'B', 'K-7': 'B', 'E-30': 'B', 'E-40': 'B', 'K-37': 'B', 'B-14': 'B', 'B-37': 'B', 'E-20': 'B', 'B-49': 'B', 'K-12': 'B', 'H-28': 'B', 'K-15': 'B', 'H-53': 'B', 'E-15': 'B', 'K-23': 'B', 'E-60': 'B', 'L-34': 'C', 'C-46': 'C', 'C-29': 'C', 'I-35': 'C', 'F-21': 'C', 'C-17': 'C', 'I-30': 'C', 'L-13': 'C', 'F-26': 'C', 'I-33': 'C', 'C-37': 'C', 'L-30': 'C', 'C-15': 'C', 'L-29': 'C', 'L-14': 'C', 'C-18': 'C', 'C-26': 'C', 'F-27': 'C', 'F-60': 'C', 'C-54': 'C', 'L-7': 'C', 'I-2': 'C', 'I-52': 'C', 'C-19': 'C', 'C-20': 'C', 'F-20': 'C', 'F-2': 'C', 'I-53': 'C', 'I-50': 'C', 'L-10': 'C', 'C-23': 'C', 'C-60': 'C', 'I-9': 'C', 'F-32': 'C', 'L-36': 'C', 'F-28': 'C', 'C-55': 'C', 'F-56': 'C', 'I-36': 'C', 'I-47': 'C', 'L-50': 'C', 'L-18': 'C', 'C-5': 'C', 'F-55': 'C', 'L-51': 'C', 'I-19': 'C', 'I-45': 'C', 'I-12': 'C', 'I-37': 'C', 'C-14': 'C', 'C-35': 'C', 'L-19': 'C', 'I-3': 'C', 'L-38': 'C', 'L-55': 'C', 'I-57': 'C', 'L-41': 'C', 'I-31': 'C', 'L-2': 'C', 'C-8': 'C', 'I-20': 'C', 'F-36': 'C', 'F-15': 'C', 'F-58': 'C', 'L-22': 'C', 'L-12': 'C', 'C-28': 'C', 'F-48': 'C', 'L-58': 'C', 'L-37': 'C', 'I-49': 'C', 'I-17': 'C', 'C-27': 'C', 'F-24': 'C', 'I-10': 'C', 'C-42': 'C', 'L-31': 'C', 'L-57': 'C', 'L-6': 'C', 'F-44': 'C', 'L-17': 'C', 'I-23': 'C', 'L-25': 'C', 'C-24': 'C', 'C-41': 'C', 'C-48': 'C', 'I-48': 'C', 'C-21': 'C', 'F-39': 'C', 'L-45': 'C', 'L-46': 'C', 'C-36': 'C', 'L-48': 'C', 'F-52': 'C', 'L-39': 'C', 'L-40': 'C', 'I-29': 'C', 'C-31': 'C', 'C-11': 'C', 'F-33': 'C', 'C-47': 'C', 'C-56': 'C', 'I-14': 'C', 'L-59': 'C', 'C-50': 'C', 'I-7': 'C', 'F': 'C', 'F-35': 'C', 'F-5': 'C', 'F-37': 'C', 'L-27': 'C', 'I-26': 'C', 'F-38': 'C', 'I-54': 'C', 'F-41': 'C', 'I-43': 'C', 'F-53': 'C', 'F-25': 'C', 'I-15': 'C', 'C-53': 'C', 'I-16': 'C', 'I-24': 'C', 'C-2': 'C', 'L-8': 'C', 'C-45': 'C', 'C-16': 'C', 'F-17': 'C', 'F-45': 'C', 'C-51': 'C', 'F-30': 'C', 'F-29': 'C', 'C-33': 'C', 'L-15': 'C', 'L-11': 'C', 'F-49': 'C', 'C-6': 'C', 'C': 'C', 'F-12': 'C', 'F-31': 'C', 'F-57': 'C', 'I-58': 'C', 'I-56': 'C', 'C-25': 'C', 'F-14': 'C', 'I-21': 'C', 'C-40': 'C', 'L-20': 'C', 'C-43': 'C', 'I-6': 'C', 'I-39': 'C', 'I-34': 'C', 'I-4': 'C', 'I-27': 'C', 'F-7': 'C', 'L-43': 'C', 'L-23': 'C', 'F-22': 'C', 'C-52': 'C', 'L-4': 'C', 'F-16': 'C', 'L-44': 'C', 'F-3': 'C', 'L-42': 'C', 'F-46': 'C', 'F-34': 'C', 'C-7': 'C', 'C-30': 'C', 'F-11': 'C', 'L-33': 'C', 'F-59': 'C', 'C-4': 'C', 'C-3': 'C', 'I-40': 'C', 'C-32': 'C', 'C-49': 'C', 'L-32': 'C', 'I-18': 'C', 'F-42': 'C', 'L-53': 'C', 'L-5': 'C', 'I-32': 'C', 'I-44': 'C', 'I-42': 'C', 'I-38': 'C', 'C-13': 'C', 'I-46': 'C', 'I-8': 'C', 'C-10': 'C', 'I-25': 'C', 'F-8': 'C', 'F-13': 'C', 'L-9': 'C', 'C-44': 'C', 'L-60': 'C', 'C-57': 'C', 'F-18': 'C', 'F-50': 'C', 'I-13': 'C', 'C-58': 'C', 'L-16': 'C', 'C-9': 'C', 'C-34': 'C', 'L-52': 'C', 'F-23': 'C', 'C-38': 'C', 'L-26': 'C', 'F-9': 'C', 'F-47': 'C', 'L-47': 'C', 'L-49': 'C', 'I': 'C', 'L-35': 'C', 'I-51': 'C', 'I-28': 'C', 'C-22': 'C', 'L-28': 'C', 'I-59': 'C', 'I-5': 'C', 'I-55': 'C', 'L-56': 'C', 'C-59': 'C', 'L-54': 'C', 'L-3': 'C', 'L': 'C', 'F-43': 'C', 'I-11': 'C', 'L-24': 'C', 'F-6': 'C', 'L-21': 'C', 'F-40': 'C', 'F-4': 'C', 'F-19': 'C', 'I-22': 'C', 'I-60': 'C', 'F-51': 'C', 'C-39': 'C', 'F-10': 'C', 'I-41': 'C', 'C-12': 'C', 'F-54': 'C'}\n", - "3 homologous chain groups identified:\n", + "3 repeated chain groups identified:\n", "[['A', 'A-10', 'A-11', 'A-12', 'A-13', 'A-14', 'A-15', 'A-16', 'A-17', 'A-18', 'A-19', 'A-2', 'A-20', 'A-21', 'A-22', 'A-23', 'A-24', 'A-25', 'A-26', 'A-27', 'A-28', 'A-29', 'A-3', 'A-30', 'A-31', 'A-32', 'A-33', 'A-34', 'A-35', 'A-36', 'A-37', 'A-38', 'A-39', 'A-4', 'A-40', 'A-41', 'A-42', 'A-43', 'A-44', 'A-45', 'A-46', 'A-47', 'A-48', 'A-49', 'A-5', 'A-50', 'A-51', 'A-52', 'A-53', 'A-54', 'A-55', 'A-56', 'A-57', 'A-58', 'A-59', 'A-6', 'A-60', 'A-7', 'A-8', 'A-9', 'D', 'D-10', 'D-11', 'D-12', 'D-13', 'D-14', 'D-15', 'D-16', 'D-17', 'D-18', 'D-19', 'D-2', 'D-20', 'D-21', 'D-22', 'D-23', 'D-24', 'D-25', 'D-26', 'D-27', 'D-28', 'D-29', 'D-3', 'D-30', 'D-31', 'D-32', 'D-33', 'D-34', 'D-35', 'D-36', 'D-37', 'D-38', 'D-39', 'D-4', 'D-40', 'D-41', 'D-42', 'D-43', 'D-44', 'D-45', 'D-46', 'D-47', 'D-48', 'D-49', 'D-5', 'D-50', 'D-51', 'D-52', 'D-53', 'D-54', 'D-55', 'D-56', 'D-57', 'D-58', 'D-59', 'D-6', 'D-60', 'D-7', 'D-8', 'D-9', 'G', 'G-10', 'G-11', 'G-12', 'G-13', 'G-14', 'G-15', 'G-16', 'G-17', 'G-18', 'G-19', 'G-2', 'G-20', 'G-21', 'G-22', 'G-23', 'G-24', 'G-25', 'G-26', 'G-27', 'G-28', 'G-29', 'G-3', 'G-30', 'G-31', 'G-32', 'G-33', 'G-34', 'G-35', 'G-36', 'G-37', 'G-38', 'G-39', 'G-4', 'G-40', 'G-41', 'G-42', 'G-43', 'G-44', 'G-45', 'G-46', 'G-47', 'G-48', 'G-49', 'G-5', 'G-50', 'G-51', 'G-52', 'G-53', 'G-54', 'G-55', 'G-56', 'G-57', 'G-58', 'G-59', 'G-6', 'G-60', 'G-7', 'G-8', 'G-9', 'J', 'J-10', 'J-11', 'J-12', 'J-13', 'J-14', 'J-15', 'J-16', 'J-17', 'J-18', 'J-19', 'J-2', 'J-20', 'J-21', 'J-22', 'J-23', 'J-24', 'J-25', 'J-26', 'J-27', 'J-28', 'J-29', 'J-3', 'J-30', 'J-31', 'J-32', 'J-33', 'J-34', 'J-35', 'J-36', 'J-37', 'J-38', 'J-39', 'J-4', 'J-40', 'J-41', 'J-42', 'J-43', 'J-44', 'J-45', 'J-46', 'J-47', 'J-48', 'J-49', 'J-5', 'J-50', 'J-51', 'J-52', 'J-53', 'J-54', 'J-55', 'J-56', 'J-57', 'J-58', 'J-59', 'J-6', 'J-60', 'J-7', 'J-8', 'J-9'], ['B', 'B-10', 'B-11', 'B-12', 'B-13', 'B-14', 'B-15', 'B-16', 'B-17', 'B-18', 'B-19', 'B-2', 'B-20', 'B-21', 'B-22', 'B-23', 'B-24', 'B-25', 'B-26', 'B-27', 'B-28', 'B-29', 'B-3', 'B-30', 'B-31', 'B-32', 'B-33', 'B-34', 'B-35', 'B-36', 'B-37', 'B-38', 'B-39', 'B-4', 'B-40', 'B-41', 'B-42', 'B-43', 'B-44', 'B-45', 'B-46', 'B-47', 'B-48', 'B-49', 'B-5', 'B-50', 'B-51', 'B-52', 'B-53', 'B-54', 'B-55', 'B-56', 'B-57', 'B-58', 'B-59', 'B-6', 'B-60', 'B-7', 'B-8', 'B-9', 'E', 'E-10', 'E-11', 'E-12', 'E-13', 'E-14', 'E-15', 'E-16', 'E-17', 'E-18', 'E-19', 'E-2', 'E-20', 'E-21', 'E-22', 'E-23', 'E-24', 'E-25', 'E-26', 'E-27', 'E-28', 'E-29', 'E-3', 'E-30', 'E-31', 'E-32', 'E-33', 'E-34', 'E-35', 'E-36', 'E-37', 'E-38', 'E-39', 'E-4', 'E-40', 'E-41', 'E-42', 'E-43', 'E-44', 'E-45', 'E-46', 'E-47', 'E-48', 'E-49', 'E-5', 'E-50', 'E-51', 'E-52', 'E-53', 'E-54', 'E-55', 'E-56', 'E-57', 'E-58', 'E-59', 'E-6', 'E-60', 'E-7', 'E-8', 'E-9', 'H', 'H-10', 'H-11', 'H-12', 'H-13', 'H-14', 'H-15', 'H-16', 'H-17', 'H-18', 'H-19', 'H-2', 'H-20', 'H-21', 'H-22', 'H-23', 'H-24', 'H-25', 'H-26', 'H-27', 'H-28', 'H-29', 'H-3', 'H-30', 'H-31', 'H-32', 'H-33', 'H-34', 'H-35', 'H-36', 'H-37', 'H-38', 'H-39', 'H-4', 'H-40', 'H-41', 'H-42', 'H-43', 'H-44', 'H-45', 'H-46', 'H-47', 'H-48', 'H-49', 'H-5', 'H-50', 'H-51', 'H-52', 'H-53', 'H-54', 'H-55', 'H-56', 'H-57', 'H-58', 'H-59', 'H-6', 'H-60', 'H-7', 'H-8', 'H-9', 'K', 'K-10', 'K-11', 'K-12', 'K-13', 'K-14', 'K-15', 'K-16', 'K-17', 'K-18', 'K-19', 'K-2', 'K-20', 'K-21', 'K-22', 'K-23', 'K-24', 'K-25', 'K-26', 'K-27', 'K-28', 'K-29', 'K-3', 'K-30', 'K-31', 'K-32', 'K-33', 'K-34', 'K-35', 'K-36', 'K-37', 'K-38', 'K-39', 'K-4', 'K-40', 'K-41', 'K-42', 'K-43', 'K-44', 'K-45', 'K-46', 'K-47', 'K-48', 'K-49', 'K-5', 'K-50', 'K-51', 'K-52', 'K-53', 'K-54', 'K-55', 'K-56', 'K-57', 'K-58', 'K-59', 'K-6', 'K-60', 'K-7', 'K-8', 'K-9'], ['C', 'C-10', 'C-11', 'C-12', 'C-13', 'C-14', 'C-15', 'C-16', 'C-17', 'C-18', 'C-19', 'C-2', 'C-20', 'C-21', 'C-22', 'C-23', 'C-24', 'C-25', 'C-26', 'C-27', 'C-28', 'C-29', 'C-3', 'C-30', 'C-31', 'C-32', 'C-33', 'C-34', 'C-35', 'C-36', 'C-37', 'C-38', 'C-39', 'C-4', 'C-40', 'C-41', 'C-42', 'C-43', 'C-44', 'C-45', 'C-46', 'C-47', 'C-48', 'C-49', 'C-5', 'C-50', 'C-51', 'C-52', 'C-53', 'C-54', 'C-55', 'C-56', 'C-57', 'C-58', 'C-59', 'C-6', 'C-60', 'C-7', 'C-8', 'C-9', 'F', 'F-10', 'F-11', 'F-12', 'F-13', 'F-14', 'F-15', 'F-16', 'F-17', 'F-18', 'F-19', 'F-2', 'F-20', 'F-21', 'F-22', 'F-23', 'F-24', 'F-25', 'F-26', 'F-27', 'F-28', 'F-29', 'F-3', 'F-30', 'F-31', 'F-32', 'F-33', 'F-34', 'F-35', 'F-36', 'F-37', 'F-38', 'F-39', 'F-4', 'F-40', 'F-41', 'F-42', 'F-43', 'F-44', 'F-45', 'F-46', 'F-47', 'F-48', 'F-49', 'F-5', 'F-50', 'F-51', 'F-52', 'F-53', 'F-54', 'F-55', 'F-56', 'F-57', 'F-58', 'F-59', 'F-6', 'F-60', 'F-7', 'F-8', 'F-9', 'I', 'I-10', 'I-11', 'I-12', 'I-13', 'I-14', 'I-15', 'I-16', 'I-17', 'I-18', 'I-19', 'I-2', 'I-20', 'I-21', 'I-22', 'I-23', 'I-24', 'I-25', 'I-26', 'I-27', 'I-28', 'I-29', 'I-3', 'I-30', 'I-31', 'I-32', 'I-33', 'I-34', 'I-35', 'I-36', 'I-37', 'I-38', 'I-39', 'I-4', 'I-40', 'I-41', 'I-42', 'I-43', 'I-44', 'I-45', 'I-46', 'I-47', 'I-48', 'I-49', 'I-5', 'I-50', 'I-51', 'I-52', 'I-53', 'I-54', 'I-55', 'I-56', 'I-57', 'I-58', 'I-59', 'I-6', 'I-60', 'I-7', 'I-8', 'I-9', 'L', 'L-10', 'L-11', 'L-12', 'L-13', 'L-14', 'L-15', 'L-16', 'L-17', 'L-18', 'L-19', 'L-2', 'L-20', 'L-21', 'L-22', 'L-23', 'L-24', 'L-25', 'L-26', 'L-27', 'L-28', 'L-29', 'L-3', 'L-30', 'L-31', 'L-32', 'L-33', 'L-34', 'L-35', 'L-36', 'L-37', 'L-38', 'L-39', 'L-4', 'L-40', 'L-41', 'L-42', 'L-43', 'L-44', 'L-45', 'L-46', 'L-47', 'L-48', 'L-49', 'L-5', 'L-50', 'L-51', 'L-52', 'L-53', 'L-54', 'L-55', 'L-56', 'L-57', 'L-58', 'L-59', 'L-6', 'L-60', 'L-7', 'L-8', 'L-9']]\n", "Multiple matches found. Using closest match: C1 (C)\n", "Multiple conjugated matches found. Using closest match: C1 (C)\n", @@ -555,7 +555,7 @@ } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=30.0, \n", " show_coarse_grained_structure=False, \n", diff --git a/examples/book_chapter_example_system_1.ipynb b/examples/book_chapter_example_system_1.ipynb index 074b64da..a66ea282 100644 --- a/examples/book_chapter_example_system_1.ipynb +++ b/examples/book_chapter_example_system_1.ipynb @@ -1,8 +1,18 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "95751f50", + "metadata": {}, + "source": [ + "### Simulating a Homotetramer from a PDB Structure \n", + "#### Generating a NERDSS Model from a PDB Structure Using ioNERDSS\n", + "Current version doesn't support this yet. Refer to other notebooks." + ] + }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "ac16608b", "metadata": {}, "outputs": [ @@ -11,9 +21,10 @@ "output_type": "stream", "text": [ "Successfully downloaded assembly file: /Users/sikao/Documents/8y7s_dir/8y7s-assembly1.cif.gz\n", - "Homologous chains identified using sequence alignment:\n", - "{'B': 'A', 'A': 'A', 'F': 'A', 'E': 'A'}\n", - "Homologous chain groups identified:\n", + "Header parsing results appear invalid, falling back to sequence alignment...\n", + "Repeated chains identified using sequence alignment:\n", + "{'A': 'A', 'E': 'A', 'F': 'A', 'B': 'A'}\n", + "1 repeated chain groups identified:\n", "[['A', 'B', 'E', 'F']]\n", "Regularized coarse-grained structure saved to /Users/sikao/Documents/8y7s_dir/regularized_coarse_grained_structure.cif.\n", "PyMOL script saved to /Users/sikao/Documents/8y7s_dir/visualize_regularized_coarse_grained.pml.\n", @@ -24,14 +35,16 @@ "source": [ "import ionerdss as ion\n", "\n", - "pdb_id = '8y7s' # PDB ID for the structure of interest, or the full path to a PDB file\n", - "save_folder = '~/Documents/8y7s_dir' # the working directory\n", + "# 1. Initialize the Model: \n", + "pdb_id = '8y7s'\n", + "save_folder = '~/Documents/8y7s_dir'\n", "\n", - "# create the PDBModel object using the PDBModel class\n", - "pdb_model = ion.PDBModel(pdb_id=pdb_id, save_dir=save_folder)\n", + "pdb_model = ion.PDBModel(\n", + " pdb_id=pdb_id, \n", + " save_dir=save_folder\n", + " )\n", "\n", - "# coarse grain each chain of the PDB structure to a NERDSS molecule\n", - "# set standard_output=True to see the determined interfaces\n", + "# 2. Coarse-Grain the Structure:\n", "pdb_model.coarse_grain(\n", " distance_cutoff=0.35,\n", " residue_cutoff=3,\n", @@ -40,38 +53,39 @@ " standard_output=False\n", " )\n", "\n", - "# regularize homologous chains to the same NERDSS molecule type\n", - "pdb_model.regularize_homologous_chains(\n", + "# 3. Regularize repeated subunits:\n", + "pdb_model.regularize_repeated_subunits(\n", " dist_threshold_intra=3.5,\n", " dist_threshold_inter=3.5,\n", " angle_threshold=25.0,\n", " show_coarse_grained_structure=False,\n", " save_pymol_script=True,\n", " standard_output=False\n", - " )" + " )\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "d4f90ce0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 2, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKOElEQVR4nO3dB5hU5f3+/3v7svTeiyhKkaK0gBpjRLGH+DcaFCGoREms/IxCFIhYsBJUiAgRLF8REqMmMYoRULGgSFVEUFCE0PuyC9v3f32emVlmYRcXdmbOzOz7dV0np8yZM48LYe59akJxcXGxAAAA4lSi1wUAAAAIJ8IOAACIa4QdAAAQ1wg7AAAgrhF2AABAXCPsAACAuEbYAQAAcS1ZVVxRUZE2b96smjVrKiEhweviAACACrBpAvfv369mzZopMfHodTdVPuxY0GnZsqXXxQAAAMdh48aNatGixVHvqfJhx2p0Aj+sWrVqeV0cAABQAZmZma6yIvA9fjRVPuwEmq4s6BB2AACILRXpgkIHZQAAENcIOwAAIK4RdgAAQFyr8n12AADxq7CwUPn5+V4XA8cpNTX1R4eVVwRhBwAQl3OwbN26VXv37vW6KKgECzonnHCCCz2VQdgBAMSdQNBp1KiRMjIymDQ2hif93bJli1q1alWpP0PCDgAg7pquAkGnfv36XhcHldCwYUMXeAoKCpSSknLcz6GDMgAgrgT66FiNDmJboPnKAmxlEHYAAHGJpqvYlxCiP0PCDgAAiGtRFXYWLFigSy+91K1gamnujTfe+NH3vP/++zr99NOVlpamk046Sc8//3xEygoAAGJDVIWd7Oxsde3aVZMnT67Q/d9//70uvvhinXPOOVq+fLluv/123XDDDXrnnXfCXlYAABAboirsXHjhhXrggQf0y1/+skL3T5kyxY2/f+KJJ9ShQwfdfPPNuuKKK/TnP/9ZXsstKNT/9hzQln0HvS4KACBG/OY3v3EtGzfddNMRr/3+9793r9k9iOGwc6wWLlyofv36lbrWv39/d708ubm5bln44C0cVm7apzMfeU9XPftpWJ4PAIhPLVu21KxZs3Tw4KFflnNycjRz5kw330y8yg/jTNeJsT5pVOPGjUtds3MLMMF/SYKNHz9etWvXLtnsL1U4e5AXqzgszwcAVHw25QN5BZ5s9tnHyvqh2nfTa6+9VnLNji3onHbaaaV+eb/11lvdfELp6ek688wz9fnnn5fq02rfRfPmzVOPHj3cUPy+fftqzZo1pT7vmWee0YknnuiGeZ9yyil66aWXSr1uz3j22Wd1ySWXuGdYS4pVKqxdu1Y/+9nPVL16dffcdevWlXrfP//5T/ffYmVr27at7rvvPjdfTvBz7bMvu+wy94wHH3xQ4VLlJhUcNWqURowYUXJuwSgcgSfRH3aKikL+aADAMTiYX6iOY7zpy7lqXH9lpB77V+11112nGTNm6JprrnHn06dP19ChQ12ACbjrrrv0j3/8Qy+88IJat26tRx991LVuWAipV69eyX333HOP6+5hE/RZ85g9++OPP3avvf7667rttts0ceJE11Ly5ptvus9p0aKF6w8bcP/992vChAluu/vuu3X11Ve7AGPfqRbC7JnWleTtt99293/44YcaPHiwnnrqKZ111lkuCP32t791r40dO7bkuX/605/08MMPu89PTg5fJInpmp0mTZpo27Ztpa7Zea1atVStWrUy32Ojtuz14C0cEv1TAxxPqgcAVG2DBg3SRx99pB9++MFtFk7sWvCAHqsVeeyxx1x/144dO2ratGnuu++5554r9awHH3xQZ599trtn5MiR+uSTT1yzmHn88cddH6Df/e53Ovnkk11lwOWXX+6uB7MAdOWVV7p7LOysX7/eBTELV1bTY4EpOIhZLY591pAhQ1woOu+881xgshqiYBaa7Nl2Tzib6GK6ZqdPnz566623Sl1799133XWvldTskHUAwFPVUpJcDYtXn308rBbGRhvbdCr2S7MdN2jQoOR1qymxPi5nnHFGyTVbTqFXr176+uuvSz2rS5cuJcdNmzZ1++3bt7twYfcGalwC7JlPPvlkuc8IdB/p3LlzqWsWoKy1xCoRVqxY4QJacNOUzYJs9xw4cKBkdmtrXouEqAo7WVlZrvoteGi5DSm36jj7Q7Hqsk2bNunFF190r1t13KRJk1xVnlWhzZ8/X3/729/0n//8R9GCPjsA4C3rG3I8TUleCzQNmYpOyVKWlKA1pQL9SW2Rzco+42jPte9zq92xWqLDWR+eAOurEwlR1Yy1ePFi1/kq0AHLqtPseMyYMe7cVj7dsGFDyf027NyCjdXm2Pw81ib517/+1VWreY2aHQBAZVxwwQXKy8tzNTiHf68FOhQH+t4Yu886KFtz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mlsvKzc3113ft2+fHnrooVCWMeYx9BwAgBgMOw888ICmTJmiadOmlRqJdcYZZ2jp0qWhKl9c1ezQZwcAgBgKO2vWrNFPf/rTI67Xrl1be/furWy54koaNTsAAMRe2GnSpInWrl17xHXrr9O2bdtKFWry5Mlq06aN0tPT1bt3by1atKhC75s1a5Yb9j5gwABF43IR1OwAABBDYWfYsGG67bbb9Nlnn7mAsXnzZr388su68847NXz48OMu0OzZszVixAiNHTvWNYd17drV9Q2yldWPZv369e6zzzrrLEVrn51canYAAIidsDNy5EhdffXVOvfcc5WVleWatGwJiRtvvFG33HLLcRfIZl62IDV06FB17NjR9QvKyMjQ9OnTy31PYWGhrrnmGrcKe2VrlcKBPjsAAMRg2LHanHvuuUe7d+92Myh/+umn2rFjh+6//35VZnHRJUuWqF+/focKmJjozhcuXFju+8aNG6dGjRrp+uuv/9HPsFFjmZmZpbZwYzQWAAAxOINyQGpqqquBCYWdO3e6WprGjRuXum7nq1evLvM91kfoueee0/Llyyv0GePHj3c1QF5MKkjNDgAAMVSzY6GhrKYlu/bII48oEvbv369rr73WDX9v0KBBhd4zatQoNxdQYNu4cWPYy0mfHQAAYrBm59lnn9XMmTOPuN6pUyf9+te/1t13333Mz7TAkpSUpG3btpW6buc2+utw69atcx2TL7300pJrRUW+QJGcnOyGx5944oml3pOWlua2SEpPSXL7nPzCiH4uAACoRM3O1q1b1bRp0yOuN2zYUFu2bDnuJrHu3btr3rx5pcKLnduSFIdr3769vvzyS9eEFdguu+wynXPOOe64ZcuWigbVSsIONTsAAMRMzY4FiY8//lgnnHBCqet2rVmzZsddIBt2PmTIEPXo0UO9evXSxIkTlZ2d7UZnmcGDB6t58+auGc3m4Tn11FNLvb9OnTpuf/h1LwVqdg5SswMAQOyEHRsefvvttys/P18///nP3TWrgbnrrrv0//7f/zvuAl111VVuVNeYMWNc7VG3bt00Z86ckk7LGzZscCO0Ykm1VF95acYCACDyEoqLi49rKW57m82189RTT7kh43Zui4JaX53Ro0e7oemxwIae2xIX1lm5Vq1aYfmMOSu36Kb/W6oerevq1eF9w/IZAABUJZnH8P193DU7FmZs1JUFm6+//toFnXbt2kW8828soBkLAIAYnWfHmq1ss6UcAqOgAo4243FVE+igTNgBACCGwo5NzGczF1tHYhuVFSvNVl6oluofjZVH2AEAIGbCjq1Z9fzzz7tJ/VDBeXaYVBAAgIg77mFN1im5b1862x5TMxY1OwAAxE7YsRXOy5pBGUfvoHycg98AAECkm7FycnI0depUzZ07V126dFFKSkqp1ydMmHC8j47bPjuB9bEC4QcAAERx2Pniiy/chH9m5cqVpV6js3Jp6f6FQANNWYQdAABiIOy89957oS1JHEtOSlRqUqLyCotcU1ZdrwsEAEAVElvrLsSwtBSWjAAAIOYmFdy7d6+ee+45N4Oy6dixo66//no3fTOOHJG1P6eAiQUBAIiVmp3FixfrxBNP1J///Gft3r3bbXZs15YuXRraUsbTxIKEHQAAYqNm54477tBll12madOmKTnZ95iCggI3JN1WQ1+wYEEoyxlHc+0wsSAAADERdqxmJzjouIclJ+uuu+5yS0igNBYDBQAgxpqxbDn1DRs2HHF948aNqlmzZmXLFXdYDBQAgBgLO1dddZXrjDx79mwXcGybNWuWa8YaOHBgaEsZB9IZjQUAQGw1Yz3++ONu8sDBgwe7vjrGZlEePny4Hn744VCWMS7QQRkAgBgLO6mpqXryySc1fvx4rVu3zl2zkVgZGRmhLF/c9dk5wGKgAABEdzPW/Pnz3Xw6mZmZ7tzCTefOnd2Wn5+vTp066cMPPwxHWWNa9VRfriTsAAAQ5WFn4sSJGjZsmOugfDibTPDGG29kEdAyVE/zhZ2sHF+THwAAiNKws2LFCl1wwQXlvn7++edryZIllS1X3KmZ7g87ufleFwUAgCrlmMPOtm3bXEfk8thcOzt27KhsueJODX/NTnYuzVgAAER12GnevLlWrlxZ7utffPGFmjZtWtlyxW0z1v5cmrEAAIjqsHPRRRdp9OjRysnJOeK1gwcPauzYsbrkkktCVb64q9nJyqEZCwCAqB56fu+99+q1117TySefrJtvvlmnnHKKu7569WpNnjxZhYWFuueee8JR1rjos0MzFgAAUR52GjdurE8++cRNHjhq1CgVFxe76zbBYP/+/V3gsXtQTs0OzVgAAET/pIKtW7fWW2+9pT179mjt2rUu8LRr105169YNfQnjrc8OzVgAAMTGDMrGwk3Pnj1DV5qq0IyVV+jCodWEAQCAKF4IFMfXjFVYVKyc/CKviwMAQJVB2ImQjNQkBSpz9jOxIAAAEUPYiRBrtqrhXx+LEVkAAEQOYSeCagSWjGB9LAAAIoaw40G/HZqxAACIHMJOBLHyOQAAkUfY8WTlc8IOAACRQtiJoFrVfKvFZx6kGQsAgEgh7ERQHX/Y2XOAsAMAQKQQdiKoToYv7OyjZgcAgIgh7ERQ3YxUt997IM/rogAAUGUQdiKoNs1YAABEHGEnguoEanZoxgIAIGIIOxFUN9Bnh2YsAAAihrDjQQdlmrEAAIgcwk4E1a7ma8bKzMlXYVGx18UBAKBKIOx4ULNTXCztz6F2BwCASPCtX4CISElKdIuB2nIR1pQV6LAMAEDUKyqSim0r9O+LpKKg4yPOCw9dS06TarfwrOiEHQ+Gn1vY8c21U93r4gBA/H9BFxUcthVW7Ny+rN2Xd2Af+DKvzHV/CKjU9RB+XvExhJbKaNlbuv6/8gphJ8LqVk/Rpr0HtYcRWQC8Zm3q9qVemC8V5pV9XOQ/LyzwH/u3so5LXSsrRFQkaBxnMAk+L/l8W3SZ/pGRlSAlJEqJSb59gn+fUk1eIuxEWMMaaW6/cz9hB4j7IGEhoSC39P6Yr+VKBXnlXLPj4KBR4A8qZRwfEVr8gaaqsi/hxOSgLemwY/uSPnyfeAzX/V/0Fbp+LM8NUzkSggNK0HZ4aHHvC2xlvS9B0YiwE2EN/GFnR1au10UBqkjgyJcKDvpCQr5/b+f5OVKBfwu+XnJf4LWco1wP3nJLBxXbYpF9gSWlSkkpvi9+29t5WceJdp5SznFwkCgrUFTkvKL3HMczovRLGeFB2ImwhjX9YWc/YQdwrKYhP1vKOyDl+zd3/CPX8rL9rx08dFzqHgs02ZXvaxAqLiCkScmpQfvUSlxLOxRKSoWTso794cMFlTKOE4NCjP3mDsQZwk6EEXYQ86xjo4WI3P1SbpaUtz/oOMt/vD/ouJx7AgElkjUgydV8o0JS/Hs7T0mXkv1bedfda+mHvT/4um0WPmxLOXQcHEoIEYBnCDsRRtiB56z5JWffYdte/xZ07WDQeXB4sX04uE6M1X1BIjXDd+z2GVKqXc/wv+Y/Pvye8q6VBJM0mi6AKoqw41EHZfrsoNKsL8qB3dLB3dKBXWUc7zl0HAgyFmCsU2uowklaTSm1ppRWw39se9tqBR0HrtfynQeu2z44yBBGAIQJYSfCqNlBuWx0TfYOKXu7lLVDytp26NhCiwsy/jBjQSY3sxIfliCl15LS60jptYO2oPNq/mMLKXavCyk1D4UXqzEhnACIAYQdj8KOTSx4IK9AGan8EcT9aCALJZlbpMxN0v4tvhBjAcYFGf9mxxZgjlmCVK2ulFFPqlZPyqjvOy45D9oHhxqrjaEPCYAqIiq/aSdPnqzHHntMW7duVdeuXfX000+rV69eZd47bdo0vfjii1q5cqU77969ux566KFy7/eaLReRnpKonPwiV7vTun5U/hGgoh11rZZl/2Yp07ZN/lCz+VCwseNj6eNiw35rNJKqN/TvG0k1GkoZDfwhpv6h8GLHFlxsGC0AoFxR9007e/ZsjRgxQlOmTFHv3r01ceJE9e/fX2vWrFGjRo2OuP/999/XwIED1bdvX6Wnp+uRRx7R+eefr6+++krNmzdXtElISFDjWun6YdcBbd2Xo9b1WTIiqmtlsndKezdIe9dLe36Q9v7g32+Q9m2s+Egiax6q1Uyq2VSq0dgXZErCTNCx1dJQ4wIAIZVQXGz/okcPCzg9e/bUpEmT3HlRUZFatmypW265RSNHjvzR9xcWFqpu3bru/YMHD/7R+zMzM1W7dm3t27dPtWrVUiQMnPqpFn63SxOu7KrLT/duYTT4a2esBmbXWv+2Ttq97lCgsSHWR5XgCyouyDTz7YM3d62prxMuACBkjuX7O6pqdvLy8rRkyRKNGjWq5FpiYqL69eunhQsXVugZBw4cUH5+vurVq1fm67m5uW4L/mFFWvO6vjVCNu05GPHPrrJyMqUdq4NCjW3f+YKNzfVSrgRfaKnTSqrTWqrb+tC+dkvfazavCgAgakVV2Nm5c6ermWncuHGp63a+evXqCj3j7rvvVrNmzVxAKsv48eN13333yUvN6/jDzl7CTljmkNn5jbT9a2n7V/79174mp/LYrLF120j1T/Jt9dr6zm2r3cI3JBoAELOiKuxU1sMPP6xZs2a5fjzWf6csVmtkfYKCa3asmcyTmh3CTuVk75K2rpC2+LdtX/maoYoLy77fmpQatDsUatx2oq+mxqbMBwDEpaj6F75BgwZKSkrStm3bSl238yZNmhz1vY8//rgLO3PnzlWXLl3KvS8tLc1tXmoRqNmhGavi9m+Ttiw/FGxsK6+2xjoDN+4kNeooNepwaG/zxgAAqpyoCjupqalu6Pi8efM0YMCAkg7Kdn7zzTeX+75HH31UDz74oN555x316NFD0S64Zsf6h9sILRw2M/C2ldLGRb7tf4t8nYXLUu9EqWlX39aksy/k2GgnfqYAgGgMO8aamIYMGeJCi82VY0PPs7OzNXToUPe6jbCyIeXW98bYUPMxY8Zo5syZatOmjZubx9SoUcNt0ahp7Wruuzi3wDfXTqNaZTe5VanOwxs+lTZ8Im38XNq0RCo4eOTSBA1Olpp2Kx1ubGZfAABiKexcddVV2rFjhwswFly6deumOXPmlHRa3rBhgxuhFfDMM8+4UVxXXHFFqeeMHTtWf/rTnxSNUpMT1aJuNW3cfVDf7cyuemHHVr7e+Kn0/YfS+g+lzcuP7Gdjk+W16Cm17O3bN+9OsAEAxMc8O5HmxTw7Zsj0Rfrgmx166JeddXXvVor7uWy2fiGtfVf6dq60abFUVFD6Hhv51OZMf7jp5avFYXI9AEC8zbNTlbRtWN2Fne92HMNSArHEVtf+7j3p23eltXN960EFq91KOuEsqY1tZ0p1IjsiDgBQdRB2PNK2oa8/kTVjxQ1bF2r1m9Kqf0o/fFK6aSqlutT2Z1K7ftKJP/fV5AAAEAGEHY+c2NC3fEDM1+zs+5+06l++gLPxM1tQ6tBrDU6R2p3n21r1YXI+AIAnCDseOclfs7Nh9wHl5BcqPSUptpqoVr0hLX/F19E4mPW36fgLqcMl1N4AAKICYccjDWumqV71VO3OztM32/arS4son/CusEBaN19a8Yq0+j9SYWB9sQSpdV9fwGl/iVQ7+laaBwBUbYQdj9hEgh2a1tTHa3fp6y2Z0Rt29m+VljwvLZ4hZfnmMHIadpC6DZQ6X+lb1RsAgChF2PFQx6a1XNhZtTnyK68flc1GYP1vFk319cUJDBPPqC91/pXUdaBvUj9mKQYAxADCjoc6NvPNC7BqS5SEnaJCX1+cj5/0rT0V0PInUu/fSu0vlZJTvSwhAADHjLDjoU7Narv9V5szVVBYpOQkjybRK8j19cWxkLP7O9+15HRfLU6vYb5aHAAAYhRhx+MRWTXTk7U/p0Bfb9mvzi184SeinY6XvSR98Ii0f4vvWrW6Uu+bpF6/lTLqRbY8AACEAWHHQ4mJCereuq7eX7NDi3/YHbmwY31yrC/O/PulXWt912o2k/reLJ0+REqLzgVUAQA4HoQdj/UoCTt7NPSME8L/gTaz8Tv3SJuXHup0/NM/SD2uY9I/AEBcIux4rHtrX1PRkvV7ZGuy2pD0sNi/TXp3tPTF7EPLN1hNTp+bWU0cABDXCDse69ayjpITE7Q1M0f/23NQLetlhH6E1ed/leY/IOXaqK8EqfsQ6Zx7pBqNQvtZAABEIY+G/yCgWmpSSV+dj9fuDO3Dd62TZlwovX2XL+g0O00aNk+69EmCDgCgyiDsRIFzTvEFj/mrt4fmgUVF0qdTpGfO8E0OmFpTuvgJ6YZ5UvPuofkMAABiBGEnCvy8vS/sfLR2p3ILCiu/vMNLv5Dm3C0VHJTa/kz63UKp5w1SYgwtNgoAQIgQdqJAp2a11Khmmg7kFWrR97uP/0HfL5CmnOXbp2T4anOufUOq0zKUxQUAIKYQdqKAjcAKNGXNXbXt+ObNWfCY9OIvpOztUqNO0o0LfLU5rF8FAKjiCDtR4oLOTdz+zS+2KL+wqOJvzM+R/nG9b7RVcZHUbZB0w1ypQbvwFRYAgBhC2IkSZ53UQA1rpmlXdp6bZLBCsnZIL1wqrfyHlJgsXfqUNGCylBri4esAAMQwwk6UsEVAB3Rr5o7/seR/FRtW/tdzpf8tktJrS9e+7ps/BwAAlELYiSKXn97C7ed+vU2b9x4s/8btX/vmz9n7g1T3BN+Q8hN+GrmCAgAQQwg7UaRD01r6Sdt6Kigq1nMffV/2TVtWSDMukrK2+ToiX/9f+ucAAHAUhJ0oc9PZJ7r9K4s2aO+BvNIvblslvXCZdHC3bzbk37zJTMgAAPwIwk6UOfvkhq6Gx+bcmTR/7aEX9qyXXvqllLNXatFTGvxPKcO3iCgAACgfYScK59wZeWF7d/z8J+u1bkeWlLXdF3SytkqNOkpX/83XKRkAAPwowk6U1u7YEhLWd+e+15aoeOZV0u7vpDqtpEGvUaMDAMAxIOxEqbGXdlS1lET98n+PKGHzUqlaXd/SD7Wael00AABiCmEnSrWuX10zOy7SL5M+VkFxolad+bRU39d5GQAAVBxhJ1pt+FTdvpnoDscVXKuBc9O0Zut+r0sFAEDMIexEo4N7pH/coITiIhWe+it92exK7TuYr19PXaiVm/Z5XToAAGIKYSfa2Arm/75N2rfRzY6cdMkEzRjaS11b1NaeA/kaOPVTffBNBdfOAgAAhJ2o8+Wr0qp/+hb2vOI5Kb2W6mSk6v9u6K3eJ9TT/twCDZ2xSM9+sE5FRcVelxYAgKhH2Ikm2bukOXf7js++W2reveSlmukpevH6XrqyRwtZxhn/9mpd+exCfWfz8AAAgHIRdqLJf++RDuzyTRx4xu1HvJyWnKRH/r8ueuiXnVU9NUmLf9ijC5/8UM+8v045+YWeFBkAgGhH2IkW696TVrxicyhLlz0tJaeWO8Py1b1b6Z07fqqz2jVQbkGRHpmzWuc8/r5bTyu/sCjiRQcAIJoRdqJBYYE0Z5TvuNcwqUWPH31Li7oZevG6Xnrsii5qUitdW/blaNRrX+pnj72vaQu+U2ZOfvjLDQBADEgoLrbhP1VXZmamateurX379qlWrVreFGLxDOnN232zJN+6zLc/BtaE9fJnG/TM+2u1M8u3Uro1c13YuakGdGuuPifWV1JiQpgKDwBAdH9/E3a8Dju5+6WnTpOyd0gXPCz9ZPhxP8pCzxvLNmn6x9/rm22HOi43rJmm8zs21jmnNFLfk+orIzU5RIUHAMAbhJ1YCjvzH5AWPCbVayv97rNy++ocC/sj/Xz9Hr2xfJPe+nKL9h441KSVmpyo7q3qqntr33Z6q7qqnZFS6c8EACCSCDuxEnYO7JYmdpbysqQrX5I6Xhbyj8grKNLHa3dq/urtbtu09+AR97RrVEOdm9fWKU1qlmzWD8g6QwMAEOvf37RneOmzKb6g07iz1OHSsHyE1eSc076R28YVF2vdjixX67N4/R4t3bBH3+/M1rfbs9wWrHa1FLVtWF1t6vu3BhlucdIT6lenJggAEFOo2fGqZidnn/TnzlLuPulXL0idBsgLu7JytXTDXq3ekqnV2/a7xUYtABUeZXbmmunJala7mprWSVfT2tXUrHa6mtbx7ZvUTlezOtWUnpIU0f8OAEDVkknNTgxYNNUXdBq2lzqEvvmqourXSNN5HRu7Lbij83c7srV+l3/bafsD+mFXtrZl5mp/ToHW5OzXmm3lr8JeNyNFjWulu87RDWukqUHJPlUNaqS567avm5HKSDEAQFgRdryQf1Ba+Bff8Vl3SonRNd2R1cp0bFbLbYc7kFegTXsOavO+HG3dd1Cb9+Zoy76Dbp6fzXt9+wN5hW7RUttWby0/EBnLORa4DgWgVBeALCzZmmDBx3UyUtx5tVRqjQAAFUfY8cKXf5cO7pbqtJJOvVyxxIatt2tc021lsVbRzJwCF4CsFmjn/lztzMrVjsA+y67luePdB/LcOl/2mm1fb6lYGdKSE13oCYSfutVTXB+jWukpromtVjXfvmZayqFj//UaqclKpCYJAKoUwk6kWRepz6b6jnsOkxLjq5bCRnBZ8LCtfZOj31tQWKTd2XkuAPnCUJ7b7z2Qpz0H8tyQedvs2GqJ7HpBUbFbImNrZo7bjr18Uo205EPBKD1FNdKTlZGa5K5bmKueluT2Nfx7O68e9Fp1t/e9x4IXo9YAILoRdiJtw0Jp25dScjXptEGqypKTEtWoVrrbKsJqjbJyC44IQHuy87TvYIH25+S7ZTKsT1Fg744P+o7zCotc1gxcD8l/Q2KCCz2B8HN4YApcT09JVLUU2/s2O7bmONun+V+z8/Rk/97dl6jUJMIUAFQWYceLjsmmy6+kjHpelyam2Jd+TVcjk6KW9TKO+f3W8bqsEJSVm6/s3ELXHyk7r1DZuQVlnBe4vkjuWm6hDvpXmbeaJmu2sy0crMWtVEjyByQLQoHQFAhGacm+mqY0/7FNO+DOg65beEqzgBX0Wsl9Qc+w+2juAxAvCDuRlLlZWvUv33GvG70uTZUTCAyNyu5udExsaL4FnwNB4SjbnfuP7Zr/NQtGB/MKlVvg29t5Tn6Rf++7luNeK/Kd5xeWDP23nXtOni9cRZILRhUISbZPSfJtdpyalOA791+381L3uNcSlJqUpBS71x+ufK/77i05d++zew99jtWmUdsF4FgQdiJp8XSpuFBqfYbU5FSvS4NKsOHygVqmcMgv9IehvEPB6GBQMLLrgWv2uoUk68tkgSo3v8g12dnenbvrRcoLHAddtxm2S95X4GvmC7Bn2LY/V1HHF4YOC1H+YJSc6N/7g5ELSO667zU7DoSmwD2HX0tJTFCSXfPfH7gWfH/w57j7A+8towyH3+8ri+89BDcg/Ag7kVKQKy153nfca5jXpUGUC3yBWwfqSLE+UYEO4Lkl4SkQiEoHpUBIspBlwSyvsNjt8wuKSs7tHnfNH5ry3TW733fvodcP3eu7z3fNnpXrv+9wviDmq/WKdRZ43JbgD0D+YJYYdG6vuTCVmHjofn9gSgwKToF94N7DXws+d8/0f1aSPdc+LynotcSyz33lOlSOw59vx9YCavf5joP3pa+7+91eJZ9h4S/psOuBe4HjRdiJlK9e961sXrOZ1P4Sr0sDHMG+ZFyzUlKi62gdLSyEWbOeC0WB8BQcpAr84cl/3QKbjfSz+wuKilTgD1fuGf7X3DX/a4H7bW/3+a4dei34mj3TV5YyPsed+68FfY677n9vWex5R5uxHIcEhyAXmgKBKRCeEnz3BAKVLzwdClKHgpZNbxb0/uBnBl0/4nnlXPd99qEwZ/9fCgQ+2/vOD31uybG7V6VeO/y9gWcnVuTZQeUr/eyEoHuPfGZ5r7v3Bz3v8DIllLy//M+LFtHzL1rcDzef4jvueZ2UxNpSQEXZP5i+piSpmmJ3qoZAaAsOUIXFxSryXwu8Fgg/FpACx4e/djz3FlnNnQtrvmBmn13oD2OFh527e911XzkPnfufEfTfYvcUFqnkufbPXeBz7X2+vQ4d+z/Lzovsff7rFeGeK/uAsP9xIQSCg9xprerqbzf2kVcIO5Gw8TNp8zIpKU3qPtTr0gDwOLSxdlz5YbAwKAT5AlHp64cC1JFBKnDdrpW6x39fIFweus+OD10v/Wzf9eLynl1SpqBnu/tVcs13fug4EPACz/G9Fnxv0H0lzyn/9VLPDvrMH3120dGfc+jew8rjf07F/0z9YdYfVL0UlWFn8uTJeuyxx7R161Z17dpVTz/9tHr16lXu/X//+981evRorV+/Xu3atdMjjzyiiy66SFFj4WTfvutVUvUGXpcGAKI3DHpdEByVBaPDw9DRQlogSHm9BmJ0Lcokafbs2RoxYoTGjh2rpUuXurDTv39/bd++vcz7P/nkEw0cOFDXX3+9li1bpgEDBrht5cqVigpbv5S+/rfvuPdwr0sDAMBxc/16/CMPbQRkYP4vm0DVRqfa7Pl1q6e6NQ9tvUObNLZJbd+i0F5KKLbYFUV69+6tnj17atKkSe68qKhILVu21C233KKRI0cecf9VV12l7OxsvfnmmyXXfvKTn6hbt26aMsXfTyZES8QfEzdV71bp1aG+WZM7XS79akbong8AQBWWeQzf31FVs5OXl6clS5aoX79+JdcSExPd+cKFC8t8j10Pvt9YTVB59+fm5rofUPAWFt++K01o7ws6KdWlc8eE53MAAEDshJ2dO3eqsLBQjRs3LnXdzq3/Tlns+rHcP378eJcEA5vVGoVF/ROt4kxqcIo08BWp3gnh+RwAABA7YScSRo0a5aq8AtvGjRvD80F1T5Du2SrdvEhqe3Z4PgMAAPyoqOr43qBBAyUlJWnbtm2lrtt5kyZNynyPXT+W+9PS0twWdm62poqt5g0AAKpIzU5qaqq6d++uefPmlVyzDsp23qdP2ZMR2fXg+827775b7v0AAKBqiaqaHWPDzocMGaIePXq4uXUmTpzoRlsNHeqbjG/w4MFq3ry563tjbrvtNp199tl64okndPHFF2vWrFlavHixpk6d6vF/CQAAiAZRF3ZsKPmOHTs0ZswY18nYhpDPmTOnpBPyhg0b3AitgL59+2rmzJm699579cc//tFNKvjGG2/o1FNZVRwAAEThPDuRFrZ5dgAAQNjE7Dw7AAAAoUbYAQAAcY2wAwAA4hphBwAAxDXCDgAAiGuEHQAAENcIOwAAIK4RdgAAQFwj7AAAgLgWdctFRFpgAmmbiREAAMSGwPd2RRaCqPJhZ//+/W7fsmVLr4sCAACO43vclo04miq/NlZRUZE2b96smjVrKiEhIeSp00LUxo0bWXcrjPg5RwY/58jg5xw5/Kxj++ds8cWCTrNmzUotEF6WKl+zYz+gFi1ahPUz7A+X/yOFHz/nyODnHBn8nCOHn3Xs/px/rEYngA7KAAAgrhF2AABAXCPshFFaWprGjh3r9ggffs6Rwc85Mvg5Rw4/66rzc67yHZQBAEB8o2YHAADENcIOAACIa4QdAAAQ1wg7AAAgrhF2wmTy5Mlq06aN0tPT1bt3by1atMjrIsWd8ePHq2fPnm7260aNGmnAgAFas2aN18WKaw8//LCbafz222/3uihxadOmTRo0aJDq16+vatWqqXPnzlq8eLHXxYorhYWFGj16tE444QT3Mz7xxBN1//33V2h9JZRvwYIFuvTSS91sxvZvxBtvvFHqdfv5jhkzRk2bNnU/9379+unbb79VpBB2wmD27NkaMWKEG2q3dOlSde3aVf3799f27du9Llpc+eCDD/T73/9en376qd59913l5+fr/PPPV3Z2ttdFi0uff/65nn32WXXp0sXrosSlPXv26IwzzlBKSorefvttrVq1Sk888YTq1q3rddHiyiOPPKJnnnlGkyZN0tdff+3OH330UT399NNeFy2mZWdnu+86+0W/LPYzfuqppzRlyhR99tlnql69uvtezMnJiUwBbeg5QqtXr17Fv//970vOCwsLi5s1a1Y8fvx4T8sV77Zv326/mhV/8MEHXhcl7uzfv7+4Xbt2xe+++27x2WefXXzbbbd5XaS4c/fddxefeeaZXhcj7l188cXF1113Xalrl19+efE111zjWZnijaTi119/veS8qKiouEmTJsWPPfZYybW9e/cWp6WlFb/yyisRKRM1OyGWl5enJUuWuCq64PW37HzhwoWeli3e7du3z+3r1avndVHijtWgXXzxxaX+XiO0/vWvf6lHjx761a9+5ZplTzvtNE2bNs3rYsWdvn37at68efrmm2/c+YoVK/TRRx/pwgsv9Lpocev777/X1q1bS/37YWtaWRePSH0vVvmFQENt586drk24cePGpa7b+erVqz0rV1VYvd76kVgzwKmnnup1ceLKrFmzXHOsNWMhfL777jvXvGJN4H/84x/dz/vWW29VamqqhgwZ4nXx4sbIkSPdKtzt27dXUlKS+/f6wQcf1DXXXON10eLW1q1b3b6s78XAa+FG2EHc1DysXLnS/YaG0Nm4caNuu+021yfKOtsjvIHdanYeeughd241O/Z32vo4EHZC529/+5tefvllzZw5U506ddLy5cvdL0rWsZafc/yiGSvEGjRo4H5b2LZtW6nrdt6kSRPPyhXPbr75Zr355pt677331KJFC6+LE1esSdY61p9++ulKTk52m3UMt46Gdmy/FSM0bJRKx44dS13r0KGDNmzY4FmZ4tEf/vAHV7vz61//2o12u/baa3XHHXe40Z0Ij8B3n5ffi4SdELMq5+7du7s24eDf2Oy8T58+npYt3lg/OAs6r7/+uubPn++GkiK0zj33XH355Zfut9/AZrUPVuVvxxbsERrWBHv41AnWr6R169aelSkeHThwwPWjDGZ/j+3faYSH/dtsoSb4e9GaEm1UVqS+F2nGCgNrc7fqUPtS6NWrlyZOnOiG5Q0dOtTrosVd05VVRf/zn/90c+0E2n6t45vN44DKs5/r4X2gbMiozQND36jQstoF6zxrzVhXXnmlm5tr6tSpbkPo2Fww1kenVatWrhlr2bJlmjBhgq677jqvixbTsrKytHbt2lKdku0XIhswYj9rayp84IEH1K5dOxd+bK4jazq0+dEiIiJjvqqgp59+urhVq1bFqampbij6p59+6nWR4o799S1rmzFjhtdFi2sMPQ+ff//738WnnnqqG5Lbvn374qlTp3pdpLiTmZnp/v7av8/p6enFbdu2Lb7nnnuKc3NzvS5aTHvvvffK/Pd4yJAhJcPPR48eXdy4cWP39/vcc88tXrNmTcTKl2D/E5lYBQAAEHn02QEAAHGNsAMAAOIaYQcAAMQ1wg4AAIhrhB0AABDXCDsAACCuEXYAAEBcI+wAAIC4RtgBEHV+85vfRG4a+TLY4pCB1cd/jC0o+cQTT4S9TACOHzMoA4iohISEo74+duxYt06U/dNUp04dRdqKFSv085//XD/88INq1Kjxo/evXLlSP/3pT91aQLYuG4DoQ9gBEFGBBVvN7NmzNWbMmFKrfVvAqEjICJcbbrhBycnJmjJlSoXf07NnT1cbZYvTAog+NGMBiKgmTZqUbFYTYjU9wdcs6BzejPWzn/1Mt9xyi1s5uW7dumrcuLGmTZum7OxsDR061K3OftJJJ+ntt98+otblwgsvdM+091jz1M6dO8stW2FhoV599VW3Mnawv/zlL2615vT0dPecK664otTrdv+sWbNC9jMCEFqEHQAx4YUXXlCDBg20aNEiF3yGDx+uX/3qV+rbt6+WLl2q888/34WZAwcOuPv37t3rmqNOO+00LV68WHPmzNG2bdt05ZVXlvsZX3zxhfbt26cePXqUXLP33nrrrRo3bpyrgbLnWLNVsF69erly5ebmhvEnAOB4EXYAxISuXbvq3nvvdTUso0aNcrUsFn6GDRvmrllz2K5du1xgMZMmTXJBxzoat2/f3h1Pnz5d7733nr755psyP8P66SQlJalRo0Yl1zZs2KDq1avrkksuUevWrd1zLPwEa9asmfLy8ko10QGIHoQdADGhS5cuJccWSOrXr6/OnTuXXLPmJbN9+/aSjsYWbAJ9gGyz0GPWrVtX5mccPHhQaWlppTpRn3feeS7ktG3b1tUcvfzyyyW1RwHVqlVz+8OvA4gOhB0AMSElJaXUuQWS4GuBgFJUVOT2WVlZri/N8uXLS23ffvvtEc1QAVZTZIHFamkCrD+QNZO98soratq0qatBslomayYL2L17t9s3bNgwxP/VAEKBsAMgLp1++un66quv1KZNG9d5OXizZqmydOvWze1XrVpV6rqNzurXr58effRR10y2fv16zZ8/v1RH6BYtWriwBCD6EHYAxCUbBm41LgMHDtTnn3/umq7eeecdN3rLRl2VxWpmLCR99NFHJdfefPNNPfXUU65WyPr0vPjii6726JRTTim558MPP3QdpAFEJ8IOgLhknYY//vhjF2wsiFj/Hhu6bhMVJiYmHnWeHeuXE2D3v/baa25kV4cOHdz8O9ak1alTJ/d6Tk6O3njjDddRGkB0YlJBADisk7LV2tiEh3369PnR+5955hm9/vrr+u9//xuR8gE4dtTsAMBhI6usqepokw8Gs07STz/9dNjLBeD4UbMDAADiGjU7AAAgrhF2AABAXCPsAACAuEbYAQAAcY2wAwAA4hphBwAAxDXCDgAAiGuEHQAAENcIOwAAQPHs/wePOdeVlUdl+AAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEqCAYAAAAPl8fDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBHklEQVR4nO2dB3gU5fbGT7KbTiD03hEBLyCCKFIU/wJiQcWCiCBFkSKoVPHauCqiqKiAoIJ6RUVUxAJeAQUElC69KR1EOgkJhNT9P+9JZtndbELKluzO+3ueeWb325nZCSTfO+ec75wTYrPZbEIIIYS4EOo6QAghhAAKBCGEELdQIAghhLiFAkEIIcQtFAhCCCFuoUAQQghxCwWCEEKIWygQhBBC3GJ1P0zA6dOnZcWKFVKtWjWJiIjw9+0QQkiRSUlJkcOHD0ubNm2kTJkyeR5LgcgDiMPIkSP9fRuEEOJxJkyYIF26dMnzGApEHsByMP4h69at6+/bIYSQIrNnzx598DXmt7ygQOSB4VaCOFxxxRX+vh1CCPEY+XGbM0hNCCEksAXi6NGj0qJFC1m9evUlj503b57ceuut0qRJE+ncubPMnTvXJ/dICCHBREAIxD///CN9+/aVxMTESx67YMECGTFihLRu3VqmTJkiLVu2lKeeekrmz5/vk3slhJBgoVjHIDIzM+Xbb7+VV199Nd/nvPnmm3LzzTfL008/re/btm0rCQkJ8vbbb6tVQQghJAgEYteuXfL888/LAw88INddd530798/z+Oxtnf//v0ydOhQp/FOnTrJ//73P/2sVq1aXr5rQvwP+oAZGzEHISEh9s0UAlG5cmVZtGiRVKpUKV+xByzfAq4iULNmTd3v27ePAkGCmuTkZDl16pQkJSVRHEyI1WqVsmXLXjIBLt/Xk2JMXFxcgY7HHwUoUaKE03hMTIzT564cP35cTpw4kavgFJSz51Llz4NnpEXDioU6n5DCisPBgwf17wYPQmFhYf6+JeJjzp8/L0eOHJHIyEiJjo4OboEoTMwiL0JD3cfkZ8+eLZMnT/bYfcxbsVdmLdwlHz/XUcqWivLYdQnJC1gOEIeKFflgYlZiY2PVgsBDrye8JdZg+8cB586dy5dlYdCtWze58cYbc804LChp6VlClZKWUeBzCSkMcCfh95wuVBIbG6sPC/idKGo8IqgEonbt2ro/cOCANGrUyD6O9yC3chkVKlTQzVMY/yd0ARNfYQSk6VYiVqtVvSmeEIiAyIPILwhGo74IciEcWbhwoT5Z5af2iCcIzf5PycykQhDfwIA08cbvREBbEDCpd+/eLTVq1LBH7QcPHixjxoxRXyzcRr/88osucZ04caLP7stQbf7REkICmYC2ILZt26bxg6VLl9rHunbtKmPHjpXff/9dxWLt2rWaaHfLLbf47L5C6WIixKP07NlTLr/8crn//vtzPebJJ5/UY1A5gXiGgLEgrrnmGk2cu9QYwC9RXr9I3iYkWyEyqRCEeAysQty4caPWZUNulOvyziVLlvjt3oKVgLYgiisMUhPiebDwBCWqf/rppxyfQRyioqK4xNfDUCC8GaSmQhDiMZD4df3117sViB9//FFL6mAFj2NrTRTsRG22xo0bS8eOHeX99993ypeC6+rf//63jt9www16HLwPmzdvdrr+li1bpF+/fuq1uOqqq2TAgAHy119/2T9HpQe4t1auXKnXRCVpXO+rr77SnITHHntMmjVrpvf/8ccfO107Pj5ennvuOS0nhO+/77779DqO4NrI1YILHdf2ZN5WXlAgvABXMRHiHRBLNNxMjotVli1bJrfddpt9DAtEMIlPnz5d7r33Xpk2bZoKxVtvvaX13RzBqkcsZnnmmWe02OfJkydlyJAhkpGRlce0atUq6d69u74eN26cvPTSS1phGkLiWm1h2LBhujjmvffe02X3+K5evXrJZZddJu+++65O7q+88opdgCBiDz30kH4/YiiY+OE+e/jhh3OIBH6G22+/Xd555x0VQ18QMDGIQIKrmEhxAln9yzf+7e/bkLZXVpXuHS8v0jXwVA5XEqyI3r176xjqtSF7uHnz5vbjIBhYqIIJ36jijBYAKEGBys7GpA3S09NlxowZ9kRaJNqOHj1aduzYIf/617/kjTfe0CX0sDIsFose06ZNG+nQoYNO1riewd133y19+vSxWzywBiAKjz/+uI41aNBAl93/8ccfOv7dd9/Jzp075csvv5SmTZvqMe3atVMr5PXXX5c5c+bYr41+OMa1fQUtCC9gVPSgPhDiWTDB4wnd0c2EXi9oDOaYFLZmzRp1N8FqcKRLly72zw3q1avnVGXBiGMkJydr8BvuJVzfEAdQsmRJad++vdN1ANxIBhAtYEz8oHTp0ro3etvASihf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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -116,9 +130,17 @@ "plt.legend()" ] }, + { + "cell_type": "markdown", + "id": "d9397339", + "metadata": {}, + "source": [ + "#### Run NERDSS Simulation Using ioNERDSS" + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "6dfcb1c7", "metadata": {}, "outputs": [ @@ -127,1013 +149,6 @@ "output_type": "stream", "text": [ "Working directory set to: /Users/sikao/Documents/8y7s_dir\n", - "start parameters\n", - "\tnItr = 20000000\n", - "\ttimeStep = 0.5\n", - "\ttimeWrite = 20000\n", - "\ttrajWrite = 2000000\n", - "\tpdbWrite = 2000000\n", - "\trestartWrite = 100000\n", - "\tcheckPoint = 100000\n", - "\ttransitionWrite = 100000\n", - "\tclusterOverlapCheck = false\n", - "\tscaleMaxDisplace = 100.0\n", - "\toverlapSepLimit = 0.1\n", - "end parameters\n", - "\n", - "start boundaries\n", - "\tWaterBox = [600.0, 600.0, 600.0]\n", - "\thasCompartment = false\n", - "\tcompartmentR = 0\n", - "\tcompartmentSiteD = 0\n", - "\tcompartmentSiteRho = 0\n", - "\tWaterBox = [600.0, 600.0, 600.0]\n", - "end boundaries\n", - "\n", - "start molecules\n", - "\tA : 130\n", - "end molecules\n", - "\n", - "start reactions\n", - "\tA(A1) + A(A1) <-> A(A1!1).A(A1!1)\n", - "\t\tonRate3Dka = 10.0\n", - "\t\toffRatekb = 0.06022000000000001\n", - "\t\tsigma = 0.4976063370704651\n", - "\t\tnorm1 = [0, 0, 1]\n", - "\t\tnorm2 = [0, 0, 1]\n", - "\t\tassocAngles = [2.529535, 2.558964, 0.772629, 0.752813, 0.969038]\n", - "\t\tlength3Dto2D = 2.0\n", - "\t\tbindRadSameCom = 1.5\n", - "\t\tloopCoopFactor = 1.0\n", - "\t\texcludeVolumeBound = False\n", - "\n", - "\tA(A2) + A(A2) <-> A(A2!1).A(A2!1)\n", - "\t\tonRate3Dka = 10.0\n", - "\t\toffRatekb = 0.7336297863135685\n", - "\t\tsigma = 0.7669273614883423\n", - "\t\tnorm1 = [0, 0, 1]\n", - "\t\tnorm2 = [0, 0, 1]\n", - "\t\tassocAngles = [2.931583, 2.944105, -3.123163, 3.134559, 1.642789]\n", - "\t\tlength3Dto2D = 2.0\n", - "\t\tbindRadSameCom = 1.5\n", - "\t\tloopCoopFactor = 1.0\n", - "\t\texcludeVolumeBound = False\n", - "\n", - "\tA(A3) + A(A3) <-> A(A3!1).A(A3!1)\n", - "\t\tonRate3Dka = 10.0\n", - "\t\toffRatekb = 29873846753.851494\n", - "\t\tsigma = 1.1430033445358276\n", - "\t\tnorm1 = [0, 0, 1]\n", - "\t\tnorm2 = [0, 0, 1]\n", - "\t\tassocAngles = [2.323924, 2.338162, 1.787355, 1.786149, 0.660249]\n", - "\t\tlength3Dto2D = 2.0\n", - "\t\tbindRadSameCom = 1.5\n", - "\t\tloopCoopFactor = 1.0\n", - "\t\texcludeVolumeBound = False\n", - "\n", - "end reactions\n", - "\n", - "Installing NERDSS to /Users/sikao/Documents/8y7s_dir...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cloning into '/Users/sikao/Documents/8y7s_dir/NERDSS'...\n", - "==> Auto-updating Homebrew...\n", - "Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with\n", - "HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).\n", - "Warning: gsl 2.8 is already installed and up-to-date.\n", - "To reinstall 2.8, run:\n", - " brew reinstall gsl\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Compiling src/boundary_conditions/check_if_spans_box.cpp to obj/boundary_conditions/check_if_spans_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/check_if_spans_box.cpp -o obj/boundary_conditions/check_if_spans_box.o \n", - "------------\n", - "Compiling src/boundary_conditions/check_if_spans_sphere.cpp to obj/boundary_conditions/check_if_spans_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/check_if_spans_sphere.cpp -o obj/boundary_conditions/check_if_spans_sphere.o \n", - "------------\n", - "Compiling src/boundary_conditions/check_if_spans.cpp to obj/boundary_conditions/check_if_spans.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/check_if_spans.cpp -o obj/boundary_conditions/check_if_spans.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_complex_compartment.cpp to obj/boundary_conditions/reflect_complex_compartment.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_complex_compartment.cpp -o obj/boundary_conditions/reflect_complex_compartment.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_complex_rad_rot_box.cpp to obj/boundary_conditions/reflect_complex_rad_rot_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_complex_rad_rot_box.cpp -o obj/boundary_conditions/reflect_complex_rad_rot_box.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_complex_rad_rot_sphere.cpp to obj/boundary_conditions/reflect_complex_rad_rot_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_complex_rad_rot_sphere.cpp -o obj/boundary_conditions/reflect_complex_rad_rot_sphere.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_complex_rad_rot.cpp to obj/boundary_conditions/reflect_complex_rad_rot.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_complex_rad_rot.cpp -o obj/boundary_conditions/reflect_complex_rad_rot.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_check_span_box.cpp to obj/boundary_conditions/reflect_traj_check_span_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_check_span_box.cpp -o obj/boundary_conditions/reflect_traj_check_span_box.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_check_span_sphere.cpp to obj/boundary_conditions/reflect_traj_check_span_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_check_span_sphere.cpp -o obj/boundary_conditions/reflect_traj_check_span_sphere.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_check_span.cpp to obj/boundary_conditions/reflect_traj_check_span.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_check_span.cpp -o obj/boundary_conditions/reflect_traj_check_span.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_compartment.cpp to obj/boundary_conditions/reflect_traj_complex_compartment.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_compartment.cpp -o obj/boundary_conditions/reflect_traj_complex_compartment.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_rad_rot_box.cpp to obj/boundary_conditions/reflect_traj_complex_rad_rot_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_rad_rot_box.cpp -o obj/boundary_conditions/reflect_traj_complex_rad_rot_box.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_box.cpp to obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_box.cpp -o obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_box.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_sphere.cpp to obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_sphere.cpp -o obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_sphere.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_rad_rot_nocheck.cpp to obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_rad_rot_nocheck.cpp -o obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_rad_rot_sphere.cpp to obj/boundary_conditions/reflect_traj_complex_rad_rot_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_rad_rot_sphere.cpp -o obj/boundary_conditions/reflect_traj_complex_rad_rot_sphere.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_complex_rad_rot.cpp to obj/boundary_conditions/reflect_traj_complex_rad_rot.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_complex_rad_rot.cpp -o obj/boundary_conditions/reflect_traj_complex_rad_rot.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_tmp_crds_box.cpp to obj/boundary_conditions/reflect_traj_tmp_crds_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_tmp_crds_box.cpp -o obj/boundary_conditions/reflect_traj_tmp_crds_box.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_tmp_crds_compartment.cpp to obj/boundary_conditions/reflect_traj_tmp_crds_compartment.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_tmp_crds_compartment.cpp -o obj/boundary_conditions/reflect_traj_tmp_crds_compartment.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_tmp_crds_sphere.cpp to obj/boundary_conditions/reflect_traj_tmp_crds_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_tmp_crds_sphere.cpp -o obj/boundary_conditions/reflect_traj_tmp_crds_sphere.o \n", - "------------\n", - "Compiling src/boundary_conditions/reflect_traj_tmp_crds.cpp to obj/boundary_conditions/reflect_traj_tmp_crds.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/boundary_conditions/reflect_traj_tmp_crds.cpp -o obj/boundary_conditions/reflect_traj_tmp_crds.o \n", - "------------\n", - "Compiling src/classes/class_bngl_parser_functions.cpp to obj/classes/class_bngl_parser_functions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_bngl_parser_functions.cpp -o obj/classes/class_bngl_parser_functions.o \n", - "------------\n", - "Compiling src/classes/class_Cluster.cpp to obj/classes/class_Cluster.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Cluster.cpp -o obj/classes/class_Cluster.o \n", - "------------\n", - "Compiling src/classes/class_Coord.cpp to obj/classes/class_Coord.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Coord.cpp -o obj/classes/class_Coord.o \n", - "------------\n", - "Compiling src/classes/class_MDTimer.cpp to obj/classes/class_MDTimer.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_MDTimer.cpp -o obj/classes/class_MDTimer.o \n", - "------------\n", - "Compiling src/classes/class_Molecule_Complex.cpp to obj/classes/class_Molecule_Complex.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Molecule_Complex.cpp -o obj/classes/class_Molecule_Complex.o \n", - "------------\n", - "Compiling src/classes/class_MolTemplate.cpp to obj/classes/class_MolTemplate.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_MolTemplate.cpp -o obj/classes/class_MolTemplate.o \n", - "------------\n", - "Compiling src/classes/class_Observable.cpp to obj/classes/class_Observable.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Observable.cpp -o obj/classes/class_Observable.o \n", - "------------\n", - "Compiling src/classes/class_Parameters.cpp to obj/classes/class_Parameters.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Parameters.cpp -o obj/classes/class_Parameters.o \n", - "------------\n", - "Compiling src/classes/class_Quat.cpp to obj/classes/class_Quat.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Quat.cpp -o obj/classes/class_Quat.o \n", - "------------\n", - "Compiling src/classes/class_Rxns.cpp to obj/classes/class_Rxns.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Rxns.cpp -o obj/classes/class_Rxns.o \n", - "------------\n", - "Compiling src/classes/class_SimulVolume.cpp to obj/classes/class_SimulVolume.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_SimulVolume.cpp -o obj/classes/class_SimulVolume.o \n", - "------------\n", - "Compiling src/classes/class_Vector.cpp to obj/classes/class_Vector.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/class_Vector.cpp -o obj/classes/class_Vector.o \n", - "------------\n", - "Compiling src/classes/mpi_functions.cpp to obj/classes/mpi_functions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/classes/mpi_functions.cpp -o obj/classes/mpi_functions.o \n", - "------------\n", - "Compiling src/error/error.cpp to obj/error/error.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/error/error.cpp -o obj/error/error.o \n", - "------------\n", - "Compiling src/math/Faddeeva.cpp to obj/math/Faddeeva.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/math/Faddeeva.cpp -o obj/math/Faddeeva.o \n", - "------------\n", - "Compiling src/math/math_functions.cpp to obj/math/math_functions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/math/math_functions.cpp -o obj/math/math_functions.o \n", - "------------\n", - "Compiling src/math/matrix_functions.cpp to obj/math/matrix_functions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/math/matrix_functions.cpp -o obj/math/matrix_functions.o \n", - "------------\n", - "Compiling src/math/rand_gsl.cpp to obj/math/rand_gsl.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/math/rand_gsl.cpp -o obj/math/rand_gsl.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/math/rand_gsl.cpp:45:18: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 45 | char charArray[rngFileName.size() + 1];\n", - " | ^~~~~~~~~~~~~~~~~~~~~~\n", - "src/math/rand_gsl.cpp:45:30: note: non-constexpr function 'size' cannot be used in a constant expression\n", - " 45 | char charArray[rngFileName.size() + 1];\n", - " | ^\n", - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:1284:65: note: declared here\n", - " 1284 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 size_type size() const _NOEXCEPT {\n", - " | ^\n", - "src/math/rand_gsl.cpp:105:18: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 105 | char charArray[rngFileName.size() + 1];\n", - " | ^~~~~~~~~~~~~~~~~~~~~~\n", - "src/math/rand_gsl.cpp:105:30: note: non-constexpr function 'size' cannot be used in a constant expression\n", - " 105 | char charArray[rngFileName.size() + 1];\n", - " | ^\n", - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:1284:65: note: declared here\n", - " 1284 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 size_type size() const _NOEXCEPT {\n", - " | ^\n", - "2 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/parser/areSameExceptState.cpp to obj/parser/areSameExceptState.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/areSameExceptState.cpp -o obj/parser/areSameExceptState.o \n", - "------------\n", - "Compiling src/parser/check_for_state_change.cpp to obj/parser/check_for_state_change.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/check_for_state_change.cpp -o obj/parser/check_for_state_change.o \n", - "------------\n", - "Compiling src/parser/check_for_valid_states.cpp to obj/parser/check_for_valid_states.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/check_for_valid_states.cpp -o obj/parser/check_for_valid_states.o \n", - "------------\n", - "Compiling src/parser/create_conjugate_reaction_itrs.cpp to obj/parser/create_conjugate_reaction_itrs.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/create_conjugate_reaction_itrs.cpp -o obj/parser/create_conjugate_reaction_itrs.o \n", - "------------\n", - "Compiling src/parser/determine_bound_iface_index.cpp to obj/parser/determine_bound_iface_index.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/determine_bound_iface_index.cpp -o obj/parser/determine_bound_iface_index.o \n", - "------------\n", - "Compiling src/parser/determine_iface_indices.cpp to obj/parser/determine_iface_indices.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/determine_iface_indices.cpp -o obj/parser/determine_iface_indices.o \n", - "------------\n", - "Compiling src/parser/display_all_MolTemplates.cpp to obj/parser/display_all_MolTemplates.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/display_all_MolTemplates.cpp -o obj/parser/display_all_MolTemplates.o \n", - "------------\n", - "Compiling src/parser/display_all_reactions.cpp to obj/parser/display_all_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/display_all_reactions.cpp -o obj/parser/display_all_reactions.o \n", - "------------\n", - "Compiling src/parser/parse_command.cpp to obj/parser/parse_command.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_command.cpp -o obj/parser/parse_command.o \n", - "------------\n", - "Compiling src/parser/parse_input_array.cpp to obj/parser/parse_input_array.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_input_array.cpp -o obj/parser/parse_input_array.o \n", - "------------\n", - "Compiling src/parser/parse_input_for_a_new_simulation.cpp to obj/parser/parse_input_for_a_new_simulation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_input_for_a_new_simulation.cpp -o obj/parser/parse_input_for_a_new_simulation.o \n", - "------------\n", - "Compiling src/parser/parse_input_for_a_restart_simulation.cpp to obj/parser/parse_input_for_a_restart_simulation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_input_for_a_restart_simulation.cpp -o obj/parser/parse_input_for_a_restart_simulation.o \n", - "------------\n", - "Compiling src/parser/parse_input_for_add_file.cpp to obj/parser/parse_input_for_add_file.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_input_for_add_file.cpp -o obj/parser/parse_input_for_add_file.o \n", - "------------\n", - "Compiling src/parser/parse_input.cpp to obj/parser/parse_input.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_input.cpp -o obj/parser/parse_input.o \n", - "------------\n", - "Compiling src/parser/parse_molecule_bngl.cpp to obj/parser/parse_molecule_bngl.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_molecule_bngl.cpp -o obj/parser/parse_molecule_bngl.o \n", - "------------\n", - "Compiling src/parser/parse_molFile.cpp to obj/parser/parse_molFile.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_molFile.cpp -o obj/parser/parse_molFile.o \n", - "------------\n", - "Compiling src/parser/parse_observable.cpp to obj/parser/parse_observable.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_observable.cpp -o obj/parser/parse_observable.o \n", - "------------\n", - "Compiling src/parser/parse_reaction.cpp to obj/parser/parse_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_reaction.cpp -o obj/parser/parse_reaction.o \n", - "------------\n", - "Compiling src/parser/parse_states.cpp to obj/parser/parse_states.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/parse_states.cpp -o obj/parser/parse_states.o \n", - "------------\n", - "Compiling src/parser/populate_reaction_lists.cpp to obj/parser/populate_reaction_lists.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/populate_reaction_lists.cpp -o obj/parser/populate_reaction_lists.o \n", - "------------\n", - "Compiling src/parser/read_bonds.cpp to obj/parser/read_bonds.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/read_bonds.cpp -o obj/parser/read_bonds.o \n", - "------------\n", - "Compiling src/parser/read_boolean.cpp to obj/parser/read_boolean.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/read_boolean.cpp -o obj/parser/read_boolean.o \n", - "------------\n", - "Compiling src/parser/read_internal_coordinates.cpp to obj/parser/read_internal_coordinates.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/read_internal_coordinates.cpp -o obj/parser/read_internal_coordinates.o \n", - "------------\n", - "Compiling src/parser/remove_comment.cpp to obj/parser/remove_comment.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/remove_comment.cpp -o obj/parser/remove_comment.o \n", - "------------\n", - "Compiling src/parser/write_mol_iface.cpp to obj/parser/write_mol_iface.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/parser/write_mol_iface.cpp -o obj/parser/write_mol_iface.o \n", - "------------\n", - "Compiling src/reactions/angleSignIsCorrect.cpp to obj/reactions/angleSignIsCorrect.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/angleSignIsCorrect.cpp -o obj/reactions/angleSignIsCorrect.o \n", - "------------\n", - "Compiling src/reactions/areParallel.cpp to obj/reactions/areParallel.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/areParallel.cpp -o obj/reactions/areParallel.o \n", - "------------\n", - "Compiling src/reactions/areSameAngle.cpp to obj/reactions/areSameAngle.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/areSameAngle.cpp -o obj/reactions/areSameAngle.o \n", - "------------\n", - "Compiling src/reactions/associate_box.cpp to obj/reactions/associate_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/associate_box.cpp -o obj/reactions/associate_box.o \n", - "------------\n", - "Compiling src/reactions/associate_ImplicitLipid_box.cpp to obj/reactions/associate_ImplicitLipid_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/associate_ImplicitLipid_box.cpp -o obj/reactions/associate_ImplicitLipid_box.o \n", - "------------\n", - "Compiling src/reactions/associate_ImplicitLipid_sphere.cpp to obj/reactions/associate_ImplicitLipid_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/associate_ImplicitLipid_sphere.cpp -o obj/reactions/associate_ImplicitLipid_sphere.o \n", - "------------\n", - "Compiling src/reactions/associate_ImplicitLipid.cpp to obj/reactions/associate_ImplicitLipid.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/associate_ImplicitLipid.cpp -o obj/reactions/associate_ImplicitLipid.o \n", - "------------\n", - "Compiling src/reactions/associate_sphere.cpp to obj/reactions/associate_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/associate_sphere.cpp -o obj/reactions/associate_sphere.o \n", - "------------\n", - "Compiling src/reactions/associate.cpp to obj/reactions/associate.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/associate.cpp -o obj/reactions/associate.o \n", - "------------\n", - "Compiling src/reactions/break_interaction_implicitlipid.cpp to obj/reactions/break_interaction_implicitlipid.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/break_interaction_implicitlipid.cpp -o obj/reactions/break_interaction_implicitlipid.o \n", - "------------\n", - "Compiling src/reactions/break_interaction.cpp to obj/reactions/break_interaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/break_interaction.cpp -o obj/reactions/break_interaction.o \n", - "------------\n", - "Compiling src/reactions/calc_angular_displacement.cpp to obj/reactions/calc_angular_displacement.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/calc_angular_displacement.cpp -o obj/reactions/calc_angular_displacement.o \n", - "------------\n", - "Compiling src/reactions/calc_one_angular_displacement.cpp to obj/reactions/calc_one_angular_displacement.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/calc_one_angular_displacement.cpp -o obj/reactions/calc_one_angular_displacement.o \n", - "------------\n", - "Compiling src/reactions/calc_pirr.cpp to obj/reactions/calc_pirr.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/calc_pirr.cpp -o obj/reactions/calc_pirr.o \n", - "------------\n", - "Compiling src/reactions/calculate_omega.cpp to obj/reactions/calculate_omega.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/calculate_omega.cpp -o obj/reactions/calculate_omega.o \n", - "------------\n", - "Compiling src/reactions/calculate_phi.cpp to obj/reactions/calculate_phi.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/calculate_phi.cpp -o obj/reactions/calculate_phi.o \n", - "------------\n", - "Compiling src/reactions/check_bases.cpp to obj/reactions/check_bases.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_bases.cpp -o obj/reactions/check_bases.o \n", - "------------\n", - "Compiling src/reactions/check_bimolecular_reactions.cpp to obj/reactions/check_bimolecular_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_bimolecular_reactions.cpp -o obj/reactions/check_bimolecular_reactions.o \n", - "------------\n", - "Compiling src/reactions/check_compartment_reaction.cpp to obj/reactions/check_compartment_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_compartment_reaction.cpp -o obj/reactions/check_compartment_reaction.o \n", - "------------\n", - "Compiling src/reactions/check_dissociation_implicitlipid.cpp to obj/reactions/check_dissociation_implicitlipid.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_dissociation_implicitlipid.cpp -o obj/reactions/check_dissociation_implicitlipid.o \n", - "------------\n", - "Compiling src/reactions/check_dissociation.cpp to obj/reactions/check_dissociation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_dissociation.cpp -o obj/reactions/check_dissociation.o \n", - "------------\n", - "Compiling src/reactions/check_for_structure_overlap_system.cpp to obj/reactions/check_for_structure_overlap_system.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_for_structure_overlap_system.cpp -o obj/reactions/check_for_structure_overlap_system.o \n", - "------------\n", - "Compiling src/reactions/check_for_structure_overlap.cpp to obj/reactions/check_for_structure_overlap.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_for_structure_overlap.cpp -o obj/reactions/check_for_structure_overlap.o \n", - "------------\n", - "Compiling src/reactions/check_for_unimolecular_reactions_population.cpp to obj/reactions/check_for_unimolecular_reactions_population.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_for_unimolecular_reactions_population.cpp -o obj/reactions/check_for_unimolecular_reactions_population.o \n", - "------------\n", - "Compiling src/reactions/check_for_unimolecular_reactions.cpp to obj/reactions/check_for_unimolecular_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_for_unimolecular_reactions.cpp -o obj/reactions/check_for_unimolecular_reactions.o \n", - "------------\n", - "Compiling src/reactions/check_for_unimolstatechange_reactions.cpp to obj/reactions/check_for_unimolstatechange_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_for_unimolstatechange_reactions.cpp -o obj/reactions/check_for_unimolstatechange_reactions.o \n", - "------------\n", - "Compiling src/reactions/check_for_zeroth_order_creation.cpp to obj/reactions/check_for_zeroth_order_creation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_for_zeroth_order_creation.cpp -o obj/reactions/check_for_zeroth_order_creation.o \n", - "------------\n", - "Compiling src/reactions/check_implicit_reactions.cpp to obj/reactions/check_implicit_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_implicit_reactions.cpp -o obj/reactions/check_implicit_reactions.o \n", - "------------\n", - "Compiling src/reactions/check_overlap.cpp to obj/reactions/check_overlap.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_overlap.cpp -o obj/reactions/check_overlap.o \n", - "------------\n", - "Compiling src/reactions/check_perform_zeroth_first_order_reactions.cpp to obj/reactions/check_perform_zeroth_first_order_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/check_perform_zeroth_first_order_reactions.cpp -o obj/reactions/check_perform_zeroth_first_order_reactions.o \n", - "------------\n", - "Compiling src/reactions/com_of_two_tmp_complexes.cpp to obj/reactions/com_of_two_tmp_complexes.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/com_of_two_tmp_complexes.cpp -o obj/reactions/com_of_two_tmp_complexes.o \n", - "------------\n", - "Compiling src/reactions/conservedMags.cpp to obj/reactions/conservedMags.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/conservedMags.cpp -o obj/reactions/conservedMags.o \n", - "------------\n", - "Compiling src/reactions/conservedRigid.cpp to obj/reactions/conservedRigid.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/conservedRigid.cpp -o obj/reactions/conservedRigid.o \n", - "------------\n", - "Compiling src/reactions/correct_structutre.cpp to obj/reactions/correct_structutre.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/correct_structutre.cpp -o obj/reactions/correct_structutre.o \n", - "------------\n", - "Compiling src/reactions/create_arbitrary_vector.cpp to obj/reactions/create_arbitrary_vector.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_arbitrary_vector.cpp -o obj/reactions/create_arbitrary_vector.o \n", - "------------\n", - "Compiling src/reactions/create_DDMatrices.cpp to obj/reactions/create_DDMatrices.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_DDMatrices.cpp -o obj/reactions/create_DDMatrices.o \n", - "------------\n", - "Compiling src/reactions/create_molecule_and_complex_from_rxn.cpp to obj/reactions/create_molecule_and_complex_from_rxn.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_molecule_and_complex_from_rxn.cpp -o obj/reactions/create_molecule_and_complex_from_rxn.o \n", - "------------\n", - "Compiling src/reactions/create_molecule_and_complex_from_transmission_rxn.cpp to obj/reactions/create_molecule_and_complex_from_transmission_rxn.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_molecule_and_complex_from_transmission_rxn.cpp -o obj/reactions/create_molecule_and_complex_from_transmission_rxn.o \n", - "------------\n", - "Compiling src/reactions/create_normMatrix.cpp to obj/reactions/create_normMatrix.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_normMatrix.cpp -o obj/reactions/create_normMatrix.o \n", - "------------\n", - "Compiling src/reactions/create_pirMatrix.cpp to obj/reactions/create_pirMatrix.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_pirMatrix.cpp -o obj/reactions/create_pirMatrix.o \n", - "------------\n", - "Compiling src/reactions/create_survMatrix.cpp to obj/reactions/create_survMatrix.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/create_survMatrix.cpp -o obj/reactions/create_survMatrix.o \n", - "------------\n", - "Compiling src/reactions/DDpirr_pfree_ratio_ps.cpp to obj/reactions/DDpirr_pfree_ratio_ps.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/DDpirr_pfree_ratio_ps.cpp -o obj/reactions/DDpirr_pfree_ratio_ps.o \n", - "------------\n", - "Compiling src/reactions/determine_1D_bimolecular_reaction_probability.cpp to obj/reactions/determine_1D_bimolecular_reaction_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_1D_bimolecular_reaction_probability.cpp -o obj/reactions/determine_1D_bimolecular_reaction_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_2D_bimolecular_reaction_probability.cpp to obj/reactions/determine_2D_bimolecular_reaction_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_2D_bimolecular_reaction_probability.cpp -o obj/reactions/determine_2D_bimolecular_reaction_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_2D_implicitlipid_reaction_probability.cpp to obj/reactions/determine_2D_implicitlipid_reaction_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_2D_implicitlipid_reaction_probability.cpp -o obj/reactions/determine_2D_implicitlipid_reaction_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_3D_bimolecular_reaction_probability.cpp to obj/reactions/determine_3D_bimolecular_reaction_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_3D_bimolecular_reaction_probability.cpp -o obj/reactions/determine_3D_bimolecular_reaction_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_3D_implicitlipid_reaction_probability.cpp to obj/reactions/determine_3D_implicitlipid_reaction_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_3D_implicitlipid_reaction_probability.cpp -o obj/reactions/determine_3D_implicitlipid_reaction_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_entering_compartment_probability.cpp to obj/reactions/determine_entering_compartment_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_entering_compartment_probability.cpp -o obj/reactions/determine_entering_compartment_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_exiting_compartment_probability.cpp to obj/reactions/determine_exiting_compartment_probability.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_exiting_compartment_probability.cpp -o obj/reactions/determine_exiting_compartment_probability.o \n", - "------------\n", - "Compiling src/reactions/determine_if_reaction_occurs.cpp to obj/reactions/determine_if_reaction_occurs.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_if_reaction_occurs.cpp -o obj/reactions/determine_if_reaction_occurs.o \n", - "------------\n", - "Compiling src/reactions/determine_normal.cpp to obj/reactions/determine_normal.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_normal.cpp -o obj/reactions/determine_normal.o \n", - "------------\n", - "Compiling src/reactions/determine_parent_complex_IL.cpp to obj/reactions/determine_parent_complex_IL.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_parent_complex_IL.cpp -o obj/reactions/determine_parent_complex_IL.o \n", - "------------\n", - "Compiling src/reactions/determine_parent_complex.cpp to obj/reactions/determine_parent_complex.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_parent_complex.cpp -o obj/reactions/determine_parent_complex.o \n", - "------------\n", - "Compiling src/reactions/determine_rotation_angles.cpp to obj/reactions/determine_rotation_angles.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/determine_rotation_angles.cpp -o obj/reactions/determine_rotation_angles.o \n", - "------------\n", - "Compiling src/reactions/evaluate_binding_within_complex.cpp to obj/reactions/evaluate_binding_within_complex.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/evaluate_binding_within_complex.cpp -o obj/reactions/evaluate_binding_within_complex.o \n", - "------------\n", - "Compiling src/reactions/find_reaction_rate_state.cpp to obj/reactions/find_reaction_rate_state.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/find_reaction_rate_state.cpp -o obj/reactions/find_reaction_rate_state.o \n", - "------------\n", - "Compiling src/reactions/find_which_reaction.cpp to obj/reactions/find_which_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/find_which_reaction.cpp -o obj/reactions/find_which_reaction.o \n", - "------------\n", - "Compiling src/reactions/find_which_state_change_reaction.cpp to obj/reactions/find_which_state_change_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/find_which_state_change_reaction.cpp -o obj/reactions/find_which_state_change_reaction.o \n", - "------------\n", - "Compiling src/reactions/functions_for_spherical_system.cpp to obj/reactions/functions_for_spherical_system.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/functions_for_spherical_system.cpp -o obj/reactions/functions_for_spherical_system.o \n", - "------------\n", - "Compiling src/reactions/functions_implicitlipid.cpp to obj/reactions/functions_implicitlipid.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/functions_implicitlipid.cpp -o obj/reactions/functions_implicitlipid.o \n", - "------------\n", - "Compiling src/reactions/get_distance_to_surface.cpp to obj/reactions/get_distance_to_surface.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/get_distance_to_surface.cpp -o obj/reactions/get_distance_to_surface.o \n", - "------------\n", - "Compiling src/reactions/get_distance.cpp to obj/reactions/get_distance.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/get_distance.cpp -o obj/reactions/get_distance.o \n", - "------------\n", - "Compiling src/reactions/get_geodesic_distance.cpp to obj/reactions/get_geodesic_distance.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/get_geodesic_distance.cpp -o obj/reactions/get_geodesic_distance.o \n", - "------------\n", - "Compiling src/reactions/get_prevNorm.cpp to obj/reactions/get_prevNorm.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/get_prevNorm.cpp -o obj/reactions/get_prevNorm.o \n", - "------------\n", - "Compiling src/reactions/get_prevSurv.cpp to obj/reactions/get_prevSurv.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/get_prevSurv.cpp -o obj/reactions/get_prevSurv.o \n", - "------------\n", - "Compiling src/reactions/hasIntangibles.cpp to obj/reactions/hasIntangibles.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/hasIntangibles.cpp -o obj/reactions/hasIntangibles.o \n", - "------------\n", - "Compiling src/reactions/init_association_events.cpp to obj/reactions/init_association_events.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/init_association_events.cpp -o obj/reactions/init_association_events.o \n", - "------------\n", - "Compiling src/reactions/initialize_molecule_after_reaction.cpp to obj/reactions/initialize_molecule_after_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/initialize_molecule_after_reaction.cpp -o obj/reactions/initialize_molecule_after_reaction.o \n", - "------------\n", - "Compiling src/reactions/initialize_molecule_after_transmission_reaction.cpp to obj/reactions/initialize_molecule_after_transmission_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/initialize_molecule_after_transmission_reaction.cpp -o obj/reactions/initialize_molecule_after_transmission_reaction.o \n", - "------------\n", - "Compiling src/reactions/integrator.cpp to obj/reactions/integrator.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/integrator.cpp -o obj/reactions/integrator.o \n", - "------------\n", - "Compiling src/reactions/isReactant.cpp to obj/reactions/isReactant.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/isReactant.cpp -o obj/reactions/isReactant.o \n", - "------------\n", - "Compiling src/reactions/measure_complex_displacement.cpp to obj/reactions/measure_complex_displacement.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/measure_complex_displacement.cpp -o obj/reactions/measure_complex_displacement.o \n", - "------------\n", - "Compiling src/reactions/measure_overlap_free_protein_interfaces.cpp to obj/reactions/measure_overlap_free_protein_interfaces.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/measure_overlap_free_protein_interfaces.cpp -o obj/reactions/measure_overlap_free_protein_interfaces.o \n", - "------------\n", - "Compiling src/reactions/measure_overlap_protein_interfaces.cpp to obj/reactions/measure_overlap_protein_interfaces.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/measure_overlap_protein_interfaces.cpp -o obj/reactions/measure_overlap_protein_interfaces.o \n", - "------------\n", - "Compiling src/reactions/measure_separations_to_identify_possible_reactions.cpp to obj/reactions/measure_separations_to_identify_possible_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/measure_separations_to_identify_possible_reactions.cpp -o obj/reactions/measure_separations_to_identify_possible_reactions.o \n", - "------------\n", - "Compiling src/reactions/norm_function.cpp to obj/reactions/norm_function.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/norm_function.cpp -o obj/reactions/norm_function.o \n", - "------------\n", - "Compiling src/reactions/omega_rotation.cpp to obj/reactions/omega_rotation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/omega_rotation.cpp -o obj/reactions/omega_rotation.o \n", - "------------\n", - "Compiling src/reactions/orient_crds_to_template.cpp to obj/reactions/orient_crds_to_template.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/orient_crds_to_template.cpp -o obj/reactions/orient_crds_to_template.o \n", - "------------\n", - "Compiling src/reactions/passocF_1D.cpp to obj/reactions/passocF_1D.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/passocF_1D.cpp -o obj/reactions/passocF_1D.o \n", - "------------\n", - "Compiling src/reactions/passocF.cpp to obj/reactions/passocF.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/passocF.cpp -o obj/reactions/passocF.o \n", - "------------\n", - "Compiling src/reactions/perform_bimolecular_reactions.cpp to obj/reactions/perform_bimolecular_reactions.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_bimolecular_reactions.cpp -o obj/reactions/perform_bimolecular_reactions.o \n", - "------------\n", - "Compiling src/reactions/perform_bimolecular_state_change_box.cpp to obj/reactions/perform_bimolecular_state_change_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_bimolecular_state_change_box.cpp -o obj/reactions/perform_bimolecular_state_change_box.o \n", - "------------\n", - "Compiling src/reactions/perform_bimolecular_state_change_sphere.cpp to obj/reactions/perform_bimolecular_state_change_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_bimolecular_state_change_sphere.cpp -o obj/reactions/perform_bimolecular_state_change_sphere.o \n", - "------------\n", - "Compiling src/reactions/perform_bimolecular_state_change.cpp to obj/reactions/perform_bimolecular_state_change.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_bimolecular_state_change.cpp -o obj/reactions/perform_bimolecular_state_change.o \n", - "------------\n", - "Compiling src/reactions/perform_implicitlipid_state_change_box.cpp to obj/reactions/perform_implicitlipid_state_change_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_implicitlipid_state_change_box.cpp -o obj/reactions/perform_implicitlipid_state_change_box.o \n", - "------------\n", - "Compiling src/reactions/perform_implicitlipid_state_change_sphere.cpp to obj/reactions/perform_implicitlipid_state_change_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_implicitlipid_state_change_sphere.cpp -o obj/reactions/perform_implicitlipid_state_change_sphere.o \n", - "------------\n", - "Compiling src/reactions/perform_implicitlipid_state_change.cpp to obj/reactions/perform_implicitlipid_state_change.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_implicitlipid_state_change.cpp -o obj/reactions/perform_implicitlipid_state_change.o \n", - "------------\n", - "Compiling src/reactions/perform_transmission_reaction.cpp to obj/reactions/perform_transmission_reaction.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/perform_transmission_reaction.cpp -o obj/reactions/perform_transmission_reaction.o \n", - "------------\n", - "Compiling src/reactions/phi_rotation.cpp to obj/reactions/phi_rotation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/phi_rotation.cpp -o obj/reactions/phi_rotation.o \n", - "------------\n", - "Compiling src/reactions/pir_function.cpp to obj/reactions/pir_function.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/pir_function.cpp -o obj/reactions/pir_function.o \n", - "------------\n", - "Compiling src/reactions/pirr_pfree_ratio_psF_1D.cpp to obj/reactions/pirr_pfree_ratio_psF_1D.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/pirr_pfree_ratio_psF_1D.cpp -o obj/reactions/pirr_pfree_ratio_psF_1D.o \n", - "------------\n", - "Compiling src/reactions/pirr_pfree_ratio_psF.cpp to obj/reactions/pirr_pfree_ratio_psF.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/pirr_pfree_ratio_psF.cpp -o obj/reactions/pirr_pfree_ratio_psF.o \n", - "------------\n", - "Compiling src/reactions/print_association_events.cpp to obj/reactions/print_association_events.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/print_association_events.cpp -o obj/reactions/print_association_events.o \n", - "------------\n", - "Compiling src/reactions/remove_empty_slots.cpp to obj/reactions/remove_empty_slots.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/remove_empty_slots.cpp -o obj/reactions/remove_empty_slots.o \n", - "------------\n", - "Compiling src/reactions/requiresSignFlip.cpp to obj/reactions/requiresSignFlip.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/requiresSignFlip.cpp -o obj/reactions/requiresSignFlip.o \n", - "------------\n", - "Compiling src/reactions/reverse_rotation.cpp to obj/reactions/reverse_rotation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/reverse_rotation.cpp -o obj/reactions/reverse_rotation.o \n", - "------------\n", - "Compiling src/reactions/rotate.cpp to obj/reactions/rotate.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/rotate.cpp -o obj/reactions/rotate.o \n", - "------------\n", - "Compiling src/reactions/save_mem_orientation.cpp to obj/reactions/save_mem_orientation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/save_mem_orientation.cpp -o obj/reactions/save_mem_orientation.o \n", - "------------\n", - "Compiling src/reactions/size_lookup.cpp to obj/reactions/size_lookup.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/size_lookup.cpp -o obj/reactions/size_lookup.o \n", - "------------\n", - "Compiling src/reactions/subtract_off_com_position.cpp to obj/reactions/subtract_off_com_position.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/subtract_off_com_position.cpp -o obj/reactions/subtract_off_com_position.o \n", - "------------\n", - "Compiling src/reactions/survival_function.cpp to obj/reactions/survival_function.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/survival_function.cpp -o obj/reactions/survival_function.o \n", - "------------\n", - "Compiling src/reactions/theta_rotation.cpp to obj/reactions/theta_rotation.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/theta_rotation.cpp -o obj/reactions/theta_rotation.o \n", - "------------\n", - "Compiling src/reactions/track_association_events.cpp to obj/reactions/track_association_events.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/track_association_events.cpp -o obj/reactions/track_association_events.o \n", - "------------\n", - "Compiling src/reactions/transform.cpp to obj/reactions/transform.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/transform.cpp -o obj/reactions/transform.o \n", - "------------\n", - "Compiling src/reactions/update_complex_tmp_com_crds.cpp to obj/reactions/update_complex_tmp_com_crds.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/update_complex_tmp_com_crds.cpp -o obj/reactions/update_complex_tmp_com_crds.o \n", - "------------\n", - "Compiling src/reactions/update_Nboundpairs.cpp to obj/reactions/update_Nboundpairs.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/reactions/update_Nboundpairs.cpp -o obj/reactions/update_Nboundpairs.o \n", - "------------\n", - "Compiling src/system_setup/are_molecules_in_vicinity.cpp to obj/system_setup/are_molecules_in_vicinity.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/are_molecules_in_vicinity.cpp -o obj/system_setup/are_molecules_in_vicinity.o \n", - "------------\n", - "Compiling src/system_setup/areInVicinity.cpp to obj/system_setup/areInVicinity.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/areInVicinity.cpp -o obj/system_setup/areInVicinity.o \n", - "------------\n", - "Compiling src/system_setup/determine_shape_molecule.cpp to obj/system_setup/determine_shape_molecule.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/determine_shape_molecule.cpp -o obj/system_setup/determine_shape_molecule.o \n", - "------------\n", - "Compiling src/system_setup/generate_coordinates_for_restart.cpp to obj/system_setup/generate_coordinates_for_restart.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/generate_coordinates_for_restart.cpp -o obj/system_setup/generate_coordinates_for_restart.o \n", - "------------\n", - "Compiling src/system_setup/generate_coordinates.cpp to obj/system_setup/generate_coordinates.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/generate_coordinates.cpp -o obj/system_setup/generate_coordinates.o \n", - "------------\n", - "Compiling src/system_setup/initialize_complex.cpp to obj/system_setup/initialize_complex.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/initialize_complex.cpp -o obj/system_setup/initialize_complex.o \n", - "------------\n", - "Compiling src/system_setup/initialize_molecule.cpp to obj/system_setup/initialize_molecule.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/initialize_molecule.cpp -o obj/system_setup/initialize_molecule.o \n", - "------------\n", - "Compiling src/system_setup/initialize_parameters_for_implicitlipid_and_compartment_model.cpp to obj/system_setup/initialize_parameters_for_implicitlipid_and_compartment_model.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/initialize_parameters_for_implicitlipid_and_compartment_model.cpp -o obj/system_setup/initialize_parameters_for_implicitlipid_and_compartment_model.o \n", - "------------\n", - "Compiling src/system_setup/initialize_states.cpp to obj/system_setup/initialize_states.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/initialize_states.cpp -o obj/system_setup/initialize_states.o \n", - "------------\n", - "Compiling src/system_setup/set_exclude_volume_bound.cpp to obj/system_setup/set_exclude_volume_bound.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/set_exclude_volume_bound.cpp -o obj/system_setup/set_exclude_volume_bound.o \n", - "------------\n", - "Compiling src/system_setup/set_rMaxLimit.cpp to obj/system_setup/set_rMaxLimit.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/system_setup/set_rMaxLimit.cpp -o obj/system_setup/set_rMaxLimit.o \n", - "------------\n", - "Compiling src/trajectory_functions/calculate_update_position_interface.cpp to obj/trajectory_functions/calculate_update_position_interface.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/calculate_update_position_interface.cpp -o obj/trajectory_functions/calculate_update_position_interface.o \n", - "------------\n", - "Compiling src/trajectory_functions/clear_reweight_vecs.cpp to obj/trajectory_functions/clear_reweight_vecs.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/clear_reweight_vecs.cpp -o obj/trajectory_functions/clear_reweight_vecs.o \n", - "------------\n", - "Compiling src/trajectory_functions/create_complex_propagation_vectors_on_sphere.cpp to obj/trajectory_functions/create_complex_propagation_vectors_on_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/create_complex_propagation_vectors_on_sphere.cpp -o obj/trajectory_functions/create_complex_propagation_vectors_on_sphere.o \n", - "------------\n", - "Compiling src/trajectory_functions/create_complex_propagation_vectors.cpp to obj/trajectory_functions/create_complex_propagation_vectors.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/create_complex_propagation_vectors.cpp -o obj/trajectory_functions/create_complex_propagation_vectors.o \n", - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_box.cpp to obj/trajectory_functions/sweep_separation_complex_rot_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_box.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_box.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:35:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 35 | int ifaceList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:35:19: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:29:9: note: declared here\n", - " 29 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:36:21: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 36 | int overlapList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:36:21: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:29:9: note: declared here\n", - " 29 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:164:30: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 164 | int resampleList[complexList.size()]; // if this is 0, we need resample\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:164:30: note: function parameter 'complexList' with unknown value cannot be used in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_box.cpp:8:64: note: declared here\n", - " 8 | std::vector& moleculeList, std::vector& complexList, const std::vector& forwardRxns,\n", - " | ^\n", - "3 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp to obj/trajectory_functions/sweep_separation_complex_rot_fiber_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_fiber_box.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:43:17: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 43 | int ifaceList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:43:17: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:37:7: note: declared here\n", - " 37 | int maxRows{1};\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:44:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 44 | int overlapList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:44:19: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:37:7: note: declared here\n", - " 37 | int maxRows{1};\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:45:20: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 45 | int memCheckList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:45:20: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:37:7: note: declared here\n", - " 37 | int maxRows{1};\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:229:24: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 229 | int resampleList[complexList.size()]; // if this is 0, we need resample\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:229:24: note: function parameter 'complexList' with unknown value cannot be used in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_fiber_box.cpp:11:64: note: declared here\n", - " 11 | std::vector &moleculeList, std::vector &complexList,\n", - " | ^\n", - "4 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_fiber.cpp to obj/trajectory_functions/sweep_separation_complex_rot_fiber.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_fiber.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_fiber.o \n", - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp to obj/trajectory_functions/sweep_separation_complex_rot_memtest_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_memtest_box.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:34:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 34 | int ifaceList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:34:19: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:28:9: note: declared here\n", - " 28 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:35:21: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 35 | int overlapList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:35:21: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:28:9: note: declared here\n", - " 28 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:36:22: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 36 | int memCheckList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:36:22: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:28:9: note: declared here\n", - " 28 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:169:30: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 169 | int resampleList[complexList.size()]; // if this is 0, we need resample\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:169:30: note: function parameter 'complexList' with unknown value cannot be used in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_box.cpp:7:153: note: declared here\n", - " 7 | void sweep_separation_complex_rot_memtest_box(int simItr, int pro1Index, Parameters& params, std::vector& moleculeList, std::vector& complexList, const std::vector& forwardRxns, const std::vector& molTemplateList, const Membrane& membraneObject)\n", - " | ^\n", - "4 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_box.cpp to obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_box.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_box.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_box.o \n", - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_sphere.cpp to obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_sphere.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_sphere.o \n", - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_memtest_cluster.cpp to obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_memtest_cluster.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster.o \n", - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp to obj/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:46:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 46 | int ifaceList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:46:19: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:40:9: note: declared here\n", - " 40 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:47:21: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 47 | int overlapList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:47:21: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:40:9: note: declared here\n", - " 40 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:48:22: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 48 | int memCheckList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:48:22: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:40:9: note: declared here\n", - " 40 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:203:30: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 203 | int resampleList[complexList.size()]; // if this is 0, we need resample\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:203:30: note: function parameter 'complexList' with unknown value cannot be used in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.cpp:19:156: note: declared here\n", - " 19 | void sweep_separation_complex_rot_memtest_sphere(int simItr, int pro1Index, Parameters& params, std::vector& moleculeList, std::vector& complexList, const std::vector& forwardRxns, const std::vector& molTemplateList, const Membrane& membraneObject)\n", - " | ^\n", - "4 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_memtest.cpp to obj/trajectory_functions/sweep_separation_complex_rot_memtest.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_memtest.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_memtest.o \n", - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp to obj/trajectory_functions/sweep_separation_complex_rot_sphere.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp -o obj/trajectory_functions/sweep_separation_complex_rot_sphere.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:34:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 34 | int ifaceList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:34:19: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:28:9: note: declared here\n", - " 28 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:35:21: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 35 | int overlapList[maxRows * com1Size];\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:35:21: note: read of non-const variable 'maxRows' is not allowed in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:28:9: note: declared here\n", - " 28 | int maxRows { 1 };\n", - " | ^\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:169:30: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 169 | int resampleList[complexList.size()]; // if this is 0, we need resample\n", - " | ^~~~~~~~~~~~~~~~~~\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:169:30: note: function parameter 'complexList' with unknown value cannot be used in a constant expression\n", - "src/trajectory_functions/sweep_separation_complex_rot_sphere.cpp:8:64: note: declared here\n", - " 8 | std::vector& moleculeList, std::vector& complexList, const std::vector& forwardRxns,\n", - " | ^\n", - "3 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/trajectory_functions/sweep_separation_complex_rot.cpp to obj/trajectory_functions/sweep_separation_complex_rot.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/trajectory_functions/sweep_separation_complex_rot.cpp -o obj/trajectory_functions/sweep_separation_complex_rot.o \n", - "------------\n", - "Compiling src/io/eye_candy.cpp to obj/io/eye_candy.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/eye_candy.cpp -o obj/io/eye_candy.o \n", - "------------\n", - "Compiling src/io/init_counterCopyNums.cpp to obj/io/init_counterCopyNums.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/init_counterCopyNums.cpp -o obj/io/init_counterCopyNums.o \n", - "------------\n", - "Compiling src/io/init_NboundPairs.cpp to obj/io/init_NboundPairs.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/init_NboundPairs.cpp -o obj/io/init_NboundPairs.o \n", - "------------\n", - "Compiling src/io/init_print_dimers.cpp to obj/io/init_print_dimers.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/init_print_dimers.cpp -o obj/io/init_print_dimers.o \n", - "------------\n", - "Compiling src/io/init_speciesFile.cpp to obj/io/init_speciesFile.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/init_speciesFile.cpp -o obj/io/init_speciesFile.o \n", - "------------\n", - "Compiling src/io/print_complex_hist.cpp to obj/io/print_complex_hist.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/print_complex_hist.cpp -o obj/io/print_complex_hist.o \n", - "------------\n", - "Compiling src/io/print_dimers.cpp to obj/io/print_dimers.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/print_dimers.cpp -o obj/io/print_dimers.o \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "src/io/print_dimers.cpp:20:17: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 20 | double mult[nTypes];\n", - " | ^~~~~~\n", - "src/io/print_dimers.cpp:20:17: note: read of non-const variable 'nTypes' is not allowed in a constant expression\n", - "src/io/print_dimers.cpp:18:9: note: declared here\n", - " 18 | int nTypes = params.numMolTypes;\n", - " | ^\n", - "src/io/print_dimers.cpp:94:18: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 94 | int monomers[nTypes];\n", - " | ^~~~~~\n", - "src/io/print_dimers.cpp:94:18: note: read of non-const variable 'nTypes' is not allowed in a constant expression\n", - "src/io/print_dimers.cpp:18:9: note: declared here\n", - " 18 | int nTypes = params.numMolTypes;\n", - " | ^\n", - "src/io/print_dimers.cpp:95:16: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]\n", - " 95 | int dimers[nTypes];\n", - " | ^~~~~~\n", - "src/io/print_dimers.cpp:95:16: note: read of non-const variable 'nTypes' is not allowed in a constant expression\n", - "src/io/print_dimers.cpp:18:9: note: declared here\n", - " 18 | int nTypes = params.numMolTypes;\n", - " | ^\n", - "3 warnings generated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------\n", - "Compiling src/io/print_system_information.cpp to obj/io/print_system_information.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/print_system_information.cpp -o obj/io/print_system_information.o \n", - "------------\n", - "Compiling src/io/read_restart.cpp to obj/io/read_restart.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/read_restart.cpp -o obj/io/read_restart.o \n", - "------------\n", - "Compiling src/io/write_all_species.cpp to obj/io/write_all_species.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_all_species.cpp -o obj/io/write_all_species.o \n", - "------------\n", - "Compiling src/io/write_complex_components.cpp to obj/io/write_complex_components.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_complex_components.cpp -o obj/io/write_complex_components.o \n", - "------------\n", - "Compiling src/io/write_complex_crds.cpp to obj/io/write_complex_crds.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_complex_crds.cpp -o obj/io/write_complex_crds.o \n", - "------------\n", - "Compiling src/io/write_crds.cpp to obj/io/write_crds.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_crds.cpp -o obj/io/write_crds.o \n", - "------------\n", - "Compiling src/io/write_NboundPairs.cpp to obj/io/write_NboundPairs.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_NboundPairs.cpp -o obj/io/write_NboundPairs.o \n", - "------------\n", - "Compiling src/io/write_observables.cpp to obj/io/write_observables.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_observables.cpp -o obj/io/write_observables.o \n", - "------------\n", - "Compiling src/io/write_pdb.cpp to obj/io/write_pdb.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_pdb.cpp -o obj/io/write_pdb.o \n", - "------------\n", - "Compiling src/io/write_psf.cpp to obj/io/write_psf.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_psf.cpp -o obj/io/write_psf.o \n", - "------------\n", - "Compiling src/io/write_restart.cpp to obj/io/write_restart.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_restart.cpp -o obj/io/write_restart.o \n", - "------------\n", - "Compiling src/io/write_timestep_information.cpp to obj/io/write_timestep_information.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_timestep_information.cpp -o obj/io/write_timestep_information.o \n", - "------------\n", - "Compiling src/io/write_traj.cpp to obj/io/write_traj.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_traj.cpp -o obj/io/write_traj.o \n", - "------------\n", - "Compiling src/io/write_transition.cpp to obj/io/write_transition.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_transition.cpp -o obj/io/write_transition.o \n", - "------------\n", - "Compiling src/io/write_xyz_assoc_cout.cpp to obj/io/write_xyz_assoc_cout.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_xyz_assoc_cout.cpp -o obj/io/write_xyz_assoc_cout.o \n", - "------------\n", - "Compiling src/io/write_xyz_assoc.cpp to obj/io/write_xyz_assoc.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_xyz_assoc.cpp -o obj/io/write_xyz_assoc.o \n", - "------------\n", - "Compiling src/io/write_xyz.cpp to obj/io/write_xyz.o\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -c src/io/write_xyz.cpp -o obj/io/write_xyz.o \n", - "------------\n", - "Compiling EXEs/nerdss.cpp\n", - "g++ -O3 -std=c++0x -I/opt/homebrew/Cellar/gsl/2.8/include -Iinclude -o bin/nerdss EXEs/nerdss.cpp obj/boundary_conditions/check_if_spans_box.o obj/boundary_conditions/check_if_spans_sphere.o obj/boundary_conditions/check_if_spans.o obj/boundary_conditions/reflect_complex_compartment.o obj/boundary_conditions/reflect_complex_rad_rot_box.o obj/boundary_conditions/reflect_complex_rad_rot_sphere.o obj/boundary_conditions/reflect_complex_rad_rot.o obj/boundary_conditions/reflect_traj_check_span_box.o obj/boundary_conditions/reflect_traj_check_span_sphere.o obj/boundary_conditions/reflect_traj_check_span.o obj/boundary_conditions/reflect_traj_complex_compartment.o obj/boundary_conditions/reflect_traj_complex_rad_rot_box.o obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_box.o obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck_sphere.o obj/boundary_conditions/reflect_traj_complex_rad_rot_nocheck.o obj/boundary_conditions/reflect_traj_complex_rad_rot_sphere.o obj/boundary_conditions/reflect_traj_complex_rad_rot.o obj/boundary_conditions/reflect_traj_tmp_crds_box.o obj/boundary_conditions/reflect_traj_tmp_crds_compartment.o obj/boundary_conditions/reflect_traj_tmp_crds_sphere.o obj/boundary_conditions/reflect_traj_tmp_crds.o obj/classes/class_bngl_parser_functions.o obj/classes/class_Cluster.o obj/classes/class_Coord.o obj/classes/class_MDTimer.o obj/classes/class_Molecule_Complex.o obj/classes/class_MolTemplate.o obj/classes/class_Observable.o obj/classes/class_Parameters.o obj/classes/class_Quat.o obj/classes/class_Rxns.o obj/classes/class_SimulVolume.o obj/classes/class_Vector.o obj/classes/mpi_functions.o obj/error/error.o obj/math/Faddeeva.o obj/math/math_functions.o obj/math/matrix_functions.o obj/math/rand_gsl.o obj/parser/areSameExceptState.o obj/parser/check_for_state_change.o obj/parser/check_for_valid_states.o obj/parser/create_conjugate_reaction_itrs.o obj/parser/determine_bound_iface_index.o obj/parser/determine_iface_indices.o obj/parser/display_all_MolTemplates.o obj/parser/display_all_reactions.o obj/parser/parse_command.o obj/parser/parse_input_array.o obj/parser/parse_input_for_a_new_simulation.o obj/parser/parse_input_for_a_restart_simulation.o obj/parser/parse_input_for_add_file.o obj/parser/parse_input.o obj/parser/parse_molecule_bngl.o obj/parser/parse_molFile.o obj/parser/parse_observable.o obj/parser/parse_reaction.o obj/parser/parse_states.o obj/parser/populate_reaction_lists.o obj/parser/read_bonds.o obj/parser/read_boolean.o obj/parser/read_internal_coordinates.o obj/parser/remove_comment.o obj/parser/write_mol_iface.o obj/reactions/angleSignIsCorrect.o obj/reactions/areParallel.o obj/reactions/areSameAngle.o obj/reactions/associate_box.o obj/reactions/associate_ImplicitLipid_box.o obj/reactions/associate_ImplicitLipid_sphere.o obj/reactions/associate_ImplicitLipid.o obj/reactions/associate_sphere.o obj/reactions/associate.o obj/reactions/break_interaction_implicitlipid.o obj/reactions/break_interaction.o obj/reactions/calc_angular_displacement.o obj/reactions/calc_one_angular_displacement.o obj/reactions/calc_pirr.o obj/reactions/calculate_omega.o obj/reactions/calculate_phi.o obj/reactions/check_bases.o obj/reactions/check_bimolecular_reactions.o obj/reactions/check_compartment_reaction.o obj/reactions/check_dissociation_implicitlipid.o obj/reactions/check_dissociation.o obj/reactions/check_for_structure_overlap_system.o obj/reactions/check_for_structure_overlap.o obj/reactions/check_for_unimolecular_reactions_population.o obj/reactions/check_for_unimolecular_reactions.o obj/reactions/check_for_unimolstatechange_reactions.o obj/reactions/check_for_zeroth_order_creation.o obj/reactions/check_implicit_reactions.o obj/reactions/check_overlap.o obj/reactions/check_perform_zeroth_first_order_reactions.o obj/reactions/com_of_two_tmp_complexes.o obj/reactions/conservedMags.o obj/reactions/conservedRigid.o obj/reactions/correct_structutre.o obj/reactions/create_arbitrary_vector.o obj/reactions/create_DDMatrices.o obj/reactions/create_molecule_and_complex_from_rxn.o obj/reactions/create_molecule_and_complex_from_transmission_rxn.o obj/reactions/create_normMatrix.o obj/reactions/create_pirMatrix.o obj/reactions/create_survMatrix.o obj/reactions/DDpirr_pfree_ratio_ps.o obj/reactions/determine_1D_bimolecular_reaction_probability.o obj/reactions/determine_2D_bimolecular_reaction_probability.o obj/reactions/determine_2D_implicitlipid_reaction_probability.o obj/reactions/determine_3D_bimolecular_reaction_probability.o obj/reactions/determine_3D_implicitlipid_reaction_probability.o obj/reactions/determine_entering_compartment_probability.o obj/reactions/determine_exiting_compartment_probability.o obj/reactions/determine_if_reaction_occurs.o obj/reactions/determine_normal.o obj/reactions/determine_parent_complex_IL.o obj/reactions/determine_parent_complex.o obj/reactions/determine_rotation_angles.o obj/reactions/evaluate_binding_within_complex.o obj/reactions/find_reaction_rate_state.o obj/reactions/find_which_reaction.o obj/reactions/find_which_state_change_reaction.o obj/reactions/functions_for_spherical_system.o obj/reactions/functions_implicitlipid.o obj/reactions/get_distance_to_surface.o obj/reactions/get_distance.o obj/reactions/get_geodesic_distance.o obj/reactions/get_prevNorm.o obj/reactions/get_prevSurv.o obj/reactions/hasIntangibles.o obj/reactions/init_association_events.o obj/reactions/initialize_molecule_after_reaction.o obj/reactions/initialize_molecule_after_transmission_reaction.o obj/reactions/integrator.o obj/reactions/isReactant.o obj/reactions/measure_complex_displacement.o obj/reactions/measure_overlap_free_protein_interfaces.o obj/reactions/measure_overlap_protein_interfaces.o obj/reactions/measure_separations_to_identify_possible_reactions.o obj/reactions/norm_function.o obj/reactions/omega_rotation.o obj/reactions/orient_crds_to_template.o obj/reactions/passocF_1D.o obj/reactions/passocF.o obj/reactions/perform_bimolecular_reactions.o obj/reactions/perform_bimolecular_state_change_box.o obj/reactions/perform_bimolecular_state_change_sphere.o obj/reactions/perform_bimolecular_state_change.o obj/reactions/perform_implicitlipid_state_change_box.o obj/reactions/perform_implicitlipid_state_change_sphere.o obj/reactions/perform_implicitlipid_state_change.o obj/reactions/perform_transmission_reaction.o obj/reactions/phi_rotation.o obj/reactions/pir_function.o obj/reactions/pirr_pfree_ratio_psF_1D.o obj/reactions/pirr_pfree_ratio_psF.o obj/reactions/print_association_events.o obj/reactions/remove_empty_slots.o obj/reactions/requiresSignFlip.o obj/reactions/reverse_rotation.o obj/reactions/rotate.o obj/reactions/save_mem_orientation.o obj/reactions/size_lookup.o obj/reactions/subtract_off_com_position.o obj/reactions/survival_function.o obj/reactions/theta_rotation.o obj/reactions/track_association_events.o obj/reactions/transform.o obj/reactions/update_complex_tmp_com_crds.o obj/reactions/update_Nboundpairs.o obj/system_setup/are_molecules_in_vicinity.o obj/system_setup/areInVicinity.o obj/system_setup/determine_shape_molecule.o obj/system_setup/generate_coordinates_for_restart.o obj/system_setup/generate_coordinates.o obj/system_setup/initialize_complex.o obj/system_setup/initialize_molecule.o obj/system_setup/initialize_parameters_for_implicitlipid_and_compartment_model.o obj/system_setup/initialize_states.o obj/system_setup/set_exclude_volume_bound.o obj/system_setup/set_rMaxLimit.o obj/trajectory_functions/calculate_update_position_interface.o obj/trajectory_functions/clear_reweight_vecs.o obj/trajectory_functions/create_complex_propagation_vectors_on_sphere.o obj/trajectory_functions/create_complex_propagation_vectors.o obj/trajectory_functions/sweep_separation_complex_rot_box.o obj/trajectory_functions/sweep_separation_complex_rot_fiber_box.o obj/trajectory_functions/sweep_separation_complex_rot_fiber.o obj/trajectory_functions/sweep_separation_complex_rot_memtest_box.o obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_box.o obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster_sphere.o obj/trajectory_functions/sweep_separation_complex_rot_memtest_cluster.o obj/trajectory_functions/sweep_separation_complex_rot_memtest_sphere.o obj/trajectory_functions/sweep_separation_complex_rot_memtest.o obj/trajectory_functions/sweep_separation_complex_rot_sphere.o obj/trajectory_functions/sweep_separation_complex_rot.o obj/io/eye_candy.o obj/io/init_counterCopyNums.o obj/io/init_NboundPairs.o obj/io/init_print_dimers.o obj/io/init_speciesFile.o obj/io/print_complex_hist.o obj/io/print_dimers.o obj/io/print_system_information.o obj/io/read_restart.o obj/io/write_all_species.o obj/io/write_complex_components.o obj/io/write_complex_crds.o obj/io/write_crds.o obj/io/write_NboundPairs.o obj/io/write_observables.o obj/io/write_pdb.o obj/io/write_psf.o obj/io/write_restart.o obj/io/write_timestep_information.o obj/io/write_traj.o obj/io/write_transition.o obj/io/write_xyz_assoc_cout.o obj/io/write_xyz_assoc.o obj/io/write_xyz.o -L/opt/homebrew/Cellar/gsl/2.8/lib -lgsl -lgslcblas \n", - "------------\n", - "Finished making (re-)building serial version, bin/nerdss.\n", - "NERDSS installation complete.\n", "Running simulation 1...\n" ] }, @@ -1141,32 +156,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "Simulation 1: 0%| | 0/100 [15:31" + "" ] }, - "execution_count": 5, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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GjRoIJ999pkYmU0FiT1IRERE3hGQEFDuvfde6devn6rQYHVrNGn/8ssvanabtjcaFWahSLNHz4WIiIicWEGaM2eOvPXWW6oZG5UjVJJQOZo9e7Zcf/31V/uWpYpJV3VLZwWJiIjIe9ZBatu2rZrOn5KSotZBCg8Pl+DgYOefnRfSD7FlMCAREREZku/VPHnfvn2ye/du632EIizCOGPGDNm1a5crzs+rh9gyzFwokoiIqEQHJMwgw8awS5cutTl+7tw51Zx91113qXWI6GoqSAxIREREJTYgYZXsd999V23zMXLkSJvHUEHCNiCYco+p+H/88YerztUrcKFIIiIiLwlIn3/+udx6663y0ksvqa1F7GEvNiweqa1mTYXdaoQVJCIiohIbkPbv3y99+/a94vP69++v+pSosJvVsoJERERUYgNSampqoWapYTXrpKQkZ5xX6QhInMVGRERUcgMSNqctTGVo7969qieJCjnElsUhNiIiohIbkLp37672Obt06VK+z8HmsHhOp06dnHl+Xl1B4ma1REREJTggDRkyRF1ji5EVK1aoBSI1uP3rr7+qxzAUN2zYMNedrZetpM0eJCIiohK8knZYWJjaRuTxxx9Xe7H5+flJZGSkZGVlSVxcnJjNZrVRLGawVa5c2fVnXYKZTOxBIiIi8pqtRurWrSvffvutrFmzRq17dPbsWTGZTFKlShU1rNaxY0d1nwpfQeIQGxERkRfsxYbK0S233KIuVDS+ukFNczabtImIiEr8Xmzk7AqSR0+FiIiI8sGA5GacxUZERGR8DEge3Kw2iwGJiIjIkBiQPDnEls2ARERE5BUBqaDFIuGff/4pzvmUqiE2VpCIiIi8JCBh09oNGzbkOZ6eni6vv/663H///c46N6/faoQVJCIiIi8JSHXq1JFHHnlEXnnlFRWK4N9//5Xbb79dbTXywAMPuOI8vYafvkmb+YiIiKjkr4MECEGff/65vPPOO7Jp0ya54YYbZNGiRWol7SVLlkjjxo1dc6Zegk3aREREXhiQtL3ZateuLSNHjpSDBw9Ko0aNVEgKCAhw/hl6IWQkZKMsDrERERF5xxBbRkaGzJw5U8aMGaO2GXnwwQflwIED0r9/f9mxY4drztJL+5CyuFAkERGRdwSkfv36yaxZs+TOO++UH374QZ5++mn55ptvxN/fX+69917Vm0SF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RGQY2EwYFw2CEAJQixYt8jzX05sOY4+uZs2aFTocAfaRmjFjhixcuFBtwElExsUhNiIqceyH2DA099BDD8nixYtVCEFwGThwoNoYGhu7otKD3djvvvtu2bNnj817/f3333L//ferx9u0aSNPP/20TRXLETyOjZH79Oljc/zzzz9Xw2hNmzaVTp06yQsvvCCJiYk2z8G5zJs3Tw25EZFxMSARkVfAbt/z589XYWnatGly6NAhGT58uLo9YsQIefvtt+XMmTMyfvx462u2bNkiDz74oBruQmVn0qRJsnnzZrWreGpqar4/69dff5XMzEzp0qWL9diPP/6ohs8GDRokc+fOVTu+Yyjt5ZdftnktAtS5c+fUzyEi4+IQGxF5haSkJBVy6tatq+4jgCxatEg+++wzadeunTp27Ngxef311yU+Pl7Cw8Plrbfektq1a8vHH38sJpNJPQeVpN69e8s333yjwo4jf/31l/o5ISEh1mP4edWqVVOv8fX1VdWoMmXKSFxcnM1ra9asKREREfLnn39Kx44dXfiJEFFxsIJERF4BoUMLR1C+fHlr4NFERkaqawSklJQU2bFjh9x4442CuSqoCOFSvXp19T4bN27M92edOHFChSG9tm3bqiG9O++8UzWV//fff2o4DbPu7FWpUsXjM/CIqGCsIBGRV8DsNkdQxXEEISkrK0vNQsPFXmBgYL4/C31FwcHBNsd69eql3m/BggVq9t37778vVatWVUN6eEwPr7XvTSIiY2FAIqJSCcNjPj4+qgcJQ2r27AOQXlRUlCQkJOQ5jqZtXPDYhg0bVPCaMGGCtGrVSipWrGgTzlBFIiLj4hAbEZXaihPWUTp8+LCadaZd6tevr6o/mzZtyve1CDdo+NZ7/PHHVWM2hIWFya233iqjRo1Sw3bnz5+3Pg/DeWjSRnWJiIyLAYmISq0nn3xSVXqeeuopWbt2rfz+++/y8MMPqwbqgtY36tChgxw4cMCmioQeJCwEiSZwvB6rbL/77rtSq1YtadiwofV5+/fvV6/DMgBEZFwcYiOiUguzyDAlH03VY8eOFX9/fxWMsE6Ro8UpNZje7+fnJ+vXr7f2F2HdpYyMDDVzDn1IWDoAs+cwxIb31axbt04qVKggLVu2dMvvSERFw61GiIiKAOsboYr0xRdfFPo1+Ou2R48eav829D4RkXFxiI2IqAhGjhwpe/fulX///bfQr8ECk2azWVWbiMjYWEEiIiqi5cuXqwoShtWuBFuLYF2kqVOnqlltRGRsDEhEREREdjjERkRERGSHAYmIiIjIDgMSERERkR0GJCIiIiI7DEhEREREdhiQiIiIiOwwIBERERHZYUAiIiIissOARERERCS2/h/HqDF4da+DjgAAAABJRU5ErkJggg==", + "image/png": "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CAABAJAgDUCm0t7C4W9YAAAAAAB8GaFy+eWXp/vvHTp0cLztrFmzrIN38Jee4a8NTKtXr5Y///zTarNYt24dB/xcdOzYMes5XrNmjfX8Ll682Prff/75x/r348ePx3oVEYIGR7Zv3269dn///bcsWbLEet3031JSUiQj69+/v+3oxo4dO0qs6WukY4wi/e4y+RlGjx4tBw8ejGj94O5r/eSTT1pthaFce+210rx5c1/XK95lzpzZNqR95MgRKwQEwH+ZY/CYAADALWnSPClJIifSXHU6xH+fTHMjp7NYAAAAAACIhh7w1lEndnRUSqiDqHXq1JGyZcvK2rVrQ95e/7YdOHCgPPHEE1GvL0IfINXX8ffff5f58+dboZ+tW7eGPIifO3duKV26tNSqVUsuvvhiufTSSwPRnDBnzhwZO3asLFiw4L8Bm/z580uRIkWsn0VbSVq0aGE1fLgdplq0aJH89ddfVlBk1apV1uObhKl0/VLHEFWrVk3q169/zkiiWNu/f7/1/tGgmF42b95s/Zte9DnOlSuX5M2bV8qVKycVK1aURo0aWT9H9uzZJSh0m5g9e7bMmzdPli9fLhs3brQCXOnJmjWrnH/++dbrddFFF1njD/VzLiPQkIU264SSlJQUFwGgX375xdoG7RQqVMgaVRmqHUU/B+0CPtqMpyGgeBh3lpF9+eWX1md+KLqt9ujRw9d1CgrdVr///vuQ1w8YMEDuvvtuq9ERgH8IAAEAEGDJaQJAe5KTrUs4UggAAQAAAABi3P6jB/s1xBDKlVdeKR999JHtfegB5UceecQ6sO6Gt956S77++mvbZXTES58+fcRPejb9c889Z7uMPl/vvPOOa6N69ADejz/+aDWXmNKD3tp6opdBgwZZTQH6fF133XXWgXE9yO8VDehs2rQp5PUazjibtuq89NJL6YbVduzYYV1SfxZ9j2kTxB133CH16tWLKvQzefJkmTRpksycOTPiJpC9e/daF12/VCVLlpR27dpZwQINB8XCyZMnZcaMGTJy5EiZNm2abVvRvn37rIs2eeltdNvLmTOntG/fXm655ZaQgaaePXvK9OnTQ96v3lYvXtEA0+DBg60QR3rvq1D0udBwpF5021I1a9aUq6++Wjp37nzOOMREou8Hu/e6hj41cBGE764rrrgiZLBBw2utW7eWYcOG2d6HhldjEQDS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HgEgIEK+/vprx3YYRIK27urUqZMsWbIkYttYv369aZllp8+6k/SL1rBhw+SBBx6IaEBn0qRJZmeJXk8gWrTsclgIAAEAAAAAAoQU7FTtsFMJJJoKFChg2qnYoQEFJyqNaHWOcuXKBf132oZeQw9u0ErexYoVszV2w4YNpiKPhnJ++eUX24EM/btnn33WhD/sVtTWyhd6cqFWKoo3WonHbis8rfailbOmT58eVHUcDUrobapV2N94442QKut42Gnv50+ePHnkhRdesB2u08eCVrfR4JlWlfrwww9Na6/ff//dLPqzVnC/6667zBhtM6bBsWjtN7vxxhtNQMQO3Qet1fX1hFgNYmjlIzu0DZ/eDnoS66hRo2zPTauy1K5dW+KFPpetWv/Mnz/fsaCXPrfivXKd0ioudlt7xfKxKCQ+fQ20CvFdcMEF4R/LAGBL7DVlBhKA9lq2W6ozGn766Se54447wjrDxC79Ajp06FDTiktLtUaafknQUsJuhY7WrVsn3bp1k48//liqVavmyjYBb6F8Zj6zAhAJIAAAAABA6AdRU1JSbLcpiSY9iUuDFnaqqkydOtV25YVAtDLLiy++GNTfaFApb9684oaiRYua6irawshuYOHHH380i7bmaty4sdSsWVPKli1rwiDaTkcrg+/du9dU39DK4NoiKZTKMrFcUSoQvS30frdb6UhPLNQwjFZG0NtTQx1a/UhvTw2Daes1PbCqQRit8qO36datW21ddv78+aVMmTIBTwDdv3+/ecyH+pjT1k5auSaYfeFadUifi3aej/5oyEqDEX/++WfAceEcbNbHs7Yu6969u6xZs8bW3+h9pOEcrbivbdLq1q1rgoAFCxY0wTa9P/X66+UtWrRI/vjjD1sVkbxpmO7aa6+VeHPxxRebkE+gx6K+XtgNvPijt+fkyZNthZLsBkOj/d61ePFiW68lGrI8//zzXZkX4E1bUFpVL9PXAADuIAAEOEw/aN1yyy2uhGtCDf9o3+VwzgwJheesnd69e0d0O1r61O1yl/qlrW/fvjJ69GgpX768q9sGUrz2Y4QS5SH+AwAAAADwd4KbnYPeGlooXry4xDo9KKrBii1btliO/fTTTx0JAGllJG3RFExreq3Y7aYaNWrI22+/bfZnajghmMoxU6ZMMYuTbr31VunatavEs/vvv9+EpLZt2xZUu71p06aZ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QWZd9LorDVRpy6mrr77anBAZKQMHDjQhnkDBGK3G7k0fF/p808dIxmMEnseF57roMRQNZ/Xo0UMuu+wyE+CKNRpu0xCTP9myZTPHg5w2bdo085ix0rlz54hUH3Katinr37+/3H///ZZjx48fn3QBoOLFi0vXrl1l1KhRlmP1OMlNN93kyrySmT63L730UvN49EVf38aMGSNDhw51fW4AEAti71NbhBUrVsx8icn4Adc7HKMf4DThnygWLVpkvlAFCv94UrNAMDT1b6cPbpUqVcyX+EjQL9p6Zk4gBICQDBxpAUYFIAAAAACAQzRsMGTIEMvKCuXLl3dtTolIK+w88cQT0qpVK/nggw8Chn/8OX36tKma37NnT7n11ltl9+7dtv5OK4LrfayhJA16BQr/+KOhk3feeccENTTAFGj/tdN0vsOHDzf7xZ9//vmgwj/+/PXXX+b+uOSSS+T999+XU6dOSSzQalAaSJkwYYLt2/iPP/6Qe++917Tb0WMMsWbcuHEB12v7L60S4rQpU6bYGqe3d7xo166dqQBlRcN7+hhPNvraaKezgVYKgjv0NTYQDXTqsSMASEZJFwCy88FLPwDrh3T94hPvtBylvy/a3oEgLYVHSALB0i/nenZRIPo4e+SRR8yZBJGg4R+rL9J2H9u6w0EvT7/EaE9vLVMcyk4TIJ5agHn/VToVgAAAAAAADnnooYcCBkm04sy1117r6pwSzU8//WQO3H/yySeOBU30RNIOHTpYniD7ww8/mG1rCENbizlxouHTTz8tt912mxw7dkwi7bvvvjOVbd58882QgktW9uzZY6rtXHXVVbJw4UKJJq32dP3118uWLVtCrrRjJ/zgJj12owf4wwkIhOLIkSMyb948y3FVq1Y17dTihe67t9suTZ87yUaDqtoaz8qSJUssj5fAGRdeeKGpBBQooJqMj1UASNoAkH6w95QT9f7g6t0KTBPxDz/8sMS7p5566r8P6P6S/bpOy5ICwdi6das5i8WKniESSulgp9p/+QsA6Y6EWbNmmXK23bt3l/r165uyuPr6oCV69TmhZy+df/750qBBA/O7J5980qT43dgJAbhVAcgb+R8AAAAAgBM0FDJjxgy/6/PkyWPCHrEWKognb7/9ttx8882ya9cuxy9bg1vaxmbBggU+12u7L60UpCEXp2kASbcdqcoNGpTSiuZ3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c89lXbP++utHOdh1113jnHPOSduodue6666Lww47LG3L2ld+9KMfRXNzc7drkrnIA7E9KsVXnWdfPyPAAAAAgEo2evTo9E2M2d7smLxxsFgBoH/9619x//33d7l/1KhR6YvT559/fk4jzAaqtdZaqyBBgEJJQl1//vOfY8aMGd2umzNnTpx44olx/fXXx9ChQ6NcJF3t//jHP+a09qCDDoo111wzBpJkusBZZ52V09o999wzxo8f3+c10fvgXy7/fwD0F0aAATnPvl5vvfWiHCTjtLbeeuus66ZMmRJXXXVVn74D4G9/+1vWdZ/+9Kdj9dVX77M6oF11nh2ABIAAAACASvc///M/Wdck3cVnzpxZlHp+97vfZQ2IJMEVL1B3b9111y2bDkCJJMxz+umn57T2hRdeSNdmeyNpsUyYMCHncEvSoerkk0+OgST5d/rqV78a7733Xk7df/73f/+3KHXR++BfLv9/APQXAkBAOut38uTJWdt8rr322lEuPve5z+W0LmnDmozpKrSXX345vvWtb2VdV11dHSeddFLBjw+Z1FTnOwKsYKUAAAAAlMQ+++yTPpfZncWLF8evfvWrPq8l6fzz8MMPZ133qU99qk+7mPcHSZekESNGdLvm1Vdfzdo1vtDfa8nYuVz885//jP/7v/+LxsbGKKUHH3wwvvjFL0ZTU1NO67/2ta/F8ssvHwPJ9773vW67dnV06KGHGklZYslrNZXy5naAYhAAAtLuP9n+MFpttdVi8ODBUS6SP4o/9KEPZV23cOHCdD7xrFmzCnbsJCx13HHHpcGpbD772c/65ZKi0QEIAAAAGOiS7uEf+chHsq5LRjI9/fTTfdpF5Lzzzstp7R577NFndfQnG220Ubf7k+drX3/99aLVU1VVFRdeeGGMHDkyp/V///vf03FgSdenUrjzzjvT8E8SgMvFDjvsEAcffHAMFMnP7De/+c244YYbclq/0korxSmnnNLnddG9559/PuuaTTbZpCi1AJQDASAgXnzxxaxryi3FnryL5ytf+UpOa9944400sFOIFrBPPfVU2n1o+vTpWdeusMIKceqpp+Z9TCheByABIAAAAKDyJW8IzKalpSVOO+20ePfdd/ukhh//+MfxyiuvZF2XvHlwu+2265Ma+ptcuu0k47aKafXVV09DQEkYKBdJZ5kDDzwwfVNusSTdfn74wx+m3+8NDQ053WbcuHE9Oq9KlwTHDj/88Ljxxhtzvs33v//9dEQapZO8sT3bz3zSwSr5OQUYKASAgJgyZUpOYZZys+uuu6ZbLpJfAvfdd9/497//3ev0/2WXXRZHHHFEvPPOOzkFlJI/8rO1pYVy6gAkAAQAAAD0B9tss03svPPOOb1x8POf/3zBO7LccccdccUVV+S0NgllVFd7qaZQAaDnnnsuiu1jH/tYnHTSST16Pj4JAV188cV9PhIs6XJ1wAEHxG9/+9ucb1NXVxcXXXRRGgLq75Ln+s8999x0nNuTTz6Z8+2SNxzvsssufVobuf0szZ8/v9s1uY7pA+gv/FYJxFtvvVWRAaDEWWedlfMfIrNnz44vfOELcfTRR8ejjz6a022SEWJJy8/ddtstfvKTn+T8B1nS+nPbbbfNaS0USk2ej+pGgAEAAAD9xde//vU0yJDNs88+m3b8njx5ckGO++c//znOOOOMnNZ++MMfjv/5n/8pyHEHgq222iprWCqXcUB94X//9397NMot6crzi1/8In3eOXn+Ofm8kF599dU4/fTT45BDDslpAkC7pOPP+eefn4bo+qskMJKMYzv55JPTn7/f/e53OXdGah+NlnxtKb1cAn9epwEGmtpSFwBURgCoXNP+SfvG5A+lpDNPrrOLJ0yYkG7JPPAdd9wxNttssxg7dmwst9xyaaefJCiU/MGfJP4ffvjhNATUE4cddliccMIJvTwjKGUHoPfbpg6U1r4AAABA/7XuuuvGl7/85fRNfdm8/PLLsf/++8dXv/rVNDDRm+dGklDBT3/607jmmmtyWp+Ek77xjW/0+DgD2ahRo2KTTTZJu9p01wm+FM9vJcdLRmYNHjw4brrpppxv9+abb8a3vvWt+NnPfpZ2oUm62K+99tq9qmHRokVpsOXWW2+NBx54IFpbW3t8Dt/5zndizz33jEqVvIE3CVMl27x582LWrFnplnT7eu2119LRa0loJHkdoDc22mij+PnPf55OAKD0cgn87bTTTkWpBaBcCAABFd0BKJEEeJI/kJJ3WfQkqf/222+nf4z15A+ybPbaa6/49re/XbD7g56ors7/iY0kBFQj/wMAAAD0A8cff3z6Br8kDJFLgOe73/1uXHfddXHsscfGpz/96Rg6dGjW27333ntp4CIZsTRjxowedSjadNNNc17P+5LRbt0FgJI3dyYhjw033DCKLQmF/OAHP0i/b6699toe3Xb69Olx+eWXp9sqq6ySdi1Jvj/WXHPNWH311WPEiBHp/SbHSII+CxYsSG+TvJH1lVdeicceeyz+85//9LqTUG1tbZx99tlpEK6UjjzyyChX6623XvzmN7+J4cOHl6yGm2++Od0qRfLv+c1vfrPP7v+hhx7qdv/48ePTMCjAQCIABANc0jUn+aMom1L+UpuLj370o3HZZZelbTvnzp1bkhqSJwa+9rWv6Z5CydR0/t5ra4vkvSjt11Z12tLr2iJaqyIaPrhtMgaspgBBIgAAAIBSS8ISF198cRx66KFpSCIXL730UhrOOeuss9IxSJtvvnkawhgzZkwMGjQoDV7MmTMnvb8kcPH444+nXUd6Iumwcvjhh/fyrAa2XXbZJe0I353777+/JAGgRPLccPIG0aTbfFJnS0tLr96wW8ygR9JZKfk5SUZbkVnyf8Evf/nLNIhFeUhe18o2Aiz5/wJgoBEAggEuaYOZi+SP23KX/IGSzEtOOgElbXuLZdiwYWmb1lK/OwI6B3dGtLXFmi3ZW/3OraqKybXvt61tbWvrs/oAAAAAii15wf6KK66IY445Jl599dWcb7dw4cK49957062QknE055xzTkHvcyBJAlkrrrhi2t29K0nHp89//vNRSslz1Ntvv336htFcOvCXypZbbpmOLltttdVKXUpZSgJdRx11VHzlK19Jx/ZRPiZMmJB1zF3SyQ1goKkudQFAaSXtQnORzC6uBMm7cZKRXl/84heL8gt58kdc0uJX+IdyUN2pA1CuUZ6OtxIAAgAAAPqbZAxMMpIpCY+UUtL5J+liPmTIkJLWUemBjE9+8pPdrkm6MiWd70tt6623Tp87Tv7dy03yPXjqqaemI++Ef7p+rSEZ7XfmmWcK/5ShBx98sNv9o0ePTl+/ARhoBIBggEveydKfAkDt3YqSP17uuuuu2HvvvdNWv4W2ySabpPN+r776an8gUTZqevmo3jEAlIwAAwAAAOhvkhFeSQjoiCOOKElo5fjjj48f/ehHggQFsPvuu3e7PxnJ9sgjj0S5dKD68Y9/HJdeemkaKCm15Htxt912S587T95E2xfPnVe6pMPUN77xjbj99tvTjl2Up6TTV3eSoGBtrUE4wMDjfz4Y4PpjAKjd6quvnrYvTdpzJvOS77777pg4cWJeTxIkvzQeeOCBsdlmmxW0VihlB6COK7N0TQUAAACoWMkbB7/1rW/FJz7xiTj77LN7NBKst9ZYY434/ve/HzvssEOfH2ug+PCHP5yGaSZNmtTlmvvuuy8++tGPRrnYddddY5dddokbbrgh7Srz5ptvFvX4SdAneW77xBNPjA022KCox64E1dXVsd1228V+++2XBswE9crba6+9lnW0nqkNwEAlAAQDXPLH0osvvhj9vcVv8m6GZJs+fXo89thj8eyzz6Z/4E+bNi3eeeedtCVsQ0NDmggfOnRoDB8+PFZZZZX0D8l11lkntt1221h//fXTd0hAuaqu7hwAqup5ByAjwAAAAIB+LgnjJKOZbrrpprjyyivj9ddfL/gxVl555TjmmGPis5/9rDBBHzjggAPSzjpd+ctf/pKObkqCHeUi+T447LDD4uCDD46//vWvaRhowoQJ0daHz8ettNJKaZf8Qw89NP2e5L/Gjh0bW221VXzkIx9Jw1krrLBCqUsiR0kHq+6stdZa6WtfAAORABAwoCRhoD322CPdoL+p6WUHICPAAAAAgIEmCWMccsghaRgj6RaTdA//xz/+EXPmzOn1fQ4ZMiTtOrPnnnvGxz/+ceNn+tC+++4bl1xySTQ1NWXcn7wR9NFHH027upSb5Psi6TKTbMkbVJPvu3/961/x+OOPx6JFi/K67+QNrMkbWpNQS/I9uPXWWw+4N7UmX9/k5zvp+JWMYFtuueXS7v5JGCqZGpC86XejjTZKP6cy3Xnnnd3uT6Y4AAxUVW19GS0GgG68/PLL6RMi3bnjjjti3XXXLVpNlex7tz0XVz3439bH9W1tsW5zS9bbJU8rvFL3/hNSj3zjE7HCyPo+rRMAoJxbySedQTONRE7eRQoA9G8tLS1pt/Qnn3wyJk6cmI5pmjp1ahoKSoIZjY2N6Sil5HeDJFQwbty4dMRX8tzV5ptvHptttlkaOqA4Tj/99PS5w64kAa+zzjorKkVzc3M8//zz6ZZ0r588eXLMmDEjZs6cGQsWLEi//5Lv0eR7rL6+fsn34Kqrrpr+rpp0sE++D0ePHl3qU4E+k/x8JKPaupJMeLj33ntj5MiRRa0L+otKf17kZa876gAEAP1FdSE6AMkFAwAAAANUEu5JOoMkG+UvGbHWXQAoGQP27W9/u2JGsCWda5IQWbIBmd1+++1ZxwMK/wADWfkMPwUA8lLTy0d1I8AAAAAAqDSbbLJJbLPNNl3unz17dtx///1FrQnoO8lQm7vuuqvL/dXV1XHUUUcVtSaAciMABAD9RCE6ALW2FrQkAAAAAOgzRx99dLf7b7311qLVAvSthx9+ON5+++0u9++6666x2mqrFbUmgHIjAERq7ty5cdppp5W6DADyUF3duwBQR0aAAQAAAFApPv7xj8caa6zR5f6///3vMX369KLWBPSN6667Lq9AIMBAIACUp3vvvTcq3YQJE2KvvfaKu+++u9SlAJCHmgJ0ADICDAAAAIBKkYz8OeaYY7rc39TUFH/4wx+KWhNQeFOnTo1//OMfXe7fcsstY6uttipqTQDlSAAoT1/84hfjggsuiObm5qg0jY2Ncf7558dxxx0nAQ8wgDsAVXWaowwAAAAAleLAAw+MVVddtcv9f/rTn9LXQ4DKdf3110dLS0uX+0855ZSi1gNQrgSA8pS8UHrVVVfFZz/72XjjjTeiUrz44otxwAEHxNVXXx2tra2lLgeAcukAJAAEAAAAQAWpq6uLL3/5y13unzlzZtx1111FrQkonMWLF8cNN9zQ5f4dd9wxtt9++6LWBFCuBIAK5Jlnnol999037rjjjih3V1xxRRx00EHxyiuvpAGmqk4vGANQmWo6PaobAQYAAADAQLD33nvHuuuu2+X+a6+9tqj1AIVz++23x+zZs7vcf+qppxa1HoByJgBUIEmIZsGCBfHVr341zjzzzFi0aFGUm7fffjuOOuqouPDCC9N2l8I/AP1Lb/9P73grTeEAAAAAqDTV1dXdjgBK3sT96KOPFrUmIH/Ja5m/+93vutz/yU9+MjbbbLOi1gRQzgSACvzCa/JAdMstt6TjtSZOnBjlIulMlCTgH3nkkSXBn/Z6AegfaqrzGAH2weOBEWAAAAAAVKJdd901Nt988y73X3LJJUWtB8jf3XffHS+99FKvgn8AA5EAUIG0B2naQzWvvfZaHHLIIXHdddeVtK758+fH6aefnnYmmjt37lJdf4R/APqXms4dgJLHpB7ehxFgAAAAAFSqb3zjG112yU7eIP3www8XvSagd1pbW+PSSy/tcn/yOuw666xT1JoAyp0AUAElgZqO3XUaGhrinHPOiZNOOinmzJlT9HqSX2T32muvuOuuu5bp+iP8A9D/VHfqANTjLkDCoQAAAABUsC222CIOPvjgLvf/7Gc/K2o9QO8lr2++8sorGfeNGzcubYAAwNIEgIrQDeif//xn7LvvvvHYY48V5fhNTU1xwQUXxDHHHBPTpk3T9QdggKjJ8OamngaAdAACAAAAoJJ95StfibFjx2bc9+ijj8aECROKXhNQ2O4/X//612PEiBFFrQmgEggAFSkElARxjjrqqPj5z3/epyGcZA7mgQceGFdddVX64Jit60/HVpj19fV9VhcAfa+mAB2AWgRFAQAAAKhgI0eOjDPOOKPL/ZdccklR6wF67o477ojXXnst476ddtop9txzz6LXBFAJBIDyVFNTk37MNFO280iwlpaWNK165JFHxvTp0wteSxL6Oeigg9IQUC5dfzru32abbeK2224reE0AVNYIsNbWgpYEAAAAAEW39957xw477JBx3xNPPJFObgDKU2NjY5fj+gYNGhTf/e53i14TQKUQAMrT9ddfH6uuuupSQZ9s3YCSFpP77LNP/Otf/ypIDUmYKBn3lYz9amhoyBr+6dgVaMiQIfGd73wnrrnmmlhttdUKUg8ApVGd4TEoVzoAAQAAANCfnH322TFs2LCM+84///w0ZACUnyuvvDKmTJmScd/JJ58ca6yxRtFrAqgUAkB52nzzzeOWW26Jfffdd6mgT2ed982ePTu+9KUvxbnnnhtNTU29Pv5dd92VJtkfeuihpUJI2UZ+Jft23HHHuP322+Owww7r9fEBKB81mR5/engfra0CQAAAAABUvuRNz9///vcz7ps8eXI6VQEoL0nTg1/96lcZ9yWvax5//PFFrwmgkggAFUCSIE/S4j/5yU9ixIgRXXYD6jwSLLl87bXXxiGHHBKTJk3q0THnz58fX/nKV+L000+POXPm9KjrT1Jvkny/4oorYpVVVsnz7AHoVyPAdAACAAAAoJ/Ya6+9Yv/998+475e//GUaNgDKx49+9KNYuHDhMtePGTMmfvjDH2ZswgDAfwkAFdDuu+8et956a2yzzTY5dwNKLj///PPpL6BJJ6FcPPLII2nXnzvvvLPHXX8++tGPprc76KCD8jxbAMpNTYZH9Z4GgFp0AAIAAACgH/n2t78da6655jLXJyGDJGwAlIcnn3wynVySyXnnnRfjxo0rek0AlUYAqMBWWmml+N3vfhennHJK1NTUdBsC6hjeSX7RPPPMM+OrX/1qxmRrorm5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HkuFfjoGapKP11xzTdx9991RSo2NjXHKKafEO++8s6S+THbbbbciVwZAodUUIACkAxAAAAAAAABUFgGgPB122GExePDg9HLn7jrtIaAzzjgj7r333pKFf04++eR49NFHlxr91V5fu/Hjx8cnPvGJktQIQOHoAAQAAAAAAAADjwBQnsaOHRv7779/xi5A7SGbJIRz0kknxXXXXVfU2qZNmxZHHHFEGj7KNPqrvc5k35FHHhk1NTVFrQ+AwqsuSAeg1oLUAgAAAAAAABSHAFABfPnLX45Ro0allzsGbZJwTXvAprm5Oc4555w4/vjj47XXXuvTepqamuKqq66KvfbaK55++uklYaSuuv+suOKKaScjACpfQToAtegABAAAAAAAAJVEAKgAxowZE6effvoyXYA6ah+/9cADD8See+4ZX/rSl+Kvf/1rLFq0qGB1TJ48OX72s5/FrrvuGhdccEHMnz9/SQApU23t+5IRZfX19QWrA4DSqSlIByABIAAAAAAAAKgktaUuoL84+OCD47777ou//e1vywRu2oM27dcn27/+9a90S8ZurbvuurHmmmvG+PHjY8iQId0eZ/r06fHqq6/GggULYsaMGfHmm2/Giy++GE888URMmTJlyfE6dvnpHP5pryP5uNtuu8VnPvOZPviKAFAKtdX5Z3ubBYAAAAAAAACgoggAFdD555+fjvdKtkwhoEyhnGQ02AsvvBATJ05c6r4y3Tb5ePLJJ2c8dlfjvTKFf9qtscYacfbZZ/fybAEoRzoAAQAAAAAAwMBjBFgBDRs2LK644opYZZVVlgnbZAoCtW/t17dv3em4ruPW1f111HFf0m3oN7/5TVozAP1HbY0AEAAAAAAAAAw0AkAFlgRrrr766lh99dWXCuZ01Dns0zG8kyk01FHntbmGiDquGTt2bBpUWnXVVQt45gCUAx2AAAAAAAAAYOARAOoDSQegG264IXbYYYdlRn91lqmbT286AHV3u47hn/XXXz9uvPHGWHvttfM6RwDKU22mAFBbW1S3tUVtW1vUtbXFoLa2GNzWFvVtbTGktS2GtrbFsNbWdEs0CwABAAAAAABARaktdQH91ciRI9MRW5dffnn88pe/jMbGxqVCQNmCPoXQMfiTOPjgg+PrX/96DB06tM+PDUD5dABK0r4bN7dkvW2y4vnq6mj5IAgEAAAAAAAAVAYd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mDlz5pLRXx099dRTJasNimH69Olpp6vk5/ell16Kt99+O959991oaGhI9w8bNizdVllllVhnnXVigw02iJ133jn9HCo9ALRyS2uMyWHU41vV1QJAAAAAAAAAUEEEgPIMEnQM/XTs/rP99tvHqFGjotzU1tbGHnvsEVddddVStbeHgZ577rmS1kdx/OIXv4iLL744ysV1110XW2+9dZ/d/+LFi+OWW26JP//5z1127mo3e/bsdHvrrbfikUceWXL9euutFwcccEAceOCBMXz48D6rFfpyBFhr8t9+9vxPJMsEgAAAAAAAAKByGAGWhzlz5nS5b9ttt41ytcMOOyz1eccuQElQYu7cuSWoimJ64YUXYiBobW1Nw0Wf+MQn4rvf/W7W8E93km5B5513XnzsYx+LSy+9NBobGwtaKxRSfV3mh/ccsj9LAkCLBIAAAAAAAACgYggA5aG7oMxaa60V5SrpZNLbYBP9w0AIAE2ZMiUOPvjgOOuss9KRd4Uyb968uOSSS2LvvfeOJ598smD3C4U0uIsOQG09+OVgcVNrQWsCAAAAAAAA+o4AUB46ds7pbMSIEVGull9++awBB/qv+fPnx5tvvhn9WTK6a7/99otnnnmmz47x+uuvxxFHHBE33HBDnx0DCj4CLO3tk11VtBkBBgAAAAAAABVEACgPw4YN63Jfc3NzlKuamswvDLcbNGhQ0Wqh+CZOnNhteK3S3XffffH5z38+DTr1taampvjWt76VjgSDclJXUxXVVfl2ABIAAgAAAAAAgEohAJSH0aNHd7nvnXfeiXKVrcNPOXcvIn/9efxXEv458cQTY/HixUU9bjIS7Oqrry7qMaE7VVVVGbsA5RoASrJDRoABAAAAAABA5agtdQGVbO21107HACUvtHb23HPPxZ577hnlaMqUKUt93rH+wYMHxworrFCCqiiW/hoAeuutt+IrX/lK2pUnF3V1dbHtttvGdtttF2uttVYa6GtpaYnZs2fHyy+/HA888EA89dRTOXdLOu+882KdddaJnXbaKc8zgcKor6uJBY1Ld/FpzW0CWFS16QAEAAAAAAAAlUQAKA/rr79+/P3vf18mTJMEBu69994444wzohw98cQTy1zXHnJIQk2ZAk30H/0xANTY2BinnHJKGt7JJfhzxBFHxLHHHhvjxo3LuOYzn/lMfPnLX45JkybFr371q7jllluyBoGS/V/72tfi1ltvjbFjx/b6XKCQAaB8RoAtEgACAAAAAACAiiEAlIePfOQjcemlly4VAGgPzySdgR5//PHYaqutotx0Di21S2rffvvti14PxZN0x3nllVe6XZMEY8o1vNaVX/ziF/H0009nXbf66qvHz372s9hggw1yut8111wzzj///Nh3333T7kLZRvvNnDkzzj333Ljoootyrh36Sn3dslM+W3s0AkwACAAAAAAAACrFsq8OkrPNN998SQeRTF1zkqBBuZk4cWI89thjSzoVdfaJT3yiJHVRHK+++mraLac7G2+8cVSSadOmxZVXXplTx64//elPOYd/OkqCcTfccEN86EMfyrr2rrvuSn/GoJI7AL0fAMo1LgQAAAAAAACUmgBQHpIQzeGHH75UkKa9C1Dy8eGHH46bb745ysmPfvSjpT7vGARab7314sMf/nCJKqNYAbBsNtpoo6gkP/nJT2Lx4sXdrllhhRXiiiuuiOWWW67Xx1lppZXiqquuipVXXjnr2qRrEFT6CDAdgAAAAAAAAKByCADl6XOf+1yMHj16mS5A7cGas846K1588cUoBzfeeGPcf//9Gbv/JNcdf/zxJauN4njhhRe63T906NB07FWlSH62br/99qzrfvzjH8fYsWPzPt6KK66YdvYaPHhwt+ueeeaZmDBhQt7Hg3wMyRAAak17+2RXFW0CQAAAAAAAAFBBBIDyNHz48PjmN7+5TBeg9lDNokWL4rjjjovJkyeXsMqIxx9/PM4+++yMIaXkYzLObK+99ippjZQ+AJSMx6qurpz/Fq6//vqMo+w6Sr6vt91224Idc5NNNomTTjop67pf//rXBTsm9EZ9XXV+I8CaW7P+fAEAAAAAAADloXJe6S9jScBgjz32WBKm6RwCmjlzZhx22GFpV5BShX9OPPHEaGhoWFJbxyDQoEGD0k5F9H/ZRoBV0vivhQsXxh133NHtmpqamjj11FMLfuxjjjkmVltttW7XPPjgg/HGG28U/NiQq8GZRoDl1gAoqtsiWlrboqlFAAgAAAAAAAAqgQBQgZx33nmxxRZbdBkCmjVrVjou7Oqrry5qXX/605/SDkRz585dZvRXe61nnnlmrLfeekWti+J76623Ys6cOf0mAHTnnXfG/Pnzu13z8Y9/PFZZZZWCHzsJzR1++OHdrkl+vm655ZaC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5ZdfvqgBoOeeey7rmuTnZsMNN8y6Lhmr110AKPH000/Hxz/+8ehLr732WsybN6/bNZtvvnnU1OTfhQV6Y3Bd5gDQ2s0tMSSH279cWxMNzS0FrwsAAAAAAAAorMyvDJKTpMNIRx3DQGuuuWY6/gtKIVsXnfaATDE9+OCDWdcknXKGDx+edd12222Xdc2ECROir+VyjG233bbP64CuDKrJ/DDftmx2NaOkK1BDkw5AAAAAAAAAUO4EgPKwaNGiLrv/7LrrriWpCRLrrrtu1jWvvvpqOgqsGFpbW+Nf//pX1nU77bRTTve3/fbbZx2t9+9//zv6Wi7n9JGPfKTP64CuDK7L3H2qNR30lV1VtBkBBgAAAAAAABVAACgPSdinKxtttFFRa4GOtthii5y+f2+//fai1HPffffF22+/nXXd//zP/+R0f0OGDMnaWWfKlCnxwgsvRF9577334pFHHul2zdixY2OzzTbrsxogm8G1mR/mc430JLduNAIMAAAAAAAAyp4AUB5GjBjR5b4xY8YUtRbo6MMf/nDU1tZmXXfzzTcXpZ5f//rXWdesuOKKOY32aveJT3wi65rf//730VduvPHGaGxs7HbN3nvvvdRoQCiXAFDX8dWlJbfWAQgAAAAAAADKnwBQHkaNGtXlPi/6U+rvzWwdchITJ06MBx98sE9r+cc//hGPPvpo1nUHHHBA1NRkHleUyZ577hn19fXdrrnttttixowZUWiLFy+O6667Luu6gw8+uODHhp4YXNvVCLDcCAABAAAAAABAZRAAysPaa6/d5RiwmTNnFr0e6ByQycUPfvCDaG5u7pMa5syZE9/73veyrhs6dGgcfvjhPbrvkSNHxqc//elu1yxatCguvPDCKLTLL788pk2b1u2aJID1oQ99qODHhp4Y1NUIsBwzqlVtSQDICDAAAAAAAAAodwJAedhggw263PfOO+8UtRbIFAAaPXp01nUvv/xy/Pa3vy348VtaWuLUU0/NqQPPYYcd1quxecntskm6AN1zzz1RKE899VQaACpEbVARI8CadAACAAAAAACAcicAlIcddtihy32PPfZYUWuBzgYPHhxHHXVUTmsvuuiiuPvuuwsa/vna174WDzzwQNa148aNixNPPLFXx9liiy1il112ybruG9/4Rjz//PORr6lTp8bJJ58cTU1N3a7bdNNN4zOf+Uze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z8knnxxf+cpXYsaMGRmDP+1hm8cee6xodT366KNLAj8dOxF1FQR677334vTTT49TTjkl7WQEAO1GDlm2A1Bz5B4AShgDBgAAAAAAAOVBAKiTl156KfbZZ5/429/+tkzwpz1o0zF8M2XKlLQzT7HHf2XSVRDoL3/5Sxx88MExadKkotQJQPkbkakDUE8CQOkYsFwjQwAAAAAAAEBfEgDq4MEHH4zDDjsspk6duiT8k+gc+umsWF2AHn744aW6EOUaBEouv/rqq3HooYfGCy+8UIRKASh3I+uX7QAUVVU9CgHNXawDEAAAAAAAAJQDAaAO4Z8TTzwx5s+fv1T3nO6CP+0ef/zxPq8v6TL0yiuvLNPhp7tAUHv97etmz54dRx55ZDzzzDN9Xi8AldcBKNGjAJARYAAAAAAAAFAWBIAi4j//+U986UtfioaGhqW6/nSlfU17SKgYHYAGDRoUZ599duy1114xevTojOO+utJx3bx58+ILX/hCvPnmm31eMwDla+SQ2rwCQLVtEfOMAAMAAAAAAICyMOADQNOnT4+TTjopFi9enDX80zFo0x7A2XjjjWOfffbp8zqHDx8eBx10UFx44YXxwAMPxO9+97vYf//9o76+PqcgUMc1STehz3/+87FgwYI+rxuA8jSyqw5AOYyaTNREmxFgAAAAAAAAUCYGdAAoCcWceuqpMXPmzJzCP+376+rq4uCDD45bbrkl/vznP6djtYqpuro6tt122/jBD34Q9913X5x22mlLugJ1rLWzjuc2adKk+P73v1+0mgGojBFgzT0YAaYDEAAAAAAAAJSHAR0Auuqqq+KJJ57oNvzT3lUn2ZcEbw499ND429/+FmeddVZssMEGUWpJZ6ATTjgh/vGPf8QxxxwTNTU1WUNA7edz++23x913313kigEo6xFguTUAipq2iLmLdAACAAAAAACAclA9kEd/XXzxxVnDP+37Ntpoo7jpppvie9/7XowfPz7KzdChQ+OMM86IP/zhD7HaaqstCfp0pT0EdN5558XChQuLWisA5dsBqCXH29caAQYAAAAAAABlY8AGgC666KJYvHhxTuGfI444Iv70pz/F+uuvH+Vuk002SYNKO+ywQ5choI7n+84778Rll11W5CoBKLWR9Zk7ADVHbi2AjAADAAAAAACA8jEgA0CTJ0+O2267LWM4puPIr+Tjt7/97fjmN78ZtbWZXygtR8lYsF//+tex6667dtsJqP08r7322pg7d27R6wSgdIYNqo3qqt6PAKtti5g2+/0gLQAAAAAAAFBaAzIAdPXVV0dra2uX3X/aQzPJSK3Pfe5zUYmSwNJPfvKT2GabbTKGgDqedzIC7JprrilBlQCUSnV1VQwfvGy4tbkHI8AemfRuLGzUBQgAAAAAAABKbcAFgJKxX7fcckuX3X/awzL7779/HHXUUVHJBg0aFBdffHGMHz8+/by7c77xxhtLUCEApTRySN0y1zV30TWus5oPcqRXPjCp0GUBAAAAAAAAPTTgAkD//Oc/0443nbvgdAzHLL/88nHmmWdGfzBmzJg499xzu+x01O7tt9+OCRMmFLk6AEppRH2GANAHWzLca35VxJyqqphVXRUzqqtianV1TKmpjtdrqmNKbU26/lf/fjXeW9BYguoBAAAAAACAARsAuueee7rc19795xvf+EYMHz48+oudd945dt9994yjwHL92gDQ/4yszzACrKoqXqirjZfrauP12to06DO1piam19TErJrqmFNdHfOrq6Phg8eTeQ3N8e+XZpSgegAAAAAAAGDABoAefvjhZUIw7WOwEuuss04alulvTjnllKipeb9bQ1fnf//995eoOgDKpQNQb0ycNq8g9wMAAAAAAAD0zoAKAE2cODHmzJmTXs40EisJwhx00EHRH62++urxyU9+cpnz7vj51KlT44033ihBdQCUwsghy3YA6o2XZ8wvyP0AAAAAAAAAvVOYV/4qxAsvvLDMdR274QwaNCj23Xff6K8OPvjgrGO+nn322VhttdWKVhMApbPSqPqC3M+ChuaC3A8AAAAAANA/TFrUEE/MXRivL2yI2c1eR+iJYTU1sc7QwbHesPrYdPiQZSb8QFcGVADoxRdfzHh90gUn+aHZbLPNYuTIkdFfbb/99jFq1KiYO3fuUmPPOndJ2m233UpSHwDFtfmqowtyP00trQW5HwAAAAAAoLI9OXdh/GTS2/G3WXNLXUq/sOWIofG1D60YHxszQhCIrAbUCLBJkyZ1u3/TTTeN/qy6ujp23HHHjMGfdq+//npRawKgdLZcfbmoqc7/l8VGASAAAAAAABjw/jBtVuz9xMvCPwX05LyF8dmnX4tvvfxWt6/zw4ALAM2YMaPb/Ztvvnn0d9nOcfr06UWrBYDSGjdi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+6LWCVCrxo4dG9tuu21MmzatzjUCQEBD88UXX8Ttt9+eBSBff/31xXqNdFFliy22iN133z0LAwE0BJMnT84+g6f3yDfeeGOxP3+n98Wddtopvv/97wtLAlUtBcH333//RT5XTQGgdA0pHbvefPPN8fLLLy/Wa6Sg5s477xy77LKLc6M1QAAIAGpESmX/5je/iVGjRhXl9VLHi0022SSOP/746NevX1FeE6DSnnzyybjwwguzsGSxpQ5Be+yxR/zoRz9yVyLQqC1YsCA70fnMM8/kXCcABDQU6c7oSy65JEaOHJl1ryiW4cOHxy9/+csYOnRo0V4ToJymTJkSl156aVx11VWLdaNiXVJH80MOOST23HNPQSCg6qSOOSkQ884771RtACh9br/22mvjz3/+c9a5shg6dOgQBx54YPzP//yP9+YqJgAEAFVu7ty5ce6558aVV16ZHbQVW2q7m1pVpoO2FAoCqEWppfhpp50WDz30UMn3Sh9208ibXXfdteR7AVSjyy67LH73u9/lXScABDQEqQNves+bPn16SV4/jehOocqf//znLqQANSV1Jz/llFOKdmF5UQYMGJC9B6cRYQDVIr33pWPEulQ6APTRRx9lx5ZpFGMp9O/fP84888ysazrVRwAIAKpYGqmQOk0899xzJd9r8803zz5Qa+EI1Jo0a/vYY4/NOYamFDbbbLP4/e9/730TaFTefPPNLABZSAcMASCg1sfZpO48jzzySFn2SxdQzj///OjRo0dZ9gNYXOkGxXQO8YorrijLfs2bN886mO+9995l2Q8gl7vvvjt++tOf5lxTyQBQ6tT74x//uOTnSVu0aJEFodwgWX2aVroAAKDuk43pLsByhH++ukCz7777xtSpU8uyH0AxXHzxxXH44YeXPfyTPPjgg1k78k8//bTsewNUQgr9HH300UUdfwNQjT7++ONs9Gu5wj/JCy+8EPvss0+MHz++bHsC1Ne8efPiyCOPLFv456s9Tz/99OwGHIBKevHFF7Ou4NXq0UcfzSY9lOM8aZpcceKJJ8aFF15Y8r2oHwEgAKhC6QBtv/32i1dffbWs+77++utx8MEHx8yZM8u6L8DiSHdI/+EPf4hKNjV9++23s7BmKVueA1SL9J771ltvVboMgJL68MMPs/DPBx98UJG9DzzwQDfmAFUpffZOF77vueeeiuz/17/+Nf74xz9WZG+AdGyYpjXMmjUrqjX8kzr/lLu+8847L/72t7+VdU9yMwIMAKrQEUccUa8P02ke9sYbbxwrrbRS1i68VatWMX369Ozk4UsvvRQPP/xw9utCbbfddu6qAaraLbfcEscdd1y9vqZZs2ax6qqrxrrrrhu9e/eOrl27RufOnbPQ4xdffJGFeEaNGhXPPvtsTJkypV6vPXjw4Lj22mujdevW9fxOAGpDaiOeAo9p5EOhjAADas2ECROyDo+ffPJJwV+TjidHjBiRjfDq06dPdOrUKbvw8tlnn8VHH30UDz30UL3Dk5tssklccskli/EdAJRO6vKQLvTWR3pf3GCDDWLIkCHRpUuX7D3zyy+/jEmTJsVrr72WdVobM2ZMvV4zjR/bfvvt61k9wOIbPXp0HHDAATF27NiC1pd7BFh6H91pp52yqRKFju8aPnx4VmO6tpTem+fPn599/TvvvBOPP/541u2o0BhJkyZN4rLLLov1119/Cb8TikEACACqTEpL/+Y3vylo7dprr5213V1rrbVyrksXt2+44Ya46KKLsovchTjzzDOzg0aAapMuoOyyyy4Fj6BJwcjU/ja9p3Xo0CHv+vSB97HHHos///nP2YfdQqXXT++dAA2xO2UKiNf34owAEFBL0hiDFP555ZVXClqf3t9+8pOfxNZbb53dhJPvolHqWvHPf/6z4HpOO+20rBMRQDV4/vnnY++99y44DJ7OVaYbHAu5AJ6C5ueee242CrEQ6cabW2+9NbtoDVBq7733XnYzTAp3F6qcAaB0fjS9P7/88ssFBX/23XffOOigg7Lzpbmkm8svvvjiuO222woKAnXv3j3+8Y9/ZP+ksgSAAKDKDibTHSzpxGMuzZs3z1rupjFh9ZHurjn++OOzOxDzad++fdx7773RrVu3eu0BUEopnLPbbrsVNCIx3X1y6KGHZqMNF7czz/333591Giq0I1C6UzvdsQ3QkBx99NHZibz6EgACask555wTl156aUFr00WTn/70p/U+xnzuueeym3gKuYDUsWPHuO+++7I7sgEqad68edn5ynfffbegi8snnnjiYgUYR44cmd0Ume+8aJI6V1x11VX13gOgPlIwPJ1XTNdV6qOcAaAUMk83fufTr1+/OP/887MpEvXx1FNPxS9+8YuCjl9TMD6NDqeymlZ4fwDgGy1s833ITR+kU8vd+oZ/kjTuJnW02GeffQq60zvdfQNQbaO/Cgn/tGvXLnuvTHccLslYri222CJuvvnmGDRoUEHrTz/99II7EwHUgrvvvnuxwj8AtSQFc/7617/mXdeyZctsXHa6IWdxjjFTR4zrrruuoK4VKYBuDBhQDW6//faCwj9t27bNOpsvbveyvfbaKy6//PJo06ZNQV2D0g07AKWSOjem6yj1Df+U07hx4+KKK67Iu27FFVfMJkTUN/yTpFG3N954Y/Tv37+gn1k6rqayBIAAoEo8+eST8fDDD+dd9+tf/3qJuks0bdo0TjrppGx8TiEX2t9+++3F3gugmFJAspA7WlJQMt29vfnmmxdl33SHzJVXXllQF4s0Hie1IgdoCCZMmBCnnHJKpcsAKKnUIP+MM87IO9YmHWOmMQhpJOKSSMeU6QJ5ukEnn3SxZfr06Uu0H8CSuuyyywo635g6qa255ppLtFfq7PPb3/426+ibTyHnBwAW59jwT3/6U/zsZz+LWbNmRTVLN3Dnq7Fnz55ZuLJLly6Lvc/SSy+dnRvt3bt33rVnnXXWYu9DcQgAAUCVOPvss/Ou2WmnnWKHHXYoyn6nnnpqrL766jnXpBOgf/nLX4qyH8CSSiMQUsAmnzSyK91dXUxpHGIKFaXxiPkUcucNQC1Io2MnT55c6TIASurOO++M119/vaBOj+uvv35R9kwXYtLr5TN16tTsTmqASo6/KaT7zwEHHBCbbbZZUfb87ne/W1Dn89Qd2I2LQDGNHz8+fvCDH2RTFKrdW2+9FXfccUfedSmc2b179yXer1evXtkIsVatWuX9/0a62Z3KEQACgCrw0ksv5R1p07Fjx/jlL39ZtD3T3YupdXm+A7Z0srGQC+4ApZZa1eaz3nrrxd57712S/QcOHBiHHHJI3nUffPBBvPzyyyWpAaBcrrnmmnj00UcrXQZASc2fPz+7wzuffffdN7shp5i+853vxNChQ/Ou+9e//lXUfQHq48EHH8y7pnPnznHooYcWdd/0eh06dMi7znskUMwbD1Onx8cffzxqwciRI7NuRblsu+22WWe1Yll11VXjsMMOy7vOTeWVJQAEAFXg+uuvz7vmwAMPLKhFeH307ds3e91c5s2bFzfffHNR9wWorzRv++mnn867rtgnHb9p//33jz59+hTlJClAtXr//ffjd7/7Xc4RDykUCVDrHnroofj4449zrknHfj//+c9Lsv8Pf/jDvGueeeaZmDlzZkn2B8jnueeey7smBSQLCevURwoV7brrrnnXFXKeACDf6OujjjoqfvKTn9RMB9wZM2ZkXSxzadasWTbGrNjS9aR0XSmXJ554Iu8xNqUjAAQAFVZIS++WLVvGHnvsUZL9U0vd1A0ol9tuuy1vmhyglFIXijSWMJfVVlst1l577ZLWkd6P090z+Tz77LMlrQOgVFL4O3WdnDVrVs4RD4V0rQCodtdee23eNaecckq0bdu2JPtvuumm0alTp5xr5s6dGy+++GJJ9gfIp5ARW8Ua/bWo98h80ghH5yyBxe0E+be//S2+973v5Q3TfF2TJk2i0u66666YNm1a3vfmQm5iXJxzo/vss0/ONel9OV1TojIEgACgwu699968d/Ol1uDF7v7zlW7dumWztXNJI8AKueMHoFTSnc/FODlYDIWc3HzjjTfKUgtAsV144YU5R9OusMIKJbmLEKDc0l3J+UY8rL766rHxxhuXrIZ0AWXzzTfPuy7fyHCAUkgXlwvphjFkyJCS7L/GGmvkvWkxnVNN3TsA6jvua/vtt4/f/OY3eYM0X5fGaaXRsJX2j3/8I++a3XffvWT7p85vrVu3XuIaKQ0BIACosAceeCDvmi222KKkNWy55ZZ51xhnA1TSK6+8kndNMWda55K6XuQ7CTl9+vSYOHFiWeoBKJbUYeKSSy6p8/n03pdGg6UL1gC17u67787bNeLHP/5xyetYd91186559913S14HwDdNmTIl75o0+ivfReDF1bx584JuiEwjwwEK8e9//zsLr6RxX++88069vnaHHXaIyy67LDp27BiV9MUXX8Tzzz+f9715xIgRJash/QzyHcOmsH0hXeQovuYleE0AoB4jFp588smca9KFlo022qikday//vrZPqm1eF0efvjhOOaYY0paB0Bd75XvvfdezjXpPaxUdx0uqtVvOgk5fvz4nOs+//zz6N69e1lqAlhSM2bMiKOPPjprg16XQw89NAYPHlzWugBKJX3GzSV1PCtl95+vrLfeelnX3y5dumSPdJzZuXPn//t1eqTOvQDllus84VdKFf75SiGfvdNxLEAhocaDDz643l+XboA57rjjYq+99opq8MQTT+T83J6kY9h8Ny8uqU022SQeeuihvMfbgwYNKmkdfJsAEABU0GuvvZb3Q+qqq64a7du3L2kd6fXThfNcyfH3338/S2337du3pLUAfNO4ceOyEFAu6cJIqT/Yfl26COMkJNCQnHXWWTF69Og6nx82bFj86Ec/KmtNAKWSRtq88MILOdfsuOOOZaklBcYvuOCCsuwFUB+FnI8sZETYkijkc3WpQ0hA47XiiitmXXBXWmmlqBbPPPNMVXRJL6SL5SOPPLJYoSuWjBFgAFBB+Vo1JquvvnpZaimkc8aoUaPKUgvA13355ZfRu3fvnAGfdJd0OeULJAHUknRX3vXXX5/zospvf/vbaNasWVnrAiiVxx9/PO+d06krD0BjVsiYm9QlqJQjuAoZrV3pcTxAw5POQR5yyCFx0003VVX4p5quKS277LLRqVOnnGtefvnlmDNnTslr4b/pAAQAFfTqq6/mXZPuti6HQvZ58cUXs1m3AOWUOqGllrILFy7MxmpNmDAh677z9X+mDkDl9Omnn+Zd065du7LUArAk0gWbE044IeeaX/ziF9G/f/+y1QRQavm6/6QLGv369StbPQDVegG8T58+MWbMmLw3DJYiNJm6kU+fPj1vjT179iz63kDjtdZaa8Vpp50Wyy+/fKVL+ZbZs2dn7435zkeWq/Z0U/ljjz2Ws94333wzhg4dWpZ6+A8BIACooHTwk88KK6xQlloGDhxYlHoBSqVJkybZiIT0GDx4cEVHkqW54YWMCQOodieddFLOO6vXW2+92GeffcpaE0CpvfLKKzmfX3PNNctWC0A1SzcM5gsAPfrooyUJAP373//Ou2bQoEHRqlWrou8NND5LL710HHXUUbHttttGtXrrrbfydiVP13maNi3PEKgUNMoVAEreeOMNAaAyMwIMACoktRsfPXp0zjXNmzcv212H6Q7HdHE9l3fffbcstQBUs6eeeqqgFuQCQEC1S+3M77///jqf79ChQ5x55pl5jxEBakkaV/P6669XRSdegGqXwuD53HHHHUUfA5YucF933XV51w0fPryo+wKNTzqHd+SRR8bdd99d1eGfJF/3n2TAgAFRLumaUj6uKZWfABAAVEi6eyadeMxlmWWWyVrZlkObNm3ytsydOnVqSed6A9SCe+65p2q6twEsro8//jh+85vf5Fxz4oknRq9evcpWE0A5pIsQc+bMybnGsRzAf3zve9/LzhnmMmPGjLjkkkuKuu8NN9wQH374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zz0Ff80WW2yRnZTUDQ2oRs8991z89a9/zbnmhBNOiN69e5etJoBa+xz+dd///vezETalsvXWW8fyyy+fd92//vWvktUAUJe33347/vKXvxR8o8yNN94YK6ywwhLtmd5zU4honXXWKagTULqhJ18nNYCGoBpvKC/0GpZrSuUlAAQAFZJafhdyp185zZgxI++aNm3alKUWgFIaM2ZM7LnnnvW6W/C73/1u/PGPf6z3hSOAcpg2bVocc8wxOQPdKcSYxs0ANFb1PY770Y9+FKWUOgwdeOCBede98sorMX78+JLWAvBNaVR2Ctnkk44x//SnPxV0rrMQqWNlCrVvsMEGeddOnDgx+5wO0NAV0gFo1qxZUW6FXMNyTam8BIAAoEI6deqUd8306dPLUkt99mvbtm1ZagEolZdffjl22223ePfddwv+mh122CHr/CP8A1SrM844Iz755JM6n+/WrVv86le/KmtNALV44eQrq6++egwaNChKbbvttot27drlXLNw4cIYNWpUyWsB+MpTTz1V0PtOGvt17rnnFn28S3q/Pv/88wvqKHTttddm3YoAGrJCRtKW+3pSoXu6plReAkAAUCHVeMBWyH4dO3YsSy0ApXD33XfHfvvtl90lWKh99903zjrrLPOqgap1//33xy233JJzzemnnx5du3YtW00A1Sh1lSjU5ptvHuWQLnKnsFEhIXaAcknjvPJJo7HPPvvsonX+WdQF40JuxEnjZ0aOHFmSGgCq6Tg2ve/WYgCokJvhKR4BIACo4gBQGuVQbQdrXbp0KUstAMV24YUXxpFHHlmv8YpHHHFEnHjiidl4BoBqlAKN6X0ql5122ikbzQDQ2KXP4YUe16211lpRLmussUbeNfXpXgmwJKZMmRL33ntv3nWps26pO6WlDkD77LNP3nV33nlnvT7rA9SifEGaefPmlX0MWCHXlAq5FkbxCAABQIUUctAzadKkKKfPP/887xoBIKDWzJkzJ4466qg477zzsvEJhUjdfn7961/HYYcdVvL6AJbECSecEF988UWdz/fp0ydbA8B/ulUU2gVopZVWinJZbbXV8q4ZO3ZsWWoBeP7557PP0bk0bdo0fvCDH5SlnrRPvhGOU6dOjYcffrgs9QBU8zWlQq7xFFO+/VL4XgCovASAAKBCllpqqbxrPvvss7LUUp/9CqkboFqkIGUa+ZXuBixUmzZt4oILLohdd921pLUBLKnrrrsu54WOdKLtN7/5TbRv376sdQFUs0LGIaY16ZiwXLp165Z3zYQJE8pSC8CLL75YUJe0ZZZZpiz19OjRIzbaaKO861544YWy1ANQKYVcm0ldgsvlyy+/zBsYTce5+UY5Uly5B8UBACXTt2/fqktrF3Jw2KtXr7LUArCk3nvvvTj44IPjk08+Kfhr0sWeSy65JIYOHVrS2gCK4a677sr5fOp6tv/++0elbL755nnXDB8+PK666qqy1APw1WfaDz/8MOeajh07RjkVcle00TZAubzyyit512y44YZRTptuumncf//9Ode89NJLZasHoFqvKZUzAFTIXm4oLz8dgACgig/Wyt3ie9y4cTmfT3eRl+vuHoAl8dRTT8Xuu+9er/BP//7944YbbhD+AQBowJZddtm8a/KNmim2Tp065V0zb9687AFQauPHj8+7ZsiQIVFOq6++et41b7/9dllqAaiUQq7N5LvGU0yF7FXIdTCKSwAIACqke/fu0bZt25xrRo8eXbZ6pk+fnncEWM+ePfPWDFBpd999d/zP//xPTJ06teCvSR0orr/+eh9KAQAauH79+uVdM2vWrCinpk3zn6Zv1qxZNG+uoT9QnpEu+ZT7BsH03p3eB3OZMWNG3lE0ALWskPOW+TpdFlMh16+WW265stTC/ycABAAVNHDgwJzPT5s2rWxjwD766KO8awYMGFCWWgAW18iRI+NnP/tZvU767bjjjnHZZZcVdOc1AAC1rZCLEOmzeDlNnjw575r27duXpRaAKVOmFGV0YTG1aNGioPGMhdQOUKtWWGGFvGvKeVN5IWEj15TKTwAIACpolVVWybvmnXfeKUstheyz8sorl6UWgMVx8cUXx2mnnRYLFiwoaH0aa5jCQmeddVbZxzwAAFAZgwcPzrvmiy++yLrkVlO3DQEgoFwKGTdYSOeyYmvVqlXeNeV87wYotxSmyTeh4d133y1bPYXsVcixN8UlAAQAFVTIvOyXX365LLUUsk8hgSWASrjwwgvjD3/4Q71OHJ577rlxyCGHlLQuAACqS+/evaNHjx451yxcuDDee++9quoAtNRSS5WlFoDWrVtXXae0ZPbs2UWpHaBWpfBlvkDN2LFjY+LEiSWvJR0vv/LKK3nfk3UAKj8BIACo8gBQvoOocgaA1lhjjbLUAlAfF1xwQZx33nkFr0+tyq+44orYeuutS1oXAADVabXVVsu75sUXX4xyef3114sy8gGgGAoZtTV+/Pgod1eiqVOn5l3Xrl27stQD0NhvKn///ffzvi8PGzYsmjVrVvJa+G8CQABQQYMGDYquXbvmXPPMM8/E/PnzS1pHmo/92muv5VzTp0+f7E5JgGpy5ZVXxvnnn1/w+n79+sX1118fa665ZknrAgCgeq299tp51zz++ONRLs8//3xB5w8AymGZZZbJu+aNN96Icvrkk0/yjiZLwSXjEoGGbp111sm75sknnyx5HYXsMXz48JLXwbc1X8TvAQBl0qRJk9hggw3i9ttvz9kK/IUXXoi11lqrZHU88sgjeT9Eb7jhhiXbH2Bx3HHHHXHWWWcVvH7VVVeNSy+9NLp161bSugDK5aqrrqrY3scee2zceuutOdc88MADBV1AAii3zTbbLH7zm9/kXPPUU09lN8sU0gmjHAGgoUOHlrwOgGS55ZbLbkjM9x65++67l62mQrqyLbvssmWpBaCSRowYES1btow5c+bUuebhhx+OE044oaR1PPTQQ3nXuKZUGToAAUCFbbzxxnnX3HPPPSWt4d577y3oBClAtUgnI4877rhs3nQhUtjy73//u/APAADRt2/fvB11Zs2aFf/4xz9KXsuzzz4bn332Wc413bt3L2jcA0AxpJEthdxMmOvicyUuNAtKAo1BmzZt8nbW+eijj0raqe2LL77IGxRNx6/elytDAAgAKiyloFNiO5fbbrstZs6cWZL908zudHd2Lj169Ij11luvJPsDLM771pFHHhlz584taP1WW20VF110UbRr167ktQEAUBu++93v5l1z9dVX5+2Wu6T+9re/FXTjUOogDFAt42WmTZuWdeUth0mTJmXdLIox3hGgIdh8883zrrn22mtLtv9NN92UNwS63XbbOX6tEAEgAKiwTp06xZZbbplzTWo7fuONN5Zk/yuvvDLvCc2ddtopWrRoUZL9AeojhX6OOOKI+Pzzzwtav/3228e5556bN2gJAEDjsuuuu0bz5s1zrvnwww+zCxyl8vHHH+e9ISf53ve+V7IaABbVJW3w4MF5111++eUxf/78kteTzl2mrmy5tG7d2qgZoNHYZpttsve9XG6//faYMGFC0fdO78fXXHNN3nW77bZb0femMAJAAFAFdtlll7xrLrjgguyOl2L64IMP4qqrrsq5JqW004lRgGpwySWXxIsvvljw3TBnnXVWNGvWrOR1AQBQW5ZaaqnYYost8q4777zzYuLEiUXfP42yPemkk2LBggU51/Xv3z8bZwtQTulmmnzefffdrFNaKaVzl1dccUVBn//bt29f0loAqkXHjh3zdrNMEyV+//vfF33vSy+9NMaNG5dzTRpRlo5hqQwBIACoAiNGjIiBAwfmXPPll1/G8ccfn50kLIbUovEXv/hF3hE6G220UXbnD0ClvfXWW3HxxRcXtHaVVVaJs88+O5o29ZEHAIBF+8EPfpB3NEHqPHn00UfnDerU12WXXRZPPvlk3nX77ruv8QlARW5W7NChQ951f/zjH+PNN98sSQ2py8TPfvazvGNmkgMOOKAkNQBUq7322ivvmtQF6O677y7anummzBQAKkZtlI6z4QBQBdLJvMMPPzzvuoceeij7YF2sOw1fffXVnOvShfOf//znS7wfQDGceuqpeUOLSY8ePeKiiy6Ktm3blqUuAABq09ChQ+P73/9+3nWPP/54nHzyyUW7IScFfwr5bN+rV69sJDdAuaVuOimAmM+MGTPixz/+cYwdO7ao+6fQz09/+tN444038q5NXdLS+zlAY7LaaqvFxhtvnHdduqn89ddfX+L90vv8EUcckffc7JAhQ2KrrbZa4v1YfAJAAFAl0kFRIfO1U/eLdGF7caW7Fk877bS47bbb8q7dYYcdYqWVVlrsvQCK5f7774/nn3++oLVnnHFGNtIBAADyOeqoo6J169Z51914441xzDHHZB0plsS///3v7GJ5IcH2tF+bNm2WaD+AxXXwwQdHnz59CroovPvuu8drr71WlH0nTJiQhY8efvjhvGtbtmwZJ5xwQlH2Bag1Rx55ZN5OkdOnT4+DDjqooEBlXcaMGRMHHnhgjB8/vqDjV90rK0sACACqRDooSh9YCxlXk+4UPO6447KDt/qYNGlSdqLx2muvzbs2dc5IB5AAlZbutD733HMLWptOOhZy9wsAACS9e/eOE088saC1//jHP2LXXXfN2013UebPnx9//vOfs8/kM2fOzLt++PDhsfXWW9d7H4BiSQHEdBNhIRdyU2gnfR4/77zzChrZVZcHH3ww63yWxswU4tBDD40BAwYs9n4AtSzdUJ5GNubzxRdfZGO57rrrrnrv8dRTT8Vuu+0WH374Yd613/nOd2Lttdeu9x4UV5OFxepbCgAUxW9/+9u4/PLLCz5RmdoubrvtttG8efM6182ePTtuuOGGuPDCC7ODvUKcc845sc022xRcN0CpPPLII/E///M/UWvOPPNMIxuABuvYY4+NW2+9NeeaBx54IJZZZpmy1QSwJH7xi1/EHXfcUdDadDE8jQ7bf//9846dScGfNM77T3/6U7z99tsFvX6XLl3illtuyT7zA1TaH/7wh6wjeaHSWO799tsv6yzes2fPvOtTYOiJJ57Izlu+/PLLBe+z4YYbxqWXXlrQzZQAxXL++efHBRdckHPN3//+91hnnXXKUs+0adNi++23j08++aSg9Ztuumk2YnHllVfOue7jjz/Owuvpc38hcZLUjT1NnejatWvBtVMadV8pBAAq4mc/+1mWqi5kLmtqsZsuvvzud7+LzTbbLIYNG5adIEx36KTuQOkgLd0xk042Tp06teAa9txzT+EfoGpcffXVlS4BAIAGLo2RTR0snn766bxr00WQO++8M3ukzhPrrrtuDBkyJLp16xbt2rXLOvykUQmvvPJKNvIrvW6hmjVrll1sF/4BqkW6UPzBBx/EPffcU9D6zz77LLuxMHXyXW211bLHiiuumL1Hpo7j6ZxlukExvTemUd/pfXfGjBn1qmnQoEHZHsI/QGPXvn377PpQCqYXMmI2XStKj1VWWSULUn71/pzeTydPnhzvvPNOFsocNWpULFiwoKAa0s3p6fhV+Kc6CAABQJVJs6vTXTV77LFHFvApdLTXTTfdlD2W1FprrRXHH3/8Er8OQDFMnDgxHn300UqXAQBAA9eqVau46KKL4gc/+EG88MILBX/d+++/nz2KIV14OfXUU7NAEUC1SO9NZ599dsyaNSsLNRYqhSXT+2l93lML0b9//7jiiiuiU6dORX1dgFq15pprZmH2Y445pqBuPclrr72WPYohXU9KNVAdRGMBoAqldol//etfo1evXmXdN51kTPumEBJANUh3pBR6twkAACyJ1L0nXVTeYostyr53unM6jQTfbbfdyr43QD7pXGEa0VXpMdfpAvO1114b3bt3r2gdANUmjQE78cQTs1G15ZL2OuWUU2Lvvfcu257kJwAEAFVq4MCBcf3112ctbcthk002iUsuuSQbHwZQLZ577rlKlwAAQCOSPhOff/75ccghh2TjuMohXchO3Ye22267suwHsDhatGgRZ555ZtbpIXVNK6d0kTldYL7yyiujS5cuZd0boFbss88+2fjFcrxHp/B66jq01157lXwv6kcACACqWOoAdOONN5Y0QZ0O1I444ojsZGO5P7wD5PP2229XugQAABrhuJuf/exnMXLkyBgwYEBJ99p0003jjjvuiI022qik+wAUy/777x8333xzrLXWWmXZb7nllss6lp988sm6lgPksfXWW8dNN90UK620Usn26NOnT1x11VWx8847l2wPFp8AEABUudatW2cfcK+55pqiz1Fdf/3147bbbovDDjssO8EJUG3Gjh1b6RIAAGikVltttSyc86tf/SqWXnrpor720KFD4y9/+UtcfPHF0bVr16K+NkCprbDCCtm5yjQWbNVVVy3JHssss0x2TvSuu+6KDTbYoCR7ADREaapEurE8dWwr5nFm27Ztsy6Z6X15jTXWKNrrUlzNi/x6AECJpLtq0t2HTz/9dNxwww1x3333xezZsxfrIG2rrbaKPfbYI4YNG1aSWgGKZfr06ZUuAQCARix1zd1tt91ixx13jIcffjjrevHYY4/F3Llz6/1a7du3j8033zwb9eViNtAQbLHFFtnjxRdfzG4yfOCBB2LChAmL/XodOnSIjTfeOLbZZpvsn25YBFg8qWNa6ti2yy67ZIH21BXolVdeWexObDvssEPsvvvugus1oMnChQsXVroIAKD+Zs2aFaNGjYpnn3023n333Rg9enRMnDgxZs6cmQWD0knKdu3aRc+ePaNv376x8sorZx2E0kO7XAAAAFg86XN3+jyeHu+///7/fR5P4fX0eTyN1+7YsWP26N+/fwwePDjrkDF8+HCfx4EGLV1yfOutt+Lll1+O1157LT7++OOss+8XX3yRncucM2dOds6yTZs22Xtk6q6WOv2k85ZDhgzJ3itbtGhR6W8DoEEaP358PPnkk/HSSy/FBx98kL1HT506NWbMmBELFizIjmE7deoUvXr1yo5h03vyiBEjYuDAgZUunXoQAAIAAAAAAAAAgBqmdx4AAAAAAAAAANQwASAAAAAAAAAAAKhhAkAAAAAAAAAAAFDDBIAAAAAAAAAAAKCGCQABAAAAAAAAAEANEwACAAAAAAAAAIAaJgAEAAAAAAAAAAA1TAAIAAAAAAAAAABqmAAQAAAAAAAAAADUMAEgAAAAAAAAAACoYQJAAAAAAAAAAABQwwSAAAAAAAAAAACghgkAAQAAAAAAAABADRMAAgAAAAAAAACAGiYABAAAAAAAAAAANUwACAAAAAAAAAAAapgAEAAAAAAAAAAA1DABIAAAAAAAAAAAqGECQAAAAAAAAAAAUMMEgAAAAAAAAAAAoIYJAAEAAAAAAAAAQA0TAAIAAAAAAAAAgBomAAQAAAAAAAAAADVMAAgAAAAAAAAAAGqYABAAAAAAAAAAANQwASAAAAAAAAAAAKhhAkAAAAAAAAAAAFDDBIAAAAAAAAAAAKCGCQABAAAAAAAAAEANEwACAAAAAAAAAIAaJgAEAAAAAAAAAAA1TAAIAAAAAAAAAABqmAAQAAAAAAAAAADUMAEgAAAAAAAAAACoYQJAAAAAAAAAAABQwwSAAAAAAAAAAACghgkAAQAAAAAAAABADRMAAgAAAAAAAACAGiYABAAAAAAAAAAANUwACAAAAAAAAAAAapgAEAAAAAAAAAAA1DABIAAAAAAAAAAAqGECQAAAAAAAAAAAUMMEgAAAAAAAAAAAoIYJAAEAAAAAAAAAQA0TAAIAAAAAAAAAgBomAAQAAAAAAAAAADVMAAgAAAAAAAAAAGqYABAAAAAAAAAAANQwASAAAAAAAAAAAKhhAkAAAAAAAAAAAFDDmle6AAAAAAAAqsP8+fNj7733jhdeeOFbz+2+++5x+umnR2Px+uuvx8477xwLFiz4r99v0aJFjBw5MoYOHVqx2gAAAL5JByAAAAAAADIXXHDBIsM/HTt2jCOPPDIak8GDB8dOO+30rd+fO3du/OIXv4jp06dXpC4AAIBFabJw4cKFi3wGAAAAgAbl2GOPjVtvvTUasgceeCCWWWaZ//q9FVdcMefXDB8+PK666qoSVwbV79lnn4399tvvWx1vkuOOOy4OOOCAaGwmTpwYW2655SLDPjvuuGOcddZZFakLAADgm3QAAgAAAABo5KZNmxbHHHPMIsM/yy23XDYWrDHq3r17HHLIIYt8LgUq77777rLXBAAAsCgCQAAAAAAAjVzqZDNmzJhFPnf00UdHixYtorFKnY++2VnsK6eddlpMmjSp7DUBAAB8kwAQAAAAAEAj9uijj8aNN964yOfWWWed2HzzzaMxa9myZRx11FGLfC6Ff0499dSy1wQAAPBNAkAAAAAAAI3UjBkz4uSTT17kc02aNMnGghGx9dZbx7Bhwxb53D333GMUGAAAUHECQAAAAAAAjdSf/vSnGDt27CKf23bbbWOVVVYpe03VKo1Cq8sZZ5wR06ZNK2s9AAAAXycABAAAAADQCL3++utx1VVX1Tn26sgjjyx7TdVsrbXWis0222yRz02YMCH+8Ic/lL0mAACArwgAAQAAAAA0MgsXLozTTjst5s+fv8jn99xzz+jTp0/Z66p2P/vZz6Jp00WfVh85cmS89tprZa8JAAAgabIwfdIDAAAAgCW04oor5l3zk5/8JA4//PCoprqGDx9eZxcUaKhuu+22OOaYYxb5XNu2beOBBx6Irl27lr2uWvDLX/4ybr/99kU+t+aaa2ZBIAAAgHLTAQgAAAAAoBGZMWNGnHPOOXU+v99++wn/5AkyNm/efJHPjRo1Ku66666y1wQAALDoTykAAAAA0EC89dZblS4Bqspll10WEyZMqLP7z4EHHlj2mmrJsssuG9tuu23ceuuti3z+7LPPju985zvRsmXLstcGAAA0XjoAAQAAAAA0EpMmTYorrriizuf32GOP6Ny5c1lrqkUHH3xwNGnSZJHPjR071hgwAACg7ASAAAAAAAAaiUsuuSSmT5++yOfSWKv999+/7DXVogEDBsRmm21W5/OXXnppnT9nAACAUhAAAgAAAABoBMaPHx/XXnttnc+nQEuvXr3KWlMt23vvvet87vPPP4+rrrqqrPUAAACNmwAQAAAAAEAjcPnll8fs2bPrfH6vvfYqaz21br311otll122zuevvPLKmDlzZllrAgAAGi8BIAAAAACABu6LL76IG264oc7n+/fvH+uuu25Za6p1TZo0iT322CPnz/z6668va00AAEDjJQAEAAAAANDAXX311TFjxow6n995553LWk9DscMOO0Tz5s3rfP6KK66IefPmlbUmAACgcar7kwkAAAAAQA1J460mTpyYjV1KjxYtWkS7du2iU6dO0bFjx2is5syZE9ddd13OTjbbbLNNVNrChQtj0qRJMXny5Jg1a1b269atW2ePzp07R/v27aPadO3aNTbYYIN4+OGHF/n8p59+Gvfcc098//vfL3ttAABA4yIABAAAAAAVMmXKlHjkkUfixRdfjHfeeSc+/vjjmDZtWkyfPj0Lr6TAQwqvDBgwIFZYYYVYZ511Yq211opmzZot8d4pKPPQQw/FK6+8Em+99VaMGzcupk6dmoVoWrVqle3dq1evbO+hQ4fGhhtuGP369YtqMXfu3Hj22Wfjueeei+effz4++OCDGD9+fBYaWZQUIEn1r7baarH22mvHeuutV5WBklL45z//mf151yX9PJZeeukotw8//DCeeOKJGDVqVLz55psxevTo7M+1LinE1bt371hxxRVj2LBhscYaa8TKK68clbbtttvWGQBKrrrqKgEgAACg5JosrOsTMQAAAADUQ7oon89PfvKTOPzww6Oa6ho+fHh2gb6+NttssxgzZswin2vbtm288MILdX7tk08+mY0GSuGHXIGHujqOpLFDP/zhD6Nbt271+tp0KvDBBx+MK6+8MgvOLFiwoF5fv8oqq8R+++0X2223XTRt2jQq4Y033ohrr70266qSOsUsrtRVZtNNN4099tgjRowYEQ3ZLrvskgW96vKrX/0qdtttt7LU8vnnn8fNN98cd9xxR7z99ttL/Hp9+vSJ73znO1n9AwcOjEpI3aZSoCzXiLVbbrkl++8HAACgVCrzKR0AAAAAGqEUwth1113jgAMOiH//+9/1Dv8kaUTS5ZdfHltssUX89a9/rbPjzTelLjnbb799HHroofHMM8/UO/yTvPbaa3HMMcdkr5MrUFKq4M+PfvSjLPx0/fXXL1H4J0kjpv71r3/F/vvvH3vuuWcWiGqIUnenXH9WKciVwmyl9sUXX8Svf/3r2GSTTeKcc84pSvgnSSG8FGhLHXYOPvjgePXVV6Pc2rRpkwWAcrnxxhvLVg8AANA4CQABAAAAQInNmzcvfvvb32ZdSl5++eWivGbqNvL73/8+6wSUxobl2vuMM86IvfbaKwuDFEMKb6TQTDlCDen7PPPMM2PnnXfOOWZpSaRw1D777BMnnHBCNpatIUmdZ3JJo7S6d+9e0hpS2G3rrbfOOm3NmTOnJHukIFzaJwXsTj311KwrTzmlblK53HXXXdl4PQAAgFIRAAIAAACAEkodew488MCsa8/idN3J57HHHss64ywq8JC6rhx00EHx97//veBOQYVK3YtOPPHEGDlyZJTKhx9+mIWmUoeX+fPnRymln89NN92UjcsqVneaSks/szRqK5dSd/9Jf3aHHHJI9t9BOaT/xtKIuBR4GzduXJQzAJRrLF4Klt1///1lqwcAAGh8BIAAAAAAoERS6CGNmEojt0opja866aST/uv30oistPfTTz9d0r3TWKdS7JFeM4Vx3nnnnSin0aNHx+677x5PPPFE1Lr09+Lzzz/PuWajjTYq2f4peJa6N5Ui+JbP66+/no3aK1fwqFu3bjF48OCca+69996y1AIAADROAkAAAAAAUAKzZs3KxnOVq5tM6vTyVYeR6dOnZ51/ijXyK1+XmTQ6K32/xfL444/HwQcfHFOnTo1KSGPHUteaNFKqlj344IM5n+/cuXOsuOKKJdn7ySefjLPOOisqKXWQ+ulPf1r07ld1GT58eN5uXaUagQYAANC80gUAAAAAQEN02mmnxWuvvZZzTceOHbMOLEOGDIllllkmOnXqlAVpUteS1PnmkUceqVeI549//GNsvvnmcdxxx+Xde4UVVsj27t+/f9a9JNWSgkMpNJE6x6Twy+zZswva9+OPP47rrrsu67iypF555ZU49NBD6xUo6tOnT3znO9+JtdZaKwYMGBBLLbVUtGnTJgtbpE5I6Xt68cUXs+/phRdeKOg10/eewiPXXHNNrLLKKlGLHnrooZzPr7POOtGkSZOSBKiOP/74gse2pb+D6e9tCiMNHDgwunfvHm3bts0e6c8hBcHGjx+f/Z1OfzdT0K3Qvx+p+1Ya7bbrrrtGqY0YMSIb9VeXadOmZfVssMEGJa8FAABofJosLNftDwAAAAA0aIV0EvnJT34Shx9+eFRTXalrx1VXXVXv191ss81izJgxi1VTCqkcdthhseWWW0bLli3zjsJKY7YK7SSU6qqr80vTpk1j2223zf4c+vXrl/N1UgjpwgsvzAIwhZxC7N27dzzwwAPZHosrhTzS2K8JEyYUtH611VbLwkIbb7xxwXu899572ff1z3/+s6Dvq1evXnHzzTdnoZRa8u6778b3v//9nGvS2Lh99tmn6Huff/75ccEFF+Rdt/rqq2dhtWHDhtXr9VMg6IorrohLL7005s6dm3d9CoSlv5stWrSIUkoBn/R+kiv4tPfee8fJJ59c0joAAIDGyQgwAAAAACiT5s2bx1FHHRV33nlnbLPNNnnDP191abn++utjzTXXLGiPusI/KfBz6623xu9+97u84Z+ka9euWUDkoosuilatWuVdP3bs2CystCRSGKSQ8E/q7nP66adnXYfqE/5JUoeZc889NwuQpHBPPp9++mmceuqp0dDGfyVDhw4t+r6pM8/VV1+dd93+++8f1157bb3DP0mHDh3iiCOOyDr7FBLMSsGyFPgqtfbt22d/v5akKxMAAMDiEgACAAAAgDJo3bp1XHbZZXHwwQdHs2bN6vW1aRTSxRdfnIVyFkfqSnLDDTfESiutVO+v3XTTTePss88uaG0aWba4brzxxnj88ccL6uaSAlG77777Eo2vWnfddbMAyeDBg/Ouve+++8oSICmmJ598MufzqRvO4vx9yOfhhx/Oxq7lst1222UjwpZ0/FiqP3XvSoGgfO64444oh1VXXTVvUG706NFlqQUAAGhcBIAAAAAAoMTSWKzzzjsvRowYsdiv0bFjx6zryeIEEtKopC5duiz23mlU2Xe/+92865555pnFev3p06fHOeeck3ddjx49spFkhYybK0R6vSuvvDIGDRqUd22qr5BxU9UgjTZ75ZVXcq5ZYYUVCupAVV/5QmCpe1PqLFUsaZzeiSeemHfdU089lY3oqnQAKHnppZdKXgcAAND4CAABAAAAQIntu+++9R5VtSg77rhj1g2oPl2H0rirFLpYUgcccEDeNe+8804sWLCg3q/997//Pb744ou8HWvSOLK+fftGMXXq1CnrrtSuXbuc6z755JO4+eaboxa8//77MXXq1CUOqiyO119/Pefz6b+DFGYrph122CELNOWSwlujRo2KUltllVXyrnn55ZdLXgcAAND4CAABAAAAQAmlzjtHHnlkUV4rBXrqEyRKwaNll122KHuvttpq0blz55xrZs+eHWPGjKnX66avSV148vnJT34SQ4YMiVLo06dPHH300XnXXXHFFVELCgmYlGL811cjrnIpdoDrK3vuuWfeNfm6IhVD+rnmG20mAAQAAJSCABAAAAAAlNDee+9dr649+ay++uoFrWvevHlBXXvqM8askFFZEyZMqNfr3nfffTF58uSca3r37h0HHXRQlNLuu++eNyz14YcfxnPPPRfVrpARU8UKhi1qnNuSPL+41l133f/6dQrhpBFva665ZtY5K43PW5IRfPUJ6fXq1SvnmjfeeKNmxskBAAC1o3mlCwAAAACAhiyNJyqmfKOOvh6I6N69e1H37t+/fzzzzDM51+Qb5fVNt9xyS941++23X7Rs2TJKKQVG9tprrzjzzDNzrrv11ltjrbXWimr26quvViwAlP6c5s2bV+fzTzzxRCxcuDBvl5z6GjBg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aGjWXXfd+M1vflPQ2rfeeqviAaDUAQsAAKCYCuuLCgAAAABQZGuuuWbcc889Odc88sgjWdeWQsaFFcMzzzwT559/fhbQSI8UqPnq33v16hUtWrSIalZIsKSQgMriSn9W6fXff//9bz1Sp56tt966ZHtvueWWMXjw4Hj99ddzrps8eXKUkgAQAABQCQJAAAAAAEBFbLTRRnm7tkyYMCGeeuqprMNLOVx55ZVZCGhRmjZtGj179oyhQ4dmIaFq1Llz5+jatWtMmjQpZwBmxowZ0bZt26Lt+8QTT8Tvf//7+PDDD7PXXpSXXnqppAGgZMMNN8wbAJo+fXpJayhkxNqAAQNKWgMAAND4GAEGAAAAAFRE//79Y7nllsu7buTIkWWp5+OPP46HHnqozucXLFiQjc/q0aNHVLMVVlih7F2A2rdvnwVv6gr/JM8++2yUWrdu3fKuadeuXUlrKORnO2jQoJLWAAAAND4CQAAAAABAxey0005519x3333x6quvlryWP/zhD1nIJ5/vf//7Uc0KCZe8/fbbRd1zpZVWijZt2uRc89prr8Wbb74ZpZSr89FXunTpUtIa3n333ZzPp59T3759S1oDAADQ+AgAAQAAAAAVDQA1b94855qFCxfGSSedFPPmzStZHaNGjYq77ror77revXvHGmusEdVs1VVXzbsm35is+mrZsmWMGDGi4t2cXnnllYLCSqXsIvXll1/mXDN48OBo0qRJyWoAAAAaJwEgAAAAAKBi0jit7bbbrqDAyplnnlmSGqZMmRLHHXdcQWv33nvvqg9vDBs2rOwBoOQ73/lO3jU33XRTQSGdxTFmzJh48sknc65Jf3arrbZalMobb7yRd83qq69esv0BAIDGSwAIAAAAAKioww8/PFq0aJF33dVXXx1//vOfi7r3/Pnz4xe/+EWMHj0679pevXrFvvvuG9Wuf//+0blz5yUOqtTXVlttFW3bts378z7++ONj2rRpRd//1FNPzTvCbd111837s1kSacxZPgJAAABAKQgAAQAAAAAVlcZq/eAHPyho7Z/+9Kf41a9+FXPnzl3ifWfOnBmHHXZY/Pvf/y5o/U9+8pNo1apV1IK11lor5/Off/55fPrpp0Xds127drHzzjvnXff222/HD3/4w5g+fXrR9j7nnHPikUceybtu1113jVLK11mpadOmseaaa5a0BgAAoHESAAIAAAAAKi4FcQYNGlTQ2tQJaM8991yiLjYpqJHGeT300EMFrR8yZEjstNNOUSvWX3/9vGteffXVou+bgj2FhKReeOGF2GWXXeLFF19cov1SJ6GTTjopLr300rxrV1hhhfjud78blQwADR48OLp06VLSGgAAgMZJAAgAAAAAqLiWLVvGueeeG+3bty9o/SuvvJJ1m/n5z3+ehUnqE9A48cQTs/BJIeOakjQyKnUeatasWdSKDTfcMO+ap59+uuj7pjFpBx98cEFr33///SzIlUawPffcc/XaZ/LkyXHNNdfEtttuGzfccENBX3PssceW9M/w3XffjYkTJ+Zcs8EGG5RsfwAAoHFrXukCAAAAAAC+6tCSQkA//vGPY/78+XnXpzV33XVX9ujTp0+ss846sfLKK8cyyywTHTp0yNZMmTIlG3eVut08//zz8c4779SrpjSy6eyzz85ev5b07ds3+vfvHx988EGdax5//PGS7J0CQA8++GBBAasFCxbEHXfckT2WXnrpGDZsWNZtKQWJ0p9hGiuWxr2lTj8p9JP+/FLnp9Q5aM6cOQXXtM8++5Q8fFPIz3PjjTcuaQ0AAEDjJQAEAAAAAFSNFJBIgZujjz46C34UasyYMXHLLbcUtZYU/jnllFMK6qZTjdK4q4svvrjO599777349NNPs7BNsbs5/fGPf4zddtstvvjii4K/bty4cdnj7rvvLmo9a621Vtb9p9TyBYCWWmqpWH311UteBwAA0DgZAQYAAAAAVJWtt946Lrzwwqz7S6V8FWLZY489olalAFA+jz32WEn27tevX/zlL3/5v05MlTJixIi49NJLo0WLFiXdJ3UjevbZZ3Ou2XLLLaNJkyYlrQMAAGi8BIAAAAAAgKrsBHTzzTfHiiuuWPa9u3btGpdddllBAZpqNnjw4FhuueVyrinVGLAkjfIaOXJk9O7dOyphl112ycI/5QiSvfDCCzFjxoyca773ve+VvA4AAKDxEgACAAAAAKpS//7946abboojjjgi2rRpU5Y9U0jjrrvuiuHDh0dDsOOOO+Z8/oknnoj58+eXbP9BgwbFbbfdFttss02USxq1lTpInXHGGdGqVauy7Jmvk1IKYq255pplqQUAAGicBIAAAAAAgKqVRnEddthh8a9//Sv22WefaNu2bUn2WW+99bJuNWnsV+oA1FCkAFDTpnWfBp48eXI8+eSTJa2hU6dOcc4558Q111xT0mBVjx494rjjjov77rsvtthiiyin9Pczl5133rlstQAAAI1T80oXAAAAAACQz9JLLx0nnXRS1g3ozjvvjLvvvjtGjRq1RN1r+vTpk435SiGZ1KmmIUrdcDbaaKN4+OGH61yTfp4bbLBByWtZa6214qqrroq33nor/vGPf8QDDzwQH3744RK9ZgqEpdp32GGHbGxc8+blP+X94osvxscff1zn8y1atMjqAwAAKKUmCxcuXFjSHQAAAAAASmDq1Knx0ksvZQGM999/P8aMGRPjx4+P6dOnx8yZM7NwUOoglMaHde/ePQvDDBw4MFZcccUsjLLssstGY/D444/HQQcdVOfz7du3z0aBlWtc1teNGzcuXnjhhSwU9MEHH2S//vzzz+PLL7+MOXPmxNy5c//vz7Bdu3bRu3fv6NevXwwYMCAbqTVkyJCKhH6+7te//nUWbKrLtttuG2effXZZawIAABofASAAAAAAgAYuhVDefvvtOp8///zzY8sttyxrTQ1BCpmlzkOfffZZnWtuvfXWGDx4cFnrAgAAGp+6hz8DAAAAANAgHHDAATmfT2PAqL+nnnoqZ/hn+PDhwj8AAEBZCAABAAAAADSCDkBpDFpdHn744WzsFvVz++2353z+wAMPLFstAABA4yYABAAAAADQwLVs2TL23HPPOp+fPXt23HjjjWWtqdZNmjQp/vnPf9b5/HLLLRebbrppWWsCAAAaLwEgAAAAAIBGYK+99oq2bdvW+fzIkSNjwYIFZa2pll1//fUxZ86cOp8/6KCDokmTJmWtCQAAaLwEgAAAAAAAGoGuXbvGfvvtV+fzY8aMiQcffLCsNdWqefPmxXXXXVfn8/369YuddtqprDUBAACNmwAQAAAAAEAj8cMf/jA6d+5c5/NXXXVVWeupVffee298+umndT5/+OGHR4sWLcpaEwAA0LgJAAEAAAAANBIdOnTIQkB1eeqpp+Kdd94pa0216Oqrr67zuUGDBsU222xT1noAAAAEgAAAAAAAGpF99903evbsWefzl19+eVnrqTUvv/xyjBo1qs7njzzyyGja1Kl3AACgvHwKAQAAAABoRFq3bh2HHnponc/ffvvt8dFHH5W1plpy/vnn1/ncaqutFptvvnlZ6wEAAEgEgAAAAAAAGpldd901VlxxxUU+N2/evPjzn/9c9ppqwUsvvRSPPPLIIp9r0qRJHHfccWWvCQAAIBEAAgAAAABoZJo3bx6nnXZaFlqpqwvQhx9+WPa6qt15551X53O777571gEIAACgEgSAAAAAAAAaodVXXz122223RT43f/78uPDCC8teUzV7/vnn47HHHlvkc927d4+jjjqq7DUBAAB8RQAIAAAAAKCRSqGVbt26LfK5u+66K95///2y11Stzj///DqfO+aYY6Jjx45lrQcAAODrBIAAAAAAABqpTp06ZeGVuroA/eEPfyh7TdXoiSeeyB6Lsu6668Z2221X9poAAAC+TgAIAAAAAKAR23777WOTTTZZ5HP33ntvPPnkk9GYzZs3L37zm98s8rl27drF6aefXvaaAAAAvkkACAAAAACgkTvzzDOjZ8+ei3zujDPOyEIwjdXIkSPjnXfeWeRzJ598cvTr16/sNQEAAHyTABAAAAAAQCPXtWvX+P3vfx9Nm377lHEKv6QQTGM0adKkOP/88xf5XBr7tcMOO5S9JgAAgEURAAIAAAAAIEaMGBEHH3zwIp9LIZgUhmls/vjHP8aUKVO+9fup688pp5xSkZoAAAAWRQAIAAAAAIDM4YcfHquvvvq3fj+FYFIYpjF544034sYbb/zW77do0SLOOeecaN++fUXqAgAAWJQmCxcuXLjIZwAAAAAAAAAAgKqnAxAAAAAAAAAAANQwASAAAAAAAAAAAKhhAkAAAAAAAAAAAFDDBIAAAAAAAAAAAKCGCQABAAAAAAAAAEANEwACAAAAAAAAAIAaJgAEAAAAAAAAAAA1TAAIAAAAAAAAAABqmAAQAAAAAAAAAADUMAEgAAAAAAAAAACoYQJAAAAAAAAAAABQwwSAAAAAAAAAAACghgkAAQAAAAAAAABADRMAAgAAAAAAAACAGiYABAAAAAAAAAAANUwACAAAAAAAAAAAapgAEAAAAAAAAAAA1DABIAAAAAAAAAAAqGECQAAAAAAAAAAAUMMEgAAAAAAAAAAAoIYJAAEAAAAAAAAAQA0TAAIAAAAAAAAAgBomAAQAAAAAAAAAADVMAAgAAAAAAAAAAGqYABAAAAAAAAAAANQwASAAAAAAAAAAAKhhAkAAAAAAAAAAAFDDBIAAAAAAAAAAAKCGCQABAAAAAAAAAEANEwACAAAAAAAAAIAaJgAEAAAAAAAAAAA1TAAIAAAAAAAAAABqmAAQAAAAAAAAAADUMAEgAAAAAAAAAACoYQJAAAAAAAAAAABQwwSAAAAAAAAAAACghgkAAQAAAAAAAABADRMAAgAAAAAAAACAGiYABAAAAAAAAAAANUwACAAAAAAAAAAAapgAEAAAAAAAAAAA1DABIAAAAAAAAAAAqGECQAAAAAAAAAAAUMMEgAAAAAAAAAAAoIYJAAEAAAAAAAAAQA0TAAIAAAAAAAAAgBomAAQAAAAAAAAAADVMAAgAAAAAAAAAAGqYABAAAAAAAAAAANQwASAAAAAAAAAAAKhhAkAAAAAAAAAAAFDDBIAAAAAAAAAAAKCGCQABAAAAAAAAAEANEwACAAAAAAAAAIAaJgAEAAAAAAAAAAA1TAAIAAAAAAAAAABqmAAQAAAAAAAAAADUMAEgAAAAAAAAAACoYQJAAAAAAAAAAAAQtev/AXZZM4N4twmBAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1232,10 +222,10 @@ } ], "source": [ - "# create the Analysis object using the Analysis class\n", - "# the nerdss_output directory is the output directory from the NERDSS simulation\n", - "# it can be the parent directory of several simulations\n", - "analysis = ion.Analysis(\"~/Documents/8y7s_dir/nerdss_output\")\n", + "# 1. Analyze NERDSS Simulation Output:\n", + "analysis = ion.Analyzer(\n", + " f\"{save_folder}/nerdss_output\"\n", + " )\n", "\n", "analysis.plot_figure(\n", " figure_type='line',\n", @@ -1243,13 +233,13 @@ " y='count',\n", " legend=[\"A: 1.\", \"A: 4.\",],\n", " show_type='average',\n", - " figure_size = (6, 4)\n", + " figure_size = (4, 3)\n", " )\n", "\n", - "plt.plot(time,((concentrations.T)[0]).T * 130, label='Monomer (ODE)')\n", + "plt.plot(time,((concentrations.T)[0]).T * 130, '--', label='Monomer (ODE)')\n", "# Plotting the concentrations of Tetramer, sum of 1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,24\n", "indices = [1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,24]\n", - "plt.plot(time,((concentrations.T)[indices]).T.sum(axis=1) * 130, label='Tetramer (ODE)')\n", + "plt.plot(time,((concentrations.T)[indices]).T.sum(axis=1) * 130, '--', label='4-mer (ODE)')\n", "\n", "plt.legend()" ] diff --git a/examples/coarse_grained_setup.py b/examples/coarse_grained_setup.py index 6d7536fb..9016083b 100755 --- a/examples/coarse_grained_setup.py +++ b/examples/coarse_grained_setup.py @@ -149,7 +149,7 @@ def process_pdb(pdb_id: str, folder_format: str = '~/Documents/{pdb_id}_dir'): # set up the coarse grain model from pdb model, # by detecting binding interfaces between chains based on atomic distances # for all tunable parameters see - # https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.coarse_grain + # https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.coarse_grain # set standard_output=True to see the determined interfaces pdb_model.coarse_grain(distance_cutoff=0.35, residue_cutoff=3, @@ -157,12 +157,12 @@ def process_pdb(pdb_id: str, folder_format: str = '~/Documents/{pdb_id}_dir'): save_pymol_script=False, standard_output=True) - # identify, align, and regularize all molecular chains so that homologous chains share + # identify, align, and regularize all molecular chains so that repeated chains share # the same relative geometry. This method organizes molecule and interface objects # accordingly and sets up reaction objects. # for all tunable parameters see - # https://ionerdss.readthedocs.io/en/latest/ionerdss.nerdss_model.html#ionerdss.nerdss_model.pdb_model.PDBModel.regularize_homologous_chains - pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, + # https://ionerdss.readthedocs.io/en/latest/ionerdss.model.html#ionerdss.model.pdb_model.PDBModel.regularize_repeated_chains + pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, dist_threshold_inter=3.5, angle_threshold=25.0, show_coarse_grained_structure=False, diff --git a/het3mer/A.mol b/het3mer/A.mol new file mode 100644 index 00000000..a1da5435 --- /dev/null +++ b/het3mer/A.mol @@ -0,0 +1,21 @@ +Name = A +isLipid = false +isImplicitLipid = false +checkOverlap = true +countTransition = false +transitionMatrixSize = 500 +insideCompartment = false +outsideCompartment = false +mass = 1.0 + +D = [10.00, 10.00, 10.00] + +Dr = [0.1, 0.1, 0.1] + +COM 0.0000 0.0000 0.0000 +C1 0.550128 -0.013652 -1.185641 +B1 -0.806372 0.427132 -0.479626 + +bonds = 2 +com C1 +com B1 diff --git a/het3mer/B.mol b/het3mer/B.mol new file mode 100644 index 00000000..2690a728 --- /dev/null +++ b/het3mer/B.mol @@ -0,0 +1,21 @@ +Name = B +isLipid = false +isImplicitLipid = false +checkOverlap = true +countTransition = false +transitionMatrixSize = 500 +insideCompartment = false +outsideCompartment = false +mass = 1.0 + +D = [10.00, 10.00, 10.00] + +Dr = [0.1, 0.1, 0.1] + +COM 0.0000 0.0000 0.0000 +C1 0.980186 0.123904 -1.036929 +A1 0.532613 -0.286597 0.022003 + +bonds = 2 +com C1 +com A1 diff --git a/het3mer/C.mol b/het3mer/C.mol new file mode 100644 index 00000000..63c00789 --- /dev/null +++ b/het3mer/C.mol @@ -0,0 +1,21 @@ +Name = C +isLipid = false +isImplicitLipid = false +checkOverlap = true +countTransition = false +transitionMatrixSize = 500 +insideCompartment = false +outsideCompartment = false +mass = 1.0 + +D = [10.00, 10.00, 10.00] + +Dr = [0.1, 0.1, 0.1] + +COM 0.0000 0.0000 0.0000 +A1 -0.069705 0.597908 2.124994 +B1 -0.607224 0.835791 1.694028 + +bonds = 2 +com A1 +com B1 diff --git a/het3mer/PDB/0.pdb b/het3mer/PDB/0.pdb new file mode 100644 index 00000000..f8d61e99 --- /dev/null +++ b/het3mer/PDB/0.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 0 CREATED Thu May 29 13:08:48 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 252.1 61.7 276.9 0 0CL +ATOM 1 A1 C 0 253.1 62.9 278.4 0 0CL +ATOM 2 B1 C 0 253.5 62.9 277.8 0 0CL +ATOM 3 COM C 1 305.1 151.7 485.3 0 0CL +ATOM 4 A1 C 1 307.2 151.8 484.9 0 0CL +ATOM 5 B1 C 1 306.8 152.4 484.7 0 0CL +ATOM 6 COM C 2 198.1 118.5 194.9 0 0CL +ATOM 7 A1 C 2 199.7 119.2 196.1 0 0CL +ATOM 8 B1 C 2 199.0 119.5 196.3 0 0CL +ATOM 9 COM C 3 359.7 363.7 392.7 0 0CL +ATOM 10 A1 C 3 358.6 361.9 393.4 0 0CL +ATOM 11 B1 C 3 359.3 361.8 393.2 0 0CL +ATOM 12 COM C 4 415.6 412.6 383.9 0 0CL +ATOM 13 A1 C 4 417.0 413.4 382.4 0 0CL +ATOM 14 B1 C 4 416.4 413.3 382.2 0 0CL +ATOM 15 COM C 5 18.7 329.5 349.7 0 0CL +ATOM 16 A1 C 5 18.8 330.3 347.6 0 0CL +ATOM 17 B1 C 5 19.0 330.8 348.2 0 0CL +ATOM 18 COM C 6 151.5 130.9 206.6 0 0CL +ATOM 19 A1 C 6 149.9 130.4 205.1 0 0CL +ATOM 20 B1 C 6 149.9 131.1 205.4 0 0CL +ATOM 21 COM C 7 283.1 353.7 92.0 0 0CL +ATOM 22 A1 C 7 284.5 355.4 92.2 0 0CL +ATOM 23 B1 C 7 284.4 355.1 91.5 0 0CL +ATOM 24 COM C 8 207.4 360.2 44.1 0 0CL +ATOM 25 A1 C 8 208.0 359.2 42.3 0 0CL +ATOM 26 B1 C 8 207.5 359.8 42.2 0 0CL +ATOM 27 COM C 9 16.3 279.7 295.4 0 0CL +ATOM 28 A1 C 9 17.9 281.1 295.9 0 0CL +ATOM 29 B1 C 9 17.8 281.0 295.2 0 0CL +ATOM 30 COM C 10 196.0 292.9 56.6 0 0CL +ATOM 31 A1 C 10 196.5 294.8 55.5 0 0CL +ATOM 32 B1 C 10 195.8 294.7 55.7 0 0CL +ATOM 33 COM C 11 220.4 277.0 446.3 0 0CL +ATOM 34 A1 C 11 218.3 276.4 447.0 0 0CL +ATOM 35 B1 C 11 218.5 276.2 446.3 0 0CL +ATOM 36 COM C 12 97.4 65.7 282.1 0 0CL +ATOM 37 A1 C 12 97.2 63.6 282.7 0 0CL +ATOM 38 B1 C 12 97.3 64.1 283.2 0 0CL +ATOM 39 COM C 13 116.5 297.1 391.9 0 0CL +ATOM 40 A1 C 13 115.5 295.3 392.5 0 0CL +ATOM 41 B1 C 13 115.5 295.4 391.8 0 0CL +ATOM 42 COM C 14 339.7 33.3 412.0 0 0CL +ATOM 43 A1 C 14 340.1 33.8 414.2 0 0CL +ATOM 44 B1 C 14 340.6 34.0 413.7 0 0CL +ATOM 45 COM C 15 219.2 249.2 47.3 0 0CL +ATOM 46 A1 C 15 219.7 251.3 47.7 0 0CL +ATOM 47 B1 C 15 220.3 250.9 47.7 0 0CL +ATOM 48 COM C 16 280.1 25.6 364.3 0 0CL +ATOM 49 A1 C 16 282.1 24.7 364.2 0 0CL +ATOM 50 B1 C 16 282.0 25.3 363.8 0 0CL +ATOM 51 COM C 17 105.2 178.8 118.4 0 0CL +ATOM 52 A1 C 17 104.2 177.1 119.5 0 0CL +ATOM 53 B1 C 17 104.4 177.7 119.9 0 0CL +ATOM 54 COM C 18 240.0 413.5 167.2 0 0CL +ATOM 55 A1 C 18 239.6 414.8 168.9 0 0CL +ATOM 56 B1 C 18 239.8 415.1 168.3 0 0CL +ATOM 57 COM C 19 124.5 157.4 271.4 0 0CL +ATOM 58 A1 C 19 126.4 156.3 271.2 0 0CL +ATOM 59 B1 C 19 126.0 156.3 270.6 0 0CL +ATOM 60 COM C 20 148.5 0.4 250.6 0 0CL +ATOM 61 A1 C 20 149.7 2.2 250.8 0 0CL +ATOM 62 B1 C 20 149.6 1.9 250.2 0 0CL +ATOM 63 COM C 21 371.7 179.3 56.7 0 0CL +ATOM 64 A1 C 21 369.6 179.9 56.8 0 0CL +ATOM 65 B1 C 21 369.7 179.2 56.7 0 0CL +ATOM 66 COM C 22 401.4 175.4 121.4 0 0CL +ATOM 67 A1 C 22 402.5 177.3 121.2 0 0CL +ATOM 68 B1 C 22 401.8 177.3 121.5 0 0CL +ATOM 69 COM C 23 353.8 494.5 71.3 0 0CL +ATOM 70 A1 C 23 354.1 495.5 69.3 0 0CL +ATOM 71 B1 C 23 353.8 495.9 69.9 0 0CL +ATOM 72 COM C 24 375.1 86.3 417.2 0 0CL +ATOM 73 A1 C 24 376.2 85.2 415.5 0 0CL +ATOM 74 B1 C 24 375.6 85.7 415.3 0 0CL +ATOM 75 COM C 25 120.2 75.8 381.9 0 0CL +ATOM 76 A1 C 25 120.7 77.5 380.6 0 0CL +ATOM 77 B1 C 25 120.3 77.7 381.2 0 0CL +ATOM 78 COM C 26 377.5 239.4 189.9 0 0CL +ATOM 79 A1 C 26 379.0 238.3 191.1 0 0CL +ATOM 80 B1 C 26 379.2 238.9 190.9 0 0CL +ATOM 81 COM C 27 154.8 232.1 485.8 0 0CL +ATOM 82 A1 C 27 152.9 233.2 485.7 0 0CL +ATOM 83 B1 C 27 153.2 233.2 486.4 0 0CL +ATOM 84 COM C 28 254.9 244.4 32.9 0 0CL +ATOM 85 A1 C 28 256.0 246.1 33.8 0 0CL +ATOM 86 B1 C 28 255.5 245.8 34.2 0 0CL +ATOM 87 COM C 29 428.4 308.8 452.8 0 0CL +ATOM 88 A1 C 29 429.5 310.0 454.3 0 0CL +ATOM 89 B1 C 29 429.0 309.6 454.5 0 0CL +ATOM 90 COM C 30 88.9 315.7 182.8 0 0CL +ATOM 91 A1 C 30 89.8 313.7 183.2 0 0CL +ATOM 92 B1 C 30 89.7 314.2 183.7 0 0CL +ATOM 93 COM C 31 304.2 225.0 293.9 0 0CL +ATOM 94 A1 C 31 303.1 226.1 292.4 0 0CL +ATOM 95 B1 C 31 303.0 225.4 292.4 0 0CL +ATOM 96 COM C 32 159.3 486.5 73.0 0 0CL +ATOM 97 A1 C 32 158.9 484.4 72.5 0 0CL +ATOM 98 B1 C 32 158.5 484.9 72.1 0 0CL +ATOM 99 COM C 33 92.3 258.6 495.5 0 0CL +ATOM 100 A1 C 33 91.1 260.2 496.5 0 0CL +ATOM 101 B1 C 33 91.8 260.2 496.5 0 0CL +ATOM 102 COM C 34 344.3 309.8 132.8 0 0CL +ATOM 103 A1 C 34 345.2 311.5 131.6 0 0CL +ATOM 104 B1 C 34 345.2 310.8 131.3 0 0CL +ATOM 105 COM C 35 209.1 496.3 31.1 0 0CL +ATOM 106 A1 C 35 206.9 495.9 30.7 0 0CL +ATOM 107 B1 C 35 207.1 496.5 31.2 0 0CL +ATOM 108 COM C 36 79.7 375.2 263.4 0 0CL +ATOM 109 A1 C 36 79.3 377.2 262.5 0 0CL +ATOM 110 B1 C 36 79.4 376.6 262.1 0 0CL +ATOM 111 COM C 37 51.7 311.4 106.7 0 0CL +ATOM 112 A1 C 37 50.0 311.9 105.4 0 0CL +ATOM 113 B1 C 37 50.5 311.6 105.1 0 0CL +ATOM 114 COM C 38 80.8 85.1 474.0 0 0CL +ATOM 115 A1 C 38 81.7 86.8 475.2 0 0CL +ATOM 116 B1 C 38 81.6 86.2 475.6 0 0CL +ATOM 117 COM C 39 80.3 140.6 115.1 0 0CL +ATOM 118 A1 C 39 82.0 139.3 115.6 0 0CL +ATOM 119 B1 C 39 82.2 140.0 115.6 0 0CL +ATOM 120 COM C 40 359.8 81.0 91.2 0 0CL +ATOM 121 A1 C 40 360.4 83.1 91.2 0 0CL +ATOM 122 B1 C 40 360.4 82.8 90.6 0 0CL +ATOM 123 COM C 41 309.1 497.6 31.0 0 0CL +ATOM 124 A1 C 41 310.5 496.3 32.1 0 0CL +ATOM 125 B1 C 41 310.1 495.9 31.6 0 0CL +ATOM 126 COM C 42 403.8 338.1 452.6 0 0CL +ATOM 127 A1 C 42 404.1 335.9 452.6 0 0CL +ATOM 128 B1 C 42 404.6 336.3 452.2 0 0CL +ATOM 129 COM C 43 362.4 494.0 384.9 0 0CL +ATOM 130 A1 C 43 363.2 492.0 384.4 0 0CL +ATOM 131 B1 C 43 362.5 492.1 384.4 0 0CL +ATOM 132 COM C 44 358.5 476.1 130.9 0 0CL +ATOM 133 A1 C 44 360.2 477.5 131.4 0 0CL +ATOM 134 B1 C 44 359.6 477.5 131.9 0 0CL +ATOM 135 COM C 45 281.8 360.4 154.7 0 0CL +ATOM 136 A1 C 45 283.8 361.2 154.1 0 0CL +ATOM 137 B1 C 45 283.8 360.5 154.3 0 0CL +ATOM 138 COM C 46 93.3 105.0 410.8 0 0CL +ATOM 139 A1 C 46 93.1 103.4 412.3 0 0CL +ATOM 140 B1 C 46 92.6 103.5 411.9 0 0CL +ATOM 141 COM C 47 124.4 233.7 492.7 0 0CL +ATOM 142 A1 C 47 122.8 232.3 492.6 0 0CL +ATOM 143 B1 C 47 122.8 232.8 493.1 0 0CL +ATOM 144 COM C 48 27.9 85.3 28.1 0 0CL +ATOM 145 A1 C 48 28.5 83.4 27.1 0 0CL +ATOM 146 B1 C 48 27.8 83.8 26.9 0 0CL +ATOM 147 COM C 49 463.2 105.9 436.0 0 0CL +ATOM 148 A1 C 49 462.8 107.1 434.2 0 0CL +ATOM 149 B1 C 49 463.1 106.4 434.1 0 0CL +ATOM 150 COM C 50 159.5 208.7 477.8 0 0CL +ATOM 151 A1 C 50 160.9 207.3 476.8 0 0CL +ATOM 152 B1 C 50 160.7 207.9 476.5 0 0CL +ATOM 153 COM C 51 318.5 24.1 206.0 0 0CL +ATOM 154 A1 C 51 319.6 22.3 206.7 0 0CL +ATOM 155 B1 C 51 319.8 23.0 207.0 0 0CL +ATOM 156 COM C 52 236.4 47.5 371.6 0 0CL +ATOM 157 A1 C 52 234.7 48.3 370.4 0 0CL +ATOM 158 B1 C 52 234.8 48.5 371.1 0 0CL +ATOM 159 COM C 53 341.8 61.3 28.3 0 0CL +ATOM 160 A1 C 53 340.6 59.5 27.8 0 0CL +ATOM 161 B1 C 53 341.2 59.7 27.4 0 0CL +ATOM 162 COM C 54 306.4 100.6 486.5 0 0CL +ATOM 163 A1 C 54 306.6 98.4 486.3 0 0CL +ATOM 164 B1 C 54 307.2 98.9 486.1 0 0CL +ATOM 165 COM C 55 180.7 7.7 86.6 0 0CL +ATOM 166 A1 C 55 180.3 7.7 88.8 0 0CL +ATOM 167 B1 C 55 179.9 8.2 88.4 0 0CL +ATOM 168 COM C 56 345.0 87.2 432.5 0 0CL +ATOM 169 A1 C 56 343.3 85.8 432.6 0 0CL +ATOM 170 B1 C 56 343.9 85.7 433.1 0 0CL +ATOM 171 COM C 57 318.8 206.5 358.5 0 0CL +ATOM 172 A1 C 57 320.8 206.4 359.5 0 0CL +ATOM 173 B1 C 57 320.2 206.3 359.9 0 0CL +ATOM 174 COM C 58 162.8 24.4 249.8 0 0CL +ATOM 175 A1 C 58 163.0 26.2 248.5 0 0CL +ATOM 176 B1 C 58 162.3 26.0 248.7 0 0CL +ATOM 177 COM C 59 368.9 228.3 384.0 0 0CL +ATOM 178 A1 C 59 369.1 227.8 386.1 0 0CL +ATOM 179 B1 C 59 368.7 227.4 385.7 0 0CL +ATOM 180 COM C 60 213.2 355.5 473.9 0 0CL +ATOM 181 A1 C 60 212.5 357.5 473.1 0 0CL +ATOM 182 B1 C 60 212.5 356.9 472.7 0 0CL +ATOM 183 COM C 61 369.8 415.8 173.7 0 0CL +ATOM 184 A1 C 61 371.5 416.2 172.5 0 0CL +ATOM 185 B1 C 61 371.4 416.7 173.0 0 0CL +ATOM 186 COM C 62 329.4 79.0 272.8 0 0CL +ATOM 187 A1 C 62 330.9 77.9 271.7 0 0CL +ATOM 188 B1 C 62 330.7 78.5 271.4 0 0CL +ATOM 189 COM C 63 91.8 146.5 282.6 0 0CL +ATOM 190 A1 C 63 93.4 147.6 283.6 0 0CL +ATOM 191 B1 C 63 92.9 148.0 283.3 0 0CL +ATOM 192 COM C 64 301.6 460.5 79.8 0 0CL +ATOM 193 A1 C 64 302.1 458.5 80.6 0 0CL +ATOM 194 B1 C 64 302.6 458.9 80.6 0 0CL +ATOM 195 COM C 65 492.3 315.6 483.4 0 0CL +ATOM 196 A1 C 65 490.4 316.6 484.1 0 0CL +ATOM 197 B1 C 65 491.1 316.8 484.4 0 0CL +ATOM 198 COM C 66 293.9 125.3 146.0 0 0CL +ATOM 199 A1 C 66 295.3 124.7 147.6 0 0CL +ATOM 200 B1 C 66 295.5 125.2 147.2 0 0CL +ATOM 201 COM C 67 389.2 493.4 107.0 0 0CL +ATOM 202 A1 C 67 389.1 495.4 106.1 0 0CL +ATOM 203 B1 C 67 389.5 494.9 105.8 0 0CL +ATOM 204 COM C 68 123.8 286.7 335.2 0 0CL +ATOM 205 A1 C 68 124.5 288.4 336.4 0 0CL +ATOM 206 B1 C 68 123.9 288.0 336.7 0 0CL +ATOM 207 COM C 69 93.8 179.7 94.3 0 0CL +ATOM 208 A1 C 69 94.5 181.6 93.4 0 0CL +ATOM 209 B1 C 69 93.8 181.6 93.8 0 0CL +ATOM 210 COM C 70 498.6 353.4 49.5 0 0CL +ATOM 211 A1 C 70 499.4 355.2 50.3 0 0CL +ATOM 212 B1 C 70 499.2 354.7 50.8 0 0CL +ATOM 213 COM C 71 57.2 453.0 315.4 0 0CL +ATOM 214 A1 C 71 55.0 453.3 315.2 0 0CL +ATOM 215 B1 C 71 55.3 453.8 315.7 0 0CL +ATOM 216 COM C 72 364.9 109.4 425.2 0 0CL +ATOM 217 A1 C 72 364.2 108.2 426.8 0 0CL +ATOM 218 B1 C 72 364.3 107.9 426.2 0 0CL +ATOM 219 COM C 73 178.7 41.7 469.9 0 0CL +ATOM 220 A1 C 73 179.0 43.8 469.2 0 0CL +ATOM 221 B1 C 73 179.6 43.3 469.1 0 0CL +ATOM 222 COM C 74 499.7 296.6 141.3 0 0CL +ATOM 223 A1 C 74 498.2 297.9 142.2 0 0CL +ATOM 224 B1 C 74 498.7 298.3 141.8 0 0CL +ATOM 225 COM C 75 245.0 413.1 327.9 0 0CL +ATOM 226 A1 C 75 243.2 411.9 328.4 0 0CL +ATOM 227 B1 C 75 243.3 412.5 328.9 0 0CL +ATOM 228 COM C 76 323.9 469.5 480.6 0 0CL +ATOM 229 A1 C 76 323.6 469.9 482.7 0 0CL +ATOM 230 B1 C 76 324.0 470.3 482.4 0 0CL +ATOM 231 COM C 77 449.3 121.5 377.1 0 0CL +ATOM 232 A1 C 77 450.8 123.1 376.8 0 0CL +ATOM 233 B1 C 77 450.9 122.4 376.4 0 0CL +ATOM 234 COM C 78 35.5 155.5 322.8 0 0CL +ATOM 235 A1 C 78 33.7 154.3 323.4 0 0CL +ATOM 236 B1 C 78 33.9 154.9 323.8 0 0CL +ATOM 237 COM C 79 497.7 292.2 328.5 0 0CL +ATOM 238 A1 C 79 496.1 293.6 329.2 0 0CL +ATOM 239 B1 C 79 496.8 293.8 329.3 0 0CL +ATOM 240 COM C 80 102.0 164.4 252.4 0 0CL +ATOM 241 A1 C 80 102.7 163.0 250.9 0 0CL +ATOM 242 B1 C 80 102.3 162.7 251.4 0 0CL +ATOM 243 COM C 81 40.8 418.2 346.9 0 0CL +ATOM 244 A1 C 81 39.0 417.2 346.4 0 0CL +ATOM 245 B1 C 81 38.9 417.9 346.6 0 0CL +ATOM 246 COM C 82 310.2 294.5 482.3 0 0CL +ATOM 247 A1 C 82 309.0 296.0 481.0 0 0CL +ATOM 248 B1 C 82 308.8 295.2 481.0 0 0CL +ATOM 249 COM C 83 166.2 59.5 283.9 0 0CL +ATOM 250 A1 C 83 166.4 58.5 285.8 0 0CL +ATOM 251 B1 C 83 166.8 59.0 285.7 0 0CL +ATOM 252 COM C 84 374.0 483.1 314.1 0 0CL +ATOM 253 A1 C 84 371.9 482.7 313.6 0 0CL +ATOM 254 B1 C 84 372.3 482.2 313.5 0 0CL +ATOM 255 COM C 85 28.5 172.2 434.1 0 0CL +ATOM 256 A1 C 85 29.0 171.8 432.0 0 0CL +ATOM 257 B1 C 85 28.3 172.0 432.2 0 0CL +ATOM 258 COM C 86 86.6 359.5 346.7 0 0CL +ATOM 259 A1 C 86 88.7 360.1 347.0 0 0CL +ATOM 260 B1 C 86 88.6 359.6 346.5 0 0CL +ATOM 261 COM C 87 442.1 124.7 265.4 0 0CL +ATOM 262 A1 C 87 440.3 126.0 264.9 0 0CL +ATOM 263 B1 C 87 440.2 125.3 264.9 0 0CL +ATOM 264 COM C 88 229.1 320.7 313.5 0 0CL +ATOM 265 A1 C 88 230.7 320.3 312.1 0 0CL +ATOM 266 B1 C 88 230.7 319.9 312.7 0 0CL +ATOM 267 COM C 89 90.8 244.3 208.4 0 0CL +ATOM 268 A1 C 89 91.9 242.5 207.8 0 0CL +ATOM 269 B1 C 89 91.4 242.4 208.3 0 0CL +ATOM 270 COM C 90 190.6 376.6 95.9 0 0CL +ATOM 271 A1 C 90 189.8 374.7 95.1 0 0CL +ATOM 272 B1 C 90 190.6 374.9 95.0 0 0CL +ATOM 273 COM C 91 305.6 263.3 63.9 0 0CL +ATOM 274 A1 C 91 307.5 264.3 64.2 0 0CL +ATOM 275 B1 C 91 307.4 263.7 64.6 0 0CL +ATOM 276 COM C 92 70.9 230.7 179.5 0 0CL +ATOM 277 A1 C 92 70.2 232.5 180.5 0 0CL +ATOM 278 B1 C 92 69.8 232.3 179.9 0 0CL +ATOM 279 COM C 93 217.5 333.7 258.9 0 0CL +ATOM 280 A1 C 93 216.4 335.3 257.8 0 0CL +ATOM 281 B1 C 93 216.6 334.7 257.5 0 0CL +ATOM 282 COM C 94 445.9 482.0 59.7 0 0CL +ATOM 283 A1 C 94 444.6 480.3 59.2 0 0CL +ATOM 284 B1 C 94 445.2 480.2 59.5 0 0CL +ATOM 285 COM C 95 292.0 324.8 455.6 0 0CL +ATOM 286 A1 C 95 292.1 323.5 457.4 0 0CL +ATOM 287 B1 C 95 291.7 324.1 457.5 0 0CL +ATOM 288 COM C 96 265.3 431.5 155.2 0 0CL +ATOM 289 A1 C 96 264.1 432.9 156.4 0 0CL +ATOM 290 B1 C 96 263.8 432.5 155.8 0 0CL +ATOM 291 COM C 97 447.3 104.2 42.4 0 0CL +ATOM 292 A1 C 97 445.4 105.4 42.6 0 0CL +ATOM 293 B1 C 97 445.7 105.4 41.9 0 0CL +ATOM 294 COM C 98 64.4 67.9 333.4 0 0CL +ATOM 295 A1 C 98 63.8 68.6 331.4 0 0CL +ATOM 296 B1 C 98 64.5 68.4 331.5 0 0CL +ATOM 297 COM C 99 379.6 168.4 487.8 0 0CL +ATOM 298 A1 C 99 379.4 166.2 487.7 0 0CL +ATOM 299 B1 C 99 378.8 166.6 487.8 0 0CL +ATOM 300 COM C 100 81.5 378.4 252.6 0 0CL +ATOM 301 A1 C 100 83.6 377.8 252.3 0 0CL +ATOM 302 B1 C 100 83.1 377.5 251.9 0 0CL +ATOM 303 COM C 101 67.5 488.3 96.7 0 0CL +ATOM 304 A1 C 101 67.3 489.6 98.5 0 0CL +ATOM 305 B1 C 101 68.0 489.4 98.3 0 0CL +ATOM 306 COM C 102 175.3 201.6 279.1 0 0CL +ATOM 307 A1 C 102 173.6 200.9 280.3 0 0CL +ATOM 308 B1 C 102 173.9 200.4 279.8 0 0CL +ATOM 309 COM C 103 57.3 59.0 280.0 0 0CL +ATOM 310 A1 C 103 56.0 57.2 280.4 0 0CL +ATOM 311 B1 C 103 56.1 57.4 279.7 0 0CL +ATOM 312 COM C 104 193.5 106.1 279.3 0 0CL +ATOM 313 A1 C 104 193.4 106.3 277.1 0 0CL +ATOM 314 B1 C 104 192.9 106.7 277.5 0 0CL +ATOM 315 COM C 105 430.0 448.5 420.7 0 0CL +ATOM 316 A1 C 105 432.2 448.4 421.0 0 0CL +ATOM 317 B1 C 105 431.9 448.7 420.4 0 0CL +ATOM 318 COM C 106 263.8 434.1 253.6 0 0CL +ATOM 319 A1 C 106 263.0 433.8 251.6 0 0CL +ATOM 320 B1 C 106 263.4 433.3 251.8 0 0CL +ATOM 321 COM C 107 70.1 169.2 238.0 0 0CL +ATOM 322 A1 C 107 71.4 167.6 238.8 0 0CL +ATOM 323 B1 C 107 71.3 167.6 238.1 0 0CL +ATOM 324 COM C 108 436.4 236.7 22.2 0 0CL +ATOM 325 A1 C 108 436.4 238.4 23.6 0 0CL +ATOM 326 B1 C 108 435.9 237.9 23.7 0 0CL +ATOM 327 COM C 109 103.8 444.8 40.0 0 0CL +ATOM 328 A1 C 109 104.2 447.0 40.0 0 0CL +ATOM 329 B1 C 109 104.5 446.6 39.4 0 0CL +ATOM 330 COM C 110 274.4 332.0 314.0 0 0CL +ATOM 331 A1 C 110 273.1 333.1 315.4 0 0CL +ATOM 332 B1 C 110 273.7 332.8 315.7 0 0CL +ATOM 333 COM C 111 174.9 112.2 42.1 0 0CL +ATOM 334 A1 C 111 175.0 112.1 44.3 0 0CL +ATOM 335 B1 C 111 174.5 111.7 44.0 0 0CL +ATOM 336 COM C 112 390.3 463.1 478.4 0 0CL +ATOM 337 A1 C 112 391.4 461.3 477.7 0 0CL +ATOM 338 B1 C 112 390.9 461.6 477.2 0 0CL +ATOM 339 COM C 113 303.0 386.5 55.9 0 0CL +ATOM 340 A1 C 113 304.0 386.5 57.9 0 0CL +ATOM 341 B1 C 113 303.3 386.3 57.8 0 0CL +ATOM 342 COM C 114 373.0 7.1 217.9 0 0CL +ATOM 343 A1 C 114 373.7 7.0 215.8 0 0CL +ATOM 344 B1 C 114 374.0 6.5 216.3 0 0CL +ATOM 345 COM C 115 497.8 127.7 389.1 0 0CL +ATOM 346 A1 C 115 496.0 128.8 388.2 0 0CL +ATOM 347 B1 C 115 495.9 128.1 388.5 0 0CL +ATOM 348 COM C 116 32.4 314.7 24.4 0 0CL +ATOM 349 A1 C 116 31.5 316.7 24.0 0 0CL +ATOM 350 B1 C 116 31.4 316.4 24.6 0 0CL +ATOM 351 COM C 117 16.5 340.0 154.4 0 0CL +ATOM 352 A1 C 117 18.5 339.8 153.4 0 0CL +ATOM 353 B1 C 117 18.2 339.2 153.7 0 0CL +ATOM 354 COM C 118 101.2 1.6 287.6 0 0CL +ATOM 355 A1 C 118 99.8 3.2 288.2 0 0CL +ATOM 356 B1 C 118 99.5 2.5 288.2 0 0CL +ATOM 357 COM C 119 74.6 241.3 416.0 0 0CL +ATOM 358 A1 C 119 76.7 240.8 416.5 0 0CL +ATOM 359 B1 C 119 76.1 240.4 416.8 0 0CL +ATOM 360 COM C 120 491.9 8.1 424.4 0 0CL +ATOM 361 A1 C 120 493.2 9.8 424.5 0 0CL +ATOM 362 B1 C 120 492.8 9.8 423.9 0 0CL +ATOM 363 COM C 121 246.3 188.2 488.6 0 0CL +ATOM 364 A1 C 121 245.6 189.8 487.3 0 0CL +ATOM 365 B1 C 121 246.2 189.5 487.1 0 0CL +ATOM 366 COM C 122 154.7 193.7 174.5 0 0CL +ATOM 367 A1 C 122 155.7 192.1 175.7 0 0CL +ATOM 368 B1 C 122 155.9 192.8 175.8 0 0CL +ATOM 369 COM C 123 384.1 393.0 356.9 0 0CL +ATOM 370 A1 C 123 385.8 394.0 355.9 0 0CL +ATOM 371 B1 C 123 385.9 393.6 356.5 0 0CL +ATOM 372 COM C 124 233.4 57.1 156.5 0 0CL +ATOM 373 A1 C 124 232.9 57.7 154.5 0 0CL +ATOM 374 B1 C 124 232.3 57.5 154.9 0 0CL +ATOM 375 COM C 125 489.5 279.1 240.6 0 0CL +ATOM 376 A1 C 125 489.7 277.8 238.9 0 0CL +ATOM 377 B1 C 125 489.1 278.0 239.1 0 0CL +ATOM 378 COM C 126 293.4 228.5 21.2 0 0CL +ATOM 379 A1 C 126 292.8 230.6 21.1 0 0CL +ATOM 380 B1 C 126 292.7 230.2 21.7 0 0CL +ATOM 381 COM C 127 495.6 73.7 120.6 0 0CL +ATOM 382 A1 C 127 495.5 71.6 121.0 0 0CL +ATOM 383 B1 C 127 495.9 72.0 121.5 0 0CL +ATOM 384 COM C 128 105.7 244.7 478.8 0 0CL +ATOM 385 A1 C 128 107.9 244.2 478.8 0 0CL +ATOM 386 B1 C 128 107.5 243.9 478.3 0 0CL +ATOM 387 COM C 129 476.3 25.5 483.4 0 0CL +ATOM 388 A1 C 129 474.2 25.4 484.2 0 0CL +ATOM 389 B1 C 129 474.7 26.0 484.4 0 0CL +ATOM 390 COM C 130 104.1 357.2 109.2 0 0CL +ATOM 391 A1 C 130 106.2 358.0 109.3 0 0CL +ATOM 392 B1 C 130 105.9 357.8 108.7 0 0CL +ATOM 393 COM C 131 19.8 122.7 402.3 0 0CL +ATOM 394 A1 C 131 19.3 120.7 403.2 0 0CL +ATOM 395 B1 C 131 19.0 120.9 402.5 0 0CL +ATOM 396 COM C 132 215.1 382.7 384.3 0 0CL +ATOM 397 A1 C 132 213.4 381.8 383.3 0 0CL +ATOM 398 B1 C 132 213.8 381.3 383.7 0 0CL +ATOM 399 COM C 133 270.8 330.1 107.3 0 0CL +ATOM 400 A1 C 133 269.7 330.1 109.3 0 0CL +ATOM 401 B1 C 133 269.6 330.7 108.8 0 0CL +ATOM 402 COM C 134 202.3 344.8 279.1 0 0CL +ATOM 403 A1 C 134 200.8 344.3 277.6 0 0CL +ATOM 404 B1 C 134 201.3 343.8 277.8 0 0CL +ATOM 405 COM C 135 95.4 356.1 6.5 0 0CL +ATOM 406 A1 C 135 94.7 358.1 6.3 0 0CL +ATOM 407 B1 C 135 94.2 357.6 6.2 0 0CL +ATOM 408 COM C 136 49.3 309.1 197.5 0 0CL +ATOM 409 A1 C 136 48.6 309.4 199.6 0 0CL +ATOM 410 B1 C 136 48.4 308.8 199.3 0 0CL +ATOM 411 COM C 137 186.1 228.4 297.4 0 0CL +ATOM 412 A1 C 137 184.7 228.8 295.8 0 0CL +ATOM 413 B1 C 137 185.1 228.3 295.7 0 0CL +ATOM 414 COM C 138 59.3 58.8 482.6 0 0CL +ATOM 415 A1 C 138 61.3 59.5 483.0 0 0CL +ATOM 416 B1 C 138 60.9 59.4 483.6 0 0CL +ATOM 417 COM C 139 463.6 462.3 316.2 0 0CL +ATOM 418 A1 C 139 463.2 464.1 317.3 0 0CL +ATOM 419 B1 C 139 463.0 463.5 317.6 0 0CL +ATOM 420 COM C 140 55.3 205.8 183.1 0 0CL +ATOM 421 A1 C 140 56.4 207.3 181.9 0 0CL +ATOM 422 B1 C 140 55.9 206.9 181.5 0 0CL +ATOM 423 COM C 141 467.5 293.2 38.8 0 0CL +ATOM 424 A1 C 141 468.4 291.8 37.3 0 0CL +ATOM 425 B1 C 141 468.2 292.5 37.1 0 0CL +ATOM 426 COM C 142 491.0 153.7 313.1 0 0CL +ATOM 427 A1 C 142 492.0 151.8 312.8 0 0CL +ATOM 428 B1 C 142 492.0 152.3 312.2 0 0CL +ATOM 429 COM C 143 162.9 180.5 372.7 0 0CL +ATOM 430 A1 C 143 163.8 182.5 372.3 0 0CL +ATOM 431 B1 C 143 164.1 182.1 372.8 0 0CL +ATOM 432 COM C 144 122.0 132.6 140.5 0 0CL +ATOM 433 A1 C 144 123.2 130.8 140.2 0 0CL +ATOM 434 B1 C 144 123.5 131.4 140.0 0 0CL +ATOM 435 COM C 145 335.3 175.1 10.3 0 0CL +ATOM 436 A1 C 145 335.9 176.7 11.7 0 0CL +ATOM 437 B1 C 145 336.1 176.1 11.9 0 0CL +ATOM 438 COM C 146 293.4 356.9 168.2 0 0CL +ATOM 439 A1 C 146 294.6 358.7 168.0 0 0CL +ATOM 440 B1 C 146 294.5 358.5 168.7 0 0CL +ATOM 441 COM C 147 290.8 479.0 101.4 0 0CL +ATOM 442 A1 C 147 292.1 477.3 101.1 0 0CL +ATOM 443 B1 C 147 292.5 477.9 101.1 0 0CL +ATOM 444 COM C 148 344.0 95.6 231.0 0 0CL +ATOM 445 A1 C 148 345.0 96.8 229.4 0 0CL +ATOM 446 B1 C 148 344.3 96.9 229.5 0 0CL +ATOM 447 COM C 149 197.6 43.0 60.7 0 0CL +ATOM 448 A1 C 149 198.2 45.1 61.0 0 0CL +ATOM 449 B1 C 149 198.7 44.5 61.0 0 0CL +ATOM 450 COM A 150 317.3 70.3 115.4 0 0CL +ATOM 451 C1 A 150 317.5 71.2 114.4 0 0CL +ATOM 452 B1 A 150 316.8 71.1 115.8 0 0CL +ATOM 453 COM A 151 347.4 340.1 226.4 0 0CL +ATOM 454 C1 A 151 348.0 340.3 225.3 0 0CL +ATOM 455 B1 A 151 348.1 340.8 226.8 0 0CL +ATOM 456 COM A 152 266.5 424.3 284.9 0 0CL +ATOM 457 C1 A 152 267.2 425.0 285.7 0 0CL +ATOM 458 B1 A 152 266.9 423.5 285.4 0 0CL +ATOM 459 COM A 153 199.2 391.3 440.4 0 0CL +ATOM 460 C1 A 153 198.1 391.7 439.7 0 0CL +ATOM 461 B1 A 153 199.0 392.2 440.9 0 0CL +ATOM 462 COM A 154 274.0 96.0 77.1 0 0CL +ATOM 463 C1 A 154 274.9 97.0 77.2 0 0CL +ATOM 464 B1 A 154 273.7 96.5 76.2 0 0CL +ATOM 465 COM A 155 46.0 356.1 95.2 0 0CL +ATOM 466 C1 A 155 45.5 357.3 95.4 0 0CL +ATOM 467 B1 A 155 46.2 356.2 96.2 0 0CL +ATOM 468 COM A 156 157.1 40.8 127.0 0 0CL +ATOM 469 C1 A 156 155.9 41.2 127.3 0 0CL +ATOM 470 B1 A 156 156.6 39.9 126.7 0 0CL +ATOM 471 COM A 157 385.4 245.7 391.6 0 0CL +ATOM 472 C1 A 157 385.6 244.6 390.8 0 0CL +ATOM 473 B1 A 157 385.6 245.0 392.4 0 0CL +ATOM 474 COM A 158 44.1 112.0 294.3 0 0CL +ATOM 475 C1 A 158 44.4 113.1 294.9 0 0CL +ATOM 476 B1 A 158 43.9 112.6 293.5 0 0CL +ATOM 477 COM A 159 462.9 226.0 411.2 0 0CL +ATOM 478 C1 A 159 464.0 225.5 410.8 0 0CL +ATOM 479 B1 A 159 463.5 226.7 411.7 0 0CL +ATOM 480 COM A 160 201.9 1.4 274.2 0 0CL +ATOM 481 C1 A 160 202.1 0.3 274.9 0 0CL +ATOM 482 B1 A 160 201.7 1.8 275.0 0 0CL +ATOM 483 COM A 161 343.7 296.6 445.3 0 0CL +ATOM 484 C1 A 161 342.6 297.2 445.0 0 0CL +ATOM 485 B1 A 161 343.1 295.7 445.5 0 0CL +ATOM 486 COM A 162 35.3 30.5 201.2 0 0CL +ATOM 487 C1 A 162 34.4 29.6 201.6 0 0CL +ATOM 488 B1 A 162 35.4 30.6 202.2 0 0CL +ATOM 489 COM A 163 327.4 332.9 192.8 0 0CL +ATOM 490 C1 A 163 327.8 332.6 194.0 0 0CL +ATOM 491 B1 A 163 328.0 332.1 192.5 0 0CL +ATOM 492 COM A 164 254.3 87.1 358.1 0 0CL +ATOM 493 C1 A 164 253.1 87.1 358.7 0 0CL +ATOM 494 B1 A 164 254.5 86.2 358.5 0 0CL +ATOM 495 COM A 165 64.3 45.6 227.0 0 0CL +ATOM 496 C1 A 165 64.5 45.4 228.3 0 0CL +ATOM 497 B1 A 165 63.3 45.7 227.2 0 0CL +ATOM 498 COM A 166 371.6 250.5 40.2 0 0CL +ATOM 499 C1 A 166 370.3 250.5 39.9 0 0CL +ATOM 500 B1 A 166 371.3 250.8 41.2 0 0CL +ATOM 501 COM A 167 317.4 188.2 57.7 0 0CL +ATOM 502 C1 A 167 316.7 187.1 57.9 0 0CL +ATOM 503 B1 A 167 317.9 187.6 57.0 0 0CL +ATOM 504 COM A 168 498.3 388.2 396.1 0 0CL +ATOM 505 C1 A 168 497.2 388.1 396.9 0 0CL +ATOM 506 B1 A 168 497.6 388.0 395.4 0 0CL +ATOM 507 COM A 169 171.8 26.8 438.2 0 0CL +ATOM 508 C1 A 169 172.5 27.3 437.3 0 0CL +ATOM 509 B1 A 169 172.7 26.6 438.7 0 0CL +ATOM 510 COM A 170 412.7 296.4 138.0 0 0CL +ATOM 511 C1 A 170 413.1 296.8 136.8 0 0CL +ATOM 512 B1 A 170 413.7 296.2 138.1 0 0CL +ATOM 513 COM A 171 486.1 393.5 494.5 0 0CL +ATOM 514 C1 A 171 487.4 393.3 494.5 0 0CL +ATOM 515 B1 A 171 486.4 394.4 495.1 0 0CL +ATOM 516 COM A 172 378.2 350.0 389.3 0 0CL +ATOM 517 C1 A 172 379.1 350.0 390.2 0 0CL +ATOM 518 B1 A 172 378.8 349.3 388.9 0 0CL +ATOM 519 COM A 173 136.4 180.5 12.8 0 0CL +ATOM 520 C1 A 173 137.3 180.7 13.7 0 0CL +ATOM 521 B1 A 173 135.8 181.1 13.4 0 0CL +ATOM 522 COM A 174 226.8 226.1 111.1 0 0CL +ATOM 523 C1 A 174 227.1 224.9 110.5 0 0CL +ATOM 524 B1 A 174 225.9 225.6 111.4 0 0CL +ATOM 525 COM A 175 79.3 113.3 340.8 0 0CL +ATOM 526 C1 A 175 80.6 113.3 341.1 0 0CL +ATOM 527 B1 A 175 79.4 112.3 340.9 0 0CL +ATOM 528 COM A 176 423.3 180.6 143.9 0 0CL +ATOM 529 C1 A 176 422.7 179.6 143.3 0 0CL +ATOM 530 B1 A 176 423.3 181.0 143.0 0 0CL +ATOM 531 COM A 177 40.5 378.0 161.4 0 0CL +ATOM 532 C1 A 177 41.4 377.4 161.9 0 0CL +ATOM 533 B1 A 177 40.6 377.4 160.6 0 0CL +ATOM 534 COM A 178 351.5 145.0 127.2 0 0CL +ATOM 535 C1 A 178 351.5 145.3 128.5 0 0CL +ATOM 536 B1 A 178 350.6 144.5 127.5 0 0CL +ATOM 537 COM A 179 76.8 71.4 349.1 0 0CL +ATOM 538 C1 A 179 76.1 72.5 349.2 0 0CL +ATOM 539 B1 A 179 76.1 71.2 348.4 0 0CL +ATOM 540 COM A 180 420.9 84.2 221.2 0 0CL +ATOM 541 C1 A 180 420.5 82.9 221.3 0 0CL +ATOM 542 B1 A 180 420.7 84.2 222.2 0 0CL +ATOM 543 COM A 181 339.0 288.2 112.5 0 0CL +ATOM 544 C1 A 181 338.4 288.6 111.4 0 0CL +ATOM 545 B1 A 181 338.9 289.2 112.7 0 0CL +ATOM 546 COM A 182 424.0 294.2 163.5 0 0CL +ATOM 547 C1 A 182 423.3 293.8 162.5 0 0CL +ATOM 548 B1 A 182 423.9 293.3 163.9 0 0CL +ATOM 549 COM A 183 312.3 37.8 12.3 0 0CL +ATOM 550 C1 A 183 313.2 38.7 12.1 0 0CL +ATOM 551 B1 A 183 312.6 37.5 11.3 0 0CL +ATOM 552 COM A 184 331.9 102.6 483.1 0 0CL +ATOM 553 C1 A 184 333.1 102.8 482.6 0 0CL +ATOM 554 B1 A 184 332.2 101.7 483.5 0 0CL +ATOM 555 COM A 185 370.5 333.1 248.4 0 0CL +ATOM 556 C1 A 185 369.3 333.1 247.9 0 0CL +ATOM 557 B1 A 185 370.4 334.1 248.3 0 0CL +ATOM 558 COM A 186 373.8 84.1 207.7 0 0CL +ATOM 559 C1 A 186 374.7 83.4 207.1 0 0CL +ATOM 560 B1 A 186 374.7 84.6 208.1 0 0CL +ATOM 561 COM A 187 465.6 335.0 88.9 0 0CL +ATOM 562 C1 A 187 465.4 336.3 89.3 0 0CL +ATOM 563 B1 A 187 465.0 335.3 88.1 0 0CL +ATOM 564 COM A 188 336.4 137.5 477.1 0 0CL +ATOM 565 C1 A 188 336.4 138.8 477.2 0 0CL +ATOM 566 B1 A 188 336.1 137.5 478.1 0 0CL +ATOM 567 COM A 189 140.1 271.4 252.9 0 0CL +ATOM 568 C1 A 189 139.9 272.7 253.1 0 0CL +ATOM 569 B1 A 189 139.4 271.2 253.5 0 0CL +ATOM 570 COM A 190 163.4 301.2 21.4 0 0CL +ATOM 571 C1 A 190 162.6 302.1 21.0 0 0CL +ATOM 572 B1 A 190 162.9 301.3 22.3 0 0CL +ATOM 573 COM A 191 480.8 457.5 45.8 0 0CL +ATOM 574 C1 A 191 481.7 458.2 46.4 0 0CL +ATOM 575 B1 A 191 481.6 456.8 45.8 0 0CL +ATOM 576 COM A 192 477.7 151.7 14.4 0 0CL +ATOM 577 C1 A 192 476.8 151.4 13.4 0 0CL +ATOM 578 B1 A 192 476.9 151.5 15.0 0 0CL +ATOM 579 COM A 193 460.5 370.2 266.6 0 0CL +ATOM 580 C1 A 193 460.7 371.5 267.1 0 0CL +ATOM 581 B1 A 193 460.7 369.9 267.6 0 0CL +ATOM 582 COM A 194 80.6 7.6 237.3 0 0CL +ATOM 583 C1 A 194 81.5 6.8 236.6 0 0CL +ATOM 584 B1 A 194 80.2 6.7 237.5 0 0CL +ATOM 585 COM A 195 335.3 447.1 225.0 0 0CL +ATOM 586 C1 A 195 335.2 448.2 224.3 0 0CL +ATOM 587 B1 A 195 334.7 447.6 225.7 0 0CL +ATOM 588 COM A 196 1.5 73.5 440.0 0 0CL +ATOM 589 C1 A 196 0.4 72.8 439.7 0 0CL +ATOM 590 B1 A 196 0.9 74.3 439.7 0 0CL +ATOM 591 COM A 197 3.4 282.4 328.7 0 0CL +ATOM 592 C1 A 197 4.2 281.5 329.1 0 0CL +ATOM 593 B1 A 197 2.9 281.7 328.1 0 0CL +ATOM 594 COM A 198 396.5 208.9 48.6 0 0CL +ATOM 595 C1 A 198 397.0 207.7 48.5 0 0CL +ATOM 596 B1 A 198 395.9 208.4 49.3 0 0CL +ATOM 597 COM A 199 77.8 93.8 166.9 0 0CL +ATOM 598 C1 A 199 76.8 93.3 166.2 0 0CL +ATOM 599 B1 A 199 77.4 93.3 167.7 0 0CL +ATOM 600 COM A 200 462.6 478.8 490.4 0 0CL +ATOM 601 C1 A 200 463.7 479.5 490.4 0 0CL +ATOM 602 B1 A 200 463.2 478.0 490.6 0 0CL +ATOM 603 COM A 201 105.8 301.4 414.9 0 0CL +ATOM 604 C1 A 201 106.1 300.9 416.1 0 0CL +ATOM 605 B1 A 201 106.8 301.5 414.8 0 0CL +ATOM 606 COM A 202 382.7 327.4 275.9 0 0CL +ATOM 607 C1 A 202 383.1 328.3 276.8 0 0CL +ATOM 608 B1 A 202 382.3 328.2 275.5 0 0CL +ATOM 609 COM A 203 259.4 289.7 162.0 0 0CL +ATOM 610 C1 A 203 258.6 290.3 161.2 0 0CL +ATOM 611 B1 A 203 258.8 290.0 162.8 0 0CL +ATOM 612 COM A 204 437.8 292.1 67.0 0 0CL +ATOM 613 C1 A 204 438.5 292.5 66.0 0 0CL +ATOM 614 B1 A 204 438.1 293.0 67.4 0 0CL +ATOM 615 COM A 205 93.0 274.1 37.4 0 0CL +ATOM 616 C1 A 205 91.9 274.0 36.7 0 0CL +ATOM 617 B1 A 205 92.6 273.6 38.1 0 0CL +ATOM 618 COM A 206 119.5 443.2 66.7 0 0CL +ATOM 619 C1 A 206 119.6 444.1 67.7 0 0CL +ATOM 620 B1 A 206 120.2 442.7 67.3 0 0CL +ATOM 621 COM A 207 200.8 202.4 302.5 0 0CL +ATOM 622 C1 A 207 200.4 203.0 301.4 0 0CL +ATOM 623 B1 A 207 200.4 203.2 303.0 0 0CL +ATOM 624 COM A 208 407.2 441.9 295.2 0 0CL +ATOM 625 C1 A 208 406.2 442.4 295.9 0 0CL +ATOM 626 B1 A 208 407.2 441.2 296.0 0 0CL +ATOM 627 COM A 209 62.3 287.4 32.3 0 0CL +ATOM 628 C1 A 209 62.9 288.5 32.1 0 0CL +ATOM 629 B1 A 209 63.2 287.1 32.6 0 0CL +ATOM 630 COM A 210 272.9 400.3 164.6 0 0CL +ATOM 631 C1 A 210 273.1 399.1 164.0 0 0CL +ATOM 632 B1 A 210 273.2 399.8 165.5 0 0CL +ATOM 633 COM A 211 187.6 3.9 135.2 0 0CL +ATOM 634 C1 A 211 187.2 2.7 135.7 0 0CL +ATOM 635 B1 A 211 187.6 4.2 136.2 0 0CL +ATOM 636 COM A 212 101.3 452.4 109.8 0 0CL +ATOM 637 C1 A 212 101.0 453.4 109.0 0 0CL +ATOM 638 B1 A 212 101.7 453.2 110.5 0 0CL +ATOM 639 COM A 213 327.8 448.8 277.8 0 0CL +ATOM 640 C1 A 213 326.6 448.4 277.5 0 0CL +ATOM 641 B1 A 213 327.5 449.7 277.5 0 0CL +ATOM 642 COM A 214 233.9 117.7 376.9 0 0CL +ATOM 643 C1 A 214 233.7 116.5 377.3 0 0CL +ATOM 644 B1 A 214 233.4 117.4 376.0 0 0CL +ATOM 645 COM A 215 490.6 484.1 133.9 0 0CL +ATOM 646 C1 A 215 491.9 483.9 133.8 0 0CL +ATOM 647 B1 A 215 490.5 483.2 133.4 0 0CL +ATOM 648 COM A 216 120.3 226.6 259.1 0 0CL +ATOM 649 C1 A 216 119.9 225.5 258.5 0 0CL +ATOM 650 B1 A 216 120.2 227.0 258.2 0 0CL +ATOM 651 COM A 217 393.6 305.1 396.5 0 0CL +ATOM 652 C1 A 217 392.6 304.9 395.7 0 0CL +ATOM 653 B1 A 217 393.3 306.1 396.4 0 0CL +ATOM 654 COM A 218 447.4 82.0 195.8 0 0CL +ATOM 655 C1 A 218 448.6 81.9 196.0 0 0CL +ATOM 656 B1 A 218 447.5 81.1 195.2 0 0CL +ATOM 657 COM A 219 376.5 326.0 170.8 0 0CL +ATOM 658 C1 A 219 376.9 324.9 170.1 0 0CL +ATOM 659 B1 A 219 377.2 326.4 170.3 0 0CL +ATOM 660 COM A 220 435.3 355.0 328.4 0 0CL +ATOM 661 C1 A 220 435.8 355.0 327.2 0 0CL +ATOM 662 B1 A 220 435.1 354.0 328.2 0 0CL +ATOM 663 COM A 221 69.1 11.7 382.9 0 0CL +ATOM 664 C1 A 221 69.7 10.6 382.4 0 0CL +ATOM 665 B1 A 221 68.3 11.0 383.1 0 0CL +ATOM 666 COM A 222 30.6 412.5 379.6 0 0CL +ATOM 667 C1 A 222 31.6 412.9 378.9 0 0CL +ATOM 668 B1 A 222 30.0 412.9 378.8 0 0CL +ATOM 669 COM A 223 389.4 159.4 463.6 0 0CL +ATOM 670 C1 A 223 388.5 159.9 464.5 0 0CL +ATOM 671 B1 A 223 389.1 160.1 463.0 0 0CL +ATOM 672 COM A 224 80.0 436.9 322.3 0 0CL +ATOM 673 C1 A 224 79.0 437.4 321.6 0 0CL +ATOM 674 B1 A 224 80.0 437.7 322.9 0 0CL +ATOM 675 COM A 225 52.3 302.8 134.4 0 0CL +ATOM 676 C1 A 225 52.1 303.2 133.1 0 0CL +ATOM 677 B1 A 225 51.4 302.3 134.3 0 0CL +ATOM 678 COM A 226 181.6 454.9 149.8 0 0CL +ATOM 679 C1 A 226 180.6 455.7 150.1 0 0CL +ATOM 680 B1 A 226 182.2 455.7 150.0 0 0CL +ATOM 681 COM A 227 376.5 305.7 21.4 0 0CL +ATOM 682 C1 A 227 375.5 305.1 20.8 0 0CL +ATOM 683 B1 A 227 376.7 304.8 21.7 0 0CL +ATOM 684 COM A 228 237.7 337.2 141.8 0 0CL +ATOM 685 C1 A 228 237.9 336.2 141.1 0 0CL +ATOM 686 B1 A 228 237.1 337.6 141.0 0 0CL +ATOM 687 COM A 229 104.1 420.3 123.5 0 0CL +ATOM 688 C1 A 229 103.0 420.5 124.1 0 0CL +ATOM 689 B1 A 229 104.5 421.1 124.1 0 0CL +ATOM 690 COM A 230 43.0 248.4 245.9 0 0CL +ATOM 691 C1 A 230 43.1 247.1 246.0 0 0CL +ATOM 692 B1 A 230 43.3 248.4 246.9 0 0CL +ATOM 693 COM A 231 177.1 353.8 282.3 0 0CL +ATOM 694 C1 A 231 176.9 355.1 282.4 0 0CL +ATOM 695 B1 A 231 176.9 354.0 281.3 0 0CL +ATOM 696 COM A 232 280.3 165.7 99.9 0 0CL +ATOM 697 C1 A 232 280.7 166.1 101.0 0 0CL +ATOM 698 B1 A 232 279.7 165.1 100.4 0 0CL +ATOM 699 COM A 233 276.6 123.6 86.2 0 0CL +ATOM 700 C1 A 233 277.8 123.2 86.0 0 0CL +ATOM 701 B1 A 233 276.3 122.9 85.6 0 0CL +ATOM 702 COM A 234 460.1 225.9 383.2 0 0CL +ATOM 703 C1 A 234 459.5 225.0 384.0 0 0CL +ATOM 704 B1 A 234 460.8 226.0 383.9 0 0CL +ATOM 705 COM A 235 95.0 292.8 448.2 0 0CL +ATOM 706 C1 A 235 93.8 292.4 447.8 0 0CL +ATOM 707 B1 A 235 94.6 292.8 449.1 0 0CL +ATOM 708 COM A 236 174.6 322.6 91.2 0 0CL +ATOM 709 C1 A 236 174.8 323.3 92.3 0 0CL +ATOM 710 B1 A 236 174.5 321.8 91.9 0 0CL +ATOM 711 COM A 237 257.6 261.1 371.8 0 0CL +ATOM 712 C1 A 237 258.4 261.3 372.8 0 0CL +ATOM 713 B1 A 237 257.9 260.1 371.9 0 0CL +ATOM 714 COM A 238 328.0 447.2 75.9 0 0CL +ATOM 715 C1 A 238 328.5 447.3 77.1 0 0CL +ATOM 716 B1 A 238 327.4 446.5 76.3 0 0CL +ATOM 717 COM A 239 217.3 44.6 60.2 0 0CL +ATOM 718 C1 A 239 216.4 45.6 59.9 0 0CL +ATOM 719 B1 A 239 216.7 44.5 61.0 0 0CL +ATOM 720 COM A 240 313.3 348.8 103.7 0 0CL +ATOM 721 C1 A 240 312.8 349.8 104.2 0 0CL +ATOM 722 B1 A 240 312.9 349.1 102.8 0 0CL +ATOM 723 COM A 241 160.5 219.2 39.3 0 0CL +ATOM 724 C1 A 241 161.2 218.5 40.1 0 0CL +ATOM 725 B1 A 241 160.2 218.2 38.9 0 0CL +ATOM 726 COM A 242 207.5 453.8 13.4 0 0CL +ATOM 727 C1 A 242 207.5 453.1 14.5 0 0CL +ATOM 728 B1 A 242 208.6 453.7 13.5 0 0CL +ATOM 729 COM A 243 209.6 194.9 363.9 0 0CL +ATOM 730 C1 A 243 209.0 194.1 363.1 0 0CL +ATOM 731 B1 A 243 209.0 194.5 364.6 0 0CL +ATOM 732 COM A 244 45.7 360.9 234.8 0 0CL +ATOM 733 C1 A 244 45.4 362.0 235.5 0 0CL +ATOM 734 B1 A 244 46.1 360.6 235.7 0 0CL +ATOM 735 COM A 245 424.9 473.5 328.2 0 0CL +ATOM 736 C1 A 245 425.7 472.4 328.1 0 0CL +ATOM 737 B1 A 245 425.2 473.4 329.2 0 0CL +ATOM 738 COM A 246 423.2 344.1 387.9 0 0CL +ATOM 739 C1 A 246 423.5 343.8 386.7 0 0CL +ATOM 740 B1 A 246 424.0 343.5 388.1 0 0CL +ATOM 741 COM A 247 175.6 487.3 452.2 0 0CL +ATOM 742 C1 A 247 174.7 486.7 451.5 0 0CL +ATOM 743 B1 A 247 175.0 488.1 452.1 0 0CL +ATOM 744 COM A 248 117.5 433.9 202.8 0 0CL +ATOM 745 C1 A 248 116.9 435.0 202.5 0 0CL +ATOM 746 B1 A 248 117.8 434.3 203.7 0 0CL +ATOM 747 COM A 249 475.5 73.6 253.9 0 0CL +ATOM 748 C1 A 249 475.4 72.5 254.6 0 0CL +ATOM 749 B1 A 249 474.5 73.6 254.0 0 0CL +ATOM 750 COM A 250 259.9 294.1 87.8 0 0CL +ATOM 751 C1 A 250 260.7 295.2 88.1 0 0CL +ATOM 752 B1 A 250 259.4 294.7 87.2 0 0CL +ATOM 753 COM A 251 478.7 98.2 326.0 0 0CL +ATOM 754 C1 A 251 479.2 98.0 327.2 0 0CL +ATOM 755 B1 A 251 478.3 97.2 326.1 0 0CL +ATOM 756 COM A 252 166.3 174.8 325.4 0 0CL +ATOM 757 C1 A 252 165.5 173.8 325.3 0 0CL +ATOM 758 B1 A 252 166.9 174.2 324.8 0 0CL +ATOM 759 COM A 253 12.4 43.6 409.9 0 0CL +ATOM 760 C1 A 253 12.3 43.1 408.7 0 0CL +ATOM 761 B1 A 253 12.9 44.4 409.5 0 0CL +ATOM 762 COM A 254 291.0 120.3 70.8 0 0CL +ATOM 763 C1 A 254 291.8 119.4 70.4 0 0CL +ATOM 764 B1 A 254 291.7 121.0 70.4 0 0CL +ATOM 765 COM A 255 79.3 231.5 356.7 0 0CL +ATOM 766 C1 A 255 78.7 232.3 357.4 0 0CL +ATOM 767 B1 A 255 78.4 231.2 356.4 0 0CL +ATOM 768 COM A 256 250.2 438.7 338.9 0 0CL +ATOM 769 C1 A 256 249.1 438.6 339.6 0 0CL +ATOM 770 B1 A 256 249.6 439.0 338.1 0 0CL +ATOM 771 COM A 257 353.0 85.0 494.9 0 0CL +ATOM 772 C1 A 257 353.2 83.7 494.9 0 0CL +ATOM 773 B1 A 257 352.2 84.8 495.5 0 0CL +ATOM 774 COM A 258 229.8 125.1 491.5 0 0CL +ATOM 775 C1 A 258 228.5 125.2 491.1 0 0CL +ATOM 776 B1 A 258 229.5 124.2 491.9 0 0CL +ATOM 777 COM A 259 69.9 350.8 162.1 0 0CL +ATOM 778 C1 A 259 70.0 350.2 163.2 0 0CL +ATOM 779 B1 A 259 69.2 351.3 162.6 0 0CL +ATOM 780 COM A 260 152.0 183.7 475.2 0 0CL +ATOM 781 C1 A 260 151.9 183.2 474.0 0 0CL +ATOM 782 B1 A 260 151.3 183.0 475.5 0 0CL +ATOM 783 COM A 261 464.4 192.1 257.2 0 0CL +ATOM 784 C1 A 261 463.6 191.2 257.6 0 0CL +ATOM 785 B1 A 261 464.0 191.9 256.3 0 0CL +ATOM 786 COM A 262 206.9 79.0 403.5 0 0CL +ATOM 787 C1 A 262 207.2 77.8 403.8 0 0CL +ATOM 788 B1 A 262 207.5 79.3 404.3 0 0CL +ATOM 789 COM A 263 147.8 246.8 76.2 0 0CL +ATOM 790 C1 A 263 147.0 246.0 76.9 0 0CL +ATOM 791 B1 A 263 147.0 247.2 75.8 0 0CL +ATOM 792 COM A 264 424.1 140.7 64.0 0 0CL +ATOM 793 C1 A 264 424.9 141.0 63.0 0 0CL +ATOM 794 B1 A 264 425.0 140.6 64.5 0 0CL +ATOM 795 COM A 265 386.6 472.4 410.1 0 0CL +ATOM 796 C1 A 265 385.4 471.9 409.9 0 0CL +ATOM 797 B1 A 265 386.2 473.3 410.1 0 0CL +ATOM 798 COM A 266 401.0 3.1 123.3 0 0CL +ATOM 799 C1 A 266 399.7 3.2 123.1 0 0CL +ATOM 800 B1 A 266 400.9 4.1 123.5 0 0CL +ATOM 801 COM A 267 384.5 397.5 375.8 0 0CL +ATOM 802 C1 A 267 383.4 397.1 376.4 0 0CL +ATOM 803 B1 A 267 383.9 398.3 375.5 0 0CL +ATOM 804 COM A 268 10.3 47.4 288.9 0 0CL +ATOM 805 C1 A 268 9.8 48.4 289.6 0 0CL +ATOM 806 B1 A 268 11.2 47.8 289.1 0 0CL +ATOM 807 COM A 269 7.8 109.1 438.2 0 0CL +ATOM 808 C1 A 269 7.5 110.1 438.9 0 0CL +ATOM 809 B1 A 269 6.8 109.1 437.9 0 0CL +ATOM 810 COM A 270 129.8 153.9 307.4 0 0CL +ATOM 811 C1 A 270 129.3 155.0 307.9 0 0CL +ATOM 812 B1 A 270 130.0 154.5 306.6 0 0CL +ATOM 813 COM A 271 341.6 116.5 102.8 0 0CL +ATOM 814 C1 A 271 340.7 116.7 103.7 0 0CL +ATOM 815 B1 A 271 340.9 115.8 102.4 0 0CL +ATOM 816 COM A 272 377.1 285.5 129.5 0 0CL +ATOM 817 C1 A 272 376.3 286.4 129.3 0 0CL +ATOM 818 B1 A 272 376.5 285.2 130.2 0 0CL +ATOM 819 COM A 273 376.7 406.9 409.3 0 0CL +ATOM 820 C1 A 273 377.8 406.2 409.1 0 0CL +ATOM 821 B1 A 273 377.3 407.7 409.5 0 0CL +ATOM 822 COM A 274 328.7 472.6 451.6 0 0CL +ATOM 823 C1 A 274 327.5 472.1 451.4 0 0CL +ATOM 824 B1 A 274 328.8 472.5 450.6 0 0CL +ATOM 825 COM A 275 240.0 252.6 394.0 0 0CL +ATOM 826 C1 A 275 239.1 251.7 394.3 0 0CL +ATOM 827 B1 A 275 240.7 251.9 394.4 0 0CL +ATOM 828 COM A 276 307.6 324.3 63.9 0 0CL +ATOM 829 C1 A 276 306.4 324.2 64.3 0 0CL +ATOM 830 B1 A 276 307.4 325.3 63.6 0 0CL +ATOM 831 COM A 277 246.9 291.6 211.1 0 0CL +ATOM 832 C1 A 277 247.6 290.7 210.5 0 0CL +ATOM 833 B1 A 277 247.3 292.2 210.3 0 0CL +ATOM 834 COM A 278 332.9 146.1 481.9 0 0CL +ATOM 835 C1 A 278 332.9 145.0 481.2 0 0CL +ATOM 836 B1 A 278 333.8 146.3 481.4 0 0CL +ATOM 837 COM A 279 450.2 283.2 135.7 0 0CL +ATOM 838 C1 A 279 450.5 282.3 136.6 0 0CL +ATOM 839 B1 A 279 449.7 283.7 136.4 0 0CL +ATOM 840 COM A 280 145.6 153.6 106.1 0 0CL +ATOM 841 C1 A 280 145.2 154.8 106.4 0 0CL +ATOM 842 B1 A 280 146.0 154.0 105.2 0 0CL +ATOM 843 COM A 281 186.5 66.8 378.8 0 0CL +ATOM 844 C1 A 281 186.7 67.3 380.0 0 0CL +ATOM 845 B1 A 281 186.5 65.9 379.3 0 0CL +ATOM 846 COM A 282 388.7 200.4 112.2 0 0CL +ATOM 847 C1 A 282 388.2 199.3 112.1 0 0CL +ATOM 848 B1 A 282 388.3 200.5 113.1 0 0CL +ATOM 849 COM A 283 216.1 228.0 288.6 0 0CL +ATOM 850 C1 A 283 217.4 228.2 288.4 0 0CL +ATOM 851 B1 A 283 216.0 228.4 287.7 0 0CL +ATOM 852 COM A 284 165.3 305.9 375.9 0 0CL +ATOM 853 C1 A 284 166.2 305.1 376.2 0 0CL +ATOM 854 B1 A 284 165.0 305.9 376.9 0 0CL +ATOM 855 COM A 285 181.3 183.1 248.0 0 0CL +ATOM 856 C1 A 285 182.1 182.8 249.1 0 0CL +ATOM 857 B1 A 285 181.4 184.1 248.4 0 0CL +ATOM 858 COM A 286 454.9 223.2 414.5 0 0CL +ATOM 859 C1 A 286 455.5 223.2 413.4 0 0CL +ATOM 860 B1 A 286 455.7 222.6 414.8 0 0CL +ATOM 861 COM A 287 427.8 358.2 171.2 0 0CL +ATOM 862 C1 A 287 428.6 357.1 171.2 0 0CL +ATOM 863 B1 A 287 427.3 357.7 171.9 0 0CL +ATOM 864 COM A 288 479.9 11.2 281.1 0 0CL +ATOM 865 C1 A 288 480.8 10.8 280.2 0 0CL +ATOM 866 B1 A 288 479.2 10.6 280.6 0 0CL +ATOM 867 COM A 289 92.3 354.9 330.0 0 0CL +ATOM 868 C1 A 289 91.7 356.0 330.1 0 0CL +ATOM 869 B1 A 289 91.5 354.5 329.4 0 0CL +ATOM 870 COM A 290 401.6 191.0 458.7 0 0CL +ATOM 871 C1 A 290 400.8 191.5 457.7 0 0CL +ATOM 872 B1 A 290 401.9 191.9 458.8 0 0CL +ATOM 873 COM A 291 459.9 79.8 104.7 0 0CL +ATOM 874 C1 A 291 459.3 79.6 103.6 0 0CL +ATOM 875 B1 A 291 460.4 79.0 104.4 0 0CL +ATOM 876 COM A 292 28.1 465.6 279.7 0 0CL +ATOM 877 C1 A 292 28.3 465.0 280.8 0 0CL +ATOM 878 B1 A 292 29.1 465.4 279.5 0 0CL +ATOM 879 COM A 293 311.6 83.3 7.0 0 0CL +ATOM 880 C1 A 293 311.1 84.4 7.6 0 0CL +ATOM 881 B1 A 293 310.9 82.8 7.6 0 0CL +ATOM 882 COM A 294 9.1 187.1 455.6 0 0CL +ATOM 883 C1 A 294 8.4 186.0 455.8 0 0CL +ATOM 884 B1 A 294 8.5 187.5 456.3 0 0CL +ATOM 885 COM A 295 310.8 496.6 72.3 0 0CL +ATOM 886 C1 A 295 312.0 496.8 72.8 0 0CL +ATOM 887 B1 A 295 310.9 497.6 71.9 0 0CL +ATOM 888 COM A 296 68.4 375.8 204.3 0 0CL +ATOM 889 C1 A 296 68.3 375.9 203.0 0 0CL +ATOM 890 B1 A 296 68.8 376.7 204.2 0 0CL +ATOM 891 COM A 297 132.9 278.0 138.2 0 0CL +ATOM 892 C1 A 297 133.1 276.7 138.1 0 0CL +ATOM 893 B1 A 297 131.9 277.7 138.3 0 0CL +ATOM 894 COM A 298 404.7 132.6 276.9 0 0CL +ATOM 895 C1 A 298 403.6 132.4 277.6 0 0CL +ATOM 896 B1 A 298 404.3 131.9 276.2 0 0CL +ATOM 897 COM A 299 408.3 50.4 302.4 0 0CL +ATOM 898 C1 A 299 407.0 50.7 302.7 0 0CL +ATOM 899 B1 A 299 407.9 49.4 302.3 0 0CL +ATOM 900 COM B 300 349.6 361.2 250.3 0 0CL +ATOM 901 C1 B 300 349.2 362.1 251.3 0 0CL +ATOM 902 A1 B 300 349.6 361.1 250.9 0 0CL +ATOM 903 COM B 301 493.4 131.6 166.5 0 0CL +ATOM 904 C1 B 301 492.4 130.7 166.6 0 0CL +ATOM 905 A1 B 301 493.3 131.2 166.1 0 0CL +ATOM 906 COM B 302 10.7 47.8 435.4 0 0CL +ATOM 907 C1 B 302 11.1 46.7 434.7 0 0CL +ATOM 908 A1 B 302 10.4 47.6 435.0 0 0CL +ATOM 909 COM B 303 431.1 233.0 267.7 0 0CL +ATOM 910 C1 B 303 431.9 232.4 268.7 0 0CL +ATOM 911 A1 B 303 431.0 232.5 267.9 0 0CL +ATOM 912 COM B 304 322.1 222.4 322.3 0 0CL +ATOM 913 C1 B 304 321.9 221.1 321.7 0 0CL +ATOM 914 A1 B 304 321.6 222.1 322.5 0 0CL +ATOM 915 COM B 305 454.8 90.6 266.3 0 0CL +ATOM 916 C1 B 305 455.1 91.9 265.7 0 0CL +ATOM 917 A1 B 305 454.4 90.9 265.9 0 0CL +ATOM 918 COM B 306 74.6 117.9 123.5 0 0CL +ATOM 919 C1 B 306 75.8 117.1 123.4 0 0CL +ATOM 920 A1 B 306 74.8 117.6 122.9 0 0CL +ATOM 921 COM B 307 322.9 112.9 183.2 0 0CL +ATOM 922 C1 B 307 323.4 113.2 181.9 0 0CL +ATOM 923 A1 B 307 322.7 113.4 182.8 0 0CL +ATOM 924 COM B 308 172.5 275.4 467.1 0 0CL +ATOM 925 C1 B 308 172.4 275.9 468.5 0 0CL +ATOM 926 A1 B 308 172.5 275.0 467.6 0 0CL +ATOM 927 COM B 309 426.9 113.0 265.7 0 0CL +ATOM 928 C1 B 309 426.7 111.6 265.5 0 0CL +ATOM 929 A1 B 309 426.4 112.8 265.5 0 0CL +ATOM 930 COM B 310 118.9 172.8 60.2 0 0CL +ATOM 931 C1 B 310 118.9 174.1 60.8 0 0CL +ATOM 932 A1 B 310 119.2 173.2 60.0 0 0CL +ATOM 933 COM B 311 476.1 55.2 69.9 0 0CL +ATOM 934 C1 B 311 476.0 56.2 71.0 0 0CL +ATOM 935 A1 B 311 476.2 55.1 70.5 0 0CL +ATOM 936 COM B 312 155.9 416.6 450.1 0 0CL +ATOM 937 C1 B 312 156.4 415.5 449.4 0 0CL +ATOM 938 A1 B 312 155.9 416.1 450.4 0 0CL +ATOM 939 COM B 313 162.2 295.0 363.2 0 0CL +ATOM 940 C1 B 313 162.9 296.2 363.4 0 0CL +ATOM 941 A1 B 313 162.0 295.4 363.5 0 0CL +ATOM 942 COM B 314 171.9 173.9 79.3 0 0CL +ATOM 943 C1 B 314 170.9 173.7 80.3 0 0CL +ATOM 944 A1 B 314 172.0 173.7 79.8 0 0CL +ATOM 945 COM B 315 284.5 209.6 15.7 0 0CL +ATOM 946 C1 B 315 285.2 208.9 14.7 0 0CL +ATOM 947 A1 B 315 284.3 209.1 15.6 0 0CL +ATOM 948 COM B 316 293.7 36.7 242.3 0 0CL +ATOM 949 C1 B 316 292.9 36.1 243.4 0 0CL +ATOM 950 A1 B 316 293.9 36.7 242.9 0 0CL +ATOM 951 COM B 317 140.0 95.0 174.9 0 0CL +ATOM 952 C1 B 317 141.1 94.3 174.3 0 0CL +ATOM 953 A1 B 317 140.0 94.5 174.6 0 0CL +ATOM 954 COM B 318 258.2 365.9 350.9 0 0CL +ATOM 955 C1 B 318 258.2 367.1 351.5 0 0CL +ATOM 956 A1 B 318 258.7 366.0 351.2 0 0CL +ATOM 957 COM B 319 191.1 400.9 423.8 0 0CL +ATOM 958 C1 B 319 190.8 399.5 423.7 0 0CL +ATOM 959 A1 B 319 190.8 400.6 424.2 0 0CL +ATOM 960 COM B 320 214.9 482.9 148.4 0 0CL +ATOM 961 C1 B 320 215.8 481.8 148.6 0 0CL +ATOM 962 A1 B 320 215.3 482.7 148.0 0 0CL +ATOM 963 COM B 321 435.5 376.5 432.2 0 0CL +ATOM 964 C1 B 321 434.8 377.3 433.1 0 0CL +ATOM 965 A1 B 321 435.2 377.0 432.0 0 0CL +ATOM 966 COM B 322 313.8 256.2 85.9 0 0CL +ATOM 967 C1 B 322 313.3 256.4 87.2 0 0CL +ATOM 968 A1 B 322 314.0 256.7 86.3 0 0CL +ATOM 969 COM B 323 237.7 461.4 213.5 0 0CL +ATOM 970 C1 B 323 237.4 460.2 212.8 0 0CL +ATOM 971 A1 B 323 238.0 461.3 213.0 0 0CL +ATOM 972 COM B 324 41.2 224.5 475.3 0 0CL +ATOM 973 C1 B 324 40.0 224.3 474.4 0 0CL +ATOM 974 A1 B 324 41.2 224.3 474.7 0 0CL +ATOM 975 COM B 325 302.5 21.8 44.5 0 0CL +ATOM 976 C1 B 325 302.5 23.1 45.1 0 0CL +ATOM 977 A1 B 325 302.5 22.3 44.2 0 0CL +ATOM 978 COM B 326 373.3 447.8 360.0 0 0CL +ATOM 979 C1 B 326 373.4 448.5 361.3 0 0CL +ATOM 980 A1 B 326 373.5 448.4 360.1 0 0CL +ATOM 981 COM B 327 400.2 141.2 15.1 0 0CL +ATOM 982 C1 B 327 398.9 141.7 15.4 0 0CL +ATOM 983 A1 B 327 399.9 141.6 14.8 0 0CL +ATOM 984 COM B 328 187.2 379.5 98.8 0 0CL +ATOM 985 C1 B 328 188.6 379.8 99.0 0 0CL +ATOM 986 A1 B 328 187.4 380.0 99.1 0 0CL +ATOM 987 COM B 329 390.0 9.0 308.9 0 0CL +ATOM 988 C1 B 329 391.2 9.2 309.7 0 0CL +ATOM 989 A1 B 329 390.3 9.5 309.0 0 0CL +ATOM 990 COM B 330 351.4 235.0 393.6 0 0CL +ATOM 991 C1 B 330 351.8 233.9 392.7 0 0CL +ATOM 992 A1 B 330 351.5 235.0 393.0 0 0CL +ATOM 993 COM B 331 276.9 286.5 247.0 0 0CL +ATOM 994 C1 B 331 277.9 285.6 246.6 0 0CL +ATOM 995 A1 B 331 277.0 286.4 246.4 0 0CL +ATOM 996 COM B 332 214.4 485.7 220.3 0 0CL +ATOM 997 C1 B 332 215.0 487.0 220.5 0 0CL +ATOM 998 A1 B 332 214.7 485.8 220.8 0 0CL +ATOM 999 COM B 333 44.3 75.7 107.3 0 0CL +ATOM 1000 C1 B 333 45.1 75.9 106.1 0 0CL +ATOM 1001 A1 B 333 44.3 76.2 107.0 0 0CL +ATOM 1002 COM B 334 37.1 80.3 308.5 0 0CL +ATOM 1003 C1 B 334 36.7 79.9 309.9 0 0CL +ATOM 1004 A1 B 334 37.5 80.1 309.0 0 0CL +ATOM 1005 COM B 335 291.5 138.3 374.3 0 0CL +ATOM 1006 C1 B 335 291.3 137.6 375.6 0 0CL +ATOM 1007 A1 B 335 291.0 138.3 374.6 0 0CL +ATOM 1008 COM B 336 303.1 123.9 11.8 0 0CL +ATOM 1009 C1 B 336 302.1 123.7 12.8 0 0CL +ATOM 1010 A1 B 336 303.2 123.5 12.3 0 0CL +ATOM 1011 COM B 337 190.8 370.1 425.2 0 0CL +ATOM 1012 C1 B 337 191.9 369.4 425.6 0 0CL +ATOM 1013 A1 B 337 190.8 369.5 425.0 0 0CL +ATOM 1014 COM B 338 402.6 110.2 379.3 0 0CL +ATOM 1015 C1 B 338 401.4 110.4 378.6 0 0CL +ATOM 1016 A1 B 338 402.2 109.8 379.3 0 0CL +ATOM 1017 COM B 339 442.2 232.4 222.9 0 0CL +ATOM 1018 C1 B 339 443.5 232.8 223.2 0 0CL +ATOM 1019 A1 B 339 442.6 232.5 222.5 0 0CL +ATOM 1020 COM B 340 291.8 472.0 337.9 0 0CL +ATOM 1021 C1 B 340 293.2 472.2 338.0 0 0CL +ATOM 1022 A1 B 340 292.2 471.6 337.7 0 0CL +ATOM 1023 COM B 341 274.3 155.0 82.9 0 0CL +ATOM 1024 C1 B 341 275.4 155.1 81.9 0 0CL +ATOM 1025 A1 B 341 274.3 155.3 82.4 0 0CL +ATOM 1026 COM B 342 7.3 221.4 123.0 0 0CL +ATOM 1027 C1 B 342 8.0 220.8 121.9 0 0CL +ATOM 1028 A1 B 342 7.0 221.0 122.6 0 0CL +ATOM 1029 COM B 343 202.2 389.0 393.8 0 0CL +ATOM 1030 C1 B 343 203.0 390.1 393.5 0 0CL +ATOM 1031 A1 B 343 202.1 389.6 394.1 0 0CL +ATOM 1032 COM B 344 290.1 415.2 332.3 0 0CL +ATOM 1033 C1 B 344 288.8 415.4 333.0 0 0CL +ATOM 1034 A1 B 344 289.8 415.7 332.2 0 0CL +ATOM 1035 COM B 345 164.3 303.1 242.3 0 0CL +ATOM 1036 C1 B 345 163.8 302.0 241.7 0 0CL +ATOM 1037 A1 B 345 163.8 303.1 242.1 0 0CL +ATOM 1038 COM B 346 325.9 460.3 205.4 0 0CL +ATOM 1039 C1 B 346 326.9 461.0 206.1 0 0CL +ATOM 1040 A1 B 346 326.4 460.6 205.1 0 0CL +ATOM 1041 COM B 347 304.8 36.9 270.3 0 0CL +ATOM 1042 C1 B 347 305.2 35.5 270.5 0 0CL +ATOM 1043 A1 B 347 304.5 36.4 270.0 0 0CL +ATOM 1044 COM B 348 458.6 13.5 376.5 0 0CL +ATOM 1045 C1 B 348 457.7 14.2 377.3 0 0CL +ATOM 1046 A1 B 348 458.6 14.1 376.6 0 0CL +ATOM 1047 COM B 349 239.1 8.8 274.7 0 0CL +ATOM 1048 C1 B 349 239.1 8.1 275.9 0 0CL +ATOM 1049 A1 B 349 239.6 8.7 275.0 0 0CL +ATOM 1050 COM B 350 332.1 278.3 212.1 0 0CL +ATOM 1051 C1 B 350 330.9 278.2 212.8 0 0CL +ATOM 1052 A1 B 350 332.0 277.8 212.5 0 0CL +ATOM 1053 COM B 351 459.0 110.4 198.0 0 0CL +ATOM 1054 C1 B 351 458.6 110.2 196.6 0 0CL +ATOM 1055 A1 B 351 458.5 110.2 197.8 0 0CL +ATOM 1056 COM B 352 191.8 404.6 344.8 0 0CL +ATOM 1057 C1 B 352 191.5 405.8 344.2 0 0CL +ATOM 1058 A1 B 352 191.5 405.0 345.1 0 0CL +ATOM 1059 COM B 353 312.6 296.7 300.0 0 0CL +ATOM 1060 C1 B 353 312.6 298.1 300.2 0 0CL +ATOM 1061 A1 B 353 313.0 297.1 299.8 0 0CL +ATOM 1062 COM B 354 205.7 40.9 12.3 0 0CL +ATOM 1063 C1 B 354 205.4 41.9 11.4 0 0CL +ATOM 1064 A1 B 354 205.6 40.8 11.7 0 0CL +ATOM 1065 COM B 355 402.1 8.8 74.0 0 0CL +ATOM 1066 C1 B 355 403.4 8.6 73.5 0 0CL +ATOM 1067 A1 B 355 402.4 9.3 74.0 0 0CL +ATOM 1068 COM B 356 314.9 381.6 155.2 0 0CL +ATOM 1069 C1 B 356 315.6 380.8 154.2 0 0CL +ATOM 1070 A1 B 356 314.7 381.1 155.0 0 0CL +ATOM 1071 COM B 357 339.5 466.0 33.6 0 0CL +ATOM 1072 C1 B 357 339.9 464.9 34.4 0 0CL +ATOM 1073 A1 B 357 339.3 465.9 34.2 0 0CL +ATOM 1074 COM B 358 172.2 228.9 277.0 0 0CL +ATOM 1075 C1 B 358 172.7 228.5 275.7 0 0CL +ATOM 1076 A1 B 358 171.8 228.8 276.5 0 0CL +ATOM 1077 COM B 359 152.4 56.5 238.1 0 0CL +ATOM 1078 C1 B 359 152.0 55.6 239.2 0 0CL +ATOM 1079 A1 B 359 151.9 56.2 238.2 0 0CL +ATOM 1080 COM B 360 242.2 200.2 237.3 0 0CL +ATOM 1081 C1 B 360 243.6 199.9 237.0 0 0CL +ATOM 1082 A1 B 360 242.4 200.2 236.7 0 0CL +ATOM 1083 COM B 361 321.2 120.0 115.1 0 0CL +ATOM 1084 C1 B 361 320.7 121.3 114.9 0 0CL +ATOM 1085 A1 B 361 321.2 120.3 114.5 0 0CL +ATOM 1086 COM B 362 36.4 106.9 231.1 0 0CL +ATOM 1087 C1 B 362 37.1 106.2 232.1 0 0CL +ATOM 1088 A1 B 362 36.6 106.4 231.0 0 0CL +ATOM 1089 COM B 363 258.7 273.0 468.9 0 0CL +ATOM 1090 C1 B 363 259.8 272.2 468.6 0 0CL +ATOM 1091 A1 B 363 259.2 273.2 469.0 0 0CL +ATOM 1092 COM B 364 195.0 289.6 225.9 0 0CL +ATOM 1093 C1 B 364 194.0 288.6 226.0 0 0CL +ATOM 1094 A1 B 364 194.5 289.7 226.1 0 0CL +ATOM 1095 COM B 365 280.6 194.9 87.9 0 0CL +ATOM 1096 C1 B 365 281.4 195.2 89.0 0 0CL +ATOM 1097 A1 B 365 280.6 195.4 88.1 0 0CL +ATOM 1098 COM B 366 337.8 499.2 86.7 0 0CL +ATOM 1099 C1 B 366 337.4 497.9 86.3 0 0CL +ATOM 1100 A1 B 366 337.7 499.0 86.1 0 0CL +ATOM 1101 COM B 367 218.9 255.6 23.5 0 0CL +ATOM 1102 C1 B 367 219.8 254.8 22.6 0 0CL +ATOM 1103 A1 B 367 218.8 255.0 23.3 0 0CL +ATOM 1104 COM B 368 112.1 352.6 262.2 0 0CL +ATOM 1105 C1 B 368 112.2 354.0 262.0 0 0CL +ATOM 1106 A1 B 368 112.0 352.8 261.7 0 0CL +ATOM 1107 COM B 369 297.0 37.8 238.3 0 0CL +ATOM 1108 C1 B 369 298.1 38.6 237.9 0 0CL +ATOM 1109 A1 B 369 297.6 37.8 238.6 0 0CL +ATOM 1110 COM B 370 133.7 147.4 277.3 0 0CL +ATOM 1111 C1 B 370 133.7 146.6 278.5 0 0CL +ATOM 1112 A1 B 370 133.4 147.5 277.8 0 0CL +ATOM 1113 COM B 371 444.7 425.5 400.4 0 0CL +ATOM 1114 C1 B 371 444.1 426.7 400.8 0 0CL +ATOM 1115 A1 B 371 444.4 425.8 400.0 0 0CL +ATOM 1116 COM B 372 39.1 198.5 392.2 0 0CL +ATOM 1117 C1 B 372 39.5 197.3 391.6 0 0CL +ATOM 1118 A1 B 372 39.1 198.5 391.6 0 0CL +ATOM 1119 COM B 373 183.3 318.6 496.4 0 0CL +ATOM 1120 C1 B 373 182.0 319.0 496.4 0 0CL +ATOM 1121 A1 B 373 183.1 319.0 496.0 0 0CL +ATOM 1122 COM B 374 163.1 495.6 165.5 0 0CL +ATOM 1123 C1 B 374 164.2 494.7 165.6 0 0CL +ATOM 1124 A1 B 374 163.1 495.1 165.2 0 0CL +ATOM 1125 COM B 375 179.9 392.9 206.1 0 0CL +ATOM 1126 C1 B 375 180.3 391.6 206.5 0 0CL +ATOM 1127 A1 B 375 180.2 392.5 205.8 0 0CL +ATOM 1128 COM B 376 252.1 21.9 397.5 0 0CL +ATOM 1129 C1 B 376 251.3 22.9 397.0 0 0CL +ATOM 1130 A1 B 376 252.3 22.2 397.0 0 0CL +ATOM 1131 COM B 377 189.1 415.6 299.3 0 0CL +ATOM 1132 C1 B 377 189.5 416.2 300.6 0 0CL +ATOM 1133 A1 B 377 189.7 415.8 299.5 0 0CL +ATOM 1134 COM B 378 94.6 451.9 252.2 0 0CL +ATOM 1135 C1 B 378 93.7 451.9 253.3 0 0CL +ATOM 1136 A1 B 378 94.7 452.3 252.7 0 0CL +ATOM 1137 COM B 379 475.7 497.6 38.2 0 0CL +ATOM 1138 C1 B 379 476.4 496.4 38.0 0 0CL +ATOM 1139 A1 B 379 476.1 497.4 38.6 0 0CL +ATOM 1140 COM B 380 478.2 388.2 331.6 0 0CL +ATOM 1141 C1 B 380 477.7 389.1 332.7 0 0CL +ATOM 1142 A1 B 380 478.5 388.3 332.1 0 0CL +ATOM 1143 COM B 381 103.5 110.4 278.4 0 0CL +ATOM 1144 C1 B 381 104.2 109.5 279.3 0 0CL +ATOM 1145 A1 B 381 104.0 110.0 278.2 0 0CL +ATOM 1146 COM B 382 314.7 54.5 383.4 0 0CL +ATOM 1147 C1 B 382 313.9 54.8 382.3 0 0CL +ATOM 1148 A1 B 382 314.9 54.4 382.9 0 0CL +ATOM 1149 COM B 383 259.6 273.8 425.0 0 0CL +ATOM 1150 C1 B 383 259.1 273.9 423.6 0 0CL +ATOM 1151 A1 B 383 259.4 273.3 424.7 0 0CL +ATOM 1152 COM B 384 380.5 105.4 488.5 0 0CL +ATOM 1153 C1 B 384 380.1 106.3 489.5 0 0CL +ATOM 1154 A1 B 384 380.7 105.3 489.1 0 0CL +ATOM 1155 COM B 385 117.5 239.0 302.2 0 0CL +ATOM 1156 C1 B 385 116.3 239.5 302.6 0 0CL +ATOM 1157 A1 B 385 117.0 238.9 301.8 0 0CL +ATOM 1158 COM B 386 120.7 209.0 439.9 0 0CL +ATOM 1159 C1 B 386 120.5 209.1 441.3 0 0CL +ATOM 1160 A1 B 386 120.2 208.7 440.2 0 0CL +ATOM 1161 COM B 387 142.1 289.6 368.3 0 0CL +ATOM 1162 C1 B 387 142.2 291.0 368.6 0 0CL +ATOM 1163 A1 B 387 142.0 290.0 367.9 0 0CL +ATOM 1164 COM B 388 379.2 165.0 481.1 0 0CL +ATOM 1165 C1 B 388 379.3 163.6 481.5 0 0CL +ATOM 1166 A1 B 388 378.8 164.6 481.0 0 0CL +ATOM 1167 COM B 389 300.8 6.5 21.4 0 0CL +ATOM 1168 C1 B 389 300.3 5.2 21.0 0 0CL +ATOM 1169 A1 B 389 300.2 6.4 21.2 0 0CL +ATOM 1170 COM B 390 412.6 214.4 16.2 0 0CL +ATOM 1171 C1 B 390 413.5 214.7 17.3 0 0CL +ATOM 1172 A1 B 390 413.0 214.0 16.5 0 0CL +ATOM 1173 COM B 391 394.0 123.0 168.1 0 0CL +ATOM 1174 C1 B 391 393.0 121.9 167.9 0 0CL +ATOM 1175 A1 B 391 394.0 122.5 168.4 0 0CL +ATOM 1176 COM B 392 330.4 157.6 335.0 0 0CL +ATOM 1177 C1 B 392 330.6 159.0 334.9 0 0CL +ATOM 1178 A1 B 392 330.8 157.8 334.7 0 0CL +ATOM 1179 COM B 393 15.0 349.3 309.3 0 0CL +ATOM 1180 C1 B 393 13.9 350.1 309.8 0 0CL +ATOM 1181 A1 B 393 14.9 349.4 309.9 0 0CL +ATOM 1182 COM B 394 331.6 314.3 380.7 0 0CL +ATOM 1183 C1 B 394 331.0 313.7 379.5 0 0CL +ATOM 1184 A1 B 394 331.2 313.8 380.7 0 0CL +ATOM 1185 COM B 395 209.3 413.5 465.7 0 0CL +ATOM 1186 C1 B 395 208.9 412.6 464.6 0 0CL +ATOM 1187 A1 B 395 209.5 413.5 465.2 0 0CL +ATOM 1188 COM B 396 420.6 327.5 194.0 0 0CL +ATOM 1189 C1 B 396 419.5 326.6 193.7 0 0CL +ATOM 1190 A1 B 396 420.6 326.9 194.2 0 0CL +ATOM 1191 COM B 397 312.8 196.8 209.5 0 0CL +ATOM 1192 C1 B 397 314.0 197.2 210.2 0 0CL +ATOM 1193 A1 B 397 312.7 197.1 210.0 0 0CL +ATOM 1194 COM B 398 35.2 137.1 281.0 0 0CL +ATOM 1195 C1 B 398 35.9 138.3 281.6 0 0CL +ATOM 1196 A1 B 398 35.2 137.7 280.8 0 0CL +ATOM 1197 COM B 399 335.0 277.2 277.6 0 0CL +ATOM 1198 C1 B 399 335.5 276.0 278.0 0 0CL +ATOM 1199 A1 B 399 334.7 276.7 277.6 0 0CL +ATOM 1200 COM B 400 489.2 247.0 225.6 0 0CL +ATOM 1201 C1 B 400 488.9 248.4 225.3 0 0CL +ATOM 1202 A1 B 400 489.1 247.4 226.0 0 0CL +ATOM 1203 COM B 401 441.5 143.6 296.9 0 0CL +ATOM 1204 C1 B 401 440.7 144.6 297.5 0 0CL +ATOM 1205 A1 B 401 441.1 143.5 297.4 0 0CL +ATOM 1206 COM B 402 10.7 95.2 475.7 0 0CL +ATOM 1207 C1 B 402 11.9 96.0 475.9 0 0CL +ATOM 1208 A1 B 402 11.0 95.5 475.2 0 0CL +ATOM 1209 COM B 403 102.8 443.7 245.0 0 0CL +ATOM 1210 C1 B 403 103.9 444.5 245.4 0 0CL +ATOM 1211 A1 B 403 103.4 443.6 244.8 0 0CL +ATOM 1212 COM B 404 92.1 145.6 481.4 0 0CL +ATOM 1213 C1 B 404 92.2 144.6 480.4 0 0CL +ATOM 1214 A1 B 404 91.7 145.6 480.9 0 0CL +ATOM 1215 COM B 405 187.6 446.1 425.4 0 0CL +ATOM 1216 C1 B 405 186.7 447.2 425.3 0 0CL +ATOM 1217 A1 B 405 187.7 446.6 425.2 0 0CL +ATOM 1218 COM B 406 381.0 469.1 364.3 0 0CL +ATOM 1219 C1 B 406 381.1 468.1 363.3 0 0CL +ATOM 1220 A1 B 406 381.5 468.9 364.1 0 0CL +ATOM 1221 COM B 407 306.1 155.6 132.0 0 0CL +ATOM 1222 C1 B 407 307.4 156.3 132.2 0 0CL +ATOM 1223 A1 B 407 306.2 156.1 132.2 0 0CL +ATOM 1224 COM B 408 480.7 123.4 197.5 0 0CL +ATOM 1225 C1 B 408 481.0 123.5 196.1 0 0CL +ATOM 1226 A1 B 408 480.9 123.9 197.2 0 0CL +ATOM 1227 COM B 409 322.5 471.6 138.8 0 0CL +ATOM 1228 C1 B 409 322.1 471.9 140.1 0 0CL +ATOM 1229 A1 B 409 321.9 471.5 139.0 0 0CL +ATOM 1230 COM B 410 2.2 228.5 322.6 0 0CL +ATOM 1231 C1 B 410 2.9 227.4 322.0 0 0CL +ATOM 1232 A1 B 410 2.2 227.9 322.9 0 0CL +ATOM 1233 COM B 411 308.1 295.6 292.7 0 0CL +ATOM 1234 C1 B 411 309.1 294.6 292.3 0 0CL +ATOM 1235 A1 B 411 308.0 295.0 292.6 0 0CL +ATOM 1236 COM B 412 375.6 384.8 396.4 0 0CL +ATOM 1237 C1 B 412 375.8 385.1 397.8 0 0CL +ATOM 1238 A1 B 412 375.8 384.4 396.8 0 0CL +ATOM 1239 COM B 413 182.4 246.2 103.5 0 0CL +ATOM 1240 C1 B 413 182.7 246.7 104.8 0 0CL +ATOM 1241 A1 B 413 182.2 246.8 103.7 0 0CL +ATOM 1242 COM B 414 105.1 448.8 461.7 0 0CL +ATOM 1243 C1 B 414 106.2 448.4 462.6 0 0CL +ATOM 1244 A1 B 414 105.4 448.3 461.6 0 0CL +ATOM 1245 COM B 415 378.0 295.3 325.6 0 0CL +ATOM 1246 C1 B 415 378.9 295.7 324.6 0 0CL +ATOM 1247 A1 B 415 378.2 295.8 325.6 0 0CL +ATOM 1248 COM B 416 53.7 268.8 263.2 0 0CL +ATOM 1249 C1 B 416 52.5 268.5 263.8 0 0CL +ATOM 1250 A1 B 416 53.7 268.6 263.7 0 0CL +ATOM 1251 COM B 417 418.4 260.0 109.1 0 0CL +ATOM 1252 C1 B 417 418.7 259.2 108.0 0 0CL +ATOM 1253 A1 B 417 418.4 260.2 108.6 0 0CL +ATOM 1254 COM B 418 401.2 307.6 198.1 0 0CL +ATOM 1255 C1 B 418 401.1 308.7 199.0 0 0CL +ATOM 1256 A1 B 418 400.7 308.0 198.1 0 0CL +ATOM 1257 COM B 419 423.7 363.9 132.0 0 0CL +ATOM 1258 C1 B 419 423.8 363.6 133.4 0 0CL +ATOM 1259 A1 B 419 423.4 364.1 132.4 0 0CL +ATOM 1260 COM B 420 164.1 309.6 370.1 0 0CL +ATOM 1261 C1 B 420 163.7 310.9 370.7 0 0CL +ATOM 1262 A1 B 420 163.6 309.7 370.5 0 0CL +ATOM 1263 COM B 421 219.3 352.8 303.8 0 0CL +ATOM 1264 C1 B 421 219.7 354.0 304.6 0 0CL +ATOM 1265 A1 B 421 219.1 353.4 303.6 0 0CL +ATOM 1266 COM B 422 216.4 190.8 202.9 0 0CL +ATOM 1267 C1 B 422 215.5 191.8 202.7 0 0CL +ATOM 1268 A1 B 422 216.0 190.9 203.3 0 0CL +ATOM 1269 COM B 423 296.2 191.9 482.4 0 0CL +ATOM 1270 C1 B 423 295.7 190.5 482.4 0 0CL +ATOM 1271 A1 B 423 296.4 191.4 482.8 0 0CL +ATOM 1272 COM B 424 438.3 168.2 53.6 0 0CL +ATOM 1273 C1 B 424 437.3 167.4 53.0 0 0CL +ATOM 1274 A1 B 424 438.2 167.6 53.8 0 0CL +ATOM 1275 COM B 425 32.6 53.1 398.4 0 0CL +ATOM 1276 C1 B 425 34.0 53.2 397.8 0 0CL +ATOM 1277 A1 B 425 32.8 52.9 397.8 0 0CL +ATOM 1278 COM B 426 284.6 74.2 143.5 0 0CL +ATOM 1279 C1 B 426 284.0 73.0 143.8 0 0CL +ATOM 1280 A1 B 426 284.4 73.8 143.1 0 0CL +ATOM 1281 COM B 427 391.4 321.4 303.4 0 0CL +ATOM 1282 C1 B 427 392.4 321.6 304.3 0 0CL +ATOM 1283 A1 B 427 391.6 322.0 303.5 0 0CL +ATOM 1284 COM B 428 128.7 384.1 299.1 0 0CL +ATOM 1285 C1 B 428 128.4 385.3 298.3 0 0CL +ATOM 1286 A1 B 428 128.6 384.7 299.4 0 0CL +ATOM 1287 COM B 429 395.4 304.1 387.0 0 0CL +ATOM 1288 C1 B 429 395.8 305.5 386.8 0 0CL +ATOM 1289 A1 B 429 395.1 304.6 387.1 0 0CL +ATOM 1290 COM B 430 484.9 261.7 59.9 0 0CL +ATOM 1291 C1 B 430 484.5 262.5 58.9 0 0CL +ATOM 1292 A1 B 430 485.2 261.8 59.4 0 0CL +ATOM 1293 COM B 431 13.9 456.0 45.3 0 0CL +ATOM 1294 C1 B 431 15.0 455.2 45.0 0 0CL +ATOM 1295 A1 B 431 14.3 455.9 45.7 0 0CL +ATOM 1296 COM B 432 442.6 326.8 356.1 0 0CL +ATOM 1297 C1 B 432 441.6 327.8 355.6 0 0CL +ATOM 1298 A1 B 432 442.6 327.4 356.2 0 0CL +ATOM 1299 COM B 433 76.2 389.1 72.8 0 0CL +ATOM 1300 C1 B 433 75.7 388.2 73.8 0 0CL +ATOM 1301 A1 B 433 76.5 389.0 73.4 0 0CL +ATOM 1302 COM B 434 340.2 202.3 106.6 0 0CL +ATOM 1303 C1 B 434 341.2 202.8 107.6 0 0CL +ATOM 1304 A1 B 434 340.1 202.3 107.2 0 0CL +ATOM 1305 COM B 435 62.5 438.4 385.5 0 0CL +ATOM 1306 C1 B 435 62.6 437.0 385.6 0 0CL +ATOM 1307 A1 B 435 62.0 438.0 385.4 0 0CL +ATOM 1308 COM B 436 345.4 273.9 309.1 0 0CL +ATOM 1309 C1 B 436 346.0 274.9 310.1 0 0CL +ATOM 1310 A1 B 436 345.7 273.8 309.6 0 0CL +ATOM 1311 COM B 437 419.3 370.3 279.4 0 0CL +ATOM 1312 C1 B 437 420.1 370.8 278.4 0 0CL +ATOM 1313 A1 B 437 419.3 370.1 278.8 0 0CL +ATOM 1314 COM B 438 452.6 198.5 308.3 0 0CL +ATOM 1315 C1 B 438 452.6 198.2 309.7 0 0CL +ATOM 1316 A1 B 438 452.3 198.9 308.8 0 0CL +ATOM 1317 COM B 439 203.1 176.5 196.6 0 0CL +ATOM 1318 C1 B 439 203.0 175.3 197.4 0 0CL +ATOM 1319 A1 B 439 203.0 176.0 196.3 0 0CL +ATOM 1320 COM B 440 59.1 269.5 495.5 0 0CL +ATOM 1321 C1 B 440 58.1 268.9 496.4 0 0CL +ATOM 1322 A1 B 440 58.8 269.0 495.4 0 0CL +ATOM 1323 COM B 441 113.4 383.2 425.9 0 0CL +ATOM 1324 C1 B 441 114.6 384.0 425.7 0 0CL +ATOM 1325 A1 B 441 113.5 383.8 426.1 0 0CL +ATOM 1326 COM B 442 349.4 439.0 476.7 0 0CL +ATOM 1327 C1 B 442 349.7 440.1 477.5 0 0CL +ATOM 1328 A1 B 442 349.0 439.5 476.8 0 0CL +ATOM 1329 COM B 443 125.5 31.6 303.3 0 0CL +ATOM 1330 C1 B 443 125.3 30.4 302.5 0 0CL +ATOM 1331 A1 B 443 125.9 31.2 303.3 0 0CL +ATOM 1332 COM B 444 61.1 384.7 103.8 0 0CL +ATOM 1333 C1 B 444 62.4 384.6 104.4 0 0CL +ATOM 1334 A1 B 444 61.3 384.2 104.1 0 0CL +ATOM 1335 COM B 445 401.2 482.4 212.2 0 0CL +ATOM 1336 C1 B 445 400.6 483.7 212.6 0 0CL +ATOM 1337 A1 B 445 400.8 482.5 212.6 0 0CL +ATOM 1338 COM B 446 120.1 247.1 103.1 0 0CL +ATOM 1339 C1 B 446 121.2 248.1 103.0 0 0CL +ATOM 1340 A1 B 446 120.5 247.3 103.6 0 0CL +ATOM 1341 COM B 447 12.6 323.2 121.3 0 0CL +ATOM 1342 C1 B 447 12.9 324.6 121.5 0 0CL +ATOM 1343 A1 B 447 12.7 323.5 121.9 0 0CL +ATOM 1344 COM B 448 263.4 278.0 104.9 0 0CL +ATOM 1345 C1 B 448 263.9 276.7 105.2 0 0CL +ATOM 1346 A1 B 448 263.9 277.9 105.3 0 0CL +ATOM 1347 COM B 449 231.8 220.7 496.7 0 0CL +ATOM 1348 C1 B 449 230.5 221.1 496.4 0 0CL +ATOM 1349 A1 B 449 231.6 220.7 496.2 0 0CL diff --git a/het3mer/PDB/100000.pdb b/het3mer/PDB/100000.pdb new file mode 100644 index 00000000..2686d3b6 --- /dev/null +++ b/het3mer/PDB/100000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 100000 CREATED Thu May 29 13:09:19 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 301.5 179.6 54.8 0 0CL +ATOM 1 A1 C 0 303.1 179.2 56.3 0 0CL +ATOM 2 B1 C 0 302.8 179.9 56.2 0 0CL +ATOM 3 COM C 1 308.5 413.1 456.5 0 0CL +ATOM 4 A1 C 1 307.5 411.5 455.5 0 0CL +ATOM 5 B1 C 1 307.1 412.0 455.7 0 0CL +ATOM 6 COM C 2 391.1 202.4 362.8 0 0CL +ATOM 7 A1 C 2 392.3 200.9 364.0 0 0CL +ATOM 8 B1 C 2 392.5 201.0 363.3 0 0CL +ATOM 9 COM C 3 333.4 102.0 228.7 0 0CL +ATOM 10 A1 C 3 334.3 100.1 229.2 0 0CL +ATOM 11 B1 C 3 334.4 100.3 228.6 0 0CL +ATOM 12 COM C 4 459.6 476.2 456.4 0 0CL +ATOM 13 A1 C 4 458.1 475.0 455.2 0 0CL +ATOM 14 B1 C 4 458.0 475.7 455.3 0 0CL +ATOM 15 COM C 5 50.9 402.4 317.3 0 0CL +ATOM 16 A1 C 5 49.1 401.5 318.2 0 0CL +ATOM 17 B1 C 5 49.4 401.1 317.7 0 0CL +ATOM 18 COM C 6 491.9 9.3 84.6 0 0CL +ATOM 19 A1 C 6 493.1 11.1 84.4 0 0CL +ATOM 20 B1 C 6 493.4 10.5 84.2 0 0CL +ATOM 21 COM C 7 280.7 384.3 417.9 0 0CL +ATOM 22 A1 C 7 281.6 385.2 416.2 0 0CL +ATOM 23 B1 C 7 281.3 384.6 416.0 0 0CL +ATOM 24 COM C 8 138.7 439.6 319.9 0 0CL +ATOM 25 A1 C 8 140.2 439.8 321.5 0 0CL +ATOM 26 B1 C 8 139.5 439.7 321.7 0 0CL +ATOM 27 COM C 9 236.8 323.1 326.2 0 0CL +ATOM 28 A1 C 9 236.7 323.4 328.4 0 0CL +ATOM 29 B1 C 9 237.0 323.9 328.0 0 0CL +ATOM 30 COM C 10 227.2 364.7 325.7 0 0CL +ATOM 31 A1 C 10 227.9 364.9 327.8 0 0CL +ATOM 32 B1 C 10 228.4 364.5 327.3 0 0CL +ATOM 33 COM C 11 300.8 260.3 405.0 0 0CL +ATOM 34 A1 C 11 301.9 262.1 405.6 0 0CL +ATOM 35 B1 C 11 301.4 262.2 405.0 0 0CL +ATOM 36 COM C 12 202.7 93.5 485.5 0 0CL +ATOM 37 A1 C 12 202.6 92.4 487.5 0 0CL +ATOM 38 B1 C 12 203.2 92.7 487.3 0 0CL +ATOM 39 COM C 13 380.1 81.7 9.6 0 0CL +ATOM 40 A1 C 13 381.1 79.7 9.8 0 0CL +ATOM 41 B1 C 13 380.5 79.8 10.2 0 0CL +ATOM 42 COM C 14 495.9 363.2 394.5 0 0CL +ATOM 43 A1 C 14 497.7 362.0 394.9 0 0CL +ATOM 44 B1 C 14 497.7 362.7 395.2 0 0CL +ATOM 45 COM C 15 50.8 137.8 355.3 0 0CL +ATOM 46 A1 C 15 49.4 137.6 353.7 0 0CL +ATOM 47 B1 C 15 50.1 137.4 353.6 0 0CL +ATOM 48 COM C 16 397.6 362.6 256.9 0 0CL +ATOM 49 A1 C 16 399.1 362.9 258.4 0 0CL +ATOM 50 B1 C 16 398.7 363.5 258.3 0 0CL +ATOM 51 COM C 17 477.3 203.3 151.4 0 0CL +ATOM 52 A1 C 17 479.3 202.5 151.9 0 0CL +ATOM 53 B1 C 17 479.2 203.2 152.0 0 0CL +ATOM 54 COM C 18 195.3 46.4 323.5 0 0CL +ATOM 55 A1 C 18 196.9 47.9 323.3 0 0CL +ATOM 56 B1 C 18 196.3 48.1 323.6 0 0CL +ATOM 57 COM C 19 139.0 313.7 45.6 0 0CL +ATOM 58 A1 C 19 137.5 312.1 45.1 0 0CL +ATOM 59 B1 C 19 137.6 312.6 44.6 0 0CL +ATOM 60 COM C 20 330.1 442.0 287.1 0 0CL +ATOM 61 A1 C 20 331.4 441.6 285.4 0 0CL +ATOM 62 B1 C 20 330.9 442.2 285.3 0 0CL +ATOM 63 COM C 21 422.8 336.3 151.1 0 0CL +ATOM 64 A1 C 21 420.8 335.8 151.8 0 0CL +ATOM 65 B1 C 21 420.9 336.5 151.8 0 0CL +ATOM 66 COM C 22 479.4 179.1 105.4 0 0CL +ATOM 67 A1 C 22 478.8 177.0 105.8 0 0CL +ATOM 68 B1 C 22 478.7 177.2 105.1 0 0CL +ATOM 69 COM C 23 344.0 218.9 106.9 0 0CL +ATOM 70 A1 C 23 345.8 217.6 106.4 0 0CL +ATOM 71 B1 C 23 345.8 218.0 107.0 0 0CL +ATOM 72 COM C 24 128.2 78.7 486.9 0 0CL +ATOM 73 A1 C 24 127.1 80.3 485.8 0 0CL +ATOM 74 B1 C 24 126.7 79.6 485.9 0 0CL +ATOM 75 COM C 25 232.6 370.6 372.4 0 0CL +ATOM 76 A1 C 25 234.1 371.6 371.1 0 0CL +ATOM 77 B1 C 25 233.8 372.0 371.6 0 0CL +ATOM 78 COM C 26 299.8 390.5 368.8 0 0CL +ATOM 79 A1 C 26 298.7 388.9 367.7 0 0CL +ATOM 80 B1 C 26 298.3 389.3 368.2 0 0CL +ATOM 81 COM C 27 496.8 386.2 477.6 0 0CL +ATOM 82 A1 C 27 495.2 387.6 476.9 0 0CL +ATOM 83 B1 C 27 495.1 386.9 476.9 0 0CL +ATOM 84 COM C 28 340.8 160.2 362.7 0 0CL +ATOM 85 A1 C 28 339.2 159.0 361.8 0 0CL +ATOM 86 B1 C 28 339.9 158.7 361.9 0 0CL +ATOM 87 COM C 29 11.4 330.0 323.6 0 0CL +ATOM 88 A1 C 29 12.0 331.7 322.3 0 0CL +ATOM 89 B1 C 29 12.5 331.4 322.7 0 0CL +ATOM 90 COM C 30 464.8 345.8 18.1 0 0CL +ATOM 91 A1 C 30 466.5 347.2 18.4 0 0CL +ATOM 92 B1 C 30 466.6 346.5 18.6 0 0CL +ATOM 93 COM C 31 202.7 317.0 431.1 0 0CL +ATOM 94 A1 C 31 204.1 315.3 430.6 0 0CL +ATOM 95 B1 C 31 203.8 315.7 430.0 0 0CL +ATOM 96 COM C 32 262.8 290.2 479.9 0 0CL +ATOM 97 A1 C 32 264.7 289.3 479.3 0 0CL +ATOM 98 B1 C 32 264.1 289.2 478.9 0 0CL +ATOM 99 COM C 33 99.4 165.2 405.9 0 0CL +ATOM 100 A1 C 33 99.0 167.3 406.3 0 0CL +ATOM 101 B1 C 33 98.4 166.9 406.2 0 0CL +ATOM 102 COM C 34 155.0 339.4 460.9 0 0CL +ATOM 103 A1 C 34 153.8 338.2 462.2 0 0CL +ATOM 104 B1 C 34 154.5 338.3 462.4 0 0CL +ATOM 105 COM C 35 34.7 301.0 470.7 0 0CL +ATOM 106 A1 C 35 34.1 299.3 469.4 0 0CL +ATOM 107 B1 C 35 33.9 299.2 470.1 0 0CL +ATOM 108 COM C 36 437.7 196.1 381.3 0 0CL +ATOM 109 A1 C 36 436.5 195.7 379.4 0 0CL +ATOM 110 B1 C 36 437.1 196.2 379.4 0 0CL +ATOM 111 COM C 37 415.9 140.7 165.8 0 0CL +ATOM 112 A1 C 37 417.3 139.1 165.1 0 0CL +ATOM 113 B1 C 37 417.6 139.8 165.4 0 0CL +ATOM 114 COM C 38 438.8 301.0 205.7 0 0CL +ATOM 115 A1 C 38 440.6 302.2 205.7 0 0CL +ATOM 116 B1 C 38 440.6 301.7 205.2 0 0CL +ATOM 117 COM C 39 260.3 398.5 459.4 0 0CL +ATOM 118 A1 C 39 258.9 398.5 461.1 0 0CL +ATOM 119 B1 C 39 258.9 397.9 460.6 0 0CL +ATOM 120 COM C 40 494.4 190.6 132.8 0 0CL +ATOM 121 A1 C 40 495.2 192.6 132.2 0 0CL +ATOM 122 B1 C 40 494.7 192.6 132.8 0 0CL +ATOM 123 COM C 41 395.1 223.7 152.1 0 0CL +ATOM 124 A1 C 41 395.0 225.7 153.1 0 0CL +ATOM 125 B1 C 41 395.1 225.1 153.5 0 0CL +ATOM 126 COM C 42 316.1 373.5 497.2 0 0CL +ATOM 127 A1 C 42 313.9 372.9 496.9 0 0CL +ATOM 128 B1 C 42 314.4 372.8 496.4 0 0CL +ATOM 129 COM C 43 84.7 270.6 23.2 0 0CL +ATOM 130 A1 C 43 86.7 271.1 23.9 0 0CL +ATOM 131 B1 C 43 86.2 271.5 24.2 0 0CL +ATOM 132 COM C 44 98.6 399.2 64.6 0 0CL +ATOM 133 A1 C 44 97.0 397.7 64.1 0 0CL +ATOM 134 B1 C 44 97.2 397.8 64.8 0 0CL +ATOM 135 COM C 45 95.8 407.3 492.5 0 0CL +ATOM 136 A1 C 45 94.7 408.8 493.6 0 0CL +ATOM 137 B1 C 45 94.5 408.7 492.9 0 0CL +ATOM 138 COM C 46 296.7 57.4 242.2 0 0CL +ATOM 139 A1 C 46 294.6 56.9 241.8 0 0CL +ATOM 140 B1 C 46 294.8 56.8 242.5 0 0CL +ATOM 141 COM C 47 290.8 200.2 357.3 0 0CL +ATOM 142 A1 C 47 292.2 200.8 358.9 0 0CL +ATOM 143 B1 C 47 292.1 200.1 358.8 0 0CL +ATOM 144 COM C 48 181.7 192.0 421.5 0 0CL +ATOM 145 A1 C 48 182.8 190.7 423.0 0 0CL +ATOM 146 B1 C 48 183.2 191.0 422.4 0 0CL +ATOM 147 COM C 49 468.6 261.3 148.0 0 0CL +ATOM 148 A1 C 49 469.0 260.9 150.2 0 0CL +ATOM 149 B1 C 49 468.3 260.8 149.9 0 0CL +ATOM 150 COM C 50 168.6 50.6 381.0 0 0CL +ATOM 151 A1 C 50 167.1 49.8 382.4 0 0CL +ATOM 152 B1 C 50 166.9 50.3 381.8 0 0CL +ATOM 153 COM C 51 226.3 406.8 105.8 0 0CL +ATOM 154 A1 C 51 227.9 406.5 104.3 0 0CL +ATOM 155 B1 C 51 228.0 407.0 104.8 0 0CL +ATOM 156 COM C 52 262.7 316.6 41.8 0 0CL +ATOM 157 A1 C 52 263.5 318.3 42.9 0 0CL +ATOM 158 B1 C 52 263.2 318.5 42.2 0 0CL +ATOM 159 COM C 53 173.2 144.0 283.3 0 0CL +ATOM 160 A1 C 53 173.8 142.4 284.7 0 0CL +ATOM 161 B1 C 53 173.4 142.2 284.1 0 0CL +ATOM 162 COM C 54 124.1 304.0 429.5 0 0CL +ATOM 163 A1 C 54 125.1 302.1 429.0 0 0CL +ATOM 164 B1 C 54 125.5 302.8 428.9 0 0CL +ATOM 165 COM C 55 428.5 18.6 148.4 0 0CL +ATOM 166 A1 C 55 429.7 17.9 146.7 0 0CL +ATOM 167 B1 C 55 430.0 18.3 147.2 0 0CL +ATOM 168 COM C 56 310.4 15.3 403.7 0 0CL +ATOM 169 A1 C 56 308.7 14.2 404.6 0 0CL +ATOM 170 B1 C 56 309.3 13.8 404.5 0 0CL +ATOM 171 COM C 57 409.4 184.9 323.0 0 0CL +ATOM 172 A1 C 57 408.7 184.4 325.1 0 0CL +ATOM 173 B1 C 57 408.4 184.1 324.5 0 0CL +ATOM 174 COM C 58 361.6 410.3 451.0 0 0CL +ATOM 175 A1 C 58 362.6 409.7 449.1 0 0CL +ATOM 176 B1 C 58 362.0 410.1 449.1 0 0CL +ATOM 177 COM C 59 327.2 494.5 4.1 0 0CL +ATOM 178 A1 C 59 326.3 493.7 6.0 0 0CL +ATOM 179 B1 C 59 325.9 493.9 5.5 0 0CL +ATOM 180 COM C 60 328.0 160.8 123.0 0 0CL +ATOM 181 A1 C 60 328.8 159.4 124.5 0 0CL +ATOM 182 B1 C 60 328.1 159.6 124.5 0 0CL +ATOM 183 COM C 61 198.2 67.2 177.8 0 0CL +ATOM 184 A1 C 61 198.7 68.9 179.2 0 0CL +ATOM 185 B1 C 61 198.8 68.2 179.4 0 0CL +ATOM 186 COM C 62 351.2 245.5 338.3 0 0CL +ATOM 187 A1 C 62 349.4 245.2 339.5 0 0CL +ATOM 188 B1 C 62 349.5 244.7 339.0 0 0CL +ATOM 189 COM C 63 465.7 346.1 426.0 0 0CL +ATOM 190 A1 C 63 466.5 346.5 428.0 0 0CL +ATOM 191 B1 C 63 466.9 346.6 427.4 0 0CL +ATOM 192 COM C 64 217.8 285.1 165.3 0 0CL +ATOM 193 A1 C 64 219.8 285.8 164.7 0 0CL +ATOM 194 B1 C 64 219.7 285.4 165.3 0 0CL +ATOM 195 COM C 65 454.7 272.6 14.3 0 0CL +ATOM 196 A1 C 65 452.6 272.2 14.8 0 0CL +ATOM 197 B1 C 65 452.9 272.9 15.0 0 0CL +ATOM 198 COM C 66 88.0 266.5 254.2 0 0CL +ATOM 199 A1 C 66 89.0 265.6 252.4 0 0CL +ATOM 200 B1 C 66 88.8 265.1 253.0 0 0CL +ATOM 201 COM C 67 324.0 320.6 45.2 0 0CL +ATOM 202 A1 C 67 325.5 319.0 44.9 0 0CL +ATOM 203 B1 C 67 325.6 319.4 45.5 0 0CL +ATOM 204 COM C 68 411.4 190.0 201.4 0 0CL +ATOM 205 A1 C 68 412.5 191.9 201.5 0 0CL +ATOM 206 B1 C 68 411.8 192.0 201.7 0 0CL +ATOM 207 COM C 69 216.9 125.2 383.0 0 0CL +ATOM 208 A1 C 69 218.8 125.0 384.2 0 0CL +ATOM 209 B1 C 69 218.8 124.8 383.5 0 0CL +ATOM 210 COM C 70 5.8 256.6 176.2 0 0CL +ATOM 211 A1 C 70 4.1 257.8 176.9 0 0CL +ATOM 212 B1 C 70 4.8 258.1 177.0 0 0CL +ATOM 213 COM C 71 176.5 202.3 131.8 0 0CL +ATOM 214 A1 C 71 175.7 200.4 132.5 0 0CL +ATOM 215 B1 C 71 176.0 200.8 133.0 0 0CL +ATOM 216 COM C 72 435.6 333.7 228.5 0 0CL +ATOM 217 A1 C 72 437.1 335.0 227.3 0 0CL +ATOM 218 B1 C 72 437.2 334.2 227.4 0 0CL +ATOM 219 COM C 73 222.5 297.7 202.1 0 0CL +ATOM 220 A1 C 73 223.1 299.8 201.9 0 0CL +ATOM 221 B1 C 73 223.1 299.5 202.6 0 0CL +ATOM 222 COM C 74 183.7 207.9 398.1 0 0CL +ATOM 223 A1 C 74 185.0 206.4 397.2 0 0CL +ATOM 224 B1 C 74 184.7 206.9 396.7 0 0CL +ATOM 225 COM C 75 202.9 253.3 308.4 0 0CL +ATOM 226 A1 C 75 201.6 251.6 309.1 0 0CL +ATOM 227 B1 C 75 201.4 252.3 309.3 0 0CL +ATOM 228 COM C 76 368.6 413.2 307.4 0 0CL +ATOM 229 A1 C 76 367.3 413.5 309.2 0 0CL +ATOM 230 B1 C 76 368.0 413.8 309.2 0 0CL +ATOM 231 COM C 77 298.5 271.4 94.5 0 0CL +ATOM 232 A1 C 77 299.0 273.6 94.7 0 0CL +ATOM 233 B1 C 77 298.8 273.3 94.0 0 0CL +ATOM 234 COM C 78 48.1 51.8 460.4 0 0CL +ATOM 235 A1 C 78 49.3 52.1 462.2 0 0CL +ATOM 236 B1 C 78 49.3 51.5 461.9 0 0CL +ATOM 237 COM C 79 264.1 449.1 162.8 0 0CL +ATOM 238 A1 C 79 264.6 449.3 165.0 0 0CL +ATOM 239 B1 C 79 265.1 449.5 164.5 0 0CL +ATOM 240 COM C 80 277.0 237.0 459.9 0 0CL +ATOM 241 A1 C 80 276.0 238.3 458.4 0 0CL +ATOM 242 B1 C 80 275.7 237.7 458.6 0 0CL +ATOM 243 COM C 81 349.6 331.9 441.4 0 0CL +ATOM 244 A1 C 81 349.8 330.3 439.9 0 0CL +ATOM 245 B1 C 81 349.9 330.1 440.6 0 0CL +ATOM 246 COM C 82 285.0 161.2 186.2 0 0CL +ATOM 247 A1 C 82 285.2 161.4 184.1 0 0CL +ATOM 248 B1 C 82 285.7 161.8 184.5 0 0CL +ATOM 249 COM C 83 159.0 206.9 74.5 0 0CL +ATOM 250 A1 C 83 159.0 207.8 76.5 0 0CL +ATOM 251 B1 C 83 158.4 207.8 76.2 0 0CL +ATOM 252 COM C 84 443.6 135.5 260.3 0 0CL +ATOM 253 A1 C 84 441.9 136.9 260.4 0 0CL +ATOM 254 B1 C 84 442.4 137.0 260.9 0 0CL +ATOM 255 COM C 85 82.4 254.6 464.4 0 0CL +ATOM 256 A1 C 85 80.6 254.6 465.6 0 0CL +ATOM 257 B1 C 85 80.8 255.3 465.3 0 0CL +ATOM 258 COM C 86 284.6 104.5 170.3 0 0CL +ATOM 259 A1 C 86 283.1 102.9 169.8 0 0CL +ATOM 260 B1 C 86 283.8 102.7 169.8 0 0CL +ATOM 261 COM C 87 127.1 152.5 347.2 0 0CL +ATOM 262 A1 C 87 125.3 152.5 348.4 0 0CL +ATOM 263 B1 C 87 125.2 152.2 347.7 0 0CL +ATOM 264 COM C 88 344.7 398.2 206.5 0 0CL +ATOM 265 A1 C 88 346.6 398.2 205.3 0 0CL +ATOM 266 B1 C 88 346.0 398.5 205.0 0 0CL +ATOM 267 COM C 89 92.1 420.3 419.2 0 0CL +ATOM 268 A1 C 89 92.4 419.5 421.2 0 0CL +ATOM 269 B1 C 89 92.3 419.0 420.7 0 0CL +ATOM 270 COM C 90 155.9 229.3 85.9 0 0CL +ATOM 271 A1 C 90 157.3 228.2 84.8 0 0CL +ATOM 272 B1 C 90 157.1 228.8 84.5 0 0CL +ATOM 273 COM C 91 167.0 465.0 232.3 0 0CL +ATOM 274 A1 C 91 165.5 465.2 234.0 0 0CL +ATOM 275 B1 C 91 166.2 464.9 234.2 0 0CL +ATOM 276 COM C 92 341.9 167.6 191.3 0 0CL +ATOM 277 A1 C 92 341.3 166.7 189.3 0 0CL +ATOM 278 B1 C 92 341.6 166.3 189.8 0 0CL +ATOM 279 COM C 93 237.8 318.4 417.9 0 0CL +ATOM 280 A1 C 93 238.5 319.7 416.2 0 0CL +ATOM 281 B1 C 93 237.9 319.9 416.6 0 0CL +ATOM 282 COM C 94 178.2 426.4 117.6 0 0CL +ATOM 283 A1 C 94 179.2 428.4 117.7 0 0CL +ATOM 284 B1 C 94 179.6 427.8 117.5 0 0CL +ATOM 285 COM C 95 48.5 222.5 275.5 0 0CL +ATOM 286 A1 C 95 49.6 223.4 273.8 0 0CL +ATOM 287 B1 C 95 49.4 222.7 273.7 0 0CL +ATOM 288 COM C 96 26.1 3.9 45.8 0 0CL +ATOM 289 A1 C 96 28.2 3.3 46.0 0 0CL +ATOM 290 B1 C 96 28.0 3.8 46.4 0 0CL +ATOM 291 COM C 97 31.8 89.4 361.7 0 0CL +ATOM 292 A1 C 97 33.0 87.8 360.9 0 0CL +ATOM 293 B1 C 97 33.4 88.4 361.1 0 0CL +ATOM 294 COM C 98 353.4 183.6 81.3 0 0CL +ATOM 295 A1 C 98 352.0 184.2 79.7 0 0CL +ATOM 296 B1 C 98 351.7 184.3 80.4 0 0CL +ATOM 297 COM C 99 287.9 166.3 136.6 0 0CL +ATOM 298 A1 C 99 287.5 164.2 135.9 0 0CL +ATOM 299 B1 C 99 287.1 164.5 136.4 0 0CL +ATOM 300 COM C 100 5.1 332.2 348.3 0 0CL +ATOM 301 A1 C 100 4.2 332.8 346.4 0 0CL +ATOM 302 B1 C 100 3.8 332.4 346.8 0 0CL +ATOM 303 COM C 101 163.7 383.9 54.8 0 0CL +ATOM 304 A1 C 101 162.2 383.6 56.4 0 0CL +ATOM 305 B1 C 101 162.4 384.3 56.2 0 0CL +ATOM 306 COM C 102 198.3 424.9 375.6 0 0CL +ATOM 307 A1 C 102 200.4 424.3 376.0 0 0CL +ATOM 308 B1 C 102 199.9 424.3 376.6 0 0CL +ATOM 309 COM C 103 8.6 489.7 465.8 0 0CL +ATOM 310 A1 C 103 9.2 487.6 465.5 0 0CL +ATOM 311 B1 C 103 8.5 487.7 465.7 0 0CL +ATOM 312 COM C 104 161.8 416.9 229.6 0 0CL +ATOM 313 A1 C 104 159.9 417.5 230.7 0 0CL +ATOM 314 B1 C 104 159.9 416.9 230.3 0 0CL +ATOM 315 COM C 105 280.4 124.7 289.8 0 0CL +ATOM 316 A1 C 105 279.0 123.0 289.9 0 0CL +ATOM 317 B1 C 105 279.4 123.1 289.3 0 0CL +ATOM 318 COM C 106 63.9 80.0 483.4 0 0CL +ATOM 319 A1 C 106 61.9 79.3 483.8 0 0CL +ATOM 320 B1 C 106 62.1 79.9 484.1 0 0CL +ATOM 321 COM C 107 447.8 108.6 80.8 0 0CL +ATOM 322 A1 C 107 449.2 109.7 82.1 0 0CL +ATOM 323 B1 C 107 448.5 109.9 82.1 0 0CL +ATOM 324 COM C 108 293.0 487.0 162.0 0 0CL +ATOM 325 A1 C 108 292.7 484.9 162.8 0 0CL +ATOM 326 B1 C 108 292.9 485.0 162.1 0 0CL +ATOM 327 COM C 109 45.5 357.1 101.1 0 0CL +ATOM 328 A1 C 109 44.9 355.6 102.6 0 0CL +ATOM 329 B1 C 109 44.4 355.7 102.0 0 0CL +ATOM 330 COM C 110 491.8 41.7 275.2 0 0CL +ATOM 331 A1 C 110 492.3 42.3 277.2 0 0CL +ATOM 332 B1 C 110 491.9 42.8 276.8 0 0CL +ATOM 333 COM C 111 358.2 397.4 158.4 0 0CL +ATOM 334 A1 C 111 356.4 397.3 159.8 0 0CL +ATOM 335 B1 C 111 357.1 397.4 160.1 0 0CL +ATOM 336 COM C 112 423.5 218.9 163.8 0 0CL +ATOM 337 A1 C 112 424.6 218.0 165.5 0 0CL +ATOM 338 B1 C 112 424.4 217.6 164.9 0 0CL +ATOM 339 COM C 113 423.1 111.3 334.0 0 0CL +ATOM 340 A1 C 113 421.0 110.9 334.6 0 0CL +ATOM 341 B1 C 113 421.1 111.4 334.1 0 0CL +ATOM 342 COM C 114 357.4 93.7 343.5 0 0CL +ATOM 343 A1 C 114 356.6 92.6 341.8 0 0CL +ATOM 344 B1 C 114 356.6 93.3 341.8 0 0CL +ATOM 345 COM C 115 297.1 493.8 396.4 0 0CL +ATOM 346 A1 C 115 299.0 492.9 397.0 0 0CL +ATOM 347 B1 C 115 298.9 493.0 396.3 0 0CL +ATOM 348 COM C 116 153.7 394.0 50.9 0 0CL +ATOM 349 A1 C 116 155.1 392.5 51.7 0 0CL +ATOM 350 B1 C 116 154.5 392.3 51.4 0 0CL +ATOM 351 COM C 117 9.3 77.3 35.0 0 0CL +ATOM 352 A1 C 117 7.9 75.5 35.1 0 0CL +ATOM 353 B1 C 117 8.2 75.7 34.4 0 0CL +ATOM 354 COM C 118 354.1 2.5 168.7 0 0CL +ATOM 355 A1 C 118 354.8 4.3 167.6 0 0CL +ATOM 356 B1 C 118 355.1 3.6 167.4 0 0CL +ATOM 357 COM C 119 276.4 87.9 149.2 0 0CL +ATOM 358 A1 C 119 274.7 86.5 149.1 0 0CL +ATOM 359 B1 C 119 275.2 86.5 148.6 0 0CL +ATOM 360 COM C 120 240.5 224.9 391.8 0 0CL +ATOM 361 A1 C 120 242.2 224.8 393.3 0 0CL +ATOM 362 B1 C 120 242.2 224.3 392.7 0 0CL +ATOM 363 COM C 121 70.4 172.9 144.0 0 0CL +ATOM 364 A1 C 121 71.9 173.4 145.5 0 0CL +ATOM 365 B1 C 121 71.2 173.4 145.8 0 0CL +ATOM 366 COM C 122 152.9 108.2 7.2 0 0CL +ATOM 367 A1 C 122 153.0 106.0 7.0 0 0CL +ATOM 368 B1 C 122 152.3 106.3 7.1 0 0CL +ATOM 369 COM C 123 180.0 487.4 369.5 0 0CL +ATOM 370 A1 C 123 181.2 486.0 370.5 0 0CL +ATOM 371 B1 C 123 181.3 486.7 370.8 0 0CL +ATOM 372 COM C 124 174.0 37.9 251.5 0 0CL +ATOM 373 A1 C 124 172.8 39.6 250.6 0 0CL +ATOM 374 B1 C 124 173.3 39.2 250.2 0 0CL +ATOM 375 COM C 125 136.6 87.2 305.1 0 0CL +ATOM 376 A1 C 125 135.6 85.9 303.7 0 0CL +ATOM 377 B1 C 125 136.2 86.3 303.4 0 0CL +ATOM 378 COM C 126 246.1 97.6 143.0 0 0CL +ATOM 379 A1 C 126 243.9 97.2 143.1 0 0CL +ATOM 380 B1 C 126 244.2 97.5 142.5 0 0CL +ATOM 381 COM C 127 37.0 298.9 273.7 0 0CL +ATOM 382 A1 C 127 34.8 298.4 273.9 0 0CL +ATOM 383 B1 C 127 35.0 299.0 273.5 0 0CL +ATOM 384 COM C 128 337.2 208.4 365.5 0 0CL +ATOM 385 A1 C 128 336.5 210.3 366.4 0 0CL +ATOM 386 B1 C 128 336.1 210.0 365.8 0 0CL +ATOM 387 COM C 129 185.4 86.6 498.2 0 0CL +ATOM 388 A1 C 129 184.9 88.5 497.3 0 0CL +ATOM 389 B1 C 129 184.3 88.1 497.5 0 0CL +ATOM 390 COM C 130 37.2 479.3 59.2 0 0CL +ATOM 391 A1 C 130 36.8 481.2 58.3 0 0CL +ATOM 392 B1 C 130 37.4 481.2 58.7 0 0CL +ATOM 393 COM C 131 280.3 258.8 228.8 0 0CL +ATOM 394 A1 C 131 282.3 259.3 228.1 0 0CL +ATOM 395 B1 C 131 281.7 259.7 227.8 0 0CL +ATOM 396 COM C 132 77.1 189.9 255.1 0 0CL +ATOM 397 A1 C 132 75.8 189.8 253.4 0 0CL +ATOM 398 B1 C 132 75.7 190.3 253.9 0 0CL +ATOM 399 COM C 133 275.0 0.6 38.1 0 0CL +ATOM 400 A1 C 133 274.7 1.8 36.3 0 0CL +ATOM 401 B1 C 133 274.1 1.7 36.7 0 0CL +ATOM 402 COM C 134 275.7 439.1 285.3 0 0CL +ATOM 403 A1 C 134 277.6 439.9 286.1 0 0CL +ATOM 404 B1 C 134 277.6 439.7 285.4 0 0CL +ATOM 405 COM C 135 77.4 442.9 266.3 0 0CL +ATOM 406 A1 C 135 77.1 442.1 264.3 0 0CL +ATOM 407 B1 C 135 77.7 441.9 264.6 0 0CL +ATOM 408 COM C 136 451.8 160.0 354.1 0 0CL +ATOM 409 A1 C 136 452.5 161.0 355.9 0 0CL +ATOM 410 B1 C 136 452.0 161.3 355.5 0 0CL +ATOM 411 COM C 137 72.9 465.5 20.8 0 0CL +ATOM 412 A1 C 137 70.9 465.1 19.8 0 0CL +ATOM 413 B1 C 137 71.5 465.5 19.4 0 0CL +ATOM 414 COM C 138 19.0 481.7 340.1 0 0CL +ATOM 415 A1 C 138 20.1 482.9 338.6 0 0CL +ATOM 416 B1 C 138 19.8 483.2 339.2 0 0CL +ATOM 417 COM C 139 88.7 419.1 351.0 0 0CL +ATOM 418 A1 C 139 87.6 421.0 350.8 0 0CL +ATOM 419 B1 C 139 87.2 420.4 350.9 0 0CL +ATOM 420 COM C 140 363.9 244.1 100.4 0 0CL +ATOM 421 A1 C 140 363.8 246.0 101.5 0 0CL +ATOM 422 B1 C 140 363.2 245.8 101.1 0 0CL +ATOM 423 COM C 141 454.2 158.9 211.2 0 0CL +ATOM 424 A1 C 141 455.2 157.1 210.5 0 0CL +ATOM 425 B1 C 141 454.4 157.0 210.7 0 0CL +ATOM 426 COM C 142 433.1 88.6 291.3 0 0CL +ATOM 427 A1 C 142 432.4 86.8 292.4 0 0CL +ATOM 428 B1 C 142 432.8 86.7 291.8 0 0CL +ATOM 429 COM C 143 60.7 259.9 338.5 0 0CL +ATOM 430 A1 C 143 59.3 258.5 339.5 0 0CL +ATOM 431 B1 C 143 59.4 258.3 338.8 0 0CL +ATOM 432 COM C 144 371.5 480.5 431.0 0 0CL +ATOM 433 A1 C 144 370.4 479.1 432.4 0 0CL +ATOM 434 B1 C 144 371.1 478.9 432.2 0 0CL +ATOM 435 COM C 145 421.8 276.9 322.5 0 0CL +ATOM 436 A1 C 145 420.5 276.1 320.8 0 0CL +ATOM 437 B1 C 145 421.2 276.0 320.8 0 0CL +ATOM 438 COM C 146 2.5 172.1 210.2 0 0CL +ATOM 439 A1 C 146 3.1 170.4 208.9 0 0CL +ATOM 440 B1 C 146 3.3 171.1 208.7 0 0CL +ATOM 441 COM C 147 268.8 480.2 81.8 0 0CL +ATOM 442 A1 C 147 266.8 480.7 81.1 0 0CL +ATOM 443 B1 C 147 267.1 480.0 80.9 0 0CL +ATOM 444 COM C 148 10.7 21.1 474.1 0 0CL +ATOM 445 A1 C 148 12.7 20.6 475.1 0 0CL +ATOM 446 B1 C 148 12.4 21.3 475.2 0 0CL +ATOM 447 COM C 149 316.3 69.1 281.3 0 0CL +ATOM 448 A1 C 149 315.1 67.2 281.1 0 0CL +ATOM 449 B1 C 149 314.9 67.7 281.6 0 0CL +ATOM 450 COM A 150 458.1 474.2 453.6 0 0CL +ATOM 451 C1 A 150 458.8 474.5 454.7 0 0CL +ATOM 452 B1 A 150 457.8 475.2 453.7 0 0CL +ATOM 453 COM A 151 436.1 194.4 378.4 0 0CL +ATOM 454 C1 A 151 436.2 194.9 379.6 0 0CL +ATOM 455 B1 A 151 436.8 195.0 378.2 0 0CL +ATOM 456 COM A 152 419.8 109.6 334.5 0 0CL +ATOM 457 C1 A 152 421.1 110.0 334.7 0 0CL +ATOM 458 B1 A 152 419.8 110.3 333.8 0 0CL +ATOM 459 COM A 153 50.6 53.1 462.8 0 0CL +ATOM 460 C1 A 153 49.5 53.0 462.1 0 0CL +ATOM 461 B1 A 153 50.8 52.1 462.5 0 0CL +ATOM 462 COM A 154 213.0 284.4 293.6 0 0CL +ATOM 463 C1 A 154 212.1 285.1 292.9 0 0CL +ATOM 464 B1 A 154 212.3 284.5 294.4 0 0CL +ATOM 465 COM A 155 159.3 49.8 78.4 0 0CL +ATOM 466 C1 A 155 159.3 48.5 78.6 0 0CL +ATOM 467 B1 A 155 158.4 49.6 78.1 0 0CL +ATOM 468 COM A 156 263.2 319.2 44.4 0 0CL +ATOM 469 C1 A 156 263.3 318.1 43.7 0 0CL +ATOM 470 B1 A 156 262.8 319.5 43.5 0 0CL +ATOM 471 COM A 157 349.0 245.0 341.2 0 0CL +ATOM 472 C1 A 157 349.7 245.6 340.3 0 0CL +ATOM 473 B1 A 157 349.1 244.2 340.5 0 0CL +ATOM 474 COM A 158 124.4 484.3 65.1 0 0CL +ATOM 475 C1 A 158 124.0 485.3 65.8 0 0CL +ATOM 476 B1 A 158 125.3 484.6 65.2 0 0CL +ATOM 477 COM A 159 201.0 137.1 87.6 0 0CL +ATOM 478 C1 A 159 201.0 136.5 88.8 0 0CL +ATOM 479 B1 A 159 200.8 136.2 87.2 0 0CL +ATOM 480 COM A 160 283.8 260.1 228.7 0 0CL +ATOM 481 C1 A 160 282.8 259.2 228.8 0 0CL +ATOM 482 B1 A 160 283.1 260.7 228.2 0 0CL +ATOM 483 COM A 161 152.4 338.4 463.3 0 0CL +ATOM 484 C1 A 161 153.0 338.6 462.2 0 0CL +ATOM 485 B1 A 161 153.4 338.4 463.7 0 0CL +ATOM 486 COM A 162 103.0 38.7 153.1 0 0CL +ATOM 487 C1 A 162 103.9 39.1 154.0 0 0CL +ATOM 488 B1 A 162 103.8 38.6 152.4 0 0CL +ATOM 489 COM A 163 480.0 201.5 153.1 0 0CL +ATOM 490 C1 A 163 479.0 201.7 152.3 0 0CL +ATOM 491 B1 A 163 480.0 202.5 153.3 0 0CL +ATOM 492 COM A 164 348.8 329.5 438.7 0 0CL +ATOM 493 C1 A 164 349.2 330.6 439.3 0 0CL +ATOM 494 B1 A 164 349.0 329.1 439.6 0 0CL +ATOM 495 COM A 165 132.8 154.9 285.7 0 0CL +ATOM 496 C1 A 165 133.5 155.7 284.9 0 0CL +ATOM 497 B1 A 165 133.7 155.0 286.3 0 0CL +ATOM 498 COM A 166 29.2 35.5 54.4 0 0CL +ATOM 499 C1 A 166 29.9 36.5 53.9 0 0CL +ATOM 500 B1 A 166 28.6 35.6 53.6 0 0CL +ATOM 501 COM A 167 452.5 160.8 357.7 0 0CL +ATOM 502 C1 A 167 452.6 160.3 356.5 0 0CL +ATOM 503 B1 A 167 451.8 161.4 357.2 0 0CL +ATOM 504 COM A 168 75.8 189.8 251.7 0 0CL +ATOM 505 C1 A 168 76.4 189.4 252.8 0 0CL +ATOM 506 B1 A 168 75.6 190.7 252.2 0 0CL +ATOM 507 COM A 169 30.8 62.8 223.3 0 0CL +ATOM 508 C1 A 169 29.8 62.0 223.6 0 0CL +ATOM 509 B1 A 169 31.3 62.5 224.1 0 0CL +ATOM 510 COM A 170 346.1 215.9 106.1 0 0CL +ATOM 511 C1 A 170 345.3 217.0 105.9 0 0CL +ATOM 512 B1 A 170 346.3 216.4 107.0 0 0CL +ATOM 513 COM A 171 396.0 227.1 153.2 0 0CL +ATOM 514 C1 A 171 395.5 226.2 152.5 0 0CL +ATOM 515 B1 A 171 396.1 226.4 153.9 0 0CL +ATOM 516 COM A 172 126.5 81.9 486.1 0 0CL +ATOM 517 C1 A 172 127.5 81.0 486.2 0 0CL +ATOM 518 B1 A 172 125.9 81.1 486.2 0 0CL +ATOM 519 COM A 173 87.4 422.5 351.8 0 0CL +ATOM 520 C1 A 173 88.2 421.5 351.3 0 0CL +ATOM 521 B1 A 173 86.7 421.7 351.9 0 0CL +ATOM 522 COM A 174 199.9 70.1 179.3 0 0CL +ATOM 523 C1 A 174 199.1 69.5 178.6 0 0CL +ATOM 524 B1 A 174 200.0 69.2 179.8 0 0CL +ATOM 525 COM A 175 274.1 85.1 150.0 0 0CL +ATOM 526 C1 A 175 274.6 86.3 150.0 0 0CL +ATOM 527 B1 A 175 274.7 85.0 149.1 0 0CL +ATOM 528 COM A 176 242.9 95.8 143.1 0 0CL +ATOM 529 C1 A 176 244.0 96.4 143.6 0 0CL +ATOM 530 B1 A 176 243.1 96.2 142.2 0 0CL +ATOM 531 COM A 177 324.6 196.8 332.7 0 0CL +ATOM 532 C1 A 177 324.8 197.8 333.5 0 0CL +ATOM 533 B1 A 177 325.4 197.2 332.2 0 0CL +ATOM 534 COM A 178 174.1 199.7 132.7 0 0CL +ATOM 535 C1 A 178 174.9 200.4 132.0 0 0CL +ATOM 536 B1 A 178 174.6 200.1 133.5 0 0CL +ATOM 537 COM A 179 9.7 486.5 464.2 0 0CL +ATOM 538 C1 A 179 9.8 487.7 464.8 0 0CL +ATOM 539 B1 A 179 8.7 486.5 464.5 0 0CL +ATOM 540 COM A 180 322.0 337.4 354.3 0 0CL +ATOM 541 C1 A 180 323.0 337.6 353.6 0 0CL +ATOM 542 B1 A 180 321.5 337.7 353.5 0 0CL +ATOM 543 COM A 181 354.2 5.6 166.6 0 0CL +ATOM 544 C1 A 181 354.1 4.8 167.7 0 0CL +ATOM 545 B1 A 181 354.6 4.7 166.2 0 0CL +ATOM 546 COM A 182 287.1 163.5 134.4 0 0CL +ATOM 547 C1 A 182 287.8 164.4 135.0 0 0CL +ATOM 548 B1 A 182 286.4 163.7 135.1 0 0CL +ATOM 549 COM A 183 44.2 310.5 361.7 0 0CL +ATOM 550 C1 A 183 45.5 310.8 362.0 0 0CL +ATOM 551 B1 A 183 44.5 309.5 361.7 0 0CL +ATOM 552 COM A 184 181.0 484.6 371.6 0 0CL +ATOM 553 C1 A 184 180.7 485.2 370.5 0 0CL +ATOM 554 B1 A 184 181.2 485.5 372.0 0 0CL +ATOM 555 COM A 185 264.1 450.2 166.3 0 0CL +ATOM 556 C1 A 185 263.8 449.6 165.3 0 0CL +ATOM 557 B1 A 185 264.9 450.5 165.8 0 0CL +ATOM 558 COM A 186 310.1 83.1 268.1 0 0CL +ATOM 559 C1 A 186 309.4 82.9 267.0 0 0CL +ATOM 560 B1 A 186 309.9 82.1 268.4 0 0CL +ATOM 561 COM A 187 364.1 410.0 448.3 0 0CL +ATOM 562 C1 A 187 363.5 409.7 449.4 0 0CL +ATOM 563 B1 A 187 363.3 410.6 448.1 0 0CL +ATOM 564 COM A 188 175.3 141.6 285.2 0 0CL +ATOM 565 C1 A 188 174.6 142.7 284.9 0 0CL +ATOM 566 B1 A 188 174.7 141.2 284.4 0 0CL +ATOM 567 COM A 189 393.5 200.9 365.3 0 0CL +ATOM 568 C1 A 189 392.3 201.4 364.8 0 0CL +ATOM 569 B1 A 189 393.8 200.9 364.3 0 0CL +ATOM 570 COM A 190 424.9 377.4 16.7 0 0CL +ATOM 571 C1 A 190 424.0 377.3 17.6 0 0CL +ATOM 572 B1 A 190 425.0 378.4 16.9 0 0CL +ATOM 573 COM A 191 160.6 383.0 56.6 0 0CL +ATOM 574 C1 A 191 161.8 382.9 56.1 0 0CL +ATOM 575 B1 A 191 160.7 384.0 56.5 0 0CL +ATOM 576 COM A 192 320.2 175.2 480.9 0 0CL +ATOM 577 C1 A 192 320.6 175.2 479.7 0 0CL +ATOM 578 B1 A 192 321.0 174.6 481.1 0 0CL +ATOM 579 COM A 193 432.7 86.1 294.0 0 0CL +ATOM 580 C1 A 193 432.5 87.1 293.3 0 0CL +ATOM 581 B1 A 193 433.2 85.7 293.1 0 0CL +ATOM 582 COM A 194 156.7 391.9 51.3 0 0CL +ATOM 583 C1 A 194 155.9 392.9 51.5 0 0CL +ATOM 584 B1 A 194 155.8 391.4 51.0 0 0CL +ATOM 585 COM A 195 26.0 454.2 477.6 0 0CL +ATOM 586 C1 A 195 27.1 454.9 477.6 0 0CL +ATOM 587 B1 A 195 26.5 453.4 477.9 0 0CL +ATOM 588 COM A 196 293.7 201.5 359.0 0 0CL +ATOM 589 C1 A 196 292.6 201.5 358.4 0 0CL +ATOM 590 B1 A 196 293.7 200.5 359.0 0 0CL +ATOM 591 COM A 197 234.4 26.5 386.5 0 0CL +ATOM 592 C1 A 197 233.4 26.3 385.7 0 0CL +ATOM 593 B1 A 197 233.8 27.3 386.8 0 0CL +ATOM 594 COM A 198 271.6 101.4 95.6 0 0CL +ATOM 595 C1 A 198 272.1 102.2 96.5 0 0CL +ATOM 596 B1 A 198 272.5 101.6 95.1 0 0CL +ATOM 597 COM A 199 351.8 185.5 78.6 0 0CL +ATOM 598 C1 A 199 352.6 184.6 79.2 0 0CL +ATOM 599 B1 A 199 351.4 185.6 79.5 0 0CL +ATOM 600 COM A 200 451.1 271.9 14.0 0 0CL +ATOM 601 C1 A 200 452.4 271.6 14.1 0 0CL +ATOM 602 B1 A 200 451.3 272.8 14.3 0 0CL +ATOM 603 COM A 201 335.9 210.9 367.9 0 0CL +ATOM 604 C1 A 201 336.7 210.2 367.3 0 0CL +ATOM 605 B1 A 201 335.2 210.7 367.1 0 0CL +ATOM 606 COM A 202 135.4 84.1 303.4 0 0CL +ATOM 607 C1 A 202 135.4 85.2 304.2 0 0CL +ATOM 608 B1 A 202 136.1 84.6 303.0 0 0CL +ATOM 609 COM A 203 48.6 400.8 319.7 0 0CL +ATOM 610 C1 A 203 49.2 401.8 319.0 0 0CL +ATOM 611 B1 A 203 48.9 400.2 319.0 0 0CL +ATOM 612 COM A 204 59.3 257.4 340.8 0 0CL +ATOM 613 C1 A 204 59.7 258.5 340.3 0 0CL +ATOM 614 B1 A 204 59.4 257.0 339.9 0 0CL +ATOM 615 COM A 205 496.7 193.5 132.2 0 0CL +ATOM 616 C1 A 205 496.0 192.4 132.0 0 0CL +ATOM 617 B1 A 205 496.0 193.6 133.0 0 0CL +ATOM 618 COM A 206 467.5 348.2 17.4 0 0CL +ATOM 619 C1 A 206 466.3 347.8 17.6 0 0CL +ATOM 620 B1 A 206 467.8 347.3 17.7 0 0CL +ATOM 621 COM A 207 355.0 398.2 160.1 0 0CL +ATOM 622 C1 A 207 355.8 397.8 159.2 0 0CL +ATOM 623 B1 A 207 355.8 398.3 160.7 0 0CL +ATOM 624 COM A 208 179.1 429.9 116.9 0 0CL +ATOM 625 C1 A 208 178.5 428.9 117.5 0 0CL +ATOM 626 B1 A 208 179.8 429.2 116.6 0 0CL +ATOM 627 COM A 209 216.8 217.1 247.0 0 0CL +ATOM 628 C1 A 209 217.0 217.6 245.8 0 0CL +ATOM 629 B1 A 209 217.5 217.8 247.2 0 0CL +ATOM 630 COM A 210 95.4 397.8 63.4 0 0CL +ATOM 631 C1 A 210 96.6 398.2 63.4 0 0CL +ATOM 632 B1 A 210 95.5 397.7 64.4 0 0CL +ATOM 633 COM A 211 430.2 16.4 145.9 0 0CL +ATOM 634 C1 A 211 429.2 17.1 146.5 0 0CL +ATOM 635 B1 A 211 430.8 16.9 146.5 0 0CL +ATOM 636 COM A 212 329.4 157.7 124.5 0 0CL +ATOM 637 C1 A 212 329.3 158.9 123.9 0 0CL +ATOM 638 B1 A 212 328.4 157.9 124.7 0 0CL +ATOM 639 COM A 213 325.6 317.3 44.9 0 0CL +ATOM 640 C1 A 213 325.0 318.4 44.5 0 0CL +ATOM 641 B1 A 213 325.9 317.8 45.7 0 0CL +ATOM 642 COM A 214 186.3 20.3 155.9 0 0CL +ATOM 643 C1 A 214 185.6 20.8 156.9 0 0CL +ATOM 644 B1 A 214 186.7 19.7 156.6 0 0CL +ATOM 645 COM A 215 200.8 266.6 302.8 0 0CL +ATOM 646 C1 A 215 200.4 265.4 302.5 0 0CL +ATOM 647 B1 A 215 199.9 266.7 303.3 0 0CL +ATOM 648 COM A 216 76.0 441.0 263.4 0 0CL +ATOM 649 C1 A 216 76.2 442.0 264.3 0 0CL +ATOM 650 B1 A 216 76.9 440.6 263.8 0 0CL +ATOM 651 COM A 217 281.4 488.9 403.9 0 0CL +ATOM 652 C1 A 217 282.4 488.4 404.5 0 0CL +ATOM 653 B1 A 217 280.9 488.1 404.1 0 0CL +ATOM 654 COM A 218 479.7 175.4 106.0 0 0CL +ATOM 655 C1 A 218 479.6 176.7 106.3 0 0CL +ATOM 656 B1 A 218 479.4 175.7 105.1 0 0CL +ATOM 657 COM A 219 164.8 466.5 234.9 0 0CL +ATOM 658 C1 A 219 165.2 466.0 233.8 0 0CL +ATOM 659 B1 A 219 165.6 466.0 235.3 0 0CL +ATOM 660 COM A 220 381.4 78.3 8.8 0 0CL +ATOM 661 C1 A 220 381.4 79.6 8.9 0 0CL +ATOM 662 B1 A 220 380.7 78.3 9.5 0 0CL +ATOM 663 COM A 221 399.4 362.4 260.1 0 0CL +ATOM 664 C1 A 221 399.1 362.1 258.8 0 0CL +ATOM 665 B1 A 221 398.9 363.3 259.9 0 0CL +ATOM 666 COM A 222 99.2 168.5 407.6 0 0CL +ATOM 667 C1 A 222 99.7 167.5 406.9 0 0CL +ATOM 668 B1 A 222 98.3 168.0 407.5 0 0CL +ATOM 669 COM A 223 198.5 48.2 324.0 0 0CL +ATOM 670 C1 A 223 197.7 47.3 323.5 0 0CL +ATOM 671 B1 A 223 197.7 48.7 324.4 0 0CL +ATOM 672 COM A 224 312.8 371.9 497.6 0 0CL +ATOM 673 C1 A 224 313.7 372.7 497.8 0 0CL +ATOM 674 B1 A 224 313.3 371.6 496.8 0 0CL +ATOM 675 COM A 225 153.5 104.8 5.9 0 0CL +ATOM 676 C1 A 225 153.8 106.0 6.5 0 0CL +ATOM 677 B1 A 225 152.5 105.1 5.9 0 0CL +ATOM 678 COM A 226 70.0 463.8 19.2 0 0CL +ATOM 679 C1 A 226 70.8 464.3 20.1 0 0CL +ATOM 680 B1 A 226 70.6 464.3 18.5 0 0CL +ATOM 681 COM A 227 452.5 320.5 209.5 0 0CL +ATOM 682 C1 A 227 451.8 321.0 208.5 0 0CL +ATOM 683 B1 A 227 453.0 321.4 209.5 0 0CL +ATOM 684 COM A 228 243.5 225.7 393.8 0 0CL +ATOM 685 C1 A 228 242.3 225.7 393.4 0 0CL +ATOM 686 B1 A 228 243.7 225.0 393.1 0 0CL +ATOM 687 COM A 229 33.8 297.1 273.4 0 0CL +ATOM 688 C1 A 229 34.9 297.5 273.9 0 0CL +ATOM 689 B1 A 229 33.9 298.0 272.8 0 0CL +ATOM 690 COM A 230 369.6 479.1 433.9 0 0CL +ATOM 691 C1 A 230 369.9 479.7 432.8 0 0CL +ATOM 692 B1 A 230 370.6 478.8 433.8 0 0CL +ATOM 693 COM A 231 186.7 205.9 397.2 0 0CL +ATOM 694 C1 A 231 185.6 206.3 397.9 0 0CL +ATOM 695 B1 A 231 186.4 206.5 396.5 0 0CL +ATOM 696 COM A 232 2.8 258.7 176.2 0 0CL +ATOM 697 C1 A 232 3.5 257.6 176.2 0 0CL +ATOM 698 B1 A 232 3.6 259.2 176.4 0 0CL +ATOM 699 COM A 233 159.3 207.2 78.1 0 0CL +ATOM 700 C1 A 233 159.6 207.2 76.9 0 0CL +ATOM 701 B1 A 233 158.3 207.3 77.8 0 0CL +ATOM 702 COM A 234 205.8 314.9 430.8 0 0CL +ATOM 703 C1 A 234 204.7 315.4 431.3 0 0CL +ATOM 704 B1 A 234 205.4 315.4 429.9 0 0CL +ATOM 705 COM A 235 392.8 435.3 474.8 0 0CL +ATOM 706 C1 A 235 394.0 435.6 474.4 0 0CL +ATOM 707 B1 A 235 393.2 434.3 474.7 0 0CL +ATOM 708 COM A 236 141.6 438.9 322.1 0 0CL +ATOM 709 C1 A 236 140.9 439.4 321.1 0 0CL +ATOM 710 B1 A 236 140.6 438.9 322.6 0 0CL +ATOM 711 COM A 237 471.4 327.7 391.4 0 0CL +ATOM 712 C1 A 237 470.2 327.1 391.5 0 0CL +ATOM 713 B1 A 237 471.2 327.8 390.4 0 0CL +ATOM 714 COM A 238 192.8 336.3 150.5 0 0CL +ATOM 715 C1 A 238 193.3 336.3 149.3 0 0CL +ATOM 716 B1 A 238 192.3 337.1 150.2 0 0CL +ATOM 717 COM A 239 159.0 227.7 84.9 0 0CL +ATOM 718 C1 A 239 157.8 227.8 85.5 0 0CL +ATOM 719 B1 A 239 158.8 228.5 84.4 0 0CL +ATOM 720 COM A 240 441.1 303.9 205.4 0 0CL +ATOM 721 C1 A 240 440.2 303.1 205.9 0 0CL +ATOM 722 B1 A 240 441.2 303.2 204.7 0 0CL +ATOM 723 COM A 241 417.7 137.5 165.6 0 0CL +ATOM 724 C1 A 241 416.8 138.4 165.4 0 0CL +ATOM 725 B1 A 241 418.3 138.3 165.9 0 0CL +ATOM 726 COM A 242 33.0 299.1 468.0 0 0CL +ATOM 727 C1 A 242 33.9 299.8 468.6 0 0CL +ATOM 728 B1 A 242 32.7 298.8 469.0 0 0CL +ATOM 729 COM A 243 363.9 246.6 103.1 0 0CL +ATOM 730 C1 A 243 364.4 245.8 102.2 0 0CL +ATOM 731 B1 A 243 363.0 246.4 102.7 0 0CL +ATOM 732 COM A 244 93.5 408.8 494.9 0 0CL +ATOM 733 C1 A 244 94.6 408.3 494.4 0 0CL +ATOM 734 B1 A 244 93.2 408.8 493.9 0 0CL +ATOM 735 COM A 245 88.0 270.4 24.9 0 0CL +ATOM 736 C1 A 245 87.1 270.2 24.0 0 0CL +ATOM 737 B1 A 245 87.3 271.0 25.3 0 0CL +ATOM 738 COM A 246 19.8 90.7 401.3 0 0CL +ATOM 739 C1 A 246 18.6 90.7 401.7 0 0CL +ATOM 740 B1 A 246 19.6 91.7 401.0 0 0CL +ATOM 741 COM A 247 12.2 331.9 320.6 0 0CL +ATOM 742 C1 A 247 11.5 331.5 321.6 0 0CL +ATOM 743 B1 A 247 13.0 331.6 321.1 0 0CL +ATOM 744 COM A 248 73.2 172.7 146.3 0 0CL +ATOM 745 C1 A 248 72.6 172.9 145.2 0 0CL +ATOM 746 B1 A 248 72.3 172.6 146.8 0 0CL +ATOM 747 COM A 249 300.5 493.3 397.9 0 0CL +ATOM 748 C1 A 249 299.2 493.3 397.8 0 0CL +ATOM 749 B1 A 249 300.5 493.4 396.8 0 0CL +ATOM 750 COM A 250 33.4 86.2 361.3 0 0CL +ATOM 751 C1 A 250 32.5 87.1 361.2 0 0CL +ATOM 752 B1 A 250 34.1 86.9 361.5 0 0CL +ATOM 753 COM A 251 3.6 334.3 345.6 0 0CL +ATOM 754 C1 A 251 4.5 333.7 346.3 0 0CL +ATOM 755 B1 A 251 3.0 333.7 346.1 0 0CL +ATOM 756 COM A 252 40.9 84.4 124.6 0 0CL +ATOM 757 C1 A 252 42.1 84.8 124.5 0 0CL +ATOM 758 B1 A 252 40.6 85.3 124.3 0 0CL +ATOM 759 COM A 253 258.9 398.5 462.8 0 0CL +ATOM 760 C1 A 253 259.4 399.0 461.7 0 0CL +ATOM 761 B1 A 253 258.8 397.6 462.3 0 0CL +ATOM 762 COM A 254 365.9 414.4 309.5 0 0CL +ATOM 763 C1 A 254 366.5 413.6 308.7 0 0CL +ATOM 764 B1 A 254 366.8 414.8 309.8 0 0CL +ATOM 765 COM A 255 17.9 174.4 487.7 0 0CL +ATOM 766 C1 A 255 17.1 173.8 486.8 0 0CL +ATOM 767 B1 A 255 18.0 173.4 488.1 0 0CL +ATOM 768 COM A 256 200.5 250.5 308.3 0 0CL +ATOM 769 C1 A 256 201.6 251.1 308.3 0 0CL +ATOM 770 B1 A 256 200.1 251.3 308.7 0 0CL +ATOM 771 COM A 257 415.2 52.0 124.8 0 0CL +ATOM 772 C1 A 257 416.2 52.9 124.7 0 0CL +ATOM 773 B1 A 257 414.6 52.8 125.0 0 0CL +ATOM 774 COM A 258 78.9 254.0 465.4 0 0CL +ATOM 775 C1 A 258 80.2 253.8 465.2 0 0CL +ATOM 776 B1 A 258 79.2 255.0 465.1 0 0CL +ATOM 777 COM A 259 27.3 358.7 485.5 0 0CL +ATOM 778 C1 A 259 27.7 359.9 485.2 0 0CL +ATOM 779 B1 A 259 28.3 358.5 485.6 0 0CL +ATOM 780 COM A 260 116.3 84.6 39.8 0 0CL +ATOM 781 C1 A 260 115.2 84.1 39.2 0 0CL +ATOM 782 B1 A 260 116.1 85.5 39.2 0 0CL +ATOM 783 COM A 261 193.9 179.3 235.5 0 0CL +ATOM 784 C1 A 261 194.7 179.3 234.5 0 0CL +ATOM 785 B1 A 261 193.7 178.3 235.2 0 0CL +ATOM 786 COM A 262 124.7 151.8 349.9 0 0CL +ATOM 787 C1 A 262 125.6 152.4 349.2 0 0CL +ATOM 788 B1 A 262 124.5 151.4 349.0 0 0CL +ATOM 789 COM A 263 335.6 99.5 230.3 0 0CL +ATOM 790 C1 A 263 334.6 100.3 230.1 0 0CL +ATOM 791 B1 A 263 335.8 99.7 229.3 0 0CL +ATOM 792 COM A 264 219.9 126.0 385.1 0 0CL +ATOM 793 C1 A 264 218.6 125.7 384.8 0 0CL +ATOM 794 B1 A 264 220.1 125.7 384.1 0 0CL +ATOM 795 COM A 265 8.2 489.1 247.5 0 0CL +ATOM 796 C1 A 265 7.2 489.3 246.8 0 0CL +ATOM 797 B1 A 265 7.6 488.8 248.3 0 0CL +ATOM 798 COM A 266 409.3 183.6 326.5 0 0CL +ATOM 799 C1 A 266 409.5 184.4 325.5 0 0CL +ATOM 800 B1 A 266 408.7 183.1 325.8 0 0CL +ATOM 801 COM A 267 93.7 419.4 422.4 0 0CL +ATOM 802 C1 A 267 93.0 420.1 421.5 0 0CL +ATOM 803 B1 A 267 93.6 418.6 421.7 0 0CL +ATOM 804 COM A 268 190.8 172.2 271.4 0 0CL +ATOM 805 C1 A 268 190.2 171.2 270.8 0 0CL +ATOM 806 B1 A 268 190.4 172.7 270.6 0 0CL +ATOM 807 COM A 269 149.6 414.0 397.5 0 0CL +ATOM 808 C1 A 269 148.6 413.3 397.1 0 0CL +ATOM 809 B1 A 269 148.8 414.6 398.0 0 0CL +ATOM 810 COM A 270 340.9 460.6 11.1 0 0CL +ATOM 811 C1 A 270 341.6 459.6 10.5 0 0CL +ATOM 812 B1 A 270 341.4 460.4 11.9 0 0CL +ATOM 813 COM A 271 125.6 300.7 429.8 0 0CL +ATOM 814 C1 A 271 124.7 301.6 429.6 0 0CL +ATOM 815 B1 A 271 126.3 301.5 429.6 0 0CL +ATOM 816 COM A 272 491.9 41.8 278.9 0 0CL +ATOM 817 C1 A 272 492.2 41.5 277.7 0 0CL +ATOM 818 B1 A 272 491.4 42.6 278.4 0 0CL +ATOM 819 COM A 273 185.0 90.2 497.7 0 0CL +ATOM 820 C1 A 273 185.6 89.0 497.7 0 0CL +ATOM 821 B1 A 273 184.1 89.7 497.9 0 0CL +ATOM 822 COM A 274 278.9 121.5 290.7 0 0CL +ATOM 823 C1 A 274 279.2 122.8 290.8 0 0CL +ATOM 824 B1 A 274 279.3 121.5 289.8 0 0CL +ATOM 825 COM A 275 359.8 263.3 182.8 0 0CL +ATOM 826 C1 A 275 359.9 263.8 184.0 0 0CL +ATOM 827 B1 A 275 360.5 262.5 183.1 0 0CL +ATOM 828 COM A 276 66.0 298.0 56.2 0 0CL +ATOM 829 C1 A 276 66.1 297.4 55.0 0 0CL +ATOM 830 B1 A 276 65.0 297.9 56.0 0 0CL +ATOM 831 COM A 277 4.2 169.0 208.9 0 0CL +ATOM 832 C1 A 277 3.3 169.8 209.5 0 0CL +ATOM 833 B1 A 277 4.5 169.9 208.5 0 0CL +ATOM 834 COM A 278 493.1 12.6 83.5 0 0CL +ATOM 835 C1 A 278 492.5 11.7 84.2 0 0CL +ATOM 836 B1 A 278 493.6 11.8 83.1 0 0CL +ATOM 837 COM A 279 185.2 323.1 29.2 0 0CL +ATOM 838 C1 A 279 186.4 323.2 28.6 0 0CL +ATOM 839 B1 A 279 185.1 324.1 29.0 0 0CL +ATOM 840 COM A 280 307.5 410.7 453.9 0 0CL +ATOM 841 C1 A 280 308.2 411.2 455.0 0 0CL +ATOM 842 B1 A 280 306.8 411.4 454.1 0 0CL +ATOM 843 COM A 281 293.2 57.8 241.3 0 0CL +ATOM 844 C1 A 281 294.4 57.6 241.2 0 0CL +ATOM 845 B1 A 281 293.3 57.6 242.3 0 0CL +ATOM 846 COM A 282 312.1 3.2 275.3 0 0CL +ATOM 847 C1 A 282 313.4 3.1 275.1 0 0CL +ATOM 848 B1 A 282 312.0 2.4 274.6 0 0CL +ATOM 849 COM A 283 426.2 218.2 166.2 0 0CL +ATOM 850 C1 A 283 425.1 218.8 165.7 0 0CL +ATOM 851 B1 A 283 426.0 217.4 165.6 0 0CL +ATOM 852 COM A 284 278.2 441.5 286.7 0 0CL +ATOM 853 C1 A 284 277.2 440.6 286.6 0 0CL +ATOM 854 B1 A 284 278.3 441.2 285.7 0 0CL +ATOM 855 COM A 285 137.5 310.4 44.8 0 0CL +ATOM 856 C1 A 285 138.0 311.4 45.5 0 0CL +ATOM 857 B1 A 285 137.5 311.1 44.0 0 0CL +ATOM 858 COM A 286 346.0 231.8 166.6 0 0CL +ATOM 859 C1 A 286 345.6 231.2 165.6 0 0CL +ATOM 860 B1 A 286 345.6 231.0 167.1 0 0CL +ATOM 861 COM A 287 293.5 483.9 163.9 0 0CL +ATOM 862 C1 A 287 293.1 485.1 163.6 0 0CL +ATOM 863 B1 A 287 293.7 483.8 162.9 0 0CL +ATOM 864 COM A 288 59.6 425.0 373.0 0 0CL +ATOM 865 C1 A 288 59.5 426.3 372.5 0 0CL +ATOM 866 B1 A 288 58.6 425.1 373.0 0 0CL +ATOM 867 COM A 289 45.4 354.0 103.1 0 0CL +ATOM 868 C1 A 289 45.7 355.2 102.7 0 0CL +ATOM 869 B1 A 289 44.6 354.1 102.4 0 0CL +ATOM 870 COM A 290 201.5 423.0 375.6 0 0CL +ATOM 871 C1 A 290 200.6 423.9 375.2 0 0CL +ATOM 872 B1 A 290 201.0 423.0 376.5 0 0CL +ATOM 873 COM A 291 450.1 109.5 83.5 0 0CL +ATOM 874 C1 A 291 449.7 109.0 82.4 0 0CL +ATOM 875 B1 A 291 449.2 109.9 83.6 0 0CL +ATOM 876 COM A 292 462.9 467.8 53.9 0 0CL +ATOM 877 C1 A 292 464.1 468.1 53.7 0 0CL +ATOM 878 B1 A 292 463.0 467.1 53.1 0 0CL +ATOM 879 COM A 293 171.1 39.9 250.3 0 0CL +ATOM 880 C1 A 293 172.0 39.4 251.1 0 0CL +ATOM 881 B1 A 293 171.7 39.6 249.5 0 0CL +ATOM 882 COM A 294 201.7 92.6 489.0 0 0CL +ATOM 883 C1 A 294 201.7 92.6 487.7 0 0CL +ATOM 884 B1 A 294 202.7 93.0 488.9 0 0CL +ATOM 885 COM A 295 220.9 285.6 163.4 0 0CL +ATOM 886 C1 A 295 219.7 285.8 163.8 0 0CL +ATOM 887 B1 A 295 221.0 285.0 164.3 0 0CL +ATOM 888 COM A 296 494.2 388.8 477.6 0 0CL +ATOM 889 C1 A 296 495.4 388.3 477.6 0 0CL +ATOM 890 B1 A 296 493.8 387.8 477.5 0 0CL +ATOM 891 COM A 297 305.3 143.4 3.1 0 0CL +ATOM 892 C1 A 297 304.2 144.1 2.9 0 0CL +ATOM 893 B1 A 297 305.7 143.9 2.4 0 0CL +ATOM 894 COM A 298 419.3 335.1 151.1 0 0CL +ATOM 895 C1 A 298 420.6 335.1 151.1 0 0CL +ATOM 896 B1 A 298 419.4 336.2 151.2 0 0CL +ATOM 897 COM A 299 281.6 315.2 252.8 0 0CL +ATOM 898 C1 A 299 280.6 314.6 252.5 0 0CL +ATOM 899 B1 A 299 282.1 314.5 252.2 0 0CL +ATOM 900 COM B 300 296.5 389.1 367.2 0 0CL +ATOM 901 C1 B 300 297.6 389.1 368.1 0 0CL +ATOM 902 A1 B 300 297.0 388.9 367.0 0 0CL +ATOM 903 COM B 301 1.9 333.0 346.1 0 0CL +ATOM 904 C1 B 301 3.1 332.4 346.5 0 0CL +ATOM 905 A1 B 301 2.5 333.3 346.0 0 0CL +ATOM 906 COM B 302 448.4 110.8 84.0 0 0CL +ATOM 907 C1 B 302 448.4 110.5 82.6 0 0CL +ATOM 908 A1 B 302 448.9 110.5 83.7 0 0CL +ATOM 909 COM B 303 350.5 239.5 147.3 0 0CL +ATOM 910 C1 B 303 349.8 240.6 146.7 0 0CL +ATOM 911 A1 B 303 350.0 239.7 147.6 0 0CL +ATOM 912 COM B 304 499.0 362.4 396.7 0 0CL +ATOM 913 C1 B 304 498.3 362.8 395.5 0 0CL +ATOM 914 A1 B 304 498.7 362.0 396.4 0 0CL +ATOM 915 COM B 305 345.7 65.3 72.8 0 0CL +ATOM 916 C1 B 305 346.8 64.9 72.0 0 0CL +ATOM 917 A1 B 305 346.2 65.6 72.8 0 0CL +ATOM 918 COM B 306 158.4 416.0 231.4 0 0CL +ATOM 919 C1 B 306 159.3 416.6 230.4 0 0CL +ATOM 920 A1 B 306 158.7 416.5 231.5 0 0CL +ATOM 921 COM B 307 32.3 298.0 469.8 0 0CL +ATOM 922 C1 B 307 33.5 298.6 470.1 0 0CL +ATOM 923 A1 B 307 32.6 298.3 469.4 0 0CL +ATOM 924 COM B 308 313.3 371.2 495.6 0 0CL +ATOM 925 C1 B 308 314.0 372.4 495.9 0 0CL +ATOM 926 A1 B 308 313.2 371.5 496.1 0 0CL +ATOM 927 COM B 309 182.8 22.6 327.1 0 0CL +ATOM 928 C1 B 309 183.7 21.5 326.9 0 0CL +ATOM 929 A1 B 309 183.0 22.2 327.6 0 0CL +ATOM 930 COM B 310 49.7 136.0 352.1 0 0CL +ATOM 931 C1 B 310 50.1 137.1 352.9 0 0CL +ATOM 932 A1 B 310 49.3 136.3 352.5 0 0CL +ATOM 933 COM B 311 351.6 136.2 417.1 0 0CL +ATOM 934 C1 B 311 351.7 135.2 416.0 0 0CL +ATOM 935 A1 B 311 351.8 135.6 417.2 0 0CL +ATOM 936 COM B 312 493.0 387.0 477.0 0 0CL +ATOM 937 C1 B 312 494.4 386.8 476.7 0 0CL +ATOM 938 A1 B 312 493.4 387.4 477.1 0 0CL +ATOM 939 COM B 313 419.2 93.5 418.4 0 0CL +ATOM 940 C1 B 313 420.3 94.1 419.0 0 0CL +ATOM 941 A1 B 313 419.7 93.5 418.1 0 0CL +ATOM 942 COM B 314 362.1 404.8 145.1 0 0CL +ATOM 943 C1 B 314 361.0 403.9 144.8 0 0CL +ATOM 944 A1 B 314 361.6 405.0 144.7 0 0CL +ATOM 945 COM B 315 339.1 156.8 362.2 0 0CL +ATOM 946 C1 B 315 339.7 158.0 361.8 0 0CL +ATOM 947 A1 B 315 338.8 157.3 362.1 0 0CL +ATOM 948 COM B 316 166.2 465.4 236.2 0 0CL +ATOM 949 C1 B 316 166.2 464.8 234.9 0 0CL +ATOM 950 A1 B 316 165.9 465.6 235.7 0 0CL +ATOM 951 COM B 317 97.1 168.0 407.3 0 0CL +ATOM 952 C1 B 317 97.9 167.3 406.3 0 0CL +ATOM 953 A1 B 317 97.7 168.1 407.3 0 0CL +ATOM 954 COM B 318 361.4 261.8 183.0 0 0CL +ATOM 955 C1 B 318 361.5 262.7 184.0 0 0CL +ATOM 956 A1 B 318 361.0 262.2 183.0 0 0CL +ATOM 957 COM B 319 39.9 86.3 124.3 0 0CL +ATOM 958 C1 B 319 41.3 86.5 124.6 0 0CL +ATOM 959 A1 B 319 40.3 85.9 124.4 0 0CL +ATOM 960 COM B 320 93.4 417.4 421.5 0 0CL +ATOM 961 C1 B 320 92.4 418.4 421.0 0 0CL +ATOM 962 A1 B 320 93.3 418.0 421.7 0 0CL +ATOM 963 COM B 321 471.9 15.6 363.2 0 0CL +ATOM 964 C1 B 321 471.7 15.0 361.9 0 0CL +ATOM 965 A1 B 321 471.4 15.6 363.0 0 0CL +ATOM 966 COM B 322 184.7 325.2 29.3 0 0CL +ATOM 967 C1 B 322 186.1 325.1 29.0 0 0CL +ATOM 968 A1 B 322 184.9 324.7 29.2 0 0CL +ATOM 969 COM B 323 454.0 155.5 209.3 0 0CL +ATOM 970 C1 B 323 454.3 156.4 210.4 0 0CL +ATOM 971 A1 B 323 454.5 155.8 209.4 0 0CL +ATOM 972 COM B 324 379.6 381.1 113.9 0 0CL +ATOM 973 C1 B 324 379.2 381.6 115.2 0 0CL +ATOM 974 A1 B 324 380.0 381.3 114.4 0 0CL +ATOM 975 COM B 325 27.5 35.6 53.1 0 0CL +ATOM 976 C1 B 325 28.2 36.8 52.9 0 0CL +ATOM 977 A1 B 325 28.0 35.7 53.4 0 0CL +ATOM 978 COM B 326 14.2 331.8 321.5 0 0CL +ATOM 979 C1 B 326 13.2 331.7 322.5 0 0CL +ATOM 980 A1 B 326 13.6 331.8 321.4 0 0CL +ATOM 981 COM B 327 186.2 206.8 395.3 0 0CL +ATOM 982 C1 B 327 185.0 206.8 396.1 0 0CL +ATOM 983 A1 B 327 186.2 206.6 395.8 0 0CL +ATOM 984 COM B 328 298.2 427.0 453.7 0 0CL +ATOM 985 C1 B 328 297.7 426.4 452.5 0 0CL +ATOM 986 A1 B 328 298.3 427.3 453.1 0 0CL +ATOM 987 COM B 329 135.8 345.4 438.7 0 0CL +ATOM 988 C1 B 329 135.5 346.1 437.5 0 0CL +ATOM 989 A1 B 329 135.5 345.1 438.2 0 0CL +ATOM 990 COM B 330 162.5 477.8 496.9 0 0CL +ATOM 991 C1 B 330 162.0 479.1 496.8 0 0CL +ATOM 992 A1 B 330 162.6 478.2 496.4 0 0CL +ATOM 993 COM B 331 442.0 139.0 261.1 0 0CL +ATOM 994 C1 B 331 442.2 137.6 261.2 0 0CL +ATOM 995 A1 B 331 441.8 138.6 260.7 0 0CL +ATOM 996 COM B 332 258.2 396.6 462.1 0 0CL +ATOM 997 C1 B 332 258.4 397.5 461.0 0 0CL +ATOM 998 A1 B 332 258.4 397.2 462.1 0 0CL +ATOM 999 COM B 333 293.9 199.4 359.6 0 0CL +ATOM 1000 C1 B 333 292.5 199.8 359.2 0 0CL +ATOM 1001 A1 B 333 293.7 200.0 359.4 0 0CL +ATOM 1002 COM B 334 355.4 4.2 165.4 0 0CL +ATOM 1003 C1 B 334 355.4 3.8 166.8 0 0CL +ATOM 1004 A1 B 334 355.1 4.5 165.8 0 0CL +ATOM 1005 COM B 335 157.2 207.8 77.9 0 0CL +ATOM 1006 C1 B 335 157.9 208.0 76.7 0 0CL +ATOM 1007 A1 B 335 157.8 207.7 77.8 0 0CL +ATOM 1008 COM B 336 478.7 175.5 104.1 0 0CL +ATOM 1009 C1 B 336 478.4 176.7 104.7 0 0CL +ATOM 1010 A1 B 336 478.9 175.6 104.6 0 0CL +ATOM 1011 COM B 337 380.1 77.8 10.5 0 0CL +ATOM 1012 C1 B 337 380.5 79.2 10.6 0 0CL +ATOM 1013 A1 B 337 380.4 78.1 10.1 0 0CL +ATOM 1014 COM B 338 224.5 300.8 203.4 0 0CL +ATOM 1015 C1 B 338 223.3 300.0 203.0 0 0CL +ATOM 1016 A1 B 338 224.3 300.7 202.8 0 0CL +ATOM 1017 COM B 339 49.4 222.6 271.7 0 0CL +ATOM 1018 C1 B 339 49.7 222.5 273.1 0 0CL +ATOM 1019 A1 B 339 49.4 223.1 272.0 0 0CL +ATOM 1020 COM B 340 154.2 338.0 464.5 0 0CL +ATOM 1021 C1 B 340 154.5 338.0 463.1 0 0CL +ATOM 1022 A1 B 340 153.8 338.1 464.0 0 0CL +ATOM 1023 COM B 341 495.4 194.3 133.7 0 0CL +ATOM 1024 C1 B 341 494.7 193.3 133.0 0 0CL +ATOM 1025 A1 B 341 495.6 194.0 133.3 0 0CL +ATOM 1026 COM B 342 347.0 216.6 108.0 0 0CL +ATOM 1027 C1 B 342 346.4 217.7 107.3 0 0CL +ATOM 1028 A1 B 342 346.7 216.6 107.4 0 0CL +ATOM 1029 COM B 343 181.8 486.2 372.7 0 0CL +ATOM 1030 C1 B 343 181.7 486.6 371.4 0 0CL +ATOM 1031 A1 B 343 181.6 485.9 372.3 0 0CL +ATOM 1032 COM B 344 356.6 93.4 339.7 0 0CL +ATOM 1033 C1 B 344 356.3 93.4 341.1 0 0CL +ATOM 1034 A1 B 344 356.7 92.9 340.1 0 0CL +ATOM 1035 COM B 345 445.7 367.9 71.6 0 0CL +ATOM 1036 C1 B 345 446.8 367.7 70.7 0 0CL +ATOM 1037 A1 B 345 445.6 367.8 71.0 0 0CL +ATOM 1038 COM B 346 4.9 170.5 207.5 0 0CL +ATOM 1039 C1 B 346 3.7 170.9 208.1 0 0CL +ATOM 1040 A1 B 346 4.6 170.2 207.9 0 0CL +ATOM 1041 COM B 347 437.4 195.8 377.4 0 0CL +ATOM 1042 C1 B 347 437.1 196.3 378.7 0 0CL +ATOM 1043 A1 B 347 437.0 195.5 377.8 0 0CL +ATOM 1044 COM B 348 48.8 399.2 318.3 0 0CL +ATOM 1045 C1 B 348 49.1 400.5 317.6 0 0CL +ATOM 1046 A1 B 348 48.8 399.7 318.6 0 0CL +ATOM 1047 COM B 349 494.7 11.3 82.7 0 0CL +ATOM 1048 C1 B 349 494.0 10.7 83.8 0 0CL +ATOM 1049 A1 B 349 494.2 11.5 83.0 0 0CL +ATOM 1050 COM B 350 175.0 200.1 134.7 0 0CL +ATOM 1051 C1 B 350 175.9 200.5 133.6 0 0CL +ATOM 1052 A1 B 350 174.9 200.0 134.1 0 0CL +ATOM 1053 COM B 351 300.9 493.1 395.7 0 0CL +ATOM 1054 C1 B 351 299.5 492.8 396.0 0 0CL +ATOM 1055 A1 B 351 300.7 493.1 396.3 0 0CL +ATOM 1056 COM B 352 139.9 438.9 323.5 0 0CL +ATOM 1057 C1 B 352 139.5 439.7 322.4 0 0CL +ATOM 1058 A1 B 352 140.3 439.0 323.1 0 0CL +ATOM 1059 COM B 353 158.8 229.2 83.3 0 0CL +ATOM 1060 C1 B 353 157.5 228.9 83.9 0 0CL +ATOM 1061 A1 B 353 158.7 228.8 83.8 0 0CL +ATOM 1062 COM B 354 407.6 182.5 325.6 0 0CL +ATOM 1063 C1 B 354 407.9 183.7 324.8 0 0CL +ATOM 1064 A1 B 354 408.1 182.9 325.7 0 0CL +ATOM 1065 COM B 355 7.2 488.7 249.5 0 0CL +ATOM 1066 C1 B 355 6.3 489.3 248.5 0 0CL +ATOM 1067 A1 B 355 7.4 488.9 248.9 0 0CL +ATOM 1068 COM B 356 151.3 104.8 6.1 0 0CL +ATOM 1069 C1 B 356 151.9 105.8 7.0 0 0CL +ATOM 1070 A1 B 356 151.9 104.9 6.1 0 0CL +ATOM 1071 COM B 357 221.7 284.7 165.3 0 0CL +ATOM 1072 C1 B 357 220.4 285.3 165.5 0 0CL +ATOM 1073 A1 B 357 221.3 285.0 164.8 0 0CL +ATOM 1074 COM B 358 425.1 379.6 16.6 0 0CL +ATOM 1075 C1 B 358 423.9 379.2 17.2 0 0CL +ATOM 1076 A1 B 358 424.9 379.0 16.6 0 0CL +ATOM 1077 COM B 359 348.6 243.1 340.0 0 0CL +ATOM 1078 C1 B 359 349.1 244.2 339.1 0 0CL +ATOM 1079 A1 B 359 348.7 243.7 340.2 0 0CL +ATOM 1080 COM B 360 453.9 223.8 253.7 0 0CL +ATOM 1081 C1 B 360 452.7 223.6 254.5 0 0CL +ATOM 1082 A1 B 360 453.8 223.2 254.0 0 0CL +ATOM 1083 COM B 361 26.8 452.2 478.0 0 0CL +ATOM 1084 C1 B 361 27.9 453.1 477.6 0 0CL +ATOM 1085 A1 B 361 26.7 452.8 477.8 0 0CL +ATOM 1086 COM B 362 185.0 190.9 423.3 0 0CL +ATOM 1087 C1 B 362 183.9 190.8 422.5 0 0CL +ATOM 1088 A1 B 362 184.5 190.9 423.6 0 0CL +ATOM 1089 COM B 363 413.7 53.3 125.6 0 0CL +ATOM 1090 C1 B 363 415.0 53.9 125.7 0 0CL +ATOM 1091 A1 B 363 414.2 53.1 125.4 0 0CL +ATOM 1092 COM B 364 35.8 5.7 136.6 0 0CL +ATOM 1093 C1 B 364 36.3 6.6 137.6 0 0CL +ATOM 1094 A1 B 364 35.6 6.3 136.6 0 0CL +ATOM 1095 COM B 365 88.6 263.4 251.8 0 0CL +ATOM 1096 C1 B 365 88.9 264.5 252.7 0 0CL +ATOM 1097 A1 B 365 88.6 264.0 251.7 0 0CL +ATOM 1098 COM B 366 462.5 466.6 52.2 0 0CL +ATOM 1099 C1 B 366 463.7 467.3 51.9 0 0CL +ATOM 1100 A1 B 366 462.7 466.9 52.6 0 0CL +ATOM 1101 COM B 367 326.6 318.1 46.7 0 0CL +ATOM 1102 C1 B 367 326.1 319.2 45.9 0 0CL +ATOM 1103 A1 B 367 326.3 318.0 46.1 0 0CL +ATOM 1104 COM B 368 137.1 311.5 42.9 0 0CL +ATOM 1105 C1 B 368 137.2 312.4 44.0 0 0CL +ATOM 1106 A1 B 368 137.2 311.3 43.5 0 0CL +ATOM 1107 COM B 369 104.2 38.7 151.3 0 0CL +ATOM 1108 C1 B 369 104.8 39.5 152.3 0 0CL +ATOM 1109 A1 B 369 104.0 38.8 151.8 0 0CL +ATOM 1110 COM B 370 488.0 168.1 377.9 0 0CL +ATOM 1111 C1 B 370 488.6 169.3 378.5 0 0CL +ATOM 1112 A1 B 370 488.4 168.4 377.6 0 0CL +ATOM 1113 COM B 371 347.6 470.7 258.6 0 0CL +ATOM 1114 C1 B 371 348.8 470.6 259.3 0 0CL +ATOM 1115 A1 B 371 348.0 471.2 258.6 0 0CL +ATOM 1116 COM B 372 189.0 420.7 46.0 0 0CL +ATOM 1117 C1 B 372 188.6 419.4 46.4 0 0CL +ATOM 1118 A1 B 372 188.4 420.5 46.0 0 0CL +ATOM 1119 COM B 373 426.0 216.2 165.3 0 0CL +ATOM 1120 C1 B 373 424.7 217.0 165.1 0 0CL +ATOM 1121 A1 B 373 425.9 216.8 165.5 0 0CL +ATOM 1122 COM B 374 124.9 80.5 486.0 0 0CL +ATOM 1123 C1 B 374 126.1 79.8 485.7 0 0CL +ATOM 1124 A1 B 374 125.4 80.8 486.0 0 0CL +ATOM 1125 COM B 375 273.2 3.5 36.2 0 0CL +ATOM 1126 C1 B 375 273.6 2.2 36.4 0 0CL +ATOM 1127 A1 B 375 273.8 3.3 36.0 0 0CL +ATOM 1128 COM B 376 417.0 69.8 64.7 0 0CL +ATOM 1129 C1 B 376 418.1 69.1 65.2 0 0CL +ATOM 1130 A1 B 376 417.0 69.3 65.0 0 0CL +ATOM 1131 COM B 377 468.2 347.9 428.3 0 0CL +ATOM 1132 C1 B 377 467.5 346.8 427.7 0 0CL +ATOM 1133 A1 B 377 467.7 347.8 428.5 0 0CL +ATOM 1134 COM B 378 242.7 96.8 141.2 0 0CL +ATOM 1135 C1 B 378 243.6 97.5 142.0 0 0CL +ATOM 1136 A1 B 378 242.9 96.6 141.7 0 0CL +ATOM 1137 COM B 379 285.4 163.3 135.8 0 0CL +ATOM 1138 C1 B 379 286.6 164.0 136.4 0 0CL +ATOM 1139 A1 B 379 286.0 163.4 135.5 0 0CL +ATOM 1140 COM B 380 438.3 334.1 225.7 0 0CL +ATOM 1141 C1 B 380 437.8 334.2 227.0 0 0CL +ATOM 1142 A1 B 380 438.0 334.5 225.8 0 0CL +ATOM 1143 COM B 381 273.8 238.4 458.2 0 0CL +ATOM 1144 C1 B 381 275.1 237.7 458.2 0 0CL +ATOM 1145 A1 B 381 274.3 238.7 458.2 0 0CL +ATOM 1146 COM B 382 283.5 100.7 170.3 0 0CL +ATOM 1147 C1 B 382 283.8 102.0 169.7 0 0CL +ATOM 1148 A1 B 382 283.1 101.2 170.3 0 0CL +ATOM 1149 COM B 383 298.0 275.1 93.3 0 0CL +ATOM 1150 C1 B 383 298.7 273.9 93.6 0 0CL +ATOM 1151 A1 B 383 298.2 274.9 93.9 0 0CL +ATOM 1152 COM B 384 182.9 89.6 497.8 0 0CL +ATOM 1153 C1 B 384 183.8 88.5 497.3 0 0CL +ATOM 1154 A1 B 384 183.5 89.6 497.7 0 0CL +ATOM 1155 COM B 385 203.8 93.0 489.2 0 0CL +ATOM 1156 C1 B 385 203.6 92.6 487.9 0 0CL +ATOM 1157 A1 B 385 203.3 92.9 489.0 0 0CL +ATOM 1158 COM B 386 327.4 157.9 125.5 0 0CL +ATOM 1159 C1 B 386 327.8 159.2 125.1 0 0CL +ATOM 1160 A1 B 386 327.9 157.9 125.2 0 0CL +ATOM 1161 COM B 387 21.2 484.8 339.3 0 0CL +ATOM 1162 C1 B 387 20.1 483.9 339.2 0 0CL +ATOM 1163 A1 B 387 21.2 484.3 339.0 0 0CL +ATOM 1164 COM B 388 280.0 487.3 403.9 0 0CL +ATOM 1165 C1 B 388 281.4 486.8 404.2 0 0CL +ATOM 1166 A1 B 388 280.5 487.6 403.9 0 0CL +ATOM 1167 COM B 389 44.4 308.4 361.2 0 0CL +ATOM 1168 C1 B 389 45.7 309.1 361.2 0 0CL +ATOM 1169 A1 B 389 44.5 309.0 361.3 0 0CL +ATOM 1170 COM B 390 366.7 122.3 381.1 0 0CL +ATOM 1171 C1 B 390 367.9 122.2 381.9 0 0CL +ATOM 1172 A1 B 390 366.7 122.1 381.7 0 0CL +ATOM 1173 COM B 391 431.9 17.4 146.8 0 0CL +ATOM 1174 C1 B 391 430.7 18.2 147.0 0 0CL +ATOM 1175 A1 B 391 431.3 17.3 146.6 0 0CL +ATOM 1176 COM B 392 262.7 320.4 42.6 0 0CL +ATOM 1177 C1 B 392 263.2 319.2 42.2 0 0CL +ATOM 1178 A1 B 392 262.9 320.0 43.0 0 0CL +ATOM 1179 COM B 393 474.5 409.5 243.9 0 0CL +ATOM 1180 C1 B 393 475.9 409.9 243.7 0 0CL +ATOM 1181 A1 B 393 474.8 410.0 244.1 0 0CL +ATOM 1182 COM B 394 394.5 200.4 363.4 0 0CL +ATOM 1183 C1 B 394 393.1 200.6 363.2 0 0CL +ATOM 1184 A1 B 394 394.1 200.6 363.8 0 0CL +ATOM 1185 COM B 395 361.9 246.8 102.3 0 0CL +ATOM 1186 C1 B 395 362.8 246.3 101.3 0 0CL +ATOM 1187 A1 B 395 362.5 246.7 102.4 0 0CL +ATOM 1188 COM B 396 63.8 298.3 56.0 0 0CL +ATOM 1189 C1 B 396 64.3 298.0 54.7 0 0CL +ATOM 1190 A1 B 396 64.4 298.2 55.9 0 0CL +ATOM 1191 COM B 397 471.5 327.8 389.2 0 0CL +ATOM 1192 C1 B 397 470.5 326.9 389.6 0 0CL +ATOM 1193 A1 B 397 471.4 327.7 389.8 0 0CL +ATOM 1194 COM B 398 126.5 484.8 64.8 0 0CL +ATOM 1195 C1 B 398 125.7 486.0 65.2 0 0CL +ATOM 1196 A1 B 398 125.9 484.8 64.9 0 0CL +ATOM 1197 COM B 399 197.1 49.7 324.7 0 0CL +ATOM 1198 C1 B 399 196.4 48.8 323.8 0 0CL +ATOM 1199 A1 B 399 197.4 49.2 324.4 0 0CL +ATOM 1200 COM B 400 190.4 173.7 269.8 0 0CL +ATOM 1201 C1 B 400 190.1 172.3 269.3 0 0CL +ATOM 1202 A1 B 400 190.5 173.2 270.1 0 0CL +ATOM 1203 COM B 401 433.5 84.8 292.3 0 0CL +ATOM 1204 C1 B 401 432.9 86.0 291.8 0 0CL +ATOM 1205 A1 B 401 433.2 85.2 292.7 0 0CL +ATOM 1206 COM B 402 293.0 57.1 243.4 0 0CL +ATOM 1207 C1 B 402 294.2 56.7 242.8 0 0CL +ATOM 1208 A1 B 402 293.1 57.2 242.8 0 0CL +ATOM 1209 COM B 403 418.1 381.8 454.2 0 0CL +ATOM 1210 C1 B 403 418.5 382.7 455.2 0 0CL +ATOM 1211 A1 B 403 418.6 382.0 454.2 0 0CL +ATOM 1212 COM B 404 201.0 422.9 377.7 0 0CL +ATOM 1213 C1 B 404 200.3 424.1 377.1 0 0CL +ATOM 1214 A1 B 404 201.1 423.1 377.1 0 0CL +ATOM 1215 COM B 405 236.6 325.5 329.3 0 0CL +ATOM 1216 C1 B 405 237.2 324.5 328.4 0 0CL +ATOM 1217 A1 B 405 236.4 324.9 329.3 0 0CL +ATOM 1218 COM B 406 279.4 121.2 288.6 0 0CL +ATOM 1219 C1 B 406 279.2 122.6 288.9 0 0CL +ATOM 1220 A1 B 406 279.2 121.4 289.2 0 0CL +ATOM 1221 COM B 407 33.4 298.9 272.2 0 0CL +ATOM 1222 C1 B 407 34.4 299.2 273.2 0 0CL +ATOM 1223 A1 B 407 33.6 298.5 272.6 0 0CL +ATOM 1224 COM B 408 136.7 85.0 301.9 0 0CL +ATOM 1225 C1 B 408 136.3 86.0 302.8 0 0CL +ATOM 1226 A1 B 408 136.4 84.9 302.4 0 0CL +ATOM 1227 COM B 409 181.0 428.9 116.4 0 0CL +ATOM 1228 C1 B 409 180.3 428.1 117.3 0 0CL +ATOM 1229 A1 B 409 180.4 429.1 116.6 0 0CL +ATOM 1230 COM B 410 274.8 84.5 148.0 0 0CL +ATOM 1231 C1 B 410 275.0 85.9 148.2 0 0CL +ATOM 1232 A1 B 410 274.6 84.8 148.5 0 0CL +ATOM 1233 COM B 411 155.1 390.4 50.9 0 0CL +ATOM 1234 C1 B 411 154.5 391.6 51.4 0 0CL +ATOM 1235 A1 B 411 155.4 390.9 51.1 0 0CL +ATOM 1236 COM B 412 134.1 89.3 68.6 0 0CL +ATOM 1237 C1 B 412 134.4 90.7 68.8 0 0CL +ATOM 1238 A1 B 412 134.5 89.5 69.0 0 0CL +ATOM 1239 COM B 413 212.0 284.6 295.6 0 0CL +ATOM 1240 C1 B 413 211.5 285.6 294.7 0 0CL +ATOM 1241 A1 B 413 212.2 284.6 295.0 0 0CL +ATOM 1242 COM B 414 29.4 357.8 485.5 0 0CL +ATOM 1243 C1 B 414 29.4 359.1 484.8 0 0CL +ATOM 1244 A1 B 414 28.9 358.2 485.4 0 0CL +ATOM 1245 COM B 415 95.4 397.2 65.5 0 0CL +ATOM 1246 C1 B 415 96.7 397.4 65.1 0 0CL +ATOM 1247 A1 B 415 95.5 397.4 65.0 0 0CL +ATOM 1248 COM B 416 137.4 87.8 342.8 0 0CL +ATOM 1249 C1 B 416 137.3 89.2 342.9 0 0CL +ATOM 1250 A1 B 416 137.9 88.1 342.7 0 0CL +ATOM 1251 COM B 417 127.3 301.9 429.1 0 0CL +ATOM 1252 C1 B 417 126.1 302.5 428.7 0 0CL +ATOM 1253 A1 B 417 126.8 301.7 429.2 0 0CL +ATOM 1254 COM B 418 280.9 384.8 414.0 0 0CL +ATOM 1255 C1 B 418 281.4 384.5 415.3 0 0CL +ATOM 1256 A1 B 418 281.1 385.3 414.4 0 0CL +ATOM 1257 COM B 419 265.3 479.0 80.6 0 0CL +ATOM 1258 C1 B 419 266.5 479.7 80.5 0 0CL +ATOM 1259 A1 B 419 265.4 479.5 80.9 0 0CL +ATOM 1260 COM B 420 347.1 399.8 203.8 0 0CL +ATOM 1261 C1 B 420 346.3 398.8 204.4 0 0CL +ATOM 1262 A1 B 420 347.3 399.4 204.2 0 0CL +ATOM 1263 COM B 421 334.3 211.0 366.3 0 0CL +ATOM 1264 C1 B 421 335.5 210.5 365.8 0 0CL +ATOM 1265 A1 B 421 334.8 210.9 366.6 0 0CL +ATOM 1266 COM B 422 148.4 415.7 398.3 0 0CL +ATOM 1267 C1 B 422 147.5 414.9 397.5 0 0CL +ATOM 1268 A1 B 422 148.6 415.2 398.0 0 0CL +ATOM 1269 COM B 423 7.6 486.0 464.9 0 0CL +ATOM 1270 C1 B 423 8.2 487.1 465.7 0 0CL +ATOM 1271 A1 B 423 8.2 486.2 464.8 0 0CL +ATOM 1272 COM B 424 220.8 125.1 383.3 0 0CL +ATOM 1273 C1 B 424 219.5 124.6 383.4 0 0CL +ATOM 1274 A1 B 424 220.5 125.3 383.8 0 0CL +ATOM 1275 COM B 425 51.2 51.0 462.6 0 0CL +ATOM 1276 C1 B 425 49.8 51.1 462.3 0 0CL +ATOM 1277 A1 B 425 50.9 51.5 462.6 0 0CL +ATOM 1278 COM B 426 123.7 150.9 348.1 0 0CL +ATOM 1279 C1 B 426 124.6 151.9 347.7 0 0CL +ATOM 1280 A1 B 426 124.0 151.2 348.5 0 0CL +ATOM 1281 COM B 427 491.5 286.6 461.2 0 0CL +ATOM 1282 C1 B 427 491.1 286.9 462.6 0 0CL +ATOM 1283 A1 B 427 491.0 286.3 461.5 0 0CL +ATOM 1284 COM B 428 92.6 409.4 493.0 0 0CL +ATOM 1285 C1 B 428 94.0 409.2 492.8 0 0CL +ATOM 1286 A1 B 428 92.9 409.2 493.5 0 0CL +ATOM 1287 COM B 429 300.9 264.2 405.2 0 0CL +ATOM 1288 C1 B 429 301.4 262.9 404.8 0 0CL +ATOM 1289 A1 B 429 301.2 263.8 405.6 0 0CL +ATOM 1290 COM B 430 303.2 180.4 58.2 0 0CL +ATOM 1291 C1 B 430 303.1 180.2 56.8 0 0CL +ATOM 1292 A1 B 430 303.3 179.8 57.9 0 0CL +ATOM 1293 COM B 431 160.6 385.1 56.8 0 0CL +ATOM 1294 C1 B 431 161.9 384.7 56.6 0 0CL +ATOM 1295 A1 B 431 160.7 384.6 56.7 0 0CL +ATOM 1296 COM B 432 174.1 140.2 283.9 0 0CL +ATOM 1297 C1 B 432 173.4 141.5 284.1 0 0CL +ATOM 1298 A1 B 432 174.3 140.7 284.3 0 0CL +ATOM 1299 COM B 433 216.4 337.4 65.6 0 0CL +ATOM 1300 C1 B 433 217.4 336.5 66.1 0 0CL +ATOM 1301 A1 B 433 216.3 336.9 65.9 0 0CL +ATOM 1302 COM B 434 325.9 197.5 331.0 0 0CL +ATOM 1303 C1 B 434 325.6 198.6 331.9 0 0CL +ATOM 1304 A1 B 434 325.5 197.4 331.5 0 0CL +ATOM 1305 COM B 435 412.0 193.6 203.0 0 0CL +ATOM 1306 C1 B 435 411.7 192.6 201.9 0 0CL +ATOM 1307 A1 B 435 412.4 193.3 202.7 0 0CL +ATOM 1308 COM B 436 277.7 365.6 266.4 0 0CL +ATOM 1309 C1 B 436 278.1 364.8 267.5 0 0CL +ATOM 1310 A1 B 436 277.5 365.7 266.9 0 0CL +ATOM 1311 COM B 437 467.8 259.3 151.4 0 0CL +ATOM 1312 C1 B 437 468.0 260.5 150.5 0 0CL +ATOM 1313 A1 B 437 468.4 259.6 151.2 0 0CL +ATOM 1314 COM B 438 268.4 470.0 388.2 0 0CL +ATOM 1315 C1 B 438 267.7 470.2 386.9 0 0CL +ATOM 1316 A1 B 438 268.4 470.5 387.8 0 0CL +ATOM 1317 COM B 439 205.3 315.4 428.7 0 0CL +ATOM 1318 C1 B 439 204.1 315.4 429.5 0 0CL +ATOM 1319 A1 B 439 205.3 315.3 429.3 0 0CL +ATOM 1320 COM B 440 396.1 226.0 155.1 0 0CL +ATOM 1321 C1 B 440 395.2 225.3 154.2 0 0CL +ATOM 1322 A1 B 440 396.0 226.2 154.5 0 0CL +ATOM 1323 COM B 441 60.2 80.8 484.3 0 0CL +ATOM 1324 C1 B 441 61.5 80.2 484.4 0 0CL +ATOM 1325 A1 B 441 60.4 80.3 484.0 0 0CL +ATOM 1326 COM B 442 74.8 191.6 252.5 0 0CL +ATOM 1327 C1 B 442 75.1 190.7 253.5 0 0CL +ATOM 1328 A1 B 442 75.1 191.0 252.4 0 0CL +ATOM 1329 COM B 443 241.1 471.3 375.1 0 0CL +ATOM 1330 C1 B 443 239.8 471.1 375.8 0 0CL +ATOM 1331 A1 B 443 240.6 471.7 375.0 0 0CL +ATOM 1332 COM B 444 293.9 483.2 161.9 0 0CL +ATOM 1333 C1 B 444 293.0 484.3 161.9 0 0CL +ATOM 1334 A1 B 444 293.7 483.4 162.4 0 0CL +ATOM 1335 COM B 445 35.2 87.5 361.5 0 0CL +ATOM 1336 C1 B 445 34.1 88.2 361.0 0 0CL +ATOM 1337 A1 B 445 34.6 87.2 361.4 0 0CL +ATOM 1338 COM B 446 419.4 138.9 165.9 0 0CL +ATOM 1339 C1 B 446 418.3 139.6 165.3 0 0CL +ATOM 1340 A1 B 446 418.9 138.6 165.8 0 0CL +ATOM 1341 COM B 447 18.2 172.7 489.0 0 0CL +ATOM 1342 C1 B 447 17.0 172.4 488.2 0 0CL +ATOM 1343 A1 B 447 18.0 173.1 488.6 0 0CL +ATOM 1344 COM B 448 350.3 185.8 80.2 0 0CL +ATOM 1345 C1 B 448 351.1 184.6 80.4 0 0CL +ATOM 1346 A1 B 448 350.8 185.6 79.8 0 0CL +ATOM 1347 COM B 449 305.6 411.8 454.2 0 0CL +ATOM 1348 C1 B 449 306.4 411.9 455.4 0 0CL +ATOM 1349 A1 B 449 306.2 411.5 454.3 0 0CL diff --git a/het3mer/PDB/200000.pdb b/het3mer/PDB/200000.pdb new file mode 100644 index 00000000..b21281ea --- /dev/null +++ b/het3mer/PDB/200000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 200000 CREATED Thu May 29 13:09:45 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 130.8 90.6 84.6 0 0CL +ATOM 1 A1 C 0 129.8 91.0 86.6 0 0CL +ATOM 2 B1 C 0 129.3 90.8 86.0 0 0CL +ATOM 3 COM C 1 212.0 134.0 179.0 0 0CL +ATOM 4 A1 C 1 210.7 132.7 180.2 0 0CL +ATOM 5 B1 C 1 210.7 132.6 179.5 0 0CL +ATOM 6 COM C 2 301.1 33.1 385.5 0 0CL +ATOM 7 A1 C 2 302.0 31.1 385.3 0 0CL +ATOM 8 B1 C 2 302.4 31.6 385.1 0 0CL +ATOM 9 COM C 3 79.2 280.3 147.9 0 0CL +ATOM 10 A1 C 3 81.3 280.8 148.2 0 0CL +ATOM 11 B1 C 3 81.0 280.3 148.7 0 0CL +ATOM 12 COM C 4 367.1 476.7 30.2 0 0CL +ATOM 13 A1 C 4 365.0 477.4 30.3 0 0CL +ATOM 14 B1 C 4 365.5 477.8 29.9 0 0CL +ATOM 15 COM C 5 283.3 493.8 492.2 0 0CL +ATOM 16 A1 C 5 281.4 492.8 491.7 0 0CL +ATOM 17 B1 C 5 281.5 493.0 492.4 0 0CL +ATOM 18 COM C 6 133.3 82.0 196.1 0 0CL +ATOM 19 A1 C 6 132.0 80.3 195.3 0 0CL +ATOM 20 B1 C 6 131.7 80.9 195.7 0 0CL +ATOM 21 COM C 7 288.9 487.7 50.4 0 0CL +ATOM 22 A1 C 7 289.4 486.4 52.1 0 0CL +ATOM 23 B1 C 7 289.3 487.1 52.3 0 0CL +ATOM 24 COM C 8 349.3 452.4 469.3 0 0CL +ATOM 25 A1 C 8 350.8 451.4 467.9 0 0CL +ATOM 26 B1 C 8 350.8 452.1 467.9 0 0CL +ATOM 27 COM C 9 319.1 190.5 264.3 0 0CL +ATOM 28 A1 C 9 321.2 190.2 264.0 0 0CL +ATOM 29 B1 C 9 321.0 190.7 264.5 0 0CL +ATOM 30 COM C 10 497.4 426.0 376.4 0 0CL +ATOM 31 A1 C 10 496.3 424.5 375.3 0 0CL +ATOM 32 B1 C 10 496.7 424.9 374.9 0 0CL +ATOM 33 COM C 11 35.8 387.8 93.2 0 0CL +ATOM 34 A1 C 11 34.4 386.2 93.2 0 0CL +ATOM 35 B1 C 11 34.2 386.8 93.5 0 0CL +ATOM 36 COM C 12 412.9 461.0 10.1 0 0CL +ATOM 37 A1 C 12 413.2 459.5 8.6 0 0CL +ATOM 38 B1 C 12 413.4 459.3 9.3 0 0CL +ATOM 39 COM C 13 270.5 299.1 265.1 0 0CL +ATOM 40 A1 C 13 268.3 299.5 265.4 0 0CL +ATOM 41 B1 C 13 268.8 300.1 265.6 0 0CL +ATOM 42 COM C 14 407.8 63.5 322.0 0 0CL +ATOM 43 A1 C 14 408.5 61.4 322.0 0 0CL +ATOM 44 B1 C 14 409.0 61.9 321.9 0 0CL +ATOM 45 COM C 15 95.3 33.8 120.1 0 0CL +ATOM 46 A1 C 15 95.5 31.9 118.9 0 0CL +ATOM 47 B1 C 15 96.0 32.5 118.7 0 0CL +ATOM 48 COM C 16 477.8 415.6 277.7 0 0CL +ATOM 49 A1 C 16 479.1 415.4 279.5 0 0CL +ATOM 50 B1 C 16 479.2 414.9 279.0 0 0CL +ATOM 51 COM C 17 116.1 340.2 107.9 0 0CL +ATOM 52 A1 C 17 115.9 339.1 109.8 0 0CL +ATOM 53 B1 C 17 115.4 339.0 109.3 0 0CL +ATOM 54 COM C 18 248.8 252.9 273.7 0 0CL +ATOM 55 A1 C 18 249.5 250.8 274.2 0 0CL +ATOM 56 B1 C 18 248.8 251.0 274.4 0 0CL +ATOM 57 COM C 19 144.7 5.3 179.6 0 0CL +ATOM 58 A1 C 19 142.8 6.4 179.2 0 0CL +ATOM 59 B1 C 19 143.4 6.7 179.6 0 0CL +ATOM 60 COM C 20 409.7 79.3 482.2 0 0CL +ATOM 61 A1 C 20 408.4 80.2 483.8 0 0CL +ATOM 62 B1 C 20 408.2 79.6 483.5 0 0CL +ATOM 63 COM C 21 298.6 202.3 415.2 0 0CL +ATOM 64 A1 C 21 300.8 202.1 415.4 0 0CL +ATOM 65 B1 C 21 300.5 202.5 414.8 0 0CL +ATOM 66 COM C 22 343.7 147.3 448.2 0 0CL +ATOM 67 A1 C 22 343.9 146.3 446.2 0 0CL +ATOM 68 B1 C 22 343.9 145.9 446.8 0 0CL +ATOM 69 COM C 23 235.4 465.7 164.0 0 0CL +ATOM 70 A1 C 23 234.0 465.3 165.6 0 0CL +ATOM 71 B1 C 23 234.3 466.0 165.6 0 0CL +ATOM 72 COM C 24 40.1 408.7 167.5 0 0CL +ATOM 73 A1 C 24 38.6 408.6 165.9 0 0CL +ATOM 74 B1 C 24 38.9 408.0 166.1 0 0CL +ATOM 75 COM C 25 396.6 155.0 134.2 0 0CL +ATOM 76 A1 C 25 395.5 153.1 134.4 0 0CL +ATOM 77 B1 C 25 396.2 153.1 134.6 0 0CL +ATOM 78 COM C 26 475.4 335.2 437.9 0 0CL +ATOM 79 A1 C 26 473.3 335.6 438.2 0 0CL +ATOM 80 B1 C 26 473.6 335.1 438.7 0 0CL +ATOM 81 COM C 27 424.5 378.4 244.9 0 0CL +ATOM 82 A1 C 27 423.6 377.2 246.5 0 0CL +ATOM 83 B1 C 27 423.5 377.0 245.8 0 0CL +ATOM 84 COM C 28 224.2 83.1 214.4 0 0CL +ATOM 85 A1 C 28 225.3 85.0 214.1 0 0CL +ATOM 86 B1 C 28 224.6 85.0 214.4 0 0CL +ATOM 87 COM C 29 112.8 173.6 434.5 0 0CL +ATOM 88 A1 C 29 112.3 175.1 436.0 0 0CL +ATOM 89 B1 C 29 111.8 174.5 435.9 0 0CL +ATOM 90 COM C 30 223.5 338.2 312.6 0 0CL +ATOM 91 A1 C 30 222.8 338.5 314.7 0 0CL +ATOM 92 B1 C 30 222.3 338.5 314.2 0 0CL +ATOM 93 COM C 31 474.4 468.0 95.6 0 0CL +ATOM 94 A1 C 31 476.1 468.7 96.8 0 0CL +ATOM 95 B1 C 31 475.7 468.1 97.1 0 0CL +ATOM 96 COM C 32 442.9 232.1 361.8 0 0CL +ATOM 97 A1 C 32 443.7 230.2 361.0 0 0CL +ATOM 98 B1 C 32 443.4 230.2 361.6 0 0CL +ATOM 99 COM C 33 480.3 487.9 185.1 0 0CL +ATOM 100 A1 C 33 479.6 486.0 186.0 0 0CL +ATOM 101 B1 C 33 479.7 486.0 185.2 0 0CL +ATOM 102 COM C 34 382.9 65.6 468.1 0 0CL +ATOM 103 A1 C 34 383.0 67.8 468.3 0 0CL +ATOM 104 B1 C 34 382.4 67.5 468.0 0 0CL +ATOM 105 COM C 35 110.2 179.2 497.7 0 0CL +ATOM 106 A1 C 35 110.1 181.2 498.4 0 0CL +ATOM 107 B1 C 35 110.0 181.1 497.7 0 0CL +ATOM 108 COM C 36 184.5 61.3 78.9 0 0CL +ATOM 109 A1 C 36 182.8 61.5 77.5 0 0CL +ATOM 110 B1 C 36 183.1 60.9 77.5 0 0CL +ATOM 111 COM C 37 48.0 198.5 483.8 0 0CL +ATOM 112 A1 C 37 46.3 199.4 482.9 0 0CL +ATOM 113 B1 C 37 46.8 199.4 482.5 0 0CL +ATOM 114 COM C 38 471.9 51.2 197.2 0 0CL +ATOM 115 A1 C 38 472.8 52.8 196.0 0 0CL +ATOM 116 B1 C 38 473.3 52.2 196.2 0 0CL +ATOM 117 COM C 39 14.7 388.5 241.3 0 0CL +ATOM 118 A1 C 39 15.2 388.9 239.1 0 0CL +ATOM 119 B1 C 39 15.2 389.4 239.6 0 0CL +ATOM 120 COM C 40 170.8 183.3 38.5 0 0CL +ATOM 121 A1 C 40 168.9 183.4 37.2 0 0CL +ATOM 122 B1 C 40 168.9 183.6 37.9 0 0CL +ATOM 123 COM C 41 61.4 209.8 398.3 0 0CL +ATOM 124 A1 C 41 63.3 209.3 397.2 0 0CL +ATOM 125 B1 C 41 62.7 208.8 397.1 0 0CL +ATOM 126 COM C 42 124.8 370.2 318.6 0 0CL +ATOM 127 A1 C 42 126.7 370.1 317.6 0 0CL +ATOM 128 B1 C 42 126.4 369.5 317.7 0 0CL +ATOM 129 COM C 43 35.2 41.1 110.6 0 0CL +ATOM 130 A1 C 43 33.1 40.6 110.3 0 0CL +ATOM 131 B1 C 43 33.5 40.7 109.7 0 0CL +ATOM 132 COM C 44 5.9 433.5 495.7 0 0CL +ATOM 133 A1 C 44 5.6 432.2 494.0 0 0CL +ATOM 134 B1 C 44 6.2 432.1 494.3 0 0CL +ATOM 135 COM C 45 332.7 377.5 491.0 0 0CL +ATOM 136 A1 C 45 332.2 377.7 493.1 0 0CL +ATOM 137 B1 C 45 332.8 377.3 493.0 0 0CL +ATOM 138 COM C 46 396.5 391.1 158.2 0 0CL +ATOM 139 A1 C 46 394.3 390.7 158.6 0 0CL +ATOM 140 B1 C 46 394.8 390.2 158.8 0 0CL +ATOM 141 COM C 47 367.3 32.6 434.7 0 0CL +ATOM 142 A1 C 47 367.1 34.5 433.5 0 0CL +ATOM 143 B1 C 47 367.5 33.9 433.2 0 0CL +ATOM 144 COM C 48 489.6 159.0 66.8 0 0CL +ATOM 145 A1 C 48 491.2 160.0 68.0 0 0CL +ATOM 146 B1 C 48 491.4 159.7 67.4 0 0CL +ATOM 147 COM C 49 307.1 489.6 285.1 0 0CL +ATOM 148 A1 C 49 309.1 490.2 284.5 0 0CL +ATOM 149 B1 C 49 308.6 490.7 284.4 0 0CL +ATOM 150 COM C 50 499.2 415.7 353.9 0 0CL +ATOM 151 A1 C 50 498.3 415.8 351.9 0 0CL +ATOM 152 B1 C 50 499.0 415.7 351.9 0 0CL +ATOM 153 COM C 51 402.9 481.3 258.5 0 0CL +ATOM 154 A1 C 51 404.4 481.4 260.0 0 0CL +ATOM 155 B1 C 51 403.9 481.8 260.1 0 0CL +ATOM 156 COM C 52 37.7 347.9 361.2 0 0CL +ATOM 157 A1 C 52 39.8 348.6 360.7 0 0CL +ATOM 158 B1 C 52 39.7 348.2 361.3 0 0CL +ATOM 159 COM C 53 217.6 371.7 299.8 0 0CL +ATOM 160 A1 C 53 216.6 369.8 299.6 0 0CL +ATOM 161 B1 C 53 216.3 370.3 300.1 0 0CL +ATOM 162 COM C 54 113.3 165.3 355.6 0 0CL +ATOM 163 A1 C 54 115.0 166.7 355.2 0 0CL +ATOM 164 B1 C 54 114.3 167.0 355.2 0 0CL +ATOM 165 COM C 55 419.9 83.6 221.7 0 0CL +ATOM 166 A1 C 55 418.6 81.8 222.0 0 0CL +ATOM 167 B1 C 55 419.0 81.9 221.4 0 0CL +ATOM 168 COM C 56 147.0 361.5 394.7 0 0CL +ATOM 169 A1 C 56 145.7 362.5 393.2 0 0CL +ATOM 170 B1 C 56 145.7 362.8 393.9 0 0CL +ATOM 171 COM C 57 434.7 178.0 63.3 0 0CL +ATOM 172 A1 C 57 434.4 176.4 61.9 0 0CL +ATOM 173 B1 C 57 434.7 177.0 61.6 0 0CL +ATOM 174 COM C 58 150.9 461.1 402.2 0 0CL +ATOM 175 A1 C 58 148.8 461.7 402.4 0 0CL +ATOM 176 B1 C 58 149.2 461.6 403.0 0 0CL +ATOM 177 COM C 59 496.2 387.1 215.1 0 0CL +ATOM 178 A1 C 59 496.0 385.1 214.4 0 0CL +ATOM 179 B1 C 59 495.4 385.4 214.6 0 0CL +ATOM 180 COM C 60 337.8 132.9 106.4 0 0CL +ATOM 181 A1 C 60 338.8 132.6 104.4 0 0CL +ATOM 182 B1 C 60 339.1 132.4 105.0 0 0CL +ATOM 183 COM C 61 219.7 413.4 157.3 0 0CL +ATOM 184 A1 C 61 221.4 412.4 158.2 0 0CL +ATOM 185 B1 C 61 220.9 412.7 158.7 0 0CL +ATOM 186 COM C 62 45.2 466.7 48.8 0 0CL +ATOM 187 A1 C 62 45.2 465.7 50.8 0 0CL +ATOM 188 B1 C 62 44.7 465.5 50.3 0 0CL +ATOM 189 COM C 63 222.0 493.1 357.6 0 0CL +ATOM 190 A1 C 63 220.7 491.5 356.8 0 0CL +ATOM 191 B1 C 63 221.2 491.8 356.4 0 0CL +ATOM 192 COM C 64 479.6 141.9 217.2 0 0CL +ATOM 193 A1 C 64 479.1 142.1 219.4 0 0CL +ATOM 194 B1 C 64 479.2 142.7 219.0 0 0CL +ATOM 195 COM C 65 136.2 268.9 486.8 0 0CL +ATOM 196 A1 C 65 135.4 270.7 485.8 0 0CL +ATOM 197 B1 C 65 135.5 270.8 486.5 0 0CL +ATOM 198 COM C 66 52.4 3.9 152.1 0 0CL +ATOM 199 A1 C 66 53.1 5.4 153.6 0 0CL +ATOM 200 B1 C 66 52.5 5.5 153.3 0 0CL +ATOM 201 COM C 67 305.0 348.6 380.8 0 0CL +ATOM 202 A1 C 67 305.8 350.6 381.3 0 0CL +ATOM 203 B1 C 67 306.3 350.1 381.3 0 0CL +ATOM 204 COM C 68 337.2 69.9 477.0 0 0CL +ATOM 205 A1 C 68 336.1 68.0 476.7 0 0CL +ATOM 206 B1 C 68 336.8 67.9 477.0 0 0CL +ATOM 207 COM C 69 33.3 157.3 146.2 0 0CL +ATOM 208 A1 C 69 31.3 157.3 147.1 0 0CL +ATOM 209 B1 C 69 31.9 157.4 147.6 0 0CL +ATOM 210 COM C 70 260.6 57.7 264.8 0 0CL +ATOM 211 A1 C 70 259.4 57.4 266.7 0 0CL +ATOM 212 B1 C 70 259.8 57.9 266.6 0 0CL +ATOM 213 COM C 71 396.1 23.5 75.4 0 0CL +ATOM 214 A1 C 71 395.8 22.7 73.4 0 0CL +ATOM 215 B1 C 71 396.0 23.4 73.5 0 0CL +ATOM 216 COM C 72 172.2 223.3 329.8 0 0CL +ATOM 217 A1 C 72 172.4 225.5 329.2 0 0CL +ATOM 218 B1 C 72 171.8 225.1 329.0 0 0CL +ATOM 219 COM C 73 38.1 12.7 41.6 0 0CL +ATOM 220 A1 C 73 38.9 13.8 39.9 0 0CL +ATOM 221 B1 C 73 39.3 13.2 40.0 0 0CL +ATOM 222 COM C 74 116.2 33.1 103.2 0 0CL +ATOM 223 A1 C 74 118.0 34.2 102.6 0 0CL +ATOM 224 B1 C 74 117.4 34.3 102.1 0 0CL +ATOM 225 COM C 75 203.4 152.0 212.3 0 0CL +ATOM 226 A1 C 75 205.4 151.0 212.1 0 0CL +ATOM 227 B1 C 75 205.0 151.1 211.5 0 0CL +ATOM 228 COM C 76 79.2 125.3 428.8 0 0CL +ATOM 229 A1 C 76 79.7 123.5 430.0 0 0CL +ATOM 230 B1 C 76 80.2 123.8 429.7 0 0CL +ATOM 231 COM C 77 403.2 407.6 301.8 0 0CL +ATOM 232 A1 C 77 402.9 406.9 303.9 0 0CL +ATOM 233 B1 C 77 402.4 406.7 303.4 0 0CL +ATOM 234 COM C 78 466.0 51.6 65.2 0 0CL +ATOM 235 A1 C 78 467.9 52.4 65.9 0 0CL +ATOM 236 B1 C 78 467.4 52.4 66.4 0 0CL +ATOM 237 COM C 79 273.0 215.0 252.0 0 0CL +ATOM 238 A1 C 79 271.1 215.2 253.1 0 0CL +ATOM 239 B1 C 79 271.7 215.7 253.3 0 0CL +ATOM 240 COM C 80 22.5 410.3 160.2 0 0CL +ATOM 241 A1 C 80 24.6 411.1 160.3 0 0CL +ATOM 242 B1 C 80 24.3 410.7 160.9 0 0CL +ATOM 243 COM C 81 301.0 255.0 386.6 0 0CL +ATOM 244 A1 C 81 300.7 254.4 388.6 0 0CL +ATOM 245 B1 C 81 300.2 254.8 388.4 0 0CL +ATOM 246 COM C 82 475.2 109.4 304.7 0 0CL +ATOM 247 A1 C 82 474.2 107.7 305.6 0 0CL +ATOM 248 B1 C 82 474.4 108.2 306.0 0 0CL +ATOM 249 COM C 83 78.7 169.0 224.9 0 0CL +ATOM 250 A1 C 83 78.8 171.2 225.1 0 0CL +ATOM 251 B1 C 83 79.1 170.8 225.6 0 0CL +ATOM 252 COM C 84 220.3 105.4 22.3 0 0CL +ATOM 253 A1 C 84 221.4 105.6 20.4 0 0CL +ATOM 254 B1 C 84 220.7 105.4 20.4 0 0CL +ATOM 255 COM C 85 161.1 208.2 221.9 0 0CL +ATOM 256 A1 C 85 159.3 208.8 220.8 0 0CL +ATOM 257 B1 C 85 159.9 208.9 220.5 0 0CL +ATOM 258 COM C 86 494.9 275.6 346.0 0 0CL +ATOM 259 A1 C 86 496.9 274.7 346.0 0 0CL +ATOM 260 B1 C 86 496.8 275.2 345.6 0 0CL +ATOM 261 COM C 87 183.3 271.8 478.8 0 0CL +ATOM 262 A1 C 87 181.6 273.0 479.6 0 0CL +ATOM 263 B1 C 87 182.1 272.8 480.0 0 0CL +ATOM 264 COM C 88 368.4 468.3 10.4 0 0CL +ATOM 265 A1 C 88 369.6 467.8 12.2 0 0CL +ATOM 266 B1 C 88 369.9 468.2 11.7 0 0CL +ATOM 267 COM C 89 396.3 493.3 23.9 0 0CL +ATOM 268 A1 C 89 398.2 493.7 24.9 0 0CL +ATOM 269 B1 C 89 398.1 493.9 24.2 0 0CL +ATOM 270 COM C 90 98.3 117.0 230.9 0 0CL +ATOM 271 A1 C 90 97.7 117.5 228.9 0 0CL +ATOM 272 B1 C 90 97.5 116.8 229.1 0 0CL +ATOM 273 COM C 91 428.8 61.1 381.5 0 0CL +ATOM 274 A1 C 91 427.8 59.9 382.9 0 0CL +ATOM 275 B1 C 91 428.2 59.5 382.5 0 0CL +ATOM 276 COM C 92 5.0 234.7 187.0 0 0CL +ATOM 277 A1 C 92 6.4 236.3 186.3 0 0CL +ATOM 278 B1 C 92 6.5 236.0 187.0 0 0CL +ATOM 279 COM C 93 131.0 3.9 226.8 0 0CL +ATOM 280 A1 C 93 130.3 5.9 226.3 0 0CL +ATOM 281 B1 C 93 130.2 5.4 225.8 0 0CL +ATOM 282 COM C 94 126.3 185.6 62.4 0 0CL +ATOM 283 A1 C 94 126.2 183.7 61.2 0 0CL +ATOM 284 B1 C 94 126.4 183.7 61.9 0 0CL +ATOM 285 COM C 95 388.0 266.4 187.3 0 0CL +ATOM 286 A1 C 95 388.4 265.1 185.6 0 0CL +ATOM 287 B1 C 95 388.9 265.6 185.7 0 0CL +ATOM 288 COM C 96 223.0 493.0 56.9 0 0CL +ATOM 289 A1 C 96 222.6 491.5 58.5 0 0CL +ATOM 290 B1 C 96 222.1 492.1 58.5 0 0CL +ATOM 291 COM C 97 151.8 32.5 287.4 0 0CL +ATOM 292 A1 C 97 151.9 32.3 289.6 0 0CL +ATOM 293 B1 C 97 151.4 31.9 289.2 0 0CL +ATOM 294 COM C 98 175.1 143.5 351.7 0 0CL +ATOM 295 A1 C 98 175.5 143.3 353.9 0 0CL +ATOM 296 B1 C 98 175.7 142.7 353.4 0 0CL +ATOM 297 COM C 99 446.7 128.7 26.2 0 0CL +ATOM 298 A1 C 99 448.7 129.4 26.9 0 0CL +ATOM 299 B1 C 99 448.3 128.8 27.3 0 0CL +ATOM 300 COM C 100 475.0 347.9 405.6 0 0CL +ATOM 301 A1 C 100 477.2 348.2 406.1 0 0CL +ATOM 302 B1 C 100 476.8 348.8 406.0 0 0CL +ATOM 303 COM C 101 41.6 354.7 18.4 0 0CL +ATOM 304 A1 C 101 41.7 354.2 20.5 0 0CL +ATOM 305 B1 C 101 41.3 353.7 20.1 0 0CL +ATOM 306 COM C 102 162.3 304.8 86.3 0 0CL +ATOM 307 A1 C 102 161.2 306.4 85.3 0 0CL +ATOM 308 B1 C 102 161.7 306.0 84.9 0 0CL +ATOM 309 COM C 103 193.7 353.0 477.6 0 0CL +ATOM 310 A1 C 103 193.0 354.4 476.1 0 0CL +ATOM 311 B1 C 103 193.6 354.0 475.9 0 0CL +ATOM 312 COM C 104 230.2 204.4 59.4 0 0CL +ATOM 313 A1 C 104 228.1 204.6 58.7 0 0CL +ATOM 314 B1 C 104 228.3 203.9 58.9 0 0CL +ATOM 315 COM C 105 204.8 119.0 268.4 0 0CL +ATOM 316 A1 C 105 205.6 120.1 270.2 0 0CL +ATOM 317 B1 C 105 205.5 120.5 269.6 0 0CL +ATOM 318 COM C 106 111.9 71.4 323.1 0 0CL +ATOM 319 A1 C 106 112.6 71.2 325.2 0 0CL +ATOM 320 B1 C 106 112.8 71.8 324.8 0 0CL +ATOM 321 COM C 107 84.0 260.0 223.0 0 0CL +ATOM 322 A1 C 107 82.6 258.7 224.1 0 0CL +ATOM 323 B1 C 107 82.4 259.5 224.1 0 0CL +ATOM 324 COM C 108 472.0 488.3 204.3 0 0CL +ATOM 325 A1 C 108 471.3 487.4 202.4 0 0CL +ATOM 326 B1 C 108 470.9 487.3 202.9 0 0CL +ATOM 327 COM C 109 88.7 330.4 476.8 0 0CL +ATOM 328 A1 C 109 87.4 329.2 478.0 0 0CL +ATOM 329 B1 C 109 87.1 329.7 477.6 0 0CL +ATOM 330 COM C 110 33.0 377.0 413.3 0 0CL +ATOM 331 A1 C 110 34.4 378.7 413.0 0 0CL +ATOM 332 B1 C 110 33.7 378.8 412.9 0 0CL +ATOM 333 COM C 111 382.2 393.7 87.7 0 0CL +ATOM 334 A1 C 111 381.0 395.2 86.6 0 0CL +ATOM 335 B1 C 111 381.7 395.1 86.4 0 0CL +ATOM 336 COM C 112 319.7 209.8 87.5 0 0CL +ATOM 337 A1 C 112 317.7 210.4 86.8 0 0CL +ATOM 338 B1 C 112 317.8 209.7 86.9 0 0CL +ATOM 339 COM C 113 179.0 282.1 171.9 0 0CL +ATOM 340 A1 C 113 178.0 283.4 173.4 0 0CL +ATOM 341 B1 C 113 178.3 282.8 173.7 0 0CL +ATOM 342 COM C 114 385.7 254.7 13.2 0 0CL +ATOM 343 A1 C 114 385.5 255.4 11.1 0 0CL +ATOM 344 B1 C 114 386.2 255.6 11.4 0 0CL +ATOM 345 COM C 115 471.8 24.0 404.2 0 0CL +ATOM 346 A1 C 115 473.6 22.9 404.8 0 0CL +ATOM 347 B1 C 115 473.4 23.4 405.2 0 0CL +ATOM 348 COM C 116 224.1 28.5 118.6 0 0CL +ATOM 349 A1 C 116 226.1 28.1 117.8 0 0CL +ATOM 350 B1 C 116 225.8 27.6 118.2 0 0CL +ATOM 351 COM C 117 95.9 207.8 455.2 0 0CL +ATOM 352 A1 C 117 97.6 207.7 456.7 0 0CL +ATOM 353 B1 C 117 97.5 208.4 456.3 0 0CL +ATOM 354 COM C 118 332.6 175.6 269.7 0 0CL +ATOM 355 A1 C 118 330.6 176.6 270.0 0 0CL +ATOM 356 B1 C 118 331.2 177.0 270.0 0 0CL +ATOM 357 COM C 119 120.9 181.7 51.5 0 0CL +ATOM 358 A1 C 119 120.2 182.9 49.8 0 0CL +ATOM 359 B1 C 119 119.7 182.7 50.2 0 0CL +ATOM 360 COM C 120 209.8 125.4 27.9 0 0CL +ATOM 361 A1 C 120 209.9 126.5 26.0 0 0CL +ATOM 362 B1 C 120 209.4 126.7 26.4 0 0CL +ATOM 363 COM C 121 188.8 257.5 339.4 0 0CL +ATOM 364 A1 C 121 188.1 259.5 338.8 0 0CL +ATOM 365 B1 C 121 188.7 259.3 338.5 0 0CL +ATOM 366 COM C 122 37.0 52.8 142.2 0 0CL +ATOM 367 A1 C 122 36.9 54.8 141.2 0 0CL +ATOM 368 B1 C 122 36.7 54.2 140.8 0 0CL +ATOM 369 COM C 123 241.0 165.4 346.9 0 0CL +ATOM 370 A1 C 123 239.7 167.1 347.2 0 0CL +ATOM 371 B1 C 123 239.7 166.8 346.6 0 0CL +ATOM 372 COM C 124 10.8 15.5 335.0 0 0CL +ATOM 373 A1 C 124 8.6 15.8 335.4 0 0CL +ATOM 374 B1 C 124 9.1 15.7 336.0 0 0CL +ATOM 375 COM C 125 72.8 14.6 3.8 0 0CL +ATOM 376 A1 C 125 70.8 14.4 2.8 0 0CL +ATOM 377 B1 C 125 71.1 13.8 3.0 0 0CL +ATOM 378 COM C 126 444.8 3.5 210.7 0 0CL +ATOM 379 A1 C 126 446.5 3.0 209.4 0 0CL +ATOM 380 B1 C 126 446.7 3.3 210.0 0 0CL +ATOM 381 COM C 127 47.5 92.8 138.9 0 0CL +ATOM 382 A1 C 127 47.2 92.2 141.0 0 0CL +ATOM 383 B1 C 127 47.5 91.7 140.5 0 0CL +ATOM 384 COM C 128 487.8 411.0 365.8 0 0CL +ATOM 385 A1 C 128 488.9 410.2 364.1 0 0CL +ATOM 386 B1 C 128 488.9 410.9 364.2 0 0CL +ATOM 387 COM C 129 31.2 457.9 427.4 0 0CL +ATOM 388 A1 C 129 31.6 458.3 429.5 0 0CL +ATOM 389 B1 C 129 31.5 457.6 429.3 0 0CL +ATOM 390 COM C 130 46.8 50.2 433.4 0 0CL +ATOM 391 A1 C 130 46.7 52.4 434.0 0 0CL +ATOM 392 B1 C 130 47.0 51.9 434.5 0 0CL +ATOM 393 COM C 131 381.8 192.3 439.5 0 0CL +ATOM 394 A1 C 131 381.4 190.3 440.4 0 0CL +ATOM 395 B1 C 131 382.0 190.6 440.5 0 0CL +ATOM 396 COM C 132 160.3 296.1 1.9 0 0CL +ATOM 397 A1 C 132 158.7 294.9 0.9 0 0CL +ATOM 398 B1 C 132 159.2 294.6 1.4 0 0CL +ATOM 399 COM C 133 36.9 65.0 159.1 0 0CL +ATOM 400 A1 C 133 37.0 62.8 159.2 0 0CL +ATOM 401 B1 C 133 37.2 63.2 159.8 0 0CL +ATOM 402 COM C 134 66.3 388.1 432.3 0 0CL +ATOM 403 A1 C 134 68.3 388.0 431.4 0 0CL +ATOM 404 B1 C 134 68.1 387.4 431.8 0 0CL +ATOM 405 COM C 135 203.6 441.6 429.2 0 0CL +ATOM 406 A1 C 135 204.8 440.0 428.4 0 0CL +ATOM 407 B1 C 135 204.9 440.6 428.1 0 0CL +ATOM 408 COM C 136 78.6 251.6 138.8 0 0CL +ATOM 409 A1 C 136 78.3 253.8 139.1 0 0CL +ATOM 410 B1 C 136 78.2 253.5 138.4 0 0CL +ATOM 411 COM C 137 366.7 480.3 125.0 0 0CL +ATOM 412 A1 C 137 367.4 481.5 123.4 0 0CL +ATOM 413 B1 C 137 367.4 480.8 123.3 0 0CL +ATOM 414 COM C 138 152.8 429.9 341.0 0 0CL +ATOM 415 A1 C 138 152.6 429.1 343.0 0 0CL +ATOM 416 B1 C 138 153.3 429.1 342.7 0 0CL +ATOM 417 COM C 139 495.7 440.3 254.3 0 0CL +ATOM 418 A1 C 139 496.0 439.8 256.4 0 0CL +ATOM 419 B1 C 139 496.2 439.3 255.9 0 0CL +ATOM 420 COM C 140 403.9 490.7 45.5 0 0CL +ATOM 421 A1 C 140 404.7 488.8 44.7 0 0CL +ATOM 422 B1 C 140 404.0 488.8 44.9 0 0CL +ATOM 423 COM C 141 395.6 492.6 241.0 0 0CL +ATOM 424 A1 C 141 397.2 491.1 241.2 0 0CL +ATOM 425 B1 C 141 397.0 491.4 241.9 0 0CL +ATOM 426 COM C 142 430.2 217.6 126.1 0 0CL +ATOM 427 A1 C 142 430.7 218.4 124.1 0 0CL +ATOM 428 B1 C 142 430.0 218.3 124.2 0 0CL +ATOM 429 COM C 143 7.1 359.8 2.3 0 0CL +ATOM 430 A1 C 143 6.7 361.6 1.2 0 0CL +ATOM 431 B1 C 143 6.2 361.4 1.7 0 0CL +ATOM 432 COM C 144 278.6 418.4 389.4 0 0CL +ATOM 433 A1 C 144 277.5 420.2 388.8 0 0CL +ATOM 434 B1 C 144 277.4 420.0 389.5 0 0CL +ATOM 435 COM C 145 485.2 170.8 195.7 0 0CL +ATOM 436 A1 C 145 484.9 168.7 196.1 0 0CL +ATOM 437 B1 C 145 484.6 169.0 195.6 0 0CL +ATOM 438 COM C 146 330.5 79.3 354.4 0 0CL +ATOM 439 A1 C 146 328.9 78.2 355.4 0 0CL +ATOM 440 B1 C 146 329.4 78.5 355.8 0 0CL +ATOM 441 COM C 147 428.1 450.1 213.2 0 0CL +ATOM 442 A1 C 147 429.4 450.1 215.0 0 0CL +ATOM 443 B1 C 147 428.8 449.7 215.0 0 0CL +ATOM 444 COM C 148 397.4 295.5 259.7 0 0CL +ATOM 445 A1 C 148 396.6 294.2 261.3 0 0CL +ATOM 446 B1 C 148 397.2 294.6 261.4 0 0CL +ATOM 447 COM C 149 288.3 147.9 145.7 0 0CL +ATOM 448 A1 C 149 287.1 148.8 147.2 0 0CL +ATOM 449 B1 C 149 287.3 148.2 147.4 0 0CL +ATOM 450 COM A 150 363.5 477.0 29.7 0 0CL +ATOM 451 C1 A 150 364.6 476.6 30.2 0 0CL +ATOM 452 B1 A 150 364.0 477.6 29.2 0 0CL +ATOM 453 COM A 151 181.0 61.7 77.7 0 0CL +ATOM 454 C1 A 151 182.2 62.0 78.1 0 0CL +ATOM 455 B1 A 151 181.4 60.8 77.6 0 0CL +ATOM 456 COM A 152 178.2 284.9 174.2 0 0CL +ATOM 457 C1 A 152 178.2 284.2 173.1 0 0CL +ATOM 458 B1 A 152 178.6 284.1 174.6 0 0CL +ATOM 459 COM A 153 469.6 51.8 66.2 0 0CL +ATOM 460 C1 A 153 468.5 51.9 65.5 0 0CL +ATOM 461 B1 A 153 468.9 51.9 67.0 0 0CL +ATOM 462 COM A 154 159.5 6.8 152.9 0 0CL +ATOM 463 C1 A 154 160.8 6.6 153.3 0 0CL +ATOM 464 B1 A 154 159.3 6.2 153.7 0 0CL +ATOM 465 COM A 155 451.1 173.2 357.3 0 0CL +ATOM 466 C1 A 155 450.4 174.1 357.8 0 0CL +ATOM 467 B1 A 155 450.6 173.4 356.4 0 0CL +ATOM 468 COM A 156 41.0 348.4 359.5 0 0CL +ATOM 469 C1 A 156 39.7 348.6 359.8 0 0CL +ATOM 470 B1 A 156 41.0 347.9 360.4 0 0CL +ATOM 471 COM A 157 46.3 464.7 51.7 0 0CL +ATOM 472 C1 A 157 46.1 465.8 51.0 0 0CL +ATOM 473 B1 A 157 45.6 464.3 51.1 0 0CL +ATOM 474 COM A 158 251.1 415.8 56.5 0 0CL +ATOM 475 C1 A 158 252.3 415.8 55.9 0 0CL +ATOM 476 B1 A 158 250.8 416.5 55.8 0 0CL +ATOM 477 COM A 159 35.9 61.4 159.3 0 0CL +ATOM 478 C1 A 159 36.3 62.6 158.7 0 0CL +ATOM 479 B1 A 159 36.2 61.8 160.1 0 0CL +ATOM 480 COM A 160 380.3 189.6 441.6 0 0CL +ATOM 481 C1 A 160 380.5 190.4 440.6 0 0CL +ATOM 482 B1 A 160 381.3 189.9 441.9 0 0CL +ATOM 483 COM A 161 383.1 69.0 469.5 0 0CL +ATOM 484 C1 A 161 383.5 67.8 469.0 0 0CL +ATOM 485 B1 A 161 382.2 68.7 469.1 0 0CL +ATOM 486 COM A 162 66.6 192.2 402.9 0 0CL +ATOM 487 C1 A 162 67.1 192.1 401.7 0 0CL +ATOM 488 B1 A 162 65.9 191.5 402.6 0 0CL +ATOM 489 COM A 163 116.7 337.9 110.7 0 0CL +ATOM 490 C1 A 163 116.8 339.0 110.0 0 0CL +ATOM 491 B1 A 163 116.0 337.6 110.0 0 0CL +ATOM 492 COM A 164 300.4 252.9 389.5 0 0CL +ATOM 493 C1 A 164 301.1 253.5 388.6 0 0CL +ATOM 494 B1 A 164 299.6 253.4 389.2 0 0CL +ATOM 495 COM A 165 297.4 75.7 391.7 0 0CL +ATOM 496 C1 A 165 297.2 77.0 391.6 0 0CL +ATOM 497 B1 A 165 297.3 76.0 392.7 0 0CL +ATOM 498 COM A 166 163.5 128.7 130.9 0 0CL +ATOM 499 C1 A 166 162.6 129.2 131.7 0 0CL +ATOM 500 B1 A 166 162.7 128.2 130.5 0 0CL +ATOM 501 COM A 167 77.3 254.9 140.0 0 0CL +ATOM 502 C1 A 167 78.0 253.8 140.0 0 0CL +ATOM 503 B1 A 167 77.1 254.7 139.0 0 0CL +ATOM 504 COM A 168 156.9 294.8 1.0 0 0CL +ATOM 505 C1 A 168 158.0 295.5 1.0 0 0CL +ATOM 506 B1 A 168 157.5 294.1 1.6 0 0CL +ATOM 507 COM A 169 360.5 246.2 22.1 0 0CL +ATOM 508 C1 A 169 361.1 246.2 21.0 0 0CL +ATOM 509 B1 A 169 359.9 246.9 21.6 0 0CL +ATOM 510 COM A 170 232.2 465.0 165.8 0 0CL +ATOM 511 C1 A 170 233.4 464.8 165.2 0 0CL +ATOM 512 B1 A 170 232.6 465.9 165.9 0 0CL +ATOM 513 COM A 171 64.2 209.9 395.9 0 0CL +ATOM 514 C1 A 171 63.5 210.2 396.9 0 0CL +ATOM 515 B1 A 171 63.5 209.1 395.7 0 0CL +ATOM 516 COM A 172 36.9 409.0 165.7 0 0CL +ATOM 517 C1 A 172 38.1 409.3 166.2 0 0CL +ATOM 518 B1 A 172 37.2 408.0 165.8 0 0CL +ATOM 519 COM A 173 496.9 440.3 257.8 0 0CL +ATOM 520 C1 A 173 496.2 440.6 256.7 0 0CL +ATOM 521 B1 A 173 497.3 439.6 257.2 0 0CL +ATOM 522 COM A 174 222.0 410.7 158.3 0 0CL +ATOM 523 C1 A 174 221.5 411.7 157.5 0 0CL +ATOM 524 B1 A 174 221.4 411.1 159.0 0 0CL +ATOM 525 COM A 175 120.4 184.5 49.1 0 0CL +ATOM 526 C1 A 175 120.9 183.5 49.7 0 0CL +ATOM 527 B1 A 175 119.6 184.3 49.7 0 0CL +ATOM 528 COM A 176 447.3 1.6 208.7 0 0CL +ATOM 529 C1 A 176 446.2 2.2 209.0 0 0CL +ATOM 530 B1 A 176 447.7 2.0 209.5 0 0CL +ATOM 531 COM A 177 430.5 44.3 308.9 0 0CL +ATOM 532 C1 A 177 430.4 44.1 307.6 0 0CL +ATOM 533 B1 A 177 431.4 44.7 308.8 0 0CL +ATOM 534 COM A 178 396.4 21.5 72.3 0 0CL +ATOM 535 C1 A 178 396.0 21.8 73.5 0 0CL +ATOM 536 B1 A 178 396.7 22.4 72.3 0 0CL +ATOM 537 COM A 179 191.6 354.7 475.1 0 0CL +ATOM 538 C1 A 179 192.1 354.4 476.3 0 0CL +ATOM 539 B1 A 179 192.4 354.2 474.7 0 0CL +ATOM 540 COM A 180 472.7 106.8 305.4 0 0CL +ATOM 541 C1 A 180 473.7 107.4 304.9 0 0CL +ATOM 542 B1 A 180 472.8 107.5 306.2 0 0CL +ATOM 543 COM A 181 329.2 176.9 269.0 0 0CL +ATOM 544 C1 A 181 330.1 176.1 269.4 0 0CL +ATOM 545 B1 A 181 329.9 177.6 269.1 0 0CL +ATOM 546 COM A 182 450.3 129.4 26.3 0 0CL +ATOM 547 C1 A 182 449.0 129.6 26.1 0 0CL +ATOM 548 B1 A 182 450.0 128.7 26.9 0 0CL +ATOM 549 COM A 183 104.3 169.0 202.5 0 0CL +ATOM 550 C1 A 183 105.4 168.3 202.7 0 0CL +ATOM 551 B1 A 183 104.9 169.8 202.6 0 0CL +ATOM 552 COM A 184 238.3 167.6 348.2 0 0CL +ATOM 553 C1 A 184 239.5 167.0 348.1 0 0CL +ATOM 554 B1 A 184 238.2 167.2 347.3 0 0CL +ATOM 555 COM A 185 269.5 215.6 252.8 0 0CL +ATOM 556 C1 A 185 270.6 215.0 252.4 0 0CL +ATOM 557 B1 A 185 270.1 216.3 253.2 0 0CL +ATOM 558 COM A 186 288.6 485.1 53.1 0 0CL +ATOM 559 C1 A 186 288.8 485.7 51.9 0 0CL +ATOM 560 B1 A 186 288.6 486.1 53.4 0 0CL +ATOM 561 COM A 187 147.8 463.1 402.1 0 0CL +ATOM 562 C1 A 187 148.7 462.3 401.7 0 0CL +ATOM 563 B1 A 187 148.2 463.0 403.0 0 0CL +ATOM 564 COM A 188 215.7 368.9 298.4 0 0CL +ATOM 565 C1 A 188 216.7 369.7 298.7 0 0CL +ATOM 566 B1 A 188 215.2 369.5 299.1 0 0CL +ATOM 567 COM A 189 302.5 29.8 386.4 0 0CL +ATOM 568 C1 A 189 301.6 30.7 386.1 0 0CL +ATOM 569 B1 A 189 303.2 30.5 386.1 0 0CL +ATOM 570 COM A 190 298.6 279.0 256.5 0 0CL +ATOM 571 C1 A 190 298.1 277.8 256.2 0 0CL +ATOM 572 B1 A 190 297.9 279.0 257.2 0 0CL +ATOM 573 COM A 191 43.0 353.6 21.6 0 0CL +ATOM 574 C1 A 191 42.6 354.4 20.6 0 0CL +ATOM 575 B1 A 191 42.4 352.9 21.1 0 0CL +ATOM 576 COM A 192 439.7 386.0 388.6 0 0CL +ATOM 577 C1 A 192 438.6 385.6 388.3 0 0CL +ATOM 578 B1 A 192 439.3 386.1 389.6 0 0CL +ATOM 579 COM A 193 431.4 219.9 123.5 0 0CL +ATOM 580 C1 A 193 431.4 218.9 124.4 0 0CL +ATOM 581 B1 A 193 430.4 219.8 123.5 0 0CL +ATOM 582 COM A 194 226.9 27.8 116.3 0 0CL +ATOM 583 C1 A 194 226.0 28.5 117.0 0 0CL +ATOM 584 B1 A 194 226.6 27.0 116.9 0 0CL +ATOM 585 COM A 195 233.0 464.9 160.0 0 0CL +ATOM 586 C1 A 195 233.1 465.0 161.3 0 0CL +ATOM 587 B1 A 195 232.2 464.3 160.1 0 0CL +ATOM 588 COM A 196 365.9 35.3 432.7 0 0CL +ATOM 589 C1 A 196 366.2 34.7 433.7 0 0CL +ATOM 590 B1 A 196 366.5 34.7 432.2 0 0CL +ATOM 591 COM A 197 190.0 11.2 88.8 0 0CL +ATOM 592 C1 A 197 190.4 12.3 89.3 0 0CL +ATOM 593 B1 A 197 190.9 10.9 89.1 0 0CL +ATOM 594 COM A 198 33.4 385.2 92.0 0 0CL +ATOM 595 C1 A 198 34.6 385.8 92.3 0 0CL +ATOM 596 B1 A 198 33.0 386.0 92.5 0 0CL +ATOM 597 COM A 199 176.5 144.0 355.1 0 0CL +ATOM 598 C1 A 199 175.7 144.2 354.1 0 0CL +ATOM 599 B1 A 199 176.8 143.1 354.6 0 0CL +ATOM 600 COM A 200 135.9 271.9 484.6 0 0CL +ATOM 601 C1 A 200 135.8 270.6 485.0 0 0CL +ATOM 602 B1 A 200 136.0 272.1 485.6 0 0CL +ATOM 603 COM A 201 490.2 409.2 363.8 0 0CL +ATOM 604 C1 A 201 489.1 409.4 364.4 0 0CL +ATOM 605 B1 A 201 490.3 410.2 363.8 0 0CL +ATOM 606 COM A 202 69.2 14.9 3.1 0 0CL +ATOM 607 C1 A 202 70.4 15.2 3.1 0 0CL +ATOM 608 B1 A 202 69.5 13.9 3.3 0 0CL +ATOM 609 COM A 203 280.0 493.1 490.7 0 0CL +ATOM 610 C1 A 203 281.3 493.2 490.8 0 0CL +ATOM 611 B1 A 203 279.9 493.4 491.7 0 0CL +ATOM 612 COM A 204 7.3 363.3 1.2 0 0CL +ATOM 613 C1 A 204 7.5 362.0 1.2 0 0CL +ATOM 614 B1 A 204 6.5 363.0 1.8 0 0CL +ATOM 615 COM A 205 168.4 184.2 35.8 0 0CL +ATOM 616 C1 A 205 169.4 183.5 36.4 0 0CL +ATOM 617 B1 A 205 168.2 184.6 36.7 0 0CL +ATOM 618 COM A 206 222.8 337.6 316.2 0 0CL +ATOM 619 C1 A 206 223.4 337.9 315.1 0 0CL +ATOM 620 B1 A 206 221.9 337.6 315.6 0 0CL +ATOM 621 COM A 207 379.6 395.2 85.6 0 0CL +ATOM 622 C1 A 207 380.2 394.7 86.6 0 0CL +ATOM 623 B1 A 207 380.5 395.2 85.2 0 0CL +ATOM 624 COM A 208 124.9 182.7 60.5 0 0CL +ATOM 625 C1 A 208 125.4 183.9 60.7 0 0CL +ATOM 626 B1 A 208 125.3 182.5 61.5 0 0CL +ATOM 627 COM A 209 154.5 321.9 291.4 0 0CL +ATOM 628 C1 A 209 154.3 323.2 291.6 0 0CL +ATOM 629 B1 A 209 155.0 322.0 292.3 0 0CL +ATOM 630 COM A 210 4.5 430.9 493.5 0 0CL +ATOM 631 C1 A 210 4.7 432.0 494.1 0 0CL +ATOM 632 B1 A 210 5.4 430.6 493.9 0 0CL +ATOM 633 COM A 211 418.5 80.5 223.1 0 0CL +ATOM 634 C1 A 211 418.7 81.7 222.9 0 0CL +ATOM 635 B1 A 211 419.0 80.4 222.1 0 0CL +ATOM 636 COM A 212 338.4 131.8 103.0 0 0CL +ATOM 637 C1 A 212 338.0 132.5 103.9 0 0CL +ATOM 638 B1 A 212 339.1 131.4 103.7 0 0CL +ATOM 639 COM A 213 305.9 352.2 380.5 0 0CL +ATOM 640 C1 A 213 305.2 351.1 380.8 0 0CL +ATOM 641 B1 A 213 306.7 351.5 380.5 0 0CL +ATOM 642 COM A 214 222.1 489.9 58.6 0 0CL +ATOM 643 C1 A 214 222.8 490.8 58.0 0 0CL +ATOM 644 B1 A 214 221.4 490.6 58.7 0 0CL +ATOM 645 COM A 215 322.5 189.0 264.2 0 0CL +ATOM 646 C1 A 215 321.2 189.3 263.8 0 0CL +ATOM 647 B1 A 215 322.3 189.7 264.9 0 0CL +ATOM 648 COM A 216 206.0 438.9 429.0 0 0CL +ATOM 649 C1 A 216 204.9 439.5 429.2 0 0CL +ATOM 650 B1 A 216 206.3 439.7 428.5 0 0CL +ATOM 651 COM A 217 458.5 364.0 304.1 0 0CL +ATOM 652 C1 A 217 459.5 363.9 304.9 0 0CL +ATOM 653 B1 A 217 457.9 363.8 304.8 0 0CL +ATOM 654 COM A 218 342.9 146.0 444.8 0 0CL +ATOM 655 C1 A 218 343.3 146.8 445.7 0 0CL +ATOM 656 B1 A 218 343.0 145.3 445.6 0 0CL +ATOM 657 COM A 219 427.8 59.7 384.7 0 0CL +ATOM 658 C1 A 219 427.8 60.5 383.6 0 0CL +ATOM 659 B1 A 219 428.3 59.0 384.1 0 0CL +ATOM 660 COM A 220 266.9 299.8 264.5 0 0CL +ATOM 661 C1 A 220 268.0 299.1 264.6 0 0CL +ATOM 662 B1 A 220 267.4 300.6 264.8 0 0CL +ATOM 663 COM A 221 480.4 416.4 280.3 0 0CL +ATOM 664 C1 A 221 479.2 416.3 279.7 0 0CL +ATOM 665 B1 A 221 480.6 415.6 279.6 0 0CL +ATOM 666 COM A 222 480.3 484.8 187.0 0 0CL +ATOM 667 C1 A 222 480.1 486.0 186.7 0 0CL +ATOM 668 B1 A 222 480.3 484.7 186.0 0 0CL +ATOM 669 COM A 223 250.1 249.4 273.4 0 0CL +ATOM 670 C1 A 223 250.1 250.7 273.5 0 0CL +ATOM 671 B1 A 223 249.1 249.5 273.7 0 0CL +ATOM 672 COM A 224 127.4 370.7 316.1 0 0CL +ATOM 673 C1 A 224 126.6 370.9 317.1 0 0CL +ATOM 674 B1 A 224 127.0 369.7 316.1 0 0CL +ATOM 675 COM A 225 36.0 56.3 141.3 0 0CL +ATOM 676 C1 A 225 36.7 55.3 141.9 0 0CL +ATOM 677 B1 A 225 35.7 55.6 140.7 0 0CL +ATOM 678 COM A 226 366.8 482.7 122.2 0 0CL +ATOM 679 C1 A 226 366.8 482.2 123.5 0 0CL +ATOM 680 B1 A 226 366.9 481.7 122.0 0 0CL +ATOM 681 COM A 227 170.7 446.0 325.3 0 0CL +ATOM 682 C1 A 227 171.3 447.1 325.2 0 0CL +ATOM 683 B1 A 227 170.5 446.1 324.3 0 0CL +ATOM 684 COM A 228 211.0 127.6 25.2 0 0CL +ATOM 685 C1 A 228 210.9 126.5 25.9 0 0CL +ATOM 686 B1 A 228 210.2 128.0 25.7 0 0CL +ATOM 687 COM A 229 47.9 92.6 142.6 0 0CL +ATOM 688 C1 A 229 47.4 93.0 141.4 0 0CL +ATOM 689 B1 A 229 48.3 91.8 142.0 0 0CL +ATOM 690 COM A 230 277.8 421.9 388.3 0 0CL +ATOM 691 C1 A 230 278.1 420.6 388.2 0 0CL +ATOM 692 B1 A 230 277.6 421.7 389.3 0 0CL +ATOM 693 COM A 231 119.0 35.6 103.2 0 0CL +ATOM 694 C1 A 231 118.3 34.5 103.4 0 0CL +ATOM 695 B1 A 231 118.2 35.7 102.5 0 0CL +ATOM 696 COM A 232 257.7 57.3 267.2 0 0CL +ATOM 697 C1 A 232 258.7 57.0 266.3 0 0CL +ATOM 698 B1 A 232 258.3 58.2 267.3 0 0CL +ATOM 699 COM A 233 79.6 172.5 224.3 0 0CL +ATOM 700 C1 A 233 79.0 171.4 224.2 0 0CL +ATOM 701 B1 A 233 80.0 172.1 225.1 0 0CL +ATOM 702 COM A 234 477.9 468.8 96.7 0 0CL +ATOM 703 C1 A 234 476.7 468.9 96.1 0 0CL +ATOM 704 B1 A 234 477.4 468.0 97.2 0 0CL +ATOM 705 COM A 235 408.6 60.1 323.1 0 0CL +ATOM 706 C1 A 235 407.9 61.1 322.6 0 0CL +ATOM 707 B1 A 235 409.4 60.7 322.9 0 0CL +ATOM 708 COM A 236 352.3 450.4 468.1 0 0CL +ATOM 709 C1 A 236 351.0 450.7 468.5 0 0CL +ATOM 710 B1 A 236 352.3 451.4 467.9 0 0CL +ATOM 711 COM A 237 485.9 167.2 196.1 0 0CL +ATOM 712 C1 A 237 485.8 168.5 196.4 0 0CL +ATOM 713 B1 A 237 485.3 167.5 195.3 0 0CL +ATOM 714 COM A 238 97.7 207.6 458.4 0 0CL +ATOM 715 C1 A 238 97.2 207.2 457.3 0 0CL +ATOM 716 B1 A 238 97.8 208.5 457.9 0 0CL +ATOM 717 COM A 239 96.6 118.6 228.1 0 0CL +ATOM 718 C1 A 239 97.5 118.4 229.0 0 0CL +ATOM 719 B1 A 239 96.2 117.6 228.3 0 0CL +ATOM 720 COM A 240 472.7 53.4 194.4 0 0CL +ATOM 721 C1 A 240 472.1 53.0 195.5 0 0CL +ATOM 722 B1 A 240 473.4 52.7 194.6 0 0CL +ATOM 723 COM A 241 44.6 198.9 482.5 0 0CL +ATOM 724 C1 A 241 45.6 198.9 483.4 0 0CL +ATOM 725 B1 A 241 45.4 198.9 481.8 0 0CL +ATOM 726 COM A 242 109.1 182.2 499.4 0 0CL +ATOM 727 C1 A 242 109.7 181.1 499.2 0 0CL +ATOM 728 B1 A 242 109.0 182.3 498.4 0 0CL +ATOM 729 COM A 243 405.3 488.2 43.1 0 0CL +ATOM 730 C1 A 243 405.2 489.2 44.0 0 0CL +ATOM 731 B1 A 243 404.3 488.1 43.4 0 0CL +ATOM 732 COM A 244 332.0 379.0 494.3 0 0CL +ATOM 733 C1 A 244 331.8 378.6 493.1 0 0CL +ATOM 734 B1 A 244 332.9 378.4 494.3 0 0CL +ATOM 735 COM A 245 32.0 39.3 110.7 0 0CL +ATOM 736 C1 A 245 33.0 40.1 111.1 0 0CL +ATOM 737 B1 A 245 32.5 39.4 109.7 0 0CL +ATOM 738 COM A 246 129.1 7.0 226.9 0 0CL +ATOM 739 C1 A 246 130.0 6.2 227.2 0 0CL +ATOM 740 B1 A 246 128.9 6.4 226.1 0 0CL +ATOM 741 COM A 247 112.9 175.5 437.6 0 0CL +ATOM 742 C1 A 247 113.1 175.2 436.4 0 0CL +ATOM 743 B1 A 247 112.1 174.9 437.5 0 0CL +ATOM 744 COM A 248 186.8 260.2 338.0 0 0CL +ATOM 745 C1 A 248 187.2 259.4 338.9 0 0CL +ATOM 746 B1 A 248 187.6 260.0 337.5 0 0CL +ATOM 747 COM A 249 474.0 21.2 405.3 0 0CL +ATOM 748 C1 A 249 473.3 22.0 404.5 0 0CL +ATOM 749 B1 A 249 473.9 22.0 406.0 0 0CL +ATOM 750 COM A 250 153.0 31.8 290.8 0 0CL +ATOM 751 C1 A 250 152.8 32.5 289.7 0 0CL +ATOM 752 B1 A 250 152.4 31.1 290.4 0 0CL +ATOM 753 COM A 251 478.2 347.8 407.4 0 0CL +ATOM 754 C1 A 251 477.3 347.5 406.6 0 0CL +ATOM 755 B1 A 251 477.8 348.8 407.3 0 0CL +ATOM 756 COM A 252 481.9 152.3 184.0 0 0CL +ATOM 757 C1 A 252 480.9 153.2 183.9 0 0CL +ATOM 758 B1 A 252 481.3 151.7 183.4 0 0CL +ATOM 759 COM A 253 16.5 388.4 238.0 0 0CL +ATOM 760 C1 A 253 15.6 388.1 239.0 0 0CL +ATOM 761 B1 A 253 16.5 389.3 238.5 0 0CL +ATOM 762 COM A 254 79.5 122.9 431.6 0 0CL +ATOM 763 C1 A 254 79.0 123.5 430.6 0 0CL +ATOM 764 B1 A 254 80.4 123.3 431.3 0 0CL +ATOM 765 COM A 255 266.4 489.2 300.7 0 0CL +ATOM 766 C1 A 255 265.7 490.3 300.5 0 0CL +ATOM 767 B1 A 255 267.2 489.7 300.2 0 0CL +ATOM 768 COM A 256 207.1 151.5 212.4 0 0CL +ATOM 769 C1 A 256 205.8 151.6 212.8 0 0CL +ATOM 770 B1 A 256 206.7 151.5 211.4 0 0CL +ATOM 771 COM A 257 37.2 150.2 228.2 0 0CL +ATOM 772 C1 A 257 36.0 150.3 228.7 0 0CL +ATOM 773 B1 A 257 36.8 149.8 227.4 0 0CL +ATOM 774 COM A 258 157.8 208.1 220.2 0 0CL +ATOM 775 C1 A 258 158.7 208.2 221.2 0 0CL +ATOM 776 B1 A 258 158.6 208.3 219.6 0 0CL +ATOM 777 COM A 259 239.5 405.7 258.6 0 0CL +ATOM 778 C1 A 259 238.2 405.7 258.3 0 0CL +ATOM 779 B1 A 259 239.6 406.2 257.8 0 0CL +ATOM 780 COM A 260 216.0 31.1 119.5 0 0CL +ATOM 781 C1 A 260 214.7 31.4 119.7 0 0CL +ATOM 782 B1 A 260 215.9 31.8 118.7 0 0CL +ATOM 783 COM A 261 34.7 332.0 74.4 0 0CL +ATOM 784 C1 A 261 34.1 332.4 73.3 0 0CL +ATOM 785 B1 A 261 35.3 332.8 74.2 0 0CL +ATOM 786 COM A 262 180.8 274.5 479.2 0 0CL +ATOM 787 C1 A 262 181.4 273.4 478.8 0 0CL +ATOM 788 B1 A 262 181.5 274.4 480.0 0 0CL +ATOM 789 COM A 263 82.8 280.4 147.5 0 0CL +ATOM 790 C1 A 263 81.6 280.7 147.4 0 0CL +ATOM 791 B1 A 263 82.5 279.8 148.3 0 0CL +ATOM 792 COM A 264 29.8 158.3 147.1 0 0CL +ATOM 793 C1 A 264 30.8 157.7 146.4 0 0CL +ATOM 794 B1 A 264 30.6 158.5 147.8 0 0CL +ATOM 795 COM A 265 191.9 480.8 154.4 0 0CL +ATOM 796 C1 A 265 192.0 479.6 153.9 0 0CL +ATOM 797 B1 A 265 192.7 481.0 153.8 0 0CL +ATOM 798 COM A 266 435.0 174.7 61.6 0 0CL +ATOM 799 C1 A 266 434.6 175.7 62.5 0 0CL +ATOM 800 B1 A 266 435.4 175.5 61.1 0 0CL +ATOM 801 COM A 267 398.7 494.8 26.2 0 0CL +ATOM 802 C1 A 267 397.8 493.9 25.7 0 0CL +ATOM 803 B1 A 267 398.9 495.0 25.2 0 0CL +ATOM 804 COM A 268 492.1 63.5 431.6 0 0CL +ATOM 805 C1 A 268 492.0 62.3 431.1 0 0CL +ATOM 806 B1 A 268 491.9 63.1 432.5 0 0CL +ATOM 807 COM A 269 374.2 399.5 263.0 0 0CL +ATOM 808 C1 A 269 375.3 400.1 263.5 0 0CL +ATOM 809 B1 A 269 374.6 398.7 263.5 0 0CL +ATOM 810 COM A 270 405.1 480.3 261.2 0 0CL +ATOM 811 C1 A 270 404.7 480.5 260.0 0 0CL +ATOM 812 B1 A 270 404.4 481.0 261.5 0 0CL +ATOM 813 COM A 271 116.4 167.2 356.0 0 0CL +ATOM 814 C1 A 271 115.6 166.2 355.8 0 0CL +ATOM 815 B1 A 271 115.6 167.8 356.0 0 0CL +ATOM 816 COM A 272 35.5 379.7 414.0 0 0CL +ATOM 817 C1 A 272 35.0 378.5 413.7 0 0CL +ATOM 818 B1 A 272 34.5 380.0 413.7 0 0CL +ATOM 819 COM A 273 32.9 458.9 430.5 0 0CL +ATOM 820 C1 A 273 32.2 459.0 429.5 0 0CL +ATOM 821 B1 A 273 32.8 457.9 430.4 0 0CL +ATOM 822 COM A 274 205.0 120.6 271.8 0 0CL +ATOM 823 C1 A 274 205.1 119.7 270.9 0 0CL +ATOM 824 B1 A 274 204.9 121.2 271.0 0 0CL +ATOM 825 COM A 275 315.4 405.6 14.6 0 0CL +ATOM 826 C1 A 275 315.4 405.1 15.8 0 0CL +ATOM 827 B1 A 275 316.4 405.5 14.6 0 0CL +ATOM 828 COM A 276 328.0 65.7 26.0 0 0CL +ATOM 829 C1 A 276 328.8 66.3 25.1 0 0CL +ATOM 830 B1 A 276 327.3 66.4 25.8 0 0CL +ATOM 831 COM A 277 327.2 78.3 355.6 0 0CL +ATOM 832 C1 A 277 328.2 78.4 354.8 0 0CL +ATOM 833 B1 A 277 327.8 78.6 356.3 0 0CL +ATOM 834 COM A 278 131.5 79.7 193.8 0 0CL +ATOM 835 C1 A 278 132.5 80.2 194.5 0 0CL +ATOM 836 B1 A 278 130.9 80.4 194.3 0 0CL +ATOM 837 COM A 279 333.6 101.9 40.2 0 0CL +ATOM 838 C1 A 279 333.7 103.2 40.0 0 0CL +ATOM 839 B1 A 279 334.5 102.0 40.7 0 0CL +ATOM 840 COM A 280 210.8 131.5 181.4 0 0CL +ATOM 841 C1 A 280 211.2 132.6 180.9 0 0CL +ATOM 842 B1 A 280 210.7 131.2 180.4 0 0CL +ATOM 843 COM A 281 393.1 391.3 159.6 0 0CL +ATOM 844 C1 A 281 394.1 391.6 158.8 0 0CL +ATOM 845 B1 A 281 393.6 390.5 159.9 0 0CL +ATOM 846 COM A 282 147.5 368.5 416.6 0 0CL +ATOM 847 C1 A 282 147.5 368.3 415.4 0 0CL +ATOM 848 B1 A 282 147.8 369.4 416.4 0 0CL +ATOM 849 COM A 283 316.3 211.4 87.4 0 0CL +ATOM 850 C1 A 283 317.6 211.2 87.2 0 0CL +ATOM 851 B1 A 283 316.3 210.3 87.5 0 0CL +ATOM 852 COM A 284 69.1 388.0 429.8 0 0CL +ATOM 853 C1 A 284 68.2 388.5 430.7 0 0CL +ATOM 854 B1 A 284 68.9 387.1 430.3 0 0CL +ATOM 855 COM A 285 141.9 6.9 177.9 0 0CL +ATOM 856 C1 A 285 142.6 6.0 178.4 0 0CL +ATOM 857 B1 A 285 142.6 7.5 178.3 0 0CL +ATOM 858 COM A 286 410.3 423.2 27.9 0 0CL +ATOM 859 C1 A 286 410.7 422.9 26.6 0 0CL +ATOM 860 B1 A 286 409.6 422.6 27.6 0 0CL +ATOM 861 COM A 287 470.9 487.9 200.8 0 0CL +ATOM 862 C1 A 287 471.7 488.0 201.8 0 0CL +ATOM 863 B1 A 287 470.2 487.8 201.5 0 0CL +ATOM 864 COM A 288 388.7 263.4 185.3 0 0CL +ATOM 865 C1 A 288 388.0 264.3 185.9 0 0CL +ATOM 866 B1 A 288 389.5 264.1 185.3 0 0CL +ATOM 867 COM A 289 86.7 327.5 477.9 0 0CL +ATOM 868 C1 A 289 87.8 328.4 477.8 0 0CL +ATOM 869 B1 A 289 86.2 328.3 477.5 0 0CL +ATOM 870 COM A 290 159.6 306.8 84.7 0 0CL +ATOM 871 C1 A 290 160.4 306.3 85.7 0 0CL +ATOM 872 B1 A 290 160.3 306.4 84.1 0 0CL +ATOM 873 COM A 291 81.4 257.5 223.8 0 0CL +ATOM 874 C1 A 291 82.6 258.0 223.6 0 0CL +ATOM 875 B1 A 291 81.1 258.4 223.8 0 0CL +ATOM 876 COM A 292 489.1 212.5 375.6 0 0CL +ATOM 877 C1 A 292 489.2 213.2 374.5 0 0CL +ATOM 878 B1 A 292 489.0 213.4 376.1 0 0CL +ATOM 879 COM A 293 7.4 17.0 335.3 0 0CL +ATOM 880 C1 A 293 8.4 16.3 334.7 0 0CL +ATOM 881 B1 A 293 7.9 16.9 336.2 0 0CL +ATOM 882 COM A 294 412.3 458.5 7.5 0 0CL +ATOM 883 C1 A 294 412.5 459.6 8.1 0 0CL +ATOM 884 B1 A 294 412.6 458.1 8.5 0 0CL +ATOM 885 COM A 295 477.8 141.7 220.5 0 0CL +ATOM 886 C1 A 295 478.5 141.4 219.5 0 0CL +ATOM 887 B1 A 295 477.9 142.7 220.1 0 0CL +ATOM 888 COM A 296 424.3 376.1 247.8 0 0CL +ATOM 889 C1 A 296 424.4 377.2 247.1 0 0CL +ATOM 890 B1 A 296 423.9 375.7 246.9 0 0CL +ATOM 891 COM A 297 398.4 101.8 377.4 0 0CL +ATOM 892 C1 A 297 399.6 102.4 377.4 0 0CL +ATOM 893 B1 A 297 398.1 102.7 377.1 0 0CL +ATOM 894 COM A 298 302.0 202.7 416.5 0 0CL +ATOM 895 C1 A 298 300.8 202.2 416.3 0 0CL +ATOM 896 B1 A 298 301.8 203.2 415.6 0 0CL +ATOM 897 COM A 299 96.1 30.3 119.2 0 0CL +ATOM 898 C1 A 299 95.4 31.3 119.6 0 0CL +ATOM 899 B1 A 299 96.8 31.0 118.8 0 0CL +ATOM 900 COM B 300 472.3 335.4 440.3 0 0CL +ATOM 901 C1 B 300 473.1 335.0 439.2 0 0CL +ATOM 902 A1 B 300 472.4 335.7 439.8 0 0CL +ATOM 903 COM B 301 477.9 350.0 407.3 0 0CL +ATOM 904 C1 B 301 477.2 349.3 406.2 0 0CL +ATOM 905 A1 B 301 477.9 349.4 407.2 0 0CL +ATOM 906 COM B 302 80.4 259.3 224.3 0 0CL +ATOM 907 C1 B 302 81.8 259.5 224.4 0 0CL +ATOM 908 A1 B 302 80.8 258.9 224.2 0 0CL +ATOM 909 COM B 303 219.4 457.6 462.4 0 0CL +ATOM 910 C1 B 303 219.8 458.8 461.6 0 0CL +ATOM 911 A1 B 303 219.4 458.1 462.6 0 0CL +ATOM 912 COM B 304 410.6 60.9 322.7 0 0CL +ATOM 913 C1 B 304 409.7 61.6 321.9 0 0CL +ATOM 914 A1 B 304 410.0 60.7 322.7 0 0CL +ATOM 915 COM B 305 162.9 231.4 15.6 0 0CL +ATOM 916 C1 B 305 161.8 230.9 16.3 0 0CL +ATOM 917 A1 B 305 162.9 231.3 16.2 0 0CL +ATOM 918 COM B 306 226.5 203.2 59.5 0 0CL +ATOM 919 C1 B 306 227.7 203.5 58.9 0 0CL +ATOM 920 A1 B 306 226.6 203.8 59.4 0 0CL +ATOM 921 COM B 307 109.0 182.9 497.3 0 0CL +ATOM 922 C1 B 307 109.9 181.8 497.5 0 0CL +ATOM 923 A1 B 307 109.1 182.6 497.8 0 0CL +ATOM 924 COM B 308 127.2 368.5 316.0 0 0CL +ATOM 925 C1 B 308 126.8 369.0 317.3 0 0CL +ATOM 926 A1 B 308 127.2 369.1 316.2 0 0CL +ATOM 927 COM B 309 198.5 33.0 168.2 0 0CL +ATOM 928 C1 B 309 199.8 32.8 167.6 0 0CL +ATOM 929 A1 B 309 198.6 32.5 167.9 0 0CL +ATOM 930 COM B 310 97.5 31.4 117.9 0 0CL +ATOM 931 C1 B 310 96.4 32.2 118.2 0 0CL +ATOM 932 A1 B 310 97.0 31.2 118.3 0 0CL +ATOM 933 COM B 311 317.1 314.5 341.4 0 0CL +ATOM 934 C1 B 311 316.7 313.2 341.6 0 0CL +ATOM 935 A1 B 311 317.4 314.1 341.2 0 0CL +ATOM 936 COM B 312 423.2 375.0 246.2 0 0CL +ATOM 937 C1 B 312 423.1 376.4 245.9 0 0CL +ATOM 938 A1 B 312 423.5 375.4 246.6 0 0CL +ATOM 939 COM B 313 268.9 113.2 45.1 0 0CL +ATOM 940 C1 B 313 268.6 112.3 44.0 0 0CL +ATOM 941 A1 B 313 269.4 113.0 44.8 0 0CL +ATOM 942 COM B 314 84.6 64.9 43.1 0 0CL +ATOM 943 C1 B 314 84.9 65.6 41.9 0 0CL +ATOM 944 A1 B 314 85.2 65.1 43.0 0 0CL +ATOM 945 COM B 315 225.0 86.7 215.5 0 0CL +ATOM 946 C1 B 315 224.5 85.7 214.6 0 0CL +ATOM 947 A1 B 315 225.4 86.4 215.2 0 0CL +ATOM 948 COM B 316 428.7 57.9 383.7 0 0CL +ATOM 949 C1 B 316 428.2 58.9 382.7 0 0CL +ATOM 950 A1 B 316 428.4 58.4 383.8 0 0CL +ATOM 951 COM B 317 480.1 484.0 185.0 0 0CL +ATOM 952 C1 B 317 479.6 485.4 185.0 0 0CL +ATOM 953 A1 B 317 480.1 484.3 185.5 0 0CL +ATOM 954 COM B 318 317.6 405.8 14.4 0 0CL +ATOM 955 C1 B 318 317.3 405.5 15.8 0 0CL +ATOM 956 A1 B 318 317.0 405.7 14.6 0 0CL +ATOM 957 COM B 319 480.9 150.6 183.0 0 0CL +ATOM 958 C1 B 319 479.9 151.6 183.3 0 0CL +ATOM 959 A1 B 319 481.1 151.1 183.3 0 0CL +ATOM 960 COM B 320 399.6 495.4 24.3 0 0CL +ATOM 961 C1 B 320 398.8 494.2 24.1 0 0CL +ATOM 962 A1 B 320 399.3 495.1 24.7 0 0CL +ATOM 963 COM B 321 409.3 465.1 492.9 0 0CL +ATOM 964 C1 B 321 408.7 464.0 492.3 0 0CL +ATOM 965 A1 B 321 408.7 464.9 493.1 0 0CL +ATOM 966 COM B 322 335.6 101.6 41.1 0 0CL +ATOM 967 C1 B 322 335.6 102.9 40.4 0 0CL +ATOM 968 A1 B 322 335.1 101.8 40.8 0 0CL +ATOM 969 COM B 323 397.4 489.9 243.2 0 0CL +ATOM 970 C1 B 323 397.3 491.0 242.4 0 0CL +ATOM 971 A1 B 323 397.4 489.8 242.6 0 0CL +ATOM 972 COM B 324 481.2 414.5 279.4 0 0CL +ATOM 973 C1 B 324 479.8 414.6 279.2 0 0CL +ATOM 974 A1 B 324 480.8 415.0 279.6 0 0CL +ATOM 975 COM B 325 162.2 127.2 130.1 0 0CL +ATOM 976 C1 B 325 161.6 127.7 131.3 0 0CL +ATOM 977 A1 B 325 162.4 127.6 130.4 0 0CL +ATOM 978 COM B 326 111.0 174.5 437.8 0 0CL +ATOM 979 C1 B 326 111.3 174.6 436.4 0 0CL +ATOM 980 A1 B 326 111.5 174.8 437.6 0 0CL +ATOM 981 COM B 327 117.9 36.1 101.4 0 0CL +ATOM 982 C1 B 327 117.6 34.8 101.7 0 0CL +ATOM 983 A1 B 327 118.1 35.9 101.8 0 0CL +ATOM 984 COM B 328 92.0 385.6 259.2 0 0CL +ATOM 985 C1 B 328 91.7 385.7 260.5 0 0CL +ATOM 986 A1 B 328 91.7 386.0 259.4 0 0CL +ATOM 987 COM B 329 440.5 413.1 497.7 0 0CL +ATOM 988 C1 B 329 440.6 412.8 496.3 0 0CL +ATOM 989 A1 B 329 440.9 413.4 497.3 0 0CL +ATOM 990 COM B 330 216.1 32.2 117.6 0 0CL +ATOM 991 C1 B 330 214.7 32.0 117.9 0 0CL +ATOM 992 A1 B 330 216.0 31.9 118.1 0 0CL +ATOM 993 COM B 331 220.3 106.2 18.5 0 0CL +ATOM 994 C1 B 331 220.5 105.4 19.7 0 0CL +ATOM 995 A1 B 331 220.8 106.3 18.8 0 0CL +ATOM 996 COM B 332 16.6 390.5 238.5 0 0CL +ATOM 997 C1 B 332 15.5 390.0 239.2 0 0CL +ATOM 998 A1 B 332 16.5 389.9 238.5 0 0CL +ATOM 999 COM B 333 367.3 34.4 431.3 0 0CL +ATOM 1000 C1 B 333 367.7 34.2 432.6 0 0CL +ATOM 1001 A1 B 333 367.0 34.6 431.7 0 0CL +ATOM 1002 COM B 334 330.3 178.8 269.4 0 0CL +ATOM 1003 C1 B 334 330.9 177.7 270.0 0 0CL +ATOM 1004 A1 B 334 330.1 178.2 269.4 0 0CL +ATOM 1005 COM B 335 80.4 172.2 226.3 0 0CL +ATOM 1006 C1 B 335 79.4 171.3 226.1 0 0CL +ATOM 1007 A1 B 335 80.1 172.2 225.8 0 0CL +ATOM 1008 COM B 336 343.2 144.1 445.9 0 0CL +ATOM 1009 C1 B 336 343.9 145.2 446.6 0 0CL +ATOM 1010 A1 B 336 343.2 144.7 445.7 0 0CL +ATOM 1011 COM B 337 267.5 301.7 265.5 0 0CL +ATOM 1012 C1 B 337 268.4 300.6 265.8 0 0CL +ATOM 1013 A1 B 337 267.4 301.1 265.3 0 0CL +ATOM 1014 COM B 338 40.0 12.8 38.1 0 0CL +ATOM 1015 C1 B 338 39.7 13.1 39.5 0 0CL +ATOM 1016 A1 B 338 39.6 13.2 38.3 0 0CL +ATOM 1017 COM B 339 390.5 264.6 184.9 0 0CL +ATOM 1018 C1 B 339 389.4 265.5 185.3 0 0CL +ATOM 1019 A1 B 339 389.9 264.4 185.0 0 0CL +ATOM 1020 COM B 340 381.2 69.0 468.6 0 0CL +ATOM 1021 C1 B 340 382.0 68.0 467.9 0 0CL +ATOM 1022 A1 B 340 381.7 68.9 468.8 0 0CL +ATOM 1023 COM B 341 167.3 184.9 37.6 0 0CL +ATOM 1024 C1 B 341 168.2 183.9 38.0 0 0CL +ATOM 1025 A1 B 341 167.7 184.6 37.2 0 0CL +ATOM 1026 COM B 342 232.7 467.0 166.6 0 0CL +ATOM 1027 C1 B 342 233.9 466.3 166.1 0 0CL +ATOM 1028 A1 B 342 232.7 466.4 166.4 0 0CL +ATOM 1029 COM B 343 237.7 167.3 346.1 0 0CL +ATOM 1030 C1 B 343 239.1 167.1 346.2 0 0CL +ATOM 1031 A1 B 343 238.0 167.4 346.7 0 0CL +ATOM 1032 COM B 344 387.4 255.7 9.8 0 0CL +ATOM 1033 C1 B 344 386.6 255.9 11.0 0 0CL +ATOM 1034 A1 B 344 386.8 255.5 9.8 0 0CL +ATOM 1035 COM B 345 359.1 247.9 21.7 0 0CL +ATOM 1036 C1 B 345 360.2 247.9 20.8 0 0CL +ATOM 1037 A1 B 345 359.6 247.4 21.7 0 0CL +ATOM 1038 COM B 346 328.2 78.6 357.5 0 0CL +ATOM 1039 C1 B 346 329.2 78.3 356.5 0 0CL +ATOM 1040 A1 B 346 328.0 78.5 356.9 0 0CL +ATOM 1041 COM B 347 181.5 59.7 77.0 0 0CL +ATOM 1042 C1 B 347 182.7 60.5 77.1 0 0CL +ATOM 1043 A1 B 347 181.5 60.3 77.2 0 0CL +ATOM 1044 COM B 348 279.4 493.2 492.8 0 0CL +ATOM 1045 C1 B 348 280.8 492.9 492.7 0 0CL +ATOM 1046 A1 B 348 279.7 493.2 492.2 0 0CL +ATOM 1047 COM B 349 129.8 80.7 194.8 0 0CL +ATOM 1048 C1 B 349 131.0 80.7 195.7 0 0CL +ATOM 1049 A1 B 349 130.4 80.4 194.7 0 0CL +ATOM 1050 COM B 350 397.0 23.5 71.6 0 0CL +ATOM 1051 C1 B 350 396.1 23.6 72.8 0 0CL +ATOM 1052 A1 B 350 396.7 23.0 71.9 0 0CL +ATOM 1053 COM B 351 474.3 22.7 406.9 0 0CL +ATOM 1054 C1 B 351 473.9 23.4 405.7 0 0CL +ATOM 1055 A1 B 351 474.2 22.4 406.4 0 0CL +ATOM 1056 COM B 352 352.7 452.4 467.3 0 0CL +ATOM 1057 C1 B 352 351.3 452.3 467.5 0 0CL +ATOM 1058 A1 B 352 352.5 451.9 467.5 0 0CL +ATOM 1059 COM B 353 95.8 116.5 228.0 0 0CL +ATOM 1060 C1 B 353 97.0 116.5 228.6 0 0CL +ATOM 1061 A1 B 353 96.1 117.0 228.1 0 0CL +ATOM 1062 COM B 354 435.6 176.1 60.0 0 0CL +ATOM 1063 C1 B 354 434.8 176.8 60.9 0 0CL +ATOM 1064 A1 B 354 435.4 175.8 60.5 0 0CL +ATOM 1065 COM B 355 193.8 481.6 153.6 0 0CL +ATOM 1066 C1 B 355 193.8 480.2 153.4 0 0CL +ATOM 1067 A1 B 355 193.3 481.3 153.8 0 0CL +ATOM 1068 COM B 356 35.4 55.2 139.5 0 0CL +ATOM 1069 C1 B 356 36.4 54.5 140.2 0 0CL +ATOM 1070 A1 B 356 35.6 55.4 140.0 0 0CL +ATOM 1071 COM B 357 478.1 143.9 220.3 0 0CL +ATOM 1072 C1 B 357 479.1 143.2 219.5 0 0CL +ATOM 1073 A1 B 357 478.1 143.3 220.2 0 0CL +ATOM 1074 COM B 358 297.1 279.7 257.9 0 0CL +ATOM 1075 C1 B 358 296.6 278.6 257.2 0 0CL +ATOM 1076 A1 B 358 297.4 279.4 257.5 0 0CL +ATOM 1077 COM B 359 44.6 463.5 51.0 0 0CL +ATOM 1078 C1 B 359 44.5 464.9 50.6 0 0CL +ATOM 1079 A1 B 359 45.0 464.0 51.1 0 0CL +ATOM 1080 COM B 360 472.8 107.9 307.4 0 0CL +ATOM 1081 C1 B 360 474.0 108.1 306.6 0 0CL +ATOM 1082 A1 B 360 472.9 107.6 306.8 0 0CL +ATOM 1083 COM B 361 231.6 463.3 159.8 0 0CL +ATOM 1084 C1 B 361 232.1 463.3 161.1 0 0CL +ATOM 1085 A1 B 361 232.0 463.7 160.0 0 0CL +ATOM 1086 COM B 362 493.1 160.8 67.1 0 0CL +ATOM 1087 C1 B 362 492.1 159.8 67.4 0 0CL +ATOM 1088 A1 B 362 492.6 160.9 67.5 0 0CL +ATOM 1089 COM B 363 36.8 148.9 226.5 0 0CL +ATOM 1090 C1 B 363 35.7 148.8 227.4 0 0CL +ATOM 1091 A1 B 363 36.8 149.2 227.0 0 0CL +ATOM 1092 COM B 364 220.5 491.2 59.4 0 0CL +ATOM 1093 C1 B 364 221.7 492.0 59.0 0 0CL +ATOM 1094 A1 B 364 221.0 491.0 59.1 0 0CL +ATOM 1095 COM B 365 51.6 6.7 154.7 0 0CL +ATOM 1096 C1 B 365 52.2 6.1 153.6 0 0CL +ATOM 1097 A1 B 365 52.0 6.3 154.7 0 0CL +ATOM 1098 COM B 366 489.2 214.1 377.1 0 0CL +ATOM 1099 C1 B 366 489.6 214.6 375.8 0 0CL +ATOM 1100 A1 B 366 489.2 213.8 376.6 0 0CL +ATOM 1101 COM B 367 307.9 351.3 380.7 0 0CL +ATOM 1102 C1 B 367 306.9 350.4 381.3 0 0CL +ATOM 1103 A1 B 367 307.3 351.4 380.7 0 0CL +ATOM 1104 COM B 368 142.8 8.6 178.9 0 0CL +ATOM 1105 C1 B 368 143.1 7.4 179.6 0 0CL +ATOM 1106 A1 B 368 142.6 8.1 178.7 0 0CL +ATOM 1107 COM B 369 64.8 191.1 402.6 0 0CL +ATOM 1108 C1 B 369 65.3 191.4 401.4 0 0CL +ATOM 1109 A1 B 369 65.3 191.4 402.6 0 0CL +ATOM 1110 COM B 370 283.6 198.2 258.3 0 0CL +ATOM 1111 C1 B 370 283.9 199.5 257.6 0 0CL +ATOM 1112 A1 B 370 283.4 198.4 257.8 0 0CL +ATOM 1113 COM B 371 36.5 38.8 475.8 0 0CL +ATOM 1114 C1 B 371 35.2 39.3 475.4 0 0CL +ATOM 1115 A1 B 371 36.1 38.9 476.2 0 0CL +ATOM 1116 COM B 372 155.9 321.6 293.0 0 0CL +ATOM 1117 C1 B 372 155.8 323.0 292.7 0 0CL +ATOM 1118 A1 B 372 155.6 321.8 292.6 0 0CL +ATOM 1119 COM B 373 315.8 209.2 87.3 0 0CL +ATOM 1120 C1 B 373 317.1 209.4 86.8 0 0CL +ATOM 1121 A1 B 373 316.1 209.8 87.3 0 0CL +ATOM 1122 COM B 374 37.3 406.8 165.5 0 0CL +ATOM 1123 C1 B 374 38.5 407.5 165.7 0 0CL +ATOM 1124 A1 B 374 37.3 407.4 165.6 0 0CL +ATOM 1125 COM B 375 36.8 61.7 161.2 0 0CL +ATOM 1126 C1 B 375 37.3 62.7 160.3 0 0CL +ATOM 1127 A1 B 375 36.6 61.8 160.7 0 0CL +ATOM 1128 COM B 376 287.3 148.3 149.4 0 0CL +ATOM 1129 C1 B 376 287.1 148.0 148.0 0 0CL +ATOM 1130 A1 B 376 287.2 148.7 149.0 0 0CL +ATOM 1131 COM B 377 221.4 490.1 355.2 0 0CL +ATOM 1132 C1 B 377 221.1 491.4 355.8 0 0CL +ATOM 1133 A1 B 377 221.1 490.2 355.7 0 0CL +ATOM 1134 COM B 378 448.6 2.6 210.1 0 0CL +ATOM 1135 C1 B 378 447.4 3.3 210.0 0 0CL +ATOM 1136 A1 B 378 448.2 2.4 209.8 0 0CL +ATOM 1137 COM B 379 450.1 128.0 27.9 0 0CL +ATOM 1138 C1 B 379 448.8 128.6 27.7 0 0CL +ATOM 1139 A1 B 379 450.0 128.4 27.5 0 0CL +ATOM 1140 COM B 380 170.6 226.7 328.8 0 0CL +ATOM 1141 C1 B 380 171.4 225.6 328.6 0 0CL +ATOM 1142 A1 B 380 171.1 226.7 329.1 0 0CL +ATOM 1143 COM B 381 26.1 410.1 161.7 0 0CL +ATOM 1144 C1 B 381 24.9 410.7 161.4 0 0CL +ATOM 1145 A1 B 381 26.0 410.3 161.2 0 0CL +ATOM 1146 COM B 382 498.8 275.8 345.6 0 0CL +ATOM 1147 C1 B 382 497.5 275.4 345.4 0 0CL +ATOM 1148 A1 B 382 498.5 275.4 346.0 0 0CL +ATOM 1149 COM B 383 401.7 405.0 304.3 0 0CL +ATOM 1150 C1 B 383 401.9 406.3 303.7 0 0CL +ATOM 1151 A1 B 383 402.2 405.3 304.4 0 0CL +ATOM 1152 COM B 384 32.7 456.7 430.8 0 0CL +ATOM 1153 C1 B 384 31.7 457.2 429.9 0 0CL +ATOM 1154 A1 B 384 32.7 457.3 430.7 0 0CL +ATOM 1155 COM B 385 413.1 457.2 9.2 0 0CL +ATOM 1156 C1 B 385 413.6 458.6 9.3 0 0CL +ATOM 1157 A1 B 385 413.0 457.7 8.8 0 0CL +ATOM 1158 COM B 386 340.1 130.9 104.0 0 0CL +ATOM 1159 C1 B 386 339.7 132.0 104.7 0 0CL +ATOM 1160 A1 B 386 339.7 131.2 103.8 0 0CL +ATOM 1161 COM B 387 154.4 429.1 344.5 0 0CL +ATOM 1162 C1 B 387 153.7 428.8 343.2 0 0CL +ATOM 1163 A1 B 387 153.8 429.2 344.4 0 0CL +ATOM 1164 COM B 388 456.9 363.2 305.3 0 0CL +ATOM 1165 C1 B 388 458.2 362.9 305.9 0 0CL +ATOM 1166 A1 B 388 457.4 363.4 305.1 0 0CL +ATOM 1167 COM B 389 105.1 171.0 203.0 0 0CL +ATOM 1168 C1 B 389 106.0 170.0 203.4 0 0CL +ATOM 1169 A1 B 389 105.0 170.4 202.9 0 0CL +ATOM 1170 COM B 390 148.5 370.4 416.7 0 0CL +ATOM 1171 C1 B 390 148.8 369.7 415.4 0 0CL +ATOM 1172 A1 B 390 148.3 369.8 416.6 0 0CL +ATOM 1173 COM B 391 419.2 79.8 221.0 0 0CL +ATOM 1174 C1 B 391 418.9 81.2 221.0 0 0CL +ATOM 1175 A1 B 391 419.0 80.1 221.5 0 0CL +ATOM 1176 COM B 392 41.6 347.6 361.4 0 0CL +ATOM 1177 C1 B 392 40.4 348.2 361.6 0 0CL +ATOM 1178 A1 B 392 41.4 347.8 360.9 0 0CL +ATOM 1179 COM B 393 328.8 73.6 359.5 0 0CL +ATOM 1180 C1 B 393 327.8 72.5 359.5 0 0CL +ATOM 1181 A1 B 393 328.8 73.2 359.0 0 0CL +ATOM 1182 COM B 394 304.3 30.8 385.5 0 0CL +ATOM 1183 C1 B 394 303.1 31.4 385.0 0 0CL +ATOM 1184 A1 B 394 303.7 30.6 385.7 0 0CL +ATOM 1185 COM B 395 403.3 487.3 43.6 0 0CL +ATOM 1186 C1 B 395 403.7 488.2 44.7 0 0CL +ATOM 1187 A1 B 395 403.8 487.6 43.6 0 0CL +ATOM 1188 COM B 396 326.5 67.2 26.2 0 0CL +ATOM 1189 C1 B 396 327.6 67.8 25.5 0 0CL +ATOM 1190 A1 B 396 327.0 66.9 26.1 0 0CL +ATOM 1191 COM B 397 484.3 167.2 194.6 0 0CL +ATOM 1192 C1 B 397 484.2 168.4 195.3 0 0CL +ATOM 1193 A1 B 397 484.7 167.3 195.0 0 0CL +ATOM 1194 COM B 398 250.1 417.5 55.5 0 0CL +ATOM 1195 C1 B 398 251.6 417.5 55.3 0 0CL +ATOM 1196 A1 B 398 250.5 417.1 55.7 0 0CL +ATOM 1197 COM B 399 248.1 249.0 274.3 0 0CL +ATOM 1198 C1 B 399 248.6 250.4 274.6 0 0CL +ATOM 1199 A1 B 399 248.6 249.3 274.1 0 0CL +ATOM 1200 COM B 400 491.4 63.1 433.6 0 0CL +ATOM 1201 C1 B 400 491.1 62.0 432.8 0 0CL +ATOM 1202 A1 B 400 491.5 63.1 433.0 0 0CL +ATOM 1203 COM B 401 429.3 219.8 123.0 0 0CL +ATOM 1204 C1 B 401 429.6 218.6 123.7 0 0CL +ATOM 1205 A1 B 401 429.8 219.7 123.2 0 0CL +ATOM 1206 COM B 402 393.7 389.3 160.2 0 0CL +ATOM 1207 C1 B 402 394.4 389.7 159.1 0 0CL +ATOM 1208 A1 B 402 393.6 389.8 160.0 0 0CL +ATOM 1209 COM B 403 148.1 462.9 404.3 0 0CL +ATOM 1210 C1 B 403 148.8 461.8 403.6 0 0CL +ATOM 1211 A1 B 403 148.1 462.9 403.7 0 0CL +ATOM 1212 COM B 404 160.9 306.4 83.0 0 0CL +ATOM 1213 C1 B 404 161.7 306.3 84.3 0 0CL +ATOM 1214 A1 B 404 160.7 306.5 83.6 0 0CL +ATOM 1215 COM B 405 322.8 190.7 265.6 0 0CL +ATOM 1216 C1 B 405 321.7 190.9 264.7 0 0CL +ATOM 1217 A1 B 405 322.6 190.3 265.1 0 0CL +ATOM 1218 COM B 406 205.2 122.3 270.5 0 0CL +ATOM 1219 C1 B 406 205.6 121.2 269.8 0 0CL +ATOM 1220 A1 B 406 205.2 121.8 270.8 0 0CL +ATOM 1221 COM B 407 48.6 90.6 141.9 0 0CL +ATOM 1222 C1 B 407 47.7 91.1 140.9 0 0CL +ATOM 1223 A1 B 407 48.4 91.2 142.0 0 0CL +ATOM 1224 COM B 408 69.4 12.7 3.3 0 0CL +ATOM 1225 C1 B 408 70.7 13.3 2.9 0 0CL +ATOM 1226 A1 B 408 69.5 13.3 3.2 0 0CL +ATOM 1227 COM B 409 125.8 181.7 62.3 0 0CL +ATOM 1228 C1 B 409 126.5 183.0 62.0 0 0CL +ATOM 1229 A1 B 409 125.7 182.1 61.8 0 0CL +ATOM 1230 COM B 410 118.4 184.3 49.9 0 0CL +ATOM 1231 C1 B 410 119.1 183.1 50.0 0 0CL +ATOM 1232 A1 B 410 118.9 184.2 49.7 0 0CL +ATOM 1233 COM B 411 226.8 25.9 117.5 0 0CL +ATOM 1234 C1 B 411 226.3 27.0 118.2 0 0CL +ATOM 1235 A1 B 411 226.8 26.5 117.2 0 0CL +ATOM 1236 COM B 412 206.9 440.3 427.6 0 0CL +ATOM 1237 C1 B 412 205.5 440.6 427.7 0 0CL +ATOM 1238 A1 B 412 206.6 440.0 427.9 0 0CL +ATOM 1239 COM B 413 158.5 5.4 154.3 0 0CL +ATOM 1240 C1 B 413 159.9 5.1 154.3 0 0CL +ATOM 1241 A1 B 413 158.9 5.7 153.9 0 0CL +ATOM 1242 COM B 414 240.3 406.5 256.8 0 0CL +ATOM 1243 C1 B 414 238.9 406.1 256.6 0 0CL +ATOM 1244 A1 B 414 239.9 406.2 257.2 0 0CL +ATOM 1245 COM B 415 6.5 430.1 493.8 0 0CL +ATOM 1246 C1 B 415 6.5 431.5 494.0 0 0CL +ATOM 1247 A1 B 415 6.0 430.4 493.8 0 0CL +ATOM 1248 COM B 416 277.2 324.6 110.2 0 0CL +ATOM 1249 C1 B 416 278.3 324.8 109.3 0 0CL +ATOM 1250 A1 B 416 277.2 325.0 109.8 0 0CL +ATOM 1251 COM B 417 115.0 168.9 355.8 0 0CL +ATOM 1252 C1 B 417 114.4 167.7 355.2 0 0CL +ATOM 1253 A1 B 417 115.3 168.3 355.8 0 0CL +ATOM 1254 COM B 418 288.8 486.9 54.3 0 0CL +ATOM 1255 C1 B 418 289.4 487.1 53.0 0 0CL +ATOM 1256 A1 B 418 288.8 486.5 53.9 0 0CL +ATOM 1257 COM B 419 429.4 448.3 216.4 0 0CL +ATOM 1258 C1 B 419 428.8 449.4 215.7 0 0CL +ATOM 1259 A1 B 419 429.7 448.7 216.1 0 0CL +ATOM 1260 COM B 420 371.2 469.2 12.9 0 0CL +ATOM 1261 C1 B 420 370.5 468.4 12.0 0 0CL +ATOM 1262 A1 B 420 370.7 468.9 13.1 0 0CL +ATOM 1263 COM B 421 490.7 411.2 363.2 0 0CL +ATOM 1264 C1 B 421 489.3 411.2 363.7 0 0CL +ATOM 1265 A1 B 421 490.4 410.7 363.4 0 0CL +ATOM 1266 COM B 422 374.8 397.5 263.6 0 0CL +ATOM 1267 C1 B 422 375.9 398.3 263.7 0 0CL +ATOM 1268 A1 B 422 374.7 398.1 263.5 0 0CL +ATOM 1269 COM B 423 193.2 354.0 473.9 0 0CL +ATOM 1270 C1 B 423 193.7 354.1 475.2 0 0CL +ATOM 1271 A1 B 423 192.9 354.2 474.3 0 0CL +ATOM 1272 COM B 424 30.9 158.6 149.0 0 0CL +ATOM 1273 C1 B 424 31.6 157.6 148.2 0 0CL +ATOM 1274 A1 B 424 30.7 158.4 148.4 0 0CL +ATOM 1275 COM B 425 468.5 52.3 68.1 0 0CL +ATOM 1276 C1 B 425 467.7 52.6 67.0 0 0CL +ATOM 1277 A1 B 425 468.7 52.2 67.6 0 0CL +ATOM 1278 COM B 426 181.8 274.5 481.2 0 0CL +ATOM 1279 C1 B 426 181.9 273.2 480.6 0 0CL +ATOM 1280 A1 B 426 181.6 274.4 480.7 0 0CL +ATOM 1281 COM B 427 396.0 151.5 136.0 0 0CL +ATOM 1282 C1 B 427 396.3 152.4 134.9 0 0CL +ATOM 1283 A1 B 427 395.6 151.8 135.7 0 0CL +ATOM 1284 COM B 428 333.7 377.6 494.8 0 0CL +ATOM 1285 C1 B 428 333.1 377.2 493.6 0 0CL +ATOM 1286 A1 B 428 333.3 377.9 494.5 0 0CL +ATOM 1287 COM B 429 32.1 386.5 93.2 0 0CL +ATOM 1288 C1 B 429 33.5 386.7 93.7 0 0CL +ATOM 1289 A1 B 429 32.6 386.2 93.0 0 0CL +ATOM 1290 COM B 430 127.7 90.1 87.0 0 0CL +ATOM 1291 C1 B 430 128.7 90.8 86.3 0 0CL +ATOM 1292 A1 B 430 128.3 90.2 87.2 0 0CL +ATOM 1293 COM B 431 41.5 352.0 21.2 0 0CL +ATOM 1294 C1 B 431 41.1 353.2 20.5 0 0CL +ATOM 1295 A1 B 431 41.9 352.5 21.2 0 0CL +ATOM 1296 COM B 432 214.4 369.6 300.1 0 0CL +ATOM 1297 C1 B 432 215.7 370.0 300.3 0 0CL +ATOM 1298 A1 B 432 214.8 369.5 299.7 0 0CL +ATOM 1299 COM B 433 442.9 228.2 361.5 0 0CL +ATOM 1300 C1 B 433 443.4 229.5 361.8 0 0CL +ATOM 1301 A1 B 433 443.1 228.6 361.1 0 0CL +ATOM 1302 COM B 434 432.5 45.0 309.1 0 0CL +ATOM 1303 C1 B 434 432.3 44.4 307.8 0 0CL +ATOM 1304 A1 B 434 432.0 44.7 308.9 0 0CL +ATOM 1305 COM B 435 336.6 66.1 478.0 0 0CL +ATOM 1306 C1 B 435 336.9 67.2 477.1 0 0CL +ATOM 1307 A1 B 435 336.2 66.5 477.7 0 0CL +ATOM 1308 COM B 436 404.0 481.9 262.2 0 0CL +ATOM 1309 C1 B 436 404.0 482.1 260.7 0 0CL +ATOM 1310 A1 B 436 404.3 481.6 261.8 0 0CL +ATOM 1311 COM B 437 309.8 492.4 284.4 0 0CL +ATOM 1312 C1 B 437 308.9 491.3 284.1 0 0CL +ATOM 1313 A1 B 437 309.9 491.8 284.6 0 0CL +ATOM 1314 COM B 438 219.5 340.3 176.7 0 0CL +ATOM 1315 C1 B 438 219.3 340.7 175.3 0 0CL +ATOM 1316 A1 B 438 218.9 340.2 176.4 0 0CL +ATOM 1317 COM B 439 477.3 467.3 98.2 0 0CL +ATOM 1318 C1 B 439 476.1 467.9 97.7 0 0CL +ATOM 1319 A1 B 439 477.3 467.7 97.8 0 0CL +ATOM 1320 COM B 440 63.3 208.0 395.3 0 0CL +ATOM 1321 C1 B 440 63.0 208.3 396.7 0 0CL +ATOM 1322 A1 B 440 63.5 208.5 395.6 0 0CL +ATOM 1323 COM B 441 113.1 73.0 326.4 0 0CL +ATOM 1324 C1 B 441 113.2 72.2 325.3 0 0CL +ATOM 1325 A1 B 441 112.8 72.5 326.4 0 0CL +ATOM 1326 COM B 442 157.9 293.0 1.9 0 0CL +ATOM 1327 C1 B 442 158.9 293.9 1.4 0 0CL +ATOM 1328 A1 B 442 157.8 293.5 1.6 0 0CL +ATOM 1329 COM B 443 499.2 414.7 350.1 0 0CL +ATOM 1330 C1 B 443 499.3 415.6 351.3 0 0CL +ATOM 1331 A1 B 443 498.7 414.8 350.4 0 0CL +ATOM 1332 COM B 444 469.1 487.2 201.8 0 0CL +ATOM 1333 C1 B 444 470.3 487.0 202.7 0 0CL +ATOM 1334 A1 B 444 469.7 487.4 201.6 0 0CL +ATOM 1335 COM B 445 151.5 30.3 290.6 0 0CL +ATOM 1336 C1 B 445 151.2 31.4 289.8 0 0CL +ATOM 1337 A1 B 445 151.8 30.8 290.6 0 0CL +ATOM 1338 COM B 446 45.8 199.3 480.7 0 0CL +ATOM 1339 C1 B 446 46.6 199.6 481.8 0 0CL +ATOM 1340 A1 B 446 45.6 199.2 481.2 0 0CL +ATOM 1341 COM B 447 268.1 489.8 299.5 0 0CL +ATOM 1342 C1 B 447 267.0 490.6 299.2 0 0CL +ATOM 1343 A1 B 447 267.6 489.7 299.7 0 0CL +ATOM 1344 COM B 448 177.2 142.0 354.6 0 0CL +ATOM 1345 C1 B 448 176.0 142.3 353.9 0 0CL +ATOM 1346 A1 B 448 176.9 142.5 354.7 0 0CL +ATOM 1347 COM B 449 210.2 130.6 179.6 0 0CL +ATOM 1348 C1 B 449 210.3 132.0 179.4 0 0CL +ATOM 1349 A1 B 449 210.3 130.9 180.0 0 0CL diff --git a/het3mer/PDB/300000.pdb b/het3mer/PDB/300000.pdb new file mode 100644 index 00000000..bc0d1b11 --- /dev/null +++ b/het3mer/PDB/300000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 300000 CREATED Thu May 29 13:10:09 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 336.4 318.8 349.7 0 0CL +ATOM 1 A1 C 0 336.5 321.0 349.4 0 0CL +ATOM 2 B1 C 0 336.4 320.6 348.8 0 0CL +ATOM 3 COM C 1 470.5 340.9 169.4 0 0CL +ATOM 4 A1 C 1 471.2 341.8 167.5 0 0CL +ATOM 5 B1 C 1 471.7 341.8 168.1 0 0CL +ATOM 6 COM C 2 82.1 92.9 210.5 0 0CL +ATOM 7 A1 C 2 84.3 92.7 210.8 0 0CL +ATOM 8 B1 C 2 83.8 92.5 211.4 0 0CL +ATOM 9 COM C 3 372.4 412.9 246.4 0 0CL +ATOM 10 A1 C 3 371.6 413.9 244.5 0 0CL +ATOM 11 B1 C 3 371.5 413.2 244.7 0 0CL +ATOM 12 COM C 4 63.7 214.4 20.5 0 0CL +ATOM 13 A1 C 4 63.2 213.1 18.8 0 0CL +ATOM 14 B1 C 4 62.6 213.3 19.2 0 0CL +ATOM 15 COM C 5 248.0 392.8 465.1 0 0CL +ATOM 16 A1 C 5 246.2 393.8 464.4 0 0CL +ATOM 17 B1 C 5 246.4 393.9 465.1 0 0CL +ATOM 18 COM C 6 36.3 221.3 176.1 0 0CL +ATOM 19 A1 C 6 34.2 222.0 176.1 0 0CL +ATOM 20 B1 C 6 34.7 222.2 176.6 0 0CL +ATOM 21 COM C 7 256.7 468.7 106.1 0 0CL +ATOM 22 A1 C 7 258.6 468.1 105.1 0 0CL +ATOM 23 B1 C 7 258.4 467.8 105.7 0 0CL +ATOM 24 COM C 8 139.4 408.9 203.4 0 0CL +ATOM 25 A1 C 8 140.0 408.0 201.5 0 0CL +ATOM 26 B1 C 8 139.9 408.7 201.5 0 0CL +ATOM 27 COM C 9 174.3 418.1 262.4 0 0CL +ATOM 28 A1 C 9 173.8 418.3 264.6 0 0CL +ATOM 29 B1 C 9 173.9 418.9 264.2 0 0CL +ATOM 30 COM C 10 291.6 253.2 472.6 0 0CL +ATOM 31 A1 C 10 291.8 254.6 474.3 0 0CL +ATOM 32 B1 C 10 291.1 254.5 473.9 0 0CL +ATOM 33 COM C 11 338.1 442.2 410.0 0 0CL +ATOM 34 A1 C 11 338.9 440.4 409.0 0 0CL +ATOM 35 B1 C 11 338.2 440.7 408.8 0 0CL +ATOM 36 COM C 12 471.4 84.3 391.6 0 0CL +ATOM 37 A1 C 12 470.9 82.2 391.0 0 0CL +ATOM 38 B1 C 12 470.5 82.8 390.8 0 0CL +ATOM 39 COM C 13 395.2 41.5 230.4 0 0CL +ATOM 40 A1 C 13 396.2 42.6 228.7 0 0CL +ATOM 41 B1 C 13 396.6 42.4 229.3 0 0CL +ATOM 42 COM C 14 479.3 176.9 429.9 0 0CL +ATOM 43 A1 C 14 480.0 174.9 429.4 0 0CL +ATOM 44 B1 C 14 479.5 174.9 430.0 0 0CL +ATOM 45 COM C 15 191.9 227.8 271.5 0 0CL +ATOM 46 A1 C 15 191.2 226.2 272.9 0 0CL +ATOM 47 B1 C 15 191.9 226.5 273.0 0 0CL +ATOM 48 COM C 16 454.0 429.9 7.4 0 0CL +ATOM 49 A1 C 16 452.8 431.6 6.6 0 0CL +ATOM 50 B1 C 16 453.2 431.2 6.1 0 0CL +ATOM 51 COM C 17 198.6 443.1 136.9 0 0CL +ATOM 52 A1 C 17 196.7 441.9 137.0 0 0CL +ATOM 53 B1 C 17 196.8 442.4 137.5 0 0CL +ATOM 54 COM C 18 392.2 184.6 178.2 0 0CL +ATOM 55 A1 C 18 392.9 185.0 176.1 0 0CL +ATOM 56 B1 C 18 392.9 184.3 176.3 0 0CL +ATOM 57 COM C 19 181.3 318.4 292.1 0 0CL +ATOM 58 A1 C 19 180.6 316.9 290.6 0 0CL +ATOM 59 B1 C 19 180.1 317.4 290.9 0 0CL +ATOM 60 COM C 20 291.3 352.7 263.9 0 0CL +ATOM 61 A1 C 20 293.3 352.2 264.5 0 0CL +ATOM 62 B1 C 20 293.0 352.8 264.9 0 0CL +ATOM 63 COM C 21 95.1 245.7 294.6 0 0CL +ATOM 64 A1 C 21 93.0 246.6 294.6 0 0CL +ATOM 65 B1 C 21 93.1 245.8 294.6 0 0CL +ATOM 66 COM C 22 373.2 291.4 363.6 0 0CL +ATOM 67 A1 C 22 371.3 290.9 362.8 0 0CL +ATOM 68 B1 C 22 371.9 290.8 362.3 0 0CL +ATOM 69 COM C 23 367.4 209.5 404.7 0 0CL +ATOM 70 A1 C 23 366.2 209.4 406.5 0 0CL +ATOM 71 B1 C 23 366.0 209.9 406.0 0 0CL +ATOM 72 COM C 24 36.3 274.4 195.6 0 0CL +ATOM 73 A1 C 24 37.8 272.9 196.4 0 0CL +ATOM 74 B1 C 24 37.3 273.0 196.8 0 0CL +ATOM 75 COM C 25 153.5 64.3 81.7 0 0CL +ATOM 76 A1 C 25 151.8 62.9 81.7 0 0CL +ATOM 77 B1 C 25 152.4 62.6 81.7 0 0CL +ATOM 78 COM C 26 222.4 479.4 34.6 0 0CL +ATOM 79 A1 C 26 223.7 479.4 36.5 0 0CL +ATOM 80 B1 C 26 223.7 480.0 36.0 0 0CL +ATOM 81 COM C 27 77.3 100.6 228.3 0 0CL +ATOM 82 A1 C 27 76.0 100.3 230.0 0 0CL +ATOM 83 B1 C 27 76.1 99.7 229.6 0 0CL +ATOM 84 COM C 28 90.6 212.9 498.9 0 0CL +ATOM 85 A1 C 28 88.9 213.6 497.8 0 0CL +ATOM 86 B1 C 28 88.9 212.9 497.9 0 0CL +ATOM 87 COM C 29 427.6 46.7 217.9 0 0CL +ATOM 88 A1 C 29 428.0 48.7 217.2 0 0CL +ATOM 89 B1 C 29 427.3 48.5 217.2 0 0CL +ATOM 90 COM C 30 97.7 249.6 277.1 0 0CL +ATOM 91 A1 C 30 96.0 248.6 276.1 0 0CL +ATOM 92 B1 C 30 96.6 248.2 276.2 0 0CL +ATOM 93 COM C 31 338.5 264.5 83.3 0 0CL +ATOM 94 A1 C 31 339.0 264.6 81.2 0 0CL +ATOM 95 B1 C 31 339.0 264.0 81.5 0 0CL +ATOM 96 COM C 32 224.8 153.2 293.7 0 0CL +ATOM 97 A1 C 32 224.4 151.8 295.4 0 0CL +ATOM 98 B1 C 32 224.2 151.6 294.7 0 0CL +ATOM 99 COM C 33 306.7 484.3 261.0 0 0CL +ATOM 100 A1 C 33 306.6 485.1 263.0 0 0CL +ATOM 101 B1 C 33 306.1 485.4 262.5 0 0CL +ATOM 102 COM C 34 460.2 47.7 97.2 0 0CL +ATOM 103 A1 C 34 461.7 49.3 97.0 0 0CL +ATOM 104 B1 C 34 461.9 48.8 97.4 0 0CL +ATOM 105 COM C 35 217.3 262.0 171.3 0 0CL +ATOM 106 A1 C 35 218.0 263.1 169.5 0 0CL +ATOM 107 B1 C 35 218.0 263.5 170.1 0 0CL +ATOM 108 COM C 36 313.2 24.7 179.6 0 0CL +ATOM 109 A1 C 36 311.5 23.7 180.6 0 0CL +ATOM 110 B1 C 36 311.6 23.5 179.9 0 0CL +ATOM 111 COM C 37 301.9 320.1 471.8 0 0CL +ATOM 112 A1 C 37 300.2 321.3 472.7 0 0CL +ATOM 113 B1 C 37 300.7 321.0 473.2 0 0CL +ATOM 114 COM C 38 196.7 468.6 496.8 0 0CL +ATOM 115 A1 C 38 197.3 466.7 497.7 0 0CL +ATOM 116 B1 C 38 197.5 466.8 497.0 0 0CL +ATOM 117 COM C 39 117.9 384.2 218.8 0 0CL +ATOM 118 A1 C 39 117.8 382.9 220.6 0 0CL +ATOM 119 B1 C 39 118.1 383.6 220.7 0 0CL +ATOM 120 COM C 40 461.3 344.7 137.6 0 0CL +ATOM 121 A1 C 40 461.2 345.2 139.7 0 0CL +ATOM 122 B1 C 40 461.4 345.7 139.3 0 0CL +ATOM 123 COM C 41 365.9 171.9 391.5 0 0CL +ATOM 124 A1 C 41 367.3 171.5 389.9 0 0CL +ATOM 125 B1 C 41 366.7 171.8 389.7 0 0CL +ATOM 126 COM C 42 225.8 166.3 85.5 0 0CL +ATOM 127 A1 C 42 225.1 164.2 85.9 0 0CL +ATOM 128 B1 C 42 225.8 164.3 86.0 0 0CL +ATOM 129 COM C 43 74.1 214.2 178.1 0 0CL +ATOM 130 A1 C 43 75.4 212.7 179.2 0 0CL +ATOM 131 B1 C 43 75.6 213.4 179.3 0 0CL +ATOM 132 COM C 44 303.3 427.7 67.5 0 0CL +ATOM 133 A1 C 44 301.2 428.2 67.8 0 0CL +ATOM 134 B1 C 44 301.6 428.6 67.3 0 0CL +ATOM 135 COM C 45 66.5 39.5 305.8 0 0CL +ATOM 136 A1 C 45 66.3 39.6 303.6 0 0CL +ATOM 137 B1 C 45 65.7 39.5 304.0 0 0CL +ATOM 138 COM C 46 14.4 486.8 273.9 0 0CL +ATOM 139 A1 C 46 12.2 486.9 273.4 0 0CL +ATOM 140 B1 C 46 12.5 486.3 273.8 0 0CL +ATOM 141 COM C 47 410.4 330.5 249.7 0 0CL +ATOM 142 A1 C 47 409.8 329.4 247.9 0 0CL +ATOM 143 B1 C 47 410.5 329.5 248.0 0 0CL +ATOM 144 COM C 48 273.0 165.9 263.8 0 0CL +ATOM 145 A1 C 48 274.3 165.9 265.6 0 0CL +ATOM 146 B1 C 48 273.7 165.6 265.7 0 0CL +ATOM 147 COM C 49 250.5 398.3 330.2 0 0CL +ATOM 148 A1 C 49 251.5 397.6 328.4 0 0CL +ATOM 149 B1 C 49 251.6 397.2 329.0 0 0CL +ATOM 150 COM C 50 342.8 487.3 316.4 0 0CL +ATOM 151 A1 C 50 341.3 486.1 317.4 0 0CL +ATOM 152 B1 C 50 341.9 485.8 317.2 0 0CL +ATOM 153 COM C 51 257.7 215.5 406.6 0 0CL +ATOM 154 A1 C 51 257.3 213.6 405.5 0 0CL +ATOM 155 B1 C 51 257.4 213.5 406.2 0 0CL +ATOM 156 COM C 52 161.2 336.8 162.6 0 0CL +ATOM 157 A1 C 52 159.7 335.2 162.7 0 0CL +ATOM 158 B1 C 52 160.3 335.1 162.3 0 0CL +ATOM 159 COM C 53 279.1 318.7 190.3 0 0CL +ATOM 160 A1 C 53 280.0 319.0 192.2 0 0CL +ATOM 161 B1 C 53 279.7 318.3 192.1 0 0CL +ATOM 162 COM C 54 394.0 18.5 409.4 0 0CL +ATOM 163 A1 C 54 393.7 16.4 410.1 0 0CL +ATOM 164 B1 C 54 393.1 16.9 410.0 0 0CL +ATOM 165 COM C 55 304.9 158.0 267.7 0 0CL +ATOM 166 A1 C 55 306.2 158.7 269.4 0 0CL +ATOM 167 B1 C 55 306.5 158.7 268.7 0 0CL +ATOM 168 COM C 56 95.3 75.2 315.3 0 0CL +ATOM 169 A1 C 56 97.1 75.3 314.0 0 0CL +ATOM 170 B1 C 56 96.5 75.8 313.9 0 0CL +ATOM 171 COM C 57 302.9 421.0 327.0 0 0CL +ATOM 172 A1 C 57 303.8 420.4 328.9 0 0CL +ATOM 173 B1 C 57 303.9 420.0 328.4 0 0CL +ATOM 174 COM C 58 262.6 324.5 433.4 0 0CL +ATOM 175 A1 C 58 263.1 326.6 433.9 0 0CL +ATOM 176 B1 C 58 263.3 326.1 434.4 0 0CL +ATOM 177 COM C 59 80.5 381.7 499.0 0 0CL +ATOM 178 A1 C 59 82.4 380.6 499.4 0 0CL +ATOM 179 B1 C 59 81.9 380.5 499.8 0 0CL +ATOM 180 COM C 60 449.6 194.3 241.1 0 0CL +ATOM 181 A1 C 60 448.8 194.6 243.1 0 0CL +ATOM 182 B1 C 60 449.3 195.0 242.9 0 0CL +ATOM 183 COM C 61 51.6 265.1 372.2 0 0CL +ATOM 184 A1 C 61 49.8 265.0 373.5 0 0CL +ATOM 185 B1 C 61 50.4 265.2 373.8 0 0CL +ATOM 186 COM C 62 173.9 362.8 12.0 0 0CL +ATOM 187 A1 C 62 172.8 364.4 13.0 0 0CL +ATOM 188 B1 C 62 173.3 364.6 12.5 0 0CL +ATOM 189 COM C 63 276.9 453.1 348.9 0 0CL +ATOM 190 A1 C 63 274.7 452.7 348.8 0 0CL +ATOM 191 B1 C 63 275.1 452.2 348.7 0 0CL +ATOM 192 COM C 64 165.4 167.5 464.5 0 0CL +ATOM 193 A1 C 64 165.6 166.2 466.3 0 0CL +ATOM 194 B1 C 64 166.2 166.3 465.9 0 0CL +ATOM 195 COM C 65 256.4 81.5 115.0 0 0CL +ATOM 196 A1 C 65 254.3 81.0 114.7 0 0CL +ATOM 197 B1 C 65 254.5 81.2 115.4 0 0CL +ATOM 198 COM C 66 260.0 311.2 67.7 0 0CL +ATOM 199 A1 C 66 260.0 312.1 69.7 0 0CL +ATOM 200 B1 C 66 260.4 311.5 69.6 0 0CL +ATOM 201 COM C 67 20.9 464.9 322.9 0 0CL +ATOM 202 A1 C 67 21.8 466.9 323.2 0 0CL +ATOM 203 B1 C 67 21.9 466.6 322.6 0 0CL +ATOM 204 COM C 68 107.1 403.9 196.1 0 0CL +ATOM 205 A1 C 68 107.7 406.0 195.8 0 0CL +ATOM 206 B1 C 68 107.1 405.7 195.4 0 0CL +ATOM 207 COM C 69 109.6 432.5 444.4 0 0CL +ATOM 208 A1 C 69 107.7 433.3 443.6 0 0CL +ATOM 209 B1 C 69 108.1 432.9 443.1 0 0CL +ATOM 210 COM C 70 285.1 291.9 20.2 0 0CL +ATOM 211 A1 C 70 284.9 289.9 19.1 0 0CL +ATOM 212 B1 C 70 285.3 289.9 19.8 0 0CL +ATOM 213 COM C 71 494.4 337.9 307.7 0 0CL +ATOM 214 A1 C 71 494.2 335.9 306.9 0 0CL +ATOM 215 B1 C 71 494.4 336.4 306.4 0 0CL +ATOM 216 COM C 72 147.6 305.1 137.0 0 0CL +ATOM 217 A1 C 72 147.4 307.2 137.7 0 0CL +ATOM 218 B1 C 72 146.8 306.8 137.7 0 0CL +ATOM 219 COM C 73 437.6 460.5 235.9 0 0CL +ATOM 220 A1 C 73 439.7 460.0 236.4 0 0CL +ATOM 221 B1 C 73 439.5 460.1 235.7 0 0CL +ATOM 222 COM C 74 156.3 40.9 154.2 0 0CL +ATOM 223 A1 C 74 154.5 39.8 154.9 0 0CL +ATOM 224 B1 C 74 154.6 39.8 154.2 0 0CL +ATOM 225 COM C 75 434.6 180.9 404.6 0 0CL +ATOM 226 A1 C 75 434.2 183.0 404.3 0 0CL +ATOM 227 B1 C 75 434.3 182.6 403.7 0 0CL +ATOM 228 COM C 76 85.5 213.9 62.2 0 0CL +ATOM 229 A1 C 76 85.6 215.0 60.3 0 0CL +ATOM 230 B1 C 76 85.1 214.4 60.4 0 0CL +ATOM 231 COM C 77 329.5 462.0 200.5 0 0CL +ATOM 232 A1 C 77 330.8 460.8 199.3 0 0CL +ATOM 233 B1 C 77 330.8 460.7 200.0 0 0CL +ATOM 234 COM C 78 273.3 115.4 37.0 0 0CL +ATOM 235 A1 C 78 271.2 115.5 36.4 0 0CL +ATOM 236 B1 C 78 271.7 115.2 35.9 0 0CL +ATOM 237 COM C 79 204.7 180.1 15.9 0 0CL +ATOM 238 A1 C 79 202.6 179.7 15.8 0 0CL +ATOM 239 B1 C 79 202.8 180.2 16.3 0 0CL +ATOM 240 COM C 80 133.3 460.2 166.0 0 0CL +ATOM 241 A1 C 80 132.3 459.2 167.7 0 0CL +ATOM 242 B1 C 80 132.5 458.8 167.2 0 0CL +ATOM 243 COM C 81 251.6 276.2 276.9 0 0CL +ATOM 244 A1 C 81 251.8 278.3 276.5 0 0CL +ATOM 245 B1 C 81 251.4 278.1 277.1 0 0CL +ATOM 246 COM C 82 481.8 19.0 21.1 0 0CL +ATOM 247 A1 C 82 483.9 18.4 21.1 0 0CL +ATOM 248 B1 C 82 483.4 17.9 21.0 0 0CL +ATOM 249 COM C 83 190.0 21.3 6.9 0 0CL +ATOM 250 A1 C 83 189.2 22.2 8.7 0 0CL +ATOM 251 B1 C 83 188.9 22.4 8.1 0 0CL +ATOM 252 COM C 84 361.8 468.0 141.3 0 0CL +ATOM 253 A1 C 84 361.5 465.9 140.6 0 0CL +ATOM 254 B1 C 84 361.8 466.4 140.1 0 0CL +ATOM 255 COM C 85 170.4 370.3 460.9 0 0CL +ATOM 256 A1 C 85 170.7 369.7 458.8 0 0CL +ATOM 257 B1 C 85 170.0 369.9 459.0 0 0CL +ATOM 258 COM C 86 457.5 9.5 484.5 0 0CL +ATOM 259 A1 C 86 458.9 9.4 482.8 0 0CL +ATOM 260 B1 C 86 459.1 9.7 483.4 0 0CL +ATOM 261 COM C 87 305.6 142.5 115.1 0 0CL +ATOM 262 A1 C 87 304.6 144.3 115.6 0 0CL +ATOM 263 B1 C 87 304.4 143.8 116.0 0 0CL +ATOM 264 COM C 88 474.4 0.4 111.2 0 0CL +ATOM 265 A1 C 88 475.9 1.7 110.3 0 0CL +ATOM 266 B1 C 88 475.2 1.7 110.0 0 0CL +ATOM 267 COM C 89 468.6 283.3 13.1 0 0CL +ATOM 268 A1 C 89 466.7 282.5 13.9 0 0CL +ATOM 269 B1 C 89 466.8 283.2 14.0 0 0CL +ATOM 270 COM C 90 312.0 62.5 467.4 0 0CL +ATOM 271 A1 C 90 311.4 64.6 467.5 0 0CL +ATOM 272 B1 C 90 311.7 64.4 466.9 0 0CL +ATOM 273 COM C 91 396.7 303.3 332.9 0 0CL +ATOM 274 A1 C 91 394.6 304.2 332.9 0 0CL +ATOM 275 B1 C 91 395.0 304.2 333.5 0 0CL +ATOM 276 COM C 92 253.3 16.4 428.1 0 0CL +ATOM 277 A1 C 92 252.2 14.6 428.2 0 0CL +ATOM 278 B1 C 92 251.8 15.1 427.9 0 0CL +ATOM 279 COM C 93 132.7 161.1 455.7 0 0CL +ATOM 280 A1 C 93 134.2 159.5 455.9 0 0CL +ATOM 281 B1 C 93 133.6 159.3 455.6 0 0CL +ATOM 282 COM C 94 499.0 322.5 304.9 0 0CL +ATOM 283 A1 C 94 497.7 321.2 303.8 0 0CL +ATOM 284 B1 C 94 497.4 321.7 304.2 0 0CL +ATOM 285 COM C 95 75.1 25.4 488.5 0 0CL +ATOM 286 A1 C 95 74.4 23.3 488.1 0 0CL +ATOM 287 B1 C 95 74.9 23.6 487.6 0 0CL +ATOM 288 COM C 96 16.3 489.6 167.9 0 0CL +ATOM 289 A1 C 96 15.1 490.1 169.7 0 0CL +ATOM 290 B1 C 96 14.8 490.2 169.1 0 0CL +ATOM 291 COM C 97 162.1 82.7 426.7 0 0CL +ATOM 292 A1 C 97 161.7 84.1 428.3 0 0CL +ATOM 293 B1 C 97 162.3 83.7 428.4 0 0CL +ATOM 294 COM C 98 185.3 4.0 270.2 0 0CL +ATOM 295 A1 C 98 183.6 5.4 269.7 0 0CL +ATOM 296 B1 C 98 183.7 4.7 269.3 0 0CL +ATOM 297 COM C 99 445.9 37.0 230.8 0 0CL +ATOM 298 A1 C 99 445.1 36.5 232.8 0 0CL +ATOM 299 B1 C 99 445.6 36.0 232.5 0 0CL +ATOM 300 COM C 100 394.4 122.6 93.1 0 0CL +ATOM 301 A1 C 100 396.5 122.5 92.3 0 0CL +ATOM 302 B1 C 100 396.0 122.4 91.8 0 0CL +ATOM 303 COM C 101 39.2 186.5 52.8 0 0CL +ATOM 304 A1 C 101 41.0 187.7 52.5 0 0CL +ATOM 305 B1 C 101 40.4 187.9 52.1 0 0CL +ATOM 306 COM C 102 23.4 24.6 73.7 0 0CL +ATOM 307 A1 C 102 24.3 25.0 75.7 0 0CL +ATOM 308 B1 C 102 23.8 25.5 75.4 0 0CL +ATOM 309 COM C 103 295.6 42.5 124.3 0 0CL +ATOM 310 A1 C 103 295.5 44.2 122.9 0 0CL +ATOM 311 B1 C 103 295.6 44.4 123.7 0 0CL +ATOM 312 COM C 104 201.3 247.3 10.8 0 0CL +ATOM 313 A1 C 104 201.1 249.5 10.9 0 0CL +ATOM 314 B1 C 104 200.8 249.1 11.4 0 0CL +ATOM 315 COM C 105 299.2 343.2 464.3 0 0CL +ATOM 316 A1 C 105 297.0 343.4 464.6 0 0CL +ATOM 317 B1 C 105 297.4 343.9 464.1 0 0CL +ATOM 318 COM C 106 303.4 213.2 0.9 0 0CL +ATOM 319 A1 C 106 305.0 212.3 2.3 0 0CL +ATOM 320 B1 C 106 304.3 212.3 2.5 0 0CL +ATOM 321 COM C 107 234.1 490.7 193.5 0 0CL +ATOM 322 A1 C 107 234.4 488.7 192.8 0 0CL +ATOM 323 B1 C 107 233.8 488.9 192.8 0 0CL +ATOM 324 COM C 108 347.3 196.6 101.5 0 0CL +ATOM 325 A1 C 108 348.5 197.2 99.7 0 0CL +ATOM 326 B1 C 108 347.8 197.4 99.8 0 0CL +ATOM 327 COM C 109 84.4 111.3 383.7 0 0CL +ATOM 328 A1 C 109 82.9 110.5 382.4 0 0CL +ATOM 329 B1 C 109 83.3 111.1 382.1 0 0CL +ATOM 330 COM C 110 403.6 251.5 224.8 0 0CL +ATOM 331 A1 C 110 402.7 253.5 224.5 0 0CL +ATOM 332 B1 C 110 403.4 253.5 224.4 0 0CL +ATOM 333 COM C 111 261.9 473.1 432.0 0 0CL +ATOM 334 A1 C 111 261.1 474.4 430.3 0 0CL +ATOM 335 B1 C 111 260.9 474.6 431.0 0 0CL +ATOM 336 COM C 112 79.0 192.4 116.3 0 0CL +ATOM 337 A1 C 112 81.1 191.7 116.7 0 0CL +ATOM 338 B1 C 112 80.8 191.6 116.0 0 0CL +ATOM 339 COM C 113 37.5 15.8 417.0 0 0CL +ATOM 340 A1 C 113 35.9 17.2 417.1 0 0CL +ATOM 341 B1 C 113 35.9 16.8 416.5 0 0CL +ATOM 342 COM C 114 450.7 401.9 92.3 0 0CL +ATOM 343 A1 C 114 452.1 400.4 91.4 0 0CL +ATOM 344 B1 C 114 451.4 400.2 91.7 0 0CL +ATOM 345 COM C 115 446.7 86.3 381.3 0 0CL +ATOM 346 A1 C 115 446.7 86.4 379.1 0 0CL +ATOM 347 B1 C 115 446.1 86.6 379.4 0 0CL +ATOM 348 COM C 116 203.2 318.9 158.3 0 0CL +ATOM 349 A1 C 116 205.0 319.1 157.0 0 0CL +ATOM 350 B1 C 116 204.7 318.5 157.1 0 0CL +ATOM 351 COM C 117 236.3 135.0 469.8 0 0CL +ATOM 352 A1 C 117 236.6 134.3 467.8 0 0CL +ATOM 353 B1 C 117 237.1 134.1 468.2 0 0CL +ATOM 354 COM C 118 161.2 73.2 428.8 0 0CL +ATOM 355 A1 C 118 163.0 73.0 427.5 0 0CL +ATOM 356 B1 C 118 163.0 73.4 428.1 0 0CL +ATOM 357 COM C 119 75.5 114.0 77.0 0 0CL +ATOM 358 A1 C 119 76.8 112.3 76.7 0 0CL +ATOM 359 B1 C 119 76.2 112.2 76.4 0 0CL +ATOM 360 COM C 120 174.8 324.0 128.3 0 0CL +ATOM 361 A1 C 120 174.7 323.9 126.1 0 0CL +ATOM 362 B1 C 120 174.2 324.3 126.4 0 0CL +ATOM 363 COM C 121 25.4 310.7 289.6 0 0CL +ATOM 364 A1 C 121 24.5 309.5 287.9 0 0CL +ATOM 365 B1 C 121 25.0 309.2 288.4 0 0CL +ATOM 366 COM C 122 276.7 81.5 83.4 0 0CL +ATOM 367 A1 C 122 277.1 79.3 83.9 0 0CL +ATOM 368 B1 C 122 276.9 79.5 83.2 0 0CL +ATOM 369 COM C 123 15.5 120.5 387.3 0 0CL +ATOM 370 A1 C 123 14.9 118.5 386.6 0 0CL +ATOM 371 B1 C 123 14.4 118.9 386.8 0 0CL +ATOM 372 COM C 124 70.2 258.5 114.1 0 0CL +ATOM 373 A1 C 124 69.3 257.0 112.8 0 0CL +ATOM 374 B1 C 124 69.6 257.6 112.5 0 0CL +ATOM 375 COM C 125 65.5 481.2 215.7 0 0CL +ATOM 376 A1 C 125 64.1 482.7 214.8 0 0CL +ATOM 377 B1 C 125 64.7 483.0 215.2 0 0CL +ATOM 378 COM C 126 251.5 126.2 362.2 0 0CL +ATOM 379 A1 C 126 249.7 126.0 360.8 0 0CL +ATOM 380 B1 C 126 249.8 126.6 361.3 0 0CL +ATOM 381 COM C 127 392.5 75.3 262.4 0 0CL +ATOM 382 A1 C 127 393.8 76.0 260.8 0 0CL +ATOM 383 B1 C 127 393.8 75.3 260.9 0 0CL +ATOM 384 COM C 128 196.6 366.2 474.3 0 0CL +ATOM 385 A1 C 128 194.7 365.9 475.5 0 0CL +ATOM 386 B1 C 128 195.3 365.5 475.6 0 0CL +ATOM 387 COM C 129 195.1 495.2 459.5 0 0CL +ATOM 388 A1 C 129 193.7 495.5 461.2 0 0CL +ATOM 389 B1 C 129 193.4 495.5 460.6 0 0CL +ATOM 390 COM C 130 258.0 27.3 474.2 0 0CL +ATOM 391 A1 C 130 256.2 26.0 474.1 0 0CL +ATOM 392 B1 C 130 256.3 26.4 474.7 0 0CL +ATOM 393 COM C 131 494.4 58.5 239.7 0 0CL +ATOM 394 A1 C 131 495.3 57.6 241.5 0 0CL +ATOM 395 B1 C 131 495.7 57.7 240.9 0 0CL +ATOM 396 COM C 132 90.2 73.6 253.8 0 0CL +ATOM 397 A1 C 132 89.8 71.4 254.0 0 0CL +ATOM 398 B1 C 132 89.3 71.9 254.2 0 0CL +ATOM 399 COM C 133 150.8 140.0 321.6 0 0CL +ATOM 400 A1 C 133 151.3 140.3 319.5 0 0CL +ATOM 401 B1 C 133 151.6 140.7 320.0 0 0CL +ATOM 402 COM C 134 61.4 172.2 189.2 0 0CL +ATOM 403 A1 C 134 60.9 174.3 189.3 0 0CL +ATOM 404 B1 C 134 60.4 173.9 189.1 0 0CL +ATOM 405 COM C 135 479.2 497.0 351.9 0 0CL +ATOM 406 A1 C 135 481.0 497.5 350.8 0 0CL +ATOM 407 B1 C 135 480.8 496.8 350.9 0 0CL +ATOM 408 COM C 136 161.2 330.1 490.0 0 0CL +ATOM 409 A1 C 136 162.9 331.5 490.2 0 0CL +ATOM 410 B1 C 136 163.0 330.8 490.4 0 0CL +ATOM 411 COM C 137 36.4 204.6 340.1 0 0CL +ATOM 412 A1 C 137 38.0 204.1 341.5 0 0CL +ATOM 413 B1 C 137 37.3 203.9 341.7 0 0CL +ATOM 414 COM C 138 428.3 417.0 19.7 0 0CL +ATOM 415 A1 C 138 427.7 415.7 21.3 0 0CL +ATOM 416 B1 C 138 428.4 415.6 21.1 0 0CL +ATOM 417 COM C 139 477.1 283.2 319.0 0 0CL +ATOM 418 A1 C 139 478.3 282.0 317.5 0 0CL +ATOM 419 B1 C 139 477.8 281.7 317.9 0 0CL +ATOM 420 COM C 140 127.4 445.1 278.0 0 0CL +ATOM 421 A1 C 140 129.6 445.2 278.2 0 0CL +ATOM 422 B1 C 140 129.3 445.7 277.7 0 0CL +ATOM 423 COM C 141 187.8 204.4 487.1 0 0CL +ATOM 424 A1 C 141 186.8 206.1 486.0 0 0CL +ATOM 425 B1 C 141 186.6 206.0 486.7 0 0CL +ATOM 426 COM C 142 197.7 184.9 266.5 0 0CL +ATOM 427 A1 C 142 199.8 185.7 266.1 0 0CL +ATOM 428 B1 C 142 199.5 185.6 266.8 0 0CL +ATOM 429 COM C 143 362.9 378.8 89.8 0 0CL +ATOM 430 A1 C 143 363.2 380.7 88.6 0 0CL +ATOM 431 B1 C 143 363.5 380.6 89.3 0 0CL +ATOM 432 COM C 144 308.4 261.1 250.6 0 0CL +ATOM 433 A1 C 144 307.3 261.3 252.5 0 0CL +ATOM 434 B1 C 144 307.1 260.7 252.1 0 0CL +ATOM 435 COM C 145 266.4 345.6 401.9 0 0CL +ATOM 436 A1 C 145 266.2 347.1 403.5 0 0CL +ATOM 437 B1 C 145 266.8 346.9 403.3 0 0CL +ATOM 438 COM C 146 459.6 233.4 359.5 0 0CL +ATOM 439 A1 C 146 458.2 234.6 358.3 0 0CL +ATOM 440 B1 C 146 458.0 234.0 358.5 0 0CL +ATOM 441 COM C 147 493.7 224.7 374.8 0 0CL +ATOM 442 A1 C 147 492.5 222.8 374.5 0 0CL +ATOM 443 B1 C 147 492.8 222.9 375.1 0 0CL +ATOM 444 COM C 148 186.2 349.0 55.3 0 0CL +ATOM 445 A1 C 148 186.0 349.1 53.2 0 0CL +ATOM 446 B1 C 148 186.4 348.6 53.4 0 0CL +ATOM 447 COM C 149 167.5 274.8 31.6 0 0CL +ATOM 448 A1 C 149 165.4 274.4 31.1 0 0CL +ATOM 449 B1 C 149 165.9 274.4 30.5 0 0CL +ATOM 450 COM A 150 63.2 213.3 17.0 0 0CL +ATOM 451 C1 A 150 63.8 213.5 18.1 0 0CL +ATOM 452 B1 A 150 62.3 213.4 17.5 0 0CL +ATOM 453 COM A 151 311.2 22.5 181.9 0 0CL +ATOM 454 C1 A 151 311.8 23.6 181.4 0 0CL +ATOM 455 B1 A 151 311.3 22.2 180.9 0 0CL +ATOM 456 COM A 152 34.5 17.5 418.1 0 0CL +ATOM 457 C1 A 152 35.8 17.2 418.0 0 0CL +ATOM 458 B1 A 152 34.4 17.0 417.2 0 0CL +ATOM 459 COM A 153 269.7 114.7 36.8 0 0CL +ATOM 460 C1 A 153 270.8 115.2 37.2 0 0CL +ATOM 461 B1 A 153 270.3 114.3 36.0 0 0CL +ATOM 462 COM A 154 334.8 351.7 184.5 0 0CL +ATOM 463 C1 A 154 335.6 351.2 185.4 0 0CL +ATOM 464 B1 A 154 335.4 352.5 184.5 0 0CL +ATOM 465 COM A 155 388.8 229.8 61.3 0 0CL +ATOM 466 C1 A 155 388.9 231.0 61.7 0 0CL +ATOM 467 B1 A 155 388.8 229.6 62.3 0 0CL +ATOM 468 COM A 156 159.0 334.2 163.9 0 0CL +ATOM 469 C1 A 156 159.4 335.4 163.6 0 0CL +ATOM 470 B1 A 156 159.7 333.8 163.3 0 0CL +ATOM 471 COM A 157 171.1 364.9 13.2 0 0CL +ATOM 472 C1 A 157 172.0 364.0 13.2 0 0CL +ATOM 473 B1 A 157 171.7 365.4 12.4 0 0CL +ATOM 474 COM A 158 351.4 407.9 269.2 0 0CL +ATOM 475 C1 A 158 351.7 409.1 269.5 0 0CL +ATOM 476 B1 A 158 351.4 407.7 270.2 0 0CL +ATOM 477 COM A 159 152.0 139.4 318.2 0 0CL +ATOM 478 C1 A 159 151.2 139.4 319.2 0 0CL +ATOM 479 B1 A 159 152.6 140.0 318.7 0 0CL +ATOM 480 COM A 160 495.8 58.2 243.1 0 0CL +ATOM 481 C1 A 160 494.9 58.2 242.2 0 0CL +ATOM 482 B1 A 160 496.5 58.1 242.4 0 0CL +ATOM 483 COM A 161 462.7 50.1 95.8 0 0CL +ATOM 484 C1 A 161 461.5 49.6 96.1 0 0CL +ATOM 485 B1 A 161 463.1 49.3 96.4 0 0CL +ATOM 486 COM A 162 98.7 75.7 314.2 0 0CL +ATOM 487 C1 A 162 97.7 75.1 314.7 0 0CL +ATOM 488 B1 A 162 98.1 76.4 313.9 0 0CL +ATOM 489 COM A 163 195.3 441.6 136.1 0 0CL +ATOM 490 C1 A 163 196.6 441.7 136.1 0 0CL +ATOM 491 B1 A 163 195.3 442.3 136.8 0 0CL +ATOM 492 COM A 164 253.1 279.5 276.5 0 0CL +ATOM 493 C1 A 164 252.6 278.3 276.1 0 0CL +ATOM 494 B1 A 164 252.5 279.4 277.3 0 0CL +ATOM 495 COM A 165 343.1 439.0 82.1 0 0CL +ATOM 496 C1 A 165 343.2 439.8 83.1 0 0CL +ATOM 497 B1 A 165 342.1 439.3 82.0 0 0CL +ATOM 498 COM A 166 193.7 429.0 339.3 0 0CL +ATOM 499 C1 A 166 193.2 428.8 340.5 0 0CL +ATOM 500 B1 A 166 193.8 428.0 339.3 0 0CL +ATOM 501 COM A 167 163.9 332.3 489.1 0 0CL +ATOM 502 C1 A 167 162.7 331.9 489.4 0 0CL +ATOM 503 B1 A 167 164.2 331.4 489.5 0 0CL +ATOM 504 COM A 168 89.7 70.0 253.0 0 0CL +ATOM 505 C1 A 168 90.3 71.1 253.3 0 0CL +ATOM 506 B1 A 168 88.8 70.5 253.2 0 0CL +ATOM 507 COM A 169 336.2 328.9 244.0 0 0CL +ATOM 508 C1 A 169 335.2 329.6 243.4 0 0CL +ATOM 509 B1 A 169 335.6 328.9 244.8 0 0CL +ATOM 510 COM A 170 365.1 208.2 407.3 0 0CL +ATOM 511 C1 A 170 366.2 208.5 406.7 0 0CL +ATOM 512 B1 A 170 364.7 209.0 406.6 0 0CL +ATOM 513 COM A 171 368.9 172.1 389.4 0 0CL +ATOM 514 C1 A 171 368.1 171.7 390.3 0 0CL +ATOM 515 B1 A 171 368.0 172.5 389.0 0 0CL +ATOM 516 COM A 172 38.4 271.3 195.9 0 0CL +ATOM 517 C1 A 172 38.0 272.5 195.5 0 0CL +ATOM 518 B1 A 172 37.7 271.4 196.6 0 0CL +ATOM 519 COM A 173 478.5 282.0 315.8 0 0CL +ATOM 520 C1 A 173 478.4 282.7 316.9 0 0CL +ATOM 521 B1 A 173 477.9 281.4 316.2 0 0CL +ATOM 522 COM A 174 48.3 265.9 373.6 0 0CL +ATOM 523 C1 A 174 49.2 265.3 372.8 0 0CL +ATOM 524 B1 A 174 49.1 266.2 374.2 0 0CL +ATOM 525 COM A 175 78.4 112.0 76.0 0 0CL +ATOM 526 C1 A 175 77.6 112.7 76.7 0 0CL +ATOM 527 B1 A 175 77.5 111.8 75.5 0 0CL +ATOM 528 COM A 176 249.4 125.9 359.1 0 0CL +ATOM 529 C1 A 176 250.1 125.5 360.1 0 0CL +ATOM 530 B1 A 176 249.3 126.8 359.6 0 0CL +ATOM 531 COM A 177 399.7 32.7 295.5 0 0CL +ATOM 532 C1 A 177 398.8 32.1 296.1 0 0CL +ATOM 533 B1 A 177 399.0 33.3 295.2 0 0CL +ATOM 534 COM A 178 495.0 334.3 307.1 0 0CL +ATOM 535 C1 A 178 494.6 335.4 307.6 0 0CL +ATOM 536 B1 A 178 495.3 335.0 306.3 0 0CL +ATOM 537 COM A 179 296.4 45.0 121.6 0 0CL +ATOM 538 C1 A 179 295.9 43.9 122.2 0 0CL +ATOM 539 B1 A 179 296.5 45.3 122.6 0 0CL +ATOM 540 COM A 180 485.3 18.7 20.1 0 0CL +ATOM 541 C1 A 180 484.2 19.2 20.6 0 0CL +ATOM 542 B1 A 180 484.7 17.8 20.0 0 0CL +ATOM 543 COM A 181 164.1 71.7 427.1 0 0CL +ATOM 544 C1 A 181 162.9 72.1 427.3 0 0CL +ATOM 545 B1 A 181 164.3 72.4 427.9 0 0CL +ATOM 546 COM A 182 445.3 37.0 234.5 0 0CL +ATOM 547 C1 A 182 445.1 37.3 233.2 0 0CL +ATOM 548 B1 A 182 445.9 36.3 234.1 0 0CL +ATOM 549 COM A 183 411.2 275.1 456.1 0 0CL +ATOM 550 C1 A 183 410.8 273.9 455.9 0 0CL +ATOM 551 B1 A 183 411.1 275.0 457.1 0 0CL +ATOM 552 COM A 184 15.1 117.5 385.2 0 0CL +ATOM 553 C1 A 184 15.6 118.4 386.0 0 0CL +ATOM 554 B1 A 184 14.2 118.0 385.4 0 0CL +ATOM 555 COM A 185 201.3 180.0 14.6 0 0CL +ATOM 556 C1 A 185 202.5 179.6 14.9 0 0CL +ATOM 557 B1 A 185 201.5 180.7 15.3 0 0CL +ATOM 558 COM A 186 259.0 467.4 103.5 0 0CL +ATOM 559 C1 A 186 258.3 468.2 104.2 0 0CL +ATOM 560 B1 A 186 259.0 466.8 104.4 0 0CL +ATOM 561 COM A 187 264.2 327.9 433.3 0 0CL +ATOM 562 C1 A 187 263.4 326.9 433.0 0 0CL +ATOM 563 B1 A 187 264.5 327.3 434.1 0 0CL +ATOM 564 COM A 188 281.6 319.3 192.9 0 0CL +ATOM 565 C1 A 188 280.7 319.5 192.0 0 0CL +ATOM 566 B1 A 188 281.2 318.3 192.9 0 0CL +ATOM 567 COM A 189 85.5 91.6 210.3 0 0CL +ATOM 568 C1 A 189 84.5 92.3 210.0 0 0CL +ATOM 569 B1 A 189 85.0 91.4 211.1 0 0CL +ATOM 570 COM A 190 321.7 151.0 416.8 0 0CL +ATOM 571 C1 A 190 320.5 150.8 417.1 0 0CL +ATOM 572 B1 A 190 321.8 151.0 417.9 0 0CL +ATOM 573 COM A 191 42.0 188.8 53.4 0 0CL +ATOM 574 C1 A 191 41.4 187.7 53.4 0 0CL +ATOM 575 B1 A 191 41.3 189.2 52.8 0 0CL +ATOM 576 COM A 192 83.4 379.4 498.6 0 0CL +ATOM 577 C1 A 192 82.7 380.5 498.5 0 0CL +ATOM 578 B1 A 192 82.8 379.1 499.3 0 0CL +ATOM 579 COM A 193 201.3 185.1 265.5 0 0CL +ATOM 580 C1 A 193 200.0 185.1 265.4 0 0CL +ATOM 581 B1 A 193 201.1 185.1 266.5 0 0CL +ATOM 582 COM A 194 205.4 319.8 155.5 0 0CL +ATOM 583 C1 A 194 204.8 319.9 156.6 0 0CL +ATOM 584 B1 A 194 205.2 318.8 155.5 0 0CL +ATOM 585 COM A 195 354.5 166.4 297.0 0 0CL +ATOM 586 C1 A 195 353.4 166.5 296.2 0 0CL +ATOM 587 B1 A 195 354.8 165.7 296.2 0 0CL +ATOM 588 COM A 196 409.0 327.9 247.5 0 0CL +ATOM 589 C1 A 196 409.0 328.9 248.2 0 0CL +ATOM 590 B1 A 196 410.0 327.9 247.5 0 0CL +ATOM 591 COM A 197 225.2 150.7 296.5 0 0CL +ATOM 592 C1 A 197 225.1 151.9 295.9 0 0CL +ATOM 593 B1 A 197 224.9 150.3 295.6 0 0CL +ATOM 594 COM A 198 340.2 440.0 407.9 0 0CL +ATOM 595 C1 A 198 339.8 440.6 409.0 0 0CL +ATOM 596 B1 A 198 339.3 440.2 407.5 0 0CL +ATOM 597 COM A 199 182.3 6.1 270.5 0 0CL +ATOM 598 C1 A 199 183.5 5.8 270.5 0 0CL +ATOM 599 B1 A 199 182.1 5.2 269.9 0 0CL +ATOM 600 COM A 200 252.9 81.7 114.0 0 0CL +ATOM 601 C1 A 200 254.1 81.4 113.9 0 0CL +ATOM 602 B1 A 200 253.1 81.9 114.9 0 0CL +ATOM 603 COM A 201 193.7 366.7 476.6 0 0CL +ATOM 604 C1 A 201 194.4 366.8 475.5 0 0CL +ATOM 605 B1 A 201 194.4 366.1 476.9 0 0CL +ATOM 606 COM A 202 63.5 483.2 213.2 0 0CL +ATOM 607 C1 A 202 63.8 482.2 214.1 0 0CL +ATOM 608 B1 A 202 64.3 483.7 213.7 0 0CL +ATOM 609 COM A 203 245.7 395.1 463.4 0 0CL +ATOM 610 C1 A 203 246.4 394.1 463.6 0 0CL +ATOM 611 B1 A 203 245.9 395.3 464.4 0 0CL +ATOM 612 COM A 204 364.0 381.1 87.1 0 0CL +ATOM 613 C1 A 204 363.3 380.2 87.8 0 0CL +ATOM 614 B1 A 204 364.5 381.2 88.0 0 0CL +ATOM 615 COM A 205 459.9 345.4 140.9 0 0CL +ATOM 616 C1 A 205 460.4 344.7 140.0 0 0CL +ATOM 617 B1 A 205 460.3 346.2 140.4 0 0CL +ATOM 618 COM A 206 94.4 248.0 276.6 0 0CL +ATOM 619 C1 A 206 95.3 248.9 276.7 0 0CL +ATOM 620 B1 A 206 95.2 247.3 276.5 0 0CL +ATOM 621 COM A 207 261.8 475.6 429.2 0 0CL +ATOM 622 C1 A 207 261.9 474.5 429.8 0 0CL +ATOM 623 B1 A 207 261.3 475.9 430.1 0 0CL +ATOM 624 COM A 208 497.3 320.7 302.2 0 0CL +ATOM 625 C1 A 208 498.2 321.0 303.1 0 0CL +ATOM 626 B1 A 208 496.7 321.5 302.7 0 0CL +ATOM 627 COM A 209 267.2 45.7 94.5 0 0CL +ATOM 628 C1 A 209 266.4 45.8 95.5 0 0CL +ATOM 629 B1 A 209 266.4 46.2 94.0 0 0CL +ATOM 630 COM A 210 299.6 427.5 67.5 0 0CL +ATOM 631 C1 A 210 300.9 427.4 68.0 0 0CL +ATOM 632 B1 A 210 300.0 428.1 66.8 0 0CL +ATOM 633 COM A 211 306.1 159.9 270.6 0 0CL +ATOM 634 C1 A 211 305.5 159.0 269.9 0 0CL +ATOM 635 B1 A 211 306.7 160.1 269.8 0 0CL +ATOM 636 COM A 212 447.3 195.1 243.8 0 0CL +ATOM 637 C1 A 212 447.9 194.4 242.9 0 0CL +ATOM 638 B1 A 212 448.1 195.7 243.7 0 0CL +ATOM 639 COM A 213 21.3 468.6 323.5 0 0CL +ATOM 640 C1 A 213 21.2 467.3 323.7 0 0CL +ATOM 641 B1 A 213 21.6 468.2 322.5 0 0CL +ATOM 642 COM A 214 14.6 489.4 171.2 0 0CL +ATOM 643 C1 A 214 15.5 489.6 170.3 0 0CL +ATOM 644 B1 A 214 13.9 489.4 170.4 0 0CL +ATOM 645 COM A 215 172.5 417.9 265.6 0 0CL +ATOM 646 C1 A 215 173.3 417.5 264.6 0 0CL +ATOM 647 B1 A 215 172.6 418.8 265.2 0 0CL +ATOM 648 COM A 216 481.4 498.2 349.2 0 0CL +ATOM 649 C1 A 216 480.7 498.2 350.3 0 0CL +ATOM 650 B1 A 216 481.3 497.1 349.3 0 0CL +ATOM 651 COM A 217 64.9 183.7 457.8 0 0CL +ATOM 652 C1 A 217 64.5 184.5 458.8 0 0CL +ATOM 653 B1 A 217 64.6 184.5 457.2 0 0CL +ATOM 654 COM A 218 370.1 289.6 363.0 0 0CL +ATOM 655 C1 A 218 370.9 290.5 363.5 0 0CL +ATOM 656 B1 A 218 370.8 289.5 362.3 0 0CL +ATOM 657 COM A 219 393.8 305.6 332.2 0 0CL +ATOM 658 C1 A 219 394.7 304.6 332.0 0 0CL +ATOM 659 B1 A 219 394.2 305.6 333.1 0 0CL +ATOM 660 COM A 220 396.5 42.4 227.0 0 0CL +ATOM 661 C1 A 220 395.7 42.2 228.0 0 0CL +ATOM 662 B1 A 220 397.2 42.2 227.7 0 0CL +ATOM 663 COM A 221 451.2 432.1 6.6 0 0CL +ATOM 664 C1 A 221 452.1 431.6 7.3 0 0CL +ATOM 665 B1 A 221 451.6 431.6 5.8 0 0CL +ATOM 666 COM A 222 306.2 484.6 264.6 0 0CL +ATOM 667 C1 A 222 306.8 484.3 263.5 0 0CL +ATOM 668 B1 A 222 305.5 485.1 264.1 0 0CL +ATOM 669 COM A 223 392.2 185.6 174.6 0 0CL +ATOM 670 C1 A 223 392.3 185.7 175.9 0 0CL +ATOM 671 B1 A 223 392.3 184.6 174.8 0 0CL +ATOM 672 COM A 224 224.1 163.4 87.1 0 0CL +ATOM 673 C1 A 224 224.3 164.4 86.3 0 0CL +ATOM 674 B1 A 224 225.1 163.4 87.2 0 0CL +ATOM 675 COM A 225 278.5 78.4 84.4 0 0CL +ATOM 676 C1 A 225 277.8 79.5 84.5 0 0CL +ATOM 677 B1 A 225 278.2 78.4 83.4 0 0CL +ATOM 678 COM A 226 39.3 203.0 341.6 0 0CL +ATOM 679 C1 A 226 38.7 203.8 340.9 0 0CL +ATOM 680 B1 A 226 38.4 202.7 342.0 0 0CL +ATOM 681 COM A 227 401.9 277.0 28.3 0 0CL +ATOM 682 C1 A 227 402.1 277.0 29.6 0 0CL +ATOM 683 B1 A 227 401.2 276.3 28.5 0 0CL +ATOM 684 COM A 228 175.7 324.3 124.7 0 0CL +ATOM 685 C1 A 228 175.6 323.8 125.9 0 0CL +ATOM 686 B1 A 228 175.0 325.0 125.1 0 0CL +ATOM 687 COM A 229 393.6 76.9 259.3 0 0CL +ATOM 688 C1 A 229 393.3 76.8 260.6 0 0CL +ATOM 689 B1 A 229 393.7 75.9 259.3 0 0CL +ATOM 690 COM A 230 307.6 261.3 254.2 0 0CL +ATOM 691 C1 A 230 307.9 261.7 253.0 0 0CL +ATOM 692 B1 A 230 307.3 260.4 253.8 0 0CL +ATOM 693 COM A 231 154.2 38.3 155.8 0 0CL +ATOM 694 C1 A 231 154.9 39.4 155.6 0 0CL +ATOM 695 B1 A 231 154.2 38.3 154.7 0 0CL +ATOM 696 COM A 232 283.6 288.8 18.7 0 0CL +ATOM 697 C1 A 232 284.1 290.0 18.8 0 0CL +ATOM 698 B1 A 232 284.2 288.7 19.5 0 0CL +ATOM 699 COM A 233 188.3 21.7 10.1 0 0CL +ATOM 700 C1 A 233 189.3 21.5 9.3 0 0CL +ATOM 701 B1 A 233 187.8 22.0 9.3 0 0CL +ATOM 702 COM A 234 338.3 265.2 79.7 0 0CL +ATOM 703 C1 A 234 338.5 265.4 80.9 0 0CL +ATOM 704 B1 A 234 338.3 264.2 79.9 0 0CL +ATOM 705 COM A 235 479.8 173.7 428.1 0 0CL +ATOM 706 C1 A 235 480.0 175.0 428.5 0 0CL +ATOM 707 B1 A 235 479.2 173.7 428.9 0 0CL +ATOM 708 COM A 236 141.3 407.0 200.8 0 0CL +ATOM 709 C1 A 236 140.5 407.3 201.8 0 0CL +ATOM 710 B1 A 236 141.3 408.0 200.7 0 0CL +ATOM 711 COM A 237 265.5 348.7 403.6 0 0CL +ATOM 712 C1 A 237 265.4 347.5 403.1 0 0CL +ATOM 713 B1 A 237 266.5 348.6 403.5 0 0CL +ATOM 714 COM A 238 235.9 133.1 466.7 0 0CL +ATOM 715 C1 A 238 235.7 134.0 467.6 0 0CL +ATOM 716 B1 A 238 236.7 132.8 467.3 0 0CL +ATOM 717 COM A 239 309.9 65.5 467.4 0 0CL +ATOM 718 C1 A 239 310.5 64.5 467.9 0 0CL +ATOM 719 B1 A 239 310.4 65.3 466.5 0 0CL +ATOM 720 COM A 240 198.2 466.1 499.0 0 0CL +ATOM 721 C1 A 240 197.4 467.0 498.6 0 0CL +ATOM 722 B1 A 240 198.6 466.1 498.1 0 0CL +ATOM 723 COM A 241 299.7 323.0 472.8 0 0CL +ATOM 724 C1 A 241 300.2 322.0 472.1 0 0CL +ATOM 725 B1 A 241 300.3 322.5 473.6 0 0CL +ATOM 726 COM A 242 219.4 263.1 168.4 0 0CL +ATOM 727 C1 A 242 218.5 262.4 169.1 0 0CL +ATOM 728 B1 A 242 219.4 263.7 169.2 0 0CL +ATOM 729 COM A 243 130.7 445.6 279.4 0 0CL +ATOM 730 C1 A 243 129.6 445.0 279.1 0 0CL +ATOM 731 B1 A 243 130.4 446.4 278.7 0 0CL +ATOM 732 COM A 244 66.6 40.8 302.4 0 0CL +ATOM 733 C1 A 244 67.0 40.2 303.5 0 0CL +ATOM 734 B1 A 244 65.6 40.7 302.8 0 0CL +ATOM 735 COM A 245 75.2 211.6 180.5 0 0CL +ATOM 736 C1 A 245 74.7 212.1 179.4 0 0CL +ATOM 737 B1 A 245 75.6 212.5 180.7 0 0CL +ATOM 738 COM A 246 135.8 159.1 455.3 0 0CL +ATOM 739 C1 A 246 135.0 160.0 455.7 0 0CL +ATOM 740 B1 A 246 135.0 158.7 454.9 0 0CL +ATOM 741 COM A 247 428.7 50.2 217.8 0 0CL +ATOM 742 C1 A 247 428.8 48.9 217.7 0 0CL +ATOM 743 B1 A 247 427.7 50.0 217.8 0 0CL +ATOM 744 COM A 248 22.9 309.0 287.5 0 0CL +ATOM 745 C1 A 248 23.7 310.0 287.9 0 0CL +ATOM 746 B1 A 248 23.6 308.4 288.0 0 0CL +ATOM 747 COM A 249 447.6 87.3 377.9 0 0CL +ATOM 748 C1 A 249 447.7 86.6 379.0 0 0CL +ATOM 749 B1 A 249 446.7 87.7 378.2 0 0CL +ATOM 750 COM A 250 161.7 85.9 428.5 0 0CL +ATOM 751 C1 A 250 161.4 84.8 427.8 0 0CL +ATOM 752 B1 A 250 162.5 85.3 428.8 0 0CL +ATOM 753 COM A 251 397.9 123.5 92.1 0 0CL +ATOM 754 C1 A 251 396.9 123.1 92.9 0 0CL +ATOM 755 B1 A 251 397.3 123.4 91.3 0 0CL +ATOM 756 COM A 252 20.4 4.3 237.3 0 0CL +ATOM 757 C1 A 252 20.2 5.1 236.3 0 0CL +ATOM 758 B1 A 252 21.1 3.9 236.7 0 0CL +ATOM 759 COM A 253 116.6 382.2 221.6 0 0CL +ATOM 760 C1 A 253 117.0 382.5 220.4 0 0CL +ATOM 761 B1 A 253 117.0 383.1 221.9 0 0CL +ATOM 762 COM A 254 85.2 216.6 59.7 0 0CL +ATOM 763 C1 A 254 85.8 215.8 60.6 0 0CL +ATOM 764 B1 A 254 84.5 215.8 59.6 0 0CL +ATOM 765 COM A 255 224.8 154.2 47.2 0 0CL +ATOM 766 C1 A 255 226.0 154.4 46.8 0 0CL +ATOM 767 B1 A 255 225.2 153.8 48.0 0 0CL +ATOM 768 COM A 256 432.8 184.1 404.5 0 0CL +ATOM 769 C1 A 256 433.6 183.2 405.0 0 0CL +ATOM 770 B1 A 256 433.0 183.7 403.6 0 0CL +ATOM 771 COM A 257 17.2 101.0 162.9 0 0CL +ATOM 772 C1 A 257 18.3 100.7 163.6 0 0CL +ATOM 773 B1 A 257 17.6 100.3 162.2 0 0CL +ATOM 774 COM A 258 171.5 370.3 457.4 0 0CL +ATOM 775 C1 A 258 171.5 370.1 458.6 0 0CL +ATOM 776 B1 A 258 170.5 370.5 457.5 0 0CL +ATOM 777 COM A 259 484.8 159.5 185.9 0 0CL +ATOM 778 C1 A 259 486.1 159.5 185.8 0 0CL +ATOM 779 B1 A 259 484.8 159.0 185.0 0 0CL +ATOM 780 COM A 260 432.2 328.4 336.5 0 0CL +ATOM 781 C1 A 260 431.1 327.8 336.9 0 0CL +ATOM 782 B1 A 260 432.4 328.5 337.5 0 0CL +ATOM 783 COM A 261 335.5 322.4 349.7 0 0CL +ATOM 784 C1 A 261 336.0 321.2 350.1 0 0CL +ATOM 785 B1 A 261 335.5 321.9 348.8 0 0CL +ATOM 786 COM A 262 304.9 145.9 116.3 0 0CL +ATOM 787 C1 A 262 305.3 144.9 115.5 0 0CL +ATOM 788 B1 A 262 304.6 145.2 116.9 0 0CL +ATOM 789 COM A 263 370.5 415.2 244.1 0 0CL +ATOM 790 C1 A 263 371.5 414.7 244.9 0 0CL +ATOM 791 B1 A 263 370.2 414.2 244.1 0 0CL +ATOM 792 COM A 264 106.0 433.1 443.9 0 0CL +ATOM 793 C1 A 264 107.2 433.2 444.4 0 0CL +ATOM 794 B1 A 264 106.4 432.6 443.1 0 0CL +ATOM 795 COM A 265 209.4 398.6 27.9 0 0CL +ATOM 796 C1 A 265 208.9 399.7 28.2 0 0CL +ATOM 797 B1 A 265 208.7 398.5 27.2 0 0CL +ATOM 798 COM A 266 304.9 421.0 330.1 0 0CL +ATOM 799 C1 A 266 303.9 421.2 329.3 0 0CL +ATOM 800 B1 A 266 305.2 420.4 329.4 0 0CL +ATOM 801 COM A 267 465.3 281.6 13.4 0 0CL +ATOM 802 C1 A 267 466.6 281.8 13.3 0 0CL +ATOM 803 B1 A 267 465.3 282.6 13.5 0 0CL +ATOM 804 COM A 268 116.4 182.1 90.5 0 0CL +ATOM 805 C1 A 268 115.5 183.0 90.6 0 0CL +ATOM 806 B1 A 268 117.1 182.8 90.6 0 0CL +ATOM 807 COM A 269 106.8 402.7 393.6 0 0CL +ATOM 808 C1 A 269 106.7 403.8 394.2 0 0CL +ATOM 809 B1 A 269 107.7 403.0 393.4 0 0CL +ATOM 810 COM A 270 255.9 212.9 404.7 0 0CL +ATOM 811 C1 A 270 256.6 213.9 404.9 0 0CL +ATOM 812 B1 A 270 256.1 212.6 405.7 0 0CL +ATOM 813 COM A 271 393.9 14.8 409.5 0 0CL +ATOM 814 C1 A 271 394.4 16.0 409.6 0 0CL +ATOM 815 B1 A 271 393.0 15.3 409.4 0 0CL +ATOM 816 COM A 272 401.6 254.3 223.3 0 0CL +ATOM 817 C1 A 272 401.9 253.2 224.0 0 0CL +ATOM 818 B1 A 272 402.6 254.4 223.3 0 0CL +ATOM 819 COM A 273 193.2 494.6 462.7 0 0CL +ATOM 820 C1 A 273 194.2 495.0 461.9 0 0CL +ATOM 821 B1 A 273 192.7 494.6 461.8 0 0CL +ATOM 822 COM A 274 295.6 342.5 464.2 0 0CL +ATOM 823 C1 A 274 296.8 342.5 464.7 0 0CL +ATOM 824 B1 A 274 295.9 343.2 463.5 0 0CL +ATOM 825 COM A 275 326.6 332.8 491.2 0 0CL +ATOM 826 C1 A 275 326.0 333.4 492.2 0 0CL +ATOM 827 B1 A 275 327.3 332.5 491.8 0 0CL +ATOM 828 COM A 276 54.7 335.6 14.7 0 0CL +ATOM 829 C1 A 276 55.0 336.1 13.6 0 0CL +ATOM 830 B1 A 276 55.6 335.9 15.0 0 0CL +ATOM 831 COM A 277 457.4 236.2 358.4 0 0CL +ATOM 832 C1 A 277 458.5 235.5 358.5 0 0CL +ATOM 833 B1 A 277 456.9 235.3 358.6 0 0CL +ATOM 834 COM A 278 33.1 223.0 175.1 0 0CL +ATOM 835 C1 A 278 34.1 222.0 175.2 0 0CL +ATOM 836 B1 A 278 33.6 223.4 175.9 0 0CL +ATOM 837 COM A 279 165.4 147.3 47.0 0 0CL +ATOM 838 C1 A 279 166.3 147.8 46.1 0 0CL +ATOM 839 B1 A 279 165.2 148.3 47.2 0 0CL +ATOM 840 COM A 280 471.5 341.3 165.9 0 0CL +ATOM 841 C1 A 280 470.7 341.2 166.9 0 0CL +ATOM 842 B1 A 280 472.3 341.4 166.6 0 0CL +ATOM 843 COM A 281 10.8 487.8 273.7 0 0CL +ATOM 844 C1 A 281 12.1 487.8 273.4 0 0CL +ATOM 845 B1 A 281 11.0 487.0 274.3 0 0CL +ATOM 846 COM A 282 485.6 134.4 300.5 0 0CL +ATOM 847 C1 A 282 484.9 135.4 301.0 0 0CL +ATOM 848 B1 A 282 486.4 135.1 300.5 0 0CL +ATOM 849 COM A 283 82.7 192.5 117.0 0 0CL +ATOM 850 C1 A 283 81.4 192.4 117.2 0 0CL +ATOM 851 B1 A 283 82.4 192.2 116.0 0 0CL +ATOM 852 COM A 284 60.9 175.6 190.5 0 0CL +ATOM 853 C1 A 284 61.5 174.6 189.9 0 0CL +ATOM 854 B1 A 284 60.0 175.1 190.2 0 0CL +ATOM 855 COM A 285 180.8 316.6 288.9 0 0CL +ATOM 856 C1 A 285 181.3 316.9 290.1 0 0CL +ATOM 857 B1 A 285 180.0 317.1 289.3 0 0CL +ATOM 858 COM A 286 15.9 30.7 421.8 0 0CL +ATOM 859 C1 A 286 17.0 30.4 422.4 0 0CL +ATOM 860 B1 A 286 15.6 29.7 422.1 0 0CL +ATOM 861 COM A 287 350.0 198.1 99.4 0 0CL +ATOM 862 C1 A 287 349.3 197.2 100.2 0 0CL +ATOM 863 B1 A 287 349.0 198.5 99.3 0 0CL +ATOM 864 COM A 288 74.6 21.7 488.8 0 0CL +ATOM 865 C1 A 288 74.4 23.0 489.0 0 0CL +ATOM 866 B1 A 288 75.2 22.0 488.0 0 0CL +ATOM 867 COM A 289 82.6 109.0 381.5 0 0CL +ATOM 868 C1 A 289 83.0 109.6 382.6 0 0CL +ATOM 869 B1 A 289 83.0 109.8 381.0 0 0CL +ATOM 870 COM A 290 24.2 24.3 77.3 0 0CL +ATOM 871 C1 A 290 24.3 24.1 76.0 0 0CL +ATOM 872 B1 A 290 23.6 25.1 77.0 0 0CL +ATOM 873 COM A 291 235.3 487.8 191.6 0 0CL +ATOM 874 C1 A 291 235.3 488.8 192.5 0 0CL +ATOM 875 B1 A 291 234.3 488.1 191.4 0 0CL +ATOM 876 COM A 292 294.2 350.9 265.3 0 0CL +ATOM 877 C1 A 292 293.3 351.3 264.5 0 0CL +ATOM 878 B1 A 292 293.8 351.7 265.9 0 0CL +ATOM 879 COM A 293 69.6 255.4 112.3 0 0CL +ATOM 880 C1 A 293 69.6 256.2 113.2 0 0CL +ATOM 881 B1 A 293 69.9 256.2 111.7 0 0CL +ATOM 882 COM A 294 471.6 81.0 390.0 0 0CL +ATOM 883 C1 A 294 471.8 81.9 390.9 0 0CL +ATOM 884 B1 A 294 470.9 81.6 389.6 0 0CL +ATOM 885 COM A 295 165.5 166.4 468.0 0 0CL +ATOM 886 C1 A 295 165.0 166.7 466.8 0 0CL +ATOM 887 B1 A 295 166.4 166.5 467.5 0 0CL +ATOM 888 COM A 296 76.1 100.3 231.8 0 0CL +ATOM 889 C1 A 296 76.4 100.8 230.6 0 0CL +ATOM 890 B1 A 296 76.2 99.4 231.3 0 0CL +ATOM 891 COM A 297 301.8 39.7 364.8 0 0CL +ATOM 892 C1 A 297 300.9 40.3 364.0 0 0CL +ATOM 893 B1 A 297 301.7 38.9 364.1 0 0CL +ATOM 894 COM A 298 92.0 247.5 295.6 0 0CL +ATOM 895 C1 A 298 93.2 247.3 295.1 0 0CL +ATOM 896 B1 A 298 91.9 246.5 295.6 0 0CL +ATOM 897 COM A 299 190.0 226.1 274.1 0 0CL +ATOM 898 C1 A 299 190.3 226.5 272.9 0 0CL +ATOM 899 B1 A 299 191.0 226.3 274.4 0 0CL +ATOM 900 COM B 300 224.2 481.4 37.5 0 0CL +ATOM 901 C1 B 300 224.1 480.5 36.4 0 0CL +ATOM 902 A1 B 300 224.0 480.8 37.5 0 0CL +ATOM 903 COM B 301 397.1 123.0 90.2 0 0CL +ATOM 904 C1 B 301 396.3 122.3 91.2 0 0CL +ATOM 905 A1 B 301 397.2 123.1 90.8 0 0CL +ATOM 906 COM B 302 233.2 487.8 191.2 0 0CL +ATOM 907 C1 B 302 233.4 488.4 192.4 0 0CL +ATOM 908 A1 B 302 233.7 487.9 191.4 0 0CL +ATOM 909 COM B 303 433.2 183.8 402.4 0 0CL +ATOM 910 C1 B 303 434.2 183.0 403.1 0 0CL +ATOM 911 A1 B 303 433.2 183.8 403.0 0 0CL +ATOM 912 COM B 304 478.7 173.0 429.9 0 0CL +ATOM 913 C1 B 304 479.4 174.3 430.2 0 0CL +ATOM 914 A1 B 304 479.1 173.3 429.5 0 0CL +ATOM 915 COM B 305 281.5 262.6 331.0 0 0CL +ATOM 916 C1 B 305 281.3 263.4 329.8 0 0CL +ATOM 917 A1 B 305 281.5 263.2 331.0 0 0CL +ATOM 918 COM B 306 200.6 250.5 12.9 0 0CL +ATOM 919 C1 B 306 200.5 249.6 11.8 0 0CL +ATOM 920 A1 B 306 201.0 250.5 12.4 0 0CL +ATOM 921 COM B 307 219.4 264.9 169.7 0 0CL +ATOM 922 C1 B 307 218.2 264.1 170.0 0 0CL +ATOM 923 A1 B 307 219.3 264.4 169.4 0 0CL +ATOM 924 COM B 308 226.2 162.9 87.4 0 0CL +ATOM 925 C1 B 308 226.1 163.7 86.3 0 0CL +ATOM 926 A1 B 308 225.7 163.1 87.2 0 0CL +ATOM 927 COM B 309 371.0 248.4 279.0 0 0CL +ATOM 928 C1 B 309 371.7 247.3 278.5 0 0CL +ATOM 929 A1 B 309 370.7 247.9 278.7 0 0CL +ATOM 930 COM B 310 192.0 226.1 275.0 0 0CL +ATOM 931 C1 B 310 192.1 226.2 273.6 0 0CL +ATOM 932 A1 B 310 191.5 226.1 274.7 0 0CL +ATOM 933 COM B 311 126.7 167.7 99.6 0 0CL +ATOM 934 C1 B 311 126.6 169.0 98.9 0 0CL +ATOM 935 A1 B 311 126.4 167.8 99.1 0 0CL +ATOM 936 COM B 312 75.8 98.2 231.1 0 0CL +ATOM 937 C1 B 312 75.8 99.1 229.9 0 0CL +ATOM 938 A1 B 312 75.9 98.8 231.1 0 0CL +ATOM 939 COM B 313 251.8 279.8 278.2 0 0CL +ATOM 940 C1 B 313 251.3 278.7 277.4 0 0CL +ATOM 941 A1 B 313 252.1 279.6 277.7 0 0CL +ATOM 942 COM B 314 76.5 213.3 181.1 0 0CL +ATOM 943 C1 B 314 76.1 213.4 179.7 0 0CL +ATOM 944 A1 B 314 76.1 212.9 180.8 0 0CL +ATOM 945 COM B 315 86.9 212.5 497.9 0 0CL +ATOM 946 C1 B 315 88.3 212.6 497.7 0 0CL +ATOM 947 A1 B 315 87.2 213.0 497.9 0 0CL +ATOM 948 COM B 316 394.1 305.8 334.3 0 0CL +ATOM 949 C1 B 316 394.6 304.6 333.9 0 0CL +ATOM 950 A1 B 316 394.0 305.6 333.8 0 0CL +ATOM 951 COM B 317 304.7 486.0 263.9 0 0CL +ATOM 952 C1 B 317 305.7 485.8 262.9 0 0CL +ATOM 953 A1 B 317 305.2 485.6 264.0 0 0CL +ATOM 954 COM B 318 328.5 332.2 492.2 0 0CL +ATOM 955 C1 B 318 327.8 333.2 493.0 0 0CL +ATOM 956 A1 B 318 327.9 332.5 492.0 0 0CL +ATOM 957 COM B 319 21.9 3.0 236.4 0 0CL +ATOM 958 C1 B 319 21.2 3.8 235.3 0 0CL +ATOM 959 A1 B 319 21.4 3.4 236.5 0 0CL +ATOM 960 COM B 320 464.8 283.7 14.0 0 0CL +ATOM 961 C1 B 320 466.2 283.4 14.2 0 0CL +ATOM 962 A1 B 320 465.1 283.1 13.9 0 0CL +ATOM 963 COM B 321 67.0 379.6 473.2 0 0CL +ATOM 964 C1 B 321 66.2 379.4 474.3 0 0CL +ATOM 965 A1 B 321 66.6 379.1 473.2 0 0CL +ATOM 966 COM B 322 164.9 149.2 47.9 0 0CL +ATOM 967 C1 B 322 166.1 149.4 47.2 0 0CL +ATOM 968 A1 B 322 165.2 148.7 47.6 0 0CL +ATOM 969 COM B 323 186.0 207.9 487.1 0 0CL +ATOM 970 C1 B 323 186.2 206.5 486.9 0 0CL +ATOM 971 A1 B 323 186.4 207.7 486.6 0 0CL +ATOM 972 COM B 324 451.9 431.6 4.6 0 0CL +ATOM 973 C1 B 324 453.0 431.5 5.5 0 0CL +ATOM 974 A1 B 324 451.8 431.7 5.2 0 0CL +ATOM 975 COM B 325 194.4 427.0 338.9 0 0CL +ATOM 976 C1 B 325 194.1 427.1 340.3 0 0CL +ATOM 977 A1 B 325 194.2 427.5 339.2 0 0CL +ATOM 978 COM B 326 426.5 50.4 217.4 0 0CL +ATOM 979 C1 B 326 427.0 49.1 217.0 0 0CL +ATOM 980 A1 B 326 427.1 50.2 217.5 0 0CL +ATOM 981 COM B 327 153.6 38.1 153.7 0 0CL +ATOM 982 C1 B 327 154.1 39.4 153.9 0 0CL +ATOM 983 A1 B 327 153.8 38.2 154.2 0 0CL +ATOM 984 COM B 328 230.0 278.1 92.9 0 0CL +ATOM 985 C1 B 328 230.2 278.1 94.3 0 0CL +ATOM 986 A1 B 328 230.5 278.0 93.1 0 0CL +ATOM 987 COM B 329 102.4 296.2 311.2 0 0CL +ATOM 988 C1 B 329 103.8 295.9 311.5 0 0CL +ATOM 989 A1 B 329 102.6 295.6 311.4 0 0CL +ATOM 990 COM B 330 432.9 329.2 338.4 0 0CL +ATOM 991 C1 B 330 431.5 328.8 338.5 0 0CL +ATOM 992 A1 B 330 432.6 328.9 337.9 0 0CL +ATOM 993 COM B 331 362.8 465.0 138.9 0 0CL +ATOM 994 C1 B 331 361.9 466.0 139.5 0 0CL +ATOM 995 A1 B 331 362.6 464.9 139.5 0 0CL +ATOM 996 COM B 332 117.6 383.8 222.7 0 0CL +ATOM 997 C1 B 332 118.2 383.7 221.4 0 0CL +ATOM 998 A1 B 332 117.4 383.4 222.3 0 0CL +ATOM 999 COM B 333 411.1 327.8 246.9 0 0CL +ATOM 1000 C1 B 333 410.8 329.1 247.5 0 0CL +ATOM 1001 A1 B 333 410.5 327.9 247.1 0 0CL +ATOM 1002 COM B 334 165.1 73.2 428.4 0 0CL +ATOM 1003 C1 B 334 163.7 73.6 428.1 0 0CL +ATOM 1004 A1 B 334 164.7 72.9 428.0 0 0CL +ATOM 1005 COM B 335 187.0 22.8 8.8 0 0CL +ATOM 1006 C1 B 335 188.3 22.8 8.3 0 0CL +ATOM 1007 A1 B 335 187.4 22.5 9.1 0 0CL +ATOM 1008 COM B 336 371.1 289.3 361.1 0 0CL +ATOM 1009 C1 B 336 371.6 290.5 361.7 0 0CL +ATOM 1010 A1 B 336 370.9 289.5 361.7 0 0CL +ATOM 1011 COM B 337 398.4 42.3 228.2 0 0CL +ATOM 1012 C1 B 337 397.3 42.6 229.1 0 0CL +ATOM 1013 A1 B 337 397.8 42.4 228.0 0 0CL +ATOM 1014 COM B 338 441.4 460.8 235.1 0 0CL +ATOM 1015 C1 B 338 440.1 460.1 235.4 0 0CL +ATOM 1016 A1 B 338 441.2 460.7 235.7 0 0CL +ATOM 1017 COM B 339 75.7 21.9 486.9 0 0CL +ATOM 1018 C1 B 339 75.0 23.1 487.2 0 0CL +ATOM 1019 A1 B 339 75.3 22.0 487.4 0 0CL +ATOM 1020 COM B 340 463.9 48.9 97.2 0 0CL +ATOM 1021 C1 B 340 462.6 48.9 97.6 0 0CL +ATOM 1022 A1 B 340 463.5 49.2 96.9 0 0CL +ATOM 1023 COM B 341 460.8 347.4 140.4 0 0CL +ATOM 1024 C1 B 341 461.5 346.3 139.7 0 0CL +ATOM 1025 A1 B 341 460.7 346.8 140.5 0 0CL +ATOM 1026 COM B 342 363.9 209.9 406.4 0 0CL +ATOM 1027 C1 B 342 365.3 210.1 406.2 0 0CL +ATOM 1028 A1 B 342 364.4 209.5 406.6 0 0CL +ATOM 1029 COM B 343 13.0 118.1 385.6 0 0CL +ATOM 1030 C1 B 343 13.8 118.6 386.6 0 0CL +ATOM 1031 A1 B 343 13.6 118.0 385.6 0 0CL +ATOM 1032 COM B 344 451.2 398.5 90.5 0 0CL +ATOM 1033 C1 B 344 451.4 399.5 91.5 0 0CL +ATOM 1034 A1 B 344 451.6 398.9 90.4 0 0CL +ATOM 1035 COM B 345 335.6 329.0 246.1 0 0CL +ATOM 1036 C1 B 345 334.9 330.0 245.3 0 0CL +ATOM 1037 A1 B 345 335.6 329.1 245.5 0 0CL +ATOM 1038 COM B 346 456.0 234.5 358.5 0 0CL +ATOM 1039 C1 B 346 457.3 234.0 358.3 0 0CL +ATOM 1040 A1 B 346 456.4 234.9 358.5 0 0CL +ATOM 1041 COM B 347 310.8 21.6 179.9 0 0CL +ATOM 1042 C1 B 347 311.2 23.0 179.7 0 0CL +ATOM 1043 A1 B 347 311.0 22.0 180.4 0 0CL +ATOM 1044 COM B 348 245.4 395.7 465.5 0 0CL +ATOM 1045 C1 B 348 245.9 394.4 465.4 0 0CL +ATOM 1046 A1 B 348 245.6 395.5 464.9 0 0CL +ATOM 1047 COM B 349 33.6 224.0 177.0 0 0CL +ATOM 1048 C1 B 349 34.3 222.7 177.0 0 0CL +ATOM 1049 A1 B 349 33.6 223.6 176.6 0 0CL +ATOM 1050 COM B 350 495.5 335.2 305.1 0 0CL +ATOM 1051 C1 B 350 494.6 336.1 305.8 0 0CL +ATOM 1052 A1 B 350 495.3 335.1 305.7 0 0CL +ATOM 1053 COM B 351 445.6 88.0 378.0 0 0CL +ATOM 1054 C1 B 351 445.7 86.9 378.9 0 0CL +ATOM 1055 A1 B 351 446.1 87.7 378.1 0 0CL +ATOM 1056 COM B 352 141.2 409.0 199.9 0 0CL +ATOM 1057 C1 B 352 140.1 408.9 200.8 0 0CL +ATOM 1058 A1 B 352 141.1 408.5 200.2 0 0CL +ATOM 1059 COM B 353 311.0 65.8 465.5 0 0CL +ATOM 1060 C1 B 353 311.7 64.9 466.4 0 0CL +ATOM 1061 A1 B 353 310.8 65.6 466.1 0 0CL +ATOM 1062 COM B 354 305.7 419.3 329.1 0 0CL +ATOM 1063 C1 B 354 304.4 419.5 328.6 0 0CL +ATOM 1064 A1 B 354 305.4 419.7 329.3 0 0CL +ATOM 1065 COM B 355 207.9 397.8 26.6 0 0CL +ATOM 1066 C1 B 355 207.4 398.9 27.3 0 0CL +ATOM 1067 A1 B 355 208.2 398.1 27.0 0 0CL +ATOM 1068 COM B 356 277.9 77.9 82.3 0 0CL +ATOM 1069 C1 B 356 277.0 78.9 82.9 0 0CL +ATOM 1070 A1 B 356 278.0 78.1 82.9 0 0CL +ATOM 1071 COM B 357 167.6 166.1 467.4 0 0CL +ATOM 1072 C1 B 357 166.8 166.0 466.2 0 0CL +ATOM 1073 A1 B 357 167.0 166.2 467.4 0 0CL +ATOM 1074 COM B 358 322.4 151.4 418.9 0 0CL +ATOM 1075 C1 B 358 320.9 151.6 418.8 0 0CL +ATOM 1076 A1 B 358 322.1 151.3 418.4 0 0CL +ATOM 1077 COM B 359 172.3 366.4 11.9 0 0CL +ATOM 1078 C1 B 359 173.1 365.3 12.4 0 0CL +ATOM 1079 A1 B 359 172.1 365.9 12.3 0 0CL +ATOM 1080 COM B 360 484.7 16.6 20.0 0 0CL +ATOM 1081 C1 B 360 483.8 17.3 20.9 0 0CL +ATOM 1082 A1 B 360 484.7 17.2 20.1 0 0CL +ATOM 1083 COM B 361 355.4 164.7 295.9 0 0CL +ATOM 1084 C1 B 361 354.0 164.8 295.6 0 0CL +ATOM 1085 A1 B 361 355.1 165.1 296.1 0 0CL +ATOM 1086 COM B 362 274.3 164.3 267.2 0 0CL +ATOM 1087 C1 B 362 273.7 165.3 266.3 0 0CL +ATOM 1088 A1 B 362 274.6 164.7 266.8 0 0CL +ATOM 1089 COM B 363 17.7 99.9 161.1 0 0CL +ATOM 1090 C1 B 363 18.9 100.0 161.9 0 0CL +ATOM 1091 A1 B 363 17.7 100.2 161.6 0 0CL +ATOM 1092 COM B 364 12.9 489.8 169.8 0 0CL +ATOM 1093 C1 B 364 14.1 490.3 169.3 0 0CL +ATOM 1094 A1 B 364 13.4 489.7 170.1 0 0CL +ATOM 1095 COM B 365 261.8 311.9 71.1 0 0CL +ATOM 1096 C1 B 365 260.8 311.4 70.2 0 0CL +ATOM 1097 A1 B 365 261.4 312.3 70.8 0 0CL +ATOM 1098 COM B 366 294.1 352.6 266.6 0 0CL +ATOM 1099 C1 B 366 293.5 353.0 265.4 0 0CL +ATOM 1100 A1 B 366 294.0 352.2 266.2 0 0CL +ATOM 1101 COM B 367 22.2 468.3 321.5 0 0CL +ATOM 1102 C1 B 367 22.3 467.1 322.2 0 0CL +ATOM 1103 A1 B 367 22.0 468.3 322.0 0 0CL +ATOM 1104 COM B 368 178.8 317.3 289.3 0 0CL +ATOM 1105 C1 B 368 179.5 317.2 290.6 0 0CL +ATOM 1106 A1 B 368 179.4 317.1 289.3 0 0CL +ATOM 1107 COM B 369 97.7 77.3 313.0 0 0CL +ATOM 1108 C1 B 369 96.8 76.2 313.4 0 0CL +ATOM 1109 A1 B 369 97.9 76.8 313.3 0 0CL +ATOM 1110 COM B 370 278.5 414.6 441.8 0 0CL +ATOM 1111 C1 B 370 279.4 414.8 440.7 0 0CL +ATOM 1112 A1 B 370 279.0 414.8 441.9 0 0CL +ATOM 1113 COM B 371 403.6 255.1 223.2 0 0CL +ATOM 1114 C1 B 371 403.6 254.2 224.2 0 0CL +ATOM 1115 A1 B 371 403.1 254.8 223.3 0 0CL +ATOM 1116 COM B 372 265.8 46.4 92.9 0 0CL +ATOM 1117 C1 B 372 265.1 46.1 94.1 0 0CL +ATOM 1118 A1 B 372 266.1 46.2 93.4 0 0CL +ATOM 1119 COM B 373 82.6 191.7 115.0 0 0CL +ATOM 1120 C1 B 373 81.4 191.4 115.6 0 0CL +ATOM 1121 A1 B 373 82.5 191.8 115.5 0 0CL +ATOM 1122 COM B 374 37.3 271.2 197.8 0 0CL +ATOM 1123 C1 B 374 37.3 272.6 197.3 0 0CL +ATOM 1124 A1 B 374 37.6 271.4 197.3 0 0CL +ATOM 1125 COM B 375 153.3 141.0 318.8 0 0CL +ATOM 1126 C1 B 375 152.1 141.1 319.6 0 0CL +ATOM 1127 A1 B 375 152.9 140.6 318.7 0 0CL +ATOM 1128 COM B 376 164.9 273.1 29.3 0 0CL +ATOM 1129 C1 B 376 165.6 274.2 30.0 0 0CL +ATOM 1130 A1 B 376 164.8 273.2 29.8 0 0CL +ATOM 1131 COM B 377 273.8 450.7 349.3 0 0CL +ATOM 1132 C1 B 377 274.7 451.6 348.6 0 0CL +ATOM 1133 A1 B 377 273.8 451.3 349.4 0 0CL +ATOM 1134 COM B 378 248.6 127.8 360.0 0 0CL +ATOM 1135 C1 B 378 249.2 127.0 361.0 0 0CL +ATOM 1136 A1 B 378 248.9 127.2 359.9 0 0CL +ATOM 1137 COM B 379 446.3 35.1 234.2 0 0CL +ATOM 1138 C1 B 379 445.7 35.5 233.0 0 0CL +ATOM 1139 A1 B 379 446.0 35.6 234.2 0 0CL +ATOM 1140 COM B 380 145.9 307.8 139.3 0 0CL +ATOM 1141 C1 B 380 146.3 307.2 138.1 0 0CL +ATOM 1142 A1 B 380 146.4 307.8 139.1 0 0CL +ATOM 1143 COM B 381 132.8 457.1 168.3 0 0CL +ATOM 1144 C1 B 381 132.4 458.1 167.4 0 0CL +ATOM 1145 A1 B 381 132.7 457.7 168.5 0 0CL +ATOM 1146 COM B 382 461.2 9.5 483.2 0 0CL +ATOM 1147 C1 B 382 459.8 9.9 483.3 0 0CL +ATOM 1148 A1 B 382 460.7 9.2 482.9 0 0CL +ATOM 1149 COM B 383 331.4 458.7 199.9 0 0CL +ATOM 1150 C1 B 383 331.3 460.1 200.1 0 0CL +ATOM 1151 A1 B 383 331.2 459.1 199.4 0 0CL +ATOM 1152 COM B 384 191.6 494.8 461.2 0 0CL +ATOM 1153 C1 B 384 192.7 495.5 460.7 0 0CL +ATOM 1154 A1 B 384 192.1 494.8 461.5 0 0CL +ATOM 1155 COM B 385 469.8 81.8 389.1 0 0CL +ATOM 1156 C1 B 385 470.0 82.4 390.3 0 0CL +ATOM 1157 A1 B 385 470.3 81.6 389.4 0 0CL +ATOM 1158 COM B 386 448.8 196.6 244.1 0 0CL +ATOM 1159 C1 B 386 449.4 195.5 243.4 0 0CL +ATOM 1160 A1 B 386 448.5 196.1 244.0 0 0CL +ATOM 1161 COM B 387 429.2 414.9 22.8 0 0CL +ATOM 1162 C1 B 387 428.7 415.2 21.5 0 0CL +ATOM 1163 A1 B 387 428.6 415.1 22.7 0 0CL +ATOM 1164 COM B 388 64.2 184.9 456.1 0 0CL +ATOM 1165 C1 B 388 63.6 185.4 457.3 0 0CL +ATOM 1166 A1 B 388 64.3 184.7 456.7 0 0CL +ATOM 1167 COM B 389 410.7 275.4 458.2 0 0CL +ATOM 1168 C1 B 389 410.0 274.2 457.7 0 0CL +ATOM 1169 A1 B 389 410.8 275.2 457.6 0 0CL +ATOM 1170 COM B 390 487.4 135.6 300.0 0 0CL +ATOM 1171 C1 B 390 486.3 136.5 300.1 0 0CL +ATOM 1172 A1 B 390 486.9 135.4 300.1 0 0CL +ATOM 1173 COM B 391 307.7 160.3 269.2 0 0CL +ATOM 1174 C1 B 391 307.1 159.1 268.8 0 0CL +ATOM 1175 A1 B 391 307.3 160.1 269.5 0 0CL +ATOM 1176 COM B 392 160.2 333.0 162.5 0 0CL +ATOM 1177 C1 B 392 160.2 334.4 162.1 0 0CL +ATOM 1178 A1 B 392 159.9 333.5 162.8 0 0CL +ATOM 1179 COM B 393 174.0 325.7 124.9 0 0CL +ATOM 1180 C1 B 393 173.9 324.7 125.9 0 0CL +ATOM 1181 A1 B 393 174.4 325.2 124.9 0 0CL +ATOM 1182 COM B 394 85.0 91.2 212.4 0 0CL +ATOM 1183 C1 B 394 84.2 92.3 211.9 0 0CL +ATOM 1184 A1 B 394 85.1 91.4 211.8 0 0CL +ATOM 1185 COM B 395 130.7 447.2 277.9 0 0CL +ATOM 1186 C1 B 395 129.8 446.1 277.5 0 0CL +ATOM 1187 A1 B 395 130.6 446.7 278.2 0 0CL +ATOM 1188 COM B 396 56.6 335.8 15.7 0 0CL +ATOM 1189 C1 B 396 56.8 335.9 14.3 0 0CL +ATOM 1190 A1 B 396 56.2 335.8 15.3 0 0CL +ATOM 1191 COM B 397 267.7 348.8 403.8 0 0CL +ATOM 1192 C1 B 397 267.2 347.4 403.7 0 0CL +ATOM 1193 A1 B 397 267.1 348.6 403.8 0 0CL +ATOM 1194 COM B 398 351.7 407.0 271.2 0 0CL +ATOM 1195 C1 B 398 352.4 408.3 271.1 0 0CL +ATOM 1196 A1 B 398 351.7 407.4 270.7 0 0CL +ATOM 1197 COM B 399 392.7 183.5 174.4 0 0CL +ATOM 1198 C1 B 399 393.1 184.0 175.7 0 0CL +ATOM 1199 A1 B 399 392.6 184.1 174.6 0 0CL +ATOM 1200 COM B 400 118.2 183.4 90.3 0 0CL +ATOM 1201 C1 B 400 117.0 184.1 90.1 0 0CL +ATOM 1202 A1 B 400 117.6 183.1 90.3 0 0CL +ATOM 1203 COM B 401 201.4 185.4 267.6 0 0CL +ATOM 1204 C1 B 401 200.1 185.8 267.2 0 0CL +ATOM 1205 A1 B 401 201.3 185.3 267.0 0 0CL +ATOM 1206 COM B 402 10.6 485.9 274.7 0 0CL +ATOM 1207 C1 B 402 11.9 485.9 273.9 0 0CL +ATOM 1208 A1 B 402 10.8 486.4 274.4 0 0CL +ATOM 1209 COM B 403 264.8 327.1 435.3 0 0CL +ATOM 1210 C1 B 403 263.6 326.5 434.9 0 0CL +ATOM 1211 A1 B 403 264.6 327.3 434.8 0 0CL +ATOM 1212 COM B 404 23.2 26.3 77.2 0 0CL +ATOM 1213 C1 B 404 23.8 26.0 75.9 0 0CL +ATOM 1214 A1 B 404 23.5 25.8 77.1 0 0CL +ATOM 1215 COM B 405 172.7 420.1 265.4 0 0CL +ATOM 1216 C1 B 405 173.7 419.4 264.6 0 0CL +ATOM 1217 A1 B 405 172.7 419.5 265.4 0 0CL +ATOM 1218 COM B 406 295.7 344.2 462.9 0 0CL +ATOM 1219 C1 B 406 296.8 344.2 463.8 0 0CL +ATOM 1220 A1 B 406 295.8 343.8 463.3 0 0CL +ATOM 1221 COM B 407 394.2 74.9 258.9 0 0CL +ATOM 1222 C1 B 407 394.2 75.1 260.3 0 0CL +ATOM 1223 A1 B 407 394.1 75.4 259.2 0 0CL +ATOM 1224 COM B 408 64.8 484.7 214.1 0 0CL +ATOM 1225 C1 B 408 64.6 483.7 215.0 0 0CL +ATOM 1226 A1 B 408 64.4 484.2 214.0 0 0CL +ATOM 1227 COM B 409 495.7 321.9 303.1 0 0CL +ATOM 1228 C1 B 409 496.7 321.7 304.1 0 0CL +ATOM 1229 A1 B 409 496.2 321.6 303.0 0 0CL +ATOM 1230 COM B 410 76.8 111.0 74.9 0 0CL +ATOM 1231 C1 B 410 76.2 111.6 76.0 0 0CL +ATOM 1232 A1 B 410 77.1 111.3 75.3 0 0CL +ATOM 1233 COM B 411 205.5 317.6 155.3 0 0CL +ATOM 1234 C1 B 411 205.1 318.0 156.7 0 0CL +ATOM 1235 A1 B 411 205.4 318.2 155.5 0 0CL +ATOM 1236 COM B 412 481.8 496.0 349.2 0 0CL +ATOM 1237 C1 B 412 481.3 496.4 350.5 0 0CL +ATOM 1238 A1 B 412 481.6 496.6 349.4 0 0CL +ATOM 1239 COM B 413 335.6 353.7 184.4 0 0CL +ATOM 1240 C1 B 413 336.1 353.0 185.6 0 0CL +ATOM 1241 A1 B 413 335.4 353.1 184.6 0 0CL +ATOM 1242 COM B 414 484.3 158.7 183.9 0 0CL +ATOM 1243 C1 B 414 485.7 159.1 183.9 0 0CL +ATOM 1244 A1 B 414 484.6 158.9 184.4 0 0CL +ATOM 1245 COM B 415 300.0 429.0 66.0 0 0CL +ATOM 1246 C1 B 415 301.1 429.0 66.9 0 0CL +ATOM 1247 A1 B 415 300.0 428.6 66.5 0 0CL +ATOM 1248 COM B 416 338.0 371.4 361.0 0 0CL +ATOM 1249 C1 B 416 337.2 372.1 360.1 0 0CL +ATOM 1250 A1 B 416 337.5 371.6 361.2 0 0CL +ATOM 1251 COM B 417 391.8 15.3 409.7 0 0CL +ATOM 1252 C1 B 417 392.6 16.4 410.2 0 0CL +ATOM 1253 A1 B 417 392.4 15.3 409.7 0 0CL +ATOM 1254 COM B 418 259.5 466.0 105.2 0 0CL +ATOM 1255 C1 B 418 258.9 467.3 105.7 0 0CL +ATOM 1256 A1 B 418 259.3 466.5 104.9 0 0CL +ATOM 1257 COM B 419 491.5 221.7 376.2 0 0CL +ATOM 1258 C1 B 419 492.6 222.3 375.5 0 0CL +ATOM 1259 A1 B 419 491.5 221.9 375.6 0 0CL +ATOM 1260 COM B 420 475.3 3.7 109.4 0 0CL +ATOM 1261 C1 B 420 475.2 2.3 109.6 0 0CL +ATOM 1262 A1 B 420 475.7 3.4 109.7 0 0CL +ATOM 1263 COM B 421 194.7 365.1 477.6 0 0CL +ATOM 1264 C1 B 421 195.1 365.1 476.2 0 0CL +ATOM 1265 A1 B 421 194.5 365.5 477.2 0 0CL +ATOM 1266 COM B 422 108.7 403.1 392.7 0 0CL +ATOM 1267 C1 B 422 108.2 404.3 393.1 0 0CL +ATOM 1268 A1 B 422 108.2 403.1 392.9 0 0CL +ATOM 1269 COM B 423 296.5 46.2 123.4 0 0CL +ATOM 1270 C1 B 423 295.7 45.1 123.7 0 0CL +ATOM 1271 A1 B 423 296.4 45.8 123.0 0 0CL +ATOM 1272 COM B 424 106.5 432.3 441.9 0 0CL +ATOM 1273 C1 B 424 107.7 432.8 442.6 0 0CL +ATOM 1274 A1 B 424 106.5 432.5 442.5 0 0CL +ATOM 1275 COM B 425 270.4 114.0 34.8 0 0CL +ATOM 1276 C1 B 425 271.3 115.0 35.3 0 0CL +ATOM 1277 A1 B 425 270.3 114.2 35.3 0 0CL +ATOM 1278 COM B 426 303.7 144.7 117.7 0 0CL +ATOM 1279 C1 B 426 303.9 144.0 116.5 0 0CL +ATOM 1280 A1 B 426 304.0 145.0 117.2 0 0CL +ATOM 1281 COM B 427 151.9 60.8 82.6 0 0CL +ATOM 1282 C1 B 427 152.3 61.9 81.8 0 0CL +ATOM 1283 A1 B 427 151.6 61.3 82.6 0 0CL +ATOM 1284 COM B 428 64.4 40.4 302.7 0 0CL +ATOM 1285 C1 B 428 65.2 39.6 303.5 0 0CL +ATOM 1286 A1 B 428 65.0 40.4 302.7 0 0CL +ATOM 1287 COM B 429 338.3 439.9 406.8 0 0CL +ATOM 1288 C1 B 429 338.1 440.3 408.2 0 0CL +ATOM 1289 A1 B 429 338.8 440.0 407.2 0 0CL +ATOM 1290 COM B 430 335.6 322.0 347.6 0 0CL +ATOM 1291 C1 B 430 336.4 321.0 348.3 0 0CL +ATOM 1292 A1 B 430 335.6 322.0 348.2 0 0CL +ATOM 1293 COM B 431 40.9 189.8 51.8 0 0CL +ATOM 1294 C1 B 431 40.6 188.4 51.7 0 0CL +ATOM 1295 A1 B 431 41.2 189.4 52.2 0 0CL +ATOM 1296 COM B 432 280.9 317.2 193.4 0 0CL +ATOM 1297 C1 B 432 279.9 317.9 192.7 0 0CL +ATOM 1298 A1 B 432 281.0 317.8 193.2 0 0CL +ATOM 1299 COM B 433 224.2 149.5 294.9 0 0CL +ATOM 1300 C1 B 433 223.9 150.9 294.7 0 0CL +ATOM 1301 A1 B 433 224.4 150.0 295.3 0 0CL +ATOM 1302 COM B 434 398.4 34.0 294.3 0 0CL +ATOM 1303 C1 B 434 397.7 32.9 294.9 0 0CL +ATOM 1304 A1 B 434 398.7 33.5 294.6 0 0CL +ATOM 1305 COM B 435 106.2 407.5 195.2 0 0CL +ATOM 1306 C1 B 435 106.9 406.3 195.1 0 0CL +ATOM 1307 A1 B 435 106.6 407.4 195.6 0 0CL +ATOM 1308 COM B 436 256.3 211.8 406.6 0 0CL +ATOM 1309 C1 B 436 257.3 212.9 406.4 0 0CL +ATOM 1310 A1 B 436 256.3 212.2 406.1 0 0CL +ATOM 1311 COM B 437 251.9 395.4 328.0 0 0CL +ATOM 1312 C1 B 437 251.9 396.6 328.7 0 0CL +ATOM 1313 A1 B 437 251.7 395.9 327.8 0 0CL +ATOM 1314 COM B 438 288.1 152.4 493.7 0 0CL +ATOM 1315 C1 B 438 287.6 151.8 494.9 0 0CL +ATOM 1316 A1 B 438 287.5 152.3 493.8 0 0CL +ATOM 1317 COM B 439 338.6 263.0 79.7 0 0CL +ATOM 1318 C1 B 439 339.1 263.5 80.9 0 0CL +ATOM 1319 A1 B 439 338.6 263.6 79.8 0 0CL +ATOM 1320 COM B 440 367.3 172.8 388.0 0 0CL +ATOM 1321 C1 B 440 366.7 172.0 389.0 0 0CL +ATOM 1322 A1 B 440 367.7 172.5 388.4 0 0CL +ATOM 1323 COM B 441 304.5 210.7 3.7 0 0CL +ATOM 1324 C1 B 441 304.3 211.9 3.1 0 0CL +ATOM 1325 A1 B 441 304.9 210.9 3.3 0 0CL +ATOM 1326 COM B 442 87.7 70.5 253.8 0 0CL +ATOM 1327 C1 B 442 88.7 71.4 254.3 0 0CL +ATOM 1328 A1 B 442 88.3 70.5 253.6 0 0CL +ATOM 1329 COM B 443 341.8 484.3 318.7 0 0CL +ATOM 1330 C1 B 443 341.8 485.1 317.5 0 0CL +ATOM 1331 A1 B 443 341.5 484.9 318.7 0 0CL +ATOM 1332 COM B 444 348.2 199.2 98.7 0 0CL +ATOM 1333 C1 B 444 347.8 197.9 99.3 0 0CL +ATOM 1334 A1 B 444 348.6 198.8 98.9 0 0CL +ATOM 1335 COM B 445 163.3 85.0 429.7 0 0CL +ATOM 1336 C1 B 445 162.6 83.9 429.0 0 0CL +ATOM 1337 A1 B 445 162.9 85.1 429.3 0 0CL +ATOM 1338 COM B 446 300.4 322.3 474.8 0 0CL +ATOM 1339 C1 B 446 300.5 321.2 473.9 0 0CL +ATOM 1340 A1 B 446 300.3 322.3 474.2 0 0CL +ATOM 1341 COM B 447 225.3 153.0 48.9 0 0CL +ATOM 1342 C1 B 447 226.4 153.0 48.1 0 0CL +ATOM 1343 A1 B 447 225.3 153.3 48.4 0 0CL +ATOM 1344 COM B 448 181.6 4.6 269.0 0 0CL +ATOM 1345 C1 B 448 183.0 4.7 268.9 0 0CL +ATOM 1346 A1 B 448 181.9 5.0 269.3 0 0CL +ATOM 1347 COM B 449 473.4 341.8 166.9 0 0CL +ATOM 1348 C1 B 449 472.3 342.0 167.8 0 0CL +ATOM 1349 A1 B 449 472.8 341.7 166.8 0 0CL diff --git a/het3mer/PDB/400000.pdb b/het3mer/PDB/400000.pdb new file mode 100644 index 00000000..8a25c415 --- /dev/null +++ b/het3mer/PDB/400000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 400000 CREATED Thu May 29 13:10:33 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 21.3 361.5 362.5 0 0CL +ATOM 1 A1 C 0 22.8 362.7 361.4 0 0CL +ATOM 2 B1 C 0 22.4 363.0 361.9 0 0CL +ATOM 3 COM C 1 416.5 183.2 51.4 0 0CL +ATOM 4 A1 C 1 414.6 183.3 50.2 0 0CL +ATOM 5 B1 C 1 414.5 183.3 50.9 0 0CL +ATOM 6 COM C 2 141.5 125.4 190.8 0 0CL +ATOM 7 A1 C 2 140.3 123.5 190.8 0 0CL +ATOM 8 B1 C 2 141.0 123.5 191.1 0 0CL +ATOM 9 COM C 3 217.5 48.3 181.6 0 0CL +ATOM 10 A1 C 3 218.7 48.8 183.4 0 0CL +ATOM 11 B1 C 3 218.7 49.3 182.9 0 0CL +ATOM 12 COM C 4 116.3 404.5 283.4 0 0CL +ATOM 13 A1 C 4 116.1 403.0 284.9 0 0CL +ATOM 14 B1 C 4 116.6 402.8 284.4 0 0CL +ATOM 15 COM C 5 421.7 394.1 427.1 0 0CL +ATOM 16 A1 C 5 423.8 393.7 426.7 0 0CL +ATOM 17 B1 C 5 423.6 394.4 426.6 0 0CL +ATOM 18 COM C 6 61.9 359.3 335.1 0 0CL +ATOM 19 A1 C 6 61.5 359.7 337.3 0 0CL +ATOM 20 B1 C 6 60.9 359.4 336.8 0 0CL +ATOM 21 COM C 7 183.7 445.8 61.7 0 0CL +ATOM 22 A1 C 7 183.6 443.6 61.5 0 0CL +ATOM 23 B1 C 7 183.7 443.8 62.2 0 0CL +ATOM 24 COM C 8 34.1 336.7 368.8 0 0CL +ATOM 25 A1 C 8 36.3 336.9 369.3 0 0CL +ATOM 26 B1 C 8 36.0 336.3 369.5 0 0CL +ATOM 27 COM C 9 328.7 399.4 193.1 0 0CL +ATOM 28 A1 C 9 328.7 400.8 194.9 0 0CL +ATOM 29 B1 C 9 328.9 401.1 194.2 0 0CL +ATOM 30 COM C 10 88.3 293.1 177.7 0 0CL +ATOM 31 A1 C 10 87.4 295.0 177.0 0 0CL +ATOM 32 B1 C 10 88.1 294.9 176.9 0 0CL +ATOM 33 COM C 11 436.6 420.7 450.6 0 0CL +ATOM 34 A1 C 11 437.9 420.4 452.3 0 0CL +ATOM 35 B1 C 11 438.0 421.0 451.9 0 0CL +ATOM 36 COM C 12 492.0 117.0 493.6 0 0CL +ATOM 37 A1 C 12 492.5 115.0 494.4 0 0CL +ATOM 38 B1 C 12 492.4 115.6 494.9 0 0CL +ATOM 39 COM C 13 442.4 17.2 51.0 0 0CL +ATOM 40 A1 C 13 443.7 16.3 52.5 0 0CL +ATOM 41 B1 C 13 443.0 16.5 52.7 0 0CL +ATOM 42 COM C 14 387.9 303.0 236.3 0 0CL +ATOM 43 A1 C 14 388.0 304.1 234.3 0 0CL +ATOM 44 B1 C 14 387.8 304.5 234.9 0 0CL +ATOM 45 COM C 15 490.5 437.1 495.2 0 0CL +ATOM 46 A1 C 15 488.4 437.6 495.1 0 0CL +ATOM 47 B1 C 15 488.6 436.9 495.4 0 0CL +ATOM 48 COM C 16 483.8 353.2 333.5 0 0CL +ATOM 49 A1 C 16 483.7 354.9 334.9 0 0CL +ATOM 50 B1 C 16 483.2 354.3 335.0 0 0CL +ATOM 51 COM C 17 471.7 230.1 314.8 0 0CL +ATOM 52 A1 C 17 470.8 232.0 315.4 0 0CL +ATOM 53 B1 C 17 471.5 232.0 315.2 0 0CL +ATOM 54 COM C 18 446.0 377.1 126.3 0 0CL +ATOM 55 A1 C 18 446.4 376.0 124.5 0 0CL +ATOM 56 B1 C 18 445.7 376.2 124.6 0 0CL +ATOM 57 COM C 19 312.1 398.2 10.3 0 0CL +ATOM 58 A1 C 19 311.3 399.8 11.7 0 0CL +ATOM 59 B1 C 19 311.5 399.1 12.0 0 0CL +ATOM 60 COM C 20 213.7 491.7 285.7 0 0CL +ATOM 61 A1 C 20 213.6 492.6 283.7 0 0CL +ATOM 62 B1 C 20 213.6 491.8 283.8 0 0CL +ATOM 63 COM C 21 289.0 186.2 283.1 0 0CL +ATOM 64 A1 C 21 288.4 185.1 285.0 0 0CL +ATOM 65 B1 C 21 288.0 185.0 284.4 0 0CL +ATOM 66 COM C 22 73.4 95.9 97.1 0 0CL +ATOM 67 A1 C 22 74.3 93.9 97.2 0 0CL +ATOM 68 B1 C 22 74.5 94.4 97.8 0 0CL +ATOM 69 COM C 23 155.2 370.8 455.2 0 0CL +ATOM 70 A1 C 23 156.0 372.6 456.3 0 0CL +ATOM 71 B1 C 23 156.3 372.5 455.6 0 0CL +ATOM 72 COM C 24 228.4 168.0 90.7 0 0CL +ATOM 73 A1 C 24 229.9 166.5 91.3 0 0CL +ATOM 74 B1 C 24 230.0 166.7 90.6 0 0CL +ATOM 75 COM C 25 43.5 22.5 4.5 0 0CL +ATOM 76 A1 C 25 42.3 24.1 3.6 0 0CL +ATOM 77 B1 C 25 43.0 24.1 3.5 0 0CL +ATOM 78 COM C 26 464.7 215.8 12.3 0 0CL +ATOM 79 A1 C 26 464.4 216.5 14.4 0 0CL +ATOM 80 B1 C 26 464.2 215.8 14.2 0 0CL +ATOM 81 COM C 27 71.1 392.9 241.9 0 0CL +ATOM 82 A1 C 27 69.2 393.1 243.0 0 0CL +ATOM 83 B1 C 27 69.6 392.6 243.1 0 0CL +ATOM 84 COM C 28 335.9 198.4 295.0 0 0CL +ATOM 85 A1 C 28 336.2 198.8 292.9 0 0CL +ATOM 86 B1 C 28 336.7 198.4 293.3 0 0CL +ATOM 87 COM C 29 462.4 54.4 383.6 0 0CL +ATOM 88 A1 C 29 460.8 54.6 382.1 0 0CL +ATOM 89 B1 C 29 461.4 55.0 382.0 0 0CL +ATOM 90 COM C 30 222.8 80.0 290.0 0 0CL +ATOM 91 A1 C 30 224.0 79.4 288.2 0 0CL +ATOM 92 B1 C 30 223.9 78.9 288.7 0 0CL +ATOM 93 COM C 31 443.8 321.0 313.3 0 0CL +ATOM 94 A1 C 31 442.2 322.5 312.8 0 0CL +ATOM 95 B1 C 31 442.0 321.8 313.0 0 0CL +ATOM 96 COM C 32 338.8 439.3 361.2 0 0CL +ATOM 97 A1 C 32 338.1 440.1 359.2 0 0CL +ATOM 98 B1 C 32 337.8 439.5 359.5 0 0CL +ATOM 99 COM C 33 448.7 394.2 315.5 0 0CL +ATOM 100 A1 C 33 448.7 392.1 315.0 0 0CL +ATOM 101 B1 C 33 448.4 392.3 315.6 0 0CL +ATOM 102 COM C 34 63.7 229.4 50.9 0 0CL +ATOM 103 A1 C 34 63.8 230.3 48.9 0 0CL +ATOM 104 B1 C 34 63.6 229.6 48.9 0 0CL +ATOM 105 COM C 35 451.9 152.0 256.1 0 0CL +ATOM 106 A1 C 35 453.5 150.5 256.3 0 0CL +ATOM 107 B1 C 35 453.4 150.8 255.7 0 0CL +ATOM 108 COM C 36 357.0 118.6 42.6 0 0CL +ATOM 109 A1 C 36 355.9 117.8 44.3 0 0CL +ATOM 110 B1 C 36 356.6 117.6 44.2 0 0CL +ATOM 111 COM C 37 311.9 394.0 441.8 0 0CL +ATOM 112 A1 C 37 311.3 394.1 444.0 0 0CL +ATOM 113 B1 C 37 311.5 394.8 443.6 0 0CL +ATOM 114 COM C 38 311.2 164.6 471.6 0 0CL +ATOM 115 A1 C 38 309.3 165.5 472.1 0 0CL +ATOM 116 B1 C 38 309.7 165.3 472.6 0 0CL +ATOM 117 COM C 39 292.4 216.8 139.4 0 0CL +ATOM 118 A1 C 39 293.5 214.9 139.8 0 0CL +ATOM 119 B1 C 39 293.8 215.6 140.0 0 0CL +ATOM 120 COM C 40 98.9 35.1 269.3 0 0CL +ATOM 121 A1 C 40 100.8 36.2 269.8 0 0CL +ATOM 122 B1 C 40 100.5 36.3 269.1 0 0CL +ATOM 123 COM C 41 78.4 367.9 239.1 0 0CL +ATOM 124 A1 C 41 76.5 368.0 240.2 0 0CL +ATOM 125 B1 C 41 76.5 368.3 239.5 0 0CL +ATOM 126 COM C 42 289.4 153.3 468.8 0 0CL +ATOM 127 A1 C 42 288.3 152.1 467.4 0 0CL +ATOM 128 B1 C 42 288.3 151.9 468.1 0 0CL +ATOM 129 COM C 43 173.2 229.2 160.5 0 0CL +ATOM 130 A1 C 43 172.7 230.3 158.7 0 0CL +ATOM 131 B1 C 43 173.2 230.6 159.1 0 0CL +ATOM 132 COM C 44 142.1 53.7 52.9 0 0CL +ATOM 133 A1 C 44 142.0 54.7 54.9 0 0CL +ATOM 134 B1 C 44 142.6 54.8 54.5 0 0CL +ATOM 135 COM C 45 106.9 29.0 294.8 0 0CL +ATOM 136 A1 C 45 104.9 29.4 295.5 0 0CL +ATOM 137 B1 C 45 105.2 28.9 295.9 0 0CL +ATOM 138 COM C 46 417.5 162.1 225.9 0 0CL +ATOM 139 A1 C 46 416.9 162.0 228.0 0 0CL +ATOM 140 B1 C 46 417.6 162.3 227.8 0 0CL +ATOM 141 COM C 47 422.1 494.6 414.2 0 0CL +ATOM 142 A1 C 47 422.7 494.8 412.1 0 0CL +ATOM 143 B1 C 47 422.8 494.2 412.4 0 0CL +ATOM 144 COM C 48 382.8 402.7 168.1 0 0CL +ATOM 145 A1 C 48 381.4 402.8 169.9 0 0CL +ATOM 146 B1 C 48 381.6 403.4 169.5 0 0CL +ATOM 147 COM C 49 233.5 172.4 217.5 0 0CL +ATOM 148 A1 C 49 235.1 171.8 216.1 0 0CL +ATOM 149 B1 C 49 235.3 172.2 216.7 0 0CL +ATOM 150 COM C 50 422.0 270.9 173.5 0 0CL +ATOM 151 A1 C 50 423.5 272.3 174.3 0 0CL +ATOM 152 B1 C 50 422.9 272.2 174.7 0 0CL +ATOM 153 COM C 51 56.5 12.0 331.8 0 0CL +ATOM 154 A1 C 51 56.3 14.2 331.9 0 0CL +ATOM 155 B1 C 51 55.7 13.8 332.1 0 0CL +ATOM 156 COM C 52 75.9 462.7 466.2 0 0CL +ATOM 157 A1 C 52 75.1 464.5 467.2 0 0CL +ATOM 158 B1 C 52 75.2 464.5 466.5 0 0CL +ATOM 159 COM C 53 241.3 178.4 448.7 0 0CL +ATOM 160 A1 C 53 240.2 180.3 448.9 0 0CL +ATOM 161 B1 C 53 239.8 179.7 449.0 0 0CL +ATOM 162 COM C 54 448.3 406.6 412.1 0 0CL +ATOM 163 A1 C 54 446.9 406.3 410.4 0 0CL +ATOM 164 B1 C 54 447.2 407.0 410.5 0 0CL +ATOM 165 COM C 55 428.8 152.2 317.4 0 0CL +ATOM 166 A1 C 55 427.5 154.0 317.3 0 0CL +ATOM 167 B1 C 55 427.2 153.3 317.4 0 0CL +ATOM 168 COM C 56 41.5 227.1 425.3 0 0CL +ATOM 169 A1 C 56 43.2 226.8 423.9 0 0CL +ATOM 170 B1 C 56 43.1 227.5 424.2 0 0CL +ATOM 171 COM C 57 382.1 271.2 423.9 0 0CL +ATOM 172 A1 C 57 382.1 270.4 426.0 0 0CL +ATOM 173 B1 C 57 382.2 271.1 425.9 0 0CL +ATOM 174 COM C 58 324.2 452.0 188.4 0 0CL +ATOM 175 A1 C 58 322.1 451.9 188.9 0 0CL +ATOM 176 B1 C 58 322.6 452.1 189.5 0 0CL +ATOM 177 COM C 59 277.3 126.7 349.1 0 0CL +ATOM 178 A1 C 59 278.5 128.5 349.7 0 0CL +ATOM 179 B1 C 59 278.1 128.5 349.1 0 0CL +ATOM 180 COM C 60 377.9 159.6 349.0 0 0CL +ATOM 181 A1 C 60 377.6 159.3 351.2 0 0CL +ATOM 182 B1 C 60 377.9 159.9 351.0 0 0CL +ATOM 183 COM C 61 22.3 177.3 462.3 0 0CL +ATOM 184 A1 C 61 23.5 176.3 463.8 0 0CL +ATOM 185 B1 C 61 23.2 175.9 463.3 0 0CL +ATOM 186 COM C 62 47.1 370.3 52.9 0 0CL +ATOM 187 A1 C 62 47.5 371.0 50.9 0 0CL +ATOM 188 B1 C 62 47.4 370.3 51.0 0 0CL +ATOM 189 COM C 63 478.9 7.7 111.7 0 0CL +ATOM 190 A1 C 63 479.4 9.7 110.8 0 0CL +ATOM 191 B1 C 63 480.0 9.2 110.9 0 0CL +ATOM 192 COM C 64 89.0 274.5 418.3 0 0CL +ATOM 193 A1 C 64 86.9 273.7 418.2 0 0CL +ATOM 194 B1 C 64 87.0 274.4 418.1 0 0CL +ATOM 195 COM C 65 485.4 53.3 104.4 0 0CL +ATOM 196 A1 C 65 487.4 53.0 103.5 0 0CL +ATOM 197 B1 C 65 487.1 52.4 103.9 0 0CL +ATOM 198 COM C 66 239.7 234.2 180.7 0 0CL +ATOM 199 A1 C 66 238.0 235.2 181.8 0 0CL +ATOM 200 B1 C 66 238.7 235.5 181.8 0 0CL +ATOM 201 COM C 67 442.6 190.0 29.4 0 0CL +ATOM 202 A1 C 67 442.3 188.4 30.9 0 0CL +ATOM 203 B1 C 67 442.7 189.0 31.1 0 0CL +ATOM 204 COM C 68 357.6 401.4 473.4 0 0CL +ATOM 205 A1 C 68 358.3 403.4 472.7 0 0CL +ATOM 206 B1 C 68 358.1 402.8 472.2 0 0CL +ATOM 207 COM C 69 22.7 310.0 324.6 0 0CL +ATOM 208 A1 C 69 23.8 308.7 323.2 0 0CL +ATOM 209 B1 C 69 24.1 309.4 323.3 0 0CL +ATOM 210 COM C 70 427.4 466.3 224.9 0 0CL +ATOM 211 A1 C 70 429.1 467.2 223.7 0 0CL +ATOM 212 B1 C 70 428.4 467.1 223.4 0 0CL +ATOM 213 COM C 71 319.9 431.5 269.2 0 0CL +ATOM 214 A1 C 71 319.5 432.0 267.0 0 0CL +ATOM 215 B1 C 71 320.0 432.4 267.4 0 0CL +ATOM 216 COM C 72 381.9 432.6 173.1 0 0CL +ATOM 217 A1 C 72 384.1 432.2 173.2 0 0CL +ATOM 218 B1 C 72 383.8 432.7 173.7 0 0CL +ATOM 219 COM C 73 284.2 234.3 60.6 0 0CL +ATOM 220 A1 C 73 284.3 235.3 58.6 0 0CL +ATOM 221 B1 C 73 284.4 234.6 58.6 0 0CL +ATOM 222 COM C 74 313.8 334.4 221.3 0 0CL +ATOM 223 A1 C 74 315.9 333.8 221.6 0 0CL +ATOM 224 B1 C 74 315.5 333.3 221.3 0 0CL +ATOM 225 COM C 75 167.8 438.4 420.2 0 0CL +ATOM 226 A1 C 75 168.0 438.0 422.4 0 0CL +ATOM 227 B1 C 75 167.5 437.5 422.0 0 0CL +ATOM 228 COM C 76 95.5 207.3 83.1 0 0CL +ATOM 229 A1 C 76 93.3 207.3 82.5 0 0CL +ATOM 230 B1 C 76 93.6 207.9 82.8 0 0CL +ATOM 231 COM C 77 319.3 389.3 320.7 0 0CL +ATOM 232 A1 C 77 317.6 390.8 321.0 0 0CL +ATOM 233 B1 C 77 318.2 391.0 320.5 0 0CL +ATOM 234 COM C 78 366.8 34.2 117.7 0 0CL +ATOM 235 A1 C 78 367.7 34.4 119.7 0 0CL +ATOM 236 B1 C 78 367.3 34.9 119.5 0 0CL +ATOM 237 COM C 79 461.8 61.6 43.9 0 0CL +ATOM 238 A1 C 79 460.5 63.4 44.0 0 0CL +ATOM 239 B1 C 79 461.0 63.4 43.4 0 0CL +ATOM 240 COM C 80 119.4 148.3 470.7 0 0CL +ATOM 241 A1 C 80 119.0 150.4 471.2 0 0CL +ATOM 242 B1 C 80 119.6 150.2 471.4 0 0CL +ATOM 243 COM C 81 475.1 186.7 101.2 0 0CL +ATOM 244 A1 C 81 475.9 184.7 101.5 0 0CL +ATOM 245 B1 C 81 475.8 184.9 100.8 0 0CL +ATOM 246 COM C 82 380.2 108.6 305.4 0 0CL +ATOM 247 A1 C 82 378.0 108.9 305.3 0 0CL +ATOM 248 B1 C 82 378.3 108.5 305.8 0 0CL +ATOM 249 COM C 83 135.3 173.7 62.3 0 0CL +ATOM 250 A1 C 83 134.1 175.1 61.1 0 0CL +ATOM 251 B1 C 83 134.7 174.9 60.8 0 0CL +ATOM 252 COM C 84 47.8 321.6 355.1 0 0CL +ATOM 253 A1 C 84 45.6 321.7 355.3 0 0CL +ATOM 254 B1 C 84 45.9 321.0 355.4 0 0CL +ATOM 255 COM C 85 280.0 1.5 296.4 0 0CL +ATOM 256 A1 C 85 278.0 0.7 296.2 0 0CL +ATOM 257 B1 C 85 278.3 0.6 296.9 0 0CL +ATOM 258 COM C 86 387.5 467.1 453.3 0 0CL +ATOM 259 A1 C 86 389.2 468.3 452.5 0 0CL +ATOM 260 B1 C 86 388.6 468.2 452.0 0 0CL +ATOM 261 COM C 87 337.8 131.2 341.1 0 0CL +ATOM 262 A1 C 87 339.7 131.7 340.1 0 0CL +ATOM 263 B1 C 87 339.8 131.3 340.6 0 0CL +ATOM 264 COM C 88 332.2 121.0 369.4 0 0CL +ATOM 265 A1 C 88 333.3 122.2 370.9 0 0CL +ATOM 266 B1 C 88 333.0 121.6 371.1 0 0CL +ATOM 267 COM C 89 433.5 177.6 445.9 0 0CL +ATOM 268 A1 C 89 435.3 177.1 447.1 0 0CL +ATOM 269 B1 C 89 435.0 176.6 446.7 0 0CL +ATOM 270 COM C 90 490.5 262.1 223.4 0 0CL +ATOM 271 A1 C 90 492.7 262.0 223.3 0 0CL +ATOM 272 B1 C 90 492.3 261.4 223.5 0 0CL +ATOM 273 COM C 91 251.9 369.6 346.3 0 0CL +ATOM 274 A1 C 91 251.1 367.8 347.2 0 0CL +ATOM 275 B1 C 91 251.3 368.3 347.7 0 0CL +ATOM 276 COM C 92 24.3 458.5 332.5 0 0CL +ATOM 277 A1 C 92 24.4 456.6 333.5 0 0CL +ATOM 278 B1 C 92 23.8 456.9 333.5 0 0CL +ATOM 279 COM C 93 106.8 404.1 353.5 0 0CL +ATOM 280 A1 C 93 106.8 402.1 352.6 0 0CL +ATOM 281 B1 C 93 107.0 402.6 352.2 0 0CL +ATOM 282 COM C 94 295.2 12.5 411.2 0 0CL +ATOM 283 A1 C 94 295.5 13.0 413.3 0 0CL +ATOM 284 B1 C 94 296.1 12.8 412.9 0 0CL +ATOM 285 COM C 95 363.7 390.6 343.5 0 0CL +ATOM 286 A1 C 95 361.6 390.8 342.9 0 0CL +ATOM 287 B1 C 95 361.7 390.7 343.6 0 0CL +ATOM 288 COM C 96 75.7 476.5 304.3 0 0CL +ATOM 289 A1 C 96 74.1 477.2 303.0 0 0CL +ATOM 290 B1 C 96 74.3 477.6 303.6 0 0CL +ATOM 291 COM C 97 185.0 264.0 75.2 0 0CL +ATOM 292 A1 C 97 185.3 262.4 76.7 0 0CL +ATOM 293 B1 C 97 185.1 263.1 77.0 0 0CL +ATOM 294 COM C 98 415.6 406.1 340.9 0 0CL +ATOM 295 A1 C 98 415.3 406.0 338.7 0 0CL +ATOM 296 B1 C 98 415.1 405.5 339.1 0 0CL +ATOM 297 COM C 99 476.0 348.9 205.0 0 0CL +ATOM 298 A1 C 99 473.8 349.0 204.9 0 0CL +ATOM 299 B1 C 99 474.1 348.4 205.2 0 0CL +ATOM 300 COM C 100 461.1 21.3 61.0 0 0CL +ATOM 301 A1 C 100 459.5 22.0 62.3 0 0CL +ATOM 302 B1 C 100 459.8 22.5 61.9 0 0CL +ATOM 303 COM C 101 2.1 291.9 381.1 0 0CL +ATOM 304 A1 C 101 1.3 290.0 382.0 0 0CL +ATOM 305 B1 C 101 2.0 290.0 381.7 0 0CL +ATOM 306 COM C 102 203.9 116.2 56.9 0 0CL +ATOM 307 A1 C 102 204.2 114.0 56.7 0 0CL +ATOM 308 B1 C 102 203.9 114.3 57.4 0 0CL +ATOM 309 COM C 103 423.1 161.8 214.9 0 0CL +ATOM 310 A1 C 103 424.5 163.2 215.8 0 0CL +ATOM 311 B1 C 103 423.9 163.5 215.4 0 0CL +ATOM 312 COM C 104 170.3 457.5 228.7 0 0CL +ATOM 313 A1 C 104 168.3 458.2 229.4 0 0CL +ATOM 314 B1 C 104 168.8 458.7 229.1 0 0CL +ATOM 315 COM C 105 235.1 295.7 357.9 0 0CL +ATOM 316 A1 C 105 234.0 293.8 357.9 0 0CL +ATOM 317 B1 C 105 234.3 294.0 357.3 0 0CL +ATOM 318 COM C 106 239.5 25.6 52.9 0 0CL +ATOM 319 A1 C 106 239.9 24.6 50.9 0 0CL +ATOM 320 B1 C 106 239.6 24.2 51.4 0 0CL +ATOM 321 COM C 107 146.7 296.1 233.4 0 0CL +ATOM 322 A1 C 107 147.5 297.7 234.6 0 0CL +ATOM 323 B1 C 107 147.0 297.9 234.1 0 0CL +ATOM 324 COM C 108 304.7 368.5 165.5 0 0CL +ATOM 325 A1 C 108 303.6 369.9 166.8 0 0CL +ATOM 326 B1 C 108 303.6 369.2 167.0 0 0CL +ATOM 327 COM C 109 408.8 235.5 51.3 0 0CL +ATOM 328 A1 C 109 408.5 233.6 50.2 0 0CL +ATOM 329 B1 C 109 408.9 234.1 49.9 0 0CL +ATOM 330 COM C 110 133.1 95.1 291.4 0 0CL +ATOM 331 A1 C 110 132.2 93.1 291.9 0 0CL +ATOM 332 B1 C 110 132.9 93.2 292.0 0 0CL +ATOM 333 COM C 111 402.2 138.8 92.6 0 0CL +ATOM 334 A1 C 111 402.9 137.5 90.9 0 0CL +ATOM 335 B1 C 111 403.3 138.1 91.1 0 0CL +ATOM 336 COM C 112 215.0 470.9 38.9 0 0CL +ATOM 337 A1 C 112 215.0 470.4 36.7 0 0CL +ATOM 338 B1 C 112 214.7 471.0 36.9 0 0CL +ATOM 339 COM C 113 122.9 152.0 403.1 0 0CL +ATOM 340 A1 C 113 122.7 151.6 400.9 0 0CL +ATOM 341 B1 C 113 123.3 151.4 401.3 0 0CL +ATOM 342 COM C 114 231.0 397.0 171.7 0 0CL +ATOM 343 A1 C 114 230.6 396.4 173.8 0 0CL +ATOM 344 B1 C 114 230.6 397.1 173.7 0 0CL +ATOM 345 COM C 115 222.8 47.8 323.9 0 0CL +ATOM 346 A1 C 115 222.3 46.8 321.9 0 0CL +ATOM 347 B1 C 115 221.8 47.2 322.3 0 0CL +ATOM 348 COM C 116 104.5 362.5 101.2 0 0CL +ATOM 349 A1 C 116 105.4 360.6 100.3 0 0CL +ATOM 350 B1 C 116 104.8 361.0 100.0 0 0CL +ATOM 351 COM C 117 209.7 250.4 350.9 0 0CL +ATOM 352 A1 C 117 208.8 250.0 352.9 0 0CL +ATOM 353 B1 C 117 208.5 249.7 352.3 0 0CL +ATOM 354 COM C 118 489.2 138.0 378.7 0 0CL +ATOM 355 A1 C 118 489.9 140.0 377.9 0 0CL +ATOM 356 B1 C 118 489.3 139.7 377.6 0 0CL +ATOM 357 COM C 119 105.0 46.8 428.9 0 0CL +ATOM 358 A1 C 119 103.9 48.6 428.0 0 0CL +ATOM 359 B1 C 119 104.4 48.7 428.5 0 0CL +ATOM 360 COM C 120 425.9 465.9 476.1 0 0CL +ATOM 361 A1 C 120 425.7 463.9 477.0 0 0CL +ATOM 362 B1 C 120 425.4 464.4 477.3 0 0CL +ATOM 363 COM C 121 9.2 13.5 66.5 0 0CL +ATOM 364 A1 C 121 7.5 12.3 65.9 0 0CL +ATOM 365 B1 C 121 7.4 13.0 66.0 0 0CL +ATOM 366 COM C 122 439.1 244.4 439.2 0 0CL +ATOM 367 A1 C 122 437.7 242.8 438.6 0 0CL +ATOM 368 B1 C 122 438.3 242.8 438.3 0 0CL +ATOM 369 COM C 123 386.2 355.1 496.5 0 0CL +ATOM 370 A1 C 123 384.8 354.9 494.8 0 0CL +ATOM 371 B1 C 123 384.6 354.6 495.5 0 0CL +ATOM 372 COM C 124 283.1 441.6 446.2 0 0CL +ATOM 373 A1 C 124 282.6 441.1 448.3 0 0CL +ATOM 374 B1 C 124 282.5 440.6 447.8 0 0CL +ATOM 375 COM C 125 244.8 405.0 418.0 0 0CL +ATOM 376 A1 C 125 244.1 407.1 417.5 0 0CL +ATOM 377 B1 C 125 244.5 406.8 417.0 0 0CL +ATOM 378 COM C 126 480.6 279.1 321.6 0 0CL +ATOM 379 A1 C 126 480.4 279.5 319.4 0 0CL +ATOM 380 B1 C 126 481.1 279.7 319.7 0 0CL +ATOM 381 COM C 127 211.2 238.1 210.7 0 0CL +ATOM 382 A1 C 127 209.6 239.0 211.9 0 0CL +ATOM 383 B1 C 127 209.6 238.3 211.9 0 0CL +ATOM 384 COM C 128 152.3 456.5 235.1 0 0CL +ATOM 385 A1 C 128 150.4 457.2 235.9 0 0CL +ATOM 386 B1 C 128 150.8 457.7 235.5 0 0CL +ATOM 387 COM C 129 139.7 431.2 160.8 0 0CL +ATOM 388 A1 C 129 139.2 432.3 162.6 0 0CL +ATOM 389 B1 C 129 139.1 431.5 162.6 0 0CL +ATOM 390 COM C 130 335.6 465.8 88.1 0 0CL +ATOM 391 A1 C 130 333.8 466.8 87.3 0 0CL +ATOM 392 B1 C 130 334.2 467.2 87.8 0 0CL +ATOM 393 COM C 131 442.6 320.9 332.1 0 0CL +ATOM 394 A1 C 131 440.9 319.9 331.2 0 0CL +ATOM 395 B1 C 131 441.0 320.6 331.0 0 0CL +ATOM 396 COM C 132 433.8 337.2 379.2 0 0CL +ATOM 397 A1 C 132 435.0 337.5 381.1 0 0CL +ATOM 398 B1 C 132 435.2 337.9 380.5 0 0CL +ATOM 399 COM C 133 54.5 277.1 324.7 0 0CL +ATOM 400 A1 C 133 53.3 276.4 326.4 0 0CL +ATOM 401 B1 C 133 53.9 276.8 326.5 0 0CL +ATOM 402 COM C 134 127.4 386.3 221.0 0 0CL +ATOM 403 A1 C 134 128.6 387.3 222.5 0 0CL +ATOM 404 B1 C 134 128.9 387.2 221.9 0 0CL +ATOM 405 COM C 135 285.3 440.0 80.9 0 0CL +ATOM 406 A1 C 135 286.8 440.1 79.3 0 0CL +ATOM 407 B1 C 135 286.2 440.5 79.2 0 0CL +ATOM 408 COM C 136 449.4 315.8 202.8 0 0CL +ATOM 409 A1 C 136 450.4 316.0 200.9 0 0CL +ATOM 410 B1 C 136 449.7 315.9 200.8 0 0CL +ATOM 411 COM C 137 475.9 223.0 45.4 0 0CL +ATOM 412 A1 C 137 477.0 221.1 45.1 0 0CL +ATOM 413 B1 C 137 477.1 221.6 44.5 0 0CL +ATOM 414 COM C 138 265.7 204.0 81.9 0 0CL +ATOM 415 A1 C 138 267.3 202.8 81.1 0 0CL +ATOM 416 B1 C 138 267.3 202.8 81.8 0 0CL +ATOM 417 COM C 139 370.1 403.6 238.3 0 0CL +ATOM 418 A1 C 139 370.3 405.7 237.7 0 0CL +ATOM 419 B1 C 139 369.9 405.6 238.2 0 0CL +ATOM 420 COM C 140 217.8 259.0 477.7 0 0CL +ATOM 421 A1 C 140 217.3 257.4 476.2 0 0CL +ATOM 422 B1 C 140 217.7 258.0 476.0 0 0CL +ATOM 423 COM C 141 488.6 95.8 239.9 0 0CL +ATOM 424 A1 C 141 488.1 97.0 241.7 0 0CL +ATOM 425 B1 C 141 488.6 97.2 241.3 0 0CL +ATOM 426 COM C 142 40.7 143.1 424.0 0 0CL +ATOM 427 A1 C 142 39.7 141.8 425.5 0 0CL +ATOM 428 B1 C 142 39.6 141.6 424.8 0 0CL +ATOM 429 COM C 143 142.0 388.7 429.2 0 0CL +ATOM 430 A1 C 143 141.0 388.6 431.2 0 0CL +ATOM 431 B1 C 143 141.2 388.0 430.9 0 0CL +ATOM 432 COM C 144 265.8 293.2 338.7 0 0CL +ATOM 433 A1 C 144 265.7 294.8 340.2 0 0CL +ATOM 434 B1 C 144 265.8 294.1 340.4 0 0CL +ATOM 435 COM C 145 16.6 185.1 314.0 0 0CL +ATOM 436 A1 C 145 14.5 185.6 314.4 0 0CL +ATOM 437 B1 C 145 14.7 185.0 314.2 0 0CL +ATOM 438 COM C 146 298.7 165.4 418.7 0 0CL +ATOM 439 A1 C 146 298.5 166.7 416.9 0 0CL +ATOM 440 B1 C 146 298.6 166.0 416.8 0 0CL +ATOM 441 COM C 147 461.8 327.2 157.9 0 0CL +ATOM 442 A1 C 147 460.6 327.3 156.0 0 0CL +ATOM 443 B1 C 147 461.2 327.5 156.0 0 0CL +ATOM 444 COM C 148 103.8 125.2 397.9 0 0CL +ATOM 445 A1 C 148 104.3 123.4 399.2 0 0CL +ATOM 446 B1 C 148 104.4 123.4 398.4 0 0CL +ATOM 447 COM C 149 57.4 292.0 322.2 0 0CL +ATOM 448 A1 C 149 59.0 293.4 321.9 0 0CL +ATOM 449 B1 C 149 58.5 293.4 321.4 0 0CL +ATOM 450 COM A 150 116.6 402.8 286.6 0 0CL +ATOM 451 C1 A 150 116.1 403.6 285.7 0 0CL +ATOM 452 B1 A 150 117.2 402.4 285.9 0 0CL +ATOM 453 COM A 151 355.1 118.5 45.7 0 0CL +ATOM 454 C1 A 151 355.3 118.5 44.4 0 0CL +ATOM 455 B1 A 151 356.0 118.1 45.8 0 0CL +ATOM 456 COM A 152 121.6 150.7 399.9 0 0CL +ATOM 457 C1 A 152 121.8 151.5 400.9 0 0CL +ATOM 458 B1 A 152 122.5 150.3 400.2 0 0CL +ATOM 459 COM A 153 367.6 33.5 121.3 0 0CL +ATOM 460 C1 A 153 367.6 33.5 120.0 0 0CL +ATOM 461 B1 A 153 367.1 34.4 121.1 0 0CL +ATOM 462 COM A 154 392.3 194.7 209.6 0 0CL +ATOM 463 C1 A 154 392.4 193.9 208.5 0 0CL +ATOM 464 B1 A 154 393.2 194.3 209.9 0 0CL +ATOM 465 COM A 155 200.9 5.2 443.5 0 0CL +ATOM 466 C1 A 155 200.2 5.5 444.6 0 0CL +ATOM 467 B1 A 155 201.3 4.5 444.1 0 0CL +ATOM 468 COM A 156 73.6 464.9 468.1 0 0CL +ATOM 469 C1 A 156 74.6 464.0 467.9 0 0CL +ATOM 470 B1 A 156 73.7 465.1 467.1 0 0CL +ATOM 471 COM A 157 46.6 371.9 49.7 0 0CL +ATOM 472 C1 A 157 47.0 371.8 50.9 0 0CL +ATOM 473 B1 A 157 46.6 370.9 49.6 0 0CL +ATOM 474 COM A 158 187.3 186.3 136.7 0 0CL +ATOM 475 C1 A 158 186.4 185.6 135.9 0 0CL +ATOM 476 B1 A 158 186.6 186.1 137.4 0 0CL +ATOM 477 COM A 159 51.7 276.4 327.0 0 0CL +ATOM 478 C1 A 159 52.5 276.3 326.0 0 0CL +ATOM 479 B1 A 159 52.4 277.1 327.4 0 0CL +ATOM 480 COM A 160 440.6 318.5 330.1 0 0CL +ATOM 481 C1 A 160 441.3 319.0 331.2 0 0CL +ATOM 482 B1 A 160 440.6 319.5 329.8 0 0CL +ATOM 483 COM A 161 63.0 231.6 48.0 0 0CL +ATOM 484 C1 A 161 63.5 231.2 49.1 0 0CL +ATOM 485 B1 A 161 62.7 230.6 47.9 0 0CL +ATOM 486 COM A 162 44.7 225.9 423.9 0 0CL +ATOM 487 C1 A 162 43.4 225.9 424.2 0 0CL +ATOM 488 B1 A 162 44.7 226.9 424.2 0 0CL +ATOM 489 COM A 163 469.5 233.1 314.8 0 0CL +ATOM 490 C1 A 163 469.9 231.9 315.0 0 0CL +ATOM 491 B1 A 163 470.5 233.3 314.6 0 0CL +ATOM 492 COM A 164 477.4 184.0 102.0 0 0CL +ATOM 493 C1 A 164 476.5 184.9 102.2 0 0CL +ATOM 494 B1 A 164 477.3 184.2 101.0 0 0CL +ATOM 495 COM A 165 354.1 23.2 370.4 0 0CL +ATOM 496 C1 A 165 354.6 24.2 371.2 0 0CL +ATOM 497 B1 A 165 353.8 22.8 371.3 0 0CL +ATOM 498 COM A 166 483.9 212.8 222.9 0 0CL +ATOM 499 C1 A 166 484.0 211.9 223.9 0 0CL +ATOM 500 B1 A 166 482.8 212.6 223.0 0 0CL +ATOM 501 COM A 167 451.3 317.3 200.0 0 0CL +ATOM 502 C1 A 167 451.1 316.7 201.1 0 0CL +ATOM 503 B1 A 167 450.3 317.1 199.8 0 0CL +ATOM 504 COM A 168 434.8 338.2 382.7 0 0CL +ATOM 505 C1 A 168 434.4 337.5 381.7 0 0CL +ATOM 506 B1 A 168 435.2 338.8 381.9 0 0CL +ATOM 507 COM A 169 386.9 457.0 54.0 0 0CL +ATOM 508 C1 A 169 387.0 455.8 54.4 0 0CL +ATOM 509 B1 A 169 387.9 457.1 54.2 0 0CL +ATOM 510 COM A 170 155.4 374.2 456.7 0 0CL +ATOM 511 C1 A 170 155.2 372.9 456.6 0 0CL +ATOM 512 B1 A 170 155.9 374.1 455.8 0 0CL +ATOM 513 COM A 171 75.2 366.9 240.8 0 0CL +ATOM 514 C1 A 171 76.5 367.2 240.6 0 0CL +ATOM 515 B1 A 171 75.1 367.4 239.8 0 0CL +ATOM 516 COM A 172 231.3 166.5 92.4 0 0CL +ATOM 517 C1 A 172 230.1 166.9 92.2 0 0CL +ATOM 518 B1 A 172 231.5 166.7 91.4 0 0CL +ATOM 519 COM A 173 371.6 406.9 237.6 0 0CL +ATOM 520 C1 A 173 371.2 405.7 237.4 0 0CL +ATOM 521 B1 A 173 370.9 406.9 238.4 0 0CL +ATOM 522 COM A 174 25.2 176.3 464.3 0 0CL +ATOM 523 C1 A 174 24.2 177.0 463.9 0 0CL +ATOM 524 B1 A 174 24.8 175.5 463.7 0 0CL +ATOM 525 COM A 175 103.9 49.4 426.5 0 0CL +ATOM 526 C1 A 175 103.9 48.3 427.1 0 0CL +ATOM 527 B1 A 175 104.5 49.8 427.2 0 0CL +ATOM 528 COM A 176 480.2 278.6 317.9 0 0CL +ATOM 529 C1 A 176 479.9 278.8 319.2 0 0CL +ATOM 530 B1 A 176 481.2 278.9 318.2 0 0CL +ATOM 531 COM A 177 126.6 271.7 437.7 0 0CL +ATOM 532 C1 A 177 127.7 272.1 437.1 0 0CL +ATOM 533 B1 A 177 126.2 271.7 436.8 0 0CL +ATOM 534 COM A 178 319.7 431.2 265.5 0 0CL +ATOM 535 C1 A 178 319.3 431.1 266.7 0 0CL +ATOM 536 B1 A 178 320.4 431.9 265.8 0 0CL +ATOM 537 COM A 179 424.9 163.7 217.4 0 0CL +ATOM 538 C1 A 179 424.7 162.8 216.6 0 0CL +ATOM 539 B1 A 179 424.2 164.3 216.9 0 0CL +ATOM 540 COM A 180 376.8 110.2 305.4 0 0CL +ATOM 541 C1 A 180 378.0 109.7 304.9 0 0CL +ATOM 542 B1 A 180 377.1 109.6 306.2 0 0CL +ATOM 543 COM A 181 490.0 141.6 378.5 0 0CL +ATOM 544 C1 A 181 490.2 140.4 378.7 0 0CL +ATOM 545 B1 A 181 489.2 141.3 377.9 0 0CL +ATOM 546 COM A 182 472.5 349.9 205.8 0 0CL +ATOM 547 C1 A 182 473.7 349.9 205.2 0 0CL +ATOM 548 B1 A 182 472.8 348.9 206.1 0 0CL +ATOM 549 COM A 183 257.7 349.2 150.8 0 0CL +ATOM 550 C1 A 183 258.2 350.4 151.1 0 0CL +ATOM 551 B1 A 183 256.8 349.6 151.0 0 0CL +ATOM 552 COM A 184 383.8 355.9 493.8 0 0CL +ATOM 553 C1 A 184 384.9 355.7 494.4 0 0CL +ATOM 554 B1 A 184 383.4 355.4 494.7 0 0CL +ATOM 555 COM A 185 458.8 63.8 43.8 0 0CL +ATOM 556 C1 A 185 459.7 63.0 44.3 0 0CL +ATOM 557 B1 A 185 459.5 63.9 43.0 0 0CL +ATOM 558 COM A 186 182.4 442.4 61.0 0 0CL +ATOM 559 C1 A 186 183.0 443.5 60.8 0 0CL +ATOM 560 B1 A 186 182.6 442.6 62.0 0 0CL +ATOM 561 COM A 187 320.7 452.9 188.6 0 0CL +ATOM 562 C1 A 187 321.8 452.3 188.1 0 0CL +ATOM 563 B1 A 187 321.2 453.1 189.4 0 0CL +ATOM 564 COM A 188 240.1 181.7 450.0 0 0CL +ATOM 565 C1 A 188 240.8 180.8 449.3 0 0CL +ATOM 566 B1 A 188 239.5 180.9 450.1 0 0CL +ATOM 567 COM A 189 138.8 123.0 191.4 0 0CL +ATOM 568 C1 A 189 139.5 123.9 190.8 0 0CL +ATOM 569 B1 A 189 139.7 122.8 191.9 0 0CL +ATOM 570 COM A 190 233.6 457.9 131.9 0 0CL +ATOM 571 C1 A 190 233.2 457.0 132.8 0 0CL +ATOM 572 B1 A 190 232.7 458.3 132.0 0 0CL +ATOM 573 COM A 191 0.9 289.4 383.6 0 0CL +ATOM 574 C1 A 191 0.9 290.4 382.7 0 0CL +ATOM 575 B1 A 191 1.8 289.2 383.2 0 0CL +ATOM 576 COM A 192 278.5 129.7 351.0 0 0CL +ATOM 577 C1 A 192 278.4 128.4 350.6 0 0CL +ATOM 578 B1 A 192 278.0 129.9 350.1 0 0CL +ATOM 579 COM A 193 40.1 140.7 426.8 0 0CL +ATOM 580 C1 A 193 40.3 141.9 426.2 0 0CL +ATOM 581 B1 A 193 40.0 140.3 425.9 0 0CL +ATOM 582 COM A 194 106.9 360.2 99.6 0 0CL +ATOM 583 C1 A 194 106.3 360.8 100.6 0 0CL +ATOM 584 B1 A 194 106.2 360.5 99.0 0 0CL +ATOM 585 COM A 195 498.6 217.5 112.1 0 0CL +ATOM 586 C1 A 195 498.6 216.2 112.4 0 0CL +ATOM 587 B1 A 195 498.9 217.6 113.1 0 0CL +ATOM 588 COM A 196 421.8 495.1 410.6 0 0CL +ATOM 589 C1 A 196 421.9 495.4 411.9 0 0CL +ATOM 590 B1 A 196 422.1 494.1 410.9 0 0CL +ATOM 591 COM A 197 337.2 441.4 358.6 0 0CL +ATOM 592 C1 A 197 338.1 441.0 359.4 0 0CL +ATOM 593 B1 A 197 336.8 440.5 358.8 0 0CL +ATOM 594 COM A 198 437.8 420.3 454.1 0 0CL +ATOM 595 C1 A 198 437.3 420.0 452.9 0 0CL +ATOM 596 B1 A 198 438.0 421.2 453.6 0 0CL +ATOM 597 COM A 199 414.5 406.9 337.4 0 0CL +ATOM 598 C1 A 199 415.2 406.9 338.5 0 0CL +ATOM 599 B1 A 199 414.1 406.0 337.9 0 0CL +ATOM 600 COM A 200 488.1 52.7 101.9 0 0CL +ATOM 601 C1 A 200 487.3 53.4 102.7 0 0CL +ATOM 602 B1 A 200 487.8 51.9 102.5 0 0CL +ATOM 603 COM A 201 148.7 456.9 235.7 0 0CL +ATOM 604 C1 A 201 149.9 456.4 235.8 0 0CL +ATOM 605 B1 A 201 149.1 457.6 235.2 0 0CL +ATOM 606 COM A 202 242.6 407.9 417.3 0 0CL +ATOM 607 C1 A 202 243.3 407.0 417.9 0 0CL +ATOM 608 B1 A 202 243.2 407.6 416.5 0 0CL +ATOM 609 COM A 203 425.2 393.3 427.6 0 0CL +ATOM 610 C1 A 203 424.0 393.1 427.3 0 0CL +ATOM 611 B1 A 203 425.1 394.3 427.4 0 0CL +ATOM 612 COM A 204 141.3 389.1 432.8 0 0CL +ATOM 613 C1 A 204 141.3 389.4 431.5 0 0CL +ATOM 614 B1 A 204 141.5 388.2 432.5 0 0CL +ATOM 615 COM A 205 101.3 37.5 270.8 0 0CL +ATOM 616 C1 A 205 100.6 36.4 270.7 0 0CL +ATOM 617 B1 A 205 101.1 37.7 269.8 0 0CL +ATOM 618 COM A 206 223.8 79.3 286.5 0 0CL +ATOM 619 C1 A 206 223.6 80.0 287.6 0 0CL +ATOM 620 B1 A 206 223.7 78.5 287.1 0 0CL +ATOM 621 COM A 207 403.4 135.9 90.7 0 0CL +ATOM 622 C1 A 207 402.6 136.7 91.2 0 0CL +ATOM 623 B1 A 207 404.1 136.7 90.8 0 0CL +ATOM 624 COM A 208 295.4 14.4 414.3 0 0CL +ATOM 625 C1 A 208 294.9 13.7 413.3 0 0CL +ATOM 626 B1 A 208 296.3 14.1 414.0 0 0CL +ATOM 627 COM A 209 445.6 412.1 39.3 0 0CL +ATOM 628 C1 A 209 446.8 412.6 39.3 0 0CL +ATOM 629 B1 A 209 446.0 411.2 39.2 0 0CL +ATOM 630 COM A 210 141.1 55.9 55.8 0 0CL +ATOM 631 C1 A 210 141.1 54.8 54.9 0 0CL +ATOM 632 B1 A 210 142.0 56.1 55.3 0 0CL +ATOM 633 COM A 211 427.1 155.4 318.3 0 0CL +ATOM 634 C1 A 211 428.0 154.6 317.8 0 0CL +ATOM 635 B1 A 211 426.5 154.5 318.4 0 0CL +ATOM 636 COM A 212 376.3 159.2 352.3 0 0CL +ATOM 637 C1 A 212 376.8 158.9 351.2 0 0CL +ATOM 638 B1 A 212 376.8 160.1 352.2 0 0CL +ATOM 639 COM A 213 441.0 187.7 31.8 0 0CL +ATOM 640 C1 A 213 441.4 188.1 30.6 0 0CL +ATOM 641 B1 A 213 441.6 188.4 32.2 0 0CL +ATOM 642 COM A 214 73.8 477.7 301.4 0 0CL +ATOM 643 C1 A 214 74.4 476.9 302.2 0 0CL +ATOM 644 B1 A 214 74.0 478.4 302.2 0 0CL +ATOM 645 COM A 215 327.5 401.5 196.0 0 0CL +ATOM 646 C1 A 215 327.9 400.4 195.3 0 0CL +ATOM 647 B1 A 215 327.8 402.0 195.1 0 0CL +ATOM 648 COM A 216 288.5 440.7 79.2 0 0CL +ATOM 649 C1 A 216 287.6 440.1 79.9 0 0CL +ATOM 650 B1 A 216 287.7 441.3 78.8 0 0CL +ATOM 651 COM A 217 138.2 221.7 267.2 0 0CL +ATOM 652 C1 A 217 137.9 221.2 266.0 0 0CL +ATOM 653 B1 A 217 138.8 222.3 266.6 0 0CL +ATOM 654 COM A 218 73.8 92.2 97.4 0 0CL +ATOM 655 C1 A 218 73.6 93.4 96.8 0 0CL +ATOM 656 B1 A 218 74.1 92.8 98.2 0 0CL +ATOM 657 COM A 219 249.5 367.0 347.3 0 0CL +ATOM 658 C1 A 219 250.4 367.6 346.6 0 0CL +ATOM 659 B1 A 219 249.9 367.6 348.1 0 0CL +ATOM 660 COM A 220 444.5 14.8 52.8 0 0CL +ATOM 661 C1 A 220 444.2 15.7 51.9 0 0CL +ATOM 662 B1 A 220 443.6 15.0 53.2 0 0CL +ATOM 663 COM A 221 484.6 355.6 336.2 0 0CL +ATOM 664 C1 A 221 484.6 355.0 335.0 0 0CL +ATOM 665 B1 A 221 483.8 354.9 336.4 0 0CL +ATOM 666 COM A 222 448.1 391.0 313.7 0 0CL +ATOM 667 C1 A 222 448.7 392.2 314.0 0 0CL +ATOM 668 B1 A 222 447.6 391.1 314.6 0 0CL +ATOM 669 COM A 223 447.2 376.2 122.9 0 0CL +ATOM 670 C1 A 223 447.2 376.3 124.2 0 0CL +ATOM 671 B1 A 223 446.2 376.4 123.0 0 0CL +ATOM 672 COM A 224 286.8 152.3 466.4 0 0CL +ATOM 673 C1 A 224 288.0 152.8 466.8 0 0CL +ATOM 674 B1 A 224 286.8 151.8 467.3 0 0CL +ATOM 675 COM A 225 437.0 241.4 439.4 0 0CL +ATOM 676 C1 A 225 437.3 242.6 439.5 0 0CL +ATOM 677 B1 A 225 437.8 241.3 438.8 0 0CL +ATOM 678 COM A 226 478.4 220.3 45.8 0 0CL +ATOM 679 C1 A 226 477.3 220.9 46.0 0 0CL +ATOM 680 B1 A 226 478.5 220.8 45.0 0 0CL +ATOM 681 COM A 227 133.3 256.7 122.2 0 0CL +ATOM 682 C1 A 227 133.8 257.0 123.4 0 0CL +ATOM 683 B1 A 227 133.3 255.7 122.5 0 0CL +ATOM 684 COM A 228 425.1 462.3 476.6 0 0CL +ATOM 685 C1 A 228 425.8 463.4 476.2 0 0CL +ATOM 686 B1 A 228 424.5 463.0 477.1 0 0CL +ATOM 687 COM A 229 209.4 240.0 213.3 0 0CL +ATOM 688 C1 A 229 210.0 239.8 212.2 0 0CL +ATOM 689 B1 A 229 209.3 239.0 213.4 0 0CL +ATOM 690 COM A 230 266.8 296.1 340.8 0 0CL +ATOM 691 C1 A 230 266.3 295.4 339.8 0 0CL +ATOM 692 B1 A 230 266.8 295.2 341.3 0 0CL +ATOM 693 COM A 231 317.5 334.2 220.9 0 0CL +ATOM 694 C1 A 231 316.3 334.6 221.4 0 0CL +ATOM 695 B1 A 231 317.0 333.4 220.5 0 0CL +ATOM 696 COM A 232 430.0 468.7 223.8 0 0CL +ATOM 697 C1 A 232 429.5 467.7 224.4 0 0CL +ATOM 698 B1 A 232 429.2 468.6 223.2 0 0CL +ATOM 699 COM A 233 132.6 175.1 60.2 0 0CL +ATOM 700 C1 A 233 133.3 174.8 61.3 0 0CL +ATOM 701 B1 A 233 133.5 174.9 59.7 0 0CL +ATOM 702 COM A 234 441.5 324.0 313.4 0 0CL +ATOM 703 C1 A 234 442.6 323.3 313.1 0 0CL +ATOM 704 B1 A 234 441.1 323.1 313.7 0 0CL +ATOM 705 COM A 235 389.2 304.6 233.2 0 0CL +ATOM 706 C1 A 235 388.8 303.6 234.0 0 0CL +ATOM 707 B1 A 235 388.9 305.2 233.9 0 0CL +ATOM 708 COM A 236 37.8 337.1 368.4 0 0CL +ATOM 709 C1 A 236 36.6 337.4 368.5 0 0CL +ATOM 710 B1 A 236 37.5 336.1 368.8 0 0CL +ATOM 711 COM A 237 13.5 186.1 315.8 0 0CL +ATOM 712 C1 A 237 14.7 186.2 315.1 0 0CL +ATOM 713 B1 A 237 13.6 185.1 315.4 0 0CL +ATOM 714 COM A 238 209.2 249.2 354.4 0 0CL +ATOM 715 C1 A 238 209.6 250.0 353.4 0 0CL +ATOM 716 B1 A 238 208.6 248.7 353.7 0 0CL +ATOM 717 COM A 239 493.9 262.1 222.0 0 0CL +ATOM 718 C1 A 239 492.8 262.6 222.6 0 0CL +ATOM 719 B1 A 239 493.6 261.2 222.4 0 0CL +ATOM 720 COM A 240 308.5 167.1 471.9 0 0CL +ATOM 721 C1 A 240 309.2 166.1 471.4 0 0CL +ATOM 722 B1 A 240 309.0 166.8 472.8 0 0CL +ATOM 723 COM A 241 309.9 393.8 445.0 0 0CL +ATOM 724 C1 A 241 310.7 393.5 444.0 0 0CL +ATOM 725 B1 A 241 310.1 394.8 444.6 0 0CL +ATOM 726 COM A 242 454.9 150.2 257.3 0 0CL +ATOM 727 C1 A 242 453.7 150.6 257.2 0 0CL +ATOM 728 B1 A 242 455.0 150.6 256.3 0 0CL +ATOM 729 COM A 243 217.8 255.8 475.9 0 0CL +ATOM 730 C1 A 243 217.4 256.7 476.7 0 0CL +ATOM 731 B1 A 243 218.2 256.6 475.4 0 0CL +ATOM 732 COM A 244 104.0 30.7 296.4 0 0CL +ATOM 733 C1 A 244 104.9 30.4 295.4 0 0CL +ATOM 734 B1 A 244 104.4 29.9 296.9 0 0CL +ATOM 735 COM A 245 172.8 230.1 157.0 0 0CL +ATOM 736 C1 A 245 172.5 229.6 158.1 0 0CL +ATOM 737 B1 A 245 173.5 230.5 157.5 0 0CL +ATOM 738 COM A 246 107.7 400.6 352.8 0 0CL +ATOM 739 C1 A 246 107.1 401.6 353.4 0 0CL +ATOM 740 B1 A 246 108.0 401.3 352.1 0 0CL +ATOM 741 COM A 247 460.0 53.6 380.9 0 0CL +ATOM 742 C1 A 247 460.5 53.7 382.1 0 0CL +ATOM 743 B1 A 247 460.8 54.2 380.6 0 0CL +ATOM 744 COM A 248 7.0 11.3 64.5 0 0CL +ATOM 745 C1 A 248 8.0 11.7 65.4 0 0CL +ATOM 746 B1 A 248 6.7 12.3 64.6 0 0CL +ATOM 747 COM A 249 222.8 47.0 320.3 0 0CL +ATOM 748 C1 A 249 223.1 47.0 321.5 0 0CL +ATOM 749 B1 A 249 221.9 47.4 320.6 0 0CL +ATOM 750 COM A 250 184.6 260.9 77.2 0 0CL +ATOM 751 C1 A 250 185.0 261.7 76.2 0 0CL +ATOM 752 B1 A 250 184.3 261.8 77.6 0 0CL +ATOM 753 COM A 251 457.8 21.8 62.5 0 0CL +ATOM 754 C1 A 251 458.9 21.3 62.3 0 0CL +ATOM 755 B1 A 251 458.1 22.6 62.0 0 0CL +ATOM 756 COM A 252 234.2 211.2 204.1 0 0CL +ATOM 757 C1 A 252 234.1 210.8 205.4 0 0CL +ATOM 758 B1 A 252 233.4 210.6 204.0 0 0CL +ATOM 759 COM A 253 293.3 213.5 140.8 0 0CL +ATOM 760 C1 A 253 292.8 214.4 140.0 0 0CL +ATOM 761 B1 A 253 293.9 214.3 141.1 0 0CL +ATOM 762 COM A 254 92.4 207.1 81.1 0 0CL +ATOM 763 C1 A 254 93.4 206.7 81.8 0 0CL +ATOM 764 B1 A 254 92.6 208.0 81.4 0 0CL +ATOM 765 COM A 255 24.8 454.9 333.2 0 0CL +ATOM 766 C1 A 255 25.1 456.2 333.1 0 0CL +ATOM 767 B1 A 255 23.8 455.2 333.2 0 0CL +ATOM 768 COM A 256 169.2 437.5 423.5 0 0CL +ATOM 769 C1 A 256 168.9 438.2 422.5 0 0CL +ATOM 770 B1 A 256 168.5 436.8 423.1 0 0CL +ATOM 771 COM A 257 272.1 46.7 398.1 0 0CL +ATOM 772 C1 A 257 273.3 47.1 397.6 0 0CL +ATOM 773 B1 A 257 272.2 47.7 398.5 0 0CL +ATOM 774 COM A 258 276.4 1.4 296.1 0 0CL +ATOM 775 C1 A 258 277.6 1.4 295.8 0 0CL +ATOM 776 B1 A 258 276.7 1.1 297.0 0 0CL +ATOM 777 COM A 259 93.4 306.9 388.7 0 0CL +ATOM 778 C1 A 259 93.6 308.1 389.2 0 0CL +ATOM 779 B1 A 259 93.0 306.7 389.6 0 0CL +ATOM 780 COM A 260 283.6 253.5 252.3 0 0CL +ATOM 781 C1 A 260 282.6 253.0 253.0 0 0CL +ATOM 782 B1 A 260 283.1 253.0 251.5 0 0CL +ATOM 783 COM A 261 24.6 362.8 361.3 0 0CL +ATOM 784 C1 A 261 23.5 362.0 361.4 0 0CL +ATOM 785 B1 A 261 24.0 363.4 361.9 0 0CL +ATOM 786 COM A 262 340.5 131.5 338.5 0 0CL +ATOM 787 C1 A 262 339.4 131.8 339.2 0 0CL +ATOM 788 B1 A 262 340.7 130.9 339.3 0 0CL +ATOM 789 COM A 263 218.4 49.2 185.1 0 0CL +ATOM 790 C1 A 263 218.1 48.4 184.1 0 0CL +ATOM 791 B1 A 263 218.5 49.9 184.5 0 0CL +ATOM 792 COM A 264 24.8 307.3 323.3 0 0CL +ATOM 793 C1 A 264 23.8 307.9 323.7 0 0CL +ATOM 794 B1 A 264 25.3 308.2 323.3 0 0CL +ATOM 795 COM A 265 295.2 165.8 206.3 0 0CL +ATOM 796 C1 A 265 294.5 166.8 206.0 0 0CL +ATOM 797 B1 A 265 295.9 166.4 206.7 0 0CL +ATOM 798 COM A 266 380.9 269.6 427.0 0 0CL +ATOM 799 C1 A 266 381.5 269.8 425.8 0 0CL +ATOM 800 B1 A 266 381.1 270.7 427.1 0 0CL +ATOM 801 COM A 267 437.0 177.5 447.0 0 0CL +ATOM 802 C1 A 267 435.8 177.9 446.9 0 0CL +ATOM 803 B1 A 267 436.7 176.7 446.6 0 0CL +ATOM 804 COM A 268 223.9 9.6 72.7 0 0CL +ATOM 805 C1 A 268 224.0 8.8 73.7 0 0CL +ATOM 806 B1 A 268 224.9 9.7 72.7 0 0CL +ATOM 807 COM A 269 467.9 189.0 361.7 0 0CL +ATOM 808 C1 A 269 468.7 189.3 362.7 0 0CL +ATOM 809 B1 A 269 468.0 188.0 362.1 0 0CL +ATOM 810 COM A 270 57.0 15.6 332.8 0 0CL +ATOM 811 C1 A 270 57.2 14.5 332.1 0 0CL +ATOM 812 B1 A 270 56.1 15.1 333.1 0 0CL +ATOM 813 COM A 271 446.7 405.3 409.0 0 0CL +ATOM 814 C1 A 271 447.1 405.4 410.2 0 0CL +ATOM 815 B1 A 271 447.1 406.3 408.9 0 0CL +ATOM 816 COM A 272 131.0 92.5 293.0 0 0CL +ATOM 817 C1 A 272 131.4 93.5 292.2 0 0CL +ATOM 818 B1 A 272 132.0 92.4 293.2 0 0CL +ATOM 819 COM A 273 140.1 433.1 163.9 0 0CL +ATOM 820 C1 A 273 139.9 432.9 162.6 0 0CL +ATOM 821 B1 A 273 139.9 432.1 164.0 0 0CL +ATOM 822 COM A 274 234.1 292.2 358.6 0 0CL +ATOM 823 C1 A 274 234.2 293.5 358.8 0 0CL +ATOM 824 B1 A 274 234.5 292.4 357.7 0 0CL +ATOM 825 COM A 275 479.5 27.6 458.1 0 0CL +ATOM 826 C1 A 275 479.0 26.6 457.5 0 0CL +ATOM 827 B1 A 275 478.8 28.1 457.6 0 0CL +ATOM 828 COM A 276 239.2 483.1 141.4 0 0CL +ATOM 829 C1 A 276 240.5 482.8 141.7 0 0CL +ATOM 830 B1 A 276 239.0 482.2 141.8 0 0CL +ATOM 831 COM A 277 297.2 167.6 416.2 0 0CL +ATOM 832 C1 A 277 297.8 167.2 417.3 0 0CL +ATOM 833 B1 A 277 297.4 166.6 415.8 0 0CL +ATOM 834 COM A 278 62.0 359.1 338.8 0 0CL +ATOM 835 C1 A 278 62.3 359.5 337.6 0 0CL +ATOM 836 B1 A 278 61.1 358.7 338.4 0 0CL +ATOM 837 COM A 279 234.5 348.2 76.0 0 0CL +ATOM 838 C1 A 279 234.4 348.9 77.0 0 0CL +ATOM 839 B1 A 279 234.3 347.4 76.6 0 0CL +ATOM 840 COM A 280 413.8 184.5 49.1 0 0CL +ATOM 841 C1 A 280 414.9 183.9 49.5 0 0CL +ATOM 842 B1 A 280 413.6 184.4 50.1 0 0CL +ATOM 843 COM A 281 415.8 162.8 229.1 0 0CL +ATOM 844 C1 A 281 416.0 162.3 227.9 0 0CL +ATOM 845 B1 A 281 416.8 163.2 229.0 0 0CL +ATOM 846 COM A 282 63.6 135.1 499.6 0 0CL +ATOM 847 C1 A 282 64.2 134.4 498.6 0 0CL +ATOM 848 B1 A 282 62.8 134.6 499.3 0 0CL +ATOM 849 COM A 283 216.3 470.1 35.5 0 0CL +ATOM 850 C1 A 283 215.9 469.9 36.7 0 0CL +ATOM 851 B1 A 283 215.8 471.0 35.6 0 0CL +ATOM 852 COM A 284 128.5 388.7 223.5 0 0CL +ATOM 853 C1 A 284 127.9 387.7 223.0 0 0CL +ATOM 854 B1 A 284 129.1 388.7 222.6 0 0CL +ATOM 855 COM A 285 311.9 401.3 12.4 0 0CL +ATOM 856 C1 A 285 311.8 400.5 11.3 0 0CL +ATOM 857 B1 A 285 312.0 400.4 12.9 0 0CL +ATOM 858 COM A 286 48.0 50.3 282.7 0 0CL +ATOM 859 C1 A 286 48.7 50.1 281.6 0 0CL +ATOM 860 B1 A 286 48.0 49.3 282.7 0 0CL +ATOM 861 COM A 287 304.0 371.2 167.8 0 0CL +ATOM 862 C1 A 287 304.2 370.6 166.7 0 0CL +ATOM 863 B1 A 287 303.8 370.3 168.2 0 0CL +ATOM 864 COM A 288 360.6 392.0 342.2 0 0CL +ATOM 865 C1 A 288 361.7 391.4 342.2 0 0CL +ATOM 866 B1 A 288 360.6 391.9 343.2 0 0CL +ATOM 867 COM A 289 408.8 231.9 50.4 0 0CL +ATOM 868 C1 A 289 408.4 233.0 51.0 0 0CL +ATOM 869 B1 A 289 409.4 232.5 49.9 0 0CL +ATOM 870 COM A 290 203.4 112.7 55.8 0 0CL +ATOM 871 C1 A 290 203.9 113.9 55.9 0 0CL +ATOM 872 B1 A 290 203.1 112.9 56.8 0 0CL +ATOM 873 COM A 291 147.5 298.2 236.3 0 0CL +ATOM 874 C1 A 291 147.6 297.2 235.4 0 0CL +ATOM 875 B1 A 291 146.8 298.6 235.7 0 0CL +ATOM 876 COM A 292 212.6 493.6 282.8 0 0CL +ATOM 877 C1 A 292 213.1 493.3 283.9 0 0CL +ATOM 878 B1 A 292 212.5 492.5 282.7 0 0CL +ATOM 879 COM A 293 283.4 441.0 449.8 0 0CL +ATOM 880 C1 A 293 283.3 441.6 448.7 0 0CL +ATOM 881 B1 A 293 283.2 440.1 449.2 0 0CL +ATOM 882 COM A 294 491.7 113.5 494.6 0 0CL +ATOM 883 C1 A 294 491.9 114.5 493.8 0 0CL +ATOM 884 B1 A 294 491.7 114.1 495.3 0 0CL +ATOM 885 COM A 295 86.0 272.6 417.3 0 0CL +ATOM 886 C1 A 295 87.1 272.9 417.9 0 0CL +ATOM 887 B1 A 295 85.9 273.6 417.1 0 0CL +ATOM 888 COM A 296 68.5 394.3 244.1 0 0CL +ATOM 889 C1 A 296 69.2 394.1 243.0 0 0CL +ATOM 890 B1 A 296 69.0 393.4 244.4 0 0CL +ATOM 891 COM A 297 335.0 122.7 371.2 0 0CL +ATOM 892 C1 A 297 334.0 122.5 370.3 0 0CL +ATOM 893 B1 A 297 334.6 121.9 371.7 0 0CL +ATOM 894 COM A 298 289.1 183.8 285.9 0 0CL +ATOM 895 C1 A 298 289.3 184.9 285.2 0 0CL +ATOM 896 B1 A 298 288.4 183.6 285.2 0 0CL +ATOM 897 COM A 299 487.3 438.8 495.7 0 0CL +ATOM 898 C1 A 299 488.4 438.5 495.2 0 0CL +ATOM 899 B1 A 299 487.4 437.9 496.2 0 0CL +ATOM 900 COM B 300 464.5 215.1 16.2 0 0CL +ATOM 901 C1 B 300 464.1 215.5 14.9 0 0CL +ATOM 902 A1 B 300 464.7 215.6 15.9 0 0CL +ATOM 903 COM B 301 458.2 23.8 61.8 0 0CL +ATOM 904 C1 B 301 459.5 23.1 62.0 0 0CL +ATOM 905 A1 B 301 458.2 23.3 62.0 0 0CL +ATOM 906 COM B 302 146.3 299.6 235.1 0 0CL +ATOM 907 C1 B 302 146.9 298.6 234.3 0 0CL +ATOM 908 A1 B 302 146.7 299.1 235.3 0 0CL +ATOM 909 COM B 303 167.6 435.9 423.3 0 0CL +ATOM 910 C1 B 303 167.3 437.1 422.5 0 0CL +ATOM 911 A1 B 303 168.0 436.4 423.3 0 0CL +ATOM 912 COM B 304 388.4 306.3 234.2 0 0CL +ATOM 913 C1 B 304 387.7 305.1 234.7 0 0CL +ATOM 914 A1 B 304 388.5 305.8 234.0 0 0CL +ATOM 915 COM B 305 189.1 443.0 4.8 0 0CL +ATOM 916 C1 B 305 189.7 444.1 5.6 0 0CL +ATOM 917 A1 B 305 189.0 443.1 5.4 0 0CL +ATOM 918 COM B 306 167.3 460.0 228.4 0 0CL +ATOM 919 C1 B 306 168.4 459.3 229.1 0 0CL +ATOM 920 A1 B 306 167.2 459.4 228.6 0 0CL +ATOM 921 COM B 307 455.4 150.5 255.1 0 0CL +ATOM 922 C1 B 307 454.0 150.6 255.3 0 0CL +ATOM 923 A1 B 307 455.1 150.5 255.7 0 0CL +ATOM 924 COM B 308 286.5 150.9 468.0 0 0CL +ATOM 925 C1 B 308 287.8 151.3 468.1 0 0CL +ATOM 926 A1 B 308 286.7 151.3 467.6 0 0CL +ATOM 927 COM B 309 490.7 342.5 381.1 0 0CL +ATOM 928 C1 B 309 492.0 342.4 380.3 0 0CL +ATOM 929 A1 B 309 491.3 342.4 381.3 0 0CL +ATOM 930 COM B 310 486.9 436.8 496.6 0 0CL +ATOM 931 C1 B 310 487.9 436.7 495.6 0 0CL +ATOM 932 A1 B 310 487.1 437.3 496.3 0 0CL +ATOM 933 COM B 311 121.6 336.1 326.0 0 0CL +ATOM 934 C1 B 311 121.7 336.7 327.3 0 0CL +ATOM 935 A1 B 311 122.1 336.4 326.2 0 0CL +ATOM 936 COM B 312 68.9 392.3 245.1 0 0CL +ATOM 937 C1 B 312 69.2 392.3 243.7 0 0CL +ATOM 938 A1 B 312 68.8 392.8 244.7 0 0CL +ATOM 939 COM B 313 477.2 183.8 99.9 0 0CL +ATOM 940 C1 B 313 476.1 184.4 100.4 0 0CL +ATOM 941 A1 B 313 477.1 183.9 100.4 0 0CL +ATOM 942 COM B 314 174.3 231.5 157.6 0 0CL +ATOM 943 C1 B 314 173.5 231.1 158.7 0 0CL +ATOM 944 A1 B 314 173.8 231.1 157.6 0 0CL +ATOM 945 COM B 315 337.4 197.4 291.6 0 0CL +ATOM 946 C1 B 315 337.2 198.2 292.7 0 0CL +ATOM 947 A1 B 315 336.9 197.7 291.6 0 0CL +ATOM 948 COM B 316 250.1 367.8 349.3 0 0CL +ATOM 949 C1 B 316 251.2 368.0 348.3 0 0CL +ATOM 950 A1 B 316 250.1 367.6 348.7 0 0CL +ATOM 951 COM B 317 447.1 390.7 315.6 0 0CL +ATOM 952 C1 B 317 448.1 391.6 315.8 0 0CL +ATOM 953 A1 B 317 447.4 390.9 315.2 0 0CL +ATOM 954 COM B 318 478.4 29.2 457.1 0 0CL +ATOM 955 C1 B 318 478.3 27.9 456.4 0 0CL +ATOM 956 A1 B 318 478.7 28.7 457.2 0 0CL +ATOM 957 COM B 319 232.7 209.8 203.3 0 0CL +ATOM 958 C1 B 319 233.0 209.4 204.6 0 0CL +ATOM 959 A1 B 319 233.1 210.1 203.6 0 0CL +ATOM 960 COM B 320 436.7 175.4 446.4 0 0CL +ATOM 961 C1 B 320 435.5 176.0 446.8 0 0CL +ATOM 962 A1 B 320 436.7 176.0 446.6 0 0CL +ATOM 963 COM B 321 268.3 493.3 471.7 0 0CL +ATOM 964 C1 B 321 269.7 493.0 471.9 0 0CL +ATOM 965 A1 B 321 268.6 493.2 471.3 0 0CL +ATOM 966 COM B 322 234.4 346.2 77.0 0 0CL +ATOM 967 C1 B 322 234.7 347.2 77.9 0 0CL +ATOM 968 A1 B 322 234.5 346.8 76.8 0 0CL +ATOM 969 COM B 323 488.4 99.2 241.7 0 0CL +ATOM 970 C1 B 323 488.8 97.9 241.5 0 0CL +ATOM 971 A1 B 323 488.0 98.8 241.9 0 0CL +ATOM 972 COM B 324 482.8 354.6 337.0 0 0CL +ATOM 973 C1 B 324 482.8 354.5 335.6 0 0CL +ATOM 974 A1 B 324 483.2 354.9 336.7 0 0CL +ATOM 975 COM B 325 481.7 212.4 222.5 0 0CL +ATOM 976 C1 B 325 482.2 211.3 223.3 0 0CL +ATOM 977 A1 B 325 482.3 212.4 222.7 0 0CL +ATOM 978 COM B 326 461.3 55.1 380.0 0 0CL +ATOM 979 C1 B 326 461.3 55.3 381.4 0 0CL +ATOM 980 A1 B 326 461.0 54.8 380.3 0 0CL +ATOM 981 COM B 327 316.9 332.2 220.2 0 0CL +ATOM 982 C1 B 327 315.9 332.7 221.1 0 0CL +ATOM 983 A1 B 327 316.9 332.8 220.5 0 0CL +ATOM 984 COM B 328 312.8 463.2 60.5 0 0CL +ATOM 985 C1 B 328 312.7 461.9 59.9 0 0CL +ATOM 986 A1 B 328 312.3 463.0 60.4 0 0CL +ATOM 987 COM B 329 138.0 325.9 196.7 0 0CL +ATOM 988 C1 B 329 138.7 326.6 195.6 0 0CL +ATOM 989 A1 B 329 138.0 325.7 196.1 0 0CL +ATOM 990 COM B 330 283.1 252.4 250.4 0 0CL +ATOM 991 C1 B 330 282.4 251.8 251.5 0 0CL +ATOM 992 A1 B 330 283.2 252.6 251.0 0 0CL +ATOM 993 COM B 331 44.5 320.1 356.6 0 0CL +ATOM 994 C1 B 331 45.4 320.6 355.5 0 0CL +ATOM 995 A1 B 331 44.6 320.7 356.5 0 0CL +ATOM 996 COM B 332 294.9 214.8 141.6 0 0CL +ATOM 997 C1 B 332 294.4 215.4 140.4 0 0CL +ATOM 998 A1 B 332 294.5 214.5 141.2 0 0CL +ATOM 999 COM B 333 422.7 493.1 410.7 0 0CL +ATOM 1000 C1 B 333 423.0 493.8 411.9 0 0CL +ATOM 1001 A1 B 333 422.5 493.6 410.8 0 0CL +ATOM 1002 COM B 334 488.4 141.5 377.0 0 0CL +ATOM 1003 C1 B 334 489.1 140.2 377.2 0 0CL +ATOM 1004 A1 B 334 488.9 141.4 377.4 0 0CL +ATOM 1005 COM B 335 134.3 175.2 58.8 0 0CL +ATOM 1006 C1 B 335 134.8 175.2 60.2 0 0CL +ATOM 1007 A1 B 335 133.9 175.1 59.3 0 0CL +ATOM 1008 COM B 336 74.9 92.9 99.2 0 0CL +ATOM 1009 C1 B 336 74.9 94.0 98.2 0 0CL +ATOM 1010 A1 B 336 74.6 92.8 98.6 0 0CL +ATOM 1011 COM B 337 442.8 15.1 54.2 0 0CL +ATOM 1012 C1 B 337 442.9 16.2 53.4 0 0CL +ATOM 1013 A1 B 337 443.2 15.1 53.8 0 0CL +ATOM 1014 COM B 338 283.9 234.3 56.7 0 0CL +ATOM 1015 C1 B 338 284.5 234.5 57.9 0 0CL +ATOM 1016 A1 B 338 283.8 234.8 57.0 0 0CL +ATOM 1017 COM B 339 360.0 391.6 344.3 0 0CL +ATOM 1018 C1 B 339 361.1 390.8 343.9 0 0CL +ATOM 1019 A1 B 339 360.3 391.6 343.7 0 0CL +ATOM 1020 COM B 340 62.4 229.6 47.2 0 0CL +ATOM 1021 C1 B 340 63.4 229.5 48.2 0 0CL +ATOM 1022 A1 B 340 62.7 230.1 47.5 0 0CL +ATOM 1023 COM B 341 101.4 38.1 268.7 0 0CL +ATOM 1024 C1 B 341 101.0 36.8 268.8 0 0CL +ATOM 1025 A1 B 341 101.3 37.8 269.2 0 0CL +ATOM 1026 COM B 342 156.8 374.4 455.1 0 0CL +ATOM 1027 C1 B 342 156.7 373.0 455.5 0 0CL +ATOM 1028 A1 B 342 156.5 374.2 455.5 0 0CL +ATOM 1029 COM B 343 382.5 354.7 495.2 0 0CL +ATOM 1030 C1 B 343 383.9 354.4 495.4 0 0CL +ATOM 1031 A1 B 343 383.0 354.9 494.9 0 0CL +ATOM 1032 COM B 344 229.5 397.8 175.2 0 0CL +ATOM 1033 C1 B 344 230.5 397.4 174.3 0 0CL +ATOM 1034 A1 B 344 229.5 397.2 175.0 0 0CL +ATOM 1035 COM B 345 388.9 457.7 54.5 0 0CL +ATOM 1036 C1 B 345 388.7 456.4 55.1 0 0CL +ATOM 1037 A1 B 345 388.4 457.4 54.4 0 0CL +ATOM 1038 COM B 346 297.8 165.9 414.9 0 0CL +ATOM 1039 C1 B 346 298.6 165.9 416.1 0 0CL +ATOM 1040 A1 B 346 297.7 166.3 415.4 0 0CL +ATOM 1041 COM B 347 356.9 117.4 46.3 0 0CL +ATOM 1042 C1 B 347 356.7 117.3 44.9 0 0CL +ATOM 1043 A1 B 347 356.4 117.6 46.0 0 0CL +ATOM 1044 COM B 348 425.4 395.3 426.9 0 0CL +ATOM 1045 C1 B 348 424.2 394.8 426.4 0 0CL +ATOM 1046 A1 B 348 425.2 394.8 427.0 0 0CL +ATOM 1047 COM B 349 59.9 358.5 338.4 0 0CL +ATOM 1048 C1 B 349 60.4 359.3 337.3 0 0CL +ATOM 1049 A1 B 349 60.5 358.7 338.4 0 0CL +ATOM 1050 COM B 350 321.1 432.9 265.7 0 0CL +ATOM 1051 C1 B 350 320.3 432.8 266.9 0 0CL +ATOM 1052 A1 B 350 320.7 432.5 265.8 0 0CL +ATOM 1053 COM B 351 220.7 47.6 320.6 0 0CL +ATOM 1054 C1 B 351 221.2 47.2 321.8 0 0CL +ATOM 1055 A1 B 351 221.3 47.4 320.6 0 0CL +ATOM 1056 COM B 352 37.7 335.1 369.4 0 0CL +ATOM 1057 C1 B 352 36.5 335.9 369.7 0 0CL +ATOM 1058 A1 B 352 37.6 335.7 369.2 0 0CL +ATOM 1059 COM B 353 493.8 260.1 222.8 0 0CL +ATOM 1060 C1 B 353 492.9 260.9 223.5 0 0CL +ATOM 1061 A1 B 353 493.7 260.7 222.7 0 0CL +ATOM 1062 COM B 354 381.4 271.7 427.7 0 0CL +ATOM 1063 C1 B 354 382.2 271.4 426.6 0 0CL +ATOM 1064 A1 B 354 381.4 271.1 427.4 0 0CL +ATOM 1065 COM B 355 297.0 166.8 206.9 0 0CL +ATOM 1066 C1 B 355 296.2 167.7 206.2 0 0CL +ATOM 1067 A1 B 355 296.5 166.6 206.7 0 0CL +ATOM 1068 COM B 356 438.4 240.8 437.8 0 0CL +ATOM 1069 C1 B 356 438.3 242.2 437.9 0 0CL +ATOM 1070 A1 B 356 438.0 241.1 438.2 0 0CL +ATOM 1071 COM B 357 85.3 274.6 416.9 0 0CL +ATOM 1072 C1 B 357 86.3 274.6 417.9 0 0CL +ATOM 1073 A1 B 357 85.6 274.1 417.1 0 0CL +ATOM 1074 COM B 358 231.7 458.8 131.5 0 0CL +ATOM 1075 C1 B 358 231.5 457.6 132.1 0 0CL +ATOM 1076 A1 B 358 232.2 458.5 131.7 0 0CL +ATOM 1077 COM B 359 46.8 369.8 49.1 0 0CL +ATOM 1078 C1 B 359 47.5 370.0 50.3 0 0CL +ATOM 1079 A1 B 359 46.8 370.3 49.3 0 0CL +ATOM 1080 COM B 360 376.7 108.8 307.1 0 0CL +ATOM 1081 C1 B 360 377.7 108.3 306.2 0 0CL +ATOM 1082 A1 B 360 376.8 109.1 306.6 0 0CL +ATOM 1083 COM B 361 498.9 218.2 114.2 0 0CL +ATOM 1084 C1 B 361 498.5 216.8 114.2 0 0CL +ATOM 1085 A1 B 361 498.8 217.9 113.7 0 0CL +ATOM 1086 COM B 362 379.8 404.3 170.0 0 0CL +ATOM 1087 C1 B 362 381.1 403.9 169.8 0 0CL +ATOM 1088 A1 B 362 379.9 403.7 170.1 0 0CL +ATOM 1089 COM B 363 271.9 48.5 399.4 0 0CL +ATOM 1090 C1 B 363 273.2 48.4 399.1 0 0CL +ATOM 1091 A1 B 363 272.1 48.0 399.1 0 0CL +ATOM 1092 COM B 364 73.6 479.4 302.8 0 0CL +ATOM 1093 C1 B 364 73.8 478.2 303.5 0 0CL +ATOM 1094 A1 B 364 73.7 478.8 302.5 0 0CL +ATOM 1095 COM B 365 237.9 237.4 182.0 0 0CL +ATOM 1096 C1 B 365 238.5 236.1 182.1 0 0CL +ATOM 1097 A1 B 365 237.6 236.9 181.9 0 0CL +ATOM 1098 COM B 366 212.6 491.5 282.0 0 0CL +ATOM 1099 C1 B 366 213.5 491.6 283.1 0 0CL +ATOM 1100 A1 B 366 212.7 492.0 282.3 0 0CL +ATOM 1101 COM B 367 442.3 188.8 33.1 0 0CL +ATOM 1102 C1 B 367 442.8 188.9 31.8 0 0CL +ATOM 1103 A1 B 367 442.0 188.5 32.6 0 0CL +ATOM 1104 COM B 368 311.8 399.7 13.9 0 0CL +ATOM 1105 C1 B 368 311.4 399.2 12.7 0 0CL +ATOM 1106 A1 B 368 311.8 400.0 13.4 0 0CL +ATOM 1107 COM B 369 45.1 228.1 424.2 0 0CL +ATOM 1108 C1 B 369 43.7 227.8 424.0 0 0CL +ATOM 1109 A1 B 369 44.9 227.5 424.1 0 0CL +ATOM 1110 COM B 370 471.5 234.0 314.7 0 0CL +ATOM 1111 C1 B 370 471.6 232.7 315.3 0 0CL +ATOM 1112 A1 B 370 471.1 233.7 314.8 0 0CL +ATOM 1113 COM B 371 133.0 91.8 293.5 0 0CL +ATOM 1114 C1 B 371 133.1 92.6 292.3 0 0CL +ATOM 1115 A1 B 371 132.5 92.0 293.2 0 0CL +ATOM 1116 COM B 372 446.0 410.1 38.7 0 0CL +ATOM 1117 C1 B 372 447.1 410.9 38.4 0 0CL +ATOM 1118 A1 B 372 446.0 410.7 38.8 0 0CL +ATOM 1119 COM B 373 215.1 472.0 35.1 0 0CL +ATOM 1120 C1 B 373 214.6 471.3 36.3 0 0CL +ATOM 1121 A1 B 373 215.4 471.4 35.3 0 0CL +ATOM 1122 COM B 374 232.0 166.4 90.3 0 0CL +ATOM 1123 C1 B 374 230.5 166.4 90.4 0 0CL +ATOM 1124 A1 B 374 231.7 166.4 90.8 0 0CL +ATOM 1125 COM B 375 53.0 277.6 328.3 0 0CL +ATOM 1126 C1 B 375 53.8 277.0 327.2 0 0CL +ATOM 1127 A1 B 375 52.8 277.2 327.9 0 0CL +ATOM 1128 COM B 376 58.7 295.3 320.7 0 0CL +ATOM 1129 C1 B 376 58.6 293.9 320.9 0 0CL +ATOM 1130 A1 B 376 58.9 295.1 321.2 0 0CL +ATOM 1131 COM B 377 481.2 9.9 109.4 0 0CL +ATOM 1132 C1 B 377 480.5 9.5 110.6 0 0CL +ATOM 1133 A1 B 377 480.6 10.0 109.5 0 0CL +ATOM 1134 COM B 378 482.3 279.4 318.1 0 0CL +ATOM 1135 C1 B 378 481.5 279.8 319.2 0 0CL +ATOM 1136 A1 B 378 481.7 279.3 318.1 0 0CL +ATOM 1137 COM B 379 472.5 347.7 206.3 0 0CL +ATOM 1138 C1 B 379 473.5 348.0 205.3 0 0CL +ATOM 1139 A1 B 379 472.6 348.3 206.1 0 0CL +ATOM 1140 COM B 380 385.2 432.3 175.2 0 0CL +ATOM 1141 C1 B 380 384.3 432.8 174.2 0 0CL +ATOM 1142 A1 B 380 385.1 432.0 174.7 0 0CL +ATOM 1143 COM B 381 120.6 152.0 471.5 0 0CL +ATOM 1144 C1 B 381 119.9 150.8 471.7 0 0CL +ATOM 1145 A1 B 381 120.1 151.9 471.2 0 0CL +ATOM 1146 COM B 382 388.9 469.9 450.9 0 0CL +ATOM 1147 C1 B 382 388.7 468.6 451.5 0 0CL +ATOM 1148 A1 B 382 389.1 469.7 451.4 0 0CL +ATOM 1149 COM B 383 317.1 392.3 319.3 0 0CL +ATOM 1150 C1 B 383 318.0 391.6 320.3 0 0CL +ATOM 1151 A1 B 383 316.9 391.9 319.7 0 0CL +ATOM 1152 COM B 384 139.4 431.2 164.7 0 0CL +ATOM 1153 C1 B 384 138.9 431.4 163.3 0 0CL +ATOM 1154 A1 B 384 139.5 431.7 164.3 0 0CL +ATOM 1155 COM B 385 491.9 114.4 496.5 0 0CL +ATOM 1156 C1 B 385 492.5 115.2 495.5 0 0CL +ATOM 1157 A1 B 385 491.9 114.3 495.9 0 0CL +ATOM 1158 COM B 386 377.4 161.1 352.6 0 0CL +ATOM 1159 C1 B 386 378.0 160.3 351.6 0 0CL +ATOM 1160 A1 B 386 377.2 160.5 352.4 0 0CL +ATOM 1161 COM B 387 268.2 201.1 82.2 0 0CL +ATOM 1162 C1 B 387 267.8 202.4 82.0 0 0CL +ATOM 1163 A1 B 387 268.0 201.2 81.7 0 0CL +ATOM 1164 COM B 388 139.9 222.9 266.5 0 0CL +ATOM 1165 C1 B 388 139.6 222.0 265.5 0 0CL +ATOM 1166 A1 B 388 139.5 222.5 266.5 0 0CL +ATOM 1167 COM B 389 255.6 349.6 151.5 0 0CL +ATOM 1168 C1 B 389 256.5 350.6 152.0 0 0CL +ATOM 1169 A1 B 389 256.2 349.6 151.4 0 0CL +ATOM 1170 COM B 390 61.5 134.7 499.1 0 0CL +ATOM 1171 C1 B 390 62.4 134.4 498.0 0 0CL +ATOM 1172 A1 B 390 62.1 134.8 499.1 0 0CL +ATOM 1173 COM B 391 425.4 154.0 318.3 0 0CL +ATOM 1174 C1 B 391 426.5 153.5 317.5 0 0CL +ATOM 1175 A1 B 391 426.0 154.3 318.2 0 0CL +ATOM 1176 COM B 392 73.8 466.0 466.2 0 0CL +ATOM 1177 C1 B 392 74.9 465.2 466.4 0 0CL +ATOM 1178 A1 B 392 73.8 465.6 466.7 0 0CL +ATOM 1179 COM B 393 423.9 463.3 478.1 0 0CL +ATOM 1180 C1 B 393 425.0 464.1 477.8 0 0CL +ATOM 1181 A1 B 393 424.3 463.1 477.7 0 0CL +ATOM 1182 COM B 394 140.5 122.0 192.5 0 0CL +ATOM 1183 C1 B 394 141.0 122.9 191.4 0 0CL +ATOM 1184 A1 B 394 140.1 122.3 192.1 0 0CL +ATOM 1185 COM B 395 218.6 257.2 474.4 0 0CL +ATOM 1186 C1 B 395 217.8 257.9 475.3 0 0CL +ATOM 1187 A1 B 395 218.3 256.9 474.8 0 0CL +ATOM 1188 COM B 396 238.4 481.2 141.8 0 0CL +ATOM 1189 C1 B 396 239.8 481.0 141.7 0 0CL +ATOM 1190 A1 B 396 238.7 481.6 141.7 0 0CL +ATOM 1191 COM B 397 13.0 184.1 315.0 0 0CL +ATOM 1192 C1 B 397 14.0 184.6 314.2 0 0CL +ATOM 1193 A1 B 397 13.2 184.6 315.1 0 0CL +ATOM 1194 COM B 398 186.0 186.4 138.5 0 0CL +ATOM 1195 C1 B 398 185.2 186.0 137.4 0 0CL +ATOM 1196 A1 B 398 186.2 186.3 137.9 0 0CL +ATOM 1197 COM B 399 445.0 376.2 122.7 0 0CL +ATOM 1198 C1 B 399 445.3 375.9 124.0 0 0CL +ATOM 1199 A1 B 399 445.6 376.1 122.9 0 0CL +ATOM 1200 COM B 400 226.0 10.3 72.6 0 0CL +ATOM 1201 C1 B 400 225.7 9.7 73.8 0 0CL +ATOM 1202 A1 B 400 225.4 10.1 72.7 0 0CL +ATOM 1203 COM B 401 39.4 139.5 425.1 0 0CL +ATOM 1204 C1 B 401 39.3 140.9 424.8 0 0CL +ATOM 1205 A1 B 401 39.6 140.0 425.5 0 0CL +ATOM 1206 COM B 402 417.8 163.5 229.5 0 0CL +ATOM 1207 C1 B 402 417.9 162.5 228.5 0 0CL +ATOM 1208 A1 B 402 417.3 163.2 229.3 0 0CL +ATOM 1209 COM B 403 321.3 453.2 190.7 0 0CL +ATOM 1210 C1 B 403 322.2 452.2 190.0 0 0CL +ATOM 1211 A1 B 403 321.2 453.0 190.1 0 0CL +ATOM 1212 COM B 404 202.9 112.6 58.0 0 0CL +ATOM 1213 C1 B 404 203.8 113.7 57.8 0 0CL +ATOM 1214 A1 B 404 203.1 112.7 57.4 0 0CL +ATOM 1215 COM B 405 328.4 403.0 194.7 0 0CL +ATOM 1216 C1 B 405 329.0 401.8 194.4 0 0CL +ATOM 1217 A1 B 405 328.2 402.5 194.9 0 0CL +ATOM 1218 COM B 406 234.5 292.1 356.5 0 0CL +ATOM 1219 C1 B 406 234.1 293.5 356.8 0 0CL +ATOM 1220 A1 B 406 234.4 292.3 357.0 0 0CL +ATOM 1221 COM B 407 208.6 238.0 213.7 0 0CL +ATOM 1222 C1 B 407 209.0 238.1 212.3 0 0CL +ATOM 1223 A1 B 407 208.8 238.5 213.5 0 0CL +ATOM 1224 COM B 408 243.8 407.8 415.4 0 0CL +ATOM 1225 C1 B 408 244.5 407.2 416.5 0 0CL +ATOM 1226 A1 B 408 243.5 407.8 416.0 0 0CL +ATOM 1227 COM B 409 297.5 13.7 414.1 0 0CL +ATOM 1228 C1 B 409 296.6 12.9 413.4 0 0CL +ATOM 1229 A1 B 409 296.9 13.8 414.1 0 0CL +ATOM 1230 COM B 410 104.8 50.6 428.0 0 0CL +ATOM 1231 C1 B 410 104.4 49.4 428.6 0 0CL +ATOM 1232 A1 B 410 104.6 50.2 427.7 0 0CL +ATOM 1233 COM B 411 105.4 360.3 98.1 0 0CL +ATOM 1234 C1 B 411 104.8 360.6 99.4 0 0CL +ATOM 1235 A1 B 411 105.7 360.3 98.6 0 0CL +ATOM 1236 COM B 412 287.1 442.0 78.0 0 0CL +ATOM 1237 C1 B 412 286.4 440.9 78.6 0 0CL +ATOM 1238 A1 B 412 287.4 441.5 78.3 0 0CL +ATOM 1239 COM B 413 393.9 193.8 210.8 0 0CL +ATOM 1240 C1 B 413 393.5 192.9 209.7 0 0CL +ATOM 1241 A1 B 413 393.4 193.9 210.4 0 0CL +ATOM 1242 COM B 414 92.9 305.9 390.6 0 0CL +ATOM 1243 C1 B 414 93.6 307.1 390.9 0 0CL +ATOM 1244 A1 B 414 93.1 306.3 390.1 0 0CL +ATOM 1245 COM B 415 143.1 56.6 55.4 0 0CL +ATOM 1246 C1 B 415 143.0 55.3 54.9 0 0CL +ATOM 1247 A1 B 415 142.6 56.3 55.4 0 0CL +ATOM 1248 COM B 416 449.4 316.8 199.0 0 0CL +ATOM 1249 C1 B 416 449.6 315.9 200.1 0 0CL +ATOM 1250 A1 B 416 449.9 316.8 199.4 0 0CL +ATOM 1251 COM B 417 447.0 407.5 408.5 0 0CL +ATOM 1252 C1 B 417 446.9 407.3 409.9 0 0CL +ATOM 1253 A1 B 417 446.9 406.9 408.7 0 0CL +ATOM 1254 COM B 418 182.8 442.2 63.1 0 0CL +ATOM 1255 C1 B 418 183.6 443.2 62.6 0 0CL +ATOM 1256 A1 B 418 182.8 442.3 62.5 0 0CL +ATOM 1257 COM B 419 461.5 327.1 154.0 0 0CL +ATOM 1258 C1 B 419 461.3 327.7 155.3 0 0CL +ATOM 1259 A1 B 419 461.0 326.9 154.3 0 0CL +ATOM 1260 COM B 420 334.3 121.3 372.7 0 0CL +ATOM 1261 C1 B 420 333.2 121.5 371.8 0 0CL +ATOM 1262 A1 B 420 334.4 121.6 372.2 0 0CL +ATOM 1263 COM B 421 149.2 458.8 234.8 0 0CL +ATOM 1264 C1 B 421 150.4 458.3 235.4 0 0CL +ATOM 1265 A1 B 421 149.2 458.3 235.1 0 0CL +ATOM 1266 COM B 422 468.1 186.8 361.9 0 0CL +ATOM 1267 C1 B 422 469.1 187.4 362.7 0 0CL +ATOM 1268 A1 B 422 468.1 187.4 361.9 0 0CL +ATOM 1269 COM B 423 423.8 165.3 216.4 0 0CL +ATOM 1270 C1 B 423 424.0 164.2 215.5 0 0CL +ATOM 1271 A1 B 423 424.1 164.8 216.5 0 0CL +ATOM 1272 COM B 424 26.1 309.0 322.9 0 0CL +ATOM 1273 C1 B 424 24.7 309.4 322.9 0 0CL +ATOM 1274 A1 B 424 25.6 308.6 323.0 0 0CL +ATOM 1275 COM B 425 366.8 35.6 121.4 0 0CL +ATOM 1276 C1 B 425 367.3 35.4 120.1 0 0CL +ATOM 1277 A1 B 425 367.0 35.1 121.2 0 0CL +ATOM 1278 COM B 426 341.5 130.3 340.0 0 0CL +ATOM 1279 C1 B 426 340.4 131.1 340.6 0 0CL +ATOM 1280 A1 B 426 341.1 130.7 339.7 0 0CL +ATOM 1281 COM B 427 42.9 25.2 1.7 0 0CL +ATOM 1282 C1 B 427 43.1 24.7 3.0 0 0CL +ATOM 1283 A1 B 427 42.5 24.9 2.0 0 0CL +ATOM 1284 COM B 428 104.2 29.0 297.7 0 0CL +ATOM 1285 C1 B 428 104.8 28.7 296.4 0 0CL +ATOM 1286 A1 B 428 104.2 29.4 297.2 0 0CL +ATOM 1287 COM B 429 438.8 422.2 453.5 0 0CL +ATOM 1288 C1 B 429 438.5 421.4 452.3 0 0CL +ATOM 1289 A1 B 429 438.5 421.6 453.5 0 0CL +ATOM 1290 COM B 430 23.7 364.6 362.3 0 0CL +ATOM 1291 C1 B 430 22.7 363.7 361.9 0 0CL +ATOM 1292 A1 B 430 23.8 364.0 362.0 0 0CL +ATOM 1293 COM B 431 2.7 288.4 382.8 0 0CL +ATOM 1294 C1 B 431 2.2 289.3 381.8 0 0CL +ATOM 1295 A1 B 431 2.2 288.8 382.9 0 0CL +ATOM 1296 COM B 432 238.3 180.5 450.2 0 0CL +ATOM 1297 C1 B 432 239.2 179.9 449.2 0 0CL +ATOM 1298 A1 B 432 238.8 180.7 450.1 0 0CL +ATOM 1299 COM B 433 336.1 439.6 358.4 0 0CL +ATOM 1300 C1 B 433 337.4 439.3 359.0 0 0CL +ATOM 1301 A1 B 433 336.5 440.0 358.5 0 0CL +ATOM 1302 COM B 434 125.2 271.9 436.0 0 0CL +ATOM 1303 C1 B 434 126.4 272.6 435.7 0 0CL +ATOM 1304 A1 B 434 125.7 271.9 436.4 0 0CL +ATOM 1305 COM B 435 357.8 404.1 470.6 0 0CL +ATOM 1306 C1 B 435 358.3 403.2 471.6 0 0CL +ATOM 1307 A1 B 435 357.8 404.3 471.2 0 0CL +ATOM 1308 COM B 436 54.9 15.2 333.4 0 0CL +ATOM 1309 C1 B 436 55.3 14.3 332.4 0 0CL +ATOM 1310 A1 B 436 55.5 15.2 333.2 0 0CL +ATOM 1311 COM B 437 237.2 171.4 216.8 0 0CL +ATOM 1312 C1 B 437 236.0 172.2 216.7 0 0CL +ATOM 1313 A1 B 437 236.8 171.2 216.4 0 0CL +ATOM 1314 COM B 438 465.1 300.4 458.2 0 0CL +ATOM 1315 C1 B 438 464.7 299.0 458.5 0 0CL +ATOM 1316 A1 B 438 465.2 299.9 457.8 0 0CL +ATOM 1317 COM B 439 440.1 322.4 313.7 0 0CL +ATOM 1318 C1 B 439 441.3 321.9 313.0 0 0CL +ATOM 1319 A1 B 439 440.6 322.7 313.6 0 0CL +ATOM 1320 COM B 440 74.5 368.2 239.1 0 0CL +ATOM 1321 C1 B 440 75.9 368.5 239.4 0 0CL +ATOM 1322 A1 B 440 74.8 367.9 239.5 0 0CL +ATOM 1323 COM B 441 238.6 22.9 50.2 0 0CL +ATOM 1324 C1 B 441 239.5 23.6 51.1 0 0CL +ATOM 1325 A1 B 441 238.9 23.4 50.0 0 0CL +ATOM 1326 COM B 442 436.1 339.5 381.4 0 0CL +ATOM 1327 C1 B 442 435.7 338.3 380.7 0 0CL +ATOM 1328 A1 B 442 435.8 339.1 381.7 0 0CL +ATOM 1329 COM B 443 423.8 272.8 176.5 0 0CL +ATOM 1330 C1 B 443 423.0 272.6 175.2 0 0CL +ATOM 1331 A1 B 443 424.0 272.6 176.0 0 0CL +ATOM 1332 COM B 444 303.3 369.5 169.0 0 0CL +ATOM 1333 C1 B 444 303.2 369.2 167.6 0 0CL +ATOM 1334 A1 B 444 303.5 369.9 168.6 0 0CL +ATOM 1335 COM B 445 184.2 262.4 78.7 0 0CL +ATOM 1336 C1 B 445 185.0 263.0 77.7 0 0CL +ATOM 1337 A1 B 445 184.3 262.1 78.2 0 0CL +ATOM 1338 COM B 446 310.3 396.0 444.9 0 0CL +ATOM 1339 C1 B 446 311.3 395.3 444.1 0 0CL +ATOM 1340 A1 B 446 310.3 395.4 444.8 0 0CL +ATOM 1341 COM B 447 22.6 455.1 333.5 0 0CL +ATOM 1342 C1 B 447 23.3 456.4 333.7 0 0CL +ATOM 1343 A1 B 447 23.2 455.2 333.5 0 0CL +ATOM 1344 COM B 448 413.6 404.9 337.8 0 0CL +ATOM 1345 C1 B 448 414.7 405.0 338.6 0 0CL +ATOM 1346 A1 B 448 413.9 405.4 337.8 0 0CL +ATOM 1347 COM B 449 412.7 184.3 51.0 0 0CL +ATOM 1348 C1 B 449 413.8 183.4 51.0 0 0CL +ATOM 1349 A1 B 449 413.1 184.3 50.5 0 0CL diff --git a/het3mer/PDB/500000.pdb b/het3mer/PDB/500000.pdb new file mode 100644 index 00000000..6bf55fbd --- /dev/null +++ b/het3mer/PDB/500000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 500000 CREATED Thu May 29 13:10:56 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 144.8 423.6 7.7 0 0CL +ATOM 1 A1 C 0 145.4 423.5 5.6 0 0CL +ATOM 2 B1 C 0 144.7 423.7 5.7 0 0CL +ATOM 3 COM C 1 14.0 317.2 148.3 0 0CL +ATOM 4 A1 C 1 14.9 316.3 146.5 0 0CL +ATOM 5 B1 C 1 14.4 316.7 146.4 0 0CL +ATOM 6 COM C 2 287.9 52.8 68.1 0 0CL +ATOM 7 A1 C 2 289.6 52.7 66.7 0 0CL +ATOM 8 B1 C 2 289.3 52.0 66.9 0 0CL +ATOM 9 COM C 3 149.8 1.4 172.0 0 0CL +ATOM 10 A1 C 3 149.7 0.2 170.2 0 0CL +ATOM 11 B1 C 3 149.1 0.5 170.4 0 0CL +ATOM 12 COM C 4 76.2 358.5 249.7 0 0CL +ATOM 13 A1 C 4 76.4 359.7 251.6 0 0CL +ATOM 14 B1 C 4 76.0 359.1 251.6 0 0CL +ATOM 15 COM C 5 274.8 166.2 451.1 0 0CL +ATOM 16 A1 C 5 274.4 166.5 449.0 0 0CL +ATOM 17 B1 C 5 273.9 166.2 449.4 0 0CL +ATOM 18 COM C 6 18.8 395.5 454.7 0 0CL +ATOM 19 A1 C 6 19.8 395.3 452.8 0 0CL +ATOM 20 B1 C 6 19.3 394.8 452.9 0 0CL +ATOM 21 COM C 7 347.9 363.9 16.1 0 0CL +ATOM 22 A1 C 7 348.0 364.1 13.9 0 0CL +ATOM 23 B1 C 7 348.4 364.5 14.3 0 0CL +ATOM 24 COM C 8 62.8 80.6 266.4 0 0CL +ATOM 25 A1 C 8 61.2 82.0 267.0 0 0CL +ATOM 26 B1 C 8 61.6 81.8 267.5 0 0CL +ATOM 27 COM C 9 303.0 258.6 336.6 0 0CL +ATOM 28 A1 C 9 302.5 260.7 336.2 0 0CL +ATOM 29 B1 C 9 302.3 260.4 336.9 0 0CL +ATOM 30 COM C 10 52.2 89.6 243.4 0 0CL +ATOM 31 A1 C 10 50.7 90.9 242.5 0 0CL +ATOM 32 B1 C 10 51.0 90.4 242.1 0 0CL +ATOM 33 COM C 11 358.9 127.9 228.9 0 0CL +ATOM 34 A1 C 11 357.9 126.4 227.6 0 0CL +ATOM 35 B1 C 11 358.6 126.3 227.7 0 0CL +ATOM 36 COM C 12 228.3 304.2 311.9 0 0CL +ATOM 37 A1 C 12 227.9 305.1 309.9 0 0CL +ATOM 38 B1 C 12 228.5 304.7 310.0 0 0CL +ATOM 39 COM C 13 424.8 236.8 340.8 0 0CL +ATOM 40 A1 C 13 424.7 237.5 342.9 0 0CL +ATOM 41 B1 C 13 424.1 237.1 342.6 0 0CL +ATOM 42 COM C 14 462.9 100.5 257.2 0 0CL +ATOM 43 A1 C 14 463.4 102.5 258.2 0 0CL +ATOM 44 B1 C 14 463.3 102.5 257.5 0 0CL +ATOM 45 COM C 15 123.4 411.2 275.8 0 0CL +ATOM 46 A1 C 15 122.7 412.7 277.3 0 0CL +ATOM 47 B1 C 15 123.4 412.5 277.3 0 0CL +ATOM 48 COM C 16 172.3 367.5 67.9 0 0CL +ATOM 49 A1 C 16 172.7 366.8 65.8 0 0CL +ATOM 50 B1 C 16 173.0 367.4 66.0 0 0CL +ATOM 51 COM C 17 308.2 414.7 384.5 0 0CL +ATOM 52 A1 C 17 306.8 413.3 385.5 0 0CL +ATOM 53 B1 C 17 307.5 413.0 385.3 0 0CL +ATOM 54 COM C 18 134.5 324.7 233.5 0 0CL +ATOM 55 A1 C 18 136.7 324.3 233.4 0 0CL +ATOM 56 B1 C 18 136.5 325.0 233.6 0 0CL +ATOM 57 COM C 19 59.2 405.0 72.7 0 0CL +ATOM 58 A1 C 19 58.1 406.8 72.9 0 0CL +ATOM 59 B1 C 19 58.6 406.7 73.3 0 0CL +ATOM 60 COM C 20 81.1 442.2 325.0 0 0CL +ATOM 61 A1 C 20 80.4 441.3 323.1 0 0CL +ATOM 62 B1 C 20 80.1 441.0 323.8 0 0CL +ATOM 63 COM C 21 411.5 337.9 85.1 0 0CL +ATOM 64 A1 C 21 412.9 339.0 83.8 0 0CL +ATOM 65 B1 C 21 412.6 339.4 84.4 0 0CL +ATOM 66 COM C 22 426.5 348.3 285.2 0 0CL +ATOM 67 A1 C 22 427.0 346.3 284.6 0 0CL +ATOM 68 B1 C 22 427.3 346.5 285.2 0 0CL +ATOM 69 COM C 23 180.7 300.5 348.4 0 0CL +ATOM 70 A1 C 23 181.6 299.2 346.8 0 0CL +ATOM 71 B1 C 23 181.3 298.9 347.3 0 0CL +ATOM 72 COM C 24 420.9 110.9 195.3 0 0CL +ATOM 73 A1 C 24 421.3 110.7 197.4 0 0CL +ATOM 74 B1 C 24 420.8 111.2 197.2 0 0CL +ATOM 75 COM C 25 87.7 239.6 32.7 0 0CL +ATOM 76 A1 C 25 88.9 241.0 33.9 0 0CL +ATOM 77 B1 C 25 88.2 241.2 33.7 0 0CL +ATOM 78 COM C 26 327.9 310.3 212.2 0 0CL +ATOM 79 A1 C 26 326.0 311.4 212.4 0 0CL +ATOM 80 B1 C 26 326.2 311.3 211.7 0 0CL +ATOM 81 COM C 27 46.5 50.5 184.1 0 0CL +ATOM 82 A1 C 27 48.5 49.7 183.6 0 0CL +ATOM 83 B1 C 27 48.4 50.0 184.3 0 0CL +ATOM 84 COM C 28 453.2 47.7 204.1 0 0CL +ATOM 85 A1 C 28 454.2 49.3 203.0 0 0CL +ATOM 86 B1 C 28 454.4 49.2 203.7 0 0CL +ATOM 87 COM C 29 261.7 378.5 327.2 0 0CL +ATOM 88 A1 C 29 262.7 376.5 327.0 0 0CL +ATOM 89 B1 C 29 262.0 376.6 326.8 0 0CL +ATOM 90 COM C 30 20.0 55.7 124.7 0 0CL +ATOM 91 A1 C 30 18.4 54.8 126.0 0 0CL +ATOM 92 B1 C 30 19.1 55.0 126.3 0 0CL +ATOM 93 COM C 31 304.8 196.3 54.5 0 0CL +ATOM 94 A1 C 31 303.6 198.2 54.7 0 0CL +ATOM 95 B1 C 31 303.3 197.5 54.6 0 0CL +ATOM 96 COM C 32 299.5 97.8 402.2 0 0CL +ATOM 97 A1 C 32 299.1 97.9 404.4 0 0CL +ATOM 98 B1 C 32 299.8 97.7 404.2 0 0CL +ATOM 99 COM C 33 364.4 38.5 206.9 0 0CL +ATOM 100 A1 C 33 365.0 40.3 208.1 0 0CL +ATOM 101 B1 C 33 364.3 40.0 208.2 0 0CL +ATOM 102 COM C 34 6.4 274.3 105.5 0 0CL +ATOM 103 A1 C 34 5.5 274.2 103.5 0 0CL +ATOM 104 B1 C 34 5.2 273.8 104.0 0 0CL +ATOM 105 COM C 35 371.2 329.3 21.8 0 0CL +ATOM 106 A1 C 35 369.7 330.5 23.0 0 0CL +ATOM 107 B1 C 35 370.2 330.9 22.6 0 0CL +ATOM 108 COM C 36 221.3 196.3 59.8 0 0CL +ATOM 109 A1 C 36 219.9 197.9 60.4 0 0CL +ATOM 110 B1 C 36 220.4 197.7 60.9 0 0CL +ATOM 111 COM C 37 266.3 174.3 325.5 0 0CL +ATOM 112 A1 C 37 267.6 172.6 326.1 0 0CL +ATOM 113 B1 C 37 267.3 173.0 326.6 0 0CL +ATOM 114 COM C 38 252.3 326.7 49.7 0 0CL +ATOM 115 A1 C 38 251.0 325.0 49.2 0 0CL +ATOM 116 B1 C 38 250.8 325.6 48.9 0 0CL +ATOM 117 COM C 39 134.0 453.4 278.5 0 0CL +ATOM 118 A1 C 39 132.9 455.3 278.5 0 0CL +ATOM 119 B1 C 39 133.6 455.4 278.5 0 0CL +ATOM 120 COM C 40 43.6 52.8 56.8 0 0CL +ATOM 121 A1 C 40 44.3 54.8 56.5 0 0CL +ATOM 122 B1 C 40 43.9 54.5 56.0 0 0CL +ATOM 123 COM C 41 20.4 491.9 61.7 0 0CL +ATOM 124 A1 C 41 21.0 494.0 61.2 0 0CL +ATOM 125 B1 C 41 21.2 493.5 60.7 0 0CL +ATOM 126 COM C 42 146.0 257.2 423.5 0 0CL +ATOM 127 A1 C 42 144.3 257.4 424.8 0 0CL +ATOM 128 B1 C 42 144.8 257.9 424.8 0 0CL +ATOM 129 COM C 43 344.0 7.4 156.5 0 0CL +ATOM 130 A1 C 43 345.1 6.1 158.0 0 0CL +ATOM 131 B1 C 43 345.4 6.2 157.3 0 0CL +ATOM 132 COM C 44 497.8 189.0 85.3 0 0CL +ATOM 133 A1 C 44 497.6 190.6 83.9 0 0CL +ATOM 134 B1 C 44 497.1 190.6 84.4 0 0CL +ATOM 135 COM C 45 417.8 429.4 261.1 0 0CL +ATOM 136 A1 C 45 417.6 427.2 260.8 0 0CL +ATOM 137 B1 C 45 417.3 427.5 261.4 0 0CL +ATOM 138 COM C 46 429.2 5.9 430.3 0 0CL +ATOM 139 A1 C 46 430.5 4.4 429.3 0 0CL +ATOM 140 B1 C 46 430.8 5.1 429.4 0 0CL +ATOM 141 COM C 47 476.0 417.8 471.6 0 0CL +ATOM 142 A1 C 47 477.6 418.5 472.9 0 0CL +ATOM 143 B1 C 47 477.2 417.9 473.1 0 0CL +ATOM 144 COM C 48 416.0 452.8 124.9 0 0CL +ATOM 145 A1 C 48 416.9 451.6 126.5 0 0CL +ATOM 146 B1 C 48 416.4 451.3 126.1 0 0CL +ATOM 147 COM C 49 484.4 230.8 350.7 0 0CL +ATOM 148 A1 C 49 485.7 232.7 350.5 0 0CL +ATOM 149 B1 C 49 485.0 232.8 350.6 0 0CL +ATOM 150 COM C 50 443.6 495.7 16.7 0 0CL +ATOM 151 A1 C 50 444.1 497.7 17.4 0 0CL +ATOM 152 B1 C 50 444.5 497.1 17.7 0 0CL +ATOM 153 COM C 51 26.9 234.4 300.8 0 0CL +ATOM 154 A1 C 51 25.2 233.4 301.8 0 0CL +ATOM 155 B1 C 51 25.1 233.8 301.3 0 0CL +ATOM 156 COM C 52 436.7 290.1 193.4 0 0CL +ATOM 157 A1 C 52 436.4 291.9 192.1 0 0CL +ATOM 158 B1 C 52 436.2 291.3 191.8 0 0CL +ATOM 159 COM C 53 226.7 483.7 338.0 0 0CL +ATOM 160 A1 C 53 225.4 482.9 336.4 0 0CL +ATOM 161 B1 C 53 226.1 483.0 336.3 0 0CL +ATOM 162 COM C 54 488.6 340.4 401.3 0 0CL +ATOM 163 A1 C 54 489.7 342.0 402.4 0 0CL +ATOM 164 B1 C 54 489.8 341.3 402.7 0 0CL +ATOM 165 COM C 55 466.6 422.6 318.5 0 0CL +ATOM 166 A1 C 55 467.6 424.6 318.9 0 0CL +ATOM 167 B1 C 55 467.6 424.1 319.4 0 0CL +ATOM 168 COM C 56 47.6 138.1 194.9 0 0CL +ATOM 169 A1 C 56 48.0 136.0 194.4 0 0CL +ATOM 170 B1 C 56 47.4 136.3 194.2 0 0CL +ATOM 171 COM C 57 320.3 222.3 284.3 0 0CL +ATOM 172 A1 C 57 321.5 224.0 285.1 0 0CL +ATOM 173 B1 C 57 321.8 223.3 285.1 0 0CL +ATOM 174 COM C 58 485.4 206.7 73.3 0 0CL +ATOM 175 A1 C 58 483.3 206.3 73.9 0 0CL +ATOM 176 B1 C 58 483.7 205.7 73.7 0 0CL +ATOM 177 COM C 59 399.1 87.3 27.9 0 0CL +ATOM 178 A1 C 59 400.5 89.0 27.7 0 0CL +ATOM 179 B1 C 59 400.7 88.4 28.1 0 0CL +ATOM 180 COM C 60 376.0 259.2 495.1 0 0CL +ATOM 181 A1 C 60 375.2 257.7 493.8 0 0CL +ATOM 182 B1 C 60 375.9 257.7 493.9 0 0CL +ATOM 183 COM C 61 150.1 205.4 257.1 0 0CL +ATOM 184 A1 C 61 150.3 204.7 259.2 0 0CL +ATOM 185 B1 C 61 150.9 204.9 258.8 0 0CL +ATOM 186 COM C 62 74.6 333.2 351.3 0 0CL +ATOM 187 A1 C 62 73.8 333.2 353.4 0 0CL +ATOM 188 B1 C 62 73.4 333.2 352.8 0 0CL +ATOM 189 COM C 63 308.0 231.8 244.7 0 0CL +ATOM 190 A1 C 63 307.1 230.1 245.7 0 0CL +ATOM 191 B1 C 63 307.3 230.0 245.0 0 0CL +ATOM 192 COM C 64 179.1 325.6 82.0 0 0CL +ATOM 193 A1 C 64 178.5 325.3 79.9 0 0CL +ATOM 194 B1 C 64 178.0 325.6 80.3 0 0CL +ATOM 195 COM C 65 251.2 172.3 71.5 0 0CL +ATOM 196 A1 C 65 251.2 174.5 71.4 0 0CL +ATOM 197 B1 C 65 250.9 174.2 70.8 0 0CL +ATOM 198 COM C 66 136.3 192.7 235.4 0 0CL +ATOM 199 A1 C 66 134.6 191.9 236.5 0 0CL +ATOM 200 B1 C 66 134.9 191.5 236.0 0 0CL +ATOM 201 COM C 67 313.3 353.4 24.5 0 0CL +ATOM 202 A1 C 67 312.5 351.4 24.4 0 0CL +ATOM 203 B1 C 67 312.0 351.9 24.3 0 0CL +ATOM 204 COM C 68 85.8 167.5 428.7 0 0CL +ATOM 205 A1 C 68 86.5 169.6 428.8 0 0CL +ATOM 206 B1 C 68 86.6 169.2 428.2 0 0CL +ATOM 207 COM C 69 207.0 369.6 237.9 0 0CL +ATOM 208 A1 C 69 207.1 368.8 240.0 0 0CL +ATOM 209 B1 C 69 207.5 368.4 239.5 0 0CL +ATOM 210 COM C 70 241.6 327.2 217.9 0 0CL +ATOM 211 A1 C 70 239.6 326.2 218.1 0 0CL +ATOM 212 B1 C 70 239.8 326.3 217.4 0 0CL +ATOM 213 COM C 71 446.9 444.0 167.5 0 0CL +ATOM 214 A1 C 71 445.9 442.2 166.9 0 0CL +ATOM 215 B1 C 71 446.5 442.4 166.5 0 0CL +ATOM 216 COM C 72 160.2 459.3 224.7 0 0CL +ATOM 217 A1 C 72 162.2 460.1 224.5 0 0CL +ATOM 218 B1 C 72 161.7 460.5 224.9 0 0CL +ATOM 219 COM C 73 449.7 204.0 5.9 0 0CL +ATOM 220 A1 C 73 451.9 203.7 5.7 0 0CL +ATOM 221 B1 C 73 451.6 204.2 5.3 0 0CL +ATOM 222 COM C 74 427.7 482.0 97.3 0 0CL +ATOM 223 A1 C 74 426.2 482.4 95.8 0 0CL +ATOM 224 B1 C 74 426.0 482.6 96.5 0 0CL +ATOM 225 COM C 75 356.9 325.2 213.0 0 0CL +ATOM 226 A1 C 75 357.4 324.9 215.2 0 0CL +ATOM 227 B1 C 75 357.3 325.5 214.9 0 0CL +ATOM 228 COM C 76 327.5 487.4 462.5 0 0CL +ATOM 229 A1 C 76 328.7 488.2 460.8 0 0CL +ATOM 230 B1 C 76 328.9 488.3 461.5 0 0CL +ATOM 231 COM C 77 134.0 379.2 14.9 0 0CL +ATOM 232 A1 C 77 134.4 377.1 15.5 0 0CL +ATOM 233 B1 C 77 133.9 377.2 14.9 0 0CL +ATOM 234 COM C 78 209.3 6.3 121.8 0 0CL +ATOM 235 A1 C 78 211.4 6.6 122.4 0 0CL +ATOM 236 B1 C 78 211.0 7.2 122.3 0 0CL +ATOM 237 COM C 79 494.7 392.3 460.2 0 0CL +ATOM 238 A1 C 79 496.5 391.9 461.5 0 0CL +ATOM 239 B1 C 79 496.0 391.3 461.4 0 0CL +ATOM 240 COM C 80 364.6 128.5 111.9 0 0CL +ATOM 241 A1 C 80 363.5 126.8 111.0 0 0CL +ATOM 242 B1 C 80 364.2 127.0 110.7 0 0CL +ATOM 243 COM C 81 65.4 38.6 83.1 0 0CL +ATOM 244 A1 C 81 65.5 37.8 81.1 0 0CL +ATOM 245 B1 C 81 66.1 37.8 81.5 0 0CL +ATOM 246 COM C 82 468.6 5.5 92.2 0 0CL +ATOM 247 A1 C 82 467.7 4.0 90.7 0 0CL +ATOM 248 B1 C 82 467.6 3.9 91.4 0 0CL +ATOM 249 COM C 83 214.4 309.9 303.9 0 0CL +ATOM 250 A1 C 83 213.5 309.6 301.9 0 0CL +ATOM 251 B1 C 83 214.1 309.2 302.0 0 0CL +ATOM 252 COM C 84 131.9 286.9 431.1 0 0CL +ATOM 253 A1 C 84 132.5 285.3 432.4 0 0CL +ATOM 254 B1 C 84 132.6 285.2 431.7 0 0CL +ATOM 255 COM C 85 188.9 16.6 228.8 0 0CL +ATOM 256 A1 C 85 187.7 17.3 227.0 0 0CL +ATOM 257 B1 C 85 188.3 17.6 227.2 0 0CL +ATOM 258 COM C 86 10.9 457.3 290.9 0 0CL +ATOM 259 A1 C 86 10.5 455.2 290.6 0 0CL +ATOM 260 B1 C 86 10.8 455.6 290.0 0 0CL +ATOM 261 COM C 87 314.1 311.2 443.9 0 0CL +ATOM 262 A1 C 87 315.5 310.7 445.5 0 0CL +ATOM 263 B1 C 87 314.8 310.4 445.6 0 0CL +ATOM 264 COM C 88 310.6 163.1 380.7 0 0CL +ATOM 265 A1 C 88 310.1 163.5 378.6 0 0CL +ATOM 266 B1 C 88 309.6 163.7 379.1 0 0CL +ATOM 267 COM C 89 184.7 95.2 103.8 0 0CL +ATOM 268 A1 C 89 185.5 93.9 102.3 0 0CL +ATOM 269 B1 C 89 186.0 94.2 102.7 0 0CL +ATOM 270 COM C 90 406.4 79.5 23.5 0 0CL +ATOM 271 A1 C 90 406.2 79.1 25.7 0 0CL +ATOM 272 B1 C 90 406.3 78.5 25.3 0 0CL +ATOM 273 COM C 91 221.0 390.6 496.1 0 0CL +ATOM 274 A1 C 91 220.0 390.9 498.1 0 0CL +ATOM 275 B1 C 91 220.6 391.3 498.0 0 0CL +ATOM 276 COM C 92 71.9 492.6 129.3 0 0CL +ATOM 277 A1 C 92 71.0 491.6 131.0 0 0CL +ATOM 278 B1 C 92 71.0 492.3 131.0 0 0CL +ATOM 279 COM C 93 328.8 123.9 7.8 0 0CL +ATOM 280 A1 C 93 327.3 123.1 6.5 0 0CL +ATOM 281 B1 C 93 327.7 123.7 6.2 0 0CL +ATOM 282 COM C 94 446.0 37.5 383.0 0 0CL +ATOM 283 A1 C 94 447.1 38.2 384.8 0 0CL +ATOM 284 B1 C 94 447.4 37.9 384.3 0 0CL +ATOM 285 COM C 95 155.8 360.0 304.0 0 0CL +ATOM 286 A1 C 95 153.8 359.0 303.5 0 0CL +ATOM 287 B1 C 95 154.4 359.0 303.0 0 0CL +ATOM 288 COM C 96 338.6 230.3 151.2 0 0CL +ATOM 289 A1 C 96 339.2 228.7 152.7 0 0CL +ATOM 290 B1 C 96 339.3 228.6 152.0 0 0CL +ATOM 291 COM C 97 197.9 385.0 270.6 0 0CL +ATOM 292 A1 C 97 197.5 385.0 268.4 0 0CL +ATOM 293 B1 C 97 197.6 384.3 268.7 0 0CL +ATOM 294 COM C 98 465.9 176.6 123.5 0 0CL +ATOM 295 A1 C 98 465.9 178.6 124.4 0 0CL +ATOM 296 B1 C 98 465.3 178.2 124.5 0 0CL +ATOM 297 COM C 99 452.9 330.0 404.9 0 0CL +ATOM 298 A1 C 99 454.9 329.3 404.4 0 0CL +ATOM 299 B1 C 99 454.5 328.9 404.8 0 0CL +ATOM 300 COM C 100 362.9 158.8 51.5 0 0CL +ATOM 301 A1 C 100 361.6 160.4 52.1 0 0CL +ATOM 302 B1 C 100 361.4 160.1 51.5 0 0CL +ATOM 303 COM C 101 72.9 3.9 423.4 0 0CL +ATOM 304 A1 C 101 71.5 4.4 425.1 0 0CL +ATOM 305 B1 C 101 71.9 4.9 424.8 0 0CL +ATOM 306 COM C 102 325.7 195.4 372.2 0 0CL +ATOM 307 A1 C 102 325.9 195.5 370.0 0 0CL +ATOM 308 B1 C 102 325.4 195.0 370.3 0 0CL +ATOM 309 COM C 103 387.0 115.9 333.8 0 0CL +ATOM 310 A1 C 103 387.7 117.6 332.6 0 0CL +ATOM 311 B1 C 103 388.2 117.3 333.0 0 0CL +ATOM 312 COM C 104 238.1 258.7 5.6 0 0CL +ATOM 313 A1 C 104 236.0 259.2 5.2 0 0CL +ATOM 314 B1 C 104 236.5 259.3 4.7 0 0CL +ATOM 315 COM C 105 107.4 256.5 260.5 0 0CL +ATOM 316 A1 C 105 109.1 255.5 261.5 0 0CL +ATOM 317 B1 C 105 109.3 255.8 260.8 0 0CL +ATOM 318 COM C 106 119.9 20.8 342.3 0 0CL +ATOM 319 A1 C 106 118.3 21.7 341.1 0 0CL +ATOM 320 B1 C 106 118.2 21.0 341.3 0 0CL +ATOM 321 COM C 107 12.5 74.3 101.7 0 0CL +ATOM 322 A1 C 107 13.0 75.5 103.4 0 0CL +ATOM 323 B1 C 107 12.8 75.9 102.8 0 0CL +ATOM 324 COM C 108 132.9 134.7 341.1 0 0CL +ATOM 325 A1 C 108 131.3 134.9 339.6 0 0CL +ATOM 326 B1 C 108 131.6 135.5 339.9 0 0CL +ATOM 327 COM C 109 464.9 483.8 96.3 0 0CL +ATOM 328 A1 C 109 463.9 484.2 94.4 0 0CL +ATOM 329 B1 C 109 463.9 483.5 94.6 0 0CL +ATOM 330 COM C 110 24.3 214.8 382.1 0 0CL +ATOM 331 A1 C 110 24.3 215.7 384.1 0 0CL +ATOM 332 B1 C 110 23.9 216.0 383.6 0 0CL +ATOM 333 COM C 111 135.1 478.0 94.3 0 0CL +ATOM 334 A1 C 111 134.1 480.0 94.3 0 0CL +ATOM 335 B1 C 111 134.9 480.0 94.2 0 0CL +ATOM 336 COM C 112 324.7 373.2 156.1 0 0CL +ATOM 337 A1 C 112 326.1 372.2 157.4 0 0CL +ATOM 338 B1 C 112 325.8 371.8 156.9 0 0CL +ATOM 339 COM C 113 60.3 338.0 283.8 0 0CL +ATOM 340 A1 C 113 61.1 339.8 282.7 0 0CL +ATOM 341 B1 C 113 60.3 339.8 282.9 0 0CL +ATOM 342 COM C 114 401.0 430.9 299.9 0 0CL +ATOM 343 A1 C 114 398.9 430.5 300.2 0 0CL +ATOM 344 B1 C 114 399.1 431.1 300.4 0 0CL +ATOM 345 COM C 115 92.0 6.8 388.4 0 0CL +ATOM 346 A1 C 115 93.2 6.5 386.6 0 0CL +ATOM 347 B1 C 115 93.0 5.9 387.0 0 0CL +ATOM 348 COM C 116 93.1 477.3 389.3 0 0CL +ATOM 349 A1 C 116 91.0 477.7 388.5 0 0CL +ATOM 350 B1 C 116 91.5 478.2 388.5 0 0CL +ATOM 351 COM C 117 19.5 445.4 334.9 0 0CL +ATOM 352 A1 C 117 21.2 445.1 333.4 0 0CL +ATOM 353 B1 C 117 20.5 445.3 333.1 0 0CL +ATOM 354 COM C 118 405.8 61.7 98.8 0 0CL +ATOM 355 A1 C 118 406.9 63.6 99.1 0 0CL +ATOM 356 B1 C 118 406.8 63.4 98.4 0 0CL +ATOM 357 COM C 119 61.1 156.3 361.7 0 0CL +ATOM 358 A1 C 119 59.4 156.3 360.2 0 0CL +ATOM 359 B1 C 119 59.8 157.0 360.4 0 0CL +ATOM 360 COM C 120 496.5 313.5 32.1 0 0CL +ATOM 361 A1 C 120 497.3 314.2 30.1 0 0CL +ATOM 362 B1 C 120 496.7 314.6 30.4 0 0CL +ATOM 363 COM C 121 448.6 25.7 23.8 0 0CL +ATOM 364 A1 C 121 446.7 26.3 22.8 0 0CL +ATOM 365 B1 C 121 446.7 26.2 23.5 0 0CL +ATOM 366 COM C 122 149.1 450.7 265.1 0 0CL +ATOM 367 A1 C 122 149.5 449.7 267.0 0 0CL +ATOM 368 B1 C 122 149.3 450.4 267.1 0 0CL +ATOM 369 COM C 123 297.2 478.6 209.4 0 0CL +ATOM 370 A1 C 123 295.4 478.7 208.1 0 0CL +ATOM 371 B1 C 123 295.3 478.9 208.8 0 0CL +ATOM 372 COM C 124 485.3 111.0 302.0 0 0CL +ATOM 373 A1 C 124 485.1 113.1 302.6 0 0CL +ATOM 374 B1 C 124 485.5 112.7 303.1 0 0CL +ATOM 375 COM C 125 199.2 369.8 146.7 0 0CL +ATOM 376 A1 C 125 200.7 369.6 148.4 0 0CL +ATOM 377 B1 C 125 200.7 369.1 147.8 0 0CL +ATOM 378 COM C 126 284.5 363.5 295.5 0 0CL +ATOM 379 A1 C 126 285.4 361.5 296.0 0 0CL +ATOM 380 B1 C 126 284.7 361.7 296.3 0 0CL +ATOM 381 COM C 127 278.5 173.1 486.3 0 0CL +ATOM 382 A1 C 127 278.8 174.9 487.5 0 0CL +ATOM 383 B1 C 127 278.6 175.0 486.9 0 0CL +ATOM 384 COM C 128 242.5 180.0 475.5 0 0CL +ATOM 385 A1 C 128 244.6 179.9 475.1 0 0CL +ATOM 386 B1 C 128 244.2 179.4 474.9 0 0CL +ATOM 387 COM C 129 34.3 454.4 350.8 0 0CL +ATOM 388 A1 C 129 36.1 453.4 350.1 0 0CL +ATOM 389 B1 C 129 35.7 453.8 349.6 0 0CL +ATOM 390 COM C 130 296.4 410.0 29.8 0 0CL +ATOM 391 A1 C 130 298.2 410.0 28.5 0 0CL +ATOM 392 B1 C 130 298.3 410.0 29.2 0 0CL +ATOM 393 COM C 131 391.4 185.7 262.7 0 0CL +ATOM 394 A1 C 131 389.6 187.0 262.8 0 0CL +ATOM 395 B1 C 131 389.8 186.7 262.1 0 0CL +ATOM 396 COM C 132 464.4 236.1 267.9 0 0CL +ATOM 397 A1 C 132 464.6 236.3 270.1 0 0CL +ATOM 398 B1 C 132 463.9 236.4 269.8 0 0CL +ATOM 399 COM C 133 442.3 180.1 157.1 0 0CL +ATOM 400 A1 C 133 440.6 179.7 155.7 0 0CL +ATOM 401 B1 C 133 441.3 179.8 155.4 0 0CL +ATOM 402 COM C 134 222.8 484.3 91.9 0 0CL +ATOM 403 A1 C 134 222.5 486.3 91.0 0 0CL +ATOM 404 B1 C 134 223.1 485.9 90.7 0 0CL +ATOM 405 COM C 135 493.2 424.4 94.7 0 0CL +ATOM 406 A1 C 135 491.1 424.2 95.4 0 0CL +ATOM 407 B1 C 135 491.6 424.5 95.9 0 0CL +ATOM 408 COM C 136 263.1 397.8 273.0 0 0CL +ATOM 409 A1 C 136 261.1 398.1 273.8 0 0CL +ATOM 410 B1 C 136 261.6 398.4 274.2 0 0CL +ATOM 411 COM C 137 66.8 293.7 484.4 0 0CL +ATOM 412 A1 C 137 65.9 293.8 482.3 0 0CL +ATOM 413 B1 C 137 65.5 294.0 482.9 0 0CL +ATOM 414 COM C 138 418.3 441.2 482.2 0 0CL +ATOM 415 A1 C 138 419.3 440.7 484.1 0 0CL +ATOM 416 B1 C 138 418.5 440.8 484.1 0 0CL +ATOM 417 COM C 139 356.0 486.3 98.9 0 0CL +ATOM 418 A1 C 139 357.9 486.6 100.1 0 0CL +ATOM 419 B1 C 139 357.3 486.4 100.4 0 0CL +ATOM 420 COM C 140 272.6 296.6 409.4 0 0CL +ATOM 421 A1 C 140 274.6 295.9 408.8 0 0CL +ATOM 422 B1 C 140 274.5 296.4 409.3 0 0CL +ATOM 423 COM C 141 101.0 234.4 187.8 0 0CL +ATOM 424 A1 C 141 99.5 236.1 188.0 0 0CL +ATOM 425 B1 C 141 100.0 236.1 187.4 0 0CL +ATOM 426 COM C 142 337.7 400.5 422.6 0 0CL +ATOM 427 A1 C 142 338.4 402.4 421.7 0 0CL +ATOM 428 B1 C 142 338.9 402.0 422.1 0 0CL +ATOM 429 COM C 143 284.9 155.5 121.0 0 0CL +ATOM 430 A1 C 143 285.3 154.1 122.7 0 0CL +ATOM 431 B1 C 143 285.7 154.1 122.1 0 0CL +ATOM 432 COM C 144 367.1 102.1 335.3 0 0CL +ATOM 433 A1 C 144 365.9 101.1 336.9 0 0CL +ATOM 434 B1 C 144 365.8 100.9 336.2 0 0CL +ATOM 435 COM C 145 397.3 184.9 432.0 0 0CL +ATOM 436 A1 C 145 395.5 184.5 430.8 0 0CL +ATOM 437 B1 C 145 395.5 184.2 431.5 0 0CL +ATOM 438 COM C 146 108.1 396.6 372.4 0 0CL +ATOM 439 A1 C 146 107.1 398.4 371.6 0 0CL +ATOM 440 B1 C 146 107.8 398.3 371.5 0 0CL +ATOM 441 COM C 147 276.9 382.1 198.3 0 0CL +ATOM 442 A1 C 147 276.7 380.0 197.7 0 0CL +ATOM 443 B1 C 147 277.3 380.3 197.5 0 0CL +ATOM 444 COM C 148 113.3 495.6 285.2 0 0CL +ATOM 445 A1 C 148 115.1 495.2 286.4 0 0CL +ATOM 446 B1 C 148 114.7 495.7 286.6 0 0CL +ATOM 447 COM C 149 280.8 300.3 238.4 0 0CL +ATOM 448 A1 C 149 279.3 300.7 236.9 0 0CL +ATOM 449 B1 C 149 279.7 300.1 236.8 0 0CL +ATOM 450 COM A 150 77.7 360.0 252.8 0 0CL +ATOM 451 C1 A 150 77.3 359.9 251.5 0 0CL +ATOM 452 B1 A 150 77.0 359.3 253.0 0 0CL +ATOM 453 COM A 151 219.6 199.6 59.9 0 0CL +ATOM 454 C1 A 151 219.8 198.4 59.5 0 0CL +ATOM 455 B1 A 151 220.2 199.4 60.7 0 0CL +ATOM 456 COM A 152 62.1 341.1 283.0 0 0CL +ATOM 457 C1 A 152 61.9 339.8 283.1 0 0CL +ATOM 458 B1 A 152 61.1 341.2 283.2 0 0CL +ATOM 459 COM A 153 212.4 6.2 123.7 0 0CL +ATOM 460 C1 A 153 211.5 5.8 122.9 0 0CL +ATOM 461 B1 A 153 212.0 7.1 123.7 0 0CL +ATOM 462 COM A 154 285.3 429.7 360.3 0 0CL +ATOM 463 C1 A 154 286.1 428.7 360.3 0 0CL +ATOM 464 B1 A 154 286.1 430.3 360.1 0 0CL +ATOM 465 COM A 155 276.6 378.4 198.5 0 0CL +ATOM 466 C1 A 155 276.2 379.7 198.5 0 0CL +ATOM 467 B1 A 155 277.5 378.8 198.1 0 0CL +ATOM 468 COM A 156 435.5 293.4 192.2 0 0CL +ATOM 469 C1 A 156 436.2 292.5 192.8 0 0CL +ATOM 470 B1 A 156 435.1 292.6 191.6 0 0CL +ATOM 471 COM A 157 73.8 332.1 354.8 0 0CL +ATOM 472 C1 A 157 74.5 332.7 353.8 0 0CL +ATOM 473 B1 A 157 73.0 332.1 354.1 0 0CL +ATOM 474 COM A 158 117.2 383.3 10.4 0 0CL +ATOM 475 C1 A 158 117.2 382.1 9.7 0 0CL +ATOM 476 B1 A 158 117.7 382.7 11.1 0 0CL +ATOM 477 COM A 159 439.5 178.4 155.4 0 0CL +ATOM 478 C1 A 159 440.1 179.2 156.3 0 0CL +ATOM 479 B1 A 159 440.4 178.5 154.8 0 0CL +ATOM 480 COM A 160 388.0 187.0 263.5 0 0CL +ATOM 481 C1 A 160 389.3 186.8 263.6 0 0CL +ATOM 482 B1 A 160 388.2 186.7 262.5 0 0CL +ATOM 483 COM A 161 4.7 275.3 102.4 0 0CL +ATOM 484 C1 A 161 5.7 275.1 103.2 0 0CL +ATOM 485 B1 A 161 4.2 274.7 103.0 0 0CL +ATOM 486 COM A 162 49.2 135.1 193.5 0 0CL +ATOM 487 C1 A 162 49.0 136.1 194.4 0 0CL +ATOM 488 B1 A 162 48.3 135.4 193.1 0 0CL +ATOM 489 COM A 163 306.1 413.1 387.1 0 0CL +ATOM 490 C1 A 163 306.4 413.9 386.1 0 0CL +ATOM 491 B1 A 163 306.9 412.6 386.8 0 0CL +ATOM 492 COM A 164 64.9 36.4 80.3 0 0CL +ATOM 493 C1 A 164 64.7 37.4 81.1 0 0CL +ATOM 494 B1 A 164 65.8 36.4 80.7 0 0CL +ATOM 495 COM A 165 393.8 236.7 308.3 0 0CL +ATOM 496 C1 A 165 392.6 236.3 308.7 0 0CL +ATOM 497 B1 A 165 393.6 237.5 308.9 0 0CL +ATOM 498 COM A 166 105.3 202.4 259.0 0 0CL +ATOM 499 C1 A 166 105.9 202.8 258.0 0 0CL +ATOM 500 B1 A 166 105.3 203.4 259.3 0 0CL +ATOM 501 COM A 167 259.6 398.9 273.3 0 0CL +ATOM 502 C1 A 167 260.6 398.1 273.0 0 0CL +ATOM 503 B1 A 167 260.3 399.3 274.0 0 0CL +ATOM 504 COM A 168 465.1 235.3 271.4 0 0CL +ATOM 505 C1 A 168 465.3 235.7 270.2 0 0CL +ATOM 506 B1 A 168 464.1 235.4 271.2 0 0CL +ATOM 507 COM A 169 352.5 499.0 181.1 0 0CL +ATOM 508 C1 A 169 353.0 497.9 181.5 0 0CL +ATOM 509 B1 A 169 352.3 498.5 180.2 0 0CL +ATOM 510 COM A 170 181.5 299.0 345.1 0 0CL +ATOM 511 C1 A 170 181.5 299.8 346.1 0 0CL +ATOM 512 B1 A 170 181.0 298.3 345.7 0 0CL +ATOM 513 COM A 171 20.2 495.5 60.6 0 0CL +ATOM 514 C1 A 171 20.2 494.4 61.4 0 0CL +ATOM 515 B1 A 171 20.6 494.9 59.9 0 0CL +ATOM 516 COM A 172 421.1 109.5 198.7 0 0CL +ATOM 517 C1 A 172 421.4 109.8 197.5 0 0CL +ATOM 518 B1 A 172 420.3 110.2 198.5 0 0CL +ATOM 519 COM A 173 359.5 486.0 100.2 0 0CL +ATOM 520 C1 A 173 358.5 486.4 99.4 0 0CL +ATOM 521 B1 A 173 358.8 485.7 100.8 0 0CL +ATOM 522 COM A 174 149.8 205.2 260.8 0 0CL +ATOM 523 C1 A 174 149.5 205.0 259.5 0 0CL +ATOM 524 B1 A 174 150.8 205.4 260.4 0 0CL +ATOM 525 COM A 175 59.1 155.7 358.6 0 0CL +ATOM 526 C1 A 175 59.6 155.5 359.8 0 0CL +ATOM 527 B1 A 175 59.4 156.7 358.8 0 0CL +ATOM 528 COM A 176 285.7 360.0 295.2 0 0CL +ATOM 529 C1 A 176 285.7 361.3 295.2 0 0CL +ATOM 530 B1 A 176 284.9 360.1 295.7 0 0CL +ATOM 531 COM A 177 220.6 26.2 272.2 0 0CL +ATOM 532 C1 A 177 221.7 26.3 272.9 0 0CL +ATOM 533 B1 A 177 221.0 27.0 271.7 0 0CL +ATOM 534 COM A 178 445.6 440.6 167.6 0 0CL +ATOM 535 C1 A 178 445.6 441.9 167.7 0 0CL +ATOM 536 B1 A 178 446.4 440.7 166.9 0 0CL +ATOM 537 COM A 179 387.9 117.9 330.9 0 0CL +ATOM 538 C1 A 179 387.2 117.4 331.8 0 0CL +ATOM 539 B1 A 179 388.7 117.6 331.4 0 0CL +ATOM 540 COM A 180 466.5 4.0 89.5 0 0CL +ATOM 541 C1 A 180 467.5 4.6 90.0 0 0CL +ATOM 542 B1 A 180 466.3 3.7 90.4 0 0CL +ATOM 543 COM A 181 406.6 65.2 99.8 0 0CL +ATOM 544 C1 A 181 406.5 63.9 99.9 0 0CL +ATOM 545 B1 A 181 406.5 65.0 98.7 0 0CL +ATOM 546 COM A 182 455.8 328.9 402.9 0 0CL +ATOM 547 C1 A 182 454.9 329.7 403.5 0 0CL +ATOM 548 B1 A 182 455.4 328.1 403.5 0 0CL +ATOM 549 COM A 183 146.1 434.4 54.2 0 0CL +ATOM 550 C1 A 183 145.4 435.1 55.1 0 0CL +ATOM 551 B1 A 183 145.7 433.6 54.7 0 0CL +ATOM 552 COM A 184 294.8 479.6 206.7 0 0CL +ATOM 553 C1 A 184 295.8 479.0 207.3 0 0CL +ATOM 554 B1 A 184 294.5 479.9 207.7 0 0CL +ATOM 555 COM A 185 498.2 391.8 461.3 0 0CL +ATOM 556 C1 A 185 497.1 392.4 461.1 0 0CL +ATOM 557 B1 A 185 497.6 390.9 461.2 0 0CL +ATOM 558 COM A 186 348.4 363.2 12.5 0 0CL +ATOM 559 C1 A 186 347.8 363.2 13.7 0 0CL +ATOM 560 B1 A 186 349.1 363.8 12.9 0 0CL +ATOM 561 COM A 187 482.3 206.5 75.3 0 0CL +ATOM 562 C1 A 187 483.2 207.0 74.5 0 0CL +ATOM 563 B1 A 187 482.7 205.6 75.1 0 0CL +ATOM 564 COM A 188 224.6 481.4 336.1 0 0CL +ATOM 565 C1 A 188 224.9 482.3 336.9 0 0CL +ATOM 566 B1 A 188 225.6 481.5 335.7 0 0CL +ATOM 567 COM A 189 289.9 53.1 65.0 0 0CL +ATOM 568 C1 A 189 289.4 53.4 66.2 0 0CL +ATOM 569 B1 A 189 289.6 52.2 65.3 0 0CL +ATOM 570 COM A 190 209.2 403.8 455.6 0 0CL +ATOM 571 C1 A 190 208.6 403.3 456.6 0 0CL +ATOM 572 B1 A 190 208.6 403.2 455.0 0 0CL +ATOM 573 COM A 191 69.7 4.4 425.3 0 0CL +ATOM 574 C1 A 191 70.8 3.8 424.8 0 0CL +ATOM 575 B1 A 191 70.2 5.3 425.1 0 0CL +ATOM 576 COM A 192 401.4 89.7 26.4 0 0CL +ATOM 577 C1 A 192 400.3 89.2 26.8 0 0CL +ATOM 578 B1 A 192 401.8 89.0 27.0 0 0CL +ATOM 579 COM A 193 338.8 403.0 420.1 0 0CL +ATOM 580 C1 A 193 338.0 402.3 420.9 0 0CL +ATOM 581 B1 A 193 339.5 402.6 420.7 0 0CL +ATOM 582 COM A 194 90.0 477.1 387.2 0 0CL +ATOM 583 C1 A 194 90.9 476.8 388.1 0 0CL +ATOM 584 B1 A 194 90.5 478.0 387.1 0 0CL +ATOM 585 COM A 195 420.3 332.1 469.6 0 0CL +ATOM 586 C1 A 195 419.3 331.4 469.1 0 0CL +ATOM 587 B1 A 195 420.6 332.1 468.6 0 0CL +ATOM 588 COM A 196 479.4 418.5 472.8 0 0CL +ATOM 589 C1 A 196 478.2 418.7 472.2 0 0CL +ATOM 590 B1 A 196 478.9 417.7 473.2 0 0CL +ATOM 591 COM A 197 298.7 99.1 405.6 0 0CL +ATOM 592 C1 A 197 298.5 98.6 404.4 0 0CL +ATOM 593 B1 A 197 299.7 98.8 405.4 0 0CL +ATOM 594 COM A 198 356.8 125.0 227.8 0 0CL +ATOM 595 C1 A 198 357.1 126.2 228.1 0 0CL +ATOM 596 B1 A 198 357.8 124.8 227.8 0 0CL +ATOM 597 COM A 199 466.8 179.5 125.6 0 0CL +ATOM 598 C1 A 199 466.8 178.7 124.6 0 0CL +ATOM 599 B1 A 199 465.9 179.0 125.9 0 0CL +ATOM 600 COM A 200 250.4 175.9 72.2 0 0CL +ATOM 601 C1 A 200 251.0 174.7 72.3 0 0CL +ATOM 602 B1 A 200 250.0 175.5 71.3 0 0CL +ATOM 603 COM A 201 245.9 180.8 474.2 0 0CL +ATOM 604 C1 A 201 244.8 180.8 475.0 0 0CL +ATOM 605 B1 A 201 245.4 179.9 473.8 0 0CL +ATOM 606 COM A 202 202.0 370.4 149.1 0 0CL +ATOM 607 C1 A 202 200.8 370.5 148.6 0 0CL +ATOM 608 B1 A 202 202.2 369.7 148.4 0 0CL +ATOM 609 COM A 203 274.2 167.9 447.9 0 0CL +ATOM 610 C1 A 203 274.8 167.3 448.9 0 0CL +ATOM 611 B1 A 203 273.3 167.4 448.3 0 0CL +ATOM 612 COM A 204 285.6 154.2 124.4 0 0CL +ATOM 613 C1 A 204 285.0 154.7 123.4 0 0CL +ATOM 614 B1 A 204 286.4 154.0 123.7 0 0CL +ATOM 615 COM A 205 44.1 56.4 57.2 0 0CL +ATOM 616 C1 A 205 44.3 55.1 57.4 0 0CL +ATOM 617 B1 A 205 43.5 56.1 56.4 0 0CL +ATOM 618 COM A 206 16.9 55.3 126.7 0 0CL +ATOM 619 C1 A 206 17.7 55.3 125.6 0 0CL +ATOM 620 B1 A 206 17.7 55.4 127.2 0 0CL +ATOM 621 COM A 207 133.1 480.9 93.2 0 0CL +ATOM 622 C1 A 207 133.4 479.8 93.8 0 0CL +ATOM 623 B1 A 207 134.1 481.0 93.1 0 0CL +ATOM 624 COM A 208 447.5 39.7 385.6 0 0CL +ATOM 625 C1 A 208 446.6 39.0 385.0 0 0CL +ATOM 626 B1 A 208 448.1 39.2 385.0 0 0CL +ATOM 627 COM A 209 298.6 19.5 141.3 0 0CL +ATOM 628 C1 A 209 298.4 18.3 141.6 0 0CL +ATOM 629 B1 A 209 297.6 19.5 141.0 0 0CL +ATOM 630 COM A 210 498.4 192.0 83.4 0 0CL +ATOM 631 C1 A 210 498.5 190.8 83.7 0 0CL +ATOM 632 B1 A 210 497.6 192.1 84.1 0 0CL +ATOM 633 COM A 211 469.0 425.5 318.3 0 0CL +ATOM 634 C1 A 211 467.9 424.7 318.0 0 0CL +ATOM 635 B1 A 211 469.1 424.9 319.1 0 0CL +ATOM 636 COM A 212 374.2 256.2 493.9 0 0CL +ATOM 637 C1 A 212 374.4 257.5 494.2 0 0CL +ATOM 638 B1 A 212 375.2 256.1 493.9 0 0CL +ATOM 639 COM A 213 312.5 350.0 23.4 0 0CL +ATOM 640 C1 A 213 313.2 350.9 24.0 0 0CL +ATOM 641 B1 A 213 311.8 350.6 23.3 0 0CL +ATOM 642 COM A 214 340.3 228.6 154.0 0 0CL +ATOM 643 C1 A 214 339.4 229.3 153.4 0 0CL +ATOM 644 B1 A 214 340.6 228.3 153.1 0 0CL +ATOM 645 COM A 215 303.4 262.2 335.9 0 0CL +ATOM 646 C1 A 215 303.3 260.9 335.7 0 0CL +ATOM 647 B1 A 215 303.0 262.0 336.9 0 0CL +ATOM 648 COM A 216 489.5 424.9 95.0 0 0CL +ATOM 649 C1 A 216 490.6 424.4 94.6 0 0CL +ATOM 650 B1 A 216 490.1 425.3 95.8 0 0CL +ATOM 651 COM A 217 210.5 399.3 316.1 0 0CL +ATOM 652 C1 A 217 209.9 400.4 316.1 0 0CL +ATOM 653 B1 A 217 210.7 399.4 317.1 0 0CL +ATOM 654 COM A 218 426.2 344.7 284.2 0 0CL +ATOM 655 C1 A 218 426.3 346.0 284.1 0 0CL +ATOM 656 B1 A 218 426.6 344.9 285.1 0 0CL +ATOM 657 COM A 219 218.5 391.7 498.7 0 0CL +ATOM 658 C1 A 219 219.1 390.9 497.8 0 0CL +ATOM 659 B1 A 219 219.4 392.2 498.6 0 0CL +ATOM 660 COM A 220 425.5 237.2 344.4 0 0CL +ATOM 661 C1 A 220 425.6 237.4 343.1 0 0CL +ATOM 662 B1 A 220 424.6 236.7 344.2 0 0CL +ATOM 663 COM A 221 173.5 365.4 65.0 0 0CL +ATOM 664 C1 A 221 172.7 365.8 66.0 0 0CL +ATOM 665 B1 A 221 174.0 366.3 65.2 0 0CL +ATOM 666 COM A 222 366.2 40.7 209.3 0 0CL +ATOM 667 C1 A 222 365.9 40.1 208.2 0 0CL +ATOM 668 B1 A 222 365.2 40.5 209.6 0 0CL +ATOM 669 COM A 223 137.8 323.4 234.4 0 0CL +ATOM 670 C1 A 223 136.7 323.5 233.8 0 0CL +ATOM 671 B1 A 223 137.7 324.4 234.5 0 0CL +ATOM 672 COM A 224 142.6 257.5 424.7 0 0CL +ATOM 673 C1 A 224 143.7 256.9 424.3 0 0CL +ATOM 674 B1 A 224 143.1 258.3 424.8 0 0CL +ATOM 675 COM A 225 148.8 448.4 268.0 0 0CL +ATOM 676 C1 A 225 149.1 448.9 266.8 0 0CL +ATOM 677 B1 A 225 148.6 449.4 268.2 0 0CL +ATOM 678 COM A 226 66.1 294.8 480.9 0 0CL +ATOM 679 C1 A 226 66.7 294.2 481.9 0 0CL +ATOM 680 B1 A 226 65.4 295.0 481.6 0 0CL +ATOM 681 COM A 227 260.3 496.4 51.4 0 0CL +ATOM 682 C1 A 227 260.4 496.5 50.1 0 0CL +ATOM 683 B1 A 227 260.3 495.4 51.2 0 0CL +ATOM 684 COM A 228 498.7 315.0 29.6 0 0CL +ATOM 685 C1 A 228 498.2 314.1 30.3 0 0CL +ATOM 686 B1 A 228 497.9 315.6 29.7 0 0CL +ATOM 687 COM A 229 278.1 175.6 489.0 0 0CL +ATOM 688 C1 A 229 278.5 174.5 488.3 0 0CL +ATOM 689 B1 A 229 277.8 175.9 488.0 0 0CL +ATOM 690 COM A 230 366.3 99.9 338.1 0 0CL +ATOM 691 C1 A 230 366.6 101.0 337.5 0 0CL +ATOM 692 B1 A 230 365.9 99.6 337.2 0 0CL +ATOM 693 COM A 231 426.0 483.5 94.5 0 0CL +ATOM 694 C1 A 231 426.7 482.7 95.1 0 0CL +ATOM 695 B1 A 231 425.6 483.8 95.4 0 0CL +ATOM 696 COM A 232 239.1 324.6 218.6 0 0CL +ATOM 697 C1 A 232 239.9 325.6 218.8 0 0CL +ATOM 698 B1 A 232 239.2 324.8 217.6 0 0CL +ATOM 699 COM A 233 212.0 308.8 301.2 0 0CL +ATOM 700 C1 A 233 212.6 309.6 302.1 0 0CL +ATOM 701 B1 A 233 212.9 308.3 301.2 0 0CL +ATOM 702 COM A 234 303.4 199.4 55.8 0 0CL +ATOM 703 C1 A 234 304.2 198.6 55.2 0 0CL +ATOM 704 B1 A 234 302.7 198.7 55.8 0 0CL +ATOM 705 COM A 235 462.5 103.6 259.3 0 0CL +ATOM 706 C1 A 235 462.8 102.3 259.0 0 0CL +ATOM 707 B1 A 235 462.5 103.7 258.2 0 0CL +ATOM 708 COM A 236 60.7 83.7 266.8 0 0CL +ATOM 709 C1 A 236 61.1 82.5 266.3 0 0CL +ATOM 710 B1 A 236 61.2 83.4 267.6 0 0CL +ATOM 711 COM A 237 394.1 185.3 430.2 0 0CL +ATOM 712 C1 A 237 395.4 185.3 430.4 0 0CL +ATOM 713 B1 A 237 394.0 184.8 431.1 0 0CL +ATOM 714 COM A 238 22.7 445.8 333.1 0 0CL +ATOM 715 C1 A 238 21.9 445.3 334.0 0 0CL +ATOM 716 B1 A 238 21.9 446.1 332.6 0 0CL +ATOM 717 COM A 239 407.2 79.4 27.1 0 0CL +ATOM 718 C1 A 239 406.7 79.8 26.0 0 0CL +ATOM 719 B1 A 239 407.3 78.5 26.7 0 0CL +ATOM 720 COM A 240 251.1 323.5 48.3 0 0CL +ATOM 721 C1 A 240 251.6 324.3 49.2 0 0CL +ATOM 722 B1 A 240 250.7 324.3 47.9 0 0CL +ATOM 723 COM A 241 267.8 170.9 325.8 0 0CL +ATOM 724 C1 A 241 267.5 172.1 325.3 0 0CL +ATOM 725 B1 A 241 267.3 171.3 326.6 0 0CL +ATOM 726 COM A 242 367.9 330.7 23.0 0 0CL +ATOM 727 C1 A 242 369.0 329.9 22.9 0 0CL +ATOM 728 B1 A 242 368.6 331.4 22.5 0 0CL +ATOM 729 COM A 243 275.6 294.5 408.9 0 0CL +ATOM 730 C1 A 243 274.4 295.0 408.6 0 0CL +ATOM 731 B1 A 243 275.6 295.2 409.6 0 0CL +ATOM 732 COM A 244 416.7 426.2 259.7 0 0CL +ATOM 733 C1 A 244 417.4 427.3 259.9 0 0CL +ATOM 734 B1 A 244 416.3 426.4 260.7 0 0CL +ATOM 735 COM A 245 345.9 6.3 159.5 0 0CL +ATOM 736 C1 A 245 344.9 6.5 158.7 0 0CL +ATOM 737 B1 A 245 346.4 6.3 158.7 0 0CL +ATOM 738 COM A 246 327.1 121.7 5.5 0 0CL +ATOM 739 C1 A 246 327.5 122.2 6.6 0 0CL +ATOM 740 B1 A 246 327.5 122.5 5.1 0 0CL +ATOM 741 COM A 247 264.0 375.8 326.1 0 0CL +ATOM 742 C1 A 247 263.5 376.8 326.8 0 0CL +ATOM 743 B1 A 247 263.0 375.7 325.8 0 0CL +ATOM 744 COM A 248 446.1 27.6 21.9 0 0CL +ATOM 745 C1 A 248 447.0 26.8 22.1 0 0CL +ATOM 746 B1 A 248 445.9 27.5 22.9 0 0CL +ATOM 747 COM A 249 92.9 6.6 384.9 0 0CL +ATOM 748 C1 A 249 92.7 7.1 386.1 0 0CL +ATOM 749 B1 A 249 92.8 5.7 385.4 0 0CL +ATOM 750 COM A 250 196.2 385.5 267.3 0 0CL +ATOM 751 C1 A 250 197.0 385.7 268.3 0 0CL +ATOM 752 B1 A 250 196.3 384.5 267.6 0 0CL +ATOM 753 COM A 251 360.4 160.8 53.4 0 0CL +ATOM 754 C1 A 251 361.6 160.3 53.0 0 0CL +ATOM 755 B1 A 251 360.1 160.4 52.4 0 0CL +ATOM 756 COM A 252 138.7 200.7 181.5 0 0CL +ATOM 757 C1 A 252 138.5 199.7 182.4 0 0CL +ATOM 758 B1 A 252 139.6 200.8 181.9 0 0CL +ATOM 759 COM A 253 131.8 456.2 277.4 0 0CL +ATOM 760 C1 A 253 132.2 455.1 277.9 0 0CL +ATOM 761 B1 A 253 132.8 456.5 277.5 0 0CL +ATOM 762 COM A 254 329.6 487.7 459.5 0 0CL +ATOM 763 C1 A 254 328.5 487.6 460.2 0 0CL +ATOM 764 B1 A 254 330.1 487.9 460.4 0 0CL +ATOM 765 COM A 255 69.6 490.6 131.3 0 0CL +ATOM 766 C1 A 255 70.6 490.9 130.6 0 0CL +ATOM 767 B1 A 255 69.5 491.6 131.5 0 0CL +ATOM 768 COM A 256 356.7 324.1 216.6 0 0CL +ATOM 769 C1 A 256 357.0 324.1 215.3 0 0CL +ATOM 770 B1 A 256 356.6 325.1 216.4 0 0CL +ATOM 771 COM A 257 34.4 474.3 260.2 0 0CL +ATOM 772 C1 A 257 33.3 473.6 260.4 0 0CL +ATOM 773 B1 A 257 34.6 473.5 259.4 0 0CL +ATOM 774 COM A 258 187.2 16.7 225.5 0 0CL +ATOM 775 C1 A 258 187.4 16.4 226.7 0 0CL +ATOM 776 B1 A 258 188.0 17.3 225.6 0 0CL +ATOM 777 COM A 259 176.1 63.3 293.6 0 0CL +ATOM 778 C1 A 259 176.9 64.2 294.3 0 0CL +ATOM 779 B1 A 259 176.0 62.9 294.6 0 0CL +ATOM 780 COM A 260 203.2 222.4 70.5 0 0CL +ATOM 781 C1 A 260 203.5 223.7 70.1 0 0CL +ATOM 782 B1 A 260 204.2 222.2 70.3 0 0CL +ATOM 783 COM A 261 146.5 424.2 4.5 0 0CL +ATOM 784 C1 A 261 146.3 423.7 5.7 0 0CL +ATOM 785 B1 A 261 145.6 424.6 4.6 0 0CL +ATOM 786 COM A 262 317.0 309.9 445.7 0 0CL +ATOM 787 C1 A 262 316.3 310.7 445.0 0 0CL +ATOM 788 B1 A 262 316.1 309.4 445.9 0 0CL +ATOM 789 COM A 263 150.4 0.2 168.6 0 0CL +ATOM 790 C1 A 263 150.5 0.3 169.9 0 0CL +ATOM 791 B1 A 263 149.4 0.6 168.7 0 0CL +ATOM 792 COM A 264 207.8 369.3 241.5 0 0CL +ATOM 793 C1 A 264 207.1 369.6 240.4 0 0CL +ATOM 794 B1 A 264 208.3 368.7 240.9 0 0CL +ATOM 795 COM A 265 43.1 350.0 295.8 0 0CL +ATOM 796 C1 A 265 43.9 350.7 296.5 0 0CL +ATOM 797 B1 A 265 43.5 350.3 295.0 0 0CL +ATOM 798 COM A 266 322.3 225.4 284.5 0 0CL +ATOM 799 C1 A 266 321.2 224.6 284.5 0 0CL +ATOM 800 B1 A 266 322.8 224.6 284.6 0 0CL +ATOM 801 COM A 267 185.5 92.2 101.8 0 0CL +ATOM 802 C1 A 267 184.9 93.2 102.2 0 0CL +ATOM 803 B1 A 267 186.3 92.6 102.4 0 0CL +ATOM 804 COM A 268 226.8 157.6 108.9 0 0CL +ATOM 805 C1 A 268 227.9 157.2 109.5 0 0CL +ATOM 806 B1 A 268 226.4 156.6 109.1 0 0CL +ATOM 807 COM A 269 294.9 318.2 388.1 0 0CL +ATOM 808 C1 A 269 295.2 319.5 388.0 0 0CL +ATOM 809 B1 A 269 295.0 318.3 387.0 0 0CL +ATOM 810 COM A 270 24.6 231.8 302.1 0 0CL +ATOM 811 C1 A 270 25.7 232.6 302.0 0 0CL +ATOM 812 B1 A 270 24.2 232.4 301.3 0 0CL +ATOM 813 COM A 271 491.1 343.0 402.1 0 0CL +ATOM 814 C1 A 271 490.0 342.5 401.7 0 0CL +ATOM 815 B1 A 271 491.2 342.1 402.6 0 0CL +ATOM 816 COM A 272 23.9 215.3 385.8 0 0CL +ATOM 817 C1 A 272 24.5 214.9 384.6 0 0CL +ATOM 818 B1 A 272 23.2 215.8 385.2 0 0CL +ATOM 819 COM A 273 37.8 453.6 350.2 0 0CL +ATOM 820 C1 A 273 36.6 453.6 350.8 0 0CL +ATOM 821 B1 A 273 37.3 454.0 349.4 0 0CL +ATOM 822 COM A 274 110.1 255.7 262.9 0 0CL +ATOM 823 C1 A 274 108.9 255.7 262.4 0 0CL +ATOM 824 B1 A 274 110.4 256.1 262.0 0 0CL +ATOM 825 COM A 275 314.9 86.6 76.0 0 0CL +ATOM 826 C1 A 275 314.9 85.5 75.3 0 0CL +ATOM 827 B1 A 275 315.0 87.1 75.0 0 0CL +ATOM 828 COM A 276 445.0 59.3 198.4 0 0CL +ATOM 829 C1 A 276 445.6 58.6 197.5 0 0CL +ATOM 830 B1 A 276 445.0 60.0 197.7 0 0CL +ATOM 831 COM A 277 105.9 398.8 370.5 0 0CL +ATOM 832 C1 A 277 106.3 398.0 371.5 0 0CL +ATOM 833 B1 A 277 106.9 398.8 370.2 0 0CL +ATOM 834 COM A 278 20.1 396.3 451.4 0 0CL +ATOM 835 C1 A 278 20.0 396.2 452.7 0 0CL +ATOM 836 B1 A 278 19.3 395.5 451.4 0 0CL +ATOM 837 COM A 279 369.3 281.9 289.5 0 0CL +ATOM 838 C1 A 279 368.8 280.7 289.1 0 0CL +ATOM 839 B1 A 279 368.3 282.2 289.6 0 0CL +ATOM 840 COM A 280 16.5 316.3 145.7 0 0CL +ATOM 841 C1 A 280 15.8 316.2 146.8 0 0CL +ATOM 842 B1 A 280 15.7 316.9 145.4 0 0CL +ATOM 843 COM A 281 431.2 2.9 429.6 0 0CL +ATOM 844 C1 A 281 430.2 3.6 429.7 0 0CL +ATOM 845 B1 A 281 431.8 3.7 429.7 0 0CL +ATOM 846 COM A 282 98.7 188.4 237.9 0 0CL +ATOM 847 C1 A 282 98.7 187.1 238.2 0 0CL +ATOM 848 B1 A 282 97.7 188.3 238.0 0 0CL +ATOM 849 COM A 283 327.9 372.2 157.7 0 0CL +ATOM 850 C1 A 283 326.7 372.9 157.5 0 0CL +ATOM 851 B1 A 283 327.5 371.5 157.1 0 0CL +ATOM 852 COM A 284 221.3 487.1 89.9 0 0CL +ATOM 853 C1 A 284 221.6 486.3 90.9 0 0CL +ATOM 854 B1 A 284 222.2 486.7 89.5 0 0CL +ATOM 855 COM A 285 57.7 408.3 72.0 0 0CL +ATOM 856 C1 A 285 57.8 407.0 72.0 0 0CL +ATOM 857 B1 A 285 58.5 408.3 72.7 0 0CL +ATOM 858 COM A 286 116.4 122.8 288.3 0 0CL +ATOM 859 C1 A 286 117.0 123.9 288.5 0 0CL +ATOM 860 B1 A 286 115.9 123.0 289.2 0 0CL +ATOM 861 COM A 287 131.2 134.6 337.8 0 0CL +ATOM 862 C1 A 287 131.6 134.2 339.0 0 0CL +ATOM 863 B1 A 287 131.4 135.5 338.2 0 0CL +ATOM 864 COM A 288 152.8 357.7 304.1 0 0CL +ATOM 865 C1 A 288 153.6 358.8 304.3 0 0CL +ATOM 866 B1 A 288 153.5 357.6 303.3 0 0CL +ATOM 867 COM A 289 462.6 485.1 93.8 0 0CL +ATOM 868 C1 A 289 463.6 485.0 94.6 0 0CL +ATOM 869 B1 A 289 462.5 484.1 94.0 0 0CL +ATOM 870 COM A 290 325.5 196.5 368.7 0 0CL +ATOM 871 C1 A 290 326.0 196.4 369.9 0 0CL +ATOM 872 B1 A 290 324.9 195.8 368.9 0 0CL +ATOM 873 COM A 291 12.3 75.9 105.0 0 0CL +ATOM 874 C1 A 291 12.6 75.0 104.1 0 0CL +ATOM 875 B1 A 291 12.1 76.5 104.2 0 0CL +ATOM 876 COM A 292 79.3 441.8 321.8 0 0CL +ATOM 877 C1 A 292 80.3 442.1 322.7 0 0CL +ATOM 878 B1 A 292 78.9 441.2 322.6 0 0CL +ATOM 879 COM A 293 485.6 114.7 302.1 0 0CL +ATOM 880 C1 A 293 485.1 113.5 301.8 0 0CL +ATOM 881 B1 A 293 486.2 114.2 302.8 0 0CL +ATOM 882 COM A 294 226.7 305.0 308.7 0 0CL +ATOM 883 C1 A 294 227.0 305.1 310.0 0 0CL +ATOM 884 B1 A 294 227.5 304.5 308.6 0 0CL +ATOM 885 COM A 295 179.1 325.9 78.4 0 0CL +ATOM 886 C1 A 295 179.4 325.5 79.5 0 0CL +ATOM 887 B1 A 295 178.3 326.4 78.8 0 0CL +ATOM 888 COM A 296 49.2 48.1 183.4 0 0CL +ATOM 889 C1 A 296 48.2 48.9 183.2 0 0CL +ATOM 890 B1 A 296 49.3 48.6 184.3 0 0CL +ATOM 891 COM A 297 310.7 164.5 377.3 0 0CL +ATOM 892 C1 A 297 311.0 163.8 378.3 0 0CL +ATOM 893 B1 A 297 309.9 164.8 377.8 0 0CL +ATOM 894 COM A 298 414.6 339.0 83.3 0 0CL +ATOM 895 C1 A 298 413.5 338.3 83.6 0 0CL +ATOM 896 B1 A 298 414.2 339.6 84.1 0 0CL +ATOM 897 COM A 299 122.0 414.3 277.4 0 0CL +ATOM 898 C1 A 299 122.1 413.1 276.8 0 0CL +ATOM 899 B1 A 299 123.0 414.2 277.5 0 0CL +ATOM 900 COM B 300 324.4 311.2 210.8 0 0CL +ATOM 901 C1 B 300 325.7 311.5 211.3 0 0CL +ATOM 902 A1 B 300 324.5 311.2 211.4 0 0CL +ATOM 903 COM B 301 359.4 160.6 51.4 0 0CL +ATOM 904 C1 B 301 360.8 160.4 51.2 0 0CL +ATOM 905 A1 B 301 359.8 160.6 51.9 0 0CL +ATOM 906 COM B 302 12.1 77.6 103.6 0 0CL +ATOM 907 C1 B 302 12.8 76.6 103.0 0 0CL +ATOM 908 A1 B 302 12.3 77.1 103.9 0 0CL +ATOM 909 COM B 303 356.8 326.3 216.8 0 0CL +ATOM 910 C1 B 303 357.4 325.9 215.6 0 0CL +ATOM 911 A1 B 303 356.8 325.7 216.6 0 0CL +ATOM 912 COM B 304 462.8 104.5 257.3 0 0CL +ATOM 913 C1 B 304 463.4 103.1 257.3 0 0CL +ATOM 914 A1 B 304 462.8 104.1 257.8 0 0CL +ATOM 915 COM B 305 379.0 394.5 494.3 0 0CL +ATOM 916 C1 B 305 379.3 395.8 493.8 0 0CL +ATOM 917 A1 B 305 378.9 394.7 493.7 0 0CL +ATOM 918 COM B 306 235.0 259.0 3.2 0 0CL +ATOM 919 C1 B 306 236.1 259.5 4.1 0 0CL +ATOM 920 A1 B 306 235.0 259.0 3.8 0 0CL +ATOM 921 COM B 307 369.0 332.5 22.4 0 0CL +ATOM 922 C1 B 307 369.9 331.5 22.7 0 0CL +ATOM 923 A1 B 307 368.8 332.0 22.5 0 0CL +ATOM 924 COM B 308 143.4 259.4 425.5 0 0CL +ATOM 925 C1 B 308 144.5 258.4 425.3 0 0CL +ATOM 926 A1 B 308 143.3 258.8 425.3 0 0CL +ATOM 927 COM B 309 462.2 483.0 93.6 0 0CL +ATOM 928 C1 B 309 463.5 483.2 94.2 0 0CL +ATOM 929 A1 B 309 462.4 483.5 93.7 0 0CL +ATOM 930 COM B 310 124.1 414.3 278.2 0 0CL +ATOM 931 C1 B 310 123.7 413.0 277.8 0 0CL +ATOM 932 A1 B 310 123.5 414.2 277.9 0 0CL +ATOM 933 COM B 311 488.8 466.7 312.9 0 0CL +ATOM 934 C1 B 311 490.2 466.3 313.0 0 0CL +ATOM 935 A1 B 311 489.3 467.1 312.8 0 0CL +ATOM 936 COM B 312 50.0 49.1 185.2 0 0CL +ATOM 937 C1 B 312 49.1 49.9 184.6 0 0CL +ATOM 938 A1 B 312 49.7 48.9 184.7 0 0CL +ATOM 939 COM B 313 67.1 36.2 80.6 0 0CL +ATOM 940 C1 B 313 66.6 37.5 81.1 0 0CL +ATOM 941 A1 B 313 66.5 36.4 80.5 0 0CL +ATOM 942 COM B 314 347.3 5.8 158.0 0 0CL +ATOM 943 C1 B 314 346.0 5.8 157.4 0 0CL +ATOM 944 A1 B 314 346.8 5.9 158.3 0 0CL +ATOM 945 COM B 315 456.3 50.0 203.4 0 0CL +ATOM 946 C1 B 315 455.0 49.7 203.8 0 0CL +ATOM 947 A1 B 315 455.9 49.8 203.0 0 0CL +ATOM 948 COM B 316 220.3 392.9 499.2 0 0CL +ATOM 949 C1 B 316 220.7 391.7 498.5 0 0CL +ATOM 950 A1 B 316 219.9 392.5 499.0 0 0CL +ATOM 951 COM B 317 364.1 40.7 210.1 0 0CL +ATOM 952 C1 B 317 364.1 40.4 208.7 0 0CL +ATOM 953 A1 B 317 364.6 40.7 209.8 0 0CL +ATOM 954 COM B 318 315.5 88.0 74.3 0 0CL +ATOM 955 C1 B 318 315.8 86.6 74.0 0 0CL +ATOM 956 A1 B 318 315.4 87.5 74.7 0 0CL +ATOM 957 COM B 319 140.6 201.5 182.2 0 0CL +ATOM 958 C1 B 319 140.0 200.7 183.2 0 0CL +ATOM 959 A1 B 319 140.0 201.2 182.1 0 0CL +ATOM 960 COM B 320 187.5 92.8 102.5 0 0CL +ATOM 961 C1 B 320 186.6 93.9 102.5 0 0CL +ATOM 962 A1 B 320 186.9 92.8 102.4 0 0CL +ATOM 963 COM B 321 259.8 494.3 51.4 0 0CL +ATOM 964 C1 B 321 259.6 494.8 50.1 0 0CL +ATOM 965 A1 B 321 259.9 494.8 51.3 0 0CL +ATOM 966 COM B 322 367.4 283.0 289.5 0 0CL +ATOM 967 C1 B 322 367.2 281.8 288.8 0 0CL +ATOM 968 A1 B 322 367.9 282.6 289.4 0 0CL +ATOM 969 COM B 323 98.8 237.2 186.2 0 0CL +ATOM 970 C1 B 323 99.7 236.7 187.1 0 0CL +ATOM 971 A1 B 323 98.6 236.9 186.7 0 0CL +ATOM 972 COM B 324 174.7 367.2 64.7 0 0CL +ATOM 973 C1 B 324 173.5 367.5 65.5 0 0CL +ATOM 974 A1 B 324 174.2 366.8 64.9 0 0CL +ATOM 975 COM B 325 105.3 204.3 260.1 0 0CL +ATOM 976 C1 B 325 106.3 204.3 259.1 0 0CL +ATOM 977 A1 B 325 105.4 203.8 259.8 0 0CL +ATOM 978 COM B 326 262.0 375.0 325.4 0 0CL +ATOM 979 C1 B 326 261.8 375.9 326.5 0 0CL +ATOM 980 A1 B 326 262.5 375.3 325.7 0 0CL +ATOM 981 COM B 327 424.6 484.1 96.1 0 0CL +ATOM 982 C1 B 327 425.4 482.9 96.4 0 0CL +ATOM 983 A1 B 327 425.0 483.8 95.7 0 0CL +ATOM 984 COM B 328 469.1 437.2 487.7 0 0CL +ATOM 985 C1 B 328 469.8 438.2 487.1 0 0CL +ATOM 986 A1 B 328 469.3 437.7 488.0 0 0CL +ATOM 987 COM B 329 347.4 354.4 237.7 0 0CL +ATOM 988 C1 B 329 347.9 353.0 238.0 0 0CL +ATOM 989 A1 B 329 347.6 354.2 238.2 0 0CL +ATOM 990 COM B 330 205.0 221.4 69.8 0 0CL +ATOM 991 C1 B 330 204.9 222.7 69.2 0 0CL +ATOM 992 A1 B 330 204.6 221.8 70.0 0 0CL +ATOM 993 COM B 331 134.2 283.9 431.9 0 0CL +ATOM 994 C1 B 331 133.0 284.6 431.7 0 0CL +ATOM 995 A1 B 331 134.0 284.2 432.3 0 0CL +ATOM 996 COM B 332 133.7 457.3 277.7 0 0CL +ATOM 997 C1 B 332 133.7 456.1 278.5 0 0CL +ATOM 998 A1 B 332 133.3 456.9 277.7 0 0CL +ATOM 999 COM B 333 478.7 417.0 474.2 0 0CL +ATOM 1000 C1 B 333 477.6 417.7 473.7 0 0CL +ATOM 1001 A1 B 333 478.8 417.4 473.8 0 0CL +ATOM 1002 COM B 334 406.7 65.3 97.6 0 0CL +ATOM 1003 C1 B 334 407.0 63.9 98.0 0 0CL +ATOM 1004 A1 B 334 406.8 65.1 98.1 0 0CL +ATOM 1005 COM B 335 213.8 307.6 300.7 0 0CL +ATOM 1006 C1 B 335 214.2 308.8 301.4 0 0CL +ATOM 1007 A1 B 335 213.4 308.0 300.9 0 0CL +ATOM 1008 COM B 336 427.4 344.6 286.1 0 0CL +ATOM 1009 C1 B 336 427.6 345.9 285.5 0 0CL +ATOM 1010 A1 B 336 427.1 344.8 285.6 0 0CL +ATOM 1011 COM B 337 423.5 236.4 344.4 0 0CL +ATOM 1012 C1 B 337 423.7 237.0 343.2 0 0CL +ATOM 1013 A1 B 337 424.0 236.7 344.3 0 0CL +ATOM 1014 COM B 338 453.3 205.3 5.0 0 0CL +ATOM 1015 C1 B 338 452.1 204.5 5.0 0 0CL +ATOM 1016 A1 B 338 453.2 204.9 5.4 0 0CL +ATOM 1017 COM B 339 153.7 357.2 302.2 0 0CL +ATOM 1018 C1 B 339 154.1 358.5 302.5 0 0CL +ATOM 1019 A1 B 339 153.5 357.5 302.7 0 0CL +ATOM 1020 COM B 340 3.3 273.8 103.2 0 0CL +ATOM 1021 C1 B 340 4.7 273.5 103.7 0 0CL +ATOM 1022 A1 B 340 3.8 274.1 103.0 0 0CL +ATOM 1023 COM B 341 43.1 56.3 55.3 0 0CL +ATOM 1024 C1 B 341 43.7 55.1 55.5 0 0CL +ATOM 1025 A1 B 341 43.4 56.2 55.8 0 0CL +ATOM 1026 COM B 342 180.8 297.2 346.2 0 0CL +ATOM 1027 C1 B 342 181.3 298.2 347.1 0 0CL +ATOM 1028 A1 B 342 181.0 297.7 346.0 0 0CL +ATOM 1029 COM B 343 293.7 480.2 208.5 0 0CL +ATOM 1030 C1 B 343 294.6 479.2 208.9 0 0CL +ATOM 1031 A1 B 343 294.1 479.9 208.1 0 0CL +ATOM 1032 COM B 344 397.3 432.2 300.1 0 0CL +ATOM 1033 C1 B 344 398.5 431.5 300.5 0 0CL +ATOM 1034 A1 B 344 397.5 431.6 299.9 0 0CL +ATOM 1035 COM B 345 352.2 498.5 179.0 0 0CL +ATOM 1036 C1 B 345 353.1 497.5 179.6 0 0CL +ATOM 1037 A1 B 345 352.4 498.5 179.6 0 0CL +ATOM 1038 COM B 346 107.8 399.4 369.7 0 0CL +ATOM 1039 C1 B 346 108.0 398.8 371.0 0 0CL +ATOM 1040 A1 B 346 107.4 399.2 370.0 0 0CL +ATOM 1041 COM B 347 220.5 199.5 61.9 0 0CL +ATOM 1042 C1 B 347 220.3 198.2 61.4 0 0CL +ATOM 1043 A1 B 347 220.2 199.4 61.4 0 0CL +ATOM 1044 COM B 348 272.3 166.8 448.2 0 0CL +ATOM 1045 C1 B 348 273.3 166.1 448.9 0 0CL +ATOM 1046 A1 B 348 272.8 167.0 448.2 0 0CL +ATOM 1047 COM B 349 18.8 394.5 450.9 0 0CL +ATOM 1048 C1 B 349 19.2 394.5 452.3 0 0CL +ATOM 1049 A1 B 349 19.2 394.9 451.2 0 0CL +ATOM 1050 COM B 350 447.0 440.5 165.9 0 0CL +ATOM 1051 C1 B 350 446.6 441.8 166.1 0 0CL +ATOM 1052 A1 B 350 446.6 440.6 166.3 0 0CL +ATOM 1053 COM B 351 93.2 4.5 385.5 0 0CL +ATOM 1054 C1 B 351 93.3 5.4 386.6 0 0CL +ATOM 1055 A1 B 351 93.1 5.1 385.5 0 0CL +ATOM 1056 COM B 352 61.4 83.4 268.8 0 0CL +ATOM 1057 C1 B 352 61.5 82.2 268.1 0 0CL +ATOM 1058 A1 B 352 61.3 83.4 268.2 0 0CL +ATOM 1059 COM B 353 407.2 77.3 26.6 0 0CL +ATOM 1060 C1 B 353 406.4 77.9 25.7 0 0CL +ATOM 1061 A1 B 353 407.1 77.9 26.7 0 0CL +ATOM 1062 COM B 354 323.8 223.9 285.1 0 0CL +ATOM 1063 C1 B 354 322.5 223.4 285.4 0 0CL +ATOM 1064 A1 B 354 323.3 224.3 285.0 0 0CL +ATOM 1065 COM B 355 43.5 350.7 293.8 0 0CL +ATOM 1066 C1 B 355 44.1 351.6 294.8 0 0CL +ATOM 1067 A1 B 355 43.5 350.6 294.4 0 0CL +ATOM 1068 COM B 356 148.6 450.4 269.0 0 0CL +ATOM 1069 C1 B 356 149.3 450.5 267.8 0 0CL +ATOM 1070 A1 B 356 148.7 449.9 268.6 0 0CL +ATOM 1071 COM B 357 177.1 326.7 78.9 0 0CL +ATOM 1072 C1 B 357 177.5 325.8 79.9 0 0CL +ATOM 1073 A1 B 357 177.6 326.4 78.8 0 0CL +ATOM 1074 COM B 358 208.3 402.5 454.1 0 0CL +ATOM 1075 C1 B 358 208.1 401.9 455.4 0 0CL +ATOM 1076 A1 B 358 208.5 402.7 454.6 0 0CL +ATOM 1077 COM B 359 71.8 332.2 353.9 0 0CL +ATOM 1078 C1 B 359 72.7 333.1 353.2 0 0CL +ATOM 1079 A1 B 359 72.4 332.3 354.0 0 0CL +ATOM 1080 COM B 360 465.8 2.8 91.2 0 0CL +ATOM 1081 C1 B 360 467.1 3.3 91.4 0 0CL +ATOM 1082 A1 B 360 466.1 3.2 90.8 0 0CL +ATOM 1083 COM B 361 421.5 332.1 467.7 0 0CL +ATOM 1084 C1 B 361 420.4 331.1 467.6 0 0CL +ATOM 1085 A1 B 361 421.1 332.0 468.1 0 0CL +ATOM 1086 COM B 362 416.9 449.3 126.4 0 0CL +ATOM 1087 C1 B 362 416.3 450.6 126.3 0 0CL +ATOM 1088 A1 B 362 417.3 449.8 126.5 0 0CL +ATOM 1089 COM B 363 35.4 472.8 258.8 0 0CL +ATOM 1090 C1 B 363 34.3 472.2 259.5 0 0CL +ATOM 1091 A1 B 363 35.0 473.1 259.2 0 0CL +ATOM 1092 COM B 364 341.0 227.4 152.3 0 0CL +ATOM 1093 C1 B 364 339.7 228.0 152.0 0 0CL +ATOM 1094 A1 B 364 340.7 227.7 152.7 0 0CL +ATOM 1095 COM B 365 134.4 189.7 237.0 0 0CL +ATOM 1096 C1 B 365 134.6 190.8 236.1 0 0CL +ATOM 1097 A1 B 365 134.3 190.3 237.2 0 0CL +ATOM 1098 COM B 366 78.4 440.2 323.0 0 0CL +ATOM 1099 C1 B 366 79.7 440.5 323.5 0 0CL +ATOM 1100 A1 B 366 78.7 440.6 322.8 0 0CL +ATOM 1101 COM B 367 310.6 350.9 23.3 0 0CL +ATOM 1102 C1 B 367 311.4 351.6 24.2 0 0CL +ATOM 1103 A1 B 367 311.1 350.7 23.4 0 0CL +ATOM 1104 COM B 368 59.0 408.7 73.6 0 0CL +ATOM 1105 C1 B 368 58.7 407.4 73.7 0 0CL +ATOM 1106 A1 B 368 58.7 408.5 73.2 0 0CL +ATOM 1107 COM B 369 47.3 135.0 192.5 0 0CL +ATOM 1108 C1 B 369 47.2 135.8 193.8 0 0CL +ATOM 1109 A1 B 369 47.8 135.1 192.9 0 0CL +ATOM 1110 COM B 370 307.5 411.5 386.7 0 0CL +ATOM 1111 C1 B 370 307.4 412.3 385.6 0 0CL +ATOM 1112 A1 B 370 307.1 412.0 386.7 0 0CL +ATOM 1113 COM B 371 22.5 216.7 385.0 0 0CL +ATOM 1114 C1 B 371 23.5 216.5 384.0 0 0CL +ATOM 1115 A1 B 371 22.9 216.4 385.1 0 0CL +ATOM 1116 COM B 372 296.6 19.8 140.3 0 0CL +ATOM 1117 C1 B 372 296.9 18.4 140.4 0 0CL +ATOM 1118 A1 B 372 297.1 19.6 140.5 0 0CL +ATOM 1119 COM B 373 327.3 370.4 156.7 0 0CL +ATOM 1120 C1 B 373 326.1 371.1 156.9 0 0CL +ATOM 1121 A1 B 373 327.3 370.9 157.0 0 0CL +ATOM 1122 COM B 374 419.6 111.1 199.0 0 0CL +ATOM 1123 C1 B 374 420.5 111.4 197.8 0 0CL +ATOM 1124 A1 B 374 420.1 110.8 198.8 0 0CL +ATOM 1125 COM B 375 441.0 178.6 153.7 0 0CL +ATOM 1126 C1 B 375 441.2 179.6 154.7 0 0CL +ATOM 1127 A1 B 375 440.6 178.7 154.2 0 0CL +ATOM 1128 COM B 376 278.3 299.0 235.7 0 0CL +ATOM 1129 C1 B 376 279.4 299.8 236.2 0 0CL +ATOM 1130 A1 B 376 278.2 299.5 236.0 0 0CL +ATOM 1131 COM B 377 307.5 227.9 245.1 0 0CL +ATOM 1132 C1 B 377 307.1 229.3 244.9 0 0CL +ATOM 1133 A1 B 377 307.5 228.3 245.5 0 0CL +ATOM 1134 COM B 378 284.1 359.8 296.6 0 0CL +ATOM 1135 C1 B 378 284.6 361.1 296.7 0 0CL +ATOM 1136 A1 B 378 284.5 360.0 296.3 0 0CL +ATOM 1137 COM B 379 455.5 327.1 404.2 0 0CL +ATOM 1138 C1 B 379 455.0 328.3 404.9 0 0CL +ATOM 1139 A1 B 379 455.5 327.7 404.0 0 0CL +ATOM 1140 COM B 380 163.1 461.6 226.0 0 0CL +ATOM 1141 C1 B 380 162.1 461.1 225.1 0 0CL +ATOM 1142 A1 B 380 163.2 461.1 225.7 0 0CL +ATOM 1143 COM B 381 364.6 125.0 110.1 0 0CL +ATOM 1144 C1 B 381 364.3 126.4 110.3 0 0CL +ATOM 1145 A1 B 381 364.2 125.2 110.5 0 0CL +ATOM 1146 COM B 382 11.8 453.9 289.2 0 0CL +ATOM 1147 C1 B 382 11.0 455.1 289.5 0 0CL +ATOM 1148 A1 B 382 11.5 454.0 289.7 0 0CL +ATOM 1149 COM B 383 134.2 375.4 14.0 0 0CL +ATOM 1150 C1 B 383 133.7 376.6 14.7 0 0CL +ATOM 1151 A1 B 383 134.5 375.7 14.4 0 0CL +ATOM 1152 COM B 384 37.2 454.2 348.2 0 0CL +ATOM 1153 C1 B 384 36.1 453.7 349.0 0 0CL +ATOM 1154 A1 B 384 37.2 454.0 348.8 0 0CL +ATOM 1155 COM B 385 228.5 304.1 308.0 0 0CL +ATOM 1156 C1 B 385 228.7 304.7 309.3 0 0CL +ATOM 1157 A1 B 385 228.1 304.4 308.3 0 0CL +ATOM 1158 COM B 386 376.2 255.7 493.4 0 0CL +ATOM 1159 C1 B 386 376.1 257.1 493.5 0 0CL +ATOM 1160 A1 B 386 375.7 255.9 493.6 0 0CL +ATOM 1161 COM B 387 418.1 439.7 485.8 0 0CL +ATOM 1162 C1 B 387 418.4 440.7 484.8 0 0CL +ATOM 1163 A1 B 387 418.6 439.7 485.5 0 0CL +ATOM 1164 COM B 388 211.4 399.4 318.1 0 0CL +ATOM 1165 C1 B 388 210.9 400.7 317.7 0 0CL +ATOM 1166 A1 B 388 211.1 399.5 317.6 0 0CL +ATOM 1167 COM B 389 145.9 432.4 55.2 0 0CL +ATOM 1168 C1 B 389 145.5 433.5 56.1 0 0CL +ATOM 1169 A1 B 389 145.9 433.0 55.0 0 0CL +ATOM 1170 COM B 390 96.5 188.7 237.7 0 0CL +ATOM 1171 C1 B 390 96.8 187.3 237.6 0 0CL +ATOM 1172 A1 B 390 97.1 188.5 237.7 0 0CL +ATOM 1173 COM B 391 469.4 424.7 320.3 0 0CL +ATOM 1174 C1 B 391 468.0 424.3 319.9 0 0CL +ATOM 1175 A1 B 391 469.1 424.9 319.8 0 0CL +ATOM 1176 COM B 392 434.7 292.1 190.6 0 0CL +ATOM 1177 C1 B 392 435.8 291.5 191.2 0 0CL +ATOM 1178 A1 B 392 435.0 292.3 191.0 0 0CL +ATOM 1179 COM B 393 497.0 316.3 29.4 0 0CL +ATOM 1180 C1 B 393 496.6 315.1 29.9 0 0CL +ATOM 1181 A1 B 393 497.4 315.9 29.5 0 0CL +ATOM 1182 COM B 394 289.8 50.9 65.2 0 0CL +ATOM 1183 C1 B 394 289.6 51.5 66.5 0 0CL +ATOM 1184 A1 B 394 289.8 51.5 65.3 0 0CL +ATOM 1185 COM B 395 276.3 296.0 410.3 0 0CL +ATOM 1186 C1 B 395 275.2 296.5 409.6 0 0CL +ATOM 1187 A1 B 395 276.0 295.7 409.9 0 0CL +ATOM 1188 COM B 396 445.1 61.2 197.4 0 0CL +ATOM 1189 C1 B 396 446.0 60.3 196.8 0 0CL +ATOM 1190 A1 B 396 445.2 60.7 197.6 0 0CL +ATOM 1191 COM B 397 393.5 184.0 431.9 0 0CL +ATOM 1192 C1 B 397 394.9 183.9 431.6 0 0CL +ATOM 1193 A1 B 397 393.8 184.3 431.5 0 0CL +ATOM 1194 COM B 398 118.0 382.5 12.3 0 0CL +ATOM 1195 C1 B 398 117.5 381.4 11.5 0 0CL +ATOM 1196 A1 B 398 117.7 382.6 11.7 0 0CL +ATOM 1197 COM B 399 138.2 325.5 234.6 0 0CL +ATOM 1198 C1 B 399 137.1 325.3 233.7 0 0CL +ATOM 1199 A1 B 399 138.0 325.0 234.5 0 0CL +ATOM 1200 COM B 400 225.8 155.6 108.8 0 0CL +ATOM 1201 C1 B 400 227.1 155.4 109.0 0 0CL +ATOM 1202 A1 B 400 226.2 156.1 108.8 0 0CL +ATOM 1203 COM B 401 340.6 402.7 421.2 0 0CL +ATOM 1204 C1 B 401 339.5 402.3 422.1 0 0CL +ATOM 1205 A1 B 401 340.1 402.7 421.1 0 0CL +ATOM 1206 COM B 402 432.8 4.4 429.5 0 0CL +ATOM 1207 C1 B 402 431.5 5.0 429.2 0 0CL +ATOM 1208 A1 B 402 432.3 4.1 429.5 0 0CL +ATOM 1209 COM B 403 482.7 204.4 74.9 0 0CL +ATOM 1210 C1 B 403 483.3 205.1 73.9 0 0CL +ATOM 1211 A1 B 403 482.7 205.0 74.9 0 0CL +ATOM 1212 COM B 404 324.2 194.7 368.6 0 0CL +ATOM 1213 C1 B 404 325.2 194.6 369.7 0 0CL +ATOM 1214 A1 B 404 324.6 195.2 368.7 0 0CL +ATOM 1215 COM B 405 302.3 262.3 337.9 0 0CL +ATOM 1216 C1 B 405 302.0 261.0 337.2 0 0CL +ATOM 1217 A1 B 405 302.5 262.1 337.3 0 0CL +ATOM 1218 COM B 406 111.3 256.1 261.1 0 0CL +ATOM 1219 C1 B 406 110.0 255.7 260.7 0 0CL +ATOM 1220 A1 B 406 110.9 256.0 261.5 0 0CL +ATOM 1221 COM B 407 277.7 176.9 487.2 0 0CL +ATOM 1222 C1 B 407 278.5 175.7 486.8 0 0CL +ATOM 1223 A1 B 407 277.9 176.4 487.6 0 0CL +ATOM 1224 COM B 408 202.7 368.7 148.0 0 0CL +ATOM 1225 C1 B 408 201.3 368.7 148.0 0 0CL +ATOM 1226 A1 B 408 202.4 369.1 148.3 0 0CL +ATOM 1227 COM B 409 449.3 38.8 384.7 0 0CL +ATOM 1228 C1 B 409 448.1 37.9 384.5 0 0CL +ATOM 1229 A1 B 409 448.7 38.9 384.9 0 0CL +ATOM 1230 COM B 410 59.3 157.9 358.6 0 0CL +ATOM 1231 C1 B 410 59.4 157.4 360.0 0 0CL +ATOM 1232 A1 B 410 59.3 157.3 358.8 0 0CL +ATOM 1233 COM B 411 90.6 479.2 386.9 0 0CL +ATOM 1234 C1 B 411 91.1 478.7 388.1 0 0CL +ATOM 1235 A1 B 411 90.5 478.6 387.1 0 0CL +ATOM 1236 COM B 412 490.2 425.7 96.9 0 0CL +ATOM 1237 C1 B 412 491.2 424.8 96.4 0 0CL +ATOM 1238 A1 B 412 490.1 425.4 96.4 0 0CL +ATOM 1239 COM B 413 286.8 431.3 360.2 0 0CL +ATOM 1240 C1 B 413 287.4 430.1 360.6 0 0CL +ATOM 1241 A1 B 413 286.5 430.8 360.3 0 0CL +ATOM 1242 COM B 414 175.8 61.9 295.3 0 0CL +ATOM 1243 C1 B 414 176.9 62.8 295.6 0 0CL +ATOM 1244 A1 B 414 176.0 62.4 294.9 0 0CL +ATOM 1245 COM B 415 496.6 192.6 84.4 0 0CL +ATOM 1246 C1 B 415 496.7 191.1 84.3 0 0CL +ATOM 1247 A1 B 415 497.0 192.3 84.2 0 0CL +ATOM 1248 COM B 416 260.5 399.9 275.0 0 0CL +ATOM 1249 C1 B 416 261.3 398.7 274.7 0 0CL +ATOM 1250 A1 B 416 260.4 399.5 274.6 0 0CL +ATOM 1251 COM B 417 491.6 341.5 403.5 0 0CL +ATOM 1252 C1 B 417 490.3 341.3 403.2 0 0CL +ATOM 1253 A1 B 417 491.4 341.8 403.2 0 0CL +ATOM 1254 COM B 418 349.8 364.8 12.8 0 0CL +ATOM 1255 C1 B 418 348.8 364.9 13.8 0 0CL +ATOM 1256 A1 B 418 349.4 364.4 12.8 0 0CL +ATOM 1257 COM B 419 278.5 378.7 197.4 0 0CL +ATOM 1258 C1 B 419 277.7 379.8 197.2 0 0CL +ATOM 1259 A1 B 419 277.9 378.7 197.6 0 0CL +ATOM 1260 COM B 420 308.7 165.1 377.9 0 0CL +ATOM 1261 C1 B 420 309.1 164.0 378.7 0 0CL +ATOM 1262 A1 B 420 309.2 164.8 377.8 0 0CL +ATOM 1263 COM B 421 245.5 178.8 473.3 0 0CL +ATOM 1264 C1 B 421 244.7 178.9 474.5 0 0CL +ATOM 1265 A1 B 421 245.5 179.3 473.7 0 0CL +ATOM 1266 COM B 422 294.7 317.9 385.9 0 0CL +ATOM 1267 C1 B 422 294.7 319.3 386.2 0 0CL +ATOM 1268 A1 B 422 294.7 318.1 386.5 0 0CL +ATOM 1269 COM B 423 389.9 117.8 331.9 0 0CL +ATOM 1270 C1 B 423 388.8 117.6 332.8 0 0CL +ATOM 1271 A1 B 423 389.3 117.8 331.7 0 0CL +ATOM 1272 COM B 424 208.9 367.7 240.7 0 0CL +ATOM 1273 C1 B 424 207.9 367.9 239.8 0 0CL +ATOM 1274 A1 B 424 208.5 368.1 240.8 0 0CL +ATOM 1275 COM B 425 212.1 8.4 123.6 0 0CL +ATOM 1276 C1 B 425 211.4 7.7 122.5 0 0CL +ATOM 1277 A1 B 425 212.1 7.8 123.5 0 0CL +ATOM 1278 COM B 426 315.3 308.8 446.7 0 0CL +ATOM 1279 C1 B 426 314.8 310.0 446.1 0 0CL +ATOM 1280 A1 B 426 315.7 309.2 446.4 0 0CL +ATOM 1281 COM B 427 87.9 242.6 35.2 0 0CL +ATOM 1282 C1 B 427 88.2 241.9 34.0 0 0CL +ATOM 1283 A1 B 427 88.3 242.2 35.2 0 0CL +ATOM 1284 COM B 428 416.0 426.0 261.8 0 0CL +ATOM 1285 C1 B 428 417.1 426.9 261.7 0 0CL +ATOM 1286 A1 B 428 416.3 426.1 261.3 0 0CL +ATOM 1287 COM B 429 358.8 124.3 227.3 0 0CL +ATOM 1288 C1 B 429 358.8 125.7 227.3 0 0CL +ATOM 1289 A1 B 429 358.3 124.6 227.4 0 0CL +ATOM 1290 COM B 430 144.5 424.9 4.0 0 0CL +ATOM 1291 C1 B 430 144.4 423.9 5.1 0 0CL +ATOM 1292 A1 B 430 145.0 424.6 4.2 0 0CL +ATOM 1293 COM B 431 70.5 6.4 425.3 0 0CL +ATOM 1294 C1 B 431 71.6 5.5 425.1 0 0CL +ATOM 1295 A1 B 431 70.4 5.8 425.3 0 0CL +ATOM 1296 COM B 432 226.4 481.6 334.8 0 0CL +ATOM 1297 C1 B 432 226.2 482.8 335.6 0 0CL +ATOM 1298 A1 B 432 225.9 481.7 335.2 0 0CL +ATOM 1299 COM B 433 300.8 98.3 405.9 0 0CL +ATOM 1300 C1 B 433 300.2 97.6 404.8 0 0CL +ATOM 1301 A1 B 433 300.2 98.4 405.7 0 0CL +ATOM 1302 COM B 434 221.0 28.1 271.0 0 0CL +ATOM 1303 C1 B 434 221.8 28.0 272.2 0 0CL +ATOM 1304 A1 B 434 221.0 27.6 271.4 0 0CL +ATOM 1305 COM B 435 86.6 170.9 426.9 0 0CL +ATOM 1306 C1 B 435 86.9 169.7 427.7 0 0CL +ATOM 1307 A1 B 435 86.4 170.8 427.5 0 0CL +ATOM 1308 COM B 436 23.3 232.9 300.7 0 0CL +ATOM 1309 C1 B 436 24.4 233.8 301.2 0 0CL +ATOM 1310 A1 B 436 23.7 232.7 301.1 0 0CL +ATOM 1311 COM B 437 485.1 234.6 351.5 0 0CL +ATOM 1312 C1 B 437 484.9 233.5 350.7 0 0CL +ATOM 1313 A1 B 437 485.5 234.2 351.4 0 0CL +ATOM 1314 COM B 438 17.9 21.8 382.3 0 0CL +ATOM 1315 C1 B 438 16.8 22.7 382.3 0 0CL +ATOM 1316 A1 B 438 17.5 21.9 381.8 0 0CL +ATOM 1317 COM B 439 301.6 198.3 55.6 0 0CL +ATOM 1318 C1 B 439 302.6 197.8 54.7 0 0CL +ATOM 1319 A1 B 439 302.1 198.5 55.6 0 0CL +ATOM 1320 COM B 440 21.4 494.7 59.0 0 0CL +ATOM 1321 C1 B 440 21.5 493.8 60.2 0 0CL +ATOM 1322 A1 B 440 21.1 494.8 59.5 0 0CL +ATOM 1323 COM B 441 116.2 20.9 341.3 0 0CL +ATOM 1324 C1 B 441 117.6 20.8 341.1 0 0CL +ATOM 1325 A1 B 441 116.5 21.4 341.3 0 0CL +ATOM 1326 COM B 442 462.9 235.8 271.5 0 0CL +ATOM 1327 C1 B 442 463.5 236.4 270.4 0 0CL +ATOM 1328 A1 B 442 463.5 235.7 271.4 0 0CL +ATOM 1329 COM B 443 446.2 498.2 18.2 0 0CL +ATOM 1330 C1 B 443 445.0 497.5 18.1 0 0CL +ATOM 1331 A1 B 443 445.7 498.4 17.8 0 0CL +ATOM 1332 COM B 444 131.1 136.7 338.3 0 0CL +ATOM 1333 C1 B 444 131.2 136.0 339.5 0 0CL +ATOM 1334 A1 B 444 131.1 136.1 338.3 0 0CL +ATOM 1335 COM B 445 196.4 383.3 267.4 0 0CL +ATOM 1336 C1 B 445 197.4 383.9 268.2 0 0CL +ATOM 1337 A1 B 445 196.5 383.9 267.4 0 0CL +ATOM 1338 COM B 446 267.2 171.3 327.8 0 0CL +ATOM 1339 C1 B 446 267.4 172.5 327.2 0 0CL +ATOM 1340 A1 B 446 267.3 171.3 327.3 0 0CL +ATOM 1341 COM B 447 69.3 492.6 132.2 0 0CL +ATOM 1342 C1 B 447 70.6 492.5 131.6 0 0CL +ATOM 1343 A1 B 447 69.5 492.1 131.9 0 0CL +ATOM 1344 COM B 448 464.8 179.0 126.4 0 0CL +ATOM 1345 C1 B 448 464.9 178.5 125.0 0 0CL +ATOM 1346 A1 B 448 465.3 179.1 126.0 0 0CL +ATOM 1347 COM B 449 15.0 317.3 144.5 0 0CL +ATOM 1348 C1 B 449 14.4 316.8 145.7 0 0CL +ATOM 1349 A1 B 449 15.3 317.0 144.9 0 0CL diff --git a/het3mer/PDB/600000.pdb b/het3mer/PDB/600000.pdb new file mode 100644 index 00000000..81f36fbe --- /dev/null +++ b/het3mer/PDB/600000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 600000 CREATED Thu May 29 13:11:20 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 249.7 453.4 181.8 0 0CL +ATOM 1 A1 C 0 249.7 451.2 182.0 0 0CL +ATOM 2 B1 C 0 249.2 451.6 182.5 0 0CL +ATOM 3 COM C 1 204.5 486.4 46.3 0 0CL +ATOM 4 A1 C 1 206.6 486.4 46.9 0 0CL +ATOM 5 B1 C 1 206.2 485.9 47.3 0 0CL +ATOM 6 COM C 2 14.4 258.4 225.1 0 0CL +ATOM 7 A1 C 2 13.8 259.1 227.1 0 0CL +ATOM 8 B1 C 2 14.5 259.1 226.9 0 0CL +ATOM 9 COM C 3 275.1 251.2 361.6 0 0CL +ATOM 10 A1 C 3 276.6 252.8 361.6 0 0CL +ATOM 11 B1 C 3 276.1 252.8 362.1 0 0CL +ATOM 12 COM C 4 327.8 287.6 250.0 0 0CL +ATOM 13 A1 C 4 327.3 287.9 252.1 0 0CL +ATOM 14 B1 C 4 327.6 287.3 251.9 0 0CL +ATOM 15 COM C 5 409.7 165.2 427.4 0 0CL +ATOM 16 A1 C 5 409.2 163.3 428.4 0 0CL +ATOM 17 B1 C 5 408.9 163.5 427.7 0 0CL +ATOM 18 COM C 6 465.5 428.0 243.6 0 0CL +ATOM 19 A1 C 6 466.7 429.7 242.9 0 0CL +ATOM 20 B1 C 6 466.3 429.8 243.5 0 0CL +ATOM 21 COM C 7 275.4 251.6 89.1 0 0CL +ATOM 22 A1 C 7 275.1 249.9 87.8 0 0CL +ATOM 23 B1 C 7 274.5 250.2 88.0 0 0CL +ATOM 24 COM C 8 43.4 292.2 209.4 0 0CL +ATOM 25 A1 C 8 44.1 292.1 211.5 0 0CL +ATOM 26 B1 C 8 43.9 291.5 211.2 0 0CL +ATOM 27 COM C 9 11.8 135.6 400.7 0 0CL +ATOM 28 A1 C 9 10.7 134.4 399.2 0 0CL +ATOM 29 B1 C 9 11.4 134.2 399.4 0 0CL +ATOM 30 COM C 10 409.4 310.0 431.0 0 0CL +ATOM 31 A1 C 10 409.9 307.8 430.9 0 0CL +ATOM 32 B1 C 10 410.3 308.3 431.3 0 0CL +ATOM 33 COM C 11 273.4 112.0 99.3 0 0CL +ATOM 34 A1 C 11 273.3 114.2 99.5 0 0CL +ATOM 35 B1 C 11 272.8 113.8 99.8 0 0CL +ATOM 36 COM C 12 209.8 390.4 354.0 0 0CL +ATOM 37 A1 C 12 212.0 390.2 354.3 0 0CL +ATOM 38 B1 C 12 211.8 390.0 353.7 0 0CL +ATOM 39 COM C 13 492.8 281.6 409.7 0 0CL +ATOM 40 A1 C 13 492.0 281.6 407.6 0 0CL +ATOM 41 B1 C 13 492.3 282.3 407.9 0 0CL +ATOM 42 COM C 14 420.9 34.0 388.2 0 0CL +ATOM 43 A1 C 14 421.2 33.6 390.3 0 0CL +ATOM 44 B1 C 14 420.7 33.2 390.0 0 0CL +ATOM 45 COM C 15 81.0 426.2 423.0 0 0CL +ATOM 46 A1 C 15 79.9 425.5 421.3 0 0CL +ATOM 47 B1 C 15 80.2 426.1 421.2 0 0CL +ATOM 48 COM C 16 198.4 337.0 442.8 0 0CL +ATOM 49 A1 C 16 197.4 337.9 444.5 0 0CL +ATOM 50 B1 C 16 197.7 338.4 444.1 0 0CL +ATOM 51 COM C 17 20.0 393.5 404.6 0 0CL +ATOM 52 A1 C 17 21.8 394.2 405.6 0 0CL +ATOM 53 B1 C 17 21.9 393.6 405.1 0 0CL +ATOM 54 COM C 18 329.4 393.5 23.9 0 0CL +ATOM 55 A1 C 18 329.4 394.4 21.9 0 0CL +ATOM 56 B1 C 18 329.9 393.9 22.1 0 0CL +ATOM 57 COM C 19 106.8 390.1 167.2 0 0CL +ATOM 58 A1 C 19 104.9 389.7 166.3 0 0CL +ATOM 59 B1 C 19 105.4 389.5 165.9 0 0CL +ATOM 60 COM C 20 187.9 130.3 427.8 0 0CL +ATOM 61 A1 C 20 186.0 131.2 428.4 0 0CL +ATOM 62 B1 C 20 186.6 131.6 428.4 0 0CL +ATOM 63 COM C 21 242.4 337.1 391.9 0 0CL +ATOM 64 A1 C 21 244.5 337.2 391.4 0 0CL +ATOM 65 B1 C 21 244.3 337.7 391.9 0 0CL +ATOM 66 COM C 22 323.3 89.7 266.7 0 0CL +ATOM 67 A1 C 22 323.6 88.8 268.7 0 0CL +ATOM 68 B1 C 22 324.2 88.7 268.2 0 0CL +ATOM 69 COM C 23 372.7 312.2 72.1 0 0CL +ATOM 70 A1 C 23 373.2 313.4 73.9 0 0CL +ATOM 71 B1 C 23 372.8 312.8 74.0 0 0CL +ATOM 72 COM C 24 309.5 107.4 249.6 0 0CL +ATOM 73 A1 C 24 308.1 109.1 250.0 0 0CL +ATOM 74 B1 C 24 307.8 108.5 249.7 0 0CL +ATOM 75 COM C 25 147.1 197.3 159.6 0 0CL +ATOM 76 A1 C 25 148.5 195.9 158.6 0 0CL +ATOM 77 B1 C 25 148.1 196.3 158.2 0 0CL +ATOM 78 COM C 26 426.5 479.9 22.7 0 0CL +ATOM 79 A1 C 26 424.4 479.5 23.6 0 0CL +ATOM 80 B1 C 26 424.9 480.0 23.9 0 0CL +ATOM 81 COM C 27 388.3 153.3 325.9 0 0CL +ATOM 82 A1 C 27 388.7 152.7 323.9 0 0CL +ATOM 83 B1 C 27 389.0 153.3 324.1 0 0CL +ATOM 84 COM C 28 312.8 252.1 229.9 0 0CL +ATOM 85 A1 C 28 313.9 252.8 231.7 0 0CL +ATOM 86 B1 C 28 313.9 252.1 231.5 0 0CL +ATOM 87 COM C 29 6.0 281.9 491.2 0 0CL +ATOM 88 A1 C 29 4.3 282.7 492.3 0 0CL +ATOM 89 B1 C 29 4.7 282.2 492.6 0 0CL +ATOM 90 COM C 30 279.6 483.1 310.3 0 0CL +ATOM 91 A1 C 30 281.1 481.9 311.4 0 0CL +ATOM 92 B1 C 30 280.9 481.6 310.7 0 0CL +ATOM 93 COM C 31 71.7 323.7 316.3 0 0CL +ATOM 94 A1 C 31 73.7 324.4 317.0 0 0CL +ATOM 95 B1 C 31 73.6 323.6 316.9 0 0CL +ATOM 96 COM C 32 95.7 10.8 492.8 0 0CL +ATOM 97 A1 C 32 96.5 11.4 494.8 0 0CL +ATOM 98 B1 C 32 95.8 11.2 494.8 0 0CL +ATOM 99 COM C 33 265.4 273.5 210.2 0 0CL +ATOM 100 A1 C 33 267.2 274.4 209.3 0 0CL +ATOM 101 B1 C 33 267.3 273.9 209.8 0 0CL +ATOM 102 COM C 34 334.7 72.0 89.6 0 0CL +ATOM 103 A1 C 34 333.0 73.3 88.9 0 0CL +ATOM 104 B1 C 34 333.0 72.6 88.6 0 0CL +ATOM 105 COM C 35 335.8 250.8 208.4 0 0CL +ATOM 106 A1 C 35 336.5 252.4 207.1 0 0CL +ATOM 107 B1 C 35 336.8 251.8 207.1 0 0CL +ATOM 108 COM C 36 410.6 468.9 1.6 0 0CL +ATOM 109 A1 C 36 409.9 466.9 2.0 0 0CL +ATOM 110 B1 C 36 410.4 466.9 1.5 0 0CL +ATOM 111 COM C 37 223.9 117.7 58.4 0 0CL +ATOM 112 A1 C 37 223.7 117.7 56.2 0 0CL +ATOM 113 B1 C 37 223.8 117.1 56.5 0 0CL +ATOM 114 COM C 38 272.8 133.1 21.0 0 0CL +ATOM 115 A1 C 38 274.4 134.3 22.0 0 0CL +ATOM 116 B1 C 38 274.2 134.5 21.3 0 0CL +ATOM 117 COM C 39 168.4 294.4 426.4 0 0CL +ATOM 118 A1 C 39 166.6 295.5 425.9 0 0CL +ATOM 119 B1 C 39 166.6 294.8 425.8 0 0CL +ATOM 120 COM C 40 225.1 20.5 139.9 0 0CL +ATOM 121 A1 C 40 226.4 18.8 139.5 0 0CL +ATOM 122 B1 C 40 225.8 18.7 139.9 0 0CL +ATOM 123 COM C 41 205.3 461.2 404.6 0 0CL +ATOM 124 A1 C 41 206.9 461.1 403.1 0 0CL +ATOM 125 B1 C 41 207.0 461.5 403.6 0 0CL +ATOM 126 COM C 42 254.2 100.4 384.6 0 0CL +ATOM 127 A1 C 42 254.6 100.1 386.8 0 0CL +ATOM 128 B1 C 42 255.1 100.3 386.4 0 0CL +ATOM 129 COM C 43 125.6 52.4 156.5 0 0CL +ATOM 130 A1 C 43 126.0 54.5 156.0 0 0CL +ATOM 131 B1 C 43 126.0 54.0 155.5 0 0CL +ATOM 132 COM C 44 478.1 482.5 57.3 0 0CL +ATOM 133 A1 C 44 479.9 482.2 55.9 0 0CL +ATOM 134 B1 C 44 479.6 481.6 56.3 0 0CL +ATOM 135 COM C 45 230.2 275.3 344.1 0 0CL +ATOM 136 A1 C 45 228.3 274.1 344.1 0 0CL +ATOM 137 B1 C 45 228.8 273.9 344.6 0 0CL +ATOM 138 COM C 46 48.1 296.3 288.6 0 0CL +ATOM 139 A1 C 46 49.7 295.5 289.8 0 0CL +ATOM 140 B1 C 46 49.9 295.8 289.2 0 0CL +ATOM 141 COM C 47 192.5 116.6 171.8 0 0CL +ATOM 142 A1 C 47 192.7 116.9 173.9 0 0CL +ATOM 143 B1 C 47 192.8 116.3 173.7 0 0CL +ATOM 144 COM C 48 218.1 444.2 219.0 0 0CL +ATOM 145 A1 C 48 216.2 443.1 218.8 0 0CL +ATOM 146 B1 C 48 216.8 442.8 218.5 0 0CL +ATOM 147 COM C 49 360.2 81.5 300.5 0 0CL +ATOM 148 A1 C 49 358.2 81.8 299.6 0 0CL +ATOM 149 B1 C 49 358.7 82.4 299.7 0 0CL +ATOM 150 COM C 50 262.5 416.5 296.5 0 0CL +ATOM 151 A1 C 50 262.3 418.2 295.2 0 0CL +ATOM 152 B1 C 50 262.9 418.1 295.5 0 0CL +ATOM 153 COM C 51 2.1 226.5 397.4 0 0CL +ATOM 154 A1 C 51 4.2 225.8 397.4 0 0CL +ATOM 155 B1 C 51 3.8 225.7 398.0 0 0CL +ATOM 156 COM C 52 249.7 56.0 268.7 0 0CL +ATOM 157 A1 C 52 251.8 56.4 269.1 0 0CL +ATOM 158 B1 C 52 251.5 56.1 269.6 0 0CL +ATOM 159 COM C 53 207.1 413.7 479.3 0 0CL +ATOM 160 A1 C 53 208.6 415.2 479.9 0 0CL +ATOM 161 B1 C 53 208.8 414.5 480.0 0 0CL +ATOM 162 COM C 54 128.4 386.3 376.9 0 0CL +ATOM 163 A1 C 54 129.1 384.4 375.9 0 0CL +ATOM 164 B1 C 54 129.4 384.6 376.6 0 0CL +ATOM 165 COM C 55 208.8 330.6 424.2 0 0CL +ATOM 166 A1 C 55 208.1 328.9 423.0 0 0CL +ATOM 167 B1 C 55 208.9 328.9 423.2 0 0CL +ATOM 168 COM C 56 361.7 35.9 143.6 0 0CL +ATOM 169 A1 C 56 359.7 36.8 143.8 0 0CL +ATOM 170 B1 C 56 359.9 36.5 143.2 0 0CL +ATOM 171 COM C 57 405.6 148.3 303.1 0 0CL +ATOM 172 A1 C 57 407.1 149.5 302.1 0 0CL +ATOM 173 B1 C 57 406.9 149.7 302.8 0 0CL +ATOM 174 COM C 58 137.6 226.5 289.6 0 0CL +ATOM 175 A1 C 58 135.4 226.7 289.4 0 0CL +ATOM 176 B1 C 58 135.7 226.7 290.1 0 0CL +ATOM 177 COM C 59 342.3 304.0 76.8 0 0CL +ATOM 178 A1 C 59 344.5 303.5 77.0 0 0CL +ATOM 179 B1 C 59 344.3 304.1 77.1 0 0CL +ATOM 180 COM C 60 89.0 19.1 153.7 0 0CL +ATOM 181 A1 C 60 88.2 19.3 151.7 0 0CL +ATOM 182 B1 C 60 88.0 18.7 152.0 0 0CL +ATOM 183 COM C 61 240.5 241.8 116.0 0 0CL +ATOM 184 A1 C 61 242.5 241.7 115.1 0 0CL +ATOM 185 B1 C 61 242.5 242.1 115.7 0 0CL +ATOM 186 COM C 62 96.3 141.6 433.9 0 0CL +ATOM 187 A1 C 62 95.8 142.8 432.0 0 0CL +ATOM 188 B1 C 62 96.5 142.7 432.2 0 0CL +ATOM 189 COM C 63 117.6 436.1 329.9 0 0CL +ATOM 190 A1 C 63 116.4 437.1 331.4 0 0CL +ATOM 191 B1 C 63 116.7 437.5 330.9 0 0CL +ATOM 192 COM C 64 301.6 280.2 141.4 0 0CL +ATOM 193 A1 C 64 302.6 278.3 142.1 0 0CL +ATOM 194 B1 C 64 302.0 278.6 142.5 0 0CL +ATOM 195 COM C 65 460.1 348.0 453.3 0 0CL +ATOM 196 A1 C 65 461.6 346.5 453.9 0 0CL +ATOM 197 B1 C 65 461.5 346.6 453.2 0 0CL +ATOM 198 COM C 66 55.1 112.7 332.6 0 0CL +ATOM 199 A1 C 66 54.4 112.9 334.7 0 0CL +ATOM 200 B1 C 66 54.9 113.4 334.4 0 0CL +ATOM 201 COM C 67 312.5 332.7 214.8 0 0CL +ATOM 202 A1 C 67 314.3 333.6 215.6 0 0CL +ATOM 203 B1 C 67 313.8 334.1 215.4 0 0CL +ATOM 204 COM C 68 371.9 26.6 50.8 0 0CL +ATOM 205 A1 C 68 369.8 27.4 51.2 0 0CL +ATOM 206 B1 C 68 370.1 26.9 51.7 0 0CL +ATOM 207 COM C 69 214.3 439.5 320.8 0 0CL +ATOM 208 A1 C 69 212.4 439.0 319.8 0 0CL +ATOM 209 B1 C 69 212.8 438.5 319.9 0 0CL +ATOM 210 COM C 70 10.1 493.4 300.6 0 0CL +ATOM 211 A1 C 70 9.8 491.6 301.9 0 0CL +ATOM 212 B1 C 70 10.3 491.6 301.4 0 0CL +ATOM 213 COM C 71 273.3 69.3 74.9 0 0CL +ATOM 214 A1 C 71 274.9 67.8 75.2 0 0CL +ATOM 215 B1 C 71 275.0 68.4 74.7 0 0CL +ATOM 216 COM C 72 260.8 201.1 486.5 0 0CL +ATOM 217 A1 C 72 261.2 203.3 486.6 0 0CL +ATOM 218 B1 C 72 260.5 203.1 486.6 0 0CL +ATOM 219 COM C 73 426.2 440.9 432.7 0 0CL +ATOM 220 A1 C 73 427.9 440.2 431.6 0 0CL +ATOM 221 B1 C 73 427.5 440.7 431.2 0 0CL +ATOM 222 COM C 74 477.5 294.9 150.9 0 0CL +ATOM 223 A1 C 74 476.6 292.9 151.1 0 0CL +ATOM 224 B1 C 74 476.4 293.4 151.5 0 0CL +ATOM 225 COM C 75 175.0 79.6 26.9 0 0CL +ATOM 226 A1 C 75 176.8 78.6 27.5 0 0CL +ATOM 227 B1 C 75 176.9 79.2 27.0 0 0CL +ATOM 228 COM C 76 123.0 355.7 381.6 0 0CL +ATOM 229 A1 C 76 124.5 355.8 383.3 0 0CL +ATOM 230 B1 C 76 124.6 356.3 382.7 0 0CL +ATOM 231 COM C 77 275.3 16.2 187.9 0 0CL +ATOM 232 A1 C 77 274.3 14.7 186.7 0 0CL +ATOM 233 B1 C 77 274.7 14.5 187.3 0 0CL +ATOM 234 COM C 78 179.9 123.7 37.5 0 0CL +ATOM 235 A1 C 78 178.4 125.3 37.2 0 0CL +ATOM 236 B1 C 78 178.2 124.7 37.4 0 0CL +ATOM 237 COM C 79 202.0 431.7 306.2 0 0CL +ATOM 238 A1 C 79 203.7 433.1 306.2 0 0CL +ATOM 239 B1 C 79 203.1 433.4 306.2 0 0CL +ATOM 240 COM C 80 81.9 63.0 52.4 0 0CL +ATOM 241 A1 C 80 82.1 61.8 54.2 0 0CL +ATOM 242 B1 C 80 82.6 61.6 53.7 0 0CL +ATOM 243 COM C 81 44.5 300.8 335.9 0 0CL +ATOM 244 A1 C 81 43.1 300.3 337.5 0 0CL +ATOM 245 B1 C 81 43.1 301.0 337.2 0 0CL +ATOM 246 COM C 82 239.1 5.2 209.6 0 0CL +ATOM 247 A1 C 82 241.3 5.3 209.1 0 0CL +ATOM 248 B1 C 82 240.9 6.0 209.1 0 0CL +ATOM 249 COM C 83 124.0 84.1 73.6 0 0CL +ATOM 250 A1 C 83 124.3 85.9 74.9 0 0CL +ATOM 251 B1 C 83 123.6 85.7 74.7 0 0CL +ATOM 252 COM C 84 158.2 360.1 306.2 0 0CL +ATOM 253 A1 C 84 157.7 360.1 304.0 0 0CL +ATOM 254 B1 C 84 157.8 359.5 304.4 0 0CL +ATOM 255 COM C 85 224.9 464.0 231.9 0 0CL +ATOM 256 A1 C 85 224.1 462.0 231.9 0 0CL +ATOM 257 B1 C 85 223.7 462.5 231.5 0 0CL +ATOM 258 COM C 86 33.6 343.5 24.6 0 0CL +ATOM 259 A1 C 86 31.9 343.5 23.1 0 0CL +ATOM 260 B1 C 86 32.5 343.1 22.9 0 0CL +ATOM 261 COM C 87 132.1 329.8 401.6 0 0CL +ATOM 262 A1 C 87 131.6 327.6 402.0 0 0CL +ATOM 263 B1 C 87 131.5 328.1 402.5 0 0CL +ATOM 264 COM C 88 61.6 330.8 367.7 0 0CL +ATOM 265 A1 C 88 62.0 330.3 365.6 0 0CL +ATOM 266 B1 C 88 61.5 329.9 365.9 0 0CL +ATOM 267 COM C 89 128.7 279.1 2.2 0 0CL +ATOM 268 A1 C 89 130.9 279.6 2.2 0 0CL +ATOM 269 B1 C 89 130.6 279.1 2.7 0 0CL +ATOM 270 COM C 90 108.1 29.7 108.0 0 0CL +ATOM 271 A1 C 90 109.7 29.8 109.6 0 0CL +ATOM 272 B1 C 90 109.4 29.1 109.4 0 0CL +ATOM 273 COM C 91 102.3 110.0 476.0 0 0CL +ATOM 274 A1 C 91 102.6 112.1 476.9 0 0CL +ATOM 275 B1 C 91 102.6 112.0 476.1 0 0CL +ATOM 276 COM C 92 393.2 420.7 151.3 0 0CL +ATOM 277 A1 C 92 392.5 419.7 149.4 0 0CL +ATOM 278 B1 C 92 392.4 420.4 149.5 0 0CL +ATOM 279 COM C 93 49.7 156.5 11.5 0 0CL +ATOM 280 A1 C 93 50.9 155.7 9.8 0 0CL +ATOM 281 B1 C 93 50.5 155.2 10.2 0 0CL +ATOM 282 COM C 94 401.5 57.9 298.4 0 0CL +ATOM 283 A1 C 94 402.4 58.9 300.2 0 0CL +ATOM 284 B1 C 94 402.3 59.3 299.6 0 0CL +ATOM 285 COM C 95 73.5 365.5 284.4 0 0CL +ATOM 286 A1 C 95 73.2 366.9 282.8 0 0CL +ATOM 287 B1 C 95 73.5 367.2 283.4 0 0CL +ATOM 288 COM C 96 416.7 188.2 379.6 0 0CL +ATOM 289 A1 C 96 417.5 190.2 380.0 0 0CL +ATOM 290 B1 C 96 417.5 189.8 380.5 0 0CL +ATOM 291 COM C 97 29.2 409.8 91.7 0 0CL +ATOM 292 A1 C 97 28.8 410.1 93.9 0 0CL +ATOM 293 B1 C 97 29.1 409.5 93.7 0 0CL +ATOM 294 COM C 98 304.6 315.4 144.1 0 0CL +ATOM 295 A1 C 98 303.8 315.3 146.2 0 0CL +ATOM 296 B1 C 98 304.4 314.8 146.0 0 0CL +ATOM 297 COM C 99 147.4 298.7 426.1 0 0CL +ATOM 298 A1 C 99 146.2 300.0 424.7 0 0CL +ATOM 299 B1 C 99 146.5 299.4 424.4 0 0CL +ATOM 300 COM C 100 472.4 245.3 234.6 0 0CL +ATOM 301 A1 C 100 474.0 246.8 234.8 0 0CL +ATOM 302 B1 C 100 473.5 246.8 235.3 0 0CL +ATOM 303 COM C 101 172.2 442.5 202.2 0 0CL +ATOM 304 A1 C 101 170.4 443.4 203.3 0 0CL +ATOM 305 B1 C 101 170.3 443.1 202.6 0 0CL +ATOM 306 COM C 102 392.8 445.2 149.1 0 0CL +ATOM 307 A1 C 102 393.7 445.5 147.1 0 0CL +ATOM 308 B1 C 102 394.2 445.3 147.7 0 0CL +ATOM 309 COM C 103 212.3 348.9 377.0 0 0CL +ATOM 310 A1 C 103 210.5 349.2 378.3 0 0CL +ATOM 311 B1 C 103 210.5 348.5 378.0 0 0CL +ATOM 312 COM C 104 441.1 63.7 461.0 0 0CL +ATOM 313 A1 C 104 440.7 65.9 460.9 0 0CL +ATOM 314 B1 C 104 441.0 65.6 460.3 0 0CL +ATOM 315 COM C 105 147.5 248.5 232.0 0 0CL +ATOM 316 A1 C 105 148.1 247.9 234.0 0 0CL +ATOM 317 B1 C 105 147.9 248.6 234.0 0 0CL +ATOM 318 COM C 106 213.3 206.9 378.7 0 0CL +ATOM 319 A1 C 106 215.2 207.3 377.5 0 0CL +ATOM 320 B1 C 106 214.5 207.4 377.2 0 0CL +ATOM 321 COM C 107 332.3 109.8 316.6 0 0CL +ATOM 322 A1 C 107 331.9 110.3 318.7 0 0CL +ATOM 323 B1 C 107 332.5 110.6 318.5 0 0CL +ATOM 324 COM C 108 366.0 65.9 67.5 0 0CL +ATOM 325 A1 C 108 367.6 64.4 67.4 0 0CL +ATOM 326 B1 C 108 367.4 64.7 68.1 0 0CL +ATOM 327 COM C 109 323.1 321.9 128.6 0 0CL +ATOM 328 A1 C 109 325.2 322.1 128.0 0 0CL +ATOM 329 B1 C 109 325.1 321.5 128.3 0 0CL +ATOM 330 COM C 110 174.4 187.6 192.6 0 0CL +ATOM 331 A1 C 110 176.3 188.6 192.4 0 0CL +ATOM 332 B1 C 110 176.2 188.2 193.0 0 0CL +ATOM 333 COM C 111 174.4 454.9 185.7 0 0CL +ATOM 334 A1 C 111 173.2 453.1 185.6 0 0CL +ATOM 335 B1 C 111 173.8 453.1 185.1 0 0CL +ATOM 336 COM C 112 409.7 134.4 364.2 0 0CL +ATOM 337 A1 C 112 410.5 135.7 362.6 0 0CL +ATOM 338 B1 C 112 411.0 135.5 363.1 0 0CL +ATOM 339 COM C 113 429.9 208.1 289.5 0 0CL +ATOM 340 A1 C 113 428.3 209.4 288.7 0 0CL +ATOM 341 B1 C 113 428.1 208.9 289.2 0 0CL +ATOM 342 COM C 114 340.9 43.1 11.7 0 0CL +ATOM 343 A1 C 114 341.2 41.1 10.9 0 0CL +ATOM 344 B1 C 114 340.8 41.5 10.5 0 0CL +ATOM 345 COM C 115 341.1 298.8 224.4 0 0CL +ATOM 346 A1 C 115 340.0 300.0 225.9 0 0CL +ATOM 347 B1 C 115 340.1 299.3 226.0 0 0CL +ATOM 348 COM C 116 176.5 202.4 124.9 0 0CL +ATOM 349 A1 C 116 175.2 203.6 123.7 0 0CL +ATOM 350 B1 C 116 175.0 203.5 124.4 0 0CL +ATOM 351 COM C 117 89.5 476.0 96.3 0 0CL +ATOM 352 A1 C 117 87.4 475.3 96.3 0 0CL +ATOM 353 B1 C 117 87.7 475.4 95.7 0 0CL +ATOM 354 COM C 118 374.3 41.3 152.4 0 0CL +ATOM 355 A1 C 118 373.1 39.8 153.4 0 0CL +ATOM 356 B1 C 118 372.8 40.4 153.2 0 0CL +ATOM 357 COM C 119 274.6 219.4 356.0 0 0CL +ATOM 358 A1 C 119 273.6 217.9 354.7 0 0CL +ATOM 359 B1 C 119 274.2 217.7 354.9 0 0CL +ATOM 360 COM C 120 452.2 266.2 259.5 0 0CL +ATOM 361 A1 C 120 451.3 266.9 261.4 0 0CL +ATOM 362 B1 C 120 450.8 266.8 260.8 0 0CL +ATOM 363 COM C 121 306.4 80.2 364.2 0 0CL +ATOM 364 A1 C 121 308.2 81.0 365.3 0 0CL +ATOM 365 B1 C 121 307.8 80.5 365.6 0 0CL +ATOM 366 COM C 122 46.0 448.6 152.5 0 0CL +ATOM 367 A1 C 122 46.4 450.5 153.7 0 0CL +ATOM 368 B1 C 122 46.7 450.4 153.0 0 0CL +ATOM 369 COM C 123 56.9 285.5 276.0 0 0CL +ATOM 370 A1 C 123 58.0 285.2 274.2 0 0CL +ATOM 371 B1 C 123 57.3 285.2 274.1 0 0CL +ATOM 372 COM C 124 242.4 214.2 16.9 0 0CL +ATOM 373 A1 C 124 241.6 213.2 18.7 0 0CL +ATOM 374 B1 C 124 241.6 212.8 18.0 0 0CL +ATOM 375 COM C 125 129.0 88.7 444.0 0 0CL +ATOM 376 A1 C 125 130.4 88.4 445.7 0 0CL +ATOM 377 B1 C 125 130.0 87.8 445.5 0 0CL +ATOM 378 COM C 126 237.3 193.6 353.7 0 0CL +ATOM 379 A1 C 126 235.1 193.7 353.7 0 0CL +ATOM 380 B1 C 126 235.4 193.3 353.2 0 0CL +ATOM 381 COM C 127 291.7 179.4 399.6 0 0CL +ATOM 382 A1 C 127 292.9 180.3 401.2 0 0CL +ATOM 383 B1 C 127 293.0 180.6 400.6 0 0CL +ATOM 384 COM C 128 497.5 4.9 226.9 0 0CL +ATOM 385 A1 C 128 497.1 4.5 229.0 0 0CL +ATOM 386 B1 C 128 496.9 4.0 228.5 0 0CL +ATOM 387 COM C 129 56.3 149.9 443.9 0 0CL +ATOM 388 A1 C 129 58.5 149.6 444.1 0 0CL +ATOM 389 B1 C 129 58.1 149.3 444.6 0 0CL +ATOM 390 COM C 130 335.4 495.4 79.6 0 0CL +ATOM 391 A1 C 130 336.6 493.7 79.2 0 0CL +ATOM 392 B1 C 130 337.0 494.2 79.5 0 0CL +ATOM 393 COM C 131 418.8 4.2 129.3 0 0CL +ATOM 394 A1 C 131 420.4 3.2 130.4 0 0CL +ATOM 395 B1 C 131 419.8 3.1 130.7 0 0CL +ATOM 396 COM C 132 480.5 425.3 41.7 0 0CL +ATOM 397 A1 C 132 481.9 423.8 41.0 0 0CL +ATOM 398 B1 C 132 482.0 424.1 41.6 0 0CL +ATOM 399 COM C 133 197.5 69.7 489.7 0 0CL +ATOM 400 A1 C 133 196.4 70.5 487.9 0 0CL +ATOM 401 B1 C 133 196.2 70.8 488.6 0 0CL +ATOM 402 COM C 134 160.8 231.6 227.3 0 0CL +ATOM 403 A1 C 134 160.2 232.0 225.2 0 0CL +ATOM 404 B1 C 134 160.8 231.6 225.3 0 0CL +ATOM 405 COM C 135 432.1 394.8 62.3 0 0CL +ATOM 406 A1 C 135 430.2 393.8 62.0 0 0CL +ATOM 407 B1 C 135 430.5 394.0 61.4 0 0CL +ATOM 408 COM C 136 400.4 492.1 234.4 0 0CL +ATOM 409 A1 C 136 400.0 491.9 232.2 0 0CL +ATOM 410 B1 C 136 399.4 492.0 232.7 0 0CL +ATOM 411 COM C 137 180.6 483.3 407.3 0 0CL +ATOM 412 A1 C 137 180.7 481.1 407.2 0 0CL +ATOM 413 B1 C 137 180.8 481.4 407.8 0 0CL +ATOM 414 COM C 138 60.0 393.8 343.2 0 0CL +ATOM 415 A1 C 138 60.8 392.4 341.7 0 0CL +ATOM 416 B1 C 138 61.2 393.0 341.9 0 0CL +ATOM 417 COM C 139 232.7 494.6 43.2 0 0CL +ATOM 418 A1 C 139 234.4 493.5 44.1 0 0CL +ATOM 419 B1 C 139 233.9 493.8 44.6 0 0CL +ATOM 420 COM C 140 466.0 468.0 49.2 0 0CL +ATOM 421 A1 C 140 464.0 468.5 50.0 0 0CL +ATOM 422 B1 C 140 464.3 467.9 50.2 0 0CL +ATOM 423 COM C 141 192.7 395.3 267.0 0 0CL +ATOM 424 A1 C 141 193.7 396.9 265.7 0 0CL +ATOM 425 B1 C 141 194.0 396.6 266.3 0 0CL +ATOM 426 COM C 142 92.8 72.1 289.2 0 0CL +ATOM 427 A1 C 142 93.8 70.2 289.0 0 0CL +ATOM 428 B1 C 142 93.2 70.3 288.6 0 0CL +ATOM 429 COM C 143 209.3 375.3 212.8 0 0CL +ATOM 430 A1 C 143 208.9 377.0 214.2 0 0CL +ATOM 431 B1 C 143 209.3 376.4 214.4 0 0CL +ATOM 432 COM C 144 190.5 320.3 171.7 0 0CL +ATOM 433 A1 C 144 190.9 322.4 171.6 0 0CL +ATOM 434 B1 C 144 191.4 322.0 171.6 0 0CL +ATOM 435 COM C 145 314.4 419.5 490.6 0 0CL +ATOM 436 A1 C 145 313.2 420.2 492.3 0 0CL +ATOM 437 B1 C 145 312.9 419.9 491.8 0 0CL +ATOM 438 COM C 146 189.9 497.0 154.0 0 0CL +ATOM 439 A1 C 146 190.7 497.6 152.1 0 0CL +ATOM 440 B1 C 146 190.5 497.0 152.1 0 0CL +ATOM 441 COM C 147 157.0 485.1 448.3 0 0CL +ATOM 442 A1 C 147 158.7 484.3 449.3 0 0CL +ATOM 443 B1 C 147 158.1 484.1 449.6 0 0CL +ATOM 444 COM C 148 322.8 401.2 125.3 0 0CL +ATOM 445 A1 C 148 323.5 402.7 126.8 0 0CL +ATOM 446 B1 C 148 323.4 402.9 126.1 0 0CL +ATOM 447 COM C 149 291.7 447.3 331.5 0 0CL +ATOM 448 A1 C 149 292.2 448.9 330.0 0 0CL +ATOM 449 B1 C 149 292.5 448.2 329.9 0 0CL +ATOM 450 COM A 150 327.6 289.1 253.3 0 0CL +ATOM 451 C1 A 150 327.4 288.8 252.1 0 0CL +ATOM 452 B1 A 150 328.1 288.1 253.3 0 0CL +ATOM 453 COM A 151 409.8 465.8 3.3 0 0CL +ATOM 454 C1 A 151 409.7 467.0 2.9 0 0CL +ATOM 455 B1 A 151 410.5 465.7 2.6 0 0CL +ATOM 456 COM A 152 427.9 211.1 288.6 0 0CL +ATOM 457 C1 A 152 428.8 210.1 288.5 0 0CL +ATOM 458 B1 A 152 427.5 210.5 289.3 0 0CL +ATOM 459 COM A 153 178.1 126.9 38.0 0 0CL +ATOM 460 C1 A 153 179.0 126.0 37.6 0 0CL +ATOM 461 B1 A 153 177.5 126.0 38.3 0 0CL +ATOM 462 COM A 154 163.9 233.9 123.9 0 0CL +ATOM 463 C1 A 154 164.1 232.9 124.8 0 0CL +ATOM 464 B1 A 154 164.5 233.4 123.3 0 0CL +ATOM 465 COM A 155 160.0 483.1 449.0 0 0CL +ATOM 466 C1 A 155 159.3 484.1 448.6 0 0CL +ATOM 467 B1 A 155 159.2 482.8 449.5 0 0CL +ATOM 468 COM A 156 253.4 56.0 268.5 0 0CL +ATOM 469 C1 A 156 252.1 56.3 268.3 0 0CL +ATOM 470 B1 A 156 253.0 55.5 269.3 0 0CL +ATOM 471 COM A 157 95.2 142.5 430.4 0 0CL +ATOM 472 C1 A 157 95.1 142.3 431.7 0 0CL +ATOM 473 B1 A 157 96.2 142.5 430.6 0 0CL +ATOM 474 COM A 158 336.7 492.0 79.7 0 0CL +ATOM 475 C1 A 158 336.0 493.0 79.3 0 0CL +ATOM 476 B1 A 158 337.4 492.7 80.1 0 0CL +ATOM 477 COM A 159 196.8 71.3 486.4 0 0CL +ATOM 478 C1 A 159 197.1 70.4 487.3 0 0CL +ATOM 479 B1 A 159 196.4 71.8 487.3 0 0CL +ATOM 480 COM A 160 421.6 2.0 130.2 0 0CL +ATOM 481 C1 A 160 421.0 3.0 129.7 0 0CL +ATOM 482 B1 A 160 420.7 1.7 130.6 0 0CL +ATOM 483 COM A 161 331.6 74.0 89.6 0 0CL +ATOM 484 C1 A 161 332.8 73.7 89.7 0 0CL +ATOM 485 B1 A 161 331.5 73.1 89.1 0 0CL +ATOM 486 COM A 162 358.2 36.5 144.7 0 0CL +ATOM 487 C1 A 162 359.5 36.5 144.7 0 0CL +ATOM 488 B1 A 162 358.3 36.1 143.8 0 0CL +ATOM 489 COM A 163 22.8 395.6 405.7 0 0CL +ATOM 490 C1 A 163 21.6 395.1 405.6 0 0CL +ATOM 491 B1 A 163 23.1 394.8 405.0 0 0CL +ATOM 492 COM A 164 41.6 299.3 337.6 0 0CL +ATOM 493 C1 A 164 42.8 299.4 337.2 0 0CL +ATOM 494 B1 A 164 41.5 300.3 337.4 0 0CL +ATOM 495 COM A 165 429.7 440.3 431.6 0 0CL +ATOM 496 C1 A 165 428.6 440.1 432.3 0 0CL +ATOM 497 B1 A 165 429.1 441.0 431.0 0 0CL +ATOM 498 COM A 166 17.7 42.0 446.4 0 0CL +ATOM 499 C1 A 166 18.8 41.6 447.0 0 0CL +ATOM 500 B1 A 166 18.0 41.4 445.6 0 0CL +ATOM 501 COM A 167 400.2 492.9 230.8 0 0CL +ATOM 502 C1 A 167 400.7 492.5 231.9 0 0CL +ATOM 503 B1 A 167 399.3 492.9 231.3 0 0CL +ATOM 504 COM A 168 481.8 422.1 40.6 0 0CL +ATOM 505 C1 A 168 481.3 423.3 40.5 0 0CL +ATOM 506 B1 A 168 482.2 422.4 41.5 0 0CL +ATOM 507 COM A 169 277.6 497.4 495.2 0 0CL +ATOM 508 C1 A 169 278.8 497.5 495.7 0 0CL +ATOM 509 B1 A 169 278.1 496.6 494.6 0 0CL +ATOM 510 COM A 170 374.6 313.9 74.8 0 0CL +ATOM 511 C1 A 170 374.0 313.7 73.6 0 0CL +ATOM 512 B1 A 170 374.1 313.1 75.1 0 0CL +ATOM 513 COM A 171 208.0 460.0 402.4 0 0CL +ATOM 514 C1 A 171 206.8 460.2 402.8 0 0CL +ATOM 515 B1 A 171 208.3 460.6 403.1 0 0CL +ATOM 516 COM A 172 307.5 110.0 251.4 0 0CL +ATOM 517 C1 A 172 308.5 109.5 250.8 0 0CL +ATOM 518 B1 A 172 307.0 109.3 251.0 0 0CL +ATOM 519 COM A 173 235.0 491.9 44.1 0 0CL +ATOM 520 C1 A 173 234.5 492.8 43.5 0 0CL +ATOM 521 B1 A 173 234.4 492.2 44.9 0 0CL +ATOM 522 COM A 174 243.7 240.4 114.8 0 0CL +ATOM 523 C1 A 174 242.5 240.8 114.8 0 0CL +ATOM 524 B1 A 174 243.8 241.0 115.7 0 0CL +ATOM 525 COM A 175 272.1 217.0 354.7 0 0CL +ATOM 526 C1 A 175 272.7 218.1 354.9 0 0CL +ATOM 527 B1 A 175 273.0 216.6 355.0 0 0CL +ATOM 528 COM A 176 233.8 193.3 354.7 0 0CL +ATOM 529 C1 A 176 235.0 193.8 354.6 0 0CL +ATOM 530 B1 A 176 234.1 192.6 354.0 0 0CL +ATOM 531 COM A 177 159.9 85.7 44.6 0 0CL +ATOM 532 C1 A 177 160.8 84.8 44.7 0 0CL +ATOM 533 B1 A 177 159.5 85.1 43.9 0 0CL +ATOM 534 COM A 178 275.9 67.2 76.5 0 0CL +ATOM 535 C1 A 178 274.7 67.6 76.1 0 0CL +ATOM 536 B1 A 178 276.2 67.9 75.8 0 0CL +ATOM 537 COM A 179 210.2 349.3 380.0 0 0CL +ATOM 538 C1 A 179 210.9 349.6 379.0 0 0CL +ATOM 539 B1 A 179 210.1 348.4 379.6 0 0CL +ATOM 540 COM A 180 242.8 5.1 209.9 0 0CL +ATOM 541 C1 A 180 241.6 4.7 209.6 0 0CL +ATOM 542 B1 A 180 242.4 6.0 209.8 0 0CL +ATOM 543 COM A 181 372.5 38.1 153.1 0 0CL +ATOM 544 C1 A 181 373.5 39.0 153.0 0 0CL +ATOM 545 B1 A 181 371.9 39.0 152.9 0 0CL +ATOM 546 COM A 182 144.5 300.4 424.5 0 0CL +ATOM 547 C1 A 182 145.5 300.2 425.3 0 0CL +ATOM 548 B1 A 182 144.9 299.6 423.9 0 0CL +ATOM 549 COM A 183 323.0 403.5 128.3 0 0CL +ATOM 550 C1 A 183 323.1 402.4 127.5 0 0CL +ATOM 551 B1 A 183 322.9 403.9 127.3 0 0CL +ATOM 552 COM A 184 59.1 286.1 273.1 0 0CL +ATOM 553 C1 A 184 58.7 285.8 274.3 0 0CL +ATOM 554 B1 A 184 58.1 286.1 272.9 0 0CL +ATOM 555 COM A 185 205.1 433.5 307.2 0 0CL +ATOM 556 C1 A 185 204.3 432.5 306.7 0 0CL +ATOM 557 B1 A 185 204.2 434.0 307.3 0 0CL +ATOM 558 COM A 186 275.5 249.5 86.1 0 0CL +ATOM 559 C1 A 186 275.9 250.0 87.3 0 0CL +ATOM 560 B1 A 186 274.6 249.8 86.4 0 0CL +ATOM 561 COM A 187 134.2 227.8 288.8 0 0CL +ATOM 562 C1 A 187 135.3 227.2 288.7 0 0CL +ATOM 563 B1 A 187 134.4 227.8 289.8 0 0CL +ATOM 564 COM A 188 209.6 416.5 479.2 0 0CL +ATOM 565 C1 A 188 208.4 415.9 479.3 0 0CL +ATOM 566 B1 A 188 210.0 415.5 479.4 0 0CL +ATOM 567 COM A 189 12.9 260.6 227.7 0 0CL +ATOM 568 C1 A 189 13.0 259.6 226.8 0 0CL +ATOM 569 B1 A 189 14.0 260.5 227.7 0 0CL +ATOM 570 COM A 190 95.7 233.2 102.8 0 0CL +ATOM 571 C1 A 190 95.1 232.9 104.0 0 0CL +ATOM 572 B1 A 190 96.5 232.9 103.3 0 0CL +ATOM 573 COM A 191 169.5 443.1 204.7 0 0CL +ATOM 574 C1 A 191 170.7 443.2 204.1 0 0CL +ATOM 575 B1 A 191 169.2 442.7 203.8 0 0CL +ATOM 576 COM A 192 345.5 302.4 77.9 0 0CL +ATOM 577 C1 A 192 344.4 302.6 77.3 0 0CL +ATOM 578 B1 A 192 345.4 303.4 78.2 0 0CL +ATOM 579 COM A 193 95.3 69.5 288.3 0 0CL +ATOM 580 C1 A 193 94.7 70.5 289.0 0 0CL +ATOM 581 B1 A 193 94.4 69.5 287.8 0 0CL +ATOM 582 COM A 194 175.3 205.2 122.8 0 0CL +ATOM 583 C1 A 194 175.9 204.0 123.2 0 0CL +ATOM 584 B1 A 194 174.8 205.1 123.8 0 0CL +ATOM 585 COM A 195 262.3 72.0 479.2 0 0CL +ATOM 586 C1 A 195 262.8 70.8 479.1 0 0CL +ATOM 587 B1 A 195 262.4 72.0 478.2 0 0CL +ATOM 588 COM A 196 193.7 117.9 175.0 0 0CL +ATOM 589 C1 A 196 193.0 117.8 173.9 0 0CL +ATOM 590 B1 A 196 193.9 116.9 174.8 0 0CL +ATOM 591 COM A 197 97.7 11.0 495.9 0 0CL +ATOM 592 C1 A 197 97.4 11.2 494.7 0 0CL +ATOM 593 B1 A 197 96.7 10.7 496.1 0 0CL +ATOM 594 COM A 198 274.3 115.4 100.3 0 0CL +ATOM 595 C1 A 198 274.3 114.3 99.6 0 0CL +ATOM 596 B1 A 198 273.4 115.1 100.7 0 0CL +ATOM 597 COM A 199 303.8 316.3 147.6 0 0CL +ATOM 598 C1 A 199 303.7 316.2 146.3 0 0CL +ATOM 599 B1 A 199 304.5 315.6 147.5 0 0CL +ATOM 600 COM A 200 463.2 346.6 454.7 0 0CL +ATOM 601 C1 A 200 461.9 347.0 454.6 0 0CL +ATOM 602 B1 A 200 463.1 346.5 453.7 0 0CL +ATOM 603 COM A 201 498.0 4.1 230.4 0 0CL +ATOM 604 C1 A 201 497.9 4.8 229.3 0 0CL +ATOM 605 B1 A 201 497.6 3.4 229.9 0 0CL +ATOM 606 COM A 202 132.1 88.4 446.0 0 0CL +ATOM 607 C1 A 202 131.1 89.0 445.4 0 0CL +ATOM 608 B1 A 202 131.7 87.5 445.8 0 0CL +ATOM 609 COM A 203 410.0 161.9 428.9 0 0CL +ATOM 610 C1 A 203 410.0 163.2 428.9 0 0CL +ATOM 611 B1 A 203 409.5 161.9 428.0 0 0CL +ATOM 612 COM A 204 209.3 378.7 214.3 0 0CL +ATOM 613 C1 A 204 208.9 377.7 213.5 0 0CL +ATOM 614 B1 A 204 209.8 378.0 214.8 0 0CL +ATOM 615 COM A 205 227.0 17.9 138.2 0 0CL +ATOM 616 C1 A 205 226.7 19.0 138.7 0 0CL +ATOM 617 B1 A 205 226.2 17.5 138.7 0 0CL +ATOM 618 COM A 206 282.8 482.0 311.8 0 0CL +ATOM 619 C1 A 206 281.6 482.6 311.7 0 0CL +ATOM 620 B1 A 206 282.5 481.5 311.0 0 0CL +ATOM 621 COM A 207 173.0 451.6 186.6 0 0CL +ATOM 622 C1 A 207 173.1 452.9 186.5 0 0CL +ATOM 623 B1 A 207 173.7 451.6 185.9 0 0CL +ATOM 624 COM A 208 401.9 59.3 301.8 0 0CL +ATOM 625 C1 A 208 401.9 58.5 300.9 0 0CL +ATOM 626 B1 A 208 401.8 60.0 301.1 0 0CL +ATOM 627 COM A 209 379.5 319.3 279.2 0 0CL +ATOM 628 C1 A 209 379.0 318.4 280.1 0 0CL +ATOM 629 B1 A 209 380.4 319.0 279.6 0 0CL +ATOM 630 COM A 210 480.2 482.2 54.2 0 0CL +ATOM 631 C1 A 210 479.6 482.7 55.2 0 0CL +ATOM 632 B1 A 210 480.0 481.3 54.7 0 0CL +ATOM 633 COM A 211 207.1 327.5 423.1 0 0CL +ATOM 634 C1 A 211 207.3 328.8 423.3 0 0CL +ATOM 635 B1 A 211 208.1 327.4 423.3 0 0CL +ATOM 636 COM A 212 87.0 20.3 150.8 0 0CL +ATOM 637 C1 A 212 88.0 20.2 151.7 0 0CL +ATOM 638 B1 A 212 86.7 19.4 151.2 0 0CL +ATOM 639 COM A 213 315.2 333.7 217.1 0 0CL +ATOM 640 C1 A 213 314.6 333.0 216.2 0 0CL +ATOM 641 B1 A 213 314.6 334.4 216.9 0 0CL +ATOM 642 COM A 214 418.9 191.2 379.5 0 0CL +ATOM 643 C1 A 214 417.9 190.3 379.2 0 0CL +ATOM 644 B1 A 214 418.9 190.7 380.4 0 0CL +ATOM 645 COM A 215 9.3 133.4 399.2 0 0CL +ATOM 646 C1 A 215 9.8 134.5 399.6 0 0CL +ATOM 647 B1 A 215 10.2 133.0 399.3 0 0CL +ATOM 648 COM A 216 429.6 392.1 62.2 0 0CL +ATOM 649 C1 A 216 430.3 393.1 62.7 0 0CL +ATOM 650 B1 A 216 429.9 392.5 61.3 0 0CL +ATOM 651 COM A 217 182.9 104.2 353.7 0 0CL +ATOM 652 C1 A 217 182.6 103.7 354.8 0 0CL +ATOM 653 B1 A 217 183.6 104.8 354.2 0 0CL +ATOM 654 COM A 218 323.9 89.4 270.3 0 0CL +ATOM 655 C1 A 218 323.2 89.5 269.2 0 0CL +ATOM 656 B1 A 218 324.7 89.1 269.7 0 0CL +ATOM 657 COM A 219 101.7 113.2 477.7 0 0CL +ATOM 658 C1 A 219 102.0 112.0 477.6 0 0CL +ATOM 659 B1 A 219 101.8 113.3 476.7 0 0CL +ATOM 660 COM A 220 492.5 281.0 406.1 0 0CL +ATOM 661 C1 A 220 492.3 280.8 407.4 0 0CL +ATOM 662 B1 A 220 492.8 281.9 406.3 0 0CL +ATOM 663 COM A 221 195.7 338.1 445.1 0 0CL +ATOM 664 C1 A 221 196.6 337.3 444.6 0 0CL +ATOM 665 B1 A 221 196.2 338.9 444.6 0 0CL +ATOM 666 COM A 222 267.9 274.4 207.7 0 0CL +ATOM 667 C1 A 222 266.8 274.5 208.4 0 0CL +ATOM 668 B1 A 222 268.2 273.7 208.3 0 0CL +ATOM 669 COM A 223 328.4 394.4 20.5 0 0CL +ATOM 670 C1 A 223 328.5 394.5 21.8 0 0CL +ATOM 671 B1 A 223 329.2 393.8 20.6 0 0CL +ATOM 672 COM A 224 254.0 100.7 388.3 0 0CL +ATOM 673 C1 A 224 253.8 100.3 387.1 0 0CL +ATOM 674 B1 A 224 254.9 101.1 387.9 0 0CL +ATOM 675 COM A 225 45.5 451.8 154.3 0 0CL +ATOM 676 C1 A 225 45.6 450.6 154.1 0 0CL +ATOM 677 B1 A 225 46.0 451.9 153.4 0 0CL +ATOM 678 COM A 226 179.6 479.8 406.9 0 0CL +ATOM 679 C1 A 226 180.0 481.0 406.6 0 0CL +ATOM 680 B1 A 226 179.9 480.0 407.8 0 0CL +ATOM 681 COM A 227 297.2 197.3 284.8 0 0CL +ATOM 682 C1 A 227 298.4 197.5 284.7 0 0CL +ATOM 683 B1 A 227 297.1 198.0 284.0 0 0CL +ATOM 684 COM A 228 450.9 266.2 263.0 0 0CL +ATOM 685 C1 A 228 451.8 266.3 262.0 0 0CL +ATOM 686 B1 A 228 450.2 266.2 262.2 0 0CL +ATOM 687 COM A 229 292.7 181.3 402.6 0 0CL +ATOM 688 C1 A 229 292.3 180.3 401.9 0 0CL +ATOM 689 B1 A 229 292.9 181.7 401.7 0 0CL +ATOM 690 COM A 230 190.7 323.7 170.3 0 0CL +ATOM 691 C1 A 230 190.2 322.7 170.9 0 0CL +ATOM 692 B1 A 230 191.6 323.2 170.5 0 0CL +ATOM 693 COM A 231 475.6 291.8 150.2 0 0CL +ATOM 694 C1 A 231 476.6 292.7 150.2 0 0CL +ATOM 695 B1 A 231 475.2 292.5 150.9 0 0CL +ATOM 696 COM A 232 9.9 491.3 303.6 0 0CL +ATOM 697 C1 A 232 9.5 492.1 302.7 0 0CL +ATOM 698 B1 A 232 10.7 491.0 303.0 0 0CL +ATOM 699 COM A 233 124.8 86.2 76.6 0 0CL +ATOM 700 C1 A 233 125.0 85.5 75.4 0 0CL +ATOM 701 B1 A 233 123.8 86.1 76.4 0 0CL +ATOM 702 COM A 234 75.1 325.2 316.4 0 0CL +ATOM 703 C1 A 234 73.8 325.1 316.6 0 0CL +ATOM 704 B1 A 234 75.0 324.2 316.4 0 0CL +ATOM 705 COM A 235 422.4 32.9 391.4 0 0CL +ATOM 706 C1 A 235 422.1 33.7 390.4 0 0CL +ATOM 707 B1 A 235 421.6 32.4 391.1 0 0CL +ATOM 708 COM A 236 45.6 292.3 212.4 0 0CL +ATOM 709 C1 A 236 44.8 292.7 211.5 0 0CL +ATOM 710 B1 A 236 45.3 291.4 212.1 0 0CL +ATOM 711 COM A 237 313.0 419.7 494.0 0 0CL +ATOM 712 C1 A 237 313.8 419.9 493.0 0 0CL +ATOM 713 B1 A 237 312.3 419.4 493.3 0 0CL +ATOM 714 COM A 238 86.6 473.8 96.8 0 0CL +ATOM 715 C1 A 238 87.5 474.7 97.0 0 0CL +ATOM 716 B1 A 238 86.9 474.0 95.8 0 0CL +ATOM 717 COM A 239 111.3 30.2 109.7 0 0CL +ATOM 718 C1 A 239 110.1 30.5 109.3 0 0CL +ATOM 719 B1 A 239 111.1 29.2 109.6 0 0CL +ATOM 720 COM A 240 274.4 135.4 23.3 0 0CL +ATOM 721 C1 A 240 274.0 134.3 22.8 0 0CL +ATOM 722 B1 A 240 274.3 135.8 22.4 0 0CL +ATOM 723 COM A 241 222.4 118.1 55.1 0 0CL +ATOM 724 C1 A 241 223.0 118.4 56.2 0 0CL +ATOM 725 B1 A 241 222.6 117.1 55.4 0 0CL +ATOM 726 COM A 242 335.8 253.3 205.7 0 0CL +ATOM 727 C1 A 242 335.6 252.8 206.9 0 0CL +ATOM 728 B1 A 242 336.5 252.5 205.6 0 0CL +ATOM 729 COM A 243 463.3 469.8 50.9 0 0CL +ATOM 730 C1 A 243 464.1 469.4 49.9 0 0CL +ATOM 731 B1 A 243 463.6 468.9 51.4 0 0CL +ATOM 732 COM A 244 226.6 274.4 344.5 0 0CL +ATOM 733 C1 A 244 227.7 274.8 343.9 0 0CL +ATOM 734 B1 A 244 227.2 274.0 345.2 0 0CL +ATOM 735 COM A 245 125.1 56.1 156.0 0 0CL +ATOM 736 C1 A 245 125.4 54.9 156.6 0 0CL +ATOM 737 B1 A 245 125.2 55.5 155.2 0 0CL +ATOM 738 COM A 246 50.9 155.8 8.1 0 0CL +ATOM 739 C1 A 246 50.8 156.4 9.2 0 0CL +ATOM 740 B1 A 246 50.5 155.0 8.5 0 0CL +ATOM 741 COM A 247 3.9 284.2 493.1 0 0CL +ATOM 742 C1 A 247 4.4 283.6 492.1 0 0CL +ATOM 743 B1 A 247 4.3 283.5 493.7 0 0CL +ATOM 744 COM A 248 309.9 81.0 365.1 0 0CL +ATOM 745 C1 A 248 308.7 81.1 364.6 0 0CL +ATOM 746 B1 A 248 309.5 80.3 365.7 0 0CL +ATOM 747 COM A 249 340.3 301.4 226.9 0 0CL +ATOM 748 C1 A 249 340.4 300.8 225.7 0 0CL +ATOM 749 B1 A 249 340.4 300.4 227.3 0 0CL +ATOM 750 COM A 250 29.3 411.2 95.2 0 0CL +ATOM 751 C1 A 250 28.9 411.1 93.9 0 0CL +ATOM 752 B1 A 250 29.8 410.3 95.0 0 0CL +ATOM 753 COM A 251 475.7 246.8 235.1 0 0CL +ATOM 754 C1 A 251 474.7 246.3 234.5 0 0CL +ATOM 755 B1 A 251 475.1 246.9 235.9 0 0CL +ATOM 756 COM A 252 468.2 486.6 52.6 0 0CL +ATOM 757 C1 A 252 469.0 486.6 51.6 0 0CL +ATOM 758 B1 A 252 469.0 486.2 53.1 0 0CL +ATOM 759 COM A 253 165.5 296.5 426.7 0 0CL +ATOM 760 C1 A 253 166.7 296.2 426.5 0 0CL +ATOM 761 B1 A 253 165.2 295.5 426.6 0 0CL +ATOM 762 COM A 254 124.5 356.4 384.9 0 0CL +ATOM 763 C1 A 254 123.9 355.7 384.0 0 0CL +ATOM 764 B1 A 254 124.8 357.0 384.2 0 0CL +ATOM 765 COM A 255 393.3 419.0 148.1 0 0CL +ATOM 766 C1 A 255 393.2 419.1 149.3 0 0CL +ATOM 767 B1 A 255 393.0 420.0 148.0 0 0CL +ATOM 768 COM A 256 177.8 78.3 28.9 0 0CL +ATOM 769 C1 A 256 176.6 78.4 28.3 0 0CL +ATOM 770 B1 A 256 178.0 79.1 28.3 0 0CL +ATOM 771 COM A 257 16.8 456.8 343.3 0 0CL +ATOM 772 C1 A 257 16.3 455.8 342.6 0 0CL +ATOM 773 B1 A 257 16.4 456.4 344.1 0 0CL +ATOM 774 COM A 258 224.6 460.4 231.5 0 0CL +ATOM 775 C1 A 258 224.9 461.5 232.0 0 0CL +ATOM 776 B1 A 258 224.0 460.9 230.8 0 0CL +ATOM 777 COM A 259 461.2 103.3 143.3 0 0CL +ATOM 778 C1 A 259 460.5 102.6 144.0 0 0CL +ATOM 779 B1 A 259 461.2 102.5 142.6 0 0CL +ATOM 780 COM A 260 16.6 380.7 281.7 0 0CL +ATOM 781 C1 A 260 16.4 381.6 282.6 0 0CL +ATOM 782 B1 A 260 17.5 381.2 281.5 0 0CL +ATOM 783 COM A 261 249.2 449.8 181.1 0 0CL +ATOM 784 C1 A 261 249.8 451.0 181.1 0 0CL +ATOM 785 B1 A 261 248.5 450.2 181.8 0 0CL +ATOM 786 COM A 262 130.5 326.4 401.4 0 0CL +ATOM 787 C1 A 262 131.3 327.4 401.1 0 0CL +ATOM 788 B1 A 262 130.3 327.0 402.3 0 0CL +ATOM 789 COM A 263 278.3 253.1 361.7 0 0CL +ATOM 790 C1 A 263 277.3 252.4 361.2 0 0CL +ATOM 791 B1 A 263 277.7 253.2 362.5 0 0CL +ATOM 792 COM A 264 210.6 439.2 320.1 0 0CL +ATOM 793 C1 A 264 211.8 439.7 320.2 0 0CL +ATOM 794 B1 A 264 211.1 438.3 320.2 0 0CL +ATOM 795 COM A 265 184.4 33.8 154.8 0 0CL +ATOM 796 C1 A 265 184.8 32.8 155.6 0 0CL +ATOM 797 B1 A 265 184.6 33.1 154.1 0 0CL +ATOM 798 COM A 266 408.7 149.3 301.4 0 0CL +ATOM 799 C1 A 266 407.4 148.9 301.5 0 0CL +ATOM 800 B1 A 266 408.6 149.7 302.3 0 0CL +ATOM 801 COM A 267 132.2 279.3 1.1 0 0CL +ATOM 802 C1 A 267 131.0 279.6 1.2 0 0CL +ATOM 803 B1 A 267 132.1 278.7 1.9 0 0CL +ATOM 804 COM A 268 394.0 155.6 43.5 0 0CL +ATOM 805 C1 A 268 394.6 155.6 42.3 0 0CL +ATOM 806 B1 A 268 393.9 154.6 43.3 0 0CL +ATOM 807 COM A 269 226.5 486.2 249.6 0 0CL +ATOM 808 C1 A 269 226.7 487.2 248.7 0 0CL +ATOM 809 B1 A 269 226.2 485.7 248.7 0 0CL +ATOM 810 COM A 270 5.2 224.7 396.6 0 0CL +ATOM 811 C1 A 270 4.3 225.6 396.5 0 0CL +ATOM 812 B1 A 270 4.8 224.4 397.5 0 0CL +ATOM 813 COM A 271 128.4 382.9 375.4 0 0CL +ATOM 814 C1 A 271 128.3 384.2 375.5 0 0CL +ATOM 815 B1 A 271 128.9 383.0 376.3 0 0CL +ATOM 816 COM A 272 177.7 188.5 191.3 0 0CL +ATOM 817 C1 A 272 176.4 188.5 191.5 0 0CL +ATOM 818 B1 A 272 177.7 188.0 192.2 0 0CL +ATOM 819 COM A 273 59.7 148.6 443.3 0 0CL +ATOM 820 C1 A 273 58.6 149.4 443.2 0 0CL +ATOM 821 B1 A 273 59.3 148.3 444.1 0 0CL +ATOM 822 COM A 274 147.4 246.8 235.3 0 0CL +ATOM 823 C1 A 274 147.7 247.0 234.0 0 0CL +ATOM 824 B1 A 274 147.2 247.8 235.3 0 0CL +ATOM 825 COM A 275 56.7 269.4 350.7 0 0CL +ATOM 826 C1 A 275 57.2 270.1 351.7 0 0CL +ATOM 827 B1 A 275 57.5 268.8 350.8 0 0CL +ATOM 828 COM A 276 3.5 309.4 31.8 0 0CL +ATOM 829 C1 A 276 2.6 308.6 32.4 0 0CL +ATOM 830 B1 A 276 2.7 309.4 31.1 0 0CL +ATOM 831 COM A 277 190.3 498.7 150.8 0 0CL +ATOM 832 C1 A 277 190.4 498.5 152.1 0 0CL +ATOM 833 B1 A 277 190.0 497.7 150.7 0 0CL +ATOM 834 COM A 278 468.4 430.1 242.6 0 0CL +ATOM 835 C1 A 278 467.4 429.2 242.5 0 0CL +ATOM 836 B1 A 278 467.9 430.4 243.5 0 0CL +ATOM 837 COM A 279 66.9 414.6 191.5 0 0CL +ATOM 838 C1 A 279 66.2 414.1 192.5 0 0CL +ATOM 839 B1 A 279 66.0 414.5 190.9 0 0CL +ATOM 840 COM A 280 208.2 485.9 46.2 0 0CL +ATOM 841 C1 A 280 207.0 486.5 46.1 0 0CL +ATOM 842 B1 A 280 207.7 485.3 46.8 0 0CL +ATOM 843 COM A 281 50.5 295.9 291.4 0 0CL +ATOM 844 C1 A 281 49.4 295.8 290.7 0 0CL +ATOM 845 B1 A 281 50.9 296.2 290.5 0 0CL +ATOM 846 COM A 282 348.9 327.1 45.0 0 0CL +ATOM 847 C1 A 282 347.9 326.3 45.3 0 0CL +ATOM 848 B1 A 282 349.2 326.3 44.4 0 0CL +ATOM 849 COM A 283 410.8 135.5 360.9 0 0CL +ATOM 850 C1 A 283 410.0 135.3 361.9 0 0CL +ATOM 851 B1 A 283 411.6 135.4 361.6 0 0CL +ATOM 852 COM A 284 158.9 231.5 224.2 0 0CL +ATOM 853 C1 A 284 159.2 231.9 225.4 0 0CL +ATOM 854 B1 A 284 159.8 231.0 224.1 0 0CL +ATOM 855 COM A 285 103.4 388.7 166.5 0 0CL +ATOM 856 C1 A 285 104.4 389.5 167.0 0 0CL +ATOM 857 B1 A 285 104.2 388.4 165.8 0 0CL +ATOM 858 COM A 286 220.2 321.4 413.8 0 0CL +ATOM 859 C1 A 286 219.0 320.8 413.8 0 0CL +ATOM 860 B1 A 286 220.0 321.6 414.8 0 0CL +ATOM 861 COM A 287 367.8 62.7 67.1 0 0CL +ATOM 862 C1 A 287 367.2 63.9 66.8 0 0CL +ATOM 863 B1 A 287 367.6 63.0 68.0 0 0CL +ATOM 864 COM A 288 73.8 367.2 281.2 0 0CL +ATOM 865 C1 A 288 73.4 366.4 282.1 0 0CL +ATOM 866 B1 A 288 74.2 367.7 282.0 0 0CL +ATOM 867 COM A 289 326.1 322.2 126.5 0 0CL +ATOM 868 C1 A 289 325.1 322.5 127.2 0 0CL +ATOM 869 B1 A 289 326.0 321.3 127.0 0 0CL +ATOM 870 COM A 290 393.7 444.7 145.6 0 0CL +ATOM 871 C1 A 290 393.0 445.1 146.6 0 0CL +ATOM 872 B1 A 290 394.4 444.5 146.2 0 0CL +ATOM 873 COM A 291 330.6 111.2 319.6 0 0CL +ATOM 874 C1 A 291 330.9 110.4 318.7 0 0CL +ATOM 875 B1 A 291 331.5 111.7 319.4 0 0CL +ATOM 876 COM A 292 184.4 131.6 427.6 0 0CL +ATOM 877 C1 A 292 185.4 130.8 427.8 0 0CL +ATOM 878 B1 A 292 185.2 132.3 427.7 0 0CL +ATOM 879 COM A 293 242.2 212.4 20.1 0 0CL +ATOM 880 C1 A 293 242.3 213.4 19.3 0 0CL +ATOM 881 B1 A 293 242.0 211.8 19.3 0 0CL +ATOM 882 COM A 294 213.4 391.3 354.5 0 0CL +ATOM 883 C1 A 294 212.2 391.0 354.8 0 0CL +ATOM 884 B1 A 294 213.2 391.0 353.6 0 0CL +ATOM 885 COM A 295 302.8 276.7 141.5 0 0CL +ATOM 886 C1 A 295 302.8 278.0 141.3 0 0CL +ATOM 887 B1 A 295 302.0 276.9 142.1 0 0CL +ATOM 888 COM A 296 389.6 151.3 323.1 0 0CL +ATOM 889 C1 A 296 388.8 151.7 324.0 0 0CL +ATOM 890 B1 A 296 390.1 152.2 323.2 0 0CL +ATOM 891 COM A 297 61.7 331.0 364.0 0 0CL +ATOM 892 C1 A 297 62.1 331.2 365.3 0 0CL +ATOM 893 B1 A 297 61.0 330.4 364.4 0 0CL +ATOM 894 COM A 298 245.9 336.2 391.4 0 0CL +ATOM 895 C1 A 298 244.6 336.3 391.2 0 0CL +ATOM 896 B1 A 298 245.7 336.9 392.2 0 0CL +ATOM 897 COM A 299 79.9 424.1 420.1 0 0CL +ATOM 898 C1 A 299 80.0 424.5 421.4 0 0CL +ATOM 899 B1 A 299 80.3 425.1 419.9 0 0CL +ATOM 900 COM B 300 423.3 481.1 24.8 0 0CL +ATOM 901 C1 B 300 424.4 480.3 24.4 0 0CL +ATOM 902 A1 B 300 423.3 480.7 24.3 0 0CL +ATOM 903 COM B 301 474.7 247.6 236.9 0 0CL +ATOM 904 C1 B 301 473.7 247.3 235.8 0 0CL +ATOM 905 A1 B 301 474.9 247.4 236.3 0 0CL +ATOM 906 COM B 302 332.6 112.3 319.7 0 0CL +ATOM 907 C1 B 302 332.7 111.0 319.0 0 0CL +ATOM 908 A1 B 302 332.1 111.9 319.6 0 0CL +ATOM 909 COM B 303 178.8 79.7 27.6 0 0CL +ATOM 910 C1 B 303 177.6 79.3 26.9 0 0CL +ATOM 911 A1 B 303 178.4 79.3 27.8 0 0CL +ATOM 912 COM B 304 420.7 31.6 391.3 0 0CL +ATOM 913 C1 B 304 420.4 32.8 390.5 0 0CL +ATOM 914 A1 B 304 421.1 32.1 391.3 0 0CL +ATOM 915 COM B 305 220.0 322.2 415.8 0 0CL +ATOM 916 C1 B 305 218.8 321.8 415.4 0 0CL +ATOM 917 A1 B 305 219.9 322.0 415.2 0 0CL +ATOM 918 COM B 306 440.4 67.0 458.9 0 0CL +ATOM 919 C1 B 306 441.1 66.1 459.8 0 0CL +ATOM 920 A1 B 306 440.2 66.9 459.5 0 0CL +ATOM 921 COM B 307 337.6 252.0 205.2 0 0CL +ATOM 922 C1 B 307 337.3 251.9 206.6 0 0CL +ATOM 923 A1 B 307 337.1 252.3 205.4 0 0CL +ATOM 924 COM B 308 256.1 101.3 387.9 0 0CL +ATOM 925 C1 B 308 255.7 100.5 386.9 0 0CL +ATOM 926 A1 B 308 255.6 101.1 387.9 0 0CL +ATOM 927 COM B 309 326.6 320.3 127.6 0 0CL +ATOM 928 C1 B 309 325.7 321.1 128.3 0 0CL +ATOM 929 A1 B 309 326.4 320.8 127.4 0 0CL +ATOM 930 COM B 310 80.4 426.0 419.2 0 0CL +ATOM 931 C1 B 310 80.1 426.3 420.5 0 0CL +ATOM 932 A1 B 310 80.3 425.6 419.5 0 0CL +ATOM 933 COM B 311 76.2 454.0 438.2 0 0CL +ATOM 934 C1 B 311 76.6 455.4 438.2 0 0CL +ATOM 935 A1 B 311 76.7 454.2 438.4 0 0CL +ATOM 936 COM B 312 390.7 153.2 322.8 0 0CL +ATOM 937 C1 B 312 389.5 153.5 323.5 0 0CL +ATOM 938 A1 B 312 390.3 152.8 322.9 0 0CL +ATOM 939 COM B 313 41.1 301.4 337.6 0 0CL +ATOM 940 C1 B 313 42.5 301.3 337.6 0 0CL +ATOM 941 A1 B 313 41.4 300.9 337.6 0 0CL +ATOM 942 COM B 314 125.4 55.4 154.0 0 0CL +ATOM 943 C1 B 314 126.0 54.4 154.9 0 0CL +ATOM 944 A1 B 314 125.4 55.5 154.6 0 0CL +ATOM 945 COM B 315 315.7 251.8 232.4 0 0CL +ATOM 946 C1 B 315 314.4 251.9 232.0 0 0CL +ATOM 947 A1 B 315 315.5 252.3 232.3 0 0CL +ATOM 948 COM B 316 102.1 113.9 475.7 0 0CL +ATOM 949 C1 B 316 102.7 112.7 475.9 0 0CL +ATOM 950 A1 B 316 102.0 113.6 476.2 0 0CL +ATOM 951 COM B 317 269.1 273.2 209.0 0 0CL +ATOM 952 C1 B 317 268.0 273.8 209.7 0 0CL +ATOM 953 A1 B 317 268.7 273.6 208.7 0 0CL +ATOM 954 COM B 318 58.4 268.0 350.4 0 0CL +ATOM 955 C1 B 318 58.8 269.1 351.2 0 0CL +ATOM 956 A1 B 318 58.0 268.5 350.5 0 0CL +ATOM 957 COM B 319 469.5 485.4 54.0 0 0CL +ATOM 958 C1 B 319 470.0 485.4 52.6 0 0CL +ATOM 959 A1 B 319 469.2 485.7 53.5 0 0CL +ATOM 960 COM B 320 132.4 278.1 2.9 0 0CL +ATOM 961 C1 B 320 131.3 278.9 3.0 0 0CL +ATOM 962 A1 B 320 132.3 278.5 2.5 0 0CL +ATOM 963 COM B 321 296.5 198.9 283.5 0 0CL +ATOM 964 C1 B 321 297.9 199.1 283.8 0 0CL +ATOM 965 A1 B 321 296.8 198.5 283.8 0 0CL +ATOM 966 COM B 322 65.4 414.3 189.9 0 0CL +ATOM 967 C1 B 322 65.0 413.5 191.1 0 0CL +ATOM 968 A1 B 322 65.7 414.3 190.4 0 0CL +ATOM 969 COM B 323 195.9 397.0 265.6 0 0CL +ATOM 970 C1 B 323 194.7 397.0 266.3 0 0CL +ATOM 971 A1 B 323 195.4 397.0 265.3 0 0CL +ATOM 972 COM B 324 196.5 340.0 444.5 0 0CL +ATOM 973 C1 B 324 197.5 339.0 444.3 0 0CL +ATOM 974 A1 B 324 196.4 339.5 444.6 0 0CL +ATOM 975 COM B 325 18.2 41.2 444.4 0 0CL +ATOM 976 C1 B 325 19.4 41.3 445.2 0 0CL +ATOM 977 A1 B 325 18.2 41.4 445.0 0 0CL +ATOM 978 COM B 326 4.3 282.7 494.6 0 0CL +ATOM 979 C1 B 326 4.4 282.1 493.3 0 0CL +ATOM 980 A1 B 326 4.2 283.0 494.1 0 0CL +ATOM 981 COM B 327 474.5 292.6 151.9 0 0CL +ATOM 982 C1 B 327 475.9 293.1 151.9 0 0CL +ATOM 983 A1 B 327 474.9 292.5 151.5 0 0CL +ATOM 984 COM B 328 288.8 161.1 236.3 0 0CL +ATOM 985 C1 B 328 288.9 161.9 237.5 0 0CL +ATOM 986 A1 B 328 288.7 161.7 236.3 0 0CL +ATOM 987 COM B 329 164.1 232.1 261.9 0 0CL +ATOM 988 C1 B 329 163.2 231.0 261.5 0 0CL +ATOM 989 A1 B 329 163.5 232.2 261.7 0 0CL +ATOM 990 COM B 330 18.3 381.7 280.7 0 0CL +ATOM 991 C1 B 330 17.6 382.6 281.5 0 0CL +ATOM 992 A1 B 330 17.8 381.5 281.0 0 0CL +ATOM 993 COM B 331 156.6 358.3 303.1 0 0CL +ATOM 994 C1 B 331 157.6 359.0 303.9 0 0CL +ATOM 995 A1 B 331 156.6 358.9 303.2 0 0CL +ATOM 996 COM B 332 164.5 294.6 426.2 0 0CL +ATOM 997 C1 B 332 165.9 294.7 425.7 0 0CL +ATOM 998 A1 B 332 164.9 295.1 426.3 0 0CL +ATOM 999 COM B 333 194.1 115.7 175.2 0 0CL +ATOM 1000 C1 B 333 193.0 115.9 174.3 0 0CL +ATOM 1001 A1 B 333 193.9 116.3 175.1 0 0CL +ATOM 1002 COM B 334 370.9 39.6 153.0 0 0CL +ATOM 1003 C1 B 334 372.1 40.3 153.3 0 0CL +ATOM 1004 A1 B 334 371.4 39.3 153.1 0 0CL +ATOM 1005 COM B 335 122.7 86.6 76.4 0 0CL +ATOM 1006 C1 B 335 123.2 86.2 75.1 0 0CL +ATOM 1007 A1 B 335 123.3 86.4 76.3 0 0CL +ATOM 1008 COM B 336 325.7 88.5 269.5 0 0CL +ATOM 1009 C1 B 336 324.7 88.4 268.6 0 0CL +ATOM 1010 A1 B 336 325.2 88.7 269.6 0 0CL +ATOM 1011 COM B 337 492.8 283.1 406.1 0 0CL +ATOM 1012 C1 B 337 492.3 282.7 407.4 0 0CL +ATOM 1013 A1 B 337 492.7 282.6 406.2 0 0CL +ATOM 1014 COM B 338 428.9 441.5 429.9 0 0CL +ATOM 1015 C1 B 338 427.8 440.8 430.6 0 0CL +ATOM 1016 A1 B 338 429.0 441.1 430.4 0 0CL +ATOM 1017 COM B 339 74.5 368.8 282.6 0 0CL +ATOM 1018 C1 B 339 73.6 367.9 283.3 0 0CL +ATOM 1019 A1 B 339 74.2 368.3 282.3 0 0CL +ATOM 1020 COM B 340 331.0 72.4 88.2 0 0CL +ATOM 1021 C1 B 340 332.4 72.6 88.2 0 0CL +ATOM 1022 A1 B 340 331.3 72.8 88.6 0 0CL +ATOM 1023 COM B 341 225.7 16.7 139.4 0 0CL +ATOM 1024 C1 B 341 225.8 18.0 140.0 0 0CL +ATOM 1025 A1 B 341 226.0 17.1 139.2 0 0CL +ATOM 1026 COM B 342 373.4 312.4 75.9 0 0CL +ATOM 1027 C1 B 342 372.8 312.7 74.7 0 0CL +ATOM 1028 A1 B 342 373.6 312.8 75.5 0 0CL +ATOM 1029 COM B 343 57.2 285.8 272.1 0 0CL +ATOM 1030 C1 B 343 57.2 285.1 273.4 0 0CL +ATOM 1031 A1 B 343 57.6 285.8 272.5 0 0CL +ATOM 1032 COM B 344 341.2 40.6 8.7 0 0CL +ATOM 1033 C1 B 344 340.7 41.2 9.9 0 0CL +ATOM 1034 A1 B 344 341.5 40.5 9.2 0 0CL +ATOM 1035 COM B 345 278.2 496.0 493.6 0 0CL +ATOM 1036 C1 B 345 279.3 496.6 494.1 0 0CL +ATOM 1037 A1 B 345 278.1 496.4 494.0 0 0CL +ATOM 1038 COM B 346 190.0 496.7 150.1 0 0CL +ATOM 1039 C1 B 346 190.5 496.7 151.5 0 0CL +ATOM 1040 A1 B 346 190.1 497.2 150.4 0 0CL +ATOM 1041 COM B 347 411.2 465.0 1.8 0 0CL +ATOM 1042 C1 B 347 410.6 466.3 1.4 0 0CL +ATOM 1043 A1 B 347 410.8 465.3 2.1 0 0CL +ATOM 1044 COM B 348 408.7 161.5 427.2 0 0CL +ATOM 1045 C1 B 348 408.6 162.8 427.6 0 0CL +ATOM 1046 A1 B 348 409.0 161.7 427.7 0 0CL +ATOM 1047 COM B 349 467.6 431.3 244.3 0 0CL +ATOM 1048 C1 B 349 466.5 430.5 243.7 0 0CL +ATOM 1049 A1 B 349 467.7 430.9 243.8 0 0CL +ATOM 1050 COM B 350 277.1 68.3 75.0 0 0CL +ATOM 1051 C1 B 350 275.7 68.3 74.6 0 0CL +ATOM 1052 A1 B 350 276.6 68.1 75.3 0 0CL +ATOM 1053 COM B 351 340.0 299.5 228.1 0 0CL +ATOM 1054 C1 B 351 339.9 299.2 226.7 0 0CL +ATOM 1055 A1 B 351 340.1 299.9 227.6 0 0CL +ATOM 1056 COM B 352 45.0 290.2 212.4 0 0CL +ATOM 1057 C1 B 352 44.0 291.0 211.7 0 0CL +ATOM 1058 A1 B 352 45.1 290.8 212.3 0 0CL +ATOM 1059 COM B 353 111.1 28.0 109.9 0 0CL +ATOM 1060 C1 B 353 109.8 28.7 109.7 0 0CL +ATOM 1061 A1 B 353 111.0 28.6 109.8 0 0CL +ATOM 1062 COM B 354 408.8 150.5 303.2 0 0CL +ATOM 1063 C1 B 354 407.4 150.2 302.9 0 0CL +ATOM 1064 A1 B 354 408.6 150.2 302.7 0 0CL +ATOM 1065 COM B 355 184.9 32.9 152.9 0 0CL +ATOM 1066 C1 B 355 185.6 32.2 154.0 0 0CL +ATOM 1067 A1 B 355 184.9 33.0 153.5 0 0CL +ATOM 1068 COM B 356 46.8 452.5 152.6 0 0CL +ATOM 1069 C1 B 356 47.0 451.1 152.9 0 0CL +ATOM 1070 A1 B 356 46.5 452.2 153.1 0 0CL +ATOM 1071 COM B 357 301.3 276.7 143.1 0 0CL +ATOM 1072 C1 B 357 301.8 278.0 142.9 0 0CL +ATOM 1073 A1 B 357 301.7 276.8 142.7 0 0CL +ATOM 1074 COM B 358 97.8 233.0 103.5 0 0CL +ATOM 1075 C1 B 358 96.9 233.1 104.6 0 0CL +ATOM 1076 A1 B 358 97.2 233.0 103.4 0 0CL +ATOM 1077 COM B 359 97.3 142.9 430.3 0 0CL +ATOM 1078 C1 B 359 96.9 143.0 431.7 0 0CL +ATOM 1079 A1 B 359 96.8 142.8 430.5 0 0CL +ATOM 1080 COM B 360 242.5 7.2 209.5 0 0CL +ATOM 1081 C1 B 360 241.4 6.5 208.9 0 0CL +ATOM 1082 A1 B 360 242.4 6.6 209.5 0 0CL +ATOM 1083 COM B 361 262.7 72.6 477.1 0 0CL +ATOM 1084 C1 B 361 263.4 71.4 477.4 0 0CL +ATOM 1085 A1 B 361 262.7 72.3 477.6 0 0CL +ATOM 1086 COM B 362 216.1 440.8 218.6 0 0CL +ATOM 1087 C1 B 362 216.6 442.1 218.3 0 0CL +ATOM 1088 A1 B 362 215.9 441.3 218.9 0 0CL +ATOM 1089 COM B 363 15.8 456.5 345.2 0 0CL +ATOM 1090 C1 B 363 15.1 455.8 344.2 0 0CL +ATOM 1091 A1 B 363 16.0 456.5 344.6 0 0CL +ATOM 1092 COM B 364 419.0 190.7 381.6 0 0CL +ATOM 1093 C1 B 364 417.8 190.2 381.1 0 0CL +ATOM 1094 A1 B 364 418.9 190.7 381.0 0 0CL +ATOM 1095 COM B 365 54.4 114.9 335.7 0 0CL +ATOM 1096 C1 B 365 55.0 113.9 334.9 0 0CL +ATOM 1097 A1 B 365 54.1 114.4 335.6 0 0CL +ATOM 1098 COM B 366 185.6 133.5 428.0 0 0CL +ATOM 1099 C1 B 366 186.3 132.3 428.5 0 0CL +ATOM 1100 A1 B 366 185.4 132.9 428.0 0 0CL +ATOM 1101 COM B 367 314.3 335.6 216.7 0 0CL +ATOM 1102 C1 B 367 314.0 334.7 215.6 0 0CL +ATOM 1103 A1 B 367 314.5 335.1 216.7 0 0CL +ATOM 1104 COM B 368 104.5 388.1 164.7 0 0CL +ATOM 1105 C1 B 368 105.2 389.2 165.3 0 0CL +ATOM 1106 A1 B 368 104.3 388.4 165.2 0 0CL +ATOM 1107 COM B 369 357.9 36.0 142.6 0 0CL +ATOM 1108 C1 B 369 359.3 36.5 142.8 0 0CL +ATOM 1109 A1 B 369 358.1 36.2 143.1 0 0CL +ATOM 1110 COM B 370 23.9 394.0 404.6 0 0CL +ATOM 1111 C1 B 370 22.6 393.5 405.1 0 0CL +ATOM 1112 A1 B 370 23.5 394.3 404.9 0 0CL +ATOM 1113 COM B 371 178.2 187.8 193.3 0 0CL +ATOM 1114 C1 B 371 176.9 188.2 193.3 0 0CL +ATOM 1115 A1 B 371 178.0 188.0 192.8 0 0CL +ATOM 1116 COM B 372 381.6 319.3 279.9 0 0CL +ATOM 1117 C1 B 372 380.7 318.7 280.9 0 0CL +ATOM 1118 A1 B 372 381.0 319.2 279.8 0 0CL +ATOM 1119 COM B 373 412.7 135.6 362.0 0 0CL +ATOM 1120 C1 B 373 411.6 135.7 362.9 0 0CL +ATOM 1121 A1 B 373 412.1 135.6 361.8 0 0CL +ATOM 1122 COM B 374 305.9 108.8 250.5 0 0CL +ATOM 1123 C1 B 374 307.1 108.7 249.7 0 0CL +ATOM 1124 A1 B 374 306.4 109.1 250.6 0 0CL +ATOM 1125 COM B 375 195.6 72.6 487.8 0 0CL +ATOM 1126 C1 B 375 195.8 71.3 488.4 0 0CL +ATOM 1127 A1 B 375 195.9 72.2 487.5 0 0CL +ATOM 1128 COM B 376 292.6 448.4 327.8 0 0CL +ATOM 1129 C1 B 376 292.8 448.2 329.2 0 0CL +ATOM 1130 A1 B 376 292.3 448.7 328.2 0 0CL +ATOM 1131 COM B 377 115.4 439.1 331.0 0 0CL +ATOM 1132 C1 B 377 116.5 438.1 331.1 0 0CL +ATOM 1133 A1 B 377 115.3 438.5 331.2 0 0CL +ATOM 1134 COM B 378 233.8 192.0 352.9 0 0CL +ATOM 1135 C1 B 378 234.9 193.0 352.9 0 0CL +ATOM 1136 A1 B 378 233.9 192.4 353.4 0 0CL +ATOM 1137 COM B 379 145.2 299.1 422.9 0 0CL +ATOM 1138 C1 B 379 146.3 299.4 423.8 0 0CL +ATOM 1139 A1 B 379 145.2 299.5 423.4 0 0CL +ATOM 1140 COM B 380 259.8 204.7 487.6 0 0CL +ATOM 1141 C1 B 380 260.2 203.7 486.7 0 0CL +ATOM 1142 A1 B 380 260.4 204.6 487.6 0 0CL +ATOM 1143 COM B 381 84.1 60.8 54.8 0 0CL +ATOM 1144 C1 B 381 83.0 61.1 54.0 0 0CL +ATOM 1145 A1 B 381 83.6 61.1 55.0 0 0CL +ATOM 1146 COM B 382 31.6 341.8 21.7 0 0CL +ATOM 1147 C1 B 382 32.3 342.8 22.3 0 0CL +ATOM 1148 A1 B 382 31.4 342.1 22.1 0 0CL +ATOM 1149 COM B 383 273.6 12.7 187.6 0 0CL +ATOM 1150 C1 B 383 274.5 13.8 187.3 0 0CL +ATOM 1151 A1 B 383 273.5 13.2 187.3 0 0CL +ATOM 1152 COM B 384 59.4 147.9 445.3 0 0CL +ATOM 1153 C1 B 384 58.5 149.0 445.1 0 0CL +ATOM 1154 A1 B 384 59.4 148.2 444.8 0 0CL +ATOM 1155 COM B 385 213.5 390.4 352.5 0 0CL +ATOM 1156 C1 B 385 212.3 389.9 353.3 0 0CL +ATOM 1157 A1 B 385 213.3 390.6 353.1 0 0CL +ATOM 1158 COM B 386 86.3 18.3 151.0 0 0CL +ATOM 1159 C1 B 386 87.6 18.3 151.6 0 0CL +ATOM 1160 A1 B 386 86.6 18.8 151.0 0 0CL +ATOM 1161 COM B 387 63.0 392.1 341.4 0 0CL +ATOM 1162 C1 B 387 61.8 392.8 341.5 0 0CL +ATOM 1163 A1 B 387 62.5 391.8 341.5 0 0CL +ATOM 1164 COM B 388 184.2 105.8 354.4 0 0CL +ATOM 1165 C1 B 388 183.5 105.2 355.5 0 0CL +ATOM 1166 A1 B 388 183.8 105.4 354.3 0 0CL +ATOM 1167 COM B 389 323.0 404.9 126.6 0 0CL +ATOM 1168 C1 B 389 323.5 403.6 126.1 0 0CL +ATOM 1169 A1 B 389 323.1 404.4 127.0 0 0CL +ATOM 1170 COM B 390 350.1 325.5 43.9 0 0CL +ATOM 1171 C1 B 390 349.1 324.9 44.7 0 0CL +ATOM 1172 A1 B 390 349.7 325.9 44.3 0 0CL +ATOM 1173 COM B 391 209.2 326.8 423.1 0 0CL +ATOM 1174 C1 B 391 209.1 328.2 422.9 0 0CL +ATOM 1175 A1 B 391 208.6 327.1 423.1 0 0CL +ATOM 1176 COM B 392 253.1 55.0 270.4 0 0CL +ATOM 1177 C1 B 392 252.0 55.9 270.1 0 0CL +ATOM 1178 A1 B 392 253.0 55.4 269.9 0 0CL +ATOM 1179 COM B 393 449.1 266.5 261.8 0 0CL +ATOM 1180 C1 B 393 450.2 267.0 261.1 0 0CL +ATOM 1181 A1 B 393 449.6 266.5 262.0 0 0CL +ATOM 1182 COM B 394 15.1 260.6 228.3 0 0CL +ATOM 1183 C1 B 394 14.8 259.4 227.5 0 0CL +ATOM 1184 A1 B 394 14.5 260.4 228.1 0 0CL +ATOM 1185 COM B 395 463.3 468.0 52.1 0 0CL +ATOM 1186 C1 B 395 463.9 467.7 50.8 0 0CL +ATOM 1187 A1 B 395 463.4 468.4 51.6 0 0CL +ATOM 1188 COM B 396 2.4 309.5 29.9 0 0CL +ATOM 1189 C1 B 396 1.9 308.4 30.6 0 0CL +ATOM 1190 A1 B 396 2.6 309.4 30.4 0 0CL +ATOM 1191 COM B 397 311.2 419.3 492.8 0 0CL +ATOM 1192 C1 B 397 312.2 419.9 492.0 0 0CL +ATOM 1193 A1 B 397 311.7 419.5 493.0 0 0CL +ATOM 1194 COM B 398 338.5 493.2 80.4 0 0CL +ATOM 1195 C1 B 398 337.6 494.0 79.6 0 0CL +ATOM 1196 A1 B 398 338.0 493.0 80.1 0 0CL +ATOM 1197 COM B 399 330.2 393.2 20.1 0 0CL +ATOM 1198 C1 B 399 330.3 393.8 21.4 0 0CL +ATOM 1199 A1 B 399 329.8 393.6 20.3 0 0CL +ATOM 1200 COM B 400 393.2 153.5 43.4 0 0CL +ATOM 1201 C1 B 400 393.6 154.0 42.1 0 0CL +ATOM 1202 A1 B 400 393.5 154.1 43.3 0 0CL +ATOM 1203 COM B 401 93.5 68.9 287.1 0 0CL +ATOM 1204 C1 B 401 93.1 69.7 288.3 0 0CL +ATOM 1205 A1 B 401 93.9 69.1 287.5 0 0CL +ATOM 1206 COM B 402 51.8 296.3 289.7 0 0CL +ATOM 1207 C1 B 402 50.6 295.8 289.2 0 0CL +ATOM 1208 A1 B 402 51.4 296.2 290.0 0 0CL +ATOM 1209 COM B 403 134.1 227.8 291.0 0 0CL +ATOM 1210 C1 B 403 135.1 226.8 290.5 0 0CL +ATOM 1211 A1 B 403 134.2 227.7 290.4 0 0CL +ATOM 1212 COM B 404 395.6 444.4 146.5 0 0CL +ATOM 1213 C1 B 404 394.8 445.2 147.4 0 0CL +ATOM 1214 A1 B 404 395.1 444.6 146.4 0 0CL +ATOM 1215 COM B 405 11.1 132.2 398.9 0 0CL +ATOM 1216 C1 B 405 11.4 133.6 399.0 0 0CL +ATOM 1217 A1 B 405 10.7 132.6 399.0 0 0CL +ATOM 1218 COM B 406 147.2 248.9 235.9 0 0CL +ATOM 1219 C1 B 406 147.9 248.8 234.6 0 0CL +ATOM 1220 A1 B 406 147.3 248.4 235.6 0 0CL +ATOM 1221 COM B 407 293.7 182.4 401.1 0 0CL +ATOM 1222 C1 B 407 293.5 181.1 400.6 0 0CL +ATOM 1223 A1 B 407 293.4 182.0 401.4 0 0CL +ATOM 1224 COM B 408 131.4 86.4 446.1 0 0CL +ATOM 1225 C1 B 408 130.3 87.3 445.9 0 0CL +ATOM 1226 A1 B 408 131.4 87.0 446.0 0 0CL +ATOM 1227 COM B 409 402.1 61.1 300.6 0 0CL +ATOM 1228 C1 B 409 402.4 60.0 299.8 0 0CL +ATOM 1229 A1 B 409 402.1 60.6 300.8 0 0CL +ATOM 1230 COM B 410 273.8 215.7 354.9 0 0CL +ATOM 1231 C1 B 410 274.3 217.0 354.7 0 0CL +ATOM 1232 A1 B 410 273.4 216.1 354.8 0 0CL +ATOM 1233 COM B 411 173.9 205.3 124.6 0 0CL +ATOM 1234 C1 B 411 174.4 203.9 124.4 0 0CL +ATOM 1235 A1 B 411 174.3 205.1 124.1 0 0CL +ATOM 1236 COM B 412 429.6 392.7 60.1 0 0CL +ATOM 1237 C1 B 412 430.1 393.8 60.9 0 0CL +ATOM 1238 A1 B 412 429.6 392.7 60.7 0 0CL +ATOM 1239 COM B 413 165.4 233.4 122.5 0 0CL +ATOM 1240 C1 B 413 165.7 232.7 123.7 0 0CL +ATOM 1241 A1 B 413 165.1 233.4 122.9 0 0CL +ATOM 1242 COM B 414 461.7 101.8 141.7 0 0CL +ATOM 1243 C1 B 414 461.2 101.2 142.9 0 0CL +ATOM 1244 A1 B 414 461.5 102.1 142.2 0 0CL +ATOM 1245 COM B 415 480.4 480.2 55.0 0 0CL +ATOM 1246 C1 B 415 480.0 481.1 56.1 0 0CL +ATOM 1247 A1 B 415 480.3 480.8 54.9 0 0CL +ATOM 1248 COM B 416 398.1 492.7 231.3 0 0CL +ATOM 1249 C1 B 416 398.9 492.0 232.2 0 0CL +ATOM 1250 A1 B 416 398.7 492.7 231.2 0 0CL +ATOM 1251 COM B 417 129.8 382.6 377.1 0 0CL +ATOM 1252 C1 B 417 129.8 384.0 376.7 0 0CL +ATOM 1253 A1 B 417 129.5 382.8 376.6 0 0CL +ATOM 1254 COM B 418 273.4 249.7 86.4 0 0CL +ATOM 1255 C1 B 418 274.0 249.9 87.6 0 0CL +ATOM 1256 A1 B 418 274.0 249.7 86.4 0 0CL +ATOM 1257 COM B 419 158.6 482.4 450.5 0 0CL +ATOM 1258 C1 B 419 158.2 483.7 450.1 0 0CL +ATOM 1259 A1 B 419 158.9 482.7 450.1 0 0CL +ATOM 1260 COM B 420 60.4 329.3 364.3 0 0CL +ATOM 1261 C1 B 420 61.2 329.4 365.4 0 0CL +ATOM 1262 A1 B 420 60.8 329.8 364.3 0 0CL +ATOM 1263 COM B 421 496.9 2.4 229.8 0 0CL +ATOM 1264 C1 B 421 496.6 3.4 228.9 0 0CL +ATOM 1265 A1 B 421 497.2 2.9 229.9 0 0CL +ATOM 1266 COM B 422 225.5 484.8 248.2 0 0CL +ATOM 1267 C1 B 422 225.5 486.2 247.7 0 0CL +ATOM 1268 A1 B 422 225.7 485.3 248.5 0 0CL +ATOM 1269 COM B 423 209.4 347.4 379.3 0 0CL +ATOM 1270 C1 B 423 210.0 348.1 378.2 0 0CL +ATOM 1271 A1 B 423 209.7 347.9 379.4 0 0CL +ATOM 1272 COM B 424 211.3 437.1 320.0 0 0CL +ATOM 1273 C1 B 424 212.4 437.9 319.7 0 0CL +ATOM 1274 A1 B 424 211.2 437.7 320.0 0 0CL +ATOM 1275 COM B 425 176.5 125.4 38.4 0 0CL +ATOM 1276 C1 B 425 177.5 124.8 37.6 0 0CL +ATOM 1277 A1 B 425 177.0 125.7 38.2 0 0CL +ATOM 1278 COM B 426 130.0 327.0 403.5 0 0CL +ATOM 1279 C1 B 426 131.2 327.7 403.0 0 0CL +ATOM 1280 A1 B 426 130.3 326.9 402.9 0 0CL +ATOM 1281 COM B 427 149.3 196.2 156.5 0 0CL +ATOM 1282 C1 B 427 148.3 196.1 157.5 0 0CL +ATOM 1283 A1 B 427 149.4 196.0 157.1 0 0CL +ATOM 1284 COM B 428 227.5 273.0 346.0 0 0CL +ATOM 1285 C1 B 428 228.5 273.4 345.0 0 0CL +ATOM 1286 A1 B 428 227.4 273.4 345.5 0 0CL +ATOM 1287 COM B 429 272.3 115.3 101.2 0 0CL +ATOM 1288 C1 B 429 272.4 114.3 100.1 0 0CL +ATOM 1289 A1 B 429 272.8 115.2 100.9 0 0CL +ATOM 1290 COM B 430 247.8 450.1 182.8 0 0CL +ATOM 1291 C1 B 430 248.8 451.1 182.8 0 0CL +ATOM 1292 A1 B 430 248.3 450.1 182.4 0 0CL +ATOM 1293 COM B 431 168.3 442.5 203.0 0 0CL +ATOM 1294 C1 B 431 169.6 443.1 202.5 0 0CL +ATOM 1295 A1 B 431 168.7 442.7 203.4 0 0CL +ATOM 1296 COM B 432 210.8 414.8 479.9 0 0CL +ATOM 1297 C1 B 432 209.5 414.5 480.2 0 0CL +ATOM 1298 A1 B 432 210.4 415.2 479.7 0 0CL +ATOM 1299 COM B 433 95.7 10.6 496.8 0 0CL +ATOM 1300 C1 B 433 95.6 11.2 495.5 0 0CL +ATOM 1301 A1 B 433 96.2 10.8 496.4 0 0CL +ATOM 1302 COM B 434 158.9 84.9 42.8 0 0CL +ATOM 1303 C1 B 434 160.1 84.3 43.0 0 0CL +ATOM 1304 A1 B 434 159.2 85.0 43.3 0 0CL +ATOM 1305 COM B 435 369.0 27.6 53.3 0 0CL +ATOM 1306 C1 B 435 369.6 26.9 52.2 0 0CL +ATOM 1307 A1 B 435 369.1 27.9 52.7 0 0CL +ATOM 1308 COM B 436 4.9 224.1 398.7 0 0CL +ATOM 1309 C1 B 436 4.2 225.3 398.4 0 0CL +ATOM 1310 A1 B 436 4.9 224.4 398.1 0 0CL +ATOM 1311 COM B 437 357.9 83.5 298.1 0 0CL +ATOM 1312 C1 B 437 358.3 82.9 299.4 0 0CL +ATOM 1313 A1 B 437 357.8 82.9 298.2 0 0CL +ATOM 1314 COM B 438 86.6 474.0 94.6 0 0CL +ATOM 1315 C1 B 438 87.2 475.2 95.2 0 0CL +ATOM 1316 A1 B 438 86.6 474.1 95.2 0 0CL +ATOM 1317 COM B 439 75.5 323.1 316.6 0 0CL +ATOM 1318 C1 B 439 74.2 323.3 317.1 0 0CL +ATOM 1319 A1 B 439 75.3 323.7 316.6 0 0CL +ATOM 1320 COM B 440 209.0 461.5 403.5 0 0CL +ATOM 1321 C1 B 440 207.6 461.8 403.5 0 0CL +ATOM 1322 A1 B 440 208.6 461.2 403.3 0 0CL +ATOM 1323 COM B 441 215.2 208.7 375.7 0 0CL +ATOM 1324 C1 B 441 214.7 207.6 376.5 0 0CL +ATOM 1325 A1 B 441 215.5 208.5 376.2 0 0CL +ATOM 1326 COM B 442 483.0 422.4 42.4 0 0CL +ATOM 1327 C1 B 442 482.5 423.7 41.9 0 0CL +ATOM 1328 A1 B 442 482.7 422.5 41.9 0 0CL +ATOM 1329 COM B 443 264.1 419.1 294.1 0 0CL +ATOM 1330 C1 B 443 263.3 418.7 295.2 0 0CL +ATOM 1331 A1 B 443 263.5 418.9 294.1 0 0CL +ATOM 1332 COM B 444 368.0 63.1 69.2 0 0CL +ATOM 1333 C1 B 444 367.8 64.3 68.5 0 0CL +ATOM 1334 A1 B 444 367.9 63.1 68.6 0 0CL +ATOM 1335 COM B 445 30.1 409.2 95.5 0 0CL +ATOM 1336 C1 B 445 29.3 409.2 94.3 0 0CL +ATOM 1337 A1 B 445 29.8 409.7 95.3 0 0CL +ATOM 1338 COM B 446 222.9 115.9 55.0 0 0CL +ATOM 1339 C1 B 446 223.8 116.6 56.0 0 0CL +ATOM 1340 A1 B 446 222.9 116.5 55.1 0 0CL +ATOM 1341 COM B 447 392.4 420.9 147.5 0 0CL +ATOM 1342 C1 B 447 392.2 420.6 148.9 0 0CL +ATOM 1343 A1 B 447 392.6 420.4 147.8 0 0CL +ATOM 1344 COM B 448 305.1 314.6 147.9 0 0CL +ATOM 1345 C1 B 448 304.5 314.5 146.6 0 0CL +ATOM 1346 A1 B 448 304.7 315.0 147.7 0 0CL +ATOM 1347 COM B 449 207.6 484.5 47.8 0 0CL +ATOM 1348 C1 B 449 206.6 485.5 47.7 0 0CL +ATOM 1349 A1 B 449 207.7 485.0 47.4 0 0CL diff --git a/het3mer/PDB/700000.pdb b/het3mer/PDB/700000.pdb new file mode 100644 index 00000000..9c3ab484 --- /dev/null +++ b/het3mer/PDB/700000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 700000 CREATED Thu May 29 13:11:43 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 132.1 339.3 198.9 0 0CL +ATOM 1 A1 C 0 130.3 339.7 200.1 0 0CL +ATOM 2 B1 C 0 130.2 339.3 199.6 0 0CL +ATOM 3 COM C 1 115.0 442.9 78.4 0 0CL +ATOM 4 A1 C 1 115.7 443.9 76.6 0 0CL +ATOM 5 B1 C 1 116.1 444.0 77.1 0 0CL +ATOM 6 COM C 2 235.5 209.5 363.8 0 0CL +ATOM 7 A1 C 2 234.0 210.7 362.7 0 0CL +ATOM 8 B1 C 2 234.6 210.4 362.3 0 0CL +ATOM 9 COM C 3 108.9 189.6 152.5 0 0CL +ATOM 10 A1 C 3 106.8 189.8 151.6 0 0CL +ATOM 11 B1 C 3 107.1 190.3 152.0 0 0CL +ATOM 12 COM C 4 380.8 320.2 149.2 0 0CL +ATOM 13 A1 C 4 381.9 321.4 150.8 0 0CL +ATOM 14 B1 C 4 381.3 321.7 150.5 0 0CL +ATOM 15 COM C 5 15.9 116.0 152.4 0 0CL +ATOM 16 A1 C 5 14.2 115.4 151.2 0 0CL +ATOM 17 B1 C 5 14.8 115.3 150.9 0 0CL +ATOM 18 COM C 6 479.6 463.4 199.3 0 0CL +ATOM 19 A1 C 6 481.4 463.3 200.7 0 0CL +ATOM 20 B1 C 6 481.1 462.7 200.4 0 0CL +ATOM 21 COM C 7 147.3 7.5 240.4 0 0CL +ATOM 22 A1 C 7 148.6 9.3 240.3 0 0CL +ATOM 23 B1 C 7 147.8 9.4 240.4 0 0CL +ATOM 24 COM C 8 195.1 402.8 167.5 0 0CL +ATOM 25 A1 C 8 196.5 402.2 165.9 0 0CL +ATOM 26 B1 C 8 196.8 402.5 166.5 0 0CL +ATOM 27 COM C 9 366.9 399.7 338.4 0 0CL +ATOM 28 A1 C 9 368.0 401.2 339.6 0 0CL +ATOM 29 B1 C 9 367.5 400.8 339.9 0 0CL +ATOM 30 COM C 10 107.9 106.2 115.4 0 0CL +ATOM 31 A1 C 10 109.3 106.6 113.8 0 0CL +ATOM 32 B1 C 10 109.4 107.0 114.4 0 0CL +ATOM 33 COM C 11 198.2 357.4 287.7 0 0CL +ATOM 34 A1 C 11 197.7 358.8 289.3 0 0CL +ATOM 35 B1 C 11 197.3 358.9 288.7 0 0CL +ATOM 36 COM C 12 290.2 290.6 490.8 0 0CL +ATOM 37 A1 C 12 290.4 291.4 492.8 0 0CL +ATOM 38 B1 C 12 290.4 290.7 492.8 0 0CL +ATOM 39 COM C 13 131.3 432.9 481.2 0 0CL +ATOM 40 A1 C 13 130.2 433.0 483.1 0 0CL +ATOM 41 B1 C 13 130.1 432.5 482.7 0 0CL +ATOM 42 COM C 14 344.2 194.4 209.1 0 0CL +ATOM 43 A1 C 14 344.5 195.8 210.9 0 0CL +ATOM 44 B1 C 14 344.9 195.9 210.2 0 0CL +ATOM 45 COM C 15 353.7 260.1 89.9 0 0CL +ATOM 46 A1 C 15 352.6 262.0 89.6 0 0CL +ATOM 47 B1 C 15 352.6 261.6 89.1 0 0CL +ATOM 48 COM C 16 307.8 351.9 317.1 0 0CL +ATOM 49 A1 C 16 308.1 351.0 319.1 0 0CL +ATOM 50 B1 C 16 308.0 351.7 319.1 0 0CL +ATOM 51 COM C 17 475.6 457.9 127.7 0 0CL +ATOM 52 A1 C 17 474.8 456.1 126.6 0 0CL +ATOM 53 B1 C 17 474.4 456.4 127.2 0 0CL +ATOM 54 COM C 18 436.6 484.6 73.1 0 0CL +ATOM 55 A1 C 18 434.8 484.3 72.0 0 0CL +ATOM 56 B1 C 18 435.4 484.2 71.7 0 0CL +ATOM 57 COM C 19 259.9 251.9 95.8 0 0CL +ATOM 58 A1 C 19 261.7 250.9 96.6 0 0CL +ATOM 59 B1 C 19 261.2 251.1 97.1 0 0CL +ATOM 60 COM C 20 449.5 221.8 429.1 0 0CL +ATOM 61 A1 C 20 448.5 222.4 427.3 0 0CL +ATOM 62 B1 C 20 448.7 221.7 427.3 0 0CL +ATOM 63 COM C 21 243.4 87.9 326.8 0 0CL +ATOM 64 A1 C 21 243.5 87.2 328.9 0 0CL +ATOM 65 B1 C 21 243.2 87.9 328.7 0 0CL +ATOM 66 COM C 22 88.2 29.7 231.7 0 0CL +ATOM 67 A1 C 22 87.5 28.2 233.1 0 0CL +ATOM 68 B1 C 22 87.0 28.6 232.8 0 0CL +ATOM 69 COM C 23 311.1 31.1 332.9 0 0CL +ATOM 70 A1 C 23 312.7 29.7 333.0 0 0CL +ATOM 71 B1 C 23 312.5 29.9 332.3 0 0CL +ATOM 72 COM C 24 431.3 221.5 15.6 0 0CL +ATOM 73 A1 C 24 429.7 222.2 17.0 0 0CL +ATOM 74 B1 C 24 429.8 222.6 16.4 0 0CL +ATOM 75 COM C 25 243.7 143.9 446.2 0 0CL +ATOM 76 A1 C 25 244.4 143.4 444.2 0 0CL +ATOM 77 B1 C 25 243.8 143.9 444.2 0 0CL +ATOM 78 COM C 26 317.4 85.8 381.0 0 0CL +ATOM 79 A1 C 26 315.9 85.5 382.6 0 0CL +ATOM 80 B1 C 26 316.5 85.2 382.6 0 0CL +ATOM 81 COM C 27 391.2 193.6 285.0 0 0CL +ATOM 82 A1 C 27 392.1 195.4 285.9 0 0CL +ATOM 83 B1 C 27 392.5 194.8 285.8 0 0CL +ATOM 84 COM C 28 218.0 340.9 239.4 0 0CL +ATOM 85 A1 C 28 218.9 342.9 239.5 0 0CL +ATOM 86 B1 C 28 218.1 342.8 239.5 0 0CL +ATOM 87 COM C 29 184.4 473.1 109.6 0 0CL +ATOM 88 A1 C 29 183.3 471.6 110.7 0 0CL +ATOM 89 B1 C 29 183.7 471.3 110.2 0 0CL +ATOM 90 COM C 30 148.7 363.7 444.3 0 0CL +ATOM 91 A1 C 30 148.7 363.2 442.2 0 0CL +ATOM 92 B1 C 30 148.8 362.6 442.6 0 0CL +ATOM 93 COM C 31 87.5 7.9 388.7 0 0CL +ATOM 94 A1 C 31 86.5 8.4 390.6 0 0CL +ATOM 95 B1 C 31 87.2 8.7 390.5 0 0CL +ATOM 96 COM C 32 94.9 134.2 416.4 0 0CL +ATOM 97 A1 C 32 96.7 133.2 417.0 0 0CL +ATOM 98 B1 C 32 96.1 132.9 417.2 0 0CL +ATOM 99 COM C 33 22.3 415.2 483.2 0 0CL +ATOM 100 A1 C 33 20.3 414.3 482.6 0 0CL +ATOM 101 B1 C 33 20.8 413.9 482.9 0 0CL +ATOM 102 COM C 34 162.9 172.7 29.1 0 0CL +ATOM 103 A1 C 34 163.6 172.2 31.2 0 0CL +ATOM 104 B1 C 34 163.0 172.5 31.1 0 0CL +ATOM 105 COM C 35 296.5 99.1 315.0 0 0CL +ATOM 106 A1 C 35 296.0 97.0 314.5 0 0CL +ATOM 107 B1 C 35 296.0 97.2 315.2 0 0CL +ATOM 108 COM C 36 339.7 497.9 71.4 0 0CL +ATOM 109 A1 C 36 341.0 497.2 73.0 0 0CL +ATOM 110 B1 C 36 341.3 497.8 72.6 0 0CL +ATOM 111 COM C 37 190.1 127.4 418.0 0 0CL +ATOM 112 A1 C 37 190.3 125.3 418.9 0 0CL +ATOM 113 B1 C 37 189.7 125.7 419.1 0 0CL +ATOM 114 COM C 38 254.0 88.0 264.5 0 0CL +ATOM 115 A1 C 38 252.8 86.3 263.7 0 0CL +ATOM 116 B1 C 38 253.3 86.2 264.3 0 0CL +ATOM 117 COM C 39 298.8 307.0 487.7 0 0CL +ATOM 118 A1 C 39 296.6 306.6 487.6 0 0CL +ATOM 119 B1 C 39 297.0 306.8 487.0 0 0CL +ATOM 120 COM C 40 0.1 99.9 164.7 0 0CL +ATOM 121 A1 C 40 1.2 99.3 162.9 0 0CL +ATOM 122 B1 C 40 1.6 99.4 163.5 0 0CL +ATOM 123 COM C 41 19.4 8.1 174.6 0 0CL +ATOM 124 A1 C 41 21.6 8.2 174.6 0 0CL +ATOM 125 B1 C 41 21.3 8.0 175.2 0 0CL +ATOM 126 COM C 42 440.6 271.7 420.5 0 0CL +ATOM 127 A1 C 42 442.7 271.5 419.7 0 0CL +ATOM 128 B1 C 42 442.5 271.2 420.4 0 0CL +ATOM 129 COM C 43 32.3 360.2 313.7 0 0CL +ATOM 130 A1 C 43 30.7 361.3 312.8 0 0CL +ATOM 131 B1 C 43 31.0 361.7 313.3 0 0CL +ATOM 132 COM C 44 426.8 446.9 320.9 0 0CL +ATOM 133 A1 C 44 425.0 447.9 321.4 0 0CL +ATOM 134 B1 C 44 425.6 448.3 321.4 0 0CL +ATOM 135 COM C 45 354.0 368.9 424.1 0 0CL +ATOM 136 A1 C 45 353.6 370.4 425.6 0 0CL +ATOM 137 B1 C 45 353.7 370.6 424.9 0 0CL +ATOM 138 COM C 46 429.0 407.8 299.7 0 0CL +ATOM 139 A1 C 46 429.8 409.6 298.6 0 0CL +ATOM 140 B1 C 46 429.2 409.4 298.4 0 0CL +ATOM 141 COM C 47 409.6 155.1 260.0 0 0CL +ATOM 142 A1 C 47 410.9 154.4 258.4 0 0CL +ATOM 143 B1 C 47 410.8 155.2 258.5 0 0CL +ATOM 144 COM C 48 414.5 160.6 443.1 0 0CL +ATOM 145 A1 C 48 412.7 160.4 444.2 0 0CL +ATOM 146 B1 C 48 412.6 160.3 443.5 0 0CL +ATOM 147 COM C 49 279.6 113.3 414.3 0 0CL +ATOM 148 A1 C 49 279.9 115.3 415.1 0 0CL +ATOM 149 B1 C 49 280.0 115.2 414.4 0 0CL +ATOM 150 COM C 50 214.5 382.8 499.1 0 0CL +ATOM 151 A1 C 50 214.7 381.2 497.6 0 0CL +ATOM 152 B1 C 50 214.2 381.7 497.4 0 0CL +ATOM 153 COM C 51 30.5 71.8 287.3 0 0CL +ATOM 154 A1 C 51 29.4 70.2 288.4 0 0CL +ATOM 155 B1 C 51 29.2 70.4 287.8 0 0CL +ATOM 156 COM C 52 477.6 76.7 456.2 0 0CL +ATOM 157 A1 C 52 478.9 75.5 457.6 0 0CL +ATOM 158 B1 C 52 478.1 75.4 457.6 0 0CL +ATOM 159 COM C 53 313.3 420.3 408.0 0 0CL +ATOM 160 A1 C 53 313.4 419.3 406.1 0 0CL +ATOM 161 B1 C 53 313.2 420.0 406.1 0 0CL +ATOM 162 COM C 54 0.0 378.0 477.2 0 0CL +ATOM 163 A1 C 54 1.1 376.8 475.7 0 0CL +ATOM 164 B1 C 54 0.9 377.5 475.5 0 0CL +ATOM 165 COM C 55 474.3 453.4 233.5 0 0CL +ATOM 166 A1 C 55 472.2 454.0 233.3 0 0CL +ATOM 167 B1 C 55 472.4 453.8 233.9 0 0CL +ATOM 168 COM C 56 148.3 7.7 232.2 0 0CL +ATOM 169 A1 C 56 147.8 5.8 231.2 0 0CL +ATOM 170 B1 C 56 148.3 6.2 230.9 0 0CL +ATOM 171 COM C 57 382.1 66.4 208.8 0 0CL +ATOM 172 A1 C 57 381.8 67.0 206.7 0 0CL +ATOM 173 B1 C 57 382.3 67.4 207.1 0 0CL +ATOM 174 COM C 58 69.3 36.4 476.8 0 0CL +ATOM 175 A1 C 58 69.1 37.0 478.9 0 0CL +ATOM 176 B1 C 58 69.0 36.3 478.8 0 0CL +ATOM 177 COM C 59 493.1 248.5 491.5 0 0CL +ATOM 178 A1 C 59 494.5 248.4 493.1 0 0CL +ATOM 179 B1 C 59 493.8 248.2 493.3 0 0CL +ATOM 180 COM C 60 253.3 347.2 412.1 0 0CL +ATOM 181 A1 C 60 253.4 346.2 414.1 0 0CL +ATOM 182 B1 C 60 253.4 345.8 413.5 0 0CL +ATOM 183 COM C 61 149.5 184.5 125.5 0 0CL +ATOM 184 A1 C 61 148.7 186.5 126.1 0 0CL +ATOM 185 B1 C 61 149.2 186.2 126.6 0 0CL +ATOM 186 COM C 62 383.0 33.8 424.0 0 0CL +ATOM 187 A1 C 62 384.9 33.7 425.2 0 0CL +ATOM 188 B1 C 62 384.8 33.2 424.7 0 0CL +ATOM 189 COM C 63 208.9 339.2 433.8 0 0CL +ATOM 190 A1 C 63 210.3 339.1 435.5 0 0CL +ATOM 191 B1 C 63 210.3 338.5 435.1 0 0CL +ATOM 192 COM C 64 157.5 278.8 200.9 0 0CL +ATOM 193 A1 C 64 156.8 279.0 203.0 0 0CL +ATOM 194 B1 C 64 156.9 279.6 202.6 0 0CL +ATOM 195 COM C 65 232.4 357.2 477.4 0 0CL +ATOM 196 A1 C 65 233.7 357.2 479.3 0 0CL +ATOM 197 B1 C 65 234.0 357.1 478.6 0 0CL +ATOM 198 COM C 66 374.3 27.8 29.8 0 0CL +ATOM 199 A1 C 66 374.7 29.2 31.5 0 0CL +ATOM 200 B1 C 66 375.3 28.8 31.2 0 0CL +ATOM 201 COM C 67 495.3 354.9 38.5 0 0CL +ATOM 202 A1 C 67 493.9 355.6 37.0 0 0CL +ATOM 203 B1 C 67 493.9 355.9 37.6 0 0CL +ATOM 204 COM C 68 249.0 353.7 208.4 0 0CL +ATOM 205 A1 C 68 250.9 352.8 209.1 0 0CL +ATOM 206 B1 C 68 250.4 352.4 208.9 0 0CL +ATOM 207 COM C 69 495.9 69.1 362.9 0 0CL +ATOM 208 A1 C 69 494.8 67.2 363.4 0 0CL +ATOM 209 B1 C 69 495.4 67.4 363.8 0 0CL +ATOM 210 COM C 70 72.3 343.3 384.2 0 0CL +ATOM 211 A1 C 70 74.4 344.0 384.8 0 0CL +ATOM 212 B1 C 70 73.8 344.5 384.8 0 0CL +ATOM 213 COM C 71 442.6 492.8 148.6 0 0CL +ATOM 214 A1 C 71 442.7 492.4 150.8 0 0CL +ATOM 215 B1 C 71 442.1 492.3 150.5 0 0CL +ATOM 216 COM C 72 268.8 292.3 24.2 0 0CL +ATOM 217 A1 C 72 267.9 290.3 24.1 0 0CL +ATOM 218 B1 C 72 268.6 290.3 24.3 0 0CL +ATOM 219 COM C 73 63.2 244.2 178.3 0 0CL +ATOM 220 A1 C 73 62.3 243.8 176.3 0 0CL +ATOM 221 B1 C 73 62.1 244.4 176.6 0 0CL +ATOM 222 COM C 74 330.7 152.8 311.8 0 0CL +ATOM 223 A1 C 74 332.1 154.1 310.7 0 0CL +ATOM 224 B1 C 74 331.7 154.5 311.2 0 0CL +ATOM 225 COM C 75 165.9 250.2 165.6 0 0CL +ATOM 226 A1 C 75 166.6 249.0 163.9 0 0CL +ATOM 227 B1 C 75 167.0 249.6 164.0 0 0CL +ATOM 228 COM C 76 37.6 272.7 148.8 0 0CL +ATOM 229 A1 C 76 38.6 274.6 149.3 0 0CL +ATOM 230 B1 C 76 39.0 274.0 149.4 0 0CL +ATOM 231 COM C 77 480.2 403.6 398.0 0 0CL +ATOM 232 A1 C 77 480.1 401.9 396.5 0 0CL +ATOM 233 B1 C 77 480.8 402.2 396.7 0 0CL +ATOM 234 COM C 78 221.0 273.0 414.4 0 0CL +ATOM 235 A1 C 78 221.0 273.3 412.2 0 0CL +ATOM 236 B1 C 78 220.4 273.3 412.5 0 0CL +ATOM 237 COM C 79 289.1 448.1 331.6 0 0CL +ATOM 238 A1 C 79 288.0 446.2 331.7 0 0CL +ATOM 239 B1 C 79 287.7 446.7 331.4 0 0CL +ATOM 240 COM C 80 277.4 116.9 86.6 0 0CL +ATOM 241 A1 C 80 275.9 115.2 86.6 0 0CL +ATOM 242 B1 C 80 275.7 115.9 86.5 0 0CL +ATOM 243 COM C 81 435.1 190.3 470.3 0 0CL +ATOM 244 A1 C 81 434.8 188.7 471.8 0 0CL +ATOM 245 B1 C 81 434.2 189.0 471.6 0 0CL +ATOM 246 COM C 82 393.8 112.0 206.9 0 0CL +ATOM 247 A1 C 82 395.2 113.3 205.8 0 0CL +ATOM 248 B1 C 82 394.8 113.6 206.4 0 0CL +ATOM 249 COM C 83 280.7 37.1 273.0 0 0CL +ATOM 250 A1 C 83 282.1 38.7 273.5 0 0CL +ATOM 251 B1 C 83 281.9 38.3 274.0 0 0CL +ATOM 252 COM C 84 170.8 57.7 439.4 0 0CL +ATOM 253 A1 C 84 169.4 56.2 438.7 0 0CL +ATOM 254 B1 C 84 169.2 57.0 438.6 0 0CL +ATOM 255 COM C 85 29.0 215.5 315.8 0 0CL +ATOM 256 A1 C 85 28.7 217.1 314.3 0 0CL +ATOM 257 B1 C 85 29.3 217.1 314.8 0 0CL +ATOM 258 COM C 86 135.5 393.9 468.9 0 0CL +ATOM 259 A1 C 86 135.0 392.8 467.0 0 0CL +ATOM 260 B1 C 86 134.5 392.7 467.6 0 0CL +ATOM 261 COM C 87 209.1 138.5 154.6 0 0CL +ATOM 262 A1 C 87 207.7 136.8 154.8 0 0CL +ATOM 263 B1 C 87 208.1 136.9 155.4 0 0CL +ATOM 264 COM C 88 18.4 343.1 95.2 0 0CL +ATOM 265 A1 C 88 18.0 341.0 94.5 0 0CL +ATOM 266 B1 C 88 17.4 341.4 94.8 0 0CL +ATOM 267 COM C 89 198.4 231.5 93.4 0 0CL +ATOM 268 A1 C 89 197.6 233.1 94.7 0 0CL +ATOM 269 B1 C 89 197.1 232.7 94.3 0 0CL +ATOM 270 COM C 90 209.7 224.8 112.2 0 0CL +ATOM 271 A1 C 90 209.1 224.3 110.2 0 0CL +ATOM 272 B1 C 90 208.8 223.9 110.7 0 0CL +ATOM 273 COM C 91 321.4 46.3 221.0 0 0CL +ATOM 274 A1 C 91 319.6 47.3 221.8 0 0CL +ATOM 275 B1 C 91 319.8 47.5 221.1 0 0CL +ATOM 276 COM C 92 234.1 483.6 355.6 0 0CL +ATOM 277 A1 C 92 233.8 482.5 353.7 0 0CL +ATOM 278 B1 C 92 234.1 482.1 354.3 0 0CL +ATOM 279 COM C 93 262.7 135.4 32.1 0 0CL +ATOM 280 A1 C 93 262.0 133.8 33.5 0 0CL +ATOM 281 B1 C 93 261.7 134.5 33.5 0 0CL +ATOM 282 COM C 94 478.9 14.9 207.5 0 0CL +ATOM 283 A1 C 94 476.8 15.5 207.0 0 0CL +ATOM 284 B1 C 94 477.0 14.7 207.0 0 0CL +ATOM 285 COM C 95 124.3 40.6 4.6 0 0CL +ATOM 286 A1 C 95 123.6 41.8 6.3 0 0CL +ATOM 287 B1 C 95 123.1 41.5 5.9 0 0CL +ATOM 288 COM C 96 327.8 28.7 378.5 0 0CL +ATOM 289 A1 C 96 326.5 28.2 376.8 0 0CL +ATOM 290 B1 C 96 326.5 28.9 377.1 0 0CL +ATOM 291 COM C 97 273.1 465.0 179.1 0 0CL +ATOM 292 A1 C 97 274.5 463.3 178.9 0 0CL +ATOM 293 B1 C 97 273.9 463.3 179.4 0 0CL +ATOM 294 COM C 98 349.1 276.9 194.4 0 0CL +ATOM 295 A1 C 98 350.8 278.4 194.6 0 0CL +ATOM 296 B1 C 98 350.3 278.6 194.2 0 0CL +ATOM 297 COM C 99 260.0 463.0 406.6 0 0CL +ATOM 298 A1 C 99 258.0 463.8 406.7 0 0CL +ATOM 299 B1 C 99 258.4 464.0 407.2 0 0CL +ATOM 300 COM C 100 429.4 334.8 404.7 0 0CL +ATOM 301 A1 C 100 430.8 333.2 405.0 0 0CL +ATOM 302 B1 C 100 430.4 333.1 404.5 0 0CL +ATOM 303 COM C 101 75.7 211.8 468.3 0 0CL +ATOM 304 A1 C 101 77.8 212.3 468.3 0 0CL +ATOM 305 B1 C 101 77.7 211.6 468.5 0 0CL +ATOM 306 COM C 102 485.1 324.4 45.5 0 0CL +ATOM 307 A1 C 102 486.1 324.0 47.4 0 0CL +ATOM 308 B1 C 102 485.6 323.5 47.2 0 0CL +ATOM 309 COM C 103 188.9 328.3 424.7 0 0CL +ATOM 310 A1 C 103 189.4 326.7 426.1 0 0CL +ATOM 311 B1 C 103 188.8 327.1 426.2 0 0CL +ATOM 312 COM C 104 369.3 190.6 237.1 0 0CL +ATOM 313 A1 C 104 371.4 190.1 237.3 0 0CL +ATOM 314 B1 C 104 371.2 190.3 236.7 0 0CL +ATOM 315 COM C 105 127.3 143.1 270.7 0 0CL +ATOM 316 A1 C 105 126.7 141.1 271.2 0 0CL +ATOM 317 B1 C 105 126.2 141.5 270.9 0 0CL +ATOM 318 COM C 106 417.7 50.3 227.3 0 0CL +ATOM 319 A1 C 106 416.7 52.2 226.7 0 0CL +ATOM 320 B1 C 106 417.2 51.9 226.3 0 0CL +ATOM 321 COM C 107 448.9 224.6 328.8 0 0CL +ATOM 322 A1 C 107 449.9 223.8 330.6 0 0CL +ATOM 323 B1 C 107 449.5 224.5 330.6 0 0CL +ATOM 324 COM C 108 318.7 69.6 53.0 0 0CL +ATOM 325 A1 C 108 317.8 68.0 51.8 0 0CL +ATOM 326 B1 C 108 318.5 68.1 51.7 0 0CL +ATOM 327 COM C 109 289.4 214.4 226.6 0 0CL +ATOM 328 A1 C 109 287.9 215.7 227.5 0 0CL +ATOM 329 B1 C 109 288.3 215.4 228.0 0 0CL +ATOM 330 COM C 110 272.7 302.7 467.9 0 0CL +ATOM 331 A1 C 110 272.3 300.8 469.0 0 0CL +ATOM 332 B1 C 110 271.8 301.3 469.1 0 0CL +ATOM 333 COM C 111 36.6 243.5 18.1 0 0CL +ATOM 334 A1 C 111 36.1 242.6 20.0 0 0CL +ATOM 335 B1 C 111 36.6 242.3 19.6 0 0CL +ATOM 336 COM C 112 355.4 154.6 235.8 0 0CL +ATOM 337 A1 C 112 353.5 155.6 235.2 0 0CL +ATOM 338 B1 C 112 354.1 156.0 235.3 0 0CL +ATOM 339 COM C 113 434.4 451.5 21.7 0 0CL +ATOM 340 A1 C 113 433.2 449.7 22.2 0 0CL +ATOM 341 B1 C 113 433.3 449.8 21.5 0 0CL +ATOM 342 COM C 114 233.4 334.0 305.5 0 0CL +ATOM 343 A1 C 114 233.2 333.4 307.6 0 0CL +ATOM 344 B1 C 114 233.3 332.8 307.1 0 0CL +ATOM 345 COM C 115 22.3 304.1 369.7 0 0CL +ATOM 346 A1 C 115 23.6 303.7 368.0 0 0CL +ATOM 347 B1 C 115 23.9 304.0 368.5 0 0CL +ATOM 348 COM C 116 42.3 42.4 481.2 0 0CL +ATOM 349 A1 C 116 43.3 40.8 480.2 0 0CL +ATOM 350 B1 C 116 43.1 40.6 480.9 0 0CL +ATOM 351 COM C 117 123.0 454.7 243.6 0 0CL +ATOM 352 A1 C 117 121.3 455.9 242.7 0 0CL +ATOM 353 B1 C 117 121.2 455.2 242.8 0 0CL +ATOM 354 COM C 118 283.8 416.1 29.8 0 0CL +ATOM 355 A1 C 118 285.7 415.2 29.5 0 0CL +ATOM 356 B1 C 118 285.5 415.2 30.2 0 0CL +ATOM 357 COM C 119 98.7 148.4 240.2 0 0CL +ATOM 358 A1 C 119 100.4 147.5 241.2 0 0CL +ATOM 359 B1 C 119 100.3 147.4 240.5 0 0CL +ATOM 360 COM C 120 27.8 404.8 310.9 0 0CL +ATOM 361 A1 C 120 28.0 402.6 311.1 0 0CL +ATOM 362 B1 C 120 28.4 403.0 311.5 0 0CL +ATOM 363 COM C 121 103.9 185.3 202.2 0 0CL +ATOM 364 A1 C 121 101.7 185.4 202.1 0 0CL +ATOM 365 B1 C 121 102.0 184.8 201.8 0 0CL +ATOM 366 COM C 122 6.8 282.9 75.2 0 0CL +ATOM 367 A1 C 122 4.6 282.9 75.2 0 0CL +ATOM 368 B1 C 122 4.9 282.4 74.8 0 0CL +ATOM 369 COM C 123 41.7 419.4 287.7 0 0CL +ATOM 370 A1 C 123 41.1 417.3 287.6 0 0CL +ATOM 371 B1 C 123 41.1 417.6 287.0 0 0CL +ATOM 372 COM C 124 484.1 446.2 289.8 0 0CL +ATOM 373 A1 C 124 485.1 444.4 289.2 0 0CL +ATOM 374 B1 C 124 485.5 444.8 289.7 0 0CL +ATOM 375 COM C 125 338.9 238.9 244.1 0 0CL +ATOM 376 A1 C 125 339.5 237.2 242.9 0 0CL +ATOM 377 B1 C 125 339.4 237.1 243.6 0 0CL +ATOM 378 COM C 126 435.4 145.2 406.0 0 0CL +ATOM 379 A1 C 126 434.6 147.2 406.7 0 0CL +ATOM 380 B1 C 126 434.7 147.1 406.0 0 0CL +ATOM 381 COM C 127 331.1 112.4 410.7 0 0CL +ATOM 382 A1 C 127 332.6 110.8 410.8 0 0CL +ATOM 383 B1 C 127 332.0 110.7 411.2 0 0CL +ATOM 384 COM C 128 399.9 259.6 482.1 0 0CL +ATOM 385 A1 C 128 401.4 261.1 482.8 0 0CL +ATOM 386 B1 C 128 401.0 260.6 483.3 0 0CL +ATOM 387 COM C 129 102.3 218.9 213.9 0 0CL +ATOM 388 A1 C 129 103.6 219.8 212.4 0 0CL +ATOM 389 B1 C 129 103.9 219.7 213.1 0 0CL +ATOM 390 COM C 130 434.9 416.2 207.4 0 0CL +ATOM 391 A1 C 130 435.3 417.8 208.9 0 0CL +ATOM 392 B1 C 130 434.7 417.8 208.6 0 0CL +ATOM 393 COM C 131 449.8 154.9 327.2 0 0CL +ATOM 394 A1 C 131 449.6 154.7 325.0 0 0CL +ATOM 395 B1 C 131 449.0 154.5 325.5 0 0CL +ATOM 396 COM C 132 149.8 167.4 127.9 0 0CL +ATOM 397 A1 C 132 147.9 166.6 128.8 0 0CL +ATOM 398 B1 C 132 148.1 166.4 128.2 0 0CL +ATOM 399 COM C 133 72.0 232.4 282.7 0 0CL +ATOM 400 A1 C 133 72.1 230.3 282.9 0 0CL +ATOM 401 B1 C 133 71.5 230.5 282.5 0 0CL +ATOM 402 COM C 134 256.5 422.9 10.0 0 0CL +ATOM 403 A1 C 134 255.0 423.9 8.8 0 0CL +ATOM 404 B1 C 134 254.8 423.5 9.4 0 0CL +ATOM 405 COM C 135 366.3 378.2 25.4 0 0CL +ATOM 406 A1 C 135 367.9 376.9 24.8 0 0CL +ATOM 407 B1 C 135 367.4 377.0 24.3 0 0CL +ATOM 408 COM C 136 453.4 133.7 299.6 0 0CL +ATOM 409 A1 C 136 451.7 133.0 298.2 0 0CL +ATOM 410 B1 C 136 451.7 132.8 298.9 0 0CL +ATOM 411 COM C 137 138.7 470.0 141.6 0 0CL +ATOM 412 A1 C 137 137.2 469.1 140.2 0 0CL +ATOM 413 B1 C 137 136.9 469.5 140.8 0 0CL +ATOM 414 COM C 138 404.8 453.8 58.5 0 0CL +ATOM 415 A1 C 138 406.4 454.3 57.1 0 0CL +ATOM 416 B1 C 138 405.7 454.5 56.9 0 0CL +ATOM 417 COM C 139 442.5 498.8 333.2 0 0CL +ATOM 418 A1 C 139 441.7 499.4 331.2 0 0CL +ATOM 419 B1 C 139 442.4 499.4 331.3 0 0CL +ATOM 420 COM C 140 418.8 408.2 312.5 0 0CL +ATOM 421 A1 C 140 420.7 407.2 312.8 0 0CL +ATOM 422 B1 C 140 420.1 406.8 312.8 0 0CL +ATOM 423 COM C 141 9.0 107.3 227.4 0 0CL +ATOM 424 A1 C 141 11.2 107.3 227.1 0 0CL +ATOM 425 B1 C 141 10.9 107.7 227.6 0 0CL +ATOM 426 COM C 142 21.0 412.3 355.0 0 0CL +ATOM 427 A1 C 142 22.1 410.4 355.4 0 0CL +ATOM 428 B1 C 142 21.9 410.9 356.0 0 0CL +ATOM 429 COM C 143 497.0 250.7 72.7 0 0CL +ATOM 430 A1 C 143 494.8 251.0 72.9 0 0CL +ATOM 431 B1 C 143 495.2 251.6 72.9 0 0CL +ATOM 432 COM C 144 134.1 273.4 202.9 0 0CL +ATOM 433 A1 C 144 134.1 272.9 205.1 0 0CL +ATOM 434 B1 C 144 134.1 273.6 204.9 0 0CL +ATOM 435 COM C 145 418.2 324.3 386.3 0 0CL +ATOM 436 A1 C 145 418.4 326.5 386.1 0 0CL +ATOM 437 B1 C 145 418.2 326.2 386.8 0 0CL +ATOM 438 COM C 146 461.1 431.4 482.6 0 0CL +ATOM 439 A1 C 146 463.0 432.5 482.8 0 0CL +ATOM 440 B1 C 146 462.5 432.6 483.3 0 0CL +ATOM 441 COM C 147 281.2 223.9 151.5 0 0CL +ATOM 442 A1 C 147 282.7 225.2 150.6 0 0CL +ATOM 443 B1 C 147 282.0 225.5 150.8 0 0CL +ATOM 444 COM C 148 187.8 423.3 163.4 0 0CL +ATOM 445 A1 C 148 189.2 421.6 163.6 0 0CL +ATOM 446 B1 C 148 189.4 422.2 163.9 0 0CL +ATOM 447 COM C 149 453.2 450.8 318.9 0 0CL +ATOM 448 A1 C 149 454.9 452.3 319.3 0 0CL +ATOM 449 B1 C 149 455.0 451.7 318.9 0 0CL +ATOM 450 COM A 150 382.2 321.3 152.5 0 0CL +ATOM 451 C1 A 150 382.1 320.7 151.4 0 0CL +ATOM 452 B1 A 150 381.4 321.9 152.2 0 0CL +ATOM 453 COM A 151 341.0 497.1 74.8 0 0CL +ATOM 454 C1 A 151 340.4 497.0 73.6 0 0CL +ATOM 455 B1 A 151 341.5 497.9 74.3 0 0CL +ATOM 456 COM A 152 433.4 448.2 23.0 0 0CL +ATOM 457 C1 A 152 433.6 449.4 23.0 0 0CL +ATOM 458 B1 A 152 433.5 448.2 22.0 0 0CL +ATOM 459 COM A 153 221.5 274.6 411.1 0 0CL +ATOM 460 C1 A 153 221.7 273.9 412.2 0 0CL +ATOM 461 B1 A 153 220.5 274.5 411.4 0 0CL +ATOM 462 COM A 154 280.7 83.9 92.5 0 0CL +ATOM 463 C1 A 154 280.5 84.8 93.4 0 0CL +ATOM 464 B1 A 154 280.5 83.3 93.2 0 0CL +ATOM 465 COM A 155 284.2 226.0 151.0 0 0CL +ATOM 466 C1 A 155 283.5 224.9 151.0 0 0CL +ATOM 467 B1 A 155 283.4 226.5 151.2 0 0CL +ATOM 468 COM A 156 480.1 74.3 457.5 0 0CL +ATOM 469 C1 A 156 479.6 75.4 457.0 0 0CL +ATOM 470 B1 A 156 479.1 74.0 457.6 0 0CL +ATOM 471 COM A 157 386.3 34.7 425.5 0 0CL +ATOM 472 C1 A 157 385.0 34.6 425.4 0 0CL +ATOM 473 B1 A 157 386.3 33.9 424.8 0 0CL +ATOM 474 COM A 158 435.7 417.9 210.6 0 0CL +ATOM 475 C1 A 158 435.9 417.3 209.5 0 0CL +ATOM 476 B1 A 158 434.7 418.1 210.2 0 0CL +ATOM 477 COM A 159 73.1 229.0 282.3 0 0CL +ATOM 478 C1 A 159 73.0 230.2 282.8 0 0CL +ATOM 479 B1 A 159 72.3 229.2 281.8 0 0CL +ATOM 480 COM A 160 449.5 155.7 323.6 0 0CL +ATOM 481 C1 A 160 450.1 155.4 324.8 0 0CL +ATOM 482 B1 A 160 448.7 155.4 324.1 0 0CL +ATOM 483 COM A 161 163.9 170.8 32.1 0 0CL +ATOM 484 C1 A 161 164.0 171.4 31.0 0 0CL +ATOM 485 B1 A 161 163.0 171.3 32.2 0 0CL +ATOM 486 COM A 162 148.0 4.1 231.5 0 0CL +ATOM 487 C1 A 162 147.7 5.3 231.9 0 0CL +ATOM 488 B1 A 162 148.7 4.6 231.0 0 0CL +ATOM 489 COM A 163 474.2 455.8 125.0 0 0CL +ATOM 490 C1 A 163 475.1 456.3 125.8 0 0CL +ATOM 491 B1 A 163 473.5 456.0 125.8 0 0CL +ATOM 492 COM A 164 435.1 187.0 472.0 0 0CL +ATOM 493 C1 A 164 435.5 188.2 471.6 0 0CL +ATOM 494 B1 A 164 434.2 187.4 471.7 0 0CL +ATOM 495 COM A 165 62.8 243.7 174.6 0 0CL +ATOM 496 C1 A 165 63.1 243.4 175.9 0 0CL +ATOM 497 B1 A 165 62.4 244.6 175.0 0 0CL +ATOM 498 COM A 166 108.8 319.4 345.9 0 0CL +ATOM 499 C1 A 166 108.7 319.2 347.2 0 0CL +ATOM 500 B1 A 166 108.8 320.4 346.2 0 0CL +ATOM 501 COM A 167 450.5 133.8 297.3 0 0CL +ATOM 502 C1 A 167 451.7 133.8 297.7 0 0CL +ATOM 503 B1 A 167 450.3 133.4 298.3 0 0CL +ATOM 504 COM A 168 147.4 165.7 130.2 0 0CL +ATOM 505 C1 A 168 148.2 166.6 129.7 0 0CL +ATOM 506 B1 A 168 147.5 165.2 129.3 0 0CL +ATOM 507 COM A 169 74.5 412.6 399.5 0 0CL +ATOM 508 C1 A 169 73.8 411.9 400.4 0 0CL +ATOM 509 B1 A 169 75.1 411.8 399.5 0 0CL +ATOM 510 COM A 170 314.4 29.6 333.6 0 0CL +ATOM 511 C1 A 170 313.2 30.0 333.8 0 0CL +ATOM 512 B1 A 170 314.2 29.9 332.6 0 0CL +ATOM 513 COM A 171 22.9 7.4 173.7 0 0CL +ATOM 514 C1 A 171 21.7 7.9 173.7 0 0CL +ATOM 515 B1 A 171 22.6 7.1 174.7 0 0CL +ATOM 516 COM A 172 428.2 221.5 17.5 0 0CL +ATOM 517 C1 A 172 429.4 221.3 17.2 0 0CL +ATOM 518 B1 A 172 428.2 222.2 16.7 0 0CL +ATOM 519 COM A 173 440.9 498.6 329.8 0 0CL +ATOM 520 C1 A 173 441.0 498.8 331.1 0 0CL +ATOM 521 B1 A 173 442.0 498.8 329.8 0 0CL +ATOM 522 COM A 174 148.9 188.2 125.6 0 0CL +ATOM 523 C1 A 174 148.7 186.9 125.3 0 0CL +ATOM 524 B1 A 174 149.5 187.8 126.3 0 0CL +ATOM 525 COM A 175 102.0 148.1 241.9 0 0CL +ATOM 526 C1 A 175 100.7 148.2 241.7 0 0CL +ATOM 527 B1 A 175 101.9 147.7 240.9 0 0CL +ATOM 528 COM A 176 433.2 147.7 407.6 0 0CL +ATOM 529 C1 A 176 434.2 146.8 407.4 0 0CL +ATOM 530 B1 A 176 433.2 147.8 406.5 0 0CL +ATOM 531 COM A 177 239.4 41.5 290.0 0 0CL +ATOM 532 C1 A 177 238.9 41.1 291.2 0 0CL +ATOM 533 B1 A 177 239.2 40.5 289.7 0 0CL +ATOM 534 COM A 178 443.5 491.3 151.9 0 0CL +ATOM 535 C1 A 178 443.6 492.0 150.8 0 0CL +ATOM 536 B1 A 178 442.5 491.1 151.6 0 0CL +ATOM 537 COM A 179 189.5 324.9 426.0 0 0CL +ATOM 538 C1 A 179 189.8 326.1 425.4 0 0CL +ATOM 539 B1 A 179 188.7 325.4 426.4 0 0CL +ATOM 540 COM A 180 396.9 113.5 205.5 0 0CL +ATOM 541 C1 A 180 395.8 112.7 205.6 0 0CL +ATOM 542 B1 A 180 396.4 114.0 206.2 0 0CL +ATOM 543 COM A 181 286.4 413.7 28.8 0 0CL +ATOM 544 C1 A 181 285.5 414.7 28.7 0 0CL +ATOM 545 B1 A 181 286.2 413.7 29.8 0 0CL +ATOM 546 COM A 182 256.9 464.8 405.8 0 0CL +ATOM 547 C1 A 182 257.8 463.8 405.8 0 0CL +ATOM 548 B1 A 182 257.5 465.2 406.5 0 0CL +ATOM 549 COM A 183 189.3 420.1 164.4 0 0CL +ATOM 550 C1 A 183 188.6 420.9 163.7 0 0CL +ATOM 551 B1 A 183 189.7 420.9 164.9 0 0CL +ATOM 552 COM A 184 41.7 415.7 287.9 0 0CL +ATOM 553 C1 A 184 41.6 416.9 288.3 0 0CL +ATOM 554 B1 A 184 41.7 416.1 286.9 0 0CL +ATOM 555 COM A 185 288.2 444.6 331.0 0 0CL +ATOM 556 C1 A 185 288.8 445.6 331.6 0 0CL +ATOM 557 B1 A 185 287.6 445.3 330.6 0 0CL +ATOM 558 COM A 186 149.8 10.1 241.4 0 0CL +ATOM 559 C1 A 186 149.3 9.0 240.8 0 0CL +ATOM 560 B1 A 186 148.8 10.4 241.4 0 0CL +ATOM 561 COM A 187 70.1 37.6 480.2 0 0CL +ATOM 562 C1 A 187 69.8 37.6 479.0 0 0CL +ATOM 563 B1 A 187 69.9 36.6 480.1 0 0CL +ATOM 564 COM A 188 314.7 418.6 405.0 0 0CL +ATOM 565 C1 A 188 314.2 418.8 406.2 0 0CL +ATOM 566 B1 A 188 314.3 419.6 404.9 0 0CL +ATOM 567 COM A 189 232.3 210.5 362.3 0 0CL +ATOM 568 C1 A 189 233.3 210.4 363.2 0 0CL +ATOM 569 B1 A 189 233.0 210.2 361.6 0 0CL +ATOM 570 COM A 190 51.1 7.2 144.4 0 0CL +ATOM 571 C1 A 190 51.1 5.9 144.7 0 0CL +ATOM 572 B1 A 190 51.6 6.8 143.5 0 0CL +ATOM 573 COM A 191 79.0 212.9 467.1 0 0CL +ATOM 574 C1 A 191 77.8 213.0 467.6 0 0CL +ATOM 575 B1 A 191 79.0 211.9 467.4 0 0CL +ATOM 576 COM A 192 495.9 247.4 493.6 0 0CL +ATOM 577 C1 A 192 495.3 248.0 492.6 0 0CL +ATOM 578 B1 A 192 495.0 247.2 494.0 0 0CL +ATOM 579 COM A 193 21.8 408.7 355.3 0 0CL +ATOM 580 C1 A 193 21.6 409.9 354.7 0 0CL +ATOM 581 B1 A 193 21.6 409.2 356.2 0 0CL +ATOM 582 COM A 194 43.0 39.7 478.9 0 0CL +ATOM 583 C1 A 194 43.0 40.9 479.3 0 0CL +ATOM 584 B1 A 194 42.8 39.4 479.8 0 0CL +ATOM 585 COM A 195 357.2 23.7 351.7 0 0CL +ATOM 586 C1 A 195 356.1 23.4 350.9 0 0CL +ATOM 587 B1 A 195 357.2 22.7 351.9 0 0CL +ATOM 588 COM A 196 412.5 153.7 258.3 0 0CL +ATOM 589 C1 A 196 411.3 153.7 258.9 0 0CL +ATOM 590 B1 A 196 412.4 154.7 258.2 0 0CL +ATOM 591 COM A 197 98.1 132.5 416.2 0 0CL +ATOM 592 C1 A 197 97.3 133.5 416.3 0 0CL +ATOM 593 B1 A 197 97.4 131.9 416.5 0 0CL +ATOM 594 COM A 198 196.9 358.8 290.9 0 0CL +ATOM 595 C1 A 198 197.7 358.2 290.1 0 0CL +ATOM 596 B1 A 198 196.4 359.0 290.1 0 0CL +ATOM 597 COM A 199 351.5 279.4 195.9 0 0CL +ATOM 598 C1 A 199 351.0 278.2 195.5 0 0CL +ATOM 599 B1 A 199 350.8 279.8 195.2 0 0CL +ATOM 600 COM A 200 234.2 358.4 480.5 0 0CL +ATOM 601 C1 A 200 233.2 357.9 479.7 0 0CL +ATOM 602 B1 A 200 234.8 358.2 479.7 0 0CL +ATOM 603 COM A 201 403.1 261.3 482.7 0 0CL +ATOM 604 C1 A 201 402.0 261.0 482.1 0 0CL +ATOM 605 B1 A 201 402.7 260.8 483.5 0 0CL +ATOM 606 COM A 202 338.8 236.2 241.6 0 0CL +ATOM 607 C1 A 202 339.0 237.4 242.1 0 0CL +ATOM 608 B1 A 202 338.8 235.9 242.6 0 0CL +ATOM 609 COM A 203 12.9 114.2 151.2 0 0CL +ATOM 610 C1 A 203 13.6 115.1 151.8 0 0CL +ATOM 611 B1 A 203 13.8 114.0 150.7 0 0CL +ATOM 612 COM A 204 493.3 250.8 71.9 0 0CL +ATOM 613 C1 A 204 494.5 250.3 72.3 0 0CL +ATOM 614 B1 A 204 493.8 251.7 72.0 0 0CL +ATOM 615 COM A 205 1.2 98.0 161.8 0 0CL +ATOM 616 C1 A 205 0.5 98.8 162.5 0 0CL +ATOM 617 B1 A 205 1.9 98.0 162.5 0 0CL +ATOM 618 COM A 206 147.7 363.3 440.8 0 0CL +ATOM 619 C1 A 206 148.1 363.8 441.9 0 0CL +ATOM 620 B1 A 206 147.8 362.4 441.3 0 0CL +ATOM 621 COM A 207 36.4 243.0 21.7 0 0CL +ATOM 622 C1 A 207 36.1 243.4 20.5 0 0CL +ATOM 623 B1 A 207 37.0 242.4 21.2 0 0CL +ATOM 624 COM A 208 475.4 16.2 207.7 0 0CL +ATOM 625 C1 A 208 476.7 16.2 207.5 0 0CL +ATOM 626 B1 A 208 475.5 15.2 207.7 0 0CL +ATOM 627 COM A 209 320.4 73.8 172.9 0 0CL +ATOM 628 C1 A 209 320.6 74.4 174.0 0 0CL +ATOM 629 B1 A 209 321.1 73.2 173.2 0 0CL +ATOM 630 COM A 210 423.5 448.5 320.5 0 0CL +ATOM 631 C1 A 210 424.4 447.5 320.7 0 0CL +ATOM 632 B1 A 210 424.3 449.1 320.7 0 0CL +ATOM 633 COM A 211 471.3 455.4 232.9 0 0CL +ATOM 634 C1 A 211 472.3 454.7 232.6 0 0CL +ATOM 635 B1 A 211 471.4 455.1 233.9 0 0CL +ATOM 636 COM A 212 254.4 346.1 415.4 0 0CL +ATOM 637 C1 A 212 253.9 346.8 414.5 0 0CL +ATOM 638 B1 A 212 254.5 345.3 414.7 0 0CL +ATOM 639 COM A 213 493.9 356.4 35.4 0 0CL +ATOM 640 C1 A 213 494.4 355.5 36.2 0 0CL +ATOM 641 B1 A 213 493.7 356.9 36.3 0 0CL +ATOM 642 COM A 214 326.8 27.8 375.1 0 0CL +ATOM 643 C1 A 214 327.2 27.7 376.3 0 0CL +ATOM 644 B1 A 214 326.5 28.8 375.4 0 0CL +ATOM 645 COM A 215 369.7 401.2 340.3 0 0CL +ATOM 646 C1 A 215 368.9 400.9 339.3 0 0CL +ATOM 647 B1 A 215 368.9 400.9 340.9 0 0CL +ATOM 648 COM A 216 369.6 377.0 24.3 0 0CL +ATOM 649 C1 A 216 368.6 377.4 25.1 0 0CL +ATOM 650 B1 A 216 368.9 377.0 23.6 0 0CL +ATOM 651 COM A 217 392.0 97.1 483.9 0 0CL +ATOM 652 C1 A 217 391.6 97.5 485.1 0 0CL +ATOM 653 B1 A 217 392.9 96.9 484.4 0 0CL +ATOM 654 COM A 218 87.4 26.5 233.2 0 0CL +ATOM 655 C1 A 218 88.1 27.5 232.9 0 0CL +ATOM 656 B1 A 218 86.6 27.0 232.9 0 0CL +ATOM 657 COM A 219 318.0 46.9 222.4 0 0CL +ATOM 658 C1 A 219 319.3 46.6 222.3 0 0CL +ATOM 659 B1 A 219 318.2 47.2 221.4 0 0CL +ATOM 660 COM A 220 130.6 432.9 484.8 0 0CL +ATOM 661 C1 A 220 130.9 433.4 483.6 0 0CL +ATOM 662 B1 A 220 130.3 432.1 484.3 0 0CL +ATOM 663 COM A 221 307.3 349.9 320.2 0 0CL +ATOM 664 C1 A 221 307.6 350.2 319.0 0 0CL +ATOM 665 B1 A 221 307.1 350.9 320.3 0 0CL +ATOM 666 COM A 222 18.7 414.4 483.1 0 0CL +ATOM 667 C1 A 222 19.8 415.0 482.8 0 0CL +ATOM 668 B1 A 222 19.3 413.6 483.4 0 0CL +ATOM 669 COM A 223 433.4 483.3 72.1 0 0CL +ATOM 670 C1 A 223 434.2 484.0 72.7 0 0CL +ATOM 671 B1 A 223 434.1 483.1 71.5 0 0CL +ATOM 672 COM A 224 443.5 270.7 418.4 0 0CL +ATOM 673 C1 A 224 442.5 271.4 418.8 0 0CL +ATOM 674 B1 A 224 443.5 270.2 419.3 0 0CL +ATOM 675 COM A 225 3.3 282.6 76.3 0 0CL +ATOM 676 C1 A 225 4.4 283.2 76.1 0 0CL +ATOM 677 B1 A 225 3.6 281.9 75.7 0 0CL +ATOM 678 COM A 226 136.7 469.2 138.6 0 0CL +ATOM 679 C1 A 226 137.7 469.1 139.4 0 0CL +ATOM 680 B1 A 226 136.2 469.7 139.3 0 0CL +ATOM 681 COM A 227 104.3 188.5 81.9 0 0CL +ATOM 682 C1 A 227 103.5 187.8 82.7 0 0CL +ATOM 683 B1 A 227 103.4 188.8 81.4 0 0CL +ATOM 684 COM A 228 27.0 401.3 311.8 0 0CL +ATOM 685 C1 A 228 27.1 402.4 311.1 0 0CL +ATOM 686 B1 A 228 27.8 401.7 312.4 0 0CL +ATOM 687 COM A 229 333.2 109.5 409.7 0 0CL +ATOM 688 C1 A 229 332.8 110.8 409.9 0 0CL +ATOM 689 B1 A 229 332.4 109.3 410.4 0 0CL +ATOM 690 COM A 230 133.1 272.1 206.2 0 0CL +ATOM 691 C1 A 230 133.7 272.1 205.0 0 0CL +ATOM 692 B1 A 230 133.0 273.1 206.1 0 0CL +ATOM 693 COM A 231 333.9 154.4 310.6 0 0CL +ATOM 694 C1 A 231 332.8 153.6 310.6 0 0CL +ATOM 695 B1 A 231 333.3 155.0 311.2 0 0CL +ATOM 696 COM A 232 75.5 343.7 386.1 0 0CL +ATOM 697 C1 A 232 74.6 343.2 385.2 0 0CL +ATOM 698 B1 A 232 74.9 344.5 386.1 0 0CL +ATOM 699 COM A 233 283.8 39.1 273.1 0 0CL +ATOM 700 C1 A 233 282.7 38.6 272.7 0 0CL +ATOM 701 B1 A 233 283.5 38.7 274.0 0 0CL +ATOM 702 COM A 234 85.1 9.2 391.1 0 0CL +ATOM 703 C1 A 234 85.6 8.4 390.3 0 0CL +ATOM 704 B1 A 234 86.0 9.7 391.1 0 0CL +ATOM 705 COM A 235 343.6 197.0 211.7 0 0CL +ATOM 706 C1 A 235 343.6 195.8 211.2 0 0CL +ATOM 707 B1 A 235 344.3 197.3 211.0 0 0CL +ATOM 708 COM A 236 197.1 400.7 165.2 0 0CL +ATOM 709 C1 A 236 196.1 401.4 165.6 0 0CL +ATOM 710 B1 A 236 197.7 401.2 165.9 0 0CL +ATOM 711 COM A 237 419.7 327.7 385.8 0 0CL +ATOM 712 C1 A 237 419.1 326.5 385.5 0 0CL +ATOM 713 B1 A 237 419.4 327.4 386.8 0 0CL +ATOM 714 COM A 238 120.3 457.2 243.2 0 0CL +ATOM 715 C1 A 238 121.5 456.7 243.2 0 0CL +ATOM 716 B1 A 238 120.0 456.2 243.3 0 0CL +ATOM 717 COM A 239 208.2 225.0 108.9 0 0CL +ATOM 718 C1 A 239 209.1 225.1 109.8 0 0CL +ATOM 719 B1 A 239 207.7 224.3 109.5 0 0CL +ATOM 720 COM A 240 251.2 85.8 263.5 0 0CL +ATOM 721 C1 A 240 252.1 86.8 263.4 0 0CL +ATOM 722 B1 A 240 251.7 85.5 264.4 0 0CL +ATOM 723 COM A 241 190.3 123.7 418.2 0 0CL +ATOM 724 C1 A 241 190.7 124.9 418.1 0 0CL +ATOM 725 B1 A 241 189.5 124.1 418.6 0 0CL +ATOM 726 COM A 242 294.8 96.1 313.7 0 0CL +ATOM 727 C1 A 242 295.6 97.1 313.7 0 0CL +ATOM 728 B1 A 242 294.8 96.2 314.7 0 0CL +ATOM 729 COM A 243 422.2 407.0 312.0 0 0CL +ATOM 730 C1 A 243 421.3 407.8 312.3 0 0CL +ATOM 731 B1 A 243 421.5 406.3 311.9 0 0CL +ATOM 732 COM A 244 352.4 370.7 426.8 0 0CL +ATOM 733 C1 A 244 353.1 369.8 426.2 0 0CL +ATOM 734 B1 A 244 352.4 371.2 425.9 0 0CL +ATOM 735 COM A 245 30.2 362.0 311.3 0 0CL +ATOM 736 C1 A 245 30.7 361.0 311.9 0 0CL +ATOM 737 B1 A 245 30.7 362.6 312.0 0 0CL +ATOM 738 COM A 246 261.2 132.3 33.4 0 0CL +ATOM 739 C1 A 246 262.1 133.1 32.9 0 0CL +ATOM 740 B1 A 246 260.6 133.2 33.6 0 0CL +ATOM 741 COM A 247 183.3 470.9 112.4 0 0CL +ATOM 742 C1 A 247 183.4 472.0 111.6 0 0CL +ATOM 743 B1 A 247 183.8 470.4 111.6 0 0CL +ATOM 744 COM A 248 100.4 185.2 203.3 0 0CL +ATOM 745 C1 A 248 101.6 185.7 203.0 0 0CL +ATOM 746 B1 A 248 100.7 184.4 202.7 0 0CL +ATOM 747 COM A 249 24.2 302.3 367.2 0 0CL +ATOM 748 C1 A 249 23.2 302.9 367.7 0 0CL +ATOM 749 B1 A 249 24.8 302.7 367.9 0 0CL +ATOM 750 COM A 250 275.0 462.2 177.7 0 0CL +ATOM 751 C1 A 250 274.7 463.4 178.0 0 0CL +ATOM 752 B1 A 250 274.3 461.9 178.4 0 0CL +ATOM 753 COM A 251 432.6 333.0 405.0 0 0CL +ATOM 754 C1 A 251 431.5 333.7 405.3 0 0CL +ATOM 755 B1 A 251 432.0 332.7 404.1 0 0CL +ATOM 756 COM A 252 276.1 325.5 91.7 0 0CL +ATOM 757 C1 A 252 275.5 324.8 92.6 0 0CL +ATOM 758 B1 A 252 275.7 326.3 92.1 0 0CL +ATOM 759 COM A 253 295.5 305.2 487.8 0 0CL +ATOM 760 C1 A 253 296.6 305.9 488.3 0 0CL +ATOM 761 B1 A 253 295.9 305.5 486.9 0 0CL +ATOM 762 COM A 254 39.2 276.0 148.4 0 0CL +ATOM 763 C1 A 254 38.2 275.1 148.6 0 0CL +ATOM 764 B1 A 254 39.8 275.2 148.7 0 0CL +ATOM 765 COM A 255 232.5 481.9 352.8 0 0CL +ATOM 766 C1 A 255 233.0 482.9 353.5 0 0CL +ATOM 767 B1 A 255 232.9 481.3 353.5 0 0CL +ATOM 768 COM A 256 167.1 247.4 163.5 0 0CL +ATOM 769 C1 A 256 166.3 248.2 164.2 0 0CL +ATOM 770 B1 A 256 167.8 248.2 163.6 0 0CL +ATOM 771 COM A 257 139.5 383.1 104.4 0 0CL +ATOM 772 C1 A 257 140.8 382.7 104.7 0 0CL +ATOM 773 B1 A 257 139.8 383.1 103.5 0 0CL +ATOM 774 COM A 258 28.7 217.2 312.6 0 0CL +ATOM 775 C1 A 258 28.4 216.5 313.7 0 0CL +ATOM 776 B1 A 258 29.6 217.4 313.1 0 0CL +ATOM 777 COM A 259 115.9 212.5 260.8 0 0CL +ATOM 778 C1 A 259 116.7 213.5 260.8 0 0CL +ATOM 779 B1 A 259 116.8 211.9 260.8 0 0CL +ATOM 780 COM A 260 19.9 252.6 321.9 0 0CL +ATOM 781 C1 A 260 19.6 253.7 322.6 0 0CL +ATOM 782 B1 A 260 18.9 252.7 321.5 0 0CL +ATOM 783 COM A 261 129.7 339.4 201.7 0 0CL +ATOM 784 C1 A 261 130.7 339.8 201.0 0 0CL +ATOM 785 B1 A 261 129.4 338.8 201.0 0 0CL +ATOM 786 COM A 262 205.9 136.6 155.1 0 0CL +ATOM 787 C1 A 262 206.9 137.3 154.4 0 0CL +ATOM 788 B1 A 262 206.6 136.6 155.9 0 0CL +ATOM 789 COM A 263 106.1 189.9 150.1 0 0CL +ATOM 790 C1 A 263 107.0 189.3 150.8 0 0CL +ATOM 791 B1 A 263 106.3 190.7 150.6 0 0CL +ATOM 792 COM A 264 493.2 66.7 363.9 0 0CL +ATOM 793 C1 A 264 493.9 67.5 363.1 0 0CL +ATOM 794 B1 A 264 494.0 66.8 364.6 0 0CL +ATOM 795 COM A 265 392.4 151.5 272.4 0 0CL +ATOM 796 C1 A 265 393.2 152.5 272.9 0 0CL +ATOM 797 B1 A 265 393.0 150.9 273.1 0 0CL +ATOM 798 COM A 266 382.0 66.4 205.1 0 0CL +ATOM 799 C1 A 266 381.7 66.2 206.3 0 0CL +ATOM 800 B1 A 266 382.7 67.0 205.5 0 0CL +ATOM 801 COM A 267 197.3 233.3 96.4 0 0CL +ATOM 802 C1 A 267 198.1 232.9 95.5 0 0CL +ATOM 803 B1 A 267 196.5 232.9 95.9 0 0CL +ATOM 804 COM A 268 102.3 173.3 26.2 0 0CL +ATOM 805 C1 A 268 101.7 172.1 26.3 0 0CL +ATOM 806 B1 A 268 102.3 173.1 25.1 0 0CL +ATOM 807 COM A 269 40.4 11.6 178.3 0 0CL +ATOM 808 C1 A 269 41.4 10.8 178.1 0 0CL +ATOM 809 B1 A 269 40.5 11.3 179.3 0 0CL +ATOM 810 COM A 270 29.7 68.6 289.1 0 0CL +ATOM 811 C1 A 270 30.1 69.8 288.9 0 0CL +ATOM 812 B1 A 270 29.3 68.7 288.2 0 0CL +ATOM 813 COM A 271 2.7 376.2 475.5 0 0CL +ATOM 814 C1 A 271 1.7 376.4 476.3 0 0CL +ATOM 815 B1 A 271 2.5 377.1 475.1 0 0CL +ATOM 816 COM A 272 271.7 299.2 468.6 0 0CL +ATOM 817 C1 A 272 272.5 300.2 468.3 0 0CL +ATOM 818 B1 A 272 271.1 299.9 468.9 0 0CL +ATOM 819 COM A 273 104.5 219.4 211.0 0 0CL +ATOM 820 C1 A 273 103.4 219.3 211.7 0 0CL +ATOM 821 B1 A 273 105.0 219.3 211.9 0 0CL +ATOM 822 COM A 274 127.2 139.4 270.8 0 0CL +ATOM 823 C1 A 274 127.5 140.6 271.1 0 0CL +ATOM 824 B1 A 274 126.4 139.9 270.3 0 0CL +ATOM 825 COM A 275 157.5 81.9 192.8 0 0CL +ATOM 826 C1 A 275 157.9 80.7 192.3 0 0CL +ATOM 827 B1 A 275 157.7 81.5 193.7 0 0CL +ATOM 828 COM A 276 293.2 440.9 152.9 0 0CL +ATOM 829 C1 A 276 293.2 439.6 152.6 0 0CL +ATOM 830 B1 A 276 292.4 440.9 152.2 0 0CL +ATOM 831 COM A 277 464.7 432.2 483.1 0 0CL +ATOM 832 C1 A 277 463.6 431.9 482.4 0 0CL +ATOM 833 B1 A 277 464.1 432.4 483.9 0 0CL +ATOM 834 COM A 278 483.0 463.8 200.7 0 0CL +ATOM 835 C1 A 278 481.8 464.1 200.5 0 0CL +ATOM 836 B1 A 278 482.8 462.9 200.4 0 0CL +ATOM 837 COM A 279 162.3 87.5 46.6 0 0CL +ATOM 838 C1 A 279 162.3 88.5 47.5 0 0CL +ATOM 839 B1 A 279 161.2 87.7 46.6 0 0CL +ATOM 840 COM A 280 116.2 443.5 75.0 0 0CL +ATOM 841 C1 A 280 115.4 443.3 75.9 0 0CL +ATOM 842 B1 A 280 116.9 443.7 75.7 0 0CL +ATOM 843 COM A 281 430.4 411.2 299.0 0 0CL +ATOM 844 C1 A 281 430.3 409.9 299.3 0 0CL +ATOM 845 B1 A 281 429.4 411.0 298.6 0 0CL +ATOM 846 COM A 282 59.7 54.6 44.6 0 0CL +ATOM 847 C1 A 282 58.4 54.3 44.5 0 0CL +ATOM 848 B1 A 282 59.8 54.1 43.7 0 0CL +ATOM 849 COM A 283 352.5 155.6 233.8 0 0CL +ATOM 850 C1 A 283 353.2 154.9 234.7 0 0CL +ATOM 851 B1 A 283 353.2 156.4 233.9 0 0CL +ATOM 852 COM A 284 254.6 425.5 8.3 0 0CL +ATOM 853 C1 A 284 255.5 424.6 8.5 0 0CL +ATOM 854 B1 A 284 254.1 425.1 9.1 0 0CL +ATOM 855 COM A 285 262.5 249.4 96.5 0 0CL +ATOM 856 C1 A 285 261.9 250.4 95.9 0 0CL +ATOM 857 B1 A 285 261.9 249.6 97.3 0 0CL +ATOM 858 COM A 286 288.4 289.7 435.2 0 0CL +ATOM 859 C1 A 286 287.7 289.8 434.1 0 0CL +ATOM 860 B1 A 286 288.2 290.7 435.3 0 0CL +ATOM 861 COM A 287 317.1 66.4 52.1 0 0CL +ATOM 862 C1 A 287 317.2 67.7 52.4 0 0CL +ATOM 863 B1 A 287 318.1 66.5 51.8 0 0CL +ATOM 864 COM A 288 123.6 41.6 8.0 0 0CL +ATOM 865 C1 A 288 124.2 41.5 6.9 0 0CL +ATOM 866 B1 A 288 122.8 41.3 7.5 0 0CL +ATOM 867 COM A 289 287.5 217.4 227.5 0 0CL +ATOM 868 C1 A 289 287.8 216.3 226.8 0 0CL +ATOM 869 B1 A 289 288.0 217.0 228.3 0 0CL +ATOM 870 COM A 290 487.7 323.6 48.0 0 0CL +ATOM 871 C1 A 290 487.0 324.3 47.2 0 0CL +ATOM 872 B1 A 290 487.1 322.9 47.8 0 0CL +ATOM 873 COM A 291 449.7 222.5 331.6 0 0CL +ATOM 874 C1 A 291 449.7 222.9 330.4 0 0CL +ATOM 875 B1 A 291 449.3 223.4 331.9 0 0CL +ATOM 876 COM A 292 446.9 223.0 426.8 0 0CL +ATOM 877 C1 A 292 447.9 223.0 427.7 0 0CL +ATOM 878 B1 A 292 447.2 222.0 426.7 0 0CL +ATOM 879 COM A 293 485.0 442.7 289.5 0 0CL +ATOM 880 C1 A 293 484.4 443.8 289.2 0 0CL +ATOM 881 B1 A 293 485.6 443.2 290.1 0 0CL +ATOM 882 COM A 294 291.6 292.2 493.8 0 0CL +ATOM 883 C1 A 294 291.0 292.1 492.7 0 0CL +ATOM 884 B1 A 294 291.5 291.2 493.9 0 0CL +ATOM 885 COM A 295 155.3 278.6 203.9 0 0CL +ATOM 886 C1 A 295 156.2 278.2 203.0 0 0CL +ATOM 887 B1 A 295 155.5 279.5 203.5 0 0CL +ATOM 888 COM A 296 392.5 197.0 285.4 0 0CL +ATOM 889 C1 A 296 391.6 196.0 285.4 0 0CL +ATOM 890 B1 A 296 393.2 196.3 285.4 0 0CL +ATOM 891 COM A 297 17.9 340.2 93.0 0 0CL +ATOM 892 C1 A 297 18.5 341.0 93.8 0 0CL +ATOM 893 B1 A 297 17.1 340.6 93.4 0 0CL +ATOM 894 COM A 298 242.7 86.0 329.9 0 0CL +ATOM 895 C1 A 298 243.3 86.3 328.7 0 0CL +ATOM 896 B1 A 298 242.4 87.0 329.9 0 0CL +ATOM 897 COM A 299 351.1 262.7 90.3 0 0CL +ATOM 898 C1 A 299 352.2 262.0 90.5 0 0CL +ATOM 899 B1 A 299 351.1 262.2 89.4 0 0CL +ATOM 900 COM B 300 316.4 85.1 384.7 0 0CL +ATOM 901 C1 B 300 316.4 84.9 383.3 0 0CL +ATOM 902 A1 B 300 316.1 85.4 384.3 0 0CL +ATOM 903 COM B 301 431.6 331.9 403.3 0 0CL +ATOM 904 C1 B 301 430.6 332.5 404.1 0 0CL +ATOM 905 A1 B 301 431.7 332.2 403.8 0 0CL +ATOM 906 COM B 302 449.1 224.3 332.7 0 0CL +ATOM 907 C1 B 302 449.6 224.6 331.3 0 0CL +ATOM 908 A1 B 302 449.3 223.9 332.3 0 0CL +ATOM 909 COM B 303 168.7 248.8 163.2 0 0CL +ATOM 910 C1 B 303 167.5 249.5 163.6 0 0CL +ATOM 911 A1 B 303 168.2 248.5 163.3 0 0CL +ATOM 912 COM B 304 345.2 197.9 210.6 0 0CL +ATOM 913 C1 B 304 345.3 196.5 210.4 0 0CL +ATOM 914 A1 B 304 344.9 197.6 210.8 0 0CL +ATOM 915 COM B 305 288.6 291.8 435.7 0 0CL +ATOM 916 C1 B 305 288.2 291.6 434.3 0 0CL +ATOM 917 A1 B 305 288.5 291.3 435.4 0 0CL +ATOM 918 COM B 306 373.0 191.1 236.0 0 0CL +ATOM 919 C1 B 306 371.8 190.4 236.3 0 0CL +ATOM 920 A1 B 306 372.9 190.9 236.6 0 0CL +ATOM 921 COM B 307 294.7 95.7 315.8 0 0CL +ATOM 922 C1 B 307 295.8 96.6 315.5 0 0CL +ATOM 923 A1 B 307 294.8 95.9 315.3 0 0CL +ATOM 924 COM B 308 444.0 269.7 420.3 0 0CL +ATOM 925 C1 B 308 443.1 270.8 420.6 0 0CL +ATOM 926 A1 B 308 443.8 270.1 419.9 0 0CL +ATOM 927 COM B 309 288.2 216.8 229.5 0 0CL +ATOM 928 C1 B 309 288.1 215.7 228.6 0 0CL +ATOM 929 A1 B 309 288.0 216.8 228.9 0 0CL +ATOM 930 COM B 310 350.9 262.2 88.2 0 0CL +ATOM 931 C1 B 310 352.2 261.9 88.6 0 0CL +ATOM 932 A1 B 310 351.1 262.3 88.7 0 0CL +ATOM 933 COM B 311 38.1 424.2 167.5 0 0CL +ATOM 934 C1 B 311 36.8 424.8 167.5 0 0CL +ATOM 935 A1 B 311 37.6 423.9 167.4 0 0CL +ATOM 936 COM B 312 394.3 195.8 285.7 0 0CL +ATOM 937 C1 B 312 393.2 195.0 286.0 0 0CL +ATOM 938 A1 B 312 393.7 196.0 285.7 0 0CL +ATOM 939 COM B 313 433.0 187.4 472.0 0 0CL +ATOM 940 C1 B 313 433.7 188.7 471.9 0 0CL +ATOM 941 A1 B 313 433.6 187.5 472.0 0 0CL +ATOM 942 COM B 314 30.7 363.6 312.7 0 0CL +ATOM 943 C1 B 314 30.8 362.3 313.3 0 0CL +ATOM 944 A1 B 314 30.6 363.1 312.4 0 0CL +ATOM 945 COM B 315 217.7 344.6 240.4 0 0CL +ATOM 946 C1 B 315 217.9 343.5 239.5 0 0CL +ATOM 947 A1 B 315 218.3 344.3 240.3 0 0CL +ATOM 948 COM B 316 317.9 48.0 220.5 0 0CL +ATOM 949 C1 B 316 319.3 47.9 220.9 0 0CL +ATOM 950 A1 B 316 318.1 47.7 221.0 0 0CL +ATOM 951 COM B 317 19.5 412.4 483.5 0 0CL +ATOM 952 C1 B 317 20.5 413.2 482.9 0 0CL +ATOM 953 A1 B 317 19.4 413.0 483.3 0 0CL +ATOM 954 COM B 318 157.5 81.4 194.9 0 0CL +ATOM 955 C1 B 318 157.6 80.2 194.1 0 0CL +ATOM 956 A1 B 318 157.5 81.4 194.3 0 0CL +ATOM 957 COM B 319 275.2 327.4 92.0 0 0CL +ATOM 958 C1 B 319 274.4 326.4 92.7 0 0CL +ATOM 959 A1 B 319 275.3 326.8 92.0 0 0CL +ATOM 960 COM B 320 195.4 233.0 95.4 0 0CL +ATOM 961 C1 B 320 196.5 233.0 94.5 0 0CL +ATOM 962 A1 B 320 196.0 233.0 95.6 0 0CL +ATOM 963 COM B 321 102.7 189.1 80.4 0 0CL +ATOM 964 C1 B 321 102.3 188.0 81.2 0 0CL +ATOM 965 A1 B 321 103.1 188.9 80.9 0 0CL +ATOM 966 COM B 322 160.1 87.2 46.5 0 0CL +ATOM 967 C1 B 322 160.4 88.0 47.7 0 0CL +ATOM 968 A1 B 322 160.7 87.4 46.7 0 0CL +ATOM 969 COM B 323 12.6 107.8 228.8 0 0CL +ATOM 970 C1 B 323 11.5 108.0 227.9 0 0CL +ATOM 971 A1 B 323 12.5 107.4 228.4 0 0CL +ATOM 972 COM B 324 307.2 352.0 321.0 0 0CL +ATOM 973 C1 B 324 307.9 351.9 319.8 0 0CL +ATOM 974 A1 B 324 307.3 351.5 320.7 0 0CL +ATOM 975 COM B 325 108.6 321.6 346.1 0 0CL +ATOM 976 C1 B 325 108.2 321.0 347.3 0 0CL +ATOM 977 A1 B 325 108.6 321.0 346.2 0 0CL +ATOM 978 COM B 326 184.0 469.4 111.0 0 0CL +ATOM 979 C1 B 326 183.7 470.6 110.2 0 0CL +ATOM 980 A1 B 326 183.8 469.9 111.2 0 0CL +ATOM 981 COM B 327 332.9 156.1 311.6 0 0CL +ATOM 982 C1 B 327 331.9 155.1 311.2 0 0CL +ATOM 983 A1 B 327 333.1 155.6 311.3 0 0CL +ATOM 984 COM B 328 250.9 412.8 210.3 0 0CL +ATOM 985 C1 B 328 251.7 413.8 210.6 0 0CL +ATOM 986 A1 B 328 251.2 413.0 209.9 0 0CL +ATOM 987 COM B 329 399.5 243.7 452.9 0 0CL +ATOM 988 C1 B 329 398.5 242.6 453.1 0 0CL +ATOM 989 A1 B 329 398.9 243.8 453.2 0 0CL +ATOM 990 COM B 330 17.8 252.2 321.2 0 0CL +ATOM 991 C1 B 330 17.8 253.1 322.3 0 0CL +ATOM 992 A1 B 330 18.3 252.4 321.5 0 0CL +ATOM 993 COM B 331 167.9 56.8 437.0 0 0CL +ATOM 994 C1 B 331 168.6 56.9 438.3 0 0CL +ATOM 995 A1 B 331 168.3 56.4 437.2 0 0CL +ATOM 996 COM B 332 295.6 305.8 485.7 0 0CL +ATOM 997 C1 B 332 296.5 306.7 486.5 0 0CL +ATOM 998 A1 B 332 295.7 305.8 486.3 0 0CL +ATOM 999 COM B 333 412.5 155.8 257.6 0 0CL +ATOM 1000 C1 B 333 411.2 155.4 258.0 0 0CL +ATOM 1001 A1 B 333 412.4 155.2 257.8 0 0CL +ATOM 1002 COM B 334 286.6 413.7 31.0 0 0CL +ATOM 1003 C1 B 334 286.0 414.9 30.6 0 0CL +ATOM 1004 A1 B 334 286.5 413.8 30.4 0 0CL +ATOM 1005 COM B 335 283.5 38.7 275.3 0 0CL +ATOM 1006 C1 B 335 282.3 38.6 274.6 0 0CL +ATOM 1007 A1 B 335 283.5 38.8 274.7 0 0CL +ATOM 1008 COM B 336 85.4 27.3 233.0 0 0CL +ATOM 1009 C1 B 336 86.3 28.4 233.0 0 0CL +ATOM 1010 A1 B 336 86.0 27.2 233.0 0 0CL +ATOM 1011 COM B 337 129.5 431.1 484.1 0 0CL +ATOM 1012 C1 B 337 129.6 432.1 483.0 0 0CL +ATOM 1013 A1 B 337 129.8 431.7 484.2 0 0CL +ATOM 1014 COM B 338 61.6 245.5 174.9 0 0CL +ATOM 1015 C1 B 338 61.7 244.8 176.1 0 0CL +ATOM 1016 A1 B 338 61.9 245.0 175.0 0 0CL +ATOM 1017 COM B 339 121.6 41.3 7.3 0 0CL +ATOM 1018 C1 B 339 122.4 41.6 6.2 0 0CL +ATOM 1019 A1 B 339 122.2 41.4 7.4 0 0CL +ATOM 1020 COM B 340 162.1 171.9 32.8 0 0CL +ATOM 1021 C1 B 340 162.7 172.6 31.7 0 0CL +ATOM 1022 A1 B 340 162.6 171.7 32.6 0 0CL +ATOM 1023 COM B 341 3.0 98.0 162.9 0 0CL +ATOM 1024 C1 B 341 2.2 99.1 163.3 0 0CL +ATOM 1025 A1 B 341 2.5 98.1 162.7 0 0CL +ATOM 1026 COM B 342 314.4 29.6 331.4 0 0CL +ATOM 1027 C1 B 342 313.0 29.6 331.9 0 0CL +ATOM 1028 A1 B 342 314.2 29.6 332.0 0 0CL +ATOM 1029 COM B 343 41.3 416.0 285.7 0 0CL +ATOM 1030 C1 B 343 40.9 417.1 286.5 0 0CL +ATOM 1031 A1 B 343 41.4 416.0 286.3 0 0CL +ATOM 1032 COM B 344 234.1 331.4 308.3 0 0CL +ATOM 1033 C1 B 344 233.3 332.2 307.5 0 0CL +ATOM 1034 A1 B 344 234.1 332.0 308.4 0 0CL +ATOM 1035 COM B 345 76.3 411.3 399.5 0 0CL +ATOM 1036 C1 B 345 75.5 411.0 400.6 0 0CL +ATOM 1037 A1 B 345 75.8 411.6 399.6 0 0CL +ATOM 1038 COM B 346 463.8 433.1 484.8 0 0CL +ATOM 1039 C1 B 346 462.8 433.0 483.8 0 0CL +ATOM 1040 A1 B 346 463.9 432.9 484.3 0 0CL +ATOM 1041 COM B 347 342.5 498.6 74.1 0 0CL +ATOM 1042 C1 B 347 341.9 498.0 72.9 0 0CL +ATOM 1043 A1 B 347 342.1 498.2 74.1 0 0CL +ATOM 1044 COM B 348 14.3 113.8 149.6 0 0CL +ATOM 1045 C1 B 348 14.7 115.0 150.3 0 0CL +ATOM 1046 A1 B 348 14.0 114.0 150.1 0 0CL +ATOM 1047 COM B 349 482.9 461.6 200.5 0 0CL +ATOM 1048 C1 B 349 481.6 462.2 200.6 0 0CL +ATOM 1049 A1 B 349 482.8 462.2 200.6 0 0CL +ATOM 1050 COM B 350 441.3 491.0 151.8 0 0CL +ATOM 1051 C1 B 350 441.6 492.1 151.0 0 0CL +ATOM 1052 A1 B 350 441.9 491.2 151.8 0 0CL +ATOM 1053 COM B 351 25.8 303.3 368.2 0 0CL +ATOM 1054 C1 B 351 24.6 304.0 368.4 0 0CL +ATOM 1055 A1 B 351 25.3 303.1 368.0 0 0CL +ATOM 1056 COM B 352 198.7 401.7 166.3 0 0CL +ATOM 1057 C1 B 352 197.5 402.5 166.3 0 0CL +ATOM 1058 A1 B 352 198.2 401.5 166.0 0 0CL +ATOM 1059 COM B 353 207.1 223.3 109.7 0 0CL +ATOM 1060 C1 B 353 208.3 223.5 110.4 0 0CL +ATOM 1061 A1 B 353 207.5 223.7 109.6 0 0CL +ATOM 1062 COM B 354 383.4 68.1 205.5 0 0CL +ATOM 1063 C1 B 354 382.5 67.9 206.6 0 0CL +ATOM 1064 A1 B 354 383.0 67.6 205.5 0 0CL +ATOM 1065 COM B 355 393.5 149.9 273.3 0 0CL +ATOM 1066 C1 B 355 394.3 151.0 273.3 0 0CL +ATOM 1067 A1 B 355 393.3 150.4 273.1 0 0CL +ATOM 1068 COM B 356 3.4 281.1 74.8 0 0CL +ATOM 1069 C1 B 356 4.4 282.0 74.5 0 0CL +ATOM 1070 A1 B 356 3.4 281.5 75.1 0 0CL +ATOM 1071 COM B 357 155.5 280.7 203.6 0 0CL +ATOM 1072 C1 B 357 156.6 280.1 203.1 0 0CL +ATOM 1073 A1 B 357 155.6 280.1 203.6 0 0CL +ATOM 1074 COM B 358 52.5 7.0 142.7 0 0CL +ATOM 1075 C1 B 358 52.5 5.8 143.5 0 0CL +ATOM 1076 A1 B 358 52.1 6.9 143.2 0 0CL +ATOM 1077 COM B 359 386.8 32.9 424.4 0 0CL +ATOM 1078 C1 B 359 385.4 32.9 424.7 0 0CL +ATOM 1079 A1 B 359 386.6 33.3 424.7 0 0CL +ATOM 1080 COM B 360 396.2 115.1 206.8 0 0CL +ATOM 1081 C1 B 360 395.1 114.3 206.4 0 0CL +ATOM 1082 A1 B 360 396.3 114.6 206.4 0 0CL +ATOM 1083 COM B 361 357.4 21.7 352.7 0 0CL +ATOM 1084 C1 B 361 356.1 21.9 352.1 0 0CL +ATOM 1085 A1 B 361 357.2 22.2 352.4 0 0CL +ATOM 1086 COM B 362 411.0 159.1 443.5 0 0CL +ATOM 1087 C1 B 362 412.0 160.1 443.4 0 0CL +ATOM 1088 A1 B 362 411.3 159.2 443.9 0 0CL +ATOM 1089 COM B 363 139.8 383.6 102.3 0 0CL +ATOM 1090 C1 B 363 141.1 383.5 102.9 0 0CL +ATOM 1091 A1 B 363 139.9 383.5 102.9 0 0CL +ATOM 1092 COM B 364 325.8 29.8 375.3 0 0CL +ATOM 1093 C1 B 364 326.0 29.2 376.6 0 0CL +ATOM 1094 A1 B 364 326.1 29.2 375.4 0 0CL +ATOM 1095 COM B 365 376.8 30.1 31.9 0 0CL +ATOM 1096 C1 B 365 375.8 29.0 31.6 0 0CL +ATOM 1097 A1 B 365 376.2 30.2 31.8 0 0CL +ATOM 1098 COM B 366 447.3 221.0 426.0 0 0CL +ATOM 1099 C1 B 366 448.4 221.4 426.7 0 0CL +ATOM 1100 A1 B 366 447.3 221.5 426.3 0 0CL +ATOM 1101 COM B 367 493.1 357.7 37.0 0 0CL +ATOM 1102 C1 B 367 493.4 356.4 37.5 0 0CL +ATOM 1103 A1 B 367 493.3 357.3 36.6 0 0CL +ATOM 1104 COM B 368 261.7 249.7 98.5 0 0CL +ATOM 1105 C1 B 368 261.4 250.9 97.7 0 0CL +ATOM 1106 A1 B 368 261.9 249.8 98.0 0 0CL +ATOM 1107 COM B 369 149.4 4.7 229.9 0 0CL +ATOM 1108 C1 B 369 148.6 5.8 230.3 0 0CL +ATOM 1109 A1 B 369 148.9 4.7 230.4 0 0CL +ATOM 1110 COM B 370 472.6 455.7 126.5 0 0CL +ATOM 1111 C1 B 370 473.8 456.0 127.2 0 0CL +ATOM 1112 A1 B 370 473.1 455.8 126.2 0 0CL +ATOM 1113 COM B 371 270.2 300.2 469.6 0 0CL +ATOM 1114 C1 B 371 271.3 301.1 469.5 0 0CL +ATOM 1115 A1 B 371 270.7 300.1 469.4 0 0CL +ATOM 1116 COM B 372 322.1 72.4 173.0 0 0CL +ATOM 1117 C1 B 372 322.3 73.5 174.0 0 0CL +ATOM 1118 A1 B 372 321.7 72.9 173.1 0 0CL +ATOM 1119 COM B 373 353.5 157.6 234.0 0 0CL +ATOM 1120 C1 B 373 353.9 156.7 235.1 0 0CL +ATOM 1121 A1 B 373 353.3 157.0 234.1 0 0CL +ATOM 1122 COM B 374 427.9 223.3 16.2 0 0CL +ATOM 1123 C1 B 374 429.3 223.0 16.4 0 0CL +ATOM 1124 A1 B 374 428.1 222.8 16.6 0 0CL +ATOM 1125 COM B 375 71.2 228.9 281.3 0 0CL +ATOM 1126 C1 B 375 71.2 229.9 282.2 0 0CL +ATOM 1127 A1 B 375 71.7 229.0 281.6 0 0CL +ATOM 1128 COM B 376 456.6 452.5 317.8 0 0CL +ATOM 1129 C1 B 376 455.7 451.8 318.6 0 0CL +ATOM 1130 A1 B 376 456.2 452.8 318.1 0 0CL +ATOM 1131 COM B 377 212.2 337.8 435.5 0 0CL +ATOM 1132 C1 B 377 210.8 338.1 435.3 0 0CL +ATOM 1133 A1 B 377 211.9 338.4 435.6 0 0CL +ATOM 1134 COM B 378 433.2 148.4 405.5 0 0CL +ATOM 1135 C1 B 378 434.4 147.7 405.7 0 0CL +ATOM 1136 A1 B 378 433.3 148.2 406.0 0 0CL +ATOM 1137 COM B 379 257.5 465.8 407.6 0 0CL +ATOM 1138 C1 B 379 258.1 464.5 407.6 0 0CL +ATOM 1139 A1 B 379 257.4 465.5 407.2 0 0CL +ATOM 1140 COM B 380 268.7 288.6 25.5 0 0CL +ATOM 1141 C1 B 380 268.8 289.7 24.5 0 0CL +ATOM 1142 A1 B 380 268.2 288.9 25.2 0 0CL +ATOM 1143 COM B 381 274.0 115.3 85.5 0 0CL +ATOM 1144 C1 B 381 275.0 115.8 86.4 0 0CL +ATOM 1145 A1 B 381 274.5 115.0 85.6 0 0CL +ATOM 1146 COM B 382 132.8 392.2 466.5 0 0CL +ATOM 1147 C1 B 382 134.0 392.3 467.3 0 0CL +ATOM 1148 A1 B 382 133.3 392.5 466.3 0 0CL +ATOM 1149 COM B 383 481.8 400.5 396.3 0 0CL +ATOM 1150 C1 B 383 481.2 401.8 396.3 0 0CL +ATOM 1151 A1 B 383 481.2 400.6 396.3 0 0CL +ATOM 1152 COM B 384 105.9 219.6 212.7 0 0CL +ATOM 1153 C1 B 384 104.6 219.9 213.1 0 0CL +ATOM 1154 A1 B 384 105.4 219.6 212.3 0 0CL +ATOM 1155 COM B 385 291.3 290.1 494.5 0 0CL +ATOM 1156 C1 B 385 290.4 290.4 493.4 0 0CL +ATOM 1157 A1 B 385 291.3 290.7 494.2 0 0CL +ATOM 1158 COM B 386 254.4 344.2 414.4 0 0CL +ATOM 1159 C1 B 386 253.5 345.1 413.7 0 0CL +ATOM 1160 A1 B 386 254.3 344.7 414.6 0 0CL +ATOM 1161 COM B 387 406.3 456.1 55.7 0 0CL +ATOM 1162 C1 B 387 405.8 454.9 56.3 0 0CL +ATOM 1163 A1 B 387 406.6 455.8 56.1 0 0CL +ATOM 1164 COM B 388 394.1 96.9 484.4 0 0CL +ATOM 1165 C1 B 388 393.5 97.7 485.4 0 0CL +ATOM 1166 A1 B 388 393.5 97.0 484.4 0 0CL +ATOM 1167 COM B 389 190.7 421.5 165.3 0 0CL +ATOM 1168 C1 B 389 190.1 422.1 164.2 0 0CL +ATOM 1169 A1 B 389 190.3 421.2 165.0 0 0CL +ATOM 1170 COM B 390 60.4 53.5 42.9 0 0CL +ATOM 1171 C1 B 390 59.1 53.0 43.3 0 0CL +ATOM 1172 A1 B 390 60.1 53.7 43.4 0 0CL +ATOM 1173 COM B 391 470.9 454.8 235.0 0 0CL +ATOM 1174 C1 B 391 471.8 453.9 234.3 0 0CL +ATOM 1175 A1 B 391 471.1 454.9 234.4 0 0CL +ATOM 1176 COM B 392 478.3 73.4 458.3 0 0CL +ATOM 1177 C1 B 392 478.1 74.8 458.1 0 0CL +ATOM 1178 A1 B 392 478.7 73.8 458.1 0 0CL +ATOM 1179 COM B 393 28.8 401.7 313.0 0 0CL +ATOM 1180 C1 B 393 28.8 402.6 311.9 0 0CL +ATOM 1181 A1 B 393 28.4 401.7 312.6 0 0CL +ATOM 1182 COM B 394 233.6 210.2 360.5 0 0CL +ATOM 1183 C1 B 394 234.4 210.5 361.6 0 0CL +ATOM 1184 A1 B 394 233.3 210.3 361.0 0 0CL +ATOM 1185 COM B 395 421.1 405.1 312.1 0 0CL +ATOM 1186 C1 B 395 420.4 406.1 312.8 0 0CL +ATOM 1187 A1 B 395 421.3 405.7 312.1 0 0CL +ATOM 1188 COM B 396 291.8 441.5 151.3 0 0CL +ATOM 1189 C1 B 396 292.3 440.2 151.0 0 0CL +ATOM 1190 A1 B 396 292.2 441.2 151.7 0 0CL +ATOM 1191 COM B 397 419.1 327.8 387.9 0 0CL +ATOM 1192 C1 B 397 418.3 326.8 387.2 0 0CL +ATOM 1193 A1 B 397 419.1 327.6 387.3 0 0CL +ATOM 1194 COM B 398 433.7 418.8 210.1 0 0CL +ATOM 1195 C1 B 398 434.3 418.3 208.9 0 0CL +ATOM 1196 A1 B 398 434.3 418.5 210.1 0 0CL +ATOM 1197 COM B 399 434.6 482.8 70.4 0 0CL +ATOM 1198 C1 B 399 435.2 483.9 71.0 0 0CL +ATOM 1199 A1 B 399 434.3 483.0 70.9 0 0CL +ATOM 1200 COM B 400 102.7 173.2 24.0 0 0CL +ATOM 1201 C1 B 400 102.4 171.9 24.5 0 0CL +ATOM 1202 A1 B 400 102.6 173.1 24.6 0 0CL +ATOM 1203 COM B 401 21.8 409.3 357.4 0 0CL +ATOM 1204 C1 B 401 22.1 410.5 356.5 0 0CL +ATOM 1205 A1 B 401 21.8 409.3 356.8 0 0CL +ATOM 1206 COM B 402 428.5 411.2 297.8 0 0CL +ATOM 1207 C1 B 402 428.9 409.9 298.0 0 0CL +ATOM 1208 A1 B 402 429.0 411.1 298.1 0 0CL +ATOM 1209 COM B 403 69.5 35.5 480.6 0 0CL +ATOM 1210 C1 B 403 68.9 36.0 479.4 0 0CL +ATOM 1211 A1 B 403 69.6 36.1 480.4 0 0CL +ATOM 1212 COM B 404 486.4 321.9 48.2 0 0CL +ATOM 1213 C1 B 404 485.7 323.0 47.7 0 0CL +ATOM 1214 A1 B 404 486.7 322.4 48.1 0 0CL +ATOM 1215 COM B 405 368.2 401.0 341.9 0 0CL +ATOM 1216 C1 B 405 367.5 401.1 340.6 0 0CL +ATOM 1217 A1 B 405 368.5 401.1 341.4 0 0CL +ATOM 1218 COM B 406 125.2 139.9 270.0 0 0CL +ATOM 1219 C1 B 406 125.7 141.0 270.7 0 0CL +ATOM 1220 A1 B 406 125.7 139.9 270.3 0 0CL +ATOM 1221 COM B 407 331.9 108.6 411.3 0 0CL +ATOM 1222 C1 B 407 332.0 110.0 411.5 0 0CL +ATOM 1223 A1 B 407 332.3 109.0 410.9 0 0CL +ATOM 1224 COM B 408 339.0 235.1 243.5 0 0CL +ATOM 1225 C1 B 408 339.5 236.4 243.7 0 0CL +ATOM 1226 A1 B 408 339.0 235.5 243.1 0 0CL +ATOM 1227 COM B 409 475.1 14.1 207.4 0 0CL +ATOM 1228 C1 B 409 476.3 14.4 206.9 0 0CL +ATOM 1229 A1 B 409 475.3 14.6 207.4 0 0CL +ATOM 1230 COM B 410 102.3 147.0 240.0 0 0CL +ATOM 1231 C1 B 410 100.9 147.0 240.3 0 0CL +ATOM 1232 A1 B 410 102.1 147.2 240.5 0 0CL +ATOM 1233 COM B 411 43.0 38.6 480.8 0 0CL +ATOM 1234 C1 B 411 43.3 40.0 481.0 0 0CL +ATOM 1235 A1 B 411 43.0 39.0 480.3 0 0CL +ATOM 1236 COM B 412 368.4 376.6 22.5 0 0CL +ATOM 1237 C1 B 412 367.6 376.6 23.7 0 0CL +ATOM 1238 A1 B 412 368.6 376.7 23.1 0 0CL +ATOM 1239 COM B 413 280.6 82.2 93.8 0 0CL +ATOM 1240 C1 B 413 280.8 83.4 94.6 0 0CL +ATOM 1241 A1 B 413 280.7 82.7 93.6 0 0CL +ATOM 1242 COM B 414 117.4 210.9 260.3 0 0CL +ATOM 1243 C1 B 414 117.9 212.2 260.0 0 0CL +ATOM 1244 A1 B 414 117.1 211.4 260.4 0 0CL +ATOM 1245 COM B 415 424.8 450.2 321.1 0 0CL +ATOM 1246 C1 B 415 425.4 449.0 321.6 0 0CL +ATOM 1247 A1 B 415 424.5 449.7 321.0 0 0CL +ATOM 1248 COM B 416 449.6 132.7 299.0 0 0CL +ATOM 1249 C1 B 416 451.1 132.5 299.0 0 0CL +ATOM 1250 A1 B 416 450.0 132.9 298.6 0 0CL +ATOM 1251 COM B 417 2.4 377.8 474.1 0 0CL +ATOM 1252 C1 B 417 1.2 377.6 474.9 0 0CL +ATOM 1253 A1 B 417 2.3 377.4 474.5 0 0CL +ATOM 1254 COM B 418 147.9 11.2 241.3 0 0CL +ATOM 1255 C1 B 418 147.8 10.1 240.5 0 0CL +ATOM 1256 A1 B 418 148.4 10.8 241.2 0 0CL +ATOM 1257 COM B 419 282.7 227.5 150.9 0 0CL +ATOM 1258 C1 B 419 282.1 226.2 150.6 0 0CL +ATOM 1259 A1 B 419 283.0 227.0 150.9 0 0CL +ATOM 1260 COM B 420 15.9 340.5 93.8 0 0CL +ATOM 1261 C1 B 420 16.8 341.0 94.7 0 0CL +ATOM 1262 A1 B 420 16.5 340.4 93.7 0 0CL +ATOM 1263 COM B 421 402.5 260.7 484.8 0 0CL +ATOM 1264 C1 B 421 401.4 260.8 484.0 0 0CL +ATOM 1265 A1 B 421 402.6 260.8 484.2 0 0CL +ATOM 1266 COM B 422 40.1 11.1 180.4 0 0CL +ATOM 1267 C1 B 422 40.9 10.1 179.8 0 0CL +ATOM 1268 A1 B 422 40.2 11.1 179.9 0 0CL +ATOM 1269 COM B 423 187.8 325.6 427.3 0 0CL +ATOM 1270 C1 B 423 188.5 326.7 426.8 0 0CL +ATOM 1271 A1 B 423 188.3 325.5 426.9 0 0CL +ATOM 1272 COM B 424 494.7 66.3 365.5 0 0CL +ATOM 1273 C1 B 424 495.4 66.9 364.3 0 0CL +ATOM 1274 A1 B 424 494.4 66.5 365.0 0 0CL +ATOM 1275 COM B 425 219.3 274.3 411.1 0 0CL +ATOM 1276 C1 B 425 219.9 273.4 412.0 0 0CL +ATOM 1277 A1 B 425 219.9 274.3 411.2 0 0CL +ATOM 1278 COM B 426 207.0 136.1 156.9 0 0CL +ATOM 1279 C1 B 426 208.0 136.5 155.9 0 0CL +ATOM 1280 A1 B 426 206.8 136.3 156.3 0 0CL +ATOM 1281 COM B 427 244.0 144.9 442.5 0 0CL +ATOM 1282 C1 B 427 243.6 144.1 443.6 0 0CL +ATOM 1283 A1 B 427 244.4 144.5 442.7 0 0CL +ATOM 1284 COM B 428 352.5 372.3 425.2 0 0CL +ATOM 1285 C1 B 428 353.5 371.3 425.0 0 0CL +ATOM 1286 A1 B 428 352.6 371.8 425.6 0 0CL +ATOM 1287 COM B 429 195.6 359.8 289.5 0 0CL +ATOM 1288 C1 B 429 196.9 359.4 288.8 0 0CL +ATOM 1289 A1 B 429 196.1 359.5 289.8 0 0CL +ATOM 1290 COM B 430 128.6 338.2 200.3 0 0CL +ATOM 1291 C1 B 430 129.5 339.1 199.6 0 0CL +ATOM 1292 A1 B 430 128.9 338.6 200.6 0 0CL +ATOM 1293 COM B 431 79.5 210.8 467.8 0 0CL +ATOM 1294 C1 B 431 78.3 211.3 468.5 0 0CL +ATOM 1295 A1 B 431 79.2 211.4 467.7 0 0CL +ATOM 1296 COM B 432 313.8 420.5 404.1 0 0CL +ATOM 1297 C1 B 432 313.1 420.2 405.4 0 0CL +ATOM 1298 A1 B 432 314.0 420.0 404.5 0 0CL +ATOM 1299 COM B 433 96.9 130.9 417.1 0 0CL +ATOM 1300 C1 B 433 96.3 132.2 417.4 0 0CL +ATOM 1301 A1 B 433 97.2 131.5 416.9 0 0CL +ATOM 1302 COM B 434 239.5 39.5 289.1 0 0CL +ATOM 1303 C1 B 434 239.3 39.3 290.5 0 0CL +ATOM 1304 A1 B 434 239.5 40.0 289.5 0 0CL +ATOM 1305 COM B 435 251.7 350.8 208.3 0 0CL +ATOM 1306 C1 B 435 250.7 351.7 208.9 0 0CL +ATOM 1307 A1 B 435 251.8 351.4 208.5 0 0CL +ATOM 1308 COM B 436 28.4 68.5 287.4 0 0CL +ATOM 1309 C1 B 436 28.7 69.9 287.6 0 0CL +ATOM 1310 A1 B 436 28.7 68.7 287.8 0 0CL +ATOM 1311 COM B 437 279.7 117.1 413.7 0 0CL +ATOM 1312 C1 B 437 280.2 115.9 414.1 0 0CL +ATOM 1313 A1 B 437 279.6 116.9 414.2 0 0CL +ATOM 1314 COM B 438 119.2 455.3 243.0 0 0CL +ATOM 1315 C1 B 438 120.5 455.1 242.7 0 0CL +ATOM 1316 A1 B 438 119.6 455.7 243.0 0 0CL +ATOM 1317 COM B 439 86.9 10.3 391.7 0 0CL +ATOM 1318 C1 B 439 87.3 9.1 391.0 0 0CL +ATOM 1319 A1 B 439 86.5 9.9 391.5 0 0CL +ATOM 1320 COM B 440 22.9 6.9 175.9 0 0CL +ATOM 1321 C1 B 440 21.8 7.8 175.6 0 0CL +ATOM 1322 A1 B 440 22.8 7.1 175.3 0 0CL +ATOM 1323 COM B 441 416.4 52.8 224.5 0 0CL +ATOM 1324 C1 B 441 417.2 52.4 225.7 0 0CL +ATOM 1325 A1 B 441 416.2 52.7 225.1 0 0CL +ATOM 1326 COM B 442 147.1 164.6 128.3 0 0CL +ATOM 1327 C1 B 442 147.6 165.9 128.0 0 0CL +ATOM 1328 A1 B 442 147.2 165.0 128.7 0 0CL +ATOM 1329 COM B 443 214.2 381.5 495.4 0 0CL +ATOM 1330 C1 B 443 213.9 381.6 496.8 0 0CL +ATOM 1331 A1 B 443 214.6 381.3 495.8 0 0CL +ATOM 1332 COM B 444 319.1 66.2 51.0 0 0CL +ATOM 1333 C1 B 444 318.8 67.6 51.2 0 0CL +ATOM 1334 A1 B 444 318.6 66.4 51.3 0 0CL +ATOM 1335 COM B 445 273.8 461.2 179.3 0 0CL +ATOM 1336 C1 B 445 274.0 462.6 179.6 0 0CL +ATOM 1337 A1 B 445 274.1 461.6 179.0 0 0CL +ATOM 1338 COM B 446 188.5 124.1 419.4 0 0CL +ATOM 1339 C1 B 446 189.4 125.2 419.4 0 0CL +ATOM 1340 A1 B 446 189.1 124.1 419.2 0 0CL +ATOM 1341 COM B 447 233.5 480.2 353.7 0 0CL +ATOM 1342 C1 B 447 234.2 481.5 354.1 0 0CL +ATOM 1343 A1 B 447 233.3 480.8 353.5 0 0CL +ATOM 1344 COM B 448 350.5 280.6 194.3 0 0CL +ATOM 1345 C1 B 448 350.4 279.2 194.0 0 0CL +ATOM 1346 A1 B 448 350.8 280.2 194.7 0 0CL +ATOM 1347 COM B 449 117.8 444.4 76.2 0 0CL +ATOM 1348 C1 B 449 116.6 444.4 76.9 0 0CL +ATOM 1349 A1 B 449 117.3 444.2 75.9 0 0CL diff --git a/het3mer/PDB/800000.pdb b/het3mer/PDB/800000.pdb new file mode 100644 index 00000000..ed0b2196 --- /dev/null +++ b/het3mer/PDB/800000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 800000 CREATED Thu May 29 13:12:06 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 230.4 89.8 149.9 0 0CL +ATOM 1 A1 C 0 230.7 91.5 148.5 0 0CL +ATOM 2 B1 C 0 231.2 91.0 148.4 0 0CL +ATOM 3 COM C 1 263.3 324.0 295.8 0 0CL +ATOM 4 A1 C 1 261.2 323.8 295.2 0 0CL +ATOM 5 B1 C 1 261.5 323.2 295.6 0 0CL +ATOM 6 COM C 2 302.5 149.1 223.1 0 0CL +ATOM 7 A1 C 2 300.8 150.4 223.5 0 0CL +ATOM 8 B1 C 2 300.8 149.8 223.9 0 0CL +ATOM 9 COM C 3 80.8 138.9 206.1 0 0CL +ATOM 10 A1 C 3 80.9 139.1 208.3 0 0CL +ATOM 11 B1 C 3 81.4 138.8 208.0 0 0CL +ATOM 12 COM C 4 50.1 247.4 452.5 0 0CL +ATOM 13 A1 C 4 48.2 248.3 453.0 0 0CL +ATOM 14 B1 C 4 48.4 248.4 452.4 0 0CL +ATOM 15 COM C 5 259.6 113.6 370.0 0 0CL +ATOM 16 A1 C 5 261.4 112.3 369.6 0 0CL +ATOM 17 B1 C 5 261.0 112.2 370.2 0 0CL +ATOM 18 COM C 6 381.5 223.5 258.8 0 0CL +ATOM 19 A1 C 6 379.3 223.6 258.4 0 0CL +ATOM 20 B1 C 6 379.6 223.0 258.5 0 0CL +ATOM 21 COM C 7 218.4 5.6 223.7 0 0CL +ATOM 22 A1 C 7 216.6 4.4 224.0 0 0CL +ATOM 23 B1 C 7 216.5 5.0 223.6 0 0CL +ATOM 24 COM C 8 231.9 186.4 20.7 0 0CL +ATOM 25 A1 C 8 231.5 187.2 22.7 0 0CL +ATOM 26 B1 C 8 231.9 187.6 22.3 0 0CL +ATOM 27 COM C 9 476.3 280.4 263.0 0 0CL +ATOM 28 A1 C 9 475.8 279.3 261.1 0 0CL +ATOM 29 B1 C 9 475.2 279.6 261.6 0 0CL +ATOM 30 COM C 10 55.9 298.7 262.4 0 0CL +ATOM 31 A1 C 10 56.4 300.0 264.1 0 0CL +ATOM 32 B1 C 10 55.9 300.3 263.7 0 0CL +ATOM 33 COM C 11 429.3 240.8 394.7 0 0CL +ATOM 34 A1 C 11 430.9 241.1 393.2 0 0CL +ATOM 35 B1 C 11 430.9 241.5 393.8 0 0CL +ATOM 36 COM C 12 162.4 287.8 451.1 0 0CL +ATOM 37 A1 C 12 164.2 289.0 451.8 0 0CL +ATOM 38 B1 C 12 163.5 289.3 451.8 0 0CL +ATOM 39 COM C 13 94.3 276.4 37.8 0 0CL +ATOM 40 A1 C 13 92.3 277.0 37.2 0 0CL +ATOM 41 B1 C 13 92.4 276.8 37.9 0 0CL +ATOM 42 COM C 14 488.3 366.6 143.4 0 0CL +ATOM 43 A1 C 14 486.2 366.8 144.0 0 0CL +ATOM 44 B1 C 14 486.3 366.7 143.3 0 0CL +ATOM 45 COM C 15 402.2 174.4 72.1 0 0CL +ATOM 46 A1 C 15 403.9 173.2 72.9 0 0CL +ATOM 47 B1 C 15 403.4 173.5 73.4 0 0CL +ATOM 48 COM C 16 209.3 418.6 178.8 0 0CL +ATOM 49 A1 C 16 210.3 417.0 180.0 0 0CL +ATOM 50 B1 C 16 209.7 417.3 180.3 0 0CL +ATOM 51 COM C 17 327.9 482.1 76.1 0 0CL +ATOM 52 A1 C 17 328.3 481.4 74.0 0 0CL +ATOM 53 B1 C 17 327.6 481.5 74.2 0 0CL +ATOM 54 COM C 18 357.3 464.1 183.4 0 0CL +ATOM 55 A1 C 18 358.9 464.8 182.0 0 0CL +ATOM 56 B1 C 18 358.8 464.1 182.0 0 0CL +ATOM 57 COM C 19 173.5 339.7 24.5 0 0CL +ATOM 58 A1 C 19 174.5 341.4 23.4 0 0CL +ATOM 59 B1 C 19 173.8 341.2 23.3 0 0CL +ATOM 60 COM C 20 275.8 488.1 352.2 0 0CL +ATOM 61 A1 C 20 276.3 486.1 351.4 0 0CL +ATOM 62 B1 C 20 276.8 486.4 351.9 0 0CL +ATOM 63 COM C 21 455.5 457.3 470.7 0 0CL +ATOM 64 A1 C 21 455.9 455.1 470.4 0 0CL +ATOM 65 B1 C 21 456.4 455.6 470.6 0 0CL +ATOM 66 COM C 22 193.8 260.7 139.5 0 0CL +ATOM 67 A1 C 22 195.5 260.3 140.7 0 0CL +ATOM 68 B1 C 22 195.4 261.0 140.6 0 0CL +ATOM 69 COM C 23 167.9 176.0 388.5 0 0CL +ATOM 70 A1 C 23 167.3 176.9 386.6 0 0CL +ATOM 71 B1 C 23 167.4 176.2 386.6 0 0CL +ATOM 72 COM C 24 232.6 317.2 320.4 0 0CL +ATOM 73 A1 C 24 231.0 316.7 319.0 0 0CL +ATOM 74 B1 C 24 230.8 316.5 319.7 0 0CL +ATOM 75 COM C 25 328.5 26.1 382.6 0 0CL +ATOM 76 A1 C 25 328.4 25.9 380.4 0 0CL +ATOM 77 B1 C 25 327.8 26.1 380.7 0 0CL +ATOM 78 COM C 26 479.6 4.1 47.0 0 0CL +ATOM 79 A1 C 26 480.8 2.4 46.4 0 0CL +ATOM 80 B1 C 26 481.2 3.0 46.7 0 0CL +ATOM 81 COM C 27 217.6 207.2 39.6 0 0CL +ATOM 82 A1 C 27 216.5 208.4 38.2 0 0CL +ATOM 83 B1 C 27 216.8 207.8 37.9 0 0CL +ATOM 84 COM C 28 326.2 300.5 495.2 0 0CL +ATOM 85 A1 C 28 325.6 302.0 496.7 0 0CL +ATOM 86 B1 C 28 325.5 301.3 496.9 0 0CL +ATOM 87 COM C 29 308.4 484.4 198.5 0 0CL +ATOM 88 A1 C 29 310.2 485.4 199.3 0 0CL +ATOM 89 B1 C 29 309.6 485.8 199.2 0 0CL +ATOM 90 COM C 30 213.8 356.8 16.7 0 0CL +ATOM 91 A1 C 30 213.0 354.8 17.2 0 0CL +ATOM 92 B1 C 30 213.3 355.2 17.7 0 0CL +ATOM 93 COM C 31 381.8 140.2 326.7 0 0CL +ATOM 94 A1 C 31 384.0 139.8 326.6 0 0CL +ATOM 95 B1 C 31 383.7 140.5 326.4 0 0CL +ATOM 96 COM C 32 311.9 148.7 212.2 0 0CL +ATOM 97 A1 C 32 311.0 150.7 212.3 0 0CL +ATOM 98 B1 C 32 311.6 150.6 211.8 0 0CL +ATOM 99 COM C 33 271.9 344.3 398.5 0 0CL +ATOM 100 A1 C 33 273.9 344.8 397.8 0 0CL +ATOM 101 B1 C 33 273.8 344.1 398.1 0 0CL +ATOM 102 COM C 34 311.8 35.4 126.2 0 0CL +ATOM 103 A1 C 34 313.7 34.5 126.8 0 0CL +ATOM 104 B1 C 34 313.5 34.4 126.1 0 0CL +ATOM 105 COM C 35 26.2 244.9 330.7 0 0CL +ATOM 106 A1 C 35 25.5 243.7 332.4 0 0CL +ATOM 107 B1 C 35 26.2 243.9 332.4 0 0CL +ATOM 108 COM C 36 59.3 339.4 382.5 0 0CL +ATOM 109 A1 C 36 58.8 340.9 380.9 0 0CL +ATOM 110 B1 C 36 58.5 340.2 380.8 0 0CL +ATOM 111 COM C 37 5.4 434.4 301.2 0 0CL +ATOM 112 A1 C 37 5.7 435.6 303.1 0 0CL +ATOM 113 B1 C 37 6.3 435.3 302.8 0 0CL +ATOM 114 COM C 38 187.6 366.0 263.8 0 0CL +ATOM 115 A1 C 38 189.2 364.7 264.6 0 0CL +ATOM 116 B1 C 38 188.8 364.4 264.1 0 0CL +ATOM 117 COM C 39 410.4 383.3 375.1 0 0CL +ATOM 118 A1 C 39 411.3 381.3 375.6 0 0CL +ATOM 119 B1 C 39 410.7 381.3 375.2 0 0CL +ATOM 120 COM C 40 110.8 101.6 452.8 0 0CL +ATOM 121 A1 C 40 110.1 102.5 454.7 0 0CL +ATOM 122 B1 C 40 109.6 102.5 454.1 0 0CL +ATOM 123 COM C 41 143.4 219.8 337.8 0 0CL +ATOM 124 A1 C 41 141.3 220.3 337.1 0 0CL +ATOM 125 B1 C 41 141.4 219.7 337.5 0 0CL +ATOM 126 COM C 42 189.4 94.6 97.8 0 0CL +ATOM 127 A1 C 42 187.3 94.5 98.5 0 0CL +ATOM 128 B1 C 42 187.4 94.4 97.8 0 0CL +ATOM 129 COM C 43 133.4 246.4 349.1 0 0CL +ATOM 130 A1 C 43 131.9 245.5 350.4 0 0CL +ATOM 131 B1 C 43 131.9 246.2 350.4 0 0CL +ATOM 132 COM C 44 354.9 424.4 21.2 0 0CL +ATOM 133 A1 C 44 354.2 424.8 19.1 0 0CL +ATOM 134 B1 C 44 354.4 425.4 19.6 0 0CL +ATOM 135 COM C 45 222.0 55.9 434.0 0 0CL +ATOM 136 A1 C 45 220.7 55.1 435.5 0 0CL +ATOM 137 B1 C 45 220.6 55.8 435.4 0 0CL +ATOM 138 COM C 46 243.4 187.5 155.7 0 0CL +ATOM 139 A1 C 46 241.7 187.0 157.0 0 0CL +ATOM 140 B1 C 46 241.6 187.5 156.4 0 0CL +ATOM 141 COM C 47 321.4 68.6 11.3 0 0CL +ATOM 142 A1 C 47 321.8 66.6 10.5 0 0CL +ATOM 143 B1 C 47 321.4 67.0 10.0 0 0CL +ATOM 144 COM C 48 360.4 180.5 154.4 0 0CL +ATOM 145 A1 C 48 360.9 178.6 153.4 0 0CL +ATOM 146 B1 C 48 361.5 179.1 153.4 0 0CL +ATOM 147 COM C 49 369.0 316.5 36.5 0 0CL +ATOM 148 A1 C 49 367.9 316.3 34.7 0 0CL +ATOM 149 B1 C 49 367.7 315.8 35.2 0 0CL +ATOM 150 COM C 50 107.2 248.7 458.6 0 0CL +ATOM 151 A1 C 50 107.4 250.7 457.6 0 0CL +ATOM 152 B1 C 50 107.4 250.1 457.2 0 0CL +ATOM 153 COM C 51 96.3 218.7 200.2 0 0CL +ATOM 154 A1 C 51 98.5 218.7 200.2 0 0CL +ATOM 155 B1 C 51 98.1 219.3 200.4 0 0CL +ATOM 156 COM C 52 363.1 8.6 364.1 0 0CL +ATOM 157 A1 C 52 362.3 6.6 363.8 0 0CL +ATOM 158 B1 C 52 363.0 6.7 364.0 0 0CL +ATOM 159 COM C 53 210.5 77.3 360.3 0 0CL +ATOM 160 A1 C 53 212.2 77.8 359.0 0 0CL +ATOM 161 B1 C 53 211.7 78.3 359.1 0 0CL +ATOM 162 COM C 54 82.4 105.4 356.6 0 0CL +ATOM 163 A1 C 54 81.3 104.0 355.2 0 0CL +ATOM 164 B1 C 54 81.7 103.7 355.8 0 0CL +ATOM 165 COM C 55 338.9 46.7 298.0 0 0CL +ATOM 166 A1 C 55 340.9 47.4 297.4 0 0CL +ATOM 167 B1 C 55 340.4 47.9 297.6 0 0CL +ATOM 168 COM C 56 18.5 70.1 211.3 0 0CL +ATOM 169 A1 C 56 18.0 71.9 212.4 0 0CL +ATOM 170 B1 C 56 17.6 71.8 211.8 0 0CL +ATOM 171 COM C 57 325.3 283.7 182.3 0 0CL +ATOM 172 A1 C 57 326.9 283.4 183.7 0 0CL +ATOM 173 B1 C 57 326.8 282.8 183.2 0 0CL +ATOM 174 COM C 58 128.8 43.4 495.9 0 0CL +ATOM 175 A1 C 58 129.1 44.9 497.5 0 0CL +ATOM 176 B1 C 58 128.9 45.2 496.8 0 0CL +ATOM 177 COM C 59 315.3 434.2 409.8 0 0CL +ATOM 178 A1 C 59 314.6 434.2 411.9 0 0CL +ATOM 179 B1 C 59 315.2 434.5 411.8 0 0CL +ATOM 180 COM C 60 22.3 144.3 31.2 0 0CL +ATOM 181 A1 C 60 21.7 142.2 31.5 0 0CL +ATOM 182 B1 C 60 21.6 142.7 32.0 0 0CL +ATOM 183 COM C 61 32.4 265.0 421.7 0 0CL +ATOM 184 A1 C 61 31.3 266.2 423.2 0 0CL +ATOM 185 B1 C 61 31.0 265.5 423.0 0 0CL +ATOM 186 COM C 62 436.2 240.9 332.3 0 0CL +ATOM 187 A1 C 62 438.1 240.2 333.0 0 0CL +ATOM 188 B1 C 62 437.6 240.3 333.5 0 0CL +ATOM 189 COM C 63 24.6 195.2 401.1 0 0CL +ATOM 190 A1 C 63 26.4 194.9 400.0 0 0CL +ATOM 191 B1 C 63 26.5 195.0 400.7 0 0CL +ATOM 192 COM C 64 491.7 278.7 149.9 0 0CL +ATOM 193 A1 C 64 493.3 279.9 150.8 0 0CL +ATOM 194 B1 C 64 493.3 279.2 151.0 0 0CL +ATOM 195 COM C 65 171.7 168.4 378.9 0 0CL +ATOM 196 A1 C 65 172.4 167.5 380.8 0 0CL +ATOM 197 B1 C 65 172.1 168.2 380.8 0 0CL +ATOM 198 COM C 66 445.6 305.1 269.8 0 0CL +ATOM 199 A1 C 66 445.1 303.1 270.4 0 0CL +ATOM 200 B1 C 66 445.7 303.2 270.0 0 0CL +ATOM 201 COM C 67 371.1 132.3 222.8 0 0CL +ATOM 202 A1 C 67 372.9 131.3 222.2 0 0CL +ATOM 203 B1 C 67 372.3 130.9 222.1 0 0CL +ATOM 204 COM C 68 470.4 402.5 28.5 0 0CL +ATOM 205 A1 C 68 471.5 403.5 30.2 0 0CL +ATOM 206 B1 C 68 470.9 403.9 29.8 0 0CL +ATOM 207 COM C 69 432.9 383.9 489.0 0 0CL +ATOM 208 A1 C 69 433.2 383.9 486.9 0 0CL +ATOM 209 B1 C 69 433.5 383.3 487.3 0 0CL +ATOM 210 COM C 70 258.0 38.4 484.2 0 0CL +ATOM 211 A1 C 70 257.9 39.2 486.2 0 0CL +ATOM 212 B1 C 70 257.6 38.6 486.1 0 0CL +ATOM 213 COM C 71 354.6 236.0 147.2 0 0CL +ATOM 214 A1 C 71 355.3 235.2 145.3 0 0CL +ATOM 215 B1 C 71 355.8 235.3 145.8 0 0CL +ATOM 216 COM C 72 433.7 451.1 112.5 0 0CL +ATOM 217 A1 C 72 434.8 451.7 110.7 0 0CL +ATOM 218 B1 C 72 434.1 451.9 110.7 0 0CL +ATOM 219 COM C 73 150.7 350.6 62.2 0 0CL +ATOM 220 A1 C 73 149.5 349.1 61.1 0 0CL +ATOM 221 B1 C 73 149.4 349.8 60.9 0 0CL +ATOM 222 COM C 74 268.1 130.4 185.0 0 0CL +ATOM 223 A1 C 74 266.4 131.7 185.3 0 0CL +ATOM 224 B1 C 74 267.0 131.9 185.7 0 0CL +ATOM 225 COM C 75 336.1 399.7 100.3 0 0CL +ATOM 226 A1 C 75 334.4 401.2 100.5 0 0CL +ATOM 227 B1 C 75 335.0 401.4 100.2 0 0CL +ATOM 228 COM C 76 189.2 48.6 72.2 0 0CL +ATOM 229 A1 C 76 187.7 49.5 70.9 0 0CL +ATOM 230 B1 C 76 187.5 48.9 71.3 0 0CL +ATOM 231 COM C 77 173.4 148.7 398.2 0 0CL +ATOM 232 A1 C 77 173.0 148.7 396.0 0 0CL +ATOM 233 B1 C 77 172.4 148.9 396.5 0 0CL +ATOM 234 COM C 78 125.5 293.5 314.7 0 0CL +ATOM 235 A1 C 78 127.2 294.0 316.1 0 0CL +ATOM 236 B1 C 78 126.7 293.6 316.3 0 0CL +ATOM 237 COM C 79 198.0 346.2 362.4 0 0CL +ATOM 238 A1 C 79 199.2 344.4 361.8 0 0CL +ATOM 239 B1 C 79 199.5 344.8 362.3 0 0CL +ATOM 240 COM C 80 308.0 274.9 365.2 0 0CL +ATOM 241 A1 C 80 306.7 273.4 364.2 0 0CL +ATOM 242 B1 C 80 306.5 273.8 364.8 0 0CL +ATOM 243 COM C 81 380.4 400.2 225.8 0 0CL +ATOM 244 A1 C 81 378.2 400.2 225.7 0 0CL +ATOM 245 B1 C 81 378.5 400.4 226.3 0 0CL +ATOM 246 COM C 82 266.7 309.6 62.5 0 0CL +ATOM 247 A1 C 82 268.7 309.7 63.5 0 0CL +ATOM 248 B1 C 82 268.1 309.5 63.9 0 0CL +ATOM 249 COM C 83 307.6 170.3 50.9 0 0CL +ATOM 250 A1 C 83 309.5 170.3 52.1 0 0CL +ATOM 251 B1 C 83 309.5 170.2 51.4 0 0CL +ATOM 252 COM C 84 21.9 451.3 90.4 0 0CL +ATOM 253 A1 C 84 24.0 450.5 90.2 0 0CL +ATOM 254 B1 C 84 23.5 450.3 89.7 0 0CL +ATOM 255 COM C 85 356.9 364.8 30.2 0 0CL +ATOM 256 A1 C 85 356.2 364.9 28.1 0 0CL +ATOM 257 B1 C 85 356.5 365.5 28.3 0 0CL +ATOM 258 COM C 86 445.5 121.7 27.0 0 0CL +ATOM 259 A1 C 86 446.8 120.5 28.4 0 0CL +ATOM 260 B1 C 86 446.2 120.1 28.1 0 0CL +ATOM 261 COM C 87 19.9 314.4 264.3 0 0CL +ATOM 262 A1 C 87 19.4 316.4 265.1 0 0CL +ATOM 263 B1 C 87 19.8 316.3 264.5 0 0CL +ATOM 264 COM C 88 477.4 365.7 131.6 0 0CL +ATOM 265 A1 C 88 479.4 365.2 130.6 0 0CL +ATOM 266 B1 C 88 479.4 365.8 131.1 0 0CL +ATOM 267 COM C 89 34.8 211.4 222.5 0 0CL +ATOM 268 A1 C 89 33.2 210.6 221.2 0 0CL +ATOM 269 B1 C 89 33.9 210.4 221.0 0 0CL +ATOM 270 COM C 90 400.5 171.2 141.2 0 0CL +ATOM 271 A1 C 90 399.6 170.7 139.3 0 0CL +ATOM 272 B1 C 90 399.2 170.4 139.9 0 0CL +ATOM 273 COM C 91 202.2 314.5 270.6 0 0CL +ATOM 274 A1 C 91 202.1 316.5 271.5 0 0CL +ATOM 275 B1 C 91 202.8 316.3 271.2 0 0CL +ATOM 276 COM C 92 380.6 374.4 105.9 0 0CL +ATOM 277 A1 C 92 379.3 373.6 107.5 0 0CL +ATOM 278 B1 C 92 379.9 373.2 107.3 0 0CL +ATOM 279 COM C 93 243.1 82.9 409.5 0 0CL +ATOM 280 A1 C 93 243.9 82.2 411.5 0 0CL +ATOM 281 B1 C 93 244.3 82.6 411.1 0 0CL +ATOM 282 COM C 94 378.4 420.9 95.3 0 0CL +ATOM 283 A1 C 94 379.0 420.4 97.4 0 0CL +ATOM 284 B1 C 94 379.5 420.4 96.9 0 0CL +ATOM 285 COM C 95 185.6 16.7 150.9 0 0CL +ATOM 286 A1 C 95 184.1 15.5 149.7 0 0CL +ATOM 287 B1 C 95 184.0 15.5 150.5 0 0CL +ATOM 288 COM C 96 488.2 129.3 479.7 0 0CL +ATOM 289 A1 C 96 487.3 131.3 480.1 0 0CL +ATOM 290 B1 C 96 487.5 130.8 480.7 0 0CL +ATOM 291 COM C 97 465.5 474.1 194.0 0 0CL +ATOM 292 A1 C 97 464.0 473.4 195.5 0 0CL +ATOM 293 B1 C 97 464.3 474.0 195.7 0 0CL +ATOM 294 COM C 98 412.9 499.6 156.4 0 0CL +ATOM 295 A1 C 98 411.4 498.5 155.3 0 0CL +ATOM 296 B1 C 98 412.0 498.2 155.4 0 0CL +ATOM 297 COM C 99 487.4 252.4 359.8 0 0CL +ATOM 298 A1 C 99 486.7 250.8 358.5 0 0CL +ATOM 299 B1 C 99 487.4 250.7 358.7 0 0CL +ATOM 300 COM C 100 135.5 395.7 393.4 0 0CL +ATOM 301 A1 C 100 136.8 394.9 391.8 0 0CL +ATOM 302 B1 C 100 136.5 395.6 391.7 0 0CL +ATOM 303 COM C 101 148.9 87.9 499.0 0 0CL +ATOM 304 A1 C 101 149.3 86.8 497.1 0 0CL +ATOM 305 B1 C 101 149.6 87.5 497.2 0 0CL +ATOM 306 COM C 102 177.4 270.4 116.2 0 0CL +ATOM 307 A1 C 102 177.5 270.0 118.4 0 0CL +ATOM 308 B1 C 102 177.4 269.4 117.9 0 0CL +ATOM 309 COM C 103 416.1 220.1 472.5 0 0CL +ATOM 310 A1 C 103 415.3 222.1 472.1 0 0CL +ATOM 311 B1 C 103 415.9 222.1 472.6 0 0CL +ATOM 312 COM C 104 402.4 412.1 222.3 0 0CL +ATOM 313 A1 C 104 403.1 410.2 223.2 0 0CL +ATOM 314 B1 C 104 403.4 410.4 222.6 0 0CL +ATOM 315 COM C 105 2.0 222.8 100.1 0 0CL +ATOM 316 A1 C 105 3.9 223.7 100.7 0 0CL +ATOM 317 B1 C 105 3.5 223.3 101.2 0 0CL +ATOM 318 COM C 106 79.1 228.5 123.0 0 0CL +ATOM 319 A1 C 106 77.2 228.4 121.9 0 0CL +ATOM 320 B1 C 106 77.2 228.7 122.6 0 0CL +ATOM 321 COM C 107 295.4 486.7 233.6 0 0CL +ATOM 322 A1 C 107 294.9 488.7 233.2 0 0CL +ATOM 323 B1 C 107 294.7 488.5 233.8 0 0CL +ATOM 324 COM C 108 138.9 337.1 310.4 0 0CL +ATOM 325 A1 C 108 139.6 335.1 310.7 0 0CL +ATOM 326 B1 C 108 139.8 335.6 311.2 0 0CL +ATOM 327 COM C 109 153.2 174.9 269.1 0 0CL +ATOM 328 A1 C 109 153.4 175.0 271.3 0 0CL +ATOM 329 B1 C 109 152.8 175.3 271.0 0 0CL +ATOM 330 COM C 110 314.9 181.9 155.7 0 0CL +ATOM 331 A1 C 110 315.4 182.9 153.8 0 0CL +ATOM 332 B1 C 110 315.3 183.3 154.4 0 0CL +ATOM 333 COM C 111 260.1 258.7 398.9 0 0CL +ATOM 334 A1 C 111 258.8 257.3 400.0 0 0CL +ATOM 335 B1 C 111 259.4 257.5 400.3 0 0CL +ATOM 336 COM C 112 401.1 232.1 492.7 0 0CL +ATOM 337 A1 C 112 402.3 231.9 494.5 0 0CL +ATOM 338 B1 C 112 402.4 231.4 494.0 0 0CL +ATOM 339 COM C 113 436.4 8.2 141.8 0 0CL +ATOM 340 A1 C 113 436.5 8.0 144.0 0 0CL +ATOM 341 B1 C 113 437.1 7.9 143.7 0 0CL +ATOM 342 COM C 114 468.1 293.8 443.1 0 0CL +ATOM 343 A1 C 114 467.5 292.7 441.3 0 0CL +ATOM 344 B1 C 114 468.2 292.8 441.4 0 0CL +ATOM 345 COM C 115 169.8 76.8 142.8 0 0CL +ATOM 346 A1 C 115 168.6 76.1 141.0 0 0CL +ATOM 347 B1 C 115 168.4 75.9 141.7 0 0CL +ATOM 348 COM C 116 291.0 103.3 380.2 0 0CL +ATOM 349 A1 C 116 293.1 102.8 380.7 0 0CL +ATOM 350 B1 C 116 292.9 103.5 380.7 0 0CL +ATOM 351 COM C 117 329.4 403.6 333.3 0 0CL +ATOM 352 A1 C 117 327.2 404.2 333.2 0 0CL +ATOM 353 B1 C 117 327.4 403.7 333.7 0 0CL +ATOM 354 COM C 118 348.5 447.6 278.7 0 0CL +ATOM 355 A1 C 118 349.0 445.5 279.4 0 0CL +ATOM 356 B1 C 118 348.3 445.7 279.3 0 0CL +ATOM 357 COM C 119 113.8 280.9 453.4 0 0CL +ATOM 358 A1 C 119 114.1 280.1 451.3 0 0CL +ATOM 359 B1 C 119 113.5 280.3 451.5 0 0CL +ATOM 360 COM C 120 458.5 441.6 221.7 0 0CL +ATOM 361 A1 C 120 460.6 441.1 221.9 0 0CL +ATOM 362 B1 C 120 460.4 441.3 221.3 0 0CL +ATOM 363 COM C 121 24.8 329.9 115.4 0 0CL +ATOM 364 A1 C 121 25.6 329.6 117.4 0 0CL +ATOM 365 B1 C 121 25.0 330.0 117.4 0 0CL +ATOM 366 COM C 122 254.2 359.2 252.1 0 0CL +ATOM 367 A1 C 122 255.5 359.2 250.2 0 0CL +ATOM 368 B1 C 122 254.8 358.9 250.2 0 0CL +ATOM 369 COM C 123 386.0 488.2 326.1 0 0CL +ATOM 370 A1 C 123 386.1 489.0 328.2 0 0CL +ATOM 371 B1 C 123 386.7 488.7 327.9 0 0CL +ATOM 372 COM C 124 25.2 70.9 380.8 0 0CL +ATOM 373 A1 C 124 27.0 72.2 380.8 0 0CL +ATOM 374 B1 C 124 26.6 72.2 381.4 0 0CL +ATOM 375 COM C 125 459.2 251.8 168.2 0 0CL +ATOM 376 A1 C 125 458.3 249.9 168.4 0 0CL +ATOM 377 B1 C 125 458.5 250.2 169.0 0 0CL +ATOM 378 COM C 126 323.3 157.8 276.7 0 0CL +ATOM 379 A1 C 126 321.9 156.1 276.3 0 0CL +ATOM 380 B1 C 126 322.0 156.7 275.8 0 0CL +ATOM 381 COM C 127 69.4 255.0 443.6 0 0CL +ATOM 382 A1 C 127 67.7 255.5 442.3 0 0CL +ATOM 383 B1 C 127 68.4 255.8 442.1 0 0CL +ATOM 384 COM C 128 305.4 222.3 129.2 0 0CL +ATOM 385 A1 C 128 305.6 223.8 130.8 0 0CL +ATOM 386 B1 C 128 304.9 223.4 130.8 0 0CL +ATOM 387 COM C 129 134.2 417.7 418.5 0 0CL +ATOM 388 A1 C 129 133.4 416.3 420.0 0 0CL +ATOM 389 B1 C 129 133.5 416.1 419.3 0 0CL +ATOM 390 COM C 130 451.7 463.1 136.4 0 0CL +ATOM 391 A1 C 130 453.2 462.0 137.6 0 0CL +ATOM 392 B1 C 130 452.5 461.8 137.6 0 0CL +ATOM 393 COM C 131 381.0 290.6 60.4 0 0CL +ATOM 394 A1 C 131 381.6 289.1 61.9 0 0CL +ATOM 395 B1 C 131 382.1 289.3 61.5 0 0CL +ATOM 396 COM C 132 118.2 15.8 164.5 0 0CL +ATOM 397 A1 C 132 118.9 17.2 166.1 0 0CL +ATOM 398 B1 C 132 118.7 16.6 166.3 0 0CL +ATOM 399 COM C 133 317.5 19.6 421.0 0 0CL +ATOM 400 A1 C 133 316.8 20.7 422.7 0 0CL +ATOM 401 B1 C 133 316.3 20.3 422.4 0 0CL +ATOM 402 COM C 134 179.2 248.8 329.6 0 0CL +ATOM 403 A1 C 134 178.9 251.0 329.6 0 0CL +ATOM 404 B1 C 134 178.9 250.6 330.2 0 0CL +ATOM 405 COM C 135 154.7 490.3 278.2 0 0CL +ATOM 406 A1 C 135 154.1 488.3 278.7 0 0CL +ATOM 407 B1 C 135 154.6 488.3 278.2 0 0CL +ATOM 408 COM C 136 243.2 303.8 452.3 0 0CL +ATOM 409 A1 C 136 243.7 305.9 452.8 0 0CL +ATOM 410 B1 C 136 243.5 305.5 453.3 0 0CL +ATOM 411 COM C 137 127.6 250.4 336.2 0 0CL +ATOM 412 A1 C 137 126.7 248.4 336.3 0 0CL +ATOM 413 B1 C 137 126.8 248.7 336.9 0 0CL +ATOM 414 COM C 138 350.0 223.8 4.9 0 0CL +ATOM 415 A1 C 138 351.3 224.4 3.2 0 0CL +ATOM 416 B1 C 138 350.6 224.7 3.2 0 0CL +ATOM 417 COM C 139 6.5 286.5 341.5 0 0CL +ATOM 418 A1 C 139 8.1 285.0 341.6 0 0CL +ATOM 419 B1 C 139 7.6 284.9 342.1 0 0CL +ATOM 420 COM C 140 157.6 414.7 296.1 0 0CL +ATOM 421 A1 C 140 158.5 414.8 298.1 0 0CL +ATOM 422 B1 C 140 158.9 414.5 297.6 0 0CL +ATOM 423 COM C 141 289.7 258.1 192.4 0 0CL +ATOM 424 A1 C 141 290.9 259.4 191.0 0 0CL +ATOM 425 B1 C 141 291.3 259.0 191.5 0 0CL +ATOM 426 COM C 142 143.9 451.2 362.8 0 0CL +ATOM 427 A1 C 142 142.4 449.7 362.4 0 0CL +ATOM 428 B1 C 142 142.2 450.3 362.7 0 0CL +ATOM 429 COM C 143 118.8 382.9 423.4 0 0CL +ATOM 430 A1 C 143 120.6 381.6 423.8 0 0CL +ATOM 431 B1 C 143 120.7 382.2 423.5 0 0CL +ATOM 432 COM C 144 379.3 166.0 73.6 0 0CL +ATOM 433 A1 C 144 378.5 165.2 75.5 0 0CL +ATOM 434 B1 C 144 379.1 165.7 75.6 0 0CL +ATOM 435 COM C 145 363.6 373.8 429.6 0 0CL +ATOM 436 A1 C 145 362.0 375.1 430.4 0 0CL +ATOM 437 B1 C 145 362.3 375.3 429.8 0 0CL +ATOM 438 COM C 146 389.1 319.0 405.1 0 0CL +ATOM 439 A1 C 146 387.4 318.0 404.2 0 0CL +ATOM 440 B1 C 146 387.8 317.6 404.7 0 0CL +ATOM 441 COM C 147 459.1 457.6 429.1 0 0CL +ATOM 442 A1 C 147 458.6 458.6 431.0 0 0CL +ATOM 443 B1 C 147 458.3 457.9 430.9 0 0CL +ATOM 444 COM C 148 332.8 299.4 297.6 0 0CL +ATOM 445 A1 C 148 331.4 297.9 298.4 0 0CL +ATOM 446 B1 C 148 332.1 297.8 298.4 0 0CL +ATOM 447 COM C 149 242.5 455.5 305.0 0 0CL +ATOM 448 A1 C 149 243.6 453.7 305.9 0 0CL +ATOM 449 B1 C 149 243.9 454.4 306.0 0 0CL +ATOM 450 COM A 150 46.6 247.7 453.4 0 0CL +ATOM 451 C1 A 150 47.8 247.6 453.6 0 0CL +ATOM 452 B1 A 150 46.8 248.0 452.5 0 0CL +ATOM 453 COM A 151 58.0 342.4 380.7 0 0CL +ATOM 454 C1 A 151 58.8 341.7 381.4 0 0CL +ATOM 455 B1 A 151 57.5 341.5 380.4 0 0CL +ATOM 456 COM A 152 436.2 9.1 145.4 0 0CL +ATOM 457 C1 A 152 435.8 8.7 144.2 0 0CL +ATOM 458 B1 A 152 437.2 8.9 145.0 0 0CL +ATOM 459 COM A 153 128.9 293.7 316.1 0 0CL +ATOM 460 C1 A 153 127.9 294.0 315.4 0 0CL +ATOM 461 B1 A 153 128.3 293.1 316.6 0 0CL +ATOM 462 COM A 154 275.3 33.5 211.7 0 0CL +ATOM 463 C1 A 154 274.9 33.7 210.5 0 0CL +ATOM 464 B1 A 154 276.1 34.1 211.5 0 0CL +ATOM 465 COM A 155 459.4 459.2 432.4 0 0CL +ATOM 466 C1 A 155 459.3 459.1 431.1 0 0CL +ATOM 467 B1 A 155 459.0 458.3 432.4 0 0CL +ATOM 468 COM A 156 361.1 5.5 364.5 0 0CL +ATOM 469 C1 A 156 361.4 6.7 364.0 0 0CL +ATOM 470 B1 A 156 362.1 5.5 364.8 0 0CL +ATOM 471 COM A 157 439.1 238.7 332.9 0 0CL +ATOM 472 C1 A 157 438.3 239.6 332.3 0 0CL +ATOM 473 B1 A 157 438.5 238.9 333.7 0 0CL +ATOM 474 COM A 158 454.7 461.1 137.4 0 0CL +ATOM 475 C1 A 158 454.0 462.2 137.1 0 0CL +ATOM 476 B1 A 158 453.8 460.6 137.5 0 0CL +ATOM 477 COM A 159 317.1 20.8 424.5 0 0CL +ATOM 478 C1 A 159 317.6 20.7 423.2 0 0CL +ATOM 479 B1 A 159 316.3 20.2 424.1 0 0CL +ATOM 480 COM A 160 381.7 288.9 63.6 0 0CL +ATOM 481 C1 A 160 381.0 289.3 62.6 0 0CL +ATOM 482 B1 A 160 382.5 289.2 63.1 0 0CL +ATOM 483 COM A 161 315.3 35.1 127.2 0 0CL +ATOM 484 C1 A 161 314.0 35.2 127.3 0 0CL +ATOM 485 B1 A 161 315.1 34.9 126.2 0 0CL +ATOM 486 COM A 162 17.4 72.4 214.0 0 0CL +ATOM 487 C1 A 162 18.2 71.7 213.3 0 0CL +ATOM 488 B1 A 162 16.8 72.3 213.2 0 0CL +ATOM 489 COM A 163 328.9 482.2 72.5 0 0CL +ATOM 490 C1 A 163 329.0 482.0 73.8 0 0CL +ATOM 491 B1 A 163 327.9 482.1 72.7 0 0CL +ATOM 492 COM A 164 376.9 400.9 224.7 0 0CL +ATOM 493 C1 A 164 378.1 400.3 224.7 0 0CL +ATOM 494 B1 A 164 377.2 401.3 225.6 0 0CL +ATOM 495 COM A 165 149.8 347.7 60.1 0 0CL +ATOM 496 C1 A 165 150.1 348.4 61.2 0 0CL +ATOM 497 B1 A 165 149.6 348.6 59.7 0 0CL +ATOM 498 COM A 166 56.3 300.0 265.9 0 0CL +ATOM 499 C1 A 166 56.6 299.4 264.8 0 0CL +ATOM 500 B1 A 166 55.6 300.5 265.3 0 0CL +ATOM 501 COM A 167 245.2 306.9 452.8 0 0CL +ATOM 502 C1 A 167 244.5 306.0 452.2 0 0CL +ATOM 503 B1 A 167 244.8 306.5 453.7 0 0CL +ATOM 504 COM A 168 120.4 18.0 166.5 0 0CL +ATOM 505 C1 A 168 119.6 17.6 165.6 0 0CL +ATOM 506 B1 A 168 120.1 17.1 167.0 0 0CL +ATOM 507 COM A 169 30.1 68.2 245.7 0 0CL +ATOM 508 C1 A 169 30.9 68.8 244.9 0 0CL +ATOM 509 B1 A 169 29.3 68.6 245.2 0 0CL +ATOM 510 COM A 170 165.8 177.6 385.9 0 0CL +ATOM 511 C1 A 170 166.6 177.5 386.9 0 0CL +ATOM 512 B1 A 170 166.0 176.6 385.7 0 0CL +ATOM 513 COM A 171 140.1 221.5 337.4 0 0CL +ATOM 514 C1 A 171 141.4 221.2 337.2 0 0CL +ATOM 515 B1 A 171 140.1 220.6 337.9 0 0CL +ATOM 516 COM A 172 229.9 317.5 317.9 0 0CL +ATOM 517 C1 A 172 231.1 317.4 318.4 0 0CL +ATOM 518 B1 A 172 229.5 317.2 318.9 0 0CL +ATOM 519 COM A 173 8.7 283.6 340.6 0 0CL +ATOM 520 C1 A 173 8.3 284.9 340.7 0 0CL +ATOM 521 B1 A 173 8.1 283.5 341.4 0 0CL +ATOM 522 COM A 174 31.5 266.6 424.9 0 0CL +ATOM 523 C1 A 174 32.1 266.4 423.7 0 0CL +ATOM 524 B1 A 174 30.9 265.8 424.6 0 0CL +ATOM 525 COM A 175 115.0 280.6 449.9 0 0CL +ATOM 526 C1 A 175 115.0 280.5 451.2 0 0CL +ATOM 527 B1 A 175 113.9 280.8 450.0 0 0CL +ATOM 528 COM A 176 322.1 154.4 276.0 0 0CL +ATOM 529 C1 A 176 322.5 155.5 276.7 0 0CL +ATOM 530 B1 A 176 322.0 155.1 275.2 0 0CL +ATOM 531 COM A 177 54.6 53.4 18.5 0 0CL +ATOM 532 C1 A 177 55.1 53.2 17.4 0 0CL +ATOM 533 B1 A 177 55.3 52.7 18.8 0 0CL +ATOM 534 COM A 178 355.2 233.7 144.3 0 0CL +ATOM 535 C1 A 178 354.6 234.6 145.1 0 0CL +ATOM 536 B1 A 178 356.0 233.8 144.9 0 0CL +ATOM 537 COM A 179 415.2 223.2 470.8 0 0CL +ATOM 538 C1 A 179 415.1 222.0 471.2 0 0CL +ATOM 539 B1 A 179 416.0 223.3 471.4 0 0CL +ATOM 540 COM A 180 270.2 308.9 63.4 0 0CL +ATOM 541 C1 A 180 269.2 309.5 62.8 0 0CL +ATOM 542 B1 A 180 269.5 308.6 64.1 0 0CL +ATOM 543 COM A 181 349.9 444.2 278.8 0 0CL +ATOM 544 C1 A 181 349.8 445.5 278.9 0 0CL +ATOM 545 B1 A 181 348.9 444.2 278.7 0 0CL +ATOM 546 COM A 182 485.5 249.5 358.5 0 0CL +ATOM 547 C1 A 182 485.8 250.7 358.7 0 0CL +ATOM 548 B1 A 182 486.5 249.3 358.7 0 0CL +ATOM 549 COM A 183 330.2 297.7 299.7 0 0CL +ATOM 550 C1 A 183 330.7 298.5 298.7 0 0CL +ATOM 551 B1 A 183 331.2 297.4 299.8 0 0CL +ATOM 552 COM A 184 386.1 490.6 328.9 0 0CL +ATOM 553 C1 A 184 385.6 489.8 328.0 0 0CL +ATOM 554 B1 A 184 387.0 490.2 328.7 0 0CL +ATOM 555 COM A 185 199.1 342.6 362.0 0 0CL +ATOM 556 C1 A 185 198.5 343.8 361.7 0 0CL +ATOM 557 B1 A 185 199.6 343.2 362.7 0 0CL +ATOM 558 COM A 186 216.0 2.8 223.5 0 0CL +ATOM 559 C1 A 186 217.0 3.5 223.9 0 0CL +ATOM 560 B1 A 186 215.7 3.7 222.9 0 0CL +ATOM 561 COM A 187 128.3 45.4 499.0 0 0CL +ATOM 562 C1 A 187 128.7 44.4 498.2 0 0CL +ATOM 563 B1 A 187 128.1 45.9 498.1 0 0CL +ATOM 564 COM A 188 213.9 78.1 359.2 0 0CL +ATOM 565 C1 A 188 212.9 77.4 359.5 0 0CL +ATOM 566 B1 A 188 213.2 78.9 359.2 0 0CL +ATOM 567 COM A 189 300.5 152.0 224.1 0 0CL +ATOM 568 C1 A 189 301.2 151.2 223.4 0 0CL +ATOM 569 B1 A 189 300.4 151.2 224.8 0 0CL +ATOM 570 COM A 190 11.7 403.0 81.3 0 0CL +ATOM 571 C1 A 190 11.9 402.1 80.5 0 0CL +ATOM 572 B1 A 190 12.0 403.6 80.5 0 0CL +ATOM 573 COM A 191 150.2 85.4 496.6 0 0CL +ATOM 574 C1 A 191 149.4 86.0 497.5 0 0CL +ATOM 575 B1 A 191 150.6 86.4 496.5 0 0CL +ATOM 576 COM A 192 313.3 435.0 412.8 0 0CL +ATOM 577 C1 A 192 313.7 434.4 411.7 0 0CL +ATOM 578 B1 A 192 314.2 435.4 412.8 0 0CL +ATOM 579 COM A 193 141.8 448.9 361.0 0 0CL +ATOM 580 C1 A 193 142.8 449.3 361.6 0 0CL +ATOM 581 B1 A 193 141.3 449.7 361.4 0 0CL +ATOM 582 COM A 194 293.9 102.1 382.1 0 0CL +ATOM 583 C1 A 194 292.9 102.1 381.3 0 0CL +ATOM 584 B1 A 194 293.8 103.1 382.0 0 0CL +ATOM 585 COM A 195 277.7 385.9 403.9 0 0CL +ATOM 586 C1 A 195 277.5 386.9 403.1 0 0CL +ATOM 587 B1 A 195 278.6 385.8 403.4 0 0CL +ATOM 588 COM A 196 323.2 65.7 9.9 0 0CL +ATOM 589 C1 A 196 322.7 66.5 10.8 0 0CL +ATOM 590 B1 A 196 322.6 66.2 9.2 0 0CL +ATOM 591 COM A 197 309.5 151.4 211.9 0 0CL +ATOM 592 C1 A 197 310.2 150.4 212.5 0 0CL +ATOM 593 B1 A 197 310.2 151.4 211.2 0 0CL +ATOM 594 COM A 198 432.1 240.2 392.4 0 0CL +ATOM 595 C1 A 198 430.9 240.2 392.8 0 0CL +ATOM 596 B1 A 198 432.4 240.8 393.2 0 0CL +ATOM 597 COM A 199 409.9 497.7 155.6 0 0CL +ATOM 598 C1 A 199 410.6 498.7 155.8 0 0CL +ATOM 599 B1 A 199 410.7 497.1 155.7 0 0CL +ATOM 600 COM A 200 171.9 166.2 381.8 0 0CL +ATOM 601 C1 A 200 172.2 166.7 380.6 0 0CL +ATOM 602 B1 A 200 171.5 167.1 382.0 0 0CL +ATOM 603 COM A 201 306.5 224.0 132.3 0 0CL +ATOM 604 C1 A 201 306.5 223.6 131.1 0 0CL +ATOM 605 B1 A 201 305.5 223.6 132.4 0 0CL +ATOM 606 COM A 202 456.7 249.1 168.1 0 0CL +ATOM 607 C1 A 202 457.7 249.9 167.7 0 0CL +ATOM 608 B1 A 202 457.0 249.5 169.1 0 0CL +ATOM 609 COM A 203 261.9 111.1 368.4 0 0CL +ATOM 610 C1 A 203 261.3 112.3 368.6 0 0CL +ATOM 611 B1 A 203 261.5 110.8 369.3 0 0CL +ATOM 612 COM A 204 121.5 381.0 425.2 0 0CL +ATOM 613 C1 A 204 120.3 381.3 424.7 0 0CL +ATOM 614 B1 A 204 121.8 381.8 424.7 0 0CL +ATOM 615 COM A 205 109.6 101.9 456.2 0 0CL +ATOM 616 C1 A 205 110.4 101.9 455.2 0 0CL +ATOM 617 B1 A 205 108.9 102.1 455.5 0 0CL +ATOM 618 COM A 206 211.4 354.0 17.2 0 0CL +ATOM 619 C1 A 206 212.3 354.8 16.6 0 0CL +ATOM 620 B1 A 206 211.8 354.4 18.0 0 0CL +ATOM 621 COM A 207 257.2 257.4 400.8 0 0CL +ATOM 622 C1 A 207 258.0 257.7 399.8 0 0CL +ATOM 623 B1 A 207 258.1 257.6 401.4 0 0CL +ATOM 624 COM A 208 379.0 421.2 98.9 0 0CL +ATOM 625 C1 A 208 378.4 421.0 97.8 0 0CL +ATOM 626 B1 A 208 379.9 421.2 98.3 0 0CL +ATOM 627 COM A 209 346.7 138.2 475.4 0 0CL +ATOM 628 C1 A 209 345.7 138.4 474.5 0 0CL +ATOM 629 B1 A 209 346.0 137.5 475.8 0 0CL +ATOM 630 COM A 210 354.8 424.7 17.5 0 0CL +ATOM 631 C1 A 210 354.7 424.2 18.7 0 0CL +ATOM 632 B1 A 210 354.9 425.6 18.0 0 0CL +ATOM 633 COM A 211 342.5 47.3 297.9 0 0CL +ATOM 634 C1 A 211 341.4 46.7 297.7 0 0CL +ATOM 635 B1 A 211 341.9 48.2 298.1 0 0CL +ATOM 636 COM A 212 20.6 141.0 30.8 0 0CL +ATOM 637 C1 A 212 21.5 142.0 30.6 0 0CL +ATOM 638 B1 A 212 20.3 141.6 31.6 0 0CL +ATOM 639 COM A 213 374.1 131.4 220.9 0 0CL +ATOM 640 C1 A 213 373.4 132.0 221.8 0 0CL +ATOM 641 B1 A 213 373.3 130.8 220.8 0 0CL +ATOM 642 COM A 214 487.7 132.9 479.9 0 0CL +ATOM 643 C1 A 214 487.7 131.7 479.4 0 0CL +ATOM 644 B1 A 214 487.9 132.5 480.8 0 0CL +ATOM 645 COM A 215 475.9 279.6 259.4 0 0CL +ATOM 646 C1 A 215 476.5 279.7 260.6 0 0CL +ATOM 647 B1 A 215 475.1 279.8 259.9 0 0CL +ATOM 648 COM A 216 154.1 487.2 280.1 0 0CL +ATOM 649 C1 A 216 153.9 488.4 279.6 0 0CL +ATOM 650 B1 A 216 154.9 487.2 279.4 0 0CL +ATOM 651 COM A 217 90.7 221.6 485.1 0 0CL +ATOM 652 C1 A 217 90.5 221.4 483.8 0 0CL +ATOM 653 B1 A 217 89.9 222.1 485.0 0 0CL +ATOM 654 COM A 218 195.9 259.5 142.3 0 0CL +ATOM 655 C1 A 218 195.2 259.5 141.1 0 0CL +ATOM 656 B1 A 218 195.8 260.5 142.2 0 0CL +ATOM 657 COM A 219 201.3 318.0 271.2 0 0CL +ATOM 658 C1 A 219 201.2 316.7 271.3 0 0CL +ATOM 659 B1 A 219 202.2 317.9 270.9 0 0CL +ATOM 660 COM A 220 91.4 278.5 36.7 0 0CL +ATOM 661 C1 A 220 92.5 277.7 36.6 0 0CL +ATOM 662 B1 A 220 91.4 278.2 37.7 0 0CL +ATOM 663 COM A 221 210.5 415.2 179.9 0 0CL +ATOM 664 C1 A 221 210.5 416.4 179.3 0 0CL +ATOM 665 B1 A 221 209.7 415.6 180.5 0 0CL +ATOM 666 COM A 222 274.7 345.0 396.2 0 0CL +ATOM 667 C1 A 222 273.7 345.2 397.0 0 0CL +ATOM 668 B1 A 222 274.7 344.1 396.7 0 0CL +ATOM 669 COM A 223 359.1 465.9 180.7 0 0CL +ATOM 670 C1 A 223 358.6 465.6 181.9 0 0CL +ATOM 671 B1 A 223 359.0 464.9 180.5 0 0CL +ATOM 672 COM A 224 186.3 93.5 99.6 0 0CL +ATOM 673 C1 A 224 187.4 94.1 99.4 0 0CL +ATOM 674 B1 A 224 186.3 93.3 98.6 0 0CL +ATOM 675 COM A 225 256.1 360.4 249.1 0 0CL +ATOM 676 C1 A 225 255.9 360.0 250.3 0 0CL +ATOM 677 B1 A 225 255.2 359.9 248.9 0 0CL +ATOM 678 COM A 226 125.2 247.6 335.8 0 0CL +ATOM 679 C1 A 226 126.2 248.4 335.5 0 0CL +ATOM 680 B1 A 226 125.3 248.0 336.7 0 0CL +ATOM 681 COM A 227 370.1 462.5 116.7 0 0CL +ATOM 682 C1 A 227 370.5 461.3 116.9 0 0CL +ATOM 683 B1 A 227 371.1 462.7 116.4 0 0CL +ATOM 684 COM A 228 462.0 441.8 222.8 0 0CL +ATOM 685 C1 A 228 460.7 441.5 222.8 0 0CL +ATOM 686 B1 A 228 461.8 442.1 221.8 0 0CL +ATOM 687 COM A 229 66.6 254.7 441.3 0 0CL +ATOM 688 C1 A 229 67.2 254.8 442.4 0 0CL +ATOM 689 B1 A 229 67.4 255.1 440.8 0 0CL +ATOM 690 COM A 230 377.0 165.4 76.5 0 0CL +ATOM 691 C1 A 230 377.6 165.2 75.3 0 0CL +ATOM 692 B1 A 230 377.8 166.0 76.7 0 0CL +ATOM 693 COM A 231 265.5 132.9 184.4 0 0CL +ATOM 694 C1 A 231 266.1 131.7 184.4 0 0CL +ATOM 695 B1 A 231 266.2 133.2 185.0 0 0CL +ATOM 696 COM A 232 259.1 39.6 487.5 0 0CL +ATOM 697 C1 A 232 258.8 39.6 486.2 0 0CL +ATOM 698 B1 A 232 258.6 38.7 487.5 0 0CL +ATOM 699 COM A 233 310.4 171.5 53.0 0 0CL +ATOM 700 C1 A 233 309.2 171.0 52.7 0 0CL +ATOM 701 B1 A 233 310.7 171.3 52.1 0 0CL +ATOM 702 COM A 234 385.3 139.7 327.8 0 0CL +ATOM 703 C1 A 234 384.1 139.4 327.4 0 0CL +ATOM 704 B1 A 234 385.1 140.6 327.4 0 0CL +ATOM 705 COM A 235 485.0 365.8 144.9 0 0CL +ATOM 706 C1 A 235 486.3 366.3 144.8 0 0CL +ATOM 707 B1 A 235 485.1 365.8 143.9 0 0CL +ATOM 708 COM A 236 230.1 187.8 23.6 0 0CL +ATOM 709 C1 A 236 230.6 186.9 22.8 0 0CL +ATOM 710 B1 A 236 230.7 188.5 23.2 0 0CL +ATOM 711 COM A 237 360.3 375.0 430.6 0 0CL +ATOM 712 C1 A 237 361.4 374.5 430.7 0 0CL +ATOM 713 B1 A 237 360.6 375.5 429.8 0 0CL +ATOM 714 COM A 238 326.3 405.6 333.5 0 0CL +ATOM 715 C1 A 238 327.4 405.1 333.0 0 0CL +ATOM 716 B1 A 238 326.4 404.9 334.2 0 0CL +ATOM 717 COM A 239 398.7 171.5 138.0 0 0CL +ATOM 718 C1 A 239 399.7 171.5 138.8 0 0CL +ATOM 719 B1 A 239 398.2 171.0 138.7 0 0CL +ATOM 720 COM A 240 191.0 364.7 264.5 0 0CL +ATOM 721 C1 A 240 189.9 365.4 264.7 0 0CL +ATOM 722 B1 A 240 190.4 364.1 263.8 0 0CL +ATOM 723 COM A 241 5.5 437.2 303.7 0 0CL +ATOM 724 C1 A 241 5.0 436.2 303.0 0 0CL +ATOM 725 B1 A 241 6.4 436.9 303.3 0 0CL +ATOM 726 COM A 242 24.6 244.0 333.9 0 0CL +ATOM 727 C1 A 242 24.7 244.2 332.6 0 0CL +ATOM 728 B1 A 242 25.6 244.1 333.9 0 0CL +ATOM 729 COM A 243 159.1 416.0 299.3 0 0CL +ATOM 730 C1 A 243 158.2 415.6 298.4 0 0CL +ATOM 731 B1 A 243 159.7 415.5 298.6 0 0CL +ATOM 732 COM A 244 219.4 53.9 435.6 0 0CL +ATOM 733 C1 A 244 220.6 54.2 435.2 0 0CL +ATOM 734 B1 A 244 219.2 54.9 435.5 0 0CL +ATOM 735 COM A 245 130.5 244.5 350.3 0 0CL +ATOM 736 C1 A 245 131.7 244.7 349.9 0 0CL +ATOM 737 B1 A 245 130.4 245.5 350.4 0 0CL +ATOM 738 COM A 246 243.6 82.5 413.2 0 0CL +ATOM 739 C1 A 246 243.1 82.3 412.0 0 0CL +ATOM 740 B1 A 246 244.3 83.0 412.7 0 0CL +ATOM 741 COM A 247 311.1 485.5 200.8 0 0CL +ATOM 742 C1 A 247 310.5 484.8 199.9 0 0CL +ATOM 743 B1 A 247 310.4 486.2 200.6 0 0CL +ATOM 744 COM A 248 25.9 328.3 118.5 0 0CL +ATOM 745 C1 A 248 25.9 328.8 117.3 0 0CL +ATOM 746 B1 A 248 25.1 328.9 118.6 0 0CL +ATOM 747 COM A 249 167.7 76.9 139.7 0 0CL +ATOM 748 C1 A 249 168.8 76.9 140.5 0 0CL +ATOM 749 B1 A 249 167.3 76.5 140.6 0 0CL +ATOM 750 COM A 250 462.2 473.3 195.6 0 0CL +ATOM 751 C1 A 250 463.3 473.1 194.9 0 0CL +ATOM 752 B1 A 250 462.7 474.1 196.0 0 0CL +ATOM 753 COM A 251 138.5 394.6 391.6 0 0CL +ATOM 754 C1 A 251 137.4 394.5 392.3 0 0CL +ATOM 755 B1 A 251 138.1 395.5 391.3 0 0CL +ATOM 756 COM A 252 317.4 349.9 207.2 0 0CL +ATOM 757 C1 A 252 317.3 350.4 208.4 0 0CL +ATOM 758 B1 A 252 317.6 350.8 206.9 0 0CL +ATOM 759 COM A 253 412.8 380.5 375.3 0 0CL +ATOM 760 C1 A 253 412.2 381.6 375.6 0 0CL +ATOM 761 B1 A 253 411.9 380.3 374.7 0 0CL +ATOM 762 COM A 254 186.7 51.0 70.8 0 0CL +ATOM 763 C1 A 254 187.9 50.4 71.0 0 0CL +ATOM 764 B1 A 254 186.3 50.1 71.2 0 0CL +ATOM 765 COM A 255 378.9 374.1 109.1 0 0CL +ATOM 766 C1 A 255 379.1 374.4 107.9 0 0CL +ATOM 767 B1 A 255 379.6 373.4 109.0 0 0CL +ATOM 768 COM A 256 332.8 401.4 99.9 0 0CL +ATOM 769 C1 A 256 333.7 400.6 100.4 0 0CL +ATOM 770 B1 A 256 333.6 401.9 99.5 0 0CL +ATOM 771 COM A 257 206.2 280.9 10.1 0 0CL +ATOM 772 C1 A 257 205.1 281.5 10.2 0 0CL +ATOM 773 B1 A 257 205.7 280.0 10.0 0 0CL +ATOM 774 COM A 258 356.6 364.1 26.6 0 0CL +ATOM 775 C1 A 258 356.4 364.0 27.8 0 0CL +ATOM 776 B1 A 258 357.0 365.0 26.8 0 0CL +ATOM 777 COM A 259 47.0 343.2 5.5 0 0CL +ATOM 778 C1 A 259 48.3 343.1 5.3 0 0CL +ATOM 779 B1 A 259 47.0 342.2 5.5 0 0CL +ATOM 780 COM A 260 383.5 310.8 170.5 0 0CL +ATOM 781 C1 A 260 384.4 311.7 171.0 0 0CL +ATOM 782 B1 A 260 383.6 311.3 169.6 0 0CL +ATOM 783 COM A 261 229.9 92.3 147.1 0 0CL +ATOM 784 C1 A 261 229.8 91.7 148.3 0 0CL +ATOM 785 B1 A 261 230.6 91.6 147.0 0 0CL +ATOM 786 COM A 262 17.9 317.3 265.3 0 0CL +ATOM 787 C1 A 262 18.5 316.2 265.4 0 0CL +ATOM 788 B1 A 262 18.5 317.4 264.4 0 0CL +ATOM 789 COM A 263 81.0 140.4 209.5 0 0CL +ATOM 790 C1 A 263 80.4 140.0 208.4 0 0CL +ATOM 791 B1 A 263 81.8 139.9 209.2 0 0CL +ATOM 792 COM A 264 432.3 383.8 485.4 0 0CL +ATOM 793 C1 A 264 432.4 384.3 486.6 0 0CL +ATOM 794 B1 A 264 432.7 382.9 485.8 0 0CL +ATOM 795 COM A 265 448.4 266.6 317.5 0 0CL +ATOM 796 C1 A 265 447.2 267.0 317.3 0 0CL +ATOM 797 B1 A 265 448.5 266.4 316.5 0 0CL +ATOM 798 COM A 266 328.5 284.0 184.1 0 0CL +ATOM 799 C1 A 266 327.2 284.2 183.8 0 0CL +ATOM 800 B1 A 266 328.4 283.2 183.5 0 0CL +ATOM 801 COM A 267 31.8 209.5 221.3 0 0CL +ATOM 802 C1 A 267 32.6 210.5 221.9 0 0CL +ATOM 803 B1 A 267 32.7 209.2 221.0 0 0CL +ATOM 804 COM A 268 385.2 262.4 343.3 0 0CL +ATOM 805 C1 A 268 386.4 262.2 342.8 0 0CL +ATOM 806 B1 A 268 384.9 262.5 342.4 0 0CL +ATOM 807 COM A 269 278.2 172.8 26.8 0 0CL +ATOM 808 C1 A 269 279.0 172.7 27.9 0 0CL +ATOM 809 B1 A 269 277.5 173.0 27.5 0 0CL +ATOM 810 COM A 270 99.7 218.0 201.2 0 0CL +ATOM 811 C1 A 270 98.6 217.8 200.6 0 0CL +ATOM 812 B1 A 270 99.4 218.9 201.4 0 0CL +ATOM 813 COM A 271 79.7 103.7 354.7 0 0CL +ATOM 814 C1 A 271 80.6 104.6 355.0 0 0CL +ATOM 815 B1 A 271 80.1 103.1 355.4 0 0CL +ATOM 816 COM A 272 316.8 183.0 152.8 0 0CL +ATOM 817 C1 A 272 316.0 182.3 153.5 0 0CL +ATOM 818 B1 A 272 316.6 183.8 153.5 0 0CL +ATOM 819 COM A 273 133.9 415.6 421.5 0 0CL +ATOM 820 C1 A 273 133.8 416.7 420.7 0 0CL +ATOM 821 B1 A 273 134.0 415.1 420.6 0 0CL +ATOM 822 COM A 274 5.6 223.6 100.3 0 0CL +ATOM 823 C1 A 274 4.3 223.6 99.9 0 0CL +ATOM 824 B1 A 274 5.2 223.1 101.1 0 0CL +ATOM 825 COM A 275 146.5 77.4 301.8 0 0CL +ATOM 826 C1 A 275 146.4 77.2 300.5 0 0CL +ATOM 827 B1 A 275 147.5 77.4 301.6 0 0CL +ATOM 828 COM A 276 188.5 30.1 335.7 0 0CL +ATOM 829 C1 A 276 189.7 29.8 336.2 0 0CL +ATOM 830 B1 A 276 188.9 29.9 334.8 0 0CL +ATOM 831 COM A 277 385.6 318.1 404.4 0 0CL +ATOM 832 C1 A 277 386.8 318.7 404.3 0 0CL +ATOM 833 B1 A 277 386.2 317.4 404.9 0 0CL +ATOM 834 COM A 278 377.9 224.2 259.3 0 0CL +ATOM 835 C1 A 278 379.2 224.4 259.0 0 0CL +ATOM 836 B1 A 278 378.2 223.2 259.3 0 0CL +ATOM 837 COM A 279 170.1 261.4 252.0 0 0CL +ATOM 838 C1 A 279 170.7 261.3 250.8 0 0CL +ATOM 839 B1 A 279 169.8 260.4 251.8 0 0CL +ATOM 840 COM A 280 259.7 324.5 295.6 0 0CL +ATOM 841 C1 A 280 260.9 324.7 295.3 0 0CL +ATOM 842 B1 A 280 260.0 323.7 296.1 0 0CL +ATOM 843 COM A 281 240.7 185.6 157.3 0 0CL +ATOM 844 C1 A 281 241.9 186.1 157.1 0 0CL +ATOM 845 B1 A 281 240.4 186.3 156.6 0 0CL +ATOM 846 COM A 282 81.2 366.9 47.0 0 0CL +ATOM 847 C1 A 282 80.3 366.9 48.0 0 0CL +ATOM 848 B1 A 282 80.3 367.0 46.4 0 0CL +ATOM 849 COM A 283 403.5 232.8 495.4 0 0CL +ATOM 850 C1 A 283 402.4 232.8 494.7 0 0CL +ATOM 851 B1 A 283 403.8 232.1 494.7 0 0CL +ATOM 852 COM A 284 179.8 252.4 329.2 0 0CL +ATOM 853 C1 A 284 179.5 251.2 328.9 0 0CL +ATOM 854 B1 A 284 179.7 252.1 330.2 0 0CL +ATOM 855 COM A 285 175.1 343.0 23.9 0 0CL +ATOM 856 C1 A 285 175.0 341.7 24.2 0 0CL +ATOM 857 B1 A 285 174.1 342.9 23.5 0 0CL +ATOM 858 COM A 286 234.5 359.4 390.6 0 0CL +ATOM 859 C1 A 286 235.5 359.2 391.5 0 0CL +ATOM 860 B1 A 286 234.9 358.6 390.1 0 0CL +ATOM 861 COM A 287 138.9 333.5 311.2 0 0CL +ATOM 862 C1 A 287 138.8 334.6 310.5 0 0CL +ATOM 863 B1 A 287 139.4 334.1 311.9 0 0CL +ATOM 864 COM A 288 182.8 15.8 148.6 0 0CL +ATOM 865 C1 A 288 184.0 16.1 149.0 0 0CL +ATOM 866 B1 A 288 182.6 15.7 149.6 0 0CL +ATOM 867 COM A 289 153.4 173.8 272.6 0 0CL +ATOM 868 C1 A 289 153.8 174.1 271.4 0 0CL +ATOM 869 B1 A 289 152.6 174.3 272.4 0 0CL +ATOM 870 COM A 290 178.7 270.0 119.6 0 0CL +ATOM 871 C1 A 290 178.2 270.6 118.6 0 0CL +ATOM 872 B1 A 290 178.5 269.1 119.1 0 0CL +ATOM 873 COM A 291 295.7 490.3 233.0 0 0CL +ATOM 874 C1 A 291 295.7 489.0 232.7 0 0CL +ATOM 875 B1 A 291 295.3 490.0 233.9 0 0CL +ATOM 876 COM A 292 275.7 484.5 351.6 0 0CL +ATOM 877 C1 A 292 275.4 485.8 351.5 0 0CL +ATOM 878 B1 A 292 276.5 484.8 352.2 0 0CL +ATOM 879 COM A 293 28.8 72.0 380.9 0 0CL +ATOM 880 C1 A 293 27.6 71.6 380.4 0 0CL +ATOM 881 B1 A 293 28.2 72.2 381.7 0 0CL +ATOM 882 COM A 294 165.4 288.9 453.0 0 0CL +ATOM 883 C1 A 294 164.7 288.3 452.1 0 0CL +ATOM 884 B1 A 294 164.6 289.4 453.2 0 0CL +ATOM 885 COM A 295 494.7 280.8 150.2 0 0CL +ATOM 886 C1 A 295 493.5 280.5 150.0 0 0CL +ATOM 887 B1 A 295 494.8 279.9 150.6 0 0CL +ATOM 888 COM A 296 214.8 208.9 37.9 0 0CL +ATOM 889 C1 A 296 215.8 208.7 38.8 0 0CL +ATOM 890 B1 A 296 215.2 208.1 37.4 0 0CL +ATOM 891 COM A 297 480.5 363.9 130.7 0 0CL +ATOM 892 C1 A 297 479.3 364.3 130.7 0 0CL +ATOM 893 B1 A 297 480.7 364.8 131.2 0 0CL +ATOM 894 COM A 298 455.4 453.6 471.0 0 0CL +ATOM 895 C1 A 298 455.0 454.8 470.6 0 0CL +ATOM 896 B1 A 298 456.2 454.1 471.4 0 0CL +ATOM 897 COM A 299 404.4 171.5 72.8 0 0CL +ATOM 898 C1 A 299 403.9 172.6 72.2 0 0CL +ATOM 899 B1 A 299 403.8 171.8 73.6 0 0CL +ATOM 900 COM B 300 482.7 1.8 47.5 0 0CL +ATOM 901 C1 B 300 481.8 2.7 46.8 0 0CL +ATOM 902 A1 B 300 482.2 1.6 47.2 0 0CL +ATOM 903 COM B 301 137.9 396.3 390.4 0 0CL +ATOM 904 C1 B 301 136.8 395.8 391.0 0 0CL +ATOM 905 A1 B 301 137.9 395.8 390.7 0 0CL +ATOM 906 COM B 302 294.5 490.3 234.8 0 0CL +ATOM 907 C1 B 302 294.3 489.0 234.1 0 0CL +ATOM 908 A1 B 302 294.8 490.2 234.3 0 0CL +ATOM 909 COM B 303 334.1 402.9 99.1 0 0CL +ATOM 910 C1 B 303 334.9 402.1 100.0 0 0CL +ATOM 911 A1 B 303 333.9 402.4 99.4 0 0CL +ATOM 912 COM B 304 484.5 365.9 142.8 0 0CL +ATOM 913 C1 B 304 485.7 366.7 143.0 0 0CL +ATOM 914 A1 B 304 484.8 366.0 143.4 0 0CL +ATOM 915 COM B 305 235.1 358.1 389.0 0 0CL +ATOM 916 C1 B 305 236.2 358.3 389.9 0 0CL +ATOM 917 A1 B 305 235.1 358.4 389.5 0 0CL +ATOM 918 COM B 306 405.2 409.5 222.7 0 0CL +ATOM 919 C1 B 306 403.9 409.9 222.4 0 0CL +ATOM 920 A1 B 306 404.8 409.6 223.2 0 0CL +ATOM 921 COM B 307 26.7 243.8 334.4 0 0CL +ATOM 922 C1 B 307 26.5 243.6 333.0 0 0CL +ATOM 923 A1 B 307 26.2 243.8 334.1 0 0CL +ATOM 924 COM B 308 185.7 93.2 97.5 0 0CL +ATOM 925 C1 B 308 186.8 94.2 97.5 0 0CL +ATOM 926 A1 B 308 186.0 93.4 98.0 0 0CL +ATOM 927 COM B 309 151.6 175.1 272.7 0 0CL +ATOM 928 C1 B 309 152.5 175.5 271.6 0 0CL +ATOM 929 A1 B 309 152.1 174.8 272.5 0 0CL +ATOM 930 COM B 310 403.7 172.0 74.8 0 0CL +ATOM 931 C1 B 310 403.6 173.2 74.0 0 0CL +ATOM 932 A1 B 310 403.8 172.0 74.2 0 0CL +ATOM 933 COM B 311 286.9 435.2 421.1 0 0CL +ATOM 934 C1 B 311 287.1 434.3 420.0 0 0CL +ATOM 935 A1 B 311 286.7 434.6 421.0 0 0CL +ATOM 936 COM B 312 215.5 207.5 36.3 0 0CL +ATOM 937 C1 B 312 216.6 207.8 37.2 0 0CL +ATOM 938 A1 B 312 215.5 207.9 36.8 0 0CL +ATOM 939 COM B 313 376.9 401.7 226.8 0 0CL +ATOM 940 C1 B 313 377.9 400.7 226.6 0 0CL +ATOM 941 A1 B 313 377.0 401.4 226.2 0 0CL +ATOM 942 COM B 314 130.0 246.5 350.9 0 0CL +ATOM 943 C1 B 314 131.4 246.4 350.8 0 0CL +ATOM 944 A1 B 314 130.2 246.0 350.7 0 0CL +ATOM 945 COM B 315 325.8 301.7 498.9 0 0CL +ATOM 946 C1 B 315 325.4 301.3 497.6 0 0CL +ATOM 947 A1 B 315 325.9 302.0 498.5 0 0CL +ATOM 948 COM B 316 203.4 318.2 270.8 0 0CL +ATOM 949 C1 B 316 203.2 316.9 271.3 0 0CL +ATOM 950 A1 B 316 202.9 318.0 270.9 0 0CL +ATOM 951 COM B 317 275.4 343.1 397.2 0 0CL +ATOM 952 C1 B 317 274.5 343.8 398.0 0 0CL +ATOM 953 A1 B 317 275.1 343.6 397.0 0 0CL +ATOM 954 COM B 318 148.7 77.2 301.9 0 0CL +ATOM 955 C1 B 318 148.3 76.7 300.7 0 0CL +ATOM 956 A1 B 318 148.1 77.2 301.8 0 0CL +ATOM 957 COM B 319 317.6 351.7 206.1 0 0CL +ATOM 958 C1 B 319 317.1 352.0 207.4 0 0CL +ATOM 959 A1 B 319 317.5 351.3 206.5 0 0CL +ATOM 960 COM B 320 33.4 208.7 220.1 0 0CL +ATOM 961 C1 B 320 33.8 210.0 220.5 0 0CL +ATOM 962 A1 B 320 33.0 209.0 220.4 0 0CL +ATOM 963 COM B 321 372.1 463.4 116.5 0 0CL +ATOM 964 C1 B 321 372.2 462.1 117.0 0 0CL +ATOM 965 A1 B 321 371.6 463.0 116.6 0 0CL +ATOM 966 COM B 322 169.0 259.5 252.0 0 0CL +ATOM 967 C1 B 322 169.5 259.8 250.6 0 0CL +ATOM 968 A1 B 322 169.4 260.0 251.8 0 0CL +ATOM 969 COM B 323 293.1 258.9 190.5 0 0CL +ATOM 970 C1 B 323 292.0 259.1 191.4 0 0CL +ATOM 971 A1 B 323 292.5 259.1 190.3 0 0CL +ATOM 972 COM B 324 209.1 415.8 181.5 0 0CL +ATOM 973 C1 B 324 209.6 417.0 180.9 0 0CL +ATOM 974 A1 B 324 209.5 415.8 181.1 0 0CL +ATOM 975 COM B 325 55.0 301.5 265.1 0 0CL +ATOM 976 C1 B 325 55.7 300.9 264.0 0 0CL +ATOM 977 A1 B 325 55.4 301.1 265.2 0 0CL +ATOM 978 COM B 326 310.0 487.3 200.5 0 0CL +ATOM 979 C1 B 326 309.8 486.5 199.4 0 0CL +ATOM 980 A1 B 326 310.3 486.8 200.5 0 0CL +ATOM 981 COM B 327 266.6 133.9 186.0 0 0CL +ATOM 982 C1 B 327 266.8 132.5 186.1 0 0CL +ATOM 983 A1 B 327 266.4 133.5 185.6 0 0CL +ATOM 984 COM B 328 200.6 343.4 363.3 0 0CL +ATOM 985 C1 B 328 200.1 344.5 362.6 0 0CL +ATOM 986 A1 B 328 200.2 343.3 362.9 0 0CL +ATOM 987 COM B 329 37.1 69.9 253.8 0 0CL +ATOM 988 C1 B 329 37.5 68.6 254.2 0 0CL +ATOM 989 A1 B 329 36.7 69.5 253.8 0 0CL +ATOM 990 COM B 330 383.1 311.7 168.6 0 0CL +ATOM 991 C1 B 330 383.8 312.7 169.4 0 0CL +ATOM 992 A1 B 330 383.3 311.6 169.2 0 0CL +ATOM 993 COM B 331 24.8 449.9 88.2 0 0CL +ATOM 994 C1 B 331 23.9 449.9 89.3 0 0CL +ATOM 995 A1 B 331 24.9 450.2 88.7 0 0CL +ATOM 996 COM B 332 411.1 379.6 374.3 0 0CL +ATOM 997 C1 B 332 410.6 380.7 375.0 0 0CL +ATOM 998 A1 B 332 411.4 379.9 374.6 0 0CL +ATOM 999 COM B 333 321.9 66.2 8.2 0 0CL +ATOM 1000 C1 B 333 321.3 66.7 9.4 0 0CL +ATOM 1001 A1 B 333 322.2 66.1 8.8 0 0CL +ATOM 1002 COM B 334 347.8 443.7 278.9 0 0CL +ATOM 1003 C1 B 334 348.0 445.0 279.4 0 0CL +ATOM 1004 A1 B 334 348.3 444.0 278.9 0 0CL +ATOM 1005 COM B 335 311.5 170.8 51.2 0 0CL +ATOM 1006 C1 B 335 310.2 170.1 51.3 0 0CL +ATOM 1007 A1 B 335 311.1 170.9 51.7 0 0CL +ATOM 1008 COM B 336 196.2 261.7 142.4 0 0CL +ATOM 1009 C1 B 336 195.8 261.3 141.0 0 0CL +ATOM 1010 A1 B 336 196.1 261.1 142.2 0 0CL +ATOM 1011 COM B 337 90.8 277.9 38.8 0 0CL +ATOM 1012 C1 B 337 91.7 276.9 38.2 0 0CL +ATOM 1013 A1 B 337 91.1 277.9 38.2 0 0CL +ATOM 1014 COM B 338 148.9 349.3 58.9 0 0CL +ATOM 1015 C1 B 338 149.0 349.7 60.3 0 0CL +ATOM 1016 A1 B 338 149.2 349.0 59.4 0 0CL +ATOM 1017 COM B 339 182.0 15.1 150.5 0 0CL +ATOM 1018 C1 B 339 183.4 15.1 150.6 0 0CL +ATOM 1019 A1 B 339 182.4 15.3 150.1 0 0CL +ATOM 1020 COM B 340 315.4 34.2 125.2 0 0CL +ATOM 1021 C1 B 340 314.0 34.1 125.8 0 0CL +ATOM 1022 A1 B 340 315.2 34.4 125.7 0 0CL +ATOM 1023 COM B 341 107.8 102.6 455.1 0 0CL +ATOM 1024 C1 B 341 109.0 102.8 454.3 0 0CL +ATOM 1025 A1 B 341 108.4 102.5 455.3 0 0CL +ATOM 1026 COM B 342 166.3 175.7 385.0 0 0CL +ATOM 1027 C1 B 342 167.3 176.0 385.9 0 0CL +ATOM 1028 A1 B 342 166.3 176.2 385.3 0 0CL +ATOM 1029 COM B 343 388.1 489.7 329.1 0 0CL +ATOM 1030 C1 B 343 387.2 488.8 328.4 0 0CL +ATOM 1031 A1 B 343 387.5 489.8 329.0 0 0CL +ATOM 1032 COM B 344 468.9 291.2 440.3 0 0CL +ATOM 1033 C1 B 344 468.5 292.5 440.9 0 0CL +ATOM 1034 A1 B 344 468.3 291.3 440.5 0 0CL +ATOM 1035 COM B 345 28.2 69.1 245.2 0 0CL +ATOM 1036 C1 B 345 29.3 69.9 244.7 0 0CL +ATOM 1037 A1 B 345 28.8 69.0 245.3 0 0CL +ATOM 1038 COM B 346 386.4 316.2 405.3 0 0CL +ATOM 1039 C1 B 346 387.5 316.9 404.7 0 0CL +ATOM 1040 A1 B 346 386.3 316.7 405.0 0 0CL +ATOM 1041 COM B 347 56.9 340.8 379.7 0 0CL +ATOM 1042 C1 B 347 58.1 340.3 380.2 0 0CL +ATOM 1043 A1 B 347 57.3 341.1 380.0 0 0CL +ATOM 1044 COM B 348 261.6 110.2 370.3 0 0CL +ATOM 1045 C1 B 348 261.3 111.6 370.4 0 0CL +ATOM 1046 A1 B 348 261.6 110.5 369.8 0 0CL +ATOM 1047 COM B 349 377.9 222.0 259.1 0 0CL +ATOM 1048 C1 B 349 379.0 222.5 258.4 0 0CL +ATOM 1049 A1 B 349 378.0 222.6 259.1 0 0CL +ATOM 1050 COM B 350 357.2 233.9 145.1 0 0CL +ATOM 1051 C1 B 350 356.4 235.1 145.5 0 0CL +ATOM 1052 A1 B 350 356.6 234.0 145.0 0 0CL +ATOM 1053 COM B 351 166.4 75.8 141.1 0 0CL +ATOM 1054 C1 B 351 167.8 75.6 141.5 0 0CL +ATOM 1055 A1 B 351 166.9 76.0 140.8 0 0CL +ATOM 1056 COM B 352 231.5 189.5 23.2 0 0CL +ATOM 1057 C1 B 352 232.0 188.2 22.7 0 0CL +ATOM 1058 A1 B 352 231.2 188.9 23.2 0 0CL +ATOM 1059 COM B 353 397.3 170.2 139.1 0 0CL +ATOM 1060 C1 B 353 398.6 170.1 139.7 0 0CL +ATOM 1061 A1 B 353 397.8 170.5 138.9 0 0CL +ATOM 1062 COM B 354 328.7 282.1 183.1 0 0CL +ATOM 1063 C1 B 354 327.3 282.4 183.3 0 0CL +ATOM 1064 A1 B 354 328.5 282.6 183.4 0 0CL +ATOM 1065 COM B 355 448.8 265.8 315.4 0 0CL +ATOM 1066 C1 B 355 447.4 266.0 315.6 0 0CL +ATOM 1067 A1 B 355 448.6 266.0 316.0 0 0CL +ATOM 1068 COM B 356 254.5 359.2 248.1 0 0CL +ATOM 1069 C1 B 356 254.8 358.7 249.5 0 0CL +ATOM 1070 A1 B 356 254.9 359.4 248.5 0 0CL +ATOM 1071 COM B 357 495.3 279.1 151.4 0 0CL +ATOM 1072 C1 B 357 493.9 279.1 151.4 0 0CL +ATOM 1073 A1 B 357 495.0 279.5 151.1 0 0CL +ATOM 1074 COM B 358 12.5 404.6 80.0 0 0CL +ATOM 1075 C1 B 358 13.0 403.4 79.5 0 0CL +ATOM 1076 A1 B 358 12.4 404.1 80.3 0 0CL +ATOM 1077 COM B 359 438.3 239.0 334.9 0 0CL +ATOM 1078 C1 B 359 437.9 240.1 334.1 0 0CL +ATOM 1079 A1 B 359 438.5 239.0 334.4 0 0CL +ATOM 1080 COM B 360 269.2 308.4 65.3 0 0CL +ATOM 1081 C1 B 360 268.4 309.3 64.5 0 0CL +ATOM 1082 A1 B 360 269.4 308.6 64.7 0 0CL +ATOM 1083 COM B 361 279.4 385.0 402.8 0 0CL +ATOM 1084 C1 B 361 278.7 386.0 402.0 0 0CL +ATOM 1085 A1 B 361 278.9 385.3 403.0 0 0CL +ATOM 1086 COM B 362 363.1 177.8 153.3 0 0CL +ATOM 1087 C1 B 362 362.0 178.7 153.2 0 0CL +ATOM 1088 A1 B 362 362.5 177.6 153.4 0 0CL +ATOM 1089 COM B 363 205.5 278.8 10.3 0 0CL +ATOM 1090 C1 B 363 204.5 279.8 10.7 0 0CL +ATOM 1091 A1 B 363 205.6 279.4 10.3 0 0CL +ATOM 1092 COM B 364 487.7 132.4 482.1 0 0CL +ATOM 1093 C1 B 364 487.3 131.3 481.3 0 0CL +ATOM 1094 A1 B 364 487.6 132.4 481.5 0 0CL +ATOM 1095 COM B 365 446.7 301.5 270.8 0 0CL +ATOM 1096 C1 B 365 446.0 302.5 270.0 0 0CL +ATOM 1097 A1 B 365 446.2 301.8 271.0 0 0CL +ATOM 1098 COM B 366 277.6 484.7 352.6 0 0CL +ATOM 1099 C1 B 366 277.3 486.0 352.0 0 0CL +ATOM 1100 A1 B 366 277.1 484.8 352.3 0 0CL +ATOM 1101 COM B 367 372.9 129.7 220.6 0 0CL +ATOM 1102 C1 B 367 372.5 130.3 221.8 0 0CL +ATOM 1103 A1 B 367 373.2 130.2 220.8 0 0CL +ATOM 1104 COM B 368 173.3 343.1 22.6 0 0CL +ATOM 1105 C1 B 368 173.6 341.8 22.8 0 0CL +ATOM 1106 A1 B 368 173.8 343.0 23.0 0 0CL +ATOM 1107 COM B 369 15.9 72.8 212.4 0 0CL +ATOM 1108 C1 B 369 17.1 72.3 211.8 0 0CL +ATOM 1109 A1 B 369 16.4 72.6 212.8 0 0CL +ATOM 1110 COM B 370 326.7 481.8 72.3 0 0CL +ATOM 1111 C1 B 370 327.2 481.3 73.6 0 0CL +ATOM 1112 A1 B 370 327.3 481.9 72.5 0 0CL +ATOM 1113 COM B 371 316.4 184.9 153.8 0 0CL +ATOM 1114 C1 B 371 315.4 184.0 154.1 0 0CL +ATOM 1115 A1 B 371 316.4 184.4 153.6 0 0CL +ATOM 1116 COM B 372 345.6 136.9 476.8 0 0CL +ATOM 1117 C1 B 372 344.6 137.5 475.9 0 0CL +ATOM 1118 A1 B 372 345.7 137.3 476.3 0 0CL +ATOM 1119 COM B 373 404.4 231.0 494.5 0 0CL +ATOM 1120 C1 B 373 403.0 231.0 494.2 0 0CL +ATOM 1121 A1 B 373 404.1 231.5 494.7 0 0CL +ATOM 1122 COM B 374 228.8 316.6 319.6 0 0CL +ATOM 1123 C1 B 374 230.2 316.3 319.8 0 0CL +ATOM 1124 A1 B 374 229.2 316.8 319.2 0 0CL +ATOM 1125 COM B 375 315.1 20.0 424.0 0 0CL +ATOM 1126 C1 B 375 315.7 20.3 422.8 0 0CL +ATOM 1127 A1 B 375 315.6 20.2 424.0 0 0CL +ATOM 1128 COM B 376 245.0 454.0 307.7 0 0CL +ATOM 1129 C1 B 376 244.5 454.3 306.4 0 0CL +ATOM 1130 A1 B 376 244.6 453.7 307.4 0 0CL +ATOM 1131 COM B 377 28.3 194.1 400.9 0 0CL +ATOM 1132 C1 B 377 27.2 195.0 400.8 0 0CL +ATOM 1133 A1 B 377 27.9 194.1 400.4 0 0CL +ATOM 1134 COM B 378 321.5 155.5 274.2 0 0CL +ATOM 1135 C1 B 378 321.6 156.4 275.3 0 0CL +ATOM 1136 A1 B 378 321.6 155.3 274.7 0 0CL +ATOM 1137 COM B 379 487.5 248.6 358.6 0 0CL +ATOM 1138 C1 B 379 487.6 250.1 358.5 0 0CL +ATOM 1139 A1 B 379 487.0 249.0 358.6 0 0CL +ATOM 1140 COM B 380 434.1 453.5 109.4 0 0CL +ATOM 1141 C1 B 380 434.0 452.2 110.1 0 0CL +ATOM 1142 A1 B 380 434.6 453.2 109.7 0 0CL +ATOM 1143 COM B 381 304.4 273.5 364.5 0 0CL +ATOM 1144 C1 B 381 305.8 273.5 364.9 0 0CL +ATOM 1145 A1 B 381 304.9 273.5 364.1 0 0CL +ATOM 1146 COM B 382 446.8 118.2 28.3 0 0CL +ATOM 1147 C1 B 382 446.2 119.5 28.4 0 0CL +ATOM 1148 A1 B 382 447.1 118.7 28.3 0 0CL +ATOM 1149 COM B 383 171.3 150.0 395.1 0 0CL +ATOM 1150 C1 B 383 171.9 149.0 396.0 0 0CL +ATOM 1151 A1 B 383 171.9 149.8 395.1 0 0CL +ATOM 1152 COM B 384 133.8 414.1 419.9 0 0CL +ATOM 1153 C1 B 384 133.4 415.4 419.4 0 0CL +ATOM 1154 A1 B 384 133.7 414.6 420.2 0 0CL +ATOM 1155 COM B 385 164.1 290.5 453.4 0 0CL +ATOM 1156 C1 B 385 163.7 289.9 452.2 0 0CL +ATOM 1157 A1 B 385 164.4 290.1 453.2 0 0CL +ATOM 1158 COM B 386 19.9 141.7 32.8 0 0CL +ATOM 1159 C1 B 386 21.2 142.3 32.5 0 0CL +ATOM 1160 A1 B 386 20.2 141.6 32.3 0 0CL +ATOM 1161 COM B 387 351.0 226.3 2.0 0 0CL +ATOM 1162 C1 B 387 350.6 225.1 2.6 0 0CL +ATOM 1163 A1 B 387 351.4 226.0 2.3 0 0CL +ATOM 1164 COM B 388 89.2 223.1 485.4 0 0CL +ATOM 1165 C1 B 388 89.4 222.9 484.0 0 0CL +ATOM 1166 A1 B 388 89.6 222.7 485.2 0 0CL +ATOM 1167 COM B 389 332.0 296.4 300.0 0 0CL +ATOM 1168 C1 B 389 332.1 297.1 298.8 0 0CL +ATOM 1169 A1 B 389 331.6 296.8 299.8 0 0CL +ATOM 1170 COM B 390 79.7 366.7 45.4 0 0CL +ATOM 1171 C1 B 390 79.1 366.4 46.6 0 0CL +ATOM 1172 A1 B 390 80.0 366.8 45.9 0 0CL +ATOM 1173 COM B 391 341.8 49.4 298.1 0 0CL +ATOM 1174 C1 B 391 340.7 48.6 297.5 0 0CL +ATOM 1175 A1 B 391 341.8 48.8 298.0 0 0CL +ATOM 1176 COM B 392 363.1 4.8 365.0 0 0CL +ATOM 1177 C1 B 392 363.2 6.0 364.2 0 0CL +ATOM 1178 A1 B 392 362.6 5.1 364.8 0 0CL +ATOM 1179 COM B 393 462.2 442.1 220.6 0 0CL +ATOM 1180 C1 B 393 461.0 441.4 220.9 0 0CL +ATOM 1181 A1 B 393 462.0 442.0 221.2 0 0CL +ATOM 1182 COM B 394 299.8 150.5 225.6 0 0CL +ATOM 1183 C1 B 394 300.3 149.9 224.4 0 0CL +ATOM 1184 A1 B 394 300.0 150.8 225.1 0 0CL +ATOM 1185 COM B 395 160.8 414.9 298.4 0 0CL +ATOM 1186 C1 B 395 159.6 414.3 297.9 0 0CL +ATOM 1187 A1 B 395 160.2 415.1 298.6 0 0CL +ATOM 1188 COM B 396 189.1 30.0 333.6 0 0CL +ATOM 1189 C1 B 396 190.3 30.0 334.4 0 0CL +ATOM 1190 A1 B 396 189.1 30.0 334.2 0 0CL +ATOM 1191 COM B 397 360.7 376.4 429.0 0 0CL +ATOM 1192 C1 B 397 362.0 375.9 429.6 0 0CL +ATOM 1193 A1 B 397 360.7 376.0 429.5 0 0CL +ATOM 1194 COM B 398 453.1 459.8 138.1 0 0CL +ATOM 1195 C1 B 398 452.6 461.2 138.0 0 0CL +ATOM 1196 A1 B 398 453.4 460.3 137.9 0 0CL +ATOM 1197 COM B 399 359.4 463.8 180.0 0 0CL +ATOM 1198 C1 B 399 359.1 463.8 181.4 0 0CL +ATOM 1199 A1 B 399 359.3 464.3 180.3 0 0CL +ATOM 1200 COM B 400 384.1 263.0 341.5 0 0CL +ATOM 1201 C1 B 400 385.5 263.1 341.3 0 0CL +ATOM 1202 A1 B 400 384.5 262.9 342.0 0 0CL +ATOM 1203 COM B 401 140.3 450.2 361.8 0 0CL +ATOM 1204 C1 B 401 141.5 450.3 362.6 0 0CL +ATOM 1205 A1 B 401 140.7 449.9 361.7 0 0CL +ATOM 1206 COM B 402 239.6 187.1 156.1 0 0CL +ATOM 1207 C1 B 402 240.9 187.6 156.4 0 0CL +ATOM 1208 A1 B 402 240.0 186.8 156.5 0 0CL +ATOM 1209 COM B 403 128.0 46.9 497.4 0 0CL +ATOM 1210 C1 B 403 128.8 45.9 496.9 0 0CL +ATOM 1211 A1 B 403 128.2 46.4 497.8 0 0CL +ATOM 1212 COM B 404 178.1 268.0 119.2 0 0CL +ATOM 1213 C1 B 404 177.4 268.9 118.4 0 0CL +ATOM 1214 A1 B 404 178.2 268.6 119.2 0 0CL +ATOM 1215 COM B 405 473.8 279.7 260.0 0 0CL +ATOM 1216 C1 B 405 474.7 279.4 261.2 0 0CL +ATOM 1217 A1 B 405 474.4 279.6 260.0 0 0CL +ATOM 1218 COM B 406 5.2 222.8 102.3 0 0CL +ATOM 1219 C1 B 406 4.0 223.3 101.7 0 0CL +ATOM 1220 A1 B 406 5.2 223.0 101.7 0 0CL +ATOM 1221 COM B 407 68.0 255.8 440.0 0 0CL +ATOM 1222 C1 B 407 68.3 256.0 441.4 0 0CL +ATOM 1223 A1 B 407 67.7 255.6 440.5 0 0CL +ATOM 1224 COM B 408 457.1 249.3 170.3 0 0CL +ATOM 1225 C1 B 408 458.3 249.8 169.5 0 0CL +ATOM 1226 A1 B 408 457.1 249.3 169.7 0 0CL +ATOM 1227 COM B 409 381.1 420.8 98.2 0 0CL +ATOM 1228 C1 B 409 380.1 420.3 97.3 0 0CL +ATOM 1229 A1 B 409 380.5 420.9 98.3 0 0CL +ATOM 1230 COM B 410 112.8 280.7 449.6 0 0CL +ATOM 1231 C1 B 410 113.1 280.2 450.9 0 0CL +ATOM 1232 A1 B 410 113.3 280.6 449.8 0 0CL +ATOM 1233 COM B 411 294.3 104.3 382.0 0 0CL +ATOM 1234 C1 B 411 293.5 103.9 380.9 0 0CL +ATOM 1235 A1 B 411 294.1 103.7 381.9 0 0CL +ATOM 1236 COM B 412 155.6 486.5 278.6 0 0CL +ATOM 1237 C1 B 412 154.9 487.7 278.1 0 0CL +ATOM 1238 A1 B 412 155.2 486.8 279.0 0 0CL +ATOM 1239 COM B 413 277.3 34.3 211.5 0 0CL +ATOM 1240 C1 B 413 276.8 34.1 210.2 0 0CL +ATOM 1241 A1 B 413 276.8 34.1 211.5 0 0CL +ATOM 1242 COM B 414 46.5 341.1 5.2 0 0CL +ATOM 1243 C1 B 414 47.8 341.4 4.7 0 0CL +ATOM 1244 A1 B 414 46.7 341.7 5.2 0 0CL +ATOM 1245 COM B 415 354.8 426.8 18.1 0 0CL +ATOM 1246 C1 B 415 354.3 426.0 19.1 0 0CL +ATOM 1247 A1 B 415 354.8 426.2 18.0 0 0CL +ATOM 1248 COM B 416 244.4 306.6 454.9 0 0CL +ATOM 1249 C1 B 416 243.6 305.9 453.9 0 0CL +ATOM 1250 A1 B 416 244.5 306.6 454.3 0 0CL +ATOM 1251 COM B 417 80.5 102.0 355.9 0 0CL +ATOM 1252 C1 B 417 81.5 103.0 355.7 0 0CL +ATOM 1253 A1 B 417 80.4 102.5 355.6 0 0CL +ATOM 1254 COM B 418 214.8 4.4 222.5 0 0CL +ATOM 1255 C1 B 418 215.8 5.0 223.4 0 0CL +ATOM 1256 A1 B 418 215.2 4.1 222.8 0 0CL +ATOM 1257 COM B 419 458.3 457.4 432.9 0 0CL +ATOM 1258 C1 B 419 458.1 457.7 431.5 0 0CL +ATOM 1259 A1 B 419 458.5 457.9 432.6 0 0CL +ATOM 1260 COM B 420 481.4 365.7 131.6 0 0CL +ATOM 1261 C1 B 420 480.0 366.0 131.1 0 0CL +ATOM 1262 A1 B 420 481.0 365.3 131.3 0 0CL +ATOM 1263 COM B 421 304.4 223.6 132.8 0 0CL +ATOM 1264 C1 B 421 304.6 223.7 131.4 0 0CL +ATOM 1265 A1 B 421 304.9 223.7 132.5 0 0CL +ATOM 1266 COM B 422 276.3 172.9 27.9 0 0CL +ATOM 1267 C1 B 422 277.3 172.4 28.8 0 0CL +ATOM 1268 A1 B 422 276.9 172.8 27.7 0 0CL +ATOM 1269 COM B 423 416.6 224.0 472.3 0 0CL +ATOM 1270 C1 B 423 416.0 222.8 472.7 0 0CL +ATOM 1271 A1 B 423 416.2 223.7 471.9 0 0CL +ATOM 1272 COM B 424 433.4 381.9 485.7 0 0CL +ATOM 1273 C1 B 424 433.7 382.8 486.8 0 0CL +ATOM 1274 A1 B 424 433.1 382.4 485.8 0 0CL +ATOM 1275 COM B 425 127.9 292.6 317.7 0 0CL +ATOM 1276 C1 B 425 126.9 293.4 317.0 0 0CL +ATOM 1277 A1 B 425 128.1 293.0 317.2 0 0CL +ATOM 1278 COM B 426 19.2 318.2 263.7 0 0CL +ATOM 1279 C1 B 426 19.8 317.0 264.3 0 0CL +ATOM 1280 A1 B 426 18.9 317.8 264.1 0 0CL +ATOM 1281 COM B 427 326.9 27.1 379.1 0 0CL +ATOM 1282 C1 B 427 327.3 26.2 380.2 0 0CL +ATOM 1283 A1 B 427 327.5 26.9 379.2 0 0CL +ATOM 1284 COM B 428 218.6 55.9 435.9 0 0CL +ATOM 1285 C1 B 428 220.0 56.0 435.8 0 0CL +ATOM 1286 A1 B 428 218.9 55.4 435.8 0 0CL +ATOM 1287 COM B 429 433.0 241.7 393.8 0 0CL +ATOM 1288 C1 B 429 431.6 241.8 393.8 0 0CL +ATOM 1289 A1 B 429 432.6 241.3 393.5 0 0CL +ATOM 1290 COM B 430 231.7 91.2 146.4 0 0CL +ATOM 1291 C1 B 430 231.6 91.1 147.9 0 0CL +ATOM 1292 A1 B 430 231.3 91.5 146.7 0 0CL +ATOM 1293 COM B 431 151.1 87.3 495.9 0 0CL +ATOM 1294 C1 B 431 149.9 87.6 496.6 0 0CL +ATOM 1295 A1 B 431 150.8 86.9 496.1 0 0CL +ATOM 1296 COM B 432 212.8 80.0 358.7 0 0CL +ATOM 1297 C1 B 432 211.9 78.9 358.7 0 0CL +ATOM 1298 A1 B 432 213.0 79.4 358.9 0 0CL +ATOM 1299 COM B 433 311.0 152.0 210.4 0 0CL +ATOM 1300 C1 B 433 311.6 151.2 211.4 0 0CL +ATOM 1301 A1 B 433 310.7 151.8 210.9 0 0CL +ATOM 1302 COM B 434 55.5 51.7 19.5 0 0CL +ATOM 1303 C1 B 434 55.6 51.5 18.1 0 0CL +ATOM 1304 A1 B 434 55.3 52.1 19.2 0 0CL +ATOM 1305 COM B 435 470.5 405.1 31.4 0 0CL +ATOM 1306 C1 B 435 470.9 404.5 30.2 0 0CL +ATOM 1307 A1 B 435 470.8 404.6 31.4 0 0CL +ATOM 1308 COM B 436 99.7 220.1 201.5 0 0CL +ATOM 1309 C1 B 436 98.7 219.8 200.5 0 0CL +ATOM 1310 A1 B 436 99.6 219.6 201.3 0 0CL +ATOM 1311 COM B 437 365.7 315.5 34.7 0 0CL +ATOM 1312 C1 B 437 367.1 315.5 35.0 0 0CL +ATOM 1313 A1 B 437 366.1 315.9 34.5 0 0CL +ATOM 1314 COM B 438 325.9 404.1 335.0 0 0CL +ATOM 1315 C1 B 438 326.8 403.6 334.1 0 0CL +ATOM 1316 A1 B 438 326.1 404.4 334.6 0 0CL +ATOM 1317 COM B 439 385.4 141.6 326.7 0 0CL +ATOM 1318 C1 B 439 384.3 140.9 326.2 0 0CL +ATOM 1319 A1 B 439 385.3 141.0 326.9 0 0CL +ATOM 1320 COM B 440 139.5 219.5 338.3 0 0CL +ATOM 1321 C1 B 440 140.8 219.4 337.6 0 0CL +ATOM 1322 A1 B 440 139.8 220.0 338.0 0 0CL +ATOM 1323 COM B 441 75.5 229.9 122.3 0 0CL +ATOM 1324 C1 B 441 76.5 228.9 122.7 0 0CL +ATOM 1325 A1 B 441 75.9 229.6 121.9 0 0CL +ATOM 1326 COM B 442 119.8 16.5 168.0 0 0CL +ATOM 1327 C1 B 442 118.8 16.6 167.0 0 0CL +ATOM 1328 A1 B 442 119.9 16.9 167.6 0 0CL +ATOM 1329 COM B 443 106.6 251.0 455.5 0 0CL +ATOM 1330 C1 B 443 107.4 250.3 456.5 0 0CL +ATOM 1331 A1 B 443 106.7 251.2 456.0 0 0CL +ATOM 1332 COM B 444 140.2 334.3 312.8 0 0CL +ATOM 1333 C1 B 444 140.2 335.2 311.7 0 0CL +ATOM 1334 A1 B 444 139.9 334.2 312.3 0 0CL +ATOM 1335 COM B 445 462.9 474.9 196.9 0 0CL +ATOM 1336 C1 B 445 464.1 474.3 196.3 0 0CL +ATOM 1337 A1 B 445 462.9 474.5 196.5 0 0CL +ATOM 1338 COM B 446 7.6 436.8 303.5 0 0CL +ATOM 1339 C1 B 446 6.8 435.6 303.1 0 0CL +ATOM 1340 A1 B 446 7.0 436.8 303.5 0 0CL +ATOM 1341 COM B 447 380.1 372.3 109.2 0 0CL +ATOM 1342 C1 B 447 379.9 372.7 107.8 0 0CL +ATOM 1343 A1 B 447 379.8 372.8 109.0 0 0CL +ATOM 1344 COM B 448 411.4 496.2 155.3 0 0CL +ATOM 1345 C1 B 448 412.0 497.5 155.1 0 0CL +ATOM 1346 A1 B 448 411.1 496.7 155.4 0 0CL +ATOM 1347 COM B 449 259.8 322.5 296.4 0 0CL +ATOM 1348 C1 B 449 261.0 322.8 295.7 0 0CL +ATOM 1349 A1 B 449 259.8 323.0 296.2 0 0CL diff --git a/het3mer/PDB/900000.pdb b/het3mer/PDB/900000.pdb new file mode 100644 index 00000000..4a2d2f81 --- /dev/null +++ b/het3mer/PDB/900000.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 900000 CREATED Thu May 29 13:12:28 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 269.3 336.1 286.5 0 0CL +ATOM 1 A1 C 0 268.7 334.6 285.0 0 0CL +ATOM 2 B1 C 0 269.1 334.4 285.5 0 0CL +ATOM 3 COM C 1 254.4 264.8 358.4 0 0CL +ATOM 4 A1 C 1 255.2 266.8 358.1 0 0CL +ATOM 5 B1 C 1 255.1 266.4 357.5 0 0CL +ATOM 6 COM C 2 291.0 145.1 200.7 0 0CL +ATOM 7 A1 C 2 291.5 146.1 198.8 0 0CL +ATOM 8 B1 C 2 290.8 145.8 198.8 0 0CL +ATOM 9 COM C 3 402.3 100.6 194.8 0 0CL +ATOM 10 A1 C 3 401.0 101.4 196.5 0 0CL +ATOM 11 B1 C 3 401.6 100.9 196.7 0 0CL +ATOM 12 COM C 4 114.0 191.6 461.3 0 0CL +ATOM 13 A1 C 4 114.3 189.4 461.5 0 0CL +ATOM 14 B1 C 4 113.7 189.7 461.8 0 0CL +ATOM 15 COM C 5 221.8 435.9 167.8 0 0CL +ATOM 16 A1 C 5 220.7 437.8 167.6 0 0CL +ATOM 17 B1 C 5 220.3 437.2 167.8 0 0CL +ATOM 18 COM C 6 7.0 53.0 273.4 0 0CL +ATOM 19 A1 C 6 5.3 53.6 272.1 0 0CL +ATOM 20 B1 C 6 5.7 53.1 271.9 0 0CL +ATOM 21 COM C 7 92.9 17.6 40.8 0 0CL +ATOM 22 A1 C 7 94.4 16.8 42.1 0 0CL +ATOM 23 B1 C 7 94.5 16.7 41.4 0 0CL +ATOM 24 COM C 8 60.3 359.2 379.7 0 0CL +ATOM 25 A1 C 8 58.6 357.8 379.5 0 0CL +ATOM 26 B1 C 8 58.5 358.3 379.9 0 0CL +ATOM 27 COM C 9 409.5 357.4 234.3 0 0CL +ATOM 28 A1 C 9 407.3 357.8 234.7 0 0CL +ATOM 29 B1 C 9 407.8 358.4 234.6 0 0CL +ATOM 30 COM C 10 152.0 125.0 370.3 0 0CL +ATOM 31 A1 C 10 150.7 124.6 368.6 0 0CL +ATOM 32 B1 C 10 150.8 125.3 368.7 0 0CL +ATOM 33 COM C 11 409.2 204.8 414.1 0 0CL +ATOM 34 A1 C 11 410.7 203.6 413.0 0 0CL +ATOM 35 B1 C 11 410.8 203.7 413.7 0 0CL +ATOM 36 COM C 12 312.7 186.5 451.7 0 0CL +ATOM 37 A1 C 12 311.8 188.5 451.8 0 0CL +ATOM 38 B1 C 12 311.3 187.9 451.7 0 0CL +ATOM 39 COM C 13 5.2 349.4 125.7 0 0CL +ATOM 40 A1 C 13 4.2 351.2 126.5 0 0CL +ATOM 41 B1 C 13 4.5 350.7 127.0 0 0CL +ATOM 42 COM C 14 149.2 367.7 97.6 0 0CL +ATOM 43 A1 C 14 147.5 366.6 98.5 0 0CL +ATOM 44 B1 C 14 147.5 366.8 97.8 0 0CL +ATOM 45 COM C 15 403.8 59.9 7.8 0 0CL +ATOM 46 A1 C 15 405.7 60.3 6.7 0 0CL +ATOM 47 B1 C 15 405.5 60.8 7.2 0 0CL +ATOM 48 COM C 16 191.7 461.2 141.2 0 0CL +ATOM 49 A1 C 16 193.4 460.0 141.9 0 0CL +ATOM 50 B1 C 16 193.5 460.4 141.3 0 0CL +ATOM 51 COM C 17 377.3 434.1 143.2 0 0CL +ATOM 52 A1 C 17 376.2 435.8 144.1 0 0CL +ATOM 53 B1 C 17 376.2 435.2 144.5 0 0CL +ATOM 54 COM C 18 140.0 236.3 277.9 0 0CL +ATOM 55 A1 C 18 140.4 236.1 275.8 0 0CL +ATOM 56 B1 C 18 140.5 235.5 276.2 0 0CL +ATOM 57 COM C 19 272.1 463.1 33.0 0 0CL +ATOM 58 A1 C 19 271.9 464.9 31.6 0 0CL +ATOM 59 B1 C 19 271.9 465.0 32.3 0 0CL +ATOM 60 COM C 20 278.3 311.3 195.6 0 0CL +ATOM 61 A1 C 20 278.6 312.7 197.3 0 0CL +ATOM 62 B1 C 20 279.2 312.6 196.8 0 0CL +ATOM 63 COM C 21 116.6 442.2 347.2 0 0CL +ATOM 64 A1 C 21 115.5 443.4 345.7 0 0CL +ATOM 65 B1 C 21 115.4 443.6 346.4 0 0CL +ATOM 66 COM C 22 167.6 310.2 239.8 0 0CL +ATOM 67 A1 C 22 166.6 311.8 241.0 0 0CL +ATOM 68 B1 C 22 166.3 311.1 241.0 0 0CL +ATOM 69 COM C 23 459.0 385.7 456.8 0 0CL +ATOM 70 A1 C 23 459.2 384.9 458.9 0 0CL +ATOM 71 B1 C 23 459.4 385.6 458.7 0 0CL +ATOM 72 COM C 24 392.1 303.3 374.1 0 0CL +ATOM 73 A1 C 24 391.4 304.1 372.1 0 0CL +ATOM 74 B1 C 24 391.0 304.2 372.7 0 0CL +ATOM 75 COM C 25 163.9 450.0 483.2 0 0CL +ATOM 76 A1 C 25 165.5 448.5 482.9 0 0CL +ATOM 77 B1 C 25 165.1 448.6 482.4 0 0CL +ATOM 78 COM C 26 149.5 336.2 183.8 0 0CL +ATOM 79 A1 C 26 150.3 337.9 182.7 0 0CL +ATOM 80 B1 C 26 149.8 337.6 182.4 0 0CL +ATOM 81 COM C 27 455.1 397.3 10.9 0 0CL +ATOM 82 A1 C 27 454.0 395.5 11.6 0 0CL +ATOM 83 B1 C 27 454.7 395.4 11.4 0 0CL +ATOM 84 COM C 28 475.6 204.4 121.4 0 0CL +ATOM 85 A1 C 28 477.3 205.7 121.0 0 0CL +ATOM 86 B1 C 28 477.2 205.5 121.7 0 0CL +ATOM 87 COM C 29 432.5 3.0 495.8 0 0CL +ATOM 88 A1 C 29 432.8 1.3 494.4 0 0CL +ATOM 89 B1 C 29 432.1 1.4 494.7 0 0CL +ATOM 90 COM C 30 114.7 280.9 452.6 0 0CL +ATOM 91 A1 C 30 116.5 281.3 451.4 0 0CL +ATOM 92 B1 C 30 115.9 281.1 451.0 0 0CL +ATOM 93 COM C 31 421.9 456.2 265.7 0 0CL +ATOM 94 A1 C 31 421.1 454.3 266.2 0 0CL +ATOM 95 B1 C 31 420.8 454.8 266.5 0 0CL +ATOM 96 COM C 32 439.1 442.1 460.5 0 0CL +ATOM 97 A1 C 32 438.5 442.3 462.7 0 0CL +ATOM 98 B1 C 32 438.1 442.7 462.2 0 0CL +ATOM 99 COM C 33 288.7 66.6 95.8 0 0CL +ATOM 100 A1 C 33 290.6 65.5 95.4 0 0CL +ATOM 101 B1 C 33 290.4 66.0 94.9 0 0CL +ATOM 102 COM C 34 299.8 106.9 127.8 0 0CL +ATOM 103 A1 C 34 299.6 107.1 129.9 0 0CL +ATOM 104 B1 C 34 300.1 106.6 129.7 0 0CL +ATOM 105 COM C 35 225.4 118.3 457.7 0 0CL +ATOM 106 A1 C 35 226.0 117.9 455.6 0 0CL +ATOM 107 B1 C 35 226.5 118.2 456.0 0 0CL +ATOM 108 COM C 36 354.5 290.1 144.5 0 0CL +ATOM 109 A1 C 36 356.0 288.9 143.6 0 0CL +ATOM 110 B1 C 36 355.7 288.7 144.2 0 0CL +ATOM 111 COM C 37 123.9 399.7 109.9 0 0CL +ATOM 112 A1 C 37 125.1 398.6 108.4 0 0CL +ATOM 113 B1 C 37 125.4 399.2 108.7 0 0CL +ATOM 114 COM C 38 392.5 100.4 253.8 0 0CL +ATOM 115 A1 C 38 394.1 99.0 254.2 0 0CL +ATOM 116 B1 C 38 394.2 99.6 254.6 0 0CL +ATOM 117 COM C 39 469.0 275.0 476.7 0 0CL +ATOM 118 A1 C 39 470.6 275.9 477.9 0 0CL +ATOM 119 B1 C 39 469.9 276.0 478.2 0 0CL +ATOM 120 COM C 40 374.3 322.4 301.5 0 0CL +ATOM 121 A1 C 40 373.4 324.2 302.5 0 0CL +ATOM 122 B1 C 40 374.1 324.1 302.6 0 0CL +ATOM 123 COM C 41 146.1 298.6 230.8 0 0CL +ATOM 124 A1 C 41 146.7 299.9 232.3 0 0CL +ATOM 125 B1 C 41 147.1 299.4 232.2 0 0CL +ATOM 126 COM C 42 428.2 32.1 300.0 0 0CL +ATOM 127 A1 C 42 429.4 31.6 298.2 0 0CL +ATOM 128 B1 C 42 429.2 32.3 298.3 0 0CL +ATOM 129 COM C 43 167.9 161.2 348.7 0 0CL +ATOM 130 A1 C 43 168.6 162.3 350.5 0 0CL +ATOM 131 B1 C 43 168.6 161.6 350.5 0 0CL +ATOM 132 COM C 44 80.9 425.7 54.2 0 0CL +ATOM 133 A1 C 44 79.1 425.5 55.4 0 0CL +ATOM 134 B1 C 44 79.3 426.1 55.4 0 0CL +ATOM 135 COM C 45 435.7 52.0 279.6 0 0CL +ATOM 136 A1 C 45 434.4 53.7 279.5 0 0CL +ATOM 137 B1 C 45 435.0 53.7 279.1 0 0CL +ATOM 138 COM C 46 330.1 67.1 16.5 0 0CL +ATOM 139 A1 C 46 332.3 66.6 16.3 0 0CL +ATOM 140 B1 C 46 331.8 66.0 16.2 0 0CL +ATOM 141 COM C 47 464.7 335.7 132.2 0 0CL +ATOM 142 A1 C 47 466.2 337.1 131.3 0 0CL +ATOM 143 B1 C 47 466.1 337.2 132.0 0 0CL +ATOM 144 COM C 48 70.4 280.1 145.9 0 0CL +ATOM 145 A1 C 48 72.4 279.3 146.2 0 0CL +ATOM 146 B1 C 48 72.4 280.0 145.9 0 0CL +ATOM 147 COM C 49 130.5 353.5 27.6 0 0CL +ATOM 148 A1 C 49 131.8 354.3 26.1 0 0CL +ATOM 149 B1 C 49 131.8 353.5 26.2 0 0CL +ATOM 150 COM C 50 8.0 229.5 185.7 0 0CL +ATOM 151 A1 C 50 8.2 229.5 183.5 0 0CL +ATOM 152 B1 C 50 8.0 228.9 183.8 0 0CL +ATOM 153 COM C 51 71.8 392.4 389.5 0 0CL +ATOM 154 A1 C 51 72.9 393.2 387.8 0 0CL +ATOM 155 B1 C 51 73.3 393.2 388.4 0 0CL +ATOM 156 COM C 52 45.8 387.5 216.6 0 0CL +ATOM 157 A1 C 52 44.3 389.1 216.7 0 0CL +ATOM 158 B1 C 52 44.7 389.0 217.3 0 0CL +ATOM 159 COM C 53 214.9 98.5 285.7 0 0CL +ATOM 160 A1 C 53 214.0 99.7 284.1 0 0CL +ATOM 161 B1 C 53 214.6 99.9 284.4 0 0CL +ATOM 162 COM C 54 323.6 36.7 446.4 0 0CL +ATOM 163 A1 C 54 323.9 38.4 445.1 0 0CL +ATOM 164 B1 C 54 324.5 38.1 445.4 0 0CL +ATOM 165 COM C 55 117.4 101.0 430.3 0 0CL +ATOM 166 A1 C 55 119.1 102.0 429.3 0 0CL +ATOM 167 B1 C 55 118.9 102.2 430.0 0 0CL +ATOM 168 COM C 56 1.2 219.8 430.0 0 0CL +ATOM 169 A1 C 56 1.8 220.1 432.1 0 0CL +ATOM 170 B1 C 56 1.5 219.5 432.0 0 0CL +ATOM 171 COM C 57 439.6 171.2 267.0 0 0CL +ATOM 172 A1 C 57 441.8 170.7 266.8 0 0CL +ATOM 173 B1 C 57 441.5 170.8 267.5 0 0CL +ATOM 174 COM C 58 108.3 366.3 36.6 0 0CL +ATOM 175 A1 C 58 110.4 366.4 37.0 0 0CL +ATOM 176 B1 C 58 110.0 365.9 37.4 0 0CL +ATOM 177 COM C 59 126.9 284.8 234.7 0 0CL +ATOM 178 A1 C 59 126.4 284.9 232.5 0 0CL +ATOM 179 B1 C 59 127.1 284.9 232.7 0 0CL +ATOM 180 COM C 60 32.3 398.4 121.9 0 0CL +ATOM 181 A1 C 60 32.6 400.4 121.2 0 0CL +ATOM 182 B1 C 60 32.1 400.0 120.8 0 0CL +ATOM 183 COM C 61 402.4 405.9 216.5 0 0CL +ATOM 184 A1 C 61 400.5 404.7 216.8 0 0CL +ATOM 185 B1 C 61 400.8 405.0 217.4 0 0CL +ATOM 186 COM C 62 264.4 211.2 55.9 0 0CL +ATOM 187 A1 C 62 264.2 213.3 55.5 0 0CL +ATOM 188 B1 C 62 264.9 213.1 55.6 0 0CL +ATOM 189 COM C 63 128.6 195.8 368.8 0 0CL +ATOM 190 A1 C 63 126.6 195.6 368.1 0 0CL +ATOM 191 B1 C 63 126.7 195.6 368.8 0 0CL +ATOM 192 COM C 64 354.2 75.7 443.3 0 0CL +ATOM 193 A1 C 64 355.2 77.2 442.1 0 0CL +ATOM 194 B1 C 64 355.2 77.3 442.8 0 0CL +ATOM 195 COM C 65 288.6 117.3 66.6 0 0CL +ATOM 196 A1 C 65 288.0 119.4 66.6 0 0CL +ATOM 197 B1 C 65 288.5 119.2 67.1 0 0CL +ATOM 198 COM C 66 286.5 288.7 109.9 0 0CL +ATOM 199 A1 C 66 284.7 289.8 110.5 0 0CL +ATOM 200 B1 C 66 284.7 289.6 109.8 0 0CL +ATOM 201 COM C 67 137.2 439.2 139.9 0 0CL +ATOM 202 A1 C 67 138.6 437.6 139.3 0 0CL +ATOM 203 B1 C 67 138.0 437.4 139.7 0 0CL +ATOM 204 COM C 68 240.1 264.4 29.5 0 0CL +ATOM 205 A1 C 68 239.2 265.0 31.4 0 0CL +ATOM 206 B1 C 68 238.8 264.7 30.9 0 0CL +ATOM 207 COM C 69 484.6 143.4 336.7 0 0CL +ATOM 208 A1 C 69 485.1 145.1 335.4 0 0CL +ATOM 209 B1 C 69 485.3 144.5 335.2 0 0CL +ATOM 210 COM C 70 23.1 69.4 57.0 0 0CL +ATOM 211 A1 C 70 21.4 69.8 55.6 0 0CL +ATOM 212 B1 C 70 21.3 69.2 56.1 0 0CL +ATOM 213 COM C 71 3.9 329.4 308.1 0 0CL +ATOM 214 A1 C 71 2.8 331.2 308.7 0 0CL +ATOM 215 B1 C 71 3.3 331.3 308.2 0 0CL +ATOM 216 COM C 72 462.0 387.3 357.1 0 0CL +ATOM 217 A1 C 72 460.4 386.7 358.4 0 0CL +ATOM 218 B1 C 72 460.8 387.3 358.6 0 0CL +ATOM 219 COM C 73 123.4 456.3 278.7 0 0CL +ATOM 220 A1 C 73 125.6 456.4 278.2 0 0CL +ATOM 221 B1 C 73 125.2 455.8 277.9 0 0CL +ATOM 222 COM C 74 132.3 25.9 269.9 0 0CL +ATOM 223 A1 C 74 133.3 25.9 267.9 0 0CL +ATOM 224 B1 C 74 132.7 26.3 268.0 0 0CL +ATOM 225 COM C 75 440.7 84.0 77.3 0 0CL +ATOM 226 A1 C 75 441.5 85.7 76.2 0 0CL +ATOM 227 B1 C 75 441.8 85.1 76.1 0 0CL +ATOM 228 COM C 76 112.8 420.4 361.4 0 0CL +ATOM 229 A1 C 76 114.1 419.2 360.1 0 0CL +ATOM 230 B1 C 76 113.5 419.4 359.9 0 0CL +ATOM 231 COM C 77 152.9 317.1 275.3 0 0CL +ATOM 232 A1 C 77 155.1 317.5 275.2 0 0CL +ATOM 233 B1 C 77 154.7 317.9 275.6 0 0CL +ATOM 234 COM C 78 477.5 109.1 177.6 0 0CL +ATOM 235 A1 C 78 475.5 108.1 177.8 0 0CL +ATOM 236 B1 C 78 475.9 108.0 177.1 0 0CL +ATOM 237 COM C 79 380.9 443.2 368.9 0 0CL +ATOM 238 A1 C 79 379.6 443.1 367.1 0 0CL +ATOM 239 B1 C 79 379.3 442.8 367.7 0 0CL +ATOM 240 COM C 80 86.6 247.5 118.4 0 0CL +ATOM 241 A1 C 80 86.6 245.9 120.0 0 0CL +ATOM 242 B1 C 80 87.2 246.4 119.9 0 0CL +ATOM 243 COM C 81 455.6 38.3 370.8 0 0CL +ATOM 244 A1 C 81 453.7 37.3 370.4 0 0CL +ATOM 245 B1 C 81 454.1 37.1 371.0 0 0CL +ATOM 246 COM C 82 56.5 454.1 489.3 0 0CL +ATOM 247 A1 C 82 57.7 455.7 490.2 0 0CL +ATOM 248 B1 C 82 57.2 455.5 490.6 0 0CL +ATOM 249 COM C 83 466.0 128.6 168.6 0 0CL +ATOM 250 A1 C 83 465.3 130.6 168.9 0 0CL +ATOM 251 B1 C 83 465.5 130.2 169.5 0 0CL +ATOM 252 COM C 84 299.5 211.9 282.3 0 0CL +ATOM 253 A1 C 84 297.7 211.7 283.4 0 0CL +ATOM 254 B1 C 84 297.9 211.1 283.0 0 0CL +ATOM 255 COM C 85 387.3 8.8 201.0 0 0CL +ATOM 256 A1 C 85 388.0 7.3 202.5 0 0CL +ATOM 257 B1 C 85 387.5 7.8 202.7 0 0CL +ATOM 258 COM C 86 54.0 100.8 242.2 0 0CL +ATOM 259 A1 C 86 56.2 100.7 242.4 0 0CL +ATOM 260 B1 C 86 55.8 100.1 242.2 0 0CL +ATOM 261 COM C 87 120.2 182.8 335.9 0 0CL +ATOM 262 A1 C 87 119.5 182.5 333.9 0 0CL +ATOM 263 B1 C 87 119.4 183.1 334.2 0 0CL +ATOM 264 COM C 88 408.1 349.1 427.8 0 0CL +ATOM 265 A1 C 88 406.4 348.8 426.4 0 0CL +ATOM 266 B1 C 88 406.4 348.5 427.0 0 0CL +ATOM 267 COM C 89 204.0 334.7 119.1 0 0CL +ATOM 268 A1 C 89 204.4 335.9 117.3 0 0CL +ATOM 269 B1 C 89 204.3 336.2 117.9 0 0CL +ATOM 270 COM C 90 284.7 230.8 422.9 0 0CL +ATOM 271 A1 C 90 285.2 232.1 424.6 0 0CL +ATOM 272 B1 C 90 284.6 232.2 424.3 0 0CL +ATOM 273 COM C 91 358.2 400.9 435.8 0 0CL +ATOM 274 A1 C 91 356.5 399.5 435.8 0 0CL +ATOM 275 B1 C 91 356.4 400.1 436.1 0 0CL +ATOM 276 COM C 92 493.3 14.6 32.1 0 0CL +ATOM 277 A1 C 92 493.8 13.7 30.2 0 0CL +ATOM 278 B1 C 92 493.6 14.4 30.2 0 0CL +ATOM 279 COM C 93 9.7 41.6 191.0 0 0CL +ATOM 280 A1 C 93 11.5 40.4 190.9 0 0CL +ATOM 281 B1 C 93 10.9 40.0 191.0 0 0CL +ATOM 282 COM C 94 17.0 344.9 272.2 0 0CL +ATOM 283 A1 C 94 17.8 345.3 274.3 0 0CL +ATOM 284 B1 C 94 17.1 345.1 274.2 0 0CL +ATOM 285 COM C 95 94.0 78.4 422.8 0 0CL +ATOM 286 A1 C 95 93.3 76.9 421.3 0 0CL +ATOM 287 B1 C 95 93.1 77.6 421.2 0 0CL +ATOM 288 COM C 96 305.0 435.9 180.0 0 0CL +ATOM 289 A1 C 96 303.5 437.4 180.4 0 0CL +ATOM 290 B1 C 96 303.4 436.9 179.9 0 0CL +ATOM 291 COM C 97 489.1 362.8 317.3 0 0CL +ATOM 292 A1 C 97 490.8 363.9 318.0 0 0CL +ATOM 293 B1 C 97 490.2 364.1 318.4 0 0CL +ATOM 294 COM C 98 29.6 294.4 46.6 0 0CL +ATOM 295 A1 C 98 31.7 295.0 46.2 0 0CL +ATOM 296 B1 C 98 31.2 295.2 45.7 0 0CL +ATOM 297 COM C 99 63.2 180.2 263.9 0 0CL +ATOM 298 A1 C 99 61.2 181.0 264.1 0 0CL +ATOM 299 B1 C 99 61.3 180.3 264.3 0 0CL +ATOM 300 COM C 100 239.3 188.0 447.2 0 0CL +ATOM 301 A1 C 100 239.2 186.1 446.0 0 0CL +ATOM 302 B1 C 100 238.7 186.2 446.5 0 0CL +ATOM 303 COM C 101 254.4 258.2 74.8 0 0CL +ATOM 304 A1 C 101 255.7 256.4 75.4 0 0CL +ATOM 305 B1 C 101 255.1 256.3 74.9 0 0CL +ATOM 306 COM C 102 66.1 264.6 60.6 0 0CL +ATOM 307 A1 C 102 66.3 266.7 60.2 0 0CL +ATOM 308 B1 C 102 65.8 266.4 59.8 0 0CL +ATOM 309 COM C 103 414.1 428.0 283.8 0 0CL +ATOM 310 A1 C 103 412.3 428.7 282.8 0 0CL +ATOM 311 B1 C 103 412.5 429.1 283.4 0 0CL +ATOM 312 COM C 104 282.9 231.2 65.1 0 0CL +ATOM 313 A1 C 104 284.5 229.7 65.3 0 0CL +ATOM 314 B1 C 104 284.2 229.9 65.9 0 0CL +ATOM 315 COM C 105 248.9 217.7 132.5 0 0CL +ATOM 316 A1 C 105 250.1 218.7 130.9 0 0CL +ATOM 317 B1 C 105 249.4 218.8 130.9 0 0CL +ATOM 318 COM C 106 2.7 30.0 464.3 0 0CL +ATOM 319 A1 C 106 1.3 31.5 465.1 0 0CL +ATOM 320 B1 C 106 1.9 31.4 465.5 0 0CL +ATOM 321 COM C 107 16.1 474.5 176.5 0 0CL +ATOM 322 A1 C 107 15.6 476.3 177.6 0 0CL +ATOM 323 B1 C 107 15.2 476.2 177.0 0 0CL +ATOM 324 COM C 108 187.2 425.1 263.7 0 0CL +ATOM 325 A1 C 108 187.6 422.9 263.7 0 0CL +ATOM 326 B1 C 108 188.1 423.3 263.9 0 0CL +ATOM 327 COM C 109 284.8 491.8 402.9 0 0CL +ATOM 328 A1 C 109 287.0 491.9 403.1 0 0CL +ATOM 329 B1 C 109 286.6 492.0 403.7 0 0CL +ATOM 330 COM C 110 428.6 209.0 17.3 0 0CL +ATOM 331 A1 C 110 426.6 209.8 17.6 0 0CL +ATOM 332 B1 C 110 427.0 210.0 17.0 0 0CL +ATOM 333 COM C 111 18.3 52.0 200.9 0 0CL +ATOM 334 A1 C 111 16.7 50.6 201.6 0 0CL +ATOM 335 B1 C 111 16.9 50.6 200.9 0 0CL +ATOM 336 COM C 112 71.3 469.7 234.8 0 0CL +ATOM 337 A1 C 112 71.3 468.9 232.7 0 0CL +ATOM 338 B1 C 112 71.8 468.6 233.2 0 0CL +ATOM 339 COM C 113 423.0 41.5 165.4 0 0CL +ATOM 340 A1 C 113 423.4 43.5 166.1 0 0CL +ATOM 341 B1 C 113 424.0 43.1 166.0 0 0CL +ATOM 342 COM C 114 452.6 127.3 67.4 0 0CL +ATOM 343 A1 C 114 451.6 125.4 66.9 0 0CL +ATOM 344 B1 C 114 452.3 125.4 67.1 0 0CL +ATOM 345 COM C 115 284.3 222.4 187.6 0 0CL +ATOM 346 A1 C 115 284.6 224.1 186.1 0 0CL +ATOM 347 B1 C 115 284.4 223.4 185.9 0 0CL +ATOM 348 COM C 116 332.3 11.2 250.7 0 0CL +ATOM 349 A1 C 116 332.4 11.6 252.8 0 0CL +ATOM 350 B1 C 116 331.7 11.5 252.6 0 0CL +ATOM 351 COM C 117 264.0 127.4 66.8 0 0CL +ATOM 352 A1 C 117 264.1 129.3 67.9 0 0CL +ATOM 353 B1 C 117 264.4 128.8 68.2 0 0CL +ATOM 354 COM C 118 34.2 203.3 459.2 0 0CL +ATOM 355 A1 C 118 32.0 203.1 459.2 0 0CL +ATOM 356 B1 C 118 32.4 202.6 459.5 0 0CL +ATOM 357 COM C 119 16.6 417.0 261.4 0 0CL +ATOM 358 A1 C 119 14.7 417.4 260.3 0 0CL +ATOM 359 B1 C 119 15.2 418.0 260.4 0 0CL +ATOM 360 COM C 120 198.5 305.5 283.2 0 0CL +ATOM 361 A1 C 120 197.3 306.4 284.8 0 0CL +ATOM 362 B1 C 120 197.2 306.6 284.1 0 0CL +ATOM 363 COM C 121 352.0 391.9 45.2 0 0CL +ATOM 364 A1 C 121 351.4 389.9 45.9 0 0CL +ATOM 365 B1 C 121 352.1 390.1 46.1 0 0CL +ATOM 366 COM C 122 488.9 104.5 359.2 0 0CL +ATOM 367 A1 C 122 489.6 104.2 361.3 0 0CL +ATOM 368 B1 C 122 489.7 103.6 360.8 0 0CL +ATOM 369 COM C 123 169.2 476.9 485.5 0 0CL +ATOM 370 A1 C 123 169.8 476.5 483.4 0 0CL +ATOM 371 B1 C 123 169.6 475.9 483.8 0 0CL +ATOM 372 COM C 124 191.9 234.5 282.3 0 0CL +ATOM 373 A1 C 124 192.4 234.3 280.2 0 0CL +ATOM 374 B1 C 124 191.7 234.1 280.4 0 0CL +ATOM 375 COM C 125 268.2 252.0 471.3 0 0CL +ATOM 376 A1 C 125 266.2 251.1 471.8 0 0CL +ATOM 377 B1 C 125 266.8 250.7 471.9 0 0CL +ATOM 378 COM C 126 332.5 13.5 53.3 0 0CL +ATOM 379 A1 C 126 330.8 12.1 52.7 0 0CL +ATOM 380 B1 C 126 331.3 12.3 52.2 0 0CL +ATOM 381 COM C 127 151.3 273.4 463.9 0 0CL +ATOM 382 A1 C 127 149.4 273.8 462.8 0 0CL +ATOM 383 B1 C 127 149.6 273.1 462.8 0 0CL +ATOM 384 COM C 128 483.1 311.0 219.6 0 0CL +ATOM 385 A1 C 128 484.5 310.0 218.2 0 0CL +ATOM 386 B1 C 128 483.8 309.9 218.2 0 0CL +ATOM 387 COM C 129 17.9 472.6 289.8 0 0CL +ATOM 388 A1 C 129 17.5 472.1 287.7 0 0CL +ATOM 389 B1 C 129 17.0 471.8 288.2 0 0CL +ATOM 390 COM C 130 406.0 447.5 343.2 0 0CL +ATOM 391 A1 C 130 404.1 448.3 342.3 0 0CL +ATOM 392 B1 C 130 404.8 448.6 342.1 0 0CL +ATOM 393 COM C 131 463.5 225.1 481.3 0 0CL +ATOM 394 A1 C 131 461.3 225.6 481.3 0 0CL +ATOM 395 B1 C 131 461.7 226.0 480.8 0 0CL +ATOM 396 COM C 132 199.0 74.0 239.9 0 0CL +ATOM 397 A1 C 132 197.8 75.0 241.4 0 0CL +ATOM 398 B1 C 132 197.7 74.3 241.4 0 0CL +ATOM 399 COM C 133 153.0 8.2 207.3 0 0CL +ATOM 400 A1 C 133 153.8 6.4 206.2 0 0CL +ATOM 401 B1 C 133 153.4 6.9 205.8 0 0CL +ATOM 402 COM C 134 443.4 303.2 472.9 0 0CL +ATOM 403 A1 C 134 444.9 303.8 474.5 0 0CL +ATOM 404 B1 C 134 444.9 304.1 473.8 0 0CL +ATOM 405 COM C 135 165.7 357.0 45.7 0 0CL +ATOM 406 A1 C 135 167.2 357.0 44.2 0 0CL +ATOM 407 B1 C 135 167.1 356.4 44.4 0 0CL +ATOM 408 COM C 136 148.6 383.6 414.4 0 0CL +ATOM 409 A1 C 136 146.9 382.6 413.3 0 0CL +ATOM 410 B1 C 136 147.6 382.6 412.9 0 0CL +ATOM 411 COM C 137 34.2 328.2 95.6 0 0CL +ATOM 412 A1 C 137 34.9 330.0 96.8 0 0CL +ATOM 413 B1 C 137 34.2 329.8 96.7 0 0CL +ATOM 414 COM C 138 361.5 330.0 472.0 0 0CL +ATOM 415 A1 C 138 362.6 330.5 473.9 0 0CL +ATOM 416 B1 C 138 362.8 330.0 473.5 0 0CL +ATOM 417 COM C 139 350.9 410.3 185.0 0 0CL +ATOM 418 A1 C 139 352.7 409.9 186.1 0 0CL +ATOM 419 B1 C 139 352.4 409.3 185.8 0 0CL +ATOM 420 COM C 140 220.0 289.2 107.9 0 0CL +ATOM 421 A1 C 140 219.7 288.8 110.0 0 0CL +ATOM 422 B1 C 140 220.3 288.4 109.7 0 0CL +ATOM 423 COM C 141 192.7 10.1 386.7 0 0CL +ATOM 424 A1 C 141 194.0 9.7 388.5 0 0CL +ATOM 425 B1 C 141 194.3 9.6 387.8 0 0CL +ATOM 426 COM C 142 362.3 222.8 56.1 0 0CL +ATOM 427 A1 C 142 364.4 223.5 55.8 0 0CL +ATOM 428 B1 C 142 364.3 222.8 55.7 0 0CL +ATOM 429 COM C 143 322.7 109.2 450.3 0 0CL +ATOM 430 A1 C 143 322.9 108.0 452.1 0 0CL +ATOM 431 B1 C 143 323.4 108.5 452.0 0 0CL +ATOM 432 COM C 144 478.1 108.2 346.6 0 0CL +ATOM 433 A1 C 144 478.9 106.2 347.1 0 0CL +ATOM 434 B1 C 144 479.1 106.5 346.5 0 0CL +ATOM 435 COM C 145 169.8 326.7 355.7 0 0CL +ATOM 436 A1 C 145 168.5 324.9 355.8 0 0CL +ATOM 437 B1 C 145 169.2 324.8 356.1 0 0CL +ATOM 438 COM C 146 369.5 319.7 481.4 0 0CL +ATOM 439 A1 C 146 370.5 320.8 482.9 0 0CL +ATOM 440 B1 C 146 370.4 320.1 483.0 0 0CL +ATOM 441 COM C 147 173.5 297.1 304.2 0 0CL +ATOM 442 A1 C 147 174.5 296.7 306.1 0 0CL +ATOM 443 B1 C 147 174.7 296.4 305.5 0 0CL +ATOM 444 COM C 148 232.0 192.9 363.1 0 0CL +ATOM 445 A1 C 148 232.6 194.1 364.8 0 0CL +ATOM 446 B1 C 148 232.9 194.3 364.2 0 0CL +ATOM 447 COM C 149 112.4 294.2 484.5 0 0CL +ATOM 448 A1 C 149 111.6 292.5 485.8 0 0CL +ATOM 449 B1 C 149 111.9 293.1 486.2 0 0CL +ATOM 450 COM A 150 114.3 188.1 460.4 0 0CL +ATOM 451 C1 A 150 114.7 189.3 460.6 0 0CL +ATOM 452 B1 A 150 113.5 188.3 460.9 0 0CL +ATOM 453 COM A 151 356.3 288.0 142.1 0 0CL +ATOM 454 C1 A 151 355.8 289.1 142.7 0 0CL +ATOM 455 B1 A 151 356.0 287.5 142.9 0 0CL +ATOM 456 COM A 152 423.2 45.2 165.4 0 0CL +ATOM 457 C1 A 152 422.7 44.0 165.6 0 0CL +ATOM 458 B1 A 152 424.1 44.7 165.3 0 0CL +ATOM 459 COM A 153 474.8 106.8 178.7 0 0CL +ATOM 460 C1 A 153 475.5 107.9 178.7 0 0CL +ATOM 461 B1 A 153 475.2 106.6 177.8 0 0CL +ATOM 462 COM A 154 440.6 87.3 335.7 0 0CL +ATOM 463 C1 A 154 439.7 88.0 336.1 0 0CL +ATOM 464 B1 A 154 441.2 87.7 336.4 0 0CL +ATOM 465 COM A 155 175.4 297.6 307.3 0 0CL +ATOM 466 C1 A 155 174.3 297.6 306.5 0 0CL +ATOM 467 B1 A 155 175.9 297.1 306.6 0 0CL +ATOM 468 COM A 156 44.1 390.7 215.9 0 0CL +ATOM 469 C1 A 156 44.4 389.4 215.8 0 0CL +ATOM 470 B1 A 156 44.5 390.6 216.8 0 0CL +ATOM 471 COM A 157 263.6 214.4 54.3 0 0CL +ATOM 472 C1 A 157 263.4 213.3 55.0 0 0CL +ATOM 473 B1 A 157 264.6 214.2 54.4 0 0CL +ATOM 474 COM A 158 402.9 447.6 341.3 0 0CL +ATOM 475 C1 A 158 403.7 447.5 342.3 0 0CL +ATOM 476 B1 A 158 403.6 448.2 340.9 0 0CL +ATOM 477 COM A 159 155.3 5.8 205.6 0 0CL +ATOM 478 C1 A 159 154.6 6.3 206.6 0 0CL +ATOM 479 B1 A 159 154.8 6.4 205.0 0 0CL +ATOM 480 COM A 160 459.8 224.9 480.8 0 0CL +ATOM 481 C1 A 160 461.0 224.7 481.3 0 0CL +ATOM 482 B1 A 160 460.3 225.5 480.1 0 0CL +ATOM 483 COM A 161 299.7 108.3 131.2 0 0CL +ATOM 484 C1 A 161 299.3 108.0 130.0 0 0CL +ATOM 485 B1 A 161 300.5 107.7 131.0 0 0CL +ATOM 486 COM A 162 3.3 220.3 433.0 0 0CL +ATOM 487 C1 A 162 2.6 220.6 432.0 0 0CL +ATOM 488 B1 A 162 2.9 219.4 432.9 0 0CL +ATOM 489 COM A 163 376.5 437.4 144.8 0 0CL +ATOM 490 C1 A 163 376.8 436.5 143.9 0 0CL +ATOM 491 B1 A 163 376.4 436.6 145.4 0 0CL +ATOM 492 COM A 164 452.0 37.6 370.2 0 0CL +ATOM 493 C1 A 164 453.3 38.0 370.0 0 0CL +ATOM 494 B1 A 164 452.4 37.3 371.1 0 0CL +ATOM 495 COM A 165 126.6 457.5 277.2 0 0CL +ATOM 496 C1 A 165 125.6 457.3 278.1 0 0CL +ATOM 497 B1 A 165 126.2 456.6 276.8 0 0CL +ATOM 498 COM A 166 150.7 123.9 367.0 0 0CL +ATOM 499 C1 A 166 151.0 123.9 368.3 0 0CL +ATOM 500 B1 A 166 150.8 124.9 367.1 0 0CL +ATOM 501 COM A 167 145.9 381.2 413.4 0 0CL +ATOM 502 C1 A 167 146.5 382.2 414.0 0 0CL +ATOM 503 B1 A 167 146.8 381.2 412.8 0 0CL +ATOM 504 COM A 168 198.1 75.8 243.0 0 0CL +ATOM 505 C1 A 168 198.5 75.6 241.7 0 0CL +ATOM 506 B1 A 168 197.8 74.9 243.0 0 0CL +ATOM 507 COM A 169 53.1 211.9 170.1 0 0CL +ATOM 508 C1 A 169 52.0 211.9 170.8 0 0CL +ATOM 509 B1 A 169 53.4 212.7 170.7 0 0CL +ATOM 510 COM A 170 458.1 384.5 460.2 0 0CL +ATOM 511 C1 A 170 458.4 384.5 458.9 0 0CL +ATOM 512 B1 A 170 458.5 385.4 460.1 0 0CL +ATOM 513 COM A 171 147.3 301.6 232.5 0 0CL +ATOM 514 C1 A 171 146.4 300.7 231.9 0 0CL +ATOM 515 B1 A 171 148.0 300.8 232.4 0 0CL +ATOM 516 COM A 172 391.9 305.4 371.0 0 0CL +ATOM 517 C1 A 172 392.3 304.4 371.8 0 0CL +ATOM 518 B1 A 172 391.2 305.5 371.7 0 0CL +ATOM 519 COM A 173 354.4 410.3 186.0 0 0CL +ATOM 520 C1 A 173 353.1 410.7 185.9 0 0CL +ATOM 521 B1 A 173 354.1 409.4 185.6 0 0CL +ATOM 522 COM A 174 398.8 404.8 216.4 0 0CL +ATOM 523 C1 A 174 400.1 404.9 216.1 0 0CL +ATOM 524 B1 A 174 399.1 405.1 217.3 0 0CL +ATOM 525 COM A 175 14.0 417.0 258.8 0 0CL +ATOM 526 C1 A 175 14.6 416.6 259.9 0 0CL +ATOM 527 B1 A 175 14.5 417.8 258.9 0 0CL +ATOM 528 COM A 176 330.2 10.5 53.1 0 0CL +ATOM 529 C1 A 176 330.7 11.7 53.5 0 0CL +ATOM 530 B1 A 176 330.8 10.7 52.3 0 0CL +ATOM 531 COM A 177 345.4 9.4 136.5 0 0CL +ATOM 532 C1 A 177 346.6 9.1 136.6 0 0CL +ATOM 533 B1 A 177 345.6 10.2 137.0 0 0CL +ATOM 534 COM A 178 1.2 331.8 308.8 0 0CL +ATOM 535 C1 A 178 2.0 330.8 309.0 0 0CL +ATOM 536 B1 A 178 1.8 332.0 308.0 0 0CL +ATOM 537 COM A 179 411.8 429.5 281.3 0 0CL +ATOM 538 C1 A 179 412.5 428.6 281.9 0 0CL +ATOM 539 B1 A 179 412.0 430.1 282.2 0 0CL +ATOM 540 COM A 180 59.3 456.0 490.7 0 0CL +ATOM 541 C1 A 180 58.5 455.5 489.9 0 0CL +ATOM 542 B1 A 180 58.6 455.8 491.4 0 0CL +ATOM 543 COM A 181 30.7 203.9 460.0 0 0CL +ATOM 544 C1 A 181 31.8 204.0 459.4 0 0CL +ATOM 545 B1 A 181 31.1 203.1 460.4 0 0CL +ATOM 546 COM A 182 60.4 182.1 265.2 0 0CL +ATOM 547 C1 A 182 61.4 181.8 264.5 0 0CL +ATOM 548 B1 A 182 60.4 181.1 265.4 0 0CL +ATOM 549 COM A 183 231.9 195.2 366.0 0 0CL +ATOM 550 C1 A 183 231.8 194.1 365.3 0 0CL +ATOM 551 B1 A 183 232.4 195.6 365.2 0 0CL +ATOM 552 COM A 184 169.3 476.9 481.8 0 0CL +ATOM 553 C1 A 184 169.5 477.3 483.0 0 0CL +ATOM 554 B1 A 184 169.0 476.0 482.2 0 0CL +ATOM 555 COM A 185 378.8 444.2 366.0 0 0CL +ATOM 556 C1 A 185 379.9 443.9 366.7 0 0CL +ATOM 557 B1 A 185 378.3 443.8 366.8 0 0CL +ATOM 558 COM A 186 95.7 17.4 43.2 0 0CL +ATOM 559 C1 A 186 94.4 17.5 42.8 0 0CL +ATOM 560 B1 A 186 95.9 17.1 42.3 0 0CL +ATOM 561 COM A 187 111.9 366.0 36.1 0 0CL +ATOM 562 C1 A 187 110.7 366.6 36.1 0 0CL +ATOM 563 B1 A 187 111.5 365.3 36.8 0 0CL +ATOM 564 COM A 188 213.8 99.5 282.3 0 0CL +ATOM 565 C1 A 188 213.8 99.0 283.5 0 0CL +ATOM 566 B1 A 188 214.6 100.0 282.7 0 0CL +ATOM 567 COM A 189 291.9 147.7 198.2 0 0CL +ATOM 568 C1 A 189 292.0 146.8 199.1 0 0CL +ATOM 569 B1 A 189 290.9 147.3 198.1 0 0CL +ATOM 570 COM A 190 466.2 399.5 183.4 0 0CL +ATOM 571 C1 A 190 465.8 398.6 182.5 0 0CL +ATOM 572 B1 A 190 466.1 398.8 184.0 0 0CL +ATOM 573 COM A 191 257.3 256.0 75.1 0 0CL +ATOM 574 C1 A 191 256.5 256.9 75.4 0 0CL +ATOM 575 B1 A 191 256.6 255.6 74.5 0 0CL +ATOM 576 COM A 192 125.7 283.9 231.3 0 0CL +ATOM 577 C1 A 192 125.7 284.3 232.5 0 0CL +ATOM 578 B1 A 192 126.7 283.9 231.4 0 0CL +ATOM 579 COM A 193 365.3 224.4 54.7 0 0CL +ATOM 580 C1 A 193 364.2 224.3 55.4 0 0CL +ATOM 581 B1 A 193 365.3 223.4 54.6 0 0CL +ATOM 582 COM A 194 333.0 10.8 254.3 0 0CL +ATOM 583 C1 A 194 333.1 11.1 253.0 0 0CL +ATOM 584 B1 A 194 332.0 10.7 254.0 0 0CL +ATOM 585 COM A 195 232.8 28.3 146.9 0 0CL +ATOM 586 C1 A 195 231.7 27.7 146.9 0 0CL +ATOM 587 B1 A 195 232.9 27.9 145.9 0 0CL +ATOM 588 COM A 196 467.8 337.0 130.6 0 0CL +ATOM 589 C1 A 196 466.6 336.5 130.7 0 0CL +ATOM 590 B1 A 196 467.7 337.3 131.6 0 0CL +ATOM 591 COM A 197 437.9 441.3 464.0 0 0CL +ATOM 592 C1 A 197 438.8 441.5 463.0 0 0CL +ATOM 593 B1 A 197 437.3 441.9 463.4 0 0CL +ATOM 594 COM A 198 410.9 202.0 412.2 0 0CL +ATOM 595 C1 A 198 410.2 203.1 412.4 0 0CL +ATOM 596 B1 A 198 411.2 202.2 413.2 0 0CL +ATOM 597 COM A 199 32.9 295.9 47.0 0 0CL +ATOM 598 C1 A 199 31.9 295.1 47.1 0 0CL +ATOM 599 B1 A 199 32.3 296.3 46.2 0 0CL +ATOM 600 COM A 200 288.2 120.8 65.6 0 0CL +ATOM 601 C1 A 200 288.0 119.6 65.7 0 0CL +ATOM 602 B1 A 200 288.9 120.7 66.4 0 0CL +ATOM 603 COM A 201 485.6 310.4 217.0 0 0CL +ATOM 604 C1 A 201 485.1 310.6 218.2 0 0CL +ATOM 605 B1 A 201 484.6 310.1 216.7 0 0CL +ATOM 606 COM A 202 264.9 251.4 473.0 0 0CL +ATOM 607 C1 A 202 265.8 251.9 472.1 0 0CL +ATOM 608 B1 A 202 265.6 250.7 473.1 0 0CL +ATOM 609 COM A 203 220.7 439.4 168.3 0 0CL +ATOM 610 C1 A 203 221.3 438.4 167.8 0 0CL +ATOM 611 B1 A 203 220.0 438.7 168.6 0 0CL +ATOM 612 COM A 204 322.0 107.7 453.6 0 0CL +ATOM 613 C1 A 204 322.0 107.9 452.3 0 0CL +ATOM 614 B1 A 204 322.8 108.3 453.5 0 0CL +ATOM 615 COM A 205 372.7 325.7 302.0 0 0CL +ATOM 616 C1 A 205 372.8 324.5 301.8 0 0CL +ATOM 617 B1 A 205 373.7 325.7 302.2 0 0CL +ATOM 618 COM A 206 117.6 282.6 451.0 0 0CL +ATOM 619 C1 A 206 116.9 282.0 451.9 0 0CL +ATOM 620 B1 A 206 116.8 282.3 450.4 0 0CL +ATOM 621 COM A 207 16.6 49.3 202.8 0 0CL +ATOM 622 C1 A 207 17.1 50.5 202.5 0 0CL +ATOM 623 B1 A 207 16.7 49.1 201.7 0 0CL +ATOM 624 COM A 208 19.0 344.5 275.3 0 0CL +ATOM 625 C1 A 208 18.7 344.9 274.1 0 0CL +ATOM 626 B1 A 208 18.0 344.3 275.4 0 0CL +ATOM 627 COM A 209 267.1 14.0 171.0 0 0CL +ATOM 628 C1 A 209 266.2 14.8 171.6 0 0CL +ATOM 629 B1 A 209 266.6 14.2 170.1 0 0CL +ATOM 630 COM A 210 77.4 425.0 55.2 0 0CL +ATOM 631 C1 A 210 78.6 424.8 54.9 0 0CL +ATOM 632 B1 A 210 77.6 426.0 55.2 0 0CL +ATOM 633 COM A 211 120.6 101.7 428.6 0 0CL +ATOM 634 C1 A 211 119.4 101.4 428.8 0 0CL +ATOM 635 B1 A 211 120.6 102.0 429.6 0 0CL +ATOM 636 COM A 212 32.5 402.1 121.7 0 0CL +ATOM 637 C1 A 212 32.8 400.8 122.0 0 0CL +ATOM 638 B1 A 212 31.7 401.6 121.2 0 0CL +ATOM 639 COM A 213 139.0 436.8 137.8 0 0CL +ATOM 640 C1 A 213 138.8 437.9 138.5 0 0CL +ATOM 641 B1 A 213 138.3 436.4 138.4 0 0CL +ATOM 642 COM A 214 302.5 437.9 181.7 0 0CL +ATOM 643 C1 A 214 303.6 437.5 181.3 0 0CL +ATOM 644 B1 A 214 302.1 437.3 181.0 0 0CL +ATOM 645 COM A 215 405.8 357.5 234.1 0 0CL +ATOM 646 C1 A 215 407.0 357.1 234.4 0 0CL +ATOM 647 B1 A 215 406.2 358.4 233.8 0 0CL +ATOM 648 COM A 216 167.4 357.4 42.4 0 0CL +ATOM 649 C1 A 216 166.9 357.7 43.6 0 0CL +ATOM 650 B1 A 216 167.2 356.4 42.8 0 0CL +ATOM 651 COM A 217 94.4 101.0 68.1 0 0CL +ATOM 652 C1 A 217 93.4 100.3 67.8 0 0CL +ATOM 653 B1 A 217 93.8 101.8 68.1 0 0CL +ATOM 654 COM A 218 166.9 312.8 242.4 0 0CL +ATOM 655 C1 A 218 167.4 312.2 241.3 0 0CL +ATOM 656 B1 A 218 166.4 311.9 242.5 0 0CL +ATOM 657 COM A 219 355.5 398.6 434.6 0 0CL +ATOM 658 C1 A 219 356.7 399.0 435.0 0 0CL +ATOM 659 B1 A 219 355.2 399.5 435.0 0 0CL +ATOM 660 COM A 220 4.4 352.9 126.5 0 0CL +ATOM 661 C1 A 220 4.4 351.8 125.9 0 0CL +ATOM 662 B1 A 220 4.7 352.4 127.3 0 0CL +ATOM 663 COM A 221 194.5 459.9 143.3 0 0CL +ATOM 664 C1 A 221 193.3 460.1 142.8 0 0CL +ATOM 665 B1 A 221 194.8 460.4 142.4 0 0CL +ATOM 666 COM A 222 292.2 65.4 96.2 0 0CL +ATOM 667 C1 A 222 290.9 65.5 96.3 0 0CL +ATOM 668 B1 A 222 292.0 66.0 95.4 0 0CL +ATOM 669 COM A 223 139.5 236.2 274.3 0 0CL +ATOM 670 C1 A 223 139.8 236.7 275.4 0 0CL +ATOM 671 B1 A 223 139.7 235.3 274.7 0 0CL +ATOM 672 COM A 224 431.0 30.9 297.8 0 0CL +ATOM 673 C1 A 224 429.9 30.9 298.5 0 0CL +ATOM 674 B1 A 224 430.8 31.9 297.8 0 0CL +ATOM 675 COM A 225 490.9 104.7 362.3 0 0CL +ATOM 676 C1 A 225 490.0 105.0 361.5 0 0CL +ATOM 677 B1 A 225 491.0 103.9 361.7 0 0CL +ATOM 678 COM A 226 35.8 330.3 98.2 0 0CL +ATOM 679 C1 A 226 35.7 329.6 97.1 0 0CL +ATOM 680 B1 A 226 34.8 330.2 98.2 0 0CL +ATOM 681 COM A 227 475.1 113.6 430.7 0 0CL +ATOM 682 C1 A 227 473.9 113.3 430.9 0 0CL +ATOM 683 B1 A 227 475.1 113.9 431.7 0 0CL +ATOM 684 COM A 228 196.2 306.0 286.1 0 0CL +ATOM 685 C1 A 228 197.3 305.7 285.4 0 0CL +ATOM 686 B1 A 228 195.9 306.3 285.2 0 0CL +ATOM 687 COM A 229 147.7 274.3 463.2 0 0CL +ATOM 688 C1 A 229 149.0 274.5 463.4 0 0CL +ATOM 689 B1 A 229 148.0 273.3 463.1 0 0CL +ATOM 690 COM A 230 479.8 105.4 348.4 0 0CL +ATOM 691 C1 A 230 478.8 106.3 348.1 0 0CL +ATOM 692 B1 A 230 480.3 105.7 347.6 0 0CL +ATOM 693 COM A 231 134.8 26.6 267.3 0 0CL +ATOM 694 C1 A 231 134.2 25.9 268.2 0 0CL +ATOM 695 B1 A 231 133.9 27.1 267.2 0 0CL +ATOM 696 COM A 232 20.2 71.0 55.3 0 0CL +ATOM 697 C1 A 232 21.5 70.7 55.5 0 0CL +ATOM 698 B1 A 232 20.0 70.2 55.9 0 0CL +ATOM 699 COM A 233 465.8 132.2 168.5 0 0CL +ATOM 700 C1 A 233 465.6 131.0 168.2 0 0CL +ATOM 701 B1 A 233 466.1 131.8 169.4 0 0CL +ATOM 702 COM A 234 420.4 452.9 265.4 0 0CL +ATOM 703 C1 A 234 421.3 453.8 265.4 0 0CL +ATOM 704 B1 A 234 419.8 453.6 265.9 0 0CL +ATOM 705 COM A 235 147.2 365.0 99.2 0 0CL +ATOM 706 C1 A 235 148.0 366.1 99.1 0 0CL +ATOM 707 B1 A 235 147.0 365.3 98.2 0 0CL +ATOM 708 COM A 236 57.4 357.3 378.2 0 0CL +ATOM 709 C1 A 236 58.7 357.6 378.6 0 0CL +ATOM 710 B1 A 236 57.2 358.0 378.9 0 0CL +ATOM 711 COM A 237 167.0 324.4 356.5 0 0CL +ATOM 712 C1 A 237 167.7 325.3 355.9 0 0CL +ATOM 713 B1 A 237 167.9 324.2 357.0 0 0CL +ATOM 714 COM A 238 264.7 130.9 67.6 0 0CL +ATOM 715 C1 A 238 264.1 129.9 67.1 0 0CL +ATOM 716 B1 A 238 265.3 130.2 68.1 0 0CL +ATOM 717 COM A 239 285.8 232.0 426.2 0 0CL +ATOM 718 C1 A 239 285.9 231.6 425.0 0 0CL +ATOM 719 B1 A 239 284.8 232.1 426.0 0 0CL +ATOM 720 COM A 240 394.4 97.5 255.1 0 0CL +ATOM 721 C1 A 240 393.6 98.2 254.3 0 0CL +ATOM 722 B1 A 240 394.6 98.3 255.6 0 0CL +ATOM 723 COM A 241 125.9 397.0 108.3 0 0CL +ATOM 724 C1 A 241 124.8 397.7 108.6 0 0CL +ATOM 725 B1 A 241 126.4 397.9 108.6 0 0CL +ATOM 726 COM A 242 226.3 116.5 454.6 0 0CL +ATOM 727 C1 A 242 225.5 117.1 455.5 0 0CL +ATOM 728 B1 A 242 227.1 116.9 455.1 0 0CL +ATOM 729 COM A 243 219.8 289.7 111.5 0 0CL +ATOM 730 C1 A 243 219.4 289.6 110.3 0 0CL +ATOM 731 B1 A 243 220.6 289.1 111.2 0 0CL +ATOM 732 COM A 244 432.7 54.0 279.0 0 0CL +ATOM 733 C1 A 244 433.6 53.2 279.6 0 0CL +ATOM 734 B1 A 244 433.5 54.2 278.4 0 0CL +ATOM 735 COM A 245 169.9 163.4 350.9 0 0CL +ATOM 736 C1 A 245 169.0 163.1 350.0 0 0CL +ATOM 737 B1 A 245 170.0 162.4 351.1 0 0CL +ATOM 738 COM A 246 12.7 40.0 189.6 0 0CL +ATOM 739 C1 A 246 11.9 40.9 190.2 0 0CL +ATOM 740 B1 A 246 11.9 39.4 189.8 0 0CL +ATOM 741 COM A 247 433.0 1.2 492.6 0 0CL +ATOM 742 C1 A 247 433.3 1.8 493.8 0 0CL +ATOM 743 B1 A 247 432.1 1.1 493.0 0 0CL +ATOM 744 COM A 248 350.3 389.2 47.1 0 0CL +ATOM 745 C1 A 248 350.6 390.0 46.1 0 0CL +ATOM 746 B1 A 248 351.3 389.4 47.3 0 0CL +ATOM 747 COM A 249 284.0 225.6 185.8 0 0CL +ATOM 748 C1 A 249 284.4 224.8 186.7 0 0CL +ATOM 749 B1 A 249 283.7 224.8 185.3 0 0CL +ATOM 750 COM A 250 492.3 363.7 318.9 0 0CL +ATOM 751 C1 A 250 491.5 363.3 317.9 0 0CL +ATOM 752 B1 A 250 491.5 363.9 319.4 0 0CL +ATOM 753 COM A 251 238.8 185.7 444.3 0 0CL +ATOM 754 C1 A 251 239.4 186.5 445.1 0 0CL +ATOM 755 B1 A 251 238.1 185.6 445.1 0 0CL +ATOM 756 COM A 252 148.7 220.9 409.2 0 0CL +ATOM 757 C1 A 252 147.7 220.7 408.3 0 0CL +ATOM 758 B1 A 252 147.9 220.9 409.9 0 0CL +ATOM 759 COM A 253 472.1 275.4 478.7 0 0CL +ATOM 760 C1 A 253 471.3 275.3 477.6 0 0CL +ATOM 761 B1 A 253 471.2 275.5 479.2 0 0CL +ATOM 762 COM A 254 115.6 419.5 359.2 0 0CL +ATOM 763 C1 A 254 114.9 419.7 360.3 0 0CL +ATOM 764 B1 A 254 114.7 419.6 358.8 0 0CL +ATOM 765 COM A 255 495.2 13.1 29.4 0 0CL +ATOM 766 C1 A 255 494.5 13.1 30.4 0 0CL +ATOM 767 B1 A 255 494.9 14.0 29.2 0 0CL +ATOM 768 COM A 256 440.9 86.7 74.9 0 0CL +ATOM 769 C1 A 256 440.6 86.1 76.0 0 0CL +ATOM 770 B1 A 256 441.5 85.9 74.7 0 0CL +ATOM 771 COM A 257 101.3 163.6 422.8 0 0CL +ATOM 772 C1 A 257 101.8 163.3 421.6 0 0CL +ATOM 773 B1 A 257 100.9 164.4 422.2 0 0CL +ATOM 774 COM A 258 387.9 5.5 202.7 0 0CL +ATOM 775 C1 A 258 388.1 6.6 201.9 0 0CL +ATOM 776 B1 A 258 387.3 6.2 203.2 0 0CL +ATOM 777 COM A 259 7.2 36.2 420.3 0 0CL +ATOM 778 C1 A 259 6.6 35.2 421.0 0 0CL +ATOM 779 B1 A 259 7.5 35.4 419.6 0 0CL +ATOM 780 COM A 260 497.5 366.7 226.6 0 0CL +ATOM 781 C1 A 260 496.3 367.0 226.3 0 0CL +ATOM 782 B1 A 260 497.1 366.0 227.2 0 0CL +ATOM 783 COM A 261 267.2 333.7 284.5 0 0CL +ATOM 784 C1 A 261 267.8 334.9 284.9 0 0CL +ATOM 785 B1 A 261 267.9 333.3 285.2 0 0CL +ATOM 786 COM A 262 120.1 182.1 332.3 0 0CL +ATOM 787 C1 A 262 120.1 181.9 333.6 0 0CL +ATOM 788 B1 A 262 119.9 183.1 332.6 0 0CL +ATOM 789 COM A 263 400.8 103.0 197.2 0 0CL +ATOM 790 C1 A 263 400.9 102.3 196.1 0 0CL +ATOM 791 B1 A 263 401.5 102.3 197.6 0 0CL +ATOM 792 COM A 264 484.3 146.4 334.6 0 0CL +ATOM 793 C1 A 264 484.4 145.7 335.6 0 0CL +ATOM 794 B1 A 264 484.6 145.5 334.1 0 0CL +ATOM 795 COM A 265 277.5 8.0 232.2 0 0CL +ATOM 796 C1 A 265 278.1 7.6 233.3 0 0CL +ATOM 797 B1 A 265 276.6 8.0 232.8 0 0CL +ATOM 798 COM A 266 442.8 169.3 266.3 0 0CL +ATOM 799 C1 A 266 441.7 170.1 266.1 0 0CL +ATOM 800 B1 A 266 442.6 169.5 267.3 0 0CL +ATOM 801 COM A 267 205.8 336.2 116.3 0 0CL +ATOM 802 C1 A 267 205.1 335.3 117.0 0 0CL +ATOM 803 B1 A 267 205.6 336.8 117.1 0 0CL +ATOM 804 COM A 268 199.2 379.3 112.4 0 0CL +ATOM 805 C1 A 268 199.5 378.4 113.3 0 0CL +ATOM 806 B1 A 268 199.6 379.9 113.1 0 0CL +ATOM 807 COM A 269 270.5 348.6 12.9 0 0CL +ATOM 808 C1 A 269 271.5 348.3 12.2 0 0CL +ATOM 809 B1 A 269 271.1 349.4 13.2 0 0CL +ATOM 810 COM A 270 73.5 392.6 386.2 0 0CL +ATOM 811 C1 A 270 72.6 392.6 387.1 0 0CL +ATOM 812 B1 A 270 74.2 392.7 387.1 0 0CL +ATOM 813 COM A 271 323.7 38.8 443.4 0 0CL +ATOM 814 C1 A 271 323.2 38.3 444.5 0 0CL +ATOM 815 B1 A 271 324.6 38.5 443.7 0 0CL +ATOM 816 COM A 272 424.9 209.2 17.6 0 0CL +ATOM 817 C1 A 272 426.2 209.1 18.0 0 0CL +ATOM 818 B1 A 272 425.3 209.6 16.7 0 0CL +ATOM 819 COM A 273 17.0 472.9 286.2 0 0CL +ATOM 820 C1 A 273 17.7 472.9 287.3 0 0CL +ATOM 821 B1 A 273 16.3 472.5 286.8 0 0CL +ATOM 822 COM A 274 251.4 219.8 130.8 0 0CL +ATOM 823 C1 A 274 250.9 218.7 131.3 0 0CL +ATOM 824 B1 A 274 250.5 220.1 130.7 0 0CL +ATOM 825 COM A 275 115.4 474.3 20.6 0 0CL +ATOM 826 C1 A 275 115.1 474.4 21.9 0 0CL +ATOM 827 B1 A 275 114.4 474.2 20.5 0 0CL +ATOM 828 COM A 276 352.8 104.1 442.3 0 0CL +ATOM 829 C1 A 276 353.3 103.3 441.4 0 0CL +ATOM 830 B1 A 276 352.9 103.2 442.9 0 0CL +ATOM 831 COM A 277 372.1 321.6 483.1 0 0CL +ATOM 832 C1 A 277 371.1 321.3 482.3 0 0CL +ATOM 833 B1 A 277 371.9 320.6 483.5 0 0CL +ATOM 834 COM A 278 3.5 53.5 272.2 0 0CL +ATOM 835 C1 A 278 4.6 53.7 272.8 0 0CL +ATOM 836 B1 A 278 4.1 52.7 271.7 0 0CL +ATOM 837 COM A 279 493.0 172.3 315.4 0 0CL +ATOM 838 C1 A 279 494.0 172.8 316.1 0 0CL +ATOM 839 B1 A 279 492.7 173.3 315.4 0 0CL +ATOM 840 COM A 280 254.6 268.5 358.2 0 0CL +ATOM 841 C1 A 280 254.6 267.3 358.7 0 0CL +ATOM 842 B1 A 280 254.6 268.0 357.3 0 0CL +ATOM 843 COM A 281 333.6 67.0 15.2 0 0CL +ATOM 844 C1 A 281 332.6 67.4 15.9 0 0CL +ATOM 845 B1 A 281 333.0 66.1 15.0 0 0CL +ATOM 846 COM A 282 14.1 464.3 59.8 0 0CL +ATOM 847 C1 A 282 13.5 465.4 59.7 0 0CL +ATOM 848 B1 A 282 13.4 464.0 60.4 0 0CL +ATOM 849 COM A 283 70.3 467.9 231.7 0 0CL +ATOM 850 C1 A 283 70.4 468.9 232.5 0 0CL +ATOM 851 B1 A 283 71.1 467.5 232.2 0 0CL +ATOM 852 COM A 284 444.9 304.5 476.0 0 0CL +ATOM 853 C1 A 284 444.4 303.7 475.2 0 0CL +ATOM 854 B1 A 284 445.1 305.1 475.2 0 0CL +ATOM 855 COM A 285 272.9 465.7 30.4 0 0CL +ATOM 856 C1 A 285 272.5 464.6 30.9 0 0CL +ATOM 857 B1 A 285 272.9 466.0 31.4 0 0CL +ATOM 858 COM A 286 117.7 278.3 154.2 0 0CL +ATOM 859 C1 A 286 118.5 277.3 154.3 0 0CL +ATOM 860 B1 A 286 117.2 277.7 153.5 0 0CL +ATOM 861 COM A 287 186.9 421.5 264.4 0 0CL +ATOM 862 C1 A 287 186.7 422.6 263.8 0 0CL +ATOM 863 B1 A 287 187.7 421.9 264.8 0 0CL +ATOM 864 COM A 288 94.1 75.9 420.0 0 0CL +ATOM 865 C1 A 288 94.1 76.4 421.2 0 0CL +ATOM 866 B1 A 288 93.6 76.8 419.8 0 0CL +ATOM 867 COM A 289 288.3 490.7 403.0 0 0CL +ATOM 868 C1 A 289 287.2 491.2 402.5 0 0CL +ATOM 869 B1 A 289 287.9 490.9 403.9 0 0CL +ATOM 870 COM A 290 65.9 268.3 61.0 0 0CL +ATOM 871 C1 A 290 66.4 267.1 61.1 0 0CL +ATOM 872 B1 A 290 65.2 267.9 60.3 0 0CL +ATOM 873 COM A 291 15.0 476.7 179.2 0 0CL +ATOM 874 C1 A 291 15.8 476.0 178.5 0 0CL +ATOM 875 B1 A 291 14.4 476.7 178.4 0 0CL +ATOM 876 COM A 292 277.9 314.1 198.0 0 0CL +ATOM 877 C1 A 292 277.8 312.9 197.5 0 0CL +ATOM 878 B1 A 292 278.7 314.2 197.4 0 0CL +ATOM 879 COM A 293 192.9 235.3 278.9 0 0CL +ATOM 880 C1 A 293 193.0 235.0 280.1 0 0CL +ATOM 881 B1 A 293 191.9 235.0 279.0 0 0CL +ATOM 882 COM A 294 311.7 189.8 452.9 0 0CL +ATOM 883 C1 A 294 312.4 188.9 452.4 0 0CL +ATOM 884 B1 A 294 310.9 189.1 452.9 0 0CL +ATOM 885 COM A 295 356.6 77.2 441.0 0 0CL +ATOM 886 C1 A 295 355.5 76.6 441.4 0 0CL +ATOM 887 B1 A 295 356.7 77.5 442.0 0 0CL +ATOM 888 COM A 296 453.3 394.9 13.1 0 0CL +ATOM 889 C1 A 296 453.5 395.9 12.3 0 0CL +ATOM 890 B1 A 296 454.2 394.7 12.9 0 0CL +ATOM 891 COM A 297 405.0 349.8 425.8 0 0CL +ATOM 892 C1 A 297 406.3 349.7 426.1 0 0CL +ATOM 893 B1 A 297 404.9 349.2 426.6 0 0CL +ATOM 894 COM A 298 115.8 444.6 344.5 0 0CL +ATOM 895 C1 A 298 116.1 443.5 345.1 0 0CL +ATOM 896 B1 A 298 115.6 444.9 345.4 0 0CL +ATOM 897 COM A 299 407.3 59.6 6.7 0 0CL +ATOM 898 C1 A 299 406.0 59.4 6.7 0 0CL +ATOM 899 B1 A 299 407.1 60.4 7.2 0 0CL +ATOM 900 COM B 300 149.1 339.2 181.3 0 0CL +ATOM 901 C1 B 300 149.7 338.0 181.8 0 0CL +ATOM 902 A1 B 300 149.5 339.2 181.7 0 0CL +ATOM 903 COM B 301 237.3 184.9 445.7 0 0CL +ATOM 904 C1 B 301 238.3 185.6 446.5 0 0CL +ATOM 905 A1 B 301 237.7 185.2 445.5 0 0CL +ATOM 906 COM B 302 13.5 477.2 177.7 0 0CL +ATOM 907 C1 B 302 14.7 476.7 177.1 0 0CL +ATOM 908 A1 B 302 14.0 477.0 178.0 0 0CL +ATOM 909 COM B 303 442.6 85.4 74.2 0 0CL +ATOM 910 C1 B 303 442.3 85.2 75.6 0 0CL +ATOM 911 A1 B 303 442.1 85.7 74.5 0 0CL +ATOM 912 COM B 304 146.1 365.3 97.3 0 0CL +ATOM 913 C1 B 304 146.9 366.5 97.6 0 0CL +ATOM 914 A1 B 304 146.5 365.4 97.8 0 0CL +ATOM 915 COM B 305 116.6 277.6 152.4 0 0CL +ATOM 916 C1 B 305 117.8 276.9 152.6 0 0CL +ATOM 917 A1 B 305 117.0 277.7 152.9 0 0CL +ATOM 918 COM B 306 284.6 228.2 67.1 0 0CL +ATOM 919 C1 B 306 284.5 229.5 66.4 0 0CL +ATOM 920 A1 B 306 284.6 228.3 66.5 0 0CL +ATOM 921 COM B 307 228.2 117.5 455.1 0 0CL +ATOM 922 C1 B 307 227.1 118.2 455.6 0 0CL +ATOM 923 A1 B 307 227.6 117.3 455.0 0 0CL +ATOM 924 COM B 308 430.9 33.0 297.2 0 0CL +ATOM 925 C1 B 308 429.6 32.6 297.7 0 0CL +ATOM 926 A1 B 308 430.8 32.4 297.4 0 0CL +ATOM 927 COM B 309 288.0 491.3 405.1 0 0CL +ATOM 928 C1 B 309 287.1 492.0 404.3 0 0CL +ATOM 929 A1 B 309 288.0 491.2 404.5 0 0CL +ATOM 930 COM B 310 407.3 61.6 7.5 0 0CL +ATOM 931 C1 B 310 406.0 61.3 7.1 0 0CL +ATOM 932 A1 B 310 407.2 61.1 7.3 0 0CL +ATOM 933 COM B 311 382.5 22.1 84.3 0 0CL +ATOM 934 C1 B 311 383.5 21.8 83.3 0 0CL +ATOM 935 A1 B 311 382.8 21.6 84.2 0 0CL +ATOM 936 COM B 312 455.1 393.8 12.6 0 0CL +ATOM 937 C1 B 312 454.8 394.7 11.6 0 0CL +ATOM 938 A1 B 312 454.6 394.2 12.6 0 0CL +ATOM 939 COM B 313 452.4 36.5 372.0 0 0CL +ATOM 940 C1 B 313 453.6 36.6 371.3 0 0CL +ATOM 941 A1 B 313 452.4 36.8 371.5 0 0CL +ATOM 942 COM B 314 170.2 161.5 351.9 0 0CL +ATOM 943 C1 B 314 169.0 161.5 351.1 0 0CL +ATOM 944 A1 B 314 170.0 162.0 351.6 0 0CL +ATOM 945 COM B 315 479.2 205.6 122.3 0 0CL +ATOM 946 C1 B 315 477.8 205.7 122.0 0 0CL +ATOM 947 A1 B 315 479.0 205.6 121.8 0 0CL +ATOM 948 COM B 316 354.3 400.1 435.6 0 0CL +ATOM 949 C1 B 316 355.6 400.1 436.2 0 0CL +ATOM 950 A1 B 316 354.8 399.7 435.4 0 0CL +ATOM 951 COM B 317 292.3 66.4 94.2 0 0CL +ATOM 952 C1 B 317 290.9 66.0 94.5 0 0CL +ATOM 953 A1 B 317 292.1 66.1 94.7 0 0CL +ATOM 954 COM B 318 113.4 473.8 19.9 0 0CL +ATOM 955 C1 B 318 113.4 473.7 21.3 0 0CL +ATOM 956 A1 B 318 113.9 473.9 20.2 0 0CL +ATOM 957 COM B 319 147.4 221.4 410.9 0 0CL +ATOM 958 C1 B 319 146.7 221.5 409.7 0 0CL +ATOM 959 A1 B 319 147.7 221.3 410.3 0 0CL +ATOM 960 COM B 320 205.3 338.0 117.5 0 0CL +ATOM 961 C1 B 320 204.4 336.9 117.8 0 0CL +ATOM 962 A1 B 320 205.3 337.4 117.2 0 0CL +ATOM 963 COM B 321 475.4 114.6 432.7 0 0CL +ATOM 964 C1 B 321 474.0 114.5 432.4 0 0CL +ATOM 965 A1 B 321 475.2 114.4 432.2 0 0CL +ATOM 966 COM B 322 491.8 174.1 315.4 0 0CL +ATOM 967 C1 B 322 492.8 174.2 316.5 0 0CL +ATOM 968 A1 B 322 492.2 173.7 315.5 0 0CL +ATOM 969 COM B 323 196.3 10.0 388.3 0 0CL +ATOM 970 C1 B 323 195.0 9.5 387.9 0 0CL +ATOM 971 A1 B 323 195.8 10.1 388.7 0 0CL +ATOM 972 COM B 324 195.6 460.6 141.5 0 0CL +ATOM 973 C1 B 324 194.2 460.3 141.1 0 0CL +ATOM 974 A1 B 324 195.2 460.4 141.9 0 0CL +ATOM 975 COM B 325 150.5 126.1 366.8 0 0CL +ATOM 976 C1 B 325 150.5 125.7 368.2 0 0CL +ATOM 977 A1 B 325 150.6 125.5 367.0 0 0CL +ATOM 978 COM B 326 431.0 0.5 493.2 0 0CL +ATOM 979 C1 B 326 431.7 0.9 494.3 0 0CL +ATOM 980 A1 B 326 431.6 0.7 493.1 0 0CL +ATOM 981 COM B 327 133.0 27.7 266.5 0 0CL +ATOM 982 C1 B 327 132.6 26.6 267.3 0 0CL +ATOM 983 A1 B 327 133.4 27.3 266.8 0 0CL +ATOM 984 COM B 328 377.4 443.1 367.2 0 0CL +ATOM 985 C1 B 328 378.7 442.7 367.5 0 0CL +ATOM 986 A1 B 328 377.9 443.3 366.9 0 0CL +ATOM 987 COM B 329 190.8 234.5 278.5 0 0CL +ATOM 988 C1 B 329 191.4 234.0 279.8 0 0CL +ATOM 989 A1 B 329 191.4 234.7 278.7 0 0CL +ATOM 990 COM B 330 497.1 365.4 228.3 0 0CL +ATOM 991 C1 B 330 496.0 366.2 228.0 0 0CL +ATOM 992 A1 B 330 497.1 365.8 227.9 0 0CL +ATOM 993 COM B 331 296.9 209.6 284.1 0 0CL +ATOM 994 C1 B 331 297.4 210.6 283.2 0 0CL +ATOM 995 A1 B 331 297.0 210.2 284.3 0 0CL +ATOM 996 COM B 332 470.6 276.1 480.1 0 0CL +ATOM 997 C1 B 332 470.1 276.3 478.8 0 0CL +ATOM 998 A1 B 332 470.9 275.9 479.6 0 0CL +ATOM 999 COM B 333 467.9 338.1 132.5 0 0CL +ATOM 1000 C1 B 333 466.5 337.7 132.2 0 0CL +ATOM 1001 A1 B 333 467.7 337.8 132.0 0 0CL +ATOM 1002 COM B 334 31.0 201.9 460.9 0 0CL +ATOM 1003 C1 B 334 31.9 202.1 459.8 0 0CL +ATOM 1004 A1 B 334 31.0 202.4 460.6 0 0CL +ATOM 1005 COM B 335 466.1 131.9 170.7 0 0CL +ATOM 1006 C1 B 335 465.5 130.7 170.1 0 0CL +ATOM 1007 A1 B 335 465.9 131.9 170.1 0 0CL +ATOM 1008 COM B 336 165.4 311.3 242.9 0 0CL +ATOM 1009 C1 B 336 165.8 311.2 241.5 0 0CL +ATOM 1010 A1 B 336 165.8 311.6 242.6 0 0CL +ATOM 1011 COM B 337 4.8 352.1 128.5 0 0CL +ATOM 1012 C1 B 337 4.4 351.0 127.7 0 0CL +ATOM 1013 A1 B 337 4.6 352.2 128.0 0 0CL +ATOM 1014 COM B 338 126.3 455.5 276.2 0 0CL +ATOM 1015 C1 B 338 125.6 455.5 277.5 0 0CL +ATOM 1016 A1 B 338 126.3 456.0 276.6 0 0CL +ATOM 1017 COM B 339 92.7 77.5 419.2 0 0CL +ATOM 1018 C1 B 339 92.7 77.5 420.6 0 0CL +ATOM 1019 A1 B 339 93.0 77.1 419.5 0 0CL +ATOM 1020 COM B 340 301.3 106.8 131.4 0 0CL +ATOM 1021 C1 B 340 300.5 106.4 130.3 0 0CL +ATOM 1022 A1 B 340 300.8 107.2 131.2 0 0CL +ATOM 1023 COM B 341 374.6 326.1 302.9 0 0CL +ATOM 1024 C1 B 341 374.3 324.7 302.9 0 0CL +ATOM 1025 A1 B 341 374.1 325.9 302.6 0 0CL +ATOM 1026 COM B 342 459.1 386.3 460.7 0 0CL +ATOM 1027 C1 B 342 459.6 385.9 459.4 0 0CL +ATOM 1028 A1 B 342 458.9 385.8 460.4 0 0CL +ATOM 1029 COM B 343 168.9 474.8 482.2 0 0CL +ATOM 1030 C1 B 343 169.6 475.4 483.3 0 0CL +ATOM 1031 A1 B 343 169.1 475.3 482.2 0 0CL +ATOM 1032 COM B 344 452.3 123.4 67.7 0 0CL +ATOM 1033 C1 B 344 452.4 124.7 67.1 0 0CL +ATOM 1034 A1 B 344 451.8 123.8 67.6 0 0CL +ATOM 1035 COM B 345 54.0 213.7 170.8 0 0CL +ATOM 1036 C1 B 345 52.6 213.7 171.2 0 0CL +ATOM 1037 A1 B 345 53.6 213.3 170.7 0 0CL +ATOM 1038 COM B 346 371.9 319.8 484.4 0 0CL +ATOM 1039 C1 B 346 370.7 320.0 483.7 0 0CL +ATOM 1040 A1 B 346 371.8 320.3 484.0 0 0CL +ATOM 1041 COM B 347 356.1 286.7 143.8 0 0CL +ATOM 1042 C1 B 347 356.0 288.0 144.3 0 0CL +ATOM 1043 A1 B 347 356.1 287.1 143.4 0 0CL +ATOM 1044 COM B 348 218.8 438.3 168.9 0 0CL +ATOM 1045 C1 B 348 219.7 437.5 168.0 0 0CL +ATOM 1046 A1 B 348 219.4 438.5 168.6 0 0CL +ATOM 1047 COM B 349 4.3 52.1 270.7 0 0CL +ATOM 1048 C1 B 349 5.4 52.8 271.3 0 0CL +ATOM 1049 A1 B 349 4.2 52.5 271.1 0 0CL +ATOM 1050 COM B 350 2.4 332.9 307.3 0 0CL +ATOM 1051 C1 B 350 3.2 331.9 308.0 0 0CL +ATOM 1052 A1 B 350 2.2 332.5 307.7 0 0CL +ATOM 1053 COM B 351 283.5 224.2 184.2 0 0CL +ATOM 1054 C1 B 351 284.3 223.6 185.2 0 0CL +ATOM 1055 A1 B 351 283.7 224.5 184.7 0 0CL +ATOM 1056 COM B 352 56.4 358.4 379.8 0 0CL +ATOM 1057 C1 B 352 57.8 358.3 380.2 0 0CL +ATOM 1058 A1 B 352 56.8 358.1 379.5 0 0CL +ATOM 1059 COM B 353 283.7 232.8 426.1 0 0CL +ATOM 1060 C1 B 353 284.2 232.6 424.8 0 0CL +ATOM 1061 A1 B 353 284.3 232.5 426.0 0 0CL +ATOM 1062 COM B 354 443.0 169.7 268.5 0 0CL +ATOM 1063 C1 B 354 442.1 170.7 267.9 0 0CL +ATOM 1064 A1 B 354 442.8 169.7 267.9 0 0CL +ATOM 1065 COM B 355 275.4 7.8 233.0 0 0CL +ATOM 1066 C1 B 355 276.3 7.1 233.8 0 0CL +ATOM 1067 A1 B 355 276.0 7.8 232.9 0 0CL +ATOM 1068 COM B 356 491.3 102.7 361.6 0 0CL +ATOM 1069 C1 B 356 490.1 103.1 361.1 0 0CL +ATOM 1070 A1 B 356 491.1 103.2 361.8 0 0CL +ATOM 1071 COM B 357 357.0 78.4 442.8 0 0CL +ATOM 1072 C1 B 357 355.7 77.9 442.8 0 0CL +ATOM 1073 A1 B 357 356.7 78.1 442.3 0 0CL +ATOM 1074 COM B 358 465.7 398.4 185.2 0 0CL +ATOM 1075 C1 B 358 465.1 397.8 184.1 0 0CL +ATOM 1076 A1 B 358 465.8 398.6 184.6 0 0CL +ATOM 1077 COM B 359 265.8 214.6 54.5 0 0CL +ATOM 1078 C1 B 359 265.3 213.7 55.5 0 0CL +ATOM 1079 A1 B 359 265.2 214.4 54.5 0 0CL +ATOM 1080 COM B 360 57.9 456.0 492.4 0 0CL +ATOM 1081 C1 B 360 57.2 455.9 491.2 0 0CL +ATOM 1082 A1 B 360 58.2 456.0 491.9 0 0CL +ATOM 1083 COM B 361 233.6 27.5 145.0 0 0CL +ATOM 1084 C1 B 361 232.5 26.7 145.5 0 0CL +ATOM 1085 A1 B 361 233.3 27.6 145.5 0 0CL +ATOM 1086 COM B 362 74.2 280.7 146.5 0 0CL +ATOM 1087 C1 B 362 73.0 280.2 145.8 0 0CL +ATOM 1088 A1 B 362 73.9 280.2 146.7 0 0CL +ATOM 1089 COM B 363 100.5 165.5 422.1 0 0CL +ATOM 1090 C1 B 363 101.4 165.1 421.1 0 0CL +ATOM 1091 A1 B 363 100.8 165.0 422.2 0 0CL +ATOM 1092 COM B 364 301.3 437.1 180.0 0 0CL +ATOM 1093 C1 B 364 302.7 437.1 179.7 0 0CL +ATOM 1094 A1 B 364 301.7 437.3 180.4 0 0CL +ATOM 1095 COM B 365 282.6 289.5 109.5 0 0CL +ATOM 1096 C1 B 365 284.0 289.7 109.5 0 0CL +ATOM 1097 A1 B 365 282.9 289.5 110.0 0 0CL +ATOM 1098 COM B 366 279.9 314.6 197.2 0 0CL +ATOM 1099 C1 B 366 279.6 313.2 197.0 0 0CL +ATOM 1100 A1 B 366 279.4 314.3 197.4 0 0CL +ATOM 1101 COM B 367 137.8 435.4 139.0 0 0CL +ATOM 1102 C1 B 367 138.0 436.7 139.7 0 0CL +ATOM 1103 A1 B 367 138.1 435.9 138.8 0 0CL +ATOM 1104 COM B 368 272.7 466.9 32.2 0 0CL +ATOM 1105 C1 B 368 271.9 465.7 32.4 0 0CL +ATOM 1106 A1 B 368 272.6 466.5 31.8 0 0CL +ATOM 1107 COM B 369 2.4 218.4 433.5 0 0CL +ATOM 1108 C1 B 369 1.6 219.1 432.6 0 0CL +ATOM 1109 A1 B 369 2.6 218.9 433.3 0 0CL +ATOM 1110 COM B 370 375.8 436.0 146.3 0 0CL +ATOM 1111 C1 B 370 375.8 435.3 145.1 0 0CL +ATOM 1112 A1 B 370 375.9 436.3 145.8 0 0CL +ATOM 1113 COM B 371 425.3 210.4 15.8 0 0CL +ATOM 1114 C1 B 371 426.5 210.4 16.6 0 0CL +ATOM 1115 A1 B 371 425.3 210.1 16.3 0 0CL +ATOM 1116 COM B 372 266.1 13.7 169.1 0 0CL +ATOM 1117 C1 B 372 265.2 14.2 170.0 0 0CL +ATOM 1118 A1 B 372 266.3 13.8 169.6 0 0CL +ATOM 1119 COM B 373 72.1 466.8 232.3 0 0CL +ATOM 1120 C1 B 373 72.2 468.1 232.8 0 0CL +ATOM 1121 A1 B 373 71.7 467.2 232.2 0 0CL +ATOM 1122 COM B 374 390.0 305.9 372.0 0 0CL +ATOM 1123 C1 B 374 390.4 304.6 372.4 0 0CL +ATOM 1124 A1 B 374 390.5 305.6 371.8 0 0CL +ATOM 1125 COM B 375 154.2 6.6 203.9 0 0CL +ATOM 1126 C1 B 375 153.4 6.7 205.1 0 0CL +ATOM 1127 A1 B 375 154.4 6.4 204.5 0 0CL +ATOM 1128 COM B 376 110.7 293.0 487.9 0 0CL +ATOM 1129 C1 B 376 111.7 293.0 486.8 0 0CL +ATOM 1130 A1 B 376 110.7 292.7 487.3 0 0CL +ATOM 1131 COM B 377 124.8 196.4 369.2 0 0CL +ATOM 1132 C1 B 377 126.0 195.7 369.1 0 0CL +ATOM 1133 A1 B 377 125.1 196.3 368.7 0 0CL +ATOM 1134 COM B 378 331.1 10.5 51.1 0 0CL +ATOM 1135 C1 B 378 331.2 11.8 51.7 0 0CL +ATOM 1136 A1 B 378 330.9 10.7 51.7 0 0CL +ATOM 1137 COM B 379 59.8 180.0 265.6 0 0CL +ATOM 1138 C1 B 379 60.7 180.0 264.5 0 0CL +ATOM 1139 A1 B 379 60.0 180.6 265.4 0 0CL +ATOM 1140 COM B 380 459.2 388.1 359.6 0 0CL +ATOM 1141 C1 B 380 460.4 387.6 359.1 0 0CL +ATOM 1142 A1 B 380 459.2 387.6 359.3 0 0CL +ATOM 1143 COM B 381 87.9 246.2 121.9 0 0CL +ATOM 1144 C1 B 381 87.6 246.2 120.4 0 0CL +ATOM 1145 A1 B 381 87.3 246.0 121.6 0 0CL +ATOM 1146 COM B 382 57.4 99.4 241.1 0 0CL +ATOM 1147 C1 B 382 56.3 99.7 242.0 0 0CL +ATOM 1148 A1 B 382 57.3 99.9 241.3 0 0CL +ATOM 1149 COM B 383 156.3 318.4 276.9 0 0CL +ATOM 1150 C1 B 383 155.2 318.3 276.0 0 0CL +ATOM 1151 A1 B 383 156.2 318.0 276.5 0 0CL +ATOM 1152 COM B 384 15.4 471.6 286.9 0 0CL +ATOM 1153 C1 B 384 16.5 471.5 287.8 0 0CL +ATOM 1154 A1 B 384 15.9 471.9 286.8 0 0CL +ATOM 1155 COM B 385 309.7 188.9 452.7 0 0CL +ATOM 1156 C1 B 385 310.7 188.2 451.8 0 0CL +ATOM 1157 A1 B 385 310.3 189.0 452.6 0 0CL +ATOM 1158 COM B 386 31.0 401.6 120.2 0 0CL +ATOM 1159 C1 B 386 31.8 400.5 120.4 0 0CL +ATOM 1160 A1 B 386 31.4 401.6 120.6 0 0CL +ATOM 1161 COM B 387 364.8 330.2 474.2 0 0CL +ATOM 1162 C1 B 387 363.4 329.8 473.9 0 0CL +ATOM 1163 A1 B 387 364.3 330.6 474.2 0 0CL +ATOM 1164 COM B 388 93.6 103.0 67.9 0 0CL +ATOM 1165 C1 B 388 92.8 102.1 67.2 0 0CL +ATOM 1166 A1 B 388 93.7 102.4 67.9 0 0CL +ATOM 1167 COM B 389 233.2 196.3 364.6 0 0CL +ATOM 1168 C1 B 389 233.3 194.9 364.3 0 0CL +ATOM 1169 A1 B 389 232.9 195.9 364.9 0 0CL +ATOM 1170 COM B 390 13.0 463.4 61.5 0 0CL +ATOM 1171 C1 B 390 12.7 464.8 61.3 0 0CL +ATOM 1172 A1 B 390 13.2 463.8 61.0 0 0CL +ATOM 1173 COM B 391 120.8 102.8 430.5 0 0CL +ATOM 1174 C1 B 391 119.5 102.7 430.2 0 0CL +ATOM 1175 A1 B 391 120.7 102.5 430.0 0 0CL +ATOM 1176 COM B 392 44.6 390.9 218.0 0 0CL +ATOM 1177 C1 B 392 44.5 389.5 217.7 0 0CL +ATOM 1178 A1 B 392 44.5 390.7 217.5 0 0CL +ATOM 1179 COM B 393 195.2 307.1 284.5 0 0CL +ATOM 1180 C1 B 393 196.6 307.0 284.2 0 0CL +ATOM 1181 A1 B 393 195.6 306.8 284.9 0 0CL +ATOM 1182 COM B 394 289.9 147.1 197.5 0 0CL +ATOM 1183 C1 B 394 290.5 146.0 198.2 0 0CL +ATOM 1184 A1 B 394 290.4 147.1 197.7 0 0CL +ATOM 1185 COM B 395 221.4 288.2 111.4 0 0CL +ATOM 1186 C1 B 395 220.6 288.1 110.2 0 0CL +ATOM 1187 A1 B 395 220.9 288.6 111.3 0 0CL +ATOM 1188 COM B 396 352.4 102.5 443.8 0 0CL +ATOM 1189 C1 B 396 352.6 101.9 442.5 0 0CL +ATOM 1190 A1 B 396 352.5 102.8 443.3 0 0CL +ATOM 1191 COM B 397 168.7 323.4 357.5 0 0CL +ATOM 1192 C1 B 397 169.2 324.2 356.5 0 0CL +ATOM 1193 A1 B 397 168.3 323.7 357.2 0 0CL +ATOM 1194 COM B 398 404.1 449.1 340.2 0 0CL +ATOM 1195 C1 B 398 404.6 449.0 341.5 0 0CL +ATOM 1196 A1 B 398 403.8 448.8 340.6 0 0CL +ATOM 1197 COM B 399 140.1 234.1 274.7 0 0CL +ATOM 1198 C1 B 399 140.6 235.0 275.7 0 0CL +ATOM 1199 A1 B 399 140.0 234.7 274.7 0 0CL +ATOM 1200 COM B 400 199.6 381.0 113.7 0 0CL +ATOM 1201 C1 B 400 199.5 379.9 114.5 0 0CL +ATOM 1202 A1 B 400 199.5 380.5 113.4 0 0CL +ATOM 1203 COM B 401 365.9 222.3 54.5 0 0CL +ATOM 1204 C1 B 401 364.9 222.5 55.5 0 0CL +ATOM 1205 A1 B 401 365.6 222.9 54.7 0 0CL +ATOM 1206 COM B 402 333.0 64.9 14.9 0 0CL +ATOM 1207 C1 B 402 332.2 65.5 15.9 0 0CL +ATOM 1208 A1 B 402 333.1 65.4 15.1 0 0CL +ATOM 1209 COM B 403 111.6 364.5 37.7 0 0CL +ATOM 1210 C1 B 403 110.5 365.5 37.8 0 0CL +ATOM 1211 A1 B 403 111.5 365.0 37.3 0 0CL +ATOM 1212 COM B 404 64.5 267.9 59.3 0 0CL +ATOM 1213 C1 B 404 65.5 266.9 59.4 0 0CL +ATOM 1214 A1 B 404 65.0 267.9 59.7 0 0CL +ATOM 1215 COM B 405 406.3 359.6 233.8 0 0CL +ATOM 1216 C1 B 405 407.3 359.0 234.5 0 0CL +ATOM 1217 A1 B 405 406.2 359.0 233.9 0 0CL +ATOM 1218 COM B 406 249.6 220.7 130.1 0 0CL +ATOM 1219 C1 B 406 249.3 219.4 130.5 0 0CL +ATOM 1220 A1 B 406 250.0 220.4 130.3 0 0CL +ATOM 1221 COM B 407 147.8 272.2 462.6 0 0CL +ATOM 1222 C1 B 407 149.1 272.7 462.5 0 0CL +ATOM 1223 A1 B 407 147.9 272.8 462.7 0 0CL +ATOM 1224 COM B 408 265.9 249.5 473.4 0 0CL +ATOM 1225 C1 B 408 266.5 250.1 472.2 0 0CL +ATOM 1226 A1 B 408 265.7 250.1 473.2 0 0CL +ATOM 1227 COM B 409 16.9 344.3 276.1 0 0CL +ATOM 1228 C1 B 409 16.9 345.0 274.9 0 0CL +ATOM 1229 A1 B 409 17.4 344.4 275.8 0 0CL +ATOM 1230 COM B 410 14.6 419.1 258.8 0 0CL +ATOM 1231 C1 B 410 14.9 418.5 260.0 0 0CL +ATOM 1232 A1 B 410 14.5 418.5 258.9 0 0CL +ATOM 1233 COM B 411 330.8 10.9 254.3 0 0CL +ATOM 1234 C1 B 411 331.3 11.6 253.1 0 0CL +ATOM 1235 A1 B 411 331.4 10.9 254.2 0 0CL +ATOM 1236 COM B 412 167.6 355.2 42.8 0 0CL +ATOM 1237 C1 B 412 167.5 355.9 44.1 0 0CL +ATOM 1238 A1 B 412 167.5 355.8 42.8 0 0CL +ATOM 1239 COM B 413 442.3 88.2 336.8 0 0CL +ATOM 1240 C1 B 413 441.2 89.1 336.8 0 0CL +ATOM 1241 A1 B 413 441.8 88.1 336.5 0 0CL +ATOM 1242 COM B 414 8.3 35.0 418.8 0 0CL +ATOM 1243 C1 B 414 7.9 34.1 419.9 0 0CL +ATOM 1244 A1 B 414 8.0 35.2 419.3 0 0CL +ATOM 1245 COM B 415 77.5 427.1 55.7 0 0CL +ATOM 1246 C1 B 415 78.8 426.6 55.7 0 0CL +ATOM 1247 A1 B 415 77.6 426.6 55.6 0 0CL +ATOM 1248 COM B 416 147.3 381.0 411.7 0 0CL +ATOM 1249 C1 B 416 147.5 382.3 412.3 0 0CL +ATOM 1250 A1 B 416 147.0 381.2 412.2 0 0CL +ATOM 1251 COM B 417 325.8 38.6 443.9 0 0CL +ATOM 1252 C1 B 417 325.1 38.4 445.0 0 0CL +ATOM 1253 A1 B 417 325.2 38.6 443.9 0 0CL +ATOM 1254 COM B 418 96.6 16.5 41.5 0 0CL +ATOM 1255 C1 B 418 95.2 16.3 41.4 0 0CL +ATOM 1256 A1 B 418 96.2 16.7 41.9 0 0CL +ATOM 1257 COM B 419 176.7 296.2 306.2 0 0CL +ATOM 1258 C1 B 419 175.3 296.1 305.7 0 0CL +ATOM 1259 A1 B 419 176.2 296.5 306.4 0 0CL +ATOM 1260 COM B 420 404.3 348.2 427.2 0 0CL +ATOM 1261 C1 B 420 405.7 348.1 427.0 0 0CL +ATOM 1262 A1 B 420 404.6 348.6 426.8 0 0CL +ATOM 1263 COM B 421 483.8 309.4 216.1 0 0CL +ATOM 1264 C1 B 421 483.7 309.4 217.6 0 0CL +ATOM 1265 A1 B 421 484.3 309.6 216.5 0 0CL +ATOM 1266 COM B 422 271.5 350.2 14.1 0 0CL +ATOM 1267 C1 B 422 272.5 349.4 13.5 0 0CL +ATOM 1268 A1 B 422 271.3 349.7 13.8 0 0CL +ATOM 1269 COM B 423 411.5 430.9 283.0 0 0CL +ATOM 1270 C1 B 423 412.0 429.6 283.5 0 0CL +ATOM 1271 A1 B 423 411.7 430.4 282.6 0 0CL +ATOM 1272 COM B 424 485.2 145.0 333.2 0 0CL +ATOM 1273 C1 B 424 485.6 144.6 334.5 0 0CL +ATOM 1274 A1 B 424 485.0 145.3 333.7 0 0CL +ATOM 1275 COM B 425 475.1 106.2 176.6 0 0CL +ATOM 1276 C1 B 425 475.5 107.6 176.8 0 0CL +ATOM 1277 A1 B 425 475.0 106.5 177.2 0 0CL +ATOM 1278 COM B 426 119.3 184.1 332.4 0 0CL +ATOM 1279 C1 B 426 119.1 183.5 333.6 0 0CL +ATOM 1280 A1 B 426 119.5 183.6 332.5 0 0CL +ATOM 1281 COM B 427 166.3 448.0 480.9 0 0CL +ATOM 1282 C1 B 427 165.3 448.2 481.9 0 0CL +ATOM 1283 A1 B 427 166.5 448.1 481.5 0 0CL +ATOM 1284 COM B 428 434.1 55.0 277.6 0 0CL +ATOM 1285 C1 B 428 434.9 54.3 278.7 0 0CL +ATOM 1286 A1 B 428 433.9 54.7 278.1 0 0CL +ATOM 1287 COM B 429 412.1 202.1 414.0 0 0CL +ATOM 1288 C1 B 429 411.4 203.4 413.8 0 0CL +ATOM 1289 A1 B 429 411.7 202.2 413.6 0 0CL +ATOM 1290 COM B 430 268.7 332.4 285.4 0 0CL +ATOM 1291 C1 B 430 269.2 333.7 285.4 0 0CL +ATOM 1292 A1 B 430 268.4 332.9 285.2 0 0CL +ATOM 1293 COM B 431 256.0 254.7 73.9 0 0CL +ATOM 1294 C1 B 431 255.2 255.6 74.7 0 0CL +ATOM 1295 A1 B 431 256.3 255.1 74.3 0 0CL +ATOM 1296 COM B 432 215.3 101.1 282.8 0 0CL +ATOM 1297 C1 B 432 214.7 100.5 284.0 0 0CL +ATOM 1298 A1 B 432 214.9 100.6 282.8 0 0CL +ATOM 1299 COM B 433 436.4 442.7 463.3 0 0CL +ATOM 1300 C1 B 433 437.6 442.9 462.6 0 0CL +ATOM 1301 A1 B 433 436.9 442.4 463.4 0 0CL +ATOM 1302 COM B 434 345.4 11.1 137.8 0 0CL +ATOM 1303 C1 B 434 346.6 10.3 138.0 0 0CL +ATOM 1304 A1 B 434 345.5 10.6 137.5 0 0CL +ATOM 1305 COM B 435 237.4 263.9 32.2 0 0CL +ATOM 1306 C1 B 435 238.1 264.6 31.2 0 0CL +ATOM 1307 A1 B 435 237.9 264.2 32.3 0 0CL +ATOM 1308 COM B 436 75.2 393.1 387.6 0 0CL +ATOM 1309 C1 B 436 73.9 393.4 388.2 0 0CL +ATOM 1310 A1 B 436 74.6 393.0 387.3 0 0CL +ATOM 1311 COM B 437 132.5 353.0 24.3 0 0CL +ATOM 1312 C1 B 437 132.3 353.3 25.7 0 0CL +ATOM 1313 A1 B 437 132.3 353.5 24.5 0 0CL +ATOM 1314 COM B 438 265.8 129.9 69.2 0 0CL +ATOM 1315 C1 B 438 264.8 129.1 68.7 0 0CL +ATOM 1316 A1 B 438 265.5 130.1 68.8 0 0CL +ATOM 1317 COM B 439 418.9 453.9 266.7 0 0CL +ATOM 1318 C1 B 439 420.2 454.6 266.8 0 0CL +ATOM 1319 A1 B 439 419.4 453.7 266.4 0 0CL +ATOM 1320 COM B 440 148.9 300.2 232.9 0 0CL +ATOM 1321 C1 B 440 147.7 299.5 232.7 0 0CL +ATOM 1322 A1 B 440 148.4 300.5 232.8 0 0CL +ATOM 1323 COM B 441 2.0 33.2 466.5 0 0CL +ATOM 1324 C1 B 441 1.9 31.8 466.0 0 0CL +ATOM 1325 A1 B 441 1.6 33.0 466.0 0 0CL +ATOM 1326 COM B 442 196.9 74.0 243.3 0 0CL +ATOM 1327 C1 B 442 197.2 74.2 241.9 0 0CL +ATOM 1328 A1 B 442 197.2 74.5 243.1 0 0CL +ATOM 1329 COM B 443 7.0 228.1 182.2 0 0CL +ATOM 1330 C1 B 443 7.9 228.5 183.3 0 0CL +ATOM 1331 A1 B 443 7.2 228.6 182.3 0 0CL +ATOM 1332 COM B 444 188.9 421.9 265.2 0 0CL +ATOM 1333 C1 B 444 188.6 422.9 264.2 0 0CL +ATOM 1334 A1 B 444 188.4 421.9 264.9 0 0CL +ATOM 1335 COM B 445 491.0 364.7 320.2 0 0CL +ATOM 1336 C1 B 445 490.3 364.5 318.9 0 0CL +ATOM 1337 A1 B 445 491.2 364.4 319.7 0 0CL +ATOM 1338 COM B 446 127.4 398.7 108.5 0 0CL +ATOM 1339 C1 B 446 126.1 399.2 108.4 0 0CL +ATOM 1340 A1 B 446 126.9 398.3 108.4 0 0CL +ATOM 1341 COM B 447 494.6 14.9 28.4 0 0CL +ATOM 1342 C1 B 447 493.7 14.6 29.5 0 0CL +ATOM 1343 A1 B 447 494.7 14.4 28.8 0 0CL +ATOM 1344 COM B 448 32.2 296.9 45.1 0 0CL +ATOM 1345 C1 B 448 31.5 295.6 45.3 0 0CL +ATOM 1346 A1 B 448 32.3 296.5 45.6 0 0CL +ATOM 1347 COM B 449 255.0 267.9 356.1 0 0CL +ATOM 1348 C1 B 449 255.3 266.8 357.0 0 0CL +ATOM 1349 A1 B 449 254.9 267.9 356.7 0 0CL diff --git a/het3mer/PDB/999999.pdb b/het3mer/PDB/999999.pdb new file mode 100644 index 00000000..30a6d420 --- /dev/null +++ b/het3mer/PDB/999999.pdb @@ -0,0 +1,1352 @@ +TITLE PDB TIMESTEP 999999 CREATED Thu May 29 13:12:53 2025 +CRYST1 500 500 500 90 90 90 P1 +ATOM 0 COM C 0 403.3 387.3 233.9 0 0CL +ATOM 1 A1 C 0 402.2 386.0 235.2 0 0CL +ATOM 2 B1 C 0 402.8 385.7 234.9 0 0CL +ATOM 3 COM C 1 158.3 351.2 350.0 0 0CL +ATOM 4 A1 C 1 159.8 352.4 351.0 0 0CL +ATOM 5 B1 C 1 159.3 352.8 350.6 0 0CL +ATOM 6 COM C 2 399.5 332.6 81.3 0 0CL +ATOM 7 A1 C 2 397.8 332.7 82.7 0 0CL +ATOM 8 B1 C 2 398.2 333.2 82.7 0 0CL +ATOM 9 COM C 3 383.8 332.9 476.8 0 0CL +ATOM 10 A1 C 3 384.1 332.6 474.7 0 0CL +ATOM 11 B1 C 3 383.6 332.2 475.0 0 0CL +ATOM 12 COM C 4 137.7 15.1 478.7 0 0CL +ATOM 13 A1 C 4 138.6 17.1 478.9 0 0CL +ATOM 14 B1 C 4 138.9 16.6 479.3 0 0CL +ATOM 15 COM C 5 33.4 451.4 263.5 0 0CL +ATOM 16 A1 C 5 35.3 451.4 262.4 0 0CL +ATOM 17 B1 C 5 34.9 450.9 262.3 0 0CL +ATOM 18 COM C 6 252.5 382.9 263.4 0 0CL +ATOM 19 A1 C 6 252.2 381.4 265.0 0 0CL +ATOM 20 B1 C 6 252.7 381.2 264.5 0 0CL +ATOM 21 COM C 7 198.2 423.9 247.0 0 0CL +ATOM 22 A1 C 7 199.7 422.7 245.9 0 0CL +ATOM 23 B1 C 7 199.0 422.6 245.7 0 0CL +ATOM 24 COM C 8 370.5 435.8 458.2 0 0CL +ATOM 25 A1 C 8 372.2 435.9 459.6 0 0CL +ATOM 26 B1 C 8 371.8 436.5 459.5 0 0CL +ATOM 27 COM C 9 101.9 266.3 355.2 0 0CL +ATOM 28 A1 C 9 101.7 266.1 353.0 0 0CL +ATOM 29 B1 C 9 102.0 265.6 353.3 0 0CL +ATOM 30 COM C 10 209.2 20.2 412.1 0 0CL +ATOM 31 A1 C 10 207.6 21.5 411.2 0 0CL +ATOM 32 B1 C 10 208.2 21.3 410.8 0 0CL +ATOM 33 COM C 11 177.0 16.5 430.8 0 0CL +ATOM 34 A1 C 11 178.3 16.0 432.5 0 0CL +ATOM 35 B1 C 11 178.2 16.7 432.3 0 0CL +ATOM 36 COM C 12 5.2 314.0 246.7 0 0CL +ATOM 37 A1 C 12 5.9 312.8 245.0 0 0CL +ATOM 38 B1 C 12 6.4 313.2 245.4 0 0CL +ATOM 39 COM C 13 148.1 420.7 397.4 0 0CL +ATOM 40 A1 C 13 146.6 422.3 397.7 0 0CL +ATOM 41 B1 C 13 147.2 422.3 398.1 0 0CL +ATOM 42 COM C 14 350.2 371.4 286.7 0 0CL +ATOM 43 A1 C 14 350.1 372.6 288.6 0 0CL +ATOM 44 B1 C 14 350.8 372.4 288.3 0 0CL +ATOM 45 COM C 15 240.9 74.4 322.1 0 0CL +ATOM 46 A1 C 15 240.9 76.4 321.2 0 0CL +ATOM 47 B1 C 15 241.3 75.9 320.8 0 0CL +ATOM 48 COM C 16 5.1 477.5 299.1 0 0CL +ATOM 49 A1 C 16 6.0 478.7 297.4 0 0CL +ATOM 50 B1 C 16 5.3 478.4 297.3 0 0CL +ATOM 51 COM C 17 486.9 332.8 213.9 0 0CL +ATOM 52 A1 C 17 487.5 330.8 214.5 0 0CL +ATOM 53 B1 C 17 487.1 331.2 214.9 0 0CL +ATOM 54 COM C 18 487.9 67.4 196.2 0 0CL +ATOM 55 A1 C 18 487.0 69.3 195.6 0 0CL +ATOM 56 B1 C 18 487.3 69.0 195.1 0 0CL +ATOM 57 COM C 19 246.1 188.5 315.3 0 0CL +ATOM 58 A1 C 19 247.9 187.2 315.8 0 0CL +ATOM 59 B1 C 19 248.0 187.9 315.6 0 0CL +ATOM 60 COM C 20 282.1 346.6 420.0 0 0CL +ATOM 61 A1 C 20 280.4 345.4 419.3 0 0CL +ATOM 62 B1 C 20 280.5 346.1 419.0 0 0CL +ATOM 63 COM C 21 248.6 7.1 375.2 0 0CL +ATOM 64 A1 C 21 247.0 8.4 374.6 0 0CL +ATOM 65 B1 C 21 246.8 7.7 374.5 0 0CL +ATOM 66 COM C 22 22.2 406.5 489.8 0 0CL +ATOM 67 A1 C 22 24.0 407.0 491.0 0 0CL +ATOM 68 B1 C 22 23.9 406.3 490.9 0 0CL +ATOM 69 COM C 23 318.0 457.9 393.6 0 0CL +ATOM 70 A1 C 23 318.6 455.8 393.9 0 0CL +ATOM 71 B1 C 23 318.8 456.2 393.3 0 0CL +ATOM 72 COM C 24 366.8 364.1 451.1 0 0CL +ATOM 73 A1 C 24 366.8 361.9 451.0 0 0CL +ATOM 74 B1 C 24 366.2 362.3 451.3 0 0CL +ATOM 75 COM C 25 242.8 174.3 43.2 0 0CL +ATOM 76 A1 C 25 242.9 176.4 42.6 0 0CL +ATOM 77 B1 C 25 243.0 175.9 42.1 0 0CL +ATOM 78 COM C 26 400.0 378.1 20.1 0 0CL +ATOM 79 A1 C 26 400.8 378.5 22.1 0 0CL +ATOM 80 B1 C 26 400.8 377.8 21.9 0 0CL +ATOM 81 COM C 27 156.2 484.1 117.6 0 0CL +ATOM 82 A1 C 27 156.2 484.9 119.6 0 0CL +ATOM 83 B1 C 27 155.7 485.1 119.2 0 0CL +ATOM 84 COM C 28 492.1 360.6 449.0 0 0CL +ATOM 85 A1 C 28 490.2 359.9 449.8 0 0CL +ATOM 86 B1 C 28 490.2 360.2 449.1 0 0CL +ATOM 87 COM C 29 131.6 133.1 244.2 0 0CL +ATOM 88 A1 C 29 130.5 134.7 245.2 0 0CL +ATOM 89 B1 C 29 131.2 134.6 245.4 0 0CL +ATOM 90 COM C 30 419.0 134.1 431.9 0 0CL +ATOM 91 A1 C 30 420.1 135.0 430.2 0 0CL +ATOM 92 B1 C 30 419.4 134.7 430.1 0 0CL +ATOM 93 COM C 31 74.3 327.0 121.8 0 0CL +ATOM 94 A1 C 31 75.6 326.9 120.0 0 0CL +ATOM 95 B1 C 31 75.9 327.1 120.6 0 0CL +ATOM 96 COM C 32 479.0 287.2 441.4 0 0CL +ATOM 97 A1 C 32 478.6 285.8 443.0 0 0CL +ATOM 98 B1 C 32 478.1 286.3 442.9 0 0CL +ATOM 99 COM C 33 226.1 339.0 174.8 0 0CL +ATOM 100 A1 C 33 228.3 339.4 175.1 0 0CL +ATOM 101 B1 C 33 228.1 338.7 175.2 0 0CL +ATOM 102 COM C 34 220.0 254.4 82.4 0 0CL +ATOM 103 A1 C 34 221.9 253.3 82.7 0 0CL +ATOM 104 B1 C 34 221.5 253.2 82.1 0 0CL +ATOM 105 COM C 35 98.5 147.8 247.5 0 0CL +ATOM 106 A1 C 35 99.0 148.7 249.5 0 0CL +ATOM 107 B1 C 35 99.1 148.0 249.4 0 0CL +ATOM 108 COM C 36 469.8 371.9 155.1 0 0CL +ATOM 109 A1 C 36 468.2 372.9 153.9 0 0CL +ATOM 110 B1 C 36 468.5 373.2 154.4 0 0CL +ATOM 111 COM C 37 189.3 473.2 216.3 0 0CL +ATOM 112 A1 C 37 189.7 474.8 217.8 0 0CL +ATOM 113 B1 C 37 189.1 474.9 217.3 0 0CL +ATOM 114 COM C 38 115.4 21.9 288.8 0 0CL +ATOM 115 A1 C 38 117.0 21.5 287.4 0 0CL +ATOM 116 B1 C 38 117.1 22.0 287.9 0 0CL +ATOM 117 COM C 39 428.9 265.0 10.8 0 0CL +ATOM 118 A1 C 39 428.0 263.0 10.9 0 0CL +ATOM 119 B1 C 39 428.6 263.1 10.5 0 0CL +ATOM 120 COM C 40 277.7 485.2 326.7 0 0CL +ATOM 121 A1 C 40 277.5 483.1 326.0 0 0CL +ATOM 122 B1 C 40 278.1 483.3 326.2 0 0CL +ATOM 123 COM C 41 415.5 450.4 255.4 0 0CL +ATOM 124 A1 C 41 414.2 448.8 256.2 0 0CL +ATOM 125 B1 C 41 414.0 449.0 255.6 0 0CL +ATOM 126 COM C 42 193.6 13.1 387.3 0 0CL +ATOM 127 A1 C 42 194.1 11.6 385.8 0 0CL +ATOM 128 B1 C 42 194.6 12.1 385.9 0 0CL +ATOM 129 COM C 43 145.8 384.5 191.2 0 0CL +ATOM 130 A1 C 43 144.0 384.0 190.0 0 0CL +ATOM 131 B1 C 43 144.4 384.5 189.8 0 0CL +ATOM 132 COM C 44 5.6 395.0 348.7 0 0CL +ATOM 133 A1 C 44 5.4 397.0 349.5 0 0CL +ATOM 134 B1 C 44 5.1 396.4 349.9 0 0CL +ATOM 135 COM C 45 440.2 474.4 459.8 0 0CL +ATOM 136 A1 C 45 440.8 473.9 461.8 0 0CL +ATOM 137 B1 C 45 441.2 473.6 461.3 0 0CL +ATOM 138 COM C 46 253.3 158.4 138.2 0 0CL +ATOM 139 A1 C 46 252.8 156.6 139.4 0 0CL +ATOM 140 B1 C 46 252.3 157.1 139.4 0 0CL +ATOM 141 COM C 47 351.4 102.2 168.0 0 0CL +ATOM 142 A1 C 47 350.3 103.6 169.3 0 0CL +ATOM 143 B1 C 47 350.5 103.9 168.7 0 0CL +ATOM 144 COM C 48 9.7 45.7 69.9 0 0CL +ATOM 145 A1 C 48 7.6 46.5 70.0 0 0CL +ATOM 146 B1 C 48 7.7 45.8 70.2 0 0CL +ATOM 147 COM C 49 72.0 403.6 332.6 0 0CL +ATOM 148 A1 C 49 73.6 402.9 331.2 0 0CL +ATOM 149 B1 C 49 73.7 402.8 331.9 0 0CL +ATOM 150 COM C 50 226.8 259.7 156.3 0 0CL +ATOM 151 A1 C 50 225.2 261.3 156.1 0 0CL +ATOM 152 B1 C 50 225.0 260.6 155.9 0 0CL +ATOM 153 COM C 51 188.6 409.9 5.6 0 0CL +ATOM 154 A1 C 51 188.4 408.4 7.3 0 0CL +ATOM 155 B1 C 51 187.8 408.5 6.9 0 0CL +ATOM 156 COM C 52 261.6 277.5 301.2 0 0CL +ATOM 157 A1 C 52 262.5 278.8 302.8 0 0CL +ATOM 158 B1 C 52 261.8 278.8 302.6 0 0CL +ATOM 159 COM C 53 42.0 296.5 306.7 0 0CL +ATOM 160 A1 C 53 41.7 298.6 307.3 0 0CL +ATOM 161 B1 C 53 41.7 298.1 307.8 0 0CL +ATOM 162 COM C 54 19.4 450.2 494.9 0 0CL +ATOM 163 A1 C 54 20.7 451.5 493.6 0 0CL +ATOM 164 B1 C 54 20.8 450.8 493.6 0 0CL +ATOM 165 COM C 55 242.8 84.3 315.0 0 0CL +ATOM 166 A1 C 55 243.3 82.9 316.7 0 0CL +ATOM 167 B1 C 55 243.3 82.6 316.0 0 0CL +ATOM 168 COM C 56 122.1 29.4 462.4 0 0CL +ATOM 169 A1 C 56 123.0 31.3 461.8 0 0CL +ATOM 170 B1 C 56 123.1 30.7 461.4 0 0CL +ATOM 171 COM C 57 263.6 480.8 446.3 0 0CL +ATOM 172 A1 C 57 265.0 481.2 444.7 0 0CL +ATOM 173 B1 C 57 265.2 481.5 445.3 0 0CL +ATOM 174 COM C 58 326.4 419.9 183.4 0 0CL +ATOM 175 A1 C 58 325.9 421.5 182.0 0 0CL +ATOM 176 B1 C 58 325.7 420.8 181.9 0 0CL +ATOM 177 COM C 59 228.0 398.0 7.6 0 0CL +ATOM 178 A1 C 59 227.4 399.9 6.6 0 0CL +ATOM 179 B1 C 59 228.1 399.8 6.7 0 0CL +ATOM 180 COM C 60 419.9 172.4 29.6 0 0CL +ATOM 181 A1 C 60 418.5 172.7 31.2 0 0CL +ATOM 182 B1 C 60 418.4 172.1 30.9 0 0CL +ATOM 183 COM C 61 373.1 40.4 303.1 0 0CL +ATOM 184 A1 C 61 374.6 41.9 302.5 0 0CL +ATOM 185 B1 C 61 374.2 41.6 302.0 0 0CL +ATOM 186 COM C 62 397.2 216.9 160.3 0 0CL +ATOM 187 A1 C 62 398.8 215.4 160.3 0 0CL +ATOM 188 B1 C 62 398.1 215.2 160.5 0 0CL +ATOM 189 COM C 63 53.8 320.0 418.2 0 0CL +ATOM 190 A1 C 63 53.3 320.3 420.3 0 0CL +ATOM 191 B1 C 63 53.1 319.7 420.0 0 0CL +ATOM 192 COM C 64 334.4 391.1 22.6 0 0CL +ATOM 193 A1 C 64 335.3 389.4 23.7 0 0CL +ATOM 194 B1 C 64 335.3 389.4 23.0 0 0CL +ATOM 195 COM C 65 40.2 99.5 388.7 0 0CL +ATOM 196 A1 C 65 38.2 99.6 387.7 0 0CL +ATOM 197 B1 C 65 38.8 99.8 387.3 0 0CL +ATOM 198 COM C 66 365.5 189.1 6.2 0 0CL +ATOM 199 A1 C 66 366.1 189.7 4.1 0 0CL +ATOM 200 B1 C 66 365.4 189.9 4.3 0 0CL +ATOM 201 COM C 67 128.5 415.1 99.0 0 0CL +ATOM 202 A1 C 67 128.0 417.2 99.5 0 0CL +ATOM 203 B1 C 67 128.2 417.0 98.8 0 0CL +ATOM 204 COM C 68 401.2 324.8 157.0 0 0CL +ATOM 205 A1 C 68 402.3 326.6 156.4 0 0CL +ATOM 206 B1 C 68 402.3 326.0 155.9 0 0CL +ATOM 207 COM C 69 155.0 37.7 434.9 0 0CL +ATOM 208 A1 C 69 155.2 35.6 435.6 0 0CL +ATOM 209 B1 C 69 155.8 35.9 435.3 0 0CL +ATOM 210 COM C 70 80.6 257.7 337.9 0 0CL +ATOM 211 A1 C 70 82.4 258.9 337.5 0 0CL +ATOM 212 B1 C 70 82.4 258.6 338.1 0 0CL +ATOM 213 COM C 71 347.0 183.2 105.5 0 0CL +ATOM 214 A1 C 71 347.4 181.1 105.6 0 0CL +ATOM 215 B1 C 71 348.0 181.5 105.3 0 0CL +ATOM 216 COM C 72 54.6 341.9 110.1 0 0CL +ATOM 217 A1 C 72 54.2 343.5 111.6 0 0CL +ATOM 218 B1 C 72 54.8 343.6 111.2 0 0CL +ATOM 219 COM C 73 403.9 101.5 434.1 0 0CL +ATOM 220 A1 C 73 403.6 103.7 434.4 0 0CL +ATOM 221 B1 C 73 403.4 103.4 433.8 0 0CL +ATOM 222 COM C 74 462.6 25.1 278.0 0 0CL +ATOM 223 A1 C 74 464.4 24.8 279.3 0 0CL +ATOM 224 B1 C 74 464.1 25.5 279.3 0 0CL +ATOM 225 COM C 75 315.0 199.1 126.2 0 0CL +ATOM 226 A1 C 75 313.3 199.9 127.2 0 0CL +ATOM 227 B1 C 75 313.4 199.2 127.3 0 0CL +ATOM 228 COM C 76 179.7 117.4 481.5 0 0CL +ATOM 229 A1 C 76 180.7 116.7 483.3 0 0CL +ATOM 230 B1 C 76 181.1 116.9 482.7 0 0CL +ATOM 231 COM C 77 105.2 464.0 390.3 0 0CL +ATOM 232 A1 C 77 105.8 466.1 390.8 0 0CL +ATOM 233 B1 C 77 106.1 465.8 390.2 0 0CL +ATOM 234 COM C 78 490.2 231.4 292.9 0 0CL +ATOM 235 A1 C 78 490.6 229.3 292.2 0 0CL +ATOM 236 B1 C 78 490.0 229.6 292.0 0 0CL +ATOM 237 COM C 79 469.1 392.4 244.5 0 0CL +ATOM 238 A1 C 79 467.0 392.5 243.9 0 0CL +ATOM 239 B1 C 79 467.2 392.8 244.6 0 0CL +ATOM 240 COM C 80 345.4 262.2 274.3 0 0CL +ATOM 241 A1 C 80 343.2 262.2 273.9 0 0CL +ATOM 242 B1 C 80 343.5 262.0 274.5 0 0CL +ATOM 243 COM C 81 187.2 134.2 59.6 0 0CL +ATOM 244 A1 C 81 187.8 135.9 58.3 0 0CL +ATOM 245 B1 C 81 187.4 135.4 58.0 0 0CL +ATOM 246 COM C 82 280.2 369.2 364.7 0 0CL +ATOM 247 A1 C 82 281.8 370.1 363.5 0 0CL +ATOM 248 B1 C 82 281.6 370.4 364.1 0 0CL +ATOM 249 COM C 83 275.1 182.2 195.1 0 0CL +ATOM 250 A1 C 83 273.7 180.6 195.2 0 0CL +ATOM 251 B1 C 83 273.4 181.3 195.0 0 0CL +ATOM 252 COM C 84 486.5 39.5 231.3 0 0CL +ATOM 253 A1 C 84 484.7 40.7 231.8 0 0CL +ATOM 254 B1 C 84 484.9 40.6 231.1 0 0CL +ATOM 255 COM C 85 149.6 33.5 483.7 0 0CL +ATOM 256 A1 C 85 149.9 32.1 485.3 0 0CL +ATOM 257 B1 C 85 150.4 32.1 484.8 0 0CL +ATOM 258 COM C 86 443.6 153.5 464.3 0 0CL +ATOM 259 A1 C 86 443.4 154.8 466.1 0 0CL +ATOM 260 B1 C 86 442.8 154.8 465.6 0 0CL +ATOM 261 COM C 87 55.1 368.5 459.4 0 0CL +ATOM 262 A1 C 87 55.9 367.9 461.4 0 0CL +ATOM 263 B1 C 87 56.1 368.5 461.1 0 0CL +ATOM 264 COM C 88 271.6 245.8 337.6 0 0CL +ATOM 265 A1 C 88 273.2 245.0 336.4 0 0CL +ATOM 266 B1 C 88 272.8 244.5 336.7 0 0CL +ATOM 267 COM C 89 349.6 438.3 9.8 0 0CL +ATOM 268 A1 C 89 350.7 436.5 9.2 0 0CL +ATOM 269 B1 C 89 350.7 437.0 8.7 0 0CL +ATOM 270 COM C 90 278.6 38.4 21.6 0 0CL +ATOM 271 A1 C 90 276.5 37.6 21.4 0 0CL +ATOM 272 B1 C 90 276.6 38.3 21.2 0 0CL +ATOM 273 COM C 91 462.1 480.9 316.3 0 0CL +ATOM 274 A1 C 91 459.9 480.4 316.5 0 0CL +ATOM 275 B1 C 91 460.1 481.0 316.1 0 0CL +ATOM 276 COM C 92 403.8 89.1 22.3 0 0CL +ATOM 277 A1 C 92 402.6 88.5 20.6 0 0CL +ATOM 278 B1 C 92 402.4 88.2 21.3 0 0CL +ATOM 279 COM C 93 450.4 93.9 233.0 0 0CL +ATOM 280 A1 C 93 449.6 95.7 231.9 0 0CL +ATOM 281 B1 C 93 450.0 95.2 231.5 0 0CL +ATOM 282 COM C 94 96.6 59.3 182.9 0 0CL +ATOM 283 A1 C 94 94.8 59.7 181.7 0 0CL +ATOM 284 B1 C 94 95.5 59.5 181.4 0 0CL +ATOM 285 COM C 95 150.0 64.0 110.7 0 0CL +ATOM 286 A1 C 95 148.5 64.3 109.1 0 0CL +ATOM 287 B1 C 95 149.2 64.6 109.0 0 0CL +ATOM 288 COM C 96 249.6 25.2 14.2 0 0CL +ATOM 289 A1 C 96 249.7 23.3 13.0 0 0CL +ATOM 290 B1 C 96 249.5 23.9 12.7 0 0CL +ATOM 291 COM C 97 151.3 380.6 486.1 0 0CL +ATOM 292 A1 C 97 150.5 379.4 484.4 0 0CL +ATOM 293 B1 C 97 150.5 380.1 484.3 0 0CL +ATOM 294 COM C 98 12.3 34.7 261.4 0 0CL +ATOM 295 A1 C 98 14.5 34.1 261.3 0 0CL +ATOM 296 B1 C 98 14.0 33.6 261.5 0 0CL +ATOM 297 COM C 99 353.4 215.0 23.8 0 0CL +ATOM 298 A1 C 99 354.4 215.9 22.1 0 0CL +ATOM 299 B1 C 99 354.8 215.8 22.7 0 0CL +ATOM 300 COM C 100 166.6 413.6 475.8 0 0CL +ATOM 301 A1 C 100 168.7 413.4 475.3 0 0CL +ATOM 302 B1 C 100 168.3 413.6 474.8 0 0CL +ATOM 303 COM C 101 499.8 362.5 45.5 0 0CL +ATOM 304 A1 C 101 498.8 364.5 45.7 0 0CL +ATOM 305 B1 C 101 498.7 364.1 45.1 0 0CL +ATOM 306 COM C 102 172.5 429.2 378.3 0 0CL +ATOM 307 A1 C 102 170.8 429.1 379.7 0 0CL +ATOM 308 B1 C 102 170.9 429.8 379.4 0 0CL +ATOM 309 COM C 103 384.0 432.3 386.8 0 0CL +ATOM 310 A1 C 103 383.5 431.0 388.6 0 0CL +ATOM 311 B1 C 103 384.1 430.8 388.2 0 0CL +ATOM 312 COM C 104 432.6 54.1 468.2 0 0CL +ATOM 313 A1 C 104 430.8 52.9 468.5 0 0CL +ATOM 314 B1 C 104 430.7 53.4 468.0 0 0CL +ATOM 315 COM C 105 405.9 369.9 265.6 0 0CL +ATOM 316 A1 C 105 404.9 369.2 267.4 0 0CL +ATOM 317 B1 C 105 404.6 369.0 266.7 0 0CL +ATOM 318 COM C 106 14.3 67.0 246.8 0 0CL +ATOM 319 A1 C 106 15.3 65.6 245.4 0 0CL +ATOM 320 B1 C 106 15.7 66.2 245.6 0 0CL +ATOM 321 COM C 107 130.8 37.9 175.5 0 0CL +ATOM 322 A1 C 107 129.1 36.7 174.8 0 0CL +ATOM 323 B1 C 107 129.0 37.4 174.9 0 0CL +ATOM 324 COM C 108 226.8 259.2 421.3 0 0CL +ATOM 325 A1 C 108 226.0 258.7 419.4 0 0CL +ATOM 326 B1 C 108 226.7 258.5 419.5 0 0CL +ATOM 327 COM C 109 400.0 139.7 198.9 0 0CL +ATOM 328 A1 C 109 401.1 139.2 197.1 0 0CL +ATOM 329 B1 C 109 401.1 138.6 197.6 0 0CL +ATOM 330 COM C 110 466.1 109.5 129.6 0 0CL +ATOM 331 A1 C 110 466.0 110.2 131.7 0 0CL +ATOM 332 B1 C 110 466.3 110.6 131.3 0 0CL +ATOM 333 COM C 111 129.3 124.1 360.5 0 0CL +ATOM 334 A1 C 111 128.9 122.6 358.9 0 0CL +ATOM 335 B1 C 111 129.5 122.6 359.2 0 0CL +ATOM 336 COM C 112 328.6 24.3 124.8 0 0CL +ATOM 337 A1 C 112 330.7 24.5 124.3 0 0CL +ATOM 338 B1 C 112 330.2 24.9 123.9 0 0CL +ATOM 339 COM C 113 209.9 459.7 449.6 0 0CL +ATOM 340 A1 C 113 207.7 459.8 449.7 0 0CL +ATOM 341 B1 C 113 208.1 459.5 450.3 0 0CL +ATOM 342 COM C 114 231.2 123.4 363.6 0 0CL +ATOM 343 A1 C 114 232.9 122.2 364.1 0 0CL +ATOM 344 B1 C 114 232.7 122.6 364.6 0 0CL +ATOM 345 COM C 115 57.6 362.5 127.0 0 0CL +ATOM 346 A1 C 115 57.8 364.1 128.5 0 0CL +ATOM 347 B1 C 115 58.4 363.9 128.1 0 0CL +ATOM 348 COM C 116 166.5 278.0 92.4 0 0CL +ATOM 349 A1 C 116 165.4 276.9 90.8 0 0CL +ATOM 350 B1 C 116 165.9 276.5 91.3 0 0CL +ATOM 351 COM C 117 136.4 86.6 106.3 0 0CL +ATOM 352 A1 C 117 137.3 87.6 108.1 0 0CL +ATOM 353 B1 C 117 137.1 88.0 107.5 0 0CL +ATOM 354 COM C 118 177.2 24.3 346.7 0 0CL +ATOM 355 A1 C 118 176.9 24.1 344.5 0 0CL +ATOM 356 B1 C 118 176.6 24.7 344.8 0 0CL +ATOM 357 COM C 119 351.7 205.2 366.2 0 0CL +ATOM 358 A1 C 119 353.4 204.1 367.1 0 0CL +ATOM 359 B1 C 119 353.5 204.4 366.4 0 0CL +ATOM 360 COM C 120 224.3 66.7 272.2 0 0CL +ATOM 361 A1 C 120 224.7 68.2 273.7 0 0CL +ATOM 362 B1 C 120 224.8 67.5 273.9 0 0CL +ATOM 363 COM C 121 23.0 295.3 361.1 0 0CL +ATOM 364 A1 C 121 22.1 295.9 359.3 0 0CL +ATOM 365 B1 C 121 21.8 296.2 359.9 0 0CL +ATOM 366 COM C 122 480.2 0.9 402.0 0 0CL +ATOM 367 A1 C 122 482.3 0.6 401.7 0 0CL +ATOM 368 B1 C 122 482.0 1.2 401.5 0 0CL +ATOM 369 COM C 123 227.5 112.9 493.9 0 0CL +ATOM 370 A1 C 123 227.0 110.7 493.8 0 0CL +ATOM 371 B1 C 123 226.4 111.2 493.8 0 0CL +ATOM 372 COM C 124 21.1 496.2 458.3 0 0CL +ATOM 373 A1 C 124 21.3 494.4 459.4 0 0CL +ATOM 374 B1 C 124 21.9 494.8 459.5 0 0CL +ATOM 375 COM C 125 115.1 354.9 356.9 0 0CL +ATOM 376 A1 C 125 116.1 354.7 354.9 0 0CL +ATOM 377 B1 C 125 115.6 355.2 355.0 0 0CL +ATOM 378 COM C 126 192.8 93.9 55.7 0 0CL +ATOM 379 A1 C 126 193.6 94.6 53.7 0 0CL +ATOM 380 B1 C 126 193.1 94.1 53.7 0 0CL +ATOM 381 COM C 127 253.2 175.5 329.5 0 0CL +ATOM 382 A1 C 127 252.1 173.5 329.2 0 0CL +ATOM 383 B1 C 127 251.7 174.1 329.2 0 0CL +ATOM 384 COM C 128 370.2 28.2 274.7 0 0CL +ATOM 385 A1 C 128 368.6 28.3 273.2 0 0CL +ATOM 386 B1 C 128 368.4 28.2 273.9 0 0CL +ATOM 387 COM C 129 229.2 372.1 321.2 0 0CL +ATOM 388 A1 C 129 230.7 373.5 322.0 0 0CL +ATOM 389 B1 C 129 230.9 373.0 321.5 0 0CL +ATOM 390 COM C 130 4.1 298.3 421.0 0 0CL +ATOM 391 A1 C 130 5.1 300.2 421.6 0 0CL +ATOM 392 B1 C 130 5.3 299.7 422.0 0 0CL +ATOM 393 COM C 131 333.4 67.9 272.3 0 0CL +ATOM 394 A1 C 131 333.7 65.8 272.5 0 0CL +ATOM 395 B1 C 131 333.2 66.1 272.9 0 0CL +ATOM 396 COM C 132 62.3 268.8 337.8 0 0CL +ATOM 397 A1 C 132 62.1 268.4 335.6 0 0CL +ATOM 398 B1 C 132 61.9 267.9 336.0 0 0CL +ATOM 399 COM C 133 25.2 345.6 449.1 0 0CL +ATOM 400 A1 C 133 26.7 346.8 450.1 0 0CL +ATOM 401 B1 C 133 26.8 346.1 450.1 0 0CL +ATOM 402 COM C 134 199.9 231.0 155.4 0 0CL +ATOM 403 A1 C 134 198.7 230.5 157.2 0 0CL +ATOM 404 B1 C 134 198.7 230.0 156.6 0 0CL +ATOM 405 COM C 135 48.2 444.5 370.5 0 0CL +ATOM 406 A1 C 135 48.1 445.7 368.6 0 0CL +ATOM 407 B1 C 135 48.8 445.5 368.8 0 0CL +ATOM 408 COM C 136 462.8 191.0 314.8 0 0CL +ATOM 409 A1 C 136 463.2 191.8 316.8 0 0CL +ATOM 410 B1 C 136 463.8 191.6 316.4 0 0CL +ATOM 411 COM C 137 376.3 195.8 197.1 0 0CL +ATOM 412 A1 C 137 375.0 194.0 197.3 0 0CL +ATOM 413 B1 C 137 375.3 194.3 197.9 0 0CL +ATOM 414 COM C 138 96.2 347.7 237.1 0 0CL +ATOM 415 A1 C 138 95.0 349.5 236.7 0 0CL +ATOM 416 B1 C 138 95.6 349.6 237.0 0 0CL +ATOM 417 COM C 139 143.0 297.4 486.4 0 0CL +ATOM 418 A1 C 139 143.2 299.2 485.2 0 0CL +ATOM 419 B1 C 139 143.4 298.6 484.8 0 0CL +ATOM 420 COM C 140 199.8 85.4 301.5 0 0CL +ATOM 421 A1 C 140 201.7 85.9 302.6 0 0CL +ATOM 422 B1 C 140 201.0 86.1 302.9 0 0CL +ATOM 423 COM C 141 325.4 207.8 196.6 0 0CL +ATOM 424 A1 C 141 323.7 207.7 198.1 0 0CL +ATOM 425 B1 C 141 323.6 207.7 197.4 0 0CL +ATOM 426 COM C 142 444.1 14.1 347.6 0 0CL +ATOM 427 A1 C 142 445.7 15.6 348.1 0 0CL +ATOM 428 B1 C 142 445.8 14.8 348.2 0 0CL +ATOM 429 COM C 143 386.8 301.1 394.9 0 0CL +ATOM 430 A1 C 143 385.2 302.4 395.4 0 0CL +ATOM 431 B1 C 143 385.8 302.6 395.6 0 0CL +ATOM 432 COM C 144 184.3 343.0 428.1 0 0CL +ATOM 433 A1 C 144 185.1 343.8 426.2 0 0CL +ATOM 434 B1 C 144 184.8 343.1 426.2 0 0CL +ATOM 435 COM C 145 10.4 404.3 353.8 0 0CL +ATOM 436 A1 C 145 8.6 405.0 354.9 0 0CL +ATOM 437 B1 C 145 8.5 404.4 354.5 0 0CL +ATOM 438 COM C 146 433.3 378.4 425.9 0 0CL +ATOM 439 A1 C 146 431.5 377.7 424.7 0 0CL +ATOM 440 B1 C 146 432.2 377.8 424.4 0 0CL +ATOM 441 COM C 147 294.8 445.2 363.3 0 0CL +ATOM 442 A1 C 147 295.8 447.0 362.4 0 0CL +ATOM 443 B1 C 147 296.1 446.7 363.0 0 0CL +ATOM 444 COM C 148 207.1 337.7 457.3 0 0CL +ATOM 445 A1 C 148 205.9 338.0 455.6 0 0CL +ATOM 446 B1 C 148 206.4 337.5 455.5 0 0CL +ATOM 447 COM C 149 81.4 477.9 164.4 0 0CL +ATOM 448 A1 C 149 82.3 479.9 164.2 0 0CL +ATOM 449 B1 C 149 81.6 479.9 164.5 0 0CL +ATOM 450 COM A 150 139.6 18.2 478.0 0 0CL +ATOM 451 C1 A 150 138.6 17.4 478.0 0 0CL +ATOM 452 B1 A 150 140.0 17.6 478.7 0 0CL +ATOM 453 COM A 151 467.9 373.4 152.3 0 0CL +ATOM 454 C1 A 151 468.4 372.5 153.1 0 0CL +ATOM 455 B1 A 151 468.2 374.1 153.0 0 0CL +ATOM 456 COM A 152 206.5 461.0 449.9 0 0CL +ATOM 457 C1 A 152 207.6 460.6 449.3 0 0CL +ATOM 458 B1 A 152 206.8 460.5 450.7 0 0CL +ATOM 459 COM A 153 491.7 228.5 291.2 0 0CL +ATOM 460 C1 A 153 491.5 229.4 292.1 0 0CL +ATOM 461 B1 A 153 490.8 228.7 290.9 0 0CL +ATOM 462 COM A 154 210.2 497.9 395.0 0 0CL +ATOM 463 C1 A 154 211.3 497.3 394.7 0 0CL +ATOM 464 B1 A 154 210.4 497.6 396.0 0 0CL +ATOM 465 COM A 155 296.5 447.5 360.9 0 0CL +ATOM 466 C1 A 155 295.6 446.9 361.5 0 0CL +ATOM 467 B1 A 155 297.1 447.2 361.7 0 0CL +ATOM 468 COM A 156 263.2 278.6 304.4 0 0CL +ATOM 469 C1 A 156 263.1 278.2 303.1 0 0CL +ATOM 470 B1 A 156 262.2 278.8 304.3 0 0CL +ATOM 471 COM A 157 399.7 214.6 159.1 0 0CL +ATOM 472 C1 A 157 399.2 215.7 159.5 0 0CL +ATOM 473 B1 A 157 398.9 214.1 159.4 0 0CL +ATOM 474 COM A 158 6.1 301.4 420.9 0 0CL +ATOM 475 C1 A 158 5.1 300.6 420.7 0 0CL +ATOM 476 B1 A 158 6.5 300.7 421.5 0 0CL +ATOM 477 COM A 159 27.9 348.1 449.7 0 0CL +ATOM 478 C1 A 159 26.7 347.6 449.5 0 0CL +ATOM 479 B1 A 159 28.1 347.1 449.8 0 0CL +ATOM 480 COM A 160 333.5 64.3 271.6 0 0CL +ATOM 481 C1 A 160 333.9 65.5 271.6 0 0CL +ATOM 482 B1 A 160 332.7 64.6 272.3 0 0CL +ATOM 483 COM A 161 223.6 253.6 82.9 0 0CL +ATOM 484 C1 A 161 222.3 253.9 83.2 0 0CL +ATOM 485 B1 A 161 223.2 253.4 82.0 0 0CL +ATOM 486 COM A 162 122.5 32.9 461.3 0 0CL +ATOM 487 C1 A 162 122.3 31.8 462.1 0 0CL +ATOM 488 B1 A 162 122.8 32.2 460.6 0 0CL +ATOM 489 COM A 163 487.4 329.2 214.0 0 0CL +ATOM 490 C1 A 163 487.6 330.4 213.7 0 0CL +ATOM 491 B1 A 163 486.8 329.6 214.7 0 0CL +ATOM 492 COM A 164 187.4 137.6 58.1 0 0CL +ATOM 493 C1 A 164 187.7 136.6 58.9 0 0CL +ATOM 494 B1 A 164 186.9 136.9 57.5 0 0CL +ATOM 495 COM A 165 402.7 104.8 435.5 0 0CL +ATOM 496 C1 A 165 403.5 103.7 435.3 0 0CL +ATOM 497 B1 A 165 402.3 104.5 434.6 0 0CL +ATOM 498 COM A 166 205.9 21.4 410.7 0 0CL +ATOM 499 C1 A 166 206.9 21.2 411.6 0 0CL +ATOM 500 B1 A 166 206.7 21.2 410.0 0 0CL +ATOM 501 COM A 167 463.0 193.4 317.6 0 0CL +ATOM 502 C1 A 167 462.5 192.5 316.8 0 0CL +ATOM 503 B1 A 167 464.0 193.1 317.1 0 0CL +ATOM 504 COM A 168 61.1 269.1 334.3 0 0CL +ATOM 505 C1 A 168 61.8 269.3 335.4 0 0CL +ATOM 506 B1 A 168 60.8 268.2 334.8 0 0CL +ATOM 507 COM A 169 417.2 337.3 197.7 0 0CL +ATOM 508 C1 A 169 416.2 336.9 198.5 0 0CL +ATOM 509 B1 A 169 417.7 336.5 198.1 0 0CL +ATOM 510 COM A 170 319.7 455.0 394.9 0 0CL +ATOM 511 C1 A 170 318.8 455.9 394.8 0 0CL +ATOM 512 B1 A 170 320.0 455.3 394.0 0 0CL +ATOM 513 COM A 171 414.3 447.1 256.7 0 0CL +ATOM 514 C1 A 171 414.8 448.3 256.7 0 0CL +ATOM 515 B1 A 171 414.0 447.3 255.7 0 0CL +ATOM 516 COM A 172 366.7 360.7 449.7 0 0CL +ATOM 517 C1 A 172 367.2 361.8 450.1 0 0CL +ATOM 518 B1 A 172 365.9 361.0 450.2 0 0CL +ATOM 519 COM A 173 142.1 300.4 484.5 0 0CL +ATOM 520 C1 A 173 142.4 299.7 485.5 0 0CL +ATOM 521 B1 A 173 142.4 299.6 483.9 0 0CL +ATOM 522 COM A 174 374.9 43.6 302.7 0 0CL +ATOM 523 C1 A 174 374.5 42.5 303.2 0 0CL +ATOM 524 B1 A 174 374.4 43.3 301.9 0 0CL +ATOM 525 COM A 175 354.5 204.3 368.5 0 0CL +ATOM 526 C1 A 175 353.3 204.4 368.0 0 0CL +ATOM 527 B1 A 175 354.8 204.6 367.5 0 0CL +ATOM 528 COM A 176 193.7 96.0 52.8 0 0CL +ATOM 529 C1 A 176 193.8 95.4 54.0 0 0CL +ATOM 530 B1 A 176 192.9 95.4 52.6 0 0CL +ATOM 531 COM A 177 125.6 277.3 324.5 0 0CL +ATOM 532 C1 A 177 125.9 276.1 324.1 0 0CL +ATOM 533 B1 A 177 125.8 277.5 323.5 0 0CL +ATOM 534 COM A 178 347.6 179.8 106.8 0 0CL +ATOM 535 C1 A 178 346.9 180.9 106.3 0 0CL +ATOM 536 B1 A 178 348.4 180.3 106.4 0 0CL +ATOM 537 COM A 179 383.6 431.2 390.3 0 0CL +ATOM 538 C1 A 179 383.3 431.7 389.2 0 0CL +ATOM 539 B1 A 179 384.4 430.8 389.8 0 0CL +ATOM 540 COM A 180 283.3 369.7 362.8 0 0CL +ATOM 541 C1 A 180 282.1 369.4 363.1 0 0CL +ATOM 542 B1 A 180 283.3 370.2 363.7 0 0CL +ATOM 543 COM A 181 177.8 23.9 343.0 0 0CL +ATOM 544 C1 A 181 177.7 23.6 344.3 0 0CL +ATOM 545 B1 A 181 177.4 24.8 343.3 0 0CL +ATOM 546 COM A 182 354.8 215.5 20.4 0 0CL +ATOM 547 C1 A 182 353.9 215.5 21.4 0 0CL +ATOM 548 B1 A 182 355.5 215.4 21.2 0 0CL +ATOM 549 COM A 183 204.2 337.8 455.1 0 0CL +ATOM 550 C1 A 183 205.1 338.2 456.0 0 0CL +ATOM 551 B1 A 183 204.9 337.1 454.9 0 0CL +ATOM 552 COM A 184 227.1 109.4 492.7 0 0CL +ATOM 553 C1 A 184 227.7 110.4 493.3 0 0CL +ATOM 554 B1 A 184 226.3 109.9 492.8 0 0CL +ATOM 555 COM A 185 466.1 393.3 242.6 0 0CL +ATOM 556 C1 A 185 467.1 392.6 243.0 0 0CL +ATOM 557 B1 A 185 466.1 393.7 243.6 0 0CL +ATOM 558 COM A 186 201.0 423.0 244.8 0 0CL +ATOM 559 C1 A 186 200.4 423.3 245.8 0 0CL +ATOM 560 B1 A 186 200.1 422.7 244.4 0 0CL +ATOM 561 COM A 187 324.9 422.9 182.0 0 0CL +ATOM 562 C1 A 187 325.8 422.2 182.6 0 0CL +ATOM 563 B1 A 187 324.5 422.0 181.7 0 0CL +ATOM 564 COM A 188 42.7 300.1 307.4 0 0CL +ATOM 565 C1 A 188 42.4 299.0 306.8 0 0CL +ATOM 566 B1 A 188 42.5 299.5 308.3 0 0CL +ATOM 567 COM A 189 396.0 332.7 82.6 0 0CL +ATOM 568 C1 A 189 397.1 332.2 82.2 0 0CL +ATOM 569 B1 A 189 396.5 333.6 82.7 0 0CL +ATOM 570 COM A 190 403.8 347.5 35.0 0 0CL +ATOM 571 C1 A 190 405.0 347.6 35.6 0 0CL +ATOM 572 B1 A 190 403.5 347.2 35.9 0 0CL +ATOM 573 COM A 191 497.6 365.3 46.8 0 0CL +ATOM 574 C1 A 191 498.7 364.5 46.7 0 0CL +ATOM 575 B1 A 191 497.3 364.9 45.9 0 0CL +ATOM 576 COM A 192 226.7 400.4 5.1 0 0CL +ATOM 577 C1 A 192 226.7 399.5 6.1 0 0CL +ATOM 578 B1 A 192 227.7 400.4 5.2 0 0CL +ATOM 579 COM A 193 446.7 16.7 347.2 0 0CL +ATOM 580 C1 A 193 445.5 16.2 347.4 0 0CL +ATOM 581 B1 A 193 447.1 15.7 347.4 0 0CL +ATOM 582 COM A 194 163.8 276.4 90.4 0 0CL +ATOM 583 C1 A 194 164.6 277.3 90.8 0 0CL +ATOM 584 B1 A 194 164.4 275.8 91.0 0 0CL +ATOM 585 COM A 195 93.6 393.1 144.6 0 0CL +ATOM 586 C1 A 195 92.7 392.4 143.9 0 0CL +ATOM 587 B1 A 195 93.7 393.7 143.8 0 0CL +ATOM 588 COM A 196 348.7 103.7 170.1 0 0CL +ATOM 589 C1 A 196 349.8 103.0 169.8 0 0CL +ATOM 590 B1 A 196 348.9 104.2 169.2 0 0CL +ATOM 591 COM A 197 478.2 284.1 443.1 0 0CL +ATOM 592 C1 A 197 478.9 285.0 442.6 0 0CL +ATOM 593 B1 A 197 477.5 284.7 443.1 0 0CL +ATOM 594 COM A 198 178.1 15.3 434.1 0 0CL +ATOM 595 C1 A 198 177.8 15.3 432.8 0 0CL +ATOM 596 B1 A 198 178.1 16.4 434.0 0 0CL +ATOM 597 COM A 199 15.7 33.9 260.0 0 0CL +ATOM 598 C1 A 199 14.7 34.6 260.5 0 0CL +ATOM 599 B1 A 199 15.1 33.1 260.3 0 0CL +ATOM 600 COM A 200 37.0 98.5 387.1 0 0CL +ATOM 601 C1 A 200 37.9 98.8 388.1 0 0CL +ATOM 602 B1 A 200 37.7 98.9 386.5 0 0CL +ATOM 603 COM A 201 368.0 29.5 272.0 0 0CL +ATOM 604 C1 A 201 369.0 28.9 272.6 0 0CL +ATOM 605 B1 A 201 367.5 29.4 273.0 0 0CL +ATOM 606 COM A 202 117.7 355.0 354.3 0 0CL +ATOM 607 C1 A 202 116.9 354.5 355.2 0 0CL +ATOM 608 B1 A 202 117.0 355.7 354.2 0 0CL +ATOM 609 COM A 203 36.1 452.3 261.1 0 0CL +ATOM 610 C1 A 203 35.4 452.4 262.2 0 0CL +ATOM 611 B1 A 203 35.6 451.4 260.9 0 0CL +ATOM 612 COM A 204 384.1 303.5 394.5 0 0CL +ATOM 613 C1 A 204 384.7 302.3 394.6 0 0CL +ATOM 614 B1 A 204 384.9 303.9 395.0 0 0CL +ATOM 615 COM A 205 276.6 481.6 326.4 0 0CL +ATOM 616 C1 A 205 276.6 482.9 326.2 0 0CL +ATOM 617 B1 A 205 277.6 481.8 326.7 0 0CL +ATOM 618 COM A 206 420.6 136.5 429.6 0 0CL +ATOM 619 C1 A 206 420.5 135.7 430.6 0 0CL +ATOM 620 B1 A 206 419.7 136.2 429.3 0 0CL +ATOM 621 COM A 207 127.8 121.3 358.6 0 0CL +ATOM 622 C1 A 207 128.0 122.5 359.1 0 0CL +ATOM 623 B1 A 207 128.7 121.1 359.0 0 0CL +ATOM 624 COM A 208 93.3 58.9 181.4 0 0CL +ATOM 625 C1 A 208 94.2 59.2 182.3 0 0CL +ATOM 626 B1 A 208 94.1 58.7 180.8 0 0CL +ATOM 627 COM A 209 478.5 331.6 93.7 0 0CL +ATOM 628 C1 A 209 478.6 332.9 93.5 0 0CL +ATOM 629 B1 A 209 479.5 331.6 93.6 0 0CL +ATOM 630 COM A 210 6.5 398.2 350.1 0 0CL +ATOM 631 C1 A 210 6.2 397.3 349.2 0 0CL +ATOM 632 B1 A 210 6.0 397.6 350.8 0 0CL +ATOM 633 COM A 211 244.6 82.6 317.8 0 0CL +ATOM 634 C1 A 211 243.8 83.4 317.2 0 0CL +ATOM 635 B1 A 211 244.6 82.1 316.9 0 0CL +ATOM 636 COM A 212 418.5 172.9 33.0 0 0CL +ATOM 637 C1 A 212 419.0 173.2 31.8 0 0CL +ATOM 638 B1 A 212 418.3 172.0 32.5 0 0CL +ATOM 639 COM A 213 126.6 418.1 100.0 0 0CL +ATOM 640 C1 A 213 127.3 417.0 100.1 0 0CL +ATOM 641 B1 A 213 126.9 418.1 99.0 0 0CL +ATOM 642 COM A 214 250.9 22.2 12.4 0 0CL +ATOM 643 C1 A 214 250.5 22.9 13.4 0 0CL +ATOM 644 B1 A 214 250.6 22.9 11.8 0 0CL +ATOM 645 COM A 215 100.4 266.1 351.8 0 0CL +ATOM 646 C1 A 215 100.9 266.6 352.9 0 0CL +ATOM 647 B1 A 215 100.8 265.2 352.1 0 0CL +ATOM 648 COM A 216 47.5 445.6 367.0 0 0CL +ATOM 649 C1 A 216 47.3 445.4 368.3 0 0CL +ATOM 650 B1 A 216 48.4 445.3 367.2 0 0CL +ATOM 651 COM A 217 93.5 156.2 140.7 0 0CL +ATOM 652 C1 A 217 92.5 157.0 140.7 0 0CL +ATOM 653 B1 A 217 93.3 156.1 141.7 0 0CL +ATOM 654 COM A 218 25.5 407.8 490.8 0 0CL +ATOM 655 C1 A 218 24.2 407.8 490.6 0 0CL +ATOM 656 B1 A 218 25.5 406.8 490.7 0 0CL +ATOM 657 COM A 219 458.8 479.2 316.0 0 0CL +ATOM 658 C1 A 219 460.0 479.5 316.5 0 0CL +ATOM 659 B1 A 219 459.0 480.0 315.4 0 0CL +ATOM 660 COM A 220 146.0 423.7 396.8 0 0CL +ATOM 661 C1 A 220 146.4 422.5 396.8 0 0CL +ATOM 662 B1 A 220 146.7 423.8 397.6 0 0CL +ATOM 663 COM A 221 6.4 480.3 297.0 0 0CL +ATOM 664 C1 A 221 6.4 479.3 297.9 0 0CL +ATOM 665 B1 A 221 5.5 479.9 296.7 0 0CL +ATOM 666 COM A 222 229.7 339.9 174.2 0 0CL +ATOM 667 C1 A 222 228.4 340.0 174.5 0 0CL +ATOM 668 B1 A 222 229.5 338.9 174.4 0 0CL +ATOM 669 COM A 223 485.4 70.0 195.4 0 0CL +ATOM 670 C1 A 223 486.2 69.3 196.1 0 0CL +ATOM 671 B1 A 223 485.8 69.6 194.6 0 0CL +ATOM 672 COM A 224 194.5 9.9 385.8 0 0CL +ATOM 673 C1 A 224 193.8 10.9 386.2 0 0CL +ATOM 674 B1 A 224 195.3 10.6 385.8 0 0CL +ATOM 675 COM A 225 483.8 0.5 402.7 0 0CL +ATOM 676 C1 A 225 482.5 0.2 402.5 0 0CL +ATOM 677 B1 A 225 483.5 1.4 402.3 0 0CL +ATOM 678 COM A 226 373.3 193.6 197.1 0 0CL +ATOM 679 C1 A 226 374.4 194.2 196.7 0 0CL +ATOM 680 B1 A 226 373.7 193.9 198.0 0 0CL +ATOM 681 COM A 227 415.5 321.9 202.2 0 0CL +ATOM 682 C1 A 227 415.0 322.9 201.5 0 0CL +ATOM 683 B1 A 227 415.9 322.7 202.8 0 0CL +ATOM 684 COM A 228 225.7 69.6 274.0 0 0CL +ATOM 685 C1 A 228 224.9 68.9 273.2 0 0CL +ATOM 686 B1 A 228 226.0 68.6 274.3 0 0CL +ATOM 687 COM A 229 252.1 172.3 327.9 0 0CL +ATOM 688 C1 A 229 252.8 173.1 328.7 0 0CL +ATOM 689 B1 A 229 251.4 173.0 327.9 0 0CL +ATOM 690 COM A 230 184.8 345.1 425.0 0 0CL +ATOM 691 C1 A 230 184.9 344.7 426.3 0 0CL +ATOM 692 B1 A 230 184.4 344.1 424.9 0 0CL +ATOM 693 COM A 231 464.8 23.9 280.7 0 0CL +ATOM 694 C1 A 231 464.2 23.9 279.6 0 0CL +ATOM 695 B1 A 231 464.5 24.9 280.8 0 0CL +ATOM 696 COM A 232 83.7 258.9 336.4 0 0CL +ATOM 697 C1 A 232 82.5 258.7 336.6 0 0CL +ATOM 698 B1 A 232 83.8 258.5 337.3 0 0CL +ATOM 699 COM A 233 273.3 179.1 194.3 0 0CL +ATOM 700 C1 A 233 274.2 179.9 194.8 0 0CL +ATOM 701 B1 A 233 272.8 180.0 194.0 0 0CL +ATOM 702 COM A 234 76.2 325.6 118.9 0 0CL +ATOM 703 C1 A 234 75.2 326.2 119.6 0 0CL +ATOM 704 B1 A 234 76.8 326.0 119.7 0 0CL +ATOM 705 COM A 235 349.7 374.2 289.0 0 0CL +ATOM 706 C1 A 235 349.4 373.2 288.3 0 0CL +ATOM 707 B1 A 235 350.6 374.0 288.8 0 0CL +ATOM 708 COM A 236 372.5 435.3 461.2 0 0CL +ATOM 709 C1 A 236 372.1 435.1 460.0 0 0CL +ATOM 710 B1 A 236 372.1 436.2 461.1 0 0CL +ATOM 711 COM A 237 8.0 405.1 356.5 0 0CL +ATOM 712 C1 A 237 9.0 405.3 355.6 0 0CL +ATOM 713 B1 A 237 7.8 404.3 356.0 0 0CL +ATOM 714 COM A 238 136.9 87.9 109.7 0 0CL +ATOM 715 C1 A 238 136.9 87.1 108.7 0 0CL +ATOM 716 B1 A 238 136.7 88.6 109.0 0 0CL +ATOM 717 COM A 239 275.7 36.3 20.6 0 0CL +ATOM 718 C1 A 239 276.7 36.8 21.3 0 0CL +ATOM 719 B1 A 239 275.7 37.3 20.2 0 0CL +ATOM 720 COM A 240 118.1 20.1 287.1 0 0CL +ATOM 721 C1 A 240 116.9 20.5 287.4 0 0CL +ATOM 722 B1 A 240 118.4 20.9 287.7 0 0CL +ATOM 723 COM A 241 189.6 475.0 219.5 0 0CL +ATOM 724 C1 A 241 189.9 474.2 218.5 0 0CL +ATOM 725 B1 A 241 188.8 475.3 219.0 0 0CL +ATOM 726 COM A 242 100.2 149.8 250.1 0 0CL +ATOM 727 C1 A 242 99.4 149.5 249.1 0 0CL +ATOM 728 B1 A 242 100.4 148.8 250.2 0 0CL +ATOM 729 COM A 243 203.0 85.1 303.3 0 0CL +ATOM 730 C1 A 243 202.1 85.2 302.3 0 0CL +ATOM 731 B1 A 243 202.2 85.4 303.9 0 0CL +ATOM 732 COM A 244 441.3 474.7 463.3 0 0CL +ATOM 733 C1 A 244 440.5 474.7 462.3 0 0CL +ATOM 734 B1 A 244 442.0 474.3 462.6 0 0CL +ATOM 735 COM A 245 143.5 382.6 189.1 0 0CL +ATOM 736 C1 A 245 144.1 383.0 190.2 0 0CL +ATOM 737 B1 A 245 143.9 383.4 188.6 0 0CL +ATOM 738 COM A 246 448.0 96.2 231.4 0 0CL +ATOM 739 C1 A 246 448.8 95.7 232.3 0 0CL +ATOM 740 B1 A 246 448.7 95.7 230.7 0 0CL +ATOM 741 COM A 247 129.8 136.3 244.7 0 0CL +ATOM 742 C1 A 247 130.0 135.0 244.5 0 0CL +ATOM 743 B1 A 247 130.8 136.2 245.1 0 0CL +ATOM 744 COM A 248 22.5 297.0 357.9 0 0CL +ATOM 745 C1 A 248 22.9 296.1 358.8 0 0CL +ATOM 746 B1 A 248 21.9 297.3 358.7 0 0CL +ATOM 747 COM A 249 57.2 365.7 128.8 0 0CL +ATOM 748 C1 A 249 57.0 364.4 128.5 0 0CL +ATOM 749 B1 A 249 58.1 365.5 128.4 0 0CL +ATOM 750 COM A 250 151.0 378.1 483.3 0 0CL +ATOM 751 C1 A 250 151.0 378.6 484.5 0 0CL +ATOM 752 B1 A 250 151.0 379.1 483.0 0 0CL +ATOM 753 COM A 251 170.2 414.2 475.7 0 0CL +ATOM 754 C1 A 251 169.1 413.7 476.1 0 0CL +ATOM 755 B1 A 251 169.7 414.4 474.8 0 0CL +ATOM 756 COM A 252 264.3 376.9 158.9 0 0CL +ATOM 757 C1 A 252 263.7 375.8 159.3 0 0CL +ATOM 758 B1 A 252 263.5 377.0 158.3 0 0CL +ATOM 759 COM A 253 427.9 261.7 12.2 0 0CL +ATOM 760 C1 A 253 427.8 263.0 11.9 0 0CL +ATOM 761 B1 A 253 428.6 261.7 11.5 0 0CL +ATOM 762 COM A 254 180.9 117.2 484.9 0 0CL +ATOM 763 C1 A 254 180.1 117.0 483.9 0 0CL +ATOM 764 B1 A 254 181.6 117.4 484.2 0 0CL +ATOM 765 COM A 255 401.5 89.2 19.4 0 0CL +ATOM 766 C1 A 255 402.6 89.3 20.1 0 0CL +ATOM 767 B1 A 255 401.1 88.8 20.3 0 0CL +ATOM 768 COM A 256 312.9 201.1 128.4 0 0CL +ATOM 769 C1 A 256 313.6 200.8 127.4 0 0CL +ATOM 770 B1 A 256 313.0 200.1 128.6 0 0CL +ATOM 771 COM A 257 471.2 57.7 227.4 0 0CL +ATOM 772 C1 A 257 470.7 58.8 227.2 0 0CL +ATOM 773 B1 A 257 471.2 58.0 228.4 0 0CL +ATOM 774 COM A 258 150.5 32.2 487.0 0 0CL +ATOM 775 C1 A 258 149.7 32.7 486.0 0 0CL +ATOM 776 B1 A 258 151.1 32.0 486.2 0 0CL +ATOM 777 COM A 259 180.9 410.4 180.6 0 0CL +ATOM 778 C1 A 259 180.5 409.1 180.6 0 0CL +ATOM 779 B1 A 259 181.8 410.1 180.8 0 0CL +ATOM 780 COM A 260 117.8 351.1 393.0 0 0CL +ATOM 781 C1 A 260 117.0 351.3 392.0 0 0CL +ATOM 782 B1 A 260 117.5 352.0 393.4 0 0CL +ATOM 783 COM A 261 401.9 385.8 236.9 0 0CL +ATOM 784 C1 A 261 402.0 386.6 235.9 0 0CL +ATOM 785 B1 A 261 402.7 385.3 236.5 0 0CL +ATOM 786 COM A 262 55.3 367.7 463.0 0 0CL +ATOM 787 C1 A 262 55.1 367.5 461.7 0 0CL +ATOM 788 B1 A 262 55.8 368.6 462.7 0 0CL +ATOM 789 COM A 263 383.8 333.6 473.2 0 0CL +ATOM 790 C1 A 263 384.2 333.5 474.5 0 0CL +ATOM 791 B1 A 263 383.1 332.8 473.5 0 0CL +ATOM 792 COM A 264 155.1 34.6 437.0 0 0CL +ATOM 793 C1 A 264 154.6 35.6 436.3 0 0CL +ATOM 794 B1 A 264 156.0 35.0 436.7 0 0CL +ATOM 795 COM A 265 112.6 180.1 281.0 0 0CL +ATOM 796 C1 A 265 113.6 179.4 281.5 0 0CL +ATOM 797 B1 A 265 112.1 179.3 281.2 0 0CL +ATOM 798 COM A 266 266.1 480.3 443.7 0 0CL +ATOM 799 C1 A 266 265.0 480.4 444.3 0 0CL +ATOM 800 B1 A 266 266.5 480.8 444.5 0 0CL +ATOM 801 COM A 267 352.2 435.7 9.7 0 0CL +ATOM 802 C1 A 267 351.1 436.3 10.0 0 0CL +ATOM 803 B1 A 267 352.2 436.3 8.9 0 0CL +ATOM 804 COM A 268 400.3 79.1 93.8 0 0CL +ATOM 805 C1 A 268 401.2 79.0 92.8 0 0CL +ATOM 806 B1 A 268 401.2 79.4 94.3 0 0CL +ATOM 807 COM A 269 218.8 196.2 306.5 0 0CL +ATOM 808 C1 A 269 218.2 196.9 307.5 0 0CL +ATOM 809 B1 A 269 217.9 196.3 306.0 0 0CL +ATOM 810 COM A 270 189.2 406.9 7.8 0 0CL +ATOM 811 C1 A 270 189.3 408.1 7.3 0 0CL +ATOM 812 B1 A 270 188.3 406.9 7.3 0 0CL +ATOM 813 COM A 271 20.6 452.6 492.3 0 0CL +ATOM 814 C1 A 271 20.1 452.2 493.4 0 0CL +ATOM 815 B1 A 271 20.8 451.6 492.1 0 0CL +ATOM 816 COM A 272 464.7 110.6 132.9 0 0CL +ATOM 817 C1 A 272 465.1 109.8 131.9 0 0CL +ATOM 818 B1 A 272 465.2 111.3 132.4 0 0CL +ATOM 819 COM A 273 231.0 375.2 321.9 0 0CL +ATOM 820 C1 A 273 230.1 374.2 322.0 0 0CL +ATOM 821 B1 A 273 231.5 374.6 321.2 0 0CL +ATOM 822 COM A 274 405.2 368.2 268.8 0 0CL +ATOM 823 C1 A 274 405.6 369.2 267.9 0 0CL +ATOM 824 B1 A 274 404.8 367.8 267.9 0 0CL +ATOM 825 COM A 275 393.1 12.2 229.2 0 0CL +ATOM 826 C1 A 275 392.1 12.9 229.2 0 0CL +ATOM 827 B1 A 275 392.5 11.5 229.5 0 0CL +ATOM 828 COM A 276 294.8 240.8 10.6 0 0CL +ATOM 829 C1 A 276 295.3 239.7 10.2 0 0CL +ATOM 830 B1 A 276 295.3 240.6 11.5 0 0CL +ATOM 831 COM A 277 430.5 376.3 424.6 0 0CL +ATOM 832 C1 A 277 431.1 377.2 425.3 0 0CL +ATOM 833 B1 A 277 431.3 376.4 424.0 0 0CL +ATOM 834 COM A 278 252.3 381.3 266.7 0 0CL +ATOM 835 C1 A 278 251.9 382.0 265.7 0 0CL +ATOM 836 B1 A 278 253.0 380.9 266.1 0 0CL +ATOM 837 COM A 279 3.3 178.4 263.7 0 0CL +ATOM 838 C1 A 279 3.0 177.2 263.4 0 0CL +ATOM 839 B1 A 279 2.4 178.4 264.3 0 0CL +ATOM 840 COM A 280 160.2 352.8 352.7 0 0CL +ATOM 841 C1 A 280 159.9 351.9 351.8 0 0CL +ATOM 842 B1 A 280 159.6 353.4 352.1 0 0CL +ATOM 843 COM A 281 252.4 154.9 139.1 0 0CL +ATOM 844 C1 A 281 253.1 155.9 138.8 0 0CL +ATOM 845 B1 A 281 251.6 155.6 139.2 0 0CL +ATOM 846 COM A 282 28.5 241.4 182.3 0 0CL +ATOM 847 C1 A 282 29.1 242.3 181.6 0 0CL +ATOM 848 B1 A 282 27.6 242.0 182.0 0 0CL +ATOM 849 COM A 283 332.1 25.2 125.1 0 0CL +ATOM 850 C1 A 283 331.0 24.5 125.2 0 0CL +ATOM 851 B1 A 283 331.6 25.8 124.4 0 0CL +ATOM 852 COM A 284 198.9 230.3 158.9 0 0CL +ATOM 853 C1 A 284 199.2 231.0 157.8 0 0CL +ATOM 854 B1 A 284 198.9 229.5 158.2 0 0CL +ATOM 855 COM A 285 248.5 186.4 317.2 0 0CL +ATOM 856 C1 A 285 247.4 186.7 316.5 0 0CL +ATOM 857 B1 A 285 248.8 187.3 317.0 0 0CL +ATOM 858 COM A 286 151.5 300.8 71.2 0 0CL +ATOM 859 C1 A 286 151.3 300.0 70.2 0 0CL +ATOM 860 B1 A 286 151.2 301.5 70.5 0 0CL +ATOM 861 COM A 287 224.8 257.6 418.7 0 0CL +ATOM 862 C1 A 287 225.1 258.5 419.6 0 0CL +ATOM 863 B1 A 287 225.7 257.3 418.7 0 0CL +ATOM 864 COM A 288 147.6 63.4 108.0 0 0CL +ATOM 865 C1 A 288 148.0 63.6 109.2 0 0CL +ATOM 866 B1 A 288 148.5 63.8 107.7 0 0CL +ATOM 867 COM A 289 400.8 138.9 195.4 0 0CL +ATOM 868 C1 A 289 400.6 139.6 196.5 0 0CL +ATOM 869 B1 A 289 400.8 138.1 196.0 0 0CL +ATOM 870 COM A 290 169.2 428.4 379.8 0 0CL +ATOM 871 C1 A 290 170.4 428.3 379.5 0 0CL +ATOM 872 B1 A 290 169.3 429.4 379.4 0 0CL +ATOM 873 COM A 291 128.5 35.9 173.3 0 0CL +ATOM 874 C1 A 291 129.5 36.2 174.2 0 0CL +ATOM 875 B1 A 291 128.2 36.9 173.5 0 0CL +ATOM 876 COM A 292 280.2 343.9 418.5 0 0CL +ATOM 877 C1 A 292 280.8 344.6 419.4 0 0CL +ATOM 878 B1 A 292 280.2 344.7 418.0 0 0CL +ATOM 879 COM A 293 20.5 493.6 460.7 0 0CL +ATOM 880 C1 A 293 20.4 494.2 459.6 0 0CL +ATOM 881 B1 A 293 21.3 494.1 460.9 0 0CL +ATOM 882 COM A 294 6.2 311.1 244.7 0 0CL +ATOM 883 C1 A 294 5.5 312.0 245.2 0 0CL +ATOM 884 B1 A 294 7.0 311.7 245.0 0 0CL +ATOM 885 COM A 295 336.7 389.2 24.8 0 0CL +ATOM 886 C1 A 295 335.7 389.9 24.4 0 0CL +ATOM 887 B1 A 295 336.7 388.9 23.7 0 0CL +ATOM 888 COM A 296 156.0 484.3 121.3 0 0CL +ATOM 889 C1 A 296 156.5 484.1 120.1 0 0CL +ATOM 890 B1 A 296 155.2 484.7 120.8 0 0CL +ATOM 891 COM A 297 273.7 244.9 334.7 0 0CL +ATOM 892 C1 A 297 273.2 245.6 335.7 0 0CL +ATOM 893 B1 A 297 273.2 244.1 335.1 0 0CL +ATOM 894 COM A 298 245.9 9.6 375.3 0 0CL +ATOM 895 C1 A 298 247.1 9.1 375.2 0 0CL +ATOM 896 B1 A 298 245.6 8.6 375.2 0 0CL +ATOM 897 COM A 299 239.8 77.5 320.4 0 0CL +ATOM 898 C1 A 299 240.0 76.6 321.3 0 0CL +ATOM 899 B1 A 299 240.4 76.9 319.8 0 0CL +ATOM 900 COM B 300 402.3 377.0 23.1 0 0CL +ATOM 901 C1 B 300 401.1 377.4 22.4 0 0CL +ATOM 902 A1 B 300 402.2 377.6 23.0 0 0CL +ATOM 903 COM B 301 169.7 414.6 473.6 0 0CL +ATOM 904 C1 B 301 168.7 413.7 474.2 0 0CL +ATOM 905 A1 B 301 169.7 414.4 474.2 0 0CL +ATOM 906 COM B 302 127.4 37.7 173.6 0 0CL +ATOM 907 C1 B 302 128.3 37.6 174.7 0 0CL +ATOM 908 A1 B 302 127.7 37.2 173.7 0 0CL +ATOM 909 COM B 303 312.4 199.1 129.1 0 0CL +ATOM 910 C1 B 303 312.9 199.0 127.7 0 0CL +ATOM 911 A1 B 303 312.6 199.6 128.8 0 0CL +ATOM 912 COM B 304 351.8 374.0 289.1 0 0CL +ATOM 913 C1 B 304 351.2 372.8 288.8 0 0CL +ATOM 914 A1 B 304 351.2 373.9 289.1 0 0CL +ATOM 915 COM B 305 151.2 302.7 70.0 0 0CL +ATOM 916 C1 B 305 151.4 301.5 69.1 0 0CL +ATOM 917 A1 B 305 151.3 302.1 70.2 0 0CL +ATOM 918 COM B 306 429.3 52.5 466.8 0 0CL +ATOM 919 C1 B 306 430.1 53.3 467.7 0 0CL +ATOM 920 A1 B 306 429.6 52.3 467.3 0 0CL +ATOM 921 COM B 307 100.6 147.8 250.9 0 0CL +ATOM 922 C1 B 307 99.4 147.8 250.0 0 0CL +ATOM 923 A1 B 307 100.4 148.3 250.6 0 0CL +ATOM 924 COM B 308 196.3 11.1 385.3 0 0CL +ATOM 925 C1 B 308 195.2 12.0 385.5 0 0CL +ATOM 926 A1 B 308 195.7 10.9 385.5 0 0CL +ATOM 927 COM B 309 401.3 137.0 196.3 0 0CL +ATOM 928 C1 B 309 401.4 138.1 197.3 0 0CL +ATOM 929 A1 B 309 401.1 137.6 196.2 0 0CL +ATOM 930 COM B 310 241.3 76.7 318.9 0 0CL +ATOM 931 C1 B 310 241.6 76.2 320.2 0 0CL +ATOM 932 A1 B 310 240.9 76.9 319.4 0 0CL +ATOM 933 COM B 311 386.1 108.4 160.0 0 0CL +ATOM 934 C1 B 311 385.5 107.1 159.8 0 0CL +ATOM 935 A1 B 311 386.4 107.9 160.2 0 0CL +ATOM 936 COM B 312 154.4 485.6 120.7 0 0CL +ATOM 937 C1 B 312 155.3 485.5 119.6 0 0CL +ATOM 938 A1 B 312 154.9 485.3 120.7 0 0CL +ATOM 939 COM B 313 186.6 136.5 56.4 0 0CL +ATOM 940 C1 B 313 187.3 135.6 57.3 0 0CL +ATOM 941 A1 B 313 186.8 136.7 56.9 0 0CL +ATOM 942 COM B 314 143.9 384.3 187.8 0 0CL +ATOM 943 C1 B 314 144.1 384.7 189.2 0 0CL +ATOM 944 A1 B 314 143.8 383.9 188.2 0 0CL +ATOM 945 COM B 315 488.6 359.1 448.4 0 0CL +ATOM 946 C1 B 315 489.5 360.0 448.9 0 0CL +ATOM 947 A1 B 315 488.9 359.0 448.9 0 0CL +ATOM 948 COM B 316 458.5 481.0 314.8 0 0CL +ATOM 949 C1 B 316 459.5 481.2 315.8 0 0CL +ATOM 950 A1 B 316 458.7 480.6 315.2 0 0CL +ATOM 951 COM B 317 229.9 337.8 174.8 0 0CL +ATOM 952 C1 B 317 228.7 338.3 175.4 0 0CL +ATOM 953 A1 B 317 229.7 338.4 174.7 0 0CL +ATOM 954 COM B 318 392.3 10.5 230.3 0 0CL +ATOM 955 C1 B 318 391.4 11.6 230.4 0 0CL +ATOM 956 A1 B 318 392.4 11.0 230.0 0 0CL +ATOM 957 COM B 319 263.0 377.2 157.1 0 0CL +ATOM 958 C1 B 319 262.9 375.9 157.6 0 0CL +ATOM 959 A1 B 319 263.3 377.0 157.6 0 0CL +ATOM 960 COM B 320 352.5 436.6 7.8 0 0CL +ATOM 961 C1 B 320 351.1 436.8 8.2 0 0CL +ATOM 962 A1 B 320 352.3 436.4 8.3 0 0CL +ATOM 963 COM B 321 416.9 323.1 203.5 0 0CL +ATOM 964 C1 B 321 416.4 323.9 202.4 0 0CL +ATOM 965 A1 B 321 416.5 322.9 203.1 0 0CL +ATOM 966 COM B 322 1.4 178.9 264.7 0 0CL +ATOM 967 C1 B 322 1.2 177.7 264.0 0 0CL +ATOM 968 A1 B 322 1.8 178.7 264.4 0 0CL +ATOM 969 COM B 323 321.7 206.8 197.5 0 0CL +ATOM 970 C1 B 323 322.8 207.7 197.4 0 0CL +ATOM 971 A1 B 323 322.2 206.8 197.9 0 0CL +ATOM 972 COM B 324 4.6 479.7 295.9 0 0CL +ATOM 973 C1 B 324 5.1 478.6 296.7 0 0CL +ATOM 974 A1 B 324 5.1 479.7 296.2 0 0CL +ATOM 975 COM B 325 207.2 21.5 408.9 0 0CL +ATOM 976 C1 B 325 208.0 21.6 410.1 0 0CL +ATOM 977 A1 B 325 207.0 21.5 409.5 0 0CL +ATOM 978 COM B 326 131.6 136.6 246.0 0 0CL +ATOM 979 C1 B 326 131.4 135.2 245.8 0 0CL +ATOM 980 A1 B 326 131.2 136.4 245.7 0 0CL +ATOM 981 COM B 327 464.7 26.0 281.2 0 0CL +ATOM 982 C1 B 327 464.4 25.8 279.8 0 0CL +ATOM 983 A1 B 327 464.7 25.5 280.9 0 0CL +ATOM 984 COM B 328 465.6 394.2 244.6 0 0CL +ATOM 985 C1 B 328 466.6 393.1 244.8 0 0CL +ATOM 986 A1 B 328 465.8 393.8 244.1 0 0CL +ATOM 987 COM B 329 22.4 494.3 461.4 0 0CL +ATOM 988 C1 B 329 22.3 494.6 460.0 0 0CL +ATOM 989 A1 B 329 21.9 494.1 461.1 0 0CL +ATOM 990 COM B 330 117.8 353.1 393.9 0 0CL +ATOM 991 C1 B 330 117.3 353.1 392.5 0 0CL +ATOM 992 A1 B 330 117.7 352.6 393.5 0 0CL +ATOM 993 COM B 331 482.9 40.7 230.4 0 0CL +ATOM 994 C1 B 331 484.3 40.9 230.8 0 0CL +ATOM 995 A1 B 331 483.1 40.7 231.0 0 0CL +ATOM 996 COM B 332 429.2 261.1 10.6 0 0CL +ATOM 997 C1 B 332 428.7 262.4 10.2 0 0CL +ATOM 998 A1 B 332 428.8 261.4 10.9 0 0CL +ATOM 999 COM B 333 348.9 105.2 168.5 0 0CL +ATOM 1000 C1 B 333 350.1 104.5 168.6 0 0CL +ATOM 1001 A1 B 333 349.0 104.7 168.9 0 0CL +ATOM 1002 COM B 334 176.7 25.8 343.1 0 0CL +ATOM 1003 C1 B 334 176.4 25.1 344.2 0 0CL +ATOM 1004 A1 B 334 177.0 25.3 343.2 0 0CL +ATOM 1005 COM B 335 271.8 180.6 193.9 0 0CL +ATOM 1006 C1 B 335 272.7 181.2 194.8 0 0CL +ATOM 1007 A1 B 335 272.2 180.3 194.1 0 0CL +ATOM 1008 COM B 336 25.9 405.7 491.0 0 0CL +ATOM 1009 C1 B 336 24.5 405.9 491.1 0 0CL +ATOM 1010 A1 B 336 25.6 406.2 490.9 0 0CL +ATOM 1011 COM B 337 147.2 424.3 398.6 0 0CL +ATOM 1012 C1 B 337 147.1 422.9 398.5 0 0CL +ATOM 1013 A1 B 337 146.9 424.0 398.2 0 0CL +ATOM 1014 COM B 338 401.9 104.8 433.5 0 0CL +ATOM 1015 C1 B 338 403.0 104.0 433.5 0 0CL +ATOM 1016 A1 B 338 402.2 104.7 434.0 0 0CL +ATOM 1017 COM B 339 149.2 64.5 106.9 0 0CL +ATOM 1018 C1 B 339 149.2 64.8 108.3 0 0CL +ATOM 1019 A1 B 339 148.8 64.3 107.3 0 0CL +ATOM 1020 COM B 340 223.2 252.7 80.9 0 0CL +ATOM 1021 C1 B 340 222.0 252.8 81.7 0 0CL +ATOM 1022 A1 B 340 223.2 252.9 81.5 0 0CL +ATOM 1023 COM B 341 278.8 481.4 326.8 0 0CL +ATOM 1024 C1 B 341 278.5 482.7 326.2 0 0CL +ATOM 1025 A1 B 341 278.2 481.6 326.7 0 0CL +ATOM 1026 COM B 342 320.5 455.0 392.9 0 0CL +ATOM 1027 C1 B 342 319.2 455.7 392.9 0 0CL +ATOM 1028 A1 B 342 320.2 455.1 393.4 0 0CL +ATOM 1029 COM B 343 225.0 110.0 492.9 0 0CL +ATOM 1030 C1 B 343 225.8 110.8 493.8 0 0CL +ATOM 1031 A1 B 343 225.6 109.9 492.9 0 0CL +ATOM 1032 COM B 344 233.4 121.6 366.2 0 0CL +ATOM 1033 C1 B 344 233.1 122.5 365.1 0 0CL +ATOM 1034 A1 B 344 233.4 121.4 365.6 0 0CL +ATOM 1035 COM B 345 418.7 335.9 198.6 0 0CL +ATOM 1036 C1 B 345 417.6 336.0 199.4 0 0CL +ATOM 1037 A1 B 345 418.2 336.3 198.4 0 0CL +ATOM 1038 COM B 346 431.8 376.5 422.8 0 0CL +ATOM 1039 C1 B 346 432.0 377.6 423.7 0 0CL +ATOM 1040 A1 B 346 431.5 376.5 423.3 0 0CL +ATOM 1041 COM B 347 468.1 375.1 153.7 0 0CL +ATOM 1042 C1 B 347 468.2 373.9 154.4 0 0CL +ATOM 1043 A1 B 347 468.0 374.6 153.4 0 0CL +ATOM 1044 COM B 348 35.6 450.3 260.5 0 0CL +ATOM 1045 C1 B 348 35.3 450.5 261.8 0 0CL +ATOM 1046 A1 B 348 35.7 450.8 260.7 0 0CL +ATOM 1047 COM B 349 253.8 380.0 265.7 0 0CL +ATOM 1048 C1 B 349 253.0 380.6 264.7 0 0CL +ATOM 1049 A1 B 349 253.3 380.4 265.9 0 0CL +ATOM 1050 COM B 350 349.5 180.2 105.9 0 0CL +ATOM 1051 C1 B 350 348.5 181.0 105.2 0 0CL +ATOM 1052 A1 B 350 348.9 180.2 106.0 0 0CL +ATOM 1053 COM B 351 59.3 365.8 128.3 0 0CL +ATOM 1054 C1 B 351 58.9 364.4 128.3 0 0CL +ATOM 1055 A1 B 351 58.8 365.6 128.4 0 0CL +ATOM 1056 COM B 352 372.2 437.5 461.3 0 0CL +ATOM 1057 C1 B 352 372.1 437.0 459.9 0 0CL +ATOM 1058 A1 B 352 372.3 436.9 461.1 0 0CL +ATOM 1059 COM B 353 275.1 38.3 19.7 0 0CL +ATOM 1060 C1 B 353 276.0 38.5 20.8 0 0CL +ATOM 1061 A1 B 353 275.4 37.8 20.0 0 0CL +ATOM 1062 COM B 354 267.2 481.6 445.1 0 0CL +ATOM 1063 C1 B 354 265.8 481.8 445.3 0 0CL +ATOM 1064 A1 B 354 266.8 481.3 444.8 0 0CL +ATOM 1065 COM B 355 111.1 178.5 280.9 0 0CL +ATOM 1066 C1 B 355 112.5 177.9 281.0 0 0CL +ATOM 1067 A1 B 355 111.6 178.9 280.9 0 0CL +ATOM 1068 COM B 356 483.8 2.3 401.5 0 0CL +ATOM 1069 C1 B 356 482.6 1.6 401.2 0 0CL +ATOM 1070 A1 B 356 483.7 1.8 401.8 0 0CL +ATOM 1071 COM B 357 336.9 388.1 22.8 0 0CL +ATOM 1072 C1 B 357 335.6 388.8 22.9 0 0CL +ATOM 1073 A1 B 357 336.7 388.5 23.3 0 0CL +ATOM 1074 COM B 358 402.7 346.6 36.6 0 0CL +ATOM 1075 C1 B 358 404.1 346.5 36.9 0 0CL +ATOM 1076 A1 B 358 403.1 346.8 36.2 0 0CL +ATOM 1077 COM B 359 398.2 213.2 159.9 0 0CL +ATOM 1078 C1 B 359 398.1 214.5 160.6 0 0CL +ATOM 1079 A1 B 359 398.6 213.7 159.8 0 0CL +ATOM 1080 COM B 360 283.5 371.2 364.3 0 0CL +ATOM 1081 C1 B 360 282.1 370.9 364.2 0 0CL +ATOM 1082 A1 B 360 283.3 370.8 363.9 0 0CL +ATOM 1083 COM B 361 94.3 394.4 143.0 0 0CL +ATOM 1084 C1 B 361 93.5 393.4 142.4 0 0CL +ATOM 1085 A1 B 361 94.1 394.0 143.3 0 0CL +ATOM 1086 COM B 362 6.0 45.6 71.4 0 0CL +ATOM 1087 C1 B 362 7.0 45.6 70.4 0 0CL +ATOM 1088 A1 B 362 6.3 46.1 71.2 0 0CL +ATOM 1089 COM B 363 471.8 58.0 229.5 0 0CL +ATOM 1090 C1 B 363 471.5 59.2 228.8 0 0CL +ATOM 1091 A1 B 363 471.6 58.0 228.9 0 0CL +ATOM 1092 COM B 364 250.0 23.3 10.8 0 0CL +ATOM 1093 C1 B 364 249.4 23.6 12.0 0 0CL +ATOM 1094 A1 B 364 250.2 23.0 11.3 0 0CL +ATOM 1095 COM B 365 365.2 191.5 3.1 0 0CL +ATOM 1096 C1 B 365 365.2 190.3 3.8 0 0CL +ATOM 1097 A1 B 365 365.7 191.2 3.2 0 0CL +ATOM 1098 COM B 366 279.7 345.5 417.2 0 0CL +ATOM 1099 C1 B 366 280.1 346.1 418.4 0 0CL +ATOM 1100 A1 B 366 279.9 345.2 417.6 0 0CL +ATOM 1101 COM B 367 127.2 418.6 98.0 0 0CL +ATOM 1102 C1 B 367 128.1 417.7 98.5 0 0CL +ATOM 1103 A1 B 367 127.1 418.4 98.5 0 0CL +ATOM 1104 COM B 368 249.7 188.1 316.8 0 0CL +ATOM 1105 C1 B 368 248.7 188.0 315.8 0 0CL +ATOM 1106 A1 B 368 249.3 187.7 316.8 0 0CL +ATOM 1107 COM B 369 123.5 31.8 459.6 0 0CL +ATOM 1108 C1 B 369 123.5 31.0 460.8 0 0CL +ATOM 1109 A1 B 369 123.2 32.0 460.2 0 0CL +ATOM 1110 COM B 370 486.2 329.5 215.8 0 0CL +ATOM 1111 C1 B 370 486.9 330.7 215.5 0 0CL +ATOM 1112 A1 B 370 486.6 329.5 215.3 0 0CL +ATOM 1113 COM B 371 465.9 112.4 132.3 0 0CL +ATOM 1114 C1 B 371 466.4 111.2 131.7 0 0CL +ATOM 1115 A1 B 371 465.7 111.8 132.4 0 0CL +ATOM 1116 COM B 372 480.6 331.1 93.2 0 0CL +ATOM 1117 C1 B 372 480.3 332.4 92.7 0 0CL +ATOM 1118 A1 B 372 480.0 331.3 93.3 0 0CL +ATOM 1119 COM B 373 331.5 26.4 123.3 0 0CL +ATOM 1120 C1 B 373 330.7 25.3 123.4 0 0CL +ATOM 1121 A1 B 373 331.6 26.0 123.7 0 0CL +ATOM 1122 COM B 374 364.8 360.8 450.8 0 0CL +ATOM 1123 C1 B 374 365.7 361.7 451.4 0 0CL +ATOM 1124 A1 B 374 365.4 360.8 450.6 0 0CL +ATOM 1125 COM B 375 28.9 346.2 450.3 0 0CL +ATOM 1126 C1 B 375 27.4 346.0 450.4 0 0CL +ATOM 1127 A1 B 375 28.5 346.6 450.1 0 0CL +ATOM 1128 COM B 376 81.5 481.7 165.5 0 0CL +ATOM 1129 C1 B 376 81.4 480.5 164.6 0 0CL +ATOM 1130 A1 B 376 82.0 481.4 165.3 0 0CL +ATOM 1131 COM B 377 53.1 318.5 421.7 0 0CL +ATOM 1132 C1 B 377 52.8 319.3 420.5 0 0CL +ATOM 1133 A1 B 377 53.3 319.1 421.6 0 0CL +ATOM 1134 COM B 378 192.3 94.6 51.9 0 0CL +ATOM 1135 C1 B 378 192.9 94.0 53.0 0 0CL +ATOM 1136 A1 B 378 192.7 94.9 52.2 0 0CL +ATOM 1137 COM B 379 356.6 215.6 21.6 0 0CL +ATOM 1138 C1 B 379 355.5 216.0 22.4 0 0CL +ATOM 1139 A1 B 379 356.0 215.7 21.4 0 0CL +ATOM 1140 COM B 380 55.0 345.6 111.4 0 0CL +ATOM 1141 C1 B 380 55.1 344.2 111.4 0 0CL +ATOM 1142 A1 B 380 54.5 345.3 111.5 0 0CL +ATOM 1143 COM B 381 341.7 262.4 275.5 0 0CL +ATOM 1144 C1 B 381 342.8 261.8 274.9 0 0CL +ATOM 1145 A1 B 381 341.9 262.6 275.0 0 0CL +ATOM 1146 COM B 382 441.3 155.2 467.0 0 0CL +ATOM 1147 C1 B 382 442.3 155.1 465.9 0 0CL +ATOM 1148 A1 B 382 441.9 155.1 467.1 0 0CL +ATOM 1149 COM B 383 106.4 467.5 389.1 0 0CL +ATOM 1150 C1 B 383 106.4 466.3 389.8 0 0CL +ATOM 1151 A1 B 383 106.0 467.4 389.6 0 0CL +ATOM 1152 COM B 384 232.5 374.1 320.7 0 0CL +ATOM 1153 C1 B 384 231.6 373.2 321.3 0 0CL +ATOM 1154 A1 B 384 232.0 374.3 321.1 0 0CL +ATOM 1155 COM B 385 8.1 312.2 244.9 0 0CL +ATOM 1156 C1 B 385 7.0 313.1 245.0 0 0CL +ATOM 1157 A1 B 385 7.6 312.0 244.8 0 0CL +ATOM 1158 COM B 386 417.6 171.0 32.4 0 0CL +ATOM 1159 C1 B 386 417.9 171.7 31.2 0 0CL +ATOM 1160 A1 B 386 417.9 171.5 32.4 0 0CL +ATOM 1161 COM B 387 96.0 351.6 236.5 0 0CL +ATOM 1162 C1 B 387 95.7 350.3 237.1 0 0CL +ATOM 1163 A1 B 387 95.6 351.2 236.3 0 0CL +ATOM 1164 COM B 388 93.6 156.0 142.9 0 0CL +ATOM 1165 C1 B 388 92.8 157.1 142.6 0 0CL +ATOM 1166 A1 B 388 93.5 156.2 142.3 0 0CL +ATOM 1167 COM B 389 205.5 336.3 454.1 0 0CL +ATOM 1168 C1 B 389 206.3 337.2 454.9 0 0CL +ATOM 1169 A1 B 389 205.2 336.8 454.4 0 0CL +ATOM 1170 COM B 390 26.5 242.4 182.3 0 0CL +ATOM 1171 C1 B 390 27.5 243.3 181.9 0 0CL +ATOM 1172 A1 B 390 27.1 242.2 182.3 0 0CL +ATOM 1173 COM B 391 244.6 81.0 316.3 0 0CL +ATOM 1174 C1 B 391 243.5 81.9 316.1 0 0CL +ATOM 1175 A1 B 391 244.5 81.5 316.7 0 0CL +ATOM 1176 COM B 392 261.2 279.5 304.5 0 0CL +ATOM 1177 C1 B 392 261.5 279.3 303.1 0 0CL +ATOM 1178 A1 B 392 261.7 279.3 304.3 0 0CL +ATOM 1179 COM B 393 226.3 67.9 275.3 0 0CL +ATOM 1180 C1 B 393 225.1 67.5 274.5 0 0CL +ATOM 1181 A1 B 393 226.0 68.3 274.9 0 0CL +ATOM 1182 COM B 394 396.8 334.6 83.4 0 0CL +ATOM 1183 C1 B 394 397.9 333.7 83.1 0 0CL +ATOM 1184 A1 B 394 396.7 334.0 83.2 0 0CL +ATOM 1185 COM B 395 201.8 86.1 304.8 0 0CL +ATOM 1186 C1 B 395 201.3 86.4 303.5 0 0CL +ATOM 1187 A1 B 395 202.0 85.9 304.3 0 0CL +ATOM 1188 COM B 396 295.3 240.7 12.8 0 0CL +ATOM 1189 C1 B 396 295.4 239.4 12.1 0 0CL +ATOM 1190 A1 B 396 295.2 240.6 12.2 0 0CL +ATOM 1191 COM B 397 6.9 403.5 355.5 0 0CL +ATOM 1192 C1 B 397 7.8 404.1 354.6 0 0CL +ATOM 1193 A1 B 397 7.3 404.0 355.7 0 0CL +ATOM 1194 COM B 398 7.1 300.4 422.5 0 0CL +ATOM 1195 C1 B 398 5.8 299.9 422.4 0 0CL +ATOM 1196 A1 B 398 6.8 300.6 422.1 0 0CL +ATOM 1197 COM B 399 486.3 69.7 193.4 0 0CL +ATOM 1198 C1 B 399 487.2 69.3 194.5 0 0CL +ATOM 1199 A1 B 399 486.1 69.8 194.0 0 0CL +ATOM 1200 COM B 400 401.9 79.5 95.4 0 0CL +ATOM 1201 C1 B 400 402.5 78.9 94.2 0 0CL +ATOM 1202 A1 B 400 401.5 79.3 94.9 0 0CL +ATOM 1203 COM B 401 447.9 14.9 347.9 0 0CL +ATOM 1204 C1 B 401 446.5 14.8 348.4 0 0CL +ATOM 1205 A1 B 401 447.5 15.4 347.8 0 0CL +ATOM 1206 COM B 402 250.6 155.9 139.8 0 0CL +ATOM 1207 C1 B 402 251.7 156.9 139.7 0 0CL +ATOM 1208 A1 B 402 251.2 155.8 139.6 0 0CL +ATOM 1209 COM B 403 324.0 421.4 180.8 0 0CL +ATOM 1210 C1 B 403 325.2 420.9 181.3 0 0CL +ATOM 1211 A1 B 403 324.3 421.7 181.1 0 0CL +ATOM 1212 COM B 404 169.0 430.6 379.5 0 0CL +ATOM 1213 C1 B 404 170.4 430.2 379.6 0 0CL +ATOM 1214 A1 B 404 169.2 430.0 379.5 0 0CL +ATOM 1215 COM B 405 101.4 264.2 351.9 0 0CL +ATOM 1216 C1 B 405 102.0 265.1 352.8 0 0CL +ATOM 1217 A1 B 405 101.2 264.7 352.0 0 0CL +ATOM 1218 COM B 406 403.9 367.2 267.4 0 0CL +ATOM 1219 C1 B 406 404.2 368.5 266.9 0 0CL +ATOM 1220 A1 B 406 404.2 367.6 267.7 0 0CL +ATOM 1221 COM B 407 250.2 173.4 327.9 0 0CL +ATOM 1222 C1 B 407 251.1 173.9 329.0 0 0CL +ATOM 1223 A1 B 407 250.8 173.2 328.0 0 0CL +ATOM 1224 COM B 408 116.3 356.5 353.5 0 0CL +ATOM 1225 C1 B 408 115.6 355.6 354.4 0 0CL +ATOM 1226 A1 B 408 116.5 356.0 353.8 0 0CL +ATOM 1227 COM B 409 94.6 58.8 179.6 0 0CL +ATOM 1228 C1 B 409 95.3 59.5 180.7 0 0CL +ATOM 1229 A1 B 409 94.4 58.9 180.2 0 0CL +ATOM 1230 COM B 410 355.6 204.6 366.6 0 0CL +ATOM 1231 C1 B 410 354.2 204.3 366.3 0 0CL +ATOM 1232 A1 B 410 355.2 204.5 367.0 0 0CL +ATOM 1233 COM B 411 164.9 274.7 91.1 0 0CL +ATOM 1234 C1 B 411 165.8 275.8 91.1 0 0CL +ATOM 1235 A1 B 411 164.7 275.2 91.0 0 0CL +ATOM 1236 COM B 412 49.6 445.5 367.0 0 0CL +ATOM 1237 C1 B 412 49.2 445.7 368.3 0 0CL +ATOM 1238 A1 B 412 49.1 445.5 367.1 0 0CL +ATOM 1239 COM B 413 210.0 497.2 397.1 0 0CL +ATOM 1240 C1 B 413 210.9 496.3 396.4 0 0CL +ATOM 1241 A1 B 413 210.1 497.3 396.5 0 0CL +ATOM 1242 COM B 414 182.9 410.2 181.4 0 0CL +ATOM 1243 C1 B 414 182.1 409.0 181.7 0 0CL +ATOM 1244 A1 B 414 182.3 410.1 181.3 0 0CL +ATOM 1245 COM B 415 5.4 397.3 351.8 0 0CL +ATOM 1246 C1 B 415 4.9 396.7 350.6 0 0CL +ATOM 1247 A1 B 415 5.6 397.5 351.3 0 0CL +ATOM 1248 COM B 416 465.2 192.9 317.2 0 0CL +ATOM 1249 C1 B 416 464.4 191.8 316.8 0 0CL +ATOM 1250 A1 B 416 464.6 192.9 317.3 0 0CL +ATOM 1251 COM B 417 21.6 450.8 491.6 0 0CL +ATOM 1252 C1 B 417 21.3 450.7 493.0 0 0CL +ATOM 1253 A1 B 417 21.3 451.2 491.9 0 0CL +ATOM 1254 COM B 418 199.4 421.9 243.8 0 0CL +ATOM 1255 C1 B 418 199.1 422.1 245.1 0 0CL +ATOM 1256 A1 B 418 199.7 422.2 244.1 0 0CL +ATOM 1257 COM B 419 298.0 447.4 362.5 0 0CL +ATOM 1258 C1 B 419 296.7 447.1 363.0 0 0CL +ATOM 1259 A1 B 419 297.5 447.4 362.2 0 0CL +ATOM 1260 COM B 420 273.1 242.9 335.4 0 0CL +ATOM 1261 C1 B 420 273.0 243.8 336.4 0 0CL +ATOM 1262 A1 B 420 273.2 243.5 335.3 0 0CL +ATOM 1263 COM B 421 366.5 29.1 273.7 0 0CL +ATOM 1264 C1 B 421 367.6 28.3 273.9 0 0CL +ATOM 1265 A1 B 421 367.0 29.1 273.3 0 0CL +ATOM 1266 COM B 422 217.0 195.8 305.3 0 0CL +ATOM 1267 C1 B 422 216.6 196.2 306.6 0 0CL +ATOM 1268 A1 B 422 217.4 196.0 305.7 0 0CL +ATOM 1269 COM B 423 385.1 429.8 389.7 0 0CL +ATOM 1270 C1 B 423 384.4 430.3 388.5 0 0CL +ATOM 1271 A1 B 423 384.7 430.2 389.7 0 0CL +ATOM 1272 COM B 424 157.2 34.8 436.4 0 0CL +ATOM 1273 C1 B 424 156.3 35.5 435.4 0 0CL +ATOM 1274 A1 B 424 156.6 34.8 436.4 0 0CL +ATOM 1275 COM B 425 489.7 228.4 290.3 0 0CL +ATOM 1276 C1 B 425 489.7 229.1 291.6 0 0CL +ATOM 1277 A1 B 425 490.2 228.5 290.7 0 0CL +ATOM 1278 COM B 426 56.6 369.4 462.9 0 0CL +ATOM 1279 C1 B 426 56.5 368.8 461.6 0 0CL +ATOM 1280 A1 B 426 56.3 368.9 462.8 0 0CL +ATOM 1281 COM B 427 242.4 177.0 40.4 0 0CL +ATOM 1282 C1 B 427 243.1 176.3 41.5 0 0CL +ATOM 1283 A1 B 427 242.4 177.1 41.0 0 0CL +ATOM 1284 COM B 428 442.9 473.5 462.4 0 0CL +ATOM 1285 C1 B 428 441.7 473.3 461.6 0 0CL +ATOM 1286 A1 B 428 442.4 473.8 462.6 0 0CL +ATOM 1287 COM B 429 178.5 17.5 434.2 0 0CL +ATOM 1288 C1 B 429 178.5 17.1 432.9 0 0CL +ATOM 1289 A1 B 429 178.4 16.9 434.1 0 0CL +ATOM 1290 COM B 430 403.3 384.2 236.3 0 0CL +ATOM 1291 C1 B 430 402.9 385.0 235.2 0 0CL +ATOM 1292 A1 B 430 402.9 384.7 236.4 0 0CL +ATOM 1293 COM B 431 496.8 365.0 44.7 0 0CL +ATOM 1294 C1 B 431 498.2 364.5 44.8 0 0CL +ATOM 1295 A1 B 431 497.1 365.0 45.2 0 0CL +ATOM 1296 COM B 432 42.1 299.3 309.4 0 0CL +ATOM 1297 C1 B 432 41.6 298.5 308.4 0 0CL +ATOM 1298 A1 B 432 42.2 299.4 308.8 0 0CL +ATOM 1299 COM B 433 476.4 285.2 443.6 0 0CL +ATOM 1300 C1 B 433 477.5 286.1 443.3 0 0CL +ATOM 1301 A1 B 433 477.0 285.0 443.5 0 0CL +ATOM 1302 COM B 434 126.2 278.3 322.6 0 0CL +ATOM 1303 C1 B 434 126.8 277.0 322.6 0 0CL +ATOM 1304 A1 B 434 126.1 277.9 323.0 0 0CL +ATOM 1305 COM B 435 402.7 327.1 154.2 0 0CL +ATOM 1306 C1 B 435 402.7 326.3 155.3 0 0CL +ATOM 1307 A1 B 435 402.5 327.3 154.7 0 0CL +ATOM 1308 COM B 436 187.1 406.6 7.2 0 0CL +ATOM 1309 C1 B 436 187.4 408.0 7.1 0 0CL +ATOM 1310 A1 B 436 187.6 406.8 7.3 0 0CL +ATOM 1311 COM B 437 75.0 401.2 331.8 0 0CL +ATOM 1312 C1 B 437 74.4 402.5 332.0 0 0CL +ATOM 1313 A1 B 437 74.7 401.4 331.4 0 0CL +ATOM 1314 COM B 438 136.9 89.8 108.6 0 0CL +ATOM 1315 C1 B 438 137.3 88.7 107.7 0 0CL +ATOM 1316 A1 B 438 136.9 89.2 108.8 0 0CL +ATOM 1317 COM B 439 77.8 326.5 120.2 0 0CL +ATOM 1318 C1 B 439 76.6 327.2 120.4 0 0CL +ATOM 1319 A1 B 439 77.3 326.3 119.9 0 0CL +ATOM 1320 COM B 440 413.1 447.3 254.9 0 0CL +ATOM 1321 C1 B 440 413.5 448.6 255.3 0 0CL +ATOM 1322 A1 B 440 413.5 447.4 255.4 0 0CL +ATOM 1323 COM B 441 17.6 65.4 245.3 0 0CL +ATOM 1324 C1 B 441 16.4 66.1 245.3 0 0CL +ATOM 1325 A1 B 441 17.1 65.1 245.3 0 0CL +ATOM 1326 COM B 442 60.5 267.0 334.8 0 0CL +ATOM 1327 C1 B 442 61.6 267.4 335.6 0 0CL +ATOM 1328 A1 B 442 60.8 267.5 334.7 0 0CL +ATOM 1329 COM B 443 223.0 260.9 156.2 0 0CL +ATOM 1330 C1 B 443 224.4 260.7 155.7 0 0CL +ATOM 1331 A1 B 443 223.5 261.2 156.4 0 0CL +ATOM 1332 COM B 444 226.8 256.9 418.2 0 0CL +ATOM 1333 C1 B 444 226.9 258.1 418.9 0 0CL +ATOM 1334 A1 B 444 226.3 257.2 418.4 0 0CL +ATOM 1335 COM B 445 150.7 380.0 482.2 0 0CL +ATOM 1336 C1 B 445 150.3 380.2 483.6 0 0CL +ATOM 1337 A1 B 445 150.7 379.5 482.6 0 0CL +ATOM 1338 COM B 446 188.1 476.2 218.6 0 0CL +ATOM 1339 C1 B 446 188.9 475.5 217.6 0 0CL +ATOM 1340 A1 B 446 188.5 475.8 218.7 0 0CL +ATOM 1341 COM B 447 400.4 87.9 20.8 0 0CL +ATOM 1342 C1 B 447 401.8 87.9 21.1 0 0CL +ATOM 1343 A1 B 447 400.8 88.3 20.5 0 0CL +ATOM 1344 COM B 448 15.1 32.0 260.8 0 0CL +ATOM 1345 C1 B 448 14.4 33.0 261.5 0 0CL +ATOM 1346 A1 B 448 15.2 32.6 260.7 0 0CL +ATOM 1347 COM B 449 159.4 354.5 351.7 0 0CL +ATOM 1348 C1 B 449 159.4 353.5 350.8 0 0CL +ATOM 1349 A1 B 449 159.6 354.0 351.8 0 0CL diff --git a/het3mer/parms.inp b/het3mer/parms.inp new file mode 100644 index 00000000..2fc8a02f --- /dev/null +++ b/het3mer/parms.inp @@ -0,0 +1,66 @@ +start parameters + nItr = 1000000 + timeStep = 0.1 + timeWrite = 10000 + trajWrite = 100000 + pdbWrite = 100000 + restartWrite = 100000 + checkPoint = 100000 + transitionWrite = 100000 + clusterOverlapCheck = false + scaleMaxDisplace = 100.0 + overlapSepLimit = 0.1 +end parameters + +start boundaries + WaterBox = [500.0, 500.0, 500.0] + hasCompartment = false + compartmentR = 0 + compartmentSiteD = 0 + compartmentSiteRho = 0 +end boundaries + +start molecules + C : 150 + A : 150 + B : 150 +end molecules + +start reactions + C(A1) + A(C1) <-> C(A1!1).A(C1!1) + onRate3Dka = 1000.0 + offRatekb = 0.0 + sigma = 0.9322359085083007 + norm1 = [0, 0, 1] + norm2 = [0, 0, 1] + assocAngles = [1.714723, 1.771477, -2.872323, 1.016331, -2.661668] + length3Dto2D = 2.0 + bindRadSameCom = 1.5 + loopCoopFactor = 1.0 + excludeVolumeBound = False + + C(B1) + B(C1) <-> C(B1!1).B(C1!1) + onRate3Dka = 1000.0 + offRatekb = 0.0 + sigma = 0.717735481262207 + norm1 = [0, 0, 1] + norm2 = [0, 0, 1] + assocAngles = [2.744988, 2.569596, 0.642691, -1.523236, 1.645259] + length3Dto2D = 2.0 + bindRadSameCom = 1.5 + loopCoopFactor = 1.0 + excludeVolumeBound = False + + A(B1) + B(A1) <-> A(B1!1).B(A1!1) + onRate3Dka = 1000.0 + offRatekb = 0.0 + sigma = 0.6551324367523194 + norm1 = [0, 0, 1] + norm2 = [0, 0, 1] + assocAngles = [2.525500, 2.750070, -2.409915, -1.480280, -2.301118] + length3Dto2D = 2.0 + bindRadSameCom = 1.5 + loopCoopFactor = 1.0 + excludeVolumeBound = False + +end reactions diff --git a/ionerdss-simularium-module-test.ipynb b/ionerdss-simularium-module-test.ipynb new file mode 100644 index 00000000..ab7f5d8b --- /dev/null +++ b/ionerdss-simularium-module-test.ipynb @@ -0,0 +1,110 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f8110ba6-999e-41f9-b413-89f0acaede9e", + "metadata": {}, + "outputs": [], + "source": [ + "import ionerdss as ion" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "02b6c1bc-b886-410a-8e3f-829047eda225", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading PDB Data -------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/hsohail1/.local/lib/python3.10/site-packages/MDAnalysis/topology/PDBParser.py:350: UserWarning: Element information is missing, elements attribute will not be populated. If needed these can be guessed using universe.guess_TopologyAttrs(context='default', to_guess=['elements']).\n", + " warnings.warn(\"Element information is missing, elements attribute \"\n", + "/home/hsohail1/.local/lib/python3.10/site-packages/MDAnalysis/topology/PDBParser.py:350: UserWarning: Element information is missing, elements attribute will not be populated. If needed these can be guessed using universe.guess_TopologyAttrs(context='default', to_guess=['elements']).\n", + " warnings.warn(\"Element information is missing, elements attribute \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Filtering: translation -------------\n", + "Converting Trajectory Data to Binary -------------\n", + "Writing Binary -------------\n", + "saved to module_test_het3mer_with_LazyLoader.simularium\n" + ] + } + ], + "source": [ + "input_folder = \"./het3mer\" \n", + "'''\n", + "input folder must contain all the .mol files and the .inp file for the NERDSS simulation, in addition to\n", + "in addition to a subfolder named PDB which constains all the .pdb output files from a NERDSS simulation.\n", + "This folder is basically the same folder where a NERDSS simulation is run. \n", + "'''\n", + "output_name = \"module_test_het3mer_with_LazyLoader\" #this names the output .simularium file. The file is placed in the current working directory.\n", + "\n", + "ion.convert_simularium(input_folder, output_name) #calls the function and does the conversion." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bf0aa6a0-58fa-4124-ac56-48f86395b1d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ion.convert_simularium" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4712510-32d7-4e79-8e11-c781f17c77ae", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ionerdss/__init__.py b/ionerdss/__init__.py index 4c1576fa..9e8a9f29 100644 --- a/ionerdss/__init__.py +++ b/ionerdss/__init__.py @@ -1,109 +1,143 @@ -# ionerdss/__init__.py +""" +ionerdss: A user-friendly toolkit for setting up +NERDSS simulations and analyzing results. +================================================ -# setup logging level +Documentation is available in the docstrings and +online at https://ionerdss.readthedocs.io/en/ + +Subpackages +----------- +:: + + Simulation --- Main class for running simulations. + Analysis --- Main class for analyzing simulation data. + Model --- The core model class for defining the system. + MoleculeType --- Defines a type of molecule in the model. + MoleculeInterface --- Defines the binding interface for a molecule. + ReactionType --- Defines a type of reaction in the model. + Coords --- Represents 3D coordinates. + PDBModel --- Creates a model from a PDB file. + DesignModel --- A model for designing molecular structures. + PlatonicSolid --- Class for generating platonic solid geometries. + generate_ode_model_from_pdb --- Generates an ODE model from PDB complexes. + ParseComplexes --- Alias for generate_ode_model_from_pdb. + ReactionStringParser --- Parses reaction definitions from a string. + solve_reaction_ode --- Solves reaction kinetics using Ordinary Differential Equations (ODEs). + reaction_dydt --- The rate-of-change function (dy/dt) for the ODE solver. + calculate_macroscopic_reaction_rates --- Calculates macroscopic reaction rates from microscopic parameters. + SimpleGillespie --- Implements the Gillespie stochastic simulation algorithm (SSA). + AdaptiveRates --- Implements adaptive rate constants for simulations. + gui --- Launches the main graphical user interface. + pdb_gui --- A specific GUI for PDB file manipulation and viewing. + cube_face --- Component class for a cube face. + cube_vert --- Component class for a cube vertex. + dode_face --- Component class for a dodecahedron face. + dode_vert --- Component class for a dodecahedron vertex. + icos_face --- Component class for an icosahedron face. + icos_vert --- Component class for an icosahedron vertex. + octa_face --- Component class for an octahedron face. + octa_vert --- Component class for an octahedron vertex. + tetr_face --- Component class for a tetrahedron face. + tetr_vert --- Component class for a tetrahedron vertex. + convert_simularium --- Converts simulation data to the Simularium format. + DataIO --- Handles reading and writing of simulation data. + +Public API in the main ionerdss namespace +----------------------------------------- +:: + + __version__ --- SciPy version string + +""" + +# >>>>>>>>>>>>>>>> setup logging level >>>>>>>>>>>>>>>> # TODO: Take user input to setup logging level. # This might be done when creating Analysis instance. -import logging -logging.basicConfig(level=logging.WARNING) - -class LazyLoader: - """Transparent lazy module loader""" - def __init__(self, module_path, attribute=None): - self.module_path = module_path - self.attribute = attribute - self.loaded_module = None - self.loaded_attribute = None - - def __call__(self, *args, **kwargs): - """Support calling the lazy-loaded object directly""" - if self.loaded_attribute is None: - if self.loaded_module is None: - import importlib - self.loaded_module = importlib.import_module(self.module_path, package="ionerdss") - - self.loaded_attribute = getattr(self.loaded_module, self.attribute) if self.attribute else self.loaded_module - - if callable(self.loaded_attribute): - return self.loaded_attribute(*args, **kwargs) - raise TypeError(f"{self.attribute} is not callable") - - def __getattr__(self, name): - """Access attributes of the lazy-loaded module/object""" - if self.loaded_module is None: - import importlib - self.loaded_module = importlib.import_module(self.module_path, package="ionerdss") - - if self.attribute: - if self.loaded_attribute is None: - self.loaded_attribute = getattr(self.loaded_module, self.attribute) - return getattr(self.loaded_attribute, name) - return getattr(self.loaded_module, name) - -# Lazily load core classes -Model = LazyLoader('.nerdss_model.model', 'Model') -MoleculeType = LazyLoader('.nerdss_model.model', 'MoleculeType') -MoleculeInterface = LazyLoader('.nerdss_model.model', 'MoleculeInterface') -ReactionType = LazyLoader('.nerdss_model.model', 'ReactionType') -Coords = LazyLoader('.nerdss_model.coords', 'Coords') -PDBModel = LazyLoader('.nerdss_model.pdb_model', 'PDBModel') -DesignModel = LazyLoader('.nerdss_model.design_model', 'DesignModel') -PlatonicSolid = LazyLoader('.nerdss_model.PlatonicSolids', 'PlatonicSolid') -ParseComplexes = LazyLoader('.nerdss_model.complex', 'generate_ode_model_from_pdb') -ReactionStringParser = LazyLoader('.ode_solver.reaction_string_parser', 'ReactionStringParser') -solve_reaction_ode = LazyLoader('.ode_solver.reaction_ode_solver', 'solve_reaction_ode') -reaction_dydt = LazyLoader('.ode_solver.reaction_ode_solver', 'dydt') -calculate_macroscopic_reaction_rates = LazyLoader('.ode_solver.reaction_ode_solver', 'calculate_macroscopic_reaction_rates') -SimpleGillespieSimulator = LazyLoader('.gillespie_simulation.simple_gillespie', 'SimpleGillespieSimulator') -gui = LazyLoader('.nerdss_guis.gui', 'gui') -pdb_gui = LazyLoader('.nerdss_guis.nerdss', 'nerdss') -cube_face = LazyLoader('.nerdss_model.platonic_solids.cube.cube_face', 'cube_face') -cube_vert = LazyLoader('.nerdss_model.platonic_solids.cube.cube_vert', 'cube_vert') -dode_face = LazyLoader('.nerdss_model.platonic_solids.dode.dode_face', 'dode_face') -dode_vert = LazyLoader('.nerdss_model.platonic_solids.dode.dode_vert', 'dode_vert') -icos_face = LazyLoader('.nerdss_model.platonic_solids.icos.icos_face', 'icos_face') -icos_vert = LazyLoader('.nerdss_model.platonic_solids.icos.icos_vert', 'icos_vert') -octa_face = LazyLoader('.nerdss_model.platonic_solids.octa.octa_face', 'octa_face') -octa_vert = LazyLoader('.nerdss_model.platonic_solids.octa.octa_vert', 'octa_vert') -tetr_face = LazyLoader('.nerdss_model.platonic_solids.tetr.tetr_face', 'tetr_face') -tetr_vert = LazyLoader('.nerdss_model.platonic_solids.tetr.tetr_vert', 'tetr_vert') - - -# Lazily load simulation and analysis modules -Simulation = LazyLoader('.nerdss_simulation.simulation', 'Simulation') -Analysis = LazyLoader('.nerdss_analysis.analysis', 'Analysis') -DataIO = LazyLoader('.nerdss_analysis.data_readers', 'DataIO') - -def configure_plotting(): - """Configure plotting styles - only call this when you're ready to plot.""" - import seaborn as sns - fontsize = 12 - sns.set_style("ticks") - sns.set_context("paper", rc={ - "font.size": fontsize, - "axes.titlesize": fontsize, - "axes.labelsize": fontsize, - "xtick.labelsize": fontsize, - "ytick.labelsize": fontsize, - "legend.fontsize": fontsize, - "font.family": "serif" - }) - -# Version information - only computed when __version__ is accessed -def _get_version(): - try: - import pkg_resources - return pkg_resources.get_distribution("ioNERDSS").version - except: - return "unknown" - -# Define __version__ as a property -class VersionProperty: - def __get__(self, obj, objtype=None): - return _get_version() - -class _ModuleProperties: - __version__ = VersionProperty() - -# Apply the properties -import sys -sys.modules[__name__].__class__ = type("ionerdss", (sys.modules[__name__].__class__, _ModuleProperties), {}) \ No newline at end of file +import logging as _logging +_logging.basicConfig(level=_logging.WARNING) +# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +# >>>>>>>>>>>>>>>> Version information >>>>>>>>>>>>>>>> +try: + import pkg_resources + __version__ = pkg_resources.get_distribution("ioNERDSS").version +except: + __version__ = "unknown (This might be a local copy)" +# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + +import importlib as _importlib + + +# A mapping from public API names to their internal module locations. +# Structure: +# 'PublicAPIName': ['.internal.module.path', 'ClassName'] +submodules = { + 'Model': ['.model.model', 'Model'], + 'MoleculeType': ['.model.model', 'MoleculeType'], + 'MoleculeInterface': ['.model.model', 'MoleculeInterface'], + 'ReactionType': ['.model.model', 'ReactionType'], + 'Coords': ['.model.coords', 'Coords'], + 'PDBModel': ['.model.pdb_model', 'PDBModel'], + 'DesignModel': ['.model.design_model', 'DesignModel'], + 'PlatonicSolid': ['.model.PlatonicSolids', 'PlatonicSolid'], + 'generate_ode_model_from_pdb': ['.model.complex', 'generate_ode_model_from_pdb'], + 'ParseComplexes': ['.model.complex', 'generate_ode_model_from_pdb'], + 'ReactionStringParser': ['.ode_solver.reaction_string_parser', 'ReactionStringParser'], + 'solve_reaction_ode': ['.ode_solver.reaction_ode_solver', 'solve_reaction_ode'], + 'reaction_dydt': ['.ode_solver.reaction_ode_solver', 'dydt'], + 'calculate_macroscopic_reaction_rates': ['.ode_solver.reaction_ode_solver', 'calculate_macroscopic_reaction_rates'], + 'SimpleGillespie': ['.gillespie_simulation.simple_gillespie', ''], + 'AdaptiveRates': ['.gillespie_simulation.adaptive_rates', ''], + 'gui': ['.nerdss_guis.gui', 'gui'], + 'pdb_gui': ['.nerdss_guis.nerdss', 'nerdss'], + 'cube_face': ['.model.platonic_solids.cube.cube_face', 'cube_face'], + 'cube_vert': ['.model.platonic_solids.cube.cube_vert', 'cube_vert'], + 'dode_face': ['.model.platonic_solids.dode.dode_face', 'dode_face'], + 'dode_vert': ['.model.platonic_solids.dode.dode_vert', 'dode_vert'], + 'icos_face': ['.model.platonic_solids.icos.icos_face', 'icos_face'], + 'icos_vert': ['.model.platonic_solids.icos.icos_vert', 'icos_vert'], + 'octa_face': ['.model.platonic_solids.octa.octa_face', 'octa_face'], + 'octa_vert': ['.model.platonic_solids.octa.octa_vert', 'octa_vert'], + 'tetr_face': ['.model.platonic_solids.tetr.tetr_face', 'tetr_face'], + 'tetr_vert': ['.model.platonic_solids.tetr.tetr_vert', 'tetr_vert'], + 'convert_simularium': ['.simularium_converter.simularium_converter', 'convert_simularium'], + 'Simulation': ['.nerdss_simulation.simulation', 'Simulation'], + 'Analysis': ['.nerdss_analysis.analysis', 'Analysis'], + 'DataIO': ['.nerdss_analysis.data_readers', 'DataIO'] +} + +__all__ = list(submodules.keys()) + [ + '__version__', +] + +def __dir__(): + return __all__ + +_module_loaded = {} + +def _get_module(module_path): + if module_path in _module_loaded: + module = _module_loaded[module_path] + else: + module = _importlib.import_module(module_path, package='ionerdss') + _module_loaded.update({module_path:module}) + return module + +def __getattr__(name): + if name in submodules: + _module_path, _attribute = submodules[name] + if bool(_attribute): + _module = _get_module(_module_path) + return getattr(_module, _attribute) + else: + return _get_module(_module_path) + else: + try: + return globals()[name] + except KeyError: + raise AttributeError( + f"Module 'ionerdss' has no attribute '{name}'" + ) + diff --git a/ionerdss/nerdss_analysis/__init__.py b/ionerdss/analysis/__init__.py similarity index 88% rename from ionerdss/nerdss_analysis/__init__.py rename to ionerdss/analysis/__init__.py index c4f3508e..ca640265 100644 --- a/ionerdss/nerdss_analysis/__init__.py +++ b/ionerdss/analysis/__init__.py @@ -10,17 +10,19 @@ PlotConfigure: Centralized plotting configuration and execution Usage: - # New modular API (recommended) - import ionerdss as ion - analysis = ion.Analysis("/path/to/simulations") - data = analysis.get_data(simulations=[0,1,2], species=["A","B"]) - plot = analysis.set_plot(figure_size=(12,8)) - plot.line_speciescopy_vs_time(data=data, legend=[["A"], ["B"]]) - - # Legacy API (backward compatible) - analysis = ion.Analysis("/path/to/simulations") - analysis.plot_figure(figure_type="line", x="time", y="species", - legend=[["A"], ["B"]], simulations=[0,1,2]) +```python +# New modular API (recommended) +import ionerdss as ion +analysis = ion.Analyzer("/path/to/simulations") +data = analysis.get_data(simulations=[0,1,2], species=["A","B"]) +plot = analysis.set_plot(figure_size=(12,8)) +plot.line_speciescopy_vs_time(data=data, legend=[["A"], ["B"]]) + +# Legacy API (backward compatible) +analysis = ion.Analyzer("/path/to/simulations") +analysis.plot_figure(figure_type="line", x="time", y="species", + legend=[["A"], ["B"]], simulations=[0,1,2]) +``` """ # ===================================================================== @@ -57,7 +59,7 @@ # ===================================================================== # Main interface -from .analysis import Analysis +from .core import Analyzer # Core components for advanced usage from .data import Data @@ -103,7 +105,7 @@ __author__ = "ionerdss development team" # Primary exports - most users only need Analysis -__all__ = ["Analysis"] +__all__ = ["Analyzer"] # Advanced API exports for power users __all__.extend(["Data", "PlotConfigure"]) @@ -156,7 +158,7 @@ def get_help(): import ionerdss as ion # Initialize analysis -analysis = ion.Analysis("/path/to/simulation/directory") +analysis = ion.Analyzer("/path/to/simulation/directory") # New modular API (recommended): data = analysis.get_data(simulations=[0,1,2]) # Select simulations diff --git a/ionerdss/nerdss_analysis/analysis.py b/ionerdss/analysis/core.py similarity index 99% rename from ionerdss/nerdss_analysis/analysis.py rename to ionerdss/analysis/core.py index 5341d74c..8377d7f3 100644 --- a/ionerdss/nerdss_analysis/analysis.py +++ b/ionerdss/analysis/core.py @@ -11,7 +11,7 @@ from .legacy import LegacyPlotInterface -class Analysis: +class Analyzer: """ Main interface for analyzing and visualizing NERDSS simulation results. diff --git a/ionerdss/nerdss_analysis/data/__init__.py b/ionerdss/analysis/data/__init__.py similarity index 100% rename from ionerdss/nerdss_analysis/data/__init__.py rename to ionerdss/analysis/data/__init__.py diff --git a/ionerdss/nerdss_analysis/data/core.py b/ionerdss/analysis/data/core.py similarity index 100% rename from ionerdss/nerdss_analysis/data/core.py rename to ionerdss/analysis/data/core.py diff --git a/ionerdss/nerdss_analysis/data/processors/__init__.py b/ionerdss/analysis/data/processors/__init__.py similarity index 100% rename from ionerdss/nerdss_analysis/data/processors/__init__.py rename to ionerdss/analysis/data/processors/__init__.py diff --git a/ionerdss/nerdss_analysis/data/processors/copy_numbers.py b/ionerdss/analysis/data/processors/copy_numbers.py similarity index 100% rename from ionerdss/nerdss_analysis/data/processors/copy_numbers.py rename to ionerdss/analysis/data/processors/copy_numbers.py diff --git a/ionerdss/nerdss_analysis/data/processors/histogram.py b/ionerdss/analysis/data/processors/histogram.py similarity index 100% rename from ionerdss/nerdss_analysis/data/processors/histogram.py rename to ionerdss/analysis/data/processors/histogram.py diff --git a/ionerdss/nerdss_analysis/data/processors/transitions.py b/ionerdss/analysis/data/processors/transitions.py similarity index 100% rename from ionerdss/nerdss_analysis/data/processors/transitions.py rename to ionerdss/analysis/data/processors/transitions.py diff --git a/ionerdss/nerdss_analysis/data/processors/utils.py b/ionerdss/analysis/data/processors/utils.py similarity index 100% rename from ionerdss/nerdss_analysis/data/processors/utils.py rename to ionerdss/analysis/data/processors/utils.py diff --git a/ionerdss/nerdss_analysis/data_readers.py b/ionerdss/analysis/data_readers.py similarity index 100% rename from ionerdss/nerdss_analysis/data_readers.py rename to ionerdss/analysis/data_readers.py diff --git a/ionerdss/nerdss_analysis/legacy/__init__.py b/ionerdss/analysis/legacy/__init__.py similarity index 100% rename from ionerdss/nerdss_analysis/legacy/__init__.py rename to ionerdss/analysis/legacy/__init__.py diff --git a/ionerdss/nerdss_analysis/legacy/interface.py b/ionerdss/analysis/legacy/interface.py similarity index 100% rename from ionerdss/nerdss_analysis/legacy/interface.py rename to ionerdss/analysis/legacy/interface.py diff --git a/ionerdss/nerdss_analysis/plot_figures.py b/ionerdss/analysis/plot_figures.py similarity index 100% rename from ionerdss/nerdss_analysis/plot_figures.py rename to ionerdss/analysis/plot_figures.py diff --git a/ionerdss/nerdss_analysis/plotting/__init__.py b/ionerdss/analysis/plotting/__init__.py similarity index 100% rename from ionerdss/nerdss_analysis/plotting/__init__.py rename to ionerdss/analysis/plotting/__init__.py diff --git a/ionerdss/nerdss_analysis/plotting/core.py b/ionerdss/analysis/plotting/core.py similarity index 100% rename from ionerdss/nerdss_analysis/plotting/core.py rename to ionerdss/analysis/plotting/core.py diff --git a/ionerdss/nerdss_analysis/plotting/heatmap_plots.py b/ionerdss/analysis/plotting/heatmap_plots.py similarity index 100% rename from ionerdss/nerdss_analysis/plotting/heatmap_plots.py rename to ionerdss/analysis/plotting/heatmap_plots.py diff --git a/ionerdss/nerdss_analysis/plotting/histogram_plots.py b/ionerdss/analysis/plotting/histogram_plots.py similarity index 100% rename from ionerdss/nerdss_analysis/plotting/histogram_plots.py rename to ionerdss/analysis/plotting/histogram_plots.py diff --git a/ionerdss/nerdss_analysis/plotting/line_plots.py b/ionerdss/analysis/plotting/line_plots.py similarity index 99% rename from ionerdss/nerdss_analysis/plotting/line_plots.py rename to ionerdss/analysis/plotting/line_plots.py index 2c42d3b9..a07f35b8 100644 --- a/ionerdss/nerdss_analysis/plotting/line_plots.py +++ b/ionerdss/analysis/plotting/line_plots.py @@ -506,7 +506,7 @@ def plot_complex_count_vs_time( print(f"Processed data saved to {save_path}") # Plot the data - plt.figure(figsize=figure_size) + plt.figure(figsize=figure_size, dpi=600) sns.set_style("ticks") # Define colors for different complex types diff --git a/ionerdss/nerdss_analysis/plotting/probability_plots.py b/ionerdss/analysis/plotting/probability_plots.py similarity index 100% rename from ionerdss/nerdss_analysis/plotting/probability_plots.py rename to ionerdss/analysis/plotting/probability_plots.py diff --git a/ionerdss/nerdss_analysis/plotting/three_d_plots.py b/ionerdss/analysis/plotting/three_d_plots.py similarity index 100% rename from ionerdss/nerdss_analysis/plotting/three_d_plots.py rename to ionerdss/analysis/plotting/three_d_plots.py diff --git a/ionerdss/gillespie_simulation/adaptive_rates.py b/ionerdss/gillespie_simulation/adaptive_rates.py new file mode 100644 index 00000000..0bd5c04b --- /dev/null +++ b/ionerdss/gillespie_simulation/adaptive_rates.py @@ -0,0 +1,151 @@ +""" +This script contains functions for calculating adaptive +rates in 1D (2D in future) bimolecular reactions + +@author: MSANG +@email: msang2@jh.edu +""" + +# >>>>>> For autocompletion >>>>>> +__all__ = [ + "adaptive_bimolecular_rate_1D", +] +def __dir__(): + return __all__ +# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +import numpy as np +def adaptive_bimolecular_rate_1D( + ratelist, y_curr, reactant_matrix:np.ndarray, Length, + diffusion_constants, sigmalist, reverse_reaction_pairs:dict[int,int], + ): + """ + Update the bimolecular macroscopic rate. + k_on = ( 1/k_a + (b-sigma)/3D )^-1 + Here ka is the microscopic rate; b is the mean-field space taken by the reactant + with more copy numbers; sigma is the bond length; and D is the total diffusion + constant = D1 + D2 + + Args: + ratelist: it contains both ka in nm/s and kb in s^-1 + y_curr: current copy numbers + reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. + Length: length in nm + diffusion_constants (array like): diffusion constant of each species + sigmas (array like): sigma of each reaction. Dissociation may take sigma=0. + reverse_reaction_pairs (dict): pair forward reaction to its reverse reaction in + the form of {forward_index:reverse_index} + + Returns: + kon: Macroscopic rate constants + + Usage: + ```python + import numpy as np + + # For dimerization + ratelist = np.array([10, 0.2]) + y_curr = np.array([10, 3]) + reactant_matrix = np.array([[2, 0], [0,1]]) + Length = 50 + diffusion_constants = np.array([0.1, 0.05]) + sigmalist = np.array([1, 0]) + reverse_reaction_pairs = {0:1} + print(adaptive_bimolecular_rate_1D( + ratelist, y_curr, reactant_matrix, Length, + diffusion_constants, sigmalist, reverse_reaction_pairs, + )) + + # For other bimolecular reactions + ratelist = np.array([10, 0.2]) + y_curr = np.array([5, 5, 3]) + reactant_matrix = np.array([[1, 1, 0], [0, 0, 1]]) + Length = 50 + diffusion_constants = np.array([0.1, 0.1, 0.05]) + sigmalist = np.array([1, 0]) + reverse_reaction_pairs = {0:1} + print(adaptive_bimolecular_rate_1D( + ratelist, y_curr, reactant_matrix, Length, + diffusion_constants, sigmalist, reverse_reaction_pairs, + )) + ``` + """ + + # san check: + # Species and diffusion constants are one-by-one mapped + if len(diffusion_constants) != reactant_matrix.shape[1]: + raise ValueError(f'diffusion_constants size ({len(diffusion_constants)}) does not match the number of species ({reactant_matrix.shape[1]})') + # Reactions and sigmas are one-by-one mapped + if len(sigmalist) != reactant_matrix.shape[0]: + raise ValueError(f'sigmas size ({len(sigmalist)}) does not match the number of reactions ({reactant_matrix.shape[0]})') + assert len(ratelist)==reactant_matrix.shape[0], f"ratelist size ({len(ratelist)}) does not match the number of reactions ({reactant_matrix.shape[0]})" + assert len(y_curr)==reactant_matrix.shape[1], f"y_curr size ({len(y_curr)}) does not match the number of species ({reactant_matrix.shape[1]})" + + # initiate kon list + new_ratelist = np.zeros_like(ratelist) + # calculate kon + for reactionid, row in enumerate(reactant_matrix): + # Find positions where the value is 1 + reactant_ids = np.where(row == 1)[0] + dimerization_id = np.where(row == 2)[0] + # Find bimolecular reactions + if len(reactant_ids) == 2: + # find the spicies with more copy numbers + species_id_more_counts = reactant_ids[np.argmax(y_curr[reactant_ids])] + b = Length / y_curr[species_id_more_counts] + D_tot = np.sum([diffusion_constants[i] for i in reactant_ids]) + sigma = sigmalist[reactionid] + ka = ratelist[reactionid] + new_ratelist[reactionid] = ( 1/ka + (b-sigma)/3/D_tot )**(-1) + reverse_reaction_id = reverse_reaction_pairs[reactionid] + kb = ratelist[reverse_reaction_id] + new_ratelist[reverse_reaction_id] = kb * new_ratelist[reactionid] / ka + # dimerization is a special case + elif len(dimerization_id) == 1: + b = Length / y_curr[dimerization_id[0]] + D_tot = 2 * diffusion_constants[dimerization_id[0]] + sigma = sigmalist[reactionid] + ka = ratelist[reactionid] + new_ratelist[reactionid] = ( 1/ka + (b-sigma)/3/D_tot )**(-1) + reverse_reaction_id = reverse_reaction_pairs[reactionid] + kb = ratelist[reverse_reaction_id] + new_ratelist[reverse_reaction_id] = kb * new_ratelist[reactionid] / ka + else: + if new_ratelist[reverse_reaction_id] == 0 and ratelist[reactionid] != 0: + new_ratelist[reverse_reaction_id] = ratelist[reactionid] + # validate whether all rates are updated + missed_rates_id = [] + info = 'reaction_id, old_rate, new_rate\n' + for reactionid, (new_rate, old_rate) in enumerate(zip(new_ratelist, ratelist)): + if new_rate == 0 and old_rate != 0: + missed_rates_id.append(reactionid) + info += f'{reactionid:>11}, {old_rate:>3.2e}, {new_rate:>3.2e}\n' + if len(missed_rates_id) > 0: + raise ValueError(info) + return new_ratelist + +if __name__ == '__main__': + import numpy as np + ratelist = np.array([10, 0.2]) + y_curr = np.array([10, 3]) + reactant_matrix = np.array([[2, 0], [0,1]]) + Length = 50 + diffusion_constants = np.array([0.1, 0.05]) + sigmalist = np.array([1, 0]) + reverse_reaction_pairs = {0:1} + print(adaptive_bimolecular_rate_1D( + ratelist, y_curr, reactant_matrix, Length, + diffusion_constants, sigmalist, reverse_reaction_pairs, + )) + + ratelist = np.array([10, 0.2]) + y_curr = np.array([5, 5, 3]) + reactant_matrix = np.array([[1, 1, 0], [0, 0, 1]]) + Length = 50 + diffusion_constants = np.array([0.1, 0.1, 0.05]) + sigmalist = np.array([1, 0]) + reverse_reaction_pairs = {0:1} + print(adaptive_bimolecular_rate_1D( + ratelist, y_curr, reactant_matrix, Length, + diffusion_constants, sigmalist, reverse_reaction_pairs, + )) diff --git a/ionerdss/gillespie_simulation/simple_gillespie.py b/ionerdss/gillespie_simulation/simple_gillespie.py index eb0687a3..381f650c 100644 --- a/ionerdss/gillespie_simulation/simple_gillespie.py +++ b/ionerdss/gillespie_simulation/simple_gillespie.py @@ -9,213 +9,338 @@ @author: MYING @email: yying7@jh.edu -""" -import numpy as np -import math -class SimpleGillespieSimulator: - def convert_to_microscopic_rate_constants(self,macroscopic_rate_constants, reactant_matrix, volume, - avogadro=6.02214e23): - """ - Note: - All volumes are assumed to be in liters, and concentrations are assumed to be in mol/L! - - Convert macroscopic rate constants to microscopic rate constants for Gillespie algorithm. - - Args: - macroscopic_rate_constants (numpy.ndarray): Array of macroscopic rate constants. - reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. - volume (float): Volume of the system (assumed to be in liters). - avogadro (float, optional): Avogadro's number (default: 6.02214e-23). +@Modified by MSANG +@email: msang2@jh.edu +""" - Raises: - ValueError: If any entry in the reactant matrix is not a mathematical integer. +# >>>>>> For autocompletion >>>>>> +__all__ = [ + "run_Gillespie", + "convert_to_microscopic_rate_constants", + "rate_constants_volume_correction", + "calculate_propensity", + "update_rates", + "gillespie_simulation", +] +def __dir__(): + return __all__ +# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - Returns: - numpy.ndarray: Array of microscopic rate constants. - """ - #### ALL volumes are assumed to be in liters, and concentrations are assumed to be in mol/L! - # Check if all entries in the reactant matrix are mathematical integers - if not np.all(np.mod(reactant_matrix, 1) == 0): - raise ValueError("For Gillespie, all entries in the matrix must be mathematical integers.") - # Initialize an array for microscopic rate constants - microscopic_rate_constants = np.zeros(len(macroscopic_rate_constants)) - # Calculate microscopic rate constants - for reaction_index, reaction in enumerate(reactant_matrix): - scalar = 1 - power = 1 - for species_index, species_count in enumerate(reaction): - scalar *= math.factorial(int(species_count)) - power -= species_count - microscopic_rate_constants[reaction_index] = ( - scalar * macroscopic_rate_constants[reaction_index] * np.power((volume * avogadro), power) - ) - - return microscopic_rate_constants +import numpy as np +import math - def calculate_propensity(self, y, reactant_matrix, microscopic_rate_constants, - previous_propensities = None, is_propensity_update_needed = None): - """ - Calculate propensities for Gillespie algorithm. - Args: - y (numpy.ndarray): Current state of the system (species counts). - reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. - microscopic_rate_constants (numpy.ndarray): Rate constants for each reaction. +def run_Gillespie( + max_time:float, + y_init: np.ndarray, + reactant_matrix: np.ndarray, + product_matrix: np.ndarray, + rate_constants: np.ndarray, + volume:float = None, + macroscopic:bool = None, + volume_corrected:bool = None, + record_interval:float = 1, + full_update_scheme:bool = False, + rate_update_rules:callable = None, + avogadro=6.02214e23, + seed:int=None + ): + """ + Args: + max_time (float): Maximum simulation time. + y_init (numpy.ndarray): Initial state of the system (species counts). + reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. + product_matrix (numpy.ndarray): Matrix representing products in each reaction. + rate_constants (np.ndarray): Rate constants for each reaction. + volume (float): The volume of the system. Make the units consistent with rates. + macroscopic (bool): True for input rates are macroscopic rates. + volume_corrected (bool): True for input rates are volume corrected rates. + record_interval (float): Interval for saving data. Default `record_interval=1`. + full_update_scheme (bool): controls if update every propensity entry in each iteration. Defualt `full_update_scheme=False`. + rate_update_rules (callable): How to update kinetic rates. + It takes inputs (rate_constants, y_curr, reactant_matrix, volume) + avogadro=6.02214e23, + seed (int): Set random seed if given. + + Returns: + tuple: A tuple containing arrays for recorded time points (t_record) and + corresponding system states (y_record). + + Example: + Suppose you have the following input matrices and arrays: + + max_time = 100.0 + y_init = np.array([10, 5, 3]) # Initial state (species counts) + + reactant_matrix = np.array([[2, 1, 0], # Example reactant matrix + [0, 1, 1]]) - Returns: - numpy.ndarray: Array of propensities for each reaction. + product_matrix = np.array([[0, 1, 0], # Example product matrix + [1, 0, 1]]) - Example: - Suppose you have the following input matrices and arrays: + volume_corrected_rate_constants = np.array([0.1, 0.05]) # Example rate constants - y = np.array([10, 5, 3]) # Current state (species counts) + y_record, t_record = run_Gillespie( + max_time, y_init, reactant_matrix, product_matrix, + volume_corrected_rate_constants, volume_corrected=True + ) + print(y_record) + print(t_record) - reactant_matrix = np.array([[2, 1, 0], # Example reactant matrix - [0, 1, 1]]) + Note: + This function performs a Gillespie simulation for a chemical reaction system. + It records the system state and corresponding time points during the simulation. + """ + + # Validate rate_update_rules + need_update_rates = False + if (rate_update_rules is not None) and (not macroscopic): + raise ValueError('To update rates, macroscopic rates must be provided.') + elif (rate_update_rules is not None) and (bool(macroscopic)): + need_update_rates = True + + # calculate volume_corrected_rates based on inputs + if (macroscopic is None) and (volume_corrected is None): + print('By default, rate constants are volume corrected (with unit 1/s)') + volume_corrected_rates = rate_constants + elif bool(macroscopic) ^ bool(volume_corrected): + if macroscopic: + volume_corrected_rates = rate_constants_volume_correction( + rate_constants, reactant_matrix, volume + ) + if need_update_rates: + volume_corrected_rates = update_rates( + rate_constants, y_init, volume, rate_update_rules, reactant_matrix, avogadro + ) + else: + volume_corrected_rates = rate_constants + else: + raise ValueError("The rates must be either macroscopic or volume corrected, but not both. By default, they are volume corrected (with unit 1/s)") + + + # Validate "reactant matrix", it should contain only integers + if not np.all(np.mod(reactant_matrix, 1) == 0): + raise ValueError("For gillespie, all entries in the reactant matrix must be mathematically integers.") + # Validate "product matrix", it should contain only integers + if not np.all(np.mod(product_matrix, 1) == 0): + raise ValueError("For gillespie, all entries in the product matrix must be mathematically integers.") + + # prepare simulation + time = 0.0 # Simulation time elapsed + y = y_init # Initial copy numbers + is_propensity_update_needed = np.zeros(len(reactant_matrix)) # 1 for updated needed + delta_y = product_matrix - reactant_matrix # Yield matrix + index = np.array(range(0, len(reactant_matrix))) # np.random.choice must be 1-d array; use indexing instead + y_record = [np.copy(y)] # Record array for copy numbers + t_record = [time] # Record array for time + n_steps = 0 # Record every record_interval step(s) + if seed is not None: np.random.seed(seed) # set random seed if given + + while time < max_time: # Control simulation time scale + + if full_update_scheme: + # update rates + if need_update_rates: volume_corrected_rates = update_rates( + rate_constants, y, volume, rate_update_rules, reactant_matrix, avogadro + ) + # Calculate propensity + propensities = calculate_propensity(y, reactant_matrix, volume_corrected_rates) + + else: + # update rates + if need_update_rates: volume_corrected_rates = update_rates( + rate_constants, y, volume, rate_update_rules, reactant_matrix, avogadro + ) + # Calculate propensity + propensities = calculate_propensity(y, reactant_matrix, volume_corrected_rates, + propensities, is_propensity_update_needed) + + # Calculate r_tot and sojourn time + r_tot = np.sum(propensities) + tau = - (1.0 / r_tot) * np.log(np.random.rand()) - microscopic_rate_constants = np.array([0.1, 0.05]) # Example rate constants + # Choose reaction and add to species + reaction_index_chose = np.random.choice(index, p=propensities / r_tot) + y += delta_y[reaction_index_chose] + + + # Update which propensities need to be updated in next iteration + if not full_update_scheme: + ##@deprecated: entries_changed = np.abs(np.transpose(delta_y[[reaction_index_chose]])) + ##@deprecated: is_propensity_update_needed = np.squeeze(np.matmul(reactant_matrix, entries_changed)) + entries_changed = np.abs(delta_y[reaction_index_chose].T) + is_propensity_update_needed = np.dot(reactant_matrix, entries_changed.squeeze()) + + # Progress time + time += tau + + # Record + if n_steps % record_interval == 0: + y_record.append(np.copy(y)) + t_record.append(time) + n_steps += 1 + + return y_record, t_record + +def convert_to_microscopic_rate_constants(macroscopic_rate_constants, reactant_matrix, volume, avogadro=6.02214e23): + """ + Legacy API to rate_constants_volume_correction + """ + return rate_constants_volume_correction( macroscopic_rate_constants, reactant_matrix, volume, avogadro) + +def rate_constants_volume_correction( + macroscopic_rate_constants, + reactant_matrix, + volume, + avogadro=6.02214e23 + ): + """ + Note: + All volumes are assumed to be in liters, and concentrations are assumed to be in mol/L! + + Convert macroscopic rate constants to microscopic rate constants for Gillespie algorithm. + + Args: + macroscopic_rate_constants (numpy.ndarray): Array of macroscopic rate constants. + reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. + volume (float): Volume of the system (assumed to be in liters). + avogadro (float, optional): Avogadro's number (default: 6.02214e-23). + + Raises: + ValueError: If any entry in the reactant matrix is not a mathematical integer. + + Returns: + numpy.ndarray: Array of microscopic rate constants. + """ + #### ALL volumes are assumed to be in liters, and concentrations are assumed to be in mol/L! + # Check if all entries in the reactant matrix are mathematical integers + if not np.all(np.mod(reactant_matrix, 1) == 0): + raise ValueError("For Gillespie, all entries in the matrix must be mathematical integers.") + + # Initialize an array for microscopic rate constants + microscopic_rate_constants = np.zeros(len(macroscopic_rate_constants)) + + # Calculate microscopic rate constants + for reaction_index, reaction in enumerate(reactant_matrix): + scalar = 1 + power = 1 + for species_index, species_count in enumerate(reaction): + scalar *= math.factorial(int(species_count)) + power -= species_count + microscopic_rate_constants[reaction_index] = ( + scalar * macroscopic_rate_constants[reaction_index] * np.power((volume * avogadro), power) + ) + + return microscopic_rate_constants + +def calculate_propensity( + y, + reactant_matrix, + microscopic_rate_constants, + previous_propensities = None, + is_propensity_update_needed = None + ): + """ + Calculate propensities for Gillespie algorithm. + + Args: + y (numpy.ndarray): Current state of the system (species counts). + reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. + microscopic_rate_constants (numpy.ndarray): Rate constants for each reaction. + + Returns: + numpy.ndarray: Array of propensities for each reaction. + + Example: + Suppose you have the following input matrices and arrays: + + y = np.array([10, 5, 3]) # Current state (species counts) + + reactant_matrix = np.array([[2, 1, 0], # Example reactant matrix + [0, 1, 1]]) + + microscopic_rate_constants = np.array([0.1, 0.05]) # Example rate constants + + propensities = calculate_propensity(y, reactant_matrix, microscopic_rate_constants) + print(propensities) + # Output: [0.1 * comb(10, 2) * comb(5, 1), 0.05 * comb(5, 1) * comb(3, 1)] + + Note: + The function calculates the propensity of each reaction in a Gillespie algorithm. + Propensity is the product of the microscopic rate constant and combinatorial terms + based on the reactant matrix and current state (y) of the system. + """ + + if previous_propensities is None: # simple case + + propensities = np.zeros(len(reactant_matrix)) - propensities = calculate_propensity(y, reactant_matrix, microscopic_rate_constants) - print(propensities) - # Output: [0.1 * comb(10, 2) * comb(5, 1), 0.05 * comb(5, 1) * comb(3, 1)] + # Loop over each reaction + for reaction_index, reaction in enumerate(reactant_matrix): + propensity = microscopic_rate_constants[reaction_index] - Note: - The function calculates the propensity of each reaction in a Gillespie algorithm. - Propensity is the product of the microscopic rate constant and combinatorial terms - based on the reactant matrix and current state (y) of the system. - """ + # Multiply by the combinatorial term for each reactant + for species_index, species_count in enumerate(reaction): + propensity *= math.comb(y[species_index], species_count) + + propensities[reaction_index] = propensity - if previous_propensities is None: # simple case - - propensities = np.zeros(len(reactant_matrix)) + return propensities - # Loop over each reaction - for reaction_index, reaction in enumerate(reactant_matrix): + else: # optimization case + # Loop over each reaction + for reaction_index, reaction in enumerate(reactant_matrix): + if is_propensity_update_needed[reaction_index] != 0: + # Update propensity if entry is not zero propensity = microscopic_rate_constants[reaction_index] # Multiply by the combinatorial term for each reactant for species_index, species_count in enumerate(reaction): propensity *= math.comb(y[species_index], species_count) - - propensities[reaction_index] = propensity - - return propensities - - else: # optimization case - # Loop over each reaction - for reaction_index, reaction in enumerate(reactant_matrix): - if is_propensity_update_needed[reaction_index] != 0: - # Update propensity if entry is not zero - propensity = microscopic_rate_constants[reaction_index] - - # Multiply by the combinatorial term for each reactant - for species_index, species_count in enumerate(reaction): - propensity *= math.comb(y[species_index], species_count) - - previous_propensities[reaction_index] = propensity - - return previous_propensities - - - def gillespie_simulation(self, max_time, y_init, - reactant_matrix, product_matrix, microscopic_rate_constants, - record_interval = 1, - full_update_scheme = False): - """ - Perform Gillespie simulation for a chemical reaction system. - - Args: - max_time (float): Maximum simulation time. - y_init (numpy.ndarray): Initial state of the system (species counts). - reactant_matrix (numpy.ndarray): Matrix representing reactants in each reaction. - product_matrix (numpy.ndarray): Matrix representing products in each reaction. - microscopic_rate_constants (numpy.ndarray): Rate constants for each reaction. - full_update_scheme (bool): controls if update every propensity entry in each iteration. - - Returns: - tuple: A tuple containing arrays for recorded time points (t_record) and - corresponding system states (y_record). - - Example: - Suppose you have the following input matrices and arrays: - - max_time = 100.0 - y_init = np.array([10, 5, 3]) # Initial state (species counts) - - reactant_matrix = np.array([[2, 1, 0], # Example reactant matrix - [0, 1, 1]]) - - product_matrix = np.array([[0, 1, 0], # Example product matrix - [1, 0, 1]]) - - microscopic_rate_constants = np.array([0.1, 0.05]) # Example rate constants - - y_record, t_record = gillespie_simulation(max_time, y_init, - reactant_matrix, product_matrix, - microscopic_rate_constants) - print(y_record) - print(t_record) - - Note: - This function performs a Gillespie simulation for a chemical reaction system. - It records the system state and corresponding time points during the simulation. - """ - if not np.all(np.mod(reactant_matrix, 1) == 0): - raise ValueError("For gillespie, all entries in the reactant matrix must be mathematically integers.") - - if not np.all(np.mod(product_matrix, 1) == 0): - raise ValueError("For gillespie, all entries in the product matrix must be mathematically integers.") - - time = 0.0 # Simulation time elapsed - y = y_init # Initial copy numbers - propensities = self.calculate_propensity(y, reactant_matrix, microscopic_rate_constants) # Propensities array - - is_propensity_update_needed = np.zeros(len(reactant_matrix)) # 1 for updated needed - delta_y = product_matrix - reactant_matrix # Yield matrix - index = np.array(range(0, len(reactant_matrix))) # np.random.choice must be 1-d array; use indexing instead - y_record = [np.copy(y)] # Record array for copy numbers - t_record = [time] # Record array for time - n_steps = 0 # Record every record_interval step(s) - - while time < max_time: # Control simulation time scale - - if full_update_scheme: - - # Calculate propensity - propensities = self.calculate_propensity(y, reactant_matrix, microscopic_rate_constants) - - else: - # Calculate propensity - propensities = self.calculate_propensity(y, reactant_matrix, microscopic_rate_constants, - propensities, is_propensity_update_needed) + previous_propensities[reaction_index] = propensity - # Calculate r_tot and sojourn time - r_tot = np.sum(propensities) - tau = - (1.0 / r_tot) * np.log(np.random.rand()) + return previous_propensities + +def update_rates( + rate_constants, + y_curr, + volume, + rate_update_rules, + reactant_matrix, + avogadro=6.02214e23 + ): + """ + For systems that kinetic rates change as concentration changes (e.g. 1D and 2D), + update according to macroscopic rates and recalculate propensities. + + Args: + rate_constants (numpy.ndarray): Array of rate constants. + These are the intrinsic rates, i.e. the independent variable is at a limit that + the kinetic rates do not depend on them. For example, for 2D and 1D systems + that diffusion affects rates, diffusion constants are infinite. + y_curr (numpy.ndarray): Current state of the system (species counts). + volume (float): Volume of the system (assumed to be in liters). + rate_update_rules (callable): How to update kinetic rates. + It takes inputs (macroscopic_rate_constants, y_curr, reactant_matrix, volume) + reactant_matrix + avogadro (float, optional): Avogadro's number (default: 6.02214e-23). + + Returns: + volume_corrected_rates + """ + new_macro_rates = rate_update_rules(rate_constants, y_curr, reactant_matrix, volume) + return rate_constants_volume_correction(new_macro_rates, reactant_matrix, volume, avogadro) + +def gillespie_simulation(max_time, y_init,reactant_matrix, product_matrix, microscopic_rate_constants,record_interval = 1,full_update_scheme = False): + """ + Legacy API to gillespie_simulation_volume_corrected_rates + """ + return run_Gillespie( + max_time, y_init, reactant_matrix, product_matrix, microscopic_rate_constants, + volume_corrected=True, record_interval=record_interval, full_update_scheme=full_update_scheme, + ) - # Choose reaction and add to species - reaction_index_chose = np.random.choice(index, p=propensities / r_tot) - y += delta_y[reaction_index_chose] - - - # Update which propensities need to be updated in next iteration - if not full_update_scheme: - ##@deprecated: entries_changed = np.abs(np.transpose(delta_y[[reaction_index_chose]])) - ##@deprecated: is_propensity_update_needed = np.squeeze(np.matmul(reactant_matrix, entries_changed)) - entries_changed = np.abs(delta_y[reaction_index_chose].T) - is_propensity_update_needed = np.dot(reactant_matrix, entries_changed.squeeze()) - - # Progress time - time += tau - - # Record - if n_steps % record_interval == 0: - y_record.append(np.copy(y)) - t_record.append(time) - n_steps += 1 - - return y_record, t_record diff --git a/ionerdss/nerdss_model/mini_virus/__init__.py b/ionerdss/math/__init__.py similarity index 100% rename from ionerdss/nerdss_model/mini_virus/__init__.py rename to ionerdss/math/__init__.py diff --git a/ionerdss/math/angles.py b/ionerdss/math/angles.py new file mode 100644 index 00000000..13e49c25 --- /dev/null +++ b/ionerdss/math/angles.py @@ -0,0 +1,171 @@ +""" +angles.py + +This module provides utility functions for angles related calculateds + +Note: This file includes code adapted from the 'pointgroup' package, +originally authored by Abel Carreras (https://github.com/abelcarreras/pointgroup), +and is licensed under the MIT License (which is attached to the end of this docstring) + +Dependencies +------------ +- numpy + +Examples +-------- +>>> coords = np.array([[1,0,0], [-1,0,0], [0,1,0], [0,-1,0]]) +>>> I = get_inertia_tensor(coords) +>>> eigvals, eigvecs = np.linalg.eigh(I) +>>> degeneracy = get_degeneracy(eigvals) +>>> main_axis_idx = get_non_degenerated(eigvals) +>>> perp = get_perpendicular_vector(eigvecs[:, main_axis_idx]) + + + + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +import numpy as np + +def angles_between_vector_and_vectors(reference_vec, targets, tol=1e-5): + """ + Compute angles (in radians) between a reference vector and each row in a matrix. + + Parameters + ---------- + reference_vec : array_like of shape (3,) + The reference 3D vector. + targets : ndarray of shape (N, 3) + Array of target 3D vectors to compute angles with respect to. + tol : float + Threshold below which vector norms are treated as zero. + + Returns + ------- + angles : ndarray of shape (N,) + Array of angles (in radians) between reference vector and each target vector. + """ + targets = np.asarray(targets) + ref_norm = np.linalg.norm(reference_vec) + target_norms = np.linalg.norm(targets, axis=1) + + dot_products = np.dot(targets, reference_vec) + + angles = [] + for dot, target_norm in zip(dot_products, target_norms): + denom = target_norm * ref_norm + if denom < tol: + angles.append(0.0) + else: + cos_theta = np.clip(dot / denom, -1.0, 1.0) + angles.append(np.arccos(cos_theta)) + return np.array(angles) + +def angles_from_points(p1, p2, p3, complementary = True): + """ + Calculates the angles at point p2 formed by vectors p1->p2 and p2->p3. + + Args: + p1 (Coords): The first points. + p2 (Coords): The vertex points where the angle is calculated. + p3 (Coords): The third points. + + Returns: + float: The angle in degrees. + """ + p1 = np.asarray(p1) + p2 = np.asarray(p2) + p3 = np.asarray(p3) + + v1 = p2 - p1 + v2 = p3 - p2 + theta = np.arccos(np.einsum("ij,ij->i", v1, v2) / (np.linalg.norm(v1, axis = 1) * np.linalg.norm(v2, axis = 1))) + if complementary: + return theta + return np.pi - theta + +def dihedrals_from_points(p1, p2, p3, p4, tol=1e-8): + """ + Compute dihedral angles (in radians) from sets of 4 points in 3D. + + Vectorized version that accepts arrays of points. + + Parameters + ---------- + p1, p2, p3, p4 : ndarray of shape (N, 3) + Arrays of N points representing sequential atoms or coordinates. + + tol : float, optional + Threshold below which vectors are considered degenerate. + + Returns + ------- + dihedrals : ndarray of shape (N,) + Array of dihedral angles in radians for each set of 4 points. + """ + p1 = np.asarray(p1) + p2 = np.asarray(p2) + p3 = np.asarray(p3) + p4 = np.asarray(p4) + + b0 = p2 - p1 + b1 = p3 - p2 + b2 = p4 - p3 + + # Normalize b1 to prevent numerical instability + b1_norm = np.linalg.norm(b1, axis=1, keepdims=True) + b1_unit = np.divide(b1, b1_norm, where=b1_norm > tol) + + # Orthogonal components + v = b0 - (np.sum(b0 * b1_unit, axis=1, keepdims=True)) * b1_unit + w = b2 - (np.sum(b2 * b1_unit, axis=1, keepdims=True)) * b1_unit + + x = np.sum(v * w, axis=1) + y = np.sum(np.cross(b1_unit, v) * w, axis=1) + + return np.arctan2(y, x) + +def absolute_error_to_angle(error, points, tol=1e-8): + """ + Convert absolute coordinate errors to angular errors (in radians), + assuming origin-centered radial vectors. + + Parameters + ---------- + error : float + Absolute positional error (e.g., in angstroms or nanometers). + points : ndarray of shape (N, 3) + Array of 3D coordinates representing points from origin. + tol : float + Minimum radius threshold to avoid divide-by-zero. + + Returns + ------- + angle_errors : ndarray of shape (N,) + Angular errors in radians for each point. + """ + points = np.asarray(points) + radii = np.linalg.norm(points, axis=1) + clipped_radii = np.clip(radii, tol, None) + return error / clipped_radii diff --git a/ionerdss/math/bond_geometry.py b/ionerdss/math/bond_geometry.py new file mode 100644 index 00000000..23a57b5a --- /dev/null +++ b/ionerdss/math/bond_geometry.py @@ -0,0 +1,258 @@ +""" +bond_geometry.py + +Author: yying7@jh.edu +(method confirmed by Dr. Sam Foley) + +This module provides geometry utilities for analyzing the spatial configuration +between two interacting protein chains. Specifically, it computes a set of five +geometric angles: + + - θ₁, θ₂: angles between the interaction vector and the inter-chain vector + - φ₁, φ₂: signed angles between the local normal vector and the interaction plane + - ω: torsion angle between interaction vectors around the inter-chain axis + +These angles are useful in structural analysis, symmetry-aware coarse-graining, +and identifying rigid-body relationships in macromolecular assemblies. + +Main Functions +-------------- +- compute_bond_angles_and_length : Compute five orientation-defining angles with explicit normal points +- generate_normals_from_binding_sites : Generate local normal vectors orthogonal to interaction vectors +- compute_bond_angles_and_length_auto : Automatically construct normals and compute angles + +All vectors are assumed to be in Cartesian coordinates, and all angles are returned in radians. +""" + +import math +import numpy as np + +def _magnitude(vector): + """Compute the Euclidean magnitude of a 3D vector.""" + return math.sqrt(sum(coord ** 2 for coord in vector)) + +def _unit(vector, tol=1e-12): + """Normalize a 3D vector. Return zero vector if norm is below tolerance.""" + norm = _magnitude(vector) + if norm < tol: + return [0.0, 0.0, 0.0] + return [coord / norm for coord in vector] + +def compute_bond_angles_and_length(com1, com2, + bind_site1, bind_site2, + normal_point1, normal_point2, + tol=1e-10): + """ + Compute five orientation-defining angles between two protein chains. + + Inputs + ------ + com1 : array-like + Center of mass of chain 1 + com2 : array-like + Center of mass of chain 2 + bind_site1 : array-like + Interaction site on chain 1 + bind_site2 : array-like + Interaction site on chain 2 + normal_point1 : array-like + Point along the local normal vector from com1 + normal_point2 : array-like + Point along the local normal vector from com2 + tol : float, default to 1e-10 + Tolerance such that values with differences lower than this value are considered the same + + Returns + ------- + tuple + theta1, theta2 : angle between interaction vector and inter-chain vector (in radians) + phi1, phi2 : signed angle between normal and interaction plane (in radians) + omega : signed torsion angle between v1 and v2 around inter-chain vector (in radians) + sigma_magnitude: distance between interaction sites + normal_point1, normal_point2 : passed-through inputs for traceability + """ + + # Interaction vectors from center of mass to interaction site + v1 = [bind_site1[i] - com1[i] for i in range(3)] + v2 = [bind_site2[i] - com2[i] for i in range(3)] + sigma1 = [bind_site1[i] - bind_site2[i] for i in range(3)] + sigma2 = [-x for x in sigma1] + sigma_magnitude = _magnitude(sigma1) + + # Theta: angle between interaction vector and inter-chain vector + theta1 = math.acos(np.dot(v1, sigma1) / (_magnitude(v1) * _magnitude(sigma1))) + theta2 = math.acos(np.dot(v2, sigma2) / (_magnitude(v2) * _magnitude(sigma2))) + + # Local normal vectors + normal1 = _unit([normal_point1[i] - com1[i] for i in range(3)]) + normal2 = _unit([normal_point2[i] - com2[i] for i in range(3)]) + + # Torsion-like vectors for phi angles + torsion1_plane = _unit(np.cross(v1, sigma1)) + torsion1_normal = _unit(np.cross(v1, normal1)) + torsion2_plane = _unit(np.cross(v2, sigma2)) + torsion2_normal = _unit(np.cross(v2, normal2)) + + phi1 = math.acos(np.dot(torsion1_plane, torsion1_normal)) + phi2 = math.acos(np.dot(torsion2_plane, torsion2_normal)) + + # Sign correction for phi1 + v1_unit = _unit(v1) + n1_proj = [normal1[i] - v1_unit[i] * np.dot(v1_unit, normal1) for i in range(3)] + sigma1_proj = [sigma1[i] - v1_unit[i] * np.dot(v1_unit, sigma1) for i in range(3)] + phi1_dir = _unit(np.cross(sigma1_proj, n1_proj)) + if abs(v1_unit[0] - phi1_dir[0]) < tol: + phi1 = -phi1 + elif abs(v1_unit[0] + phi1_dir[0]) >= tol: + print("Warning: Unable to determine phi1 sign.") + + # Sign correction for phi2 + v2_unit = _unit(v2) + n2_proj = [normal2[i] - v2_unit[i] * np.dot(v2_unit, normal2) for i in range(3)] + sigma2_proj = [sigma2[i] - v2_unit[i] * np.dot(v2_unit, sigma2) for i in range(3)] + phi2_dir = _unit(np.cross(sigma2_proj, n2_proj)) + if abs(v2_unit[0] - phi2_dir[0]) < tol: + phi2 = -phi2 + elif abs(v2_unit[0] + phi2_dir[0]) >= tol: + print("Warning: Unable to determine phi2 sign.") + + # Omega: torsion angle between v1 and v2 around sigma1 + a1 = np.cross(sigma1, v1) / _magnitude(np.cross(sigma1, v1)) + a2 = np.cross(sigma1, v2) / _magnitude(np.cross(sigma1, v2)) + omega = math.acos(np.dot(a1, a2)) + + # Omega: torsion angle between v1 and v2 around sigma1 + cross1 = np.cross(sigma1, v1) + cross2 = np.cross(sigma1, v2) + + if _magnitude(cross1) < tol or _magnitude(cross2) < tol: + omega = 0.0 + else: + a1 = cross1 / _magnitude(cross1) + a2 = cross2 / _magnitude(cross2) + omega = math.acos(np.clip(np.dot(a1, a2), -1.0, 1.0)) + + # Sign correction for omega + sigma1_unit = _unit(sigma1) + v1_proj = [v1[i] - sigma1_unit[i] * np.dot(sigma1_unit, v1) for i in range(3)] + v2_proj = [v2[i] - sigma1_unit[i] * np.dot(sigma1_unit, v2) for i in range(3)] + omega_dir = _unit(np.cross(v1_proj, v2_proj)) + + if abs(sigma1_unit[0] - omega_dir[0]) < tol: + omega = -omega + elif abs(sigma1_unit[0] + omega_dir[0]) >= tol: + print("Warning: Unable to determine omega sign.") + + return theta1, theta2, phi1, phi2, omega, sigma_magnitude, normal_point1, normal_point2 + +def generate_normals_from_binding_sites(com1, com2, bind_site1, bind_site2, reference_axis=None, tol=1e-6): + """ + Generate normal vectors orthogonal to binding vectors to avoid gimbal lock. + + Parameters + ---------- + com1, com2 : array-like + Centers of mass for chains 1 and 2. + bind_site1, bind_site2 : array-like + Binding sites for chains 1 and 2. + reference_axis : array-like, optional + Axis to use for normal generation (default: [0, 0, 1]). + tol : float + Threshold to switch reference axis if nearly parallel. + + Returns + ------- + normal_point1, normal_point2 : list of float + Normal endpoints located at unit distance from COM1 and COM2. + """ + def compute_normal(com, bind_site): + v = np.array(bind_site) - np.array(com) + v_unit = v / np.linalg.norm(v) + + # Default to Z axis + if reference_axis is None: + ref = np.array([0.0, 0.0, 1.0]) + else: + ref = np.array(reference_axis) + + # Switch if nearly colinear + if abs(np.dot(v_unit, ref)) > 1.0 - tol: + ref = np.array([0.0, 1.0, 0.0]) + + # Generate orthogonal normal vector + normal = np.cross(v_unit, ref) + normal = normal / np.linalg.norm(normal) + + # Return a point along the normal direction, unit distance from COM + return list(np.array(com) + normal) + + normal_point1 = compute_normal(com1, bind_site1) + normal_point2 = compute_normal(com2, bind_site2) + + return normal_point1, normal_point2 + +def compute_bond_angles_and_length_auto(com1, com2, + bind_site1, bind_site2, + tol=1e-10, + reference_axis=None, + normal_distance=1.0): + """ + Automatically generate normal vectors and compute bond angles and distance. + + This function combines: + - `generate_normals_from_binding_sites`: to construct consistent normal vectors + orthogonal to interaction vectors (avoiding gimbal lock) + - `compute_bond_angles_and_length`: to compute the five orientation-defining angles + + Parameters + ---------- + com1 : array-like + Center of mass of chain 1 + com2 : array-like + Center of mass of chain 2 + bind_site1 : array-like + Interaction site on chain 1 + bind_site2 : array-like + Interaction site on chain 2 + tol : float, optional + Tolerance used for determining sign ambiguity in angles (default = 1e-10) + reference_axis : array-like, optional + Axis to use when computing normal vectors (default = [0, 0, 1]) + normal_distance : float, optional + Distance from COM to generate the normal point (default = 1.0) + + Returns + ------- + tuple + theta1, theta2 : angle between interaction vector and inter-chain vector (in radians) + phi1, phi2 : signed angle between normal and interaction plane (in radians) + omega : signed torsion angle between v1 and v2 around inter-chain vector (in radians) + sigma_magnitude: distance between interaction sites + normal_point1, normal_point2: automatically assigned normals + """ + # Generate normal points orthogonal to binding vectors + normal_point1, normal_point2 = generate_normals_from_binding_sites( + com1, com2, bind_site1, bind_site2, + reference_axis=reference_axis, + tol=tol + ) + + # Optionally scale normal vector to desired length + def scale_normal(com, normal_point): + direction = np.array(normal_point) - np.array(com) + direction = direction / np.linalg.norm(direction) + return list(np.array(com) + normal_distance * direction) + + normal_point1 = scale_normal(com1, normal_point1) + normal_point2 = scale_normal(com2, normal_point2) + + # Compute angles and length + return compute_bond_angles_and_length( + com1=com1, + com2=com2, + bind_site1=bind_site1, + bind_site2=bind_site2, + normal_point1=normal_point1, + normal_point2=normal_point2, + tol=tol + ) diff --git a/ionerdss/math/coords.py b/ionerdss/math/coords.py new file mode 100644 index 00000000..fc1618b2 --- /dev/null +++ b/ionerdss/math/coords.py @@ -0,0 +1,192 @@ +""" +coords.py + +Defines the `Coords` class, a lightweight 3D point representation with support for +basic vector operations and distance calculations. + +This class is primarily used in NERDSS model construction to specify spatial positions +(e.g., interface coordinates on molecules) in simulations. It includes basic vector +arithmetic and helper methods for geometric reasoning. + +Features: +- Vector addition and subtraction +- Euclidean distance calculation +- Human-readable string representation + +Example: + a = Coords(1.0, 2.0, 3.0) + b = Coords(4.0, 6.0, 8.0) + d = a.distance(b) + c = a + b +""" + +import math +import numpy as np +from typing import Union, Sequence + +Number = Union[int, float] + +class Coords: + """ + Represents a 3D point with x, y, z coordinates. Supports basic vector arithmetic + and geometric operations. + + Attributes: + x (float): x-coordinate. + y (float): y-coordinate. + z (float): z-coordinate. + """ + + def __init__(self, x: Number, y: Number, z: Number): + self.x = float(x) + self.y = float(y) + self.z = float(z) + + def __add__(self, other: "Coords") -> "Coords": + return Coords(self.x + other.x, self.y + other.y, self.z + other.z) + + def __sub__(self, other: "Coords") -> "Coords": + return Coords(self.x - other.x, self.y - other.y, self.z - other.z) + + def __str__(self) -> str: + return f"({self.x:.3f}, {self.y:.3f}, {self.z:.3f})" + + def __repr__(self) -> str: + return f"Coords(x={self.x:.3f}, y={self.y:.3f}, z={self.z:.3f})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Coords): + return False + return ( + math.isclose(self.x, other.x, rel_tol=1e-6, abs_tol=1e-12) and + math.isclose(self.y, other.y, rel_tol=1e-6, abs_tol=1e-12) and + math.isclose(self.z, other.z, rel_tol=1e-6, abs_tol=1e-12) + ) + + def __iter__(self): + yield self.x + yield self.y + yield self.z + + def distance_squared(self, other: "Coords") -> float: + """ + Returns the squared Euclidean distance between self and another + point. It is used to avoid square root which is time consuming. + """ + dx = self.x - other.x + dy = self.y - other.y + dz = self.z - other.z + return dx * dx + dy * dy + dz * dz + + + def distance(self, other: "Coords") -> float: + """Returns Euclidean distance between self and another point.""" + return math.dist(tuple(self), tuple(other)) # Python 3.8+ + + def to_tuple(self): + return (self.x, self.y, self.z) + + def to_numpy(self) -> np.ndarray: + """ + Converts the Coords instance to a NumPy array. + + Returns: + np.ndarray: A (3,) array representing [x, y, z]. + """ + return np.array([self.x, self.y, self.z], dtype=float) + + @classmethod + def from_numpy(cls, arr: Union[np.ndarray, list, tuple]) -> "Coords": + """ + Creates a Coords instance from a NumPy array or array-like object. + + Args: + arr (np.ndarray or list or tuple): A 3-element array-like object. + + Returns: + Coords: The resulting Coords instance. + + Raises: + ValueError: If the input does not have exactly 3 elements. + TypeError: If input is not array-like or contains invalid types. + """ + if not isinstance(arr, (np.ndarray, list, tuple)): + raise TypeError(f"Input must be a list, tuple, or np.ndarray, got {type(arr).__name__}") + + if len(arr) != 3: + raise ValueError(f"Input must have exactly 3 elements, got {len(arr)}") + + try: + x, y, z = float(arr[0]), float(arr[1]), float(arr[2]) + except (ValueError, TypeError) as e: + raise TypeError("All elements must be numbers convertible to float") from e + + return cls(x, y, z) + +def get_perpendicular_vector( + vector: Union["Coords", np.ndarray, Sequence[float]], + normalize: bool = True, + tol: float = 1e-8) -> np.ndarray: + """ + Returns a vector that is perpendicular to the input vector. + + Parameters + ---------- + vector : Coords, array-like, or np.ndarray + Input non-zero vector of shape (n,). Accepted types include Coords, list, tuple, or numpy array. + + normalize : bool, optional + If True, return a unit-length perpendicular vector. Default is True. + + tol : float, optional + Tolerance for numerical precision when checking orthogonality and normalization. + + Returns + ------- + perpendicular : np.ndarray of shape (n,) + A vector orthogonal to the input vector. Normalized to unit length if requested. + + Raises + ------ + ValueError + If the input vector is zero or a perpendicular vector cannot be computed. + """ + # Convert various input types to numpy array + if isinstance(vector, Coords): + vector = vector.to_numpy() + else: + vector = np.asarray(vector, dtype=float) + + if vector.ndim != 1: + raise ValueError("Input vector must be one-dimensional.") + if np.linalg.norm(vector) < tol: + raise ValueError("Cannot compute perpendicular vector of a zero vector.") + + dim = vector.size + + # Choose a basis vector least aligned with the input to avoid degeneracy + basis_index = np.argmin(np.abs(vector)) + basis_vector = np.eye(dim)[basis_index] + + # Compute perpendicular using cross product (only defined for 3D) + if dim == 3: + perpendicular_vector = np.cross(vector, basis_vector) + else: + # For nD: use Gram-Schmidt-like projection + gs_projection = np.dot(vector, basis_vector) / np.dot(vector, vector) * vector + perpendicular_vector = basis_vector - gs_projection + + norm = np.linalg.norm(perpendicular_vector) + if norm < tol: + raise ValueError("Failed to construct a valid perpendicular vector.") + + if normalize: + perpendicular_vector = perpendicular_vector / norm + + # Final checks + if abs(np.dot(perpendicular_vector, vector)) > tol: + raise ValueError("Resulting vector is not orthogonal to input.") + if normalize and abs(np.linalg.norm(perpendicular_vector) - 1.0) > tol: + raise ValueError("Resulting perpendicular vector is not normalized.") + + return perpendicular_vector diff --git a/ionerdss/math/diffusion_constant.py b/ionerdss/math/diffusion_constant.py new file mode 100644 index 00000000..d0e2c36d --- /dev/null +++ b/ionerdss/math/diffusion_constant.py @@ -0,0 +1,37 @@ +import numpy as np + +def compute_diffusion_constants_nm_us(radius_nm, + temperature_kelvin=298.15, + viscosity_pas=8.9e-4): + """ + Compute translational and rotational diffusion constants based on + einstein stokes equation. + + Args: + radius_nm (float): radius in nanometers + temperature_kelvin (float): temperature in Kelvin + viscosity_pas (float): viscosity in Pa s (default: water) + + Returns: + tuple: (translational diffusion constant in nm^2/μs, + rotational diffusion constant in rad^2/μs) + """ + if radius_nm <= 0: + raise ValueError("Radius must be positive!") + if temperature_kelvin <= 0: + raise ValueError("Temperture (in Kelvin) must be positive!") + if viscosity_pas <= 0: + raise ValueError("Viscosity (in Pa s) must be positive!") + + boltzmann_constant = 1.380649e-23 # J/K + radius_m = radius_nm * 1e-9 # convert nm to meters + + # Diffusion constants + d_t_m2_per_s = boltzmann_constant * temperature_kelvin / (6 * np.pi * viscosity_pas * radius_m) + d_r_rad2_per_s = boltzmann_constant * temperature_kelvin / (8 * np.pi * viscosity_pas * radius_m**3) + + # Convert units + translational_diffusion_constant_nm2_per_us = d_t_m2_per_s * 1e12 # m²/s → nm²/μs + rotational_diffusion_constant_rad2_per_us = d_r_rad2_per_s * 1e-6 # rad²/s → rad²/μs + + return translational_diffusion_constant_nm2_per_us, rotational_diffusion_constant_rad2_per_us diff --git a/ionerdss/math/inertia_tensors.py b/ionerdss/math/inertia_tensors.py new file mode 100644 index 00000000..93f7871a --- /dev/null +++ b/ionerdss/math/inertia_tensors.py @@ -0,0 +1,210 @@ +""" +inertia_tools.py + +This module provides utility functions for analyzing geometric and rotational +symmetries of point-based structures (e.g., molecular assemblies) using inertia tensors +and vector algebra. These tools are particularly useful for identifying symmetry axes +and classifying point group symmetries in 3D configurations such as molecular complexes, +polyhedral assemblies, and coarse-grained models. + +Note: This file includes code adapted from the 'pointgroup' package, +originally authored by Abel Carreras (https://github.com/abelcarreras/pointgroup), +and is licensed under the MIT License (which is attached to the end of this docstring) + +Included Functions +------------------ + +1. get_inertia_tensor(coords, tol=1e-12) + Computes the normalized moment of inertia tensor for a set of 3D points, + assuming uniform mass. Returns a symmetric 3×3 tensor that characterizes + how mass is distributed relative to the center of mass. + +2. get_degeneracy(eigenvalues, tolerance=0.1) + Estimates the degeneracy (repeatedness) of eigenvalues within a specified tolerance. + Useful for inferring rotational symmetry based on isotropy of the inertia tensor. + +3. get_non_degenerated(eigenvalues, tolerance=0.1) + Identifies which eigenvalue in a set of three is non-degenerate, assuming + two are nearly equal. Often used to detect symmetry axes. + +4. get_perpendicular_vector(vector, normalize=True, tol=1e-8) + Computes a vector orthogonal to a given input vector. Supports general n-dimensional input. + For 3D vectors, uses the cross product; for nD, falls back to Gram-Schmidt projection. + +Use Cases +--------- +- Classifying molecular shapes and point group symmetries from 3D atomic coordinates +- Determining principal axes of rotation +- Automatically choosing reference frames based on geometry +- Computing orientation-aware quantities from molecular subunits + +Dependencies +------------ +- numpy + +Examples +-------- +>>> coords = np.array([[1,0,0], [-1,0,0], [0,1,0], [0,-1,0]]) +>>> I = get_inertia_tensor(coords) +>>> eigvals, eigvecs = np.linalg.eigh(I) +>>> degeneracy = get_degeneracy(eigvals) +>>> main_axis_idx = get_non_degenerated(eigvals) +>>> perp = get_perpendicular_vector(eigvecs[:, main_axis_idx]) + + + + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +import numpy as np + +def get_inertia_tensor(coords, tol = 1e-12): + """ + Compute the normalized moment of inertia tensor assuming uniform mass for all sites. + + This function calculates the inertia tensor using the standard formula for point masses: + I = Σ [‖r_i‖² * I_3 - r_i ⊗ r_i] + where: + - r_i is the position vector of the i-th point (assumed relative to the center of mass), + - I_3 is the 3×3 identity matrix, + - ⊗ denotes the outer product. + + The result is then normalized by the scalar sum: + Σ ‖r_i‖² + + The moment of inertia tensor is important in determining + symmetry because it encodes how mass (or structure) is + distributed relative to an origin—typically the center of mass. + Its eigenvalues and eigenvectors reveal rotational properties + that are tightly linked to the object's symmetry group. + + Parameters + ---------- + coords : ndarray of shape (N, 3) + Cartesian coordinates of the points (atoms), assumed centered at origin. + + Returns + ------- + inertia_tensor : ndarray of shape (3, 3) + Normalized inertia tensor (unitless, assumes equal mass per atom). + """ + coords = np.asarray(coords) + inertia_tensor = np.zeros((3, 3)) + total_inertia = 0.0 + + for c in coords: + r2 = np.dot(c, c) + inertia_tensor += np.identity(3) * r2 - np.outer(c, c) + total_inertia += r2 + + if abs(total_inertia) > tol: + inertia_tensor /= total_inertia + + return inertia_tensor + +def get_degeneracy(eigenvalues, tolerance=0.1): + """ + Estimate the degeneracy of eigenvalues within a specified tolerance. + + Degeneracy refers to the number of times the same (or nearly the same) eigenvalue appears. + This function scans through the list of eigenvalues and returns the maximum count of + eigenvalues that are equal within the given numerical tolerance. + + Parameters + ---------- + eigenvalues : list or array-like of float + A sequence of eigenvalues (typically from an inertia tensor or other symmetric matrix). + + tolerance : float, optional + Numerical tolerance used to determine whether two eigenvalues are considered equal. + Default is 0.1. + + Returns + ------- + int + The estimated degeneracy (i.e., how many eigenvalues are approximately equal). + Returns 1 if no two eigenvalues are close enough to be considered degenerate. + + Examples + -------- + >>> get_degeneracy([1.0, 1.0, 2.0]) + 2 + + >>> get_degeneracy([1.0, 1.2, 1.4], tolerance=0.01) + 1 + """ + for ev1 in eigenvalues: + single_deg = 0 + for ev2 in eigenvalues: + if abs(ev1 - ev2) < tolerance: + single_deg += 1 + if single_deg > 1: + return single_deg + return 1 + +def get_non_degenerated(eigenvalues, tolerance=0.1): + """ + Identify the index of a non-degenerate eigenvalue in a set of eigenvalues. + + This function assumes that two of the eigenvalues are approximately equal (degenerate), + and one is different (non-degenerate). It returns the index of the non-degenerate value. + + Parameters + ---------- + eigenvalues : list or array-like of float + A list or array of eigenvalues (typically of an inertia tensor). + Expected to contain exactly 3 values. + + tolerance : float, optional + Numerical tolerance for considering two eigenvalues as equal (degenerate). Default is 0.1. + + Returns + ------- + int + The index of the non-degenerate eigenvalue in the input list. + + Raises + ------ + Exception + If no non-degenerate eigenvalue is found. + + Examples + -------- + >>> get_non_degenerated([1.0, 1.0, 2.0]) + 2 + >>> get_non_degenerated([2.0, 1.0, 2.0]) + 1 + """ + eigenvalues = list(eigenvalues) + n = len(eigenvalues) + + for i in range(n): + degenerate_count = sum( + abs(eigenvalues[i] - eigenvalues[j]) < tolerance + for j in range(n) if j != i + ) + if degenerate_count == 0: + return i + + raise RuntimeError("Could not identify a unique non-degenerate eigenvalue based on the provided tolerance.") diff --git a/ionerdss/math/rigid_transform.py b/ionerdss/math/rigid_transform.py new file mode 100644 index 00000000..9248abc6 --- /dev/null +++ b/ionerdss/math/rigid_transform.py @@ -0,0 +1,65 @@ +import numpy as np + +def rigid_transform_3d(P, Q): + """ + Compute the optimal rigid body transform (rotation R and translation t) + that aligns two 3D point sets P and Q. + + Parameters + ---------- + P : ndarray of shape (N, 3) + Source point cloud. + Q : ndarray of shape (N, 3) + Target point cloud. + + Returns + ------- + R : ndarray of shape (3, 3) + Rotation matrix. + t : ndarray of shape (3,) + Translation vector. + """ + P = np.asarray(P) + Q = np.asarray(Q) + + assert P.shape == Q.shape, "Point sets must be the same shape" + + P_mean = P.mean(axis=0) + Q_mean = Q.mean(axis=0) + + P_centered = P - P_mean + Q_centered = Q - Q_mean + + H = P_centered.T @ Q_centered + U, _, Vt = np.linalg.svd(H) + R = Vt.T @ U.T + + # Correct for reflection + if np.linalg.det(R) < 0: + Vt[-1, :] *= -1 + R = Vt.T @ U.T + + t = Q_mean - R @ P_mean + return R, t + + +def apply_transform(R, t, X): + """ + Apply a rigid transformation (rotation + translation) to a point or set of points. + + Parameters + ---------- + R : ndarray of shape (3, 3) + Rotation matrix. + t : ndarray of shape (3,) + Translation vector. + X : ndarray of shape (3,) or (N, 3) + Point(s) to transform. + + Returns + ------- + ndarray of shape like X + Transformed coordinates. + """ + X = np.asarray(X) + return (R @ X.T).T + t diff --git a/ionerdss/math/rotations.py b/ionerdss/math/rotations.py new file mode 100644 index 00000000..c77911f8 --- /dev/null +++ b/ionerdss/math/rotations.py @@ -0,0 +1,156 @@ +""" +rotations.py + +Mathematical tools for representing and constructing 3D rotational and improper rotational +symmetry operations, using rotation matrices derived from axis-angle representations. + +This module provides utility functions and classes for working with: +- Proper Cₙ rotations: rotations by 2π/n radians about a given axis +- Improper Sₙ operations: Cₙ rotations followed by reflection through the plane perpendicular to the axis + +These are widely used in: +- Molecular point group symmetry analysis +- Crystallographic symmetry +- Computational geometry and modeling of 3D structures + +Key Classes and Functions +-------------------------- +- rotation_matrix(axis, angle): computes a rotation matrix given an axis and angle +- Rotation: represents a proper Cₙ rotation +- ImproperRotation: represents an improper Sₙ rotation + +Dependencies +------------ +- numpy +- scipy.spatial.transform.Rotation + +Author +------ +yying7@jh.edu +Adapted from Abel Carreras' pointgroup package under the MIT license + + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" +from scipy.spatial.transform import Rotation as R +import numpy as np + +def rotation_matrix(axis, angle, tol=1e-8): + """ + Compute the 3D rotation matrix for a rotation around a given axis by a specified angle. + A wrapper for scipy.spatial.transform.Rotation + + Parameters + ---------- + axis : array-like of shape (3,) + The axis of rotation. This vector will be normalized internally. + angle : float + The rotation angle in radians. + tol : float, optional + Tolerance for checking whether the axis is non-zero. Default is 1e-8. + + Returns + ------- + ndarray of shape (3, 3) + A 3×3 rotation matrix representing the rotation about the given axis. + + Raises + ------ + ValueError + If the provided axis has near-zero length. + """ + axis = np.asarray(axis, dtype=float) + norm = np.linalg.norm(axis) + if norm < tol: + raise ValueError("Axis must be a non-zero vector") + + axis = axis / norm + return R.from_rotvec(angle * axis).as_matrix() + +class Rotation: + """ + Represents a proper Cn rotation (n-fold symmetry) about a specified axis. + + This class constructs a 3D rotation matrix for a rotation by 2π/n radians + around the given axis. It is used to represent symmetry operations like + those found in molecular point groups. + + Parameters + ---------- + axis : array-like of shape (3,) + The axis about which the rotation is performed. It will be normalized internally. + order : int, optional + The symmetry order (n). A rotation of 2π/n radians will be applied. Default is 1. + + Methods + ------- + get_matrix() -> ndarray + Returns the 3×3 proper rotation matrix. + """ + def __init__(self, axis, order=1): + self._axis = np.asarray(axis, dtype=float) + self._order = order + + def get_matrix(self): + """Return the proper rotation matrix (Cn) of 2π / n about the axis.""" + angle = 2 * np.pi / self._order + return rotation_matrix(self._axis, angle) + +class ImproperRotation: + """ + Represents an improper Sn rotation: a Cn rotation followed by reflection. + + An improper rotation consists of: + - A proper rotation of 2π/n radians around a specified axis + - Followed by a reflection through the plane perpendicular to that axis + + This operation is used to represent symmetry elements like mirror-rotations + in molecular and crystallographic point groups. + + Parameters + ---------- + axis : array-like of shape (3,) + The axis for both the rotation and the perpendicular reflection. + This vector will be normalized internally. + order : int, optional + The symmetry order n (i.e., the "n" in Sn). Default is 1. + + Methods + ------- + get_matrix() -> ndarray + Returns the 3×3 matrix for the improper rotation operation. + """ + def __init__(self, axis, order=1): + self._axis = np.asarray(axis, dtype=float) + self._order = order + + def get_matrix(self): + """Return the improper rotation matrix (Cn followed by reflection).""" + angle = 2 * np.pi / self._order + rot = rotation_matrix(self._axis, angle) + + # Reflection across the plane perpendicular to axis: I - 2 uuᵀ + u = self._axis / np.linalg.norm(self._axis) + refl = np.eye(3) - 2 * np.outer(u, u) + + return rot @ refl.T diff --git a/ionerdss/math/string_similarity.py b/ionerdss/math/string_similarity.py new file mode 100644 index 00000000..30d45d13 --- /dev/null +++ b/ionerdss/math/string_similarity.py @@ -0,0 +1,169 @@ +""" +ionerdss.math.string_similarity + +This module provides utility functions to compute: +- the Levenshtein distance and normalized similarity between two strings. +- the Jaccard similarity + +Levenshtein distance: + +Purpose: +-------- +The Levenshtein distance is a measure of how many single-character edits +(insertions, deletions, or substitutions) are required to change one string +into another. It is useful in sequence comparison tasks such as: +- Interface residue sequence matching +- Fuzzy identity clustering +- Sequence-based template assignment + +Method: +------- +We implement the classical dynamic programming algorithm using a +(len(s1)+1) × (len(s2)+1) matrix, where each entry represents the edit distance +between substrings. + +Dependencies: +------------- +- numpy (used for efficient array operations) + +Usage: +------ +>>> levenshtein_distance("ABC", "ADC") +1 + +>>> levenshtein_similarity("ABC", "ADC") +0.666... + +>>> levenshtein_similarity("AAAA", "AAAA") +1.0 + +>>> levenshtein_similarity("AAAA", "") +0.0 + +Jaccard Similarity: + +Purpose: +-------- +Jaccard similarity is a simple and efficient measure of set overlap, defined as: + + J(A, B) = |A ∩ B| / |A ∪ B| + +This is useful in molecular modeling when: +- Comparing interface residues where residue **types** matter more than order +- Handling **deletions, insertions**, or **partial interfaces** +- Detecting approximate conservation of **binding site chemistry** + +Unlike Levenshtein distance, which penalizes for position-dependent edits, +Jaccard similarity is **order-insensitive** and tolerant to gaps. + +Dependencies: +------------- +- numpy (only used for type checking, can be removed if undesired) + +Usage: +------ +>>> jaccard_similarity("ADEFG", "ADEFG") +1.0 + +>>> jaccard_similarity("ADEFG", "ADCFG") +0.6 + +>>> jaccard_similarity("ABCDE", "ACDF") +0.5 + +>>> jaccard_similarity("", "ABC") +0.0 + +>>> jaccard_similarity("ABC", "") +0.0 + +>>> jaccard_similarity("", "") +1.0 + +""" + +import numpy as np + +def levenshtein_distance(s1, s2): + """ + Compute the Levenshtein (edit) distance between two strings. + + The distance represents the minimum number of single-character edits + (insertions, deletions, or substitutions) required to transform s1 into s2. + + Args: + s1 (str): First string. + s2 (str): Second string. + + Returns: + int: Levenshtein edit distance. + """ + len_s1, len_s2 = len(s1), len(s2) + + # Initialize (len_s1+1) × (len_s2+1) matrix + dp = np.zeros((len_s1 + 1, len_s2 + 1), dtype=int) + + # Base cases: distance from empty string + dp[:, 0] = np.arange(len_s1 + 1) # Cost of deleting all characters from s1 + dp[0, :] = np.arange(len_s2 + 1) # Cost of inserting all characters into s1 + + # Fill dynamic programming matrix + for i in range(1, len_s1 + 1): + for j in range(1, len_s2 + 1): + if s1[i - 1] == s2[j - 1]: + cost = 0 # No edit needed + else: + cost = 1 # Substitution required + + dp[i, j] = min( + dp[i - 1, j] + 1, # Deletion + dp[i, j - 1] + 1, # Insertion + dp[i - 1, j - 1] + cost # Substitution + ) + + return dp[len_s1, len_s2] + +def levenshtein_similarity(s1, s2): + """ + Compute the normalized Levenshtein similarity between two strings. + + Similarity is defined as: + 1 - (edit_distance / max(len(s1), len(s2))) + + This yields a value between 0.0 (completely different) and 1.0 (identical). + + Args: + s1 (str): First string. + s2 (str): Second string. + + Returns: + float: Similarity score in the range [0.0, 1.0]. + """ + if not s1 and not s2: + return 1.0 # Both strings empty → identical + max_len = max(len(s1), len(s2)) + distance = levenshtein_distance(s1, s2) + return 1.0 - (distance / max_len) + +def jaccard_similarity(seq1, seq2): + """ + Compute the Jaccard similarity between two sequences by treating them as sets + of amino acid residue types (characters). + + Args: + seq1 (str or iterable): First residue sequence. + seq2 (str or iterable): Second residue sequence. + + Returns: + float: Similarity score in the range [0.0, 1.0]. + """ + set1 = set(seq1) + set2 = set(seq2) + + if not set1 and not set2: + return 1.0 # Both empty → identical + + intersection = set1 & set2 + union = set1 | set2 + + return len(intersection) / len(union) if union else 1.0 diff --git a/ionerdss/nerdss_model/PlatonicSolids.py b/ionerdss/model/PlatonicSolids.py similarity index 96% rename from ionerdss/nerdss_model/PlatonicSolids.py rename to ionerdss/model/PlatonicSolids.py index bff0f5f6..94bbaff1 100644 --- a/ionerdss/nerdss_model/PlatonicSolids.py +++ b/ionerdss/model/PlatonicSolids.py @@ -3,11 +3,11 @@ This module defines the `PlantonicSolidsModel` class, inheriting from the `Model` class, which is used to generate NERDSS molecule types and reactions, and corresponding files for platonic solid. """ -from .model import Model -from .model import ReactionType -from .model import MoleculeType -from .model import MoleculeInterface -from .coords import Coords +from .components import Model +from .components import Reaction +from .components import MoleculeType +from .components import MoleculeInterface +from ..math.coords import Coords from .platonic_solids.dode.dode_face_write import dode_face_write from .platonic_solids.cube.cube_face_write import cube_face_write from .platonic_solids.icos.icos_face_write import icos_face_write @@ -26,7 +26,7 @@ class PlatonicSolid(Model): """ name: str molecule_types: List[MoleculeType] = field(default_factory=list) - reactions: List[ReactionType] = field(default_factory=list) + reactions: List[Reaction] = field(default_factory=list) @classmethod def create_Solid(cls, solid_type: str ,radius:float,sigma: float=None,distances:float = None, mol_name=None) -> Model: @@ -60,7 +60,7 @@ def create_Solid(cls, solid_type: str ,radius:float,sigma: float=None,distances: float(dode_reaction_parameters['n'][2])] for i in dode_reactions: - reactions_to_return.append(ReactionType( + reactions_to_return.append(Reaction( name=i, binding_radius=float(sigma), binding_angles=[dode_reaction_parameters['theta1'], @@ -102,7 +102,7 @@ def create_Solid(cls, solid_type: str ,radius:float,sigma: float=None,distances: float(cube_reaction_parameters['n'][2])] for i in cube_reactions: - reactions_to_return.append(ReactionType( + reactions_to_return.append(Reaction( name=i, binding_radius=float(sigma), binding_angles=[cube_reaction_parameters['theta1'], @@ -140,7 +140,7 @@ def create_Solid(cls, solid_type: str ,radius:float,sigma: float=None,distances: float(icos_reaction_parameters['n'][2])] for i in icos_reactions: - reactions_to_return.append(ReactionType( + reactions_to_return.append(Reaction( name=i, binding_radius=float(sigma), binding_angles=[icos_reaction_parameters['theta1'], @@ -178,7 +178,7 @@ def create_Solid(cls, solid_type: str ,radius:float,sigma: float=None,distances: float(octa_reaction_parameters['n'][2])] for i in octa_reactions: - reactions_to_return.append(ReactionType( + reactions_to_return.append(Reaction( name=i, binding_radius=float(sigma), binding_angles=[octa_reaction_parameters['theta1'], @@ -216,7 +216,7 @@ def create_Solid(cls, solid_type: str ,radius:float,sigma: float=None,distances: float(tetr_reaction_parameters['n'][2])] for i in tetr_reactions: - reactions_to_return.append(ReactionType( + reactions_to_return.append(Reaction( name=i, binding_radius=float(sigma), binding_angles=[tetr_reaction_parameters['theta1'], diff --git a/ionerdss/nerdss_model/__init__.py b/ionerdss/model/__init__.py similarity index 68% rename from ionerdss/nerdss_model/__init__.py rename to ionerdss/model/__init__.py index 51874e05..b6437c22 100644 --- a/ionerdss/nerdss_model/__init__.py +++ b/ionerdss/model/__init__.py @@ -1,2 +1,2 @@ -# ionerdss/nerdss_model/__init__.py +# ionerdss/model/__init__.py # This file is purposely left empty to avoid imports at package initialization \ No newline at end of file diff --git a/ionerdss/nerdss_model/complex.py b/ionerdss/model/complex.py similarity index 100% rename from ionerdss/nerdss_model/complex.py rename to ionerdss/model/complex.py diff --git a/ionerdss/model/components.py b/ionerdss/model/components.py new file mode 100644 index 00000000..bbb5fb3e --- /dev/null +++ b/ionerdss/model/components.py @@ -0,0 +1,492 @@ +""" +components.py + +Author: sikaoguo@gmail.com, yying7@jh.edu + +This module defines the core data structures and utilities for specifying and serializing +molecular models used in NERDSS (Non-Equilibrium Reaction-Diffusion Self-Assembly Simulator) simulations. + +The primary components include: +- `MoleculeInterface`: Represents a binding or interaction site on a molecule. +- `MoleculeType`: Represents a coarse-grained molecular unit with defined interfaces and diffusion parameters. +- `ReactionType`: Represents a bimolecular binding interaction with spatial and angular constraints. +- `Model`: A container that aggregates molecules and reactions, and provides methods to save/load model definitions to/from JSON. + +This file enables structured definition of molecular assemblies and reaction schemas, +with serialization support for use in automated pipeline generation and simulation input preparation. + +Typical Usage: + model = Model.load_model("my_model.json") + model.save_model("backup_model.json") + +Dependencies: + - numpy + - dataclasses + - json + - typing + - local module: `coords.py` for Coords class +""" + +import json + +import numpy as np + +from ionerdss.math.coords import Coords + +#============================= +# Molecules +#============================= + +class MoleculeInterface: + """Represents an interface of a molecule type. + + Attributes: + name (str): Name of the interface. + coord (Tuple[float, float, float]): Coordinates of the interface. + """ + def __init__(self, name, coord): + self.name = name + self.coord = coord + + def __repr__(self): + return f"" + +class MoleculeType: + """ + Represents a molecule type in the model. + + Attributes + ---------- + name : str + Name of the molecule type. + interfaces : list of MoleculeInterface + List of interfaces associated with the molecule. + diffusion_translation : float + Translational diffusion const (default 0.0). + diffusion_rotation : float + Rotational diffusion const (default 0.0). + """ + def __init__(self, name, interfaces=None, translational_diffusion_constant=0.0, rotational_diffusion_constant=0.0): + self.name = name + self.interfaces = interfaces if interfaces is not None else [] + self.translational_diffusion_constant = translational_diffusion_constant + self.rotational_diffusion_constant = rotational_diffusion_constant + + def __repr__(self): + return f"" + +class MoleculeTemplate: + """ + Represents a molecule type in NERDSS, including the molecule's center of mass (COM) + and a list of binding interfaces. + + Attributes: + name (str): Identifier for the molecule type. + interface_template_list (list): A list of BindingInterfaceTemplate objects that + describe the molecule’s binding sites. + normal_point (list): Default normal vector direction. + """ + def __init__(self, name: str = '', + com=None, + interfaces=None, + translational_diffusion_constant = 1.0, + rotational_diffusion_constant = 1.0, + radius: float = 1.0): + """ + Initializes a MoleculeTemplate. + + Parameters + ---------- + name : str, optional + Name or identifier of the molecule type. Default is empty string. + com : array-like of shape (3,), optional + Center of mass coordinates. Defaults to [0.0, 0.0, 0.0]. + radius : float, optional + Effective molecular radius. Default is 1.0. + """ + self.name = name + self.interface_template_list = [] + self.com = np.asarray(com if com is not None else [0.0, 0.0, 0.0], dtype=float) + self.interfaces = interfaces if interfaces is not None else [] + self.normal_point = [0.0, 0.0, 1.0] + self.translational_diffusion_constant = translational_diffusion_constant + self.rotational_diffusion_constant = rotational_diffusion_constant + self.radius = float(radius) + + def add_interface(self, interface): + """ + Add an InterfaceTemplate to this molecule. + + Parameters + ---------- + interface : InterfaceTemplate + The interface object to add. + """ + self.interfaces.append(interface) + + def __str__(self): + interfaces = "\n ".join(str(it) for it in self.interface_template_list) + return f"Molecule Template: {self.name}\n Interfaces:\n {interfaces}" + + def __repr__(self): + interfaces = "\n ".join(str(it) for it in self.interface_template_list) + return f"Molecule Template: {self.name}\n Interfaces:\n {interfaces}" + + def __eq__(self, other): + if not isinstance(other, MoleculeTemplate): + return False + return self.name == other.name + +class CoarseGrainedMolecule: + """ + Represents a coarse-grained molecule in NERDSS, potentially derived from a PDB chain. + + Attributes: + name (str): Identifier of the molecule. + my_template (MoleculeTemplate): Reference to the associated molecule template. + coord (Coords): Center-of-mass coordinates. + interfaces (list): List of binding interfaces. + normal_point (list): Normal vector direction. + """ + + def __init__( + self, + name: str, + template=None, + coord=None, + interfaces=None, + normal_point=None, + translational_diffusion_constant=1.0, + rotational_diffusion_constant=1.0, + radius=1.0 + ): + """ + Initializes a CoarseGrainedMolecule. + + Parameters + ---------- + name : str + Name or identifier of the molecule. + template : Any, optional + Reference structure or coordinate template. + coord : Any, optional + Center of mass coordinates or 3D origin of the molecule. + interfaces : list, optional + List of interaction site coordinates. + normal_point : Any, optional + Optional orientation vector or normal. + diffusion_translation : list or np.ndarray, optional + 3D translational diffusion coefficients. + diffusion_rotation : list or np.ndarray, optional + 3D rotational diffusion coefficients. + radius : float, optional + Effective molecular radius. + """ + self.name = name + self.template = template + self.coord = coord + self.interfaces = interfaces if interfaces is not None else [] + self.normal_point = normal_point + self.translational_diffusion_constant = translational_diffusion_constant + self.rotational_diffusion_constant = rotational_diffusion_constant + self.radius = radius + + def __str__(self): + interfaces = "\n ".join(str(interface) for interface in self.interfaces) + return (f"CoarseGrainedMolecule: {self.name}\n" + f" Template: {self.template}\n" + f" Coordinates: {self.coord}\n" + f" Interfaces:\n {interfaces}") + + def __repr__(self): + # Similar to __str__ but more formal for debugging + return self.name + + def __eq__(self, other): + if not isinstance(other, CoarseGrainedMolecule): + return False + return self.name == other.name + + def __hash__(self): + return hash(self.name) + +class Reaction: + """ + Represents a reaction in the model. + + Attributes + ---------- + name : str + Reaction expression. + binding_radius : float + Binding radius of the reaction. + binding_angles : tuple of float + Binding angles (theta1, theta2, phi1, phi2, chi). + norm1 : tuple of float + First normal vector. + norm2 : tuple of float + Second normal vector. + ka : float + Forward rate constant. + kb : float + Reverse rate constant. + """ + def __init__(self, name, binding_radius, binding_angles, + norm1, norm2, ka=0.0, kb=0.0): + self.name = name + self.binding_radius = binding_radius + self.binding_angles = binding_angles + self.norm1 = norm1 + self.norm2 = norm2 + self.ka = ka + self.kb = kb + + def __repr__(self): + return f"" + +class Model: + """ + Parent class for all models to generate input files for NERDSS simulations. + + Attributes + ---------- + name : str + Name of the model. + molecule_types : list of MoleculeType + List of molecule types in the model. + reactions : list of Reaction + List of reactions in the model. + """ + def __init__(self, name, molecule_types=None, reactions=None): + self.name = name + self.molecule_types = molecule_types if molecule_types is not None else [] + self.reactions = reactions if reactions is not None else [] + + def __repr__(self): + return f"" + + def save_model(self, file_path: str) -> None: + """Saves the model to a specified JSON file. + + Args: + file_path (str): Path to the file where the model should be saved. + """ + data = { + "name": self.name, + "molecule_types": [ + { + "name": mol.name, + "interfaces": [ + {"name": iface.name, "coord": iface.coord} for iface in mol.interfaces + ], + "diffusion_translation": mol.translational_diffusion_constant, + "diffusion_rotation": mol.rotational_diffusion_constant, + } + for mol in self.molecule_types + ], + "reactions": [ + { + "name": rxn.name, + "binding_radius": rxn.binding_radius, + "binding_angles": rxn.binding_angles, + "norm1": rxn.norm1, + "norm2": rxn.norm2, + "ka": rxn.ka, + "kb": rxn.kb, + } + for rxn in self.reactions + ], + } + with open(file_path, "w", encoding="utf-8") as file: + json.dump(data, file, indent=4, cls=CustomJSONEncoder) # Use custom encoder + + def load_model(self, cls, file_path: str) -> "Model": + """Loads a model from a specified JSON file. + + Args: + file_path (str): Path to the JSON file containing the model data. + + Returns: + Model: An instance of the Model class with the loaded data. + """ + with open(file_path, "r", encoding="utf-8") as file: + data = json.load(file) + + molecule_types = [ + MoleculeType( + name=mol["name"], + interfaces=[MoleculeInterface(name=iface["name"], coord=Coords(**iface["coord"])) for iface in mol["interfaces"]], + translational_diffusion_constant=mol["diffusion_translation"], + rotational_diffusion_constant=mol["diffusion_rotation"], + ) + for mol in data["molecule_types"] + ] + + reactions = [ + Reaction( + name=rxn["name"], + binding_radius=rxn["binding_radius"], + binding_angles=tuple(rxn["binding_angles"]), + norm1=tuple(rxn["norm1"]), + norm2=tuple(rxn["norm2"]), + ka=rxn["ka"], + kb=rxn["kb"], + ) + for rxn in data["reactions"] + ] + + return cls(name=data["name"], molecule_types=molecule_types, reactions=reactions) + +class CustomJSONEncoder(json.JSONEncoder): + """Custom JSON encoder to handle Coords serialization and NumPy types.""" + def default(self, o): + if isinstance(o, Coords): + return {"x": o.x, "y": o.y, "z": o.z} # Convert Coords to dict + elif isinstance(o, np.float32): # Convert numpy float32 to standard float + return float(o) + elif isinstance(o, np.ndarray): # Convert numpy array to list + return o.tolist() + return super().default(o) + +class BindingInterfaceTemplate: + """ + Represents a binding interface template between molecules. + + Attributes: + name (str): Identifier of the interface template. + coord (Coords): Relative coordinates of the interface. + my_residues (list): Residues forming this interface. + required_free_list (list): Other interface templates that must remain unbound + for this interface to bind. + signature (dict): Stores interface geometry information. + """ + + def __init__(self, name: str = '', residues = None, + coords = None, energy = None): + """ + Initializes a BindingInterfaceTemplate. + + Args: + name (str): Identifier for the interface template. + """ + self.name = name + if coords is None: + coords = [0.0, 0.0, 0.0] + self.coords = np.asarray(coords, dtype=float) + self.residues = residues if residues is not None else [] + # The list of interface templates that need + # to be free to bind to this interface template + self.required_free_list = [] + self.signature = {} + self.energy = energy + + def __repr__(self): + return f"" + + def __str__(self): + residues = ", ".join(self.residues) + required_free = ", ".join(self.required_free_list) + return (f"Interface Template: {self.name}\n" + f" Coordinates: {self.coords}\n" + f" Residues: {residues}\n" + f" Required Free: {required_free}") + + def __eq__(self, other): + if not isinstance(other, BindingInterfaceTemplate): + return False + return self.name == other.name + +class BindingInterface: + """ + Represents a binding interface between molecules. + + Attributes: + name (str): Identifier of the binding interface. + coord (Coords): Position of the interface. + my_template (BindingInterfaceTemplate): Reference to the associated interface template. + my_residues (list): Residues included in the interface. + signature (dict): Stores interface geometry information. + """ + + def __init__(self, name: str): + """ + Initializes a BindingInterface. + + Args: + name (str): Identifier for the binding interface. + """ + self.name = name + self.coord = None + self.my_template = None + self.my_residues = [] + self.signature = {} + self.energy = None + + def __str__(self): + return (f"BindingInterface: {self.name}\n" + f" Template: {self.my_template}\n" + f" Coordinates: {self.coord}\n" + f" Residue Count: {len(self.my_residues)}\n" + f" Residues: {self.my_residues}") + + def __repr__(self): + return self.__str__() + + def __eq__(self, other): + if not isinstance(other, BindingInterface): + return False + return self.my_template == other.my_template + +class ReactionTemplate: + """ + Defines a reaction template between two MoleculeTemplates. + + Attributes: + expression (str): Textual representation of the reaction. + reactants (list): List of reactant molecule/interface templates. + products (list): List of product molecule/interface templates. + binding_angles (tuple): Tuple describing binding angles (theta1, theta2, phi1, phi2, omega). + binding_radius (float): Distance between binding interfaces. + norm1 (list): Normal vector of the first reactant. + norm2 (list): Normal vector of the second reactant. + """ + def __init__(self, + reactants = None, + products = None, + binding_angles = None, + binding_radius = 3.5, + norm1 = None, + norm2 = None, + ka = 1.0, + kb = 1.0): + """ + Initializes a ReactionTemplate with default values. + """ + self.expression = None + self.reactants = reactants if reactants is not None else [] + self.products = products if products is not None else [] + self.binding_angles = binding_angles if binding_angles is not None else [] + self.binding_radius = binding_radius + self.norm1 = norm1 + self.norm2 = norm2 + self.kd = None + self.ka = ka + self.kb = kb + self.energy = None + + def __str__(self): + return (f"Reaction Template: {self.expression}\n" + f" Reactants: {self.reactants}\n" + f" Products: {self.products}\n" + f" Binding Angles: {self.binding_angles}\n" + f" Binding Radius: {self.binding_radius / 10:.6f} nm\n" + f" norm1: {self.norm1}\n" + f" norm2: {self.norm2}") + + def __repr__(self): + return self.__str__() + + def __eq__(self, other): + if not isinstance(other, ReactionTemplate): + return False + return self.expression == other.expression diff --git a/ionerdss/nerdss_model/design_model.py b/ionerdss/model/design_model.py similarity index 95% rename from ionerdss/nerdss_model/design_model.py rename to ionerdss/model/design_model.py index 642b40b1..3ca5d561 100644 --- a/ionerdss/nerdss_model/design_model.py +++ b/ionerdss/model/design_model.py @@ -3,7 +3,7 @@ This module defines the `DesignModel` class, inheriting from the `Model` class, which is used to generate NERDSS molecule types and reactions, and corresponding files by designing. """ -from .model import Model +from .components import Model class DesignModel(Model): """"A class for generating NERDSS molecule types and reactions, and corresponding files by designing. diff --git a/ionerdss/model/graph_based/complexes/__init__.py b/ionerdss/model/graph_based/complexes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ionerdss/model/graph_based/complexes/conversion.py b/ionerdss/model/graph_based/complexes/conversion.py new file mode 100644 index 00000000..e69de29b diff --git a/ionerdss/model/graph_based/complexes/examples.py b/ionerdss/model/graph_based/complexes/examples.py new file mode 100644 index 00000000..b4c2c278 --- /dev/null +++ b/ionerdss/model/graph_based/complexes/examples.py @@ -0,0 +1,62 @@ +import networkx as nx + +def graph_5l93(): + G = nx.Graph() + G.add_nodes_from([(i, {"type": "A"}) for i in range(18)]) + G.add_edges_from([ + (0, 1, {"type": "hex"}), (1, 2, {"type": "hex"}), (2, 3, {"type": "hex"}), + (3, 4, {"type": "hex"}), (4, 5, {"type": "hex"}), (5, 0, {"type": "hex"}), + (6, 7, {"type": "tri"}), (7, 0, {"type": "tri"}), (0, 6, {"type": "tri"}), + (7, 1, {"type": "di"}), (8, 9, {"type": "tri"}), (9, 1, {"type": "tri"}), + (1, 8, {"type": "tri"}), (9, 2, {"type": "di"}), (10, 11, {"type": "tri"}), + (11, 2, {"type": "tri"}), (2, 10, {"type": "tri"}), (11, 3, {"type": "di"}), + (12, 13, {"type": "tri"}), (13, 3, {"type": "tri"}), (3, 12, {"type": "tri"}), + (13, 4, {"type": "di"}), (14, 15, {"type": "tri"}), (15, 4, {"type": "tri"}), + (4, 14, {"type": "tri"}), (15, 5, {"type": "di"}), (16, 17, {"type": "tri"}), + (17, 5, {"type": "tri"}), (5, 16, {"type": "tri"}), (17, 0, {"type": "di"}), + ]) + return G + +def graph_8y7s(): + G = nx.Graph() + G.add_nodes_from([(i, {"type": "X"}) for i in range(4)]) + G.add_edges_from([ + (0, 1, {"type": "a"}), (0, 2, {"type": "b"}), (0, 3, {"type": "c"}), + (2, 3, {"type": "a"}), (1, 3, {"type": "b"}), (1, 2, {"type": "c"}), + ]) + return G + +def graph_asymmetry_4mer(): + G = nx.Graph() + G.add_nodes_from([(0, {"type": "A"}), (1, {"type": "B"}), (2, {"type": "C"}), (3, {"type": "A"})]) + G.add_edges_from([ + (0, 1, {"type": "ab"}), (1, 2, {"type": "bc"}), (2, 3, {"type": "ca"}), (3, 1, {"type": "ab"}) + ]) + return G + +################################ +# Graph Registry +################################ + +graph_registry = { + "5l93": graph_5l93, + "8y7s": graph_8y7s, + "asymmetry_4mer": graph_asymmetry_4mer, +} + +def get_example(name: str): + """ + Get example with a key + """ + try: + return graph_registry[name]() + except KeyError: + raise ValueError(f"Unknown example: {name}. Available: {list(graph_registry)}") + +def show_available_examples(do_print = True): + """ + Return the registry of examples + """ + if do_print: + print("Available examples:", list(graph_registry.keys())) + return(list(graph_registry.keys())) diff --git a/ionerdss/model/graph_based/complexes/subcomplexes.py b/ionerdss/model/graph_based/complexes/subcomplexes.py new file mode 100644 index 00000000..d407a014 --- /dev/null +++ b/ionerdss/model/graph_based/complexes/subcomplexes.py @@ -0,0 +1,62 @@ +import networkx as nx +from itertools import combinations, chain +from networkx.algorithms.graph_hashing import weisfeiler_lehman_graph_hash +from networkx.algorithms.components import connected_components + +def powerset_connected_nodes(nodes): + """Generate all non-empty subsets of nodes, up to len(nodes)""" + nodes = list(nodes) + for r in range(1, len(nodes) + 1): + yield from combinations(nodes, r) + +def get_unique_fully_connected_subgraphs(G): + seen_hashes = set() + unique_subgraphs = [] + + full_degrees = dict(G.degree()) # cache full graph degrees + + for component_nodes in connected_components(G): + for node_subset in powerset_connected_nodes(component_nodes): + #H = G.subgraph(node_subset).copy() <- Avoid copy graph, 20% speed up + H = G.subgraph(node_subset) + + if len(H) == 1: + # Allow size-1 subgraphs only if connected in G + node = node_subset[0] + if full_degrees[node] == 0: + continue + else: + # Require every node in subgraph to have degree >= 1 in H + if not nx.is_connected(H): + continue + + # Use canonical hash for deduplication + H_relabel = nx.convert_node_labels_to_integers(H) + wl_hash = weisfeiler_lehman_graph_hash(H_relabel, node_attr="type", edge_attr="type") + + if wl_hash not in seen_hashes: + seen_hashes.add(wl_hash) + unique_subgraphs.append(H) + + return unique_subgraphs + +def all_nonempty_proper_subsets(s): + """All non-empty subsets of s that are not equal to s itself.""" + s = list(s) + return (set(combo) for r in range(1, len(s)) for combo in combinations(s, r)) + +if __name__ == "__main__": + # Example graph (your complex test case) + G = nx.Graph() + G.add_node(0, type="A") + G.add_node(1, type="A") + G.add_node(2, type="A") + G.add_node(3, type="A") + + G.add_edge(0, 1, type="ab") + G.add_edge(1, 2, type="bc") + G.add_edge(2, 3, type="ca") + G.add_edge(3, 1, type="ab") + + get_unique_fully_connected_subgraphs(G) + diff --git a/ionerdss/model/graph_based/reactions/__init__.py b/ionerdss/model/graph_based/reactions/__init__.py new file mode 100644 index 00000000..04a794e1 --- /dev/null +++ b/ionerdss/model/graph_based/reactions/__init__.py @@ -0,0 +1,7 @@ +from .dimer import find_all_dimer_reactions +from .transformation import find_all_transformable_subgraph_pairs + +__all__ = [ + "find_all_dimer_reactions", + "find_all_transformable_subgraph_pairs", +] \ No newline at end of file diff --git a/ionerdss/model/graph_based/reactions/dimer.py b/ionerdss/model/graph_based/reactions/dimer.py new file mode 100644 index 00000000..73282fd4 --- /dev/null +++ b/ionerdss/model/graph_based/reactions/dimer.py @@ -0,0 +1,107 @@ +import networkx as nx +from networkx.algorithms.graph_hashing import weisfeiler_lehman_graph_hash +from itertools import combinations +from multiprocessing import Pool, cpu_count + +def is_connected(G, nodes): + """Check if nodes induce a connected subgraph in G.""" + return nx.is_connected(G.subgraph(nodes)) + +def typed_wl_hash(Gsub): + """Get WL graph hash using node and edge types.""" + return weisfeiler_lehman_graph_hash(Gsub, node_attr="type", edge_attr="type") + +def all_unique_induced_splits(G): + """Yield all unique ways to split G into two connected, typed-isomorphic-aware induced subgraphs.""" + nodes = list(G.nodes) + n = len(nodes) + seen = set() + + for r in range(1, n // 2 + 1): + for A in combinations(nodes, r): + A = set(A) + B = set(nodes) - A + + if not is_connected(G, A) or not is_connected(G, B): + continue + + h1 = typed_wl_hash(G.subgraph(A)) + h2 = typed_wl_hash(G.subgraph(B)) + key = tuple(sorted((h1, h2))) + + if key in seen: + continue + seen.add(key) + yield A, B + +def deduplicate_species(species): + """Filter out isomorphic species using WL hash.""" + seen_hashes = set() + unique_species = [] + for sp in species: + h = typed_wl_hash(sp) + if h not in seen_hashes: + seen_hashes.add(h) + unique_species.append(sp) + return unique_species + +def get_broken_edges(G, part1, part2): + """Return edges between part1 and part2, with type attributes.""" + cut_edges = [] + for u in part1: + for v in G.neighbors(u): + if v in part2: + edge_type = G[u][v].get("type", None) + cut_edges.append((u, v, edge_type)) + return cut_edges + +def is_single_bond_change(G1, G2): + """Check if G1 and G2 differ by exactly one edge (added or removed), not both.""" + edges1 = set((min(u, v), max(u, v), d['type']) for u, v, d in G1.edges(data=True)) + edges2 = set((min(u, v), max(u, v), d['type']) for u, v, d in G2.edges(data=True)) + + diff1 = edges1 - edges2 + diff2 = edges2 - edges1 + + # Only bond(s) formed or broken, not both + return (len(diff1) >= 1 and len(diff2) == 0) or (len(diff1) == 0 and len(diff2) >= 1) + +def find_single_bond_transformations(species): + """Find pairs of species that differ by exactly one bond (added or removed).""" + transformations = [] + seen = set() + n = len(species) + for i in range(n): + for j in range(i+1, n): + G1 = species[i] + G2 = species[j] + if set(G1.nodes) != set(G2.nodes): # must be same node set + continue + if is_single_bond_change(G1, G2): + h1, h2 = typed_wl_hash(G1), typed_wl_hash(G2) + key = tuple(sorted((h1, h2))) + if key not in seen: + seen.add(key) + transformations.append((G1, G2)) + return transformations + +def compute_reactions_for_species(specie): + """Compute reactions (split pairs) for a single species.""" + reactions = [] + for part1, part2 in all_unique_induced_splits(specie): + reactions.append((part1, part2, specie)) + return reactions + +def find_all_dimer_reactions(species, use_multiprocessing=False): + """Compute all reactions across a list of species with optional multiprocessing.""" + species = deduplicate_species(species) + + if use_multiprocessing: + with Pool(cpu_count()) as pool: + results = pool.map(compute_reactions_for_species, species) + reactions = [r for group in results for r in group] + else: + reactions = [] + for specie in species: + reactions.extend(compute_reactions_for_species(specie)) + return reactions diff --git a/ionerdss/model/graph_based/reactions/transformation.py b/ionerdss/model/graph_based/reactions/transformation.py new file mode 100644 index 00000000..9b51f81b --- /dev/null +++ b/ionerdss/model/graph_based/reactions/transformation.py @@ -0,0 +1,116 @@ +# Final fix: relabel both graphs canonically FIRST, then compare edges and test isomorphism + +import networkx as nx +from collections import defaultdict +from itertools import combinations +from networkx.algorithms.isomorphism import GraphMatcher +from ..complexes.subcomplexes import get_unique_fully_connected_subgraphs + +# Match functions +# We define that two graphs are isomorphic if there exists some one-on-one mapping +# for nodes, edges, node types, and edge types +def node_match(n1, n2): + return n1["type"] == n2["type"] + +def edge_match(e1, e2): + return e1["type"] == e2["type"] + +def are_type_isomorphic(G1, G2): + gm = GraphMatcher(G1, G2, node_match=node_match, edge_match=edge_match) + return gm.is_isomorphic() + +# Canonical relabeling that preserves type attributes +def relabel_graph_by_type(G): + type_counts = defaultdict(int) + mapping = {} + new_attrs = {} + + for n, d in G.nodes(data=True): + t = d["type"] + label = f"{t}{type_counts[t]}" + mapping[n] = label + new_attrs[label] = {"type": t} + type_counts[t] += 1 + + G_relabel = nx.relabel_nodes(G, mapping, copy=True) + nx.set_node_attributes(G_relabel, new_attrs) + return G_relabel + +# Main transformation logic +def is_transformable_by_forming_or_breaking_canonically(G1, G2): + # Relabel both graphs canonically by type + G1c = relabel_graph_by_type(G1) + G2c = relabel_graph_by_type(G2) + + if sorted([d["type"] for _, d in G1c.nodes(data=True)]) != sorted([d["type"] for _, d in G2c.nodes(data=True)]): + return False, None, None + + def edge_set(G): + return set((min(u, v), max(u, v), d["type"]) for u, v, d in G.edges(data=True)) + + e1 = edge_set(G1c) + e2 = edge_set(G2c) + + # Try G1 -> G2 by forming edges + if e1 < e2: + edges_added = list(e2 - e1) + G1_aug = G1c.copy() + for u, v, t in edges_added: + G1_aug.add_edge(u, v, type=t) + if are_type_isomorphic(G1_aug, G2c): + return True, "added", edges_added + + # Try G1 -> G2 by removing edges + if e1 > e2: + edges_removed = list(e1 - e2) + G1_red = G1c.copy() + for u, v, t in edges_removed: + if G1_red.has_edge(u, v) and G1_red[u][v].get("type") == t: + G1_red.remove_edge(u, v) + if are_type_isomorphic(G1_red, G2c): + return True, "removed", edges_removed + + return False, None, None + +def find_all_transformable_subgraph_pairs(G, subgraphs = None): + """ + This function calls `molecule_gen.get_unique_fully_connected_subgraphs` to + get all the subgraphs first and the use the function + `is_transformable_by_forming_or_breaking_canonically` above to check + for the pairs. + """ + # get all subgraphs if subgraphs is not given + if subgraphs is None: + subgraphs = get_unique_fully_connected_subgraphs(G) + + # iterate over all non-repeated unordered pairs of subgraphs and + # get transformable pairs + transformable_pairs = [] + for G1, G2 in combinations(subgraphs, 2): + is_transformable, direction, list_of_edges_changed =\ + is_transformable_by_forming_or_breaking_canonically(G1, G2) + if is_transformable: + transformable_pairs.append((G1, G2, direction, list_of_edges_changed)) + + return transformable_pairs + +if __name__ == "__main__": + # Example graph + G = nx.Graph() + G.add_node(0, type="A") + G.add_node(1, type="B") + G.add_node(2, type="C") + G.add_node(3, type="A") + G.add_edge(0, 1, type="ab") + G.add_edge(1, 2, type="bc") + G.add_edge(2, 3, type="ca") + G.add_edge(3, 1, type="ab") + + transformable_pairs = find_all_transformable_subgraph_pairs(G) + + for t1, t2, dir, list_of_edges_changed in transformable_pairs: + print(t1.nodes) + print(t2.nodes) + print(dir) + print(list_of_edges_changed) + \ No newline at end of file diff --git a/ionerdss/model/graph_based/symmetry/__init__.py b/ionerdss/model/graph_based/symmetry/__init__.py new file mode 100644 index 00000000..9a984cf1 --- /dev/null +++ b/ionerdss/model/graph_based/symmetry/__init__.py @@ -0,0 +1,28 @@ +""" +This file includes code adapted from the 'pointgroup' package, +originally authored by Abel Carreras (https://github.com/abelcarreras/pointgroup), +and is licensed under the MIT License: + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +""" diff --git a/ionerdss/model/graph_based/symmetry/grid.py b/ionerdss/model/graph_based/symmetry/grid.py new file mode 100644 index 00000000..0b9af28b --- /dev/null +++ b/ionerdss/model/graph_based/symmetry/grid.py @@ -0,0 +1,71 @@ +""" +This file includes code adapted from the 'pointgroup' package, +originally authored by Abel Carreras (https://github.com/abelcarreras/pointgroup), +and is licensed under the MIT License: + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +from itertools import permutations +import numpy as np + + +def get_cubed_sphere_grid_points(delta): + """ + Generate a set of quasi-uniform grid points on the surface of a unit sphere + using a cubed-sphere projection approach. + + This creates points by placing a grid on each face of a cube, + projecting those points onto the unit sphere, and symmetrizing via permutations. + + Parameters + ---------- + delta : float + Approximate angular resolution (in radians). Smaller delta → more points. + + Returns + ------- + generator of np.ndarray + Yields 3D unit vectors uniformly spread on the sphere. + + Examples + -------- + >>> points = list(get_cubed_sphere_grid_points(0.5)) + >>> len(points) + 216 + >>> np.allclose(np.linalg.norm(points[0]), 1.0) + True + """ + + num_points = int(1.0 / delta) + + if num_points < 1: + return [(1, 0, 0)] + + for i in range(-num_points, num_points+1): + x = i * delta + for j in range(-num_points, num_points+1): + y = j * delta + for p in permutations([x, y, 1]): + norm = np.linalg.norm([x, y, 1]) + yield np.array(p)/norm diff --git a/ionerdss/model/graph_based/symmetry/pointgroup.py b/ionerdss/model/graph_based/symmetry/pointgroup.py new file mode 100644 index 00000000..9b168382 --- /dev/null +++ b/ionerdss/model/graph_based/symmetry/pointgroup.py @@ -0,0 +1,375 @@ +""" +This file includes code adapted from the 'pointgroup' package, +originally authored by Abel Carreras (https://github.com/abelcarreras/pointgroup), +and is licensed under the MIT License: + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" +import numpy as np +from . import utils +from .grid import get_cubed_sphere_grid_points +from ionerdss.math.coords import get_perpendicular_vector +from ionerdss.math.rotations import Rotation, rotation_matrix +from ionerdss.math import inertia_tensors, angles + +class PointGroup: + """ + Point group main class. Note that we assume that center of mass is + already put at (0,0,0). + """ + + def __init__(self, + positions, # binding site positions + symbols, # binding site symbols + tolerance_eig=1e-2, # inertia tensor precision + tolerance_ang=4 # angular tolerance in degrees + ): + + self._tolerance_eig = tolerance_eig + self._tolerance_ang = np.deg2rad(tolerance_ang) + self._symbols = symbols + self._cent_coord = np.array(positions) + + self._ref_orientation = np.identity(3) + + # determine inertia tensor + inertia_tensor = inertia_tensors.get_inertia_tensor(self._cent_coord) + eigenvalues, eigenvectors = np.linalg.eigh(inertia_tensor) + self._eigenvalues = eigenvalues + self._eigenvectors = eigenvectors.T + + # initialize variables + self._schoenflies_symbol = '' + self._max_order = 1 + + eig_degeneracy = inertia_tensors.get_degeneracy(self._eigenvalues, self._tolerance_eig) + + # Linear groups + if np.min(abs(self._eigenvalues)) < self._tolerance_eig: + self._lineal() + + # Asymmetric group + elif eig_degeneracy == 1: + self._asymmetric() + + # Symmetric group + elif eig_degeneracy == 2: + self._symmetric() + + # Spherical group + elif eig_degeneracy == 3: + self._spherical() + + else: + raise ValueError('Group type error') + + def _rename_point_group(self, pointgroup): + """ + renames isomorphic point groups + Ref) http://dms.library.utm.my:8080/vital/access/manager/Repository/vital:110227;jsessionid=8D0CBD4C6AD10FF6BEA7F6839D6E44BB?site_name=GlobalView + + :param pointgroup + :return: renamed pointgroup + """ + # C1h = Cs = C1v = S1 + if pointgroup in ['C1h', 'Cs', 'C1v', 'S1']: + return 'Cs' + # S2 = Ci + elif pointgroup in ['S2', 'Ci']: + return 'Ci' + # C2 = D1 + elif pointgroup in ['C2', 'D1']: + return 'C2' + # C2h = D1d + elif pointgroup in ['C2h', 'D1d']: + return 'C2h' + # C2v = D1h + elif pointgroup in ['C2v', 'D1h']: + return 'C2v' + # C3h = S3 + elif pointgroup in ['C3h', 'S3']: + return 'C3h' + else: + return pointgroup + + def get_point_group(self): + """ + get the point symmetry group symbol + + :return: the point symmetry group symbol + """ + return self._rename_point_group(self._schoenflies_symbol) + + def get_standard_coordinates(self): + """ + get the coordinates centered in the center of mass and + oriented along principal axis of inertia + + :return: the coordinates + """ + return self._cent_coord.tolist() + + def get_principal_axis_of_inertia(self): + """ + get the principal axis of inertia in rows in increasing order of momenta of inertia + + :return: the principal axis of inertia + """ + return self._eigenvectors.tolist() + + def get_principal_moments_of_inertia(self): + """ + get the principal momenta of inertia in increasing order + + :return: list of momenta of inertia + """ + return self._eigenvalues.tolist() + + # internal methods + def _lineal(self): + + # set orientation + idx = np.argmin(self._eigenvalues) + main_axis = self._eigenvectors[idx] + p_axis = get_perpendicular_vector(main_axis) + self._set_orientation(main_axis, p_axis) + + # not considering reflection / inversion + self._schoenflies_symbol = 'Cinfv' + + def _asymmetric(self): + + self._set_orientation(self._eigenvectors[2], self._eigenvectors[1]) + + n_axis_c2 = 0 + main_axis = [1, 0, 0] + for axis in np.identity(3): + c2 = Rotation(axis, order=2) + if self._check_op(c2, tol_factor=0.0): + n_axis_c2 += 1 + main_axis = axis + + self._max_order = 2 + + if n_axis_c2 == 0: + self._max_order = 0 + self._no_rot_axis() + else: + self._cyclic(main_axis) + + def _symmetric(self): + """ + handle cyclic groups Cn + + :return: + """ + idx = utils.get_non_degenerated(self._eigenvalues, self._tolerance_eig) + main_axis = self._eigenvectors[idx] + + self._max_order = self._get_axis_rot_order(main_axis, n_max=9) + + self._cyclic(main_axis) + + def _spherical(self): + """ + Handle spherical groups (T, O, I) + + :return: + """ + + main_axis = None + while main_axis is None: + for axis in get_cubed_sphere_grid_points(self._tolerance_ang): + c5 = Rotation(axis, order=5) + c4 = Rotation(axis, order=4) + c3 = Rotation(axis, order=3) + + if self._check_op(c5, tol_factor=utils.magic_formula(5)): + self._schoenflies_symbol = "I" + main_axis = axis + self._max_order = 5 + break + elif self._check_op(c4, tol_factor=utils.magic_formula(4)): + self._schoenflies_symbol = "O" + main_axis = axis + self._max_order = 4 + break + elif self._check_op(c3, tol_factor=utils.magic_formula(3)): + self._schoenflies_symbol = "T" + main_axis = axis + self._max_order = 3 + + if main_axis is None: + print('increase tolerance') + self._tolerance_ang *= 1.01 + + p_axis_base = get_perpendicular_vector(main_axis) + + # I + if self._schoenflies_symbol == 'I': + def determine_orientation_I(main_axis): + r_matrix = rotation_matrix(p_axis_base, np.arcsin((np.sqrt(5)+1)/(2*np.sqrt(3)))) + axis = np.dot(main_axis, r_matrix.T) + + # set molecule orientation in I + for angle in np.arange(0, 2*np.pi / self._max_order+self._tolerance_ang, self._tolerance_ang): + rot_matrix = rotation_matrix(main_axis, angle) + + c5_axis = np.dot(axis, rot_matrix.T) + c5 = Rotation(c5_axis, order=5) + + if self._check_op(c5, tol_factor=utils.magic_formula(5)*np.sqrt(2)): + t_axis = np.dot(main_axis, rotation_matrix(p_axis_base, np.pi/2).T) + return np.dot(t_axis, rot_matrix.T) + + raise ValueError('Error orientation I group') + + p_axis = determine_orientation_I(main_axis) + self._set_orientation(main_axis, p_axis) + + # O + if self._schoenflies_symbol == 'O': + + # set molecule orientation in O + def determine_orientation_O(main_axis): + r_matrix = rotation_matrix(p_axis_base, np.pi/2) + axis = np.dot(main_axis, r_matrix.T) + + for angle in np.arange(0, 2*np.pi / self._max_order+self._tolerance_ang, self._tolerance_ang): + rot_matrix = rotation_matrix(main_axis, angle) + + c4_axis = np.dot(axis, rot_matrix.T) + c4 = Rotation(c4_axis, order=4) + + if self._check_op(c4, tol_factor=utils.magic_formula(4)*np.sqrt(2)): + return axis + + raise ValueError('Error orientation O group') + + p_axis = determine_orientation_O(main_axis) + self._set_orientation(main_axis, p_axis) + + # T + if self._schoenflies_symbol == 'T': + + # set molecule orientation in T + def determine_orientation_T(main_axis): + r_matrix = rotation_matrix(p_axis_base, -np.arccos(-1/3)) + axis = np.dot(main_axis, r_matrix.T) + + for angle in np.arange(0, 2*np.pi / self._max_order + self._tolerance_ang, self._tolerance_ang): + rot_matrix = rotation_matrix(main_axis, angle) + + c3_axis = np.dot(axis, rot_matrix.T) + c3 = Rotation(c3_axis, order=3) + + if self._check_op(c3, tol_factor=utils.magic_formula(3)*np.sqrt(2)): + t_axis = np.dot(main_axis, rotation_matrix(p_axis_base, np.pi/2).T) + return np.dot(t_axis, rot_matrix.T) + + raise ValueError('Error orientation T group') + + p_axis = determine_orientation_T(main_axis) + self._set_orientation(main_axis, p_axis) + + def _no_rot_axis(self): + self._schoenflies_symbol = 'C1' + return + + def _cyclic(self, main_axis): + self._schoenflies_symbol = "C{}".format(self._max_order) + return + + def _get_axis_rot_order(self, axis, n_max): + """ + Get rotation order for a given axis + + :param axis: the axis + :param n_max: maximum order to scan + :return: order + """ + + def max_rotation_order(tolerance): + for i in range(2, 100): + if 2*np.pi / (i * (i - 1)) <= tolerance: + return i-1 + + n_max = np.min([max_rotation_order(self._tolerance_ang), n_max]) + + for i in range(n_max, 1, -1): + Cn = Rotation(axis, order=i) + if self._check_op(Cn): + return i + return 1 + + def _check_op(self, operation, print_data=False, tol_factor=1.0): + """ + check if operation exists + + :param operation: operation orbject + :return: True or False + """ + sym_matrix = operation.get_matrix() + error_abs_rad = angles.absolute_error_to_angle(self._tolerance_eig, points=self._cent_coord) + + op_coordinates = np.dot(self._cent_coord, sym_matrix.T) + for idx, op_coord in enumerate(op_coordinates): + + difference_rad = utils.normalized_radius_difference(op_coord, self._cent_coord, self._tolerance_eig) + difference_ang = angles.angles_between_vector_and_vectors(op_coord, self._cent_coord, self._tolerance_eig) + + def check_diff(diff, diff2): + for idx_2, (d1, d2) in enumerate(zip(diff, diff2)): + if self._symbols[idx_2] != self._symbols[idx]: + continue + # d_r = np.linalg.norm([d1, d2]) + tolerance_total = self._tolerance_ang * tol_factor + error_abs_rad[idx_2] + if d1 < tolerance_total and d2 < tolerance_total: + return True + return False + + if not check_diff(difference_ang, difference_rad): + return False + + if print_data: + print('Continue', idx) + + if print_data: + print('Found!') + return True + + def _set_orientation(self, main_axis, p_axis): + """ + set molecular orientation along main_axis (x) and p_axis (y). + + :param main_axis: principal orientation axis (must be unitary) + :param p_axis: secondary axis perpendicular to principal (must be unitary) + :return: + """ + + assert np.linalg.norm(main_axis) > 1e-1 + assert np.linalg.norm(p_axis) > 1e-1 + + orientation = np.array([main_axis, p_axis, np.cross(main_axis, p_axis)]) + self._cent_coord = np.dot(self._cent_coord, orientation.T) + self._ref_orientation = np.dot(self._ref_orientation, orientation.T) diff --git a/ionerdss/model/graph_based/symmetry/utils.py b/ionerdss/model/graph_based/symmetry/utils.py new file mode 100644 index 00000000..3c19202c --- /dev/null +++ b/ionerdss/model/graph_based/symmetry/utils.py @@ -0,0 +1,82 @@ +""" +This file includes code adapted from the 'pointgroup' package, +originally authored by Abel Carreras (https://github.com/abelcarreras/pointgroup), +and is licensed under the MIT License: + +The MIT License (MIT) + +Copyright (c) 2023 Efrem Bernuz and Abel Carreras + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" +import numpy as np + +def magic_formula(n): + """ + Compute the value of the expression: sqrt(n * 2^(3 - n)) + + This "magic formula" may be used in contexts where the geometric scaling or + normalization of an n-mer system is required, such as symmetry-based energy or + entropy factors in molecular assemblies. + + Parameters + ---------- + n : int or float + The input value (typically an integer ≥ 1), e.g., number of subunits or symmetry order. + + Returns + ------- + float + The computed value of sqrt(n * 2^(3 - n)) + + Examples + -------- + >>> magic_formula(2) + 2.0 + >>> magic_formula(3) + 1.732... + """ + return np.sqrt(n * 2 ** (3 - n)) + +def normalized_radius_difference(reference_vec, targets, tol=1e-5): + """ + Compute the relative radial distance differences (unitless), + normalized by average radius between a reference vector and each target. + + Parameters + ---------- + reference_vec : array_like of shape (3,) + Reference 3D vector. + targets : ndarray of shape (N, 3) + Array of target 3D vectors. + tol : float + Minimum average radius to avoid divide-by-zero. + + Returns + ------- + rel_differences : ndarray of shape (N,) + Array of absolute radius differences normalized by average radius. + """ + ref_norm = np.linalg.norm(reference_vec) + target_norms = np.linalg.norm(targets, axis=1) + + avg_radii = np.clip((target_norms + ref_norm) / 2.0, tol, None) + abs_diff = np.abs(target_norms - ref_norm) + + return abs_diff / avg_radii diff --git a/ionerdss/model/pdb/README.md b/ionerdss/model/pdb/README.md new file mode 100644 index 00000000..5a5ceef3 --- /dev/null +++ b/ionerdss/model/pdb/README.md @@ -0,0 +1,364 @@ +# `ionerdss.model.pdb` Module Overview + +## **How reaction / simulation systems are built up from a PDB or mmCIF file** + +### Pipeline Step: `coarse_grain_structure(path_to_structure)` + +This function (from `coarse_grain.py`) processes an input `.pdb` or `.cif` file to detect **interfaces** using spatial geometry and contact scoring: + +### Detection Process: + +* **Load structure** using `Bio.PDB.MMCIFParser` or `PDBParser` +* **Identify all chains** and compute each chain’s: + + * **Center of mass (COM)** + * **Radius** (based on heavy atom spread or Cα) +* **Detect interfaces between chains** by: + + * Calculating **minimum inter-chain residue-residue distances** + * Defining a **pair as interacting** if residues from two chains are within a cutoff (e.g., 6 Å) + * For each interface: + + * Compute the interface **center** + * Store list of **interacting residue indices** + * Estimate a **binding energy** using a residue-pair energy lookup (`energy_table.py`) + +### Output: + +Each chain is assigned: + +```python +{ + 'COMs': [...], + 'radii': [...], + 'interfaces': [['B', 'C'], ...], + 'interface_coords': [[...], ...], + 'interface_residues': [[...], ...], + 'interface_energies': [[...], ...] +} +``` + +## **How interfaces are assigned types (repeated classification)** + +### Module: `repeated_chain.py` + +Chains are grouped into **repeated sets** using: + +### Method A. **Header-based entity IDs** (from CIF header) + +* Extract `_entity_poly.pdbx_strand_id` to map chains from same molecule entity +* Example: chains `A`, `B`, and `C` all belong to entity `1`, so are repeated + +### Method B. **Structure-based fallback** (if header missing or .pdb file): + +* Perform all-by-all **Cα alignment** using `Bio.PDB.Superimposer` +* Compute RMSD between chain pairs +* Assign chains to the same repeated_chain group if **RMSD < threshold (e.g., 1 Å)** + +### Output: + +* `chains_map`: `{ 'B': 'A', 'C': 'A', 'D': 'D' }` (map chain → representative) +* `chains_group`: `[ ['A', 'B', 'C'], ['D'] ]` + +Used by `regularize.py` to merge redundant chains or build symmetry-aware models. + +## **How to use the subpackage** + +### Goal: From a `.cif` or `.pdb` file → NERDSS-ready model with interfaces, reactions, and molecule templates. + +### Minimal Usage + +```python +from model.pdb import coarse_grain, repeated_chain, regularize, templates, reaction + +# 1. Step: Coarse-grain the structure to detect interfaces +raw = coarse_grain.coarse_grain_structure("example.cif") + +# 2. Step: Find repeated chain groups (from CIF header or RMSD) +chains_map, chains_group = repeated_chain.identify_repeated_chains("example.cif", raw["structure"]) + +# 3. Step: Regularize chain and interface indices +model = regularize.regularize_model(raw, chains_map=chains_map) + +# 4. Step: Convert to NERDSS Molecule / Interface templates +template_data = templates.build_templates(model) + +# 5. Step: Generate Reaction templates +interface_list = template_data["interfaces"] # flat list or nested per chain +reactions = reaction.build_binding_reactions(model, interface_list) + +# Now: model + templates + reactions = ready for export +``` + +## Directory Structure Summary + +```bash +model/ +└── pdb/ + ├── coarse_grain.py # Detect COMs, radii, and interfaces from structure + ├── energy_table.py # Heuristic residue-residue energy table + ├── geometry.py # Tools for alignment, clash checking, RMSD + ├── repeated_chain.py # Detect repeated chains via header or RMSD + ├── molecule.py # MoleculeTemplate and InterfaceTemplate classes + ├── reaction.py # ReactionTemplate logic between interfaces + ├── regularize.py # Reindex chains/interfaces, symmetry grouping + ├── templates.py # Build NERDSS-ready molecule/interface templates +``` + +# Coarse-Graining Protein Structures: Interface Detection Walkthrough + +This document describes the algorithm implemented in `ionerdss.model.pdb.coarse_grain`. It detects chain-chain interfaces from a PDB structure using residue contact heuristics and computes coarse-grained interface representations suitable for downstream modeling. + +## Overview + +The coarse-graining process extracts the following from a Biopython `Structure` object: + +* Center of mass (COM) of each chain +* Interacting residues between chain pairs (interfaces) +* Geometric location of interfaces (average of contacting residue CAs) +* Energetic estimate of interface strength based on residue pair potential + +## Parameters + +| Parameter | Type | Description | +| ----------------- | ----------------------------- | ---------------------------------------------------------- | +| `structure` | `Bio.PDB.Structure.Structure` | Parsed PDB structure | +| `distance_cutoff` | `float` | Max CA-CA distance (in nm) to count as contacting | +| `residue_cutoff` | `int` | Min number of contacting residues to consider an interface | + +## Workflow Breakdown + +### 1. Filter Valid Chains + +```python +chains = sorted([chain for chain in structure.get_chains() + if any(is_aa(res) for res in chain.get_residues())], + key=lambda c: c.id) +``` + +We keep only chains that contain amino acid residues. Sorting ensures consistent output. + +### 2. Compute COM and Radius for Each Chain + +```python +atoms = [atom.coord for res in chain for atom in res if is_aa(res)] +``` + +We collect coordinates of all atoms from amino acid residues to: + +* Compute the center of mass (simple mean of all atom positions) +* Estimate chain spread (RMS distance from COM) + +### 3. Precompute Bounding Boxes + +```python +coords = np.array([atom.coord for res in chain for atom in res if is_aa(res)]) +return coords.min(axis=0), coords.max(axis=0) +``` + +Bounding boxes are used to **exclude distant chain pairs** quickly. +If bounding boxes don’t overlap within a margin, skip the pair. + +### 4. For Each Chain Pair (i, j) + +We: + +* Extract all residues that have alpha carbons +* Build a list of `(residue_id, type, CA_coord)` +* Call `compute_interface()` to: + + * Use KDTree to find CA-CA contacts within `distance_cutoff` + * Track contacting residue IDs and types + * Compute the mean CA coordinate as interface COM + * Compute total interaction energy from a residue pair potential table + +### 5. Store Detected Interfaces + +```python +interfaces[i].append(chain_j.id) +interface_coords[i].append(com_i) +interface_residues[i].append(sorted(ids_i)) +interface_energies[i].append(total_energy) +``` + +Interface metadata is saved in per-chain lists. +Both directions (i->j and j->i) are recorded symmetrically. + +## Return Format + +```python +{ + 'chains': list of Bio.PDB.Chain objects, + 'COMs': list of Coords (per-chain center of mass), + 'radii': list of float (per-chain RMS radius), + 'interfaces': list of lists of chain IDs (who each chain interacts with), + 'interface_coords': list of Coords (per-chain list of interface locations), + 'interface_residues': list of lists of residue IDs, + 'interface_energies': list of floats +} +``` + +## Notes + +* All distances are assumed in nanometers (consistent with simulation input units) +* Residue-residue energies are symmetric (i.e., E(A,B) = E(B,A)) +* Function relies on `compute_interface()` and `get_default_energy_table()` to handle geometric and energetic logic + +## Dependencies + +* `Bio.PDB` for parsing +* `Coords` class (user-defined or from utility module) +* `KDTree` from `scipy.spatial` +* `numpy` for math operations + + +# Repeated Chain Detection Walkthrough + +This module provides utility functions to identify **repeated protein chains** in a biological structure (e.g., derived from PDB/mmCIF files). These chains may be identical or nearly identical due to symmetry, assembly, or template-based modeling. Identifying such equivalence is essential for **coarse-graining** and **downstream simulation** steps in tools like **NERDSS**. + +## Purpose + +The primary purpose of this module is to: + +* Detect **structurally or sequence-wise equivalent chains** within a structure. +* Assign a **canonical representative** to each group of equivalent chains. +* Enable **template-based molecular modeling**, where symmetric copies are replaced by references to a single entity. + +This is useful for: + +* Molecular symmetry analysis +* Template construction for simulations +* Reducing model redundancy +* Enabling consistent labeling across assemblies + +## Core Logic + +### Main Entry Point + +```python +identify_repeated_chains(pdb_id, structure, mode='default', ...) +``` + +This is the **main function** to detect repeated chains. It supports three modes of operation: + +| Mode | Description | +| ------------- | --------------------------------------------------------------------------- | +| `'default'` | Uses mmCIF header (if available), otherwise falls back to sequence identity | +| `'structure'` | Forces structural superimposition-based matching | +| `'sequence'` | Forces sequence identity-based matching | + +The function returns: + +* `chains_map`: a dictionary mapping each chain ID to a canonical representative +* `chains_group`: a list of lists representing chain equivalence groups + +## Methods and Algorithms + +### 1. Header-Based Detection (Default) + +```python +if '_entity_poly.pdbx_strand_id' in mmcif_dict: + # Use mmCIF annotations to group chains +``` + +* Extracts chain groups from `_entity_poly.entity_id` and `_entity_poly.pdbx_strand_id` +* Fast and direct, but depends on correct mmCIF annotations + +### 2. Structural Superimposing (Fallback or Forced) + +```python +_find_repeated_chains_by_structure_superimposing(chains, rmsd_threshold=1.0) +``` + +* Aligns each pair of chains using **C-alpha RMSD** +* Chains are considered equivalent if RMSD < threshold (default: 1.0 Å) +* Uses Biopython’s `Superimposer` + +**Advantages:** + +* Works without metadata +* Captures subtle differences in structure + +**Limitations:** + +* Assumes similar length and backbone topology +* Fails if chains differ significantly in number of residues + +### 3. Sequence-Based Matching (Fallback or Forced) + +```python +_find_repeated_chains_by_sequence(chains, seq_threshold=0.95) +``` + +* Uses `Bio.Align.PairwiseAligner` to align peptide sequences +* Groups chains if identity ≥ threshold (default: 95%) + +You can also provide a **custom aligner** to modify scoring schemes (e.g., for gap penalties). + +**Advantages:** + +* Robust to small structural variations +* Works even when structure is missing or imprecise + +**Limitations:** + +* Requires valid sequences (must have N, CA, and C atoms to be parsed) +* Sensitive to missing backbone data + +## Parameters + +| Parameter | Type | Description | +| ---------------- | ----------------------------- | -------------------------------------------------------------- | +| `pdb_id` | `str` | Name or path (used for warning messages only) | +| `structure` | `Bio.PDB.Structure.Structure` | Parsed structure object from Biopython | +| `mode` | `str` | `'default'`, `'structure'`, or `'sequence'` | +| `rmsd_threshold` | `float` | Max C-alpha RMSD to consider chains as structurally equivalent | +| `seq_threshold` | `float` | Min sequence identity to consider chains equivalent | +| `custom_aligner` | `Bio.Align.PairwiseAligner` | Optional user-defined aligner instance | + +## Example Usage + +```python +from Bio.PDB import MMCIFParser +from ionerdss.model.pdb.repeated_chain_detection import identify_repeated_chains + +parser = MMCIFParser(QUIET=True) +structure = parser.get_structure("1ABC", "1abc.cif") + +chains_map, chains_group = identify_repeated_chains("1ABC", structure, mode='default') + +print(chains_map) +# {'A': 'A', 'B': 'A', 'C': 'C'} + +print(chains_group) +# [['A', 'B'], ['C']] +``` + + +## Internal Outputs + +| Variable | Type | Description | +| -------------- | ------ | ------------------------------------- | +| `chains_map` | `dict` | Each chain mapped to its canonical ID | +| `chains_group` | `list` | Groups of chain IDs | + +## Error Handling + +* If `mode='default'` and CIF header is missing, a warning is issued: + + ```python + warnings.warn(f"{pdb_id}: Missing mmCIF entity_poly info. Falling back...") + ``` + +* If an invalid mode is specified: + + ```python + raise ValueError(...) + ``` + +## Caveats + +* `sequence` mode depends on proper peptide atom construction (`N`, `CA`, `C`). Synthetic structures must mimic real peptide geometry. +* `structure` mode assumes all chains are alignable — it skips chains with missing C-alpha atoms. +* This tool doesn't consider reflection/inversion symmetry — only RMSD/sequence identity. + diff --git a/ionerdss/model/pdb/__init__.py b/ionerdss/model/pdb/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ionerdss/model/pdb/coarse_grain.py b/ionerdss/model/pdb/coarse_grain.py new file mode 100644 index 00000000..182f4c13 --- /dev/null +++ b/ionerdss/model/pdb/coarse_grain.py @@ -0,0 +1,289 @@ +# model/pdb/coarse_grain.py +""" +## Documentation: Coarse-Graining Protein Structure for NERDSS Modeling + +done: change the method of detecting interfaces to Yufeng's method +done: switch to spherical assembly is the user prompts + +### Overview + +The `coarse_grain_structure()` function takes a Biopython `Structure` object (typically parsed from a `.cif` or `.pdb` file) and computes a **coarse-grained molecular representation** for use in NERDSS. This includes: + +* Center-of-mass (COM) for each chain. +* Approximate molecular radii. +* Detection of **binding interfaces** between chains. +* Interface coordinates, residues, and pairwise contact energies. + +This step is a foundational part of the NERDSS modeling pipeline that enables downstream creation of `Molecule`, `Interface`, and `Reaction` templates. + +--- + +### Inputs + +```python +coarse_grain_structure(structure, distance_cutoff=0.35, residue_cutoff=3, options=None) +``` + +* **`structure`**: A Biopython `Structure` object, parsed using `Bio.PDB.MMCIFParser` or `PDBParser`. +* **`distance_cutoff`** (`float`): Max atom-atom distance (in nanometers) for two residues to be considered interacting. Default is `0.35 nm` (i.e., 3.5 Å). +* **`residue_cutoff`** (`int`): Minimum number of contacting residues required to define a valid interface between two chains. +* **`options`** (`dict` or `None`): Reserved for future use (e.g., plotting flags). + +--- + +### Steps Performed + +#### 1. **Chain Identification and Filtering** + +* All chains with at least one standard amino acid (`is_aa(res)`) are included. +* Chains are sorted by chain ID. + +#### 2. **Center-of-Mass and Radius Calculation** + +* For each chain: + + * Collect all atomic coordinates (across all amino acids). + * Compute the average as the **COM**. + * Compute RMS deviation from the COM as the **molecular radius**. + +#### 3. **Bounding Box Pre-check** + +* For each pair of chains, 3D bounding boxes are computed. +* Pairs whose bounding boxes are disjoint (with margin) are skipped early for efficiency. + +#### 4. **Interface Detection** + +* For each valid pair of chains: + + * All Cα atoms are extracted from each chain. + * A KD-tree is built on chain B’s atoms to query neighbors within `distance_cutoff × 10` from each atom in chain A. + * If enough residue pairs are found: + + * Define a **binding interface** for each chain (as the average of contact residue coordinates). + * Record the list of contacting residues. + * Look up interaction energies for each residue pair using the `energy_table` (e.g., ARG–GLU → −3.5 kcal/mol). + * Store total contact energy. + +--- + +### Output + +Returns a dictionary: + +```python +{ + 'chains': List[Chain], # Biopython Chain objects + 'COMs': List[Coords], # Center of mass for each chain + 'radii': List[float], # RMS radius per chain + 'interfaces': List[List[str]], # Neighbor chain IDs per chain + 'interface_coords': List[List[Coords]], # Interface COMs per chain + 'interface_residues': List[List[int]], # Residue IDs per interface + 'interface_energies': List[List[float]] # Interaction energy per interface +} +``` + +Each list is ordered per-chain, with sublists per interface (i.e., indexed by interacting partner). + +--- + +### Assumptions + +* Cα atoms are representative of residue positions (i.e., no explicit side-chain modeling). +* Interface detection is symmetric: if A binds B, both A and B get interfaces. +* Residue-residue energies are additive and symmetric (based on a simplified energy table). +* Chain IDs are assumed to be unique within the structure. + +--- + +### Example Use + +```python +from Bio.PDB import MMCIFParser +from model.pdb.coarse_grain import coarse_grain_structure + +parser = MMCIFParser(QUIET=True) +structure = parser.get_structure("TEST", "1abc.cif") +result = coarse_grain_structure(structure) + +for i, com in enumerate(result['COMs']): + print(f"Chain {result['chains'][i].id} COM: {com}") +``` + + +""" +import numpy as np +from scipy.spatial import KDTree +from Bio.PDB.Polypeptide import is_aa +# Assuming your Coords class is already implemented + +from ionerdss.math.coords import Coords +from ionerdss.model.pdb.energy_table import get_default_energy_table + +# Optimized pairwise computation: merge residue pair loop using vectorized dot product +def compute_interface(residues_i, residues_j, energy_table, distance_cutoff, residue_cutoff): + """ + Optimized version of coarse_grain_structure to detect coarse-grained interfaces between chains. + + Uses bounding box culling and KDTree to accelerate detection of interface regions + between chains in a Biopython structure. + + Parameters + ---------- + structure : Bio.PDB.Structure.Structure + Input structure to process. + distance_cutoff : float + Maximum atom-atom distance to consider as contact (in nm). + residue_cutoff : int + Minimum number of contacting residues to form a valid interface. + options : dict or None + Optional dictionary for debug or plotting config (unused here). + + Returns + ------- + dict + { + 'chains': list of Chain objects, + 'COMs': list of Coords, + 'radii': list of floats, + 'interfaces': list of lists (each containing partner chain IDs), + 'interface_coords': list of interface center-of-mass coordinates per chain, + 'interface_residues': list of lists of contacting residue IDs per interface, + 'interface_energies': list of interaction energies per interface + } + """ + coords_i = np.array([r[2] for r in residues_i]) + coords_j = np.array([r[2] for r in residues_j]) + tree = KDTree(coords_j) + neighbors_list = tree.query_ball_point(coords_i, r=distance_cutoff * 10) + + iface_i_ids, iface_i_coords, iface_i_types = [], [], [] + iface_j_ids, iface_j_coords, iface_j_types = [], [], [] + residue_pairs = {} + + for idx_i, neighbors in enumerate(neighbors_list): + if not neighbors: + continue + res_i_id, res_i_type, ca_i = residues_i[idx_i] + if res_i_id not in iface_i_ids: + iface_i_ids.append(res_i_id) + iface_i_coords.append(ca_i) + iface_i_types.append(res_i_type) + for idx_j in neighbors: + res_j_id, res_j_type, ca_j = residues_j[idx_j] + if res_j_id not in iface_j_ids: + iface_j_ids.append(res_j_id) + iface_j_coords.append(ca_j) + iface_j_types.append(res_j_type) + key = (res_i_type, res_j_type) + residue_pairs[(res_i_id, res_j_id)] = energy_table.get(key, 0.0) + + if len(iface_i_ids) >= residue_cutoff and len(iface_j_ids) >= residue_cutoff: + com_i = Coords(*np.mean(iface_i_coords, axis=0)) + com_j = Coords(*np.mean(iface_j_coords, axis=0)) + total_energy = sum(residue_pairs.values()) + return com_i, com_j, iface_i_ids, iface_j_ids, total_energy + return None + +def coarse_grain_structure(structure, distance_cutoff=0.35, residue_cutoff=3): + """ + Analyze a Biopython structure to identify chain COMs and binding interfaces. + + Args: + structure : Bio.PDB.Structure.Structure + distance_cutoff : float + Max distance (nm) for atoms to be considered interacting. + residue_cutoff : int + Min number of contacting residues to define an interface. + options : dict or None + Optional config (e.g., plotting). + + Returns: + dict : { + 'chains': list of chains, + 'COMs': list of Coords, + 'interfaces': list of interface data per chain, + } + """ + chains = sorted([chain for chain in structure.get_chains() + if any(is_aa(res) for res in chain.get_residues())], + key=lambda c: c.id) + num_chains = len(chains) + coms = [] + chain_radii = [] + interfaces = [[] for _ in range(num_chains)] + interface_coords = [[] for _ in range(num_chains)] + interface_residues = [[] for _ in range(num_chains)] + interface_energies = [[] for _ in range(num_chains)] + + energy_table = get_default_energy_table() + + for chain in chains: + # get the coordinates of all atoms that is within an amino acid in a chain + atoms = [atom.coord for res in chain for atom in res if is_aa(res)] + if not atoms: + coms.append(None) + chain_radii.append(0.0) + continue + atoms = np.array(atoms) + avg = atoms.mean(axis=0) + # com is defined as the numerical average of all atoms' positions + coms.append(Coords(*avg)) + # radius is calculated as RMSD of atom positions from com + radius = np.sqrt(np.mean(np.sum((atoms - avg) ** 2, axis=1))) + chain_radii.append(radius) + + # calculate the bounding box of each chain + # if a pair of chains is too far away from each other, > (distance_cutoff * 10) + # then skip + def bounding_box(chain): + coords = np.array([atom.coord for res in chain for atom in res if is_aa(res)]) + return coords.min(axis=0), coords.max(axis=0) if len(coords) else (None, None) + + boxes = [bounding_box(c) for c in chains] + + for i in range(num_chains - 1): + for j in range(i + 1, num_chains): + min1, max1 = boxes[i] + min2, max2 = boxes[j] + if min1 is None or min2 is None: + continue + # skip if they are more than distance_cutoff*10 apart + if np.any(min2 > max1 + distance_cutoff * 10) or np.any(max2 < min1 - distance_cutoff * 10): + continue + + chain_i = chains[i] + chain_j = chains[j] + residues_i = [(res.id[1], res.get_resname().upper(), res['CA'].coord) + for res in chain_i if is_aa(res) and 'CA' in res] + residues_j = [(res.id[1], res.get_resname().upper(), res['CA'].coord) + for res in chain_j if is_aa(res) and 'CA' in res] + + if not residues_i or not residues_j: + continue + + # compute interface using KDTree + result = compute_interface(residues_i, residues_j, energy_table, + distance_cutoff, residue_cutoff) + if result: + # Record interface data for both chains + com_i, com_j, ids_i, ids_j, total_energy = result + interfaces[i].append(chain_j.id) + interface_coords[i].append(com_i) + interface_residues[i].append(sorted(ids_i)) + interface_energies[i].append(total_energy) + + interfaces[j].append(chain_i.id) + interface_coords[j].append(com_j) + interface_residues[j].append(sorted(ids_j)) + interface_energies[j].append(total_energy) + + # Package all results into output dictionary + return { + 'chains': chains, + 'COMs': coms, + 'radii': chain_radii, + 'interfaces': interfaces, + 'interface_coords': interface_coords, + 'interface_residues': interface_residues, + 'interface_energies': interface_energies, + } diff --git a/ionerdss/model/pdb/core.py b/ionerdss/model/pdb/core.py new file mode 100644 index 00000000..9cb46e87 --- /dev/null +++ b/ionerdss/model/pdb/core.py @@ -0,0 +1,98 @@ +""" +core.py + +High-level orchestration class PDBModel; imports helper functions from submodules. +""" + +import os +from . import io +from .coarse_grain import coarse_grain_structure +from .detect_repeats import identify_repeated_chains +from .regularize_repeats import regularize_repeated_chains +from .reaction import build_binding_reactions +from .capsid_sphere_pipeline import run_capsid_pipeline # new module for spherical gag pipeline +from ..components import Model # assuming you have a base Model class + +class PDBModel(Model): + """Main driver for converting a PDB file into NERDSS molecule types and reactions.""" + + def __init__(self, pdb_file=None, pdb_id=None, save_dir=None): + """ + Parameters + ---------- + pdb_file : str or None + Path to the PDB or CIF file. + pdb_id : str or None + RCSB PDB ID to fetch if pdb_file is not provided. + save_dir : str or None + Directory to save generated model files. + """ + super().__init__(save_dir) + self.pdb_file = pdb_file + self.pdb_id = pdb_id + self.save_dir = os.path.abspath(os.path.expanduser(save_dir or os.getcwd())) + os.makedirs(self.save_dir, exist_ok=True) + + # Step 1: Download if necessary + if not pdb_file and pdb_id: + self.pdb_file = io.download_pdb(pdb_id, self.save_dir) + elif not self.pdb_file: + raise ValueError("Must provide either pdb_file or pdb_id.") + + # Step 2: Parse structure + self.structure = io.parse_structure(self.pdb_file) + + # Initialize metadata + self.chains_map = {} + self.chains_group = [] + + def run_pipeline(self, options=None): + """Runs the full model generation pipeline. + + Parameters + ---------- + options : dict or None + Optional dictionary of settings. Can include: + - 'plot': bool + - 'save_cif': bool + - 'is_on_sphere': bool (if True, run spherical capsid pipeline) + """ + options = options or {} + + + + # 1. Coarse-grain the structure + cg_result = coarse_grain_structure(self.structure, options=options) + + # 2. Identify repeated chains + self.chains_map, self.chains_group = identify_repeated_chains( + self.pdb_file, self.structure + ) + + # 3. Regularize molecules (alignment, interface generation) + model_data = regularize_repeated_chains( + cg_result, self.chains_map, self.chains_group + ) + + # 4. Generate reactions + reactions = build_binding_reactions(model_data) + + # 5. Rescale energies (optional) + # rescale_reaction_energies(reactions) # Uncomment if needed + + # If modeling a spherical capsid, use the alternate pipeline + if options.get("is_on_sphere"): + run_spherical_pipeline(self.pdb_file, self.save_dir, options) + print("Capsid pipeline completed.") + return + + # 6. Save model files + self.save_model(self.pdb_id + "_model.json", model_data, reactions) + + # 7. Optionally plot or write CIFs + if options.get("plot"): + plot_structure(model_data, self.save_dir) + if options.get("save_cif"): + save_structure_outputs(model_data, self.save_dir) + + print("Pipeline completed.") diff --git a/ionerdss/model/pdb/detect_repeats.py b/ionerdss/model/pdb/detect_repeats.py new file mode 100644 index 00000000..2803fd09 --- /dev/null +++ b/ionerdss/model/pdb/detect_repeats.py @@ -0,0 +1,209 @@ +""" +repeated_chain_detection.py + +Identifies repeated protein chains in a biological assembly using either +header annotations (from mmCIF) or pairwise structural alignment. This module is used +in the NERDSS modeling pipeline to group chains into molecule templates and assign +consistent chain labels across symmetry groups. + +Primary Goals +------------- +- Group chains that are structurally equivalent into equivalence classes +- Map all chains back to a canonical representative +- Enable template-based coarse-graining and alignment + +Approaches +---------- +1. **Header-based equivalence**: Uses `_pdbx_struct_assembly_gen` or `_entity_poly.pdbx_strand_id` + from the mmCIF file to detect symmetric copies. +2. **Structure-based alignment** (fallback): Uses a scoring function (e.g., RMSD) to match chains. + +Functions +--------- +- identify_repeated_chains(pdb_id: str, structure) -> (chains_map, chains_group) + Main interface that attempts header parsing, falls back to alignment if needed. +- _find_repeated_chains_by_alignment(chains) -> (chains_map, chains_group) + Performs pairwise structure-based chain matching. +- _assign_original_chain_ids(chains_group, chains_map, structure) + Ensures original ID labels are restored for compatibility. +- _validate_chain_mapping(chains_map, structure) + Optional sanity check to ensure each chain maps to a representative. +""" +import warnings +from collections import defaultdict +from Bio.PDB import Superimposer +from Bio.PDB.Polypeptide import is_aa +from Bio.PDB.Polypeptide import PPBuilder +from Bio.Align import PairwiseAligner + +def identify_repeated_chains(pdb_id, structure, mode='default', rmsd_threshold=1.0, seq_threshold=0.95, custom_aligner=None): + """ + Identify repeated chains using mmCIF header, structural alignment, or sequence alignment. + + Parameters + ---------- + pdb_id : str + ID or path of the CIF file (used in warnings). + structure : Bio.PDB.Structure.Structure + Parsed structure object. + mode : str, optional + One of ['default', 'structure', 'sequence'] to control matching strategy. + rmsd_threshold : float + RMSD cutoff for structural alignment (in Å). + seq_threshold : float + Sequence identity cutoff (0–1) for sequence alignment. + custom_aligner: Bio.Align.PairwiseAligner + Custom pairwise aligner to use in sequence alignment. + + Returns + ------- + chains_map : dict + Mapping of each chain ID to a canonical chain ID (e.g., {'B': 'A', 'C': 'A'}). + chains_group : list of lists + List of groups of equivalent chain IDs (e.g., [['A', 'B', 'C'], ['D', 'E']]). + """ + chains = [chain for chain in structure.get_chains() if any(is_aa(res) for res in chain)] + + if mode == 'structure': + return _find_repeated_chains_by_structure_superimposing(chains, rmsd_threshold) + + if mode == 'sequence': + return _find_repeated_chains_by_sequence(chains, seq_threshold, + custom_aligner=custom_aligner) + + if mode == 'default': + mmcif_dict = structure.header.get('mmcif_dict', {}) + entity_map = defaultdict(list) + + if '_entity_poly.pdbx_strand_id' in mmcif_dict: + strand_ids = mmcif_dict['_entity_poly.pdbx_strand_id'] + entity_ids = mmcif_dict['_entity_poly.entity_id'] + for eid, strands in zip(entity_ids, strand_ids): + for c in strands.replace(' ', '').split(','): + entity_map[eid].append(c) + chains_group = list(entity_map.values()) + chains_map = {c: group[0] for group in chains_group for c in group} + return chains_map, chains_group + else: + warnings.warn(f"{pdb_id}: Missing mmCIF entity_poly info. Falling back to sequence alignment.") + return _find_repeated_chains_by_sequence(chains, seq_threshold, + custom_aligner=custom_aligner) + + else: + raise ValueError(f"Unknown mode '{mode}'. Valid modes are: 'default', 'structure', 'sequence'.") + +def _find_repeated_chains_by_structure_superimposing(chains, rmsd_threshold=1.0): + """ + Fallback method: perform all-by-all structural alignment of chains using C-alpha atoms. + + Parameters + ---------- + chains : list of Bio.PDB.Chain + Chains to compare. + + Returns + ------- + chains_map : dict + Map each chain to its representative. + chains_group : list of lists + List of chain ID groups. + """ + num_aa = len(chains) + groups = [] + visited = set() + chain_ids = [chain.id for chain in chains] + + def extract_calpha(chain): + return [res['CA'] for res in chain if is_aa(res) and 'CA' in res] + + + for i in range(num_aa): + if chain_ids[i] in visited: + continue + group = [chain_ids[i]] + ref_coords = extract_calpha(chains[i]) + for j in range(i + 1, num_aa): + if chain_ids[j] in visited: + continue + mov_coords = extract_calpha(chains[j]) + if len(ref_coords) != len(mov_coords) or len(ref_coords) == 0: + continue + si = Superimposer() + si.set_atoms(ref_coords, mov_coords) + si.apply(mov_coords) + if si.rms < rmsd_threshold: + group.append(chain_ids[j]) + visited.add(chain_ids[j]) + visited.update(group) + groups.append(group) + + chains_map = {c: group[0] for group in groups for c in group} + return chains_map, groups + +def _find_repeated_chains_by_sequence(chains, + seq_threshold=0.95, + custom_aligner=None + ): + """ + Group chains by pairwise sequence identity using Bio.Align.PairwiseAligner. + + Parameters + ---------- + chains : list of Bio.PDB.Chain + seq_threshold : float + custom_aligner: Bio.Align.PairwiseAligner + Custom pairwise aligner to use in sequence alignment. + + Returns + ------- + chains_map : dict + chains_group : list of lists + """ + ppb = PPBuilder() + sequences = {} + chain_ids = [chain.id for chain in chains] + + for chain in chains: + peptides = ppb.build_peptides(chain) + sequences[chain.id] = str(peptides[0].get_sequence()) if peptides else "" + if custom_aligner is None: + aligner = PairwiseAligner() + aligner.mode = "global" + aligner.match_score = 1.0 + aligner.mismatch_score = 0.0 + aligner.open_gap_score = -0.5 + aligner.extend_gap_score = -0.5 + else: + aligner = custom_aligner + + groups = [] + visited = set() + + for i in range(len(chains)): + ci = chain_ids[i] + if ci in visited: + continue + group = [ci] + seq_i = sequences[ci] + + for j in range(i + 1, len(chains)): + cj = chain_ids[j] + if cj in visited: + continue + seq_j = sequences[cj] + if not seq_i or not seq_j: + continue + score = aligner.align(seq_i, seq_j).score + identity = score / max(len(seq_i), len(seq_j)) + if identity >= seq_threshold: + group.append(cj) + visited.add(cj) + visited.update(group) + groups.append(group) + + chains_map = {c: group[0] for group in groups for c in group} + + print(f"{len(groups)} homologous chain groups identified:") + print(chains_map) + + return chains_map, groups diff --git a/ionerdss/model/pdb/energy_table.py b/ionerdss/model/pdb/energy_table.py new file mode 100644 index 00000000..1be38ab6 --- /dev/null +++ b/ionerdss/model/pdb/energy_table.py @@ -0,0 +1,71 @@ +""" +energy_table.py + +@deprecated This method does not work well in estimateing the binding free energy. + +Provides a residue-residue interaction energy lookup table used in the coarse-graining +pipeline for identifying and scoring protein-protein interfaces. + +This table serves as a simplified, empirical scoring function that estimates the +binding affinity of residue pairs based on their types. It is primarily used during +interface detection to assign a total "interaction energy" score to each potential +interface between chains. + +The energy values are heuristic and intended for qualitative comparison, not physical +accuracy. Typical sources of such scoring schemes include knowledge-based potentials +(e.g., Miyazawa–Jernigan matrix) or parameter tuning based on known structures. + +Functions +--------- +- get_default_energy_table(): Returns a dictionary of (res1, res2) → energy (float) pairs. + The table is symmetric: E(A, B) == E(B, A) +""" + +def get_default_energy_table(): + """ + Returns a dictionary mapping residue pairs to interaction energies (kcal/mol). + + The returned dictionary is symmetric: both ('ARG', 'GLU') and ('GLU', 'ARG') will be present. + + Example: + { + ('ARG', 'GLU'): -3.5, + ('GLU', 'ARG'): -3.5, + ... + } + + Returns + ------- + dict of tuple(str, str) → float + A lookup table of interaction energies between residue types. + """ + raw_table = { + ('ARG', 'GLU'): -3.5, + ('ARG', 'ASP'): -3.2, + ('LYS', 'GLU'): -3.0, + ('LYS', 'ASP'): -2.8, + ('HIS', 'GLU'): -2.0, + ('HIS', 'ASP'): -1.8, + ('ARG', 'ARG'): 0.5, + ('LYS', 'LYS'): 0.5, + ('GLU', 'GLU'): 0.5, + ('ASP', 'ASP'): 0.5, + ('LEU', 'ILE'): -2.5, + ('LEU', 'VAL'): -2.4, + ('ILE', 'VAL'): -2.3, + ('PHE', 'TYR'): -2.2, + ('PHE', 'PHE'): -2.1, + ('TYR', 'TYR'): -2.0, + ('TRP', 'TRP'): -1.8, + ('SER', 'THR'): -1.2, + ('ASN', 'GLN'): -1.0, + ('ALA', 'ALA'): -0.5, + } + + # Symmetrize the table + symmetric_table = {} + for (res1, res2), energy in raw_table.items(): + symmetric_table[(res1, res2)] = energy + symmetric_table[(res2, res1)] = energy + + return symmetric_table diff --git a/ionerdss/model/pdb/geometry.py b/ionerdss/model/pdb/geometry.py new file mode 100644 index 00000000..24cc124c --- /dev/null +++ b/ionerdss/model/pdb/geometry.py @@ -0,0 +1,71 @@ +""" +geometry.py + +Provides geometric transformation utilities used throughout the NERDSS coarse-graining +pipeline, including 3D rigid alignment of repeated chains, vector transformations, +steric clash detection, and angle measurements. + +Key Features +------------ +- Rigid-body alignment using singular value decomposition (SVD), ensuring optimal + rotation and translation that minimizes RMSD between two point clouds. +- Transformation application for atomic or coarse-grained coordinates. +- Utility functions for angular analysis between unit vectors or planes. +- Steric clash detection between coarse-grained spheres. + +Functions +--------- +- rigid_transform_chains(chain1_coords, chain2_coords): Convenience wrapper for rigid_transform_3d. +- check_steric_clashes(pos1, pos2, r1, r2, buffer=0.0): Returns True if two spheres overlap. +- angle_between(v1, v2): Computes angle (in radians) between two 3D vectors. +- dihedral(p1, p2, p3, p4): Returns dihedral angle (in radians) defined by 4 points. +""" + +import numpy as np +from ionerdss.math.rigid_transform import rigid_transform_3d + +def rigid_transform_chains(chain1_coords, chain2_coords): + """ + Convenience wrapper to align one chain to another using Cα or COM coordinates. + + Parameters + ---------- + chain1_coords : ndarray (N, 3) + Original coordinates to be aligned. + chain2_coords : ndarray (N, 3) + Target coordinates. + + Returns + ------- + R : ndarray (3, 3) + Rotation matrix. + t : ndarray (3,) + Translation vector. + """ + return rigid_transform_3d(chain1_coords, chain2_coords) + + +def check_steric_clashes(pos1, pos2, r1, r2, buffer=0.0): + """ + Returns True if two coarse-grained spheres overlap beyond allowed buffer. + + Parameters + ---------- + pos1 : array-like of shape (3,) + Center of first molecule. + pos2 : array-like of shape (3,) + Center of second molecule. + r1 : float + Radius of first molecule. + r2 : float + Radius of second molecule. + buffer : float, optional + Extra distance allowed without clash. Default is 0.0 nm. + + Returns + ------- + bool + True if spheres are clashing. + """ + d = np.linalg.norm(np.asarray(pos1) - np.asarray(pos2)) + return d < (r1 + r2 - buffer) diff --git a/ionerdss/model/pdb/io.py b/ionerdss/model/pdb/io.py new file mode 100644 index 00000000..39162303 --- /dev/null +++ b/ionerdss/model/pdb/io.py @@ -0,0 +1,40 @@ +""" +io.py + +PDB/CIF downloading and parsing +""" + +# model/pdb/io.py + +import os +import gzip +import requests +from Bio.PDB import PDBList, MMCIFParser, PDBParser + +def download_pdb(pdb_id, save_dir): + """Download a PDB or CIF file given a PDB ID.""" + pdb_id = pdb_id.lower() + decompressed_file = os.path.join(save_dir, f"{pdb_id}.cif") + compressed_file = decompressed_file + ".gz" + url = f"https://files.rcsb.org/download/{pdb_id.upper()}-assembly1.cif.gz" + + try: + response = requests.get(url, stream=True, timeout=30) + if response.status_code == 200: + with open(compressed_file, 'wb') as f_out: + for chunk in response.iter_content(chunk_size=8192): + f_out.write(chunk) + with gzip.open(compressed_file, 'rb') as f_in: + with open(decompressed_file, 'wb') as f_out: + f_out.write(f_in.read()) + return decompressed_file + else: + raise RuntimeError(f"Failed to download PDB: {response.status_code}") + except Exception as e: + raise RuntimeError(f"Could not download {pdb_id}: {e}") from e + +def parse_structure(pdb_file): + """Parse .cif or .pdb file into Biopython Structure object.""" + parser = MMCIFParser(QUIET=True) if pdb_file.endswith('.cif') else PDBParser(QUIET=True) + structure_id = os.path.basename(pdb_file).split('.')[0] + return parser.get_structure(structure_id, pdb_file) diff --git a/ionerdss/model/pdb/reaction.py b/ionerdss/model/pdb/reaction.py new file mode 100644 index 00000000..8ca14e5b --- /dev/null +++ b/ionerdss/model/pdb/reaction.py @@ -0,0 +1,69 @@ +""" +reaction.py + +Constructs NERDSS-compatible ReactionTemplate objects that describe how protein interfaces +interact, bind, or transition based on coarse-grained structural data. + +This module parses: +- Regularized model output (with chain/interface geometry) +- Interface pairing logic (based on proximity, energy, or repeated_chainy) +- Optionally energy thresholds to define reaction formation + +Each reaction connects two InterfaceTemplate objects from different MoleculeTemplates +and defines a placeholder or computed reaction rate constant. + +Functions +--------- +- build_binding_reactions(model: dict, interface_templates: list, energy_cutoff: float) + Generate ReactionTemplate objects between interface pairs meeting energy/geometry criteria. +""" + +from ionerdss.model.components import ReactionTemplate + +def build_binding_reactions(model, interface_templates, energy_cutoff=0.0): + """ + Create binding reactions from the coarse-grain model. + + Parameters + ---------- + model : dict + Output of `regularize_model()` including 'interfaces', 'interface_energies', etc. + interface_templates : list of InterfaceTemplate + One-to-one list of interface objects per chain, structured as: + interface_templates[i][j] == j-th interface of chain i + energy_cutoff : float, optional + Only form reactions between interfaces with energy below this threshold (e.g., -1.0). + + Returns + ------- + reactions : list of ReactionTemplate + Reactions formed between interface pairs. + """ + reactions = [] + N = len(model["interfaces"]) + + for i in range(N): + for j, neighbor in enumerate(model["interfaces"][i]): + # Get current interface and neighbor interface + iface1 = interface_templates[i][j] + + # Identify back index in neighbor's interface list + try: + k = model["interfaces"][neighbor].index(i) + iface2 = interface_templates[neighbor][k] + except ValueError: + continue # Unidirectional or asymmetric entry; skip + + # Prevent duplication: always define (i < neighbor) + if i < neighbor: + energy = model["interface_energies"][i][j] + if energy <= energy_cutoff: + reaction = ReactionTemplate( + reactants=[iface1, iface2], + products=[], # Filled later in simulation setup + rate=1.0, # Placeholder + metadata={"energy": energy} + ) + reactions.append(reaction) + + return reactions diff --git a/ionerdss/model/pdb/regularize_repeats.py b/ionerdss/model/pdb/regularize_repeats.py new file mode 100644 index 00000000..db32dfdc --- /dev/null +++ b/ionerdss/model/pdb/regularize_repeats.py @@ -0,0 +1,669 @@ +""" +repeated_chain_alignment.py + +TODO: > change to regularize_repeats + +Provides utilities to reindex and relabel coarse-grained chain/interface data into a +canonical, compact format for further modeling and export. + +In the NERDSS pipeline, the coarse-graining step returns raw data: +- Chain IDs are strings (e.g., 'A', 'B', 'E') +- Interfaces are lists of neighbors using original IDs +- Interface order may vary between repeated chains + +This module: +- Reindexes chains to `0, 1, 2, ..., N-1` +- Reindexes interfaces per chain to `[0, 1, ..., M-1]` with consistent ordering +- Ensures symmetry-equivalent chains have consistent interface maps +- Optionally merges chain/interface data by repeated_chainy group + +Functions +--------- +- regularize_model(raw_data, chains_map=None) + Canonicalize and simplify the structure of the coarse-grained model. +""" + +import numpy as np + +from ionerdss.model.components import ( + MoleculeTemplate, + CoarseGrainedMolecule, + BindingInterface, + BindingInterfaceTemplate, +) +from ionerdss.math.diffusion_constant import compute_diffusion_constants_nm_us +from ionerdss.math.angles import angles_from_points + +def identify_interface_signature(A, B, i, all_chains, all_COM_chains_coords, all_interfaces_coords): + """ + Compute geometric signature between molecule A and B. + """ + index_a = all_chains.index([chain for chain in all_chains if chain.id == A][0]) + index_b = all_chains.index([chain for chain in all_chains if chain.id == B][0]) + + COM_A = all_COM_chains_coords[index_a] + COM_B = all_COM_chains_coords[index_b] + I_A = all_interfaces_coords[index_a][i] + + # Find the matching interface on B that binds to A + for k, partner_interface_id in enumerate(all_interfaces[index_b]): + if partner_interface_id == A: + I_B = all_interfaces_coords[index_b][k] + break + else: + raise ValueError(f"No matching interface found on {B} for partner {A}") + + signature = { + "dA": np.linalg.norm([(COM_A - I_A).x, (COM_A - I_A).y, (COM_A - I_A).z]), + "dB": np.linalg.norm([(COM_B - I_B).x, (COM_B - I_B).y, (COM_B - I_B).z]), + "dAB": np.linalg.norm([(I_A - I_B).x, (I_A - I_B).y, (I_A - I_B).z]), + "thetaA": angles_from_points(COM_A, I_A, I_B), + "thetaB": angles_from_points(COM_B, I_B, I_A), + } + + signature_conjugated = { + "dA": signature["dB"], + "dB": signature["dA"], + "dAB": signature["dAB"], + "thetaA": signature["thetaB"], + "thetaB": signature["thetaA"], + } + + return signature, signature_conjugated, I_B, k + +def identify_interface_sequence_signature(A, B, i, all_chains, all_interfaces, all_interfaces_residues): + """ + Compute sequence-based signature using sorted amino acid sequence from both sides. + """ + index_a = all_chains.index([chain for chain in all_chains if chain.id == A][0]) + index_b = all_chains.index([chain for chain in all_chains if chain.id == B][0]) + + residues_A = all_interfaces_residues[index_a][i] + + # Find matching interface on B + for k, partner_interface_id in enumerate(all_interfaces[index_b]): + if partner_interface_id == A: + residues_B = all_interfaces_residues[index_b][k] + break + else: + raise ValueError(f"No matching interface found on {B} for partner {A}") + + # Build signature based on sorted residue identities (amino acid types only) + seq_a = ''.join(sorted([residue.get_resname().strip() for residue in residues_A])) + seq_b = ''.join(sorted([residue.get_resname().strip() for residue in residues_B])) + + signature = { + "seqA": seq_a, + "seqB": seq_b, + } + + signature_conjugated = { + "seqA": seq_b, + "seqB": seq_a, + } + + return signature, signature_conjugated, residues_B, k + +def _sig_are_similar(sig1, sig2, + dist_threshold_intra, + dist_threshold_inter, + angle_threshold): + """ + Compares two groups of interface interaction geometry signatures. + + Args: + sig1 (dict): The first interface signature. + sig2 (dict): The second interface signature. + dist_threshold_intra (float): Distance threshold for intra-molecular comparisons. + dist_threshold_inter (float): Distance threshold for inter-molecular comparisons. + angle_threshold (float): Angle threshold for comparisons. + + Returns: + bool: True if the signatures are similar within the given thresholds, False otherwise. + """ + for key in ("dA", "dB"): + if abs(sig1[key] - sig2[key]) > dist_threshold_intra: + return False + for key in ("dAB",): + if abs(sig1[key] - sig2[key]) > dist_threshold_inter: + return False + for key in ("thetaA", "thetaB"): + if abs(sig1[key] - sig2[key]) > angle_threshold: + return False + return True + +def regularize_repeated_chains(cg_result, chains_map, chains_group, + dist_threshold_intra=3.5, + dist_threshold_inter=3.5, + angle_threshold=25.0, + show_coarse_grained_structure=False, + save_pymol_script=False, + standard_output=False): + """ + Aligns and regularizes all molecular chains so that homologous chains share + the same relative geometry. This method organizes molecule and interface objects + accordingly and sets up reaction objects. + + Args: + dist_threshold_intra (float): Distance threshold for intra-chain similarity. Defaults to 3.5 angstrom. + dist_threshold_inter (float): Distance threshold for inter-chain similarity. Defaults to 3.5 angstrom. + angle_threshold (float): Angle threshold for similarity. Defaults to 25.0 degree. + show_coarse_grained_structure (bool): Whether to visualize the regularized coarse-grained structure. Defaults to False. + save_pymol_script (bool): Whether to save a PyMOL script for visualization. Defaults to False. + standard_output (bool): Whether to print detected interfaces. Defaults to False. + """ + if not chains_group: + raise ValueError("Invalid chains group!") + for group in chains_group: + group.sort() + chains_group.sort() + + # Unpack cg_result + all_chains = cg_result["chains"] + all_com_chains_coords = cg_result["COMs"] + all_chains_radius = cg_result["radii"] + all_interfaces = cg_result["interfaces"] + all_interfaces_coords = cg_result["interface_coords"] + all_interfaces_residues = cg_result["interface_residues"] + all_interface_energies = cg_result["interface_energies"] + + # ... [rest of the regularization logic remains mostly unchanged] ... + + # check if the structure has homologous chains + # if any element in chains_group has more than one chain, then it has homologous chains + has_homologous_chains = any(len(group) > 1 for group in chains_group) + if not has_homologous_chains: + dist_threshold_intra = 0.0 + dist_threshold_inter = 0.0 + angle_threshold = 0.0 + + molecule_list = [] + molecule_template_list = [] + interface_list = [] + interface_template_list = [] + interface_signatures = [] + + for group in chains_group: + # print(f"Start parsing chain group / molecule template {group}") + molecule_template_name = chains_map[group[0]] + is_existing_mol_temp, idx = _is_existing_mol_temp(molecule_template_name, molecule_template_list) + if is_existing_mol_temp: + # print(f"This is an existed mol template {molecule_template_name}") + molecule_template = molecule_template_list[idx] + else: + molecule_template = MoleculeTemplate(molecule_template_name) + # print(f"New mol template {molecule_template_name} is created.") + molecule_template_list.append(molecule_template) + + for j, chain_id in enumerate(group): + # print(f"Start parsing chain / molecule {chain_id}") + molecule_name = chain_id + is_existing_mol, mol_index = _is_existing_mol(molecule_name, molecule_list) + if is_existing_mol: + # print(f"This is an existing molecule {molecule_name}") + molecule = molecule_list[mol_index] + molecule.radius = all_chains_radius[all_chains.index([chain for chain in all_chains if chain.id == molecule_name][0])] + molecule.diffusion_translation, molecule.diffusion_rotation = compute_diffusion_constants_nm_us(molecule.radius / 10.0) + molecule.my_template.diffusion_translation, molecule.my_template.diffusion_rotation = molecule.diffusion_translation, molecule.diffusion_rotation + else: + molecule = CoarseGrainedMolecule(molecule_name) + # print(f"New molecule {molecule_name} is created.") + molecule.my_template = molecule_template + molecule.coord = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == molecule_name][0])] + molecule.radius = all_chains_radius[all_chains.index([chain for chain in all_chains if chain.id == molecule_name][0])] + molecule.diffusion_translation, molecule.diffusion_rotation = compute_diffusion_constants_nm_us(molecule.radius / 10.0) + molecule_list.append(molecule) + molecule_template.radius = molecule.radius + molecule_template.diffusion_translation, molecule_template.diffusion_rotation = molecule.diffusion_translation, molecule.diffusion_rotation + + # loop the interface of this chain (molecule) + for i, interface_id in enumerate(all_interfaces[all_chains.index([chain for chain in all_chains if chain.id == molecule_name][0])]): + A = molecule_name + B = interface_id # this is the chain name of the partner + partner_mol_template_name = chains_map[B] + # print(f"Parsing the interface {interface_id} for molecule {molecule_name}; its binding partner is molecule {B} via its interface {A}") + is_existing_mol_temp, idx = _is_existing_mol_temp(partner_mol_template_name, molecule_template_list) + if is_existing_mol_temp: + # print(f"molecule {B} already has its template created.") + partner_molecule_template = molecule_template_list[idx] + else: + partner_molecule_template = MoleculeTemplate(partner_mol_template_name) + # print(f"new mol template {partner_mol_template_name} created for molecule {B}.") + molecule_template_list.append(partner_molecule_template) + + is_existing_mol, partner_mol_index = _is_existing_mol(B, molecule_list) + if is_existing_mol: + # print(f"molecule {B} is already created.") + partner_molecule = molecule_list[partner_mol_index] + else: + partner_molecule = CoarseGrainedMolecule(B) + # print(f"New molecule {B} is created.") + partner_molecule.my_template = partner_molecule_template + partner_molecule.coord = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == B][0])] + molecule_list.append(partner_molecule) + + COM_A = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == A][0])] + I_A = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == A][0])][i] + COM_B = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == B][0])] + for k, partner_interface_id in enumerate(all_interfaces[all_chains.index([chain for chain in all_chains if chain.id == B][0])]): + if partner_interface_id == A: + I_B = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == B][0])][k] + R_B = all_interfaces_residues[all_chains.index([chain for chain in all_chains if chain.id == B][0])][k] + E_B = all_interface_energies[all_chains.index([chain for chain in all_chains if chain.id == B][0])][k] + break + + signature = { + "dA": np.linalg.norm([(COM_A - I_A).x, (COM_A - I_A).y, (COM_A - I_A).z]), + "dB": np.linalg.norm([(COM_B - I_B).x, (COM_B - I_B).y, (COM_B - I_B).z]), + "dAB": np.linalg.norm([(I_A - I_B).x, (I_A - I_B).y, (I_A - I_B).z]), + "thetaA": angles_from_points(COM_A, I_A, I_B), + "thetaB": angles_from_points(COM_B, I_B, I_A) + } + + # print the signature + # print(f"Parsing signature: {signature}") + + is_existing_sig = False + + for existing_sig in interface_signatures: + if _sig_are_similar(signature, existing_sig, dist_threshold_intra, dist_threshold_inter, angle_threshold): + is_existing_sig = True + break + + if not is_existing_sig: + # print("this is a new signature. added to list.") + interface_signatures.append(signature) + signature_conjugated = { + "dA": signature["dB"], + "dB": signature["dA"], + "dAB": signature["dAB"], + "thetaA": signature["thetaB"], + "thetaB": signature["thetaA"] + } + interface_signatures.append(signature_conjugated) + # print(f"the conjugated signature: {signature_conjugated} is also added to the list.") + + # build the interface template pairs for both molecule templates, need to check if this is homo dimerization or hetero + is_homo = False + if chains_map[A] != chains_map[B]: + pass + else: + if abs(signature["dA"] - signature["dB"]) > dist_threshold_intra or abs(signature["thetaA"] - signature["thetaB"]) > angle_threshold: + pass + else: + is_homo = True + + if is_homo: + # only need to build the interface template once + interface_template_id_prefix = chains_map[A] + + # determine the sufffix of this interface_template + tmp_count = 1 + for interface_temp in molecule_template.interface_template_list: + interface_temp_id = interface_temp.name + if interface_temp_id.startswith(interface_template_id_prefix): + tmp_count += 1 + + interface_template_id_suffix = str(tmp_count) + interface_template_id = interface_template_id_prefix + interface_template_id_suffix + interface_template = BindingInterfaceTemplate(interface_template_id) + interface_template.signature = signature + if j == 0: + interface_template.coord = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])][i] - molecule.coord + else: + # align the current chain to the first chain in the group, then get the relative position of interface to COM + chain1 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == group[0]][0])] + chain2 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])] + R, t = rigid_transform_chains(chain2, chain1) + Q = [] + Q_COM_coord = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])] + Q.append([Q_COM_coord.x, Q_COM_coord.y, Q_COM_coord.z]) + temp_coord = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])][i] + Q.append([temp_coord.x, temp_coord.y, temp_coord.z]) + Q2 = [] + for point in Q: + transformed_point = apply_rigid_transform(R, t, np.array(point)) + Q2.append(transformed_point) + interface_template.coord = Coords(Q2[1][0] - Q2[0][0], Q2[1][1] - Q2[0][1], Q2[1][2] - Q2[0][2]) + molecule_template.interface_template_list.append(interface_template) + interface_template_list.append(interface_template) + partner_interface_template = interface_template + partner_molecule_template = molecule_template + else: + # add interface template 1 + interface_template_id_prefix = chains_map[B] + + # determine the sufffix of this interface_template + tmp_count = 1 + for interface_temp in molecule_template.interface_template_list: + interface_temp_id = interface_temp.name + if interface_temp_id.startswith(interface_template_id_prefix): + tmp_count += 1 + + interface_template_id_suffix = str(tmp_count) + interface_template_id = interface_template_id_prefix + interface_template_id_suffix + interface_template = BindingInterfaceTemplate(interface_template_id) + interface_template.signature = signature + if j == 0: + interface_template.coord = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])][i] - molecule.coord + else: + # align the current chain to the first chain in the group, then get the relative position of interface to COM + chain1 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == group[0]][0])] + chain2 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])] + R, t = rigid_transform_chains(chain2, chain1) + Q = [] + Q_COM_coord = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])] + Q.append([Q_COM_coord.x, Q_COM_coord.y, Q_COM_coord.z]) + temp_coord = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])][i] + Q.append([temp_coord.x, temp_coord.y, temp_coord.z]) + Q2 = [] + for point in Q: + transformed_point = apply_rigid_transform(R, t, np.array(point)) + Q2.append(transformed_point) + interface_template.coord = Coords(Q2[1][0] - Q2[0][0], Q2[1][1] - Q2[0][1], Q2[1][2] - Q2[0][2]) + molecule_template.interface_template_list.append(interface_template) + interface_template_list.append(interface_template) + + # add interface template 2 + interface_template_id_prefix = chains_map[A] + + # determine the sufffix of this interface_template + tmp_count = 1 + for interface_temp in molecule_template.interface_template_list: + interface_temp_id = interface_temp.name + if interface_temp_id.startswith(interface_template_id_prefix): + tmp_count += 1 + + interface_template_id_suffix = str(tmp_count) + interface_template_id = interface_template_id_prefix + interface_template_id_suffix + partner_interface_template = BindingInterfaceTemplate(interface_template_id) + partner_interface_template.signature = signature_conjugated + B_group = None + for g in chains_group: + if B in g: + B_group = g + + if B == B_group[0]: + partner_interface_template.coord = I_B - partner_molecule.coord + else: + # align the current chain to the first chain in the group, then get the relative position of interface to COM + chain1 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == B_group[0]][0])] + chain2 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == B][0])] + R, t = rigid_transform_chains(chain2, chain1) + Q = [] + Q_COM_coord = all_com_chains_coords[all_chains.index([chain for chain in all_chains if chain.id == B][0])] + Q.append([Q_COM_coord.x, Q_COM_coord.y, Q_COM_coord.z]) + temp_coord = I_B + Q.append([temp_coord.x, temp_coord.y, temp_coord.z]) + Q2 = [] + for point in Q: + transformed_point = apply_rigid_transform(R, t, np.array(point)) + Q2.append(transformed_point) + partner_interface_template.coord = Coords(Q2[1][0] - Q2[0][0], Q2[1][1] - Q2[0][1], Q2[1][2] - Q2[0][2]) + partner_molecule_template.interface_template_list.append(partner_interface_template) + interface_template_list.append(partner_interface_template) + + else: + # print("this is an existing signature. using the existing interface template.") + # find the interface_template and partner_interface_template + interface_template = None + partner_interface_template = None + signature_conjugated = { + "dA": signature["dB"], + "dB": signature["dA"], + "dAB": signature["dAB"], + "thetaA": signature["thetaB"], + "thetaB": signature["thetaA"] + } + + # Find all matching templates for signature + matching_templates = [] + for mol_temp in molecule_template_list: + for interface_temp in mol_temp.interface_template_list: + if _sig_are_similar(signature, interface_temp.signature, dist_threshold_intra, dist_threshold_inter, angle_threshold): + matching_templates.append((interface_temp, mol_temp)) + + # Check for errors in template matching + if len(matching_templates) == 0: + # Print all available signatures for debugging + available_sigs = [] + for mol_temp in molecule_template_list: + for interface_temp in mol_temp.interface_template_list: + available_sigs.append({ + 'template': f"{interface_temp.name} ({mol_temp.name})", + 'signature': interface_temp.signature + }) + + print(f"Target signature: {signature}") + print("Available signatures:") + for sig_info in available_sigs: + print(f" {sig_info['template']}: {sig_info['signature']}") + + raise ValueError( + f"No matching interface template found for signature: {signature}\n" + f"Available templates: {[(mt.name, len(mt.interface_template_list)) for mt in molecule_template_list]}\n" + f"Current thresholds: dist_intra={dist_threshold_intra}, dist_inter={dist_threshold_inter}, angle={angle_threshold}\n" + f"Please increase the thresholds to find a match." + ) + elif len(matching_templates) > 1: + matching_templates.sort(key=lambda pair: _sig_difference(signature, pair[0].signature)) + interface_template, molecule_template = matching_templates[0] + print(f"Multiple matches found. Using closest match: {interface_template.name} ({molecule_template.name})") + else: + interface_template, molecule_template = matching_templates[0] + + # Find all matching templates for conjugated signature + matching_partner_templates = [] + for mol_temp in molecule_template_list: + for interface_temp in mol_temp.interface_template_list: + if _sig_are_similar(signature_conjugated, interface_temp.signature, dist_threshold_intra, dist_threshold_inter, angle_threshold): + matching_partner_templates.append((interface_temp, mol_temp)) + + # Check for errors in partner template matching + if len(matching_partner_templates) == 0: + # Print all available signatures for debugging + available_sigs = [] + for mol_temp in molecule_template_list: + for interface_temp in mol_temp.interface_template_list: + available_sigs.append({ + 'template': f"{interface_temp.name} ({mol_temp.name})", + 'signature': interface_temp.signature + }) + + print(f"Target conjugated signature: {signature_conjugated}") + print("Available signatures:") + for sig_info in available_sigs: + print(f" {sig_info['template']}: {sig_info['signature']}") + + raise ValueError( + f"No matching partner interface template found for conjugated signature: {signature_conjugated}\n" + f"Available templates: {[(mt.name, len(mt.interface_template_list)) for mt in molecule_template_list]}\n" + f"Current thresholds: dist_intra={dist_threshold_intra}, dist_inter={dist_threshold_inter}, angle={angle_threshold}\n" + f"Please adjust the thresholds to find a match." + ) + elif len(matching_partner_templates) > 1: + matching_partner_templates.sort(key=lambda pair: _sig_difference(signature_conjugated, pair[0].signature)) + partner_interface_template, partner_molecule_template = matching_partner_templates[0] + print(f"Multiple conjugated matches found. Using closest match: {partner_interface_template.name} ({partner_molecule_template.name})") + else: + partner_interface_template, partner_molecule_template = matching_partner_templates[0] + + # build the interfaces for molecules, link the interface template to interface + + is_existing_interface, _ = _is_existing_interface(interface_id, molecule) + + if not is_existing_interface: + # print(f"Creating new interface {interface_id} for molecule {molecule_name}") + # create the interface + interface = BindingInterface(B) + interface.my_template = interface_template + interface.coord = all_interfaces_coords[all_chains.index([chain for chain in all_chains if chain.id == A][0])][i] + interface.my_residues = all_interfaces_residues[all_chains.index([chain for chain in all_chains if chain.id == A][0])][i] + interface.energy = all_interface_energies[all_chains.index([chain for chain in all_chains if chain.id == A][0])][i] + interface.my_template.energy = interface.energy + interface_list.append(interface) + molecule.interface_list.append(interface) + + # print(f"Creating new interface {A} for partner molecule {B}") + # create the interface for the partner molecule + partner_interface = BindingInterface(A) + partner_interface.my_template = partner_interface_template + partner_interface.coord = I_B + partner_interface.my_residues = R_B + partner_interface.energy = E_B + partner_interface.my_template.energy = E_B + interface_list.append(partner_interface) + partner_molecule.interface_list.append(partner_interface) + + # add the chains pair to binding_chains_pairs + if chain_id < interface_id: + binding_chains_pair = (chain_id, interface_id) + else: + binding_chains_pair = (interface_id, chain_id) + if binding_chains_pair not in binding_chains_pairs: + binding_chains_pairs.append(binding_chains_pair) + else: + # print(f"Interface {interface_id} already exists for molecule {molecule_name}") + # print(f"Interface {A} already exists for molecule {B}") + pass + + # update the interfaces list of each molecule based on the molecule template + for group in chains_group: + for i, chain_id in enumerate(group): + # determin the COM and interfaces of the corresponding molecule template + molecule_template = [mol_template for mol_template in molecule_template_list if mol_template.name == chains_map[chain_id]][0] + molecule_0 = [mol for mol in molecule_list if mol.name == group[0]][0] + com_coord = molecule_0.coord + interface_coords = [interface_template.coord + com_coord for interface_template in molecule_template.interface_template_list] + interface_template_ids = [interface_template.name for interface_template in molecule_template.interface_template_list] + + # calculate the R and t for the rigid transformation + if i == 0: + # calculate the normal_point for this molecule + molecule = [mol for mol in molecule_list if mol.name == chain_id][0] + molecule.normal_point = [com_coord.x, com_coord.y, com_coord.z + 1] # normal_point - COM is [0,0,1] + # no need to transform the first chain + continue + else: + chain1 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == group[0]][0])] + chain2 = all_chains[all_chains.index([chain for chain in all_chains if chain.id == chain_id][0])] + R, t = rigid_transform_chains(chain1, chain2) + com_coord_transformed = apply_rigid_transform(R, t, np.array([com_coord.x, com_coord.y, com_coord.z])) + interface_coords_transformed = [] + for interface_coord in interface_coords: + interface_coord_transformed = apply_rigid_transform(R, t, np.array([interface_coord.x, interface_coord.y, interface_coord.z])) + interface_coords_transformed.append(interface_coord_transformed) + normal_point_transformed = apply_rigid_transform(R, t, np.array([com_coord.x, com_coord.y, com_coord.z + 1])) + # update the COM and interfaces of the molecule + molecule = [mol for mol in molecule_list if mol.name == chain_id][0] + molecule.coord = Coords(com_coord_transformed[0], com_coord_transformed[1], com_coord_transformed[2]) + for j, interface in enumerate(molecule.interface_list): + # find the corresponding interface template + interface_template_id = interface.my_template.name + for k, intf_template in enumerate(interface_template_ids): + if interface_template_id == intf_template: + interface.coord = Coords(interface_coords_transformed[k][0], interface_coords_transformed[k][1], interface_coords_transformed[k][2]) + break + molecule.normal_point = [normal_point_transformed[0], normal_point_transformed[1], normal_point_transformed[2]] + + _update_interface_templates_free_required_list() + + binding_chains_pairs.sort() + molecule_list.sort(key=lambda m: m.name) + molecule_template_list.sort(key=lambda mt: mt.name) + interface_list.sort(key=lambda i: i.name) + interface_template_list.sort(key=lambda it: it.name) + + # print("binding chains pairs:") + # for pair in binding_chains_pairs: + # print(pair) + # print("molecule list:") + # for molecule in molecule_list: + # print(molecule) + # print("molecule template list:") + # for molecule_template in molecule_template_list: + # print(molecule_template) + # print("interface list:") + # for interface in interface_list: + # print(interface) + # print("interface template list:") + # for interface_template in interface_template_list: + # print(interface_template) + + + if standard_output: + print("Molecules Template and Reactions Template After Regularization:") + for molecule_template in molecule_template_list: + print(molecule_template) + for reaction_template in reaction_template_list: + print(reaction_template) + + print("Molecules and Reactions:") + for molecule in molecule_list: + print(molecule) + for reaction in reaction_list: + print(reaction) + + _generate_model_data() + + # Return structured model data + return { + "molecule_templates": molecule_template_list, + "molecules": molecule_list, + "interface_templates": interface_template_list, + "interfaces": interface_list, + "binding_pairs": binding_chains_pairs, + } + +def _is_existing_mol_temp(molecule_template_name, molecule_template_list): + """ + Checks if a molecule template with the given name exists in the molecule template list. + + Args: + molecule_template_name (str): The name of the molecule template to check. + molecule_template_list (list): The list of molecule template + + Returns: + tuple: (bool, int or None) + - True and index if the template exists. + - False and None otherwise. + """ + for i, mol_temp in enumerate(molecule_template_list): + if mol_temp.name == molecule_template_name: + return True, i + return False, None + +def _is_existing_mol(molecule_name, molecule_list): + """ + Checks if a molecule with the given name exists in the molecule list. + + Args: + molecule_name (str): The name of the molecule to check. + + Returns: + tuple: (bool, int or None) + - True and index if the molecule exists. + - False and None otherwise. + """ + for i, mol in enumerate(molecule_list): + if mol.name == molecule_name: + return True, i + return False, None + +def _is_existing_interface(interface_name, interface_list): + """ + Checks if an interface with the given name exists in the molecule's interface list. + + Args: + interface_name (str): The name of the interface to check. + molecule (CoarseGrainedMolecule): The molecule to check within. + + Returns: + tuple: (bool, int or None) + - True and index if the interface exists. + - False and None otherwise. + """ + for i, interface in enumerate(interface_list): + if interface.name == interface_name: + return True, i + return False, None diff --git a/ionerdss/model/pdb/templates.py b/ionerdss/model/pdb/templates.py new file mode 100644 index 00000000..b0746f1d --- /dev/null +++ b/ionerdss/model/pdb/templates.py @@ -0,0 +1,98 @@ +""" +templates.py + +Generates NERDSS modeling templates (Molecule, Interface, Reaction) from a regularized +coarse-grained protein structure. + +This module transforms compact numerical representations of chains and interfaces into +template objects compatible with NERDSS's model definition system. It creates: + +- Molecule templates for each unique chain or repeated group +- Interface templates positioned at contact sites +- Optional Reaction templates (e.g., docking events) + +This is the final step in the coarse-graining pipeline before model export. + +Functions +--------- +- build_templates(model: dict) -> dict + Create Molecule and Interface template objects from regularized geometry. +""" + +from ionerdss.model.components import MoleculeTemplate, ReactionTemplate, BindingInterfaceTemplate + +def build_templates(model, collapse_repeated_chains=True): + """ + Convert regularized coarse-grain data into NERDSS-compatible molecule/interface templates. + + Parameters + ---------- + model : dict + Output from `regularize_model()`, with: + 'chain_ids', 'chain_labels', 'COMs', 'radii', + 'interfaces', 'interface_coords', 'interface_residues', + 'interface_energies', 'representatives' + + collapse_repeated_chains : bool, optional + If True, identical molecule types will only be created once (via representatives). + + Returns + ------- + templates : dict + { + 'molecules': list of MoleculeTemplate, + 'interfaces': list of InterfaceTemplate, + 'reactions': list of ReactionTemplate + } + """ + mol_templates = [] + iface_templates = [] + react_templates = [] + + seen_representatives = set() + chain_map = {} + + for i, rep_idx in enumerate(model["representatives"]): + if collapse_repeated_chains and rep_idx in seen_representatives: + chain_map[i] = rep_idx # reuse template + continue + + # Build molecule template + mol = MoleculeTemplate( + name=f"MOL_{rep_idx}", + com=model["COMs"][i], + radius=model["radii"][i], + ) + + iface_list = [] + for j, neighbor_idx in enumerate(model["interfaces"][i]): + iface = BindingInterfaceTemplate( + name=f"I{i}_{j}", + coords=model["interface_coords"][i][j], + residues=model["interface_residues"][i][j], + energy=model["interface_energies"][i][j], + ) + iface_templates.append(iface) + mol.add_interface(iface) + iface_list.append(iface) + + mol_templates.append(mol) + seen_representatives.add(rep_idx) + chain_map[i] = rep_idx + + # Optionally define reactions (example: 1 interface ↔ 1 interface binding) + for mol in mol_templates: + for iface in mol.interfaces: + reaction = ReactionTemplate( + reactants=[iface], + products=[], # would normally point to bound complex + ka=1.0, # placeholder rate + kb=1.0 + ) + react_templates.append(reaction) + + return { + "molecules": mol_templates, + "interfaces": iface_templates, + "reactions": react_templates + } diff --git a/ionerdss/model/pdb/visualize.py b/ionerdss/model/pdb/visualize.py new file mode 100644 index 00000000..d81bf434 --- /dev/null +++ b/ionerdss/model/pdb/visualize.py @@ -0,0 +1,96 @@ +""" +visualize.py + +Visualization utilities for inspecting coarse-grained molecular assemblies +detected from PDB/mmCIF files. + +This module renders: +- Molecule centers (COMs) as spheres +- Interfaces as smaller colored markers +- Interface connections (optional) as lines/arcs +- Labels for molecules and interfaces + +Requires `matplotlib` and `mpl_toolkits.mplot3d` for 3D rendering. + +Functions +--------- +- plot_coarse_grain_model(model, show_reactions=False) +- plot_interfaces(ax, coords, color, label=None) +""" + +import matplotlib.pyplot as plt +import numpy as np + + +def plot_interfaces(ax, coords, color="red", label=None, size=40): + """ + Plot spherical markers at interface positions. + + Parameters + ---------- + ax : Axes3D + The matplotlib 3D axis to draw on. + coords : list of (3,) ndarray + Coordinates of interface positions. + color : str + Color for marker. + label : str or None + Optional label for the group of interfaces. + size : int + Marker size. + """ + coords = np.asarray(coords) + ax.scatter(coords[:, 0], coords[:, 1], coords[:, 2], + c=color, s=size, label=label) + +def plot_coarse_grain_model(model, show_reactions=False, figsize=(10, 8), elev=30, azim=30): + """ + Render a 3D plot of the coarse-grained model. + + Parameters + ---------- + model : dict + The regularized model output from `regularize_model()`, containing: + - 'COMs', 'interface_coords', 'interfaces', 'chain_ids', etc. + show_reactions : bool + If True, draw lines between each interface pair. + figsize : tuple + Size of the matplotlib figure. + elev : float + Elevation angle for 3D view. + azim : float + Azimuthal angle for 3D view. + """ + fig = plt.figure(figsize=figsize) + ax = fig.add_subplot(111, projection='3d') + + coms = np.array(model["COMs"]) + ax.scatter(coms[:, 0], coms[:, 1], coms[:, 2], + c="black", s=80, label="COMs") + + # Plot interfaces for each chain + for i, iface_coords in enumerate(model["interface_coords"]): + plot_interfaces(ax, iface_coords, color="red") + + # Optionally draw edges between interfaces + if show_reactions: + for i, neighbors in enumerate(model["interfaces"]): + for j, neighbor in enumerate(neighbors): + if i < neighbor: + coord1 = model["interface_coords"][i][j] + # Find back-link index + try: + k = model["interfaces"][neighbor].index(i) + coord2 = model["interface_coords"][neighbor][k] + x, y, z = zip(coord1, coord2) + ax.plot(x, y, z, "gray", linewidth=1) + except ValueError: + continue + + ax.set_xlabel("X") + ax.set_ylabel("Y") + ax.set_zlabel("Z") + ax.view_init(elev=elev, azim=azim) + ax.legend() + plt.tight_layout() + plt.show() diff --git a/ionerdss/nerdss_model/pdb_model.py b/ionerdss/model/pdb_model.py similarity index 85% rename from ionerdss/nerdss_model/pdb_model.py rename to ionerdss/model/pdb_model.py index 31040ba1..560a5d2c 100644 --- a/ionerdss/nerdss_model/pdb_model.py +++ b/ionerdss/model/pdb_model.py @@ -18,8 +18,58 @@ from Bio.SeqUtils import seq1 from scipy.spatial import KDTree from sklearn.cluster import KMeans -from .model import MoleculeType, MoleculeInterface, ReactionType, Model -from .coords import Coords +from .components import MoleculeType, MoleculeInterface, Reaction, Model, MoleculeTemplate, CoarseGrainedMolecule, BindingInterfaceTemplate, BindingInterface, ReactionTemplate +from .pdb.geometry import rigid_transform_chains +from ..math.coords import Coords + + +def apply_rigid_transform(R, t, point): + """Apply rigid transformation (rotation R + translation t) to a point.""" + return R @ point + t + + +def extract_ca_coords(chain): + """Extract CA coordinates from a BioPython Chain object. + + Parameters + ---------- + chain : Bio.PDB.Chain + BioPython Chain object + + Returns + ------- + np.ndarray + Array of CA coordinates with shape (N, 3) + """ + coords = [] + for residue in chain: + if is_aa(residue) and 'CA' in residue: + coords.append(residue['CA'].coord) + return np.array(coords) + + +def extract_aligned_ca_coords(chain1, chain2): + """Extract CA coordinates from two chains, ensuring they have the same length. + + Parameters + ---------- + chain1, chain2 : Bio.PDB.Chain + BioPython Chain objects + + Returns + ------- + tuple of np.ndarray + Tuple of (chain1_coords, chain2_coords) with matching lengths + """ + coords1 = extract_ca_coords(chain1) + coords2 = extract_ca_coords(chain2) + + # Take the minimum length to ensure matching shapes + min_len = min(len(coords1), len(coords2)) + if min_len == 0: + raise ValueError(f"One of the chains has no CA atoms: chain1 has {len(coords1)}, chain2 has {len(coords2)}") + + return coords1[:min_len], coords2[:min_len] class PDBModel(Model): @@ -69,12 +119,12 @@ def __init__(self, pdb_file: str = None, pdb_id: str = None, save_dir: str = Non self.all_interfaces_residues = [] self.chains_map = {} # Records the mapping of original chain IDs to molecular types used in NERDSS - self.chains_group = [] # Groups chains with the same MOL_ID or entity_id or similar stucture as homologous + self.chains_group = [] # Groups chains with the same MOL_ID or entity_id or similar stucture as repeated # used to store the information of the molecules and interfaces for NERDSS model self.molecule_list = [] self.molecules_template_list = [] - self.interface_list = [] + self.interfaces = [] self.interface_template_list = [] self.binding_chains_pairs = [] self.binding_energies = [] @@ -508,9 +558,9 @@ def save_original_coarse_grained_structure(self, output_cif: str = "original_coa print(f"PyMOL script saved to {pymol_script}. Run 'pymol {pymol_script}' to visualize the coarse-grained structure.") - def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_inter=3.5, angle_threshold=25.0, show_coarse_grained_structure=False, save_pymol_script=False, standard_output=False): + def regularize_repeated_chains(self, dist_threshold_intra=3.5, dist_threshold_inter=3.5, angle_threshold=25.0, show_coarse_grained_structure=False, save_pymol_script=False, standard_output=False): """ - Aligns and regularizes all molecular chains so that homologous chains share + Aligns and regularizes all molecular chains so that repeated chains share the same relative geometry. This method organizes molecule and interface objects accordingly and sets up reaction objects. @@ -522,26 +572,26 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ save_pymol_script (bool): Whether to save a PyMOL script for visualization. Defaults to False. standard_output (bool): Whether to print detected interfaces. Defaults to False. """ - self.identify_homologous_chains() + self.identify_repeated_chains() if not self.chains_group: self._assign_original_chain_ids() for group in self.chains_group: group.sort() self.chains_group.sort() - print(f"{len(self.chains_group)} homologous chain groups identified:") + print(f"{len(self.chains_group)} repeated chain groups identified:") print(self.chains_group) - # check if the structure has homologous chains - # if any element in self.chains_group has more than one chain, then it has homologous chains - has_homologous_chains = any(len(group) > 1 for group in self.chains_group) - if not has_homologous_chains: + # check if the structure has repeated chains + # if any element in self.chains_group has more than one chain, then it has repeated chains + has_repeated_chains = any(len(group) > 1 for group in self.chains_group) + if not has_repeated_chains: dist_threshold_intra = 0.0 dist_threshold_inter = 0.0 angle_threshold = 0.0 self.molecule_list = [] self.molecules_template_list = [] - self.interface_list = [] + self.interfaces = [] self.interface_template_list = [] self.interface_signatures = [] @@ -676,7 +726,8 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ # align the current chain to the first chain in the group, then get the relative position of interface to COM chain1 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == group[0]][0])] chain2 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id][0])] - R, t = rigid_transform_chains(chain2, chain1) + chain1_coords, chain2_coords = extract_aligned_ca_coords(chain1, chain2) + R, t = rigid_transform_chains(chain2_coords, chain1_coords) Q = [] Q_COM_coord = self.all_COM_chains_coords[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id][0])] Q.append([Q_COM_coord.x, Q_COM_coord.y, Q_COM_coord.z]) @@ -712,7 +763,8 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ # align the current chain to the first chain in the group, then get the relative position of interface to COM chain1 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == group[0]][0])] chain2 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id][0])] - R, t = rigid_transform_chains(chain2, chain1) + chain1_coords, chain2_coords = extract_aligned_ca_coords(chain1, chain2) + R, t = rigid_transform_chains(chain2_coords, chain1_coords) Q = [] Q_COM_coord = self.all_COM_chains_coords[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id][0])] Q.append([Q_COM_coord.x, Q_COM_coord.y, Q_COM_coord.z]) @@ -751,7 +803,8 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ # align the current chain to the first chain in the group, then get the relative position of interface to COM chain1 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == B_group[0]][0])] chain2 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == B][0])] - R, t = rigid_transform_chains(chain2, chain1) + chain1_coords, chain2_coords = extract_aligned_ca_coords(chain1, chain2) + R, t = rigid_transform_chains(chain2_coords, chain1_coords) Q = [] Q_COM_coord = self.all_COM_chains_coords[self.all_chains.index([chain for chain in self.all_chains if chain.id == B][0])] Q.append([Q_COM_coord.x, Q_COM_coord.y, Q_COM_coord.z]) @@ -863,8 +916,8 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ interface.my_residues = self.all_interfaces_residues[self.all_chains.index([chain for chain in self.all_chains if chain.id == A][0])][i] interface.energy = self.all_interface_energies[self.all_chains.index([chain for chain in self.all_chains if chain.id == A][0])][i] interface.my_template.energy = interface.energy - self.interface_list.append(interface) - molecule.interface_list.append(interface) + self.interfaces.append(interface) + molecule.interfaces.append(interface) # print(f"Creating new interface {A} for partner molecule {B}") # create the interface for the partner molecule @@ -874,8 +927,8 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ partner_interface.my_residues = R_B partner_interface.energy = E_B partner_interface.my_template.energy = E_B - self.interface_list.append(partner_interface) - partner_molecule.interface_list.append(partner_interface) + self.interfaces.append(partner_interface) + partner_molecule.interfaces.append(partner_interface) # add the chains pair to self.binding_chains_pairs if chain_id < interface_id: @@ -909,7 +962,8 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ else: chain1 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == group[0]][0])] chain2 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id][0])] - R, t = rigid_transform_chains(chain1, chain2) + chain1_coords, chain2_coords = extract_aligned_ca_coords(chain1, chain2) + R, t = rigid_transform_chains(chain1_coords, chain2_coords) com_coord_transformed = apply_rigid_transform(R, t, np.array([com_coord.x, com_coord.y, com_coord.z])) interface_coords_transformed = [] for interface_coord in interface_coords: @@ -919,7 +973,7 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ # update the COM and interfaces of the molecule molecule = [mol for mol in self.molecule_list if mol.name == chain_id][0] molecule.coord = Coords(com_coord_transformed[0], com_coord_transformed[1], com_coord_transformed[2]) - for j, interface in enumerate(molecule.interface_list): + for j, interface in enumerate(molecule.interfaces): # find the corresponding interface template interface_template_id = interface.my_template.name for k, intf_template in enumerate(interface_template_ids): @@ -933,7 +987,7 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ self.binding_chains_pairs.sort() self.molecule_list.sort(key=lambda m: m.name) self.molecules_template_list.sort(key=lambda mt: mt.name) - self.interface_list.sort(key=lambda i: i.name) + self.interfaces.sort(key=lambda i: i.name) self.interface_template_list.sort(key=lambda it: it.name) # print("binding chains pairs:") @@ -946,7 +1000,7 @@ def regularize_homologous_chains(self, dist_threshold_intra=3.5, dist_threshold_ # for molecule_template in self.molecules_template_list: # print(molecule_template) # print("interface list:") - # for interface in self.interface_list: + # for interface in self.interfaces: # print(interface) # print("interface template list:") # for interface_template in self.interface_template_list: @@ -1004,7 +1058,7 @@ def _generate_model_data(self) -> None: for intf_template in mol_template.interface_template_list: iface = MoleculeInterface(name=intf_template.name, coord=intf_template.coord) mol_interfaces.append(iface) - molecule = MoleculeType(name=mol_name, interfaces=mol_interfaces, diffusion_translation=mol_template.diffusion_translation, diffusion_rotation=mol_template.diffusion_rotation) + molecule = MoleculeType(name=mol_name, interfaces=mol_interfaces, translational_diffusion_constant=mol_template.diffusion_translation, rotational_diffusion_constant=mol_template.diffusion_rotation) molecule_types.append(molecule) # Step 2: Generate reactions @@ -1021,7 +1075,9 @@ def _generate_model_data(self) -> None: norm2 = tuple(n for n in norm2) ka = getattr(reaction_template, 'ka', 0.0) kb = getattr(reaction_template, 'kb', 0.0) - reaction = ReactionType(name=reaction_template.expression, binding_radius=brad, binding_angles=bind_anlges, norm1=norm1, norm2=norm2, ka=ka, kb=kb) + reaction = Reaction(name=reaction_template.expression, binding_radius=brad, binding_angles=bind_anlges, norm1=norm1, norm2=norm2, ka=ka, kb=kb) + reaction.ka = ka + reaction.kb = kb reactions.append(reaction) # Step 3: Save model data @@ -1045,7 +1101,7 @@ def plot_regularized_structure(self): for _, mol in enumerate(self.molecule_list): chain_ids.append(mol.name) com_coord = mol.coord - interface_coords = [interface.coord for interface in mol.interface_list] + interface_coords = [interface.coord for interface in mol.interfaces] points = [] points.append([com_coord.x, com_coord.y, com_coord.z]) for interface_coord in interface_coords: @@ -1083,7 +1139,9 @@ def save_regularized_coarse_grained_structure(self, output_cif: str = "regulariz chain1 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == group[0]][0])] chain2 = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id][0])] - R, t = rigid_transform_chains(chain1, chain2) + chain1_coords = extract_ca_coords(chain1) + chain2_coords = extract_ca_coords(chain2) + R, t = rigid_transform_chains(chain1_coords, chain2_coords) com_coord_transformed = apply_rigid_transform(R, t, np.array([com_coord.x, com_coord.y, com_coord.z])) interface_coords_transformed = [] for interface_coord in interface_coords: @@ -1095,7 +1153,7 @@ def save_regularized_coarse_grained_structure(self, output_cif: str = "regulariz molecule.coord = Coords(com_coord_transformed[0], com_coord_transformed[1], com_coord_transformed[2]) # Track existing interface template names in the molecule - existing_interface_names = {interface.my_template.name for interface in molecule.interface_list} + existing_interface_names = {interface.my_template.name for interface in molecule.interfaces} for k, interface_template_id in enumerate(interface_template_ids): if interface_template_id in existing_interface_names: @@ -1107,7 +1165,11 @@ def save_regularized_coarse_grained_structure(self, output_cif: str = "regulariz new_interface = BindingInterface(template.name) new_interface.my_template = template new_interface.coord = Coords(*interface_coords_transformed[k]) - molecule.interface_list.append(new_interface) + molecule.interfaces.append(new_interface) + + # Reorder molecule.interfaces to match the template order + template_order = [intf.name for intf in molecule_template.interface_template_list] + molecule.interfaces.sort(key=lambda intf: template_order.index(intf.my_template.name)) with open(output_cif, 'w') as cif_file: atom_id = 1 @@ -1141,7 +1203,7 @@ def save_regularized_coarse_grained_structure(self, output_cif: str = "regulariz atom_id += 1 # Write each interface atom - for intf in mol.interface_list: + for intf in mol.interfaces: cif_file.write( f"ATOM {atom_id:5d} INT MOL {mol.name} " f"{intf.coord.x:8.3f} {intf.coord.y:8.3f} {intf.coord.z:8.3f} 1.00 0.00 O\n" @@ -1171,7 +1233,7 @@ def save_regularized_coarse_grained_structure(self, output_cif: str = "regulariz ) # For each interface, create a pseudoatom and connect it to COM - for j, intf in enumerate(mol.interface_list, start=1): + for j, intf in enumerate(mol.interfaces, start=1): pml_file.write( f"pseudoatom int_{mol.name}_{j}, pos=[{intf.coord.x:.3f}, {intf.coord.y:.3f}, {intf.coord.z:.3f}], color=blue\n" ) @@ -1221,7 +1283,7 @@ def _update_interface_templates_free_required_list(self): # find the molecule in the list molecule = [mol for mol in self.molecule_list if mol.name == chain_id][0] # loop the interfaces list of the molecule - for interface in molecule.interface_list: + for interface in molecule.interfaces: # determine if this interface appears first time interface_id = interface.name interface_template_id = interface.my_template.name @@ -1229,7 +1291,7 @@ def _update_interface_templates_free_required_list(self): for j in range(i): chain_id_2 = group[j] molecule_2 = [mol for mol in self.molecule_list if mol.name == chain_id_2][0] - for interface_2 in molecule_2.interface_list: + for interface_2 in molecule_2.interfaces: interface_id_2 = interface_2.name interface_template_id_2 = interface_2.my_template.name if interface_template_id == interface_template_id_2: @@ -1243,14 +1305,15 @@ def _update_interface_templates_free_required_list(self): for j in range(i): chain_id_2 = group[j] molecule_2 = [mol for mol in self.molecule_list if mol.name == chain_id_2][0] - for interface_2 in molecule_2.interface_list: + for interface_2 in molecule_2.interfaces: interface_id_2 = interface_2.name interface_template_id_2 = interface_2.my_template.name if interface_template_id != interface_template_id_2: another_partner_chain_id = interface_id_2 another_partner_chain = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == another_partner_chain_id][0])] another_chain = self.all_chains[self.all_chains.index([chain for chain in self.all_chains if chain.id == chain_id_2][0])] - R, t = rigid_transform_chains(my_chain, another_chain) + my_chain_coords, another_chain_coords = extract_aligned_ca_coords(my_chain, another_chain) + R, t = rigid_transform_chains(my_chain_coords, another_chain_coords) # rotate the CA atoms of my_partner_chain and check the steric clashes with CA atoms of another_partner_chain my_partner_chain_CA_coords = [] for residue in my_partner_chain: @@ -1290,19 +1353,10 @@ def _build_reactions(self): for binding_pair in self.binding_chains_pairs: molecule_1 = [mol for mol in self.molecule_list if mol.name == binding_pair[0]][0] molecule_2 = [mol for mol in self.molecule_list if mol.name == binding_pair[1]][0] - interface_1 = [interface for interface in molecule_1.interface_list if interface.name == binding_pair[1]][0] - interface_2 = [interface for interface in molecule_2.interface_list if interface.name == binding_pair[0]][0] + interface_1 = [interface for interface in molecule_1.interfaces if interface.name == binding_pair[1]][0] + interface_2 = [interface for interface in molecule_2.interfaces if interface.name == binding_pair[0]][0] - # build the reaction - reaction = Reaction() - reaction.reactants = [] - reaction.products = [] - reaction.binding_angles = [] - reaction.expression = "" - reaction.reactants.append((molecule_1, interface_1)) - reaction.reactants.append((molecule_2, interface_2)) - reaction.products.append(f"{molecule_1.name}({interface_1.name}!1).{molecule_2.name}({interface_2.name}!1)") - reaction.expression = f"{molecule_1.name}({interface_1.name}) + {molecule_2.name}({interface_2.name}) <-> {molecule_1.name}({interface_1.name}!1).{molecule_2.name}({interface_2.name}!1)" + # build the reaction - compute required values first c1 = np.array([molecule_1.coord.x, molecule_1.coord.y, molecule_1.coord.z]) c2 = np.array([molecule_2.coord.x, molecule_2.coord.y, molecule_2.coord.z]) i1 = np.array([interface_1.coord.x, interface_1.coord.y, interface_1.coord.z]) @@ -1314,10 +1368,22 @@ def _build_reactions(self): phi1 = 'nan' if len(molecule_2.my_template.interface_template_list) == 1: phi2 = 'nan' - reaction.binding_angles = [theta1, theta2, phi1, phi2, omega] - reaction.norm1 = [0,0,1] - reaction.norm2 = [0,0,1] - reaction.binding_radius = sigma_magnitude + + # Create reaction with required constructor arguments + reaction_name = f"{molecule_1.name}({interface_1.name}) + {molecule_2.name}({interface_2.name}) <-> {molecule_1.name}({interface_1.name}!1).{molecule_2.name}({interface_2.name}!1)" + binding_angles = [theta1, theta2, phi1, phi2, omega] + norm1 = [0, 0, 1] + norm2 = [0, 0, 1] + + reaction = Reaction(reaction_name, sigma_magnitude, binding_angles, norm1, norm2) + + # Set additional attributes + reaction.reactants = [] + reaction.products = [] + reaction.reactants.append((molecule_1, interface_1)) + reaction.reactants.append((molecule_2, interface_2)) + reaction.products.append(f"{molecule_1.name}({interface_1.name}!1).{molecule_2.name}({interface_2.name}!1)") + reaction.expression = reaction_name # calculate the rates energy = interface_1.energy @@ -1518,7 +1584,7 @@ def _is_existing_interface(self, interface_name, molecule): - True and index if the interface exists. - False and None otherwise. """ - for i, interface in enumerate(molecule.interface_list): + for i, interface in enumerate(molecule.interfaces): if interface.name == interface_name: return True, i return False, None @@ -1616,9 +1682,9 @@ def _get_default_energy_table(self): return energy_table - def identify_homologous_chains(self): + def identify_repeated_chains(self): """ - Identifies homologous chains in the molecular structure and populates `self.chain_map` + Identifies repeated chains in the molecular structure and populates `self.chain_map` and `self.chain_groups`. Attempts to parse the header from PDB/CIF files first; if unsuccessful or results are invalid, falls back to sequence alignment. """ @@ -1633,7 +1699,7 @@ def identify_homologous_chains(self): # Clear invalid results self.chains_map = {} self.chains_group = [] - self._find_homologous_chains_by_alignment() + self._find_repeated_chains_by_alignment() def _validate_chain_mapping(self): """ @@ -1675,7 +1741,7 @@ def _validate_chain_mapping(self): def _parse_pdb_header(self): """ - Parses the PDB file header to extract homologous chain information + Parses the PDB file header to extract repeated chain information (MOL_ID, CHAIN). Populates `self.chain_map` and `self.chain_groups` based on the identified molecular groups. """ @@ -1692,7 +1758,7 @@ def _parse_pdb_header(self): chains = line.split(":")[1].strip().split(";")[0].split(",") chains_group.append(chains) - # Group chains with the same MOL_ID as homologous + # Group chains with the same MOL_ID as repeated available_NERDSS_mol_ids = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] for i, chains in enumerate(chains_group): for chain in chains: @@ -1700,17 +1766,17 @@ def _parse_pdb_header(self): self.chains_group = chains_group if self.chains_map: - print("Homologous chains identified using PDB header:") + print("Repeated chains identified using PDB header:") print(self.chains_map) except Exception as e: - print(f"Failed to parse PDB header for homologous chains: {str(e)}") - # Attempt to find homologous chains using sequence alignment - self._find_homologous_chains_by_alignment() + print(f"Failed to parse PDB header for repeated chains: {str(e)}") + # Attempt to find repeated chains using sequence alignment + self._find_repeated_chains_by_alignment() def _parse_cif_header(self): """ - Parses the CIF file header to extract homologous chain information + Parses the CIF file header to extract repeated chain information (entity_id). Populates `self.chain_map` and `self.chain_groups`. """ try: @@ -1742,7 +1808,7 @@ def _parse_cif_header(self): elif "," in line[0]: chains_group.append(line[0].split(",")) - # Group chains with the same entity_id as homologous + # Group chains with the same entity_id as repeated available_NERDSS_mol_ids = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] for i, chains in enumerate(chains_group): for chain in chains: @@ -1750,23 +1816,23 @@ def _parse_cif_header(self): self.chains_group = chains_group if self.chains_map: - print("Homologous chains identified using CIF header:") + print("Repeated chains identified using CIF header:") print(self.chains_map) except Exception as e: - print(f"Failed to parse CIF file for homologous chains: {str(e)}") - # Attempt to find homologous chains using sequence alignment - self._find_homologous_chains_by_alignment() + print(f"Failed to parse CIF file for repeated chains: {str(e)}") + # Attempt to find repeated chains using sequence alignment + self._find_repeated_chains_by_alignment() - def _find_homologous_chains_by_alignment(self, seq_identity_threshold: float = 90.0): + def _find_repeated_chains_by_alignment(self, seq_identity_threshold: float = 90.0): """ - Identifies homologous chains by performing global sequence alignment on + Identifies repeated chains by performing global sequence alignment on amino acid sequences. Chains with identity above the specified threshold are grouped together. Args: seq_identity_threshold (float, optional): Minimum sequence identity - percentage to classify chains as homologous. Defaults to 90.0. + percentage to classify chains as repeated. Defaults to 90.0. """ try: similar_chains = [] @@ -1838,15 +1904,15 @@ def dfs(chain, group): self.chains_map[chain] = available_NERDSS_mol_ids[i] if self.chains_map: - print("Homologous chains identified using sequence alignment:") + print("Repeated chains identified using sequence alignment:") print(self.chains_map) except Exception as e: - print(f"Failed to find homologous chains using sequence alignment: {str(e)}") + print(f"Failed to find repeated chains using sequence alignment: {str(e)}") def _assign_original_chain_ids(self): """ - Assigns original chain IDs as molecular types if no homologous chains are detected. + Assigns original chain IDs as molecular types if no repeated chains are detected. Each chain receives a unique letter from A-Z. """ chains = list(self.all_atoms_structure.get_chains()) @@ -1857,413 +1923,6 @@ def _assign_original_chain_ids(self): print("Using original chain IDs as molecular types:") print(self.chains_map) -# ------------------------------------------------------------------------- -# helper Classes -# ------------------------------------------------------------------------- - -class MoleculeTemplate: - """ - Represents a molecule type in NERDSS, including the molecule's center of mass (COM) - and a list of binding interfaces. - - Attributes: - name (str): Identifier for the molecule type. - interface_template_list (list): A list of BindingInterfaceTemplate objects that - describe the molecule’s binding sites. - normal_point (list): Default normal vector direction. - """ - - def __init__(self, name: str): - """ - Initializes a MoleculeTemplate. - - Args: - name (str): Name/identifier of the molecule type. - """ - self.name = name - self.interface_template_list = [] - self.normal_point = [0,0,1] - self.diffusion_translation = None - self.diffusion_rotation = None - self.radius = None - - def __str__(self): - interfaces = "\n ".join(str(it) for it in self.interface_template_list) - return f"Molecule Template: {self.name}\n Interfaces:\n {interfaces}" - - def __eq__(self, other): - if not isinstance(other, MoleculeTemplate): - return False - return self.name == other.name - -class BindingInterfaceTemplate: - """ - Represents a binding interface template between molecules. - - Attributes: - name (str): Identifier of the interface template. - coord (Coords): Relative coordinates of the interface. - my_residues (list): Residues forming this interface. - required_free_list (list): Other interface templates that must remain unbound - for this interface to bind. - signature (dict): Stores interface geometry information. - """ - - def __init__(self, name: str): - """ - Initializes a BindingInterfaceTemplate. - - Args: - name (str): Identifier for the interface template. - """ - self.name = name - self.coord = None - self.my_residues = [] - self.required_free_list = [] # The list of interface templates that need to be free to bind to this interface template - self.signature = {} - self.energy = None - - def __str__(self): - residues = ", ".join(self.my_residues) - required_free = ", ".join(self.required_free_list) - return (f"Interface Template: {self.name}\n" - f" Coordinates: {self.coord}\n" - f" Residues: {residues}\n" - f" Required Free: {required_free}") - - def __eq__(self, other): - if not isinstance(other, BindingInterfaceTemplate): - return False - # TODO: check this - return self.name == other.name - -class CoarseGrainedMolecule: - """ - Represents a coarse-grained molecule in NERDSS, potentially derived from a PDB chain. - - Attributes: - name (str): Identifier of the molecule. - my_template (MoleculeTemplate): Reference to the associated molecule template. - coord (Coords): Center-of-mass coordinates. - interface_list (list): List of binding interfaces. - normal_point (list): Normal vector direction. - """ - - def __init__(self, name: str): - """ - Initializes a CoarseGrainedMolecule. - - Args: - name (str): Name/identifier of the molecule. - """ - self.name = name - self.my_template = None - self.coord = None - self.interface_list = [] - self.normal_point = None - self.diffusion_translation = None - self.diffusion_rotation = None - self.radius = None - - def __str__(self): - interfaces = "\n ".join(str(interface) for interface in self.interface_list) - return (f"CoarseGrainedMolecule: {self.name}\n" - f" Template: {self.my_template}\n" - f" Coordinates: {self.coord}\n" - f" Interfaces:\n {interfaces}") - - def __repr__(self): - # Similar to __str__ but more formal for debugging - return self.name - - def __eq__(self, other): - if not isinstance(other, CoarseGrainedMolecule): - return False - return self.name == other.name - - def __hash__(self): - return hash(self.name) - -class BindingInterface: - """ - Represents a binding interface between molecules. - - Attributes: - name (str): Identifier of the binding interface. - coord (Coords): Position of the interface. - my_template (BindingInterfaceTemplate): Reference to the associated interface template. - my_residues (list): Residues included in the interface. - signature (dict): Stores interface geometry information. - """ - - def __init__(self, name: str): - """ - Initializes a BindingInterface. - - Args: - name (str): Identifier for the binding interface. - """ - self.name = name - self.coord = None - self.my_template = None - self.my_residues = [] - self.signature = {} - self.energy = None - - def __str__(self): - return (f"BindingInterface: {self.name}\n" - f" Template: {self.my_template}\n" - f" Coordinates: {self.coord}\n" - f" Residue Count: {len(self.my_residues)}\n" - f" Residues: {self.my_residues}") - - def __eq__(self, other): - if not isinstance(other, BindingInterface): - return False - return self.my_template == other.my_template - -class ReactionTemplate: - """ - Defines a reaction template between two MoleculeTemplates. - - Attributes: - expression (str): Textual representation of the reaction. - reactants (list): List of reactant molecule/interface templates. - products (list): List of product molecule/interface templates. - binding_angles (tuple): Tuple describing binding angles (theta1, theta2, phi1, phi2, omega). - binding_radius (float): Distance between binding interfaces. - norm1 (list): Normal vector of the first reactant. - norm2 (list): Normal vector of the second reactant. - """ - - def __init__(self): - """ - Initializes a ReactionTemplate with default values. - """ - self.expression = None - self.reactants = None - self.products = None - self.binding_angles = None - self.binding_radius = None - self.norm1 = None - self.norm2 = None - self.kd = None - self.ka = None - self.kb = None - self.energy = None - - def __str__(self): - return (f"Reaction Template: {self.expression}\n" - f" Reactants: {self.reactants}\n" - f" Products: {self.products}\n" - f" Binding Angles: {self.binding_angles}\n" - f" Binding Radius: {self.binding_radius / 10:.6f} nm\n" - f" norm1: {self.norm1}\n" - f" norm2: {self.norm2}") - - def __eq__(self, other): - if not isinstance(other, ReactionTemplate): - return False - return self.expression == other.expression - -class Reaction: - """ - Represents an actual reaction between two Molecule objects. - - Attributes: - expression (str): Textual representation of the reaction. - reactants (list): List of reactant molecules/interfaces. - products (list): List of product molecules/interfaces. - binding_angles (tuple): Tuple describing binding angles (theta1, theta2, phi1, phi2, omega). - binding_radius (float): Distance between binding interfaces. - norm1 (list): Normal vector of the first reactant. - norm2 (list): Normal vector of the second reactant. - """ - - def __init__(self): - """ - Initializes a Reaction with default values. - """ - self.expression = None - self.reactants = None - self.products = None - self.binding_angles = None - self.binding_radius = None - self.norm1 = None - self.norm2 = None - self.my_template = None - self.kd = None - self.ka = None - self.kb = None - self.energy = None - - def __str__(self): - return (f"Reaction: {self.expression}\n" - f" Reactants: {self.reactants}\n" - f" Products: {self.products}\n" - f" Binding Angles: {self.binding_angles}\n" - f" Binding Radius: {self.binding_radius / 10:.6f} nm") - - def __repr__(self): - return f"Reaction({self.expression})" - - def __eq__(self, other): - if not isinstance(other, Reaction): - return False - return self.expression == other.expression - - def __hash__(self): - return hash(self.expression) - -# ------------------------------------------------------------------------- -# helper functions - geometry transformation -# ------------------------------------------------------------------------- - -def rigid_transform_3d(points_a: np.ndarray, points_b: np.ndarray): - """ - Computes a rigid transformation (rotation + translation) that aligns - `points_a` to `points_b` using Singular Value Decomposition (SVD). - - Args: - points_a (np.ndarray): Shape (N, 3), first set of 3D points. - points_b (np.ndarray): Shape (N, 3), second set of 3D points. - - Returns: - tuple: - - np.ndarray: 3x3 rotation matrix `R` - - np.ndarray: 3-element translation vector `t` - """ - assert len(points_a) == len(points_b), "Point sets must be same length." - centroid_a = points_a[0] - centroid_b = points_b[0] - pa = points_a[1:] - centroid_a - pb = points_b[1:] - centroid_b - h = pa.T @ pb - u, s, vt = np.linalg.svd(h) - r = vt.T @ u.T - if np.linalg.det(r) < 0: - vt[-1, :] *= -1 - r = vt.T @ u.T - t = centroid_b - r @ centroid_a - return r, t - - -def apply_rigid_transform(r: np.ndarray, t: np.ndarray, point: np.ndarray): - """ - Applies a rigid transformation (rotation + translation) to a point. - - Args: - r (np.ndarray): A 3x3 rotation matrix. - t (np.ndarray): A 3-element translation vector. - point (np.ndarray): A shape (3,) array representing a point. - - Returns: - np.ndarray: Transformed point. - """ - return (r @ point.T).T + t - - -def rigid_transform_chains(chain1, chain2): - """ - Aligns chain1 to chain2 by: - 1. Extracting amino acid sequences. - 2. Performing sequence alignment. - 3. Identifying matching residues. - 4. Computing a coarse-grained set of representative points. - 5. Computing a rigid transformation. - - Args: - chain1 (Bio.PDB.Chain.Chain): First molecular chain. - chain2 (Bio.PDB.Chain.Chain): Second molecular chain. - - Returns: - tuple: - - np.ndarray: 3x3 rotation matrix `R` - - np.ndarray: 3-element translation vector `t` - """ - - # Step 1: Extract sequences from both chains - def extract_sequence(chain): - """Extracts the amino acid sequence from a chain.""" - return "".join(seq1(residue.resname) for residue in chain.get_residues() if is_aa(residue)) - - sequence1 = extract_sequence(chain1) - sequence2 = extract_sequence(chain2) - - # Step 2: Find the best overlap between the two sequences using PairwiseAligner - aligner = PairwiseAligner() - aligner.mode = 'global' - aligner.match_score = 1.0 - aligner.mismatch_score = 0.0 - aligner.open_gap_score = -1.0 - aligner.extend_gap_score = -0.5 - - alignments = aligner.align(sequence1, sequence2) - alignment = alignments[0] # Get the best alignment - - aligned_seq1 = alignment[0] - aligned_seq2 = alignment[1] - - # Step 3: Identify matching residue pairs in the aligned sequences - residue_pairs = [] - idx1, idx2 = 0, 0 - residues1 = [res for res in chain1 if is_aa(res)] - residues2 = [res for res in chain2 if is_aa(res)] - - for a1, a2 in zip(aligned_seq1, aligned_seq2): - if a1 == '-' or a2 == '-': - if a1 != '-': - idx1 += 1 - if a2 != '-': - idx2 += 1 - continue - residue_pairs.append((residues1[idx1]['CA'].coord, residues2[idx2]['CA'].coord)) - idx1 += 1 - idx2 += 1 - - # Step 4: Group residues into four spatially groups - def group_residues(residues, n_groups=4): - """Groups residues into n_groups based on their spatial proximity.""" - coords = np.array([res for res, _ in residues]) - kmeans = KMeans(n_clusters=n_groups).fit(coords) - groups = [[] for _ in range(n_groups)] - for i, label in enumerate(kmeans.labels_): - groups[label].append(residues[i]) - return groups - - groups = group_residues(residue_pairs) - - # Step 5: Compute the average position of each group and COM - P = [np.mean([res[0] for res in group], axis=0) for group in groups] - Q = [np.mean([res[1] for res in group], axis=0) for group in groups] - P.insert(0, np.mean([res[0] for res in residue_pairs], axis=0)) - Q.insert(0, np.mean([res[1] for res in residue_pairs], axis=0)) - - P = np.array(P) - Q = np.array(Q) - - # Step 6: Apply rigid transformation - R, t = rigid_transform_3d(P, Q) - - return R, t - - -def check_steric_clashes(points_1, points_2, cutoff: float = 3.5, number_threshold: int = 2): - """ - Detects steric clashes between two sets of molecular points. - - Args: - points_1 (np.ndarray): N x 3 coordinates for the first molecule. - points_2 (np.ndarray): M x 3 coordinates for the second molecule. - cutoff (float, optional): Distance threshold (default: 3.5 Å). - threshold (int, optional): Minimum number of close contacts to flag a clash (default: 2). - - Returns: - bool: True if a steric clash is detected, False otherwise. - """ - tree = KDTree(points_2) - clashes = tree.query_ball_point(points_1, r=cutoff) - return any(len(clash) >= number_threshold for clash in clashes) # ------------------------------------------------------------------------- diff --git a/ionerdss/nerdss_model/platonic_solids/__init__.py b/ionerdss/model/platonic_solids/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/__init__.py rename to ionerdss/model/platonic_solids/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/__init__.py b/ionerdss/model/platonic_solids/cube/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/__init__.py rename to ionerdss/model/platonic_solids/cube/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face.py b/ionerdss/model/platonic_solids/cube/cube_face.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face.py rename to ionerdss/model/platonic_solids/cube/cube_face.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_coord.py b/ionerdss/model/platonic_solids/cube/cube_face_COM_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_coord.py rename to ionerdss/model/platonic_solids/cube/cube_face_COM_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_leg_coord.py b/ionerdss/model/platonic_solids/cube/cube_face_COM_leg_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_leg_coord.py rename to ionerdss/model/platonic_solids/cube/cube_face_COM_leg_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_leg_list_gen.py b/ionerdss/model/platonic_solids/cube/cube_face_COM_leg_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_leg_list_gen.py rename to ionerdss/model/platonic_solids/cube/cube_face_COM_leg_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_list_gen.py b/ionerdss/model/platonic_solids/cube/cube_face_COM_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_COM_list_gen.py rename to ionerdss/model/platonic_solids/cube/cube_face_COM_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_input_coord.py b/ionerdss/model/platonic_solids/cube/cube_face_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_input_coord.py rename to ionerdss/model/platonic_solids/cube/cube_face_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_leg_reduce.py b/ionerdss/model/platonic_solids/cube/cube_face_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_leg_reduce.py rename to ionerdss/model/platonic_solids/cube/cube_face_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_leg_reduce_coord_gen.py b/ionerdss/model/platonic_solids/cube/cube_face_leg_reduce_coord_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_leg_reduce_coord_gen.py rename to ionerdss/model/platonic_solids/cube/cube_face_leg_reduce_coord_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_vert_coord.py b/ionerdss/model/platonic_solids/cube/cube_face_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_vert_coord.py rename to ionerdss/model/platonic_solids/cube/cube_face_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_face_write.py b/ionerdss/model/platonic_solids/cube/cube_face_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_face_write.py rename to ionerdss/model/platonic_solids/cube/cube_face_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert.py b/ionerdss/model/platonic_solids/cube/cube_vert.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert.py rename to ionerdss/model/platonic_solids/cube/cube_vert.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_COM_leg.py b/ionerdss/model/platonic_solids/cube/cube_vert_COM_leg.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_COM_leg.py rename to ionerdss/model/platonic_solids/cube/cube_vert_COM_leg.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_COM_leg_gen.py b/ionerdss/model/platonic_solids/cube/cube_vert_COM_leg_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_COM_leg_gen.py rename to ionerdss/model/platonic_solids/cube/cube_vert_COM_leg_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_coord.py b/ionerdss/model/platonic_solids/cube/cube_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_coord.py rename to ionerdss/model/platonic_solids/cube/cube_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_input_coord.py b/ionerdss/model/platonic_solids/cube/cube_vert_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_input_coord.py rename to ionerdss/model/platonic_solids/cube/cube_vert_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_leg_reduce.py b/ionerdss/model/platonic_solids/cube/cube_vert_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_leg_reduce.py rename to ionerdss/model/platonic_solids/cube/cube_vert_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_leg_reduce_coor_gen.py b/ionerdss/model/platonic_solids/cube/cube_vert_leg_reduce_coor_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_leg_reduce_coor_gen.py rename to ionerdss/model/platonic_solids/cube/cube_vert_leg_reduce_coor_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_norm_input.py b/ionerdss/model/platonic_solids/cube/cube_vert_norm_input.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_norm_input.py rename to ionerdss/model/platonic_solids/cube/cube_vert_norm_input.py diff --git a/ionerdss/nerdss_model/platonic_solids/cube/cube_vert_write.py b/ionerdss/model/platonic_solids/cube/cube_vert_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/cube/cube_vert_write.py rename to ionerdss/model/platonic_solids/cube/cube_vert_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/__init__.py b/ionerdss/model/platonic_solids/dode/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/__init__.py rename to ionerdss/model/platonic_solids/dode/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face.py b/ionerdss/model/platonic_solids/dode/dode_face.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face.py rename to ionerdss/model/platonic_solids/dode/dode_face.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_coor.py b/ionerdss/model/platonic_solids/dode/dode_face_COM_coor.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_coor.py rename to ionerdss/model/platonic_solids/dode/dode_face_COM_coor.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_leg_coor.py b/ionerdss/model/platonic_solids/dode/dode_face_COM_leg_coor.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_leg_coor.py rename to ionerdss/model/platonic_solids/dode/dode_face_COM_leg_coor.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_leg_list_gen.py b/ionerdss/model/platonic_solids/dode/dode_face_COM_leg_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_leg_list_gen.py rename to ionerdss/model/platonic_solids/dode/dode_face_COM_leg_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_list_gen.py b/ionerdss/model/platonic_solids/dode/dode_face_COM_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_COM_list_gen.py rename to ionerdss/model/platonic_solids/dode/dode_face_COM_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_dodecahedron_coord.py b/ionerdss/model/platonic_solids/dode/dode_face_dodecahedron_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_dodecahedron_coord.py rename to ionerdss/model/platonic_solids/dode/dode_face_dodecahedron_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_input_coord.py b/ionerdss/model/platonic_solids/dode/dode_face_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_input_coord.py rename to ionerdss/model/platonic_solids/dode/dode_face_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_leg_reduce.py b/ionerdss/model/platonic_solids/dode/dode_face_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_leg_reduce.py rename to ionerdss/model/platonic_solids/dode/dode_face_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_leg_reduce_coor_gen.py b/ionerdss/model/platonic_solids/dode/dode_face_leg_reduce_coor_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_leg_reduce_coor_gen.py rename to ionerdss/model/platonic_solids/dode/dode_face_leg_reduce_coor_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_face_write.py b/ionerdss/model/platonic_solids/dode/dode_face_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_face_write.py rename to ionerdss/model/platonic_solids/dode/dode_face_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert.py b/ionerdss/model/platonic_solids/dode/dode_vert.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert.py rename to ionerdss/model/platonic_solids/dode/dode_vert.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_COM_leg.py b/ionerdss/model/platonic_solids/dode/dode_vert_COM_leg.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_COM_leg.py rename to ionerdss/model/platonic_solids/dode/dode_vert_COM_leg.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_COM_leg_gen.py b/ionerdss/model/platonic_solids/dode/dode_vert_COM_leg_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_COM_leg_gen.py rename to ionerdss/model/platonic_solids/dode/dode_vert_COM_leg_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_coord.py b/ionerdss/model/platonic_solids/dode/dode_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_coord.py rename to ionerdss/model/platonic_solids/dode/dode_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_input_coord.py b/ionerdss/model/platonic_solids/dode/dode_vert_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_input_coord.py rename to ionerdss/model/platonic_solids/dode/dode_vert_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_leg_reduce.py b/ionerdss/model/platonic_solids/dode/dode_vert_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_leg_reduce.py rename to ionerdss/model/platonic_solids/dode/dode_vert_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_leg_reduce_coor_gen.py b/ionerdss/model/platonic_solids/dode/dode_vert_leg_reduce_coor_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_leg_reduce_coor_gen.py rename to ionerdss/model/platonic_solids/dode/dode_vert_leg_reduce_coor_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_norm_input.py b/ionerdss/model/platonic_solids/dode/dode_vert_norm_input.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_norm_input.py rename to ionerdss/model/platonic_solids/dode/dode_vert_norm_input.py diff --git a/ionerdss/nerdss_model/platonic_solids/dode/dode_vert_write.py b/ionerdss/model/platonic_solids/dode/dode_vert_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/dode/dode_vert_write.py rename to ionerdss/model/platonic_solids/dode/dode_vert_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/COM_leg_coord.py b/ionerdss/model/platonic_solids/gen_platonic/COM_leg_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/COM_leg_coord.py rename to ionerdss/model/platonic_solids/gen_platonic/COM_leg_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/COM_leg_list_gen.py b/ionerdss/model/platonic_solids/gen_platonic/COM_leg_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/COM_leg_list_gen.py rename to ionerdss/model/platonic_solids/gen_platonic/COM_leg_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/__init__.py b/ionerdss/model/platonic_solids/gen_platonic/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/__init__.py rename to ionerdss/model/platonic_solids/gen_platonic/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/angle_cal.py b/ionerdss/model/platonic_solids/gen_platonic/angle_cal.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/angle_cal.py rename to ionerdss/model/platonic_solids/gen_platonic/angle_cal.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/distance.py b/ionerdss/model/platonic_solids/gen_platonic/distance.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/distance.py rename to ionerdss/model/platonic_solids/gen_platonic/distance.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/face_COM_coord.py b/ionerdss/model/platonic_solids/gen_platonic/face_COM_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/face_COM_coord.py rename to ionerdss/model/platonic_solids/gen_platonic/face_COM_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/mid_pt.py b/ionerdss/model/platonic_solids/gen_platonic/mid_pt.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/mid_pt.py rename to ionerdss/model/platonic_solids/gen_platonic/mid_pt.py diff --git a/ionerdss/nerdss_model/platonic_solids/gen_platonic/vert_coord.py b/ionerdss/model/platonic_solids/gen_platonic/vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/gen_platonic/vert_coord.py rename to ionerdss/model/platonic_solids/gen_platonic/vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/__init__.py b/ionerdss/model/platonic_solids/icos/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/__init__.py rename to ionerdss/model/platonic_solids/icos/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face.py b/ionerdss/model/platonic_solids/icos/icos_face.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face.py rename to ionerdss/model/platonic_solids/icos/icos_face.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_COM_coord.py b/ionerdss/model/platonic_solids/icos/icos_face_COM_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_COM_coord.py rename to ionerdss/model/platonic_solids/icos/icos_face_COM_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_COM_leg_coord.py b/ionerdss/model/platonic_solids/icos/icos_face_COM_leg_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_COM_leg_coord.py rename to ionerdss/model/platonic_solids/icos/icos_face_COM_leg_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_COM_list_gen.py b/ionerdss/model/platonic_solids/icos/icos_face_COM_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_COM_list_gen.py rename to ionerdss/model/platonic_solids/icos/icos_face_COM_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_input_coord.py b/ionerdss/model/platonic_solids/icos/icos_face_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_input_coord.py rename to ionerdss/model/platonic_solids/icos/icos_face_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_leg_reduce.py b/ionerdss/model/platonic_solids/icos/icos_face_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_leg_reduce.py rename to ionerdss/model/platonic_solids/icos/icos_face_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_leg_reduce_coord_gen.py b/ionerdss/model/platonic_solids/icos/icos_face_leg_reduce_coord_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_leg_reduce_coord_gen.py rename to ionerdss/model/platonic_solids/icos/icos_face_leg_reduce_coord_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_vert_coord.py b/ionerdss/model/platonic_solids/icos/icos_face_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_vert_coord.py rename to ionerdss/model/platonic_solids/icos/icos_face_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_face_write.py b/ionerdss/model/platonic_solids/icos/icos_face_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_face_write.py rename to ionerdss/model/platonic_solids/icos/icos_face_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert.py b/ionerdss/model/platonic_solids/icos/icos_vert.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert.py rename to ionerdss/model/platonic_solids/icos/icos_vert.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_COM_leg.py b/ionerdss/model/platonic_solids/icos/icos_vert_COM_leg.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_COM_leg.py rename to ionerdss/model/platonic_solids/icos/icos_vert_COM_leg.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_COM_leg_gen.py b/ionerdss/model/platonic_solids/icos/icos_vert_COM_leg_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_COM_leg_gen.py rename to ionerdss/model/platonic_solids/icos/icos_vert_COM_leg_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_center_coor.py b/ionerdss/model/platonic_solids/icos/icos_vert_center_coor.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_center_coor.py rename to ionerdss/model/platonic_solids/icos/icos_vert_center_coor.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_check_dis.py b/ionerdss/model/platonic_solids/icos/icos_vert_check_dis.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_check_dis.py rename to ionerdss/model/platonic_solids/icos/icos_vert_check_dis.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_coord.py b/ionerdss/model/platonic_solids/icos/icos_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_coord.py rename to ionerdss/model/platonic_solids/icos/icos_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_input_coord.py b/ionerdss/model/platonic_solids/icos/icos_vert_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_input_coord.py rename to ionerdss/model/platonic_solids/icos/icos_vert_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_leg_reduce.py b/ionerdss/model/platonic_solids/icos/icos_vert_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_leg_reduce.py rename to ionerdss/model/platonic_solids/icos/icos_vert_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_leg_reduce_coor_gen.py b/ionerdss/model/platonic_solids/icos/icos_vert_leg_reduce_coor_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_leg_reduce_coor_gen.py rename to ionerdss/model/platonic_solids/icos/icos_vert_leg_reduce_coor_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_norm_input.py b/ionerdss/model/platonic_solids/icos/icos_vert_norm_input.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_norm_input.py rename to ionerdss/model/platonic_solids/icos/icos_vert_norm_input.py diff --git a/ionerdss/nerdss_model/platonic_solids/icos/icos_vert_write.py b/ionerdss/model/platonic_solids/icos/icos_vert_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/icos/icos_vert_write.py rename to ionerdss/model/platonic_solids/icos/icos_vert_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/__init__.py b/ionerdss/model/platonic_solids/octa/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/__init__.py rename to ionerdss/model/platonic_solids/octa/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face.py b/ionerdss/model/platonic_solids/octa/octa_face.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face.py rename to ionerdss/model/platonic_solids/octa/octa_face.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_coord.py b/ionerdss/model/platonic_solids/octa/octa_face_COM_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_coord.py rename to ionerdss/model/platonic_solids/octa/octa_face_COM_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_leg_coord.py b/ionerdss/model/platonic_solids/octa/octa_face_COM_leg_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_leg_coord.py rename to ionerdss/model/platonic_solids/octa/octa_face_COM_leg_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_leg_list_gen.py b/ionerdss/model/platonic_solids/octa/octa_face_COM_leg_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_leg_list_gen.py rename to ionerdss/model/platonic_solids/octa/octa_face_COM_leg_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_list_gen.py b/ionerdss/model/platonic_solids/octa/octa_face_COM_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_COM_list_gen.py rename to ionerdss/model/platonic_solids/octa/octa_face_COM_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_input_coord.py b/ionerdss/model/platonic_solids/octa/octa_face_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_input_coord.py rename to ionerdss/model/platonic_solids/octa/octa_face_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_leg_reduce.py b/ionerdss/model/platonic_solids/octa/octa_face_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_leg_reduce.py rename to ionerdss/model/platonic_solids/octa/octa_face_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_leg_reduce_coord_gen.py b/ionerdss/model/platonic_solids/octa/octa_face_leg_reduce_coord_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_leg_reduce_coord_gen.py rename to ionerdss/model/platonic_solids/octa/octa_face_leg_reduce_coord_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_vert_coord.py b/ionerdss/model/platonic_solids/octa/octa_face_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_vert_coord.py rename to ionerdss/model/platonic_solids/octa/octa_face_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_face_write.py b/ionerdss/model/platonic_solids/octa/octa_face_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_face_write.py rename to ionerdss/model/platonic_solids/octa/octa_face_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert.py b/ionerdss/model/platonic_solids/octa/octa_vert.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert.py rename to ionerdss/model/platonic_solids/octa/octa_vert.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_COM_leg.py b/ionerdss/model/platonic_solids/octa/octa_vert_COM_leg.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_COM_leg.py rename to ionerdss/model/platonic_solids/octa/octa_vert_COM_leg.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_COM_leg_gen.py b/ionerdss/model/platonic_solids/octa/octa_vert_COM_leg_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_COM_leg_gen.py rename to ionerdss/model/platonic_solids/octa/octa_vert_COM_leg_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_coord.py b/ionerdss/model/platonic_solids/octa/octa_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_coord.py rename to ionerdss/model/platonic_solids/octa/octa_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_input_coord.py b/ionerdss/model/platonic_solids/octa/octa_vert_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_input_coord.py rename to ionerdss/model/platonic_solids/octa/octa_vert_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_leg_reduce.py b/ionerdss/model/platonic_solids/octa/octa_vert_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_leg_reduce.py rename to ionerdss/model/platonic_solids/octa/octa_vert_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_leg_reduce_coor_gen.py b/ionerdss/model/platonic_solids/octa/octa_vert_leg_reduce_coor_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_leg_reduce_coor_gen.py rename to ionerdss/model/platonic_solids/octa/octa_vert_leg_reduce_coor_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/octa/octa_vert_write.py b/ionerdss/model/platonic_solids/octa/octa_vert_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/octa/octa_vert_write.py rename to ionerdss/model/platonic_solids/octa/octa_vert_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/__init__.py b/ionerdss/model/platonic_solids/tetr/__init__.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/__init__.py rename to ionerdss/model/platonic_solids/tetr/__init__.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face.py b/ionerdss/model/platonic_solids/tetr/tetr_face.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face.py rename to ionerdss/model/platonic_solids/tetr/tetr_face.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_coord.py b/ionerdss/model/platonic_solids/tetr/tetr_face_COM_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_coord.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_COM_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_leg_coord.py b/ionerdss/model/platonic_solids/tetr/tetr_face_COM_leg_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_leg_coord.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_COM_leg_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_leg_list_gen.py b/ionerdss/model/platonic_solids/tetr/tetr_face_COM_leg_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_leg_list_gen.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_COM_leg_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_list_gen.py b/ionerdss/model/platonic_solids/tetr/tetr_face_COM_list_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_COM_list_gen.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_COM_list_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_coord.py b/ionerdss/model/platonic_solids/tetr/tetr_face_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_coord.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_input_coord.py b/ionerdss/model/platonic_solids/tetr/tetr_face_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_input_coord.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_leg_reduce.py b/ionerdss/model/platonic_solids/tetr/tetr_face_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_leg_reduce.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_leg_reduce_coord_gen.py b/ionerdss/model/platonic_solids/tetr/tetr_face_leg_reduce_coord_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_leg_reduce_coord_gen.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_leg_reduce_coord_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_write.py b/ionerdss/model/platonic_solids/tetr/tetr_face_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_face_write.py rename to ionerdss/model/platonic_solids/tetr/tetr_face_write.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert.py b/ionerdss/model/platonic_solids/tetr/tetr_vert.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_COM_leg.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_COM_leg.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_COM_leg.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_COM_leg.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_COM_leg_gen.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_COM_leg_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_COM_leg_gen.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_COM_leg_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_coord.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_coord.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_input_coord.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_input_coord.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_input_coord.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_input_coord.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_leg_reduce.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_leg_reduce.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_leg_reduce.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_leg_reduce.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_leg_reduce_coor_gen.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_leg_reduce_coor_gen.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_leg_reduce_coor_gen.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_leg_reduce_coor_gen.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_norm_input.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_norm_input.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_norm_input.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_norm_input.py diff --git a/ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_write.py b/ionerdss/model/platonic_solids/tetr/tetr_vert_write.py similarity index 100% rename from ionerdss/nerdss_model/platonic_solids/tetr/tetr_vert_write.py rename to ionerdss/model/platonic_solids/tetr/tetr_vert_write.py diff --git a/ionerdss/nerdss_model/mini_virus/A.mol b/ionerdss/model/spherical_assembly/A.mol similarity index 100% rename from ionerdss/nerdss_model/mini_virus/A.mol rename to ionerdss/model/spherical_assembly/A.mol diff --git a/ionerdss/model/spherical_assembly/__init__.py b/ionerdss/model/spherical_assembly/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ionerdss/model/spherical_assembly/core.py b/ionerdss/model/spherical_assembly/core.py new file mode 100644 index 00000000..02548285 --- /dev/null +++ b/ionerdss/model/spherical_assembly/core.py @@ -0,0 +1,96 @@ +""" +capsid_sphere_pipeline.py + +Modularized driver for spherical reconstruction pipeline. +Generalized from HIV Gag to support arbitrary structure mapped to sphere. + +TODO: +(1) Check for distance between center of masses and regularize +(2) Check if the subunits are rotationally aligned and rotate them to the correct position if not +(3) Figure out curvature from center of mass and calculate the radius of fitted sphere + - RMSD based gradient descent fitting? + +""" +import os +import numpy as np +import pandas as pd +from .geometry import calculate_gradient, calculate_rmsd + + +def run_spherical_reconstruction_pipeline(pdb_file, save_dir, options=None): + """ + Reconstructs and outputs a spherical structure by projecting subunits onto a defined sphere. + + Parameters + ---------- + pdb_file : str + Path to the input file containing center and interface positions per subunit. + save_dir : str + Directory to save output files. + options : dict or None + Optional parameters: + - 'num_units': int, number of repeating units (default=18) + - 'points_per_unit': int, number of points per unit (default=6) + - 'radius': float, target radius for projection (nm) + - 'fit_sphere': bool, whether to compute best-fit sphere (default=True) + """ + # Parse input options + options = options or {} + num_units = options.get("num_units", 18) + points_per_unit = options.get("points_per_unit", 6) + radius = options.get("radius", 25.0) + fit_sphere = options.get("fit_sphere", True) + + # Step 1: Load and normalize positions + df = pd.read_csv(pdb_file, header=None, sep=r'\s+') + df.columns = ['x', 'y', 'z'] + df = df / 10.0 # Convert from Å to nm + positions_vec = df.to_numpy() + + # Step 2: Determine or fit sphere + center_vec = np.array([positions_vec[points_per_unit * i] for i in range(num_units)]) + + if fit_sphere: + xyz_r = [0, 0, 0, 70] + force = calculate_gradient(center_vec, xyz_r) + rmsd_old = calculate_rmsd(center_vec, xyz_r) + while np.linalg.norm(force) > 0.01: + step = 1.0 + while True: + trial = np.array(xyz_r) - step * force + rmsd_new = calculate_rmsd(center_vec, trial) + if rmsd_new < rmsd_old: + break + step *= 0.8 + xyz_r = trial + rmsd_old = rmsd_new + force = calculate_gradient(center_vec, xyz_r) + x0, y0, z0, r0 = xyz_r + print("Fitted sphere center and radius:", xyz_r) + else: + x0, y0, z0 = options.get("center", [0.0, 0.0, 0.0]) + r0 = radius + + # Step 3: Normalize positions to origin + surface + shift_vec = np.array([x0, y0, z0]) + positions_vec -= shift_vec + center_vec -= shift_vec + for i in range(num_units): + shift = (center_vec[i] / np.linalg.norm(center_vec[i]) * r0) - center_vec[i] + center_vec[i] += shift + for j in range(points_per_unit): + positions_vec[points_per_unit * i + j] += shift + + # Step 4: Output the constructed positions + os.makedirs(save_dir, exist_ok=True) + coord_out = os.path.join(save_dir, f"coordR{int(radius)}.txt") + with open(coord_out, 'w', encoding="utf-8") as f: + for i in range(num_units): + unit = positions_vec[points_per_unit * i : points_per_unit * (i + 1)] + f.write(f"UNIT{i:02d}\n") + for xyz in unit: + f.write(f"{xyz[0]:.8f} {xyz[1]:.8f} {xyz[2]:.8f}\n") + + print("Spherical reconstruction coordinates written to:", coord_out) + + return diff --git a/ionerdss/nerdss_model/mini_virus/gagpositions.txt b/ionerdss/model/spherical_assembly/gagpositions.txt similarity index 100% rename from ionerdss/nerdss_model/mini_virus/gagpositions.txt rename to ionerdss/model/spherical_assembly/gagpositions.txt diff --git a/ionerdss/nerdss_model/mini_virus/gagpositions.xyz b/ionerdss/model/spherical_assembly/gagpositions.xyz similarity index 100% rename from ionerdss/nerdss_model/mini_virus/gagpositions.xyz rename to ionerdss/model/spherical_assembly/gagpositions.xyz diff --git a/ionerdss/model/spherical_assembly/geometry.py b/ionerdss/model/spherical_assembly/geometry.py new file mode 100644 index 00000000..3e7fc538 --- /dev/null +++ b/ionerdss/model/spherical_assembly/geometry.py @@ -0,0 +1,153 @@ +""" +geometry.py + +Geometric utilities for spherical capsid construction and analysis of HIV Gag subunits. +Includes fitting routines, spherical coordinate transforms, and angular measurements. +""" + +import numpy as np + +def calculateAngles(c1, c2, p1, p2, n1=None, n2=None): + """ + Compute orientation angles between two molecules and their interaction sites. + + Parameters + ---------- + c1, c2 : np.ndarray + Centers of mass of molecules 1 and 2. + p1, p2 : np.ndarray + Interaction site positions on molecules 1 and 2. + n1, n2 : np.ndarray or None + Optional normal vectors (defaults to [0, 0, 1]). + + Returns + ------- + tuple of float + (theta1, theta2, phi1, phi2, omega) in radians. + """ + if n1 is None: n1 = np.array([0, 0, 1]) + if n2 is None: n2 = np.array([0, 0, 1]) + + v1 = p1 - c1 + v2 = p2 - c2 + sigma = p1 - p2 + + theta1 = np.arccos(np.dot(v1, sigma) / (np.linalg.norm(v1) * np.linalg.norm(sigma))) + theta2 = np.arccos(np.dot(v2, -sigma) / (np.linalg.norm(v2) * np.linalg.norm(sigma))) + + # phi1 + t1 = np.cross(v1, sigma) + t2 = np.cross(v1, n1) + phi1 = np.arccos(np.dot(t1/np.linalg.norm(t1), t2/np.linalg.norm(t2))) + if np.dot(np.cross(v1, t1), t2) > 0: + phi1 = -phi1 + + # phi2 + t1 = np.cross(v2, -sigma) + t2 = np.cross(v2, n2) + phi2 = np.arccos(np.dot(t1/np.linalg.norm(t1), t2/np.linalg.norm(t2))) + if np.dot(np.cross(v2, t1), t2) > 0: + phi2 = -phi2 + + # omega + if not np.isclose(np.linalg.norm(np.cross(v1, sigma)), 0) and not np.isclose(np.linalg.norm(np.cross(v2, -sigma)), 0): + t1 = np.cross(sigma, v1) + t2 = np.cross(sigma, v2) + else: + t1 = np.cross(sigma, n1) + t2 = np.cross(sigma, n2) + + omega = np.arccos(np.dot(t1, t2) / (np.linalg.norm(t1) * np.linalg.norm(t2))) + if np.dot(np.cross(sigma, t1), t2) > 0: + omega = -omega + + return theta1, theta2, phi1, phi2, omega + +def calculate_rmsd(centers, xyzR): + """RMSD from sphere surface.""" + x0, y0, z0, r0 = xyzR + diffs = np.linalg.norm(centers - np.array([x0, y0, z0]), axis=1) - r0 + return np.sum(diffs ** 2) + +def calculate_gradient(centers, xyzR): + """Gradient of RMSD sphere fitting objective.""" + x0, y0, z0, r0 = xyzR + grad = np.zeros(4) + for xi, yi, zi in centers: + ri = np.linalg.norm([xi - x0, yi - y0, zi - z0]) + if ri == 0: continue + diff = ri - r0 + grad[0] += (-2.0/ri) * diff * (xi - x0) + grad[1] += (-2.0/ri) * diff * (yi - y0) + grad[2] += (-2.0/ri) * diff * (zi - z0) + grad[3] += -2.0 * diff + return grad + +def determine_gagTemplate_structure(numGag, positionsVec): + """Compute template subunit internal frame and average internal coordinates.""" + coeffs = np.zeros((5, 3, numGag)) + basis = np.zeros((3, 3, numGag)) + + for i in range(numGag): + center = positionsVec[6*i] + interfaces = positionsVec[6*i+1:6*i+6] + vec1 = center / np.linalg.norm(center) + vec2 = interfaces[0] - center + vec3 = np.cross(vec1, vec2) + vec3 /= np.linalg.norm(vec3) + vec2 = np.cross(vec3, vec1) + vec2 /= np.linalg.norm(vec2) + + basis[0,:,i] = vec1 + basis[1,:,i] = vec2 + basis[2,:,i] = vec3 + + A = np.stack([vec1, vec2, vec3]) + for j in range(5): + rel = interfaces[j] - center + coeffs[j,:,i] = np.dot(rel, np.linalg.inv(A)) + + mean_coeffs = np.mean(coeffs, axis=2) + chosen_idx = 0 + gag_center = positionsVec[6*chosen_idx] + b1, b2, b3 = basis[:, :, chosen_idx] + + template = np.zeros((6, 3)) + template[0] = gag_center + for i in range(5): + template[i+1] = (mean_coeffs[i,0]*b1 + mean_coeffs[i,1]*b2 + mean_coeffs[i,2]*b3 + gag_center) + return template + +def xyz_to_sphere_coordinates(pos): + """Convert Cartesian coords to spherical (theta, phi, r).""" + x, y, z = pos + r = np.linalg.norm(pos) + theta = np.arccos(z / r) + phi = np.arccos(x / (r * np.sin(theta))) + if y < 0: + phi = 2*np.pi - phi + return [theta, phi, r] + +def translate_gags_on_sphere(hexmer, from_center, to_center): + """Reproject a hexamer from one spherical location to another.""" + vec1 = from_center / np.linalg.norm(from_center) + vec2 = to_center - from_center + vec3 = np.cross(vec1, vec2) + vec3 /= np.linalg.norm(vec3) + vec2 = np.cross(vec3, vec1) + vec2 /= np.linalg.norm(vec2) + + coeffs = np.array([np.dot(hexmer[i] - from_center, np.linalg.inv(np.stack([vec1, vec2, vec3]))) + if np.linalg.norm(hexmer[i] - from_center) > 1e-10 else [0, 0, 0] + for i in range(hexmer.shape[0])]) + + vec1 = to_center / np.linalg.norm(to_center) + vec2 = to_center - from_center + vec3 = np.cross(vec1, vec2) + vec3 /= np.linalg.norm(vec3) + vec2 = np.cross(vec3, vec1) + vec2 /= np.linalg.norm(vec2) + + newhexmer = np.array([coeffs[i,0]*vec1 + coeffs[i,1]*vec2 + coeffs[i,2]*vec3 + to_center + for i in range(hexmer.shape[0])]) + return newhexmer diff --git a/ionerdss/nerdss_model/mini_virus/PDB.py b/ionerdss/model/spherical_assembly/legacy/_pdb.py similarity index 84% rename from ionerdss/nerdss_model/mini_virus/PDB.py rename to ionerdss/model/spherical_assembly/legacy/_pdb.py index 64f75237..e3497f53 100644 --- a/ionerdss/nerdss_model/mini_virus/PDB.py +++ b/ionerdss/model/spherical_assembly/legacy/_pdb.py @@ -9,10 +9,75 @@ import math import sys import copy -from typing import List, Any import numpy as np -from chain_int import chain_int -from angles import angles +from ionerdss.math.bond_geometry import compute_bond_angles_and_length, compute_bond_angles_and_length_auto + +# This function will go over every atom between two chains to determine whether they are interacting (distance smaller +# than 3.5A) +# remember to import math package when use the function +# Input variables: +# return variables: a tuple includes + + +def chain_int(unique_chain, split_position, split_resi_count, split_atom_count, split_resi_type, split_atom_type, split_resi_position): + import math + distance = 0 + reaction_chain = [] # list of lists (each sublist will include two letters indicating these two chains have + # interaction) eg: in this protein, only chain A&B, A&D and C&D are interacting, then the list will look like + # [[A,B],[A,D],[C,D]] + reaction_resi_type = [] # list of lists of lists(each sub-sublist will include a bunch of lists of residue pairs + # (without repeats)) eg: [[[resia,resib],[resic,resid]],[[resie,resif],[resig,resih]],[[resii,resij],[resik,resil]]] + # ----reaction residues of chain-------- A&B------------------------A&D-------------------------C&D ------------- + reaction_resi_count = [] + reaction_atom = [] + reaction_atom_position = [] + reaction_atom_distance = [] + reaction_atom_type = [] + reaction_resi_position = [] + + for i in range(len(unique_chain) - 1): + for j in range(i+1, len(unique_chain)): + inner_atom_position = [] + inner_atom_distance = [] + inner_atom = [] + inner_reaction_resi_count = [] + inner_reaction_resi_type = [] + inner_reaction_atom_type = [] + inner_reaction_resi_position = [] + + for m in range(len(split_position[i])): + for n in range(len(split_position[j])): + distance = math.sqrt((split_position[i][m][0]-split_position[j][n][0])**2 + + (split_position[i][m][1]-split_position[j][n][1])**2 + + (split_position[i][m][2]-split_position[j][n][2])**2) + if distance <= 0.85: + inner_atom.append([split_atom_count[i][m], split_atom_count[j][n]]) + inner_atom_distance.append(distance) + inner_atom_position.append([split_position[i][m], split_position[j][n]]) + inner_reaction_atom_type.append([split_atom_type[i][m], split_atom_type[j][n]]) + if [split_resi_count[i][m], split_resi_count[j][n]] not in inner_reaction_resi_count: + inner_reaction_resi_count.append([split_resi_count[i][m], split_resi_count[j][n]]) + inner_reaction_resi_position.append([split_resi_position[i][m], split_resi_position[j][n]]) + inner_reaction_resi_type.append([split_resi_type[i][m], split_resi_type[j][n]]) + + if len(inner_reaction_resi_count) > 0: + reaction_chain.append([unique_chain[i], unique_chain[j]]) + reaction_resi_count.append(inner_reaction_resi_count) + reaction_resi_type.append(inner_reaction_resi_type) + reaction_atom.append(inner_atom) + reaction_atom_position.append(inner_atom_position) + reaction_atom_distance.append(inner_atom_distance) + reaction_atom_type.append(inner_reaction_atom_type) + reaction_resi_position.append(inner_reaction_resi_position) + return reaction_chain, reaction_atom, reaction_atom_position, reaction_atom_distance, reaction_resi_count, \ + reaction_resi_type, reaction_atom_type, reaction_resi_position + + + + + + + # naming explanation: @@ -324,7 +389,7 @@ def mag(x): chain2 = j if reaction_chain[i][0] == unique_chain[chain1] and reaction_chain[i][1] == unique_chain[chain2]: break - inner_angle = angles(COM[chain1], COM[chain2], new_int_site[i][0], new_int_site[i][1]) + inner_angle = compute_bond_angles_and_length_auto(COM[chain1], COM[chain2], new_int_site[i][0], new_int_site[i][1]) angle.append(inner_angle) print("Angles for chain " + str(unique_chain[chain1]) + " & " + str(unique_chain[chain2])) print("Theta1: %.3f, Theta2: %.3f, Phi1: %.3f, Phi2: %.3f, Omega: %.3f" % (inner_angle[0], inner_angle[1], inner_angle[2], inner_angle[3], inner_angle[4])) diff --git a/ionerdss/model/spherical_assembly/legacy/chain_int.py b/ionerdss/model/spherical_assembly/legacy/chain_int.py new file mode 100644 index 00000000..e69de29b diff --git a/ionerdss/nerdss_model/mini_virus/gagReshape.py b/ionerdss/model/spherical_assembly/legacy/gagReshape.py similarity index 99% rename from ionerdss/nerdss_model/mini_virus/gagReshape.py rename to ionerdss/model/spherical_assembly/legacy/gagReshape.py index 41404351..916f9d79 100644 --- a/ionerdss/nerdss_model/mini_virus/gagReshape.py +++ b/ionerdss/model/spherical_assembly/legacy/gagReshape.py @@ -1,3 +1,6 @@ +# Yiben's code +# Hard coded for HIV Gag lattice + # %% import numpy as np # matrix, array, math calculation diff --git a/ionerdss/nerdss_model/mini_virus/output_test.py b/ionerdss/model/spherical_assembly/output_test.py similarity index 100% rename from ionerdss/nerdss_model/mini_virus/output_test.py rename to ionerdss/model/spherical_assembly/output_test.py diff --git a/ionerdss/nerdss_model/mini_virus/parms.inp b/ionerdss/model/spherical_assembly/parms.inp similarity index 100% rename from ionerdss/nerdss_model/mini_virus/parms.inp rename to ionerdss/model/spherical_assembly/parms.inp diff --git a/ionerdss/nerdss_model/coords.py b/ionerdss/nerdss_model/coords.py deleted file mode 100644 index 2740a1ee..00000000 --- a/ionerdss/nerdss_model/coords.py +++ /dev/null @@ -1,62 +0,0 @@ -class Coords: - """ - Holds the x, y, z coordinates of a 3D point. Includes basic vector arithmetic - and distance calculation. - - Attributes: - x (float): The x-coordinate. - y (float): The y-coordinate. - z (float): The z-coordinate. - """ - def __init__(self, x: float, y: float, z: float): - """ - Initializes a Coords instance. - - Args: - x (float): x-coordinate. - y (float): y-coordinate. - z (float): z-coordinate. - """ - self.x = x - self.y = y - self.z = z - - def __str__(self): - return f"({self.x}, {self.y}, {self.z})" - - def distance(self, other) -> float: - """ - Calculates the Euclidean distance between two points. - - Args: - other (Coords): The other point to calculate the distance to. - - Returns: - float: The Euclidean distance between the two points. - """ - return ((self.x - other.x)**2 + (self.y - other.y)**2 + (self.z - other.z)**2)**0.5 - - def __sub__(self, other): - """ - Implements subtraction for Coords objects. - - Args: - other (Coords): The other coordinate to subtract. - - Returns: - Coords: The resulting coordinate. - """ - return Coords(self.x - other.x, self.y - other.y, self.z - other.z) - - def __add__(self, other): - """ - Implements addition for Coords objects. - - Args: - other (Coords): The other coordinate to add. - - Returns: - Coords: The resulting coordinate. - """ - return Coords(self.x + other.x, self.y + other.y, self.z + other.z) - \ No newline at end of file diff --git a/ionerdss/nerdss_model/mini_virus/angles.py b/ionerdss/nerdss_model/mini_virus/angles.py deleted file mode 100644 index 23e2f0ee..00000000 --- a/ionerdss/nerdss_model/mini_virus/angles.py +++ /dev/null @@ -1,86 +0,0 @@ -# This function will calculate five necessary angles: theta_one, theta_two, phi_one, phi_two and omega -# Input variables: four coordinates indicating COM and interaction site of two chains - -def angles(COM1, COM2, int_site1, int_site2,normal_point1,normal_point2): - import math - import numpy as np - - def mag(x): - return math.sqrt(sum(i ** 2 for i in x)) - - def unit(x): - x_unit = [x[0]/mag(x), x[1]/mag(x), x[2]/mag(x)] - return x_unit - - # calculate theta - v1 = [int_site1[0] - COM1[0], int_site1[1] - COM1[1], int_site1[2] - COM1[2]] - v2 = [int_site2[0] - COM2[0], int_site2[1] - COM2[1], int_site2[2] - COM2[2]] - sigma1 = [int_site1[0] - int_site2[0], int_site1[1] - int_site2[1], int_site1[2] - int_site2[2]] - sigma2 = [int_site2[0] - int_site1[0], int_site2[1] - int_site1[1], int_site2[2] - int_site1[2]] - sigma_magnitude = math.sqrt(sigma1[0] ** 2 + sigma1[1] ** 2 + sigma1[2] ** 2) - theta1 = math.acos(np.dot(v1, sigma1) / mag(v1) / mag(sigma1)) - theta2 = math.acos(np.dot(v2, sigma2) / mag(v2) / mag(sigma2)) - - # calculate phi - #n1 = [0,0,1] - #n2 = [0,0,1] - #if np.cross(v1, n1)[0] + np.cross(v1, n1)[1] + np.cross(v1, n1)[2] == 0: - # n1 = [0,1,0] - #if np.cross(v2, n2)[0] + np.cross(v2, n2)[1] + np.cross(v2, n2)[2] == 0: - # n2 = [0,1,0] - #normal_point1 = [COM1[0] + n1[0], COM1[1] + n1[1], COM1[2] + n1[2]] - #normal_point2 = [COM2[0] + n2[0], COM2[1] + n2[1], COM2[2] + n2[2]] - n1 = unit([normal_point1[0] - COM1[0], normal_point1[1] - COM1[1], normal_point1[2] - COM1[2]]) - n2 = unit([normal_point2[0] - COM2[0], normal_point2[1] - COM2[1], normal_point2[2] - COM2[2]]) - t1_1 = unit(np.cross(v1, sigma1)) - t2_1 = unit(np.cross(v1, n1)) - t1_2 = unit(np.cross(v2, sigma2)) - t2_2 = unit(np.cross(v2, n2)) - phi1 = math.acos(np.dot(t1_1, t2_1)) - phi2 = math.acos(np.dot(t1_2, t2_2)) - - # determine the sign of phi (+/-) - v1_uni = unit(v1) - v2_uni = unit(v2) - n1_proj = [n1[0] - v1_uni[0] * np.dot(v1_uni,n1), n1[1] - v1_uni[1] * np.dot(v1_uni,n1), n1[2] - v1_uni[2] * np.dot(v1_uni,n1)] - sigma1_proj = [sigma1[0] - v1_uni[0] * np.dot(v1_uni,sigma1), sigma1[1] - v1_uni[1] * np.dot(v1_uni,sigma1), sigma1[2] - v1_uni[2] * np.dot(v1_uni,sigma1)] - # phi1_test = math.acos(np.dot(n1_proj,sigma1_proj)/mag(n1_proj)/mag(sigma1_proj)) - n2_proj = [n2[0] - v2_uni[0] * np.dot(v2_uni, n2), n2[1] - v2_uni[1] * np.dot(v2_uni, n2),n2[2] - v2_uni[2] * np.dot(v2_uni, n2)] - sigma2_proj = [sigma2[0] - v2_uni[0] * np.dot(v2_uni, sigma2), sigma2[1] - v2_uni[1] * np.dot(v2_uni, sigma2), sigma2[2] - v2_uni[2] * np.dot(v2_uni, sigma2)] - # phi2_test = math.acos(np.dot(n2_proj,sigma2_proj)/mag(n2_proj)/mag(sigma2_proj)) - phi1_dir = unit(np.cross(sigma1_proj, n1_proj)) - phi2_dir = unit(np.cross(sigma2_proj, n2_proj)) - if abs(v1_uni[0] - phi1_dir[0]) < 10 ** -10: - phi1 = -phi1 - elif abs(v1_uni[0] + phi1_dir[0]) < 10 ** -10: - phi1 = phi1 - else: - print("Wrong phi1 angle.") - if abs(v2_uni[0] - phi2_dir[0]) < 10 ** -10: - phi2 = -phi2 - elif abs(v2_uni[0] + phi2_dir[0]) < 10 ** -10: - phi2 = phi2 - else: - print("Wrong phi2 angle.") - - # calculate omega - a1 = np.cross(sigma1, v1) / mag(np.cross(sigma1, v1)) - a2 = np.cross(sigma1, v2) / mag(np.cross(sigma1, v2)) - omega = math.acos(np.dot(a1, a2)) - - # determine the sign of omega (+/-) - sigma1_uni = unit(sigma1) - v1_proj = [v1[0] - sigma1_uni[0] * np.dot(sigma1_uni, v1), v1[1] - sigma1_uni[1] * np.dot(sigma1_uni, v1), - v1[2] - sigma1_uni[2] * np.dot(sigma1_uni, v1)] - v2_proj = [v2[0] - sigma1_uni[0] * np.dot(sigma1_uni, v2), v2[1] - sigma1_uni[1] * np.dot(sigma1_uni, v2), - v2[2] - sigma1_uni[2] * np.dot(sigma1_uni, v2)] - # omega_test = math.acos(np.dot(v1_proj, v2_proj) / mag(v2_proj) / mag(v1_proj)) - omega_dir = unit(np.cross(v1_proj, v2_proj)) - if abs(sigma1_uni[0] - omega_dir[0]) < 10 ** -10: - omega = -omega - elif abs(sigma1_uni[0] + omega_dir[0]) < 10 ** -10: - omega = omega - else: - print("Wrong omega angle.") - - return theta1, theta2, phi1, phi2, omega, sigma_magnitude, normal_point1, normal_point2 diff --git a/ionerdss/nerdss_model/mini_virus/chain_int.py b/ionerdss/nerdss_model/mini_virus/chain_int.py deleted file mode 100644 index a22a3630..00000000 --- a/ionerdss/nerdss_model/mini_virus/chain_int.py +++ /dev/null @@ -1,65 +0,0 @@ -# This function will go over every atom between two chains to determine whether they are interacting (distance smaller -# than 3.5A) -# remember to import math package when use the function -# Input variables: -# return variables: a tuple includes - - -def chain_int(unique_chain, split_position, split_resi_count, split_atom_count, split_resi_type, split_atom_type, split_resi_position): - import math - distance = 0 - reaction_chain = [] # list of lists (each sublist will include two letters indicating these two chains have - # interaction) eg: in this protein, only chain A&B, A&D and C&D are interacting, then the list will look like - # [[A,B],[A,D],[C,D]] - reaction_resi_type = [] # list of lists of lists(each sub-sublist will include a bunch of lists of residue pairs - # (without repeats)) eg: [[[resia,resib],[resic,resid]],[[resie,resif],[resig,resih]],[[resii,resij],[resik,resil]]] - # ----reaction residues of chain-------- A&B------------------------A&D-------------------------C&D ------------- - reaction_resi_count = [] - reaction_atom = [] - reaction_atom_position = [] - reaction_atom_distance = [] - reaction_atom_type = [] - reaction_resi_position = [] - - for i in range(len(unique_chain) - 1): - for j in range(i+1, len(unique_chain)): - inner_atom_position = [] - inner_atom_distance = [] - inner_atom = [] - inner_reaction_resi_count = [] - inner_reaction_resi_type = [] - inner_reaction_atom_type = [] - inner_reaction_resi_position = [] - - for m in range(len(split_position[i])): - for n in range(len(split_position[j])): - distance = math.sqrt((split_position[i][m][0]-split_position[j][n][0])**2 - + (split_position[i][m][1]-split_position[j][n][1])**2 - + (split_position[i][m][2]-split_position[j][n][2])**2) - if distance <= 0.85: - inner_atom.append([split_atom_count[i][m], split_atom_count[j][n]]) - inner_atom_distance.append(distance) - inner_atom_position.append([split_position[i][m], split_position[j][n]]) - inner_reaction_atom_type.append([split_atom_type[i][m], split_atom_type[j][n]]) - if [split_resi_count[i][m], split_resi_count[j][n]] not in inner_reaction_resi_count: - inner_reaction_resi_count.append([split_resi_count[i][m], split_resi_count[j][n]]) - inner_reaction_resi_position.append([split_resi_position[i][m], split_resi_position[j][n]]) - inner_reaction_resi_type.append([split_resi_type[i][m], split_resi_type[j][n]]) - - if len(inner_reaction_resi_count) > 0: - reaction_chain.append([unique_chain[i], unique_chain[j]]) - reaction_resi_count.append(inner_reaction_resi_count) - reaction_resi_type.append(inner_reaction_resi_type) - reaction_atom.append(inner_atom) - reaction_atom_position.append(inner_atom_position) - reaction_atom_distance.append(inner_atom_distance) - reaction_atom_type.append(inner_reaction_atom_type) - reaction_resi_position.append(inner_reaction_resi_position) - return reaction_chain, reaction_atom, reaction_atom_position, reaction_atom_distance, reaction_resi_count, \ - reaction_resi_type, reaction_atom_type, reaction_resi_position - - - - - - diff --git a/ionerdss/nerdss_model/model.py b/ionerdss/nerdss_model/model.py deleted file mode 100644 index 2d4a659f..00000000 --- a/ionerdss/nerdss_model/model.py +++ /dev/null @@ -1,147 +0,0 @@ -import os -import json -import numpy as np -from dataclasses import dataclass, field -from typing import List, Dict, Tuple -from .coords import Coords - -@dataclass -class MoleculeInterface: - """Represents an interface of a molecule type. - - Attributes: - name (str): Name of the interface. - coord (Tuple[float, float, float]): Coordinates of the interface. - """ - name: str - coord: Coords - -@dataclass -class MoleculeType: - """Represents a molecule type in the model. - - Attributes: - name (str): Name of the molecule type. - interfaces (List[MoleculeInterface]): List of interfaces associated with the molecule. - """ - name: str - interfaces: List[MoleculeInterface] - diffusion_translation: float = 0.0 - diffusion_rotation: float = 0.0 - -@dataclass -class ReactionType: - """Represents a reaction in the model. - - Attributes: - name (str): Reaction expression. - binding_radius (float): Binding radius of the reaction. - binding_angles (Tuple[float, float, float, float, float]): Binding angles. - norm1 (Tuple[float, float, float]): Normal vector 1. - norm2 (Tuple[float, float, float]): Normal vector 2. - """ - name: str - binding_radius: float - binding_angles: Tuple[float, float, float, float, float] - norm1: Tuple[float, float, float] - norm2: Tuple[float, float, float] - ka: float = 0.0 # Forward rate constant - kb: float = 0.0 # Reverse rate constant - -@dataclass -class Model: - """Parent class for all models to generate input files for NERDSS simulations. - - Attributes: - name (str): Name of the model. - molecule_types (List[MoleculeType]): List of molecule types in the model. - reactions (List[Reaction]): List of reactions in the model. - """ - name: str - molecule_types: List[MoleculeType] = field(default_factory=list) - reactions: List[ReactionType] = field(default_factory=list) - - def save_model(self, file_path: str) -> None: - """Saves the model to a specified JSON file. - - Args: - file_path (str): Path to the file where the model should be saved. - """ - data = { - "name": self.name, - "molecule_types": [ - { - "name": mol.name, - "interfaces": [ - {"name": iface.name, "coord": iface.coord} for iface in mol.interfaces - ], - "diffusion_translation": mol.diffusion_translation, - "diffusion_rotation": mol.diffusion_rotation, - } - for mol in self.molecule_types - ], - "reactions": [ - { - "name": rxn.name, - "binding_radius": rxn.binding_radius, - "binding_angles": rxn.binding_angles, - "norm1": rxn.norm1, - "norm2": rxn.norm2, - "ka": rxn.ka, - "kb": rxn.kb, - } - for rxn in self.reactions - ], - } - with open(file_path, "w") as file: - json.dump(data, file, indent=4, cls=CustomJSONEncoder) # Use custom encoder - - @classmethod - def load_model(cls, file_path: str) -> "Model": - """Loads a model from a specified JSON file. - - Args: - file_path (str): Path to the JSON file containing the model data. - - Returns: - Model: An instance of the Model class with the loaded data. - """ - with open(file_path, "r") as file: - data = json.load(file) - - molecule_types = [ - MoleculeType( - name=mol["name"], - interfaces=[MoleculeInterface(name=iface["name"], coord=Coords(**iface["coord"])) for iface in mol["interfaces"]], - diffusion_translation=mol["diffusion_translation"], - diffusion_rotation=mol["diffusion_rotation"], - ) - for mol in data["molecule_types"] - ] - - reactions = [ - ReactionType( - name=rxn["name"], - binding_radius=rxn["binding_radius"], - binding_angles=tuple(rxn["binding_angles"]), - norm1=tuple(rxn["norm1"]), - norm2=tuple(rxn["norm2"]), - ka=rxn["ka"], - kb=rxn["kb"], - ) - for rxn in data["reactions"] - ] - - return cls(name=data["name"], molecule_types=molecule_types, reactions=reactions) - -class CustomJSONEncoder(json.JSONEncoder): - """Custom JSON encoder to handle Coords serialization and NumPy types.""" - - def default(self, obj): - if isinstance(obj, Coords): - return {"x": obj.x, "y": obj.y, "z": obj.z} # Convert Coords to dict - elif isinstance(obj, np.float32): # Convert numpy float32 to standard float - return float(obj) - elif isinstance(obj, np.ndarray): # Convert numpy array to list - return obj.tolist() - return super().default(obj) diff --git a/ionerdss/nerdss_model/platonic_solids_model.py b/ionerdss/nerdss_model/platonic_solids_model.py deleted file mode 100644 index 7a7fe69f..00000000 --- a/ionerdss/nerdss_model/platonic_solids_model.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Platonic Solids Model module for generating NERDSS molecule types and reactions, and corresponding files for specified platonic solid type. - -This module defines the `PlantonicSolidsModel` class, inheriting from the `Model` class, which is used to generate NERDSS molecule types and reactions, and corresponding files for platonic solid. -""" - -from .model import Model - -class PlantonicSolidsModel(Model): - """"A class for generating NERDSS molecule types and reactions, and corresponding files for platonic solid. - - Attributes: - pdb_file (str): The path to the PDB structure file. - solid_type (str): The platonic solid type. - binding_site_position (str): The binding site position. - """ - - def __init__(self, path, solid_type, binding_site_position): - super().__init__(path) - self.solid_type = solid_type - self.binding_site_position = binding_site_position diff --git a/ionerdss/nerdss_simulation/simulation.py b/ionerdss/nerdss_simulation/simulation.py index 2b442adc..38cae97a 100644 --- a/ionerdss/nerdss_simulation/simulation.py +++ b/ionerdss/nerdss_simulation/simulation.py @@ -6,7 +6,7 @@ from typing import Dict, Any, List import time import glob -from ..nerdss_model.model import Model +from ..model.components import Model from ..util import strip_comment class Simulation: diff --git a/ionerdss/simularium_converter/simularium_converter.py b/ionerdss/simularium_converter/simularium_converter.py new file mode 100644 index 00000000..e36d4f38 --- /dev/null +++ b/ionerdss/simularium_converter/simularium_converter.py @@ -0,0 +1,243 @@ +# written by Hassan Sohail +import os +import glob +import re +import colorsys +import numpy as np + +from simulariumio.nerdss import NerdssConverter, NerdssData +from simulariumio import MetaData, DisplayData, DISPLAY_TYPE, CameraData, UnitData +from simulariumio.filters import TranslateFilter +from simulariumio.writers import BinaryWriter + +def parse_parms(filename): + """ + Read a parms.inp file (full path) and return (pdb_write, water_box_list, time_step). + """ + pdb_write = None + time_step = None + water_box = None + + with open(filename) as f: + section = None + for line in f: + line = line.strip() + if line == "start parameters": + section = "parameters" + continue + elif line == "end parameters": + section = None + elif line == "start boundaries": + section = "boundaries" + continue + elif line == "end boundaries": + section = None + + if section == "parameters": + if line.startswith("pdbWrite"): + pdb_write = int(line.split("=", 1)[1].strip()) + elif line.startswith("timeStep"): + time_step = float(line.split("=", 1)[1].strip()) + elif section == "boundaries" and line.startswith("WaterBox"): + nums = re.search(r"\[([^\]]+)\]", line).group(1) + water_box = [float(x) for x in nums.split(",")] + + return pdb_write, water_box, time_step + + +def parse_mol_file(fp): + """ + Read a single .mol file (full path fp). + Return (molecule_name, COM_array, {site_label: coord_array, ...}). + """ + lines = [l.strip() for l in open(fp) if l.strip()] + # Extract the "Name = ..." line + name = next(l.split("=", 1)[1].strip() for l in lines if l.startswith("Name")) + + coords = {} + started = False + for l in lines: + t = l.split() + if len(t) == 4: + try: + coords[t[0]] = np.array(list(map(float, t[1:]))) + started = True + except ValueError: + # skip lines that aren’t numeric + pass + elif started: + # once numeric block ends, stop + break + + com = coords.pop("COM") + return name, com, coords + + +def compute_avg_distance(com, sites): + """ + Given a COM array and a dict of {site: coord_array}, return the average + Euclidean distance from COM to each site. If no sites, return 0. + """ + if not sites: + return 0 + return np.mean([np.linalg.norm(coord - com) for coord in sites.values()]) + + +def generate_distinct_colors(n): + """ + Return a list of n distinct hex‐color strings by sampling HSV space. + """ + colors = [] + for i in range(n): + rgb = colorsys.hsv_to_rgb(i / n, 0.7, 0.9) + rgb_255 = [int(channel * 255) for channel in rgb] + colors.append("#{0:02X}{1:02X}{2:02X}".format(*rgb_255)) + return colors + + +def parse_sigmas(fp): + """ + Read reactions/“sigma” lines from a .inp file (full path fp). + Return dict keyed by (molecule_name, site_label) → sigma_scaled_float. + """ + m = {} + with open(fp) as f: + in_rx = False + sites = [] + for l in f: + l = l.strip() + if l.startswith("start reactions"): + in_rx = True + continue + if l.startswith("end reactions"): + break + if not in_rx: + continue + + if "<->" in l: + # capture all Molecule(Site) occurrences + sites = re.findall(r"([A-Za-z0-9_]+)\(([A-Za-z0-9_]+)\)", l) + elif l.startswith("sigma"): + s = float(l.split("=", 1)[1].strip()) + for mol, site in sites: + m[(mol, site)] = s * 0.6 + return m + + +def build_display_data(input_dir): + """ + In input_dir, find all .mol and one .inp, then build a dict of DisplayData + keyed by "Molecule#Site" or "Molecule#COM". + """ + # Patterns for files + mol_pattern = os.path.join(input_dir, "*.mol") + inp_pattern = os.path.join(input_dir, "*.inp") + + mol_files = sorted(glob.glob(mol_pattern)) + inp_files = sorted(glob.glob(inp_pattern)) + + if not mol_files: + raise FileNotFoundError(f"No .mol files found in '{input_dir}'") + if not inp_files: + raise FileNotFoundError(f"No .inp file found in '{input_dir}'") + if len(inp_files) > 1: + raise FileExistsError(f"Multiple .inp files found in '{input_dir}': {inp_files}") + + params_file = inp_files[0] + + # Parse each .mol + parsed = [parse_mol_file(fp) for fp in mol_files] + names = [item[0] for item in parsed] + colors = generate_distinct_colors(len(names)) + cmap = dict(zip(names, colors)) + + # Pull in any explicit sigma values + sigmas = parse_sigmas(params_file) + + display_dict = {} + mol_sigmas = {} + + # Create a DisplayData for each site + for name, com, sites in parsed: + for site_label, coord in sites.items(): + key = f"{name}#{site_label}" + radius = sigmas.get((name, site_label), compute_avg_distance(com, sites) * 0.3) + display_dict[key] = DisplayData( + name=f"{name}-{site_label}", + display_type=DISPLAY_TYPE.SPHERE, + radius=radius, + color=cmap[name], + ) + mol_sigmas.setdefault(name, []).append(radius) + + # Now make a COM sphere for each molecule + for name, com, sites in parsed: + radii = mol_sigmas.get(name, [1.0]) + avg_radius = sum(radii) / len(radii) + key_com = f"{name}#COM" + display_dict[key_com] = DisplayData( + name=f"{name}-COM", + display_type=DISPLAY_TYPE.SPHERE, + radius=avg_radius, + color=cmap[name], + ) + + return display_dict + + +def convert_simularium(input_dir: str, output_name: str, pdb_folder: str = '') -> None: + """ + Given a directory `input_dir` containing: + - parms.inp + - one or more .mol files + - a subfolder "PDB/" with PDB trajectory files + this function will read everything, build display data, center the coordinates, + and write out `output_name.simularium` in the current working directory. + + Raises FileNotFoundError or FileExistsError if those files/folders are missing. + """ + # 1) Verify input_dir exists + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder '{input_dir}' does not exist.") + + # 2) Check for PDB subfolder + if pdb_folder == '': + pdb_folder = os.path.join(input_dir, "PDB") + if not os.path.isdir(pdb_folder): + raise FileNotFoundError(f"Expected subfolder 'PDB' in '{input_dir}', but not found.") + + # 3) Parse parms.inp + parms_path = os.path.join(input_dir, "parms.inp") + if not os.path.isfile(parms_path): + raise FileNotFoundError(f"'parms.inp' not found in '{input_dir}'.") + + pdb_write, water_box, time_step = parse_parms(parms_path) + if water_box is None or time_step is None: + raise RuntimeError("Could not parse WaterBox or timeStep from parms.inp.") + + box_array = np.array(water_box, dtype=float) + + # 4) Build the dictionary of DisplayData from the .mol files + display_data = build_display_data(input_dir) + + # 5) Construct a NerdssData object + nerdss_data = NerdssData( + path_to_pdb_files=pdb_folder, + meta_data=MetaData( + box_size=box_array, + trajectory_title=output_name, + camera_defaults=CameraData(position=np.array([0, 0, box_array[2] / 2])), + ), + display_data=display_data, + time_units=UnitData("µs", time_step), + spatial_units=UnitData("nm", 1), + ) + + # 6) Center everything in the box + converter = NerdssConverter(nerdss_data) + translate_filter = TranslateFilter(default_translation=box_array / -2) + filtered_data = converter.filter_data([translate_filter]) + + # 7) Write a binary .simularium file + BinaryWriter.save(filtered_data, output_name, False) + # After this, a file named f"{output_name}.simularium" appears in cwd. diff --git a/proaffinity-gnn/ProAffinity_GNN_inference.py b/proaffinity-gnn/ProAffinity_GNN_inference.py new file mode 100644 index 00000000..8b79b3a6 --- /dev/null +++ b/proaffinity-gnn/ProAffinity_GNN_inference.py @@ -0,0 +1,800 @@ +# Requirements: NOTE: Change the torch version according to your CUDA version +# python >=3.8 +# Step 1: Use pip to install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2: +# go to https://docs.pytorch.org/get-started/previous-versions/, search for version 2.2.2 and find your system and GPU version +# For example, if system is Linux and GPU version is CUDA 12.1, run this: +# pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121 +# Step 2: +# pip install torch_geometric==2.3.0 transformers==4.38 +#!/usr/bin/env python +import copy +import math +import torch +import pickle +import os +import re +from itertools import chain + +from torch_geometric.nn.models import AttentiveFP +from torch.optim import Adam +from torch.nn import MSELoss +from torch.nn import L1Loss +import torch.nn.functional as F + +from torch_geometric.data import Data +from torch_geometric.loader import DataLoader +import numpy as np + +np.random.seed(0) +torch.manual_seed(0) + + +# For parsing PDB files +aminoacid_abbr = {'GLY': 'G', 'ALA': 'A', 'VAL': 'V', 'LEU': 'L', 'ILE': 'I', 'PHE': 'F', 'TRP': 'W', 'TYR': 'Y', 'ASP': 'D', 'ASN': 'N', 'GLU': 'E', 'LYS': 'K', 'GLN': 'Q', 'MET': 'M', 'SER': 'S', 'THR': 'T', 'CYS': 'C', 'PRO': 'P', 'HIS': 'H', 'ARG': 'R', 'UNK': 'X'} + +def infer_atom_type(atom_name): + """Infer atom type based on atom name for PDB files.""" + atom_name = atom_name.strip().upper() + if atom_name.startswith('C'): + return 'C' + elif atom_name.startswith('O'): + return 'OA' + elif atom_name.startswith('N'): + return 'N' + elif atom_name.startswith('S'): + return 'SA' + elif atom_name.startswith('H'): + return 'HD' + else: + return 'A' # fallback or generic type + +def only_letters(s): + return re.sub('[^a-zA-Z]', '', s) + +def get_chainlist_from_indexfile(chainindex): + pdb_list = [] + chain_list = [] + with open(chainindex, 'r') as f: + lines = f.readlines() + for line in lines: + pdb = line.split('\t')[0].strip() + pdb_list.append(pdb) + chains = line.split('\t')[1].strip() + chains = chains.split(';') + while '' in chains: + chains.remove('') + + for i, c in enumerate(chains): + chains[i] = only_letters(c).strip() + chain_list.append(chains) + + return (pdb_list, chain_list) + +def find_first_numeric_part(s): + match = re.search(r'\d+', s) + return match.group(0) if match else None + +def check_res_number(residuelist): + char_index = [] + for i, res in enumerate(residuelist): + if res['number'].isnumeric() == False: + char_index.append(i) + if len(char_index) == 0: + return + + list_len = len(residuelist) + if(char_index[-1] == list_len - 1): + last_num = find_first_numeric_part(residuelist[-1]['number']) + residuelist[-1]['number'] = last_num + + for i in reversed(char_index): + if i == list_len - 1: + continue + + residuelist[i]['number'] = residuelist[i+1]['number'] + for j in range(i+1, len(residuelist)): + residuelist[j]['number'] = int(residuelist[j]['number']) + 1 + +def get_residue_list_from_file(filename, chain_list): + residue_chain_list = [] + try: + with open(filename, 'r') as f: + lines = f.readlines() + + for chain in chain_list: + previous_res = -1 + previous_res_type = '' + atomlist = [] + atom = {} + residue = {} + current_res_chain = '' + residuelist = [] + + for line in lines: + atomline = line.split() + if atomline[0].strip() != 'ATOM' and atomline[0].strip() != 'TER': + continue + + if line[21] != chain: + continue + + if atomline[0] == 'TER': + residue['type'] = aminoacid_abbr.get(previous_res_type, 'X') + residue['number'] = previous_res + residue['atoms'] = copy.deepcopy(atomlist) + residue['chain'] = current_res_chain + + has_CA = any(atomCA['type'] == 'CA' for atomCA in residue['atoms']) + if has_CA: + residuelist.append(copy.deepcopy(residue)) + else: + residue.clear() + + previous_res = -1 + continue + + atom['pdbqt_type'] = infer_atom_type(line[12:16].strip()) + atom['type'] = line[12:16].strip() + atom['x'] = line[30:38].strip() + atom['y'] = line[38:46].strip() + atom['z'] = line[46:54].strip() + + current_res = line[22:27].strip() + current_res_type = line[17:21].strip() + current_res_chain = line[21] + + if current_res != previous_res and previous_res != -1: + residue['type'] = aminoacid_abbr.get(previous_res_type, 'X') + residue['number'] = previous_res + residue['atoms'] = copy.deepcopy(atomlist) + residue['chain'] = current_res_chain + + has_CA = any(atomCA['type'] == 'CA' for atomCA in residue['atoms']) + if has_CA: + residuelist.append(copy.deepcopy(residue)) + else: + residue.clear() + + atomlist.clear() + atomlist.append(copy.deepcopy(atom)) + else: + atomlist.append(copy.deepcopy(atom)) + + previous_res = current_res + previous_res_type = current_res_type + + check_res_number(residuelist) + residue_chain_list.append(copy.deepcopy(residuelist)) + + return residue_chain_list + except Exception as e: + print(e) + return residue_chain_list + +# Given 2 parts of protein-protein complex, return the residue list of the complex +# Should be completed 2 residue lists + +def get_interaction_residue_pair_new(dis_thred, reslistA, reslistB): + res_pair = [] + proteinA = copy.deepcopy(reslistA) + proteinB = copy.deepcopy(reslistB) + + for i, resA in enumerate(proteinA): + find_match_res_pair = 0 + ca1 = list(filter(lambda x: x['type'] == 'CA', resA['atoms']))[0] + ca1_x = float(ca1['x']) + ca1_y = float(ca1['y']) + ca1_z = float(ca1['z']) + + for j, resB in enumerate(proteinB): + find_match_res_pair = 0 + ca2 = list(filter(lambda x: x['type'] == 'CA', resB['atoms']))[0] + ca2_x = float(ca2['x']) + ca2_y = float(ca2['y']) + ca2_z = float(ca2['z']) + + for atomA in resA['atoms']: + Ax = float(atomA['x']) + Ay = float(atomA['y']) + Az = float(atomA['z']) + + for atomB in resB['atoms']: + Bx = float(atomB['x']) + By = float(atomB['y']) + Bz = float(atomB['z']) + + distance = math.sqrt((Ax-Bx)**2 + (Ay-By)**2 + (Az-Bz)**2) + + if distance <= dis_thred: + c_alpha_dist = math.sqrt((ca1_x-ca2_x)**2 + (ca1_y-ca2_y)**2 + (ca1_z-ca2_z)**2) + res_pair.append((resA, resB, c_alpha_dist)) + find_match_res_pair = 1 + break + + if find_match_res_pair == 1: + break + + return res_pair + +def get_interaction_residue_pair_new_indi(dis_thred, reslistA, reslistB): + res_pair = [] + proteinA = copy.deepcopy(reslistA) + proteinB = copy.deepcopy(reslistB) + + for i, resA in enumerate(proteinA): + find_match_res_pair = 0 + ca1 = list(filter(lambda x: x['type'] == 'CA', resA['atoms']))[0] + ca1_x = float(ca1['x']) + ca1_y = float(ca1['y']) + ca1_z = float(ca1['z']) + res1_num = resA['number'] + + for j, resB in enumerate(proteinB): + find_match_res_pair = 0 + ca2 = list(filter(lambda x: x['type'] == 'CA', resB['atoms']))[0] + ca2_x = float(ca2['x']) + ca2_y = float(ca2['y']) + ca2_z = float(ca2['z']) + res2_num = resB['number'] + if res1_num == res2_num: + continue + + for atomA in resA['atoms']: + Ax = float(atomA['x']) + Ay = float(atomA['y']) + Az = float(atomA['z']) + + for atomB in resB['atoms']: + Bx = float(atomB['x']) + By = float(atomB['y']) + Bz = float(atomB['z']) + + distance = math.sqrt((Ax-Bx)**2 + (Ay-By)**2 + (Az-Bz)**2) + + if distance <= dis_thred: + + c_alpha_dist = math.sqrt((ca1_x-ca2_x)**2 + (ca1_y-ca2_y)**2 + (ca1_z-ca2_z)**2) + res_pair.append((resA, resB, c_alpha_dist)) + find_match_res_pair = 1 + break + + if find_match_res_pair == 1: + break + + return res_pair + +# get the edge index of the graph from the interaction pairs +# only 2 parts in the inter_pairs +# len_pro1 is the length of the first part of the protein-protein complex + +def get_edge_index(inter_pairs, len_protein1_fasta): + source_list = [] + des_list = [] + + for pair in inter_pairs: + source_res = int(pair[0]['number']) + des_res = int(pair[1]['number']) + len_protein1_fasta + source_list.append(source_res) + des_list.append(des_res) + + source = torch.unsqueeze(torch.tensor(source_list), 0) + des = torch.unsqueeze(torch.tensor(des_list), 0) + + bi_direct_source = torch.cat((source, des), 1) + bi_direct_edge = torch.cat((des, source), 1) + edge_index = torch.squeeze(torch.stack((bi_direct_source, bi_direct_edge))) + + return edge_index + +def get_edge_index_indi(inter_pairs): + source_list = [] + des_list = [] + + for pair in inter_pairs: + source_res = int(pair[0]['number']) + des_res = int(pair[1]['number']) + if source_res != des_res: + source_list.append(source_res) + des_list.append(des_res) + + source = torch.unsqueeze(torch.tensor(source_list), 0) + des = torch.unsqueeze(torch.tensor(des_list), 0) + + edge_index = torch.squeeze(torch.stack((source, des))) + return edge_index + +def adjust_residuelist_num(residuelist): + index = 0 + for reslist in residuelist: + for res in reslist: + res['number'] = index + index += 1 + +# Helpers +def get_fasta_seq(pdb_tuple): + fastaA = pdb_tuple[0] + fastaB = pdb_tuple[1] + return fastaA, fastaB + +def get_distance(x1, y1, z1, x2, y2, z2): + distance = math.sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2) + return distance + +# Models +class AttentiveFPModel(torch.nn.Module): + def __init__(self, in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout): + super(AttentiveFPModel, self).__init__() + self.model = AttentiveFP(in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout) + + def forward(self, data): + x, edge_index, edge_attr, batch = data.x, data.edge_index, data.edge_attr, data.batch + return self.model(x, edge_index, edge_attr, batch) + +class GraphNetwork(torch.nn.Module): + def __init__(self, in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout, linear_out1, linear_out2): + super(GraphNetwork, self).__init__() + self.graph1 = AttentiveFPModel(in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout) + self.graph2 = AttentiveFPModel(in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout) + self.graph3 = AttentiveFPModel(in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout) + + self.fc1 = torch.nn.Linear(out_channels * 3, linear_out1) + self.fc2 = torch.nn.Linear(linear_out1, linear_out2) + + def forward(self, inter_data, intra_data1, intra_data2): + + inter_graph = self.graph1(inter_data) + intra_graph1 = self.graph2(intra_data1) + intra_graph2 = self.graph3(intra_data2) + + x = torch.cat([inter_graph, intra_graph1, intra_graph2], dim=1) + x = F.relu(self.fc1(x)) + x = self.fc2(x) + return x + +def run_proaffinity_inference( + pdbfile, chainindex, weights_path='./model.pkl', temperature=298.15, verbose=False + ): + """ + Run ProAffinity inference on a given PDB file and chain index. + + Args: + pdbfile (str): Path to the PDB or PDBQT file. + chainindex (str): List of chains (e.g. "AB,C"). + weights_path (str): Path to the model weights. + temperature (float): Temperature in Kelvin (default is 298.15) to convert K from. + + Returns: + float: Predicted dG (kJ/mol) value. + """ + + pdbfile = pdbfile + chainindex = chainindex.split(',') + + # get 2 residue lists from file of one pdb + # each residue list may contain several res lists, each res list represents a chain + + prot_pair = chainindex + + if len(prot_pair) != 2: + print('no 2 pro-pro pair!!') + + # Get residues from the PDB file + if verbose: print(prot_pair) + residuelistA = get_residue_list_from_file(pdbfile, prot_pair[0]) + residuelistB = get_residue_list_from_file(pdbfile, prot_pair[1]) + + adjust_residuelist_num(residuelistA) + adjust_residuelist_num(residuelistB) + + # Create a sequence for each chain + if len(residuelistA) == 0 or len(residuelistB) == 0: + print('no residue list') + + seqA = [] + + for reslist in residuelistA: # for each chain in the residuelistA: + chain_res = [] + for res in reslist: + chain_res.append(res['type']) + chain_res = ''.join(chain_res) + seqA.append(chain_res) + + seqB = [] + + for reslist in residuelistB: # for each chain in the residuelistA: + chain_res = [] + for res in reslist: + chain_res.append(res['type']) + chain_res = ''.join(chain_res) + seqB.append(chain_res) + + seqA_len = sum([len(seq) for seq in seqA]) + + adjust_residuelist_num(residuelistA) + adjust_residuelist_num(residuelistB) + + concat_reslistA = list(chain.from_iterable(residuelistA)) + concat_reslistB = list(chain.from_iterable(residuelistB)) + + # Generate graphs + thred = 6 + inter_pairs = get_interaction_residue_pair_new(thred, concat_reslistA, concat_reslistB) + edge_index = get_edge_index(inter_pairs, seqA_len) + info_save = (inter_pairs, edge_index, (seqA, seqB)) + + # get 2 residue lists from file of one pdb + # each residue list may contain several res lists, each res list represents a chain + + residuelistA = get_residue_list_from_file(pdbfile, prot_pair[0]) + residuelistB = get_residue_list_from_file(pdbfile, prot_pair[1]) + + adjust_residuelist_num(residuelistA) + adjust_residuelist_num(residuelistB) + + if len(residuelistA) == 0 or len(residuelistB) == 0: + print('no residue list') + + seqA = [] + + for reslist in residuelistA: # for each chain in the residuelistA: + chain_res = [] + for res in reslist: + chain_res.append(res['type']) + chain_res = ''.join(chain_res) + seqA.append(chain_res) + + seqB = [] + + for reslist in residuelistB: # for each chain in the residuelistA: + chain_res = [] + for res in reslist: + chain_res.append(res['type']) + chain_res = ''.join(chain_res) + seqB.append(chain_res) + + adjust_residuelist_num(residuelistA) + adjust_residuelist_num(residuelistB) + + concat_reslistA = list(chain.from_iterable(residuelistA)) + concat_reslistB = list(chain.from_iterable(residuelistB)) + + + thred = 3.5 + intra_pairsA = get_interaction_residue_pair_new_indi(thred, concat_reslistA, concat_reslistA) + intra_pairsB = get_interaction_residue_pair_new_indi(thred, concat_reslistB, concat_reslistB) + + edge_index1 = get_edge_index_indi(intra_pairsA) + edge_index2 = get_edge_index_indi(intra_pairsB) + + info_save1 = (intra_pairsA, edge_index1, seqA) + info_save2 = (intra_pairsB, edge_index2, seqB) + + # Get ESM embedding from the sequences + from transformers import AutoTokenizer, EsmModel + import torch + + tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t33_650M_UR50D") + model = EsmModel.from_pretrained("facebook/esm2_t33_650M_UR50D") + model.eval() + torch.set_grad_enabled(False) + + from torch_geometric.data import Data + + + atom_type = ['A', 'C', 'OA', 'N', 'NA' 'SA', 'HD'] + + atom_pair = ['A_A', 'A_C', 'A_OA', 'A_N', 'A_NA', 'A_SA', 'A_HD', + 'C_C', 'C_OA', 'C_N', 'C_NA', 'C_SA', 'C_HD', + 'OA_OA', 'OA_N', 'OA_NA', 'OA_SA', 'OA_HD', + 'N_N', 'N_NA', 'N_SA', 'N_HD', + 'NA_NA', 'NA_SA', 'NA_HD', + 'SA_SA', 'SA_HD', + 'HD_HD'] + + bin_number = 10 + type_number = len(atom_pair) + inter_distance = 6 + intra_distance = 3.5 + + seqA, seqB = get_fasta_seq(info_save[2]) + output1_list = [] + output2_list = [] + + for fasta in seqA: + input1 = tokenizer(fasta, return_tensors="pt") + output1 = model(**input1) + last_hidden_state1 = output1.last_hidden_state + last_hidden_state1 = torch.squeeze(last_hidden_state1) + # get the token from the 2nd to the 2nd last one + last_hidden_state1 = last_hidden_state1[1:-1] + output1_list.append(last_hidden_state1) + + + for fasta in seqB: + input2 = tokenizer(fasta, return_tensors="pt") + output2 = model(**input2) + last_hidden_state2 = output2.last_hidden_state + last_hidden_state2 = torch.squeeze(last_hidden_state2) + # get the token from the 2nd to the 2nd last one + last_hidden_state2 = last_hidden_state2[1:-1] + output2_list.append(last_hidden_state2) + + + x1 = torch.cat(output1_list, 0) + x2 = torch.cat(output2_list, 0) + x = torch.cat((x1, x2), 0) + + pairs = info_save[0] + edge_index = info_save[1] + + try: + edge_feature = [] + for pair in pairs: + + edge_encoding = np.zeros(type_number * bin_number) + residueA = pair[0] + residueB = pair[1] + + for atom1 in residueA['atoms']: + x1 = float(atom1['x']) + y1 = float(atom1['y']) + z1 = float(atom1['z']) + type1 = atom1['pdbqt_type'] + + for atom2 in residueB['atoms']: + x2 = float(atom2['x']) + y2 = float(atom2['y']) + z2 = float(atom2['z']) + type2 = atom2['pdbqt_type'] + + dis = get_distance(x1, y1, z1, x2, y2, z2) + + bin_n = math.ceil(dis / (inter_distance / bin_number)) + #print(bin_n) + if bin_n > 10: + bin_n = 10 + + if type1 + '_' + type2 in atom_pair: + pair_type = type1 + '_' + type2 + elif type2 + '_' + type1 in atom_pair: + pair_type = type2 + '_' + type1 + else: + print('no match type!' + 'type1:' + type1 + 'type2:' + type2) + pair_type = 'others' + + pair_type_index = atom_pair.index(pair_type) + encoding_index = (bin_n - 1) * type_number + pair_type_index + edge_encoding[encoding_index] = edge_encoding[encoding_index] + 1 + + edge_feature.append(torch.from_numpy(edge_encoding)) + + edge_feature = torch.stack(edge_feature, 0) + edge_feature = torch.cat((edge_feature, edge_feature), 0) + + except Exception as e: + print(e) + + data = Data(x=x, edge_index=edge_index, edge_attr=edge_feature) + + # for individual graph + + seq1 = info_save1[2] + + output1_list = [] + + for fasta in seq1: + input1 = tokenizer(fasta, return_tensors="pt") + output1 = model(**input1) + last_hidden_state1 = output1.last_hidden_state + last_hidden_state1 = torch.squeeze(last_hidden_state1) + # get the token from the 2nd to the 2nd last one + last_hidden_state1 = last_hidden_state1[1:-1] + output1_list.append(last_hidden_state1) + + x_indi_1= torch.cat(output1_list, 0) + + pairs = info_save1[0] + edge_index = info_save1[1] + + try: + edge_feature = [] + for pair in pairs: + + edge_encoding = np.zeros(type_number * bin_number) + residueA = pair[0] + residueB = pair[1] + + for atom1 in residueA['atoms']: + x1 = float(atom1['x']) + y1 = float(atom1['y']) + z1 = float(atom1['z']) + type1 = atom1['pdbqt_type'] + + for atom2 in residueB['atoms']: + x2 = float(atom2['x']) + y2 = float(atom2['y']) + z2 = float(atom2['z']) + type2 = atom2['pdbqt_type'] + + dis = get_distance(x1, y1, z1, x2, y2, z2) + + bin_n = math.ceil(dis / (intra_distance / bin_number)) + #print(bin_n) + if bin_n > 10: + bin_n = 10 + + if type1 + '_' + type2 in atom_pair: + pair_type = type1 + '_' + type2 + elif type2 + '_' + type1 in atom_pair: + pair_type = type2 + '_' + type1 + else: + print('no match type!' + 'type1:' + type1 + 'type2:' + type2) + pair_type = 'others' + + pair_type_index = atom_pair.index(pair_type) + encoding_index = (bin_n - 1) * type_number + pair_type_index + edge_encoding[encoding_index] = edge_encoding[encoding_index] + 1 + + edge_feature.append(torch.from_numpy(edge_encoding)) + + edge_feature = torch.stack(edge_feature, 0) + + except Exception as e: + print(e) + + data1 = Data(x=x_indi_1, edge_index=edge_index, edge_attr=edge_feature) + + seq2 = info_save2[2] + + output2_list = [] + + for fasta in seq2: + input2 = tokenizer(fasta, return_tensors="pt") + output1 = model(**input2) + last_hidden_state2 = output2.last_hidden_state + last_hidden_state2 = torch.squeeze(last_hidden_state2) + # get the token from the 2nd to the 2nd last one + last_hidden_state2 = last_hidden_state2[1:-1] + output2_list.append(last_hidden_state2) + + x_indi_2= torch.cat(output2_list, 0) + + pairs = info_save2[0] + edge_index = info_save2[1] + + try: + edge_feature = [] + for pair in pairs: + + edge_encoding = np.zeros(type_number * bin_number) + residueA = pair[0] + residueB = pair[1] + + for atom1 in residueA['atoms']: + x1 = float(atom1['x']) + y1 = float(atom1['y']) + z1 = float(atom1['z']) + type1 = atom1['pdbqt_type'] + + for atom2 in residueB['atoms']: + x2 = float(atom2['x']) + y2 = float(atom2['y']) + z2 = float(atom2['z']) + type2 = atom2['pdbqt_type'] + + dis = get_distance(x1, y1, z1, x2, y2, z2) + + bin_n = math.ceil(dis / (intra_distance / bin_number)) + #print(bin_n) + if bin_n > 10: + bin_n = 10 + + if type1 + '_' + type2 in atom_pair: + pair_type = type1 + '_' + type2 + elif type2 + '_' + type1 in atom_pair: + pair_type = type2 + '_' + type1 + else: + print('no match type!' + 'type1:' + type1 + 'type2:' + type2) + pair_type = 'others' + + pair_type_index = atom_pair.index(pair_type) + encoding_index = (bin_n - 1) * type_number + pair_type_index + edge_encoding[encoding_index] = edge_encoding[encoding_index] + 1 + + edge_feature.append(torch.from_numpy(edge_encoding)) + + edge_feature = torch.stack(edge_feature, 0) + + except Exception as e: + print(e) + + + data2 = Data(x=x_indi_2, edge_index=edge_index, edge_attr=edge_feature) + + graph = data + graph1 = data1 + graph2 = data2 + graph.edge_attr = graph.edge_attr.float() + + graph1.edge_attr = [attr.float() for attr in graph1.edge_attr] + graph2.edge_attr = graph2.edge_attr.float() + + datalist_inter = [] + datalist_intra1 = [] + datalist_intra2 = [] + datalist_inter.append(graph) + datalist_intra1.append(graph1) + datalist_intra2.append(graph2) + + test_loader_inter = DataLoader(datalist_inter, batch_size=1) + test_loader_intra1 = DataLoader(datalist_intra1, batch_size=1) + test_loader_intra2 = DataLoader(datalist_intra2, batch_size=1) + + in_channels = data.num_node_features + hidden_channels = 256 + out_channels = 64 + linear_out1 = 32 + linear_out2 = 1 + edge_dim = data.num_edge_features + num_layers = 3 + num_timesteps = 2 + dropout = 0.5 + + devicename = "cuda" if torch.cuda.is_available() else "cpu" + device = torch.device(devicename) + model = GraphNetwork(in_channels, hidden_channels, out_channels, edge_dim, num_layers, num_timesteps, dropout, linear_out1, linear_out2).to(device) + + state_dict = torch.load(weights_path, map_location=devicename) + + new_state_dict = {} + for key, value in state_dict.items(): + new_key = key.replace("lin_src", "lin").replace("lin_dst", "lin") + new_state_dict[new_key] = value + + model.load_state_dict(new_state_dict, strict=False) + + + # Assuming model is your GNN model and dataloader is your test dataloader + model.eval() # Set the model to evaluation mode + + + all_predictions = [] + + with torch.no_grad(): + # Disable gradient computation during testing + for batch_inter, batch_intra1, batch_intra2 in zip(test_loader_inter, test_loader_intra1, test_loader_intra2): + # Assuming batch contains input data 'x' and true values 'y_true' + batch_inter = batch_inter.to(device) + batch_intra1 = batch_intra1.to(device) + batch_intra2 = batch_intra2.to(device) + if isinstance(batch_intra1.edge_attr, list): + batch_intra1.edge_attr = torch.stack(batch_intra1.edge_attr, dim=0).to(device) + if isinstance(batch_intra2.edge_attr, list): + batch_intra2.edge_attr = torch.stack(batch_intra2.edge_attr, dim=0).to(device) # y_true = batch_inter.y + + # Get model predictions for the current batch + y_pred = model(batch_inter, batch_intra1, batch_intra2) + y_pred = torch.squeeze(y_pred) + + # Store predictions and true values + all_predictions.append(y_pred.cpu().numpy()) + + for i in range(len(all_predictions)): + # Check if the current item is a scalar by examining its dimensionality + if all_predictions[i].ndim == 0: + # Convert scalar to a 1D array and update the item in the list + all_predictions[i] = np.array([all_predictions[i]]) + + # Concatenate all predictions and true values + all_predictions = np.concatenate(all_predictions, axis=0) + K = 10**(all_predictions[0]) + R = 8.314 / 1000 # kJ/(mol*K) + dG = -R * temperature * np.log(K) + if verbose: print('dG:', int(dG), 'kJ/mol') + return dG + +# Example usage +if __name__ == "__main__": + run_proaffinity_inference("./pdbfiles/1i4d.pdbqt", "HL,F", verbose=True) + + diff --git a/proaffinity-gnn/Test.ipynb b/proaffinity-gnn/Test.ipynb new file mode 100644 index 00000000..930a4c87 --- /dev/null +++ b/proaffinity-gnn/Test.ipynb @@ -0,0 +1,2285 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "4f945b0e-e1da-4548-b7f5-33a089a79275", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:44:54.054033Z", + "start_time": "2025-07-20T19:44:48.874118Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import os\n", + "from matplotlib import pyplot as plt\n", + "# progressbar\n", + "from progressbar import progressbar\n", + "# import test data\n", + "import pandas as pd\n", + "# for downloading pdb files\n", + "import urllib.request\n", + "import urllib.error\n", + "# import proaffinity inference module\n", + "from ProAffinity_GNN_inference import run_proaffinity_inference\n", + "# import ionerdss for surface contacting estimation\n", + "import sys \n", + "sys.path.append( os.path.dirname( '/Users/msang/GitHub/ionerdss/ionerdss' ) )\n", + "import ionerdss as ion" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "78d66b42-a4d0-4425-b329-387fd5929a62", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:44:54.063892Z", + "start_time": "2025-07-20T19:44:54.056543Z" + } + }, + "outputs": [], + "source": [ + "def download_pdb_direct(pdb_id, download_dir=\"pdbfiles\", verbose=False):\n", + " \"\"\"\n", + " Direct download from RCSB PDB using urllib (alternative to Bio.PDB.PDBList)\n", + " \"\"\"\n", + " if not os.path.exists(download_dir):\n", + " os.makedirs(download_dir)\n", + " \n", + " clean_id = pdb_id.strip().lower()\n", + " \n", + " # Different URL formats for different file types\n", + " url = f\"https://files.rcsb.org/download/{clean_id}.pdb\"\n", + " filename = f\"{clean_id}.pdb\"\n", + " \n", + " filepath = os.path.join(download_dir, filename)\n", + " \n", + " try:\n", + " # check if the file already existed\n", + " if os.path.exists(filepath):\n", + " if verbose: print(f\"Existed file: {clean_id.upper()} from {url}...\")\n", + " return filepath\n", + " else:\n", + " if verbose: print(f\"Downloading {clean_id.upper()} from {url}...\")\n", + " urllib.request.urlretrieve(url, filepath)\n", + " # Check if file was downloaded and has content\n", + " if os.path.exists(filepath) and os.path.getsize(filepath) > 0:\n", + " if verbose: print(f\"✓ Successfully downloaded: {filepath}\")\n", + " return filepath\n", + " else:\n", + " print(f\"✗ Download failed or file is empty: {clean_id.upper()}\")\n", + " return None\n", + " \n", + " except urllib.error.HTTPError as e:\n", + " if e.code == 404:\n", + " print(f\"✗ File not found (404): {clean_id.upper()}\")\n", + " else:\n", + " print(f\"✗ HTTP Error {e.code}: {clean_id.upper()}\")\n", + " return None\n", + " except Exception as e:\n", + " print(f\"✗ Error downloading {clean_id.upper()}: {str(e)}\")\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8a762f10-0699-49aa-8a5b-6c6b2b71a65a", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:44:54.070575Z", + "start_time": "2025-07-20T19:44:54.065515Z" + } + }, + "outputs": [], + "source": [ + "def convert_pka_dG(pka, temperature=298.15):\n", + " K = 10**pka\n", + " R = 8.314 / 1000 # kJ/(mol*K)\n", + " dG = -R * temperature * np.log(K)\n", + " return dG\n", + "\n", + "\n", + "\n", + "def kbt_to_kj_mol(dG, T_kelvin=298.15):\n", + " \"\"\"\n", + " Convert k_B T to kJ/mol\n", + " \n", + " Parameters:\n", + " temperature_celsius (float): Temperature in Celsius (default: 25°C)\n", + " \n", + " Returns:\n", + " float: k_B T value in kJ/mol\n", + " \"\"\"\n", + " \n", + " k_B = 1.380649e-23 # Boltzmann constant in J/K\n", + " N_A = 6.02214076e23 # Avogadro's number in mol^-1\n", + " R = k_B * N_A # Gas constant R = k_B * N_A = 8.314 J/(mol·K)\n", + "\n", + " kbt_joules = k_B * T_kelvin # k_B T in Joules per particle\n", + " kbt_kj_mol = kbt_joules * N_A / 1000 # Convert to kJ/mol\n", + " return kbt_kj_mol * np.array(dG)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b4ad92a0-9dcf-42e6-b89d-d5f8104725a9", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:44:54.079124Z", + "start_time": "2025-07-20T19:44:54.072584Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(2.4789570296023884, 5.6272324571974215)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# unit conversion, and shift in ionerdss\n", + "kbt_to_kj_mol(1), kbt_to_kj_mol(2.27)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "44b501a2-8887-40be-a742-524c7154de21", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:44:56.757086Z", + "start_time": "2025-07-20T19:44:56.751627Z" + } + }, + "outputs": [], + "source": [ + "def ionerdss_prediction(pdbfile, pdbid, chains):\n", + " # get the energy of interfaces from coarse graining\n", + " model = ion.PDBModel(pdb_file=pdbfile, save_dir=f'ionerdss/{pdbid}')\n", + " model.coarse_grain()\n", + " energy_dict = {}\n", + " for i, chain in enumerate(model.all_chains):\n", + " for j, interface in enumerate(model.all_interfaces[i]):\n", + " pairname = ','.join(sorted([chain.id, interface]))\n", + " energy_dict.update({pairname: round(model.all_interface_energies[i][j], 5)})\n", + " # parse chains (in the format of 'XY,AB'\n", + " chain_group_1, chain_group_2 = chains.split(',')\n", + " chain_pairs = []\n", + " for chain_i in chain_group_1:\n", + " for chain_j in chain_group_2:\n", + " chain_pairs.append( ','.join(sorted([chain_i, chain_j])) )\n", + " # calculate total energy\n", + " dG_tot = 0\n", + " for pair in chain_pairs:\n", + " if pair in energy_dict:\n", + " dG_tot += energy_dict[pair]\n", + " else:\n", + " pass # No interface found by ionerdss\n", + " return dG_tot" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "80edeccb-033c-48f9-b360-f6504e3d34df", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:44:57.243736Z", + "start_time": "2025-07-20T19:44:57.021781Z" + } + }, + "outputs": [], + "source": [ + "test_set_1 = pd.read_excel('ci4c01850_si_003.xls')\n", + "test_set_2 = pd.read_excel('ci4c01850_si_004.xls')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "88c9171a", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:45:27.853822Z", + "start_time": "2025-07-20T19:45:27.839849Z" + } + }, + "outputs": [], + "source": [ + "def filter_pdb_file(input_pdb_path, output_pdb_path):\n", + " \"\"\"\n", + " Filters a PDB file to include only 'ATOM' records and keeps lines\n", + " containing conventional amino acid or nucleic acid residue names.\n", + "\n", + " Args:\n", + " input_pdb_path (str): The path to the input PDB file.\n", + " output_pdb_path (str): The path to the output filtered PDB file.\n", + " \"\"\"\n", + "\n", + " # Define a set of standard/conventional amino acid and common nucleic acid residue names.\n", + " # This list can be extended if other standard residues (e.g., modified standard ones)\n", + " # or common ligands are considered \"conventional\" for a specific purpose.\n", + " conventional_residues = {\n", + " # Standard Amino Acids (3-letter codes)\n", + " \"ALA\", \"ARG\", \"ASN\", \"ASP\", \"CYS\",\n", + " \"GLN\", \"GLU\", \"GLY\", \"HIS\", \"ILE\",\n", + " \"LEU\", \"LYS\", \"MET\", \"PHE\", \"PRO\",\n", + " \"SER\", \"THR\", \"TRP\", \"TYR\", \"VAL\",\n", + " # Common Nucleic Acids (DNA/RNA)\n", + " \"DA\", \"DC\", \"DG\", \"DT\", # DNA\n", + " \"A\", \"C\", \"G\", \"U\", # RNA (often also used for DNA in some contexts)\n", + " \"T\", # Thymine (sometimes used directly for DNA)\n", + " }\n", + "\n", + "# print(f\"Filtering PDB file: {input_pdb_path}\")\n", + "# print(f\"Output will be saved to: {output_pdb_path}\")\n", + "# print(f\"Keeping only conventional residues: {', '.join(conventional_residues)}\")\n", + "\n", + " try:\n", + " with open(input_pdb_path, 'r') as infile, \\\n", + " open(output_pdb_path, 'w') as outfile:\n", + " for line in infile:\n", + " # Check if the line starts with 'ATOM'\n", + " if line.startswith(\"ATOM\"):\n", + " # According to PDB format, residue name is usually columns 18-20 (1-indexed)\n", + " # which corresponds to indices 17-19 in a 0-indexed string.\n", + " # We strip to remove any leading/trailing whitespace from the extracted string.\n", + " residue_name = line[17:20].strip()\n", + "\n", + " # Check if the residue name is in our list of conventional residues\n", + " if residue_name in conventional_residues:\n", + " outfile.write(line)\n", + " # else:\n", + " # # Optional: print residues that are being removed for debugging\n", + " # print(f\"Removed unconventional residue '{residue_name}': {line.strip()}\")\n", + " elif line.startswith(\"TER\"):\n", + " outfile.write(line)\n", + " # Lines not starting with 'ATOM' are implicitly skipped by this logic.\n", + " # (like HETATM for standard ligands),\n", + "\n", + " except FileNotFoundError:\n", + " print(f\"Error: Input file not found at {input_pdb_path}\")\n", + " except Exception as e:\n", + " print(f\"An unexpected error occurred: {e}\")\n", + "\n", + "\n", + "def pdb_to_pdbqt(pdbfile: str, ph: float = 7.4, verbose=False) -> str:\n", + " \"\"\"\n", + " Converts a PDB file to a PDBQT file.\n", + "\n", + " This function first filters the input PDB file to include only 'ATOM' records,\n", + " then uses Open Babel to convert this filtered PDB to PDBQT format,\n", + " assigning EEM partial charges and adding hydrogens based on the specified pH.\n", + "\n", + " Args:\n", + " pdbfile (str): The path to the input PDB file.\n", + " ph (float): The pH value to use for adding hydrogens during conversion.\n", + " Defaults to 7.4.\n", + "\n", + " Returns:\n", + " str: The path to the newly created PDBQT file.\n", + "\n", + " Raises:\n", + " FileNotFoundError: If the input PDB file does not exist.\n", + " subprocess.CalledProcessError: If 'grep' or 'obabel' commands fail.\n", + " Exception: For other unexpected errors during file operations.\n", + " \"\"\"\n", + " import subprocess\n", + " import os\n", + " if not os.path.exists(pdbfile):\n", + " raise FileNotFoundError(f\"Input PDB file not found: {pdbfile}\")\n", + "\n", + " # Construct the output PDBQT filename\n", + " # Replaces .pdb or .PDB with .pdbqt\n", + " base_name, ext = os.path.splitext(pdbfile)\n", + " pdbqtfile = f\"{base_name}.pdbqt\"\n", + "\n", + " # Create a temporary file to store only ATOM lines\n", + " tmp_pdb_file = f\"{base_name}_tmp.pdb\"\n", + "\n", + " try:\n", + " # Step 1: Grep only ATOM lines from the PDB file\n", + " if verbose: print(f\"Filtering ATOM lines from {pdbfile} to {tmp_pdb_file}...\")\n", + " filter_pdb_file(pdbfile, tmp_pdb_file)\n", + " if verbose: print(\"ATOM lines filtered successfully.\")\n", + "\n", + " # Step 2: Convert the temporary PDB file to PDBQT using obabel\n", + " if verbose: print(f\"Converting {tmp_pdb_file} to {pdbqtfile} using obabel...\")\n", + " # TODO: This has filtered only for ATOM. Also needs to remove non-classical residues like GLX\n", + " obabel_command = [\n", + " 'prepare_receptor',\n", + " '-r', \n", + " tmp_pdb_file,\n", + " '-A', 'hydrogens', # Add hydrogens \n", + " '-o', pdbqtfile # write results to pdbqt\n", + " ]\n", + " # Run obabel, capturing output for debugging if needed\n", + " result = subprocess.run(obabel_command, check=True, capture_output=True, text=True)\n", + " if verbose: print(\"Obabel conversion successful.\")\n", + " if result.stdout:\n", + " if verbose: print(\"Obabel stdout:\\n\", result.stdout)\n", + " if result.stderr:\n", + " if verbose: print(\"Obabel stderr:\\n\", result.stderr)\n", + "\n", + " if not os.path.exists(pdbqtfile):\n", + " raise Exception(f\"Obabel command ran without error but did not create {pdbqtfile}\")\n", + "\n", + " return pdbqtfile\n", + "\n", + " except FileNotFoundError as e:\n", + " print(f\"Error: Command not found. Make sure 'grep' and 'obabel' are installed and in your PATH.\")\n", + " raise e\n", + " except subprocess.CalledProcessError as e:\n", + " print(f\"Error during command execution:\")\n", + " print(f\"Command: {' '.join(e.cmd)}\")\n", + " print(f\"Return Code: {e.returncode}\")\n", + " print(f\"Stdout: {e.stdout}\")\n", + " print(f\"Stderr: {e.stderr}\")\n", + " raise e\n", + " except Exception as e:\n", + " print(f\"An unexpected error occurred: {e}\")\n", + " raise e\n", + " finally:\n", + " # Clean up the temporary file\n", + " if os.path.exists(tmp_pdb_file):\n", + " os.remove(tmp_pdb_file)\n", + " print(f\"Successfully converted to pdbqt!\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e94f63da-fcb1-41ef-9c3e-9647af81a5e6", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T19:45:30.208117Z", + "start_time": "2025-07-20T19:45:30.201752Z" + } + }, + "outputs": [], + "source": [ + "def get_true_and_predictions(test_set, get_ionerdss=True, get_proaffinity=True):\n", + " dG_proaffinity_test_set = []\n", + " dG_ionerdss_test_set = []\n", + " dG_true_test_set = []\n", + " for row in test_set.itertuples():\n", + " print(f'Processing {row.PDB.upper()} ...', end='\\t')\n", + " # get pdb file and parse data\n", + " pdbfile = download_pdb_direct(row.PDB)\n", + " chains = row._3.strip().rstrip(\";\").replace(';', ',')\n", + " dG_true_test_set.append(convert_pka_dG(row.pKa))\n", + " # ionerdss prediction\n", + " if get_ionerdss:\n", + " print('ionerdss ...', end='\\t')\n", + " dG_pred = ionerdss_prediction(pdbfile, row.PDB, chains)\n", + " dG_ionerdss_test_set.append(dG_pred)\n", + " else:\n", + " pass\n", + " # proaffinity predictions\n", + " if get_proaffinity:\n", + " print('proaffinity ...', end='\\t')\n", + " try:\n", + " pdbqtfile = pdb_to_pdbqt(pdbfile)\n", + " dG_pred = run_proaffinity_inference(pdbqtfile, chains)\n", + " print(f\"Successed! \")\n", + " except Exception as e:\n", + " dG_pred = np.nan\n", + " print(f\"Error!:\\n\", e)\n", + " dG_proaffinity_test_set.append(dG_pred)\n", + " else:\n", + " print(f\"Successed! \")\n", + " return (np.array(dG_proaffinity_test_set), \n", + " np.array(dG_ionerdss_test_set), \n", + " np.array(dG_true_test_set))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "1dae17e5-7352-478b-a8bd-8762eba45149", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T20:43:50.236443Z", + "start_time": "2025-07-20T19:45:30.533693Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing 1WEJ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/local/WIN/msang2/anaconda3/lib/python3.11/site-packages/transformers/utils/generic.py:260: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.\n", + " torch.utils._pytree._register_pytree_node(\n", + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1PPE ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1PVH ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 3SGB ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1KTZ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2PCC ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2MTA ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1FSK ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1R0R ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2PCB ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1P2C ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1JTG ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1BJ1 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1JPS ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1Z0K ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2TGP ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1MLC ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2GOX ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1J2J ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2AJF ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1ZHI ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1E96 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1KXQ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1AVZ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1QA9 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1CBW ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1BUH ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1DQJ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1EWY ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2VIR ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2VIS ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2A9K ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2OOB ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1BVN ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1EFN ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2ABZ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1GCQ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1HE8 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1KAC ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1GLA ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1S1Q ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1VFB ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2FJU ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1E6J ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1US7 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1ACB ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 3BZD ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1A2K ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1AKJ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2HQS ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1K5D ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1EZU ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2I25 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1BVK ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1JWH ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1EMV ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1XU1 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1AK4 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1E6E ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1GXD ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1I4D ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error!:\n", + " Found indices in 'edge_index' that are larger than 369 (got 372). Please ensure that all indices in 'edge_index' point to valid indices in the interval [0, 370) in your node feature matrix and try again.\n", + "Processing 1FFW ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 4CPA ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2WPT ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1FC2 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1MQ8 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1XQS ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1LFD ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2AQ3 ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1B6C ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2HRK ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2NYZ ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1I2M ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 3CPH ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1KKL ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1EER ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1E4K ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 2C0L ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n", + "Processing 1ATN ...\tproaffinity ...\tSuccessfully converted to pdbqt!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of EsmModel were not initialized from the model checkpoint at facebook/esm2_t33_650M_UR50D and are newly initialized: ['esm.pooler.dense.bias', 'esm.pooler.dense.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", + "/mnt/Data1/mankun/GitHub/ionerdss/proaffinity-gnn/ProAffinity_GNN_inference.py:747: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " state_dict = torch.load(weights_path, map_location=devicename)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successed! \n" + ] + } + ], + "source": [ + "dG_proaffinity_test_set_1 , dG_ionerdss_test_set_1, dG_true_test_set_1 = get_true_and_predictions(test_set_1, get_proaffinity=True, get_ionerdss=False)\n", + "# dG_proaffinity_test_set_2 , dG_ionerdss_test_set_2, dG_true_test_set_2 = get_true_and_predictions(test_set_2, get_proaffinity=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b000b96b-4d0c-442b-a191-4ff0c8c0ca9e", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T21:10:35.534292Z", + "start_time": "2025-07-20T21:10:35.155930Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ProAffinity:\n", + "Correlation: 0.455\n", + "P-value: 0.000\n" + ] + } + ], + "source": [ + "from scipy.stats import pearsonr\n", + "\n", + "# Calculate correlation and significance\n", + "# print('ionerdss:')\n", + "# correlation, p_value = pearsonr(dG_true_test_set_1, kbt_to_kj_mol(dG_ionerdss_test_set_1))\n", + "# print(f\"Correlation: {correlation**2:.3f}\")\n", + "# print(f\"P-value: {p_value:.3f}\")\n", + "\n", + "print('ProAffinity:')\n", + "dG_true_test_set_1 = np.array(dG_true_test_set_1)\n", + "dG_proaffinity_test_set_1 = np.array(dG_proaffinity_test_set_1)\n", + "nans = np.isnan(dG_proaffinity_test_set_1)\n", + "correlation, p_value = pearsonr(dG_true_test_set_1[~nans], dG_proaffinity_test_set_1[~nans])\n", + "print(f\"Correlation: {correlation**2:.3f}\")\n", + "print(f\"P-value: {p_value:.3f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "03dda347", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T21:11:38.147170Z", + "start_time": "2025-07-20T21:11:38.137384Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PDBpKaPairwise interaction
601I4D5.522879D;AB
\n", + "
" + ], + "text/plain": [ + " PDB pKa Pairwise interaction\n", + "60 1I4D 5.522879 D;AB" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_set_1.iloc[np.argwhere(nans==True)[0]]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "927145c3-8097-4d40-9cdb-7a44fe6a8873", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-20T21:10:39.285663Z", + "start_time": "2025-07-20T21:10:39.021204Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Predicted dG (kJ/mol)')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plt.scatter(dG_true_test_set_1, kbt_to_kj_mol(dG_ionerdss_test_set_1), color='tab:orange', label='ionerdss')\n", + "plt.scatter(dG_true_test_set_1, dG_proaffinity_test_set_1, label='proaffinity')\n", + "plt.plot(dG_true_test_set_1, dG_true_test_set_1, label='True')\n", + "plt.legend(fontsize=16)\n", + "plt.xlabel('True dG (kJ/mol)', fontsize=16)\n", + "plt.ylabel('Predicted dG (kJ/mol)', fontsize=16)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4378cf90-da89-43ca-9bdf-47df4bd4d5ee", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "02a3f73d-e63b-4393-b84c-e96b5747978f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(79, 79)" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(dG_proaffinity_test_set_1), len(dG_true_test_set_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "96f790e0-a5dd-479b-b7de-982b20680f0f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Predicted dG (kJ/mol)')" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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crxe4vFa6YfXSz+8Xvrh9dKPrV0vQRBQUFCA8PBwSKWaM504AmUmUqkUdevWVXvMx8fHJl4k9oLXSzxeK/3weumH10s/vF76saXrpW3kSYFJ5ERERER6YgBFREREpCcGUBbk6uqKSZMmwdXV1dpdsQu8XuLxWumH10s/vF764fXSj71eLyaRExEREemJI1BEREREemIARURERKQnBlBEREREemIARURERKQnBlAWcv78eQwYMACBgYHw8fFBx44dsWPHDpU2aWlp6NevHzw9PREYGIjRo0ejtLTUSj22nn///RcSiUTt1+HDh5XteL0e2LhxI9q2bQt3d3cEBgZi0KBBKsd5rR6Iioqq9roaP368Shter+pKSkrQokULSCQSHD9+XOUYr9cD/fv3R7169eDm5oawsDC89NJLuH79ukobXi8gNTUVr776KqKjo+Hu7o4GDRpg0qRJ1a6DLV8rViK3kISEBMTExGD79u1wd3fHvHnz0LdvX1y6dAmhoaGoqKhAQkICgoKCsGfPHuTk5GDo0KEQBAELFiywdvctqkOHDsjMzFS5beLEifjnn3/QunVrAOD1qmTt2rUYNmwYPv/8c/To0QOCIODUqVPK47xW1U2dOhXDhg1Tfu/l5aX8P6+Xeu+//z7Cw8Nx4sQJldt5vVR1794dH374IcLCwpCRkYFx48bh6aefxr59+wDweimcPXsWMpkMixcvRsOGDZGcnIxhw4ahsLAQs2bNAmAH10ogs7t586YAQNi1a5fytvz8fAGA8M8//wiCIAibNm0SpFKpkJGRoWzz66+/Cq6urkJeXp7F+2xLSktLheDgYGHq1KnK23i95MrKyoQ6deoIP/zwg8Y2vFaqIiMjhblz52o8zutV3aZNm4TGjRsLp0+fFgAIx44dUznG66XZunXrBIlEIpSWlgqCwOulzZdffilER0crv7f1a8UpPAsICAhAkyZNsGLFChQWFqK8vByLFy9GSEgIWrVqBQDYv38/4uLiEB4errxffHw8SkpKcPToUWt13SasX78et27dQlJSkvI2Xi+5//77DxkZGZBKpWjZsiXCwsLQp08fnD59WtmG16q6L774AgEBAWjRogWmTZumMiXA66UqOzsbw4YNw08//QQPD49qx3m9NMvNzcX//d//oUOHDnB2dgbA66VNXl4e/P39ld/b+rViAGUBEokE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(dG_true_test_set_1, dG_proaffinity_test_set_1, label='proaffinity')\n", + "plt.scatter(dG_true_test_set_1, kbt_to_kj_mol(dG_ionerdss_test_set_1), label='ionerdss')\n", + "plt.plot(dG_true_test_set_1, dG_true_test_set_1)\n", + "plt.legend()\n", + "plt.xlabel('True dG (kJ/mol)', fontsize=16)\n", + "plt.ylabel('Predicted dG (kJ/mol)', fontsize=16)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c37f8d3-e154-4c66-b624-30251339c312", + "metadata": {}, + "outputs": [], + "source": [ + "len(dG_proaffinity_test_set_2), len(dG_true_test_set_2)" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "c5ee2899-5e51-4111-9825-190983a6a48b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Predicted dG (kJ/mol)')" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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crxe4vFa6YfXSz+8Xvrh9dKPrV0vQRBQUFCA8PBwSKWaM504AmUmUqkUdevWVXvMx8fHJl4k9oLXSzxeK/3weumH10s/vF76saXrpW3kSYFJ5ERERER6YgBFREREpCcGUBbk6uqKSZMmwdXV1dpdsQu8XuLxWumH10s/vF764fXSj71eLyaRExEREemJI1BEREREemIARURERKQnBlBEREREemIARURERKQnBlAWcv78eQwYMACBgYHw8fFBx44dsWPHDpU2aWlp6NevHzw9PREYGIjRo0ejtLTUSj22nn///RcSiUTt1+HDh5XteL0e2LhxI9q2bQt3d3cEBgZi0KBBKsd5rR6Iioqq9roaP368Shter+pKSkrQokULSCQSHD9+XOUYr9cD/fv3R7169eDm5oawsDC89NJLuH79ukobXi8gNTUVr776KqKjo+Hu7o4GDRpg0qRJ1a6DLV8rViK3kISEBMTExGD79u1wd3fHvHnz0LdvX1y6dAmhoaGoqKhAQkICgoKCsGfPHuTk5GDo0KEQBAELFiywdvctqkOHDsjMzFS5beLEifjnn3/QunVrAOD1qmTt2rUYNmwYPv/8c/To0QOCIODUqVPK47xW1U2dOhXDhg1Tfu/l5aX8P6+Xeu+//z7Cw8Nx4sQJldt5vVR1794dH374IcLCwpCRkYFx48bh6aefxr59+wDweimcPXsWMpkMixcvRsOGDZGcnIxhw4ahsLAQs2bNAmAH10ogs7t586YAQNi1a5fytvz8fAGA8M8//wiCIAibNm0SpFKpkJGRoWzz66+/Cq6urkJeXp7F+2xLSktLheDgYGHq1KnK23i95MrKyoQ6deoIP/zwg8Y2vFaqIiMjhblz52o8zutV3aZNm4TGjRsLp0+fFgAIx44dUznG66XZunXrBIlEIpSWlgqCwOulzZdffilER0crv7f1a8UpPAsICAhAkyZNsGLFChQWFqK8vByLFy9GSEgIWrVqBQDYv38/4uLiEB4errxffHw8SkpKcPToUWt13SasX78et27dQlJSkvI2Xi+5//77DxkZGZBKpWjZsiXCwsLQp08fnD59WtmG16q6L774AgEBAWjRogWmTZumMiXA66UqOzsbw4YNw08//QQPD49qx3m9NMvNzcX//d//oUOHDnB2dgbA66VNXl4e/P39ld/b+rViAGUBEokE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(dG_true_test_set_2, dG_proaffinity_test_set_2, label='proaffinity')\n", + "plt.scatter(dG_true_test_set_2, kbt_to_kj_mol(dG_ionerdss_test_set_2), label='ionerdss')\n", + "plt.plot(dG_true_test_set_2, dG_true_test_set_2)\n", + "plt.legend()\n", + "plt.xlabel('True dG (kJ/mol)', fontsize=16)\n", + "plt.ylabel('Predicted dG (kJ/mol)', fontsize=16)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c79fe64-1639-42aa-8787-b4b7e55d3a68", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef2c2552-86c6-4921-92a1-d9c76f522741", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a1342e3c-67df-4d28-a9fb-8a6f59b658b6", + "metadata": {}, + "outputs": [], + "source": [ + "def _get_default_energy_table():\n", + " \"\"\"Returns energy table for residue-residue interactions.\n", + "\n", + " Reference:\n", + " Miyazawa, S., & Jernigan, R. L. (1996). Residue-residue potentials \n", + " with a favorable contact pair term and an unfavorable high packing density term,\n", + " for simulation and threading. J Mol Biol, 256(3), 623–644.\n", + "\n", + " Returns:\n", + " dict: A symmetric dictionary with residue pair tuples as keys and contact energies (in RT units) as values.\n", + " \"\"\"\n", + " residues = [\n", + " 'CYS', 'MET', 'PHE', 'ILE', 'LEU', 'VAL', 'TRP', 'TYR', 'ALA', 'GLY',\n", + " 'THR', 'SER', 'ASN', 'GLN', 'ASP', 'GLU', 'HIS', 'ARG', 'LYS', 'PRO'\n", + " ]\n", + "\n", + " # Extracted from the upper triangle of the table (manually transcribed)\n", + " energy_matrix = [\n", + " [-5.44],\n", + " [-4.99, -5.46],\n", + " [-5.80, -6.56, -7.26],\n", + " [-5.50, -6.02, -6.84, -6.54],\n", + " [-5.83, -6.41, -7.28, -7.04, -7.37],\n", + " [-4.96, -5.32, -6.29, -6.05, -6.48, -5.52],\n", + " [-4.95, -5.55, -6.16, -5.78, -6.14, -5.18, -5.06],\n", + " [-4.16, -4.91, -5.66, -5.25, -5.67, -4.62, -4.66, -4.17],\n", + " [-3.57, -3.94, -4.81, -4.58, -4.91, -4.04, -3.82, -3.36, -2.72],\n", + " [-3.16, -3.39, -4.13, -3.78, -4.16, -3.38, -3.42, -3.01, -2.31, -2.24],\n", + " [-3.11, -3.51, -4.28, -4.03, -4.34, -3.46, -3.22, -3.01, -2.32, -2.08, -2.12],\n", + " [-2.86, -3.03, -4.02, -3.52, -3.92, -3.05, -2.99, -2.78, -2.01, -1.82, -1.96, -1.67],\n", + " [-2.59, -2.95, -3.75, -3.24, -3.74, -2.83, -3.07, -2.76, -1.84, -1.74, -1.88, -1.58, -1.68],\n", + " [-2.85, -3.30, -4.10, -3.67, -4.04, -3.07, -3.11, -2.97, -1.89, -1.66, -1.90, -1.49, -1.71, -1.54],\n", + " [-2.41, -2.57, -3.48, -3.17, -3.40, -2.48, -2.84, -2.76, -1.70, -1.59, -1.80, -1.63, -1.68, -1.46, -1.21],\n", + " [-2.27, -2.89, -3.56, -3.27, -3.59, -2.67, -2.99, -2.79, -1.51, -1.22, -1.74, -1.48, -1.51, -1.42, -1.02, -0.91],\n", + " [-3.60, -3.98, -4.77, -4.14, -4.54, -3.58, -3.98, -3.52, -2.41, -2.15, -2.42, -2.11, -2.08, -1.98, -2.32, -2.15, -3.05],\n", + " [-2.57, -3.12, -3.98, -3.63, -4.03, -3.07, -3.41, -3.16, -1.83, -1.72, -1.90, -1.62, -1.64, -1.80, -2.29, -2.27, -2.16, -1.55],\n", + " [-1.95, -2.48, -3.36, -3.01, -3.37, -2.49, -2.69, -2.60, -1.31, -1.15, -1.31, -1.05, -1.21, -1.29, -1.68, -1.80, -1.35, -0.59, -0.12],\n", + " [-3.07, -3.45, -4.25, -3.76, -4.20, -3.32, -3.73, -3.19, -2.03, -1.87, -1.90, -1.57, -1.53, -1.73, -1.33, -1.26, -2.25, -1.70, -0.97, -1.75]\n", + " ]\n", + "\n", + " energy_table = {}\n", + "\n", + " for i, res_i in enumerate(residues):\n", + " for j, res_j in enumerate(residues[:i+1]):\n", + " energy = energy_matrix[i][j] + 2.27 # Adjusted energy value\n", + " energy_table[(res_i, res_j)] = energy\n", + " energy_table[(res_j, res_i)] = energy # symmetry\n", + "\n", + " return energy_table\n", + "\n", + "energy_table = _get_default_energy_table()\n", + "\n", + "\n", + "def convert_residue_codes(one_letter_tuple):\n", + " \"\"\"\n", + " Convert a tuple of one-letter amino acid codes to three-letter codes.\n", + " \n", + " Args:\n", + " one_letter_tuple: Tuple of one-letter amino acid codes (e.g., ('Q', 'E'))\n", + " \n", + " Returns:\n", + " Tuple of three-letter amino acid codes (e.g., ('Gln', 'Glu'))\n", + " \"\"\"\n", + " \n", + " # Mapping dictionary from one-letter to three-letter codes\n", + " aa_mapping = {\n", + " 'A': 'Ala', # Alanine\n", + " 'C': 'Cys', # Cysteine\n", + " 'D': 'Asp', # Aspartic acid\n", + " 'E': 'Glu', # Glutamic acid\n", + " 'F': 'Phe', # Phenylalanine\n", + " 'G': 'Gly', # Glycine\n", + " 'H': 'His', # Histidine\n", + " 'I': 'Ile', # Isoleucine\n", + " 'K': 'Lys', # Lysine\n", + " 'L': 'Leu', # Leucine\n", + " 'M': 'Met', # Methionine\n", + " 'N': 'Asn', # Asparagine\n", + " 'P': 'Pro', # Proline\n", + " 'Q': 'Gln', # Glutamine\n", + " 'R': 'Arg', # Arginine\n", + " 'S': 'Ser', # Serine\n", + " 'T': 'Thr', # Threonine\n", + " 'V': 'Val', # Valine\n", + " 'W': 'Trp', # Tryptophan\n", + " 'Y': 'Tyr', # Tyrosine\n", + " }\n", + " \n", + " # Convert each one-letter code to three-letter code\n", + " try:\n", + " three_letter_codes = tuple(aa_mapping[code.upper()].upper() for code in one_letter_tuple)\n", + " print('-'.join(three_letter_codes))\n", + " return three_letter_codes\n", + " except KeyError as e:\n", + " raise ValueError(f\"Invalid amino acid code: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "66c2ec1b-812d-4d9b-9290-5256a45ea5c8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing 8Y7S ...\tionerdss ...\tdG = 0.0496 KJ/mol\n" + ] + } + ], + "source": [ + "pdbid = '8y7s'\n", + "print(f'Processing {pdbid.upper()} ...', end='\\t')\n", + "# get pdb file and parse data\n", + "pdbfile = download_pdb_direct(pdbid)\n", + "chains = 'A,F'\n", + "# ionerdss prediction\n", + "print('ionerdss ...', end='\\t')\n", + "dG_pred = ionerdss_prediction(pdbfile, pdbid, chains)\n", + "print('dG = %.4f KJ/mol'%kbt_to_kj_mol(dG_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fda61b46-bc60-4367-8713-aab65aaef008", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/proaffinity-gnn/ci4c01850_si_003.xls b/proaffinity-gnn/ci4c01850_si_003.xls new file mode 100644 index 00000000..c151e7d5 Binary files /dev/null and b/proaffinity-gnn/ci4c01850_si_003.xls differ diff --git a/proaffinity-gnn/ci4c01850_si_004.xls b/proaffinity-gnn/ci4c01850_si_004.xls new file mode 100644 index 00000000..4dd5da5c Binary files /dev/null and b/proaffinity-gnn/ci4c01850_si_004.xls differ diff --git a/proaffinity-gnn/model.pkl b/proaffinity-gnn/model.pkl new file mode 100644 index 00000000..9b345fa4 Binary files /dev/null and b/proaffinity-gnn/model.pkl differ diff --git a/proaffinity-gnn/requirements.txt b/proaffinity-gnn/requirements.txt new file mode 100644 index 00000000..06b24b85 --- /dev/null +++ b/proaffinity-gnn/requirements.txt @@ -0,0 +1,47 @@ +certifi==2025.4.26 +charset-normalizer==3.4.2 +filelock==3.13.1 +fsspec==2024.6.1 +hf-xet==1.1.2 +huggingface-hub==0.33.2 +idna==3.10 +Jinja2==3.1.6 +joblib==1.4.2 +MarkupSafe==2.1.5 +mpmath==1.3.0 +networkx==3.2.1 +numpy==1.24.1 +nvidia-cublas-cu12==12.1.3.1 +nvidia-cuda-cupti-cu12==12.1.105 +nvidia-cuda-nvrtc-cu12==12.1.105 +nvidia-cuda-runtime-cu12==12.1.105 +nvidia-cudnn-cu12==8.9.2.26 +nvidia-cufft-cu12==11.0.2.54 +nvidia-curand-cu12==10.3.10.19 +nvidia-cusolver-cu12==11.4.5.107 +nvidia-cusparse-cu12==12.1.0.106 +nvidia-nccl-cu12==2.19.3 +nvidia-nvjitlink-cu12==12.1.105 +nvidia-nvtx-cu12==12.1.105 +packaging==25.0 +pillow==10.3.0 +psutil==7.0.0 +pyparsing==3.1.4 +PyYAML==6.0.2 +regex==2024.11.6 +requests==2.32.4 +safetensors==0.5.3 +scikit-learn==1.5.0 +scipy==1.10.1 +sympy==1.13.3 +threadpoolctl==3.5.0 +tokenizers==0.15.2 +torch==2.7.1+cu121 +torch_geometric==2.3.0 +torchaudio==2.2.2+cu121 +torchvision==0.17.2+cu121 +tqdm==4.67.1 +transformers==4.52.1 +triton==2.2.0 +typing_extensions==4.12.2 +urllib3==2.5.0 diff --git a/pyproject.toml b/pyproject.toml index f6d1ef7c..9f4ba5c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ authors = [ { name = "Sikao Guo", email = "sikaoguo@gmail.com" }, { name = "Mankun Sang", email = "msang2@jhu.edu" } ] -requires-python = ">=3.8" +requires-python = ">=3.9" keywords = ["NERDSS Simulation", "Model Setup", "Analysis Tools"] classifiers = [ "Development Status :: 5 - Production/Stable", @@ -36,13 +36,40 @@ dependencies = [ "scikit-learn", "requests", "ipympl", - "jupyter", - "notebook" + "networkx" # Core dependency for graph-based molecular modeling ] [project.optional-dependencies] +# Dependencies for running the test suite +test = ["pytest", "pytest-cov"] + +# Dependencies for advanced rendering with Ovito ovito_rendering = ["ovito", "imageio", "Pillow"] -tests = ["pytest", "pytest-cov"] + +# Dependencies for interactive development (Jupyter notebooks) +jupyter = ["jupyter", "jupyterlab", "ipykernel", "ipywidgets"] + +# Dependencies for building documentation +docs = ["furo", "nbsphinx"] + +# Install all optional dependencies at once +all = [ + # test dependencies + "pytest", + "pytest-cov", + # ovito_rendering dependencies + "ovito", + "imageio", + "Pillow", + # jupyter dependencies + "jupyter", + "jupyterlab", + "ipykernel", + "ipywidgets", + # docs dependencies + "furo", + "nbsphinx" +] [tool.setuptools] include-package-data = true diff --git a/tests/graph_based/test_reactions_generation_pipeline.py b/tests/graph_based/test_reactions_generation_pipeline.py new file mode 100644 index 00000000..83d32b9e --- /dev/null +++ b/tests/graph_based/test_reactions_generation_pipeline.py @@ -0,0 +1,156 @@ +""" +test_reactions_generation_pipeline.py + +Unit test for benchmarking the reaction and transformation enumeration pipeline +in the `ode_gen` package using the "8y7s" example molecular graph. + +This test verifies the correctness, performance structure, and minimal +functionality of the graph-based species and reaction generation pipeline, +which includes: + +1. Subgraph Enumeration: + - Uses `get_unique_fully_connected_subgraphs` to extract all unique + fully connected induced subgraphs (species) from the input molecular graph. + +2. Dimer Reaction Generation: + - Applies `find_all_dimer_reactions` to identify all valid pairwise + species interactions that result in a product graph. + - Uses `get_broken_edges` to annotate which bonds are removed in each reaction. + +3. Transformable Subgraph Detection: + - Uses `find_all_transformable_subgraph_pairs` to find species pairs + that differ only by one or more edges, indicating possible + edge-transformation reactions (e.g., conformational transitions). + +4. Structure Validation: + - Asserts the returned dataframes and metadata dictionary are well-formed. + - Ensures the number of species, reactions, and transformations is non-zero. + - Verifies presence of timing information and critical keys in the results. + +Test Strategy: +-------------- +- Implemented using Python's `unittest` framework. +- Can be run standalone or through `pytest` without modification. +- Designed for reproducibility and integration testing of the core + reaction graph enumeration pipeline. + +Usage: +------ +To run as a standalone test: + python -m unittest tests.benchmark.test_pipeline + +To run with pytest: + pytest tests/benchmark/test_pipeline.py -v + +Requires: +--------- +- NetworkX-based graph model (`get_example`) +- `ode_gen` modules: + - `complexes.subcomplexes` + - `reactions.dimer` + - `reactions.transformation` +- pandas, platform, and standard Python libraries + +Author: yying7@jh.edu +------- +Auto-generated and maintained as part of the ioNERDSS framework +for molecular complex modeling and reaction network generation. +""" + +import unittest +from pathlib import Path +import pandas as pd +import json + +from ionerdss.model.graph_based.complexes.examples import get_example +from ionerdss.model.graph_based.complexes.subcomplexes import get_unique_fully_connected_subgraphs +from ionerdss.model.graph_based.reactions.dimer import find_all_dimer_reactions, get_broken_edges +from ionerdss.model.graph_based.reactions.transformation import find_all_transformable_subgraph_pairs + +from datetime import datetime +import time +import platform + +def capture_environment_info(): + return { + "timestamp": datetime.now().isoformat(), + "platform": platform.system(), + "platform_version": platform.version(), + "python_version": platform.python_version(), + "hostname": platform.node(), + "cpu": platform.processor(), + } + +def benchmark_pipeline(graph_name="8y7s"): + G = get_example(graph_name) + results = {} + env_info = capture_environment_info() + + t0 = time.time() + species = get_unique_fully_connected_subgraphs(G) + t1 = time.time() + + reactions = find_all_dimer_reactions(species, use_multiprocessing=True) + t2 = time.time() + + reaction_df = pd.DataFrame([ + { + "product": list(r[2].nodes), + "part1": list(r[0]), + "part2": list(r[1]), + "bonds_broken": get_broken_edges(r[2], r[0], r[1]) + } + for r in reactions + ]) + + transformations = find_all_transformable_subgraph_pairs(G, species) + t3 = time.time() + + transformations_df = pd.DataFrame([ + { + "monomer_1_nodes": list(t1.nodes), + "monomer_2_nodes": list(t2.nodes), + "diff": list(set(t1.edges(data="type")) ^ set(t2.edges(data="type"))) + } + for t1, t2 in transformations + ]) + + results["timing"] = { + "subgraph_enumeration": round(t1 - t0, 4), + "dimer_reactions": round(t2 - t1, 4), + "transformable_pairs": round(t3 - t2, 4), + "total": round(t3 - t0, 4), + } + results["n_species"] = len(species) + results["n_reactions"] = len(reaction_df) + results["n_transformations"] = len(transformations_df) + results["environment"] = env_info + + return reaction_df, transformations_df, results + + +class TestBenchmarkPipeline(unittest.TestCase): + + def test_benchmark_output_8y7s(self): + graph_name = "8y7s" + reaction_df, transformation_df, metadata = benchmark_pipeline(graph_name) + + # Basic structure checks + self.assertIsInstance(reaction_df, pd.DataFrame) + self.assertIsInstance(transformation_df, pd.DataFrame) + self.assertIsInstance(metadata, dict) + + # Output sanity + self.assertGreaterEqual(len(reaction_df), 1, "No dimer reactions found") + self.assertGreaterEqual(len(transformation_df), 0, " Transformable subgraphs found while none expected") + self.assertIn("timing", metadata) + self.assertIn("n_species", metadata) + + # Timing keys present + for key in ["subgraph_enumeration", "dimer_reactions", "transformable_pairs", "total"]: + self.assertIn(key, metadata["timing"]) + self.assertGreaterEqual(metadata["timing"][key], 0.0) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/graph_based/test_subcomplexes_extraction.py b/tests/graph_based/test_subcomplexes_extraction.py new file mode 100644 index 00000000..df9666f2 --- /dev/null +++ b/tests/graph_based/test_subcomplexes_extraction.py @@ -0,0 +1,142 @@ +""" +test_subcomplexes_extraction.py + +Unit tests for `get_unique_fully_connected_subgraphs` from +`ionerdss.model.graph_based.complexes.subcomplexes`. + +This test suite validates the correctness and performance of subgraph enumeration +in various synthetic graph configurations: + +1. `TestFullyConnectedSubgraphDetection8y7s` + - A small symmetric 4-node complete graph with edge types + - Expected to return 6 unique fully connected subgraphs + +2. `TestFullyConnectedSubgraphDetectionHetero8mer` + - A ring of 8 uniquely typed nodes and edges + - Expected to return 57 unique subgraphs (sum of 1 to 8) + +3. `TestFullyConnectedSubgraphDetectionAsymmetric` + - A 4-node asymmetric graph with repeated node and edge types + - Expected to return 10 unique subgraphs + +Each test measures performance and emits a warning if runtime exceeds 0.1s, +and fails if it exceeds 10s. + +Author: yying7@jh.edu +------- +Auto-generated and maintained as part of the ioNERDSS framework +for molecular complex modeling and reaction network generation. +""" + +import unittest +import networkx as nx +import time +import warnings + +# Replace with actual import path +from ionerdss.model.graph_based.complexes.subcomplexes import get_unique_fully_connected_subgraphs + +class TestFullyConnectedSubgraphDetection8y7s(unittest.TestCase): + def setUp(self): + self.G = nx.Graph() + self.G.add_node(0, type="X") + self.G.add_node(1, type="X") + self.G.add_node(2, type="X") + self.G.add_node(3, type="X") + + self.G.add_edge(0, 1, type="a") + self.G.add_edge(0, 2, type="b") + self.G.add_edge(0, 3, type="c") + self.G.add_edge(2, 3, type="a") + self.G.add_edge(1, 3, type="b") + self.G.add_edge(1, 2, type="c") + + def test_unique_subgraphs(self): + start = time.time() + result = get_unique_fully_connected_subgraphs(self.G) + elapsed = time.time() - start + + if elapsed > 10.0: + self.fail(f"ERROR: Test terminated — elapsed time {elapsed:.2f}s exceeds 10 seconds.") + elif elapsed > 0.01: + warnings.warn(f"WARNING: Elapsed time {elapsed:.2f}s exceeds 0.1 second.") + + self.assertEqual( + len(result), 6, + f"ERROR: Expected 6 unique subgraphs, but got {len(result)}." + ) + + print(f"Test passed in {elapsed:.4f} seconds.") + +class TestFullyConnectedSubgraphDetectionHetero8mer(unittest.TestCase): + def setUp(self): + self.G = nx.Graph() + self.G.add_node(0, type="A") + self.G.add_node(1, type="B") + self.G.add_node(2, type="C") + self.G.add_node(3, type="D") + self.G.add_node(4, type="E") + self.G.add_node(5, type="F") + self.G.add_node(6, type="G") + self.G.add_node(7, type="H") + + self.G.add_edge(0, 1, type="ab") + self.G.add_edge(1, 2, type="bc") + self.G.add_edge(2, 3, type="cd") + self.G.add_edge(3, 4, type="de") + self.G.add_edge(4, 5, type="ef") + self.G.add_edge(5, 6, type="fg") + self.G.add_edge(6, 7, type="gh") + self.G.add_edge(7, 0, type="ha") + + def test_unique_subgraphs(self): + start = time.time() + result = get_unique_fully_connected_subgraphs(self.G) + elapsed = time.time() - start + + if elapsed > 10.0: + self.fail(f"ERROR: Test terminated — elapsed time {elapsed:.2f}s exceeds 10 seconds.") + elif elapsed > 0.1: + warnings.warn(f"WARNING: Elapsed time {elapsed:.2f}s exceeds 0.1 second.") + + self.assertEqual( + len(result), 57, + f"ERROR: Expected 57 unique subgraphs, but got {len(result)}." + ) # 7 * 8 + 1 = 57 + + print(f"Test passed in {elapsed:.4f} seconds.") + +class TestFullyConnectedSubgraphDetectionAsymmetric(unittest.TestCase): + def setUp(self): + self.G = nx.Graph() + # Add typed nodes + self.G.add_node(0, type="A") + self.G.add_node(1, type="B") + self.G.add_node(2, type="C") + self.G.add_node(3, type="A") + + # Add typed edges + self.G.add_edge(0, 1, type="ab") + self.G.add_edge(1, 2, type="bc") + self.G.add_edge(2, 3, type="ca") + self.G.add_edge(1, 3, type="ab") + + def test_unique_subgraphs(self): + start = time.time() + result = get_unique_fully_connected_subgraphs(self.G) + elapsed = time.time() - start + + if elapsed > 10.0: + self.fail(f"ERROR: Test terminated — elapsed time {elapsed:.2f}s exceeds 10 seconds.") + elif elapsed > 0.1: + warnings.warn(f"WARNING: Elapsed time {elapsed:.2f}s exceeds 0.1 second.") + + self.assertEqual( + len(result), 10, + f"ERROR: Expected 10 unique subgraphs, but got {len(result)}." + ) # 3 + 3 + 3 + 1 = 10 + + print(f"Test passed in {elapsed:.4f} seconds.") + +if __name__ == '__main__': + unittest.main() diff --git a/tests/graph_based/test_symmetry_group_identification.py b/tests/graph_based/test_symmetry_group_identification.py new file mode 100644 index 00000000..4363ec7f --- /dev/null +++ b/tests/graph_based/test_symmetry_group_identification.py @@ -0,0 +1,81 @@ +""" +test_pointgroup_symmetry.py + +Unit tests for symmetry classification using the PointGroup class in +`ionerdss.model.graph_based.symmetry.pointgroup`. + +This test suite verifies point group identification from 3D geometry +and element types using canonical symmetric structures. + +Tests +----- +1. Octahedral (Oh) symmetry from an SF6-like configuration +2. Tetrahedral (Td) symmetry from a regular tetrahedron +3. Lower symmetry in a flipped tetrahedral dimer (C2 or D2h-like) + +Each test ensures the returned point group string is valid and structurally expected. + +Author: yying7@jh.edu +------- +Auto-generated and maintained as part of the ioNERDSS framework +for molecular complex modeling and reaction network generation. +""" + +import unittest +import numpy as np +from ionerdss.model.graph_based.symmetry.pointgroup import PointGroup + +class TestPointGroupSymmetry(unittest.TestCase): + def test_sf6_octrahedral_symmetry(self): + """Test that SF6-like molecule gives Oh point group.""" + coords = [ + [0.000, 0.000, 0.000], + [0.000, 0.000, 1.561], + [0.000, 1.561, 0.000], + [0.000, 0.000, -1.561], + [0.000, -1.561, 0.000], + [1.561, 0.000, 0.000], + [-1.561, 0.000, 0.000], + ] + symbols = ['S', 'F', 'F', 'F', 'F', 'F', 'F'] + pg = PointGroup(positions=coords, symbols=symbols) + pg_str = pg.get_point_group() + self.assertIsInstance(pg_str, str) + # Octahedral Symmetry + self.assertIn(pg_str, {"O", "Oh", "O_h"}) + + def test_tetrahedron_td_symmetry(self): + """Test regular tetrahedron gives Td symmetry.""" + coords = np.array([ + [ 1, 1, 1], + [-1, -1, 1], + [-1, 1, -1], + [ 1, -1, -1] + ]) / np.sqrt(3) + pg = PointGroup(positions=coords, symbols=["B"] * 4) + pg_str = pg.get_point_group() + self.assertIsInstance(pg_str, str) + # Tetrahedral symmetry + self.assertIn(pg_str, {"T", "Td", "T_d"}) + + def test_tetrahedral_dimer(self): + """Test dimer of tetrahedra flipped across Z axis.""" + tetra = np.array([ + [ 1, 1, 1], + [-1, -1, 1], + [-1, 1, -1], + [ 1, -1, -1] + ]) / np.sqrt(3) + tetra_A = tetra.copy() + tetra_B = tetra.copy() + tetra_B[:, 2] *= -1 # flip Z axis + + combined = np.vstack([tetra_A, tetra_B]) + pg = PointGroup(positions=combined, symbols=["B"] * 8) + pg_str = pg.get_point_group() + self.assertIsInstance(pg_str, str) + self.assertGreater(len(pg_str), 0) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_analysis_optional_deps.py b/tests/test_analysis_optional_deps.py index 50801fde..3e45b537 100644 --- a/tests/test_analysis_optional_deps.py +++ b/tests/test_analysis_optional_deps.py @@ -8,7 +8,7 @@ # Attempt to import Analysis, but allow tests to run even if it fails at module level # due to other reasons, focusing specific tests on visualize_trajectory. try: - from ionerdss.nerdss_analysis.analysis import Analysis + from ionerdss.analysis.core import Analyzer IONERDSS_ANALYSIS_AVAILABLE = True except ImportError: IONERDSS_ANALYSIS_AVAILABLE = False @@ -47,7 +47,7 @@ def setUp(self): f.write(DUMMY_XYZ_CONTENT) # Initialize Analysis instance pointing to the parent of DATA - self.analysis_instance = Analysis(save_dir=self.save_folder) + self.analysis_instance = Analyzer(save_dir=self.save_folder) def tearDown(self): self.temp_dir.cleanup() diff --git a/tests/test_nerdss_model_pdb_model.py b/tests/test_nerdss_model_pdb_model.py index c8774905..b8654558 100644 --- a/tests/test_nerdss_model_pdb_model.py +++ b/tests/test_nerdss_model_pdb_model.py @@ -3,7 +3,8 @@ import math import tempfile from pathlib import Path - +# import sys +# sys.path.append('/home/local/WIN/msang2/mankun/GitHub/ionerdss') from ionerdss import PDBModel, ParseComplexes @@ -79,7 +80,7 @@ def build_pdb_model(self, pdb_id): save_pymol_script=False, standard_output=False, ) - pdb_model.regularize_homologous_chains( + pdb_model.regularize_repeated_chains( dist_threshold_intra=3.5, dist_threshold_inter=3.5, angle_threshold=25.0, diff --git a/tests/test_odesolver.py b/tests/test_ode_solver.py similarity index 56% rename from tests/test_odesolver.py rename to tests/test_ode_solver.py index 6325e815..58749f47 100644 --- a/tests/test_odesolver.py +++ b/tests/test_ode_solver.py @@ -1,3 +1,42 @@ +""" +test_ode_solver.py + +Unit tests for reaction ODE solver utilities in the `ionerdss` package. + +Tested Functions +---------------- +- `calculate_macroscopic_reaction_rates` +- `reaction_dydt` +- `solve_reaction_ode` + +Test Scenarios +-------------- +1. `test_calculate_macroscopic_reaction_rates` + - Tests basic macroscopic rate calculation with a simple linear system. + +2. `test_reaction_dydt` + - Tests time derivative calculation for a model enzymatic reaction: + E + S --> ES (k1) + ES --> E + P (k2) + - Checks that the rate of change `dy/dt` matches expected stoichiometric flow. + +3. `test_solve_reaction_ode` + - Ensures the ODE system solves without error on a simple bidirectional 2-species system. + +Assumptions +----------- +- Reactions follow mass-action kinetics. +- Stoichiometry is represented with `reactant_matrix` and `product_matrix`. +- Reaction rate constants are provided as a flat list `k`. + +This test suite does not generate plots, nor does it test solver accuracy over long time spans. + +Author: yying7@jh.edu +------- +Auto-generated and maintained as part of the ioNERDSS framework +for molecular complex modeling and reaction network generation. +""" + import unittest import numpy as np from ionerdss import calculate_macroscopic_reaction_rates, reaction_dydt, solve_reaction_ode diff --git a/tests/test_simple_gillespie.py b/tests/test_simple_gillespie.py index f865bd5a..54b1ef6a 100644 --- a/tests/test_simple_gillespie.py +++ b/tests/test_simple_gillespie.py @@ -1,6 +1,41 @@ +""" +test_simple_gillespie.py + +Unit tests for `SimpleGillespieSimulator` in the `ionerdss` package. + +Tested Components +----------------- +- `convert_to_microscopic_rate_constants`: + Converts macroscopic rate constants to molecule-based (microscopic) rates + based on Avogadro's number and reaction order. + +- `calculate_propensity`: + Calculates the reaction propensities for a set of discrete molecular species. + +- `gillespie_simulation`: + Runs the full stochastic simulation algorithm (SSA) using the Gillespie direct method. + +Test Model +---------- +The test reactions represent the following system: + R1: A + B → C with macroscopic rate k1 = 1.0e6 + R2: 2C → A + 2B with macroscopic rate k2 = 5.0 + +Initial species concentrations: + y = [A, B, C] = [10, 5, 3] +Simulation volume: + 1e-18 L + +Author: yying7@jh.edu +------- +Part of the ioNERDSS modeling framework. +""" + import unittest import numpy as np -from ionerdss import SimpleGillespieSimulator +# import sys +# sys.path.append('../') +from ionerdss import SimpleGillespie, AdaptiveRates class TestReactionGillespie(unittest.TestCase): @@ -11,7 +46,7 @@ def setUp(self): self.product_matrix = np.array([[0, 0, 1], [1, 2, 1]]) self.volume = 1.0e-18 # Litre! self.y = np.array([10, 5, 3]) - self.sgs = SimpleGillespieSimulator() + self.sgs = SimpleGillespie def test_convert_to_microscopic_rate_constants(self): microscopic_rate_constants = self.sgs.convert_to_microscopic_rate_constants( @@ -38,6 +73,35 @@ def test_gillespie_simulation(self): self.macroscopic_rate_constants, record_interval, full_update_scheme ) + def test_gillespie_simulation_1D_adaptive_rate(self): + + ratelist = np.array([10, 0.2]) + y_init = np.array([10, 3]) + reactant_matrix = np.array([[2, 0], [0, 1]]) + product_matrix = np.array([[0, 1], [2, 0]]) + Length = 50 + diffusion_constants = np.array([0.1, 0.05]) + sigmalist = np.array([1, 0]) + reverse_reaction_pairs = {0:1} + + max_time = 10.0 + record_interval = 0.01 + full_update_scheme = True + + def rate_update_rule(ratelist, y_curr, reactant_matrix, Length): + return AdaptiveRates.adaptive_bimolecular_rate_1D( + ratelist, y_curr, reactant_matrix, Length, + diffusion_constants, sigmalist, reverse_reaction_pairs, + ) + + y_record, t_record = self.sgs.run_Gillespie( + max_time, y_init, reactant_matrix, product_matrix, + ratelist, Length, macroscopic=True, + rate_update_rules=rate_update_rule, + record_interval=record_interval, + full_update_scheme=full_update_scheme + ) + # You can add more assertions based on the expected behavior of your simulation if __name__ == '__main__': diff --git a/tests/unit/math/test_angles.py b/tests/unit/math/test_angles.py new file mode 100644 index 00000000..b7210b9c --- /dev/null +++ b/tests/unit/math/test_angles.py @@ -0,0 +1,116 @@ +import unittest +import numpy as np +from ionerdss.math.angles import ( + absolute_error_to_angle, + angles_between_vector_and_vectors, + angles_from_points, + + ) + +class TestAngles(unittest.TestCase): + + def test_absolute_error_to_angle_basic(self): + points = np.array([[1, 0, 0], [0, 2, 0], [0, 0, 4]]) + error = 0.1 + expected = np.array([0.1 / 1, 0.1 / 2, 0.1 / 4]) + result = absolute_error_to_angle(error, points) + np.testing.assert_allclose(result, expected, rtol=1e-6) + + def test_absolute_error_to_angle_with_small_radius(self): + points = np.array([[0, 0, 0], [1e-12, 0, 0]]) + error = 0.1 + result = absolute_error_to_angle(error, points, tol=1e-8) + self.assertTrue(np.all(result >= 0)) + self.assertAlmostEqual(result[0], 0.1 / 1e-8) + self.assertAlmostEqual(result[1], 0.1 / 1e-8) + + def test_angles_between_vector_and_vectors_basic(self): + ref = np.array([1, 0, 0]) + angle_deg = 47.3 + angle_rad = np.deg2rad(angle_deg) + target_47_3 = np.array([np.cos(angle_rad), np.sin(angle_rad), 0]) + + targets = np.array([ + [1, 0, 0], # 0 degrees + [0, 1, 0], # 90 degrees + [-1, 0, 0], # 180 degrees + [1, 1, 0], # ~45 degrees + target_47_3, # 47.3 degrees + ]) + + result = angles_between_vector_and_vectors(ref, targets) + expected = np.array([ + 0.0, + np.pi / 2, + np.pi, + np.pi / 4, + angle_rad, + ]) + np.testing.assert_allclose(result, expected, rtol=1e-6) + + def test_angles_between_vector_and_zero_vector(self): + ref = np.array([1, 0, 0]) + targets = np.array([ + [0, 0, 0], # zero norm + [0, 0, 0], # zero norm + ]) + result = angles_between_vector_and_vectors(ref, targets) + expected = np.array([0.0, 0.0]) + np.testing.assert_array_equal(result, expected) + + def test_angles_between_vector_and_vectors_with_tolerance(self): + ref = np.array([1e-12, 0, 0]) + targets = np.array([[1, 0, 0]]) + result = angles_between_vector_and_vectors(ref, targets, tol=1e-8) + expected = np.array([0.0]) # Denominator too small, treated as 0 + np.testing.assert_array_equal(result, expected) + + def test_angles_from_points(self): + + # initialize list + p1 = [] + p2 = [] + p3 = [] + + # 90 degrees at vertex (1, 0, 0] + p1.append([1, 1, 0]) + p2.append([1, 0, 0]) + p3.append([2, 0, 0]) + + # 180 degrees at center + p1.append([0, 0, 0]) + p2.append([1, 0, 0]) + p3.append([2, 0, 0]) + + # 60 degrees at any vertex of equilateral triangle + p1.append([0, 0, 0]) + p2.append([1, 0, 0]) + p3.append([0.5, np.sqrt(3)/2, 0]) + + # colinear inward (0 deg) + p1.append([2, 0, 0]) + p2.append([0, 0, 0]) + p3.append([1, 0, 0]) + + # tetrahedron vertices + # Approx 70.53° angle between two bonds in tetrahedral geometry + p1.append([1, 1, 1]) + p2.append([0, 0, 0]) + p3.append([1, -1, -1]) + + # test numerical stability + p1.append([-1, 0, 0]) + p2.append([0, 0, 0]) + p3.append([1, 1e-7, 0]) + + # test + angle = angles_from_points(p1, p2, p3) + np.testing.assert_allclose(angle, np.array([np.pi/2.0, + 0.0, + 2 * np.pi/3.0, + np.pi, + np.pi-1.910633236249, + 9.884312e-08])) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/math/test_bond_geometry.py b/tests/unit/math/test_bond_geometry.py new file mode 100644 index 00000000..317f5e75 --- /dev/null +++ b/tests/unit/math/test_bond_geometry.py @@ -0,0 +1,79 @@ +""" +Unit tests for bond_geometry.py + +This test suite verifies the correctness of geometric computations performed +in the bond_geometry module, including: + +- Theta (θ₁, θ₂): angles between interaction vectors and the inter-chain vector +- Phi (φ₁, φ₂): signed angles between normal vectors and interaction planes +- Omega (ω): signed torsional angle between interaction vectors around inter-chain axis +- Projection-based sign corrections for dihedral angles +- Generation of orthogonal normal vectors avoiding gimbal lock +- Consistency of vector operations (magnitude, unit vector) + +The test cases include: +- A symmetric arrangement with known expected angles +- A case with colinear interaction vectors (degenerate torsion) +- A fully general, non-coplanar configuration for torsion validation +- Edge case tests for helper utilities (_magnitude, _unit) +- Verifications that all returned angles lie within valid bounds (±π) +""" + +import unittest +import numpy as np +from math import pi +from ionerdss.math import bond_geometry + +class TestBondGeometry(unittest.TestCase): + + def setUp(self): + # Generic COM and binding sites for varied geometric testing + self.com1 = [0.0, 0.0, 0.0] + self.com2 = [0.0, 0.0, 2.0] + + def test_colinear_case(self): + site1 = [0.0, 0.0, 0.5] + site2 = [0.0, 0.0, 1.5] + angles = bond_geometry.compute_bond_angles_and_length_auto( + self.com1, self.com2, site1, site2 + ) + theta1, theta2, phi1, phi2, omega, sigma_mag, _, _ = angles + self.assertAlmostEqual(omega, 0.0, delta=1e-6) + self.assertTrue(all(-pi <= x <= pi or np.isnan(x) for x in [theta1, theta2, phi1, phi2, omega])) + + def test_arbitrary_torsion_case(self): + site1 = [1.0, 0.0, 0.5] + site2 = [-1.0, 1.0, 1.5] + angles = bond_geometry.compute_bond_angles_and_length_auto( + self.com1, self.com2, site1, site2 + ) + theta1, theta2, phi1, phi2, omega, sigma_mag, _, _ = angles + self.assertTrue(all(-pi <= x <= pi or np.isnan(x) for x in [theta1, theta2, phi1, phi2, omega])) + self.assertAlmostEqual(sigma_mag, 2.44948974278, places=4) + self.assertAlmostEqual(theta1, 0.9911565864311924, places=4) + self.assertAlmostEqual(theta2, 0.8224691545143296, places=4) + self.assertAlmostEqual(phi1, 1.0610566479633896, places=4) + self.assertAlmostEqual(phi2, -1.97568811307998, places=4) + self.assertAlmostEqual(omega, 2.224122132419503, places=4) + + def test_unit_and_magnitude_functions(self): + v = [3, 4, 0] + mag = bond_geometry._magnitude(v) + self.assertAlmostEqual(mag, 5.0) + unit = bond_geometry._unit(v) + expected_unit = [0.6, 0.8, 0.0] + for a, b in zip(unit, expected_unit): + self.assertAlmostEqual(a, b, places=6) + + def test_generate_normals(self): + bind1 = [1, 0, 0] + bind2 = [-1, 0, 0] + normal1, normal2 = bond_geometry.generate_normals_from_binding_sites( + self.com1, self.com2, bind1, bind2 + ) + # Check if they are unit length away from COM + self.assertAlmostEqual(np.linalg.norm(np.array(normal1) - np.array(self.com1)), 1.0, places=6) + self.assertAlmostEqual(np.linalg.norm(np.array(normal2) - np.array(self.com2)), 1.0, places=6) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/math/test_coords.py b/tests/unit/math/test_coords.py new file mode 100644 index 00000000..ad419327 --- /dev/null +++ b/tests/unit/math/test_coords.py @@ -0,0 +1,89 @@ +import unittest +import numpy as np +from ionerdss.math.coords import Coords, get_perpendicular_vector + +class TestCoords(unittest.TestCase): + + def test_addition_and_subtraction(self): + a = Coords(1, 2, 3) + b = Coords(4, 5, 6) + self.assertEqual(a + b, Coords(5, 7, 9)) + self.assertEqual(b - a, Coords(3, 3, 3)) + + def test_distance_and_distance_squared(self): + a = Coords(0, 0, 0) + b = Coords(3, 4, 0) + self.assertAlmostEqual(a.distance(b), 5.0) + self.assertEqual(a.distance_squared(b), 25) + + def test_str_and_repr(self): + a = Coords(1.2345, 6.7890, -3.210) + # Python’s default rounding for "{:.3f}".format(1.2345) + # is not rounding up; it gives "1.234". + self.assertEqual(str(a), "(1.234, 6.789, -3.210)") + self.assertEqual(repr(a), "Coords(x=1.234, y=6.789, z=-3.210)") + + def test_equality(self): + a = Coords(1.0000001, 2.0, 3.0) + b = Coords(1.0, 2.0, 3.0) + self.assertTrue(a == b) + + def test_iteration(self): + a = Coords(1, 2, 3) + self.assertEqual(list(a), [1, 2, 3]) + + def test_to_tuple_and_numpy(self): + a = Coords(1, 2, 3) + self.assertEqual(a.to_tuple(), (1.0, 2.0, 3.0)) + np.testing.assert_array_equal(a.to_numpy(), np.array([1.0, 2.0, 3.0])) + + def test_from_numpy_valid(self): + arr = [1, 2.5, -3] + c = Coords.from_numpy(arr) + self.assertEqual(c, Coords(1.0, 2.5, -3.0)) + + def test_from_numpy_invalid_type(self): + with self.assertRaises(TypeError): + Coords.from_numpy("invalid") + + def test_from_numpy_wrong_length(self): + with self.assertRaises(ValueError): + Coords.from_numpy([1, 2]) + + def test_from_numpy_invalid_values(self): + with self.assertRaises(TypeError): + Coords.from_numpy([1, "bad", 3]) + + +class TestGetPerpendicularVector(unittest.TestCase): + + def test_3d_perpendicular_vector(self): + v = np.array([1.0, 0.0, 0.0]) + perp = get_perpendicular_vector(v) + np.testing.assert_allclose(np.dot(perp, v), 0.0, atol=1e-8) + self.assertAlmostEqual(np.linalg.norm(perp), 1.0, places=6) + + def test_coords_input(self): + v = Coords(0, 1, 0) + perp = get_perpendicular_vector(v) + np.testing.assert_allclose(np.dot(perp, v.to_numpy()), 0.0, atol=1e-8) + self.assertAlmostEqual(np.linalg.norm(perp), 1.0, places=6) + + def test_vector_not_normalized(self): + v = [1.0, 2.0, 3.0] + perp = get_perpendicular_vector(v, normalize=False) + self.assertAlmostEqual(np.dot(perp, v), 0.0, places=6) + + def test_zero_vector(self): + with self.assertRaises(ValueError): + get_perpendicular_vector([0, 0, 0]) + + def test_2d_vector(self): + v = [1, 0] + perp = get_perpendicular_vector(v) + self.assertEqual(len(perp), 2) + self.assertAlmostEqual(np.dot(perp, v), 0.0, places=6) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/math/test_diffusion_constants.py b/tests/unit/math/test_diffusion_constants.py new file mode 100644 index 00000000..277047a5 --- /dev/null +++ b/tests/unit/math/test_diffusion_constants.py @@ -0,0 +1,71 @@ +""" +Unit tests for the diffusion constant calculation module in `ionerdss.math.diffusion_constant`. + +This test suite verifies the correctness and physical behavior of the function +`compute_diffusion_constants_nm_us`, which computes translational and rotational +diffusion constants of spherical particles (e.g., proteins) in solution based on +the Einstein-Stokes equations. + +Tests included: +- `test_typical_radius`: Validates output for a 5 nm radius sphere in water at 298.15 K. +- `test_diffusion_scales_with_radius`: Verifies inverse scaling of diffusion constants with radius. +- `test_custom_temperature_viscosity`: Confirms output at non-default temperature and viscosity. +- `test_zero_radius`: Ensures zero radius raises a ValueError. +- `test_negative_radius`: Ensures negative radius raises a ValueError. + +All constants are validated against expected physical behavior and known analytical outputs. +""" + +import unittest + +from ionerdss.math.diffusion_constant import ( + compute_diffusion_constants_nm_us, +) + + +# Assume compute_diffusion_constants_nm_us is in a module named `diffusion` +# from your_module import compute_diffusion_constants_nm_us + + +class TestDiffusionConstants(unittest.TestCase): + + def test_typical_radius(self): + radius_nm = 5.0 # Typical protein radius + d_t, d_r = compute_diffusion_constants_nm_us(radius_nm) + + self.assertTrue(d_t > 0, "Translational diffusion should be positive") + self.assertTrue(d_r > 0, "Rotational diffusion should be positive") + + # Rough theoretical estimates (not strict values) + self.assertAlmostEqual(d_t, 49.074621908890364) + self.assertAlmostEqual(d_r, 1.4722386572667108) + + def test_diffusion_scales_with_radius(self): + small_radius = 2.0 + large_radius = 10.0 + + d_t_small, d_r_small = compute_diffusion_constants_nm_us(small_radius) + d_t_large, d_r_large = compute_diffusion_constants_nm_us(large_radius) + + self.assertTrue(d_t_small > d_t_large, "Translational diffusion should decrease with radius") + self.assertTrue(d_r_small > d_r_large, "Rotational diffusion should decrease rapidly with radius³") + + def test_custom_temperature_viscosity(self): + radius_nm = 5.0 + temp = 310 # Body temperature + viscosity = 1e-3 # Slightly more viscous fluid + + d_t, d_r = compute_diffusion_constants_nm_us(radius_nm, temperature_kelvin=temp, viscosity_pas=viscosity) + self.assertIsInstance(d_t, float) + self.assertIsInstance(d_r, float) + + def test_zero_radius(self): + with self.assertRaises(ValueError): + compute_diffusion_constants_nm_us(0) + + def test_negative_radius(self): + with self.assertRaises(ValueError): + compute_diffusion_constants_nm_us(-5) + +if __name__ == '__main__': + unittest.main() diff --git a/tests/unit/math/test_inertia_tensors.py b/tests/unit/math/test_inertia_tensors.py new file mode 100644 index 00000000..14b5a751 --- /dev/null +++ b/tests/unit/math/test_inertia_tensors.py @@ -0,0 +1,111 @@ +""" +test_inertia_tensors.py + +Unit tests for `inertia_tools.py`, which provides mathematical tools for analyzing +3D symmetry, moment of inertia tensors, and rotational properties of molecular assemblies. + +The module includes functionality for: +- Computing normalized inertia tensors of point distributions +- Detecting degeneracy in eigenvalues (e.g., for identifying rotational symmetries) +- Locating the unique non-degenerate eigenvalue (used to identify symmetry axes) +- Generating perpendicular vectors (in 3D or general nD) + +These tests validate numerical correctness, geometric consistency, +and error handling for various structured and degenerate configurations. + +Test coverage includes: +- Perfect symmetry shapes (e.g., square, equilateral triangle) +- Degenerate and non-degenerate eigenvalue configurations +- Input validation and edge cases for vector operations +""" + +import unittest +import numpy as np +from ionerdss.math.inertia_tensors import ( + get_inertia_tensor, + get_degeneracy, + get_non_degenerated +) + +class TestInertiaTensor(unittest.TestCase): + + def test_tensor_for_square_xy_plane(self): + # Square in XY plane + coords = np.array([[1, 0, 0], [-1, 0, 0], [0, 1, 0], [0, -1, 0]]) + I = get_inertia_tensor(coords) + eigvals, eigvecs = np.linalg.eigh(I) + + # Should show degeneracy in x and y axes + degeneracy = get_degeneracy(eigvals) + self.assertEqual(degeneracy, 2) + + # Non-degenerate eigenvalue should correspond to Z axis + idx = get_non_degenerated(eigvals) + main_axis = eigvecs[:, idx] + # Should be aligned with Z-axis + self.assertTrue(np.allclose(np.abs(main_axis), [0, 0, 1], atol=1e-6)) + + def test_tensor_for_equilateral_triangle(self): + # Triangle in XY plane centered at origin + coords = np.array([ + [1, 0, 0], + [-0.5, np.sqrt(3)/2, 0], + [-0.5, -np.sqrt(3)/2, 0] + ]) + I = get_inertia_tensor(coords) + eigvals, eigvecs = np.linalg.eigh(I) + degeneracy = get_degeneracy(eigvals) + self.assertEqual(degeneracy, 2) + + def test_tensor_with_perturbation_breaks_degeneracy(self): + coords = np.array([ + [1, 0, 0], + [-1, 0, 0], + [0, 1, 0], + [0, -1.1, 0] # small asymmetry + ]) + I = get_inertia_tensor(coords) + eigvals, _ = np.linalg.eigh(I) + degeneracy = get_degeneracy(eigvals, tolerance=0.01) + self.assertEqual(degeneracy, 1) + + +class TestDegeneracy(unittest.TestCase): + + def test_degenerate_two_equal(self): + vals = [1.0, 1.0, 2.0] + self.assertEqual(get_degeneracy(vals), 2) + + def test_all_degenerate(self): + vals = [2.0, 2.0, 2.0] + self.assertEqual(get_degeneracy(vals), 3) + + def test_all_unique(self): + vals = [1.0, 2.0, 3.0] + self.assertEqual(get_degeneracy(vals), 1) + + def test_sensitive_to_tolerance(self): + vals = [1.0, 1.05, 2.0] + self.assertEqual(get_degeneracy(vals, tolerance=0.1), 2) + self.assertEqual(get_degeneracy(vals, tolerance=0.01), 1) + + +class TestNonDegenerateIndex(unittest.TestCase): + + def test_index_detection(self): + vals = [1.0, 1.0, 2.0] + self.assertEqual(get_non_degenerated(vals), 2) + + vals = [2.0, 1.0, 2.0] + self.assertEqual(get_non_degenerated(vals), 1) + + vals = [3.0, 2.9, 3.0] + self.assertEqual(get_non_degenerated(vals, tolerance=0.05), 1) + + def test_raises_if_no_unique(self): + vals = [1.0, 1.0, 1.0] + with self.assertRaises(RuntimeError): + get_non_degenerated(vals) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/math/test_rotations.py b/tests/unit/math/test_rotations.py new file mode 100644 index 00000000..190e4f7b --- /dev/null +++ b/tests/unit/math/test_rotations.py @@ -0,0 +1,86 @@ +""" +test_rotations.py + +Unit tests for `math/rotations.py`, which defines tools for working with 3D +rotational symmetry using axis-angle representations. + +Tests cover: +- Construction of proper Cₙ rotation matrices +- Construction of improper Sₙ operations (rotation + reflection) +- Orthogonality and determinant of generated matrices +- Error handling for invalid input axes +""" + +import unittest +import numpy as np +from math import isclose +from ionerdss.math.rotations import ( + rotation_matrix, + Rotation, + ImproperRotation +) + +class TestRotationMatrix(unittest.TestCase): + + def test_rotation_identity(self): + axis = [1, 0, 0] + mat = rotation_matrix(axis, 0.0) + np.testing.assert_allclose(mat, np.eye(3), atol=1e-8) + + def test_rotation_known_angle(self): + axis = [0, 0, 1] + angle = np.pi / 2 # 90 degrees + vec = np.array([1, 0, 0]) + mat = rotation_matrix(axis, angle) + rotated = mat @ vec + expected = np.array([0, 1, 0]) + np.testing.assert_allclose(rotated, expected, atol=1e-8) + + def test_invalid_axis(self): + with self.assertRaises(ValueError): + rotation_matrix([0, 0, 0], np.pi) + +class TestCnRotation(unittest.TestCase): + + def test_order_4_rotation(self): + rot = Rotation([0, 0, 1], order=4) + mat = rot.get_matrix() + + # 90 degree rotation about Z axis + vec = np.array([1, 0, 0]) + rotated = mat @ vec + expected = np.array([0, 1, 0]) + np.testing.assert_allclose(rotated, expected, atol=1e-8) + + def test_rotation_matrix_properties(self): + mat = Rotation([1, 1, 1], order=3).get_matrix() + should_be_identity = mat @ mat @ mat + np.testing.assert_allclose(should_be_identity, np.eye(3), atol=1e-8) + + # Orthogonality + np.testing.assert_allclose(mat.T @ mat, np.eye(3), atol=1e-8) + # Determinant = 1 (proper rotation) + self.assertTrue(isclose(np.linalg.det(mat), 1.0, abs_tol=1e-8)) + +class TestSnImproperRotation(unittest.TestCase): + + def test_improper_rotation_reflects(self): + imp = ImproperRotation([0, 0, 1], order=2) + mat = imp.get_matrix() + + # 180-degree rotation + reflection across XY plane (Z -> -Z) + vec = np.array([1, 0, 1]) + result = mat @ vec + expected = np.array([-1, 0, -1]) + np.testing.assert_allclose(result, expected, atol=1e-8) + + def test_improper_matrix_properties(self): + mat = ImproperRotation([1, 0, 0], order=2).get_matrix() + # Should still be orthogonal + np.testing.assert_allclose(mat.T @ mat, np.eye(3), atol=1e-8) + # Improper => det = -1 + self.assertTrue(isclose(np.linalg.det(mat), -1.0, abs_tol=1e-8)) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/model/pdb/test_coarse_grain.py b/tests/unit/model/pdb/test_coarse_grain.py new file mode 100644 index 00000000..266ccf27 --- /dev/null +++ b/tests/unit/model/pdb/test_coarse_grain.py @@ -0,0 +1,103 @@ +""" +Unit tests for the coarse-graining and interface detection functions +in `ionerdss.model.pdb.coarse_grain`. + +This test suite validates: +- The functionality of `compute_interface` for detecting residue-residue interactions + between two chains based on spatial proximity and an energy scoring table. +- The correctness of `coarse_grain_structure` in identifying chains, computing + center-of-mass (COM), estimating radius, and finding valid binding interfaces + between chains in a Biopython `Structure`. + +Test cases include: +- Synthetic PDB-like structure with two interacting chains containing alpha-carbon (CA) atoms. +- Verification of returned COMs, interface partners, interacting residue lists, + and calculated interaction energies. +- Use of a default energy table from `ionerdss.model.pdb.energy_table`. + +The setup avoids I/O and constructs test structures entirely in memory using Biopython objects. +""" +import unittest +import numpy as np +from Bio.PDB.Atom import Atom +from Bio.PDB.Chain import Chain +from Bio.PDB.Residue import Residue + +from Bio.PDB.Model import Model +from Bio.PDB.Structure import Structure + +from ionerdss.model.pdb.coarse_grain import coarse_grain_structure, compute_interface +from ionerdss.model.pdb.energy_table import get_default_energy_table +from ionerdss.math.coords import Coords + +class TestCoarseGrainStructure(unittest.TestCase): + def setUp(self): + # Create synthetic structure with 2 chains, each with 3 residues having CA atoms + self.structure = Structure("test") + model = Model(0) + self.structure.add(model) + + chainA = Chain("A") + chainB = Chain("B") + model.add(chainA) + model.add(chainB) + + def add_residue(chain, res_id, res_name, coord): + res = Residue((" ", res_id, " "), res_name, "") + atom = Atom("CA", np.array(coord, dtype=float), 1.0, 1.0, "", "CA", 0, "C") + res.add(atom) + chain.add(res) + + # Chain A: clustered around origin + add_residue(chainA, 1, "ALA", [0.0, 0.0, 0.0]) + add_residue(chainA, 2, "GLY", [0.3, 0.0, 0.0]) + add_residue(chainA, 3, "SER", [0.1, 0.3, 0.0]) + + # Chain B: close enough to interact + add_residue(chainB, 1, "VAL", [0.25, 0.05, 0.2]) + add_residue(chainB, 2, "LEU", [0.6, 0.0, 0.0]) + add_residue(chainB, 3, "THR", [0.5, 0.3, 0.1]) + + self.distance_cutoff = 0.35 + self.residue_cutoff = 2 + self.energy_table = get_default_energy_table() + + def test_compute_interface_returns_valid_result(self): + chainA = self.structure[0]["A"] + chainB = self.structure[0]["B"] + + residues_i = [(res.id[1], res.get_resname().upper(), res['CA'].coord) + for res in chainA] + residues_j = [(res.id[1], res.get_resname().upper(), res['CA'].coord) + for res in chainB] + + result = compute_interface(residues_i, residues_j, self.energy_table, + self.distance_cutoff, self.residue_cutoff) + self.assertIsNotNone(result, "Interface should be detected with close chains") + + com_i, com_j, ids_i, ids_j, energy = result + self.assertIsInstance(com_i, Coords) + self.assertIsInstance(com_j, Coords) + self.assertGreaterEqual(len(ids_i), self.residue_cutoff) + self.assertGreaterEqual(len(ids_j), self.residue_cutoff) + self.assertIsInstance(energy, float) + + def test_coarse_grain_structure_detects_interface(self): + result = coarse_grain_structure(self.structure, self.distance_cutoff, self.residue_cutoff) + + self.assertEqual(len(result['chains']), 2) + self.assertEqual(len(result['COMs']), 2) + self.assertTrue(all(isinstance(c, Coords) or c is None for c in result['COMs'])) + + # Should detect 1 interface per chain + self.assertEqual(len(result['interfaces'][0]), 1) + self.assertEqual(result['interfaces'][0][0], "B") + self.assertEqual(result['interfaces'][1][0], "A") + + # Check energy and residue information + self.assertAlmostEqual(result['interface_energies'][0][0], -1.2) + self.assertIsInstance(result['interface_coords'][0][0], Coords) + self.assertIsInstance(result['interface_residues'][0][0], list) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/model/pdb/test_repeated_chain_detection.py b/tests/unit/model/pdb/test_repeated_chain_detection.py new file mode 100644 index 00000000..a5f1d86e --- /dev/null +++ b/tests/unit/model/pdb/test_repeated_chain_detection.py @@ -0,0 +1,135 @@ +""" +test_identify_repeated_chains.py + +Unit tests for the repeated chain identification logic in `identify_repeated_chains`. + +This module validates: +- Header-based chain grouping (from mmCIF metadata) +- Fallback to structure-based chain grouping using C-alpha superposition +- Fallback to sequence-based grouping using pairwise sequence identity +- Correct parsing and assignment of canonical representative chains +- Mode-switching behavior via the `mode` argument ('default', 'structure', 'sequence') + +Synthetic structures are created in-memory to simulate controlled chain duplications +and are compatible with both structural and sequence similarity testing. + +Dependencies: +- Biopython +- Python unittest +""" + +import unittest +import warnings +import numpy as np +from Bio.PDB import Structure, Model, Chain, Residue, Atom + +from ionerdss.model.pdb.detect_repeats import ( + identify_repeated_chains, +) + +class TestIdentifyRepeatedChains(unittest.TestCase): + + def build_chain(self, chain_id, coords, seq_resnames=None): + """Create a chain with N-CA-C atoms so that PPBuilder can build peptides.""" + chain = Chain.Chain(chain_id) + for i, coord in enumerate(coords): + coord = np.array(coord) # make sure it's an array + resname = seq_resnames[i] if seq_resnames else "ALA" + res = Residue.Residue((" ", i + 1, " "), resname, "") + ca = Atom.Atom("CA", coord, 1.0, 1.0, "", "CA", i, "C") + n = Atom.Atom("N", coord - np.array([1.2, 0, 0]), 1.0, 1.0, "", "N", i, "N") + c = Atom.Atom("C", coord + np.array([1.2, 0, 0]), 1.0, 1.0, "", "C", i, "C") + res.add(n) + res.add(ca) + res.add(c) + chain.add(res) + return chain + + def build_structure(self, chain_specs): + """ + chain_specs: list of tuples (chain_id, coords, optional seq) + """ + structure = Structure.Structure("test") + model = Model.Model(0) + structure.add(model) + for spec in chain_specs: + chain_id, coords = spec[:2] + seq = spec[2] if len(spec) > 2 else None + chain = self.build_chain(chain_id, coords, seq) + model.add(chain) + return structure + + def test_structure_mode_identifies_redundant_chains(self): + """ + The structures provided are translated so they should fully + overlap with each other and only has 1 chain group based on + structure mode + coords[0]: baseline + coords[1]: exact copy + coords[2]: translation + coords[3]: slight deviation + """ + coords = [[(0,0,0), (1,0,0), (7,9,11), (10,20,30)], + [(0,0,0), (1,0,0), (7,9,11), (10,20,30)], + [(5,5,5), (6,5,5), (12,14,16), (15,25,35)], + [(0,0.01,0.01), (0.99,0,0), (7.98,9.02,11), (10.01,20.02,30.03)]] + structure = self.build_structure([('A', coords[0]), ('B', coords[1]), ('C', coords[2]), ('D', coords[3])]) + chains_map, chains_group = identify_repeated_chains("test", structure, mode='structure') + self.assertEqual(len(chains_group), 1) + self.assertEqual(chains_map['A'], chains_map['B']) + self.assertEqual(chains_map['A'], chains_map['C']) + self.assertEqual(chains_map['A'], chains_map['D']) + + def test_sequence_mode_identifies_redundant_chains(self): + coords = [[(0,0,0), (1,0,0), (2,0,0)]]*3 + seq1 = ["ALA", "GLY", "VAL"] + seq2 = ["ALA", "GLY", "VAL"] + seq3 = ["ARG", "ASP", "GLU"] + structure = self.build_structure([ + ('A', coords[0], seq1), + ('B', coords[1], seq2), + ('C', coords[2], seq3), + ]) + chains_map, chains_group = identify_repeated_chains("test", structure, mode='sequence') + print(chains_map) + print(chains_group) + self.assertEqual(len(chains_group), 2) + self.assertEqual(chains_map['A'], chains_map['B']) + self.assertNotEqual(chains_map['A'], chains_map['C']) + + def test_default_mode_uses_mmcif_header(self): + structure = self.build_structure([('A', [(0,0,0)]), ('B', [(1,0,0)]), ('C', [(2,0,0)])]) + structure.header = { + 'mmcif_dict': { + '_entity_poly.entity_id': ['1', '2'], + '_entity_poly.pdbx_strand_id': ['A,B', 'C'] + } + } + chains_map, chains_group = identify_repeated_chains("test", structure, mode='default') + self.assertIn(['A', 'B'], chains_group) + self.assertIn(['C'], chains_group) + self.assertEqual(chains_map['A'], chains_map['B']) + + def test_default_mode_warns_and_falls_back(self): + coords = [[(0,0,0), (1,0,0), (7,9,11), (10,20,30)], + [(0,0,0), (1,0,0), (7,9,11), (10,20,30)]] + seq = ["ALA", "GLY", "VAL", "ALA"] + structure = self.build_structure([ + ('X', coords[0], seq), + ('Y', coords[1], seq) + ]) + structure.header = {} # no mmCIF info + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + chains_map, chains_group = identify_repeated_chains("test", structure, mode='default') + self.assertTrue(any("Falling back" in str(wi.message) for wi in w)) + self.assertEqual(len(chains_group), 1) + self.assertEqual(chains_map['X'], chains_map['Y']) + + def test_invalid_mode_raises_error(self): + structure = self.build_structure([('A', [(0,0,0)])]) + with self.assertRaises(ValueError): + identify_repeated_chains("test", structure, mode='invalid_mode') + +if __name__ == "__main__": + unittest.main() diff --git a/website/Run_NERDSS_colab.ipynb b/website/Run_NERDSS_colab.ipynb index 3c7ae0aa..7f4754e2 100644 --- a/website/Run_NERDSS_colab.ipynb +++ b/website/Run_NERDSS_colab.ipynb @@ -209,7 +209,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If the structure has homologous chains, we will regularize them so they share the same geometry.\n", + "If the structure has repeated chains, we will regularize them so they share the same geometry.\n", "This step also sets up Reaction objects if two chains can bind." ] }, diff --git a/website/source/ionerdss.nerdss_model.rst b/website/source/ionerdss.nerdss_model.rst index c688460d..0d411f85 100644 --- a/website/source/ionerdss.nerdss_model.rst +++ b/website/source/ionerdss.nerdss_model.rst @@ -7,7 +7,7 @@ Submodules ionerdss.nerdss\_model.coords module ------------------------------------ -.. automodule:: ionerdss.nerdss_model.coords +.. automodule:: ionerdss.model.coords :members: :undoc-members: :show-inheritance: @@ -15,7 +15,7 @@ ionerdss.nerdss\_model.coords module ionerdss.nerdss\_model.design\_model module ------------------------------------------- -.. automodule:: ionerdss.nerdss_model.design_model +.. automodule:: ionerdss.model.design_model :members: :undoc-members: :show-inheritance: @@ -23,7 +23,7 @@ ionerdss.nerdss\_model.design\_model module ionerdss.nerdss\_model.model module ----------------------------------- -.. automodule:: ionerdss.nerdss_model.model +.. automodule:: ionerdss.model.model :members: :undoc-members: :show-inheritance: @@ -31,7 +31,7 @@ ionerdss.nerdss\_model.model module ionerdss.nerdss\_model.pdb\_model module ---------------------------------------- -.. automodule:: ionerdss.nerdss_model.pdb_model +.. automodule:: ionerdss.model.pdb_model :members: :undoc-members: :show-inheritance: @@ -39,7 +39,7 @@ ionerdss.nerdss\_model.pdb\_model module ionerdss.nerdss\_model.platonic\_solids\_model module ----------------------------------------------------- -.. automodule:: ionerdss.nerdss_model.platonic_solids_model +.. automodule:: ionerdss.model.platonic_solids_model :members: :undoc-members: :show-inheritance: @@ -47,7 +47,7 @@ ionerdss.nerdss\_model.platonic\_solids\_model module Module contents --------------- -.. automodule:: ionerdss.nerdss_model +.. automodule:: ionerdss.model :members: :undoc-members: :show-inheritance: diff --git a/website/source/ionerdss.rst b/website/source/ionerdss.rst index c597ae61..c3ec4a54 100644 --- a/website/source/ionerdss.rst +++ b/website/source/ionerdss.rst @@ -7,7 +7,7 @@ Subpackages .. toctree:: :maxdepth: 4 - ionerdss.nerdss_model + ionerdss.model ionerdss.nerdss_simulation ionerdss.nerdss_analysis ionerdss.model_setup diff --git a/website/source/ionerdss_documentation_v1_1.rst b/website/source/ionerdss_documentation_v1_1.rst deleted file mode 100644 index d1e949fb..00000000 --- a/website/source/ionerdss_documentation_v1_1.rst +++ /dev/null @@ -1,319 +0,0 @@ -============================== -ionerdss (v.1.1) Documentation -============================== - -:Date: 2025-03-22 - -.. note:: - - This page does not include the outputs. To see the outputs, please refer to this `Jupyter notebooks `_. - -.. code-block:: python - - import ionerdss as ion - -Creating NERDSS Inputs ----------------------- - -This section describes how to automatically create inputs for NERDSS from a PDB structure. - -.. code-block:: python - - import subprocess - from IPython.display import display, Image - - pdb_id = '8y7s' # PDB ID for the structure of interest, or the full path to a PDB file - save_folder = '~/Documents/8y7s_dir' # the working directory - - # create the PDBModel object using the PDBModel class - pdb_model = ion.PDBModel(pdb_id=pdb_id, save_dir=save_folder) - - # coarse grain each chain of the PDB structure to a NERDSS molecule - # set standard_output=True to see the determined interfaces - pdb_model.coarse_grain(distance_cutoff=0.35, - residue_cutoff=3, - show_coarse_grained_structure=False, - save_pymol_script=False, - standard_output=False) - - # regularize homologous chains to the same NERDSS molecule type - pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, - dist_threshold_inter=3.5, - angle_threshold=25.0, - show_coarse_grained_structure=False, - save_pymol_script=True, - standard_output=False) - - # display the coarse-grained structure of the PDB model and the original PDB structure - # requires PyMOL to be installed - if save_folder.startswith('~'): - abs_save_folder = os.path.expanduser(save_folder) - abs_save_folder = os.path.abspath(abs_save_folder) - - subprocess.run(["pymol", "-cq", f"{abs_save_folder}/visualize_regularized_coarse_grained.pml"], check=True) - display(Image(filename=f"{abs_save_folder}/comparison_regularized.png")) - -Running NERDSS Simulations --------------------------- - -This section describes how to run NERDSS simulations from ionerdss. - -.. code-block:: python - - # create the Simulation object using the Simulation class - # the simulation is connected to the PDBModel object created above - simulation = ion.Simulation(pdb_model, save_folder) - - # generate the NERDSS input files for the simulation - simulation.generate_nerdss_input() - - # example of modifying simulation parameters - # all parameters can be modified using the modify_mol_file() and modify_inp_file() - simulation.modify_mol_file('A', - {'D': [20.0, 20.0, 20.0], - 'Dr': [0.2, 0.2, 0.2]}) - - simulation.print_mol_parameters('A') - - simulation.modify_inp_file({'nItr': 1000, 'timeStep': 0.5, - 'timeWrite': 100, 'trajWrite': 100, - 'pdbWrite': 100, 'A': 200, - 'A(A1) + A(A1) <-> A(A1!1).A(A1!1)': {'onRate3Dka': 2000}}) - simulation.print_inp_file() - - # install NERDSS if not already installed - simulation.install_nerdss(nerdss_path="~/Documents/8y7s_dir") - - # run the NERDSS simulation - simulation.run_new_simulations(sim_indices=[1, 2, 3], - sim_dir="~/Documents/8y7s_dir/nerdss_output", - nerdss_dir="~/Documents/8y7s_dir/NERDSS", - parallel=False) - # this will run the simulation for 3 different random seeds - # and save the outputs in the specified directory - # check the simulation output to see if the simulations are run successfully - # if the simulations are not run successfully, you have to run it manually in terminal - -Analyzing NERDSS Outputs ------------------------- - -This section describes how to automatically analyze outputs for NERDSS simulation. - -.. code-block:: python - - # create the Analysis object using the Analysis class - # the nerdss_output directory is the output directory from the NERDSS simulation - # it can be the parent directory of several simulations - analysis = ion.Analysis("./data/8y7s_dir/nerdss_output/") - - # generate the trajecotry from the xyz file - # if multiple simulations are provided, the random one will be selected - # you can ignore the conflict about the PyQt6 and PySide6 - analysis.visualize_trajectory() - - # generate all types of plots using the plot_figure() method - # the figure_type can be 'line', 'hist', '3dhist', 'heatmap' - - # plot the species copy number over time - # all individual simulations and averaged result are plotted - analysis.plot_figure(figure_type='line', - x='time', - y='species', - legend=[['A(A1!1).A(A1!1)'],], - show_type='both') - - # only plot the average result - analysis.plot_figure(figure_type='line', - x='time', - y='species', - legend=[['A(A1!1).A(A1!1)'],], - show_type='average') - - # only plot the individual simulation results - analysis.plot_figure(figure_type='line', - x='time', - y='species', - legend=[['A(A1!1).A(A1!1)'],], - show_type='individuals') - - # plot multiple species copy numbers over time - # legend is a list of lists, where each inner list corresponds to a different plot - # if multiple terms in the inner list are provided, their sum will be plotted - analysis.plot_figure(figure_type='line', - x='time', - y='species', - legend=[['A(A1!1).A(A1!1)'], ['A(A1!1).A(A1!1)', 'A(A2!1).A(A2!1)', 'A(A3!1).A(A3!1)'],], - show_type='average') - - # plot the largest assembly size over time - # plot the average - analysis.plot_figure(figure_type='line', - x='time', - y='maximum_assembly', - legend=['A',], - show_type='average') - - # plot the average and individual simulation results - analysis.plot_figure(figure_type='line', - x='time', - y='maximum_assembly', - legend=['A',], - show_type='both') - - # plot the average assembly size over time for assemblies >= 2 - analysis.plot_figure(figure_type='line', - x='time', - y='average_assembly', - legend=['A>=2'], - show_type='average') - - # plot the fraction of monomers in assemblies >= 4 - analysis.plot_figure(figure_type='line', - x='time', - y='fraction_of_monomers_assembled', - legend=['A>=4'], - show_type='average') - - # plot the histogram of assembly size of the whole simulation - # can specify time_frame to plot the histogram of a specific time frame - # frequency=True will plot the frequency of each assembly size - # normalize=True will plot the normalized histogram (i.e., the area under the histogram equals 1) - # set y='monomer_count' will plot the histogram of monomer count in the complex instead of complex count - analysis.plot_figure(figure_type='hist', x='size', - y='complex_count', legend=['A'], - bins=10, frequency=False, normalize=False) - - # plot the 3d histogram of assembly size, time, and complex count / monomer count - analysis.plot_figure(figure_type='3dhist', - x='size', y='time', z='complex_count', - legend=['A'], bins=10, time_bins=5, - frequency=False, normalize=False, figure_size=(12, 12)) - - # plot the heatmap of assembly size, time, and complex count / monomer count - analysis.plot_figure(figure_type='heatmap', - x='size', y='time', z='complex_count', - legend=['A'], bins=10, time_bins=5, - frequency=False, normalize=False, figure_size=(8, 6)) - - # plot the free energy of assembly size - analysis.plot_figure(figure_type='line', x='size', y='free_energy', - legend=['A'], figure_size=(8, 6)) - - # plot the symmetric association probability of assembly size - # n-size + m-size -> n+m-size will be counted both for n-size and m-size - analysis.plot_figure(figure_type='line', - x='size', y='symmetric_association_probability', - legend=["associate size > 2", "associate size = 2", "associate size < 2"], - show_type='average', figure_size=(8, 6)) - - # plot the asymmetric association probability of assembly size - # n-size + m-size -> n+m-size will be counted only for the larger size - analysis.plot_figure(figure_type='line', - x='size', y='asymmetric_association_probability', - legend=["associate size > 2", "associate size = 2", "associate size < 2"], - show_type='average', figure_size=(8, 6)) - - # plot the symmetric dissociation probability of assembly size - # n+m-size -> n-size + m-size will be counted both for n-size and m-size - analysis.plot_figure(figure_type='line', - x='size', y='symmetric_dissociation_probability', - legend=["dissociate size > 2", "dissociate size = 2", "dissociate size < 2"], - show_type='average', figure_size=(8, 6)) - - # plot the asymmetric dissociation probability of assembly size - # n+m-size -> n-size + m-size will be counted only for the smaller dissociation size - analysis.plot_figure(figure_type='line', - x='size', y='asymmetric_dissociation_probability', - legend=["dissociate size > 2", "dissociate size = 2", "dissociate size < 2"], - show_type='average', figure_size=(8, 6)) - - # plot the growth probability of assembly size - analysis.plot_figure(figure_type='line', - x='size', y='growth_probability', - legend=["A"], show_type='average', figure_size=(8, 6)) - - # plot the lifetime of assembly size - analysis.plot_figure(figure_type='line', - x='size', y='lifetime', - legend=["A"], show_type='average', figure_size=(8, 6)) - - # examples for multispecies analysis - # create the Analysis object for the 8erq simulation (hetero-trimer assembly) - analysis_8erq = ion.Analysis("./data/8erq_dir/nerdss_output/") - - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='species', - legend=[['C(A1!1).A(C1!1)'],], - show_type='average') - - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='maximum_assembly', - legend=['A',], - show_type='both') - - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='maximum_assembly', - legend=['B',], - show_type='both') - - # plot the maximum assembly size for both A and B species - # y axis is the max of sum of A and B species in one complex - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='maximum_assembly', - legend=['A', 'B'], - show_type='both') - - # plot the average assembly size for both A and B species - # y axis is the average of sum of A and B species in one complex - # only include assemblies meeting the criteria in legend - # e.g., A>=1 and B>=2 means only assemblies with at least 1 A and 2 B are included - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='average_assembly', - legend=['A>=1, B>=2'], - show_type='both') - - # here we plot the average assembly size for A and B species separately - # the legend is a list of lists, where each inner list corresponds to a different plot - # e.g., ['A>=1'] means only assemblies with at least 1 A are included - # and ['B>=1'] means only assemblies with at least 1 B are included - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='average_assembly', - legend=['A>=1', 'B>=1'], - show_type='average') - - # plot the fraction of B monomers in assemblies B >= 3 - analysis_8erq.plot_figure(figure_type='line', - x='time', - y='fraction_of_monomers_assembled', - legend=['B>=3'], - show_type='average') - - analysis_8erq.plot_figure(figure_type='hist', - x='size', y='complex_count', - legend=['B'], bins=10, frequency=False, normalize=False) - - analysis_8erq.plot_figure(figure_type='hist', - x='size', y='monomer_count', - legend=['B'], bins=10, frequency=True, normalize=False) - - analysis_8erq.plot_figure(figure_type='3dhist', - x='size', y='time', z='complex_count', - legend=['B'], bins=10, time_bins=5, - frequency=False, normalize=False, figure_size=(12, 12)) - - # plot the 3d histogram of one species assembly size, another species assembly size, and comlex count - analysis_8erq.plot_figure(figure_type='heatmap', - x='size', y='size', z='complex_count', - legend=['A', 'B'], - bins=10, frequency=False, normalize=False, figure_size=(8, 6)) - - # plot the stacked histogram of assembly size and complex count for A and B species - analysis_8erq.plot_figure(figure_type='stacked', - x='size', y='complex_count', legend=["B: A<2, A=2, A>2"], - bins=10, frequency=False, normalize=False, figure_size=(8, 6)) diff --git a/website/source/pdb_to_nerdss_tutorial.ipynb b/website/source/pdb_to_nerdss_tutorial.ipynb index 5c616307..a2a6cc72 100644 --- a/website/source/pdb_to_nerdss_tutorial.ipynb +++ b/website/source/pdb_to_nerdss_tutorial.ipynb @@ -59,7 +59,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "homologous chains identify finished using the CIF file header: chain ID to molecular type mapping:\n", + "repeated chains identify finished using the CIF file header: chain ID to molecular type mapping:\n", "{'A': 'A', 'B': 'A', 'A-2': 'A', 'B-2': 'A', 'C': 'B', 'C-2': 'B', 'D': 'C', 'D-2': 'C', 'E': 'D', 'F': 'D', 'G': 'D', 'E-2': 'D', 'F-2': 'D', 'G-2': 'D', 'H': 'E', 'H-2': 'E'}\n", "homogolous chains groups:\n", "[['A', 'B', 'A-2', 'B-2'], ['C', 'C-2'], ['D', 'D-2'], ['E', 'F', 'G', 'E-2', 'F-2', 'G-2'], ['H', 'H-2']]\n", @@ -212,7 +212,7 @@ "metadata": {}, "source": [ "## 4. Regularize & Build Reactions\n", - "If the structure has homologous chains, we can align them so they share the same geometry.\n", + "If the structure has repeated chains, we can align them so they share the same geometry.\n", "This also sets up Reaction objects if two chains can bind.\n" ] }, diff --git a/website/source/quick_start.ipynb b/website/source/quick_start.ipynb index 4dae5e07..03679e45 100644 --- a/website/source/quick_start.ipynb +++ b/website/source/quick_start.ipynb @@ -101,16 +101,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Homologous chains identified using sequence alignment:\n", + "Repeated chains identified using sequence alignment:\n", "{'F': 'A', 'A': 'A', 'E': 'A', 'B': 'A'}\n", - "Homologous chain groups identified:\n", + "Repeated chain groups identified:\n", "[['A', 'B', 'E', 'F']]\n", "Model saved successfully to /Users/yueying/Documents/8y7s_dir/8y7s_model.json\n" ] } ], "source": [ - "pdb_model.regularize_homologous_chains(dist_threshold_intra=3.5, \n", + "pdb_model.regularize_repeated_chains(dist_threshold_intra=3.5, \n", " dist_threshold_inter=3.5, \n", " angle_threshold=25.0, \n", " show_coarse_grained_structure=False, \n", @@ -753,7 +753,7 @@ } ], "source": [ - "analysis = ion.Analysis(\"./data/8y7s_dir/nerdss_output/\")" + "analysis = ion.Analyzer(\"./data/8y7s_dir/nerdss_output/\")" ] }, { @@ -1929,7 +1929,7 @@ } ], "source": [ - "analysis_8erq = ion.Analysis(\"./data/8erq_dir/nerdss_output/\")" + "analysis_8erq = ion.Analyzer(\"./data/8erq_dir/nerdss_output/\")" ] }, { diff --git a/website/source/release_notes.rst b/website/source/release_notes.rst index b48566f8..97127f80 100644 --- a/website/source/release_notes.rst +++ b/website/source/release_notes.rst @@ -25,7 +25,7 @@ ionerdss - **Version 1.1.0 (Mar 22, 2025)** - - Refactored the code into `nerdss_model`, `nerdss_simulation`, and `nerdss_analysis` modules. + - Refactored the code into `model`, `nerdss_simulation`, and `nerdss_analysis` modules. - Unified figure plotting with the `plot_figure()` function in the `analysis` class.