From 64fa54edf5881062daee46c1ace3fe9a182f6911 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Wed, 27 Nov 2024 15:25:59 -0500 Subject: [PATCH 01/20] refactor: Massive reorganization (broken) --- .coveragerc | 9 + .editorconfig | 36 + .gitattributes | 2 + .github/workflows/codecov.yml | 37 + .github/workflows/docs.yml | 55 + .github/workflows/tests.yml | 26 + .gitignore | 4 + .isort.cfg | 9 + .markdownlint.yaml | 20 + .mypy.ini | 23 + .pytest.ini | 23 + .ruff.toml | 23 + CHANGES.md | 44 +- CODE_OF_CONDUCT.md | 24 +- CONTRIBUTING.md | 10 +- LICENSE.md | 100 +- POVME2.py | 18 - POVME_pocket_id.py | 14 - README.md | 4 +- ROADMAP.md | 56 - depreciated/POVME2_GUI.zip | Bin 1571237 -> 0 bytes .../sample_POVME_input.for_windows.ini | 199 - .../POVME_Pocket_ID_example/README.txt | 0 .../POVME_Pocket_ID_example/rel1_example.pdb | 0 .../POVME_example/4NSS.pdb | 0 .../POVME_example/README.txt | 0 .../POVME_example/sample_POVME_input.ini | 0 pixi.lock | 7223 +++++++++++++++++ pixi.toml | 80 + povme/cli.py | 298 + povme/test.py | 13 - pyproject.toml | 26 + 32 files changed, 7985 insertions(+), 391 deletions(-) create mode 100644 .coveragerc create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/workflows/codecov.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/tests.yml create mode 100644 .isort.cfg create mode 100644 .markdownlint.yaml create mode 100644 .mypy.ini create mode 100644 .pytest.ini create mode 100644 .ruff.toml delete mode 100755 POVME2.py delete mode 100644 POVME_pocket_id.py delete mode 100644 ROADMAP.md delete mode 100644 depreciated/POVME2_GUI.zip delete mode 100644 depreciated/sample_POVME_input.for_windows.ini rename {povme/examples => examples}/POVME_Pocket_ID_example/README.txt (100%) rename {povme/examples => examples}/POVME_Pocket_ID_example/rel1_example.pdb (100%) rename {povme/examples => examples}/POVME_example/4NSS.pdb (100%) rename {povme/examples => examples}/POVME_example/README.txt (100%) rename {povme/examples => examples}/POVME_example/sample_POVME_input.ini (100%) create mode 100644 pixi.lock create mode 100644 pixi.toml create mode 100644 povme/cli.py delete mode 100644 povme/test.py create mode 100644 pyproject.toml diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..10d2717 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,9 @@ +[run] +branch = true +source = tests + +[paths] +source = povme + +[report] +show_missing = true diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5973eb7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,36 @@ +# Check http://editorconfig.org for more information + +root = true + +[*] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true +charset = utf-8 +end_of_line = lf + +[*.{py, pyi}] +indent_style = space +indent_size = 4 + +[*.bat] +indent_style = tab +end_of_line = crlf + +[Makefile] +indent_style = tab + +[*.{yml, yaml}] +indent_size = 2 +trim_trailing_whitespace = true + +[*.md] +indent_size = 4 +trim_trailing_whitespace = true + +[LICENSE] +insert_final_newline = false + +[*.{diff,patch}] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8f61a8e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 0000000..02f9064 --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,37 @@ +name: Codecov workflow + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + run: + name: codecov + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + lfs: true + + - name: Install pixi + uses: prefix-dev/setup-pixi@v0.8.1 + + - name: Setup environment + run: pixi install + + - name: Get test coverage + run: pixi run tests + + - name: Upload to Codecov + uses: codecov/codecov-action@v4 + with: + env_vars: OS,PYTHON + fail_ci_if_error: true + verbose: true + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..e58f0be --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,55 @@ +name: Deploy documentation + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + deploy: + name: docs + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install pixi + uses: prefix-dev/setup-pixi@v0.8.1 + + - name: Setup environment + run: pixi install + + - name: Build documentation + run: pixi run docs + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: 'public/' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..fd6108d --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,26 @@ +name: Tests + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install pixi + uses: prefix-dev/setup-pixi@v0.8.1 + + - name: Setup environment + run: pixi install + + - name: Run tests + run: pixi run tests diff --git a/.gitignore b/.gitignore index 0205d62..d31e202 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ *.pyc .DS_Store + +# pixi environments +.pixi +*.egg-info diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 0000000..241e17d --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,9 @@ +[settings] +py_version = 312 +line_length = 88 +known_typing = typing,types,typing_extensions,mypy,mypy_extensions +sections = FUTURE,TYPING,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER +profile = black +include_trailing_comma = true +multi_line_output = 3 +indent = 4 diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..1fa301f --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,20 @@ +# https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml +MD007: + indent: 4 +MD013: false +MD022: false +MD024: false +MD026: false +MD028: false +MD030: + ol_multi: 2 + ol_single: 2 + ul_multi: 3 + ul_single: 3 +MD031: false +MD032: false +MD033: false +MD036: false +MD038: false +MD041: false +MD046: false diff --git a/.mypy.ini b/.mypy.ini new file mode 100644 index 0000000..6294e57 --- /dev/null +++ b/.mypy.ini @@ -0,0 +1,23 @@ +[mypy] +python_version = "3.12" +pretty = true +show_traceback = true +color_output = true +allow_redefinition = false +check_untyped_defs = true +disallow_any_generics = true +disallow_incomplete_defs = true +ignore_missing_imports = true +implicit_reexport = false +no_implicit_optional = true +show_column_numbers = true +show_error_codes = true +show_error_context = true +strict_equality = true +strict_optional = true +warn_no_return = true +warn_redundant_casts = true +warn_return_any = true +warn_unreachable = true +warn_unused_configs = true +warn_unused_ignores = true diff --git a/.pytest.ini b/.pytest.ini new file mode 100644 index 0000000..d5569e2 --- /dev/null +++ b/.pytest.ini @@ -0,0 +1,23 @@ +[pytest] +norecursedirs = + povme + *.egg + .eggs + dist + build + docs + .tox + .git + __pycache__ +doctest_optionflags = + NUMBER + NORMALIZE_WHITESPACE + IGNORE_EXCEPTION_DETAIL +addopts = + --strict-markers + --tb=short + --doctest-modules + --doctest-continue-on-failure + --maxfail=2 -rf +testpaths = tests +pythonpaths = ./ diff --git a/.ruff.toml b/.ruff.toml new file mode 100644 index 0000000..50ccc07 --- /dev/null +++ b/.ruff.toml @@ -0,0 +1,23 @@ +target-version = "py312" +line-length = 88 +indent-width = 4 +exclude = [ + ".git", + ".hg", + ".mypy_cache", + ".tox", + ".venv", + "_build", + "buck-out", + "build", + "dist", + "env", + "venv", +] + +[format] +quote-style = "double" +indent-style = "space" +skip-magic-trailing-comma = false +docstring-code-format = true +docstring-code-line-length = "dynamic" diff --git a/CHANGES.md b/CHANGES.md index e873e39..2be7fef 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,58 +10,58 @@ NOTE: There is a MP error in python3. Need to fix. Use 1 processor for now. 2.2.2 ----- -1. Fixed text-encoding bug. +1. Fixed text-encoding bug. 2.2.1 ----- -1. Made minor changes to the `README.md` file to clarify the +1. Made minor changes to the `README.md` file to clarify the `ContiguousPointsCriteria`, `ContiguousPocketSeedSphere`, and `ContiguousPocketSeedBox` parameters. -2. Otherwise identical to POVME 2.2. +2. Otherwise identical to POVME 2.2. 2.2 --- -1. Updated version to 2.2. -2. Fixed an error that prevented POVME from saving its output to uncompressed +1. Updated version to 2.2. +2. Fixed an error that prevented POVME from saving its output to uncompressed files. (Previously only writing output to compressed output succeeded.) -3. POVME now throws a warning when using Python 3.5 or earlier. -4. When the user does not specify any contiguous-pocket seed regions, POVME no +3. POVME now throws a warning when using Python 3.5 or earlier. +4. When the user does not specify any contiguous-pocket seed regions, POVME no longer outputs the default value of the ContiguousPointsCriteria parameter to the screen. In this case, POVME does not use the ContiguousPointsCriteria parameter anyway, so outputing its value to the screen only causes confusion. -5. Applied [Black formatter](https://black.readthedocs.io/en/stable/) to all +5. Applied [Black formatter](https://black.readthedocs.io/en/stable/) to all Python code. 2.1 --- -1. Updated version to 2.1. -2. Now Python3 compatible. Python2 no longer officially supported. -3. Refactored code so that it can now be called as a library. -4. Moved GUI wrapper to new `depreciated/` folder. This feature is no longer +1. Updated version to 2.1. +2. Now Python3 compatible. Python2 no longer officially supported. +3. Refactored code so that it can now be called as a library. +4. Moved GUI wrapper to new `depreciated/` folder. This feature is no longer supported. -5. Improved formatting (black) and docstrings. -6. Fixed minor bug that assigned atoms with names like "HG21" to element "HG" +5. Improved formatting (black) and docstrings. +6. Fixed minor bug that assigned atoms with names like "HG21" to element "HG" rather than "H". No longer supporting element "HG". -7. Moved examples directory to `povme/examples/`. -8. Can now read both Windows and POSIX path names seamlessly (no need for +7. Moved examples directory to `povme/examples/`. +8. Can now read both Windows and POSIX path names seamlessly (no need for separate ini files). -9. Easy testing now available: `python POVME2.py --test` and `python +9. Easy testing now available: `python POVME2.py --test` and `python POVME_pocket_id.py --test` -10. Added project roadmap. +10. Added project roadmap. 2.0.3 ----- -1. Updated citation. -2. Convex hull now calculated based on locations of all heavy atoms. In 2.0.1, +1. Updated citation. +2. Convex hull now calculated based on locations of all heavy atoms. In 2.0.1, it was all alpha carbons. Take care when comparing POVME 2.0.1 and POVME 2.0.2/2.0.3 output. -3. Fixed NumPy warning. -4. Spelling error ("Angstroms"). +3. Fixed NumPy warning. +4. Spelling error ("Angstroms"). 2.0.1 ----- diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 23e503a..e1e5a34 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -10,21 +10,21 @@ We pledge to act and interact in ways that contribute to an open, welcoming, div Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall community +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +* The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +* Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -74,11 +74,11 @@ Community leaders will follow these Community Impact Guidelines in determining t ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, -available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. +available at . Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations. +. Translations are available at . diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 73c0b06..6147c00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,14 +36,14 @@ modify it to correct bugs or add features. Follow these steps to "push" your changes to the main online repository so others can benefit from them: -* Create a [new merge +* Create a [new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) with your changes. -* Ensure the description clearly describes the problem and solution. Include +* Ensure the description clearly describes the problem and solution. Include the relevant issue number if applicable. -* Before submitting, please read this CONTRIBUTING.md file to know more about +* Before submitting, please read this CONTRIBUTING.md file to know more about coding conventions and benchmarks. ## Coding conventions @@ -113,8 +113,8 @@ forum](http://durrantlab.com/forums/). This document was inspired by: -* [Ruby on Rails CONTRIBUTING.md +* [Ruby on Rails CONTRIBUTING.md file](https://raw.githubusercontent.com/rails/rails/master/CONTRIBUTING.md) (MIT License). -* [weallcontribute](https://github.com/WeAllJS/weallcontribute/blob/latest/CONTRIBUTING.md) +* [weallcontribute](https://github.com/WeAllJS/weallcontribute/blob/latest/CONTRIBUTING.md) (Public Domain License). diff --git a/LICENSE.md b/LICENSE.md index ad60cea..5571e63 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -38,8 +38,8 @@ must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: - 1. assert copyright on the software, and - 2. offer you this License giving you legal permission to copy, distribute + 1. assert copyright on the software, and + 2. offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that @@ -101,8 +101,8 @@ network, with no transfer of a copy, is not conveying. An interactive user interface displays *Appropriate Legal Notices* to the extent that it includes a convenient and prominently visible feature that - 1. displays an appropriate copyright notice, and - 2. tells the user that there is no warranty for the work (except to the + 1. displays an appropriate copyright notice, and + 2. tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. @@ -202,18 +202,18 @@ You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified it, and +- a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is released under +- b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to *keep intact all notices*. - - c) You must license the entire work, as a whole, under this License to +- c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display +- d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. @@ -233,26 +233,26 @@ You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - - a) Convey the object code in, or embodied in, a physical product (including +- a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product (including +- b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either - 1. a copy of the Corresponding Source for all the software in the product + 1. a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or - 2. access to copy the Corresponding Source from a network server at no + 2. access to copy the Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the written +- c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - - d) Convey the object code by offering access from a designated place +- d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the @@ -263,7 +263,7 @@ under the terms of this License, in one of these ways: Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided you +- e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. @@ -274,9 +274,9 @@ object code work. A *User Product* is either - 1. a *consumer product*, which means any tangible personal property which is + 1. a *consumer product*, which means any tangible personal property which is normally used for personal, family, or household purposes, or - 2. anything designed or sold for incorporation into a dwelling. + 2. anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a @@ -338,19 +338,19 @@ Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the terms of +- a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or author +- b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or +- c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or authors +- d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - - e) Declining to grant rights under trademark law for use of some trade +- e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that material by +- f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and @@ -383,9 +383,9 @@ patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated - - a) provisionally, unless and until the copyright holder explicitly and +- a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and - - b) permanently, if the copyright holder fails to notify you of the +- b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated @@ -466,10 +466,10 @@ Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either - 1. cause the Corresponding Source to be so available, or - 2. arrange to deprive yourself of the benefit of the patent license for this + 1. cause the Corresponding Source to be so available, or + 2. arrange to deprive yourself of the benefit of the patent license for this particular work, or - 3. arrange, in a manner consistent with the requirements of this License, to + 3. arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. *Knowingly relying* means you have actual knowledge that, but for the patent @@ -494,9 +494,9 @@ conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license - - a) in connection with copies of the covered work conveyed by you (or copies +- a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or - - b) primarily for and in connection with specific products or compilations +- b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. @@ -593,31 +593,31 @@ them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the *copyright* line and a pointer to where the full notice is found. - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. The hypothetical commands `show w` and `show c` should show the appropriate parts of the General Public License. Of course, your program's commands might @@ -633,4 +633,4 @@ proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). \ No newline at end of file +[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/POVME2.py b/POVME2.py deleted file mode 100755 index 170bc2a..0000000 --- a/POVME2.py +++ /dev/null @@ -1,18 +0,0 @@ -# POVME 2.2.2 is released under the GNU General Public License (see -# http://www.gnu.org/licenses/gpl.html). If you have any questions, comments, -# or suggestions, please don't hesitate to contact me, Jacob Durrant, at -# durrantj [at] pitt [dot] edu. -# -# If you use POVME in your work, please cite: -# -# Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm -# for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -# -# Durrant, J. D., L. Votapka, et al. (2014). "Povme 2.0: An Enhanced Tool -# for Determining Pocket Shape and Volume Characteristics." J Chem Theory -# Comput 10.11: 5047-56. - -from povme import povme -import sys - -povme.RunPOVME(sys.argv) diff --git a/POVME_pocket_id.py b/POVME_pocket_id.py deleted file mode 100644 index 74a6890..0000000 --- a/POVME_pocket_id.py +++ /dev/null @@ -1,14 +0,0 @@ -# POVME Pocket ID 1.0 is released under the GNU General Public License (see -# http://www.gnu.org/licenses/gpl.html). - -# If you have any questions, comments, or suggestions, please don't hesitate -# to contact me, Jacob Durrant, at durrantj [at] pitt [dot] edu. - -# POVME Pocket ID 1.0 is a program for identifying protein pockets and -# generating appropriate pocket-encompassing inclusion spheres. These spheres, -# modified as required, can then be used as POVME input. - -from povme import pocket_id -import sys - -pocket_id.run_pocket_id(sys.argv) diff --git a/README.md b/README.md index 8d15394..3bd7651 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ questions, comments, or suggestions, please don't hesitate to contact me, If you use POVME in your work, please cite: -1. Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm for +1. Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -2. Durrant, J.D., L. Votapka, J. Sørensen, and R. E. Amaro (2014). "POVME 2.0: +2. Durrant, J.D., L. Votapka, J. Sørensen, and R. E. Amaro (2014). "POVME 2.0: An Enhanced Tool for Determining Pocket Shape and Volume Characteristics." J. Chem. Theory Comput. 10(11):5047-5056. diff --git a/ROADMAP.md b/ROADMAP.md deleted file mode 100644 index ee9a3a0..0000000 --- a/ROADMAP.md +++ /dev/null @@ -1,56 +0,0 @@ -# Project Roadmap - -This document describes planned updates to the POVME2 codebase. - -## Web-Based POVME-Preparation GUI - -**Projected Dates**: 6/2020-10/2020 - -**Description**: We will create a web-based graphical user interface (GUI) so -users can easily define and visualize pocket-encompassing protein regions for -subsequent POVME2 analysis. This process is currently tedious and requires -third-party programs such as VMD. - -## POVME MD-Trajectory Handling - -**Projected Dates**: 8/2020-12/2020 - -**Description**: We will update POVME2 to improve MD-trajectory handling. -Before starting POVME2, users must now turn to third-party programs to align -their trajectories and convert them to the multi-frame PDB format. With our -updates, POVME2 will accept a wider range of trajectory-file formats and will -optionally perform trajectory alignment itself. - -## Port POVME Itself to the Browser - -**Projected Dates**: 10/2020-2/2021 - -**Description**: We will port POVME2 to the browser. Web POVME2 will eliminate -the need to install Python and other dependencies. Instead, users will visit a -simple webpage. Thanks to WebAssembly (Pyodide), POVME2 calculations will run -directly in the browser, without requiring extensive remote computing -infrastructure. - -## Online Tools to Analyze and Display POVME2 Results - -**Projected Dates**: 1/2021-3/2021 - -**Description**: We will create online tools for analyzing and displaying -POVME2 results. Users must currently turn to third-party programs to visualize -POVME2 volume distributions, pocket shapes, etc. We will incorporate graphs, -tables, and 3Dmol.js-powered molecular visualizations directly into the POVME2 -web app. - -## Online Help System with Tutorials - -**Projected Dates**: 4/2021-4/2021 - -**Description**: We will create an online help system together with new -tutorials so users understand how the updated software works. - -## Publication - -**Projected Dates**: 5/2021-6/2021 - -**Description**: To let the community know about our improvements, we will -publish peer-reviewed manuscripts describing the POVME2 updates. diff --git a/depreciated/POVME2_GUI.zip b/depreciated/POVME2_GUI.zip deleted file mode 100644 index 12679da003207e9e8a77afb6d4cdb3c20f48590e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571237 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%0Am%E_I3qnCeY=LTX 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 G3O- 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%0A?&mz!mc>YNT!-m4k4scN;WE~BK>2% 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

U2&u+G!+v06=ErR{#nF|LtE7 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%0DFfJoeBdYS5KOzqbGK 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∾2_IWgwTpB;57A< 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

~m-QtoXuBBl3!#$SFp*yZu@I3XJgP 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


$xm$-N}1@V*%nn! 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
2VEPFLTuc{YB8S_qua2jzObyVP*|B@Mks{~$ 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

PnbNZd>y1rwPx(|c?A~7QnPs}l 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μoC%$7Hi6{W;}2c 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�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�wHHc+yZWe-&Qo^ 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.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: annotated-types + version: 0.7.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f + md5: 7e9f4612544c8edbfd6afad17f1bd045 + depends: + - python >=3.7 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/annotated-types?source=hash-mapping + size: 18235 + timestamp: 1716290348421 +- kind: conda + name: appnope + version: 0.1.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda + sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 + md5: cc4834a9ee7cc49ce8d25177c47b10d8 + depends: + - python >=3.7 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/appnope?source=hash-mapping + size: 10241 + timestamp: 1707233195627 +- kind: conda + name: asttokens + version: 2.4.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 + md5: 5f25798dcefd8252ce5f9dc494d5f571 + depends: + - python >=3.5 + - six >=1.12.0 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/asttokens?source=hash-mapping + size: 28922 + timestamp: 1698341257884 +- kind: conda + name: attrs + version: 24.2.0 + build: pyh71513ae_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 + md5: 6732fa52eb8e66e5afeb32db8701a791 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=hash-mapping + size: 56048 + timestamp: 1722977241383 +- kind: conda + name: babel + version: 2.16.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 + md5: 6d4e9ecca8d88977147e109fc7053184 + depends: + - python >=3.8 + - pytz >=2015.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/babel?source=hash-mapping + size: 6525614 + timestamp: 1730878929589 +- kind: conda + name: backports + version: '1.0' + build: pyhd8ed1ab_4 + build_number: 4 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda + sha256: 31b51537ce7d2ba8b5b3d0095f1813711884304ac1701bc55938ca75f6c82e19 + md5: 67bdebbc334513034826e9b63f769d4c + depends: + - python >=3 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6989 + timestamp: 1722295637981 +- kind: conda + name: backports.tarfile + version: 1.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhd8ed1ab_0.conda + sha256: 703cc1cb72e395272ce043ae9e2bad6184eeb2371a20a75cb502a5513592d2eb + md5: 5a4c7e2a240a0092a9571d084fe8bc86 + depends: + - backports + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/backports-tarfile?source=hash-mapping + size: 32752 + timestamp: 1730879020495 +- kind: conda + name: beautifulsoup4 + version: 4.12.3 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda + sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 + md5: 332493000404d8411859539a5a630865 + depends: + - python >=3.6 + - soupsieve >=1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/beautifulsoup4?source=hash-mapping + size: 118200 + timestamp: 1705564819537 +- kind: conda + name: black + version: 24.10.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/black-24.10.0-py312h7900ff3_0.conda + sha256: 2b4344d18328b3e8fd9b5356f4ee15556779766db8cb21ecf2ff818809773df6 + md5: 2daba153b913b1b901cf61440ad5e019 + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/black?source=hash-mapping + size: 390571 + timestamp: 1728503839694 +- kind: conda + name: black + version: 24.10.0 + build: py313habf4b1d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/black-24.10.0-py313habf4b1d_0.conda + sha256: 0dd1b46c86daf91275bda0c0033af68d0120bf558df1f17dc6c9115dc98a48f2 + md5: 898f6d094791c8bfeb02be761897165e + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/black?source=hash-mapping + size: 400395 + timestamp: 1728503832399 +- kind: conda + name: black + version: 24.10.0 + build: py313hfa70ccb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/black-24.10.0-py313hfa70ccb_0.conda + sha256: 8f99d23fbcf0ce5fe852e2373e154dac8628497fbee15f0f9f4851a2f5ddc30b + md5: 9e5290e06324d03e6d2e18b410620696 + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/black?source=hash-mapping + size: 422911 + timestamp: 1728504578146 +- kind: conda + name: bleach + version: 6.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + sha256: 01be7fb5163e7c31356a18c259ddc19a5431b8b974dc65e2427b88c2d30034f3 + md5: 461bcfab8e65c166e297222ae919a2d4 + depends: + - python >=3.9 + - webencodings + license: Apache-2.0 AND MIT + license_family: Apache + purls: + - pkg:pypi/bleach?source=hash-mapping + size: 132652 + timestamp: 1730286301829 +- kind: pypi + name: bracex + version: 2.5.post1 + url: https://files.pythonhosted.org/packages/4b/02/8db98cdc1a58e0abd6716d5e63244658e6e63513c65f469f34b6f1053fd0/bracex-2.5.post1-py3-none-any.whl + sha256: 13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6 + requires_python: '>=3.8' +- kind: conda + name: bracex + version: 2.2.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/bracex-2.2.1-pyhd8ed1ab_0.tar.bz2 + sha256: e3f867b5be7837366e989df8f6e64f94ec180676fea3494285ee873f24921156 + md5: 586272349d7bef5b1ef527b56dca73cb + depends: + - python >=3.5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/bracex?source=hash-mapping + size: 14045 + timestamp: 1636190617443 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h2ec8cdc_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py313h5813708_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda + sha256: e89803147849d429f1ba3eec880b487c2cc4cac48a221079001a2ab1216f3709 + md5: c1a5d95bf18940d2b1d12f7bf2fb589b + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 h2466b09_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 322309 + timestamp: 1725268431915 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py313h9ea2907_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h9ea2907_2.conda + sha256: a8ff547af4de5d2d6cb84543a73f924dbbd60029920dbadc27298ea0b48f28bc + md5: 38ab121f341a1d8613c3898f36efecab + depends: + - __osx >=10.13 + - libcxx >=17 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.1.0 h00291cd_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 363156 + timestamp: 1725268004102 +- kind: pypi + name: build + version: 1.2.2.post1 + url: https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl + sha256: 1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5 + requires_dist: + - packaging>=19.1 + - pyproject-hooks + - colorama ; os_name == 'nt' + - importlib-metadata>=4.6 ; python_full_version < '3.10.2' + - tomli>=1.1.0 ; python_full_version < '3.11' + - furo>=2023.8.17 ; extra == 'docs' + - sphinx~=7.0 ; extra == 'docs' + - sphinx-argparse-cli>=1.5 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.10 ; extra == 'docs' + - sphinx-issues>=3.0.0 ; extra == 'docs' + - build[uv,virtualenv] ; extra == 'test' + - filelock>=3 ; extra == 'test' + - pytest>=6.2.4 ; extra == 'test' + - pytest-cov>=2.12 ; extra == 'test' + - pytest-mock>=2 ; extra == 'test' + - pytest-rerunfailures>=9.1 ; extra == 'test' + - pytest-xdist>=1.34 ; extra == 'test' + - wheel>=0.36.0 ; extra == 'test' + - setuptools>=42.0.0 ; python_full_version < '3.10' and extra == 'test' + - setuptools>=56.0.0 ; python_full_version == '3.10.*' and extra == 'test' + - setuptools>=56.0.0 ; python_full_version == '3.11.*' and extra == 'test' + - setuptools>=67.8.0 ; python_full_version >= '3.12' and extra == 'test' + - build[uv] ; extra == 'typing' + - importlib-metadata>=5.1 ; extra == 'typing' + - mypy~=1.9.0 ; extra == 'typing' + - tomli ; extra == 'typing' + - typing-extensions>=3.7.4.3 ; extra == 'typing' + - uv>=0.1.18 ; extra == 'uv' + - virtualenv>=20.0.35 ; extra == 'virtualenv' + requires_python: '>=3.8' +- kind: conda + name: bump-my-version + version: 0.28.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/bump-my-version-0.28.1-pyhd8ed1ab_0.conda + sha256: a4935811c9833b4a58922b7f1fa6bbe7cbc7f0f477e67b4b16d515417df3b944 + md5: 27fb27016d3be886f4376c94c367c2de + depends: + - click + - pydantic >=2.0.0 + - pydantic-settings + - python >=3.8 + - questionary + - rich + - rich-click + - tomlkit + - wcmatch >=8.5.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/bump-my-version?source=hash-mapping + size: 45642 + timestamp: 1730666890761 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h2466b09_7 + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 54927 + timestamp: 1720974860185 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: bzip2 + version: 1.0.8 + build: hfdf4475_7 + build_number: 7 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 + md5: 7ed4301d437b59045be7e051a0308211 + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 134188 + timestamp: 1720974491916 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: h56e8100_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + sha256: 0fcac3a7ffcc556649e034a1802aedf795e64227eaa7194d207b01eaf26454c4 + md5: 4c4fd67c18619be5aa65dc5b6c72e490 + license: ISC + purls: [] + size: 158773 + timestamp: 1725019107649 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: h8857fd0_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + sha256: 593f302d0f44c2c771e1614ee6d56fffdc7d616e6f187669c8b0e34ffce3e1ae + md5: b7e5424e7f06547a903d28e4651dbb21 + license: ISC + purls: [] + size: 158665 + timestamp: 1725019059295 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea + md5: c27d1c142233b5bc9ca570c6e2e0c244 + license: ISC + purls: [] + size: 159003 + timestamp: 1725018903918 +- kind: conda + name: certifi + version: 2024.8.30 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f + md5: 12f7d00853807b0531775e9be891cb11 + depends: + - python >=3.7 + license: ISC + purls: + - pkg:pypi/certifi?source=hash-mapping + size: 163752 + timestamp: 1725278204397 +- kind: conda + name: cffi + version: 1.17.1 + build: py312h06ac9bb_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- kind: conda + name: cffi + version: 1.17.1 + build: py313h49682b3_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + sha256: 660c8f8488f78c500a1bb4a803c31403104b1ee2cabf1476a222a3b8abf5a4d7 + md5: 98afc301e6601a3480f9e0b9f8867ee0 + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 284540 + timestamp: 1725560667915 +- kind: conda + name: cffi + version: 1.17.1 + build: py313ha7868ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + sha256: b19f581fe423858f1f477c52e10978be324c55ebf2e418308d30d013f4a476ff + md5: 519a29d7ac273f8c165efc0af099da42 + depends: + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 291828 + timestamp: 1725561211547 +- kind: conda + name: charset-normalizer + version: 3.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 + md5: a374efa97290b8799046df7c5ca17164 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47314 + timestamp: 1728479405343 +- kind: conda + name: click + version: 8.1.7 + build: unix_pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec + md5: f3ad426304898027fc619827ff428eca + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84437 + timestamp: 1692311973840 +- kind: conda + name: click + version: 8.1.7 + build: win_pyh7428d3b_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + sha256: 90236b113b9a20041736e80b80ee965167f9aac0468315c55e2bad902d673fb0 + md5: 3549ecbceb6cd77b91a105511b7d0786 + depends: + - __win + - colorama + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 85051 + timestamp: 1692312207348 +- kind: conda + name: cmarkgfm + version: 2024.11.20 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cmarkgfm-2024.11.20-py312h66e93f0_0.conda + sha256: 294643f1ad5cbaa8646f803b89cc2da2b43c41cf4d3855883662ab0bb5455d3e + md5: bf99b4a864e31ecd9244affd27f3ceb6 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cmarkgfm?source=hash-mapping + size: 139452 + timestamp: 1732193337513 +- kind: conda + name: cmarkgfm + version: 2024.11.20 + build: py313h63b0ddb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cmarkgfm-2024.11.20-py313h63b0ddb_0.conda + sha256: 7ea77feb04b92d1df90ea406503b0dc9b88bf82a2124386e2a64283f565a5174 + md5: 409ea05f2e819705a87e03f48887a60b + depends: + - __osx >=10.13 + - cffi >=1.0.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cmarkgfm?source=hash-mapping + size: 117012 + timestamp: 1732193418620 +- kind: conda + name: cmarkgfm + version: 2024.11.20 + build: py313ha7868ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cmarkgfm-2024.11.20-py313ha7868ed_0.conda + sha256: ebb28d032a14df9d4f5912e2fc8229ef0ae10b8ebfbbe68b169f91b101dc4d6c + md5: 22bd38be6f6822fa0ad2d8ad1c0e2797 + depends: + - cffi >=1.0.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cmarkgfm?source=hash-mapping + size: 121616 + timestamp: 1732193771495 +- kind: conda + name: colorama + version: 0.4.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 + md5: 3faab06a954c2a04039983f2c4a50d99 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 25170 + timestamp: 1666700778190 +- kind: conda + name: comm + version: 0.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe + md5: 948d84721b578d426294e17a02e24cbb + depends: + - python >=3.6 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/comm?source=hash-mapping + size: 12134 + timestamp: 1710320435158 +- kind: conda + name: coverage + version: 7.6.8 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda + sha256: f81fb017d0312a392d6454f374e69379650108bb5d709c635edf9dcbb9a39eef + md5: fe8c93f4c75908fe2a1cc45ed0c47edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 364534 + timestamp: 1732426278362 +- kind: conda + name: coverage + version: 7.6.8 + build: py313h717bdf5_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py313h717bdf5_0.conda + sha256: d32fae25cce0ba4cc24a0fd55606fa9d4fa6e78b5b3513c0ba47eae21e65ac7c + md5: 1f858c8c3b1dee85e64ce68fdaa0b6e7 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 368990 + timestamp: 1732426436029 +- kind: conda + name: coverage + version: 7.6.8 + build: py313hb4c8b1a_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py313hb4c8b1a_0.conda + sha256: 01b3d6d287dd34363efaa47baf93148f404af7b4f7b52f3117a3575dc6edb86a + md5: 258641c09a12218156e1706d6bea5bf6 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 396450 + timestamp: 1732426714288 +- kind: conda + name: cpython + version: 3.13.0 + build: py313hd8ed1ab_101 + build_number: 101 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.0-py313hd8ed1ab_101.conda + sha256: 0b696b05a466ec034b549136a104b2a298d3820135c454f69f7ca8b9093a5255 + md5: cf35258c45ef74c804a6768e178f5c62 + depends: + - python 3.13.0.* + - python_abi * *_cp313 + license: Python-2.0 + purls: [] + size: 46121 + timestamp: 1732734523087 +- kind: conda + name: cryptography + version: 43.0.3 + build: py312hda17c39_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.3-py312hda17c39_0.conda + sha256: ba9e5aced2e7dc0bbc48f60bf38f514839424a01975fb2aed30e9246c2f82c7c + md5: 2abada8c216dd6e32514535a3fa245d4 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.12 + - libgcc >=13 + - openssl >=3.3.2,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=hash-mapping + size: 1488388 + timestamp: 1729286882127 +- kind: conda + name: dbus + version: 1.13.6 + build: h5008d03_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 618596 + timestamp: 1640112124844 +- kind: conda + name: debugpy + version: 1.8.9 + build: py312h2ec8cdc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda + sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a + md5: c522fd70ca7a0c2fe1a861dd13987a57 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2605093 + timestamp: 1732236790708 +- kind: conda + name: debugpy + version: 1.8.9 + build: py313h14b76d3_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py313h14b76d3_0.conda + sha256: 8f96569b660bc434746927a4a488aecebb7fca2ec0745b5e9bcf3f549c62f95d + md5: 485039dcceae421aad4bfdd36b139e0a + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2571799 + timestamp: 1732236992112 +- kind: conda + name: debugpy + version: 1.8.9 + build: py313h5813708_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py313h5813708_0.conda + sha256: 74227d356330e99abc1232646dc630ab16430af6bc9ac7e9d84a1c9a5b150dae + md5: 704d3bf8daa734a973f995ce0e8a3ad2 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 3692639 + timestamp: 1732237246646 +- kind: conda + name: decorator + version: 5.1.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 + md5: 43afe5ab04e35e17ba28649471dd7364 + depends: + - python >=3.5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/decorator?source=hash-mapping + size: 12072 + timestamp: 1641555714315 +- kind: conda + name: defusedxml + version: 0.7.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + md5: 961b3a227b437d82ad7054484cfa71b2 + depends: + - python >=3.6 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/defusedxml?source=hash-mapping + size: 24062 + timestamp: 1615232388757 +- kind: conda + name: docutils + version: 0.21.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + sha256: 362bfe3afaac18298c48c0c6a935641544077ce5105a42a2d8ebe750ad07c574 + md5: e8cd5d629f65bdf0f3bb312cde14659e + depends: + - python >=3.9 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - pkg:pypi/docutils?source=hash-mapping + size: 403226 + timestamp: 1713930478970 +- kind: conda + name: entrypoints + version: '0.4' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af + md5: 3cf04868fee0a029769bd41f4b2fbf2d + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/entrypoints?source=hash-mapping + size: 9199 + timestamp: 1643888357950 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 + md5: d02ae936e42063ca46af6cdad2dbd1e0 + depends: + - python >=3.7 + license: MIT and PSF-2.0 + purls: + - pkg:pypi/exceptiongroup?source=hash-mapping + size: 20418 + timestamp: 1720869435725 +- kind: conda + name: executing + version: 2.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 + md5: d0441db20c827c11721889a241df1220 + depends: + - python >=2.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/executing?source=hash-mapping + size: 28337 + timestamp: 1725214501850 +- kind: conda + name: expat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 138145 + timestamp: 1730967050578 +- kind: conda + name: ghp-import + version: 2.1.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_1.conda + sha256: 83c5e396a70dbf37cda6801fb20311a70c53a16e5374d3bf9891ae24aa912080 + md5: cb68db36ff7d6bf5846d9d955dc8747d + depends: + - python >=3.6 + - python-dateutil >=2.8.1 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/ghp-import?source=hash-mapping + size: 16334 + timestamp: 1730194036772 +- kind: conda + name: gitdb + version: 4.0.11 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda + sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b + md5: 623b19f616f2ca0c261441067e18ae40 + depends: + - python >=3.7 + - smmap >=3.0.1,<6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/gitdb?source=hash-mapping + size: 52872 + timestamp: 1697791718749 +- kind: conda + name: gitpython + version: 3.1.43 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.43-pyhd8ed1ab_0.conda + sha256: cbb2802641a009ce9bcc2a047e817fd8816f9c842036a42f4730398d8e4cda2a + md5: 0b2154c1818111e17381b1df5b4b0176 + depends: + - gitdb >=4.0.1,<5 + - python >=3.7 + - typing_extensions >=3.7.4.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/gitpython?source=hash-mapping + size: 156827 + timestamp: 1711991122366 +- kind: conda + name: griffe + version: 1.5.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/griffe-1.5.1-pyhd8ed1ab_0.conda + sha256: 591bf3247a0872b76e2cf57cbdb71762913568390f5a745fe0f3f779a16459a9 + md5: 87db2aa0738c4acc5f565388d519fb25 + depends: + - colorama >=0.4 + - python >=3.9 + license: ISC + purls: + - pkg:pypi/griffe?source=hash-mapping + size: 97620 + timestamp: 1729348988898 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + md5: b748fbf7060927a6e82df7cb5ee8f097 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.6.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 46754 + timestamp: 1634280590080 +- kind: conda + name: hjson-py + version: 3.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hjson-py-3.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: be791a584329f061d28940b2c76dcf92fbd63305e81ec8eaf91646d4e15db84b + md5: c30befad415322013e1e7418d7d23c56 + depends: + - python >=3.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/hjson?source=hash-mapping + size: 45239 + timestamp: 1660536535567 +- kind: conda + name: hpack + version: 4.0.0 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + md5: 914d6646c4dbb1fd3ff539830a12fd71 + depends: + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 25341 + timestamp: 1598856368685 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 14646 + timestamp: 1619110249723 +- kind: conda + name: idna + version: '3.10' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: 7ba2ede0e7c795ff95088daf0dc59753 + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49837 + timestamp: 1726459583613 +- kind: conda + name: importlib-metadata + version: 8.5.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c + md5: 54198435fce4d64d8a89af22573012a8 + depends: + - python >=3.8 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=hash-mapping + size: 28646 + timestamp: 1726082927916 +- kind: conda + name: importlib_resources + version: 6.4.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 + md5: c808991d29b9838fb4d96ce8267ec9ec + depends: + - python >=3.8 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.4.5,<6.4.6.0a0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-resources?source=hash-mapping + size: 32725 + timestamp: 1725921462405 +- kind: conda + name: iniconfig + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 + md5: f800d2da156d08e289b14e87e43c1ae5 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/iniconfig?source=hash-mapping + size: 11101 + timestamp: 1673103208955 +- kind: conda + name: intel-openmp + version: 2024.2.1 + build: h57928b3_1083 + build_number: 1083 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 + md5: 2d89243bfb53652c182a7c73182cce4f + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + purls: [] + size: 1852356 + timestamp: 1723739573141 +- kind: conda + name: ipykernel + version: 6.29.5 + build: pyh3099207_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a + md5: b40131ab6a36ac2c09b7c57d4d3fbf99 + depends: + - __linux + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipykernel?source=hash-mapping + size: 119084 + timestamp: 1719845605084 +- kind: conda + name: ipykernel + version: 6.29.5 + build: pyh4bbf305_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda + sha256: dc569094125127c0078aa536f78733f383dd7e09507277ef8bcd1789786e7086 + md5: 18df5fc4944a679e085e0e8f31775fc8 + depends: + - __win + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipykernel?source=hash-mapping + size: 119853 + timestamp: 1719845858082 +- kind: conda + name: ipykernel + version: 6.29.5 + build: pyh57ce528_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 + md5: 9eb15d654daa0ef5a98802f586bb4ffc + depends: + - __osx + - appnope + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipykernel?source=hash-mapping + size: 119568 + timestamp: 1719845667420 +- kind: conda + name: ipython + version: 8.29.0 + build: pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda + sha256: 606723272a208cca1036852e04fbb61741b78451784746e75edd1becb70347d2 + md5: 56db21d7d51410fcfbfeca3d1a6b4269 + depends: + - __unix + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pexpect >4.3 + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + size: 599356 + timestamp: 1729866495921 +- kind: conda + name: ipython + version: 8.29.0 + build: pyh7428d3b_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda + sha256: 2208dbe96e94ba653c4e0a5f302e36f16df73eec1968cfb85eff2d9775c9ced1 + md5: 9dc505b3569b4c26cffc241c50695f75 + depends: + - __win + - colorama + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + size: 600237 + timestamp: 1729866942619 +- kind: conda + name: isort + version: 5.13.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda + sha256: 78a7e2037029366d2149f73c8d02e93cac903d535e208cc4517808b0b42e85f2 + md5: 1d25ed2b95b92b026aaa795eabec8d91 + depends: + - python >=3.8,<4.0 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/isort?source=hash-mapping + size: 73783 + timestamp: 1702518633821 +- kind: conda + name: jaraco.classes + version: 3.4.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_1.conda + sha256: 538b1c6df537a36c63fd0ed83cb1c1c25b07d8d3b5e401991fdaff261a4b5b4d + md5: 7b756504d362cbad9b73a50a5455cafd + depends: + - more-itertools + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jaraco-classes?source=hash-mapping + size: 12223 + timestamp: 1713939433204 +- kind: conda + name: jaraco.context + version: 5.3.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-5.3.0-pyhd8ed1ab_1.conda + sha256: 9e2aeacb1aed3ab4fc5883a357e8a874e12f687af300f8708ec12de2995e17d2 + md5: 72d7ad2dcd0f37eccb2ee35a1c8f6aaa + depends: + - backports.tarfile + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jaraco-context?source=hash-mapping + size: 12456 + timestamp: 1714372284922 +- kind: conda + name: jaraco.functools + version: 4.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.0.0-pyhd8ed1ab_0.conda + sha256: d2e866fd22a48eaa2f795b6a3b0bf16f066293322ce04dd65cca36267160ead6 + md5: 547670a612fd335eaa5ffbf0fa75cb64 + depends: + - more-itertools + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jaraco-functools?source=hash-mapping + size: 15192 + timestamp: 1701695329516 +- kind: conda + name: jedi + version: 0.19.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda + sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab + md5: 11ead81b00e0f7cc901fceb7ccfb92c1 + depends: + - parso >=0.8.3,<0.9.0 + - python >=3.9 + license: Apache-2.0 AND MIT + purls: + - pkg:pypi/jedi?source=hash-mapping + size: 842916 + timestamp: 1731317305873 +- kind: conda + name: jeepney + version: 0.8.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2 + sha256: 16639759b811866d63315fe1391f6fb45f5478b823972f4d3d9f0392b7dd80b8 + md5: 9800ad1699b42612478755a2d26c722d + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jeepney?source=hash-mapping + size: 36895 + timestamp: 1649085298891 +- kind: conda + name: jinja2 + version: 3.1.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d + md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + depends: + - markupsafe >=2.0 + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 111565 + timestamp: 1715127275924 +- kind: conda + name: jsonschema + version: 4.23.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda + sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff + md5: da304c192ad59975202859b367d0f6a2 + depends: + - attrs >=22.2.0 + - importlib_resources >=1.4.0 + - jsonschema-specifications >=2023.03.6 + - pkgutil-resolve-name >=1.3.10 + - python >=3.8 + - referencing >=0.28.4 + - rpds-py >=0.7.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema?source=hash-mapping + size: 74323 + timestamp: 1720529611305 +- kind: conda + name: jsonschema-specifications + version: 2024.10.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda + sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98 + md5: 720745920222587ef942acfbc578b584 + depends: + - python >=3.8 + - referencing >=0.31.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema-specifications?source=hash-mapping + size: 16165 + timestamp: 1728418976382 +- kind: conda + name: jupyter_client + version: 8.6.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: a14218cfb29662b4a19ceb04e93e298e + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.8 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106055 + timestamp: 1726610805505 +- kind: conda + name: jupyter_core + version: 5.7.2 + build: pyh31011fe_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- kind: conda + name: jupyter_core + version: 5.7.2 + build: pyh5737063_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + sha256: 7c903b2d62414c3e8da1f78db21f45b98de387aae195f8ca959794113ba4b3fd + md5: 46d87d1c0ea5da0aae36f77fa406e20d + depends: + - __win + - cpython + - platformdirs >=2.5 + - python >=3.8 + - pywin32 >=300 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 58269 + timestamp: 1727164026641 +- kind: conda + name: jupyterlab_pygments + version: 0.3.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 + md5: afcd1b53bcac8844540358e33f33d28f + depends: + - pygments >=2.4.1,<3 + - python >=3.7 + constrains: + - jupyterlab >=4.0.8,<5.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyterlab-pygments?source=hash-mapping + size: 18776 + timestamp: 1707149279640 +- kind: conda + name: jupytext + version: 1.16.4 + build: pyh80e38bb_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupytext-1.16.4-pyh80e38bb_0.conda + sha256: e0e904bcc18a3b31dc79b05f98a3fd46c9e52b27e7942856f767f0c0b815ae15 + md5: 1df7fd1594a7f2f6496ff23834a099bf + depends: + - markdown-it-py >=1.0 + - mdit-py-plugins + - nbformat + - packaging + - python >=3.8 + - pyyaml + - tomli + license: MIT + license_family: MIT + purls: + - pkg:pypi/jupytext?source=hash-mapping + size: 104513 + timestamp: 1722332096729 +- kind: conda + name: keyring + version: 25.5.0 + build: pyh534df25_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/keyring-25.5.0-pyh534df25_0.conda + sha256: d4a5b92e82dfd1b60ea882618ecf9333ab0c2d6a16a36edbbe0d3102cc157081 + md5: a0ed4210b80d1c9b4737774c22e222a6 + depends: + - __osx + - importlib-metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/keyring?source=hash-mapping + size: 37437 + timestamp: 1730056689995 +- kind: conda + name: keyring + version: 25.5.0 + build: pyh7428d3b_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/keyring-25.5.0-pyh7428d3b_0.conda + sha256: 9199708fb578b7150bfd7c37fbb6b876f0432e2514a623148be29b96b8705afe + md5: 872fd60cb5aef19f8c83dfc6753e0385 + depends: + - __win + - importlib-metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - python >=3.8 + - pywin32-ctypes >=0.2.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/keyring?source=hash-mapping + size: 37357 + timestamp: 1730056956899 +- kind: conda + name: keyring + version: 25.5.0 + build: pyha804496_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/keyring-25.5.0-pyha804496_0.conda + sha256: f9a0b7838db9366fba0b9917fe8d0654377ebf8959e904f963e12ff76a5cc9ba + md5: a36af57a05ceaed6827adc5e4ba81267 + depends: + - __linux + - importlib-metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - jeepney >=0.4.2 + - python >=3.8 + - secretstorage >=3.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/keyring?source=hash-mapping + size: 37056 + timestamp: 1730056658373 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- kind: conda + name: krb5 + version: 1.21.3 + build: h37d8d59_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c + md5: d4765c524b1d91567886bde656fb514b + depends: + - __osx >=10.13 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1185323 + timestamp: 1719463492984 +- kind: conda + name: krb5 + version: 1.21.3 + build: h659f571_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- kind: conda + name: krb5 + version: 1.21.3 + build: hdf4eb48_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 + md5: 31aec030344e962fbd7dbbbbd68e60a9 + depends: + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 712034 + timestamp: 1719463874284 +- kind: conda + name: ld_impl_linux-64 + version: '2.43' + build: h712a8e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 669211 + timestamp: 1729655358674 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 + md5: 8ea26d42ca88ec5258802715fe1ee10b + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack 3.9.0 25_linux64_openblas + - libcblas 3.9.0 25_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 25_linux64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15677 + timestamp: 1729642900350 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_osx64_openblas + build_number: 25 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda + sha256: 1b22b5322a311a775bca637b26317645cf07e35f125cede9278c6c45db6e7105 + md5: da0a6f87958893e1d2e2bbc7e7a6541f + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack 3.9.0 25_osx64_openblas + - liblapacke 3.9.0 25_osx64_openblas + - blas * openblas + - libcblas 3.9.0 25_osx64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15952 + timestamp: 1729643159199 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_win64_mkl + build_number: 25 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda + sha256: 5468bb91c44b41ce060bbd997c797b2f91e2b7ce91a7cbf4ddf7e7b734a8dc98 + md5: 499208e81242efb6e5abc7366c91c816 + depends: + - mkl 2024.2.2 h66d3029_14 + constrains: + - blas * mkl + - libcblas 3.9.0 25_win64_mkl + - liblapack 3.9.0 25_win64_mkl + - liblapacke 3.9.0 25_win64_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3736641 + timestamp: 1729643534444 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd + md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + depends: + - libblas 3.9.0 25_linux64_openblas + constrains: + - liblapack 3.9.0 25_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 25_linux64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15613 + timestamp: 1729642905619 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_osx64_openblas + build_number: 25 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda + sha256: b04ae297aa5396df3135514866db72845b111c92524570f923625473f11cfbe2 + md5: ab304b75ea67f850cf7adf9156e3f62f + depends: + - libblas 3.9.0 25_osx64_openblas + constrains: + - liblapack 3.9.0 25_osx64_openblas + - liblapacke 3.9.0 25_osx64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15842 + timestamp: 1729643166929 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_win64_mkl + build_number: 25 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda + sha256: 21528cdfe67dafdb2d21925515a167f13963e002c2b6d06d68984767f731850c + md5: 3ed189ba03a9888a8013aaee0d67c49d + depends: + - libblas 3.9.0 25_win64_mkl + constrains: + - blas * mkl + - liblapack 3.9.0 25_win64_mkl + - liblapacke 3.9.0 25_win64_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3732258 + timestamp: 1729643561581 +- kind: conda + name: libcxx + version: 19.1.4 + build: hf95d169_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda + sha256: 48c6d0ab9dd0c66693f79f4a032cd9ebb64fb88329dfa747aeac5299f9b3f33b + md5: 5f23923c08151687ff2fc3002b0a7234 + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 529010 + timestamp: 1732060320836 +- kind: conda + name: libedit + version: 3.1.20191231 + build: h0678c8f_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095 + md5: 6016a8a1d0e63cac3de2c352cd40208b + depends: + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 105382 + timestamp: 1597616576726 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 123878 + timestamp: 1597616541093 +- kind: conda + name: libexpat + version: 2.6.4 + build: h240833e_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 + md5: 20307f4049a735a78a29073be1be2626 + depends: + - __osx >=10.13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 70758 + timestamp: 1730967204736 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- kind: conda + name: libexpat + version: 2.6.4 + build: he0c23c2_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 + md5: eb383771c680aa792feb529eaf9df82f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 139068 + timestamp: 1730967442102 +- kind: conda + name: libffi + version: 3.4.2 + build: h0d85af4_5 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + md5: ccb34fb14960ad8b125962d3d79b31a9 + license: MIT + license_family: MIT + purls: [] + size: 51348 + timestamp: 1636488394370 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libffi + version: 3.4.2 + build: h8ffe710_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 + md5: 2c96d1b6915b408893f9472569dee135 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + purls: [] + size: 42063 + timestamp: 1636489106777 +- kind: conda + name: libgcc + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 848745 + timestamp: 1729027721139 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 54142 + timestamp: 1729027726517 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_h97931a8_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d + md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 + depends: + - libgfortran5 13.2.0 h2873a65_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110106 + timestamp: 1707328956438 +- kind: conda + name: libgfortran + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53997 + timestamp: 1729027752995 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: h2873a65_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b + md5: e4fb4d23ec2870ff3c40d10afe305aec + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1571379 + timestamp: 1707328880361 +- kind: conda + name: libgfortran5 + version: 14.2.0 + build: hd5240d6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1462645 + timestamp: 1729027735353 +- kind: conda + name: libglib + version: 2.82.2 + build: h2ff4ddf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 + md5: 13e8e54035ddd2b91875ba399f0f7c04 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + purls: [] + size: 3931898 + timestamp: 1729191404130 +- kind: conda + name: libgomp + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 460992 + timestamp: 1729027639220 +- kind: conda + name: libhwloc + version: 2.11.1 + build: default_h8125262_1000 + build_number: 1000 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + sha256: 92728e292640186759d6dddae3334a1bc0b139740b736ffaeccb825fb8c07a2e + md5: 933bad6e4658157f1aec9b171374fde2 + depends: + - libxml2 >=2.12.7,<3.0a0 + - pthreads-win32 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2379689 + timestamp: 1720461835526 +- kind: conda + name: libiconv + version: '1.17' + build: hcfcfb64_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b + md5: e1eb10b1cca179f2baa3601e4efc8712 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + purls: [] + size: 636146 + timestamp: 1702682547199 +- kind: conda + name: libiconv + version: '1.17' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + purls: [] + size: 705775 + timestamp: 1702682170569 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e + md5: 4dc03a53fc69371a6158d0ed37214cd3 + depends: + - libblas 3.9.0 25_linux64_openblas + constrains: + - liblapacke 3.9.0 25_linux64_openblas + - libcblas 3.9.0 25_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15608 + timestamp: 1729642910812 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_osx64_openblas + build_number: 25 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda + sha256: 2a9a6143d103e7e21511cbf439521645bdd506bfabfcac9d6398dd0562c6905c + md5: dda0e24b4605ebbd381e48606a107bed + depends: + - libblas 3.9.0 25_osx64_openblas + constrains: + - liblapacke 3.9.0 25_osx64_openblas + - blas * openblas + - libcblas 3.9.0 25_osx64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15852 + timestamp: 1729643174413 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_win64_mkl + build_number: 25 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda + sha256: 98c13a28596389539abe3f608c6fbd2826df47671f77c58a331df878c6140c53 + md5: f716ef84564c574e8e74ae725f5d5f93 + depends: + - libblas 3.9.0 25_win64_mkl + constrains: + - blas * mkl + - libcblas 3.9.0 25_win64_mkl + - liblapacke 3.9.0 25_win64_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3736560 + timestamp: 1729643588182 +- kind: conda + name: libmpdec + version: 4.0.0 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf + md5: 74860100b2029e2523cf480804c76b9b + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 88657 + timestamp: 1723861474602 +- kind: conda + name: libmpdec + version: 4.0.0 + build: hfdf4475_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda + sha256: 791be3d30d8e37ec49bcc23eb8f1e1415d911a7c023fa93685f2ea485179e258 + md5: ed625b2e59dff82859c23dd24774156b + depends: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 76561 + timestamp: 1723817691512 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libopenblas + version: 0.3.28 + build: openmp_hbf64a52_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda + sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 + md5: cd2c572c02a73b88c4d378eb31110e85 + depends: + - __osx >=10.13 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6165715 + timestamp: 1730773348340 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h94d23a6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5578513 + timestamp: 1730772671118 +- kind: conda + name: libsodium + version: 1.0.20 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- kind: conda + name: libsodium + version: 1.0.20 + build: hc70643c_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda + sha256: 7bcb3edccea30f711b6be9601e083ecf4f435b9407d70fc48fbcf9e5d69a0fc6 + md5: 198bb594f202b205c7d18b936fa4524f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: ISC + purls: [] + size: 202344 + timestamp: 1716828757533 +- kind: conda + name: libsodium + version: 1.0.20 + build: hfdf4475_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + sha256: d3975cfe60e81072666da8c76b993af018cf2e73fe55acba2b5ba0928efaccf5 + md5: 6af4b059e26492da6013e79cbcb4d069 + depends: + - __osx >=10.13 + license: ISC + purls: [] + size: 210249 + timestamp: 1716828641383 +- kind: conda + name: libsqlite + version: 3.47.0 + build: h2466b09_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda + sha256: 3342d6fe787f5830f7e8466d9c65c914bfd8d67220fb5673041b338cbba47afe + md5: 5b1f36012cc3d09c4eb9f24ad0e2c379 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + purls: [] + size: 892175 + timestamp: 1730208431651 +- kind: conda + name: libsqlite + version: 3.47.0 + build: h2f8c449_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda + sha256: a0f7381c867898a45018b1e5cf1aca68659d292d58252e8f489a4270b010fed8 + md5: af445c495253a871c3d809e1199bb12b + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 915300 + timestamp: 1730208101739 +- kind: conda + name: libsqlite + version: 3.47.0 + build: hadc24fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 + md5: b6f02b52a174e612e89548f4663ce56a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 875349 + timestamp: 1730208050020 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: hc0a3c3a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3893695 + timestamp: 1729027746910 +- kind: conda + name: libstdcxx-ng + version: 14.2.0 + build: h4852527_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 54105 + timestamp: 1729027780628 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libxml2 + version: 2.13.5 + build: h442d1da_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + sha256: 020466b17c143190bd5a6540be2ceef4c1f8d514408bd5f0adaafcd9d0057b5c + md5: 1fbabbec60a3c7c519a5973b06c3b2f4 + depends: + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 1511585 + timestamp: 1731489892312 +- kind: conda + name: libzlib + version: 1.3.1 + build: h2466b09_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 55476 + timestamp: 1727963768015 +- kind: conda + name: libzlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- kind: conda + name: libzlib + version: 1.3.1 + build: hd23fc13_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09 + md5: 003a54a4e32b02f7355b50a837e699da + depends: + - __osx >=10.13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 57133 + timestamp: 1727963183990 +- kind: conda + name: llvm-openmp + version: 19.1.4 + build: ha54dae1_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + sha256: 69fca4a9318d7367ec3e0e7d6e6023a46ae1113dbd67da6d0f93fffa0ef54497 + md5: 193715d512f648fe0865f6f13b1957e3 + depends: + - __osx >=10.13 + constrains: + - openmp 19.1.4|19.1.4.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 305132 + timestamp: 1732102427054 +- kind: conda + name: markdown + version: '3.6' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda + sha256: fce1fde00359696983989699c00f9891194c4ebafea647a8d21b7e2e3329b56e + md5: 06e9bebf748a0dea03ecbe1f0e27e909 + depends: + - importlib-metadata >=4.4 + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markdown?source=hash-mapping + size: 78331 + timestamp: 1710435316163 +- kind: conda + name: markdown-it-py + version: 3.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 + md5: 93a8e71256479c62074356ef6ebf501b + depends: + - mdurl >=0.1,<1 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/markdown-it-py?source=hash-mapping + size: 64356 + timestamp: 1686175179621 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda + sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 + md5: a755704ea0e2503f8c227d84829a8e81 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24878 + timestamp: 1729351558563 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py313h25ec13a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h25ec13a_0.conda + sha256: d636b2f52d8bed3efbcc273d0e26f8ff1db26ad0134a39350f2edb74a41b1708 + md5: 86bc0676625162bc27dc2c81dc0a8393 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24326 + timestamp: 1729351501551 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py313hb4c8b1a_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_0.conda + sha256: 2b7500300aba9726f785781ded5fb1205c76d3047a93cd30868712e1e02f8c6e + md5: 4ab654528518cea7e94f53af79bd3171 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 27813 + timestamp: 1729351491668 +- kind: pypi + name: material-plausible-plugin + version: 0.2.0 + url: https://files.pythonhosted.org/packages/48/9d/797d595dc57bbcb6284584ca7e228ac54b421aa1e864cec15d0f78e02f4b/material_plausible_plugin-0.2.0-py3-none-any.whl + sha256: b7dc866b358475d940c5c61f56f86c400b9c1e73ffa2b06819207df38f34fcf4 + requires_dist: + - mkdocs + - mkdocs-material + requires_python: '>=3.7' +- kind: conda + name: matplotlib-inline + version: 0.1.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda + sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab + md5: 779345c95648be40d22aaa89de7d4254 + depends: + - python >=3.6 + - traitlets + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/matplotlib-inline?source=hash-mapping + size: 14599 + timestamp: 1713250613726 +- kind: conda + name: mdit-py-plugins + version: 0.4.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_0.conda + sha256: 5cedc99412278b37e9596f1f991d49f5a1663fe79767cf814a288134a1400ba9 + md5: 5387f2cfa28f8a3afa3368bb4ba201e8 + depends: + - markdown-it-py >=1.0.0,<4.0.0 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdit-py-plugins?source=hash-mapping + size: 42126 + timestamp: 1725995333692 +- kind: conda + name: mdurl + version: 0.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 + md5: 776a8dd9e824f77abac30e6ef43a8f7a + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdurl?source=hash-mapping + size: 14680 + timestamp: 1704317789138 +- kind: conda + name: mergedeep + version: 1.3.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2 + sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b + md5: 1a160a3cab5cb6bd46264b52cd6f69a2 + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mergedeep?source=hash-mapping + size: 9598 + timestamp: 1612711404414 +- kind: conda + name: mistune + version: 3.0.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda + sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c + md5: 5cbee699846772cc939bef23a0d524ed + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mistune?source=hash-mapping + size: 66022 + timestamp: 1698947249750 +- kind: conda + name: mkdocs + version: 1.6.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_0.conda + sha256: 757f046175d031781e9ae58f2c3b8f952bda157a7659a1bb59b8572ac939b40c + md5: b7b2cfed0691bc312988b7c5bbe77226 + depends: + - click >=7.0 + - colorama >=0.4 + - ghp-import >=1.0 + - importlib-metadata >=4.4 + - jinja2 >=2.11.1 + - markdown >=3.3.6 + - markupsafe >=2.0.1 + - mergedeep >=1.3.4 + - mkdocs-get-deps >=0.2.0 + - packaging >=20.5 + - pathspec >=0.11.1 + - python >=3.8 + - pyyaml >=5.1 + - pyyaml-env-tag >=0.1 + - watchdog >=2.0 + constrains: + - babel >=2.9.0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/mkdocs?source=hash-mapping + size: 3522125 + timestamp: 1725058594628 +- kind: conda + name: mkdocs-autorefs + version: 1.2.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.2.0-pyhd8ed1ab_1.conda + sha256: 5d26e5e5257909e03b2c59fdda7842cadc51a5e3c34b7f709ff593d5bab634e1 + md5: 43688b5c2118511e37e8fd03c1c580a2 + depends: + - markdown >=3.3 + - markupsafe >=2.0.1 + - mkdocs >=1.1 + - pymdown-extensions + - python >=3.8,<4.0 + license: ISC + purls: + - pkg:pypi/mkdocs-autorefs?source=hash-mapping + size: 24228 + timestamp: 1725295211203 +- kind: pypi + name: mkdocs-awesome-pages-plugin + version: 2.9.3 + url: https://files.pythonhosted.org/packages/97/f0/1434593be83f8c9b3c5cdfa3db2b3b4b8af3eab164a787ad81b5736abcf0/mkdocs_awesome_pages_plugin-2.9.3-py3-none-any.whl + sha256: 1ba433d4e7edaf8661b15b93267f78f78e2e06ca590fc0e651ea36b191d64ae4 + requires_dist: + - mkdocs>=1 + - natsort>=8.1.0 + - wcmatch>=7 + requires_python: '>=3.8.1' +- kind: conda + name: mkdocs-gen-files + version: 0.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-gen-files-0.4.0-pyhd8ed1ab_0.tar.bz2 + sha256: f158e2239b0b4549dc5e0d38c973135e19f8def084f0d096faf2c6161d12b1a9 + md5: ea350040131e9a179817f620a704411a + depends: + - mkdocs <2.0.0,>=1.0.3 + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-gen-files?source=hash-mapping + size: 12043 + timestamp: 1661211107053 +- kind: conda + name: mkdocs-get-deps + version: 0.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-get-deps-0.2.0-pyhd8ed1ab_0.conda + sha256: aa6207994b15a15b5f82a442804c279bf78f6c4680f0903fb015294c41e34b30 + md5: 0365c9a6e4e41732bde159112b0aef4d + depends: + - importlib-metadata >=4.3 + - mergedeep >=1.3.4 + - platformdirs >=2.2.0 + - python >=3.8 + - pyyaml >=5.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-get-deps?source=hash-mapping + size: 14733 + timestamp: 1713710951974 +- kind: conda + name: mkdocs-git-revision-date-localized-plugin + version: 1.2.9 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-git-revision-date-localized-plugin-1.2.9-pyhd8ed1ab_0.conda + sha256: a82d131b27c4cd9e2be71326b3c6a65bbadee23dcef80f8319831c852604ff94 + md5: a331f7234c4e8f6136d12fe82f1ee7cd + depends: + - babel >=2.7.0 + - gitpython + - mkdocs >=1.0 + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-git-revision-date-localized-plugin?source=hash-mapping + size: 25456 + timestamp: 1726153706839 +- kind: conda + name: mkdocs-glightbox + version: 0.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-glightbox-0.4.0-pyhd8ed1ab_0.conda + sha256: 63a7e757ea96166793d2ae8a5c0c0759169b168b088ba89b53dd4305a433cf14 + md5: bd45af24c992ba48cbbe12f251d9215e + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-glightbox?source=hash-mapping + size: 30948 + timestamp: 1715044596241 +- kind: conda + name: mkdocs-jupyter + version: 0.25.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-jupyter-0.25.1-pyhd8ed1ab_0.conda + sha256: 026ee6d726e7fa6e375823903318b702eb5751eec30f45bed8e607b36fc66569 + md5: 1b225a74ce9e55ded554e1dac6da89fa + depends: + - ipykernel <7.0.0,>6.0.0 + - jupytext <2,>1.13.8 + - mkdocs <2,>=1.4.0 + - mkdocs-material >9.0.0 + - nbconvert <8,>=7.2.9 + - pygments >2.12.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/mkdocs-jupyter?source=hash-mapping + size: 1193680 + timestamp: 1731435601843 +- kind: conda + name: mkdocs-macros-plugin + version: 1.3.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-macros-plugin-1.3.7-pyhd8ed1ab_0.conda + sha256: df27ad6a7ec7086e95d624443b19618c18c75f6b7f41835293b4ea406e112c50 + md5: 7ed9e7512c1e96a318afe0011e89e8f8 + depends: + - hjson-py + - jinja2 + - mkdocs >=0.17 + - packaging + - pathspec + - python >=3.8 + - python-dateutil + - pyyaml + - super-collections + - termcolor + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-macros-plugin?source=hash-mapping + size: 34810 + timestamp: 1729967508816 +- kind: conda + name: mkdocs-material + version: 9.5.46 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.5.46-pyhff2d567_0.conda + sha256: 53be6a2851d0c0474e5420d34250d7c7ac928bd5939afa43a2c19d0f02d924bd + md5: 8c6b111e3dc27acfcfba77e0a19f028c + depends: + - babel >=2.10,<3.dev0 + - colorama >=0.4,<1.dev0 + - jinja2 >=3.0,<4.dev0 + - markdown >=3.2,<4.dev0 + - mkdocs >=1.6,<2.dev0 + - mkdocs-material-extensions >=1.3,<2.dev0 + - paginate >=0.5,<1.dev0 + - pygments >=2.16,<3.dev0 + - pymdown-extensions >=10.2,<11.dev0 + - python >=3.9 + - pyyaml + - regex >=2022.4 + - requests >=2.26,<3.dev0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-material?source=hash-mapping + size: 4866945 + timestamp: 1732552038929 +- kind: conda + name: mkdocs-material-extensions + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_0.conda + sha256: e01a349f4816ba7513f8b230ca2c4f703a7ccc7f7d78535076f9215ca766ec78 + md5: 6e7e399b351756b9d181c64a362bdcb5 + depends: + - python >=3.8 + constrains: + - mkdocs-material >=5.0.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-material-extensions?source=hash-mapping + size: 16011 + timestamp: 1700695213251 +- kind: conda + name: mkdocs-table-reader-plugin + version: 3.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocs-table-reader-plugin-3.1.0-pyhd8ed1ab_0.conda + sha256: 2d81889f195ed4ac50128a7485e7dfa65e692e71721913617796141e02ff02b4 + md5: 027d48d01eb97a1175c66d6ac8f24ff8 + depends: + - mkdocs >=1.0 + - pandas >=1.1 + - python >=3.6 + - pyyaml >=5.4.1 + - tabulate >=0.8.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mkdocs-table-reader-plugin?source=hash-mapping + size: 15076 + timestamp: 1724961317361 +- kind: conda + name: mkdocstrings + version: 0.26.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.26.2-pyhd8ed1ab_0.conda + sha256: 95622541e9a96ca539e379a17008a6224b05516ede3d544412f63a050f320fc2 + md5: dbb0e345753ce3932f097d57a7ba2344 + depends: + - click >=7.0 + - importlib-metadata >=4.6 + - jinja2 >=2.11.1 + - markdown >=3.6 + - markupsafe >=1.1 + - mkdocs >=1.4 + - mkdocs-autorefs >=1.2 + - platformdirs >=2.2.0 + - pymdown-extensions >=6.3 + - python >=3.9,<4.0 + - typing-extensions >=4.1 + license: ISC + purls: + - pkg:pypi/mkdocstrings?source=hash-mapping + size: 30546 + timestamp: 1728841500652 +- kind: conda + name: mkdocstrings-python + version: 1.12.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.12.2-pyhff2d567_0.conda + sha256: 25b01f86e5aca97eede0057b1bd7feb2b91719dab0930fe222f16ce7ad38c893 + md5: d10758f0e39897d7d2fa4b399370a3b1 + depends: + - griffe >=0.49 + - mkdocs-autorefs >=1.2 + - mkdocstrings >=0.26 + - python >=3.9 + license: ISC + purls: + - pkg:pypi/mkdocstrings-python?source=hash-mapping + size: 48611 + timestamp: 1729546255258 +- kind: conda + name: mkl + version: 2024.2.2 + build: h66d3029_14 + build_number: 14 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda + sha256: 098ba4a3cb82f627bc79dc0ab1111b44859c9ef4aaa8d75ce043bce107770cb3 + md5: f011e7cc21918dc9d1efe0209e27fa16 + depends: + - intel-openmp 2024.* + - tbb 2021.* + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + purls: [] + size: 103019089 + timestamp: 1727378392081 +- kind: conda + name: more-itertools + version: 10.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.5.0-pyhd8ed1ab_0.conda + sha256: 2315b7dba237e16b0e1b601725a8e03e062421e0be28d8a25dc35dd9bd93a342 + md5: 3364591bebd600979606791e1dff7cb6 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/more-itertools?source=hash-mapping + size: 57345 + timestamp: 1725630183289 +- kind: conda + name: mypy + version: 1.13.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.13.0-py312h66e93f0_0.conda + sha256: fbd1a5ac0e0e0fb16ab65395fb9b6d86aa9fb1e32689df13ee45829294a7ec57 + md5: 824a5a98260d4ee4d12fcad92d153c47 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 18799862 + timestamp: 1729644961295 +- kind: conda + name: mypy + version: 1.13.0 + build: py313ha7868ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/mypy-1.13.0-py313ha7868ed_0.conda + sha256: d6cfe5e927940da760312d16305e4a0013e5be318da2bb893a0f62004db298de + md5: e432bc642eaf6e36b5e4a3f615e2e91f + depends: + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - typing_extensions >=4.1.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 8608743 + timestamp: 1729644175962 +- kind: conda + name: mypy + version: 1.13.0 + build: py313hb558fbc_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.13.0-py313hb558fbc_0.conda + sha256: 6416e8e75b1a6f178b852ef4afe16feb12ee158e389349b473ae67fce352d20c + md5: 160e8908a455da371932d0bcc5fc13e0 + depends: + - __osx >=10.13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 10650933 + timestamp: 1729644378131 +- kind: conda + name: mypy_extensions + version: 1.0.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 + md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + depends: + - python >=3.5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10492 + timestamp: 1675543414256 +- kind: pypi + name: natsort + version: 8.4.0 + url: https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl + sha256: 4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c + requires_dist: + - fastnumbers>=2.0.0 ; extra == 'fast' + - pyicu>=1.0.0 ; extra == 'icu' + requires_python: '>=3.7' +- kind: conda + name: nbclient + version: 0.10.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda + sha256: 589d72d36d61a23b39d6fff2c488f93e29e20de4fc6f5d315b5f2c16e81028bf + md5: 15b51397e0fe8ea7d7da60d83eb76ebc + depends: + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - nbformat >=5.1 + - python >=3.8 + - traitlets >=5.4 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nbclient?source=hash-mapping + size: 27851 + timestamp: 1710317767117 +- kind: conda + name: nbconvert + version: 7.16.4 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.4-hd8ed1ab_1.conda + sha256: e014e8a583ca2f2fc751bf9093ee95bfd203bd189bafe0f512c0262fece69bce + md5: ab83e3b9ca2b111d8f332e9dc8b2170f + depends: + - nbconvert-core 7.16.4 pyhd8ed1ab_1 + - nbconvert-pandoc 7.16.4 hd8ed1ab_1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8335 + timestamp: 1718135538730 +- kind: conda + name: nbconvert-core + version: 7.16.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda + sha256: 074d858c5808e0a832acc0da37cd70de1565e8d6e17a62d5a11b3902b5e78319 + md5: e2d2abb421c13456a9a9f80272fdf543 + depends: + - beautifulsoup4 + - bleach + - defusedxml + - entrypoints >=0.2.2 + - jinja2 >=3.0 + - jupyter_core >=4.7 + - jupyterlab_pygments + - markupsafe >=2.0 + - mistune >=2.0.3,<4 + - nbclient >=0.5.0 + - nbformat >=5.1 + - packaging + - pandocfilters >=1.4.1 + - pygments >=2.4.1 + - python >=3.8 + - tinycss2 + - traitlets >=5.0 + constrains: + - nbconvert =7.16.4=*_1 + - pandoc >=2.9.2,<4.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nbconvert?source=hash-mapping + size: 189599 + timestamp: 1718135529468 +- kind: conda + name: nbconvert-pandoc + version: 7.16.4 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.4-hd8ed1ab_1.conda + sha256: 31df882e97b227e7e57a328a36840e65ea3247023ac2ce502fd5d4b621da8dbe + md5: 37cec2cf68f4c09563d8bc833791096b + depends: + - nbconvert-core 7.16.4 pyhd8ed1ab_1 + - pandoc + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8371 + timestamp: 1718135533429 +- kind: conda + name: nbformat + version: 5.10.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + sha256: 36fe73da4d37bc7ac2d1540526ecd294fbd09acda04e096181ab8f1ccd2b464c + md5: 0b57b5368ab7fc7cdc9e3511fa867214 + depends: + - jsonschema >=2.6 + - jupyter_core >=4.12,!=5.0.* + - python >=3.8 + - python-fastjsonschema >=2.15 + - traitlets >=5.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nbformat?source=hash-mapping + size: 101232 + timestamp: 1712239122969 +- kind: conda + name: ncurses + version: '6.5' + build: he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 889086 + timestamp: 1724658547447 +- kind: conda + name: ncurses + version: '6.5' + build: hf036a51_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda + sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af + md5: e102bbf8a6ceeaf429deab8032fc8977 + depends: + - __osx >=10.13 + license: X11 AND BSD-3-Clause + purls: [] + size: 822066 + timestamp: 1724658603042 +- kind: conda + name: nest-asyncio + version: 1.6.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + sha256: 30db21d1f7e59b3408b831a7e0417b83b53ee6223afae56482c5f26da3ceb49a + md5: 6598c056f64dc8800d40add25e4e2c34 + depends: + - python >=3.5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/nest-asyncio?source=hash-mapping + size: 11638 + timestamp: 1705850780510 +- kind: conda + name: nh3 + version: 0.2.18 + build: py312h12e396e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.18-py312h12e396e_1.conda + sha256: b0a67992a9a09b3cd2ab7a31728d77301783b22cf6ad4153cf2e737ac839dcb7 + md5: 7c34beca547867671e26e61106fad3bd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/nh3?source=hash-mapping + size: 658988 + timestamp: 1725341823258 +- kind: conda + name: nh3 + version: 0.2.18 + build: py313h25f93f4_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/nh3-0.2.18-py313h25f93f4_1.conda + sha256: 5111399e7a4aebd5a576eb63843313dd74410b3c3cc5bb49512cdb7a037693d0 + md5: f169d6bba19887999a7dd7faca60663b + depends: + - __osx >=10.13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/nh3?source=hash-mapping + size: 545731 + timestamp: 1725341866037 +- kind: conda + name: nh3 + version: 0.2.18 + build: py313hde2adac_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/nh3-0.2.18-py313hde2adac_1.conda + sha256: acd6999929e0f26e41a0580face4c1b55b075e99ea10c0cca76361d4fa58c139 + md5: 6651fb8041299bd1708e3c140e874589 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.40.33810 + license: MIT + license_family: MIT + purls: + - pkg:pypi/nh3?source=hash-mapping + size: 496326 + timestamp: 1725342629258 +- kind: conda + name: numpy + version: 2.1.3 + build: py312h58c1407_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda + sha256: e4c14f71588a5627a6935d3e7d9ca78a8387229ec8ebc91616b0988ce57ba0dc + md5: dfdbc12e6d81889ba4c494a23f23eba8 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8388631 + timestamp: 1730588649810 +- kind: conda + name: numpy + version: 2.1.3 + build: py313h7ca3f3b_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py313h7ca3f3b_0.conda + sha256: fe86adfc262259f1b156301d45d49d81801b1dec732e5b1dbc647cafe4659475 + md5: b827b0af2098c63435b27b7f4e4d50dd + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7638660 + timestamp: 1730588470617 +- kind: conda + name: numpy + version: 2.1.3 + build: py313hee8cc43_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda + sha256: 79b8493c839cd4cc22e2a7024f289067b029ef2b09212973a98a39e5bbeecc03 + md5: 083a90ad306f544f6eeb9ad00c4d9879 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7072965 + timestamp: 1730588905304 +- kind: conda + name: openssl + version: 3.4.0 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 + md5: d0d805d9b5524a14efb51b3bff965e83 + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 8491156 + timestamp: 1731379715927 +- kind: conda + name: openssl + version: 3.4.0 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 + md5: 23cc74f77eb99315c0360ec3533147a9 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2947466 + timestamp: 1731377666602 +- kind: conda + name: openssl + version: 3.4.0 + build: hd471939_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + sha256: ba7e068ed469d6625e32ae60e6ad893e655b6695280dadf7e065ed0b6f3b885c + md5: ec99d2ce0b3033a75cbad01bbc7c5b71 + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2590683 + timestamp: 1731378034404 +- kind: conda + name: packaging + version: '24.2' + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 + md5: 8508b703977f4c4ada34d657d051972c + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60380 + timestamp: 1731802602808 +- kind: conda + name: paginate + version: 0.5.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_0.conda + sha256: 3bb17531195c52cef472e807308f0133747d9c09995aa8066798498cd297f054 + md5: 44127829a5c92252386963c8df5c192e + depends: + - python >=3.4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/paginate?source=hash-mapping + size: 18660 + timestamp: 1724622434233 +- kind: conda + name: pandas + version: 2.2.3 + build: py312hf9745cd_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- kind: conda + name: pandas + version: 2.2.3 + build: py313h38cdd20_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py313h38cdd20_1.conda + sha256: baf98a0c2a15a3169b7c0443c04b37b489575477f5cf443146f283e1259de01f + md5: ab61fb255c951a0514616e92dd2e18b2 + depends: + - __osx >=10.13 + - libcxx >=17 + - numpy >=1.21,<3 + - numpy >=1.22.4 + - python >=3.13.0rc2,<3.14.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.13.* *_cp313 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14632093 + timestamp: 1726878912764 +- kind: conda + name: pandas + version: 2.2.3 + build: py313hf91d08e_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py313hf91d08e_1.conda + sha256: 8fb218382be188497cbf549eb9de2825195cb076946e1f9929f3758b3f3b4e88 + md5: 9c6dab4d9b20463121faf04283b4d1a1 + depends: + - numpy >=1.21,<3 + - numpy >=1.22.4 + - python >=3.13.0rc2,<3.14.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.13.* *_cp313 + - pytz >=2020.1,<2024.2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14215159 + timestamp: 1726879653675 +- kind: conda + name: pandoc + version: '3.5' + build: h57928b3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pandoc-3.5-h57928b3_0.conda + sha256: 2ef7593628529429ab0041128f90e7bb32eb447a05850c40ff178d9ad9df2e9b + md5: 2c4a6c475e0f1bbffac672b0943dc520 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 24950852 + timestamp: 1728196799190 +- kind: conda + name: pandoc + version: '3.5' + build: h694c41f_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.5-h694c41f_0.conda + sha256: 77476b2054c472ed07e3618bad8d04f471b07d6b3cc48d0d292055a6481a81a3 + md5: 4c2700fd13f9dbd7929d20eedde984ee + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 14073476 + timestamp: 1728196394225 +- kind: conda + name: pandoc + version: '3.5' + build: ha770c72_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.5-ha770c72_0.conda + sha256: 56df96c2707a5ac71b2e5d3b32e38521c0bac91006d0b8948c1d347dd5c12609 + md5: 2889e6b9c666c3a564ab90cedc5832fd + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 21003150 + timestamp: 1728196276862 +- kind: conda + name: pandocfilters + version: 1.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f + md5: 457c2c8c08e54905d6954e79cb5b5db9 + depends: + - python !=3.0,!=3.1,!=3.2,!=3.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandocfilters?source=hash-mapping + size: 11627 + timestamp: 1631603397334 +- kind: conda + name: parso + version: 0.8.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae + md5: 81534b420deb77da8833f2289b8d47ac + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/parso?source=hash-mapping + size: 75191 + timestamp: 1712320447201 +- kind: conda + name: pathspec + version: 0.12.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d + md5: 17064acba08d3686f1135b5ec1b32b12 + depends: + - python >=3.7 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41173 + timestamp: 1702250135032 +- kind: conda + name: pcre2 + version: '10.44' + build: hba22ea6_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 952308 + timestamp: 1723488734144 +- kind: conda + name: pexpect + version: 4.9.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda + sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e + md5: 629f3203c99b32e0988910c93e77f3b6 + depends: + - ptyprocess >=0.5 + - python >=3.7 + license: ISC + purls: + - pkg:pypi/pexpect?source=hash-mapping + size: 53600 + timestamp: 1706113273252 +- kind: conda + name: pickleshare + version: 0.7.5 + build: py_1003 + build_number: 1003 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 + md5: 415f0ebb6198cc2801c73438a9fb5761 + depends: + - python >=3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pickleshare?source=hash-mapping + size: 9332 + timestamp: 1602536313357 +- kind: conda + name: pip + version: 24.3.1 + build: pyh145f28c_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_0.conda + sha256: fc305cfe1ad0d51c61dd42a33cf27e03a075992fd0070c173d7cad86c1a48f13 + md5: ca3afe2d7b893a8c8cdf489d30a2b1a3 + depends: + - python >=3.13.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pip?source=hash-mapping + size: 1241228 + timestamp: 1730203795175 +- kind: conda + name: pip + version: 24.3.1 + build: pyh8b19718_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda + sha256: 499313e72e20225f84c2e9690bbaf5b952c8d7e0bf34b728278538f766b81628 + md5: 5dd546fe99b44fda83963d15f84263b7 + depends: + - python >=3.8,<3.13.0a0 + - setuptools + - wheel + license: MIT + license_family: MIT + purls: + - pkg:pypi/pip?source=hash-mapping + size: 1243168 + timestamp: 1730203795600 +- kind: conda + name: pkginfo + version: 1.10.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.10.0-pyhd8ed1ab_0.conda + sha256: 3e833f907039646e34d23203cd5c9cc487a451d955d8c8d6581e18a8ccef4cee + md5: 8c6a4a704308f5d91f3a974a72db1096 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pkginfo?source=hash-mapping + size: 28142 + timestamp: 1709561205511 +- kind: conda + name: pkgutil-resolve-name + version: 1.3.10 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a + md5: 405678b942f2481cecdb3e010f4925d9 + depends: + - python >=3.6 + license: MIT AND PSF-2.0 + purls: + - pkg:pypi/pkgutil-resolve-name?source=hash-mapping + size: 10778 + timestamp: 1694617398467 +- kind: conda + name: platformdirs + version: 4.3.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: fd8f2b18b65bbf62e8f653100690c8d2 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20625 + timestamp: 1726613611845 +- kind: conda + name: pluggy + version: 1.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 + md5: d3483c8fc2dc2cc3f5cf43e26d60cabf + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pluggy?source=hash-mapping + size: 23815 + timestamp: 1713667175451 +- kind: pypi + name: povme + version: 2.2.1 + path: . + sha256: bbaba8b4d02715eeabdafbae58e27023b697f2da2b19fcb73b84827cab93823a + requires_dist: + - numpy>=2.1.3,<3 + - scipy>=1.14.1,<2 + requires_python: '>=3.12' + editable: true +- kind: conda + name: prompt-toolkit + version: 3.0.36 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda + sha256: 6bd3626799c9467d7aa8ed5f95043e4cea614a1329580980ddcf40cfed3ee860 + md5: 4d79ec192e0bfd530a254006d123b9a6 + depends: + - python >=3.6 + - wcwidth + constrains: + - prompt_toolkit 3.0.36 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/prompt-toolkit?source=hash-mapping + size: 271530 + timestamp: 1670414885944 +- kind: conda + name: prompt-toolkit + version: 3.0.48 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 + md5: 4c05134c48b6a74f33bbb9938e4a115e + depends: + - python >=3.7 + - wcwidth + constrains: + - prompt_toolkit 3.0.48 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/prompt-toolkit?source=hash-mapping + size: 270271 + timestamp: 1727341744544 +- kind: conda + name: prompt_toolkit + version: 3.0.36 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.36-hd8ed1ab_0.conda + sha256: 8685763bf7b3299be8b1e6fccad1282217733c8fcf1d682397323e2e08a00a68 + md5: 482c15eb65dde2f899c4d68eaa938b1d + depends: + - prompt-toolkit >=3.0.36,<3.0.37.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6372 + timestamp: 1670414891579 +- kind: conda + name: psutil + version: 6.1.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + sha256: 0f309b435174e037d5cfe5ed26c1c5ad8152c68cfe61af17709ec31ec3d9f096 + md5: 0524eb91d3d78d76d671c6e3cd7cee82 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 488462 + timestamp: 1729847159916 +- kind: conda + name: psutil + version: 6.1.0 + build: py313ha7868ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py313ha7868ed_0.conda + sha256: d58defe84d46da1a7e80283e165d6a9d09378fd830b48917751a318ab5a5d4ce + md5: d13841485f9159f317a4e8bb974e9c8e + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 508489 + timestamp: 1729847497486 +- kind: conda + name: psutil + version: 6.1.0 + build: py313hb558fbc_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py313hb558fbc_0.conda + sha256: 68f7069302768c93e0bce8233a00ba13c5c8ca069779a7d8c84ad81cf8d86542 + md5: 6b9bcae4917442ec9054a5b6a859452b + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 501944 + timestamp: 1729847219864 +- kind: conda + name: pthreads-win32 + version: 2.9.1 + build: h2466b09_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda + sha256: b989bdcf0a22ba05a238adac1ad3452c11871681f565e509f629e225a26b7d45 + md5: cf98a67a1ec8040b42455002a24f0b0b + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + purls: [] + size: 265827 + timestamp: 1728400965968 +- kind: conda + name: ptyprocess + version: 0.7.0 + build: pyhd3deb0d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a + md5: 359eeb6536da0e687af562ed265ec263 + depends: + - python + license: ISC + purls: + - pkg:pypi/ptyprocess?source=hash-mapping + size: 16546 + timestamp: 1609419417991 +- kind: conda + name: pure_eval + version: 0.2.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 + md5: 0f051f09d992e0d08941706ad519ee0e + depends: + - python >=3.5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pure-eval?source=hash-mapping + size: 16551 + timestamp: 1721585805256 +- kind: conda + name: pycparser + version: '2.22' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 + md5: 844d9eb3b43095b031874477f7d70088 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pycparser?source=hash-mapping + size: 105098 + timestamp: 1711811634025 +- kind: conda + name: pydantic + version: 2.10.2 + build: pyh3cfb1c2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 + md5: e661b732b4d7514ace55a01873f03201 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.1 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic?source=hash-mapping + size: 316818 + timestamp: 1732689481710 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1635156 + timestamp: 1732254225040 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py313h3c055b9_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.27.1-py313h3c055b9_0.conda + sha256: cef4ddceaef5e435a24c5ca952a907561e0d41c2cf3d9828a0ccb62b666661f1 + md5: 1e60952d3ecb617fe84eb75d88e9527e + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1560503 + timestamp: 1732254570873 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py313hf3b5b86_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.27.1-py313hf3b5b86_0.conda + sha256: 64669444634f72b75cfde26c346bdc5d3127f8465879e5c9dd74ff18ded3e1ca + md5: 40919805dbaa6749a3f330bedd00d0ed + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - typing-extensions >=4.6.0,!=4.7.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1611484 + timestamp: 1732254789060 +- kind: conda + name: pydantic-settings + version: 2.6.1 + build: pyh3cfb1c2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 + md5: 412f950a65ceea20b06263f65d689f6b + depends: + - pydantic >=2.7.0 + - python >=3.8 + - python-dotenv >=0.21.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-settings?source=hash-mapping + size: 30618 + timestamp: 1730473755879 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b + md5: b7f5c092b8f9800150d998a71b76d5a1 + depends: + - python >=3.8 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pygments?source=hash-mapping + size: 879295 + timestamp: 1714846885370 +- kind: conda + name: pymdown-extensions + version: '10.12' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.12-pyhd8ed1ab_0.conda + sha256: a56ba3e7070c0dbfe8c435a43d75ea0faa4ec61aa158f364f5826a283925cd25 + md5: e352dc92203f360748da72357da78ed8 + depends: + - markdown >=3.6 + - python >=3.8 + - pyyaml + license: MIT + license_family: MIT + purls: + - pkg:pypi/pymdown-extensions?source=hash-mapping + size: 167047 + timestamp: 1730190145267 +- kind: pypi + name: pyproject-hooks + version: 1.2.0 + url: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl + sha256: 9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 + requires_python: '>=3.7' +- kind: conda + name: pysocks + version: 1.7.1 + build: pyh0701188_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 + md5: 56cd9fe388baac0e90c7149cfac95b60 + depends: + - __win + - python >=3.8 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 19348 + timestamp: 1661605138291 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha2e5f31_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b + md5: 2a7de29fb590ca14b5243c4c812c8025 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 18981 + timestamp: 1661604969727 +- kind: conda + name: pytest + version: 8.3.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + sha256: e99376d0068455712109d233f5790458ff861aeceb458bfda74e353338e4d815 + md5: c03d61f31f38fdb9facf70c29958bf7a + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.8 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping + size: 258293 + timestamp: 1725977334143 +- kind: conda + name: pytest-cov + version: 6.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + sha256: 915323edaee9f6f3ebd8c2e5450b4865700edf2c85eb2bba61980e66c6f03c5d + md5: cb8a11b6d209e3d85e5094bdbd9ebd9c + depends: + - coverage >=7.5 + - pytest >=4.6 + - python >=3.9 + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-cov?source=hash-mapping + size: 26218 + timestamp: 1730284385470 +- kind: conda + name: python + version: 3.12.7 + build: hc5c86c4_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d + md5: 0515111a9cdf69f83278f7c197db9807 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.3,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.2,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 31574780 + timestamp: 1728059777603 +- kind: conda + name: python + version: 3.13.0 + build: h3a8ca6c_101_cp313 + build_number: 101 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda + sha256: c8b23bbdcd0e4f24fed2028cba20bd81325a4220439c1b8e6b06694f16642a2c + md5: 0acea4c3eee2454fd642d1a4eafa2943 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + license: Python-2.0 + purls: [] + size: 13941305 + timestamp: 1732736712289 +- kind: conda + name: python + version: 3.13.0 + build: hf5aa216_101_cp313 + build_number: 101 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda + sha256: b8eba57bd86c7890b27e67b477b52b5bd547946c354f29b9dbbc70ad83f2863b + md5: 158d6077a635cf0c0c23bec3955a4833 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + license: Python-2.0 + purls: [] + size: 16697406 + timestamp: 1732734725404 +- kind: conda + name: python-dateutil + version: 2.9.0.post0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 + md5: b6dfd90a2141e573e4b6a81630b56df5 + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 221925 + timestamp: 1731919374686 +- kind: conda + name: python-dotenv + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c + md5: c2997ea9360ac4e015658804a7a84f94 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/python-dotenv?source=hash-mapping + size: 24278 + timestamp: 1706018281544 +- kind: conda + name: python-fastjsonschema + version: 2.20.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + sha256: 7d8c931b89c9980434986b4deb22c2917b58d9936c3974139b9c10ae86fdfe60 + md5: b98d2018c01ce9980c03ee2850690fab + depends: + - python >=3.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fastjsonschema?source=hash-mapping + size: 226165 + timestamp: 1718477110630 +- kind: conda + name: python-tzdata + version: '2024.2' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 + md5: 986287f89929b2d629bd6ef6497dc307 + depends: + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 142527 + timestamp: 1727140688093 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- kind: conda + name: python_abi + version: '3.13' + build: 5_cp313 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + sha256: 075ad768648e88b78d2a94099563b43d3082e7c35979f457164f26d1079b7b5c + md5: 927a2186f1f997ac018d67c4eece90a6 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6291 + timestamp: 1723823083064 +- kind: conda + name: python_abi + version: '3.13' + build: 5_cp313 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + sha256: 0c12cc1b84962444002c699ed21e815fb9f686f950d734332a1b74d07db97756 + md5: 44b4fe6f22b57103afb2299935c8b68e + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6716 + timestamp: 1723823166911 +- kind: conda + name: pytz + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- kind: conda + name: pywin32 + version: '307' + build: py313h5813708_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + sha256: 0a68b324ea47ae720c62522c5d0bb5ea3e4987e1c5870d6490c7f954fbe14cbe + md5: 7113bd6cfe34e80d8211f7c019d14357 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/pywin32?source=hash-mapping + size: 6060096 + timestamp: 1728636763526 +- kind: conda + name: pywin32-ctypes + version: 0.2.3 + build: py313hfa70ccb_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pywin32-ctypes-0.2.3-py313hfa70ccb_1.conda + sha256: 4552b2a4a53caaf06c4abc8142981ffac070941708faee40706ae26477281ce7 + md5: c838b4e201fc7a40ce746286efb1c3a3 + depends: + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pywin32-ctypes?source=hash-mapping + size: 57565 + timestamp: 1727282366649 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa + md5: 549e5930e768548a89c23f595dac5a95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206553 + timestamp: 1725456256213 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py313ha37c0e0_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda + sha256: 79ca3a62f0f085e5f29f1614c0d509a20d3a34bb2ef956c079ee4cdf0e36dbfc + md5: cdaa065902c8bbf2975cf7744fb5c27d + depends: + - __osx >=10.13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 190014 + timestamp: 1725456352876 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py313ha7868ed_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda + sha256: ffa21c4715aa139d20c96ae7274fbb7de12a546f3332eb8d07cc794741fcbde6 + md5: c1743e5c4c7402a14b515cf276778e59 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 181722 + timestamp: 1725456802746 +- kind: conda + name: pyyaml-env-tag + version: '0.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-0.1-pyhd8ed1ab_0.tar.bz2 + sha256: 900319483135730d9836855a807822f0500b1a239520749103e9ef9b7ba9f246 + md5: 626ed9060ddeb681ddc42bcad89156ab + depends: + - python >=3.6 + - pyyaml + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml-env-tag?source=hash-mapping + size: 7473 + timestamp: 1624389117412 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312hbf22597_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 378126 + timestamp: 1728642454632 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py313h0dfe02f_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py313h0dfe02f_3.conda + sha256: 1a2dc006161415088f824fecb12fcddee97be2a394ae6093ee4d3c9985876893 + md5: 0001baad29089ea50d0644e839cfef14 + depends: + - __osx >=10.13 + - libcxx >=17 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 367756 + timestamp: 1728642498201 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py313h2100fd5_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py313h2100fd5_3.conda + sha256: 971bea2fd92920327f4a44e69393643193b435c37e7528d93c32071e531fc9ba + md5: d0ce06d0a38f8ad0dc9b71e14137deee + depends: + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zeromq >=4.3.5,<4.3.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 367463 + timestamp: 1728643113504 +- kind: conda + name: questionary + version: 2.0.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda + sha256: e1b22276ab3a33ed24b606e95099506269c09205278e4174823c51e5e4579eab + md5: 375950ebdf7945b4d3d57fad0cbe52e6 + depends: + - prompt_toolkit <=3.0.36,>=2.0 + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/questionary?source=hash-mapping + size: 29421 + timestamp: 1694359940547 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: readline + version: '8.2' + build: h9e318b2_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 + md5: f17f77f2acf4d344734bda76829ce14e + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 255870 + timestamp: 1679532707590 +- kind: conda + name: readme_renderer + version: '44.0' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda + sha256: 0e6fdf0b30448ca92a0767e982182154d531391856296feda983053c41cdac6f + md5: 63260acf67cb6169bdf519405b96ee63 + depends: + - cmarkgfm >=0.8.0 + - docutils >=0.21.2 + - nh3 >=0.2.14 + - pygments >=2.5.1 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/readme-renderer?source=hash-mapping + size: 17186 + timestamp: 1720528649611 +- kind: conda + name: referencing + version: 0.35.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3 + md5: 0fc8b52192a8898627c3efae1003e9f6 + depends: + - attrs >=22.2.0 + - python >=3.8 + - rpds-py >=0.7.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/referencing?source=hash-mapping + size: 42210 + timestamp: 1714619625532 +- kind: conda + name: regex + version: 2024.11.6 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- kind: conda + name: regex + version: 2024.11.6 + build: py313h63b0ddb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/regex-2024.11.6-py313h63b0ddb_0.conda + sha256: 72dc7abca62f93ebf42076ecc5c6599ccfe035a878c0ec90ae1365cf5a86231b + md5: d442d3b421e98afbffcd0c1c233722b7 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 373126 + timestamp: 1730952352402 +- kind: conda + name: regex + version: 2024.11.6 + build: py313ha7868ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/regex-2024.11.6-py313ha7868ed_0.conda + sha256: 74d639e465bfc0d9cbd0f2f7d3ce7d1181cdcaf80edcbc98630840096268f3fe + md5: 73fa53415b4ee5bb6c3c27e4f42340be + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 364831 + timestamp: 1730952548216 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc + md5: 5ede4753180c7a550a443c430dc8ab52 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.8 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58810 + timestamp: 1717057174842 +- kind: conda + name: requests-toolbelt + version: 1.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_0.conda + sha256: 20eaefc5dba74ff6c31e537533dde59b5b20f69e74df49dff19d43be59785fa3 + md5: 99c98318c8646b08cc764f90ce98906e + depends: + - python >=3.6 + - requests >=2.0.1,<3.0.0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests-toolbelt?source=hash-mapping + size: 43939 + timestamp: 1682953467574 +- kind: conda + name: rfc3986 + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 + sha256: dd6bfb7c4248ba7612f2e6e4a066d6804ba96dfcaeddf43475a2c846ccfcc396 + md5: d337886e38f965bf97aaec382ff6db00 + depends: + - python >=3.4 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/rfc3986?source=hash-mapping + size: 34075 + timestamp: 1641825125307 +- kind: conda + name: rich + version: 13.9.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 + md5: bcf8cc8924b5d20ead3d122130b8320b + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.8 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rich?source=hash-mapping + size: 185481 + timestamp: 1730592349978 +- kind: conda + name: rich-click + version: 1.8.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.8.3-pyhd8ed1ab_0.conda + sha256: e83ebdc82e5787cb2dacd4380e0ca7c1ce4e7f356a0be0ccbac2ebcff1032efa + md5: ad6cdc745c76535e7cc56aab865b1fc5 + depends: + - click >=7,<9 + - python >=3.7 + - rich >=10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rich-click?source=hash-mapping + size: 33837 + timestamp: 1718026216838 +- kind: conda + name: rpds-py + version: 0.21.0 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda + sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12 + md5: 37f4ad7cb4214c799f32e5f411c6c69f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 336759 + timestamp: 1730922756033 +- kind: conda + name: rpds-py + version: 0.21.0 + build: py313h3c055b9_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py313h3c055b9_0.conda + sha256: b37fe4159572d44e5d8adbc3f699b3a2d32b70c633cd468503e1d4fb776a6e94 + md5: e0574df27a114bb2ba0f2407b3cb01bd + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 302942 + timestamp: 1730923152494 +- kind: conda + name: rpds-py + version: 0.21.0 + build: py313hf3b5b86_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py313hf3b5b86_0.conda + sha256: ea0baf92befd2fabb27b2d6c895fe9f93e9a8d789c22c136361f773392344bf6 + md5: cd25cd71cf835f32cec657f3abda5396 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 210099 + timestamp: 1730923136425 +- kind: conda + name: ruff + version: 0.7.4 + build: py312h2156523_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.7.4-py312h2156523_0.conda + sha256: 41424ae6a027f433d259aa384b29fa2fb8e366f5080e93179c1d228ba8e6bd83 + md5: 025594b21ff040de6d98e6b1ef699185 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruff?source=hash-mapping + size: 7788530 + timestamp: 1731708419964 +- kind: conda + name: ruff + version: 0.7.4 + build: py313h2493e73_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.7.4-py313h2493e73_0.conda + sha256: b5f0f7b5dd695bebb5237c6ce513650381f2e80929b9fa64c1701aa56862a805 + md5: 98e86d04695cef48b146e8a320ab523c + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruff?source=hash-mapping + size: 7210352 + timestamp: 1731708958405 +- kind: conda + name: ruff + version: 0.7.4 + build: py313h331c231_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruff-0.7.4-py313h331c231_0.conda + sha256: 304d048bb27563e4de1e6823831f96f4b58a4a6ba730d6f29532c9638afa8daa + md5: adbe07a7e5cb45ed1c1c52754e513efd + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruff?source=hash-mapping + size: 6803085 + timestamp: 1731709090804 +- kind: conda + name: scipy + version: 1.14.1 + build: py312h62794b6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda + sha256: d069a64edade554261672d8febf4756aeb56a6cb44bd91844eaa944e5d9f4eb9 + md5: b43233a9e2f62fb94affe5607ea79473 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libgfortran + - libgfortran5 >=13.3.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - numpy <2.3 + - numpy >=1.19,<3 + - numpy >=1.23.5 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + size: 17622722 + timestamp: 1729481826601 +- kind: conda + name: scipy + version: 1.14.1 + build: py313h16bbbb2_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.1-py313h16bbbb2_1.conda + sha256: 99c6985ab40b8e4706da29e32eeb4bc30ce39edfe7417eb30cd894e693850ac1 + md5: 8d7c8f97de9570c2344ac17b7647e016 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - numpy <2.4 + - numpy >=1.21,<3 + - numpy >=1.23.5 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + size: 16018018 + timestamp: 1729482196516 +- kind: conda + name: scipy + version: 1.14.1 + build: py313hbd2dc07_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py313hbd2dc07_1.conda + sha256: a4161aad13c021e28fac791397f0563266e4c2c6fc101b20c12067b3a208eeb7 + md5: 63098e1999a8f08b82ae921440e6ed0a + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=17 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - liblapack >=3.9.0,<4.0a0 + - numpy <2.4 + - numpy >=1.21,<3 + - numpy >=1.23.5 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + size: 16087202 + timestamp: 1729481595130 +- kind: conda + name: secretstorage + version: 3.3.3 + build: py312h7900ff3_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_3.conda + sha256: c6d5d0bc7fb6cbfa3b8be8f2399a3c1308b3392a4e20bd1a0f29a828fda5ab20 + md5: 4840da9db2808db946a0d979603c6de4 + depends: + - cryptography + - dbus + - jeepney >=0.6 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/secretstorage?source=hash-mapping + size: 31601 + timestamp: 1725915741329 +- kind: conda + name: setuptools + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools?source=hash-mapping + size: 774252 + timestamp: 1732632769210 +- kind: conda + name: six + version: 1.16.0 + build: pyh6c4a22f_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + md5: e5f25f8dbc060e9a8d912e432202afc2 + depends: + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 14259 + timestamp: 1620240338595 +- kind: conda + name: smmap + version: 5.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2 + sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16 + md5: 62f26a3d1387acee31322208f0cfa3e0 + depends: + - python >=3.5 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/smmap?source=hash-mapping + size: 22483 + timestamp: 1634310465482 +- kind: conda + name: soupsieve + version: '2.5' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c + md5: 3f144b2c34f8cb5a9abd9ed23a39c561 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/soupsieve?source=hash-mapping + size: 36754 + timestamp: 1693929424267 +- kind: conda + name: stack_data + version: 0.6.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec + md5: e7df0fdd404616638df5ece6e69ba7af + depends: + - asttokens + - executing + - pure_eval + - python >=3.5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/stack-data?source=hash-mapping + size: 26205 + timestamp: 1669632203115 +- kind: conda + name: super-collections + version: 0.5.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/super-collections-0.5.3-pyhd8ed1ab_0.conda + sha256: ef433a056158a088ed25f12eb1e1386cfe1253cc7dec5d3a23482f4cc057bf3e + md5: 5201b5981937167b2ba3d38916f7f7d4 + depends: + - python >=3.8 + - super_collections >=0.5.3,<0.5.4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 6276 + timestamp: 1728985843294 +- kind: conda + name: super_collections + version: 0.5.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/super_collections-0.5.3-pyhd8ed1ab_0.conda + sha256: a4b2fbdf92141a7ab3b39f1ab32a08d359594f664b733610f5fb1430f4b5df27 + md5: 5919642f54976cffce4676b574cc770e + depends: + - hjson-py + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/super-collections?source=hash-mapping + size: 13584 + timestamp: 1728985831941 +- kind: conda + name: tabulate + version: 0.9.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620 + md5: 4759805cce2d914c38472f70bf4d8bcb + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping + size: 35912 + timestamp: 1665138565317 +- kind: conda + name: tbb + version: 2021.13.0 + build: hc790b64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-hc790b64_0.conda + sha256: 990dbe4fb42f14700c22bd434d8312607bf8d0bd9f922b054e51fda14c41994c + md5: 28496a1e6af43c63927da4f80260348d + depends: + - libhwloc >=2.11.1,<2.11.2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 151494 + timestamp: 1725532984828 +- kind: conda + name: termcolor + version: 2.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/termcolor-2.5.0-pyhd8ed1ab_0.conda + sha256: 926c6e9f900b1e871456dec7aa2c3150c3d6e4da547c05f667a04cd22e3e3a10 + md5: 29a5d22565b850099cd9959862d1b154 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/termcolor?source=hash-mapping + size: 12526 + timestamp: 1728289105504 +- kind: conda + name: tinycss2 + version: 1.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2 + md5: f1acf5fdefa8300de697982bcb1761c9 + depends: + - python >=3.5 + - webencodings >=0.4 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/tinycss2?source=hash-mapping + size: 28285 + timestamp: 1729802975370 +- kind: conda + name: tk + version: 8.6.13 + build: h1abcd95_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3270220 + timestamp: 1699202389792 +- kind: conda + name: tk + version: 8.6.13 + build: h5226925_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 + md5: fc048363eb8f03cd1737600a5d08aafe + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + purls: [] + size: 3503410 + timestamp: 1699202577803 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: toml + version: 0.10.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 + md5: f832c45a477c78bebd107098db465095 + depends: + - python >=2.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/toml?source=hash-mapping + size: 18433 + timestamp: 1604308660817 +- kind: conda + name: tomli + version: 2.1.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47 + md5: 3fa1089b4722df3a900135925f4519d9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tomli?source=hash-mapping + size: 18741 + timestamp: 1731426862834 +- kind: conda + name: tomlkit + version: 0.13.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda + sha256: 2ccfe8dafdc1f1af944bca6bdf28fa97b5fa6125d84b8895a4e918a020853c12 + md5: 0062a5f3347733f67b0f33ca48cc21dd + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tomlkit?source=hash-mapping + size: 37279 + timestamp: 1723631592742 +- kind: conda + name: tornado + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- kind: conda + name: tornado + version: 6.4.2 + build: py313h63b0ddb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py313h63b0ddb_0.conda + sha256: 209dbf187e031dd3c565ff2da0f17847e84e8edb7648efecac28e61744345a41 + md5: 74a3a14f82dc65fa19f4fd4e2eb8da93 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 862737 + timestamp: 1732616091334 +- kind: conda + name: tornado + version: 6.4.2 + build: py313ha7868ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py313ha7868ed_0.conda + sha256: 062e8b77b825463fc59f373d4033fae7cf65a4170e761814bcbf25cd0627bd1d + md5: 3d63fe6a4757924a085ab10196049854 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 865881 + timestamp: 1732616355868 +- kind: conda + name: traitlets + version: 5.14.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 + md5: 3df84416a021220d8b5700c613af2dc5 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110187 + timestamp: 1713535244513 +- kind: conda + name: twine + version: 5.1.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + sha256: e54a95bbc254e1196ebb4cb65b5653292e5ff83f924215bbe4a28c437e04754d + md5: 5463141e576b9aaa0db7ed488e298241 + depends: + - importlib-metadata >=3.6 + - keyring >=15.1 + - pkginfo >=1.8.1,<1.11 + - python >=3.8 + - readme_renderer >=35.0 + - requests >=2.20 + - requests-toolbelt >=0.8.0,!=0.9.0 + - rfc3986 >=1.4.0 + - rich >=12.0.0 + - urllib3 >=1.26.0 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/twine?source=hash-mapping + size: 33938 + timestamp: 1719431080574 +- kind: conda + name: typing-extensions + version: 4.12.2 + build: hd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 + md5: 52d648bd608f5737b123f510bb5514b5 + depends: + - typing_extensions 4.12.2 pyha770c72_0 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10097 + timestamp: 1717802659025 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb + md5: ebe6952715e1d5eb567eeebf25250fa7 + depends: + - python >=3.8 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39888 + timestamp: 1717802653893 +- kind: conda + name: tzdata + version: 2024b + build: hc8b5060_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + purls: [] + size: 122354 + timestamp: 1728047496079 +- kind: conda + name: ucrt + version: 10.0.22621.0 + build: h57928b3_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 + md5: 6797b005cd0f439c4c5c9ac565783700 + constrains: + - vs2015_runtime >=14.29.30037 + license: LicenseRef-MicrosoftWindowsSDK10 + purls: [] + size: 559710 + timestamp: 1728377334097 +- kind: conda + name: urllib3 + version: 2.2.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: 6b55867f385dd762ed99ea687af32a69 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 98076 + timestamp: 1726496531769 +- kind: conda + name: vc + version: '14.3' + build: ha32ba9b_23 + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663 + md5: 7c10ec3158d1eb4ddff7007c9101adb0 + depends: + - vc14_runtime >=14.38.33135 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17479 + timestamp: 1731710827215 +- kind: conda + name: vc14_runtime + version: 14.42.34433 + build: he29a5d6_23 + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda + sha256: c483b090c4251a260aba6ff3e83a307bcfb5fb24ad7ced872ab5d02971bd3a49 + md5: 32b37d0cfa80da34548501cdc913a832 + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.42.34433.* *_23 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + purls: [] + size: 754247 + timestamp: 1731710681163 +- kind: conda + name: vs2015_runtime + version: 14.42.34433 + build: hdffcdeb_23 + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda + sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118 + md5: 5c176975ca2b8366abad3c97b3cd1e83 + depends: + - vc14_runtime >=14.42.34433 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17572 + timestamp: 1731710685291 +- kind: conda + name: watchdog + version: 6.0.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/watchdog-6.0.0-py312h7900ff3_0.conda + sha256: 2436c4736b8135801f6bfcd09c7283f2d700a66a90ebd14b666b996e33ef8c9a + md5: 687b37d1325f228429409465e811c0bc + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - pyyaml >=3.10 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/watchdog?source=hash-mapping + size: 140940 + timestamp: 1730493008472 +- kind: conda + name: watchdog + version: 6.0.0 + build: py313h63b0ddb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/watchdog-6.0.0-py313h63b0ddb_0.conda + sha256: ab2bf709f3cfd270a5d8491188e05fa68d92b9f84a30269e4db391093cbb9049 + md5: d83c209755e41be09f8107fbc884fa91 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - pyyaml >=3.10 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/watchdog?source=hash-mapping + size: 151270 + timestamp: 1730493213458 +- kind: conda + name: watchdog + version: 6.0.0 + build: py313hfa70ccb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/watchdog-6.0.0-py313hfa70ccb_0.conda + sha256: 213d520704e528b2273b2701f0961048c5bdbefbe4db5cdabcf9d01d4322fbf8 + md5: 9593f7b5c1aa4be66a9945c4f1e9f043 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - pyyaml >=3.10 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/watchdog?source=hash-mapping + size: 167930 + timestamp: 1730493160417 +- kind: pypi + name: wcmatch + version: '10.0' + url: https://files.pythonhosted.org/packages/ab/df/4ee467ab39cc1de4b852c212c1ed3becfec2e486a51ac1ce0091f85f38d7/wcmatch-10.0-py3-none-any.whl + sha256: 0dd927072d03c0a6527a20d2e6ad5ba8d0380e60870c383bc533b71744df7b7a + requires_dist: + - bracex>=2.1.1 + requires_python: '>=3.8' +- kind: conda + name: wcmatch + version: '10.0' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wcmatch-10.0-pyhd8ed1ab_0.conda + sha256: 9883e1a7c65f91c3480b38137af5b1d88ee38150b1943c356d11f6b0cd374a8b + md5: b262b976f96f01ad6847b20dbea512af + depends: + - bracex >=2.1.1 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/wcmatch?source=hash-mapping + size: 37788 + timestamp: 1727447886965 +- kind: conda + name: wcwidth + version: 0.2.13 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 + md5: 68f0738df502a14213624b288c60c9ad + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/wcwidth?source=hash-mapping + size: 32709 + timestamp: 1704731373922 +- kind: conda + name: webencodings + version: 0.5.1 + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 + md5: daf5160ff9cde3a468556965329085b9 + depends: + - python >=2.6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/webencodings?source=hash-mapping + size: 15600 + timestamp: 1694681458271 +- kind: conda + name: wheel + version: 0.45.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + sha256: 24f6851a336a50c53d6b50b142c1654872494a62528d57c3ff40240cbd8b13be + md5: bdb2f437ce62fd2f1fef9119a37a12d9 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/wheel?source=hash-mapping + size: 62998 + timestamp: 1732339880578 +- kind: conda + name: win_inet_pton + version: 1.1.0 + build: pyh7428d3b_7 + build_number: 7 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda + sha256: c5297692ab34aade5e21107abaf623d6f93847662e25f655320038d2bfa1a812 + md5: c998c13b2f998af57c3b88c7a47979e0 + depends: + - __win + - python >=3.6 + license: LicenseRef-Public-Domain + purls: + - pkg:pypi/win-inet-pton?source=hash-mapping + size: 9602 + timestamp: 1727796413384 +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 418368 + timestamp: 1660346797927 +- kind: conda + name: xz + version: 5.2.6 + build: h775f41a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8 + md5: a72f9d4ea13d55d745ff1ed594747f10 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 238119 + timestamp: 1660346964847 +- kind: conda + name: xz + version: 5.2.6 + build: h8d14728_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 + md5: 515d77642eaa3639413c6b1bc3f94219 + depends: + - vc >=14.1,<15 + - vs2015_runtime >=14.16.27033 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 217804 + timestamp: 1660346976440 +- kind: conda + name: yaml + version: 0.2.5 + build: h0d85af4_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148 + md5: d7e08fcf8259d742156188e8762b4d20 + license: MIT + license_family: MIT + purls: [] + size: 84237 + timestamp: 1641347062780 +- kind: conda + name: yaml + version: 0.2.5 + build: h7f98852_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- kind: conda + name: yaml + version: 0.2.5 + build: h8ffe710_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + sha256: 4e2246383003acbad9682c7c63178e2e715ad0eb84f03a8df1fbfba455dfedc5 + md5: adbfb9f45d1004a26763652246a33764 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + purls: [] + size: 63274 + timestamp: 1641347623319 +- kind: conda + name: zeromq + version: 4.3.5 + build: h3b0a872_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- kind: conda + name: zeromq + version: 4.3.5 + build: h7130eaa_7 + build_number: 7 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + sha256: b932dce8c9de9a8ffbf0db0365d29677636e599f7763ca51e554c43a0c5f8389 + md5: 6a0a76cd2b3d575e1b7aaeb283b9c3ed + depends: + - __osx >=10.13 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 292112 + timestamp: 1731585246902 +- kind: conda + name: zeromq + version: 4.3.5 + build: ha9f60a1_7 + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + sha256: 15cc8e2162d0a33ffeb3f7b7c7883fd830c54a4b1be6a4b8c7ee1f4fef0088fb + md5: e03f2c245a5ee6055752465519363b1c + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 2527503 + timestamp: 1731585151036 +- kind: conda + name: zipp + version: 3.21.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec + md5: fee389bf8a4843bd7a2248ce11b7f188 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21702 + timestamp: 1731262194278 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312hef9b889_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- kind: conda + name: zstandard + version: 0.23.0 + build: py313h574b89f_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda + sha256: 1d2744ec0e91da267ce749e19142081472539cb140a7dad0646cd249246691fe + md5: 8e017aca933f4dd25491151edd3e7820 + depends: + - cffi >=1.11 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 325703 + timestamp: 1725305947138 +- kind: conda + name: zstandard + version: 0.23.0 + build: py313hab0894d_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313hab0894d_1.conda + sha256: 4b976b0c6f5c1a2c94c5351fbc02b1cad44dbeaf2e288986827e8b2183a14ce6 + md5: 27fe151b0b0752c1ad1c47106855efd9 + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 417943 + timestamp: 1725305677487 +- kind: conda + name: zstd + version: 1.5.6 + build: h0ea2cb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 349143 + timestamp: 1714723445995 +- kind: conda + name: zstd + version: 1.5.6 + build: h915ae27_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 + md5: 4cb2cd56f039b129bb0e491c1164167e + depends: + - __osx >=10.9 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 498900 + timestamp: 1714723303098 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..d38addd --- /dev/null +++ b/pixi.toml @@ -0,0 +1,80 @@ +[project] +authors = ["Jacob Durrant "] +channels = ["conda-forge"] +description = "Add a short description here" +name = "povme" +platforms = ["win-64", "linux-64", "osx-64"] +version = "2.2.1" +readme = "README.md" + +[pypi-dependencies] +povme = { path = ".", editable = true } + +[tasks] + +[environments] +dev = ["dev"] +docs = ["docs"] + +[dependencies] +scipy = ">=1.14.1,<2" +numpy = ">=2.1.3,<3" + +[feature.dev.dependencies] +ruff = ">=0.7.2,<0.8" +black = ">=24.10.0,<25" +isort = ">=5.13.2,<6" +mypy = ">=1.13.0,<2" +twine = ">=5.1.1,<6" +bump-my-version = ">=0.28.1,<0.29" +pytest = ">=8.3.3,<9" +pytest-cov = ">=6.0.0,<7" +coverage = ">=7.6.4,<8" +pip = ">=24.3.1,<25" +setuptools = ">=75.3.0,<76" + + +[feature.dev.tasks] +mdlint = { cmd = ["markdownlint-cli2", '"**/*.{md,markdown}"', "--fix", "--config", ".markdownlint.yaml", "||", "true"] } +isort = { cmd = ["isort", "--settings-path", ".isort.cfg", "./povme", "./tests", "||", "true"] } +black = { cmd = ["black", "--config", ".black.toml", "./povme", "./tests", "||", "true"] } +format = { depends-on = ["mdlint", "isort", "black"] } +tests = { cmd = [ + "PYTHONPATH=.", + "pytest", + "-c", + ".pytest.ini", + "--cov='povme'", + "--cov-report=xml", + "--junit-xml=report.xml", + "--failed-first", +]} +coverage = { cmd = ["coverage", "report"] } +cleanup-build = { cmd = ["rm", "-rf", "./build"] } +build = { cmd = ["python3", "-m", "build"], depends-on = ["cleanup-build"]} +publish-test = { cmd = ["twine", "upload", "--repository", "testpypi", "dist/*"] } +publish = { cmd = ["twine", "upload", "dist/*"] } + +[feature.dev.pypi-dependencies] +build = ">=1.2.2.post1,<2" + +[feature.docs.dependencies] +mkdocs = ">=1.6.1,<2" +mkdocs-material = ">=9.5.44,<10" +pymdown-extensions = ">=10.12,<11" +mkdocs-table-reader-plugin = ">=3.1.0,<4" +mkdocstrings = ">=0.26.2,<0.27" +mkdocstrings-python = ">=1.12.2,<2" +mkdocs-gen-files = ">=0.4.0,<0.5" +mkdocs-macros-plugin = ">=1.3.7,<2" +mkdocs-jupyter = ">=0.25.0,<0.26" +mkdocs-glightbox = ">=0.4.0,<0.5" +mkdocs-git-revision-date-localized-plugin = ">=1.2.9,<2" + +[feature.docs.pypi-dependencies] +material-plausible-plugin = ">=0.2.0,<0.3" +mkdocs-awesome-pages-plugin = ">=2.9.3,<3" + +[feature.docs.tasks] +docs = { cmd = ["rm", "-rf", "./public/", "&&", "mkdocs", "build", "-d", "public/"] } +serve = { cmd = ["mkdocs", "serve"] } diff --git a/povme/cli.py b/povme/cli.py new file mode 100644 index 0000000..20e0ec3 --- /dev/null +++ b/povme/cli.py @@ -0,0 +1,298 @@ +#!/usr/bin/env python3 + +import argparse +import sys +from .povme import RunPOVME +from .pocket_id import run_pocket_id + +from . import __version__ + +def parse_inclusion_regions(args): + inclusion_regions = [] + if args.points_inclusion_sphere: + for sphere in args.points_inclusion_sphere: + inclusion_regions.append(f"PointsInclusionSphere {' '.join(map(str, sphere))}") + if args.points_inclusion_box: + for box in args.points_inclusion_box: + inclusion_regions.append(f"PointsInclusionBox {' '.join(map(str, box))}") + return inclusion_regions + +def parse_exclusion_regions(args): + exclusion_regions = [] + if args.points_exclusion_sphere: + for sphere in args.points_exclusion_sphere: + exclusion_regions.append(f"PointsExclusionSphere {' '.join(map(str, sphere))}") + if args.points_exclusion_box: + for box in args.points_exclusion_box: + exclusion_regions.append(f"PointsExclusionBox {' '.join(map(str, box))}") + return exclusion_regions + +def main(): + parser = argparse.ArgumentParser( + description=f"POVME {__version__}", + formatter_class=argparse.ArgumentDefaultsHelpFormatter + ) + + subparsers = parser.add_subparsers( + title="subcommands", + description="Valid subcommands", + help="Additional help", + dest="command" + ) + subparsers.required = True + + # Subparser for run_povme + povme_parser = subparsers.add_parser( + "run_povme", + help="Run the primary POVME analysis" + ) + + # Required arguments + povme_parser.add_argument( + "--pdb", + required=True, + help="Path to the receptor PDB file (can be a trajectory with multiple frames)" + ) + + # Inclusion regions + povme_parser.add_argument( + "--inclusion-sphere", + type=float, + nargs=4, + action='append', + metavar=('X', 'Y', 'Z', 'RADIUS'), + help="Define an inclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times." + ) + povme_parser.add_argument( + "--inclusion-box", + type=float, + nargs=6, + action='append', + metavar=('X', 'Y', 'Z', 'DX', 'DY', 'DZ'), + help="Define an inclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times." + ) + + # Exclusion regions + povme_parser.add_argument( + "--exclusion-sphere", + type=float, + nargs=4, + action='append', + metavar=('X', 'Y', 'Z', 'RADIUS'), + help="Define an exclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times." + ) + povme_parser.add_argument( + "--exclusion-box", + type=float, + nargs=6, + action='append', + metavar=('X', 'Y', 'Z', 'DX', 'DY', 'DZ'), + help="Define an exclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times." + ) + + # Grid spacing + povme_parser.add_argument( + "--grid-spacing", + type=float, + default=1.0, + help="Distance separating each equidistant point (default: 1.0 Ã…)" + ) + + # Save points + povme_parser.add_argument( + "--save-points", + type=str, + choices=['true', 'false'], + default='false', + help="Whether to save the generated point field (true/false)" + ) + + # Distance cutoff + povme_parser.add_argument( + "--distance-cutoff", + type=float, + default=1.09, + help="Distance cutoff for removing points near receptor atoms (default: 1.09 Ã…)" + ) + + # Convex hull exclusion + povme_parser.add_argument( + "--convex-hull-exclusion", + type=str, + choices=['true', 'false'], + default='false', + help="Activate convex hull exclusion (true/false)" + ) + + # Contiguous points criteria + povme_parser.add_argument( + "--contiguous-points-criteria", + type=int, + default=3, + help="Minimum number of neighboring points to retain a point (default: 3)" + ) + + # Contiguous pocket seed + povme_parser.add_argument( + "--pocket-seed-sphere", + type=float, + nargs=4, + action='append', + metavar=('X', 'Y', 'Z', 'RADIUS'), + help="Define a pocket seed sphere with X Y Z coordinates and RADIUS. Can be used multiple times." + ) + povme_parser.add_argument( + "--pocket-seed-box", + type=float, + nargs=6, + action='append', + metavar=('X', 'Y', 'Z', 'DX', 'DY', 'DZ'), + help="Define a pocket seed box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times." + ) + + # Additional POVME parameters + povme_parser.add_argument( + "--num-processors", + type=int, + default=1, + help="Number of processors to use (default: 1)" + ) + povme_parser.add_argument( + "--use-disk-not-memory", + type=str, + choices=['true', 'false'], + default='false', + help="Use disk space instead of memory (true/false)" + ) + povme_parser.add_argument( + "--output-prefix", + type=str, + default="./POVME_output/", + help="Prefix for output files" + ) + povme_parser.add_argument( + "--save-individual-volumes", + type=str, + choices=['true', 'false'], + default='false', + help="Save individual pocket volumes (true/false)" + ) + povme_parser.add_argument( + "--save-trajectory", + type=str, + choices=['true', 'false'], + default='false', + help="Save pocket volumes as a trajectory (true/false)" + ) + povme_parser.add_argument( + "--equal-num-points", + type=str, + choices=['true', 'false'], + default='false', + help="Ensure equal number of points per frame (true/false)" + ) + povme_parser.add_argument( + "--save-tabbed", + type=str, + choices=['true', 'false'], + default='false', + help="Save volumes in tabbed format (true/false)" + ) + povme_parser.add_argument( + "--save-density-map", + type=str, + choices=['true', 'false'], + default='false', + help="Save volumetric density map (true/false)" + ) + povme_parser.add_argument( + "--compress-output", + type=str, + choices=['true', 'false'], + default='false', + help="Compress output files (true/false)" + ) + + # Subparser for pocket_id + pocket_id_parser = subparsers.add_parser( + "pocket_id", + help="Run Pocket ID to identify protein pockets and generate inclusion spheres" + ) + + # Pocket ID specific arguments + pocket_id_parser.add_argument( + "--input-pdb", + required=True, + help="Path to the input PDB file for Pocket ID" + ) + pocket_id_parser.add_argument( + "--output-prefix", + type=str, + default="./PocketID_output/", + help="Prefix for Pocket ID output files" + ) + # Add more Pocket ID specific arguments here as needed + + args = parser.parse_args() + + if args.command == "run_povme": + # Build the argument list for POVME + povme_args = ["RunPOVME"] + + povme_args.append(f"PDBFileName {args.pdb}") + + # Inclusion regions + inclusion_regions = parse_inclusion_regions(args) + povme_args.extend(inclusion_regions) + + # Exclusion regions + exclusion_regions = parse_exclusion_regions(args) + povme_args.extend(exclusion_regions) + + # Other parameters + povme_args.append(f"GridSpacing {args.grid_spacing}") + povme_args.append(f"SavePoints {args.save_points}") + povme_args.append(f"DistanceCutoff {args.distance_cutoff}") + povme_args.append(f"ConvexHullExclusion {args.convex_hull_exclusion}") + povme_args.append(f"ContiguousPointsCriteria {args.contiguous_points_criteria}") + + # Pocket seed regions + if args.pocket_seed_sphere: + for sphere in args.pocket_seed_sphere: + povme_args.append(f"ContiguousPocketSeedSphere {' '.join(map(str, sphere))}") + if args.pocket_seed_box: + for box in args.pocket_seed_box: + povme_args.append(f"ContiguousPocketSeedBox {' '.join(map(str, box))}") + + # Additional parameters + povme_args.append(f"NumProcessors {args.num_processors}") + povme_args.append(f"UseDiskNotMemory {args.use_disk_not_memory}") + povme_args.append(f"OutputFilenamePrefix {args.output_prefix}") + povme_args.append(f"SaveIndividualPocketVolumes {args.save_individual_volumes}") + povme_args.append(f"SavePocketVolumesTrajectory {args.save_trajectory}") + povme_args.append(f"OutputEqualNumPointsPerFrame {args.equal_num_points}") + povme_args.append(f"SaveTabbedVolumeFile {args.save_tabbed}") + povme_args.append(f"SaveVolumetricDensityMap {args.save_density_map}") + povme_args.append(f"CompressOutput {args.compress_output}") + + # Run POVME + RunPOVME(povme_args) + + elif args.command == "pocket_id": + # Build the argument list for Pocket ID + pocket_id_args = ["pocket_id"] + + pocket_id_args.append(f"PDBFileName {args.input_pdb}") + pocket_id_args.append(f"OutputFilenamePrefix {args.output_prefix}") + + # Add more Pocket ID specific arguments here + + # Run Pocket ID + run_pocket_id(pocket_id_args) + + else: + parser.print_help() + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/povme/test.py b/povme/test.py deleted file mode 100644 index 7453eda..0000000 --- a/povme/test.py +++ /dev/null @@ -1,13 +0,0 @@ -# POVME 2.2.2 is released under the GNU General Public License (see -# http://www.gnu.org/licenses/gpl.html). If you have any questions, comments, -# or suggestions, please don't hesitate to contact me, Jacob Durrant, at -# durrantj [at] pitt [dot] edu. -# -# If you use POVME in your work, please cite: -# -# Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm -# for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -# -# Durrant, J. D., L. Votapka, et al. (2014). "Povme 2.0: An Enhanced Tool -# for Determining Pocket Shape and Volume Characteristics." J Chem Theory -# Comput 10.11: 5047-56. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..25ac2c9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,26 @@ +[project] +authors = [ + {name = "Durrant Lab", email = "durrantj@pitt.edu"} +] +maintainers = [ + {name = "Jacob Durrant", email = "durrantj@pitt.edu"} +] +description = "TODO" +name = "povme" +version = "2.2.1" +readme = "README.md" +requires-python = ">=3.12" +# TODO: Keep this here until pixi releases building capabilities +dependencies = [ + "numpy>=2.1.3,<3", + "scipy>=1.14.1,<2", +] + +[project.scripts] + +[build-system] +requires = ["setuptools"] + +[tool.setuptools.packages.find] +where = ["."] +include = ["povme*"] From 740741144e8349c82616ebd217288eb831f4ca9c Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Wed, 27 Nov 2024 18:44:51 -0500 Subject: [PATCH 02/20] tests: Add basic povme tests --- .black.toml | 7 + LICENSE.md | 6 +- examples/POVME_example/README.txt | 6 - pixi.lock | 2 +- povme/__init__.py | 6 +- povme/cli.py | 141 ++-- povme/common.py | 59 +- povme/pocket_id.py | 216 ++--- povme/povme.py | 167 ++-- povme/pymolecule.py | 777 +++++++++--------- pyproject.toml | 1 + tests/conftest.py | 15 + .../4NSS.pdb => tests/files/4nss/4nss.pdb | 0 .../files/4nss/povme-input.ini | 6 +- tests/test_povme.py | 31 + tests/tmp/.gitignore | 2 + 16 files changed, 697 insertions(+), 745 deletions(-) create mode 100644 .black.toml delete mode 100755 examples/POVME_example/README.txt create mode 100644 tests/conftest.py rename examples/POVME_example/4NSS.pdb => tests/files/4nss/4nss.pdb (100%) rename examples/POVME_example/sample_POVME_input.ini => tests/files/4nss/povme-input.ini (98%) create mode 100644 tests/test_povme.py create mode 100644 tests/tmp/.gitignore diff --git a/.black.toml b/.black.toml new file mode 100644 index 0000000..e046b07 --- /dev/null +++ b/.black.toml @@ -0,0 +1,7 @@ +[tool.black] +target-version = [ + "py312", +] +line-length = 88 +color = true +exclude = "/(\n \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | buck-out\n | build\n | dist\n | env\n | venv\n)/\n" diff --git a/LICENSE.md b/LICENSE.md index 5571e63..da47ac9 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -595,17 +595,17 @@ pointer to where the full notice is found. Copyright (C) - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/examples/POVME_example/README.txt b/examples/POVME_example/README.txt deleted file mode 100755 index 3c4e996..0000000 --- a/examples/POVME_example/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -# To run the POVME example, type the following into the unix command line from -# the current directory: - -python ../../../POVME2.py sample_POVME_input.ini - -# A similar command should work from the Windows command line. diff --git a/pixi.lock b/pixi.lock index 736746f..52b7d5f 100644 --- a/pixi.lock +++ b/pixi.lock @@ -4953,7 +4953,7 @@ packages: name: povme version: 2.2.1 path: . - sha256: bbaba8b4d02715eeabdafbae58e27023b697f2da2b19fcb73b84827cab93823a + sha256: d8744933696078dfe7898d25cce26b9d324afb9d9096a313f2e55fff9281bdc1 requires_dist: - numpy>=2.1.3,<3 - scipy>=1.14.1,<2 diff --git a/povme/__init__.py b/povme/__init__.py index fe2602e..5a3c3a0 100644 --- a/povme/__init__.py +++ b/povme/__init__.py @@ -1,3 +1,5 @@ __version__ = "2.2.2" -__name__ = "povme" -__author__ = "Jacob D. Durrant" + +from .povme import RunPOVME + +__all__ = ["RunPOVME"] diff --git a/povme/cli.py b/povme/cli.py index 20e0ec3..e76a8bd 100644 --- a/povme/cli.py +++ b/povme/cli.py @@ -2,56 +2,62 @@ import argparse import sys -from .povme import RunPOVME -from .pocket_id import run_pocket_id from . import __version__ +from .pocket_id import run_pocket_id +from .povme import RunPOVME + def parse_inclusion_regions(args): inclusion_regions = [] if args.points_inclusion_sphere: for sphere in args.points_inclusion_sphere: - inclusion_regions.append(f"PointsInclusionSphere {' '.join(map(str, sphere))}") + inclusion_regions.append( + f"PointsInclusionSphere {' '.join(map(str, sphere))}" + ) if args.points_inclusion_box: for box in args.points_inclusion_box: inclusion_regions.append(f"PointsInclusionBox {' '.join(map(str, box))}") return inclusion_regions + def parse_exclusion_regions(args): exclusion_regions = [] if args.points_exclusion_sphere: for sphere in args.points_exclusion_sphere: - exclusion_regions.append(f"PointsExclusionSphere {' '.join(map(str, sphere))}") + exclusion_regions.append( + f"PointsExclusionSphere {' '.join(map(str, sphere))}" + ) if args.points_exclusion_box: for box in args.points_exclusion_box: exclusion_regions.append(f"PointsExclusionBox {' '.join(map(str, box))}") return exclusion_regions -def main(): + +def povme_cli(): parser = argparse.ArgumentParser( description=f"POVME {__version__}", - formatter_class=argparse.ArgumentDefaultsHelpFormatter + formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) subparsers = parser.add_subparsers( title="subcommands", description="Valid subcommands", help="Additional help", - dest="command" + dest="command", ) subparsers.required = True # Subparser for run_povme povme_parser = subparsers.add_parser( - "run_povme", - help="Run the primary POVME analysis" + "run_povme", help="Run the primary POVME analysis" ) # Required arguments povme_parser.add_argument( "--pdb", required=True, - help="Path to the receptor PDB file (can be a trajectory with multiple frames)" + help="Path to the receptor PDB file (can be a trajectory with multiple frames)", ) # Inclusion regions @@ -59,17 +65,17 @@ def main(): "--inclusion-sphere", type=float, nargs=4, - action='append', - metavar=('X', 'Y', 'Z', 'RADIUS'), - help="Define an inclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times." + action="append", + metavar=("X", "Y", "Z", "RADIUS"), + help="Define an inclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times.", ) povme_parser.add_argument( "--inclusion-box", type=float, nargs=6, - action='append', - metavar=('X', 'Y', 'Z', 'DX', 'DY', 'DZ'), - help="Define an inclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times." + action="append", + metavar=("X", "Y", "Z", "DX", "DY", "DZ"), + help="Define an inclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times.", ) # Exclusion regions @@ -77,17 +83,17 @@ def main(): "--exclusion-sphere", type=float, nargs=4, - action='append', - metavar=('X', 'Y', 'Z', 'RADIUS'), - help="Define an exclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times." + action="append", + metavar=("X", "Y", "Z", "RADIUS"), + help="Define an exclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times.", ) povme_parser.add_argument( "--exclusion-box", type=float, nargs=6, - action='append', - metavar=('X', 'Y', 'Z', 'DX', 'DY', 'DZ'), - help="Define an exclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times." + action="append", + metavar=("X", "Y", "Z", "DX", "DY", "DZ"), + help="Define an exclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times.", ) # Grid spacing @@ -95,16 +101,16 @@ def main(): "--grid-spacing", type=float, default=1.0, - help="Distance separating each equidistant point (default: 1.0 Ã…)" + help="Distance separating each equidistant point (default: 1.0 Ã…)", ) # Save points povme_parser.add_argument( "--save-points", type=str, - choices=['true', 'false'], - default='false', - help="Whether to save the generated point field (true/false)" + choices=["true", "false"], + default="false", + help="Whether to save the generated point field (true/false)", ) # Distance cutoff @@ -112,16 +118,16 @@ def main(): "--distance-cutoff", type=float, default=1.09, - help="Distance cutoff for removing points near receptor atoms (default: 1.09 Ã…)" + help="Distance cutoff for removing points near receptor atoms (default: 1.09 Ã…)", ) # Convex hull exclusion povme_parser.add_argument( "--convex-hull-exclusion", type=str, - choices=['true', 'false'], - default='false', - help="Activate convex hull exclusion (true/false)" + choices=["true", "false"], + default="false", + help="Activate convex hull exclusion (true/false)", ) # Contiguous points criteria @@ -129,7 +135,7 @@ def main(): "--contiguous-points-criteria", type=int, default=3, - help="Minimum number of neighboring points to retain a point (default: 3)" + help="Minimum number of neighboring points to retain a point (default: 3)", ) # Contiguous pocket seed @@ -137,17 +143,17 @@ def main(): "--pocket-seed-sphere", type=float, nargs=4, - action='append', - metavar=('X', 'Y', 'Z', 'RADIUS'), - help="Define a pocket seed sphere with X Y Z coordinates and RADIUS. Can be used multiple times." + action="append", + metavar=("X", "Y", "Z", "RADIUS"), + help="Define a pocket seed sphere with X Y Z coordinates and RADIUS. Can be used multiple times.", ) povme_parser.add_argument( "--pocket-seed-box", type=float, nargs=6, - action='append', - metavar=('X', 'Y', 'Z', 'DX', 'DY', 'DZ'), - help="Define a pocket seed box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times." + action="append", + metavar=("X", "Y", "Z", "DX", "DY", "DZ"), + help="Define a pocket seed box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times.", ) # Additional POVME parameters @@ -155,81 +161,79 @@ def main(): "--num-processors", type=int, default=1, - help="Number of processors to use (default: 1)" + help="Number of processors to use (default: 1)", ) povme_parser.add_argument( "--use-disk-not-memory", type=str, - choices=['true', 'false'], - default='false', - help="Use disk space instead of memory (true/false)" + choices=["true", "false"], + default="false", + help="Use disk space instead of memory (true/false)", ) povme_parser.add_argument( "--output-prefix", type=str, default="./POVME_output/", - help="Prefix for output files" + help="Prefix for output files", ) povme_parser.add_argument( "--save-individual-volumes", type=str, - choices=['true', 'false'], - default='false', - help="Save individual pocket volumes (true/false)" + choices=["true", "false"], + default="false", + help="Save individual pocket volumes (true/false)", ) povme_parser.add_argument( "--save-trajectory", type=str, - choices=['true', 'false'], - default='false', - help="Save pocket volumes as a trajectory (true/false)" + choices=["true", "false"], + default="false", + help="Save pocket volumes as a trajectory (true/false)", ) povme_parser.add_argument( "--equal-num-points", type=str, - choices=['true', 'false'], - default='false', - help="Ensure equal number of points per frame (true/false)" + choices=["true", "false"], + default="false", + help="Ensure equal number of points per frame (true/false)", ) povme_parser.add_argument( "--save-tabbed", type=str, - choices=['true', 'false'], - default='false', - help="Save volumes in tabbed format (true/false)" + choices=["true", "false"], + default="false", + help="Save volumes in tabbed format (true/false)", ) povme_parser.add_argument( "--save-density-map", type=str, - choices=['true', 'false'], - default='false', - help="Save volumetric density map (true/false)" + choices=["true", "false"], + default="false", + help="Save volumetric density map (true/false)", ) povme_parser.add_argument( "--compress-output", type=str, - choices=['true', 'false'], - default='false', - help="Compress output files (true/false)" + choices=["true", "false"], + default="false", + help="Compress output files (true/false)", ) # Subparser for pocket_id pocket_id_parser = subparsers.add_parser( "pocket_id", - help="Run Pocket ID to identify protein pockets and generate inclusion spheres" + help="Run Pocket ID to identify protein pockets and generate inclusion spheres", ) # Pocket ID specific arguments pocket_id_parser.add_argument( - "--input-pdb", - required=True, - help="Path to the input PDB file for Pocket ID" + "--input-pdb", required=True, help="Path to the input PDB file for Pocket ID" ) pocket_id_parser.add_argument( "--output-prefix", type=str, default="./PocketID_output/", - help="Prefix for Pocket ID output files" + help="Prefix for Pocket ID output files", ) # Add more Pocket ID specific arguments here as needed @@ -259,7 +263,9 @@ def main(): # Pocket seed regions if args.pocket_seed_sphere: for sphere in args.pocket_seed_sphere: - povme_args.append(f"ContiguousPocketSeedSphere {' '.join(map(str, sphere))}") + povme_args.append( + f"ContiguousPocketSeedSphere {' '.join(map(str, sphere))}" + ) if args.pocket_seed_box: for box in args.pocket_seed_box: povme_args.append(f"ContiguousPocketSeedBox {' '.join(map(str, box))}") @@ -293,6 +299,3 @@ def main(): else: parser.print_help() sys.exit(1) - -if __name__ == "__main__": - main() diff --git a/povme/common.py b/povme/common.py index 8432988..7b7a4dc 100644 --- a/povme/common.py +++ b/povme/common.py @@ -1,21 +1,6 @@ -# POVME 2.2.2 is released under the GNU General Public License (see -# http://www.gnu.org/licenses/gpl.html). If you have any questions, comments, -# or suggestions, please don't hesitate to contact me, Jacob Durrant, at -# durrantj [at] pitt [dot] edu. -# -# If you use POVME in your work, please cite: -# -# Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm -# for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -# -# Durrant, J. D., L. Votapka, et al. (2014). "Povme 2.0: An Enhanced Tool -# for Determining Pocket Shape and Volume Characteristics." J Chem Theory -# Comput 10.11: 5047-56. - -from pathlib import Path import gzip import os -import shutil +from pathlib import Path try: from pathlib import WindowsPath as WinPath @@ -33,7 +18,7 @@ def fix_filename(path, must_exist=True): formatted. path -- A string, the path. - must_exist -- A boolean, whether to use file existance in determining which + must_exist -- A boolean, whether to use file existence in determining which path to use. Returns: @@ -89,43 +74,3 @@ def gzopenfile(path, mode="r"): The file object. """ return gzip.open(fix_filename(path, "r" in mode), mode) - - -def setup_testing_dir(files_to_copy_relative_to__file__): - """Create a temporary directory. - - files_to_copy_relative_to__file__ -- A list of files to copy, relative to - the python file calling this function. - """ - - # Create a temporary directory. - test_dir = "./testing.tmp/" - if os.path.exists(test_dir): - raise IOError("Delete " + test_dir + " before running the test.") - os.mkdir(test_dir) - - # Copy example files to this directory. - for fl in files_to_copy_relative_to__file__: - shutil.copy2(os.path.dirname(__file__) + fl, test_dir) - - # Change into testing directory. - os.chdir(test_dir) - - -def delete_testing_dir(): - """Assuming you are already in the temporary directory, this will delete - it.""" - - # Assumes you are already in the temporary directory. - os.chdir("..") - shutil.rmtree("./testing.tmp/") - - -def test_passed(): - """Shows a message saying that a test passed.""" - - print("") - print("-----------------") - print("Passed all tests!") - print("-----------------") - print("") diff --git a/povme/pocket_id.py b/povme/pocket_id.py index a40bd86..36584fc 100644 --- a/povme/pocket_id.py +++ b/povme/pocket_id.py @@ -4,17 +4,19 @@ # If you have any questions, comments, or suggestions, please don't hesitate # to contact me, Jacob Durrant, at durrantj [at] pitt [dot] edu. +import getopt +import multiprocessing import sys +import textwrap +import warnings + import numpy +from numpy.lib.recfunctions import append_fields from scipy import spatial from scipy.cluster.vq import kmeans2 from scipy.spatial.distance import cdist -import textwrap -import getopt -from numpy.lib.recfunctions import append_fields -import multiprocessing -import warnings -from .common import openfile, setup_testing_dir, delete_testing_dir, test_passed + +from .common import delete_testing_dir, openfile, setup_testing_dir, test_passed # POVME Pocket ID 1.0 is a program for identifying protein pockets and # generating appropriate pocket-encompassing inclusion spheres. These spheres, @@ -35,11 +37,11 @@ class Information: def __init__(self, parent_molecule_object): """Initializes the Information class. - Arguments: - parent_molecule_object -- The Molecule object associated with this - class. + Arguments: + parent_molecule_object -- The Molecule object associated with this + class. - """ + """ self.__parent_molecule = parent_molecule_object @@ -68,18 +70,18 @@ def set_coordinates(self, coordinates): def get_bounding_box(self, selection=None, padding=0.0): """Calculates a box that bounds (encompasses) a set of atoms. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider. If ommitted, all atoms of the Molecule - object will be considered. - padding -- An optional float. The bounding box will extend this - many angstroms beyond the atoms being considered. + Arguments: + selection -- An optional numpy.array containing the indices of the + atoms to consider. If ommitted, all atoms of the Molecule + object will be considered. + padding -- An optional float. The bounding box will extend this + many angstroms beyond the atoms being considered. - Returns: - A numpy array representing two 3D points, (min_x, min_y, min_z) - and (max_x, max_y, max_z), that bound the molecule. + Returns: + A numpy array representing two 3D points, (min_x, min_y, min_z) + and (max_x, max_y, max_z), that bound the molecule. - """ + """ if selection is None: selection = self.__parent_molecule.select_all() @@ -98,11 +100,11 @@ class FileIO: def __init__(self, parent_molecule_object): """Initializes the FileIO class. - Arguments: - parent_molecule_object -- The Molecule object associated with this - class. + Arguments: + parent_molecule_object -- The Molecule object associated with this + class. - """ + """ self.__parent_molecule = parent_molecule_object @@ -113,7 +115,7 @@ def load_pdb_into(self, filename): Arguments: filename -- A string, the filename of the pdb file. - """ + """ # open/read the file afile = openfile(filename, "r") @@ -129,7 +131,7 @@ def load_pdb_into_using_file_object(self, file_obj): Arguments: file_obj -- A python file object, containing pdb-formatted data. - """ + """ # source_data = numpy.genfromtxt(file_obj, dtype="S6,S5,S5,S4,S2,S4,S4,S8,S8,S8,S6,S6,S10,S2,S2", names=['record_name', 'serial', 'name', 'resname', 'chainid', 'resseq', 'empty', 'x', 'y', 'z', 'occupancy', 'tempfactor', 'empty2', 'element', 'charge'], delimiter=[6, 5, 5, 4, 2, 4, 4, 8, 8, 8, 6, 6, 10, 2, 2]) source_data = numpy.genfromtxt( @@ -246,32 +248,32 @@ class Selections: def __init__(self, parent_molecule_object): """Initializes the Selections class. - Arguments: - parent_molecule_object -- The Molecule object associated with this - class. + Arguments: + parent_molecule_object -- The Molecule object associated with this + class. - """ + """ self.__parent_molecule = parent_molecule_object def select_atoms(self, selection_criteria): """Select a set of atoms based on user-specified criteria. - Arguments: - selection_criteria -- An dictionary, where the keys correspond to - keys in the - self.__parent_molecule.information.get_atom_information() - structured numpy array, and the values are lists of acceptable - matches. The selection is a logical "AND" between dictionary - entries, but "OR" within the value lists themselves. For - example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} - would select all atoms with the names CA or O that are located - in the PRO residues of chain A. + Arguments: + selection_criteria -- An dictionary, where the keys correspond to + keys in the + self.__parent_molecule.information.get_atom_information() + structured numpy array, and the values are lists of acceptable + matches. The selection is a logical "AND" between dictionary + entries, but "OR" within the value lists themselves. For + example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} + would select all atoms with the names CA or O that are located + in the PRO residues of chain A. - Returns: - A numpy.array containing the indices of the atoms of the selection. + Returns: + A numpy.array containing the indices of the atoms of the selection. - """ + """ try: selection = numpy.ones( @@ -329,7 +331,7 @@ def invert_selection(self, selection): A numpy.array containing the indices of all atoms that are not in the user-defined seleciton. - """ + """ # selection is a list of atom indices all_atoms = numpy.arange( @@ -341,26 +343,26 @@ def invert_selection(self, selection): def select_all(self): """Selects all the atoms in a Molecule object. - Returns: - A numpy.array containing the indices of all atoms in the Molecule - object. + Returns: + A numpy.array containing the indices of all atoms in the Molecule + object. - """ + """ return self.select_atoms({}) def get_molecule_from_selection(self, selection): """Creates a Molecule from a user-defined atom selection. - Arguments - selection -- A numpy.array containing the indices of the atoms in - the user-defined selection. + Arguments + selection -- A numpy.array containing the indices of the atoms in + the user-defined selection. - Returns: - A Molecule object containing the atoms of the user-defined - selection. + Returns: + A Molecule object containing the atoms of the user-defined + selection. - """ + """ new_mol = Molecule() new_mol.set_coordinates(self.__parent_molecule.get_coordinates()[selection]) @@ -431,16 +433,16 @@ def numpy_structured_array_remove_field( ): # surprised this doesn't come with numpy """Removes a specific field name from a structured numpy array. - Arguments: - narray -- A structured numpy array. - field_names -- A list of strings, where each string is one of the - field names of narray. + Arguments: + narray -- A structured numpy array. + field_names -- A list of strings, where each string is one of the + field names of narray. - Returns: - A structured numpy array identical to narray, but with the field - names in field_names removed. + Returns: + A structured numpy array identical to narray, but with the field + names in field_names removed. - """ + """ names = list( narray.dtype.names @@ -467,13 +469,13 @@ def __init__(self, pts): def inside_hull(self, our_point): """Determines if a point is inside the hull - Arguments: - our_point -- An x,y,z array + Arguments: + our_point -- An x,y,z array - Returns: - A boolean, True if the point is inside the hull, False otherwise. + Returns: + A boolean, True if the point is inside the hull, False otherwise. - """ + """ return not self.outside_hull(our_point, self.hull) @@ -490,7 +492,7 @@ def outside_hull( Returns: True if our_point exists outside of the hull, False otherwise. - """ + """ our_point = numpy.array(our_point) # convert it to an numpy.array for triangle in triangles: @@ -528,7 +530,7 @@ def get_seg_dict_num(self, seg_dict, seg_index): if seg_index exists in the keys of seg_dict, return the value. Otherwise, return 0. - """ + """ # we want the index with the greater x-value, so we don't get # identical segments in the dictionary more than once @@ -557,7 +559,7 @@ def increment_seg_dict(self, seg_dict, seg_index): seg_index -- the key of the dictionary member we are going to increment. - """ + """ # we want the index with the greater x-value, so we don't get # identical segments in the dictionary more than once @@ -578,18 +580,18 @@ def increment_seg_dict(self, seg_dict, seg_index): def gift_wrapping_3d(self, raw_points): """Gift wrapping for 3d convex hull. - Arguments: - raw_points -- A nx3 array of points, where each row corresponds to - an x,y,z point coordinate. + Arguments: + raw_points -- A nx3 array of points, where each row corresponds to + an x,y,z point coordinate. - Returns: - A convex hull represented by a list of triangles. Each triangle is - a 3x3 array, where each row is an x,y,z coordinate in space. - The 3 rows describe the location of the 3 corners of the - triangle. Each of the 3 points are arranged so that a cross - product will point outwards from the hull. + Returns: + A convex hull represented by a list of triangles. Each triangle is + a 3x3 array, where each row is an x,y,z coordinate in space. + The 3 rows describe the location of the 3 corners of the + triangle. Each of the 3 points are arranged so that a cross + product will point outwards from the hull. - """ + """ n = numpy.shape(raw_points)[0] # number of points point1 = raw_points[0] # take the first point @@ -737,7 +739,7 @@ def akl_toussaint(self, points): All members of original set of points that fall outside the Akl-Toussaint octahedron - """ + """ x_high = (-1e99, 0, 0) x_low = (1e99, 0, 0) @@ -877,13 +879,13 @@ class BoxOfPoints: def __init__(self, box, reso): """Initialize the class. - Arguments: - box -- A numpy array representing two 3D points, (min_x, min_y, - min_z) and (max_x, max_y, max_z), that define a box. - reso -- The space between the points of the box, in the X, Y, and - Z direction. + Arguments: + box -- A numpy array representing two 3D points, (min_x, min_y, + min_z) and (max_x, max_y, max_z), that define a box. + reso -- The space between the points of the box, in the X, Y, and + Z direction. - """ + """ self.write_pdbs = write_pdbs() @@ -900,26 +902,26 @@ def __init__(self, box, reso): def __snap_float(self, val, reso): """Snaps an arbitrary point to the nearest grid point. - Arguments: - val -- A numpy array corresponding to a 3D point. - reso -- The resolution (distance in the X, Y, and Z directions - between adjacent points) of the grid. + Arguments: + val -- A numpy array corresponding to a 3D point. + reso -- The resolution (distance in the X, Y, and Z directions + between adjacent points) of the grid. - Returns: - A numpy array corresponding to a 3D point near val that is on a - nearby grid point. + Returns: + A numpy array corresponding to a 3D point near val that is on a + nearby grid point. - """ + """ return numpy.floor(val / reso) * reso def remove_points_outside_convex_hull(self, hull): """Removes box points that are outside a convex hull. - Arguments: - hull -- The convex hull. + Arguments: + hull -- The convex hull. - """ + """ chunks = [ (hull, t) for t in numpy.array_split(self.points, params["processors"]) @@ -960,7 +962,7 @@ def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): dist_cutoff -- A float, the cutoff distance to use in determining whether or not box points will be removed. - """ + """ # note, in newer versions of scipy use cKDTree box_of_pts_distance_tree = spatial.KDTree(self.points) @@ -1002,13 +1004,13 @@ def value_func(self, items, results_queue): # so overwriting this function def to_pdb(self, let="X"): """Converts the points in this box into a PDB representation. - Arguments: - let -- An optional string, the chain ID to use. "X" by default. + Arguments: + let -- An optional string, the chain ID to use. "X" by default. - Returns: - A PDB-formatted string. + Returns: + A PDB-formatted string. - """ + """ return self.write_pdbs.numpy_to_pdb(self.points, let) @@ -1021,7 +1023,7 @@ def expand_around_existing_points(self, num_pts, reso): the existing points, in the X, Y, and Z directions. reso -- The distance between adjacent added points. - """ + """ new_pts = [] @@ -1148,7 +1150,7 @@ def separate_out_pockets(self): pocket_indexes = numpy.hstack( ( pocket_indexes, - indecies_of_neighbors + indecies_of_neighbors, # one_index_of_neighbor # Not sure why it used to be this. ) ) diff --git a/povme/povme.py b/povme/povme.py index 3252498..f5553a0 100644 --- a/povme/povme.py +++ b/povme/povme.py @@ -12,35 +12,28 @@ # for Determining Pocket Shape and Volume Characteristics." J Chem Theory # Comput 10.11: 5047-56. +from typing import Any + import math -import sys -import time -import numpy -from . import pymolecule -import os -import random import multiprocessing +import os import platform -from functools import reduce -from .__init__ import __version__ -from .common import ( - openfile, - gzopenfile, - fix_filename, - setup_testing_dir, - delete_testing_dir, - test_passed, -) import shutil +import sys +import time +from functools import reduce + +import numpy + +from . import __version__, pymolecule +from .common import fix_filename, gzopenfile, openfile try: from io import StringIO -except: +except ImportError: from io import StringIO -from scipy.spatial.distance import cdist -from scipy.spatial.distance import pdist -from scipy.spatial.distance import squareform +from scipy.spatial.distance import cdist, pdist, squareform def write_to_file(fo, s, encode=True): @@ -74,7 +67,7 @@ def log(astr, parameters): # Save it to the output file as well. try: - if parameters["CompressOutput"] == True: + if parameters["CompressOutput"]: f = gzopenfile(parameters["OutputFilenamePrefix"] + "output.txt.gz", "ab") else: f = open(parameters["OutputFilenamePrefix"] + "output.txt", "a") @@ -89,7 +82,7 @@ def log(astr, parameters): class Multithreading: """A class for running calculations on multiple processors.""" - results = [] + results: list[Any] = [] def __init__(self, inputs, num_processors, task_class): """Launches a calculation on multiple processors. @@ -194,7 +187,7 @@ class MultithreadingTaskGeneral: """A parent class of others that governs what calculations are run on each thread""" - results = [] + results: list[Any] = [] def runit(self, running, mutex, results_queue, items): """Launches the calculations on this thread @@ -727,8 +720,8 @@ def dx_freq(freq_mat, parameters): ) == N, "Something is wrong with the freq_mat array: it is not a prismatic shape" # 3. write the header and footer - if parameters["SaveVolumetricDensityMap"] == True: - if parameters["CompressOutput"] == True: + if parameters["SaveVolumetricDensityMap"]: + if parameters["CompressOutput"]: dx_file = gzopenfile( parameters["OutputFilenamePrefix"] + "volumetric_density.dx.gz", "wb" ) @@ -811,11 +804,11 @@ def value_func(self, item, results_queue): # if the user wants to save empty points (points that are removed), # then we need a copy of the original - if parameters["OutputEqualNumPointsPerFrame"] == True: + if parameters["OutputEqualNumPointsPerFrame"]: pts_deleted = pts.copy() # you may need to load it from disk if the user so specified - if parameters["UseDiskNotMemory"] == True: # so you need to load it from disk + if parameters["UseDiskNotMemory"]: # so you need to load it from disk pym_filename = pdb pdb = pymolecule.Molecule() pdb.fileio.load_pym_into(pym_filename) @@ -927,7 +920,7 @@ def value_func(self, item, results_queue): pts = numpy.delete(pts, close_pt_index, axis=0) # exclude points outside convex hull - if parameters["ConvexHullExclusion"] == True: + if parameters["ConvexHullExclusion"]: convex_hull_3d = ConvexHull() # get the coordinates of the non-hydrogen atoms (faster to discard @@ -1024,12 +1017,12 @@ def value_func(self, item, results_queue): volume = len(pts) * math.pow(parameters["GridSpacing"], 3) log("\tFrame " + str(frame_indx) + ": " + repr(volume) + " A^3", parameters) - if parameters["SaveIndividualPocketVolumes"] == True: + if parameters["SaveIndividualPocketVolumes"]: frame_text = f"REMARK Frame {str(frame_indx)}" + "\n" frame_text += f"REMARK Volume = {repr(volume)}" + " Cubic Angstroms\n" frame_text += numpy_to_pdb(pts, "X") - if parameters["OutputEqualNumPointsPerFrame"] == True: + if parameters["OutputEqualNumPointsPerFrame"]: # you need to find the points that are in pts_deleted but not # in pts tmp = reduce( @@ -1047,7 +1040,7 @@ def value_func(self, item, results_queue): frame_text = frame_text + "END\n" - if parameters["CompressOutput"] == True: + if parameters["CompressOutput"]: fl = gzopenfile( parameters["OutputFilenamePrefix"] + "frame_" @@ -1067,7 +1060,7 @@ def value_func(self, item, results_queue): fl.close() extra_data_to_add = {} - if parameters["SaveVolumetricDensityMap"] == True: + if parameters["SaveVolumetricDensityMap"]: extra_data_to_add["SaveVolumetricDensityMap"] = pts self.results.append((frame_indx, volume, extra_data_to_add)) @@ -1225,7 +1218,7 @@ def _make_sphere_pts(self, reso): ) result = self._convert_xyz_to_numpy_arr(xs, ys, zs, reso) - # now remove all the points outside of this sphere + # now remove all the points outside of this sphere index_inside_sphere = numpy.nonzero( cdist(result, numpy.array([self.center])) < self.radius )[0] @@ -1390,55 +1383,25 @@ def load_multi_frame_pdb(self, filename, parameters): return molecules - def __init__(self, argv): + def __init__( + self, + path_config: str, + path_pdb: str | None = None, + output_prefix: str | None = None, + ) -> None: """Start POVME Arguments: - argv -- A list of the command-line arguments. - + path_config: Path to configuration file. + path_pdb: Path to PDB file. This will overwrite the configuration file. + output_prefix: Path to output directory including directories. """ - - # Make sure running Python3 - if sys.version_info[0] < 3: - raise Exception("Please use Python 3 to run this version of POVME.") - - if sys.version_info[1] < 6: - print( - "WARNING: POVME2 may fail on Python 3.5 or older. Try a newer Python if you get an error.\n" - ) - start_time = time.time() - # First, check if running in test mode. - testing_mode = False - if "--test" in sys.argv: - setup_testing_dir( - [ - "/examples/POVME_example/" + f - for f in ["4NSS.pdb", "sample_POVME_input.ini"] - ] - ) - - # Keep track that running in testing mode. - testing_mode = True - - # Change the argv list to run the copied ini file. - sys.argv[1] = "sample_POVME_input.ini" - - # Load the configuration file - if len(argv) == 1: - print("\nPOVME " + __version__) - print( - "\nPlease specify the input file from the command line!\n\nExample: python POVME.py input_file.ini" - ) - self.reference({}) - print("") - sys.exit() - - config = ConfigFile(argv[1]) + config = ConfigFile(path_config) # Process the config file - parameters = {} + parameters: dict[str, Any] = {} parameters["GridSpacing"] = 1.0 # default parameters["PointsIncludeRegions"] = [] @@ -1489,6 +1452,16 @@ def __init__(self, argv): ] for entity in config.entities: + if entity[0] == "PDBFILENAME": + if path_pdb is not None: + entity[1] = path_pdb + + if entity[0] == "OUTPUTFILENAMEPREFIX": + if output_prefix is not None: + if output_prefix[-1] != "/": + output_prefix += "/" + entity[1] = output_prefix + try: index = [p.upper() for p in float_parameters].index(entity[0]) parameters[float_parameters[index]] = float(entity[1]) @@ -1601,7 +1574,7 @@ def __init__(self, argv): log("", parameters) # create temp swap directory if needed - if parameters["UseDiskNotMemory"] == True: + if parameters["UseDiskNotMemory"]: if os.path.exists("./.povme_tmp"): shutil.rmtree("./.povme_tmp") os.mkdir("./.povme_tmp") @@ -1657,7 +1630,7 @@ def __init__(self, argv): pts = numpy.delete(pts, index_to_remove, axis=0) # save the points as PDB - if parameters["SavePoints"] == True: + if parameters["SavePoints"]: # First, save the point field itself @@ -1665,7 +1638,7 @@ def __init__(self, argv): points_filename = parameters["OutputFilenamePrefix"] + "point_field.pdb" - if parameters["CompressOutput"] == True: + if parameters["CompressOutput"]: afile = gzopenfile(points_filename + ".gz", "wb") else: afile = openfile(points_filename, "w") @@ -1715,7 +1688,7 @@ def __init__(self, argv): + "contiguous_pocket_seed_points.pdb" ) - if parameters["CompressOutput"] == True: + if parameters["CompressOutput"]: afile = gzopenfile(points_filename + ".gz", "wb") else: afile = openfile(points_filename, "w") @@ -1763,7 +1736,7 @@ def __init__(self, argv): ) # delete the temp swap directory if necessary - if parameters["UseDiskNotMemory"] == True: + if parameters["UseDiskNotMemory"]: if os.path.exists("./.povme_tmp"): shutil.rmtree("./.povme_tmp") @@ -1784,8 +1757,8 @@ def __init__(self, argv): log("", parameters) # if the user requested a separate volume file, save that as well - if parameters["SaveTabbedVolumeFile"] == True: - if parameters["CompressOutput"] == True: + if parameters["SaveTabbedVolumeFile"]: + if parameters["CompressOutput"]: f = gzopenfile( parameters["OutputFilenamePrefix"] + "volumes.tabbed.txt.gz", "wb", @@ -1806,8 +1779,8 @@ def __init__(self, argv): # if the user wanted a single trajectory containing all the # volumes, generate that here. - if parameters["SavePocketVolumesTrajectory"] == True: - if parameters["CompressOutput"] == True: + if parameters["SavePocketVolumesTrajectory"]: + if parameters["CompressOutput"]: traj_file = gzopenfile( parameters["OutputFilenamePrefix"] + "volume_trajectory.pdb.gz", "wb", @@ -1819,7 +1792,7 @@ def __init__(self, argv): ) for frame_index in range(1, len(list(results_dic.keys())) + 1): - if parameters["CompressOutput"] == True: + if parameters["CompressOutput"]: frame_file = gzopenfile( parameters["OutputFilenamePrefix"] + "frame_" @@ -1843,7 +1816,7 @@ def __init__(self, argv): # if the user requested a volumetric density map, then generate it # here - if parameters["SaveVolumetricDensityMap"] == True: + if parameters["SaveVolumetricDensityMap"]: unique_points = {} overall_min = numpy.ones(3) * 1e100 @@ -1918,26 +1891,4 @@ def __init__(self, argv): # import cPickle as pickle # pickle.dump(all_pts, open('dill.pickle', 'w')) - # If running in testing mode, make sure things look alright. - if testing_mode: - import glob - - expected_vols = set([1673.0, 1493.0, 1711.0, 1854.0, 2023.0]) - actual_vols = set(results_dic.values()) - if len(actual_vols - expected_vols) > 0: - raise Exception( - "Expected volumes to be " - + str(expected_vols) - + ", but got " - + str(actual_vols) - ) - num_output_files = len(glob.glob("POVME_test_run/*")) - if num_output_files != 12: - raise Exception( - "Expected 12 output files, but got " + str(num_output_files) - ) - - # Remove testing directory. - delete_testing_dir() - - test_passed() + self.results = results_dic diff --git a/povme/pymolecule.py b/povme/pymolecule.py index fc727ba..50d2268 100755 --- a/povme/pymolecule.py +++ b/povme/pymolecule.py @@ -1,41 +1,18 @@ -"""pymolecule is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by the - Free Software Foundation, either version 3 of the License, or (at your - option) any later version. +from typing import Any - pymolecule is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . - - Copyright 2011 Jacob D. Durrant. If you have any questions, comments, or - suggestions, please don't hesitate to contact me at durrantj [at] pitt - [dot] edu. - - The latest version of pymolecule can be downloaded from - http://sourceforge.net/projects/autoclickchem/ - - If you use pymolecule in your work, please cite [REFERENCE HERE]""" - -"""Note: This is a beta version of pymolecule. Not intended for distribution - independent of POVME 2.2.2!!!""" - - -import os +import copy import itertools +import os +import pickle as pickle +import shutil +import sys + import numpy import numpy.linalg -from numpy.lib.recfunctions import append_fields -from scipy.spatial.distance import pdist -from scipy.spatial.distance import cdist import scipy -import copy -import sys -import pickle as pickle -import shutil +from numpy.lib.recfunctions import append_fields +from scipy.spatial.distance import cdist, pdist + from .common import openfile version = "beta" @@ -51,15 +28,15 @@ class Information: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Information class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object + associated with this class. - """ + """ self.parent_molecule = parent_molecule_object - self.constants = {} + self.constants: dict[str, Any] = {} self.constants["element_names_with_two_letters"] = [ b"BR", b"CL", @@ -355,7 +332,7 @@ def belongs_to_protein(self, atom_index): Returns: A boolean. True if part of protein, False if not. - """ + """ # this function is retained for legacy reasons. past versions of pymolecule had # this functionality. @@ -370,13 +347,13 @@ def belongs_to_protein(self, atom_index): def belongs_to_dna(self, atom_index): """Checks if the atom is part of DNA. - Arguments: - atom_index -- An int, the index of the atom to consider. + Arguments: + atom_index -- An int, the index of the atom to consider. - Returns: - A boolean. True if part of dna, False if not. + Returns: + A boolean. True if part of dna, False if not. - """ + """ # this function is retained for legacy reasons. past versions of pymolecule had # this functionality. @@ -391,13 +368,13 @@ def belongs_to_dna(self, atom_index): def belongs_to_rna(self, atom_index): """Checks if the atom is part of RNA. - Arguments: - atom_index -- An int, the index of the atom to consider. + Arguments: + atom_index -- An int, the index of the atom to consider. - Returns: - A boolean. True if part of rna, False if not. + Returns: + A boolean. True if part of rna, False if not. - """ + """ # this function is retained for legacy reasons. past versions of pymolecule had # this functionality. @@ -508,17 +485,17 @@ def assign_elements_from_atom_names(self, selection=None): def center_of_mass(self, selection=None): """Determines the center of mass. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider when calculating the center of mass. If - ommitted, all atoms of the pymolecule.Molecule object will be - considered. + Arguments: + selection -- An optional numpy.array containing the indices of the + atoms to consider when calculating the center of mass. If + ommitted, all atoms of the pymolecule.Molecule object will be + considered. - Returns: - A numpy.array containing to the x, y, and z coordinates of the - center of mass. + Returns: + A numpy.array containing to the x, y, and z coordinates of the + center of mass. - """ + """ if selection is None: selection = self.parent_molecule.selections.select_all() @@ -551,17 +528,17 @@ def center_of_mass(self, selection=None): def geometric_center(self, selection=None): """Determines the geometric center. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider when calculating the geometric center. If - ommitted, all atoms of the pymolecule.Molecule object will be - considered. + Arguments: + selection -- An optional numpy.array containing the indices of the + atoms to consider when calculating the geometric center. If + ommitted, all atoms of the pymolecule.Molecule object will be + considered. - Returns: - A numpy.array containing to the x, y, and z coordinates of the - geometric center. + Returns: + A numpy.array containing to the x, y, and z coordinates of the + geometric center. - """ + """ if selection is None: selection = self.parent_molecule.selections.select_all() @@ -573,15 +550,15 @@ def geometric_center(self, selection=None): def total_mass(self, selection=None): """Calculates the total atomic mass. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider when calculating the total mass. If ommitted, - all atoms of the pymolecule.Molecule object will be considered. + Arguments: + selection -- An optional numpy.array containing the indices of the + atoms to consider when calculating the total mass. If ommitted, + all atoms of the pymolecule.Molecule object will be considered. - Returns: - A double, the total mass. + Returns: + A double, the total mass. - """ + """ if selection is None: selection = self.parent_molecule.selections.select_all() @@ -595,15 +572,15 @@ def total_mass(self, selection=None): def total_number_of_atoms(self, selection=None): """Counts the number of atoms. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to count. If ommitted, all atoms of the - pymolecule.Molecule object will be considered. + Arguments: + selection -- An optional numpy.array containing the indices of the + atoms to count. If ommitted, all atoms of the + pymolecule.Molecule object will be considered. - Returns: - An int, the total number of atoms. + Returns: + An int, the total number of atoms. - """ + """ if selection is None: selection = self.parent_molecule.selections.select_all() @@ -625,7 +602,7 @@ def total_number_of_heavy_atoms(self): Returns: An int, the total number of heavy (non-hydrogen) atoms. - """ + """ # get the indices of all hydrogen atoms all_hydrogens = self.parent_molecule.selections.select_atoms( @@ -636,18 +613,18 @@ def total_number_of_heavy_atoms(self): def bounding_box(self, selection=None, padding=0.0): """Calculates a box that bounds (encompasses) a set of atoms. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider. If ommitted, all atoms of the - pymolecule.Molecule object will be considered. - padding -- An optional float. The bounding box will extend this - many angstroms beyond the atoms being considered. + Arguments: + selection -- An optional numpy.array containing the indices of the + atoms to consider. If ommitted, all atoms of the + pymolecule.Molecule object will be considered. + padding -- An optional float. The bounding box will extend this + many angstroms beyond the atoms being considered. - Returns: - A numpy array representing two 3D points, (min_x, max_x, min_y) - and (max_y, min_z, max_z), that bound the molecule. + Returns: + A numpy array representing two 3D points, (min_x, max_x, min_y) + and (max_y, min_z, max_z), that bound the molecule. - """ + """ if selection is None: selection = self.parent_molecule.selections.select_all() @@ -675,7 +652,7 @@ def bounding_sphere(self, selection=None, padding=0.0): representing a 3D point, the (x, y, z) center of the sphere. The second is a float, the radius of the sphere. - """ + """ if selection is None: selection = self.parent_molecule.selections.select_all() @@ -710,36 +687,44 @@ def define_molecule_chain_residue_spherical_boundaries(self): # do calcs for the whole molcules whole_mol_calc = self.bounding_sphere() - self.parent_molecule.information.hierarchy["spheres"]["molecule"][ - "center" - ] = numpy.array([whole_mol_calc[0]]) - self.parent_molecule.information.hierarchy["spheres"]["molecule"][ - "radius" - ] = whole_mol_calc[1] + self.parent_molecule.information.hierarchy["spheres"]["molecule"]["center"] = ( + numpy.array([whole_mol_calc[0]]) + ) + self.parent_molecule.information.hierarchy["spheres"]["molecule"]["radius"] = ( + whole_mol_calc[1] + ) # do calcs for the chains - self.parent_molecule.information.hierarchy["spheres"]["chains"][ - "keys" - ] = numpy.array( - list(self.parent_molecule.information.hierarchy["chains"]["indices"].keys()) - ) - self.parent_molecule.information.hierarchy["spheres"]["chains"][ - "centers" - ] = numpy.empty( - ( + self.parent_molecule.information.hierarchy["spheres"]["chains"]["keys"] = ( + numpy.array( + list( + self.parent_molecule.information.hierarchy["chains"][ + "indices" + ].keys() + ) + ) + ) + self.parent_molecule.information.hierarchy["spheres"]["chains"]["centers"] = ( + numpy.empty( + ( + len( + self.parent_molecule.information.hierarchy["spheres"]["chains"][ + "keys" + ] + ), + 3, + ) + ) + ) + self.parent_molecule.information.hierarchy["spheres"]["chains"]["radii"] = ( + numpy.empty( len( self.parent_molecule.information.hierarchy["spheres"]["chains"][ "keys" ] - ), - 3, + ) ) ) - self.parent_molecule.information.hierarchy["spheres"]["chains"][ - "radii" - ] = numpy.empty( - len(self.parent_molecule.information.hierarchy["spheres"]["chains"]["keys"]) - ) for index, chainid in enumerate( self.parent_molecule.information.hierarchy["spheres"]["chains"]["keys"] @@ -763,32 +748,34 @@ def define_molecule_chain_residue_spherical_boundaries(self): ] = asphere[1] # do calcs for the residues - self.parent_molecule.information.hierarchy["spheres"]["residues"][ - "keys" - ] = numpy.array( - list( - self.parent_molecule.information.hierarchy["residues"]["indices"].keys() + self.parent_molecule.information.hierarchy["spheres"]["residues"]["keys"] = ( + numpy.array( + list( + self.parent_molecule.information.hierarchy["residues"][ + "indices" + ].keys() + ) ) ) - self.parent_molecule.information.hierarchy["spheres"]["residues"][ - "centers" - ] = numpy.empty( - ( + self.parent_molecule.information.hierarchy["spheres"]["residues"]["centers"] = ( + numpy.empty( + ( + len( + self.parent_molecule.information.hierarchy["spheres"][ + "residues" + ]["keys"] + ), + 3, + ) + ) + ) + self.parent_molecule.information.hierarchy["spheres"]["residues"]["radii"] = ( + numpy.empty( len( self.parent_molecule.information.hierarchy["spheres"]["residues"][ "keys" ] - ), - 3, - ) - ) - self.parent_molecule.information.hierarchy["spheres"]["residues"][ - "radii" - ] = numpy.empty( - len( - self.parent_molecule.information.hierarchy["spheres"]["residues"][ - "keys" - ] + ) ) ) @@ -827,7 +814,7 @@ def hybridization(self, atom_index): # Currently not working 100% sp2 hybridization, 1 corresponds to sp1 hybridization, and -1 means not enough information. - """ + """ # This is retained for legacy reasons. older versions of pymolecule # included a similar function. Generally, I'd like to include only the @@ -894,11 +881,11 @@ class FileIO: def __init__(self, parent_molecule_object): """Initializes the pymolecule.FileIO class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object + associated with this class. - """ + """ self.parent_molecule = parent_molecule_object @@ -909,7 +896,7 @@ def load_pym_into(self, filename): Arguments: filename -- A string, the filename of the pym file. - """ + """ if filename[-1:] != "/": filename = filename + "/" @@ -966,7 +953,7 @@ def load_pdb_into( resseq_reindex -- An optional boolean, whether or not to reindex the pdb resseq field. False by default. - """ + """ self.parent_molecule.information.filename = filename @@ -999,7 +986,7 @@ def load_pdb_into_using_file_object( resseq_reindex -- An optional boolean, whether or not to reindex the pdb resseq field. False by default. - """ + """ source_data = numpy.genfromtxt( file_obj, @@ -1031,7 +1018,7 @@ def load_pdb_into_using_file_object( for index in remark_indices: astr = "" for name in source_data.dtype.names[1:]: - astr = astr + source_data[name][index].decode('utf-8') + astr = astr + source_data[name][index].decode("utf-8") self.parent_molecule.information.remarks.append(astr.rstrip()) if source_data.ndim == 0: @@ -1075,13 +1062,15 @@ def load_pdb_into_using_file_object( ) descr[index] = (descr[index][0], "f8") new_types = numpy.dtype(descr) - self.parent_molecule.information.atom_information = self.parent_molecule.information.atom_information.astype( - new_types + self.parent_molecule.information.atom_information = ( + self.parent_molecule.information.atom_information.astype(new_types) ) # remove some of the fields that just contain empty data - self.parent_molecule.information.atom_information = self.parent_molecule.numpy_structured_array_remove_field( - self.parent_molecule.information.atom_information, ["empty", "empty2"] + self.parent_molecule.information.atom_information = ( + self.parent_molecule.numpy_structured_array_remove_field( + self.parent_molecule.information.atom_information, ["empty", "empty2"] + ) ) # the coordinates need to be placed in their own special numpy array @@ -1095,7 +1084,7 @@ def load_pdb_into_using_file_object( ).T self.parent_molecule.information.atom_information = self.parent_molecule.numpy_structured_array_remove_field( self.parent_molecule.information.atom_information, - ["x", "y", "z"] + ["x", "y", "z"], # now remove the coordinates from the atom_information object to # save memory ) @@ -1150,7 +1139,7 @@ def load_pdb_into_using_file_object( for index in conect_indices: astr = "" for name in source_data.dtype.names[1:]: - astr = astr + source_data[name][index].decode('utf-8') + astr = astr + source_data[name][index].decode("utf-8") astr = astr.rstrip() indices = [] @@ -1201,7 +1190,7 @@ def save_pym( save_coordinates_undo_point -- An optional boolean, whether or not to save the last coordinate undo point. False by default. - """ + """ # Why not just pickle self.parent.information? Because it's a huge # file, can't selectively not save bonds, for example, and numpy.save @@ -1300,7 +1289,7 @@ def save_pdb( If return_text is True, a PDB-formatted string. Otherwise, returns nothing. - """ + """ # so the pdb is not empty (if it is empty, don't save) if len(self.parent_molecule.information.atom_information) > 0: @@ -1553,11 +1542,11 @@ class AtomsAndBonds: def __init__(self, parent_molecule_object): """Initializes the pymolecule.AtomsAndBonds class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object + associated with this class. - """ + """ self.parent_molecule = parent_molecule_object @@ -1574,7 +1563,7 @@ def create_bonds_by_distance( delete_excessive_bonds -- An optional boolean, whether or not to check for and delete excessive bonds. True by default. - """ + """ # create/recreate the bond array if needed if ( @@ -1658,8 +1647,10 @@ def create_bonds_by_distance( element = self.parent_molecule.information.atom_information[ "element_stripped" ][index] - bond_partner_indices = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([index]) + bond_partner_indices = ( + self.parent_molecule.selections.select_all_atoms_bound_to_selection( + numpy.array([index]) + ) ) number_of_bonds = len(bond_partner_indices) @@ -1681,11 +1672,11 @@ def create_bonds_by_distance( # populate the ideal-bond-length vector for t in range(len(bond_partner_indices)): index_partner = bond_partner_indices[t] - element_partner = self.parent_molecule.information.atom_information[ - "element_stripped" - ][ - index_partner - ] + element_partner = ( + self.parent_molecule.information.atom_information[ + "element_stripped" + ][index_partner] + ) ideal_dists[t] = self.parent_molecule.information.constants[ "bond_length_dict" ][element + "-" + element_partner] @@ -1728,15 +1719,17 @@ def number_of_bond_partners_of_element(self, atom_index, the_element): Returns: An int, the number of neighboring atoms of the specified element. - """ + """ # this function is really here for historical reasons. it's similar to # the old number_of_neighors_of_element function. it could be done # pretty easily with numpy the_element = the_element.strip() - bond_partners_selection = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([atom_index]) + bond_partners_selection = ( + self.parent_molecule.selections.select_all_atoms_bound_to_selection( + numpy.array([atom_index]) + ) ) elements = self.parent_molecule.information.atom_information[ "element_stripped" @@ -1756,15 +1749,17 @@ def index_of_first_bond_partner_of_element(self, atom_index, the_element): An int, the index of the first neighbor atom of the specified element. If no such neighbor exists, returns -1. - """ + """ # this function is really here for historical reasons. it's similar to # the old index_of_neighbor_of_element function. it could be done # pretty easily with numpy the_element = the_element.strip() - bond_partners_selection = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([atom_index]) + bond_partners_selection = ( + self.parent_molecule.selections.select_all_atoms_bound_to_selection( + numpy.array([atom_index]) + ) ) elements = self.parent_molecule.information.atom_information[ "element_stripped" @@ -1774,11 +1769,11 @@ def index_of_first_bond_partner_of_element(self, atom_index, the_element): def delete_bond(self, index1, index2): """Deletes a bond. - Arguments: - index1 -- An int, the index of the first atom of the bonded pair. - index2 -- An int, the index of the second atom of the bonded pair. + Arguments: + index1 -- An int, the index of the first atom of the bonded pair. + index2 -- An int, the index of the second atom of the bonded pair. - """ + """ self.parent_molecule.information.bonds[index1][index2] = 0 self.parent_molecule.information.bonds[index2][index1] = 0 @@ -1786,12 +1781,12 @@ def delete_bond(self, index1, index2): def add_bond(self, index1, index2, order=1): """Adds a bond. - Arguments: - index1 -- An int, the index of the first atom of the bonded pair. - index2 -- An int, the index of the second atom of the bonded pair. - order -- An optional int, the order of the bond. 1 by default. + Arguments: + index1 -- An int, the index of the first atom of the bonded pair. + index2 -- An int, the index of the second atom of the bonded pair. + order -- An optional int, the order of the bond. 1 by default. - """ + """ self.parent_molecule.information.bonds[index1][index2] = order self.parent_molecule.information.bonds[index2][index1] = order @@ -1799,10 +1794,10 @@ def add_bond(self, index1, index2, order=1): def delete_atom(self, index): """Deletes an atom. - Arguments: - index -- An int, the index of the atom to delete. + Arguments: + index -- An int, the index of the atom to delete. - """ + """ # remove the atom information self.parent_molecule.information.atom_information = numpy.delete( @@ -1847,31 +1842,31 @@ def add_atom( ): """Adds an atom. - Arguments: - record_name -- An optional string, the record name of the atom. - "ATOM" is the default. - serial -- An optional int, the serial field of the atom. 1 is the - default. - name -- An optional string, the name of the atom. "X" is the - default. - resname -- An optional string, the resname of the atom. "XXX" is - the default. - chainid -- An optional string, chainid of the atom. "X" is the - default. - resseq -- An optional int, the resseq field of the atom. 1 is the - default. - occupancy -- An optional float, the occupancy of the atom. 0.0 is - the default. - tempfactor -- An optional float, the tempfactor of the atom. 0.0 - is the default. - charge -- An optional string, the charge of the atom. "" is the - default. - element -- An optional string, the element of the atom. "X" is the - default. - coordinates -- An optional numpy.array, the (x, y, z) coordinates - of the atom. numpy.array([0.0, 0.0, 0.0]) is the default. + Arguments: + record_name -- An optional string, the record name of the atom. + "ATOM" is the default. + serial -- An optional int, the serial field of the atom. 1 is the + default. + name -- An optional string, the name of the atom. "X" is the + default. + resname -- An optional string, the resname of the atom. "XXX" is + the default. + chainid -- An optional string, chainid of the atom. "X" is the + default. + resseq -- An optional int, the resseq field of the atom. 1 is the + default. + occupancy -- An optional float, the occupancy of the atom. 0.0 is + the default. + tempfactor -- An optional float, the tempfactor of the atom. 0.0 + is the default. + charge -- An optional string, the charge of the atom. "" is the + default. + element -- An optional string, the element of the atom. "X" is the + default. + coordinates -- An optional numpy.array, the (x, y, z) coordinates + of the atom. numpy.array([0.0, 0.0, 0.0]) is the default. - """ + """ # add the atom information @@ -1996,32 +1991,32 @@ class Selections: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Selections class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object associated - with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object associated + with this class. - """ + """ self.parent_molecule = parent_molecule_object def select_atoms(self, selection_criteria): """Select a set of atoms based on user-specified criteria. - Arguments: - selection_criteria -- An dictionary, where the keys correspond to - keys in the self.parent_molecule.information.atom_information - structured numpy array, and the values are lists of acceptable - matches. The selection is a logical "AND" between dictionary - entries, but "OR" within the value lists themselves. For - example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} - would select all atoms with the names CA or O that are located - in the PRO residues of chain A. + Arguments: + selection_criteria -- An dictionary, where the keys correspond to + keys in the self.parent_molecule.information.atom_information + structured numpy array, and the values are lists of acceptable + matches. The selection is a logical "AND" between dictionary + entries, but "OR" within the value lists themselves. For + example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} + would select all atoms with the names CA or O that are located + in the PRO residues of chain A. - Returns: - A numpy.array containing the indices of the atoms of the - selection. + Returns: + A numpy.array containing the indices of the atoms of the + selection. - """ + """ try: # start assuming everything is selected @@ -2074,16 +2069,16 @@ def select_atoms(self, selection_criteria): def select_atoms_in_bounding_box(self, bounding_box): """Selects all the atoms that are within a bounding box. - Arguments: - bounding_box -- A 2x3 numpy.array containing the minimum and - maximum points of the bounding box. Example: - numpy.array([[min_x, min_y, min_z], [max_x, max_y, max_z]]). + Arguments: + bounding_box -- A 2x3 numpy.array containing the minimum and + maximum points of the bounding box. Example: + numpy.array([[min_x, min_y, min_z], [max_x, max_y, max_z]]). - Returns: - A numpy.array containing the indices of the atoms that are within - the bounding box. + Returns: + A numpy.array containing the indices of the atoms that are within + the bounding box. - """ + """ min_pt = bounding_box[0] max_pt = bounding_box[1] @@ -2117,17 +2112,17 @@ def select_atoms_in_bounding_box(self, bounding_box): def select_all_atoms_bound_to_selection(self, selection): """Selects all the atoms that are bound to a user-specified selection. - Arguments: - selection -- A numpy.array containing the indices of the - user-specified selection. + Arguments: + selection -- A numpy.array containing the indices of the + user-specified selection. - Returns: - A numpy.array containing the indices of the atoms that are bound - to the user-specified selection. Note that this new selection - does not necessarily include the indices of the original - user-specified selection. + Returns: + A numpy.array containing the indices of the atoms that are bound + to the user-specified selection. Note that this new selection + does not necessarily include the indices of the original + user-specified selection. - """ + """ if self.parent_molecule.information.bonds is None: print( @@ -2198,8 +2193,10 @@ def select_branch(self, root_atom_index, directionality_atom_index): except: break # this error because you've reached the end of the larger molecule - neighbors_indices = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([current_atom_index]) + neighbors_indices = ( + self.parent_molecule.selections.select_all_atoms_bound_to_selection( + numpy.array([current_atom_index]) + ) ) # get the ones in neighbors_indices that are not in @@ -2226,7 +2223,7 @@ def select_atoms_from_same_molecule(self, selection): A numpy.array containing the indices of the atoms belonging to the same molecules as the atoms of the user-defined selection. - """ + """ # If your "Molecule" object actually contains several molecules, this # one selects all the atoms from any molecule containing any atom in @@ -2262,8 +2259,10 @@ def select_atoms_from_same_molecule(self, selection): except: break # this error because you've reached the end of the larger molecule - neighbors_indices = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([current_atom_index]) + neighbors_indices = ( + self.parent_molecule.selections.select_all_atoms_bound_to_selection( + numpy.array([current_atom_index]) + ) ) # get the ones in neighbors_indices that are not in @@ -2293,7 +2292,7 @@ def get_selections_of_constituent_molecules(self): atoms belonging to each molecule of the composite pymolecule.Molecule object. - """ + """ # If your pymolecule.Molecule object contains multiple molecules # (e.g., several chains), this will return a list of selections @@ -2333,7 +2332,7 @@ def select_atoms_near_other_selection(self, selection, cutoff): user-defined selection, not including the atoms of the user-defined selection themselves. - """ + """ # note that this does not return a selection that includes the input # selection. merge selections as required to get a selection that also @@ -2364,7 +2363,7 @@ def select_atoms_in_same_residue(self, selection): A numpy.array containing the indices of all atoms in the same residue as any of the atoms of the user-defined selection. - """ + """ # get string ids representing the residues of all atoms keys = numpy.char.add( @@ -2415,7 +2414,7 @@ def invert_selection(self, selection): A numpy.array containing the indices of all atoms that are not in the user-defined seleciton. - """ + """ # selection is a list of atom indices all_atoms = numpy.arange( @@ -2427,11 +2426,11 @@ def invert_selection(self, selection): def select_all(self): """Selects all the atoms in a pymolecule.Molecule object. - Returns: - A numpy.array containing the indices of all atoms in the - pymolecule.Molecule object. + Returns: + A numpy.array containing the indices of all atoms in the + pymolecule.Molecule object. - """ + """ return self.select_atoms({}) @@ -2457,7 +2456,7 @@ def select_close_atoms_from_different_molecules( containing the indices of all nearby atoms from the other molecule. - """ + """ if pairwise_comparison == True: @@ -2675,19 +2674,19 @@ def create_molecule_from_selection( ): """Creates a pymolecule.Molecule from a user-defined atom selection. - Arguments - selection -- A numpy.array containing the indices of the atoms in - the user-defined selection. - serial_reindex -- An optional boolean, whether or not to reindex - the atom serial fields. Default is True. - resseq_reindex -- An optional boolean, whether or not to reindex - the atom resseq fields. Default is False. + Arguments + selection -- A numpy.array containing the indices of the atoms in + the user-defined selection. + serial_reindex -- An optional boolean, whether or not to reindex + the atom serial fields. Default is True. + resseq_reindex -- An optional boolean, whether or not to reindex + the atom resseq fields. Default is False. - Returns: - A pymolecule.Molecule object containing the atoms of the - user-defined selection. + Returns: + A pymolecule.Molecule object containing the atoms of the + user-defined selection. - """ + """ new_mol = Molecule() new_mol.information.coordinates = self.parent_molecule.information.coordinates[ @@ -2697,15 +2696,15 @@ def create_molecule_from_selection( # try to get the undo coordinates as well, though they may not have # been set try: - new_mol.information.coordinates_undo_point = self.parent_molecule.information.coordinates_undo_point[ - selection - ] + new_mol.information.coordinates_undo_point = ( + self.parent_molecule.information.coordinates_undo_point[selection] + ) except: new_mol.information.coordinates_undo_point = None - new_mol.information.atom_information = self.parent_molecule.information.atom_information[ - selection - ] + new_mol.information.atom_information = ( + self.parent_molecule.information.atom_information[selection] + ) if not self.parent_molecule.information.bonds is None: new_mol.information.bonds = self.parent_molecule.information.bonds[ @@ -2731,7 +2730,7 @@ def copy(self): A pymolecule.Molecule, containing to the same atomic information as this pymolecule.Molecule object. - """ + """ new_molecule = Molecule() new_molecule.information.filename = self.parent_molecule.information.filename @@ -2768,12 +2767,12 @@ def copy(self): def get_chain_selections(self): """Identifies the atom selections of each chain. - Returns: - A dictionary. The keys of the dictionary correspond to the - chainids, and the values are numpy.array objects containing the - indices of the associated chain atoms. + Returns: + A dictionary. The keys of the dictionary correspond to the + chainids, and the values are numpy.array objects containing the + indices of the associated chain atoms. - """ + """ # so it hasn't already been calculated if not "chains" in list(self.parent_molecule.information.hierarchy.keys()): @@ -2795,13 +2794,13 @@ def get_chain_selections(self): def get_residue_selections(self): """Identifies the atom selections of each residue. - Returns: - A dictionary. The keys of this dictionary correspond to the unique - resname-resseq-chainid residue identifiers, and the values are - numpy.array objects containing the indices of the associated - residue atoms. + Returns: + A dictionary. The keys of this dictionary correspond to the unique + resname-resseq-chainid residue identifiers, and the values are + numpy.array objects containing the indices of the associated + residue atoms. - """ + """ # so it hasn't already been calculated if not "residues" in list(self.parent_molecule.information.hierarchy.keys()): @@ -2855,11 +2854,11 @@ class Manipulation: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Manipulation class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object associated - with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object associated + with this class. - """ + """ self.parent_molecule = parent_molecule_object @@ -2892,7 +2891,7 @@ def set_atom_location(self, atom_index, new_location): Returns: A numpy.array specifying the (delta_x, delta_y, delta_z) vector by which the pmolecule.Molecule was translated. - """ + """ if new_location.shape == (3,): new_location = numpy.array([new_location]) @@ -2988,7 +2987,7 @@ def rotate_molecule_around_a_line_between_points( end of the line segment. rotate -- A float, the angle of rotation, in radians. - """ + """ if line_point1.shape == (1, 3): line_point1 = line_point1[0] @@ -3095,7 +3094,7 @@ def rotate_molecule_around_a_line_between_atoms( other end of the line segment. rotate -- A float, the angle of rotation, in radians. - """ + """ pt1 = self.parent_molecule.information.coordinates[line_point1_index] pt2 = self.parent_molecule.information.coordinates[line_point2_index] @@ -3110,17 +3109,17 @@ def rotate_molecule_around_a_line_between_atoms( def rotate_molecule_around_pivot_point(self, pivot, thetax, thetay, thetaz): """Rotate the molecular model around a specified atom. - Arguments: - pivot -- A numpy.array, the (x, y, z) coordinate about which the - molecular model will be rotated. - thetax -- A float, the angle to rotate relative to the x axis, in - radians. - thetay -- A float, the angle to rotate relative to the y axis, in - radians. - thetaz -- A float, the angle to rotate relative to the z axis, in - radians. + Arguments: + pivot -- A numpy.array, the (x, y, z) coordinate about which the + molecular model will be rotated. + thetax -- A float, the angle to rotate relative to the x axis, in + radians. + thetay -- A float, the angle to rotate relative to the y axis, in + radians. + thetaz -- A float, the angle to rotate relative to the z axis, in + radians. - """ + """ if pivot.shape == (3,): pivot = numpy.array([pivot]) @@ -3171,17 +3170,17 @@ def rotate_molecule_around_pivot_point(self, pivot, thetax, thetay, thetaz): def rotate_molecule_around_pivot_atom(self, pivot_index, thetax, thetay, thetaz): """Rotate the molecular model around a specified atom. - Arguments: - pivot_index -- An int, the index of the atom about which the - molecular model will be rotated. - thetax -- A float, the angle to rotate relative to the x axis, in - radians. - thetay -- A float, the angle to rotate relative to the y axis, in - radians. - thetaz -- A float, the angle to rotate relative to the z axis, in - radians. + Arguments: + pivot_index -- An int, the index of the atom about which the + molecular model will be rotated. + thetax -- A float, the angle to rotate relative to the x axis, in + radians. + thetay -- A float, the angle to rotate relative to the y axis, in + radians. + thetaz -- A float, the angle to rotate relative to the z axis, in + radians. - """ + """ pivot = self.parent_molecule.information.coordinates[pivot_index] self.rotate_molecule_around_pivot_point(pivot, thetax, thetay, thetaz) @@ -3200,11 +3199,11 @@ class Geometry: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Geometry class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object associated - with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object associated + with this class. - """ + """ self.parent_molecule = parent_molecule_object @@ -3223,7 +3222,7 @@ def angle_between_three_points(self, pt1, pt2, pt3): Returns: A float containing the angle between the three points, in radians. - """ + """ vector1 = pt1 - pt2 vector2 = pt3 - pt2 @@ -3262,7 +3261,7 @@ def dihedral_angle(self, pt1, pt2, pt3, pt4): A float containing the dihedral angle between the four points, in radians. - """ + """ b1 = pt2 - pt1 b2 = pt3 - pt2 @@ -3278,19 +3277,19 @@ def dihedral_angle(self, pt1, pt2, pt3, pt4): def is_planar(self, pt1, pt2, pt3, pt4, planarity_cutoff=0.2): """Checks whether four points (numpy.array) lie in a common plane. - Arguments: - pt1 -- A numpy.array (x, y, z) representing a 3D point. - pt2 -- A numpy.array (x, y, z) representing a 3D point. - pt3 -- A numpy.array (x, y, z) representing a 3D point. - pt4 -- A numpy.array (x, y, z) representing a 3D point. - planarity_cutoff -- An optional float. How much the points can - deviate (in Angstroms) and still be considered planar. The - default is 0.2. + Arguments: + pt1 -- A numpy.array (x, y, z) representing a 3D point. + pt2 -- A numpy.array (x, y, z) representing a 3D point. + pt3 -- A numpy.array (x, y, z) representing a 3D point. + pt4 -- A numpy.array (x, y, z) representing a 3D point. + planarity_cutoff -- An optional float. How much the points can + deviate (in Angstroms) and still be considered planar. The + default is 0.2. - Returns: - A boolean, whether the 4 points can be considered planar. + Returns: + A boolean, whether the 4 points can be considered planar. - """ + """ return self.planarity_deviation(pt1, pt2, pt3, pt4) < planarity_cutoff @@ -3308,7 +3307,7 @@ def planarity_deviation(self, pt1, pt2, pt3, pt4): A float, the minimum distance between one point and the plane formed by the other three. - """ + """ # note that minimal efforts were made to "numpify" this section. It's # mostly legacy code. @@ -3385,11 +3384,11 @@ class OtherMolecules: def __init__(self, parent_molecule_object): """Initializes the pymolecule.OtherMolecules class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Arguments: + parent_molecule_object -- The pymolecule.Molecule object + associated with this class. - """ + """ self.parent_molecule = parent_molecule_object @@ -3407,7 +3406,7 @@ def align_other_molecule_to_this(self, other_mol, tethers): atom6, other) than the tethers would be (numpy.array([1,2]), numpy.array([3,6])). - """ + """ # Adapted from Itzhack Y. Bar-Itzhack. New Method for Extracting the # Quaternion from a Rotation Matrix. Journal of Guidance, Control, and @@ -3502,7 +3501,7 @@ def steric_clash_with_another_molecule( A boolean. True if steric clashes are present, False if they are not. - """ + """ if ( pairwise_comparison == True @@ -3529,14 +3528,14 @@ def steric_clash_with_another_molecule( def merge_with_another_molecule(self, other_molecule): """Merges two molecular models into a single model. - Arguments: - other_molecule -- A molecular model (pymolecule.Molecule object). + Arguments: + other_molecule -- A molecular model (pymolecule.Molecule object). - Returns: - A single pymolecule.Molecule object containing the atoms of this - model combined with the atoms of other_molecule. + Returns: + A single pymolecule.Molecule object containing the atoms of this + model combined with the atoms of other_molecule. - """ + """ merged = self.parent_molecule.selections.copy() @@ -3616,7 +3615,7 @@ def distance_to_another_molecule(self, other_molecule, pairwise_comparison=True) A float, the minimum distance between any two atoms of the two specified molecular models (self and other_molecule). - """ + """ if pairwise_comparison == True: return numpy.amin( @@ -3679,7 +3678,7 @@ def rmsd_equivalent_atoms_specified(self, other_mol, tethers): Returns: A float, the RMSD between self and other_mol. - """ + """ if len(self.parent_molecule.information.coordinates) != len( other_mol.information.coordinates @@ -3698,7 +3697,7 @@ def rmsd_equivalent_atoms_specified(self, other_mol, tethers): other_coors_in_order = other_mol.information.coordinates[tethers[1]] delta = self_coors_in_order - other_coors_in_order - norm_squared = numpy.sum(delta ** 2, axis=-1) + norm_squared = numpy.sum(delta**2, axis=-1) rmsd = numpy.power(numpy.sum(norm_squared) / len(norm_squared), 0.5) return rmsd @@ -3712,7 +3711,7 @@ def rmsd_order_dependent(self, other_mol): Returns: A float, the RMSD between self and other_mol. - """ + """ self_index_in_order = numpy.arange( 0, len(self.parent_molecule.information.coordinates), 1, dtype=int @@ -3732,13 +3731,13 @@ class Quaternion: def __init__(self, s, x, y, z): """Initializes the pymolecule.Quaternion class. - Arguments: - s -- ???? - x -- ???? - y -- ???? - z -- ???? + Arguments: + s -- ???? + x -- ???? + y -- ???? + z -- ???? - """ + """ self.v = numpy.zeros(4) self.v[0] = s @@ -3749,10 +3748,10 @@ def __init__(self, s, x, y, z): def __str__(self): """String containing quaternion information in the form of s x y z - Returns: - A string, containing all information about this quaternion + Returns: + A string, containing all information about this quaternion - """ + """ return ( "" @@ -3778,7 +3777,7 @@ def load_from_mat(self, m): Arguments: m -- A 2D numpy.array representing a pure orthogonal matrix. - """ + """ # Make sure m is a 3x3 array if m.shape[0] != 3 or m.shape[1] != 3: print("Could not load quaternion from matrix...size is not (3x3)") @@ -3825,10 +3824,10 @@ def load_from_mat(self, m): def rep_as_44_matrix(self): """Creates a 4x4 matrix representation of the Quaternion. - Returns: - A 4x4 numpy array + Returns: + A 4x4 numpy array - """ + """ n = self.normalize() qw = n.v[0] @@ -3848,10 +3847,10 @@ def rep_as_44_matrix(self): def to_matrix(self): """Converts to a normalized 3x3 matrix. - Returns: - A 3x3 numpy.array, corresponding to the quaternion. + Returns: + A 3x3 numpy.array, corresponding to the quaternion. - """ + """ # First normalize n = self.normalize() @@ -3900,10 +3899,10 @@ def add(self, q2): def invert(self): """Takes the inverse of the quaternion for "division" - Returns: - A Quaternion, with the values corresponding to self^-1 + Returns: + A Quaternion, with the values corresponding to self^-1 - """ + """ return Quaternion(self.v[0], -1 * self.v[1], -1 * self.v[2], -1 * self.v[3]) @@ -3928,13 +3927,13 @@ def minus(self, q2): def multiply(self, q2): """Multiplies two quaternions - Arguments: - q2 -- A quaternion, to be multiplied with self + Arguments: + q2 -- A quaternion, to be multiplied with self - Returns: - A Quaternion, with the values corresponding to self * q2 + Returns: + A Quaternion, with the values corresponding to self * q2 - """ + """ return Quaternion( self.v[0] * q2.v[0] @@ -3958,10 +3957,10 @@ def multiply(self, q2): def normalize(self): """Normalizes the quaternion. - Returns: - A normalized Quaternion. + Returns: + A normalized Quaternion. - """ + """ # First normalize n = numpy.sqrt( @@ -3976,13 +3975,13 @@ def normalize(self): def scale(self, scalar): """Scales a quaternion. - Arguments: - scalar -- the value to scale the quaternion by. + Arguments: + scalar -- the value to scale the quaternion by. - Returns: - A Quaternion, with the values corresponding to self * scalar. + Returns: + A Quaternion, with the values corresponding to self * scalar. - """ + """ return Quaternion( self.v[0] * scalar, @@ -4016,16 +4015,16 @@ def __init__(self): def numpy_structured_array_remove_field(self, narray, field_names): """Removes a specific field name from a structured numpy array. - Arguments: - narray -- A structured numpy array. - field_names -- A list of strings, where each string is one of the - field names of narray. + Arguments: + narray -- A structured numpy array. + field_names -- A list of strings, where each string is one of the + field names of narray. - Returns: - A structured numpy array identical to narray, but with the field - names in field_names removed. + Returns: + A structured numpy array identical to narray, but with the field + names in field_names removed. - """ + """ # now remove the coordinates from the atom_information object to save # memory @@ -4037,13 +4036,13 @@ def numpy_structured_array_remove_field(self, narray, field_names): def __is_number(self, s): """Determines whether or not a string represents a number. - Arguments: - s -- A string (e.g., "5.4"). + Arguments: + s -- A string (e.g., "5.4"). - Returns: - A boolean, whether or not the string can be represented by a float. + Returns: + A boolean, whether or not the string can be represented by a float. - """ + """ try: float(s) diff --git a/pyproject.toml b/pyproject.toml index 25ac2c9..2f3c97d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ dependencies = [ ] [project.scripts] +povme = "povme.cli:povme_cli" [build-system] requires = ["setuptools"] diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..88d4d4c --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,15 @@ +import os + +import pytest + +TEST_DIR = os.path.dirname(__file__) + + +@pytest.fixture +def path_4nss_input(): + return os.path.join(TEST_DIR, "files/4nss/povme-input.ini") + + +@pytest.fixture +def path_4nss_output(): + return os.path.join(TEST_DIR, "tmp/", "4nss/POVME_") diff --git a/examples/POVME_example/4NSS.pdb b/tests/files/4nss/4nss.pdb similarity index 100% rename from examples/POVME_example/4NSS.pdb rename to tests/files/4nss/4nss.pdb diff --git a/examples/POVME_example/sample_POVME_input.ini b/tests/files/4nss/povme-input.ini similarity index 98% rename from examples/POVME_example/sample_POVME_input.ini rename to tests/files/4nss/povme-input.ini index 6908ec0..d2d807b 100755 --- a/examples/POVME_example/sample_POVME_input.ini +++ b/tests/files/4nss/povme-input.ini @@ -85,7 +85,7 @@ SavePoints true # You can optionally # not the pdb file. # Load the PDB trajectory file -PDBFileName ./4NSS.pdb # Load in the PDB trajectory file with +PDBFileName ./4nss.pdb # Load in the PDB trajectory file with # the pocket you want to analyze. # Tell POVME how to identify points that are within the binding pocket. @@ -149,10 +149,10 @@ UseDiskNotMemory false # In some cases, your # on memory/RAM. # Tell POVME how to save the output -OutputFilenamePrefix ./POVME_test_run/POVME_ # All the files POVME outputs will start +OutputFilenamePrefix ./tmp/4nss/POVME_ # All the files POVME outputs will start # with this prefix. POVME automatically # creates any required directory - # (./POVME_test_run/ in this case). + # (./tmp/4nss/ in this case). SaveIndividualPocketVolumes true # If true, POVME saves the pocket-volume # points of each frame to a separate PDB diff --git a/tests/test_povme.py b/tests/test_povme.py new file mode 100644 index 0000000..2a9dc54 --- /dev/null +++ b/tests/test_povme.py @@ -0,0 +1,31 @@ +import glob +import os +import shutil + +from povme import RunPOVME + + +def test_4nss(path_4nss_input, path_4nss_output): + dir_output = os.path.dirname(path_4nss_output) + if os.path.exists(dir_output): + shutil.rmtree(dir_output) + + run_povme = RunPOVME( + path_4nss_input, + path_pdb="./tests/files/4nss/4nss.pdb", + output_prefix=path_4nss_output, + ) + results = run_povme.results + + expected_vols = set([1673.0, 1493.0, 1711.0, 1854.0, 2023.0]) + actual_vols = set(results.values()) + if len(actual_vols - expected_vols) > 0: + raise Exception( + "Expected volumes to be " + + str(expected_vols) + + ", but got " + + str(actual_vols) + ) + num_output_files = len(glob.glob(dir_output + "/*")) + if num_output_files != 12: + raise Exception("Expected 12 output files, but got " + str(num_output_files)) diff --git a/tests/tmp/.gitignore b/tests/tmp/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/tests/tmp/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From 2da45838bf65dbdaa4cd84a4f18dea6cabb70a50 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Wed, 27 Nov 2024 18:53:15 -0500 Subject: [PATCH 03/20] docs: add start --- .gitignore | 4 + docs/.overrides/main.html | 1 + docs/.pages | 3 + docs/css/base.css | 22 ++++++ docs/css/colors.css | 134 ++++++++++++++++++++++++++++++++ docs/css/jupyter.css | 7 ++ docs/css/launchy.css | 8 ++ docs/css/mkdocstrings.css | 48 ++++++++++++ docs/gen_ref_pages.py | 36 +++++++++ docs/img/launchy/colab.svg | 64 +++++++++++++++ docs/index.md | 1 + docs/js/mathjax-config.js | 19 +++++ hooks/launchy.py | 30 +++++++ mkdocs.yml | 155 +++++++++++++++++++++++++++++++++++++ 14 files changed, 532 insertions(+) create mode 100644 docs/.overrides/main.html create mode 100644 docs/.pages create mode 100644 docs/css/base.css create mode 100644 docs/css/colors.css create mode 100644 docs/css/jupyter.css create mode 100644 docs/css/launchy.css create mode 100644 docs/css/mkdocstrings.css create mode 100644 docs/gen_ref_pages.py create mode 100644 docs/img/launchy/colab.svg create mode 100644 docs/index.md create mode 100644 docs/js/mathjax-config.js create mode 100644 hooks/launchy.py create mode 100644 mkdocs.yml diff --git a/.gitignore b/.gitignore index d31e202..e251911 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,7 @@ # pixi environments .pixi *.egg-info + +# Documentation +api +public diff --git a/docs/.overrides/main.html b/docs/.overrides/main.html new file mode 100644 index 0000000..94d9808 --- /dev/null +++ b/docs/.overrides/main.html @@ -0,0 +1 @@ +{% extends "base.html" %} diff --git a/docs/.pages b/docs/.pages new file mode 100644 index 0000000..0e8c500 --- /dev/null +++ b/docs/.pages @@ -0,0 +1,3 @@ +nav: + - Home: index.md + - API: api diff --git a/docs/css/base.css b/docs/css/base.css new file mode 100644 index 0000000..57e9822 --- /dev/null +++ b/docs/css/base.css @@ -0,0 +1,22 @@ + +/*Make the content wider and relative to window size.*/ +.md-grid { + max-width: 70% +} + +:root { + --md-tooltip-width: 600px; +} + +@page { + size: letter; + max-width: 100%; + margin-top: 1in; + margin-right: 0in; + margin-bottom: 1in; + margin-left: 0in; +} + +.md-typeset h2 { + line-height: 0.9; +} diff --git a/docs/css/colors.css b/docs/css/colors.css new file mode 100644 index 0000000..b983cab --- /dev/null +++ b/docs/css/colors.css @@ -0,0 +1,134 @@ +[data-md-color-scheme="default"] { + + /* Primary color shades */ + --md-primary-fg-color: #025099; + --md-primary-fg-color--light: #0437AD; + --md-primary-bg-color: #ffffff; /* Header text */ + --md-primary-bg-color--light: #DBDBDB; /* Secondary header text */ + + /* Default color shades */ + --md-default-fg-color: #646464; /* ??? */ + --md-default-fg-color--light: #7A7A7A; /* h1 */ + --md-default-fg-color--lighter: #9B9B9B; /* ??? */ + --md-default-fg-color--lightest: #BCBCBC; /* ??? */ + + --md-default-bg-color: #FAFAFA; /* Body background */ + --md-default-bg-color--light: #FAFAFA; + --md-default-bg-color--lighter: #FAFAFA; + --md-default-bg-color--lightest: #FAFAFA; + + /* Code color shades */ + --md-code-fg-color: #36464e; /* Code block text color */ + --md-code-bg-color: #f1f1f1; /* Code block background */ + + /* Code highlighting color shades */ + --md-code-hl-color: #0000ff; + --md-code-hl-color--light: #0000ff; + --md-code-hl-number-color: #d52a2a; + --md-code-hl-special-color: #db1457; + --md-code-hl-function-color: #a846b9; + --md-code-hl-constant-color: #6e59d9; + --md-code-hl-keyword-color: #3f6ec6; + --md-code-hl-string-color: #1c7d4d; + --md-code-hl-name-color: #36464e; + --md-code-hl-operator-color: var(--md-primary-fg-color); + --md-code-hl-punctuation-color: var(--md-primary-fg-color); + --md-code-hl-comment-color: var(--md-primary-fg-color); + --md-code-hl-generic-color: var(--md-primary-fg-color); + --md-code-hl-variable-color: var(--md-primary-fg-color); + + /* Typeset color shades */ + --md-typeset-color: #212529; /* Main text color */ + + /* Typeset `a` color shades */ + --md-typeset-a-color: #01a0d7; /* Link color */ + + /* Typeset `table` color shades */ + --md-typeset-table-color: #a5a5a5; /* Outline color */ + --md-typeset-table-color--light: #e3e2e2; /* Hover color */ + + /* Footer color shades */ + --md-footer-fg-color: #ffffff; /* ??? */ + --md-footer-fg-color--light: #e9ecef; /* Footer text */ + --md-footer-fg-color--lighter: #adb5bd; /* ??? */ + --md-footer-bg-color: #000000; + --md-footer-bg-color--dark: #212529; /* Footer background */ + + /* Accent color shades */ + --md-accent-fg-color: #032779; /* Hover over link */ + --md-accent-fg-color--transparent: #caf0f8; /* Hover over transparent (e.g., code with link) */ + --md-accent-bg-color: #ffffff; + --md-accent-bg-color--light: #e5e5e5; + + /* Admonition colors */ + --md-admonition-fg-color: #212529; + --md-admonition-bg-color: #FAFAFA; +} + +[data-md-color-scheme="dark"] { + + /* Primary color shades */ + --md-primary-fg-color: #03045e; + --md-primary-fg-color--light: #0437AD; + --md-primary-bg-color: #ffffff; /* Header text */ + --md-primary-bg-color--light: #DBDBDB; /* Secondary header text */ + + /* Default color shades */ + --md-default-fg-color: #e2e4e9; /* ??? */ + --md-default-fg-color--light: #ffffff; /* h1 */ + --md-default-fg-color--lighter: #e2e4e9; /* ??? */ + --md-default-fg-color--lightest: #e2e4e9; /* ??? */ + + --md-default-bg-color: #212529; /* Body background */ + --md-default-bg-color--light: #FAFAFA; + --md-default-bg-color--lighter: #FAFAFA; + --md-default-bg-color--lightest: #FAFAFA; + + /* Code color shades */ + --md-code-fg-color: #dddddd; /* Code block text color */ + --md-code-bg-color: #333333; /* Code block background */ + + /* Code highlighting color shades */ + --md-code-hl-color: #aeaeff; + --md-code-hl-color--light: #aeaeff; + --md-code-hl-number-color: #ff9494; + --md-code-hl-special-color: #ffa0c0; + --md-code-hl-function-color: #f3adff; + --md-code-hl-constant-color: #bdaeff; + --md-code-hl-keyword-color: #a0c1ff; + --md-code-hl-string-color: #9fffcf; + --md-code-hl-name-color: #f5f5f5; + --md-code-hl-operator-color: #a6f0ff; + --md-code-hl-punctuation-color: #a6f0ff; + --md-code-hl-comment-color: #a6f0ff; + --md-code-hl-generic-color: #a6f0ff; + --md-code-hl-variable-color: #a6f0ff; + + /* Typeset color shades */ + --md-typeset-color: #ffffff; /* Main text color */ + + /* Typeset `a` color shades */ + --md-typeset-a-color: #01a0d7; /* Link color */ + + /* Typeset `table` color shades */ + --md-typeset-table-color: #a5a5a5; /* Outline color */ + --md-typeset-table-color--light: #343a40; /* Hover color */ + + /* Footer color shades */ + --md-footer-fg-color: #ffffff; /* ??? */ + --md-footer-fg-color--light: #e9ecef; /* Footer text */ + --md-footer-fg-color--lighter: #adb5bd; /* ??? */ + --md-footer-bg-color: #000000; + --md-footer-bg-color--dark: #171717; /* Footer background */ + + /* Accent color shades */ + --md-accent-fg-color: #90e0ef; /* Hover over link */ + --md-accent-fg-color--transparent: #6D6D6D; /* Hover over transparent (e.g., code with link) */ + --md-accent-bg-color: #ffffff; + --md-accent-bg-color--light: #e5e5e5; + + /* Admonition colors */ + --md-admonition-fg-color: #ffffff; + --md-admonition-bg-color: #212529; + +} diff --git a/docs/css/jupyter.css b/docs/css/jupyter.css new file mode 100644 index 0000000..ecb81ae --- /dev/null +++ b/docs/css/jupyter.css @@ -0,0 +1,7 @@ +html + /* + This adjusts the font size of Jupyter notebook code blocks to be closer to normal. + */ + .highlight { + font-size: 85%; + } diff --git a/docs/css/launchy.css b/docs/css/launchy.css new file mode 100644 index 0000000..5c40c46 --- /dev/null +++ b/docs/css/launchy.css @@ -0,0 +1,8 @@ +.launchy-container { + display: flex; + justify-content: flex-end; + position: relative; + margin-top: -4.4em; + margin-bottom: 2em; + margin-right: 0.4em; +} diff --git a/docs/css/mkdocstrings.css b/docs/css/mkdocstrings.css new file mode 100644 index 0000000..bf9ebc4 --- /dev/null +++ b/docs/css/mkdocstrings.css @@ -0,0 +1,48 @@ +/*Indentation.*/ +div.doc-contents:not(.first) { + padding-left: 35px; /*25px is the default*/ + border-left: .15rem solid #ededed; +} + +.doc-heading .highlight { + font-size: 18px; + background-color: transparent; +} + +/*Mark external links as such. */ +a.external::after, +a.autorefs-external::after { + /* */ + mask-image: url('data:image/svg+xml,'); + -webkit-mask-image: url('data:image/svg+xml,'); + content: ' '; + + display: inline-block; + vertical-align: middle; + position: relative; + + height: 1em; + width: 1em; + background-color: var(--md-typeset-a-color); +} + +a.external:hover::after, +a.autorefs-external:hover::after { + background-color: var(--md-accent-fg-color); +} + +/* Fancier color for operators such as * and |. */ +.doc-signature .o { + color: var(--md-code-hl-special-color); + } + +/* Fancier color for constants such as None, True, and False. */ +.doc-signature .kc { + color: var(--md-code-hl-constant-color); +} + +/* Fancier color for built-in types (only useful when cross-references are used). */ +.doc-signature .n > a[href^="https://docs.python.org/"][href*="/functions.html#"], +.doc-signature .n > a[href^="https://docs.python.org/"][href*="/stdtypes.html#"] { + color: var(--md-code-hl-constant-color); +} diff --git a/docs/gen_ref_pages.py b/docs/gen_ref_pages.py new file mode 100644 index 0000000..1165ff6 --- /dev/null +++ b/docs/gen_ref_pages.py @@ -0,0 +1,36 @@ +"""Generate the code reference pages.""" + +import os +from pathlib import Path + +import mkdocs_gen_files + +SRC_DIR = "povme" +WRITE_DIR = "api" + +for path in sorted(Path(SRC_DIR).rglob("*.py")): # + module_path = path.relative_to(SRC_DIR).with_suffix("") # + + doc_path = path.relative_to(SRC_DIR).with_suffix(".md") # + + if not os.path.exists(Path(WRITE_DIR)): + os.mkdir(Path(WRITE_DIR)) + + full_doc_path = Path(WRITE_DIR, doc_path) # + + parts = list(module_path.parts) + + if parts[-1] == "__init__": # + parts = parts[:-1] + elif parts[-1] == "__main__": + continue + + if len(parts) == 0: + continue + + with mkdocs_gen_files.open(full_doc_path, "w") as fd: # + identifier = ".".join(parts) # + + print("::: " + identifier, file=fd) # + + mkdocs_gen_files.set_edit_path(full_doc_path, path) # diff --git a/docs/img/launchy/colab.svg b/docs/img/launchy/colab.svg new file mode 100644 index 0000000..f132728 --- /dev/null +++ b/docs/img/launchy/colab.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..612c7a5 --- /dev/null +++ b/docs/index.md @@ -0,0 +1 @@ +--8<-- "README.md" diff --git a/docs/js/mathjax-config.js b/docs/js/mathjax-config.js new file mode 100644 index 0000000..a90d419 --- /dev/null +++ b/docs/js/mathjax-config.js @@ -0,0 +1,19 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; + +document$.subscribe(() => { + MathJax.startup.output.clearCache() + MathJax.typesetClear() + MathJax.texReset() + MathJax.typesetPromise() +}) diff --git a/hooks/launchy.py b/hooks/launchy.py new file mode 100644 index 0000000..42ff79b --- /dev/null +++ b/hooks/launchy.py @@ -0,0 +1,30 @@ +import os + +from bs4 import BeautifulSoup + + +def is_jupyter(markdown=None, html=None): + if html: + return '

    ' in html + if markdown: + return False + raise ValueError("Must provide either markdown or html") + + +def on_page_content(html, page, config, files): + """Adds a Google colab button to launch Jupyter files""" + # Only Jupyter notebooks will have this div. + if is_jupyter(html=html): + colab_url = os.path.join(config["colab_base_url"], page.url)[:-1] + ".ipynb" + colab_launch_html = f""" + + """ + soup = BeautifulSoup(html, "html.parser") + h1_tag = soup.find("h1") + h1_tag.insert_after(BeautifulSoup(colab_launch_html, "html.parser")) + return soup.prettify() + return html diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..1b13e71 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,155 @@ +docs_dir: docs + +site_name: povme +site_author: durrantlab + +# Git host +repo_name: durrantlab/POVME +repo_url: https://github.com/durrantlab/POVME + +# https://squidfunk.github.io/mkdocs-material/ +theme: + name: material + custom_dir: docs/.overrides + language: en + palette: + # Palette toggle for light mode + - scheme: default + toggle: + icon: material/lightbulb-outline + name: Switch to dark mode + + # Palette toggle for dark mode + - scheme: dark + toggle: + icon: material/lightbulb + name: Switch to light mode + font: + text: Roboto + code: Roboto Mono + icon: + repo: fontawesome/brands/github + annotation: material/star-four-points-circle + features: + - content.code.annotate + - content.code.copy + - content.code.select + - navigation.tabs + - navigation.tabs.sticky + - navigation.tracking + - navigation.top + - navigation.indexes + - navigation.path + - navigation.prune + - toc.follow + - search.suggest + +validation: + omitted_files: warn + absolute_links: warn + unrecognized_links: warn + +# Options need to be indented twice for some reason? +plugins: + - search + - autorefs + - material-plausible + - gen-files: + scripts: + - docs/gen_ref_pages.py + - mkdocstrings: + handlers: + python: + paths: ["povme"] + options: + show_source: false + show_root_heading: false + annotations_path: brief + docstring_style: google + merge_init_into_class: true + docstring_section_style: spacy + show_if_no_docstring: true + - awesome-pages: + collapse_single_pages: true + strict: false + order: asc + sort_type: natural + order_by: title + - git-revision-date-localized: + type: iso_datetime + timezone: America/Detroit + fallback_to_build_date: true + - macros + - table-reader + - glightbox + - mkdocs-jupyter: + no_input: False + include_requirejs: true + include_source: True + ignore: ["*.py"] + remove_tag_config: + remove_input_tags: + - hide_code + +hooks: + - hooks/launchy.py +colab_base_url: https://colab.research.google.com/github/durrantlab/POVME/blob/main/docs + +extra: + generator: true + # analytics: + # provider: plausible + # domain: povme + social: + - icon: fontawesome/brands/github + link: https://github.com/durrantlab + name: Durrant Lab on GitHub + +extra_css: + - css/base.css + - css/colors.css + - css/mkdocstrings.css + - css/launchy.css + - css/jupyter.css + +extra_javascript: + - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js + - js/mathjax-config.js + +markdown_extensions: + - abbr + - toc: + permalink: true + - admonition + - attr_list + - def_list + - footnotes + - md_in_html + - tables + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem + - pymdownx.caret + - pymdownx.details + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.mark + - pymdownx.smartsymbols + - pymdownx.snippets + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.tilde + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg From 9943546abb60311354ac34938100a4f7e792ccf9 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 00:04:59 -0500 Subject: [PATCH 04/20] Fix docs title --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 1b13e71..0e5869e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ docs_dir: docs -site_name: povme +site_name: POVME site_author: durrantlab # Git host From 670897a037f4f16c6626a57744ea8f959062f64a Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 00:05:17 -0500 Subject: [PATCH 05/20] Fix docs code color --- docs/css/colors.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/css/colors.css b/docs/css/colors.css index b983cab..68fc155 100644 --- a/docs/css/colors.css +++ b/docs/css/colors.css @@ -19,7 +19,7 @@ /* Code color shades */ --md-code-fg-color: #36464e; /* Code block text color */ - --md-code-bg-color: #f1f1f1; /* Code block background */ + --md-code-bg-color: #F4F4F4; /* Code block background */ /* Code highlighting color shades */ --md-code-hl-color: #0000ff; From a2056d153b5cfcc2d0dcffb148e98e39a46b66cd Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 00:05:51 -0500 Subject: [PATCH 06/20] Cleanup cli --- povme/cli.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/povme/cli.py b/povme/cli.py index e76a8bd..e73471e 100644 --- a/povme/cli.py +++ b/povme/cli.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - import argparse import sys From a58dc9b162eeb198ad230af93a7839cc344a38b5 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 00:07:34 -0500 Subject: [PATCH 07/20] Reorganize some files --- povme/common.py | 76 --------- povme/hull.py | 337 +++++++++++++++++++++++++++++++++++++++ povme/io.py | 408 ++++++++++++++++++++++++++++++++++++++++++++++++ povme/logger.py | 26 +++ povme/pocket.py | 314 +++++++++++++++++++++++++++++++++++++ povme/region.py | 137 ++++++++++++++++ 6 files changed, 1222 insertions(+), 76 deletions(-) delete mode 100644 povme/common.py create mode 100644 povme/hull.py create mode 100644 povme/io.py create mode 100644 povme/logger.py create mode 100644 povme/pocket.py create mode 100644 povme/region.py diff --git a/povme/common.py b/povme/common.py deleted file mode 100644 index 7b7a4dc..0000000 --- a/povme/common.py +++ /dev/null @@ -1,76 +0,0 @@ -import gzip -import os -from pathlib import Path - -try: - from pathlib import WindowsPath as WinPath - - t = WinPath() -except: - # This is all that's available on linux. But doesn't work with absolute - # windows paths. On the other hand, paths starting with "C:\" don't make - # sense on linux anyway. - from pathlib import PureWindowsPath as WinPath - - -def fix_filename(path, must_exist=True): - """Gets the proper filename, regardless of whether windows or unix - formatted. - - path -- A string, the path. - must_exist -- A boolean, whether to use file existence in determining which - path to use. - - Returns: - A standardized version of the filename. - - """ - if must_exist: - # Figure out path format based on whether the file exists. - path_fixed = Path(path) - if not path_fixed.exists(): - # The path doesn't exist. Could it be a windows-formatted path? - path_fixed = Path(WinPath(path)) - if not path_fixed.exists(): - # No, it really doesn't exist. - - raise IOError("File doesn't exist: " + path) - else: - # Try to figure it out without testing if file exists. - if not "/" in path and not "\\" in path: - # No directory, so it doesn't really matter. - path_fixed = Path(path) - elif os.path.dirname(path) == "": - # It must be a windows path. - path_fixed = Path(WinPath(path)) - else: - # It's probably a unix path. - path_fixed = Path(path) - - return path_fixed - - -def openfile(path, mode="r"): - """Opens a file, regardless of whether unix or windows formatted path. - - path -- A string, the path. - mode -- A string, the file mode. Defaults to "r". - - Returns: - The file object. - """ - - return open(fix_filename(path, "r" in mode), mode) - - -def gzopenfile(path, mode="r"): - """Opens a gz compressed file, regardless of whether unix or windows - formatted path. - - path -- A string, the path. - mode -- A string, the file mode. Defaults to "r". - - Returns: - The file object. - """ - return gzip.open(fix_filename(path, "r" in mode), mode) diff --git a/povme/hull.py b/povme/hull.py new file mode 100644 index 0000000..8c61eb9 --- /dev/null +++ b/povme/hull.py @@ -0,0 +1,337 @@ +import numpy as np + + +class ConvexHull: + """A class to handle convex-hull calculations. + + `seg_dict` is a dictionary object that contains information about + segments within the convex hull. + + - The keys are 2x3 tuples, which represent two ends of a segment in space. + - The values of `seg_dict` are the number of times a segment has been part of + a triangle, either `1` or `2`. `0` times would mean that the segment doesn't + exist in the dictionary yet. + """ + + def __init__(self, pts): + """Initializes the ConvexHull class.""" + + akl_toussaint_pts = self.akl_toussaint(pts) # quickly reduces input size + self.hull = self.gift_wrapping_3d( + akl_toussaint_pts + ) # calculate convex hull using gift wrapping algorithm + + def get_seg_dict_num( + self, + seg_dict: dict[tuple[tuple[np.float64, ...], ...], int], + seg_index: tuple[tuple[np.float64, ...], ...], + ) -> int: + """This function looks up and returns the value of a seg_index from `seg_dict`. + + Args: + seg_dict: The dictionary of segment 2x3 tuples as keys, integers as + values. + seg_index: the key of the dictionary member we are going to retrieve + + Returns: + If `seg_index` exists in the keys of `seg_dict`, return the value. + Otherwise, return 0. + + """ + # we want the index with the greater x-value, so we don't get + # identical segments in the dictionary more than once + index = seg_index if seg_index[0][0] > seg_index[1][0] else seg_index[::-1] + if index in seg_dict: + return seg_dict[index] + else: + return 0 + + def increment_seg_dict(self, seg_dict, seg_index): + """This function increments the values within seg_dict, or initiates them if + they dont exist yet. + + Args: + seg_dict: the dictionary of segment 2x3 tuples as keys, integers as + values. + seg_index: the key of the dictionary member we are going to + increment. + """ + + # we want the index with the greater x-value, so we don't get + # identical segments in the dictionary more than once + if seg_index[0][0] > seg_index[1][0]: + index = seg_index + else: + index = seg_index[::-1] + + # "putting index:", index, "into seg_dict because", index[0][0], ">", index[1][0] + + if index in seg_dict: # if the entry already exists in seg_dict + seg_dict[index] += 1 # increment + else: + # initiate with a value of 1 because it now exists on a triangle + seg_dict[index] = 1 + return + + def gift_wrapping_3d(self, raw_points): + """Gift wrapping for 3d convex hull. + + Args: + raw_points: A nx3 array of points, where each row corresponds to an + x,y,z point coordinate. + + Returns: + A convex hull represented by a list of triangles. Each triangle is a + 3x3 array, where each row is an x,y,z coordinate in space. The 3 + rows describe the location of the 3 corners of the triangle. Each + of the 3 points are arranged so that a cross product will point + outwards from the hull. + + """ + + n = np.shape(raw_points)[0] # number of points + point1 = raw_points[0] # take the first point + # create a ref vector pointing along x axis + xaxis = np.array([1, 0, 0]) + maxx = raw_points[0][0] # initiate highest x value + points = [] # a list of tuples for easy dictionary lookup + seg_dict: dict[tuple[tuple[np.float64, ...], ...], int] = ( + {} + ) # a dictionary that contains the number of triangles a seg is in + + for i in range(n): # find the n with the largest x value + point = tuple(raw_points[i]) + points.append(point) + if point[0] > maxx: + maxx = point[0] + point1 = raw_points[i] + + best_dot = -1.0 # initiate dot relative to x-axis + point2 = np.array(raw_points[1]) # initiate best segment + + # find first/best segment + for i in range(n): + pointi = raw_points[i] + if np.array_equal(pointi, point1): + continue + diff_vec = pointi - point1 + diff_len = np.linalg.norm(diff_vec) + + test_dot = np.dot(diff_vec / diff_len, xaxis) + if test_dot > best_dot: + best_dot = test_dot + point2 = pointi + + point1 = tuple(point1) + point2 = tuple(point2) + ref_vec = xaxis + + # now find the best triangle + triangles = [] + + seg_list = {(point1, point2)} + norm_dict = {(point1, point2): xaxis} + self.increment_seg_dict(seg_dict, (point1, point2)) + + counter = 0 + first_time = True + + while ( + seg_list + ): # as long as there are unexplored edges of triangles in the hull... + + counter += 1 + seg = seg_list.pop() # take a segment out of the seg_list + tuple1 = seg[0] # the two ends of the segment + tuple2 = seg[1] + point1 = np.array(seg[0]) + point2 = np.array(seg[1]) + result = self.get_seg_dict_num(seg_dict, (seg[0], seg[1])) + + if result >= 2: # then we already have 2 triangles on this segment + continue # forget about drawing a triangle for this seg + + # get the norm for a triangle that the segment is part of + ref_vec = norm_dict[(seg[0], seg[1])] + + best_dot_cross = -1.0 + best_point = None + + for i in range(n): # look at each point + + pointi = raw_points[i] + # if np.array_equal(pointi, point1) or np.array_equal(pointi, point2): continue # if we are trying one of the points that are point1 or point2 + diff_vec1 = point2 - point1 + # diff_len1 = np.linalg.norm(diff_vec1) + diff_vec2 = pointi - point2 + # diff_len2 = np.linalg.norm(diff_vec2) + + # test_cross = np.cross(diff_vec1/diff_len1,diff_vec2/diff_len2) + # test_cross = np.cross(diff_vec1,diff_vec2) + test_cross = np.array( + [ + diff_vec1[1] * diff_vec2[2] - diff_vec1[2] * diff_vec2[1], + diff_vec1[2] * diff_vec2[0] - diff_vec1[0] * diff_vec2[2], + diff_vec1[0] * diff_vec2[1] - diff_vec1[1] * diff_vec2[0], + ] + ) # cross product + + # np.linalg.norm(test_cross) # get the norm of the cross product + test_cross_len = np.sqrt( + test_cross[0] * test_cross[0] + + test_cross[1] * test_cross[1] + + test_cross[2] * test_cross[2] + ) + + if test_cross_len <= 0.0: + continue + # test_cross_len_inv = 1 / test_cross_len + test_cross = test_cross / test_cross_len + dot_cross = np.dot(test_cross, ref_vec) + # dot_cross = test_cross[0]*ref_vec[0] + test_cross[1]*ref_vec[1] + test_cross[2]*ref_vec[2] + if dot_cross > best_dot_cross: + best_cross = test_cross + best_dot_cross = dot_cross + best_point = pointi + tuple3 = points[i] + + point3 = best_point + + if self.get_seg_dict_num(seg_dict, (tuple2, tuple1)) > 2: + continue + if self.get_seg_dict_num(seg_dict, (tuple3, tuple2)) > 2: + continue + if self.get_seg_dict_num(seg_dict, (tuple1, tuple3)) > 2: + continue + + # now we have a triangle from point1 -> point2 -> point3 must test + # each edge + if first_time: + self.increment_seg_dict(seg_dict, (tuple2, tuple1)) + seg_list.add((tuple2, tuple1)) + norm_dict[(tuple2, tuple1)] = best_cross + + self.increment_seg_dict(seg_dict, (tuple3, tuple2)) + seg_list.add((tuple3, tuple2)) + norm_dict[(tuple3, tuple2)] = best_cross + + self.increment_seg_dict(seg_dict, (tuple1, tuple3)) + seg_list.add((tuple1, tuple3)) + norm_dict[(tuple1, tuple3)] = best_cross + + triangles.append((np.array(tuple1), np.array(tuple2), np.array(tuple3))) + + first_time = False + + # print "find all triangles:", time.time() - begintime + + # print "section1:", section1 + # print "section2:", section2 + # print "section3:", section3 + return triangles + + def akl_toussaint(self, points): + """The Akl-Toussaint Heuristic. + + Given a set of points, this definition will create an octahedron whose corners + are the extremes in x, y, and z directions. Every point within this octahedron + will be removed because they are not part of the convex hull. + This causes any expected running time for a convex hull algorithm to be reduced + to linear time. + + Args: + points: An nx3 array of x,y,z coordinates. + + Returns: + All members of original set of points that fall outside the + Akl-Toussaint octahedron. + + """ + + x_high = (-1e99, 0, 0) + x_low = (1e99, 0, 0) + y_high = (0, -1e99, 0) + y_low = (0, 1e99, 0) + z_high = (0, 0, -1e99) + z_low = (0, 0, 1e99) + + for point in points: # find the corners of the octahedron + if point[0] > x_high[0]: + x_high = point + if point[0] < x_low[0]: + x_low = point + if point[1] > y_high[1]: + y_high = point + if point[1] < y_low[1]: + y_low = point + if point[2] > z_high[2]: + z_high = point + if point[2] < z_low[2]: + z_low = point + + octahedron = [ # define the triangles of the surfaces of the octahedron + np.array((x_high, y_high, z_high)), + np.array((x_high, z_low, y_high)), + np.array((x_high, y_low, z_low)), + np.array((x_high, z_high, y_low)), + np.array((x_low, y_low, z_high)), + np.array((x_low, z_low, y_low)), + np.array((x_low, y_high, z_low)), + np.array((x_low, z_high, y_high)), + ] + new_points = [] # everything outside of the octahedron + for ( + point + ) in points: # now check to see if a point is inside or outside the octahedron + outside = self.outside_hull(point, octahedron, epsilon=-1.0e-5) + if outside: + new_points.append(point) + + return np.array(new_points) # convert back to an array + + def outside_hull(self, our_point, triangles, epsilon=1.0e-5): + """Given the hull as defined by a list of triangles, this definition + will return whether a point is within these or not. + + Args: + our_point: an x,y,z array that is being tested to see whether it + exists inside the hull or not. + triangles: a list of triangles that define the hull. + epsilon: needed for imprecisions in the floating-point operations. + + Returns: + True if our_point exists outside of the hull, False otherwise + + """ + + our_point = np.array(our_point) # convert it to an np.array + for triangle in triangles: + # vector from triangle corner 0 to point + rel_point = our_point - triangle[0] + # vector from triangle corner 0 to corner 1 + vec1 = triangle[1] - triangle[0] + # vector from triangle corner 1 to corner 2 + vec2 = triangle[2] - triangle[1] + # cross product between vec1 and vec2 + our_cross = np.cross(vec1, vec2) + # dot product to determine whether cross is point inward or + # outward + our_dot = np.dot(rel_point, our_cross) + # if the dot is greater than 0, then its outside + if np.dot(rel_point, our_cross) > epsilon: + return True + + return False + + def inside_hull(self, our_point): + """Determines if a point is inside the hull + + Args: + our_point: An x,y,z array + + Returns: + A boolean, True if the point is inside the hull, False otherwise. + + """ + + return not self.outside_hull(our_point, self.hull) diff --git a/povme/io.py b/povme/io.py new file mode 100644 index 0000000..e99a3bf --- /dev/null +++ b/povme/io.py @@ -0,0 +1,408 @@ +import gzip +import platform +from pathlib import Path, PureWindowsPath + +import numpy as np + + +def fix_filename(path: str, must_exist: bool = True) -> Path: + """ + Returns a standardized Path object, handling both Windows and Unix-formatted paths. + + Args: + path: The file path to standardize. + must_exist: If True, verifies that the path exists. + + Raises: + FileNotFoundError: If the path does not exist and must_exist is True. + ValueError: If the path format is invalid. + + Returns: + Path: A pathlib.Path object representing the standardized path. + """ + # Determine if the current OS is Windows + is_windows = platform.system() == "Windows" + + # Attempt to create a Path object using the appropriate class + try: + if is_windows: + path_obj: Path = Path(path) # On Windows, Path() returns a WindowsPath + else: + # On non-Windows systems, check if the path is Windows-formatted + pure_win_path = PureWindowsPath(path) + if pure_win_path.is_absolute() and pure_win_path.drive: + # It's an absolute Windows path + path_obj = Path(pure_win_path) + else: + # It's a Unix path + path_obj = Path(path) + except Exception as e: + raise ValueError(f"Invalid path format: {path}") from e + + if must_exist: + if not path_obj.exists(): + raise FileNotFoundError(f"File doesn't exist: {path}") + + return path_obj + + +def openfile(path, mode="r"): + """Opens a file, regardless of whether unix or windows formatted path. + + Args: + path: A string, the path. + mode: A string, the file mode. Defaults to "r". + + Returns: + The file object. + """ + + return open(fix_filename(path, "r" in mode), mode) + + +def gzopenfile(path, mode="r"): + """Opens a gz compressed file, regardless of whether unix or windows + formatted path. + + Args: + path: A string, the path. + mode: A string, the file mode. Defaults to "r". + + Returns: + The file object. + """ + return gzip.open(fix_filename(path, "r" in mode), mode) + + +def write_to_file(fo, s, encode=True): + """Writes to a file, encoding if necessary. + + Args: + fo: The file object. + s: The string to write. + encode (bool, optional): Whether to encode the file before writing. + Defaults to True. + + """ + + if encode: + s = s.encode() + + fo.write(s) + + +def create_pdb_line(numpy_array, index, resname, letter): + """Create a string formatted according to the PDB standard. + + Args: + numpy_array: A 1x3 np.array representing a 3D point. + letter: A string, the atom name/chain/etc to use for the output. + + Returns: + A string, formatted according to the PDB standard. + + """ + + if len(numpy_array) == 2: + numpy_array = np.array([numpy_array[0], numpy_array[1], 0.0]) + if numpy_array.shape == (1, 3): + numpy_array = numpy_array[0] + + output = "ATOM " + output = ( + output + + str(index % 999999).rjust(6) + + letter.rjust(5) + + resname.rjust(4) + + letter.rjust(2) + + str(index % 9999).rjust(4) + ) + output += ("%.3f" % numpy_array[0]).rjust(12) + output += ("%.3f" % numpy_array[1]).rjust(8) + output += ("%.3f" % numpy_array[2]).rjust(8) + output += letter.rjust(24) + + return output + + +class write_pdbs: + """A class for converting numpy arrays into PDB-formatted strings.""" + + def __create_pdb_line(self, numpy_array, index, resname, letter): + """Create a string formatted according to the PDB standard. + + Args: + numpy_array: A 1x3 numpy.array representing a 3D point. + index: An integer, the atom index to use in the string. + resname: A string, the RESNAME to use. + letter: A string, the atom name/chain/etc to use for the output. + + Returns: + A string, formatted according to the PDB standard. + + """ + + if len(numpy_array) == 2: + numpy_array = np.array([numpy_array[0], numpy_array[1], 0.0]) + if numpy_array.shape == (1, 3): + numpy_array = numpy_array[0] + + output = "ATOM " + output = ( + output + + str(index % 999999).rjust(6) + + letter.rjust(5) + + resname.rjust(4) + + letter.rjust(2) + + str(index % 9999).rjust(4) + ) + output = output + ("%.3f" % numpy_array[0]).rjust(12) + output = output + ("%.3f" % numpy_array[1]).rjust(8) + output = output + ("%.3f" % numpy_array[2]).rjust(8) + output = output + letter.rjust(24) + + return output + + def numpy_to_pdb(self, narray, letter, resname=""): + """Create a string formatted according to the PDB standard. + + Arguments: + narray -- A nx3 numpy.array representing a 3D point. + letter -- A string, the atom name/chain/etc to use for the output. + resname -- An optional string, the RESNAME to use for the output. + + Returns: + A string, formatted according to the PDB standard. + + """ + + if len(narray.flatten()) == 3: + return self.__create_pdb_line(narray, 1, "AAA", letter) + "\n" + else: + if resname == "": + letters = [ + "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", + ] + resnames = [] + for l1 in letters: + for l2 in letters: + for l3 in letters: + resnames.append(l1 + l2 + l3) + resnames.remove("XXX") # because this is reserved for empty atoms + else: + resnames = [resname] + + t = "" + for i, item in enumerate(narray): + t = ( + t + + self.__create_pdb_line( + item, i + 1, resnames[i % len(resnames)], letter + ) + + "\n" + ) + return t + + +def numpy_to_pdb(narray, letter, resname=""): + """Create a string formatted according to the PDB standard. + + Args: + narray: A nx3 np.array representing a 3D point. + letter: A string, the atom name/chain/etc to use for the output. + + Returns: + A string, formatted according to the PDB standard. + + """ + + if len(narray.flatten()) == 3: + return create_pdb_line(narray, 1, "AAA", letter) + "\n" + else: + if resname == "": + letters = [ + "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", + ] + resnames = [] + for l1 in letters: + for l2 in letters: + for l3 in letters: + resnames.append(l1 + l2 + l3) + resnames.remove("XXX") # because this is reserved for empty atoms + else: + resnames = [resname] + + t = "" + for i, item in enumerate(narray): + t = ( + t + + create_pdb_line(item, i + 1, resnames[i % len(resnames)], letter) + + "\n" + ) + return t + + +def dx_freq(freq_mat, parameters): + """Generates a DX file that records the frequency that a volume element is + open. + + Args: + freq_mat: a Nx4 matrix, where the first 3 columns are the x,y,z coords + of the point, and the 4th column is the frequency of emptiness for that + point in space + + """ + + # 1. Sort the points into the proper order for a dx file + + # already sorted correctly + + # 2. Obtain key information about the grid + N = freq_mat.shape[0] # number of data points + + minx = min(freq_mat[:, 0]) + miny = min(freq_mat[:, 1]) + minz = min(freq_mat[:, 2]) # find the upper and lower corners of the grid + maxx = max(freq_mat[:, 0]) + maxy = max(freq_mat[:, 1]) + maxz = max(freq_mat[:, 2]) + + widthx = maxx - minx # find the widths of the grid + widthy = maxy - miny + widthz = maxz - minz + + xs = np.unique(freq_mat[:, 0]) + ys = np.unique(freq_mat[:, 1]) + zs = np.unique(freq_mat[:, 2]) + + resx = xs[1] - xs[0] + resy = ys[1] - ys[0] + resz = zs[1] - zs[0] + + # resx = freq_mat[(widthz+1)*(widthy+1),0] - freq_mat[0,0] + # resy = freq_mat[widthz+1,1] - freq_mat[0,1] # find the resolution of the grid + # resz = freq_mat[1,2] - freq_mat[0,2] + + nx = (widthx) / resx + 1 # number of grid points in each dimension + # need to add one because the subtraction leaves out an entire row + ny = (widthy) / resy + 1 + nz = (widthz) / resz + 1 + + # test to make sure all is well with the size of the grid and its + # dimensions + assert ( + nx * ny * nz + ) == N, "Something is wrong with the freq_mat array: it is not a prismatic shape" + + # 3. write the header and footer + if parameters["SaveVolumetricDensityMap"]: + if parameters["CompressOutput"]: + dx_file = gzopenfile( + parameters["OutputFilenamePrefix"] + "volumetric_density.dx.gz", "wb" + ) + else: + dx_file = openfile( + parameters["OutputFilenamePrefix"] + "volumetric_density.dx", "w" + ) + + header_template = """# Data from POVME 2.2.2 +# +# FREQUENCY (unitless) +# +object 1 class gridpositions counts %d %d %d +origin %8.6e %8.6e %8.6e +delta %8.6e 0.000000e+00 0.000000e+00 +delta 0.000000e+00 %8.6e 0.000000e+00 +delta 0.000000e+00 0.000000e+00 %8.6e +object 2 class gridconnections counts %d %d %d +object 3 class array type double rank 0 items %d data follows +""" + + header = header_template % ( + nx, + ny, + nz, + minx, + miny, + minz, + resx, + resy, + resz, + nx, + ny, + nz, + N, + ) # format the header + footer_template = """ +attribute "dep" string "positions" +object "regular positions regular connections" class field +component "positions" value 1 +component "connections" value 2 +component "data" value 3""" + + footer = footer_template # the footer needs no formatting + write_to_file(dx_file, header, encode=parameters["CompressOutput"]) + newline_counter = 1 + for i in range(N): # write the data to the DX file + write_to_file( + dx_file, "%8.6e" % freq_mat[i, 3], encode=parameters["CompressOutput"] + ) + if newline_counter == 3: + newline_counter = 0 + write_to_file(dx_file, "\n", encode=parameters["CompressOutput"]) + else: + write_to_file(dx_file, " ", encode=parameters["CompressOutput"]) + newline_counter += 1 + write_to_file(dx_file, footer, encode=parameters["CompressOutput"]) + dx_file.close + return diff --git a/povme/logger.py b/povme/logger.py new file mode 100644 index 0000000..69a8f08 --- /dev/null +++ b/povme/logger.py @@ -0,0 +1,26 @@ +from .io import gzopenfile, write_to_file + + +def log(astr, parameters): + """Output POVME statements, either to the screen or to a file. + + Args: + astr: The string to output. + parameters: The user-defined parameters. + """ + + # Print the output to the screen. + print(astr) + + # Save it to the output file as well. + try: + if parameters["CompressOutput"]: + f = gzopenfile(parameters["OutputFilenamePrefix"] + "output.txt.gz", "ab") + else: + f = open(parameters["OutputFilenamePrefix"] + "output.txt", "a") + + write_to_file(f, astr + "\n", encode=parameters["CompressOutput"]) + + f.close() + except Exception: + pass diff --git a/povme/pocket.py b/povme/pocket.py new file mode 100644 index 0000000..2c7dd0e --- /dev/null +++ b/povme/pocket.py @@ -0,0 +1,314 @@ +from typing import Any + +import numpy as np +from scipy import spatial + +from .io import write_pdbs +from .parallel import GeneralTask, MultiThreading + +params: dict[str, Any] = {} + + +class BoxOfPoints: + """A class representing a box of equidistant points.""" + + def __init__(self, box, reso): + """Initialize the class. + + Args: + box: A numpy array representing two 3D points, (min_x, min_y, + min_z) and (max_x, max_y, max_z), that define a box. + reso: The space between the points of the box, in the X, Y, and + Z direction. + + """ + + self.write_pdbs = write_pdbs() + + min_x = self.__snap_float(box[0][0], reso) + min_y = self.__snap_float(box[0][1], reso) + min_z = self.__snap_float(box[0][2], reso) + max_x = self.__snap_float(box[1][0], reso) + 1.1 * reso + max_y = self.__snap_float(box[1][1], reso) + 1.1 * reso + max_z = self.__snap_float(box[1][2], reso) + 1.1 * reso + + x, y, z = np.mgrid[min_x:max_x:reso, min_y:max_y:reso, min_z:max_z:reso] + self.points = np.array(list(zip(x.ravel(), y.ravel(), z.ravel()))) + + def __snap_float(self, val, reso): + """Snaps an arbitrary point to the nearest grid point. + + Args: + val: A numpy array corresponding to a 3D point. + reso: The resolution (distance in the X, Y, and Z directions + between adjacent points) of the grid. + + Returns: + A numpy array corresponding to a 3D point near val that is on a + nearby grid point. + + """ + + return np.floor(val / reso) * reso + + def remove_points_outside_convex_hull(self, hull): + """Removes box points that are outside a convex hull. + + Args: + hull: The convex hull. + + """ + + chunks = [(hull, t) for t in np.array_split(self.points, params["processors"])] + tmp = MultiThreading(chunks, params["processors"], self.__MultiIdHullPts) + self.points = np.vstack(tmp.results) + + class __MultiIdHullPts(GeneralTask): + """A class to remove points outside a convex hull using multiple + processors.""" + + def value_func(self, items, results_queue): # so overwriting this function + """The calculations that will run on a single processor to remove + points outside a convex hull.""" + + hull = items[0] + some_points = items[1] + + # Note this would be much faster if it were matrix-based intead of + # point-by-point based. Can preallocate numpy array size because I + # don't know beforehand how many points will be in the hull + new_pts = [] + for pt in some_points: + if hull.inside_hull(pt): + new_pts.append(pt) + + if len(new_pts) == 0: + pass # here save the results for later compilation + else: + self.results.append(np.array(new_pts)) + + def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): + """Removes all points in this box that come within the points specified + in a numpy array + + Args: + other_points: A numpy array containing the other points. + dist_cutoff: A float, the cutoff distance to use in determining + whether or not box points will be removed. + + """ + + # note, in newer versions of scipy use cKDTree + box_of_pts_distance_tree = spatial.KDTree(self.points) + chunks = [ + (box_of_pts_distance_tree, dist_cutoff, t) + for t in np.array_split(other_points, params["processors"]) + ] + tmp = MultiThreading(chunks, params["processors"], self.__MultiGetClosePoints) + indicies_of_box_pts_close_to_molecule_points = np.unique(np.hstack(tmp.results)) + + self.points = np.delete( + self.points, indicies_of_box_pts_close_to_molecule_points, axis=0 + ) # remove the ones that are too close to molecule atoms + + class __MultiGetClosePoints(GeneralTask): + """A class to remove box points that are near other, user-specified + points, using multiple processors.""" + + def value_func(self, items, results_queue): # so overwriting this function + """The calculations that will run on a single processor.""" + + box_of_pts_distance_tree = items[0] + dist_cutoff = items[1] + other_points = items[2] + + # note, in newer versions of scipy use cKDTree + other_points_distance_tree = spatial.KDTree(other_points) + sparce_distance_matrix = other_points_distance_tree.sparse_distance_matrix( + box_of_pts_distance_tree, dist_cutoff + ) + indicies_of_box_pts_close_to_molecule_points = np.unique( + sparce_distance_matrix.tocsr().indices + ) + + self.results.append(indicies_of_box_pts_close_to_molecule_points) + + def to_pdb(self, let="X"): + """Converts the points in this box into a PDB representation. + + Args: + let: An optional string, the chain ID to use. "X" by default. + + Returns: + A PDB-formatted string. + + """ + + return self.write_pdbs.numpy_to_pdb(self.points, let) + + def expand_around_existing_points(self, num_pts, reso): + """Add points to the current box that surround existing points, + essentially increasing the resolution of the box. + + Args: + num_pts: An int, the number of points to place on each side of + the existing points, in the X, Y, and Z directions. + reso: The distance between adjacent added points. + + """ + + new_pts = [] + + i = np.arange(-num_pts * reso, num_pts * reso + reso * 0.01, reso) + for xi in i: + for yi in i: + for zi in i: + vec = np.array([xi, yi, zi]) + new_pts.append(self.points + vec) + self.points = np.vstack(new_pts) + + self.__unique_points() + + def __unique_points(self): + """Identifies unique points (rows) in an array of points. + + Args: + a: A nx3 np.array representing 3D points. + + Returns: + A nx2 np.array containing the 3D points that are unique. + + """ + + b = np.ascontiguousarray(self.points).view( + np.dtype((np.void, self.points.dtype.itemsize * self.points.shape[1])) + ) + unique_points = ( + np.unique(b).view(self.points.dtype).reshape(-1, self.points.shape[1]) + ) + + self.points = unique_points + + def filter_isolated_points_until_no_change(self, reso, number_of_neighbors): + """Keep removing points that don't have enough neighbors, until no + such points exist. + + Args: + reso: The distance between adjacent points. + number_of_neighbors: The minimum number of permissible neighbors. + + """ + + # calculate the pairwise distances between all box points note, in + # newer versions of scipy use cKDTree + box_of_pts_distance_tree = spatial.KDTree(self.points) + + # so kiddy-corner counted as a neighbor + self.dist_matrix = box_of_pts_distance_tree.sparse_distance_matrix( + box_of_pts_distance_tree, reso * np.sqrt(3.0) * 1.1 + ).todense() + + # note that the diagnol of self.dist_matrix is zero, as expected, but + # ones with dist > reso * np.sqrt(3.0) * 1.1 are also 0. Pretty + # convenient. + + num_pts = 0 + # keep running the pass until there are no changes (points are stable) + while num_pts != len(self.points): + num_pts = len(self.points) + + # identify the points that have enough neighbors + columns_nonzero_count = np.array((self.dist_matrix != 0).sum(0))[0] + columns_nonzero_count_match_criteria = ( + columns_nonzero_count >= number_of_neighbors + ) + columns_nonzero_count_match_criteria_index = np.nonzero( + columns_nonzero_count_match_criteria + ) + + self.__keep_limited_points(columns_nonzero_count_match_criteria_index) + + def __keep_limited_points(self, pt_indices): + """A support function""" + + # keep only those points + self.points = self.points[pt_indices] + + # update the distance matrix so it doesn't need to be recalculated + self.dist_matrix = self.dist_matrix[pt_indices, :][0] + self.dist_matrix = self.dist_matrix.T + self.dist_matrix = self.dist_matrix[pt_indices, :][0] + # self.dist_matrix = self.dist_matrix.T # not necessary because it's a symetrical matrix + + def separate_out_pockets(self): + """Separate the points according to the pocket they belong to. + Determined by looking at patches of contiguous points. + + Returns: + A list of point arrays, each array corresponding to the points of a + separate pocket. + + """ + + all_pockets = [] + + # self.points is an array of 3D points + + # self.dist_matrix is a distance matrixs. self.dist_matrix[i,j] is + # distance between points i and j. But it only contains distances if + # the points are close (neighbors). Otherwise, 0. + + # Keep going until there are no more points that need to be assigned + # to a pocket. + while len(self.points) != 0: + pocket_indexes = np.array([0]) + num_pts_in_pocket = 0 + + # Keep looping into no new unique pockets are added. + while num_pts_in_pocket != len(pocket_indexes): + num_pts_in_pocket = len(pocket_indexes) + + # Get all the adjacent points + indecies_of_neighbors = np.nonzero(self.dist_matrix[pocket_indexes, :])[ + 1 + ] + + # Get one of them. Not sure why this was previously in the code... + # if len(indecies_of_neighbors) > 0: + # In case a point has no neighbors, you need this conditional. + # one_index_of_neighbor = np.array(indecies_of_neighbors)[0] + + # Add that one index to the growing list. + pocket_indexes = np.hstack( + ( + pocket_indexes, + indecies_of_neighbors, + # one_index_of_neighbor # Not sure why it used to be this. + ) + ) + + # Make sure only unique indecies ones are retained. + pocket_indexes = np.unique(pocket_indexes) + + # Save these points (in the pocket) to a list of pockets. + pocket = self.points[pocket_indexes, :] + all_pockets.append(pocket) + + # Remove those points from the list of points before trying again. + self.__delete_limited_points(pocket_indexes) + + # sort the pockets by size + all_pockets = sorted(all_pockets, key=lambda pts: -len(pts)) + + return all_pockets + + def __delete_limited_points(self, pt_indices): + """A support function""" + + # keep only those points + self.points = np.delete(self.points, pt_indices, axis=0) + + # update the distance matrix so it doesn't need to be recalculated + self.dist_matrix = np.delete(self.dist_matrix, pt_indices, axis=0) + self.dist_matrix = self.dist_matrix.T + self.dist_matrix = np.delete(self.dist_matrix, pt_indices, axis=0) diff --git a/povme/region.py b/povme/region.py new file mode 100644 index 0000000..cda90d6 --- /dev/null +++ b/povme/region.py @@ -0,0 +1,137 @@ +import numpy as np +from scipy.spatial.distance import cdist + + +class Region: + """A class for defining regions that will be filled with points.""" + + def __init__(self): + """Initialize some variables.""" + + self.center = np.array([9999.9, 9999.9, 9999.9]) + self.radius = 9999.9 # in case the region is a sphere + # in case the region is a box + self.box_dimen = np.array([9999.9, 9999.9, 9999.9]) + + self.region_type = "SPHERE" # could also be BOX + + def __str__(self): + """Returns a string representation of the region.""" + + if self.region_type == "SPHERE": + return ( + "sphere at (" + + str(self.center[0]) + + ", " + + str(self.center[1]) + + ", " + + str(self.center[2]) + + "), radius = " + + str(self.radius) + ) + if self.region_type == "BOX": + return ( + "box centered at (" + + str(self.center[0]) + + ", " + + str(self.center[1]) + + ", " + + str(self.center[2]) + + ") with x,y,z dimensions of (" + + str(self.box_dimen[0]) + + ", " + + str(self.box_dimen[1]) + + ", " + + str(self.box_dimen[2]) + + ")" + ) + return "" + + def __snap(self, pts, reso): + """Snaps a set of points to a fixed grid. + + Args: + pts: A nx3 np.array representing 3D points. + reso: A float, the resolution of the grid. + + Returns: + A nx3 np.array with the 3D points snapped to the nearest grid + point. + + """ + + # unfortunately, np.around rounds evenly, so 0.5 rounds to 0.0 and + # 1.5 rounds to 2.0. very annoying, I'll just add a tiny amount to 0.5 + # => 0.500001 this should work, since user is unlikely to select region + # center or radius with such precision + + pts = pts + 1e-10 + return np.around(pts / reso) * reso + + def points_set(self, reso): + """Generates a point field by filling the region with equally spaced + points. + + Args: + reso: A float, the resolution of the grid on which the points will + be placed. + + Returns: + A nx3 np.array with the 3D points filling the region. + + """ + + total_pts = None + + if self.region_type == "BOX": + xs = np.arange( + self.center[0] - self.box_dimen[0] / 2, + self.center[0] + self.box_dimen[0] / 2, + reso, + ) + ys = np.arange( + self.center[1] - self.box_dimen[1] / 2, + self.center[1] + self.box_dimen[1] / 2, + reso, + ) + zs = np.arange( + self.center[2] - self.box_dimen[2] / 2, + self.center[2] + self.box_dimen[2] / 2, + reso, + ) + + total_pts = self._convert_xyz_to_numpy_arr(xs, ys, zs, reso) + elif self.region_type == "SPHERE": + total_pts = self._make_sphere_pts(reso) + return total_pts + + def _make_sphere_pts(self, reso): + xs = np.arange(self.center[0] - self.radius, self.center[0] + self.radius, reso) + ys = np.arange(self.center[1] - self.radius, self.center[1] + self.radius, reso) + zs = np.arange(self.center[2] - self.radius, self.center[2] + self.radius, reso) + + result = self._convert_xyz_to_numpy_arr(xs, ys, zs, reso) + # now remove all the points outside of this sphere + index_inside_sphere = np.nonzero( + cdist(result, np.array([self.center])) < self.radius + )[0] + result = result[index_inside_sphere] + + return result + + def _convert_xyz_to_numpy_arr(self, xs, ys, zs, reso): + result = np.empty((len(xs) * len(ys) * len(zs), 3)) + + i = 0 + for x in xs: + for y in ys: + for z in zs: + result[i][0] = x + result[i][1] = y + result[i][2] = z + + i = i + 1 + + result = self.__snap(result, reso) + + return result From bda10bfbf1a690d1069c5b52ea2536ee862859e1 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 00:07:51 -0500 Subject: [PATCH 08/20] Cleanup some test files --- examples/POVME_Pocket_ID_example/README.txt | 6 ------ .../files/rel1}/rel1_example.pdb | 0 2 files changed, 6 deletions(-) delete mode 100755 examples/POVME_Pocket_ID_example/README.txt rename {examples/POVME_Pocket_ID_example => tests/files/rel1}/rel1_example.pdb (100%) diff --git a/examples/POVME_Pocket_ID_example/README.txt b/examples/POVME_Pocket_ID_example/README.txt deleted file mode 100755 index 43d8845..0000000 --- a/examples/POVME_Pocket_ID_example/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -# To run the POVME Pocket ID example, type the following into the unix command -# line from the current directory: - -python ../../../POVME_pocket_id.py --filename rel1_example.pdb --pocket_detection_resolution 4.0 --pocket_measuring_resolution 1.0 --clashing_cutoff 3.0 --number_of_neighbors 4 --processors 4 --number_of_spheres 5 --sphere_padding 5.0 - -# A similar command should work from the Windows command line. diff --git a/examples/POVME_Pocket_ID_example/rel1_example.pdb b/tests/files/rel1/rel1_example.pdb similarity index 100% rename from examples/POVME_Pocket_ID_example/rel1_example.pdb rename to tests/files/rel1/rel1_example.pdb From f8ae8f0ce9edaf98975ef4c02aad4006ef93f735 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 00:08:23 -0500 Subject: [PATCH 09/20] Move pocket_id test info --- tests/test_pocketid.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 tests/test_pocketid.py diff --git a/tests/test_pocketid.py b/tests/test_pocketid.py new file mode 100644 index 0000000..3d992c8 --- /dev/null +++ b/tests/test_pocketid.py @@ -0,0 +1,6 @@ +# To run the POVME Pocket ID example, type the following into the unix command +# line from the current directory: + +# python ../../../POVME_pocket_id.py --filename rel1_example.pdb --pocket_detection_resolution 4.0 --pocket_measuring_resolution 1.0 --clashing_cutoff 3.0 --number_of_neighbors 4 --processors 4 --number_of_spheres 5 --sphere_padding 5.0 + +# A similar command should work from the Windows command line. From 5639ecd290db95272201d103ebd1100a26b72320 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 07:39:16 -0500 Subject: [PATCH 10/20] chore: fix mypy.ini --- .mypy.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.mypy.ini b/.mypy.ini index 6294e57..160c0b4 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -1,5 +1,5 @@ [mypy] -python_version = "3.12" +python_version = 3.12 pretty = true show_traceback = true color_output = true @@ -21,3 +21,4 @@ warn_return_any = true warn_unreachable = true warn_unused_configs = true warn_unused_ignores = true +exclude = (?x)(^public/*$) From cf3f6db29f135bf7c4b54b386b2c59612aa721be Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 08:17:43 -0500 Subject: [PATCH 11/20] tests: fix --- tests/test_povme.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/test_povme.py b/tests/test_povme.py index 2a9dc54..7144a48 100644 --- a/tests/test_povme.py +++ b/tests/test_povme.py @@ -19,13 +19,7 @@ def test_4nss(path_4nss_input, path_4nss_output): expected_vols = set([1673.0, 1493.0, 1711.0, 1854.0, 2023.0]) actual_vols = set(results.values()) - if len(actual_vols - expected_vols) > 0: - raise Exception( - "Expected volumes to be " - + str(expected_vols) - + ", but got " - + str(actual_vols) - ) + assert actual_vols == expected_vols num_output_files = len(glob.glob(dir_output + "/*")) if num_output_files != 12: raise Exception("Expected 12 output files, but got " + str(num_output_files)) From 54fb492d15fba2a908b38c8ed418da0738584121 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 08:18:02 -0500 Subject: [PATCH 12/20] refactor: reorganize --- povme/cli.py | 299 ---------- povme/config.py | 53 ++ povme/hull.py | 313 +++++++++- povme/io.py | 22 +- povme/logger.py | 4 +- povme/parallel.py | 158 +++++ povme/pocket.py | 39 +- povme/pocket_id.py | 336 ++++++----- povme/povme.py | 1334 ++----------------------------------------- povme/pymolecule.py | 1305 +++++++++++++++++++++--------------------- 10 files changed, 1402 insertions(+), 2461 deletions(-) delete mode 100644 povme/cli.py create mode 100644 povme/config.py create mode 100644 povme/parallel.py diff --git a/povme/cli.py b/povme/cli.py deleted file mode 100644 index e73471e..0000000 --- a/povme/cli.py +++ /dev/null @@ -1,299 +0,0 @@ -import argparse -import sys - -from . import __version__ -from .pocket_id import run_pocket_id -from .povme import RunPOVME - - -def parse_inclusion_regions(args): - inclusion_regions = [] - if args.points_inclusion_sphere: - for sphere in args.points_inclusion_sphere: - inclusion_regions.append( - f"PointsInclusionSphere {' '.join(map(str, sphere))}" - ) - if args.points_inclusion_box: - for box in args.points_inclusion_box: - inclusion_regions.append(f"PointsInclusionBox {' '.join(map(str, box))}") - return inclusion_regions - - -def parse_exclusion_regions(args): - exclusion_regions = [] - if args.points_exclusion_sphere: - for sphere in args.points_exclusion_sphere: - exclusion_regions.append( - f"PointsExclusionSphere {' '.join(map(str, sphere))}" - ) - if args.points_exclusion_box: - for box in args.points_exclusion_box: - exclusion_regions.append(f"PointsExclusionBox {' '.join(map(str, box))}") - return exclusion_regions - - -def povme_cli(): - parser = argparse.ArgumentParser( - description=f"POVME {__version__}", - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - ) - - subparsers = parser.add_subparsers( - title="subcommands", - description="Valid subcommands", - help="Additional help", - dest="command", - ) - subparsers.required = True - - # Subparser for run_povme - povme_parser = subparsers.add_parser( - "run_povme", help="Run the primary POVME analysis" - ) - - # Required arguments - povme_parser.add_argument( - "--pdb", - required=True, - help="Path to the receptor PDB file (can be a trajectory with multiple frames)", - ) - - # Inclusion regions - povme_parser.add_argument( - "--inclusion-sphere", - type=float, - nargs=4, - action="append", - metavar=("X", "Y", "Z", "RADIUS"), - help="Define an inclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times.", - ) - povme_parser.add_argument( - "--inclusion-box", - type=float, - nargs=6, - action="append", - metavar=("X", "Y", "Z", "DX", "DY", "DZ"), - help="Define an inclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times.", - ) - - # Exclusion regions - povme_parser.add_argument( - "--exclusion-sphere", - type=float, - nargs=4, - action="append", - metavar=("X", "Y", "Z", "RADIUS"), - help="Define an exclusion sphere with X Y Z coordinates and RADIUS. Can be used multiple times.", - ) - povme_parser.add_argument( - "--exclusion-box", - type=float, - nargs=6, - action="append", - metavar=("X", "Y", "Z", "DX", "DY", "DZ"), - help="Define an exclusion box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times.", - ) - - # Grid spacing - povme_parser.add_argument( - "--grid-spacing", - type=float, - default=1.0, - help="Distance separating each equidistant point (default: 1.0 Ã…)", - ) - - # Save points - povme_parser.add_argument( - "--save-points", - type=str, - choices=["true", "false"], - default="false", - help="Whether to save the generated point field (true/false)", - ) - - # Distance cutoff - povme_parser.add_argument( - "--distance-cutoff", - type=float, - default=1.09, - help="Distance cutoff for removing points near receptor atoms (default: 1.09 Ã…)", - ) - - # Convex hull exclusion - povme_parser.add_argument( - "--convex-hull-exclusion", - type=str, - choices=["true", "false"], - default="false", - help="Activate convex hull exclusion (true/false)", - ) - - # Contiguous points criteria - povme_parser.add_argument( - "--contiguous-points-criteria", - type=int, - default=3, - help="Minimum number of neighboring points to retain a point (default: 3)", - ) - - # Contiguous pocket seed - povme_parser.add_argument( - "--pocket-seed-sphere", - type=float, - nargs=4, - action="append", - metavar=("X", "Y", "Z", "RADIUS"), - help="Define a pocket seed sphere with X Y Z coordinates and RADIUS. Can be used multiple times.", - ) - povme_parser.add_argument( - "--pocket-seed-box", - type=float, - nargs=6, - action="append", - metavar=("X", "Y", "Z", "DX", "DY", "DZ"), - help="Define a pocket seed box with X Y Z coordinates and dimensions DX DY DZ. Can be used multiple times.", - ) - - # Additional POVME parameters - povme_parser.add_argument( - "--num-processors", - type=int, - default=1, - help="Number of processors to use (default: 1)", - ) - povme_parser.add_argument( - "--use-disk-not-memory", - type=str, - choices=["true", "false"], - default="false", - help="Use disk space instead of memory (true/false)", - ) - povme_parser.add_argument( - "--output-prefix", - type=str, - default="./POVME_output/", - help="Prefix for output files", - ) - povme_parser.add_argument( - "--save-individual-volumes", - type=str, - choices=["true", "false"], - default="false", - help="Save individual pocket volumes (true/false)", - ) - povme_parser.add_argument( - "--save-trajectory", - type=str, - choices=["true", "false"], - default="false", - help="Save pocket volumes as a trajectory (true/false)", - ) - povme_parser.add_argument( - "--equal-num-points", - type=str, - choices=["true", "false"], - default="false", - help="Ensure equal number of points per frame (true/false)", - ) - povme_parser.add_argument( - "--save-tabbed", - type=str, - choices=["true", "false"], - default="false", - help="Save volumes in tabbed format (true/false)", - ) - povme_parser.add_argument( - "--save-density-map", - type=str, - choices=["true", "false"], - default="false", - help="Save volumetric density map (true/false)", - ) - povme_parser.add_argument( - "--compress-output", - type=str, - choices=["true", "false"], - default="false", - help="Compress output files (true/false)", - ) - - # Subparser for pocket_id - pocket_id_parser = subparsers.add_parser( - "pocket_id", - help="Run Pocket ID to identify protein pockets and generate inclusion spheres", - ) - - # Pocket ID specific arguments - pocket_id_parser.add_argument( - "--input-pdb", required=True, help="Path to the input PDB file for Pocket ID" - ) - pocket_id_parser.add_argument( - "--output-prefix", - type=str, - default="./PocketID_output/", - help="Prefix for Pocket ID output files", - ) - # Add more Pocket ID specific arguments here as needed - - args = parser.parse_args() - - if args.command == "run_povme": - # Build the argument list for POVME - povme_args = ["RunPOVME"] - - povme_args.append(f"PDBFileName {args.pdb}") - - # Inclusion regions - inclusion_regions = parse_inclusion_regions(args) - povme_args.extend(inclusion_regions) - - # Exclusion regions - exclusion_regions = parse_exclusion_regions(args) - povme_args.extend(exclusion_regions) - - # Other parameters - povme_args.append(f"GridSpacing {args.grid_spacing}") - povme_args.append(f"SavePoints {args.save_points}") - povme_args.append(f"DistanceCutoff {args.distance_cutoff}") - povme_args.append(f"ConvexHullExclusion {args.convex_hull_exclusion}") - povme_args.append(f"ContiguousPointsCriteria {args.contiguous_points_criteria}") - - # Pocket seed regions - if args.pocket_seed_sphere: - for sphere in args.pocket_seed_sphere: - povme_args.append( - f"ContiguousPocketSeedSphere {' '.join(map(str, sphere))}" - ) - if args.pocket_seed_box: - for box in args.pocket_seed_box: - povme_args.append(f"ContiguousPocketSeedBox {' '.join(map(str, box))}") - - # Additional parameters - povme_args.append(f"NumProcessors {args.num_processors}") - povme_args.append(f"UseDiskNotMemory {args.use_disk_not_memory}") - povme_args.append(f"OutputFilenamePrefix {args.output_prefix}") - povme_args.append(f"SaveIndividualPocketVolumes {args.save_individual_volumes}") - povme_args.append(f"SavePocketVolumesTrajectory {args.save_trajectory}") - povme_args.append(f"OutputEqualNumPointsPerFrame {args.equal_num_points}") - povme_args.append(f"SaveTabbedVolumeFile {args.save_tabbed}") - povme_args.append(f"SaveVolumetricDensityMap {args.save_density_map}") - povme_args.append(f"CompressOutput {args.compress_output}") - - # Run POVME - RunPOVME(povme_args) - - elif args.command == "pocket_id": - # Build the argument list for Pocket ID - pocket_id_args = ["pocket_id"] - - pocket_id_args.append(f"PDBFileName {args.input_pdb}") - pocket_id_args.append(f"OutputFilenamePrefix {args.output_prefix}") - - # Add more Pocket ID specific arguments here - - # Run Pocket ID - run_pocket_id(pocket_id_args) - - else: - parser.print_help() - sys.exit(1) diff --git a/povme/config.py b/povme/config.py new file mode 100644 index 0000000..2dcd02b --- /dev/null +++ b/povme/config.py @@ -0,0 +1,53 @@ +from .io import openfile + + +class ConfigFile: + """A class for processing the user-provided configuration file.""" + + def __init__(self, filename: str) -> None: + """Generates a point field by filling the region with equally spaced + points. + + Args: + filename: A string, the filename of the configuration file. + + """ + self.entities = [] + + f = openfile(filename, "r") + lines = f.readlines() + f.close() + + for line in lines: + # remove comments + line = line.split("#", 1)[0] + # line = line.split("//",1)[0] # We can't have these kinds of comments any more because of Windows filenames. + + line = line.strip() + + if line != "": + + # replace ; and , and : with space + # line = line.replace(',',' ') + # line = line.replace(';',' ') + # line = line.replace(':',' ') # this messes up Windows filenames + line = line.replace("\t", " ") + + # now strip string + line = line.strip() + + # now, replace double spaces with one space + while " " in line: + line = line.replace(" ", " ") + + # Now split the thing + line = line.split(" ", 1) + + # now, make it upper case + line[0] = line[0].upper() + + # If there's QUIT, EXIT, or STOP, then don't continue. + if line[0] in [b"QUIT", b"EXIT", b"STOP"]: + break + + self.entities.append(line) diff --git a/povme/hull.py b/povme/hull.py index 8c61eb9..596363b 100644 --- a/povme/hull.py +++ b/povme/hull.py @@ -1,4 +1,31 @@ +import math +import time +from functools import reduce + import numpy as np +import numpy.typing as npt +from scipy.spatial.distance import cdist, pdist, squareform + +from . import pymolecule +from .io import gzopenfile, numpy_to_pdb, openfile, write_to_file +from .logger import log +from .parallel import MultithreadingTaskGeneral + + +def unique_rows(a): + """Identifies unique points (rows) in an array of points. + + Args: + a: A nx3 np.array representing 3D points. + + Returns: + A nx2 np.array containing the 3D points that are unique. + + """ + + a[a == -0.0] = 0.0 + b = np.ascontiguousarray(a).view(np.dtype((np.void, a.dtype.itemsize * a.shape[1]))) + return np.unique(b).view(a.dtype).reshape(-1, a.shape[1]) # unique_a class ConvexHull: @@ -13,7 +40,7 @@ class ConvexHull: exist in the dictionary yet. """ - def __init__(self, pts): + def __init__(self, pts: npt.NDArray[np.float64]) -> None: """Initializes the ConvexHull class.""" akl_toussaint_pts = self.akl_toussaint(pts) # quickly reduces input size @@ -46,17 +73,18 @@ def get_seg_dict_num( else: return 0 - def increment_seg_dict(self, seg_dict, seg_index): + def increment_seg_dict( + self, + seg_dict: dict[tuple[tuple[np.float64, ...], ...], int], + seg_index: tuple[tuple[np.float64, ...], ...], + ) -> None: """This function increments the values within seg_dict, or initiates them if they dont exist yet. Args: - seg_dict: the dictionary of segment 2x3 tuples as keys, integers as - values. - seg_index: the key of the dictionary member we are going to - increment. + seg_dict: the dictionary of segment 2x3 tuples as keys, integers as values. + seg_index: the key of the dictionary member we are going to increment. """ - # we want the index with the greater x-value, so we don't get # identical segments in the dictionary more than once if seg_index[0][0] > seg_index[1][0]: @@ -71,9 +99,10 @@ def increment_seg_dict(self, seg_dict, seg_index): else: # initiate with a value of 1 because it now exists on a triangle seg_dict[index] = 1 - return - def gift_wrapping_3d(self, raw_points): + def gift_wrapping_3d( + self, raw_points: npt.NDArray[np.float64] + ) -> list[npt.NDArray[np.float64]]: """Gift wrapping for 3d convex hull. Args: @@ -230,7 +259,7 @@ def gift_wrapping_3d(self, raw_points): # print "section3:", section3 return triangles - def akl_toussaint(self, points): + def akl_toussaint(self, points: npt.NDArray[np.float64]) -> npt.NDArray[np.float64]: """The Akl-Toussaint Heuristic. Given a set of points, this definition will create an octahedron whose corners @@ -289,12 +318,17 @@ def akl_toussaint(self, points): return np.array(new_points) # convert back to an array - def outside_hull(self, our_point, triangles, epsilon=1.0e-5): + def outside_hull( + self, + point: list[float], + triangles: list[npt.NDArray[np.float64]], + epsilon: float = 1.0e-5, + ) -> bool: """Given the hull as defined by a list of triangles, this definition will return whether a point is within these or not. Args: - our_point: an x,y,z array that is being tested to see whether it + point: an x,y,z array that is being tested to see whether it exists inside the hull or not. triangles: a list of triangles that define the hull. epsilon: needed for imprecisions in the floating-point operations. @@ -304,7 +338,7 @@ def outside_hull(self, our_point, triangles, epsilon=1.0e-5): """ - our_point = np.array(our_point) # convert it to an np.array + our_point = np.array(point) # convert it to an np.array for triangle in triangles: # vector from triangle corner 0 to point rel_point = our_point - triangle[0] @@ -335,3 +369,256 @@ def inside_hull(self, our_point): """ return not self.outside_hull(our_point, self.hull) + + +class MultithreadingCalcVolumeTask(MultithreadingTaskGeneral): + """A class for calculating the volume.""" + + def value_func(self, item, results_queue): + """Calculate the volume. + + Args: + item: A list or tuple, the input data required for the calculation. + results_queue: A multiprocessing.Queue() object for storing the + calculation output. + + """ + + frame_indx = item[0] + pdb = item[1] + parameters = item[2] + # pts = parameters['pts_orig'].copy() # this works + pts = parameters["pts_orig"] # also works, so keep because faster + + # if the user wants to save empty points (points that are removed), + # then we need a copy of the original + if parameters["OutputEqualNumPointsPerFrame"]: + pts_deleted = pts.copy() + + # you may need to load it from disk if the user so specified + if parameters["UseDiskNotMemory"]: # so you need to load it from disk + pym_filename = pdb + pdb = pymolecule.Molecule() + pdb.fileio.load_pym_into(pym_filename) + + # remove the points that are far from the points region anyway + min_pts = np.min(pts, 0) - parameters["DistanceCutoff"] - 1 + max_pts = np.max(pts, 0) + parameters["DistanceCutoff"] + 1 + + # identify atoms that are so far away from points that they can be + # ignored. First, x's too small. + index_to_keep1 = np.nonzero((pdb.information.coordinates[:, 0] > min_pts[0]))[0] + + # x's too large + index_to_keep2 = np.nonzero((pdb.information.coordinates[:, 0] < max_pts[0]))[0] + + # y's too small + index_to_keep3 = np.nonzero((pdb.information.coordinates[:, 1] > min_pts[1]))[0] + + # y's too large + index_to_keep4 = np.nonzero((pdb.information.coordinates[:, 1] < max_pts[1]))[0] + + # z's too small + index_to_keep5 = np.nonzero((pdb.information.coordinates[:, 2] > min_pts[2]))[0] + + # z's too large + index_to_keep6 = np.nonzero((pdb.information.coordinates[:, 2] < max_pts[2]))[0] + + index_to_keep = np.intersect1d( + index_to_keep1, index_to_keep2, assume_unique=True + ) + index_to_keep = np.intersect1d( + index_to_keep, index_to_keep3, assume_unique=True + ) + index_to_keep = np.intersect1d( + index_to_keep, index_to_keep4, assume_unique=True + ) + index_to_keep = np.intersect1d( + index_to_keep, index_to_keep5, assume_unique=True + ) + index_to_keep = np.intersect1d( + index_to_keep, index_to_keep6, assume_unique=True + ) + + # keep only relevant atoms + if len(index_to_keep) > 0: + pdb = pdb.selections.create_molecule_from_selection(index_to_keep) + + # get the vdw radii of each protein atom + vdw = np.ones(len(pdb.information.coordinates)) # so the default vdw is 1.0 + + # get vdw... you might want to fill this out with additional vdw + # values + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"H")[0] + ] = 1.2 + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"C")[0] + ] = 1.7 + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"N")[0] + ] = 1.55 + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"O")[0] + ] = 1.52 + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"F")[0] + ] = 1.47 + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"P")[0] + ] = 1.8 + vdw[ + np.nonzero(pdb.information.atom_information["element_stripped"] == b"S")[0] + ] = 1.8 + vdw = np.repeat(np.array([vdw]).T, len(pts), axis=1) + + # now identify the points that are close to the protein atoms + dists = cdist(pdb.information.coordinates, pts) + close_pt_index = np.nonzero((dists < (vdw + parameters["DistanceCutoff"])))[1] + + # now keep the appropriate points + pts = np.delete(pts, close_pt_index, axis=0) + + # exclude points outside convex hull + if parameters["ConvexHullExclusion"]: + convex_hull_3d = ConvexHull(pts) + + # get the coordinates of the non-hydrogen atoms (faster to discard + # hydrogens) + hydros = pdb.selections.select_atoms({"element_stripped": [b"H"]}) + not_hydros = pdb.selections.invert_selection(hydros) + not_hydros_coors = pdb.information.coordinates[not_hydros] + + # not_hydros = pdb.selections.select_atoms({'name_stripped':['CA']}) + # not_hydros_coors = pdb.information.coordinates[not_hydros] + + # modify pts here. + # note that the atoms of the pdb frame are in pdb.information.coordinates + # begintime = time.time() # measure execution time + akl_toussaint_pts = convex_hull_3d.akl_toussaint( + not_hydros_coors + ) # quickly reduces input size + # print "akl Toussaint:", time.time() - begintime + begintime = time.time() # measure execution time + # calculate convex hull using gift wrapping algorithm + hull = convex_hull_3d.gift_wrapping_3d(akl_toussaint_pts) + # print "gift_wrapping:", time.time() - begintime + + # we will need to regenerate the pts list, disregarding those + # outside the hull + old_pts = pts + pts = [] + for pt in old_pts: + pt_outside = convex_hull_3d.outside_hull( + pt, hull + ) # check if pt is outside hull + if not pt_outside: + # if its not outside the hull, then include it in the + # volume measurement + pts.append(pt) + pts = np.array(pts) + + # Now, enforce contiguity if needed + if len(parameters["ContiguousPocketSeedRegions"]) > 0 and len(pts) > 0: + # first, for each point, determine how many neighbors it has to + # count kiddy-corner points too + cutoff_dist = parameters["GridSpacing"] * 1.01 * math.sqrt(3) + pts_dists = squareform(pdist(pts)) + # minus 1 because an atom shouldn't be considered its own neighor + neighbor_counts = np.sum(pts_dists < cutoff_dist, axis=0) - 1 + + # remove all the points that don't have enough neighbors + pts = pts[ + np.nonzero(neighbor_counts >= parameters["ContiguousPointsCriteria"])[0] + ] + + # get all the points in the defined parameters['ContiguousPocket'] + # seed regions + contig_pts = parameters["ContiguousPocketSeedRegions"][0].points_set( + parameters["GridSpacing"] + ) + for Contig in parameters["ContiguousPocketSeedRegions"][1:]: + contig_pts = np.vstack( + (contig_pts, Contig.points_set(parameters["GridSpacing"])) + ) + contig_pts = unique_rows(contig_pts) + + try: # error here if there are no points of contiguous seed region outside of protein volume. + # now just get the ones that are not near the protein + contig_pts = pts[np.nonzero(cdist(contig_pts, pts) < 1e-7)[1]] + + last_size_of_contig_pts = 0 + while last_size_of_contig_pts != len(contig_pts): + last_size_of_contig_pts = len(contig_pts) + + # now get the indices of all points that are close to the + # contig_pts + all_pts_close_to_contig_pts_boolean = ( + cdist(pts, contig_pts) < cutoff_dist + ) + index_all_pts_close_to_contig_pts = np.unique( + np.nonzero(all_pts_close_to_contig_pts_boolean)[0] + ) + contig_pts = pts[index_all_pts_close_to_contig_pts] + + pts = contig_pts + except: + log( + "\tFrame " + + str(frame_indx) + + ": None of the points in the contiguous-pocket seed region\n\t\tare outside the volume of the protein! Assuming a pocket\n\t\tvolume of 0.0 A.", + parameters, + ) + pts = np.array([]) + + # now write the pdb and calculate the volume + volume = len(pts) * math.pow(parameters["GridSpacing"], 3) + + log("\tFrame " + str(frame_indx) + ": " + repr(volume) + " A^3", parameters) + if parameters["SaveIndividualPocketVolumes"]: + frame_text = f"REMARK Frame {str(frame_indx)}" + "\n" + frame_text += f"REMARK Volume = {repr(volume)}" + " Cubic Angstroms\n" + frame_text += numpy_to_pdb(pts, "X") + + if parameters["OutputEqualNumPointsPerFrame"]: + # you need to find the points that are in pts_deleted but not + # in pts + tmp = reduce( + lambda x, y: x | np.all(pts_deleted == y, axis=-1), + pts, + np.zeros(pts_deleted.shape[:1], dtype=np.bool), + ) + indices = np.where(tmp)[0] + pts_deleted = np.delete(pts_deleted, indices, axis=0) + + # So extra points will always be at the origin. These can be + # easily hidden with your visualization software. + pts_deleted = np.zeros(pts_deleted.shape) + frame_text = frame_text + numpy_to_pdb(pts_deleted, "X", "XXX") + + frame_text = frame_text + "END\n" + + if parameters["CompressOutput"]: + fl = gzopenfile( + parameters["OutputFilenamePrefix"] + + "frame_" + + str(frame_indx) + + ".pdb.gz", + "wb", + ) + else: + fl = openfile( + parameters["OutputFilenamePrefix"] + + "frame_" + + str(frame_indx) + + ".pdb", + "w", + ) + write_to_file(fl, frame_text, encode=parameters["CompressOutput"]) + fl.close() + + extra_data_to_add = {} + if parameters["SaveVolumetricDensityMap"]: + extra_data_to_add["SaveVolumetricDensityMap"] = pts + + self.results.append((frame_indx, volume, extra_data_to_add)) diff --git a/povme/io.py b/povme/io.py index e99a3bf..63652c3 100644 --- a/povme/io.py +++ b/povme/io.py @@ -1,8 +1,11 @@ +from typing import Any + import gzip import platform from pathlib import Path, PureWindowsPath import numpy as np +import numpy.typing as npt def fix_filename(path: str, must_exist: bool = True) -> Path: @@ -132,7 +135,7 @@ def __create_pdb_line(self, numpy_array, index, resname, letter): """Create a string formatted according to the PDB standard. Args: - numpy_array: A 1x3 numpy.array representing a 3D point. + numpy_array: A 1x3 np.array representing a 3D point. index: An integer, the atom index to use in the string. resname: A string, the RESNAME to use. letter: A string, the atom name/chain/etc to use for the output. @@ -166,10 +169,10 @@ def __create_pdb_line(self, numpy_array, index, resname, letter): def numpy_to_pdb(self, narray, letter, resname=""): """Create a string formatted according to the PDB standard. - Arguments: - narray -- A nx3 numpy.array representing a 3D point. - letter -- A string, the atom name/chain/etc to use for the output. - resname -- An optional string, the RESNAME to use for the output. + Args: + narray: A nx3 np.array representing a 3D point. + letter: A string, the atom name/chain/etc to use for the output. + resname: An optional string, the RESNAME to use for the output. Returns: A string, formatted according to the PDB standard. @@ -292,14 +295,14 @@ def numpy_to_pdb(narray, letter, resname=""): return t -def dx_freq(freq_mat, parameters): +def dx_freq(freq_mat: npt.NDArray[np.float64], parameters: dict[str, Any]) -> None: """Generates a DX file that records the frequency that a volume element is open. Args: - freq_mat: a Nx4 matrix, where the first 3 columns are the x,y,z coords - of the point, and the 4th column is the frequency of emptiness for that - point in space + freq_mat: a Nx4 matrix, where the first 3 columns are the x,y,z coords + of the point, and the 4th column is the frequency of emptiness for that + point in space """ @@ -405,4 +408,3 @@ def dx_freq(freq_mat, parameters): newline_counter += 1 write_to_file(dx_file, footer, encode=parameters["CompressOutput"]) dx_file.close - return diff --git a/povme/logger.py b/povme/logger.py index 69a8f08..57a6695 100644 --- a/povme/logger.py +++ b/povme/logger.py @@ -1,7 +1,9 @@ +from typing import Any + from .io import gzopenfile, write_to_file -def log(astr, parameters): +def log(astr: str, parameters: dict[str, Any]) -> None: """Output POVME statements, either to the screen or to a file. Args: diff --git a/povme/parallel.py b/povme/parallel.py new file mode 100644 index 0000000..e0d4c9e --- /dev/null +++ b/povme/parallel.py @@ -0,0 +1,158 @@ +from typing import Any + +import multiprocessing +import platform + + +class MultiThreading: + """A class for running calculations on multiple processors.""" + + results: list[Any] = [] + + def __init__(self, inputs, num_processors, task_class): + """Launches a calculation on multiple processors. + + Args: + inputs: A list, containing all the input required for the + calculation. + num_processors: An integer, the requested number of processors to + use. + task_class: An class, the class governing what calculations will be + run on a given thread. + + Returns: + Nothing, though the objects self.results list is populated with the + calculation results + + """ + + self.results = [] + + # If it's windows, you can only use one processor. + if num_processors != 1 and ( + platform.system().upper()[:3] == "WIN" or "NT" in platform.system().upper() + ): + print( + "WARNING: Use of multiple processors is not supported in Windows. Proceeding with one processor..." + ) + num_processors = 1 + + if num_processors == 1: # so just running on 1 processor, perhaps under windows + single_thread = task_class() + single_thread.total_num_tasks = len(inputs) + + single_thread.results = [] + for item in inputs: + single_thread.value_func(item, None) + + self.results = single_thread.results + + else: # so it actually is running on multiple processors + + cpu_count = 1 + cpu_count = multiprocessing.cpu_count() + + # first, if num_processors <= 0, determine the number of + # processors to use programatically + if num_processors <= 0: + num_processors = cpu_count + + # reduce the number of processors if too many have been specified + if len(inputs) < num_processors: + num_processors = len(inputs) + + # if there are no inputs, there's nothing to do. + if len(inputs) == 0: + self.results = [] + return + + # now, divide the inputs into the appropriate number of processors + inputs_divided = {t: [] for t in range(num_processors)} + for t in range(0, len(inputs), num_processors): + for t2 in range(num_processors): + index = t + t2 + if index < len(inputs): + inputs_divided[t2].append(inputs[index]) + + # now, run each division on its own processor + running = multiprocessing.Value("i", num_processors) + mutex = multiprocessing.Lock() + + arrays = [] + threads = [] + for _ in range(num_processors): + athread = task_class() + athread.total_num_tasks = len(inputs) + + threads.append(athread) + arrays.append(multiprocessing.Array("i", [0, 1])) + + results_queue = multiprocessing.Queue() # to keep track of the results + + processes = [] + for i in range(num_processors): + p = multiprocessing.Process( + target=threads[i].runit, + args=(running, mutex, results_queue, inputs_divided[i]), + ) + p.start() + processes.append(p) + + is_running = 0 # wait for everything to finish + + while running.value > 0: + pass + # compile all results into one list + for _ in threads: + chunk = results_queue.get() + self.results.extend(chunk) + + +class MultithreadingTaskGeneral: + """A parent class of others that governs what calculations are run on each + thread""" + + results: list[Any] = [] + + def runit(self, running, mutex, results_queue, items): + """Launches the calculations on this thread + + Args: + running: A multiprocessing.Value object. + mutex: A multiprocessing.Lock object. + results_queue: A multiprocessing.Queue() object for storing the + calculation output. + items: A list, the input data required for the calculation. + + """ + + for item in items: + self.value_func(item, results_queue) + + mutex.acquire() + running.value -= 1 + mutex.release() + results_queue.put(self.results) + + def value_func(self, item, results_queue): # so overwriting this function + """The definition that actually does the work. + + Args: + item: A list or tuple, the input data required for the calculation. + results_queue: A multiprocessing.Queue() object for storing the + calculation output. + + """ + + # input1 = item[0] + # input2 = item[1] + # input3 = item[2] + # input4 = item[3] + # input5 = item[4] + # input6 = item[5] + + # use inputs to come up with a result, some_result + + # self.results.append(some_result) + + pass diff --git a/povme/pocket.py b/povme/pocket.py index 2c7dd0e..73ead8b 100644 --- a/povme/pocket.py +++ b/povme/pocket.py @@ -1,5 +1,6 @@ from typing import Any +import np.typing as npt import numpy as np from scipy import spatial @@ -12,7 +13,7 @@ class BoxOfPoints: """A class representing a box of equidistant points.""" - def __init__(self, box, reso): + def __init__(self, box: npt.NDArray[np.float64], reso: int) -> None: """Initialize the class. Args: @@ -20,7 +21,6 @@ def __init__(self, box, reso): min_z) and (max_x, max_y, max_z), that define a box. reso: The space between the points of the box, in the X, Y, and Z direction. - """ self.write_pdbs = write_pdbs() @@ -35,7 +35,9 @@ def __init__(self, box, reso): x, y, z = np.mgrid[min_x:max_x:reso, min_y:max_y:reso, min_z:max_z:reso] self.points = np.array(list(zip(x.ravel(), y.ravel(), z.ravel()))) - def __snap_float(self, val, reso): + def __snap_float( + self, val: npt.NDArray[np.float64], reso: int + ) -> npt.NDArray[np.float64]: """Snaps an arbitrary point to the nearest grid point. Args: @@ -46,7 +48,6 @@ def __snap_float(self, val, reso): Returns: A numpy array corresponding to a 3D point near val that is on a nearby grid point. - """ return np.floor(val / reso) * reso @@ -56,9 +57,7 @@ def remove_points_outside_convex_hull(self, hull): Args: hull: The convex hull. - """ - chunks = [(hull, t) for t in np.array_split(self.points, params["processors"])] tmp = MultiThreading(chunks, params["processors"], self.__MultiIdHullPts) self.points = np.vstack(tmp.results) @@ -74,7 +73,7 @@ def value_func(self, items, results_queue): # so overwriting this function hull = items[0] some_points = items[1] - # Note this would be much faster if it were matrix-based intead of + # Note this would be much faster if it were matrix-based instead of # point-by-point based. Can preallocate numpy array size because I # don't know beforehand how many points will be in the hull new_pts = [] @@ -87,7 +86,9 @@ def value_func(self, items, results_queue): # so overwriting this function else: self.results.append(np.array(new_pts)) - def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): + def remove_all_points_close_to_other_points( + self, other_points: npt.NDArray[np.float64], dist_cutoff: float + ) -> None: """Removes all points in this box that come within the points specified in a numpy array @@ -105,10 +106,10 @@ def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): for t in np.array_split(other_points, params["processors"]) ] tmp = MultiThreading(chunks, params["processors"], self.__MultiGetClosePoints) - indicies_of_box_pts_close_to_molecule_points = np.unique(np.hstack(tmp.results)) + indices_of_box_pts_close_to_molecule_points = np.unique(np.hstack(tmp.results)) self.points = np.delete( - self.points, indicies_of_box_pts_close_to_molecule_points, axis=0 + self.points, indices_of_box_pts_close_to_molecule_points, axis=0 ) # remove the ones that are too close to molecule atoms class __MultiGetClosePoints(GeneralTask): @@ -127,11 +128,11 @@ def value_func(self, items, results_queue): # so overwriting this function sparce_distance_matrix = other_points_distance_tree.sparse_distance_matrix( box_of_pts_distance_tree, dist_cutoff ) - indicies_of_box_pts_close_to_molecule_points = np.unique( + indices_of_box_pts_close_to_molecule_points = np.unique( sparce_distance_matrix.tocsr().indices ) - self.results.append(indicies_of_box_pts_close_to_molecule_points) + self.results.append(indices_of_box_pts_close_to_molecule_points) def to_pdb(self, let="X"): """Converts the points in this box into a PDB representation. @@ -240,7 +241,7 @@ def __keep_limited_points(self, pt_indices): self.dist_matrix = self.dist_matrix[pt_indices, :][0] # self.dist_matrix = self.dist_matrix.T # not necessary because it's a symetrical matrix - def separate_out_pockets(self): + def separate_out_pockets(self) -> list[npt.NDArray[np.float64]]: """Separate the points according to the pocket they belong to. Determined by looking at patches of contiguous points. @@ -254,7 +255,7 @@ def separate_out_pockets(self): # self.points is an array of 3D points - # self.dist_matrix is a distance matrixs. self.dist_matrix[i,j] is + # self.dist_matrix is a distance matrix. self.dist_matrix[i,j] is # distance between points i and j. But it only contains distances if # the points are close (neighbors). Otherwise, 0. @@ -269,25 +270,25 @@ def separate_out_pockets(self): num_pts_in_pocket = len(pocket_indexes) # Get all the adjacent points - indecies_of_neighbors = np.nonzero(self.dist_matrix[pocket_indexes, :])[ + indices_of_neighbors = np.nonzero(self.dist_matrix[pocket_indexes, :])[ 1 ] # Get one of them. Not sure why this was previously in the code... - # if len(indecies_of_neighbors) > 0: + # if len(indices_of_neighbors) > 0: # In case a point has no neighbors, you need this conditional. - # one_index_of_neighbor = np.array(indecies_of_neighbors)[0] + # one_index_of_neighbor = np.array(indices_of_neighbors)[0] # Add that one index to the growing list. pocket_indexes = np.hstack( ( pocket_indexes, - indecies_of_neighbors, + indices_of_neighbors, # one_index_of_neighbor # Not sure why it used to be this. ) ) - # Make sure only unique indecies ones are retained. + # Make sure only unique indices ones are retained. pocket_indexes = np.unique(pocket_indexes) # Save these points (in the pocket) to a list of pockets. diff --git a/povme/pocket_id.py b/povme/pocket_id.py index 36584fc..1f5cefd 100644 --- a/povme/pocket_id.py +++ b/povme/pocket_id.py @@ -1,16 +1,10 @@ -# POVME Pocket ID 1.0 is released under the GNU General Public License (see -# http://www.gnu.org/licenses/gpl.html). - -# If you have any questions, comments, or suggestions, please don't hesitate -# to contact me, Jacob Durrant, at durrantj [at] pitt [dot] edu. - import getopt import multiprocessing import sys import textwrap import warnings -import numpy +import numpy as np from numpy.lib.recfunctions import append_fields from scipy import spatial from scipy.cluster.vq import kmeans2 @@ -23,7 +17,7 @@ # modified as required, can then be used as POVME input. # Supress errors -numpy.seterr(all="ignore") +np.seterr(all="ignore") warnings.simplefilter("ignore") # no "One of the clusters is empty." warnings # Some classes are required to support the loading and manipulation of 3D @@ -37,8 +31,8 @@ class Information: def __init__(self, parent_molecule_object): """Initializes the Information class. - Arguments: - parent_molecule_object -- The Molecule object associated with this + Args: + parent_molecule_object: The Molecule object associated with this class. """ @@ -70,11 +64,11 @@ def set_coordinates(self, coordinates): def get_bounding_box(self, selection=None, padding=0.0): """Calculates a box that bounds (encompasses) a set of atoms. - Arguments: - selection -- An optional numpy.array containing the indices of the + Args: + selection: An optional np.array containing the indices of the atoms to consider. If ommitted, all atoms of the Molecule object will be considered. - padding -- An optional float. The bounding box will extend this + padding: An optional float. The bounding box will extend this many angstroms beyond the atoms being considered. Returns: @@ -86,10 +80,10 @@ def get_bounding_box(self, selection=None, padding=0.0): if selection is None: selection = self.__parent_molecule.select_all() - return numpy.vstack( + return np.vstack( ( - numpy.min(self.__coordinates[selection], 0), - numpy.max(self.__coordinates[selection], 0), + np.min(self.__coordinates[selection], 0), + np.max(self.__coordinates[selection], 0), ) ) @@ -100,8 +94,8 @@ class FileIO: def __init__(self, parent_molecule_object): """Initializes the FileIO class. - Arguments: - parent_molecule_object -- The Molecule object associated with this + Args: + parent_molecule_object: The Molecule object associated with this class. """ @@ -112,8 +106,8 @@ def load_pdb_into(self, filename): """Loads the molecular data contained in a pdb file into the current Molecule object. - Arguments: - filename -- A string, the filename of the pdb file. + Args: + filename: A string, the filename of the pdb file. """ @@ -128,13 +122,13 @@ def load_pdb_into_using_file_object(self, file_obj): load_pdb_into() function instead, which is identical except that it accepts a filename string instead of a python file object. - Arguments: - file_obj -- A python file object, containing pdb-formatted data. + Args: + file_obj: A python file object, containing pdb-formatted data. """ - # source_data = numpy.genfromtxt(file_obj, dtype="S6,S5,S5,S4,S2,S4,S4,S8,S8,S8,S6,S6,S10,S2,S2", names=['record_name', 'serial', 'name', 'resname', 'chainid', 'resseq', 'empty', 'x', 'y', 'z', 'occupancy', 'tempfactor', 'empty2', 'element', 'charge'], delimiter=[6, 5, 5, 4, 2, 4, 4, 8, 8, 8, 6, 6, 10, 2, 2]) - source_data = numpy.genfromtxt( + # source_data = np.genfromtxt(file_obj, dtype="S6,S5,S5,S4,S2,S4,S4,S8,S8,S8,S6,S6,S10,S2,S2", names=['record_name', 'serial', 'name', 'resname', 'chainid', 'resseq', 'empty', 'x', 'y', 'z', 'occupancy', 'tempfactor', 'empty2', 'element', 'charge'], delimiter=[6, 5, 5, 4, 2, 4, 4, 8, 8, 8, 6, 6, 10, 2, 2]) + source_data = np.genfromtxt( file_obj, dtype="S6,S5,S5,S5,S1,S4,S4,S8,S8,S8,S6,S6,S10,S2,S3", names=[ @@ -163,11 +157,11 @@ def load_pdb_into_using_file_object(self, file_obj): ) # in case the pdb file has only one line # get the ones that are ATOM or HETATOM in the record_name - or_matrix = numpy.logical_or( + or_matrix = np.logical_or( (source_data["record_name"] == b"ATOM "), (source_data["record_name"] == b"HETATM"), ) - indices_of_atom_or_hetatom = numpy.nonzero(or_matrix)[0] + indices_of_atom_or_hetatom = np.nonzero(or_matrix)[0] self.__parent_molecule.set_atom_information( source_data[indices_of_atom_or_hetatom] ) @@ -179,8 +173,8 @@ def load_pdb_into_using_file_object(self, file_obj): + self.__parent_molecule.get_constants()["f8_fields"] ): check_fields = self.__parent_molecule.get_atom_information()[field] - check_fields = numpy.char.strip(check_fields) - indices_of_empty = numpy.nonzero(check_fields == "")[0] + check_fields = np.char.strip(check_fields) + indices_of_empty = np.nonzero(check_fields == "")[0] self.__parent_molecule.get_atom_information()[field][indices_of_empty] = "0" # now actually change the type @@ -196,7 +190,7 @@ def load_pdb_into_using_file_object(self, file_obj): field ) descr[index] = (descr[index][0], "f8") - new_types = numpy.dtype(descr) + new_types = np.dtype(descr) self.__parent_molecule.set_atom_information( self.__parent_molecule.get_atom_information().astype(new_types) ) @@ -211,7 +205,7 @@ def load_pdb_into_using_file_object(self, file_obj): # the coordinates need to be placed in their own special numpy array # to facilitate later manipulation self.__parent_molecule.set_coordinates( - numpy.vstack( + np.vstack( [ self.__parent_molecule.get_atom_information()["x"], self.__parent_molecule.get_atom_information()["y"], @@ -234,7 +228,7 @@ def load_pdb_into_using_file_object(self, file_obj): append_fields( self.__parent_molecule.get_atom_information(), f + "_stripped", - data=numpy.char.strip( + data=np.char.strip( self.__parent_molecule.get_atom_information()[f] ), ) @@ -248,8 +242,8 @@ class Selections: def __init__(self, parent_molecule_object): """Initializes the Selections class. - Arguments: - parent_molecule_object -- The Molecule object associated with this + Args: + parent_molecule_object: The Molecule object associated with this class. """ @@ -259,8 +253,8 @@ def __init__(self, parent_molecule_object): def select_atoms(self, selection_criteria): """Select a set of atoms based on user-specified criteria. - Arguments: - selection_criteria -- An dictionary, where the keys correspond to + Args: + selection_criteria: An dictionary, where the keys correspond to keys in the self.__parent_molecule.information.get_atom_information() structured numpy array, and the values are lists of acceptable @@ -271,12 +265,12 @@ def select_atoms(self, selection_criteria): in the PRO residues of chain A. Returns: - A numpy.array containing the indices of the atoms of the selection. + A np.array containing the indices of the atoms of the selection. """ try: - selection = numpy.ones( + selection = np.ones( len(self.__parent_molecule.get_atom_information()), dtype=bool ) # start assuming everything is selected @@ -297,20 +291,20 @@ def select_atoms(self, selection_criteria): vals = [v.strip() for v in vals] # "or" all the vals together - subselection = numpy.zeros( + subselection = np.zeros( len(self.__parent_molecule.get_atom_information()), dtype=bool ) # start assuming nothing is selected for val in vals: - subselection = numpy.logical_or( + subselection = np.logical_or( subselection, (self.__parent_molecule.get_atom_information()[key] == val), ) # now "and" that with everything else - selection = numpy.logical_and(selection, subselection) + selection = np.logical_and(selection, subselection) # now get the indices of the selection - return numpy.nonzero(selection)[0] + return np.nonzero(selection)[0] except: print("ERROR: Could not make the selection. Existing fields:") print( @@ -323,28 +317,28 @@ def invert_selection(self, selection): """Inverts a user-defined selection (i.e., identifies all atoms that are not in the seleciton). - Arguments: - selection -- A numpy.array containing the indices of the + Args: + selection: A np.array containing the indices of the user-defined selection. Returns: - A numpy.array containing the indices of all atoms that are not in + A np.array containing the indices of all atoms that are not in the user-defined seleciton. """ # selection is a list of atom indices - all_atoms = numpy.arange( + all_atoms = np.arange( 0, len(self.__parent_molecule.get_atom_information()), 1, dtype=int ) - remaining_indicies = numpy.delete(all_atoms, selection) - return remaining_indicies + remaining_indices = np.delete(all_atoms, selection) + return remaining_indices def select_all(self): """Selects all the atoms in a Molecule object. Returns: - A numpy.array containing the indices of all atoms in the Molecule + A np.array containing the indices of all atoms in the Molecule object. """ @@ -355,7 +349,7 @@ def get_molecule_from_selection(self, selection): """Creates a Molecule from a user-defined atom selection. Arguments - selection -- A numpy.array containing the indices of the atoms in + selection: A np.array containing the indices of the atoms in the user-defined selection. Returns: @@ -433,9 +427,9 @@ def numpy_structured_array_remove_field( ): # surprised this doesn't come with numpy """Removes a specific field name from a structured numpy array. - Arguments: - narray -- A structured numpy array. - field_names -- A list of strings, where each string is one of the + Args: + narray: A structured numpy array. + field_names: A list of strings, where each string is one of the field names of narray. Returns: @@ -469,8 +463,8 @@ def __init__(self, pts): def inside_hull(self, our_point): """Determines if a point is inside the hull - Arguments: - our_point -- An x,y,z array + Args: + our_point: An x,y,z array Returns: A boolean, True if the point is inside the hull, False otherwise. @@ -485,16 +479,16 @@ def outside_hull( """Given the hull as defined by a list of triangles, this definition will return whether a point is within these or not. - Arguments: - our_point -- an x,y,z array - epsilon -- needed for imprecisions in the floating-point operations. + Args: + our_point: an x,y,z array + epsilon: needed for imprecisions in the floating-point operations. Returns: True if our_point exists outside of the hull, False otherwise. """ - our_point = numpy.array(our_point) # convert it to an numpy.array + our_point = np.array(our_point) # convert it to an np.array for triangle in triangles: # vector from triangle corner 0 to point rel_point = our_point - triangle[0] @@ -502,11 +496,11 @@ def outside_hull( vec1 = triangle[1] - triangle[0] # vector from triangle corner 1 to corner 2 vec2 = triangle[2] - triangle[1] - our_cross = numpy.cross(vec1, vec2) # cross product between vec1 and vec2 + our_cross = np.cross(vec1, vec2) # cross product between vec1 and vec2 # dot product to determine whether cross is point inward or outward - our_dot = numpy.dot(rel_point, our_cross) + our_dot = np.dot(rel_point, our_cross) # if the dot is greater than 0, then its outside - if numpy.dot(rel_point, our_cross) > epsilon: + if np.dot(rel_point, our_cross) > epsilon: return True return False @@ -520,10 +514,10 @@ def get_seg_dict_num(self, seg_dict, seg_index): dictionary yet). This function looks up and returns the value of a seg_index from seg_dict. - Arguments: - seg_dict -- the dictionary of segment 2x3 tuples as keys, integers + Args: + seg_dict: the dictionary of segment 2x3 tuples as keys, integers as values. - seg_index -- the key of the dictionary member we are going to + seg_index: the key of the dictionary member we are going to retrieve. Returns: @@ -553,10 +547,10 @@ def increment_seg_dict(self, seg_dict, seg_index): dictionary yet). This function increments the values within seg_dict, or initiates them if they dont exist yet. - Arguments: - seg_dict -- the dictionary of segment 2x3 tuples as keys, integers + Args: + seg_dict: the dictionary of segment 2x3 tuples as keys, integers as values. - seg_index -- the key of the dictionary member we are going to + seg_index: the key of the dictionary member we are going to increment. """ @@ -580,8 +574,8 @@ def increment_seg_dict(self, seg_dict, seg_index): def gift_wrapping_3d(self, raw_points): """Gift wrapping for 3d convex hull. - Arguments: - raw_points -- A nx3 array of points, where each row corresponds to + Args: + raw_points: A nx3 array of points, where each row corresponds to an x,y,z point coordinate. Returns: @@ -593,9 +587,9 @@ def gift_wrapping_3d(self, raw_points): """ - n = numpy.shape(raw_points)[0] # number of points + n = np.shape(raw_points)[0] # number of points point1 = raw_points[0] # take the first point - xaxis = numpy.array([1, 0, 0]) # create a ref vector pointing along x axis + xaxis = np.array([1, 0, 0]) # create a ref vector pointing along x axis maxx = raw_points[0][0] # initiate highest x value points = [] # a list of tuples for easy dictionary lookup seg_dict = {} # a dictionary that contains the number of triangles a seg is in @@ -608,17 +602,17 @@ def gift_wrapping_3d(self, raw_points): point1 = raw_points[i] best_dot = -1.0 # initiate dot relative to x-axis - point2 = numpy.array(raw_points[1]) # initiate best segment + point2 = np.array(raw_points[1]) # initiate best segment # find first/best segment for i in range(n): pointi = raw_points[i] - if numpy.array_equal(pointi, point1): + if np.array_equal(pointi, point1): continue diff_vec = pointi - point1 - diff_len = numpy.linalg.norm(diff_vec) + diff_len = np.linalg.norm(diff_vec) - test_dot = numpy.dot(diff_vec / diff_len, xaxis) + test_dot = np.dot(diff_vec / diff_len, xaxis) if test_dot > best_dot: best_dot = test_dot point2 = pointi @@ -647,8 +641,8 @@ def gift_wrapping_3d(self, raw_points): seg = seg_list.pop() # take a segment out of the seg_list tuple1 = seg[0] # the two ends of the segment tuple2 = seg[1] - point1 = numpy.array(seg[0]) - point2 = numpy.array(seg[1]) + point1 = np.array(seg[0]) + point2 = np.array(seg[1]) result = self.get_seg_dict_num(seg_dict, (seg[0], seg[1])) if result >= 2: # then we already have 2 triangles on this segment @@ -667,7 +661,7 @@ def gift_wrapping_3d(self, raw_points): diff_vec1 = point2 - point1 diff_vec2 = pointi - point2 - test_cross = numpy.array( + test_cross = np.array( [ diff_vec1[1] * diff_vec2[2] - diff_vec1[2] * diff_vec2[1], diff_vec1[2] * diff_vec2[0] - diff_vec1[0] * diff_vec2[2], @@ -675,9 +669,9 @@ def gift_wrapping_3d(self, raw_points): ] ) # cross product - # numpy.linalg.norm(test_cross) # get the norm of the cross + # np.linalg.norm(test_cross) # get the norm of the cross # product - test_cross_len = numpy.sqrt( + test_cross_len = np.sqrt( test_cross[0] * test_cross[0] + test_cross[1] * test_cross[1] + test_cross[2] * test_cross[2] @@ -686,7 +680,7 @@ def gift_wrapping_3d(self, raw_points): if test_cross_len <= 0.0: continue test_cross = test_cross / test_cross_len - dot_cross = numpy.dot(test_cross, ref_vec) + dot_cross = np.dot(test_cross, ref_vec) if dot_cross > best_dot_cross: best_cross = test_cross best_dot_cross = dot_cross @@ -717,9 +711,7 @@ def gift_wrapping_3d(self, raw_points): seg_list.add((tuple1, tuple3)) norm_dict[(tuple1, tuple3)] = best_cross - triangles.append( - (numpy.array(tuple1), numpy.array(tuple2), numpy.array(tuple3)) - ) + triangles.append((np.array(tuple1), np.array(tuple2), np.array(tuple3))) first_time = False @@ -732,8 +724,8 @@ def akl_toussaint(self, points): they are not part of the convex hull. This causes any expected running time for a convex hull algorithm to be reduced to linear time. - Arguments: - points -- An nx3 array of x,y,z coordinates + Args: + points: An nx3 array of x,y,z coordinates Returns: All members of original set of points that fall outside the @@ -763,14 +755,14 @@ def akl_toussaint(self, points): z_low = point octahedron = [ # define the triangles of the surfaces of the octahedron - numpy.array((x_high, y_high, z_high)), - numpy.array((x_high, z_low, y_high)), - numpy.array((x_high, y_low, z_low)), - numpy.array((x_high, z_high, y_low)), - numpy.array((x_low, y_low, z_high)), - numpy.array((x_low, z_low, y_low)), - numpy.array((x_low, y_high, z_low)), - numpy.array((x_low, z_high, y_high)), + np.array((x_high, y_high, z_high)), + np.array((x_high, z_low, y_high)), + np.array((x_high, y_low, z_low)), + np.array((x_high, z_high, y_low)), + np.array((x_low, y_low, z_high)), + np.array((x_low, z_low, y_low)), + np.array((x_low, y_high, z_low)), + np.array((x_low, z_high, y_high)), ] new_points = [] # everything outside of the octahedron @@ -780,7 +772,7 @@ def akl_toussaint(self, points): if outside: new_points.append(point) - return numpy.array(new_points) # convert back to an array + return np.array(new_points) # convert back to an array # Some classes are required for multiprocessing @@ -879,10 +871,10 @@ class BoxOfPoints: def __init__(self, box, reso): """Initialize the class. - Arguments: - box -- A numpy array representing two 3D points, (min_x, min_y, + Args: + box: A numpy array representing two 3D points, (min_x, min_y, min_z) and (max_x, max_y, max_z), that define a box. - reso -- The space between the points of the box, in the X, Y, and + reso: The space between the points of the box, in the X, Y, and Z direction. """ @@ -896,15 +888,15 @@ def __init__(self, box, reso): max_y = self.__snap_float(box[1][1], reso) + 1.1 * reso max_z = self.__snap_float(box[1][2], reso) + 1.1 * reso - x, y, z = numpy.mgrid[min_x:max_x:reso, min_y:max_y:reso, min_z:max_z:reso] - self.points = numpy.array(list(zip(x.ravel(), y.ravel(), z.ravel()))) + x, y, z = np.mgrid[min_x:max_x:reso, min_y:max_y:reso, min_z:max_z:reso] + self.points = np.array(list(zip(x.ravel(), y.ravel(), z.ravel()))) def __snap_float(self, val, reso): """Snaps an arbitrary point to the nearest grid point. - Arguments: - val -- A numpy array corresponding to a 3D point. - reso -- The resolution (distance in the X, Y, and Z directions + Args: + val: A numpy array corresponding to a 3D point. + reso: The resolution (distance in the X, Y, and Z directions between adjacent points) of the grid. Returns: @@ -913,21 +905,19 @@ def __snap_float(self, val, reso): """ - return numpy.floor(val / reso) * reso + return np.floor(val / reso) * reso def remove_points_outside_convex_hull(self, hull): """Removes box points that are outside a convex hull. - Arguments: - hull -- The convex hull. + Args: + hull: The convex hull. """ - chunks = [ - (hull, t) for t in numpy.array_split(self.points, params["processors"]) - ] + chunks = [(hull, t) for t in np.array_split(self.points, params["processors"])] tmp = MultiThreading(chunks, params["processors"], self.__MultiIdHullPts) - self.points = numpy.vstack(tmp.results) + self.points = np.vstack(tmp.results) class __MultiIdHullPts(GeneralTask): """A class to remove points outside a convex hull using multiple @@ -951,15 +941,15 @@ def value_func(self, items, results_queue): # so overwriting this function if len(new_pts) == 0: pass # here save the results for later compilation else: - self.results.append(numpy.array(new_pts)) + self.results.append(np.array(new_pts)) def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): """Removes all points in this box that come within the points specified in a numpy array - Arguments: - other_points -- A numpy array containing the other points. - dist_cutoff -- A float, the cutoff distance to use in determining + Args: + other_points: A numpy array containing the other points. + dist_cutoff: A float, the cutoff distance to use in determining whether or not box points will be removed. """ @@ -968,15 +958,13 @@ def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): box_of_pts_distance_tree = spatial.KDTree(self.points) chunks = [ (box_of_pts_distance_tree, dist_cutoff, t) - for t in numpy.array_split(other_points, params["processors"]) + for t in np.array_split(other_points, params["processors"]) ] tmp = MultiThreading(chunks, params["processors"], self.__MultiGetClosePoints) - indicies_of_box_pts_close_to_molecule_points = numpy.unique( - numpy.hstack(tmp.results) - ) + indices_of_box_pts_close_to_molecule_points = np.unique(np.hstack(tmp.results)) - self.points = numpy.delete( - self.points, indicies_of_box_pts_close_to_molecule_points, axis=0 + self.points = np.delete( + self.points, indices_of_box_pts_close_to_molecule_points, axis=0 ) # remove the ones that are too close to molecule atoms class __MultiGetClosePoints(GeneralTask): @@ -995,17 +983,17 @@ def value_func(self, items, results_queue): # so overwriting this function sparce_distance_matrix = other_points_distance_tree.sparse_distance_matrix( box_of_pts_distance_tree, dist_cutoff ) - indicies_of_box_pts_close_to_molecule_points = numpy.unique( + indices_of_box_pts_close_to_molecule_points = np.unique( sparce_distance_matrix.tocsr().indices ) - self.results.append(indicies_of_box_pts_close_to_molecule_points) + self.results.append(indices_of_box_pts_close_to_molecule_points) def to_pdb(self, let="X"): """Converts the points in this box into a PDB representation. - Arguments: - let -- An optional string, the chain ID to use. "X" by default. + Args: + let: An optional string, the chain ID to use. "X" by default. Returns: A PDB-formatted string. @@ -1018,41 +1006,41 @@ def expand_around_existing_points(self, num_pts, reso): """Add points to the current box that surround existing points, essentially increasing the resolution of the box. - Arguments: - num_pts -- An int, the number of points to place on each side of + Args: + num_pts: An int, the number of points to place on each side of the existing points, in the X, Y, and Z directions. - reso -- The distance between adjacent added points. + reso: The distance between adjacent added points. """ new_pts = [] - i = numpy.arange(-num_pts * reso, num_pts * reso + reso * 0.01, reso) + i = np.arange(-num_pts * reso, num_pts * reso + reso * 0.01, reso) for xi in i: for yi in i: for zi in i: - vec = numpy.array([xi, yi, zi]) + vec = np.array([xi, yi, zi]) new_pts.append(self.points + vec) - self.points = numpy.vstack(new_pts) + self.points = np.vstack(new_pts) self.__unique_points() def __unique_points(self): """Identifies unique points (rows) in an array of points. - Arguments: - a -- A nx3 numpy.array representing 3D points. + Args: + a: A nx3 np.array representing 3D points. Returns: - A nx2 numpy.array containing the 3D points that are unique. + A nx2 np.array containing the 3D points that are unique. """ - b = numpy.ascontiguousarray(self.points).view( - numpy.dtype((numpy.void, self.points.dtype.itemsize * self.points.shape[1])) + b = np.ascontiguousarray(self.points).view( + np.dtype((np.void, self.points.dtype.itemsize * self.points.shape[1])) ) unique_points = ( - numpy.unique(b).view(self.points.dtype).reshape(-1, self.points.shape[1]) + np.unique(b).view(self.points.dtype).reshape(-1, self.points.shape[1]) ) self.points = unique_points @@ -1061,9 +1049,9 @@ def filter_isolated_points_until_no_change(self, reso, number_of_neighbors): """Keep removing points that don't have enough neighbors, until no such points exist. - Arguments: - reso -- The distance between adjacent points. - number_of_neighbors -- The minimum number of permissible neighbors. + Args: + reso: The distance between adjacent points. + number_of_neighbors: The minimum number of permissible neighbors. """ @@ -1073,11 +1061,11 @@ def filter_isolated_points_until_no_change(self, reso, number_of_neighbors): # so kiddy-corner counted as a neighbor self.dist_matrix = box_of_pts_distance_tree.sparse_distance_matrix( - box_of_pts_distance_tree, reso * numpy.sqrt(3.0) * 1.1 + box_of_pts_distance_tree, reso * np.sqrt(3.0) * 1.1 ).todense() # note that the diagnol of self.dist_matrix is zero, as expected, but - # ones with dist > reso * numpy.sqrt(3.0) * 1.1 are also 0. Pretty + # ones with dist > reso * np.sqrt(3.0) * 1.1 are also 0. Pretty # convenient. num_pts = 0 @@ -1086,11 +1074,11 @@ def filter_isolated_points_until_no_change(self, reso, number_of_neighbors): num_pts = len(self.points) # identify the points that have enough neighbors - columns_nonzero_count = numpy.array((self.dist_matrix != 0).sum(0))[0] + columns_nonzero_count = np.array((self.dist_matrix != 0).sum(0))[0] columns_nonzero_count_match_criteria = ( columns_nonzero_count >= number_of_neighbors ) - columns_nonzero_count_match_criteria_index = numpy.nonzero( + columns_nonzero_count_match_criteria_index = np.nonzero( columns_nonzero_count_match_criteria ) @@ -1129,7 +1117,7 @@ def separate_out_pockets(self): # Keep going until there are no more points that need to be assigned # to a pocket. while len(self.points) != 0: - pocket_indexes = numpy.array([0]) + pocket_indexes = np.array([0]) num_pts_in_pocket = 0 # Keep looping into no new unique pockets are added. @@ -1137,26 +1125,26 @@ def separate_out_pockets(self): num_pts_in_pocket = len(pocket_indexes) # Get all the adjacent points - indecies_of_neighbors = numpy.nonzero( - self.dist_matrix[pocket_indexes, :] - )[1] + indices_of_neighbors = np.nonzero(self.dist_matrix[pocket_indexes, :])[ + 1 + ] # Get one of them. Not sure why this was previously in the code... - # if len(indecies_of_neighbors) > 0: + # if len(indices_of_neighbors) > 0: # In case a point has no neighbors, you need this conditional. - # one_index_of_neighbor = numpy.array(indecies_of_neighbors)[0] + # one_index_of_neighbor = np.array(indices_of_neighbors)[0] # Add that one index to the growing list. - pocket_indexes = numpy.hstack( + pocket_indexes = np.hstack( ( pocket_indexes, - indecies_of_neighbors, + indices_of_neighbors, # one_index_of_neighbor # Not sure why it used to be this. ) ) - # Make sure only unique indecies ones are retained. - pocket_indexes = numpy.unique(pocket_indexes) + # Make sure only unique indices ones are retained. + pocket_indexes = np.unique(pocket_indexes) # Save these points (in the pocket) to a list of pockets. pocket = self.points[pocket_indexes, :] @@ -1174,12 +1162,12 @@ def __delete_limited_points(self, pt_indices): """A support function""" # keep only those points - self.points = numpy.delete(self.points, pt_indices, axis=0) + self.points = np.delete(self.points, pt_indices, axis=0) # update the distance matrix so it doesn't need to be recalculated - self.dist_matrix = numpy.delete(self.dist_matrix, pt_indices, axis=0) + self.dist_matrix = np.delete(self.dist_matrix, pt_indices, axis=0) self.dist_matrix = self.dist_matrix.T - self.dist_matrix = numpy.delete(self.dist_matrix, pt_indices, axis=0) + self.dist_matrix = np.delete(self.dist_matrix, pt_indices, axis=0) # Also, you need a class to save numpy arrays as PDB files @@ -1191,11 +1179,11 @@ class write_pdbs: def __create_pdb_line(self, numpy_array, index, resname, letter): """Create a string formatted according to the PDB standard. - Arguments: - numpy_array -- A 1x3 numpy.array representing a 3D point. - index -- An integer, the atom index to use in the string. - resname -- A string, the RESNAME to use. - letter -- A string, the atom name/chain/etc to use for the output. + Args: + numpy_array: A 1x3 np.array representing a 3D point. + index: An integer, the atom index to use in the string. + resname: A string, the RESNAME to use. + letter: A string, the atom name/chain/etc to use for the output. Returns: A string, formatted according to the PDB standard. @@ -1203,7 +1191,7 @@ def __create_pdb_line(self, numpy_array, index, resname, letter): """ if len(numpy_array) == 2: - numpy_array = numpy.array([numpy_array[0], numpy_array[1], 0.0]) + numpy_array = np.array([numpy_array[0], numpy_array[1], 0.0]) if numpy_array.shape == (1, 3): numpy_array = numpy_array[0] @@ -1226,10 +1214,10 @@ def __create_pdb_line(self, numpy_array, index, resname, letter): def numpy_to_pdb(self, narray, letter, resname=""): """Create a string formatted according to the PDB standard. - Arguments: - narray -- A nx3 numpy.array representing a 3D point. - letter -- A string, the atom name/chain/etc to use for the output. - resname -- An optional string, the RESNAME to use for the output. + Args: + narray: A nx3 np.array representing a 3D point. + letter: A string, the atom name/chain/etc to use for the output. + resname: An optional string, the RESNAME to use for the output. Returns: A string, formatted according to the PDB standard. @@ -1576,24 +1564,22 @@ def printit(text): pts_string = "" for cluster_num in range(params["number_of_spheres"]): - indexes_for_this_cluster = numpy.nonzero(idx == cluster_num)[0] + indexes_for_this_cluster = np.nonzero(idx == cluster_num)[0] cluster_pts = pts[indexes_for_this_cluster] - cluster_center = numpy.mean(cluster_pts, axis=0) + cluster_center = np.mean(cluster_pts, axis=0) try: - cluster_radius = numpy.max( - cdist(numpy.array([cluster_center]), cluster_pts) - ) + cluster_radius = np.max(cdist(np.array([cluster_center]), cluster_pts)) f.write( "REMARK CHAIN " + let_ids[cluster_num] + ": PointsInclusionSphere " - + str(numpy.round(cluster_center[0], 2)) + + str(np.round(cluster_center[0], 2)) + " " - + str(numpy.round(cluster_center[1], 2)) + + str(np.round(cluster_center[1], 2)) + " " - + str(numpy.round(cluster_center[2], 2)) + + str(np.round(cluster_center[2], 2)) + " " - + str(numpy.round(cluster_radius + params["sphere_padding"], 2)) + + str(np.round(cluster_radius + params["sphere_padding"], 2)) + "\n" ) pts_string = pts_string + write_some_pdbs.numpy_to_pdb( diff --git a/povme/povme.py b/povme/povme.py index f5553a0..4b18e13 100644 --- a/povme/povme.py +++ b/povme/povme.py @@ -1,555 +1,20 @@ -# POVME 2.2.2 is released under the GNU General Public License (see -# http://www.gnu.org/licenses/gpl.html). If you have any questions, comments, -# or suggestions, please don't hesitate to contact me, Jacob Durrant, at -# durrantj [at] pitt [dot] edu. -# -# If you use POVME in your work, please cite: -# -# Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm -# for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -# -# Durrant, J. D., L. Votapka, et al. (2014). "Povme 2.0: An Enhanced Tool -# for Determining Pocket Shape and Volume Characteristics." J Chem Theory -# Comput 10.11: 5047-56. - from typing import Any -import math -import multiprocessing import os -import platform import shutil -import sys import time -from functools import reduce - -import numpy - -from . import __version__, pymolecule -from .common import fix_filename, gzopenfile, openfile - -try: - from io import StringIO -except ImportError: - from io import StringIO - -from scipy.spatial.distance import cdist, pdist, squareform - - -def write_to_file(fo, s, encode=True): - """Writes to a file, encoding if necessary. - - Arguments: - fo -- The file object. - s -- The string to write. - encode (bool, optional) -- Whether to encode the file before writing. - Defaults to True. - - """ - - if encode: - s = s.encode() - - fo.write(s) - - -def log(astr, parameters): - """Output POVME statements, either to the screen or to a file. - - Arguments: - astr -- The string to output. - parameters -- The user-defined parameters. - - """ - - # Print the output to the screen. - print(astr) - - # Save it to the output file as well. - try: - if parameters["CompressOutput"]: - f = gzopenfile(parameters["OutputFilenamePrefix"] + "output.txt.gz", "ab") - else: - f = open(parameters["OutputFilenamePrefix"] + "output.txt", "a") - - write_to_file(f, astr + "\n", encode=parameters["CompressOutput"]) - - f.close() - except: - pass - - -class Multithreading: - """A class for running calculations on multiple processors.""" - - results: list[Any] = [] - - def __init__(self, inputs, num_processors, task_class): - """Launches a calculation on multiple processors. - - Arguments: - inputs -- A list, containing all the input required for the - calculation. - num_processors -- An integer, the requested number of processors to - use. - task_class -- An class, the class governing what calculations will be - run on a given thread. - - Returns: - Nothing, though the objects self.results list is populated with the - calculation results - - """ +from io import StringIO - self.results = [] - - # If it's windows, you can only use one processor. - if num_processors != 1 and ( - platform.system().upper()[:3] == "WIN" or "NT" in platform.system().upper() - ): - print( - "WARNING: Use of multiple processors is not supported in Windows. Proceeding with one processor..." - ) - num_processors = 1 - - if num_processors == 1: # so just running on 1 processor, perhaps under windows - single_thread = task_class() - single_thread.total_num_tasks = len(inputs) - - single_thread.results = [] - for item in inputs: - single_thread.value_func(item, None) - - self.results = single_thread.results - - else: # so it actually is running on multiple processors - - cpu_count = 1 - cpu_count = multiprocessing.cpu_count() - - # first, if num_processors <= 0, determine the number of - # processors to use programatically - if num_processors <= 0: - num_processors = cpu_count - - # reduce the number of processors if too many have been specified - if len(inputs) < num_processors: - num_processors = len(inputs) - - # if there are no inputs, there's nothing to do. - if len(inputs) == 0: - self.results = [] - return - - # now, divide the inputs into the appropriate number of processors - inputs_divided = {t: [] for t in range(num_processors)} - for t in range(0, len(inputs), num_processors): - for t2 in range(num_processors): - index = t + t2 - if index < len(inputs): - inputs_divided[t2].append(inputs[index]) - - # now, run each division on its own processor - running = multiprocessing.Value("i", num_processors) - mutex = multiprocessing.Lock() - - arrays = [] - threads = [] - for _ in range(num_processors): - athread = task_class() - athread.total_num_tasks = len(inputs) - - threads.append(athread) - arrays.append(multiprocessing.Array("i", [0, 1])) - - results_queue = multiprocessing.Queue() # to keep track of the results - - processes = [] - for i in range(num_processors): - p = multiprocessing.Process( - target=threads[i].runit, - args=(running, mutex, results_queue, inputs_divided[i]), - ) - p.start() - processes.append(p) - - is_running = 0 # wait for everything to finish - - while running.value > 0: - pass - # compile all results into one list - for _ in threads: - chunk = results_queue.get() - self.results.extend(chunk) - - -class MultithreadingTaskGeneral: - """A parent class of others that governs what calculations are run on each - thread""" - - results: list[Any] = [] - - def runit(self, running, mutex, results_queue, items): - """Launches the calculations on this thread - - Arguments: - running -- A multiprocessing.Value object. - mutex -- A multiprocessing.Lock object. - results_queue -- A multiprocessing.Queue() object for storing the - calculation output. - items -- A list, the input data required for the calculation. - - """ - - for item in items: - self.value_func(item, results_queue) - - mutex.acquire() - running.value -= 1 - mutex.release() - results_queue.put(self.results) - - def value_func(self, item, results_queue): # so overwriting this function - """The definition that actually does the work. - - Arguments: - item -- A list or tuple, the input data required for the calculation. - results_queue -- A multiprocessing.Queue() object for storing the - calculation output. - - """ +import numpy as np +from scipy.spatial.distance import cdist - # input1 = item[0] - # input2 = item[1] - # input3 = item[2] - # input4 = item[3] - # input5 = item[4] - # input6 = item[5] - - # use inputs to come up with a result, some_result - - # self.results.append(some_result) - - pass - - -class ConvexHull: - """A class to handle convex-hull calculations.""" - - def get_seg_dict_num(self, seg_dict, seg_index): - """seg_dict is a dictionary object that contains information about - segments within the convex hull. The keys are 2x3 tuples, which - represent two ends of a segment in space. The values of seg_dict are - the number of times a segment has been part of a triangle, either 1 or - 2. (Zero times would mean that the segment doesn't exist in the - dictionary yet). This function looks up and returns the value of a - seg_index from seg_dict - - Arguments: - seg_dict -- the dictionary of segment 2x3 tuples as keys, integers as - values. - seg_index -- the key of the dictionary member we are going to retrieve - - Returns: - if seg_index exists in the keys of seg_dict, return the value. - Otherwise, return 0. - - """ - - # we want the index with the greater x-value, so we don't get - # identical segments in the dictionary more than once - index = seg_index if seg_index[0][0] > seg_index[1][0] else seg_index[::-1] - if index in seg_dict: - return seg_dict[index] - else: - return 0 - - def increment_seg_dict(self, seg_dict, seg_index): - """seg_dict is a dictionary object that contains information about - segments within the convex hull. The keys are 2x3 tuples, which - represent two ends of a segment in space. The values of seg_dict are - the number of times a segment has been part of a triangle, either 1 or - 2. (Zero times would mean that the segment doesn't exist in the - dictionary yet). This function increments the values within seg_dict, - or initiates them if they dont exist yet. - - Arguments: - seg_dict -- the dictionary of segment 2x3 tuples as keys, integers as - values. - seg_index -- the key of the dictionary member we are going to - increment. - - Returns: - None: the values of seg_dict are received and modified by reference. - """ - - # we want the index with the greater x-value, so we don't get - # identical segments in the dictionary more than once - if seg_index[0][0] > seg_index[1][0]: - index = seg_index - else: - index = seg_index[::-1] - - # "putting index:", index, "into seg_dict because", index[0][0], ">", index[1][0] - - if index in seg_dict: # if the entry already exists in seg_dict - seg_dict[index] += 1 # increment - else: - # initiate with a value of 1 because it now exists on a triangle - seg_dict[index] = 1 - return - - def gift_wrapping_3d(self, raw_points): - """Gift wrapping for 3d convex hull. - - Arguments: - raw_points -- A nx3 array of points, where each row corresponds to an - x,y,z point coordinate. - - Returns: - A convex hull represented by a list of triangles. Each triangle is a - 3x3 array, where each row is an x,y,z coordinate in space. The 3 - rows describe the location of the 3 corners of the triangle. Each - of the 3 points are arranged so that a cross product will point - outwards from the hull. - - """ - - n = numpy.shape(raw_points)[0] # number of points - point1 = raw_points[0] # take the first point - # create a ref vector pointing along x axis - xaxis = numpy.array([1, 0, 0]) - maxx = raw_points[0][0] # initiate highest x value - points = [] # a list of tuples for easy dictionary lookup - seg_dict = {} # a dictionary that contains the number of triangles a seg is in - - begintime = time.time() - for i in range(n): # find the n with the largest x value - point = tuple(raw_points[i]) - points.append(point) - if point[0] > maxx: - maxx = point[0] - point1 = raw_points[i] - # print "find max x:", time.time() - begintime - - best_dot = -1.0 # initiate dot relative to x-axis - point2 = numpy.array(raw_points[1]) # initiate best segment - - # find first/best segment - begintime = time.time() - for i in range(n): - pointi = raw_points[i] - if numpy.array_equal(pointi, point1): - continue - diff_vec = pointi - point1 - diff_len = numpy.linalg.norm(diff_vec) - - test_dot = numpy.dot(diff_vec / diff_len, xaxis) - if test_dot > best_dot: - best_dot = test_dot - point2 = pointi - - # print "find first segment:", time.time() - begintime - point1 = tuple(point1) - point2 = tuple(point2) - ref_vec = xaxis - - # now find the best triangle - triangles = [] - - seg_list = {(point1, point2)} - norm_dict = {(point1, point2): xaxis} - self.increment_seg_dict(seg_dict, (point1, point2)) - - counter = 0 - first_time = True - - while ( - seg_list - ): # as long as there are unexplored edges of triangles in the hull... - - counter += 1 - seg = seg_list.pop() # take a segment out of the seg_list - tuple1 = seg[0] # the two ends of the segment - tuple2 = seg[1] - point1 = numpy.array(seg[0]) - point2 = numpy.array(seg[1]) - result = self.get_seg_dict_num(seg_dict, (seg[0], seg[1])) - - if result >= 2: # then we already have 2 triangles on this segment - continue # forget about drawing a triangle for this seg - - # get the norm for a triangle that the segment is part of - ref_vec = norm_dict[(seg[0], seg[1])] - - best_dot_cross = -1.0 - best_point = None - - for i in range(n): # look at each point - - pointi = raw_points[i] - # if numpy.array_equal(pointi, point1) or numpy.array_equal(pointi, point2): continue # if we are trying one of the points that are point1 or point2 - diff_vec1 = point2 - point1 - # diff_len1 = numpy.linalg.norm(diff_vec1) - diff_vec2 = pointi - point2 - # diff_len2 = numpy.linalg.norm(diff_vec2) - - # test_cross = numpy.cross(diff_vec1/diff_len1,diff_vec2/diff_len2) - # test_cross = numpy.cross(diff_vec1,diff_vec2) - test_cross = numpy.array( - [ - diff_vec1[1] * diff_vec2[2] - diff_vec1[2] * diff_vec2[1], - diff_vec1[2] * diff_vec2[0] - diff_vec1[0] * diff_vec2[2], - diff_vec1[0] * diff_vec2[1] - diff_vec1[1] * diff_vec2[0], - ] - ) # cross product - - # numpy.linalg.norm(test_cross) # get the norm of the cross product - test_cross_len = numpy.sqrt( - test_cross[0] * test_cross[0] - + test_cross[1] * test_cross[1] - + test_cross[2] * test_cross[2] - ) - - if test_cross_len <= 0.0: - continue - # test_cross_len_inv = 1 / test_cross_len - test_cross = test_cross / test_cross_len - dot_cross = numpy.dot(test_cross, ref_vec) - # dot_cross = test_cross[0]*ref_vec[0] + test_cross[1]*ref_vec[1] + test_cross[2]*ref_vec[2] - if dot_cross > best_dot_cross: - best_cross = test_cross - best_dot_cross = dot_cross - best_point = pointi - tuple3 = points[i] - - point3 = best_point - - if self.get_seg_dict_num(seg_dict, (tuple2, tuple1)) > 2: - continue - if self.get_seg_dict_num(seg_dict, (tuple3, tuple2)) > 2: - continue - if self.get_seg_dict_num(seg_dict, (tuple1, tuple3)) > 2: - continue - - # now we have a triangle from point1 -> point2 -> point3 must test - # each edge - if first_time: - self.increment_seg_dict(seg_dict, (tuple2, tuple1)) - seg_list.add((tuple2, tuple1)) - norm_dict[(tuple2, tuple1)] = best_cross - - self.increment_seg_dict(seg_dict, (tuple3, tuple2)) - seg_list.add((tuple3, tuple2)) - norm_dict[(tuple3, tuple2)] = best_cross - - self.increment_seg_dict(seg_dict, (tuple1, tuple3)) - seg_list.add((tuple1, tuple3)) - norm_dict[(tuple1, tuple3)] = best_cross - - triangles.append( - (numpy.array(tuple1), numpy.array(tuple2), numpy.array(tuple3)) - ) - - first_time = False - - # print "find all triangles:", time.time() - begintime - - # print "section1:", section1 - # print "section2:", section2 - # print "section3:", section3 - return triangles - - def akl_toussaint(self, points): - """The Akl-Toussaint Heuristic. Given a set of points, this definition - will create an octahedron whose corners are the extremes in x, y, and - z directions. Every point within this octahedron will be removed - because they are not part of the convex hull. This causes any expected - running time for a convex hull algorithm to be reduced to linear time. - - Arguments: - points -- An nx3 array of x,y,z coordinates. - - Returns: - All members of original set of points that fall outside the - Akl-Toussaint octahedron. - - """ - - x_high = (-1e99, 0, 0) - x_low = (1e99, 0, 0) - y_high = (0, -1e99, 0) - y_low = (0, 1e99, 0) - z_high = (0, 0, -1e99) - z_low = (0, 0, 1e99) - - for point in points: # find the corners of the octahedron - if point[0] > x_high[0]: - x_high = point - if point[0] < x_low[0]: - x_low = point - if point[1] > y_high[1]: - y_high = point - if point[1] < y_low[1]: - y_low = point - if point[2] > z_high[2]: - z_high = point - if point[2] < z_low[2]: - z_low = point - - octahedron = [ # define the triangles of the surfaces of the octahedron - numpy.array((x_high, y_high, z_high)), - numpy.array((x_high, z_low, y_high)), - numpy.array((x_high, y_low, z_low)), - numpy.array((x_high, z_high, y_low)), - numpy.array((x_low, y_low, z_high)), - numpy.array((x_low, z_low, y_low)), - numpy.array((x_low, y_high, z_low)), - numpy.array((x_low, z_high, y_high)), - ] - new_points = [] # everything outside of the octahedron - for ( - point - ) in points: # now check to see if a point is inside or outside the octahedron - outside = self.outside_hull(point, octahedron, epsilon=-1.0e-5) - if outside: - new_points.append(point) - - return numpy.array(new_points) # convert back to an array - - def outside_hull(self, our_point, triangles, epsilon=1.0e-5): - """Given the hull as defined by a list of triangles, this definition - will return whether a point is within these or not. - - Arguments: - our_point -- an x,y,z array that is being tested to see whether it - exists inside the hull or not. - triangles -- a list of triangles that define the hull. - epsilon -- needed for imprecisions in the floating-point operations. - - Returns: - True if our_point exists outside of the hull, False otherwise - - """ - - our_point = numpy.array(our_point) # convert it to an numpy.array - for triangle in triangles: - # vector from triangle corner 0 to point - rel_point = our_point - triangle[0] - # vector from triangle corner 0 to corner 1 - vec1 = triangle[1] - triangle[0] - # vector from triangle corner 1 to corner 2 - vec2 = triangle[2] - triangle[1] - # cross product between vec1 and vec2 - our_cross = numpy.cross(vec1, vec2) - # dot product to determine whether cross is point inward or - # outward - our_dot = numpy.dot(rel_point, our_cross) - # if the dot is greater than 0, then its outside - if numpy.dot(rel_point, our_cross) > epsilon: - return True - - return False +from . import pymolecule +from .config import ConfigFile +from .hull import MultithreadingCalcVolumeTask +from .io import dx_freq, fix_filename, gzopenfile, numpy_to_pdb, openfile, write_to_file +from .logger import log +from .parallel import MultiThreading, MultithreadingTaskGeneral +from .region import Region def unique_rows(a): @@ -564,509 +29,8 @@ def unique_rows(a): """ a[a == -0.0] = 0.0 - b = numpy.ascontiguousarray(a).view( - numpy.dtype((numpy.void, a.dtype.itemsize * a.shape[1])) - ) - return numpy.unique(b).view(a.dtype).reshape(-1, a.shape[1]) # unique_a - - -def create_pdb_line(numpy_array, index, resname, letter): - """Create a string formatted according to the PDB standard. - - Arguments: - numpy_array -- A 1x3 numpy.array representing a 3D point. - letter -- A string, the atom name/chain/etc to use for the output. - - Returns: - A string, formatted according to the PDB standard. - - """ - - if len(numpy_array) == 2: - numpy_array = numpy.array([numpy_array[0], numpy_array[1], 0.0]) - if numpy_array.shape == (1, 3): - numpy_array = numpy_array[0] - - output = "ATOM " - output = ( - output - + str(index % 999999).rjust(6) - + letter.rjust(5) - + resname.rjust(4) - + letter.rjust(2) - + str(index % 9999).rjust(4) - ) - output += ("%.3f" % numpy_array[0]).rjust(12) - output += ("%.3f" % numpy_array[1]).rjust(8) - output += ("%.3f" % numpy_array[2]).rjust(8) - output += letter.rjust(24) - - return output - - -def numpy_to_pdb(narray, letter, resname=""): - """Create a string formatted according to the PDB standard. - - Arguments: - narray -- A nx3 numpy.array representing a 3D point. - letter -- A string, the atom name/chain/etc to use for the output. - - Returns: - (Optionally) A string, formatted according to the PDB standard. - - """ - - if len(narray.flatten()) == 3: - return create_pdb_line(narray, 1, "AAA", letter) + "\n" - else: - if resname == "": - letters = [ - "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", - ] - resnames = [] - for l1 in letters: - for l2 in letters: - for l3 in letters: - resnames.append(l1 + l2 + l3) - resnames.remove("XXX") # because this is reserved for empty atoms - else: - resnames = [resname] - - t = "" - for i, item in enumerate(narray): - t = ( - t - + create_pdb_line(item, i + 1, resnames[i % len(resnames)], letter) - + "\n" - ) - return t - - -def dx_freq(freq_mat, parameters): - """Generates a DX file that records the frequency that a volume element is - open. - - Arguments: - freq_mat -- a Nx4 matrix, where the first 3 columns are the x,y,z coords - of the point, and the 4th column is the frequency of emptiness for that - point in space - - """ - - # 1. Sort the points into the proper order for a dx file - - # already sorted correctly - - # 2. Obtain key information about the grid - N = freq_mat.shape[0] # number of data points - - minx = min(freq_mat[:, 0]) - miny = min(freq_mat[:, 1]) - minz = min(freq_mat[:, 2]) # find the upper and lower corners of the grid - maxx = max(freq_mat[:, 0]) - maxy = max(freq_mat[:, 1]) - maxz = max(freq_mat[:, 2]) - - widthx = maxx - minx # find the widths of the grid - widthy = maxy - miny - widthz = maxz - minz - - xs = numpy.unique(freq_mat[:, 0]) - ys = numpy.unique(freq_mat[:, 1]) - zs = numpy.unique(freq_mat[:, 2]) - - resx = xs[1] - xs[0] - resy = ys[1] - ys[0] - resz = zs[1] - zs[0] - - # resx = freq_mat[(widthz+1)*(widthy+1),0] - freq_mat[0,0] - # resy = freq_mat[widthz+1,1] - freq_mat[0,1] # find the resolution of the grid - # resz = freq_mat[1,2] - freq_mat[0,2] - - nx = (widthx) / resx + 1 # number of grid points in each dimension - # need to add one because the subtraction leaves out an entire row - ny = (widthy) / resy + 1 - nz = (widthz) / resz + 1 - - # test to make sure all is well with the size of the grid and its - # dimensions - assert ( - nx * ny * nz - ) == N, "Something is wrong with the freq_mat array: it is not a prismatic shape" - - # 3. write the header and footer - if parameters["SaveVolumetricDensityMap"]: - if parameters["CompressOutput"]: - dx_file = gzopenfile( - parameters["OutputFilenamePrefix"] + "volumetric_density.dx.gz", "wb" - ) - else: - dx_file = openfile( - parameters["OutputFilenamePrefix"] + "volumetric_density.dx", "w" - ) - - header_template = """# Data from POVME 2.2.2 -# -# FREQUENCY (unitless) -# -object 1 class gridpositions counts %d %d %d -origin %8.6e %8.6e %8.6e -delta %8.6e 0.000000e+00 0.000000e+00 -delta 0.000000e+00 %8.6e 0.000000e+00 -delta 0.000000e+00 0.000000e+00 %8.6e -object 2 class gridconnections counts %d %d %d -object 3 class array type double rank 0 items %d data follows -""" - - header = header_template % ( - nx, - ny, - nz, - minx, - miny, - minz, - resx, - resy, - resz, - nx, - ny, - nz, - N, - ) # format the header - footer_template = """ -attribute "dep" string "positions" -object "regular positions regular connections" class field -component "positions" value 1 -component "connections" value 2 -component "data" value 3""" - - footer = footer_template # the footer needs no formatting - write_to_file(dx_file, header, encode=parameters["CompressOutput"]) - newline_counter = 1 - for i in range(N): # write the data to the DX file - write_to_file( - dx_file, "%8.6e" % freq_mat[i, 3], encode=parameters["CompressOutput"] - ) - if newline_counter == 3: - newline_counter = 0 - write_to_file(dx_file, "\n", encode=parameters["CompressOutput"]) - else: - write_to_file(dx_file, " ", encode=parameters["CompressOutput"]) - newline_counter += 1 - write_to_file(dx_file, footer, encode=parameters["CompressOutput"]) - dx_file.close - return - - -class MultithreadingCalcVolumeTask(MultithreadingTaskGeneral): - """A class for calculating the volume.""" - - def value_func(self, item, results_queue): - """Calculate the volume. - - Arguments: - item -- A list or tuple, the input data required for the calculation. - results_queue -- A multiprocessing.Queue() object for storing the - calculation output. - - """ - - frame_indx = item[0] - pdb = item[1] - parameters = item[2] - # pts = parameters['pts_orig'].copy() # this works - pts = parameters["pts_orig"] # also works, so keep because faster - - # if the user wants to save empty points (points that are removed), - # then we need a copy of the original - if parameters["OutputEqualNumPointsPerFrame"]: - pts_deleted = pts.copy() - - # you may need to load it from disk if the user so specified - if parameters["UseDiskNotMemory"]: # so you need to load it from disk - pym_filename = pdb - pdb = pymolecule.Molecule() - pdb.fileio.load_pym_into(pym_filename) - - # remove the points that are far from the points region anyway - min_pts = numpy.min(pts, 0) - parameters["DistanceCutoff"] - 1 - max_pts = numpy.max(pts, 0) + parameters["DistanceCutoff"] + 1 - - # identify atoms that are so far away from points that they can be - # ignored. First, x's too small. - index_to_keep1 = numpy.nonzero( - (pdb.information.coordinates[:, 0] > min_pts[0]) - )[0] - - # x's too large - index_to_keep2 = numpy.nonzero( - (pdb.information.coordinates[:, 0] < max_pts[0]) - )[0] - - # y's too small - index_to_keep3 = numpy.nonzero( - (pdb.information.coordinates[:, 1] > min_pts[1]) - )[0] - - # y's too large - index_to_keep4 = numpy.nonzero( - (pdb.information.coordinates[:, 1] < max_pts[1]) - )[0] - - # z's too small - index_to_keep5 = numpy.nonzero( - (pdb.information.coordinates[:, 2] > min_pts[2]) - )[0] - - # z's too large - index_to_keep6 = numpy.nonzero( - (pdb.information.coordinates[:, 2] < max_pts[2]) - )[0] - - index_to_keep = numpy.intersect1d( - index_to_keep1, index_to_keep2, assume_unique=True - ) - index_to_keep = numpy.intersect1d( - index_to_keep, index_to_keep3, assume_unique=True - ) - index_to_keep = numpy.intersect1d( - index_to_keep, index_to_keep4, assume_unique=True - ) - index_to_keep = numpy.intersect1d( - index_to_keep, index_to_keep5, assume_unique=True - ) - index_to_keep = numpy.intersect1d( - index_to_keep, index_to_keep6, assume_unique=True - ) - - # keep only relevant atoms - if len(index_to_keep) > 0: - pdb = pdb.selections.create_molecule_from_selection(index_to_keep) - - # get the vdw radii of each protein atom - vdw = numpy.ones(len(pdb.information.coordinates)) # so the default vdw is 1.0 - - # get vdw... you might want to fill this out with additional vdw - # values - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"H")[ - 0 - ] - ] = 1.2 - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"C")[ - 0 - ] - ] = 1.7 - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"N")[ - 0 - ] - ] = 1.55 - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"O")[ - 0 - ] - ] = 1.52 - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"F")[ - 0 - ] - ] = 1.47 - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"P")[ - 0 - ] - ] = 1.8 - vdw[ - numpy.nonzero(pdb.information.atom_information["element_stripped"] == b"S")[ - 0 - ] - ] = 1.8 - vdw = numpy.repeat(numpy.array([vdw]).T, len(pts), axis=1) - - # now identify the points that are close to the protein atoms - dists = cdist(pdb.information.coordinates, pts) - close_pt_index = numpy.nonzero((dists < (vdw + parameters["DistanceCutoff"])))[ - 1 - ] - - # now keep the appropriate points - pts = numpy.delete(pts, close_pt_index, axis=0) - - # exclude points outside convex hull - if parameters["ConvexHullExclusion"]: - convex_hull_3d = ConvexHull() - - # get the coordinates of the non-hydrogen atoms (faster to discard - # hydrogens) - hydros = pdb.selections.select_atoms({"element_stripped": [b"H"]}) - not_hydros = pdb.selections.invert_selection(hydros) - not_hydros_coors = pdb.information.coordinates[not_hydros] - - # not_hydros = pdb.selections.select_atoms({'name_stripped':['CA']}) - # not_hydros_coors = pdb.information.coordinates[not_hydros] - - # modify pts here. - # note that the atoms of the pdb frame are in pdb.information.coordinates - # begintime = time.time() # measure execution time - akl_toussaint_pts = convex_hull_3d.akl_toussaint( - not_hydros_coors - ) # quickly reduces input size - # print "akl Toussaint:", time.time() - begintime - begintime = time.time() # measure execution time - # calculate convex hull using gift wrapping algorithm - hull = convex_hull_3d.gift_wrapping_3d(akl_toussaint_pts) - # print "gift_wrapping:", time.time() - begintime - - # we will need to regenerate the pts list, disregarding those - # outside the hull - old_pts = pts - pts = [] - for pt in old_pts: - pt_outside = convex_hull_3d.outside_hull( - pt, hull - ) # check if pt is outside hull - if not pt_outside: - # if its not outside the hull, then include it in the - # volume measurement - pts.append(pt) - pts = numpy.array(pts) - - # Now, enforce contiguity if needed - if len(parameters["ContiguousPocketSeedRegions"]) > 0 and len(pts) > 0: - # first, for each point, determine how many neighbors it has to - # count kiddy-corner points too - cutoff_dist = parameters["GridSpacing"] * 1.01 * math.sqrt(3) - pts_dists = squareform(pdist(pts)) - # minus 1 because an atom shouldn't be considered its own neighor - neighbor_counts = numpy.sum(pts_dists < cutoff_dist, axis=0) - 1 - - # remove all the points that don't have enough neighbors - pts = pts[ - numpy.nonzero( - neighbor_counts >= parameters["ContiguousPointsCriteria"] - )[0] - ] - - # get all the points in the defined parameters['ContiguousPocket'] - # seed regions - contig_pts = parameters["ContiguousPocketSeedRegions"][0].points_set( - parameters["GridSpacing"] - ) - for Contig in parameters["ContiguousPocketSeedRegions"][1:]: - contig_pts = numpy.vstack( - (contig_pts, Contig.points_set(parameters["GridSpacing"])) - ) - contig_pts = unique_rows(contig_pts) - - try: # error here if there are no points of contiguous seed region outside of protein volume. - # now just get the ones that are not near the protein - contig_pts = pts[numpy.nonzero(cdist(contig_pts, pts) < 1e-7)[1]] - - last_size_of_contig_pts = 0 - while last_size_of_contig_pts != len(contig_pts): - last_size_of_contig_pts = len(contig_pts) - - # now get the indecies of all points that are close to the - # contig_pts - all_pts_close_to_contig_pts_boolean = ( - cdist(pts, contig_pts) < cutoff_dist - ) - index_all_pts_close_to_contig_pts = numpy.unique( - numpy.nonzero(all_pts_close_to_contig_pts_boolean)[0] - ) - contig_pts = pts[index_all_pts_close_to_contig_pts] - - pts = contig_pts - except: - log( - "\tFrame " - + str(frame_indx) - + ": None of the points in the contiguous-pocket seed region\n\t\tare outside the volume of the protein! Assuming a pocket\n\t\tvolume of 0.0 A.", - parameters, - ) - pts = numpy.array([]) - - # now write the pdb and calculate the volume - volume = len(pts) * math.pow(parameters["GridSpacing"], 3) - - log("\tFrame " + str(frame_indx) + ": " + repr(volume) + " A^3", parameters) - if parameters["SaveIndividualPocketVolumes"]: - frame_text = f"REMARK Frame {str(frame_indx)}" + "\n" - frame_text += f"REMARK Volume = {repr(volume)}" + " Cubic Angstroms\n" - frame_text += numpy_to_pdb(pts, "X") - - if parameters["OutputEqualNumPointsPerFrame"]: - # you need to find the points that are in pts_deleted but not - # in pts - tmp = reduce( - lambda x, y: x | numpy.all(pts_deleted == y, axis=-1), - pts, - numpy.zeros(pts_deleted.shape[:1], dtype=numpy.bool), - ) - indices = numpy.where(tmp)[0] - pts_deleted = numpy.delete(pts_deleted, indices, axis=0) - - # So extra points will always be at the origin. These can be - # easily hidden with your visualization software. - pts_deleted = numpy.zeros(pts_deleted.shape) - frame_text = frame_text + numpy_to_pdb(pts_deleted, "X", "XXX") - - frame_text = frame_text + "END\n" - - if parameters["CompressOutput"]: - fl = gzopenfile( - parameters["OutputFilenamePrefix"] - + "frame_" - + str(frame_indx) - + ".pdb.gz", - "wb", - ) - else: - fl = openfile( - parameters["OutputFilenamePrefix"] - + "frame_" - + str(frame_indx) - + ".pdb", - "w", - ) - write_to_file(fl, frame_text, encode=parameters["CompressOutput"]) - fl.close() - - extra_data_to_add = {} - if parameters["SaveVolumetricDensityMap"]: - extra_data_to_add["SaveVolumetricDensityMap"] = pts - - self.results.append((frame_indx, volume, extra_data_to_add)) - - # if len(extra_data_to_add.keys()) != 0: - # else: self.results.append((frame_indx, volume)) + b = np.ascontiguousarray(a).view(np.dtype((np.void, a.dtype.itemsize * a.shape[1]))) + return np.unique(b).view(a.dtype).reshape(-1, a.shape[1]) # unique_a class MultithreadingStringToMoleculeTask(MultithreadingTaskGeneral): @@ -1076,10 +40,10 @@ class MultithreadingStringToMoleculeTask(MultithreadingTaskGeneral): def value_func(self, item, results_queue): """Convert a PDB string into a pymolecule.Molecule object. - Arguments: - item -- A list or tuple, the input data required for the calculation. - results_queue -- A multiprocessing.Queue() object for storing the - calculation output. + Args: + item: A list or tuple, the input data required for the calculation. + results_queue: A multiprocessing.Queue() object for storing the + calculation output. """ @@ -1095,7 +59,7 @@ def value_func(self, item, results_queue): log("\tFurther processing frame " + str(index), parameters) # so load the whole trajectory into memory - if parameters["UseDiskNotMemory"] == False: + if not parameters["UseDiskNotMemory"]: self.results.append((index, tmp)) else: # save to disk, record filename pym_filename = f"./.povme_tmp/frame_{str(index)}.pym" @@ -1103,200 +67,6 @@ def value_func(self, item, results_queue): self.results.append((index, pym_filename)) -class Region: - """A class for defining regions that will be filled with points.""" - - def __init__(self): - """Initialize some variables.""" - - self.center = numpy.array([9999.9, 9999.9, 9999.9]) - self.radius = 9999.9 # in case the region is a sphere - # in case the region is a box - self.box_dimen = numpy.array([9999.9, 9999.9, 9999.9]) - - self.region_type = "SPHERE" # could also be BOX - - def __str__(self): - """Returns a string representation of the region.""" - - if self.region_type == "SPHERE": - return ( - "sphere at (" - + str(self.center[0]) - + ", " - + str(self.center[1]) - + ", " - + str(self.center[2]) - + "), radius = " - + str(self.radius) - ) - if self.region_type == "BOX": - return ( - "box centered at (" - + str(self.center[0]) - + ", " - + str(self.center[1]) - + ", " - + str(self.center[2]) - + ") with x,y,z dimensions of (" - + str(self.box_dimen[0]) - + ", " - + str(self.box_dimen[1]) - + ", " - + str(self.box_dimen[2]) - + ")" - ) - return "" - - def __snap(self, pts, reso): - """Snaps a set of points to a fixed grid. - - Arguments: - pts -- A nx3 numpy.array representing 3D points. - reso -- A float, the resolution of the grid. - - Returns: - A nx3 numpy.array with the 3D points snapped to the nearest grid - point. - - """ - - # unfortunately, numpy.around rounds evenly, so 0.5 rounds to 0.0 and - # 1.5 rounds to 2.0. very annoying, I'll just add a tiny amount to 0.5 - # => 0.500001 this should work, since user is unlikely to select region - # center or radius with such precision - - pts = pts + 1e-10 - return numpy.around(pts / reso) * reso - - def points_set(self, reso): - """Generates a point field by filling the region with equally spaced - points. - - Arguments: - reso -- A float, the resolution of the grid on which the points will - be placed. - - Returns: - A nx3 numpy.array with the 3D points filling the region. - - """ - - total_pts = None - - if self.region_type == "BOX": - xs = numpy.arange( - self.center[0] - self.box_dimen[0] / 2, - self.center[0] + self.box_dimen[0] / 2, - reso, - ) - ys = numpy.arange( - self.center[1] - self.box_dimen[1] / 2, - self.center[1] + self.box_dimen[1] / 2, - reso, - ) - zs = numpy.arange( - self.center[2] - self.box_dimen[2] / 2, - self.center[2] + self.box_dimen[2] / 2, - reso, - ) - - total_pts = self._convert_xyz_to_numpy_arr(xs, ys, zs, reso) - elif self.region_type == "SPHERE": - total_pts = self._make_sphere_pts(reso) - return total_pts - - def _make_sphere_pts(self, reso): - xs = numpy.arange( - self.center[0] - self.radius, self.center[0] + self.radius, reso - ) - ys = numpy.arange( - self.center[1] - self.radius, self.center[1] + self.radius, reso - ) - zs = numpy.arange( - self.center[2] - self.radius, self.center[2] + self.radius, reso - ) - - result = self._convert_xyz_to_numpy_arr(xs, ys, zs, reso) - # now remove all the points outside of this sphere - index_inside_sphere = numpy.nonzero( - cdist(result, numpy.array([self.center])) < self.radius - )[0] - result = result[index_inside_sphere] - - return result - - def _convert_xyz_to_numpy_arr(self, xs, ys, zs, reso): - result = numpy.empty((len(xs) * len(ys) * len(zs), 3)) - - i = 0 - for x in xs: - for y in ys: - for z in zs: - result[i][0] = x - result[i][1] = y - result[i][2] = z - - i = i + 1 - - result = self.__snap(result, reso) - - return result - - -class ConfigFile: - """A class for processing the user-provided configuration file.""" - - entities = [] - - def __init__(self, filename): - """Generates a point field by filling the region with equally spaced - points. - - Arguments: - filename -- A string, the filename of the configuration file. - - """ - - f = openfile(filename, "r") - lines = f.readlines() - f.close() - - for line in lines: - # remove comments - line = line.split("#", 1)[0] - # line = line.split("//",1)[0] # We can't have these kinds of comments any more because of Windows filenames. - - line = line.strip() - - if line != "": - - # replace ; and , and : with space - # line = line.replace(',',' ') - # line = line.replace(';',' ') - # line = line.replace(':',' ') # this messes up Windows filenames - line = line.replace("\t", " ") - - # now strip string - line = line.strip() - - # now, replace double spaces with one space - while " " in line: - line = line.replace(" ", " ") - - # Now split the thing - line = line.split(" ", 1) - - # now, make it upper case - line[0] = line[0].upper() - - # If there's QUIT, EXIT, or STOP, then don't continue. - if line[0] in [b"QUIT", b"EXIT", b"STOP"]: - break - - self.entities.append(line) - - class RunPOVME: """The main class to run POVME.""" @@ -1324,20 +94,20 @@ def load_multi_frame_pdb(self, filename, parameters): """Load a multi-frame PDB into memory or into separate files (depending on user specifications). - Arguments: - filename -- A string, the filename of the multi-frame PDB. - parameters -- A python dictionary, where the keys are the user-defined - parameter names and the values are the corresponding parameter - values. + Args: + filename: A string, the filename of the multi-frame PDB. + parameters: A python dictionary, where the keys are the user-defined + parameter names and the values are the corresponding parameter + values. Returns: - If the user has requested that the disk be used to save memory, this - function returns a list of tuples, where the first item in each - tuple is the frame index, and the second is a filename containing - the individual frame. If memory is to be used instead of the disk, - this function returns a list of tuples, where the first item in - each tuple is the frame index, and the second is a - pymolecule.Molecule object representing the frame. + If the user has requested that the disk be used to save memory, this + function returns a list of tuples, where the first item in each + tuple is the frame index, and the second is a filename containing + the individual frame. If memory is to be used instead of the disk, + this function returns a list of tuples, where the first item in + each tuple is the frame index, and the second is a + pymolecule.Molecule object representing the frame. """ @@ -1371,7 +141,7 @@ def load_multi_frame_pdb(self, filename, parameters): pdb_strings.remove("") # now convert each pdb string into a pymolecule.Molecule object - molecules = Multithreading( + molecules = MultiThreading( [ (pdb_strings[idx], idx + 1, parameters) for idx in range(len(pdb_strings)) @@ -1391,7 +161,7 @@ def __init__( ) -> None: """Start POVME - Arguments: + Args: path_config: Path to configuration file. path_pdb: Path to PDB file. This will overwrite the configuration file. output_prefix: Path to output directory including directories. @@ -1606,9 +376,7 @@ def __init__( parameters["GridSpacing"] ) for Included in parameters["PointsIncludeRegions"][1:]: - pts = numpy.vstack( - (pts, Included.points_set(parameters["GridSpacing"])) - ) + pts = np.vstack((pts, Included.points_set(parameters["GridSpacing"]))) pts = unique_rows(pts) # get all the points of the exclusion regions @@ -1617,7 +385,7 @@ def __init__( parameters["GridSpacing"] ) for Excluded in parameters["PointsExcludeRegions"][1:]: - pts_exclusion = numpy.vstack( + pts_exclusion = np.vstack( (pts_exclusion, Excluded.points_set(parameters["GridSpacing"])) ) pts_exclusion = unique_rows(pts_exclusion) @@ -1626,8 +394,8 @@ def __init__( # think there ought to be a set-based way of doing this, but # I'm going to go for the pairwise comparison. consider # rewriting later - index_to_remove = numpy.nonzero(cdist(pts, pts_exclusion) < 1e-7)[0] - pts = numpy.delete(pts, index_to_remove, axis=0) + index_to_remove = np.nonzero(cdist(pts, pts_exclusion) < 1e-7)[0] + pts = np.delete(pts, index_to_remove, axis=0) # save the points as PDB if parameters["SavePoints"]: @@ -1650,7 +418,7 @@ def __init__( # save the points as npy - numpy.save(points_filename + ".npy", pts) + np.save(points_filename + ".npy", pts) log( "\tPoint field saved to " @@ -1673,7 +441,7 @@ def __init__( 0 ].points_set(parameters["GridSpacing"]) for Contig in parameters["ContiguousPocketSeedRegions"][1:]: - contig_pts = numpy.vstack( + contig_pts = np.vstack( (contig_pts, Contig.points_set(parameters["GridSpacing"])) ) contig_pts = unique_rows(contig_pts) @@ -1714,7 +482,7 @@ def __init__( # load the points in they aren't already present if pts is None: log("\nLoading the point-field NPY file...", parameters) - parameters["pts_orig"] = numpy.load(parameters["LoadPointsFilename"]) + parameters["pts_orig"] = np.load(parameters["LoadPointsFilename"]) else: parameters["pts_orig"] = pts @@ -1726,7 +494,7 @@ def __init__( # calculate all the volumes log("", parameters) log("Calculating the pocket volume of each frame", parameters) - tmp = Multithreading( + tmp = MultiThreading( [ (index, pdb_object, parameters) for index, pdb_object in index_and_pdbs @@ -1819,22 +587,18 @@ def __init__( if parameters["SaveVolumetricDensityMap"]: unique_points = {} - overall_min = numpy.ones(3) * 1e100 - overall_max = numpy.ones(3) * -1e100 + overall_min = np.ones(3) * 1e100 + overall_max = np.ones(3) * -1e100 for result in tmp.results: pts = result[2]["SaveVolumetricDensityMap"] if len(pts) > 0: - amin = numpy.min(pts, axis=0) - amax = numpy.max(pts, axis=0) + amin = np.min(pts, axis=0) + amax = np.max(pts, axis=0) - overall_min = numpy.min( - numpy.vstack((overall_min, amin)), axis=0 - ) - overall_max = numpy.max( - numpy.vstack((overall_max, amax)), axis=0 - ) + overall_min = np.min(np.vstack((overall_min, amin)), axis=0) + overall_max = np.max(np.vstack((overall_max, amax)), axis=0) for pt in pts: pt_key = str(pt[0]) + ";" + str(pt[1]) + ";" + str(pt[2]) @@ -1848,23 +612,23 @@ def __init__( parameters, ) else: - xpts = numpy.arange( + xpts = np.arange( overall_min[0], overall_max[0] + parameters["GridSpacing"], parameters["GridSpacing"], ) - ypts = numpy.arange( + ypts = np.arange( overall_min[1], overall_max[1] + parameters["GridSpacing"], parameters["GridSpacing"], ) - zpts = numpy.arange( + zpts = np.arange( overall_min[2], overall_max[2] + parameters["GridSpacing"], parameters["GridSpacing"], ) - all_pts = numpy.zeros((len(xpts) * len(ypts) * len(zpts), 4)) + all_pts = np.zeros((len(xpts) * len(ypts) * len(zpts), 4)) i = 0 for x in xpts: diff --git a/povme/pymolecule.py b/povme/pymolecule.py index 50d2268..f42c8a3 100755 --- a/povme/pymolecule.py +++ b/povme/pymolecule.py @@ -7,13 +7,12 @@ import shutil import sys -import numpy -import numpy.linalg +import numpy as np import scipy from numpy.lib.recfunctions import append_fields from scipy.spatial.distance import cdist, pdist -from .common import openfile +from .io import openfile version = "beta" @@ -28,9 +27,9 @@ class Information: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Information class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Args: + parent_molecule_object: The pymolecule.Molecule object + associated with this class. """ @@ -125,7 +124,6 @@ def __init__(self, parent_molecule_object): "SI-S": 2.145, "S-SI": 2.145, "SI-SI": 2.359, - "SI-SI": 2.359, "SI-C": 1.888, "C-SI": 1.888, "SI-N": 1.743, @@ -326,10 +324,10 @@ def belongs_to_protein(self, atom_index): """Checks if the atom is part of a protein. Taken primarily from Amber residue names. - Arguments: - atom_index -- An int, the index of the atom to consider. + Args: + atom_index: An int, the index of the atom to consider. - Returns: + Returns: A boolean. True if part of protein, False if not. """ @@ -347,11 +345,11 @@ def belongs_to_protein(self, atom_index): def belongs_to_dna(self, atom_index): """Checks if the atom is part of DNA. - Arguments: - atom_index -- An int, the index of the atom to consider. + Args: + atom_index: An int, the index of the atom to consider. Returns: - A boolean. True if part of dna, False if not. + A boolean. True if part of dna, False if not. """ @@ -368,11 +366,11 @@ def belongs_to_dna(self, atom_index): def belongs_to_rna(self, atom_index): """Checks if the atom is part of RNA. - Arguments: - atom_index -- An int, the index of the atom to consider. + Args: + atom_index: An int, the index of the atom to consider. Returns: - A boolean. True if part of rna, False if not. + A boolean. True if part of rna, False if not. """ @@ -392,7 +390,7 @@ def assign_masses(self): if ( not "mass" in self.atom_information.dtype.names ): # only assign if not been assigned previously - masses = numpy.empty((len(self.atom_information["element_stripped"]))) + masses = np.empty((len(self.atom_information["element_stripped"]))) for i in range(len(self.atom_information["element_stripped"])): element = self.atom_information["element_stripped"][i] mass = self.constants["mass_dict"][element] @@ -408,8 +406,8 @@ def assign_elements_from_atom_names(self, selection=None): explicitly specified in loaded files. Note that this doesn't populate elements_stripped. - Arguments: - selection -- An optional numpy.array containing the indices of the + Args: + selection: An optional np.array containing the indices of the atoms to consider when calculating the center of mass. If ommitted, all atoms of the pymolecule.Molecule object will be considered. @@ -423,25 +421,25 @@ def assign_elements_from_atom_names(self, selection=None): return # get the atom names - fix_element_names = numpy.char.upper( + fix_element_names = np.char.upper( self.parent_molecule.information.atom_information["name"][selection] ) - fix_element_names = numpy.char.strip(fix_element_names) + fix_element_names = np.char.strip(fix_element_names) # first remove any numbers at the begining of these names - fix_element_names = numpy.char.lstrip(fix_element_names, b"0123456789") + fix_element_names = np.char.lstrip(fix_element_names, b"0123456789") # remove any thing, letters or numbers, that follows a number, # including the number itself. so C2L becomes C, not CL. I wish there # was a more numpified way of doing this. :( for num in [b"0", b"1", b"2", b"3", b"4", b"5", b"6", b"7", b"8", b"9"]: - tmp = numpy.char.split(fix_element_names, num) - fix_element_names = numpy.empty(len(fix_element_names), dtype="S5") + tmp = np.char.split(fix_element_names, num) + fix_element_names = np.empty(len(fix_element_names), dtype="S5") for i, item in enumerate(tmp): fix_element_names[i] = tmp[i][0] # take just first two letters of each item - fix_element_names = numpy.array(fix_element_names, dtype="|S2") + fix_element_names = np.array(fix_element_names, dtype="|S2") # identify ones that are two-letter elements and one-letter elements one_that_should_be_two_letters = ( @@ -453,24 +451,22 @@ def assign_elements_from_atom_names(self, selection=None): for other_two_letter in self.parent_molecule.information.constants[ "element_names_with_two_letters" ][1:]: - one_that_should_be_two_letters = numpy.logical_or( + one_that_should_be_two_letters = np.logical_or( one_that_should_be_two_letters, (fix_element_names == other_two_letter) ) - indices_of_two_letter_elements = numpy.nonzero(one_that_should_be_two_letters)[ - 0 - ] - indices_of_one_letter_elements = numpy.nonzero( - numpy.logical_not(one_that_should_be_two_letters) + indices_of_two_letter_elements = np.nonzero(one_that_should_be_two_letters)[0] + indices_of_one_letter_elements = np.nonzero( + np.logical_not(one_that_should_be_two_letters) )[0] # get ones that are one-letter elements - fix_element_names[indices_of_one_letter_elements] = numpy.char.rjust( - numpy.array(fix_element_names[indices_of_one_letter_elements], dtype="|S1"), + fix_element_names[indices_of_one_letter_elements] = np.char.rjust( + np.array(fix_element_names[indices_of_one_letter_elements], dtype="|S1"), 2, ) # they should be capitalized for consistency - fix_element_names = numpy.char.upper(fix_element_names) + fix_element_names = np.char.upper(fix_element_names) # now map missing element names back self.parent_molecule.information.atom_information["element"][ @@ -478,22 +474,22 @@ def assign_elements_from_atom_names(self, selection=None): ] = fix_element_names # element_stripped also needs to be updated - # try: self.parent_molecule.information.atom_information['element_stripped'][selection] = numpy.char.strip(fix_element_names) + # try: self.parent_molecule.information.atom_information['element_stripped'][selection] = np.char.strip(fix_element_names) # except: # so element_stripped hasn't been defined yet - # self.parent_molecule.information.atom_information = append_fields(self.parent_molecule.information.atom_information, 'element_stripped', data=numpy.char.strip(self.parent_molecule.information.atom_information['element'])) + # self.parent_molecule.information.atom_information = append_fields(self.parent_molecule.information.atom_information, 'element_stripped', data=np.char.strip(self.parent_molecule.information.atom_information['element'])) def center_of_mass(self, selection=None): """Determines the center of mass. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider when calculating the center of mass. If - ommitted, all atoms of the pymolecule.Molecule object will be - considered. + Args: + selection: An optional np.array containing the indices of the + atoms to consider when calculating the center of mass. If + ommitted, all atoms of the pymolecule.Molecule object will be + considered. Returns: - A numpy.array containing to the x, y, and z coordinates of the - center of mass. + A np.array containing to the x, y, and z coordinates of the + center of mass. """ @@ -508,7 +504,7 @@ def center_of_mass(self, selection=None): # multiple each coordinate by its mass center_of_mass = ( self.coordinates[selection] - * numpy.vstack( + * np.vstack( ( self.atom_information["mass"][selection], self.atom_information["mass"][selection], @@ -518,7 +514,7 @@ def center_of_mass(self, selection=None): ) # now sum all that - center_of_mass = numpy.sum(center_of_mass, 0) + center_of_mass = np.sum(center_of_mass, 0) # now divide by the total mass center_of_mass = center_of_mass / self.total_mass(selection) @@ -528,35 +524,35 @@ def center_of_mass(self, selection=None): def geometric_center(self, selection=None): """Determines the geometric center. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider when calculating the geometric center. If - ommitted, all atoms of the pymolecule.Molecule object will be - considered. + Args: + selection: An optional np.array containing the indices of the + atoms to consider when calculating the geometric center. If + ommitted, all atoms of the pymolecule.Molecule object will be + considered. Returns: - A numpy.array containing to the x, y, and z coordinates of the - geometric center. + A np.array containing to the x, y, and z coordinates of the + geometric center. """ if selection is None: selection = self.parent_molecule.selections.select_all() - return numpy.sum(self.coordinates[selection], 0) / self.total_number_of_atoms( + return np.sum(self.coordinates[selection], 0) / self.total_number_of_atoms( selection ) def total_mass(self, selection=None): """Calculates the total atomic mass. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider when calculating the total mass. If ommitted, - all atoms of the pymolecule.Molecule object will be considered. + Args: + selection: An optional np.array containing the indices of the + atoms to consider when calculating the total mass. If ommitted, + all atoms of the pymolecule.Molecule object will be considered. Returns: - A double, the total mass. + A double, the total mass. """ @@ -567,18 +563,18 @@ def total_mass(self, selection=None): self.assign_masses() # return total mass - return numpy.sum(self.atom_information["mass"][selection]) + return np.sum(self.atom_information["mass"][selection]) def total_number_of_atoms(self, selection=None): """Counts the number of atoms. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to count. If ommitted, all atoms of the - pymolecule.Molecule object will be considered. + Args: + selection: An optional np.array containing the indices of the + atoms to count. If ommitted, all atoms of the + pymolecule.Molecule object will be considered. Returns: - An int, the total number of atoms. + An int, the total number of atoms. """ @@ -594,12 +590,12 @@ def total_number_of_heavy_atoms(self): """Counts the number of heavy atoms (i.e., atoms that are not hydrogens). - Arguments: - selection -- An optional numpy.array containing the indices of the + Args: + selection: An optional np.array containing the indices of the atoms to count. If ommitted, all atoms of the pymolecule.Molecule object will be considered. - Returns: + Returns: An int, the total number of heavy (non-hydrogen) atoms. """ @@ -613,26 +609,26 @@ def total_number_of_heavy_atoms(self): def bounding_box(self, selection=None, padding=0.0): """Calculates a box that bounds (encompasses) a set of atoms. - Arguments: - selection -- An optional numpy.array containing the indices of the - atoms to consider. If ommitted, all atoms of the - pymolecule.Molecule object will be considered. - padding -- An optional float. The bounding box will extend this - many angstroms beyond the atoms being considered. + Args: + selection: An optional np.array containing the indices of the + atoms to consider. If ommitted, all atoms of the + pymolecule.Molecule object will be considered. + padding: An optional float. The bounding box will extend this + many angstroms beyond the atoms being considered. Returns: - A numpy array representing two 3D points, (min_x, max_x, min_y) - and (max_y, min_z, max_z), that bound the molecule. + A numpy array representing two 3D points, (min_x, max_x, min_y) + and (max_y, min_z, max_z), that bound the molecule. """ if selection is None: selection = self.parent_molecule.selections.select_all() - return numpy.vstack( + return np.vstack( ( - numpy.min(self.coordinates[selection], 0), - numpy.max(self.coordinates[selection], 0), + np.min(self.coordinates[selection], 0), + np.max(self.coordinates[selection], 0), ) ) @@ -640,15 +636,15 @@ def bounding_sphere(self, selection=None, padding=0.0): """Calculates a sphere that bounds (encompasses) a set of atoms. (Note that this is not necessarily the sphere with the smallest radius.) - Arguments: - selection -- An optional numpy.array containing the indices of the + Args: + selection: An optional np.array containing the indices of the atoms to consider. If ommitted, all atoms of the pymolecule.Molecule object will be considered. - padding -- An optional float. The bounding sphere will extend this + padding: An optional float. The bounding sphere will extend this many angstroms beyond the atoms being considered. - Returns: - A tuple containing two elements. The first is a numpy.array + Returns: + A tuple containing two elements. The first is a np.array representing a 3D point, the (x, y, z) center of the sphere. The second is a float, the radius of the sphere. @@ -658,12 +654,12 @@ def bounding_sphere(self, selection=None, padding=0.0): selection = self.parent_molecule.selections.select_all() # get center - center_of_selection = numpy.array([self.geometric_center(selection)]) + center_of_selection = np.array([self.geometric_center(selection)]) # get distance to farthest point in selection return ( center_of_selection[0], - numpy.max(cdist(center_of_selection, self.coordinates[selection])[0]), + np.max(cdist(center_of_selection, self.coordinates[selection])[0]), ) def define_molecule_chain_residue_spherical_boundaries(self): @@ -688,7 +684,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): # do calcs for the whole molcules whole_mol_calc = self.bounding_sphere() self.parent_molecule.information.hierarchy["spheres"]["molecule"]["center"] = ( - numpy.array([whole_mol_calc[0]]) + np.array([whole_mol_calc[0]]) ) self.parent_molecule.information.hierarchy["spheres"]["molecule"]["radius"] = ( whole_mol_calc[1] @@ -696,7 +692,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): # do calcs for the chains self.parent_molecule.information.hierarchy["spheres"]["chains"]["keys"] = ( - numpy.array( + np.array( list( self.parent_molecule.information.hierarchy["chains"][ "indices" @@ -705,7 +701,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): ) ) self.parent_molecule.information.hierarchy["spheres"]["chains"]["centers"] = ( - numpy.empty( + np.empty( ( len( self.parent_molecule.information.hierarchy["spheres"]["chains"][ @@ -717,7 +713,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): ) ) self.parent_molecule.information.hierarchy["spheres"]["chains"]["radii"] = ( - numpy.empty( + np.empty( len( self.parent_molecule.information.hierarchy["spheres"]["chains"][ "keys" @@ -749,7 +745,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): # do calcs for the residues self.parent_molecule.information.hierarchy["spheres"]["residues"]["keys"] = ( - numpy.array( + np.array( list( self.parent_molecule.information.hierarchy["residues"][ "indices" @@ -758,7 +754,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): ) ) self.parent_molecule.information.hierarchy["spheres"]["residues"]["centers"] = ( - numpy.empty( + np.empty( ( len( self.parent_molecule.information.hierarchy["spheres"][ @@ -770,7 +766,7 @@ def define_molecule_chain_residue_spherical_boundaries(self): ) ) self.parent_molecule.information.hierarchy["spheres"]["residues"]["radii"] = ( - numpy.empty( + np.empty( len( self.parent_molecule.information.hierarchy["spheres"]["residues"][ "keys" @@ -805,11 +801,11 @@ def hybridization(self, atom_index): # Currently not working 100% angle between the atom and two of its neighbors. May not work for 5+ connectivity. - Arguments: - atom_index -- An int, the index of the atom whose hybridization is + Args: + atom_index: An int, the index of the atom whose hybridization is to be determined. - Returns: + Returns: An int, where 3 corresponds to sp3 hybridization, 2 corresponds to sp2 hybridization, 1 corresponds to sp1 hybridization, and -1 means not enough information. @@ -821,7 +817,7 @@ def hybridization(self, atom_index): # Currently not working 100% # most basic functionality in pymolecule. neighbors = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([atom_index]) + np.array([atom_index]) ) hybrid = -1 @@ -838,24 +834,24 @@ def hybridization(self, atom_index): # Currently not working 100% self.parent_molecule.information.coordinates[atom_index], self.parent_molecule.information.coordinates[index2], ) - angle = angle * 180.0 / numpy.pi + angle = angle * 180.0 / np.pi if ( - numpy.fabs(angle - 109.5) + np.fabs(angle - 109.5) < self.parent_molecule.information.constants[ "hybridization_angle_cutoff" ] ): hybrid2 = 3 elif ( - numpy.fabs(angle - 120) + np.fabs(angle - 120) < self.parent_molecule.information.constants[ "hybridization_angle_cutoff" ] ): hybrid2 = 2 elif ( - numpy.fabs(angle - 180) + np.fabs(angle - 180) < self.parent_molecule.information.constants[ "hybridization_angle_cutoff" ] @@ -881,9 +877,9 @@ class FileIO: def __init__(self, parent_molecule_object): """Initializes the pymolecule.FileIO class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Args: + parent_molecule_object: The pymolecule.Molecule object + associated with this class. """ @@ -893,8 +889,8 @@ def load_pym_into(self, filename): """Loads the molecular data contained in a pym file into the current pymolecule.Molecule object. - Arguments: - filename -- A string, the filename of the pym file. + Args: + filename: A string, the filename of the pym file. """ @@ -905,7 +901,7 @@ def load_pym_into(self, filename): self.parent_molecule.information.atom_information = pickle.load( openfile(filename + "atom_information", "rb") ) - self.parent_molecule.information.coordinates = numpy.load( + self.parent_molecule.information.coordinates = np.load( filename + "coordinates.npz" )["arr_0"] @@ -923,11 +919,11 @@ def load_pym_into(self, filename): openfile(filename + "filename", "rb") ) if os.path.exists(filename + "bonds.npz"): - self.parent_molecule.information.bonds = numpy.load(filename + "bonds.npz")[ + self.parent_molecule.information.bonds = np.load(filename + "bonds.npz")[ "arr_0" ] if os.path.exists(filename + "coordinates_undo_point.npz"): - self.parent_molecule.information.coordinates_undo_point = numpy.load( + self.parent_molecule.information.coordinates_undo_point = np.load( filename + "coordinates_undo_point.npz" )["arr_0"] @@ -943,14 +939,14 @@ def load_pdb_into( """Loads the molecular data contained in a pdb file into the current pymolecule.Molecule object. - Arguments: - filename -- A string, the filename of the pdb file. - bonds_by_distance -- An optional boolean, whether or not to + Args: + filename: A string, the filename of the pdb file. + bonds_by_distance: An optional boolean, whether or not to determine atomic bonds based on atom proximity. True by default. - serial_reindex -- An optional boolean, whether or not to reindex + serial_reindex: An optional boolean, whether or not to reindex the pdb serial field. True by default. - resseq_reindex -- An optional boolean, whether or not to reindex + resseq_reindex: An optional boolean, whether or not to reindex the pdb resseq field. False by default. """ @@ -976,19 +972,19 @@ def load_pdb_into_using_file_object( to use the load_pdb_into() function instead, which is identical except that it accepts a filename string instead of a python file object. - Arguments: - file_obj -- A python file object, containing pdb-formatted data. - bonds_by_distance -- An optional boolean, whether or not to + Args: + file_obj: A python file object, containing pdb-formatted data. + bonds_by_distance: An optional boolean, whether or not to determine atomic bonds based on atom proximity. True by default. - serial_reindex -- An optional boolean, whether or not to reindex + serial_reindex: An optional boolean, whether or not to reindex the pdb serial field. True by default. - resseq_reindex -- An optional boolean, whether or not to reindex + resseq_reindex: An optional boolean, whether or not to reindex the pdb resseq field. False by default. """ - source_data = numpy.genfromtxt( + source_data = np.genfromtxt( file_obj, dtype="S6,S5,S5,S5,S1,S4,S4,S8,S8,S8,S6,S6,S10,S2,S3", names=[ @@ -1013,7 +1009,7 @@ def load_pdb_into_using_file_object( # get the remarks, if any. good to hold on to this because some of my # programs might retain info via remarks - remark_indices = numpy.nonzero(source_data["record_name"] == b"REMARK")[0] + remark_indices = np.nonzero(source_data["record_name"] == b"REMARK")[0] self.parent_molecule.information.remarks = [] for index in remark_indices: astr = "" @@ -1026,11 +1022,11 @@ def load_pdb_into_using_file_object( source_data = source_data.reshape(1, -1) # get the ones that are ATOM or HETATOM in the record_name - or_matrix = numpy.logical_or( + or_matrix = np.logical_or( (source_data["record_name"] == b"ATOM "), (source_data["record_name"] == b"HETATM"), ) - indices_of_atom_or_hetatom = numpy.nonzero(or_matrix)[0] + indices_of_atom_or_hetatom = np.nonzero(or_matrix)[0] self.parent_molecule.information.atom_information = source_data[ indices_of_atom_or_hetatom ] @@ -1042,8 +1038,8 @@ def load_pdb_into_using_file_object( + self.parent_molecule.information.constants["f8_fields"] ): check_fields = self.parent_molecule.information.atom_information[field] - check_fields = numpy.char.strip(check_fields) - indices_of_empty = numpy.nonzero(check_fields == "")[0] + check_fields = np.char.strip(check_fields) + indices_of_empty = np.nonzero(check_fields == "")[0] self.parent_molecule.information.atom_information[field][ indices_of_empty ] = "0" @@ -1061,7 +1057,7 @@ def load_pdb_into_using_file_object( field ) descr[index] = (descr[index][0], "f8") - new_types = numpy.dtype(descr) + new_types = np.dtype(descr) self.parent_molecule.information.atom_information = ( self.parent_molecule.information.atom_information.astype(new_types) ) @@ -1075,7 +1071,7 @@ def load_pdb_into_using_file_object( # the coordinates need to be placed in their own special numpy array # to facilitate later manipulation - self.parent_molecule.information.coordinates = numpy.vstack( + self.parent_molecule.information.coordinates = np.vstack( [ self.parent_molecule.information.atom_information["x"], self.parent_molecule.information.atom_information["y"], @@ -1094,15 +1090,13 @@ def load_pdb_into_using_file_object( # molecule.information.assign_elements_from_atom_names function can be # used to overwrite this and assign elements based on the atom name # only. - indicies_where_element_is_not_defined = numpy.nonzero( - numpy.char.strip( - self.parent_molecule.information.atom_information["element"] - ) + indices_where_element_is_not_defined = np.nonzero( + np.char.strip(self.parent_molecule.information.atom_information["element"]) == b"" )[0] self.parent_molecule.information.assign_elements_from_atom_names( - indicies_where_element_is_not_defined + indices_where_element_is_not_defined ) # string values in self.parent_molecule.information.atom_information @@ -1112,16 +1106,16 @@ def load_pdb_into_using_file_object( self.parent_molecule.information.atom_information = append_fields( self.parent_molecule.information.atom_information, f + "_stripped", - data=numpy.char.strip( + data=np.char.strip( self.parent_molecule.information.atom_information[f] ), ) # now, if there's conect data, load it. this part of the code is not # that "numpyic" - conect_indices = numpy.nonzero(source_data["record_name"] == b"CONECT")[0] + conect_indices = np.nonzero(source_data["record_name"] == b"CONECT")[0] if len(conect_indices) > 0: - self.parent_molecule.information.bonds = numpy.zeros( + self.parent_molecule.information.bonds = np.zeros( ( len(self.parent_molecule.information.atom_information), len(self.parent_molecule.information.atom_information), @@ -1154,7 +1148,7 @@ def load_pdb_into_using_file_object( indices[0] ] = 1 # else: # create empty bond array - # self.parent_molecule.information.bonds = numpy.zeros((len(self.parent_molecule.information.atom_information), len(self.parent_molecule.information.atom_information))) + # self.parent_molecule.information.bonds = np.zeros((len(self.parent_molecule.information.atom_information), len(self.parent_molecule.information.atom_information))) if bonds_by_distance == True: self.parent_molecule.atoms_and_bonds.create_bonds_by_distance(False) @@ -1175,25 +1169,25 @@ def save_pym( """Saves the molecular data contained in a pymolecule.Molecule object to a pym file. - Arguments: - filename -- An string, the filename to use for saving. (Note that + Args: + filename: An string, the filename to use for saving. (Note that this is actually a directory, not a file.) - save_bonds -- An optional boolean, whether or not to save + save_bonds: An optional boolean, whether or not to save information about atomic bonds. False by default. - save_filename -- An optional boolean, whether or not to save the + save_filename: An optional boolean, whether or not to save the original (pdb) filename. False by default. - save_remarks -- An optional boolean, whether or not to save remarks + save_remarks: An optional boolean, whether or not to save remarks associated with the molecule. False by default. - save_hierarchy -- An optional boolean, whether or not to save + save_hierarchy: An optional boolean, whether or not to save information about spheres the bound (encompass) the whole molecule, the chains, and the residues. False by default. - save_coordinates_undo_point -- An optional boolean, whether or not + save_coordinates_undo_point: An optional boolean, whether or not to save the last coordinate undo point. False by default. """ # Why not just pickle self.parent.information? Because it's a huge - # file, can't selectively not save bonds, for example, and numpy.save + # file, can't selectively not save bonds, for example, and np.save # is faster than cPickle protocol 2 on numpy arrays # if the directory already exists, first delete it @@ -1240,10 +1234,10 @@ def save_pym( -1, ) - # unfortunately, the speedy numpy.save doesn't work on masked arrays + # unfortunately, the speedy np.save doesn't work on masked arrays # masked arrays have a dump method, but it just uses cPickle so we're # just going to cPickle masked arrays. Could be so much faster if - # numpy were up to speed... :(not clear that numpy.ma.dump accepts + # numpy were up to speed... :(not clear that np.ma.dump accepts # protocol parameter, so let's just use cPickle directly pickle.dump( self.parent_molecule.information.atom_information, @@ -1252,19 +1246,19 @@ def save_pym( ) # fortunately, coordinates and bonds are regular numpy arrays they can - # be saved with numpy's speedy numpy.save function note that I'm + # be saved with numpy's speedy np.save function note that I'm # compressing them here. benchmarking suggests this takes longer to # save, but is much faster to load. so I'm prioritizing load times - # over save times note also that numpy.savez can save multiple arrays + # over save times note also that np.savez can save multiple arrays # to a single file, probably speeding up load. - numpy.savez( + np.savez( filename + "coordinates.npz", self.parent_molecule.information.coordinates ) if save_bonds == True: - numpy.savez(filename + "bonds.npz", self.parent_molecule.information.bonds) + np.savez(filename + "bonds.npz", self.parent_molecule.information.bonds) if save_coordinates_undo_point == True: - numpy.savez( + np.savez( filename + "coordinates_undo_point.npz", self.parent_molecule.information.coordinates_undo_point, ) @@ -1275,17 +1269,17 @@ def save_pdb( """Saves the molecular data contained in a pymolecule.Molecule object to a pdb file. - Arguments: - filename -- An string, the filename to use for saving. - serial_reindex -- An optional boolean, whether or not to reindex + Args: + filename: An string, the filename to use for saving. + serial_reindex: An optional boolean, whether or not to reindex the pdb serial field. True by default. - resseq_reindex -- An optional boolean, whether or not to reindex + resseq_reindex: An optional boolean, whether or not to reindex the pdb resseq field. False by default. - return_text -- An optional boolean, whether or not to return text + return_text: An optional boolean, whether or not to return text instead of writing to a file. If True, the filename variable is ignored. - Returns: + Returns: If return_text is True, a PDB-formatted string. Otherwise, returns nothing. @@ -1299,7 +1293,7 @@ def save_pdb( if resseq_reindex == True: self.resseq_reindex() - if return_text == False: + if not return_text: afile = openfile(filename, "w") else: return_string = "" @@ -1308,44 +1302,44 @@ def save_pdb( for line in self.parent_molecule.information.remarks: remark = "REMARK" + line + "\n" - if return_text == False: + if not return_text: afile.write(remark) else: return_string = return_string + remark # print out coordinates - printout = numpy.char.add( + printout = np.char.add( self.parent_molecule.information.atom_information["record_name"], - numpy.char.rjust( + np.char.rjust( self.parent_molecule.information.atom_information["serial"].astype( "|S5" ), 5, ), ) - printout = numpy.char.add( + printout = np.char.add( printout, self.parent_molecule.information.atom_information["name"] ) - printout = numpy.char.add( + printout = np.char.add( printout, self.parent_molecule.information.atom_information["resname"] ) - printout = numpy.char.add( + printout = np.char.add( printout, self.parent_molecule.information.atom_information["chainid"] ) - printout = numpy.char.add( + printout = np.char.add( printout, - numpy.char.rjust( + np.char.rjust( self.parent_molecule.information.atom_information["resseq"].astype( "|S4" ), 4, ), ) - printout = numpy.char.add(printout, " ") - printout = numpy.char.add( + printout = np.char.add(printout, " ") + printout = np.char.add( printout, - numpy.char.rjust( - numpy.array( + np.char.rjust( + np.array( [ "%.3f" % t for t in self.parent_molecule.information.coordinates[:, 0] @@ -1354,10 +1348,10 @@ def save_pdb( 8, ), ) - printout = numpy.char.add( + printout = np.char.add( printout, - numpy.char.rjust( - numpy.array( + np.char.rjust( + np.array( [ "%.3f" % t for t in self.parent_molecule.information.coordinates[:, 1] @@ -1366,10 +1360,10 @@ def save_pdb( 8, ), ) - printout = numpy.char.add( + printout = np.char.add( printout, - numpy.char.rjust( - numpy.array( + np.char.rjust( + np.array( [ "%.3f" % t for t in self.parent_molecule.information.coordinates[:, 2] @@ -1378,10 +1372,10 @@ def save_pdb( 8, ), ) - printout = numpy.char.add( + printout = np.char.add( printout, - numpy.char.rjust( - numpy.array( + np.char.rjust( + np.array( [ "%.2f" % t for t in self.parent_molecule.information.atom_information[ @@ -1392,10 +1386,10 @@ def save_pdb( 6, ), ) - printout = numpy.char.add( + printout = np.char.add( printout, - numpy.char.rjust( - numpy.array( + np.char.rjust( + np.array( [ "%.2f" % t for t in self.parent_molecule.information.atom_information[ @@ -1406,15 +1400,15 @@ def save_pdb( 6, ), ) - printout = numpy.char.add(printout, " ") - printout = numpy.char.add( + printout = np.char.add(printout, " ") + printout = np.char.add( printout, self.parent_molecule.information.atom_information["element"] ) - printout = numpy.char.add( + printout = np.char.add( printout, self.parent_molecule.information.atom_information["charge"] ) - if return_text == False: + if not return_text: if printout[0][-1:] == "\n": afile.write("".join(printout) + "\n") else: @@ -1429,11 +1423,11 @@ def save_pdb( if not self.parent_molecule.information.bonds is None: for index in range(len(self.parent_molecule.information.bonds)): indices_of_bond_partners = self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([index]) + np.array([index]) ) if len(indices_of_bond_partners) > 0: - if return_text == False: + if not return_text: afile.write( "CONECT" + str( @@ -1478,7 +1472,7 @@ def save_pdb( + "\n" ) - if return_text == False: + if not return_text: afile.close() else: return return_string @@ -1503,26 +1497,26 @@ def resseq_reindex(self): """Reindexes the resseq field of the atoms in the molecule, starting with 1""" - keys = numpy.char.add( + keys = np.char.add( self.parent_molecule.information.atom_information["resname_stripped"], "-" ) - keys = numpy.char.add( + keys = np.char.add( keys, - numpy.array( + np.array( [ str(t) for t in self.parent_molecule.information.atom_information["resseq"] ] ), ) - keys = numpy.char.add(keys, "-") - keys = numpy.char.add( + keys = np.char.add(keys, "-") + keys = np.char.add( keys, self.parent_molecule.information.atom_information["chainid_stripped"] ) - keys2 = numpy.insert(keys, 0, "")[:-1] - index_of_change = numpy.nonzero(numpy.logical_not(keys == keys2))[0] - index_of_change = numpy.append( + keys2 = np.insert(keys, 0, "")[:-1] + index_of_change = np.nonzero(np.logical_not(keys == keys2))[0] + index_of_change = np.append( index_of_change, len(self.parent_molecule.information.atom_information) ) @@ -1531,7 +1525,7 @@ def resseq_reindex(self): start = index_of_change[t] end = index_of_change[t + 1] self.parent_molecule.information.atom_information["resseq"][ - numpy.arange(start, end, 1, dtype="int") + np.arange(start, end, 1, dtype="int") ] = count count = count + 1 @@ -1542,9 +1536,9 @@ class AtomsAndBonds: def __init__(self, parent_molecule_object): """Initializes the pymolecule.AtomsAndBonds class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Args: + parent_molecule_object: The pymolecule.Molecule object + associated with this class. """ @@ -1556,11 +1550,11 @@ def create_bonds_by_distance( """Determines which atoms are bound to each other based on their proximity. - Arguments: - remove_old_bond_data -- An optional boolean, whether or not to + Args: + remove_old_bond_data: An optional boolean, whether or not to discard old bond data before adding in bonds determined by distance. True by default. - delete_excessive_bonds -- An optional boolean, whether or not to + delete_excessive_bonds: An optional boolean, whether or not to check for and delete excessive bonds. True by default. """ @@ -1570,7 +1564,7 @@ def create_bonds_by_distance( remove_old_bond_data == True or self.parent_molecule.information.bonds is None ): - self.parent_molecule.information.bonds = numpy.zeros( + self.parent_molecule.information.bonds = np.zeros( ( len(self.parent_molecule.information.atom_information), len(self.parent_molecule.information.atom_information), @@ -1578,7 +1572,7 @@ def create_bonds_by_distance( ) # get the longest bond length on record - max_bond_length = numpy.max( + max_bond_length = np.max( [ self.parent_molecule.information.constants["bond_length_dict"][key] for key in list( @@ -1593,7 +1587,7 @@ def create_bonds_by_distance( distances = scipy.spatial.distance.squareform( pdist(self.parent_molecule.information.coordinates) ) - ones_to_consider = numpy.nonzero(distances < max_bond_length) + ones_to_consider = np.nonzero(distances < max_bond_length) for index in range(len(ones_to_consider[0])): index1 = ones_to_consider[0][index] @@ -1649,7 +1643,7 @@ def create_bonds_by_distance( ][index] bond_partner_indices = ( self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([index]) + np.array([index]) ) ) number_of_bonds = len(bond_partner_indices) @@ -1667,7 +1661,7 @@ def create_bonds_by_distance( # get the ideal distances of those bonds initialize # the vector - ideal_dists = numpy.empty(len(dists)) + ideal_dists = np.empty(len(dists)) # populate the ideal-bond-length vector for t in range(len(bond_partner_indices)): @@ -1682,21 +1676,21 @@ def create_bonds_by_distance( ][element + "-" + element_partner] # print element, element_partner - diff = numpy.absolute(dists - ideal_dists) # get the distance + diff = np.absolute(dists - ideal_dists) # get the distance # identify the bonds to discard indices_in_order = diff.argsort() - indicies_to_throw_out = indices_in_order[ + indices_to_throw_out = indices_in_order[ self.parent_molecule.information.constants[ "max_number_of_bonds_permitted" ][element] : ] - indicies_to_throw_out = bond_partner_indices[ - indicies_to_throw_out + indices_to_throw_out = bond_partner_indices[ + indices_to_throw_out ] # discard the extra bonds - for throw_out_index in indicies_to_throw_out: + for throw_out_index in indices_to_throw_out: self.parent_molecule.information.bonds[index][ throw_out_index ] = 0 @@ -1711,12 +1705,12 @@ def number_of_bond_partners_of_element(self, atom_index, the_element): """Counts the number of atoms of a given element bonded to a specified atom of interest. - Arguments: - atom_index -- An int, the index of the atom of interest. - the_element -- A string describing the element of the neighbors to + Args: + atom_index: An int, the index of the atom of interest. + the_element: A string describing the element of the neighbors to be counted. - Returns: + Returns: An int, the number of neighboring atoms of the specified element. """ @@ -1728,24 +1722,24 @@ def number_of_bond_partners_of_element(self, atom_index, the_element): the_element = the_element.strip() bond_partners_selection = ( self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([atom_index]) + np.array([atom_index]) ) ) elements = self.parent_molecule.information.atom_information[ "element_stripped" ][bond_partners_selection] - return len(numpy.nonzero(elements == the_element)[0]) + return len(np.nonzero(elements == the_element)[0]) def index_of_first_bond_partner_of_element(self, atom_index, the_element): """For a given atom of interest, returns the index of the first neighbor of a specified element. - Arguments: - atom_index -- An int, the index of the atom of interest. - the_element -- A string specifying the desired element of the + Args: + atom_index: An int, the index of the atom of interest. + the_element: A string specifying the desired element of the neighbor. - Returns: + Returns: An int, the index of the first neighbor atom of the specified element. If no such neighbor exists, returns -1. @@ -1758,20 +1752,20 @@ def index_of_first_bond_partner_of_element(self, atom_index, the_element): the_element = the_element.strip() bond_partners_selection = ( self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([atom_index]) + np.array([atom_index]) ) ) elements = self.parent_molecule.information.atom_information[ "element_stripped" ][bond_partners_selection] - return bond_partners_selection[numpy.nonzero(elements == the_element)[0]][0] + return bond_partners_selection[np.nonzero(elements == the_element)[0]][0] def delete_bond(self, index1, index2): """Deletes a bond. - Arguments: - index1 -- An int, the index of the first atom of the bonded pair. - index2 -- An int, the index of the second atom of the bonded pair. + Args: + index1: An int, the index of the first atom of the bonded pair. + index2: An int, the index of the second atom of the bonded pair. """ @@ -1781,10 +1775,10 @@ def delete_bond(self, index1, index2): def add_bond(self, index1, index2, order=1): """Adds a bond. - Arguments: - index1 -- An int, the index of the first atom of the bonded pair. - index2 -- An int, the index of the second atom of the bonded pair. - order -- An optional int, the order of the bond. 1 by default. + Args: + index1: An int, the index of the first atom of the bonded pair. + index2: An int, the index of the second atom of the bonded pair. + order: An optional int, the order of the bond. 1 by default. """ @@ -1794,32 +1788,32 @@ def add_bond(self, index1, index2, order=1): def delete_atom(self, index): """Deletes an atom. - Arguments: - index -- An int, the index of the atom to delete. + Args: + index: An int, the index of the atom to delete. """ # remove the atom information - self.parent_molecule.information.atom_information = numpy.delete( + self.parent_molecule.information.atom_information = np.delete( self.parent_molecule.information.atom_information, index ) # remove the coordinates - self.parent_molecule.information.coordinates = numpy.delete( + self.parent_molecule.information.coordinates = np.delete( self.parent_molecule.information.coordinates, index, axis=0 ) try: - self.parent_molecule.information.coordinates_undo_point = numpy.delete( + self.parent_molecule.information.coordinates_undo_point = np.delete( self.parent_molecule.information.coordinates_undo_point, index, axis=0 ) except: pass # remove the relevant bonds - self.parent_molecule.information.bonds = numpy.delete( + self.parent_molecule.information.bonds = np.delete( self.parent_molecule.information.bonds, index, 0 ) - self.parent_molecule.information.bonds = numpy.delete( + self.parent_molecule.information.bonds = np.delete( self.parent_molecule.information.bonds, index, 1 ) @@ -1838,33 +1832,33 @@ def add_atom( tempfactor=0.0, charge="", element="X", - coordinates=numpy.array([0.0, 0.0, 0.0]), + coordinates=np.array([0.0, 0.0, 0.0]), ): """Adds an atom. - Arguments: - record_name -- An optional string, the record name of the atom. - "ATOM" is the default. - serial -- An optional int, the serial field of the atom. 1 is the - default. - name -- An optional string, the name of the atom. "X" is the - default. - resname -- An optional string, the resname of the atom. "XXX" is - the default. - chainid -- An optional string, chainid of the atom. "X" is the - default. - resseq -- An optional int, the resseq field of the atom. 1 is the - default. - occupancy -- An optional float, the occupancy of the atom. 0.0 is - the default. - tempfactor -- An optional float, the tempfactor of the atom. 0.0 - is the default. - charge -- An optional string, the charge of the atom. "" is the - default. - element -- An optional string, the element of the atom. "X" is the - default. - coordinates -- An optional numpy.array, the (x, y, z) coordinates - of the atom. numpy.array([0.0, 0.0, 0.0]) is the default. + Args: + record_name: An optional string, the record name of the atom. + "ATOM" is the default. + serial: An optional int, the serial field of the atom. 1 is the + default. + name: An optional string, the name of the atom. "X" is the + default. + resname: An optional string, the resname of the atom. "XXX" is + the default. + chainid: An optional string, chainid of the atom. "X" is the + default. + resseq: An optional int, the resseq field of the atom. 1 is the + default. + occupancy: An optional float, the occupancy of the atom. 0.0 is + the default. + tempfactor: An optional float, the tempfactor of the atom. 0.0 + is the default. + charge: An optional string, the charge of the atom. "" is the + default. + element: An optional string, the element of the atom. "X" is the + default. + coordinates: An optional np.array, the (x, y, z) coordinates + of the atom. np.array([0.0, 0.0, 0.0]) is the default. """ @@ -1900,7 +1894,7 @@ def add_atom( # if there is no atom_information, you need to create it. if self.parent_molecule.information.atom_information is None: - self.parent_molecule.information.atom_information = numpy.zeros( + self.parent_molecule.information.atom_information = np.zeros( (1,), dtype=[ ("record_name", "|S6"), @@ -1920,7 +1914,7 @@ def add_atom( ], ) - self.parent_molecule.information.atom_information = numpy.ma.resize( + self.parent_molecule.information.atom_information = np.ma.resize( self.parent_molecule.information.atom_information, self.parent_molecule.information.total_number_of_atoms() + 1, ) @@ -1954,30 +1948,30 @@ def add_atom( # now add the coordinates if self.parent_molecule.information.coordinates is None: - self.parent_molecule.information.coordinates = numpy.array([coordinates]) + self.parent_molecule.information.coordinates = np.array([coordinates]) else: - self.parent_molecule.information.coordinates = numpy.vstack( + self.parent_molecule.information.coordinates = np.vstack( (self.parent_molecule.information.coordinates, coordinates) ) # now add places for bonds, though bonds will only be added if done # explicitly, not here if self.parent_molecule.information.bonds is None: - self.parent_molecule.information.bonds = numpy.array([[0]]) + self.parent_molecule.information.bonds = np.array([[0]]) else: - self.parent_molecule.information.bonds = numpy.vstack( + self.parent_molecule.information.bonds = np.vstack( ( self.parent_molecule.information.bonds, - numpy.zeros( + np.zeros( self.parent_molecule.information.total_number_of_atoms() - 1 ), ) ) - self.parent_molecule.information.bonds = numpy.hstack( + self.parent_molecule.information.bonds = np.hstack( ( self.parent_molecule.information.bonds, - numpy.zeros( + np.zeros( (1, self.parent_molecule.information.total_number_of_atoms()) ).T, ) @@ -1991,9 +1985,9 @@ class Selections: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Selections class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object associated - with this class. + Args: + parent_molecule_object: The pymolecule.Molecule object associated + with this class. """ @@ -2002,25 +1996,25 @@ def __init__(self, parent_molecule_object): def select_atoms(self, selection_criteria): """Select a set of atoms based on user-specified criteria. - Arguments: - selection_criteria -- An dictionary, where the keys correspond to - keys in the self.parent_molecule.information.atom_information - structured numpy array, and the values are lists of acceptable - matches. The selection is a logical "AND" between dictionary - entries, but "OR" within the value lists themselves. For - example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} - would select all atoms with the names CA or O that are located - in the PRO residues of chain A. + Args: + selection_criteria: An dictionary, where the keys correspond to + keys in the self.parent_molecule.information.atom_information + structured numpy array, and the values are lists of acceptable + matches. The selection is a logical "AND" between dictionary + entries, but "OR" within the value lists themselves. For + example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} + would select all atoms with the names CA or O that are located + in the PRO residues of chain A. Returns: - A numpy.array containing the indices of the atoms of the - selection. + A np.array containing the indices of the atoms of the + selection. """ try: # start assuming everything is selected - selection = numpy.ones( + selection = np.ones( len(self.parent_molecule.information.atom_information), dtype=bool ) @@ -2042,20 +2036,20 @@ def select_atoms(self, selection_criteria): # "or" all the vals together start assuming nothing is # selected - subselection = numpy.zeros( + subselection = np.zeros( len(self.parent_molecule.information.atom_information), dtype=bool ) for val in vals: - subselection = numpy.logical_or( + subselection = np.logical_or( subselection, (self.parent_molecule.information.atom_information[key] == val), ) # now "and" that with everything else - selection = numpy.logical_and(selection, subselection) + selection = np.logical_and(selection, subselection) # now get the indices of the selection - return numpy.nonzero(selection)[0] + return np.nonzero(selection)[0] except: print("ERROR: Could not make the selection. Existing fields:") print( @@ -2069,58 +2063,58 @@ def select_atoms(self, selection_criteria): def select_atoms_in_bounding_box(self, bounding_box): """Selects all the atoms that are within a bounding box. - Arguments: - bounding_box -- A 2x3 numpy.array containing the minimum and - maximum points of the bounding box. Example: - numpy.array([[min_x, min_y, min_z], [max_x, max_y, max_z]]). + Args: + bounding_box: A 2x3 np.array containing the minimum and + maximum points of the bounding box. Example: + np.array([[min_x, min_y, min_z], [max_x, max_y, max_z]]). Returns: - A numpy.array containing the indices of the atoms that are within - the bounding box. + A np.array containing the indices of the atoms that are within + the bounding box. """ min_pt = bounding_box[0] max_pt = bounding_box[1] - sel1 = numpy.nonzero( + sel1 = np.nonzero( (self.parent_molecule.information.coordinates[:, 0] > min_pt[0]) )[0] - sel2 = numpy.nonzero( + sel2 = np.nonzero( (self.parent_molecule.information.coordinates[:, 0] < max_pt[0]) )[0] - sel3 = numpy.nonzero( + sel3 = np.nonzero( (self.parent_molecule.information.coordinates[:, 1] > min_pt[1]) )[0] - sel4 = numpy.nonzero( + sel4 = np.nonzero( (self.parent_molecule.information.coordinates[:, 1] < max_pt[1]) )[0] - sel5 = numpy.nonzero( + sel5 = np.nonzero( (self.parent_molecule.information.coordinates[:, 2] > min_pt[2]) )[0] - sel6 = numpy.nonzero( + sel6 = np.nonzero( (self.parent_molecule.information.coordinates[:, 2] < max_pt[2]) )[0] - sel = numpy.intersect1d(sel1, sel2) - sel = numpy.intersect1d(sel, sel3) - sel = numpy.intersect1d(sel, sel4) - sel = numpy.intersect1d(sel, sel5) - sel = numpy.intersect1d(sel, sel6) + sel = np.intersect1d(sel1, sel2) + sel = np.intersect1d(sel, sel3) + sel = np.intersect1d(sel, sel4) + sel = np.intersect1d(sel, sel5) + sel = np.intersect1d(sel, sel6) return sel def select_all_atoms_bound_to_selection(self, selection): """Selects all the atoms that are bound to a user-specified selection. - Arguments: - selection -- A numpy.array containing the indices of the - user-specified selection. + Args: + selection: A np.array containing the indices of the + user-specified selection. Returns: - A numpy.array containing the indices of the atoms that are bound - to the user-specified selection. Note that this new selection - does not necessarily include the indices of the original - user-specified selection. + A np.array containing the indices of the atoms that are bound + to the user-specified selection. Note that this new selection + does not necessarily include the indices of the original + user-specified selection. """ @@ -2131,7 +2125,7 @@ def select_all_atoms_bound_to_selection(self, selection): return bonds_to_consider = self.parent_molecule.information.bonds[selection] - return numpy.unique(numpy.nonzero(bonds_to_consider)[1]) + return np.unique(np.nonzero(bonds_to_consider)[1]) def select_branch(self, root_atom_index, directionality_atom_index): """Identify an isolated "branch" of a molecular model. Assumes the @@ -2139,14 +2133,14 @@ def select_branch(self, root_atom_index, directionality_atom_index): bound to one another and that the branch starts at root_atom_index one and "points" in the direction of directionality_atom_index. - Arguments: - root_atom_index -- An int, the index of the first atom in the branch - (the "root"). - directionality_atom_index -- An int, the index of the second atom in - the branch, used to establish directionality + Args: + root_atom_index: An int, the index of the first atom in the branch + (the "root"). + directionality_atom_index: An int, the index of the second atom in + the branch, used to establish directionality Returns: - A numpy array containing the indices of the atoms of the branch. + A numpy array containing the indices of the atoms of the branch. """ @@ -2161,7 +2155,7 @@ def select_branch(self, root_atom_index, directionality_atom_index): # Make sure atoms are neighboring if not directionality_atom_index in self.select_all_atoms_bound_to_selection( - numpy.array([root_atom_index]) + np.array([root_atom_index]) ): print( "The root and directionality atoms, with indices " @@ -2180,7 +2174,7 @@ def select_branch(self, root_atom_index, directionality_atom_index): # create an "empty" array to store the indices of the connected atoms # can't know ahead of time what size, so let's use a python list # # -99999 * - # numpy.ones(len(self.parent_molecule.information.coordinates), + # np.ones(len(self.parent_molecule.information.coordinates), # dtype=int) # assume initially that all the atoms belong to this # molecule. this list will be shortened, possibly, later if that # assumption is incorrect. @@ -2195,19 +2189,19 @@ def select_branch(self, root_atom_index, directionality_atom_index): neighbors_indices = ( self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([current_atom_index]) + np.array([current_atom_index]) ) ) # get the ones in neighbors_indices that are not in # indices_of_this_molecule - new_ones = numpy.setdiff1d(neighbors_indices, indices_of_this_branch) + new_ones = np.setdiff1d(neighbors_indices, indices_of_this_branch) indices_of_this_branch.extend(new_ones) # prepare to look at the next atom in the list current_index = current_index + 1 - return numpy.array(indices_of_this_branch) + return np.array(indices_of_this_branch) def select_atoms_from_same_molecule(self, selection): """Selects all the atoms that belong to the same molecule as a @@ -2215,12 +2209,12 @@ def select_atoms_from_same_molecule(self, selection): actually contains multiple physically distinct molecules that are not bound to each other via covalent bonds. - Arguments: - selection -- A numpy.array containing the indices of the + Args: + selection: A np.array containing the indices of the user-defined selection. - Returns: - A numpy.array containing the indices of the atoms belonging to the + Returns: + A np.array containing the indices of the atoms belonging to the same molecules as the atoms of the user-defined selection. """ @@ -2246,7 +2240,7 @@ def select_atoms_from_same_molecule(self, selection): # create an "empty" array to store the indices of the connected # atoms can't know ahead of time what size, so let's use a python # list # -99999 * - # numpy.ones(len(self.parent_molecule.information.coordinates), + # np.ones(len(self.parent_molecule.information.coordinates), # dtype=int) # assume initially that all the atoms belong to this # molecule. this list will be shortened, possibly, later if that # assumption is incorrect. @@ -2261,13 +2255,13 @@ def select_atoms_from_same_molecule(self, selection): neighbors_indices = ( self.parent_molecule.selections.select_all_atoms_bound_to_selection( - numpy.array([current_atom_index]) + np.array([current_atom_index]) ) ) # get the ones in neighbors_indices that are not in # indices_of_this_molecule - new_ones = numpy.setdiff1d(neighbors_indices, indices_of_this_molecule) + new_ones = np.setdiff1d(neighbors_indices, indices_of_this_molecule) indices_of_this_molecule.extend(new_ones) # prepare to look at the next atom in the list @@ -2279,7 +2273,7 @@ def select_atoms_from_same_molecule(self, selection): indices.append(indices_of_this_molecule) # now merge and remove redundancies - return numpy.unique(numpy.hstack(indices)) + return np.unique(np.hstack(indices)) def get_selections_of_constituent_molecules(self): """Identifies the indices of atoms belonging to separate molecules, @@ -2287,8 +2281,8 @@ def get_selections_of_constituent_molecules(self): physically distinct molecules that are not bound to each other via covalent bonds. - Returns: - A python list of numpy.array objects containing the indices of the + Returns: + A python list of np.array objects containing the indices of the atoms belonging to each molecule of the composite pymolecule.Molecule object. @@ -2305,11 +2299,11 @@ def get_selections_of_constituent_molecules(self): # add the atoms in the same molecule as the first atom in # atoms_not_yet_considered this_molecule_atoms = self.select_atoms_from_same_molecule( - numpy.array([atoms_not_yet_considered[0]]) + np.array([atoms_not_yet_considered[0]]) ) # now remove these from the atoms_not_yet_considered list - atoms_not_yet_considered = numpy.setxor1d( + atoms_not_yet_considered = np.setxor1d( this_molecule_atoms, atoms_not_yet_considered, True ) @@ -2322,13 +2316,13 @@ def select_atoms_near_other_selection(self, selection, cutoff): """Selects all atoms that are near the atoms of a user-defined selection. - Arguments: - selection -- A numpy.array containing the indices of the + Args: + selection: A np.array containing the indices of the user-defined selection. - cutoff -- A float, the distance cutoff (in Angstroms). + cutoff: A float, the distance cutoff (in Angstroms). - Returns: - A numpy.array containing the indices of all atoms near the + Returns: + A np.array containing the indices of all atoms near the user-defined selection, not including the atoms of the user-defined selection themselves. @@ -2344,9 +2338,7 @@ def select_atoms_near_other_selection(self, selection, cutoff): inversion_coors = self.parent_molecule.information.coordinates[invert_selection] indices_of_nearby = invert_selection[ - numpy.unique( - numpy.nonzero(cdist(inversion_coors, selection_coors) < cutoff)[0] - ) + np.unique(np.nonzero(cdist(inversion_coors, selection_coors) < cutoff)[0]) ] return indices_of_nearby @@ -2355,50 +2347,50 @@ def select_atoms_in_same_residue(self, selection): of a user-defined seleciton. Residues are considered unique if they have a unique combination of resname, resseq, and chainid fields. - Arguments: - selection -- A numpy.array containing the indices of the + Args: + selection: A np.array containing the indices of the user-defined selection. - Returns: - A numpy.array containing the indices of all atoms in the same + Returns: + A np.array containing the indices of all atoms in the same residue as any of the atoms of the user-defined selection. """ # get string ids representing the residues of all atoms - keys = numpy.char.add( + keys = np.char.add( self.parent_molecule.information.atom_information["resname_stripped"], "-" ) - keys = numpy.char.add( + keys = np.char.add( keys, - numpy.array( + np.array( [ str(t) for t in self.parent_molecule.information.atom_information["resseq"] ] ), ) - keys = numpy.char.add(keys, "-") - keys = numpy.char.add( + keys = np.char.add(keys, "-") + keys = np.char.add( keys, self.parent_molecule.information.atom_information["chainid_stripped"] ) # get the unique keys of the selection - unique_keys_of_selection = numpy.unique(keys[selection]) + unique_keys_of_selection = np.unique(keys[selection]) # now get all the atoms of these selection keys # the below works, but is slow for large systems # residues = self.parent_molecule.selections.get_residue_selections() - # new_selection = numpy.array([], dtype=int) + # new_selection = np.array([], dtype=int) # for key in unique_keys_of_selection: # print key - # new_selection = numpy.append(new_selection, residues[key]) + # new_selection = np.append(new_selection, residues[key]) # let's use this instead, faster for large systems. - new_selection = numpy.array([], dtype=int) + new_selection = np.array([], dtype=int) for key in unique_keys_of_selection: - new_selection = numpy.append(new_selection, numpy.nonzero(keys == key)[0]) + new_selection = np.append(new_selection, np.nonzero(keys == key)[0]) return new_selection @@ -2406,29 +2398,29 @@ def invert_selection(self, selection): """Inverts a user-defined selection (i.e., identifies all atoms that are not in the seleciton). - Arguments: - selection -- A numpy.array containing the indices of the + Args: + selection: A np.array containing the indices of the user-defined selection. - Returns: - A numpy.array containing the indices of all atoms that are not in + Returns: + A np.array containing the indices of all atoms that are not in the user-defined seleciton. """ # selection is a list of atom indices - all_atoms = numpy.arange( + all_atoms = np.arange( 0, len(self.parent_molecule.information.atom_information), 1, dtype=int ) - remaining_indicies = numpy.delete(all_atoms, selection) - return remaining_indicies + remaining_indices = np.delete(all_atoms, selection) + return remaining_indices def select_all(self): """Selects all the atoms in a pymolecule.Molecule object. Returns: - A numpy.array containing the indices of all atoms in the - pymolecule.Molecule object. + A np.array containing the indices of all atoms in the + pymolecule.Molecule object. """ @@ -2440,19 +2432,19 @@ def select_close_atoms_from_different_molecules( """Effectively detects steric clashes between self and another pymolecule.Molecule. - Arguments - other_mol -- A pymolecule.Molecule object of the other molecule. - cutoff -- A float, the user-defined distance cutoff in Angstroms. - pairwise_comparison -- An optional boolean, whether or not to + Args: + other_mol: A pymolecule.Molecule object of the other molecule. + cutoff: A float, the user-defined distance cutoff in Angstroms. + pairwise_comparison: An optional boolean, whether or not to perform a simple pairwise distance comparison (if True) or to use a more sophisitcated method (if False). True by default. terminate_early = An optional boolean, whether or not to stop looking for steric clashes once one is found. False by default. - Returns: - A tuple containing two elements. The first is a numpy.array + Returns: + A tuple containing two elements. The first is a np.array containing the indices of all nearby atoms from this - pymolecule.Molecule object (self). The second is a numpy.array + pymolecule.Molecule object (self). The second is a np.array containing the indices of all nearby atoms from the other molecule. @@ -2464,37 +2456,33 @@ def select_close_atoms_from_different_molecules( self.parent_molecule.information.coordinates, other_mol.information.coordinates, ) - close_ones = numpy.nonzero(dists < cutoff) - close_ones_from_mol_parent_molecule = numpy.unique(close_ones[0]) - close_ones_from_mol_other_mol = numpy.unique(close_ones[1]) + close_ones = np.nonzero(dists < cutoff) + close_ones_from_mol_parent_molecule = np.unique(close_ones[0]) + close_ones_from_mol_other_mol = np.unique(close_ones[1]) return (close_ones_from_mol_parent_molecule, close_ones_from_mol_other_mol) else: # so do the more complex hierarchical comparison # first, do some quick and easy checks - margin = numpy.array([cutoff, cutoff, cutoff]) - self_min = ( - numpy.min(self.parent_molecule.information.coordinates, 0) - margin - ) - other_mol_max = numpy.max(other_mol.information.coordinates, 0) + margin + margin = np.array([cutoff, cutoff, cutoff]) + self_min = np.min(self.parent_molecule.information.coordinates, 0) - margin + other_mol_max = np.max(other_mol.information.coordinates, 0) + margin if self_min[0] > other_mol_max[0]: - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) if self_min[1] > other_mol_max[1]: - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) if self_min[2] > other_mol_max[2]: - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) - self_max = ( - numpy.max(self.parent_molecule.information.coordinates, 0) + margin - ) - other_mol_min = numpy.min(other_mol.information.coordinates, 0) - margin + self_max = np.max(self.parent_molecule.information.coordinates, 0) + margin + other_mol_min = np.min(other_mol.information.coordinates, 0) - margin if other_mol_min[0] > self_max[0]: - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) if other_mol_min[1] > self_max[1]: - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) if other_mol_min[2] > self_max[2]: - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) # now assign spheres to the whole molecule, the chains, the # residues note that this won't recalculate the data if it's @@ -2513,11 +2501,11 @@ def select_close_atoms_from_different_molecules( "center" ] other_rad = other_mol.information.hierarchy["spheres"]["molecule"]["radius"] - mol_dist = numpy.linalg.norm(self_cent - other_cent) + mol_dist = np.linalg.norm(self_cent - other_cent) if mol_dist > self_rad + other_rad + cutoff: # the molecules are too far away to clash - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) # check the chains chain_distances = cdist( @@ -2526,9 +2514,9 @@ def select_close_atoms_from_different_molecules( ], other_mol.information.hierarchy["spheres"]["chains"]["centers"], ) - sum1_matrix = numpy.hstack( + sum1_matrix = np.hstack( [ - numpy.array( + np.array( [ self.parent_molecule.information.hierarchy["spheres"][ "chains" @@ -2544,9 +2532,9 @@ def select_close_atoms_from_different_molecules( ) ] ) - sum2_matrix = numpy.vstack( + sum2_matrix = np.vstack( [ - numpy.array( + np.array( [other_mol.information.hierarchy["spheres"]["chains"]["radii"]] ) for t in range( @@ -2559,11 +2547,11 @@ def select_close_atoms_from_different_molecules( ] ) sum_matrix = sum1_matrix + sum2_matrix + cutoff - indicies_of_clashing_chains = numpy.nonzero(chain_distances < sum_matrix) + indices_of_clashing_chains = np.nonzero(chain_distances < sum_matrix) - if len(indicies_of_clashing_chains[0]) == 0: + if len(indices_of_clashing_chains[0]) == 0: # the chains don't clash, so no atoms can either - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) # check the residues residue_distances = cdist( @@ -2572,9 +2560,9 @@ def select_close_atoms_from_different_molecules( ], other_mol.information.hierarchy["spheres"]["residues"]["centers"], ) - sum1_matrix = numpy.hstack( + sum1_matrix = np.hstack( [ - numpy.array( + np.array( [ self.parent_molecule.information.hierarchy["spheres"][ "residues" @@ -2590,9 +2578,9 @@ def select_close_atoms_from_different_molecules( ) ] ) - sum2_matrix = numpy.vstack( + sum2_matrix = np.vstack( [ - numpy.array( + np.array( [ other_mol.information.hierarchy["spheres"]["residues"][ "radii" @@ -2610,21 +2598,19 @@ def select_close_atoms_from_different_molecules( ) sum_matrix = sum1_matrix + sum2_matrix + cutoff - indicies_of_clashing_residues = numpy.nonzero( - residue_distances < sum_matrix - ) + indices_of_clashing_residues = np.nonzero(residue_distances < sum_matrix) - if len(indicies_of_clashing_residues[0]) == 0: + if len(indices_of_clashing_residues[0]) == 0: # the residues don't clash, so no atoms can either - return (numpy.array([]), numpy.array([])) + return (np.array([]), np.array([])) # now time to check the atoms - self_close_atom_indices = numpy.array([], dtype=int) - other_close_atom_indices = numpy.array([], dtype=int) + self_close_atom_indices = np.array([], dtype=int) + other_close_atom_indices = np.array([], dtype=int) - for i in range(len(indicies_of_clashing_residues[0])): - self_res_index = indicies_of_clashing_residues[0][i] - other_res_index = indicies_of_clashing_residues[1][i] + for i in range(len(indices_of_clashing_residues[0])): + self_res_index = indices_of_clashing_residues[0][i] + other_res_index = indices_of_clashing_residues[1][i] self_res_name = self.parent_molecule.information.hierarchy["spheres"][ "residues" @@ -2633,29 +2619,29 @@ def select_close_atoms_from_different_molecules( "keys" ][other_res_index] - self_res_indicies = self.parent_molecule.information.hierarchy[ + self_res_indices = self.parent_molecule.information.hierarchy[ "residues" ]["indices"][self_res_name] - other_res_indicies = other_mol.information.hierarchy["residues"][ + other_res_indices = other_mol.information.hierarchy["residues"][ "indices" ][other_res_name] self_coors = self.parent_molecule.information.coordinates[ - self_res_indicies + self_res_indices ] - other_coors = other_mol.information.coordinates[other_res_indicies] + other_coors = other_mol.information.coordinates[other_res_indices] - some_self_indices, some_other_indices = numpy.nonzero( + some_self_indices, some_other_indices = np.nonzero( cdist(self_coors, other_coors) < cutoff ) if ( len(some_self_indices) != 0 or len(some_other_indices) != 0 ): # so there are some - self_close_atom_indices = numpy.append( - self_close_atom_indices, self_res_indicies[some_self_indices] + self_close_atom_indices = np.append( + self_close_atom_indices, self_res_indices[some_self_indices] ) - other_close_atom_indices = numpy.append( - other_close_atom_indices, other_res_indicies[some_other_indices] + other_close_atom_indices = np.append( + other_close_atom_indices, other_res_indices[some_other_indices] ) if ( @@ -2665,8 +2651,8 @@ def select_close_atoms_from_different_molecules( # so nothing was found in the end return ( - numpy.unique(self_close_atom_indices), - numpy.unique(other_close_atom_indices), + np.unique(self_close_atom_indices), + np.unique(other_close_atom_indices), ) def create_molecule_from_selection( @@ -2674,17 +2660,17 @@ def create_molecule_from_selection( ): """Creates a pymolecule.Molecule from a user-defined atom selection. - Arguments - selection -- A numpy.array containing the indices of the atoms in - the user-defined selection. - serial_reindex -- An optional boolean, whether or not to reindex - the atom serial fields. Default is True. - resseq_reindex -- An optional boolean, whether or not to reindex - the atom resseq fields. Default is False. + Args: + selection: A np.array containing the indices of the atoms in + the user-defined selection. + serial_reindex: An optional boolean, whether or not to reindex + the atom serial fields. Default is True. + resseq_reindex: An optional boolean, whether or not to reindex + the atom resseq fields. Default is False. Returns: - A pymolecule.Molecule object containing the atoms of the - user-defined selection. + A pymolecule.Molecule object containing the atoms of the + user-defined selection. """ @@ -2726,7 +2712,7 @@ def copy(self): """Returns an exact copy (pymolecule.Molecule) of this Molecule object. Undo points are NOT copied. - Returns: + Returns: A pymolecule.Molecule, containing to the same atomic information as this pymolecule.Molecule object. @@ -2768,15 +2754,15 @@ def get_chain_selections(self): """Identifies the atom selections of each chain. Returns: - A dictionary. The keys of the dictionary correspond to the - chainids, and the values are numpy.array objects containing the - indices of the associated chain atoms. + A dictionary. The keys of the dictionary correspond to the + chainids, and the values are np.array objects containing the + indices of the associated chain atoms. """ # so it hasn't already been calculated if not "chains" in list(self.parent_molecule.information.hierarchy.keys()): - unique_chainids = numpy.unique( + unique_chainids = np.unique( self.parent_molecule.information.atom_information["chainid_stripped"] ) @@ -2795,23 +2781,23 @@ def get_residue_selections(self): """Identifies the atom selections of each residue. Returns: - A dictionary. The keys of this dictionary correspond to the unique - resname-resseq-chainid residue identifiers, and the values are - numpy.array objects containing the indices of the associated - residue atoms. + A dictionary. The keys of this dictionary correspond to the unique + resname-resseq-chainid residue identifiers, and the values are + np.array objects containing the indices of the associated + residue atoms. """ # so it hasn't already been calculated if not "residues" in list(self.parent_molecule.information.hierarchy.keys()): - keys = numpy.char.add( + keys = np.char.add( self.parent_molecule.information.atom_information["resname_stripped"], "-", ) - keys = numpy.char.add( + keys = np.char.add( keys, - numpy.array( + np.array( [ str(t) for t in self.parent_molecule.information.atom_information[ @@ -2820,13 +2806,13 @@ def get_residue_selections(self): ] ), ) - keys = numpy.char.add(keys, "-") - keys = numpy.char.add( + keys = np.char.add(keys, "-") + keys = np.char.add( keys, self.parent_molecule.information.atom_information["chainid_stripped"], ) - unique_resnames = numpy.unique(keys) + unique_resnames = np.unique(keys) self.parent_molecule.information.hierarchy["residues"] = {} self.parent_molecule.information.hierarchy["residues"]["indices"] = {} @@ -2854,9 +2840,9 @@ class Manipulation: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Manipulation class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object associated - with this class. + Args: + parent_molecule_object: The pymolecule.Molecule object associated + with this class. """ @@ -2883,18 +2869,19 @@ def set_atom_location(self, atom_index, new_location): """Translates the entire molecular model (without rotating) so that the atom with the specified index is located at the specified coordinate. - Arguments: - atom_index -- An int, the index of the target atom. - new_location -- A numpy.array specifying the new (x, y, z) + Args: + atom_index: An int, the index of the target atom. + new_location: A np.array specifying the new (x, y, z) coordinate of the specified atom. - Returns: A numpy.array specifying the (delta_x, delta_y, delta_z) + Returns: + A np.array specifying the (delta_x, delta_y, delta_z) vector by which the pmolecule.Molecule was translated. """ if new_location.shape == (3,): - new_location = numpy.array([new_location]) + new_location = np.array([new_location]) currentloc = self.parent_molecule.information.coordinates[atom_index] delta = new_location - currentloc @@ -2934,14 +2921,14 @@ def translate_molecule(self, delta): """Translate all the atoms of the molecular model by a specified vector. - Arguments: - delta -- A numpy.array (delta_x, delta_y, delta_z) specifying the - amount to move each atom along the x, y, and z coordinates. + Args: + delta: A np.array (delta_x, delta_y, delta_z) specifying the + amount to move each atom along the x, y, and z coordinates. """ if delta.shape == (3,): - delta = numpy.array([delta]) + delta = np.array([delta]) self.parent_molecule.information.coordinates = ( self.parent_molecule.information.coordinates + delta @@ -2980,12 +2967,12 @@ def rotate_molecule_around_a_line_between_points( """Rotate the molecular model about a line segment. The end points of the line segment are explicitly specified coordinates. - Arguments: - line_point1 -- A numpy.array (x, y, z) corresponding to one end of + Args: + line_point1: A np.array (x, y, z) corresponding to one end of the line segment. - line_point2 -- A numpy.array (x, y, z) corresponding to the other + line_point2: A np.array (x, y, z) corresponding to the other end of the line segment. - rotate -- A float, the angle of rotation, in radians. + rotate: A float, the angle of rotation, in radians. """ @@ -3007,15 +2994,15 @@ def rotate_molecule_around_a_line_between_points( v = delta[1] # e-b w = delta[2] # f-c - v_2_plus_w_2 = numpy.power(v, 2) + numpy.power(w, 2) - u_2_plus_w_2 = numpy.power(u, 2) + numpy.power(w, 2) - u_2_plus_v_2 = numpy.power(u, 2) + numpy.power(v, 2) - u_2_plus_v_2_plus_w_2 = u_2_plus_v_2 + numpy.power(w, 2) + v_2_plus_w_2 = np.power(v, 2) + np.power(w, 2) + u_2_plus_w_2 = np.power(u, 2) + np.power(w, 2) + u_2_plus_v_2 = np.power(u, 2) + np.power(v, 2) + u_2_plus_v_2_plus_w_2 = u_2_plus_v_2 + np.power(w, 2) - cos = numpy.cos(rotate) - sin = numpy.sin(rotate) + cos = np.cos(rotate) + sin = np.sin(rotate) - ux_plus_vy_plus_wz = numpy.sum( + ux_plus_vy_plus_wz = np.sum( self.parent_molecule.information.coordinates * delta, 1 ) @@ -3038,7 +3025,7 @@ def rotate_molecule_around_a_line_between_points( + v_2_plus_w_2 * x_not ) * cos - + numpy.sqrt(u_2_plus_v_2_plus_w_2) + + np.sqrt(u_2_plus_v_2_plus_w_2) * (-c * v + b * w - w * y_not + v * z_not) * sin ) # /u_2_plus_v_2_plus_w_2 @@ -3051,7 +3038,7 @@ def rotate_molecule_around_a_line_between_points( + u_2_plus_w_2 * y_not ) * cos - + numpy.sqrt(u_2_plus_v_2_plus_w_2) + + np.sqrt(u_2_plus_v_2_plus_w_2) * (c * u - a * w + w * x_not - u * z_not) * sin ) # /u_2_plus_v_2_plus_w_2 @@ -3064,7 +3051,7 @@ def rotate_molecule_around_a_line_between_points( + u_2_plus_v_2 * z_not ) * cos - + numpy.sqrt(u_2_plus_v_2_plus_w_2) + + np.sqrt(u_2_plus_v_2_plus_w_2) * (-b * u + a * v - v * x_not + u * y_not) * sin ) # /u_2_plus_v_2_plus_w_2 @@ -3087,12 +3074,12 @@ def rotate_molecule_around_a_line_between_atoms( """Rotate the molecular model about a line segment. The end points of the line segment are atoms of specified indices. - Arguments: - line_point1_index -- An int, the index of the first atom at one end + Args: + line_point1_index: An int, the index of the first atom at one end of the line segment. - line_point2_index -- An int, the index of the second atom at the + line_point2_index: An int, the index of the second atom at the other end of the line segment. - rotate -- A float, the angle of rotation, in radians. + rotate: A float, the angle of rotation, in radians. """ @@ -3109,20 +3096,20 @@ def rotate_molecule_around_a_line_between_atoms( def rotate_molecule_around_pivot_point(self, pivot, thetax, thetay, thetaz): """Rotate the molecular model around a specified atom. - Arguments: - pivot -- A numpy.array, the (x, y, z) coordinate about which the - molecular model will be rotated. - thetax -- A float, the angle to rotate relative to the x axis, in - radians. - thetay -- A float, the angle to rotate relative to the y axis, in - radians. - thetaz -- A float, the angle to rotate relative to the z axis, in - radians. + Args: + pivot: A np.array, the (x, y, z) coordinate about which the + molecular model will be rotated. + thetax: A float, the angle to rotate relative to the x axis, in + radians. + thetay: A float, the angle to rotate relative to the y axis, in + radians. + thetaz: A float, the angle to rotate relative to the z axis, in + radians. """ if pivot.shape == (3,): - pivot = numpy.array([pivot]) + pivot = np.array([pivot]) # First, move the Molecule so the pivot is at the origin self.parent_molecule.information.coordinates = ( @@ -3130,14 +3117,14 @@ def rotate_molecule_around_pivot_point(self, pivot, thetax, thetay, thetaz): ) # do the rotation - sinx = numpy.sin(thetax) - siny = numpy.sin(thetay) - sinz = numpy.sin(thetaz) - cosx = numpy.cos(thetax) - cosy = numpy.cos(thetay) - cosz = numpy.cos(thetaz) - - rot_matrix = numpy.array( + sinx = np.sin(thetax) + siny = np.sin(thetay) + sinz = np.sin(thetaz) + cosx = np.cos(thetax) + cosy = np.cos(thetay) + cosz = np.cos(thetaz) + + rot_matrix = np.array( [ [ (cosy * cosz), @@ -3152,7 +3139,7 @@ def rotate_molecule_around_pivot_point(self, pivot, thetax, thetay, thetaz): [siny, -(sinx * cosy), (cosx * cosy)], ] ) - self.parent_molecule.information.coordinates = numpy.dot( + self.parent_molecule.information.coordinates = np.dot( rot_matrix, self.parent_molecule.information.coordinates.T ).T @@ -3170,15 +3157,15 @@ def rotate_molecule_around_pivot_point(self, pivot, thetax, thetay, thetaz): def rotate_molecule_around_pivot_atom(self, pivot_index, thetax, thetay, thetaz): """Rotate the molecular model around a specified atom. - Arguments: - pivot_index -- An int, the index of the atom about which the - molecular model will be rotated. - thetax -- A float, the angle to rotate relative to the x axis, in - radians. - thetay -- A float, the angle to rotate relative to the y axis, in - radians. - thetaz -- A float, the angle to rotate relative to the z axis, in - radians. + Args: + pivot_index: An int, the index of the atom about which the + molecular model will be rotated. + thetax: A float, the angle to rotate relative to the x axis, in + radians. + thetay: A float, the angle to rotate relative to the y axis, in + radians. + thetaz: A float, the angle to rotate relative to the z axis, in + radians. """ @@ -3199,8 +3186,8 @@ class Geometry: def __init__(self, parent_molecule_object): """Initializes the pymolecule.Geometry class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object associated + Args: + parent_molecule_object: The pymolecule.Molecule object associated with this class. """ @@ -3208,18 +3195,18 @@ def __init__(self, parent_molecule_object): self.parent_molecule = parent_molecule_object def angle_between_three_points(self, pt1, pt2, pt3): - """Computes the angle (in radians) formed by three points (numpy.array + """Computes the angle (in radians) formed by three points (np.array objects). - Arguments - pt1 -- A numpy.array (x, y, z) representing the first of the three + Args: + pt1: A np.array (x, y, z) representing the first of the three 3D points. - pt2 -- A numpy.array (x, y, z) representing the second of the three + pt2: A np.array (x, y, z) representing the second of the three 3D points. - pt3 -- A numpy.array (x, y, z) representing the third of the three + pt3: A np.array (x, y, z) representing the third of the three 3D points. - Returns: + Returns: A float containing the angle between the three points, in radians. """ @@ -3227,8 +3214,8 @@ def angle_between_three_points(self, pt1, pt2, pt3): vector1 = pt1 - pt2 vector2 = pt3 - pt2 - vector1_mag = numpy.linalg.norm(vector1) - vector2_mag = numpy.linalg.norm(vector2) + vector1_mag = np.linalg.norm(vector1) + vector2_mag = np.linalg.norm(vector2) # Make sure vectors aren't <0,0,0> if vector1_mag < 1e-10 or vector2_mag < 1e-10: @@ -3237,7 +3224,7 @@ def angle_between_three_points(self, pt1, pt2, pt3): vector1 = vector1 / vector1_mag vector2 = vector2 / vector2_mag - dot_prod = numpy.dot(vector1, vector2) + dot_prod = np.dot(vector1, vector2) # Prevent errors that can rarely occur if dot_prod > 1.0: @@ -3245,19 +3232,19 @@ def angle_between_three_points(self, pt1, pt2, pt3): if dot_prod < -1.0: dot_prod = -1.0 - return numpy.arccos(dot_prod) + return np.arccos(dot_prod) def dihedral_angle(self, pt1, pt2, pt3, pt4): - """Calculates the dihedral angle formed by four points (numpy.array + """Calculates the dihedral angle formed by four points (np.array objects). - Arguments: - pt1 -- A numpy.array (x, y, z) representing the first 3D point. - pt2 -- A numpy.array (x, y, z) representing the second 3D point. - pt3 -- A numpy.array (x, y, z) representing the third 3D point. - pt4 -- A numpy.array (x, y, z) representing the fourth 3D point. + Args: + pt1: A np.array (x, y, z) representing the first 3D point. + pt2: A np.array (x, y, z) representing the second 3D point. + pt3: A np.array (x, y, z) representing the third 3D point. + pt4: A np.array (x, y, z) representing the fourth 3D point. - Returns: + Returns: A float containing the dihedral angle between the four points, in radians. @@ -3267,43 +3254,43 @@ def dihedral_angle(self, pt1, pt2, pt3, pt4): b2 = pt3 - pt2 b3 = pt4 - pt3 - b2Xb3 = numpy.cross(b2, b3) - b1Xb2 = numpy.cross(b1, b2) + b2Xb3 = np.cross(b2, b3) + b1Xb2 = np.cross(b1, b2) - b1XMagb2 = numpy.linalg.norm(b2) * b1 + b1XMagb2 = np.linalg.norm(b2) * b1 - return numpy.arctan2(numpy.dot(b1XMagb2, b2Xb3), numpy.dot(b1Xb2, b2Xb3)) + return np.arctan2(np.dot(b1XMagb2, b2Xb3), np.dot(b1Xb2, b2Xb3)) def is_planar(self, pt1, pt2, pt3, pt4, planarity_cutoff=0.2): - """Checks whether four points (numpy.array) lie in a common plane. + """Checks whether four points (np.array) lie in a common plane. - Arguments: - pt1 -- A numpy.array (x, y, z) representing a 3D point. - pt2 -- A numpy.array (x, y, z) representing a 3D point. - pt3 -- A numpy.array (x, y, z) representing a 3D point. - pt4 -- A numpy.array (x, y, z) representing a 3D point. - planarity_cutoff -- An optional float. How much the points can - deviate (in Angstroms) and still be considered planar. The - default is 0.2. + Args: + pt1: A np.array (x, y, z) representing a 3D point. + pt2: A np.array (x, y, z) representing a 3D point. + pt3: A np.array (x, y, z) representing a 3D point. + pt4: A np.array (x, y, z) representing a 3D point. + planarity_cutoff: An optional float. How much the points can + deviate (in Angstroms) and still be considered planar. The + default is 0.2. Returns: - A boolean, whether the 4 points can be considered planar. + A boolean, whether the 4 points can be considered planar. """ return self.planarity_deviation(pt1, pt2, pt3, pt4) < planarity_cutoff def planarity_deviation(self, pt1, pt2, pt3, pt4): - """Determines how close four points (numpy.array objects) come to lying + """Determines how close four points (np.array objects) come to lying in a common plane. - Arguments: - pt1 -- A numpy.array (x, y, z) representing a 3D point. - pt2 -- A numpy.array (x, y, z) representing a 3D point. - pt3 -- A numpy.array (x, y, z) representing a 3D point. - pt4 -- A numpy.array (x, y, z) representing a 3D point. + Args: + pt1: A np.array (x, y, z) representing a 3D point. + pt2: A np.array (x, y, z) representing a 3D point. + pt3: A np.array (x, y, z) representing a 3D point. + pt4: A np.array (x, y, z) representing a 3D point. - Returns: + Returns: A float, the minimum distance between one point and the plane formed by the other three. @@ -3333,10 +3320,10 @@ def planarity_deviation(self, pt1, pt2, pt3, pt4): + ((-x2) * ((y3 * z1) - (y1 * z3))) + ((-x3) * ((y1 * z2) - (y2 * z1))) ) - denom = numpy.sqrt(numpy.power(A, 2) + numpy.power(B, 2) + numpy.power(C, 2)) + denom = np.sqrt(np.power(A, 2) + np.power(B, 2) + np.power(C, 2)) if denom == 0: return 0 # implies straight line - distance1 = numpy.fabs((A * x4) + (B * y4) + (C * z4) + D) / denom + distance1 = np.fabs((A * x4) + (B * y4) + (C * z4) + D) / denom A1 = (y1 * (z2 - z4)) + (y2 * (z4 - z1)) + (y4 * (z1 - z2)) B1 = (z1 * (x2 - x4)) + (z2 * (x4 - x1)) + (z4 * (x1 - x2)) @@ -3346,8 +3333,8 @@ def planarity_deviation(self, pt1, pt2, pt3, pt4): + ((-x2) * ((y4 * z1) - (y1 * z4))) + ((-x4) * ((y1 * z2) - (y2 * z1))) ) - distance2 = (numpy.fabs((A1 * x3) + (B1 * y3) + (C1 * z3) + D1)) / ( - numpy.sqrt(numpy.power(A1, 2) + numpy.power(B1, 2) + numpy.power(C1, 2)) + distance2 = (np.fabs((A1 * x3) + (B1 * y3) + (C1 * z3) + D1)) / ( + np.sqrt(np.power(A1, 2) + np.power(B1, 2) + np.power(C1, 2)) ) A2 = (y1 * (z4 - z3)) + (y4 * (z3 - z1)) + (y3 * (z1 - z4)) @@ -3358,8 +3345,8 @@ def planarity_deviation(self, pt1, pt2, pt3, pt4): + ((-x4) * ((y3 * z1) - (y1 * z3))) + ((-x3) * ((y1 * z4) - (y4 * z1))) ) - distance3 = (numpy.fabs((A2 * x2) + (B2 * y2) + (C2 * z2) + D2)) / ( - numpy.sqrt(numpy.power(A2, 2) + numpy.power(B2, 2) + numpy.power(C2, 2)) + distance3 = (np.fabs((A2 * x2) + (B2 * y2) + (C2 * z2) + D2)) / ( + np.sqrt(np.power(A2, 2) + np.power(B2, 2) + np.power(C2, 2)) ) A3 = (y4 * (z2 - z3)) + (y2 * (z3 - z4)) + (y3 * (z4 - z2)) @@ -3370,11 +3357,11 @@ def planarity_deviation(self, pt1, pt2, pt3, pt4): + ((-x2) * ((y3 * z4) - (y4 * z3))) + ((-x3) * ((y4 * z2) - (y2 * z4))) ) - distance4 = (numpy.fabs((A3 * x1) + (B3 * y1) + (C3 * z1) + D3)) / ( - numpy.sqrt(numpy.power(A3, 2) + numpy.power(B3, 2) + numpy.power(C3, 2)) + distance4 = (np.fabs((A3 * x1) + (B3 * y1) + (C3 * z1) + D3)) / ( + np.sqrt(np.power(A3, 2) + np.power(B3, 2) + np.power(C3, 2)) ) - return numpy.min(numpy.array([distance1, distance2, distance3, distance4])) + return np.min(np.array([distance1, distance2, distance3, distance4])) class OtherMolecules: @@ -3384,9 +3371,9 @@ class OtherMolecules: def __init__(self, parent_molecule_object): """Initializes the pymolecule.OtherMolecules class. - Arguments: - parent_molecule_object -- The pymolecule.Molecule object - associated with this class. + Args: + parent_molecule_object: The pymolecule.Molecule object + associated with this class. """ @@ -3396,15 +3383,15 @@ def align_other_molecule_to_this(self, other_mol, tethers): """Aligns a molecule to self (this pymolecule.Molecule object) using a quaternion RMSD alignment. - Arguments: - other_mol -- A pymolecule.Molecule that is to be aligned to this + Args: + other_mol: A pymolecule.Molecule that is to be aligned to this one. - tethers -- A tuple of two numpy.array objects, where each array + tethers: A tuple of two np.array objects, where each array contains the indices of self and other_mol, respectively, such that equivalent atoms are listed in the same order. So, for example, if (atom 1, self = atom 3, other) and (atom2, self = - atom6, other) than the tethers would be (numpy.array([1,2]), - numpy.array([3,6])). + atom6, other) than the tethers would be (np.array([1,2]), + np.array([3,6])). """ @@ -3419,20 +3406,20 @@ def align_other_molecule_to_this(self, other_mol, tethers): other_dynamic_atom_coordinates = other_mol.information.coordinates[tethers[1]] # translate the tether atoms to the origin - center_self = numpy.mean(self_static_atom_coordinates, 0) - center_other = numpy.mean(other_dynamic_atom_coordinates, 0) + center_self = np.mean(self_static_atom_coordinates, 0) + center_other = np.mean(other_dynamic_atom_coordinates, 0) self_static_atom_coordinates = self_static_atom_coordinates - center_self other_dynamic_atom_coordinates = other_dynamic_atom_coordinates - center_other # get optimal rotation - M = numpy.dot( - numpy.transpose(self_static_atom_coordinates), + M = np.dot( + np.transpose(self_static_atom_coordinates), other_dynamic_atom_coordinates, ) # Create symmetric 4x4 matrix K from M - K = numpy.array( + K = np.array( [ [ M[0, 0] + M[1, 1] + M[2, 2], @@ -3463,8 +3450,8 @@ def align_other_molecule_to_this(self, other_mol, tethers): # Find eigenvector associated with the most positive eigenvalue of K. # Multiple quaternions can - E, V = numpy.linalg.eig(K) - index = numpy.argmax(E) + E, V = np.linalg.eig(K) + index = np.argmax(E) eigenvector = V[:, index] rot_quat = Quaternion( eigenvector[0], eigenvector[1], eigenvector[2], eigenvector[3] @@ -3476,7 +3463,7 @@ def align_other_molecule_to_this(self, other_mol, tethers): new_mol = other_mol.selections.copy() new_mol.information.coordinates = new_mol.information.coordinates - center_other - new_mol.information.coordinates = numpy.dot( + new_mol.information.coordinates = np.dot( new_mol.information.coordinates, rot_mat ) new_mol.information.coordinates = new_mol.information.coordinates + center_self @@ -3489,15 +3476,15 @@ def steric_clash_with_another_molecule( """Detects steric clashes between the pymolecule.Molecule (self) and another pymolecule.Molecule. - Arguments - other_mol -- The pymolecule.Molecule object that will be evaluated + Args: + other_mol: The pymolecule.Molecule object that will be evaluated for steric clashes. - cutoff -- A float, the user-defined distance cutoff in Angstroms. - pairwise_comparison -- An optional boolean, whether or not to + cutoff: A float, the user-defined distance cutoff in Angstroms. + pairwise_comparison: An optional boolean, whether or not to perform a simple pairwise distance comparison (if True) or to use a more sophisitcated method (if False). True by default. - Returns: + Returns: A boolean. True if steric clashes are present, False if they are not. @@ -3528,12 +3515,12 @@ def steric_clash_with_another_molecule( def merge_with_another_molecule(self, other_molecule): """Merges two molecular models into a single model. - Arguments: - other_molecule -- A molecular model (pymolecule.Molecule object). + Args: + other_molecule: A molecular model (pymolecule.Molecule object). Returns: - A single pymolecule.Molecule object containing the atoms of this - model combined with the atoms of other_molecule. + A single pymolecule.Molecule object containing the atoms of this + model combined with the atoms of other_molecule. """ @@ -3550,7 +3537,7 @@ def merge_with_another_molecule(self, other_molecule): merged.filename = "" merged.information.remarks.extend(other_molecule.information.remarks) - merged.information.atom_information = numpy.lib.recfunctions.stack_arrays( + merged.information.atom_information = np.lib.recfunctions.stack_arrays( ( merged.information.atom_information, other_molecule.information.atom_information, @@ -3558,7 +3545,7 @@ def merge_with_another_molecule(self, other_molecule): usemask=False, ) - merged.information.coordinates = numpy.vstack( + merged.information.coordinates = np.vstack( (merged.information.coordinates, other_molecule.information.coordinates) ) @@ -3567,7 +3554,7 @@ def merge_with_another_molecule(self, other_molecule): not merged.information.coordinates_undo_point is None and not other_molecule.information.coordinates_undo_point is None ): - merged.information.coordinates_undo_point = numpy.vstack( + merged.information.coordinates_undo_point = np.vstack( ( merged.information.coordinates_undo_point, other_molecule.information.coordinates_undo_point, @@ -3585,10 +3572,10 @@ def merge_with_another_molecule(self, other_molecule): bonds1 = merged.information.bonds.copy() bonds2 = other_molecule.information.bonds.copy() - bonds1_v2 = numpy.hstack((bonds1, numpy.zeros((len(bonds1), len(bonds2))))) - bonds2_v2 = numpy.hstack((numpy.zeros((len(bonds2), len(bonds1))), bonds2)) + bonds1_v2 = np.hstack((bonds1, np.zeros((len(bonds1), len(bonds2))))) + bonds2_v2 = np.hstack((np.zeros((len(bonds2), len(bonds1))), bonds2)) - merged.information.bonds = numpy.vstack((bonds1_v2, bonds2_v2)) + merged.information.bonds = np.vstack((bonds1_v2, bonds2_v2)) else: merged.information.bonds = None @@ -3605,20 +3592,20 @@ def distance_to_another_molecule(self, other_molecule, pairwise_comparison=True) """Computes the minimum distance between any of the atoms of this molecular model and any of the atoms of a second specified model. - Arguments: - other_molecule -- a pymolecule.Molecule, the other molecular model. - pairwise_comparison -- An optional boolean, whether or not to + Args: + other_molecule: a pymolecule.Molecule, the other molecular model. + pairwise_comparison: An optional boolean, whether or not to perform a simple pairwise distance comparison (if True) or to use a more sophisitcated method (if False). True by default. - Returns: + Returns: A float, the minimum distance between any two atoms of the two specified molecular models (self and other_molecule). """ if pairwise_comparison == True: - return numpy.amin( + return np.amin( cdist( self.parent_molecule.information.coordinates, other_molecule.information.coordinates, @@ -3632,7 +3619,7 @@ def distance_to_another_molecule(self, other_molecule, pairwise_comparison=True) # first, get a cutoff distance. Let's just do a quick survey of # the two molecules to pick a good one. self_tmp = self.parent_molecule.information.coordinates[ - numpy.arange( + np.arange( 0, len(self.parent_molecule.information.coordinates), len(self.parent_molecule.information.coordinates) / 10.0, @@ -3640,14 +3627,14 @@ def distance_to_another_molecule(self, other_molecule, pairwise_comparison=True) ) ] other_tmp = other_molecule.information.coordinates[ - numpy.arange( + np.arange( 0, len(other_molecule.information.coordinates), len(other_molecule.information.coordinates) / 10.0, dtype=int, ) ] - cutoff = numpy.amin(cdist(self_tmp, other_tmp)) + cutoff = np.amin(cdist(self_tmp, other_tmp)) # now get all the indices that come within that cutoff ( @@ -3660,22 +3647,22 @@ def distance_to_another_molecule(self, other_molecule, pairwise_comparison=True) self_coors = self.parent_molecule.information.coordinates[self_indices] self_other = other_molecule.information.coordinates[other_indices] - return numpy.amin(cdist(self_coors, self_other)) + return np.amin(cdist(self_coors, self_other)) def rmsd_equivalent_atoms_specified(self, other_mol, tethers): """Calculates the RMSD between this pymolecule.Molecle object and another, where equivalent atoms are explicitly specified. - Arguments: - other_mol -- The other pymolecule.Molecule object. - tethers -- A tuple of two numpy.array objects, where each array + Args: + other_mol: The other pymolecule.Molecule object. + tethers: A tuple of two np.array objects, where each array contains the indices of self and other_mol, respectively, such that equivalent atoms are listed in the same order. So, for example, if (atom 1, self = atom 3, other) and (atom2, self = - atom6, other) than the tethers would be (numpy.array([1,2]), - numpy.array([3,6])). + atom6, other) than the tethers would be (np.array([1,2]), + np.array([3,6])). - Returns: + Returns: A float, the RMSD between self and other_mol. """ @@ -3697,26 +3684,26 @@ def rmsd_equivalent_atoms_specified(self, other_mol, tethers): other_coors_in_order = other_mol.information.coordinates[tethers[1]] delta = self_coors_in_order - other_coors_in_order - norm_squared = numpy.sum(delta**2, axis=-1) - rmsd = numpy.power(numpy.sum(norm_squared) / len(norm_squared), 0.5) + norm_squared = np.sum(delta**2, axis=-1) + rmsd = np.power(np.sum(norm_squared) / len(norm_squared), 0.5) return rmsd def rmsd_order_dependent(self, other_mol): """Calculates the RMSD between two structures, where equivalent atoms are listed in the same order. - Arguments: - other_mol -- The other pymolecule.Molecule object. + Args: + other_mol: The other pymolecule.Molecule object. - Returns: + Returns: A float, the RMSD between self and other_mol. """ - self_index_in_order = numpy.arange( + self_index_in_order = np.arange( 0, len(self.parent_molecule.information.coordinates), 1, dtype=int ) - other_index_in_order = numpy.arange( + other_index_in_order = np.arange( 0, len(other_mol.information.coordinates), 1, dtype=int ) @@ -3731,15 +3718,15 @@ class Quaternion: def __init__(self, s, x, y, z): """Initializes the pymolecule.Quaternion class. - Arguments: - s -- ???? - x -- ???? - y -- ???? - z -- ???? + Args: + s: ???? + x: ???? + y: ???? + z: ???? """ - self.v = numpy.zeros(4) + self.v = np.zeros(4) self.v[0] = s self.v[1] = x self.v[2] = y @@ -3749,7 +3736,7 @@ def __str__(self): """String containing quaternion information in the form of s x y z Returns: - A string, containing all information about this quaternion + A string, containing all information about this quaternion """ @@ -3774,8 +3761,8 @@ def load_from_mat(self, m): into a Quaternion. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm - Arguments: - m -- A 2D numpy.array representing a pure orthogonal matrix. + Args: + m: A 2D np.array representing a pure orthogonal matrix. """ # Make sure m is a 3x3 array @@ -3784,12 +3771,12 @@ def load_from_mat(self, m): return # Check that matrix is orthogonal. m_T = m_inv - if not numpy.array_equal(numpy.transpose(m), numpy.linalg.inv(m)): + if not np.array_equal(np.transpose(m), np.linalg.inv(m)): print("Load Quaternion error. Matrix is not orthogonal") return # Need to make sure that the matrix is special orthogonal - if numpy.fabs(1 - numpy.linalg.det(m)) > 0.000001: # Done for rounding errors + if np.fabs(1 - np.linalg.det(m)) > 0.000001: # Done for rounding errors print("Load Quaternion error. Determinant is not 1") return @@ -3797,25 +3784,25 @@ def load_from_mat(self, m): t = m.trace() if t > 0: - S = numpy.sqrt(t + 1.0) * 2 + S = np.sqrt(t + 1.0) * 2 self.v[0] = 0.25 * S self.v[1] = (m[2, 1] - m[1, 2]) / S self.v[2] = (m[0, 2] - m[2, 0]) / S self.v[3] = (m[1, 0] - m[0, 1]) / S elif m[0, 0] > m[1, 1] and m[0, 0] > m[2, 2]: - S = numpy.sqrt(1.0 + m[0, 0] - m[1, 1] - m[2, 2]) * 2 + S = np.sqrt(1.0 + m[0, 0] - m[1, 1] - m[2, 2]) * 2 self.v[0] = (m[2, 1] - m[1, 2]) / S self.v[1] = 0.25 * S self.v[2] = (m[0, 1] + m[1, 0]) / S self.v[3] = (m[0, 2] + m[2, 0]) / S elif m[1, 1] > m[2, 2]: - S = numpy.sqrt(1.0 + m[1, 1] - m[0, 0] - m[2, 2]) * 2 + S = np.sqrt(1.0 + m[1, 1] - m[0, 0] - m[2, 2]) * 2 self.v[0] = (m[0, 2] - m[2, 0]) / S self.v[1] = (m[0, 1] + m[1, 0]) / S self.v[2] = 0.25 * S self.v[3] = (m[2, 1] + m[1, 2]) / S else: - S = numpy.sqrt(1.0) * 2 + S = np.sqrt(1.0) * 2 self.v[0] = (m[1, 0] - m[0, 1]) / S self.v[1] = (m[0, 2] + m[2, 0]) / S self.v[2] = (m[2, 1] + m[1, 2]) / S @@ -3825,7 +3812,7 @@ def rep_as_44_matrix(self): """Creates a 4x4 matrix representation of the Quaternion. Returns: - A 4x4 numpy array + A 4x4 numpy array """ @@ -3835,7 +3822,7 @@ def rep_as_44_matrix(self): qy = n.v[2] qz = n.v[3] - return numpy.array( + return np.array( [ [qw, qx, qy, qz], [-qx, qw, -qz, qy], @@ -3848,7 +3835,7 @@ def to_matrix(self): """Converts to a normalized 3x3 matrix. Returns: - A 3x3 numpy.array, corresponding to the quaternion. + A 3x3 np.array, corresponding to the quaternion. """ @@ -3858,7 +3845,7 @@ def to_matrix(self): qx = n.v[1] qy = n.v[2] qz = n.v[3] - return numpy.array( + return np.array( [ [ 1.0 - 2.0 * qy * qy - 2.0 * qz * qz, @@ -3881,11 +3868,11 @@ def to_matrix(self): def add(self, q2): """Adds two quaternions. - Arguments: - q2 -- A quaternion, to be added to self. + Args: + q2: A quaternion, to be added to self. Returns: - A Quaternion, with the values corresponding to self + q2. + A Quaternion, with the values corresponding to self + q2. """ @@ -3909,11 +3896,11 @@ def invert(self): def minus(self, q2): """Multiplies two quaternions - Arguments: - q2 -- A quaternion, to be subtracted from self + Args: + q2: A quaternion, to be subtracted from self Returns: - A Quaternion, with the values corresponding to self - q2 + A Quaternion, with the values corresponding to self - q2 """ @@ -3927,11 +3914,11 @@ def minus(self, q2): def multiply(self, q2): """Multiplies two quaternions - Arguments: - q2 -- A quaternion, to be multiplied with self + Args: + q2: A quaternion, to be multiplied with self Returns: - A Quaternion, with the values corresponding to self * q2 + A Quaternion, with the values corresponding to self * q2 """ @@ -3958,16 +3945,16 @@ def normalize(self): """Normalizes the quaternion. Returns: - A normalized Quaternion. + A normalized Quaternion. """ # First normalize - n = numpy.sqrt( - numpy.power(self.v[0], 2) - + numpy.power(self.v[1], 2) - + numpy.power(self.v[2], 2) - + numpy.power(self.v[3], 2) + n = np.sqrt( + np.power(self.v[0], 2) + + np.power(self.v[1], 2) + + np.power(self.v[2], 2) + + np.power(self.v[3], 2) ) return Quaternion(self.v[0] / n, self.v[1] / n, self.v[2] / n, self.v[3] / n) @@ -3975,11 +3962,11 @@ def normalize(self): def scale(self, scalar): """Scales a quaternion. - Arguments: - scalar -- the value to scale the quaternion by. + Args: + scalar: the value to scale the quaternion by. Returns: - A Quaternion, with the values corresponding to self * scalar. + A Quaternion, with the values corresponding to self * scalar. """ @@ -4015,14 +4002,14 @@ def __init__(self): def numpy_structured_array_remove_field(self, narray, field_names): """Removes a specific field name from a structured numpy array. - Arguments: - narray -- A structured numpy array. - field_names -- A list of strings, where each string is one of the - field names of narray. + Args: + narray: A structured numpy array. + field_names: A list of strings, where each string is one of the + field names of narray. Returns: - A structured numpy array identical to narray, but with the field - names in field_names removed. + A structured numpy array identical to narray, but with the field + names in field_names removed. """ @@ -4036,11 +4023,11 @@ def numpy_structured_array_remove_field(self, narray, field_names): def __is_number(self, s): """Determines whether or not a string represents a number. - Arguments: - s -- A string (e.g., "5.4"). + Args: + s: A string (e.g., "5.4"). Returns: - A boolean, whether or not the string can be represented by a float. + A boolean, whether or not the string can be represented by a float. """ From 26e580a433699c00e84b63bcf6cd6c344d1389d8 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Thu, 28 Nov 2024 23:45:58 -0500 Subject: [PATCH 13/20] refactor: start migration to pydantic --- .gitignore | 3 + pixi.lock | 141 ++++++++ pixi.toml | 4 + povme/__init__.py | 58 +++- povme/config.py | 53 --- povme/config/__init__.py | 3 + povme/config/io.py | 47 +++ povme/config/povme.py | 103 ++++++ povme/hull.py | 20 +- povme/io.py | 22 +- povme/logger.py | 28 -- povme/povme.py | 688 +++++++++++++++---------------------- povme/region.py | 30 +- tests/conftest.py | 4 +- tests/files/4nss/povme.yml | 48 +++ tests/test_povme.py | 12 +- 16 files changed, 718 insertions(+), 546 deletions(-) delete mode 100644 povme/config.py create mode 100644 povme/config/__init__.py create mode 100644 povme/config/io.py create mode 100644 povme/config/povme.py delete mode 100644 povme/logger.py create mode 100644 tests/files/4nss/povme.yml diff --git a/.gitignore b/.gitignore index e251911..0a2c9a1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,6 @@ # Documentation api public + +__pycache__ +.vscode diff --git a/pixi.lock b/pixi.lock index 52b7d5f..7e2f12f 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,6 +9,7 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda @@ -29,18 +30,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py312h7900ff3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - pypi: . osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda @@ -56,20 +65,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py313habf4b1d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py313h7ca3f3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.27.1-py313h3c055b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py313hbd2dc07_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - pypi: . win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda @@ -82,21 +100,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py313hfa70ccb_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.27.1-py313hf3b5b86_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.1-py313h16bbbb2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-hc790b64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - pypi: . dev: channels: @@ -162,6 +188,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py312h7900ff3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.5.0-pyhd8ed1ab_0.conda @@ -192,6 +219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda @@ -209,6 +237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20240917-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -217,6 +246,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda @@ -267,6 +297,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py313habf4b1d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.5.0-pyhd8ed1ab_0.conda @@ -296,6 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda @@ -312,6 +344,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20240917-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -319,6 +352,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcmatch-10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313hab0894d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda @@ -368,6 +402,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py313hfa70ccb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda @@ -399,6 +434,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-ctypes-0.2.3-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda @@ -415,6 +451,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20240917-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -425,8 +462,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcmatch-10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda @@ -442,6 +481,7 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda @@ -506,6 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py312h7900ff3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda @@ -552,6 +593,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 @@ -603,6 +646,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ab/df/4ee467ab39cc1de4b852c212c1ed3becfec2e486a51ac1ce0091f85f38d7/wcmatch-10.0-py3-none-any.whl - pypi: . osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -661,6 +705,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py313habf4b1d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h25ec13a_0.conda @@ -707,6 +752,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.27.1-py313h3c055b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 @@ -758,6 +805,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ab/df/4ee467ab39cc1de4b852c212c1ed3becfec2e486a51ac1ce0091f85f38d7/wcmatch-10.0-py3-none-any.whl - pypi: . win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda @@ -814,6 +862,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py313hfa70ccb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_0.conda @@ -859,6 +908,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.27.1-py313hf3b5b86_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 @@ -902,6 +953,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/watchdog-6.0.0-py313hfa70ccb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 @@ -3613,6 +3665,62 @@ packages: purls: [] size: 305132 timestamp: 1732102427054 +- kind: conda + name: loguru + version: 0.7.2 + build: py312h7900ff3_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py312h7900ff3_2.conda + sha256: e5477e3fa7b4ef070e9ecae619cfc5845e14e3cdac8fbb2d158a03d51f967bef + md5: fddd3092f921be8e01b18f2a0266d98f + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/loguru?source=hash-mapping + size: 123047 + timestamp: 1725349857430 +- kind: conda + name: loguru + version: 0.7.2 + build: py313habf4b1d_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py313habf4b1d_2.conda + sha256: 26d7b5dcdf44086826d6ebd20bb7cd66b4872b87624974e15302fed7511c2be8 + md5: 22ff810f6a26fb7df173dc0557319623 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/loguru?source=hash-mapping + size: 125997 + timestamp: 1725349947332 +- kind: conda + name: loguru + version: 0.7.2 + build: py313hfa70ccb_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py313hfa70ccb_2.conda + sha256: 7703f5afb0ad87b19e4815b5f92ec315bc19934d55e6541bf4860786dd08ac84 + md5: 00052fc5f5720314253cb6b2fe0653c1 + depends: + - colorama >=0.3.4 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - win32_setctime >=1.0.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/loguru?source=hash-mapping + size: 127365 + timestamp: 1725349993152 - kind: conda name: markdown version: '3.6' @@ -6652,6 +6760,22 @@ packages: - pkg:pypi/twine?source=hash-mapping size: 33938 timestamp: 1719431080574 +- kind: conda + name: types-pyyaml + version: 6.0.12.20240917 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20240917-pyhd8ed1ab_0.conda + sha256: 568a72a5d2791b4d83542a7441f44d8d5a3d06f9d4f9e152501aee1a8f4e7c59 + md5: ca3b4c9e88d7445aa4d2282f96f7a701 + depends: + - python >=3.6 + license: Apache-2.0 AND MIT + purls: + - pkg:pypi/types-pyyaml?source=hash-mapping + size: 25178 + timestamp: 1726556396066 - kind: conda name: typing-extensions version: 4.12.2 @@ -6919,6 +7043,23 @@ packages: - pkg:pypi/wheel?source=hash-mapping size: 62998 timestamp: 1732339880578 +- kind: conda + name: win32_setctime + version: 1.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: b2c4dfa3dcf888b9449a4a2fd480b2db4e9167838d91df15fe745f9ba7adff95 + md5: dc80c0c2b01f7d6d6d5df4b63ef54f17 + depends: + - python >=3.5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/win32-setctime?source=hash-mapping + size: 7389 + timestamp: 1642883658436 - kind: conda name: win_inet_pton version: 1.1.0 diff --git a/pixi.toml b/pixi.toml index d38addd..7069312 100644 --- a/pixi.toml +++ b/pixi.toml @@ -19,6 +19,9 @@ docs = ["docs"] [dependencies] scipy = ">=1.14.1,<2" numpy = ">=2.1.3,<3" +pydantic = ">=2.10.2,<3" +pyyaml = ">=6.0.2,<7" +loguru = ">=0.7.2,<0.8" [feature.dev.dependencies] ruff = ">=0.7.2,<0.8" @@ -32,6 +35,7 @@ pytest-cov = ">=6.0.0,<7" coverage = ">=7.6.4,<8" pip = ">=24.3.1,<25" setuptools = ">=75.3.0,<76" +types-pyyaml = ">=6.0.12.20240917,<7" [feature.dev.tasks] diff --git a/povme/__init__.py b/povme/__init__.py index 5a3c3a0..2e5e81a 100644 --- a/povme/__init__.py +++ b/povme/__init__.py @@ -1,5 +1,59 @@ +from typing import Any + +import os +import sys +from ast import literal_eval + +from loguru import logger + +from .povme import POVME + +__all__ = ["POVME"] __version__ = "2.2.2" -from .povme import RunPOVME +logger.disable("povme") + +LOG_FORMAT = ( + "{time:HH:mm:ss} | " + "{level: <8} | " + "{name}:{function}:{line} - {message}" +) + + +def enable_logging( + level_set: int, + stdout_set: bool = True, + file_path: str | None = None, + log_format: str = LOG_FORMAT, +) -> None: + r"""Enable logging. + + Args: + level: Requested log level: `10` is debug, `20` is info. + file_path: Also write logs to files here. + """ + config: dict[str, Any] = {"handlers": []} + if stdout_set: + config["handlers"].append( + { + "sink": sys.stdout, + "level": level_set, + "format": log_format, + "colorize": True, + } + ) + if isinstance(file_path, str): + config["handlers"].append( + {"sink": file_path, "level": level_set, "format": log_format, "False": True} + ) + # https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.configure + logger.configure(**config) + + logger.enable("povme") + -__all__ = ["RunPOVME"] +if literal_eval(os.environ.get("POVME_LOG", "False")): + level = int(os.environ.get("POVME_LOG_LEVEL", 20)) + stdout = literal_eval(os.environ.get("POVME_STDOUT", "True")) + log_file_path = os.environ.get("POVME_LOG_FILE_PATH", None) + enable_logging(level, stdout, log_file_path) diff --git a/povme/config.py b/povme/config.py deleted file mode 100644 index 2dcd02b..0000000 --- a/povme/config.py +++ /dev/null @@ -1,53 +0,0 @@ -from .io import openfile - - -class ConfigFile: - """A class for processing the user-provided configuration file.""" - - def __init__(self, filename: str) -> None: - """Generates a point field by filling the region with equally spaced - points. - - Args: - filename: A string, the filename of the configuration file. - - """ - self.entities = [] - - f = openfile(filename, "r") - lines = f.readlines() - f.close() - - for line in lines: - # remove comments - line = line.split("#", 1)[0] - # line = line.split("//",1)[0] # We can't have these kinds of comments any more because of Windows filenames. - - line = line.strip() - - if line != "": - - # replace ; and , and : with space - # line = line.replace(',',' ') - # line = line.replace(';',' ') - # line = line.replace(':',' ') # this messes up Windows filenames - line = line.replace("\t", " ") - - # now strip string - line = line.strip() - - # now, replace double spaces with one space - while " " in line: - line = line.replace(" ", " ") - - # Now split the thing - line = line.split(" ", 1) - - # now, make it upper case - line[0] = line[0].upper() - - # If there's QUIT, EXIT, or STOP, then don't continue. - if line[0] in [b"QUIT", b"EXIT", b"STOP"]: - break - - self.entities.append(line) diff --git a/povme/config/__init__.py b/povme/config/__init__.py new file mode 100644 index 0000000..3ab64e2 --- /dev/null +++ b/povme/config/__init__.py @@ -0,0 +1,3 @@ +from .povme import POVMEConfig + +__all__ = ["POVMEConfig"] diff --git a/povme/config/io.py b/povme/config/io.py new file mode 100644 index 0000000..7ea9500 --- /dev/null +++ b/povme/config/io.py @@ -0,0 +1,47 @@ +from typing import Any + +from abc import ABC + +import yaml + + +class YamlIO(ABC): + """Handles YAML inputs and outputs.""" + + def update(self, data: dict[str, Any]) -> None: + """Iteratively update pydantic model. + + Args: + data: Key-value mapping to update attributes with. + """ + for key, value in data.items(): + if key in self.model_fields: # type: ignore + setattr(self, key, value) + + def from_yaml(self, yaml_paths: str | list[str]) -> None: + """Update the instance's attributes from one or more YAML files. + + Args: + yaml_paths: A sequence of YAML file paths or a single YAML file path. + + Raises: + FileNotFoundError: If any of the YAML files cannot be found. + """ + if isinstance(yaml_paths, str): + yaml_paths = [yaml_paths] + for yaml_path in yaml_paths: + with open(yaml_path, "r", encoding="utf-8") as f: + yaml_data = yaml.safe_load(f) + self.update(yaml_data) + + def to_yaml(self, file_path: str) -> None: + """Serialize a Pydantic BaseModel instance to a YAML file. + Args: + file_path: Path to the YAML file to write the serialized data to. + + Raises: + YamlIOError: If the file cannot be written to. + """ + config_dict = self.model_dump() # type: ignore + with open(file_path, "w", encoding="utf-8") as f: + yaml.dump(config_dict, f, default_flow_style=False) diff --git a/povme/config/povme.py b/povme/config/povme.py new file mode 100644 index 0000000..4ba2b8a --- /dev/null +++ b/povme/config/povme.py @@ -0,0 +1,103 @@ +from loguru import logger +from pydantic import BaseModel + +from .io import YamlIO + + +class POVMEConfig(BaseModel, YamlIO): + grid_spacing: float = 1.0 + """The distance, in Angstroms, between adjacent points. + + Smaller values improve accuracy but increase computational cost. + """ + + load_points_path: str | None = None + """Load points from `npy` file.""" + + points_inclusion_sphere: list[list[float]] = [] + """A list of spheres to include in the pocket-encompassing region. + + Each tuple contains (x, y, z, radius). + """ + + points_inclusion_box: list[list[float]] = [] + """A list of rectangular prisms ('boxes') to include in the pocket-encompassing region. + + Each tuple contains (center_x, center_y, center_z, size_x, size_y, size_z). + """ + + points_exclusion_sphere: list[list[float]] = [] + """A list of spheres to exclude from the pocket-encompassing region. + + Each tuple contains (x, y, z, radius). + """ + + points_exclusion_box: list[list[float]] = [] + """A list of rectangular prisms ('boxes') to exclude from the pocket-encompassing region. + + Each tuple contains (center_x, center_y, center_z, size_x, size_y, size_z). + """ + + save_points: bool = False + """Whether to save the point field to a PDB file for visualization or reuse.""" + + load_points_filename: str | None = None + """Optional filename to load a previously saved point field. + + Should use the `.pdb.npy` format. + """ + + distance_cutoff: float = 1.09 + """The distance from a receptor atom's van der Waals surface below which points are excluded. + + Default is 1.09 Angstroms, the van der Waals radius of a hydrogen atom. + """ + + convex_hull_exclusion: bool = True + """Whether to calculate the convex hull of receptor atoms near the pocket and exclude points outside it.""" + + contiguous_pocket_seed_sphere: list[list[float]] = [] + """Seed regions for contiguous pocket detection. + + Each tuple contains (x, y, z, radius). + """ + + contiguous_pocket_seed_box: list[list[float]] = [] + """Seed boxes for contiguous pocket detection. + + Each tuple contains (center_x, center_y, center_z, size_x, size_y, size_z). + """ + + contiguous_points_criteria: int = 4 + """The minimum number of neighboring points required to consider two pocket volumes contiguous.""" + + num_processors: int = 4 + """Number of processors to use for the calculation on Unix-based systems.""" + + use_disk_not_memory: bool = False + """Whether to prioritize disk space over memory for large trajectory files.""" + + save_individual_pocket_volumes: bool = False + """Whether to save the pocket-volume points for each frame to separate PDB files.""" + + save_pocket_volumes_trajectory: bool = False + """Whether to save all pocket-volume points for each frame to a single PDB trajectory file.""" + + output_equal_num_points_per_frame: bool = False + """Whether to add extra points at the origin (0.0, 0.0, 0.0) to ensure the same number of points in each frame.""" + + save_tabbed_volume_file: bool = False + """Whether to save the calculated volumes to a tab-separated file.""" + + save_volumetric_density_map: bool = False + """Whether to save a volumetric density map in DX format.""" + + compress_output: bool = False + """Whether to compress all output files using gz compression to save disk space.""" + + def log(self) -> None: + """Log all configuration parameters.""" + logger.info("Logging POVME Configuration Settings:") + config_dict = self.model_dump() + for key, value in config_dict.items(): + logger.info(f"{key}: {value}") diff --git a/povme/hull.py b/povme/hull.py index 596363b..7aaa7bb 100644 --- a/povme/hull.py +++ b/povme/hull.py @@ -4,11 +4,11 @@ import numpy as np import numpy.typing as npt +from loguru import logger from scipy.spatial.distance import cdist, pdist, squareform from . import pymolecule from .io import gzopenfile, numpy_to_pdb, openfile, write_to_file -from .logger import log from .parallel import MultithreadingTaskGeneral @@ -396,7 +396,7 @@ def value_func(self, item, results_queue): pts_deleted = pts.copy() # you may need to load it from disk if the user so specified - if parameters["UseDiskNotMemory"]: # so you need to load it from disk + if config.use_disk_not_memory: # so you need to load it from disk pym_filename = pdb pdb = pymolecule.Molecule() pdb.fileio.load_pym_into(pym_filename) @@ -598,27 +598,21 @@ def value_func(self, item, results_queue): frame_text = frame_text + "END\n" - if parameters["CompressOutput"]: + if config.compress_output: fl = gzopenfile( - parameters["OutputFilenamePrefix"] - + "frame_" - + str(frame_indx) - + ".pdb.gz", + output_prefix + "frame_" + str(frame_indx) + ".pdb.gz", "wb", ) else: fl = openfile( - parameters["OutputFilenamePrefix"] - + "frame_" - + str(frame_indx) - + ".pdb", + output_prefix + "frame_" + str(frame_indx) + ".pdb", "w", ) - write_to_file(fl, frame_text, encode=parameters["CompressOutput"]) + write_to_file(fl, frame_text, encode=config.compress_output) fl.close() extra_data_to_add = {} - if parameters["SaveVolumetricDensityMap"]: + if config.save_volumetric_density_map: extra_data_to_add["SaveVolumetricDensityMap"] = pts self.results.append((frame_indx, volume, extra_data_to_add)) diff --git a/povme/io.py b/povme/io.py index 63652c3..50dd038 100644 --- a/povme/io.py +++ b/povme/io.py @@ -348,15 +348,11 @@ def dx_freq(freq_mat: npt.NDArray[np.float64], parameters: dict[str, Any]) -> No ) == N, "Something is wrong with the freq_mat array: it is not a prismatic shape" # 3. write the header and footer - if parameters["SaveVolumetricDensityMap"]: - if parameters["CompressOutput"]: - dx_file = gzopenfile( - parameters["OutputFilenamePrefix"] + "volumetric_density.dx.gz", "wb" - ) + if config.save_volumetric_density_map: + if config.compress_output: + dx_file = gzopenfile(output_prefix + "volumetric_density.dx.gz", "wb") else: - dx_file = openfile( - parameters["OutputFilenamePrefix"] + "volumetric_density.dx", "w" - ) + dx_file = openfile(output_prefix + "volumetric_density.dx", "w") header_template = """# Data from POVME 2.2.2 # @@ -394,17 +390,17 @@ def dx_freq(freq_mat: npt.NDArray[np.float64], parameters: dict[str, Any]) -> No component "data" value 3""" footer = footer_template # the footer needs no formatting - write_to_file(dx_file, header, encode=parameters["CompressOutput"]) + write_to_file(dx_file, header, encode=config.compress_output) newline_counter = 1 for i in range(N): # write the data to the DX file write_to_file( - dx_file, "%8.6e" % freq_mat[i, 3], encode=parameters["CompressOutput"] + dx_file, "%8.6e" % freq_mat[i, 3], encode=config.compress_output ) if newline_counter == 3: newline_counter = 0 - write_to_file(dx_file, "\n", encode=parameters["CompressOutput"]) + write_to_file(dx_file, "\n", encode=config.compress_output) else: - write_to_file(dx_file, " ", encode=parameters["CompressOutput"]) + write_to_file(dx_file, " ", encode=config.compress_output) newline_counter += 1 - write_to_file(dx_file, footer, encode=parameters["CompressOutput"]) + write_to_file(dx_file, footer, encode=config.compress_output) dx_file.close diff --git a/povme/logger.py b/povme/logger.py deleted file mode 100644 index 57a6695..0000000 --- a/povme/logger.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import Any - -from .io import gzopenfile, write_to_file - - -def log(astr: str, parameters: dict[str, Any]) -> None: - """Output POVME statements, either to the screen or to a file. - - Args: - astr: The string to output. - parameters: The user-defined parameters. - """ - - # Print the output to the screen. - print(astr) - - # Save it to the output file as well. - try: - if parameters["CompressOutput"]: - f = gzopenfile(parameters["OutputFilenamePrefix"] + "output.txt.gz", "ab") - else: - f = open(parameters["OutputFilenamePrefix"] + "output.txt", "a") - - write_to_file(f, astr + "\n", encode=parameters["CompressOutput"]) - - f.close() - except Exception: - pass diff --git a/povme/povme.py b/povme/povme.py index 4b18e13..40041f4 100644 --- a/povme/povme.py +++ b/povme/povme.py @@ -2,29 +2,30 @@ import os import shutil +import sys import time from io import StringIO import numpy as np +from loguru import logger from scipy.spatial.distance import cdist from . import pymolecule -from .config import ConfigFile +from .config import POVMEConfig from .hull import MultithreadingCalcVolumeTask -from .io import dx_freq, fix_filename, gzopenfile, numpy_to_pdb, openfile, write_to_file -from .logger import log +from .io import dx_freq, gzopenfile, numpy_to_pdb, openfile, write_to_file from .parallel import MultiThreading, MultithreadingTaskGeneral from .region import Region -def unique_rows(a): +def get_unique_rows(a): """Identifies unique points (rows) in an array of points. Arguments: - a -- A nx3 numpy.array representing 3D points. + a: A nx3 numpy.array representing 3D points. Returns: - A nx2 numpy.array containing the 3D points that are unique. + A nx2 numpy.array containing the 3D points that are unique. """ @@ -49,17 +50,17 @@ def value_func(self, item, results_queue): pdb_string = item[0] index = item[1] - parameters = item[2] + config = item[2] # make the pdb object str_obj = StringIO(pdb_string) tmp = pymolecule.Molecule() tmp.fileio.load_pdb_into_using_file_object(str_obj, False, False, False) - log("\tFurther processing frame " + str(index), parameters) + logger.debug("\tFurther processing frame " + str(index)) # so load the whole trajectory into memory - if not parameters["UseDiskNotMemory"]: + if not config.use_disk_not_memory: self.results.append((index, tmp)) else: # save to disk, record filename pym_filename = f"./.povme_tmp/frame_{str(index)}.pym" @@ -67,38 +68,30 @@ def value_func(self, item, results_queue): self.results.append((index, pym_filename)) -class RunPOVME: +class POVME: """The main class to run POVME.""" - def reference(self, parameters, before=""): - """Print out a message regarding terms of use.""" + def __init__( + self, + path_config: str | None = None, + ) -> None: + """Initialize POVME. - log("", parameters) - log( - before - + "If you use POVME in your research, please cite the following reference:", - parameters, - ) - log( - before - + ' Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm', - parameters, - ) - log( - before - + ' for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776.', - parameters, - ) + Args: + path_config: Path to a configuration YAML file. + """ + + self.config = POVMEConfig() + if path_config is not None: + self.config.from_yaml(path_config) - def load_multi_frame_pdb(self, filename, parameters): + def load_multi_frame_pdb(self, filename, config): """Load a multi-frame PDB into memory or into separate files (depending on user specifications). Args: filename: A string, the filename of the multi-frame PDB. - parameters: A python dictionary, where the keys are the user-defined - parameter names and the values are the corresponding parameter - values. + config: POVMEConfig object. Returns: If the user has requested that the disk be used to save memory, this @@ -114,16 +107,11 @@ def load_multi_frame_pdb(self, filename, parameters): pdb_strings = [] growing_string = "" - log("", parameters) - log("Reading frames from " + filename, parameters) + logger.info("Reading frames from " + filename) f = open(filename, "rb") while True: - if parameters["NumFrames"] != -1: - if len(pdb_strings) >= parameters["NumFrames"]: - break - line = f.readline() if len(line) == 0: @@ -142,438 +130,298 @@ def load_multi_frame_pdb(self, filename, parameters): # now convert each pdb string into a pymolecule.Molecule object molecules = MultiThreading( - [ - (pdb_strings[idx], idx + 1, parameters) - for idx in range(len(pdb_strings)) - ], - parameters["NumProcessors"], + [(pdb_strings[idx], idx + 1, config) for idx in range(len(pdb_strings))], + config.num_processors, MultithreadingStringToMoleculeTask, ) molecules = molecules.results return molecules - def __init__( - self, - path_config: str, - path_pdb: str | None = None, - output_prefix: str | None = None, - ) -> None: - """Start POVME + @staticmethod + def _get_regions_include(config): + regions = [] + for inclusion_sphere in config.points_inclusion_sphere: + if len(inclusion_sphere) == 0: + continue + region = Region() + region.make_sphere(inclusion_sphere) + regions.append(region) + for inclusion_box in config.points_inclusion_box: + if len(inclusion_box) == 0: + continue + region = Region() + region.make_box(inclusion_box) + regions.append(region) + return regions + + @staticmethod + def _get_regions_contig(config): + regions = [] + for contig_sphere in config.contiguous_pocket_seed_sphere: + if len(contig_sphere) == 0: + continue + region = Region() + region.make_sphere(contig_sphere) + regions.append(region) + for contig_box in config.contiguous_pocket_seed_box: + if len(contig_box) == 0: + continue + region = Region() + region.make_box(contig_box) + regions.append(region) + return regions + + @staticmethod + def _get_regions_exclude(config): + regions = [] + for exclusion_sphere in config.points_exclusion_sphere: + if len(exclusion_sphere) == 0: + continue + region = Region() + region.make_sphere(exclusion_sphere) + regions.append(region) + for exclusion_box in config.points_exclusion_box: + if len(exclusion_box) == 0: + continue + region = Region() + region.make_box(exclusion_box) + regions.append(region) + return regions + + def gen_points(self, config): + logger.info("Generating the pocket-encompassing point field") + + # get all the points of the inclusion regions + regions_include = self._get_regions_include(config) + pts = regions_include[0].points_set(config.grid_spacing) + for Included in regions_include[1:]: + pts = np.vstack((pts, Included.points_set(config.grid_spacing))) + pts = get_unique_rows(pts) + + # get all the points of the exclusion regions + regions_exclude = self._get_regions_exclude(config) + if len(regions_exclude) > 0: + pts_exclusion = regions_exclude[0].points_set(config.grid_spacing) + for Excluded in regions_exclude[1:]: + pts_exclusion = np.vstack( + (pts_exclusion, Excluded.points_set(config.grid_spacing)) + ) + pts_exclusion = get_unique_rows(pts_exclusion) - Args: - path_config: Path to configuration file. - path_pdb: Path to PDB file. This will overwrite the configuration file. - output_prefix: Path to output directory including directories. - """ - start_time = time.time() - - config = ConfigFile(path_config) - - # Process the config file - parameters: dict[str, Any] = {} - - parameters["GridSpacing"] = 1.0 # default - parameters["PointsIncludeRegions"] = [] - parameters["PointsExcludeRegions"] = [] - parameters["SavePoints"] = False # default - parameters["LoadPointsFilename"] = "" # default - parameters["PDBFileName"] = "" # default - # default is VDW radius of hydrogen - parameters["DistanceCutoff"] = 1.09 - parameters["ConvexHullExclusion"] = True - parameters["ContiguousPocketSeedRegions"] = [] - parameters["ContiguousPointsCriteria"] = 4 - parameters["NumProcessors"] = 4 - parameters["UseDiskNotMemory"] = False - parameters["OutputFilenamePrefix"] = ( - "POVME_output." - + time.strftime("%m-%d-%y") - + "." - + time.strftime("%H-%M-%S") - + "/" - ) - parameters["SaveIndividualPocketVolumes"] = False - parameters["SavePocketVolumesTrajectory"] = False - parameters["OutputEqualNumPointsPerFrame"] = False - parameters["SaveTabbedVolumeFile"] = False - parameters["SaveVolumetricDensityMap"] = False - parameters["CompressOutput"] = False - # This is a parameter for debugging purposes only. - parameters["NumFrames"] = -1 - - float_parameters = ["GridSpacing", "DistanceCutoff"] - boolean_parameters = [ - "SavePoints", - "ConvexHullExclusion", - "CompressOutput", - "UseDiskNotMemory", - "SaveVolumetricDensityMap", - "OutputEqualNumPointsPerFrame", - "SaveIndividualPocketVolumes", - "SaveTabbedVolumeFile", - "SavePocketVolumesTrajectory", - ] - int_parameters = ["NumFrames", "ContiguousPointsCriteria", "NumProcessors"] - filename_parameters = [ - "OutputFilenamePrefix", - "PDBFileName", - "LoadPointsFilename", - ] - - for entity in config.entities: - if entity[0] == "PDBFILENAME": - if path_pdb is not None: - entity[1] = path_pdb - - if entity[0] == "OUTPUTFILENAMEPREFIX": - if output_prefix is not None: - if output_prefix[-1] != "/": - output_prefix += "/" - entity[1] = output_prefix - - try: - index = [p.upper() for p in float_parameters].index(entity[0]) - parameters[float_parameters[index]] = float(entity[1]) - except: - pass - - try: - index = [p.upper() for p in boolean_parameters].index(entity[0]) - - if entity[1].upper() in ["YES", "TRUE"]: - parameters[boolean_parameters[index]] = True - else: - parameters[boolean_parameters[index]] = False - except: - pass - - try: - index = [p.upper() for p in int_parameters].index(entity[0]) - parameters[int_parameters[index]] = int(entity[1]) - except: - pass - - try: - index = [p.upper() for p in filename_parameters].index(entity[0]) - parameters[filename_parameters[index]] = fix_filename( - entity[1].strip(), False - ).as_posix() # so a string - except: - pass - - # Regions are handled separately for each parameter... - if entity[0] == "POINTSINCLUSIONSPHERE": - Include = Region() - items = entity[1].split(" ") - Include.center[0] = float(items[0]) - Include.center[1] = float(items[1]) - Include.center[2] = float(items[2]) - Include.radius = float(items[3]) - Include.region_type = "SPHERE" - parameters["PointsIncludeRegions"].append(Include) - elif entity[0] == "POINTSINCLUSIONBOX": - Include = Region() - items = entity[1].split(" ") - Include.center[0] = float(items[0]) - Include.center[1] = float(items[1]) - Include.center[2] = float(items[2]) - Include.box_dimen[0] = float(items[3]) - Include.box_dimen[1] = float(items[4]) - Include.box_dimen[2] = float(items[5]) - Include.region_type = "BOX" - parameters["PointsIncludeRegions"].append(Include) - if entity[0] == "CONTIGUOUSPOCKETSEEDSPHERE": - Contig = Region() - items = entity[1].split(" ") - Contig.center[0] = float(items[0]) - Contig.center[1] = float(items[1]) - Contig.center[2] = float(items[2]) - Contig.radius = float(items[3]) - Contig.region_type = "SPHERE" - parameters["ContiguousPocketSeedRegions"].append(Contig) - elif entity[0] == "CONTIGUOUSPOCKETSEEDBOX": - Contig = Region() - items = entity[1].split(" ") - Contig.center[0] = float(items[0]) - Contig.center[1] = float(items[1]) - Contig.center[2] = float(items[2]) - Contig.box_dimen[0] = float(items[3]) - Contig.box_dimen[1] = float(items[4]) - Contig.box_dimen[2] = float(items[5]) - Contig.region_type = "BOX" - parameters["ContiguousPocketSeedRegions"].append(Contig) - elif entity[0] == "POINTSEXCLUSIONSPHERE": - Exclude = Region() - items = entity[1].split(" ") - Exclude.center[0] = float(items[0]) - Exclude.center[1] = float(items[1]) - Exclude.center[2] = float(items[2]) - Exclude.radius = float(items[3]) - Exclude.region_type = "SPHERE" - parameters["PointsExcludeRegions"].append(Exclude) - elif entity[0] == "POINTSEXCLUSIONBOX": - Exclude = Region() - items = entity[1].split(" ") - Exclude.center[0] = float(items[0]) - Exclude.center[1] = float(items[1]) - Exclude.center[2] = float(items[2]) - Exclude.box_dimen[0] = float(items[3]) - Exclude.box_dimen[1] = float(items[4]) - Exclude.box_dimen[2] = float(items[5]) - Exclude.region_type = "BOX" - parameters["PointsExcludeRegions"].append(Exclude) - - # If there are no ContiguousPocketSeedRegions, don't print out the - # ContiguousPointsCriteria parameter. - if len(parameters["ContiguousPocketSeedRegions"]) == 0: - del parameters["ContiguousPointsCriteria"] + # remove the exclusion points from the inclusion points I + # think there ought to be a set-based way of doing this, but + # I'm going to go for the pairwise comparison. consider + # rewriting later + index_to_remove = np.nonzero(cdist(pts, pts_exclusion) < 1e-7)[0] + pts = np.delete(pts, index_to_remove, axis=0) - # If the output prefix includes a directory, create that directory if - # necessary - if "/" in parameters["OutputFilenamePrefix"]: - output_dirname = os.path.dirname(parameters["OutputFilenamePrefix"]) - # if os.path.exists(output_dirname): shutil.rmtree(output_dirname) # So delete the directory if it already exists. - try: - os.mkdir(output_dirname) - except: - pass - - # print out the header - self.reference(parameters, "") - log("", parameters) + return pts - # create temp swap directory if needed - if parameters["UseDiskNotMemory"]: - if os.path.exists("./.povme_tmp"): - shutil.rmtree("./.povme_tmp") - os.mkdir("./.povme_tmp") + @staticmethod + def write_points(pts, output_prefix, config): + logger.info("Writing points to PDB file") + points_filename = output_prefix + "point_field.pdb" - # print out parameters - log("Parameters:", parameters) - for i in list(parameters.keys()): + if config.compress_output: + afile = gzopenfile(points_filename + ".gz", "wb") + else: + afile = openfile(points_filename, "w") - if i == "NumFrames" and parameters["NumFrames"] == -1: - # So only show this parameter if it's value is not the - # default. - continue + write_to_file(afile, numpy_to_pdb(pts, "X"), encode=config.compress_output) + afile.close() - if type(parameters[i]) is list: - for i2 in parameters[i]: - if i2 != "": - log("\t" + str(i) + ": " + str(i2), parameters) - else: - if parameters[i] != "": - log("\t" + str(i) + ": " + str(parameters[i]), parameters) + # save the points as npy + logger.info("Writing points to NPY file") + np.save(points_filename + ".npy", pts) - pts = None - if len(parameters["PointsIncludeRegions"]) > 0: # so create the point file + logger.info( + "Point field saved to " + points_filename + " to permit visualization" + ) + logger.info( + "Point field saved to " + + points_filename + + ".npy to optionally load for the volume calculation" + ) - log("\nGenerating the pocket-encompassing point field", parameters) + def write_points_contig(self, regions_contig, output_prefix, config): - # get all the points of the inclusion regions - pts = parameters["PointsIncludeRegions"][0].points_set( - parameters["GridSpacing"] - ) - for Included in parameters["PointsIncludeRegions"][1:]: - pts = np.vstack((pts, Included.points_set(parameters["GridSpacing"]))) - pts = unique_rows(pts) - - # get all the points of the exclusion regions - if len(parameters["PointsExcludeRegions"]) > 0: - pts_exclusion = parameters["PointsExcludeRegions"][0].points_set( - parameters["GridSpacing"] - ) - for Excluded in parameters["PointsExcludeRegions"][1:]: - pts_exclusion = np.vstack( - (pts_exclusion, Excluded.points_set(parameters["GridSpacing"])) - ) - pts_exclusion = unique_rows(pts_exclusion) + # get all the contiguous points + contig_pts = regions_contig[0].points_set(config.grid_spacing) + for Contig in regions_contig[1:]: + contig_pts = np.vstack((contig_pts, Contig.points_set(config.grid_spacing))) + contig_pts = get_unique_rows(contig_pts) - # remove the exclusion points from the inclusion points I - # think there ought to be a set-based way of doing this, but - # I'm going to go for the pairwise comparison. consider - # rewriting later - index_to_remove = np.nonzero(cdist(pts, pts_exclusion) < 1e-7)[0] - pts = np.delete(pts, index_to_remove, axis=0) + logger.info("\nSaving the contiguous-pocket seed points as a PDB file") - # save the points as PDB - if parameters["SavePoints"]: + points_filename = output_prefix + "contiguous_pocket_seed_points.pdb" - # First, save the point field itself + if config.compress_output: + afile = gzopenfile(points_filename + ".gz", "wb") + else: + afile = openfile(points_filename, "w") - log("\nSaving the point field as a PDB and NPY file", parameters) + write_to_file( + afile, + numpy_to_pdb(contig_pts, "X"), + encode=config.compress_output, + ) + afile.close() - points_filename = parameters["OutputFilenamePrefix"] + "point_field.pdb" + logger.info( + "Contiguous-pocket seed points saved to " + + points_filename + + " to permit visualization" + ) - if parameters["CompressOutput"]: - afile = gzopenfile(points_filename + ".gz", "wb") - else: - afile = openfile(points_filename, "w") + def compute_volume(self, pts, config): + # load the points in they aren't already present + if pts is None: + logger.info("Loading the point-field NPY file...") + parameters["pts_orig"] = np.load(parameters["LoadPointsFilename"]) + else: + parameters["pts_orig"] = pts + + # load the PDB frames + index_and_pdbs = self.load_multi_frame_pdb( + parameters["PDBFileName"], parameters + ) - write_to_file( - afile, numpy_to_pdb(pts, "X"), encode=parameters["CompressOutput"] - ) - afile.close() + # calculate all the volumes + logger.info("Calculating the pocket volume of each frame") + tmp = MultiThreading( + [(index, pdb_object, config) for index, pdb_object in index_and_pdbs], + config.num_processors, + MultithreadingCalcVolumeTask, + ) - # save the points as npy + # delete the temp swap directory if necessary + if config.use_disk_not_memory: + if os.path.exists("./.povme_tmp"): + shutil.rmtree("./.povme_tmp") - np.save(points_filename + ".npy", pts) + # display the results + results = {} + for result in tmp.results: + results[result[0]] = result[1] + logger.debug("FRAME | VOLUME (A^3)") + logger.debug("-------------+-------------") + for i in sorted(results.keys()): + logger.debug(str(i).ljust(13) + "| " + str(results[i])) - log( - "\tPoint field saved to " - + points_filename - + " to permit visualization", - parameters, - ) - log( - "\tPoint field saved to " - + points_filename - + ".npy to optionally load for the volume calculation", - parameters, - ) - log("", parameters) - - # Now, save the contiguous seed points as well, if specified. - if len(parameters["ContiguousPocketSeedRegions"]) > 0: - # get all the contiguous points - contig_pts = parameters["ContiguousPocketSeedRegions"][ - 0 - ].points_set(parameters["GridSpacing"]) - for Contig in parameters["ContiguousPocketSeedRegions"][1:]: - contig_pts = np.vstack( - (contig_pts, Contig.points_set(parameters["GridSpacing"])) - ) - contig_pts = unique_rows(contig_pts) + logger.info("Execution time = " + str(time.time() - self.t_start) + " sec") + return results - log( - "\nSaving the contiguous-pocket seed points as a PDB file", - parameters, - ) + def run( + self, + path_pdb: str | None = None, + output_prefix: str | None = None, + ) -> dict[str, Any]: + """Start POVME - points_filename = ( - parameters["OutputFilenamePrefix"] - + "contiguous_pocket_seed_points.pdb" - ) + Args: + path_pdb: Path to PDB file. This will overwrite the configuration file. + output_prefix: Path to output directory including directories. + """ + self.t_start = time.time() + config = self.config + config.log() + + if output_prefix is None: + output_prefix = ( + "POVME_output." + + time.strftime("%m-%d-%y") + + "." + + time.strftime("%H-%M-%S") + + "/" + ) - if parameters["CompressOutput"]: - afile = gzopenfile(points_filename + ".gz", "wb") - else: - afile = openfile(points_filename, "w") + # If the output prefix includes a directory, create that directory if + # necessary + if "/" in output_prefix: + output_dirname = os.path.dirname(output_prefix) + os.makedirs(output_dirname, exist_ok=True) - write_to_file( - afile, - numpy_to_pdb(contig_pts, "X"), - encode=parameters["CompressOutput"], - ) - afile.close() + # create temp swap directory if needed + if config.use_disk_not_memory: + if os.path.exists("./.povme_tmp"): + shutil.rmtree("./.povme_tmp") + os.mkdir("./.povme_tmp") - log( - "\tContiguous-pocket seed points saved to " - + points_filename - + " to permit visualization", - parameters, - ) - log("", parameters) + # User specified regions to include in the PDB structure. + # Thus, we compute these points. + pts = None + if config.load_points_path is not None: + if not os.path.exists(config.load_points_path): + logger.error( + f"points file at {config.load_points_path} does not exist!" + ) + pts = np.load(config.load_points_path) + elif (len(config.points_inclusion_box) > 0) or ( + len(config.points_inclusion_sphere) > 0 + ): + pts = self.gen_points(config) + if config.save_points: + self.write_points(pts, output_prefix, config) + if pts is None: + logger.error("No points are specified!") + logger.error("Please specify inclusions or load points from a NumPy file.") + sys.exit(0) + + # Handle contig TODO: + regions_contig = self._get_regions_contig(config) + if len(regions_contig) > 0: + self.write_points_contig(regions_contig, output_prefix, config) # so there's a PDB point specified for calculating the volume. - if parameters["PDBFileName"] != "": - - # load the points in they aren't already present - if pts is None: - log("\nLoading the point-field NPY file...", parameters) - parameters["pts_orig"] = np.load(parameters["LoadPointsFilename"]) - else: - parameters["pts_orig"] = pts - - # load the PDB frames - index_and_pdbs = self.load_multi_frame_pdb( - parameters["PDBFileName"], parameters - ) - - # calculate all the volumes - log("", parameters) - log("Calculating the pocket volume of each frame", parameters) - tmp = MultiThreading( - [ - (index, pdb_object, parameters) - for index, pdb_object in index_and_pdbs - ], - parameters["NumProcessors"], - MultithreadingCalcVolumeTask, - ) - - # delete the temp swap directory if necessary - if parameters["UseDiskNotMemory"]: - if os.path.exists("./.povme_tmp"): - shutil.rmtree("./.povme_tmp") - - # display the results - results_dic = {} - for result in tmp.results: - results_dic[result[0]] = result[1] - log("", parameters) - log("FRAME | VOLUME (A^3)", parameters) - log("-------------+-------------", parameters) - for i in sorted(results_dic.keys()): - log(str(i).ljust(13) + "| " + str(results_dic[i]), parameters) - - log("", parameters) - log( - "Execution time = " + str(time.time() - start_time) + " sec", parameters - ) - log("", parameters) + if path_pdb is not None: + if not os.path.exists(path_pdb): + logger.error(f"PDB file {path_pdb} does not exits!") + sys.exit(0) + results = self.compute_volume(path_pdb, config) # if the user requested a separate volume file, save that as well - if parameters["SaveTabbedVolumeFile"]: - if parameters["CompressOutput"]: + if config.save_tabbed_volume_file: + if config.compress_output: f = gzopenfile( - parameters["OutputFilenamePrefix"] + "volumes.tabbed.txt.gz", + output_prefix + "volumes.tabbed.txt.gz", "wb", ) else: - f = openfile( - parameters["OutputFilenamePrefix"] + "volumes.tabbed.txt", "w" - ) - for i in sorted(results_dic.keys()): + f = openfile(output_prefix + "volumes.tabbed.txt", "w") + for i in sorted(results.keys()): write_to_file( f, - str(i) + "\t" + str(results_dic[i]) + "\n", - encode=parameters["CompressOutput"], + str(i) + "\t" + str(results[i]) + "\n", + encode=config.compress_output, ) f.close() # if the user wanted a single trajectory containing all the # volumes, generate that here. - if parameters["SavePocketVolumesTrajectory"]: - if parameters["CompressOutput"]: + if config.save_pocket_volumes_trajectory: + if config.compress_output: traj_file = gzopenfile( - parameters["OutputFilenamePrefix"] + "volume_trajectory.pdb.gz", + output_prefix + "volume_trajectory.pdb.gz", "wb", ) else: traj_file = openfile( - parameters["OutputFilenamePrefix"] + "volume_trajectory.pdb", + output_prefix + "volume_trajectory.pdb", "w", ) - for frame_index in range(1, len(list(results_dic.keys())) + 1): - if parameters["CompressOutput"]: + for frame_index in range(1, len(list(results.keys())) + 1): + if config.compress_output: frame_file = gzopenfile( - parameters["OutputFilenamePrefix"] - + "frame_" - + str(frame_index) - + ".pdb.gz", + output_prefix + "frame_" + str(frame_index) + ".pdb.gz", "rb", ) else: frame_file = openfile( - parameters["OutputFilenamePrefix"] - + "frame_" - + str(frame_index) - + ".pdb", + output_prefix + "frame_" + str(frame_index) + ".pdb", "r", ) @@ -584,7 +432,7 @@ def __init__( # if the user requested a volumetric density map, then generate it # here - if parameters["SaveVolumetricDensityMap"]: + if config.save_volumetric_density_map: unique_points = {} overall_min = np.ones(3) * 1e100 @@ -607,25 +455,24 @@ def __init__( except: unique_points[pt_key] = 1 if overall_min[0] == 1e100: - log( + logger.info( "ERROR! Cannont save volumetric density file because no volumes present in any frame.", - parameters, ) else: xpts = np.arange( overall_min[0], - overall_max[0] + parameters["GridSpacing"], - parameters["GridSpacing"], + overall_max[0] + config.grid_spacing, + config.grid_spacing, ) ypts = np.arange( overall_min[1], - overall_max[1] + parameters["GridSpacing"], - parameters["GridSpacing"], + overall_max[1] + config.grid_spacing, + config.grid_spacing, ) zpts = np.arange( overall_min[2], - overall_max[2] + parameters["GridSpacing"], - parameters["GridSpacing"], + overall_max[2] + config.grid_spacing, + config.grid_spacing, ) all_pts = np.zeros((len(xpts) * len(ypts) * len(zpts), 4)) @@ -655,4 +502,5 @@ def __init__( # import cPickle as pickle # pickle.dump(all_pts, open('dill.pickle', 'w')) - self.results = results_dic + self.results = results + return results diff --git a/povme/region.py b/povme/region.py index cda90d6..e5ab627 100644 --- a/povme/region.py +++ b/povme/region.py @@ -15,6 +15,22 @@ def __init__(self): self.region_type = "SPHERE" # could also be BOX + def make_sphere(self, data): + self.center[0] = data[0] + self.center[1] = data[1] + self.center[2] = data[2] + self.radius = data[3] + self.region_type = "SPHERE" + + def make_box(self, data): + self.center[0] = data[0] + self.center[1] = data[1] + self.center[2] = data[2] + self.box_dimen[0] = data[3] + self.box_dimen[1] = data[4] + self.box_dimen[2] = data[5] + self.region_type = "BOX" + def __str__(self): """Returns a string representation of the region.""" @@ -51,12 +67,12 @@ def __snap(self, pts, reso): """Snaps a set of points to a fixed grid. Args: - pts: A nx3 np.array representing 3D points. - reso: A float, the resolution of the grid. + pts: A nx3 np.array representing 3D points. + reso: A float, the resolution of the grid. Returns: - A nx3 np.array with the 3D points snapped to the nearest grid - point. + A nx3 np.array with the 3D points snapped to the nearest grid + point. """ @@ -73,11 +89,11 @@ def points_set(self, reso): points. Args: - reso: A float, the resolution of the grid on which the points will - be placed. + reso: A float, the resolution of the grid on which the points will + be placed. Returns: - A nx3 np.array with the 3D points filling the region. + A nx3 np.array with the 3D points filling the region. """ diff --git a/tests/conftest.py b/tests/conftest.py index 88d4d4c..e1c767a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,8 +6,8 @@ @pytest.fixture -def path_4nss_input(): - return os.path.join(TEST_DIR, "files/4nss/povme-input.ini") +def path_4nss_config(): + return os.path.join(TEST_DIR, "files/4nss/povme.yml") @pytest.fixture diff --git a/tests/files/4nss/povme.yml b/tests/files/4nss/povme.yml new file mode 100644 index 0000000..cd5af90 --- /dev/null +++ b/tests/files/4nss/povme.yml @@ -0,0 +1,48 @@ +# POVME 2.2.2 Sample Input File + +grid_spacing: 1.0 + +load_points_path: null + +points_inclusion_sphere: + - [65.0, 98.0, 50.0, 16.0] + - [-100.0, -100.0, -100.0, 10.0] + +points_inclusion_box: + - [100.0, 100.0, 100.0, 10.0, 10.0, 10.0] + +points_exclusion_sphere: + - [-100.0, -100.0, -100.0, 10.0] + +points_exclusion_box: + - [100.0, 100.0, 100.0, 10.0, 10.0, 10.0] + +save_points: true + +distance_cutoff: 1.09 + +convex_hull_exclusion: true + +contiguous_pocket_seed_sphere: + - [67.0, 102.0, 57.0, 4.0] + +contiguous_pocket_seed_box: + - [] + +contiguous_points_criteria: 3 + +num_processors: 4 + +use_disk_not_memory: false + +save_individual_pocket_volumes: true + +save_pocket_volumes_trajectory: true + +output_equal_num_points_per_frame: true + +save_tabbed_volume_file: true + +save_volumetric_density_map: true + +compress_output: true diff --git a/tests/test_povme.py b/tests/test_povme.py index 7144a48..2d93c04 100644 --- a/tests/test_povme.py +++ b/tests/test_povme.py @@ -2,20 +2,16 @@ import os import shutil -from povme import RunPOVME +from povme import POVME -def test_4nss(path_4nss_input, path_4nss_output): +def test_4nss(path_4nss_config, path_4nss_output): dir_output = os.path.dirname(path_4nss_output) if os.path.exists(dir_output): shutil.rmtree(dir_output) - run_povme = RunPOVME( - path_4nss_input, - path_pdb="./tests/files/4nss/4nss.pdb", - output_prefix=path_4nss_output, - ) - results = run_povme.results + povme = POVME(path_4nss_config) + results = povme.run("./tests/files/4nss/4nss.pdb", path_4nss_output) expected_vols = set([1673.0, 1493.0, 1711.0, 1854.0, 2023.0]) actual_vols = set(results.values()) From e2aad0ec97d979801438d9faab0b7b2a1b2500f3 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 11:45:30 -0500 Subject: [PATCH 14/20] fix: get 4nss test running --- povme/config/povme.py | 3 - povme/hull.py | 45 +++---- povme/io.py | 8 +- povme/povme.py | 255 ++++++++++++++++++------------------- tests/files/4nss/povme.yml | 6 +- 5 files changed, 147 insertions(+), 170 deletions(-) diff --git a/povme/config/povme.py b/povme/config/povme.py index 4ba2b8a..a43dd55 100644 --- a/povme/config/povme.py +++ b/povme/config/povme.py @@ -86,9 +86,6 @@ class POVMEConfig(BaseModel, YamlIO): output_equal_num_points_per_frame: bool = False """Whether to add extra points at the origin (0.0, 0.0, 0.0) to ensure the same number of points in each frame.""" - save_tabbed_volume_file: bool = False - """Whether to save the calculated volumes to a tab-separated file.""" - save_volumetric_density_map: bool = False """Whether to save a volumetric density map in DX format.""" diff --git a/povme/hull.py b/povme/hull.py index 7aaa7bb..dad2a7d 100644 --- a/povme/hull.py +++ b/povme/hull.py @@ -384,15 +384,11 @@ def value_func(self, item, results_queue): """ - frame_indx = item[0] - pdb = item[1] - parameters = item[2] - # pts = parameters['pts_orig'].copy() # this works - pts = parameters["pts_orig"] # also works, so keep because faster + frame_indx, pdb, pts, regions_contig, output_prefix, config = item # if the user wants to save empty points (points that are removed), # then we need a copy of the original - if parameters["OutputEqualNumPointsPerFrame"]: + if config.output_equal_num_points_per_frame: pts_deleted = pts.copy() # you may need to load it from disk if the user so specified @@ -402,8 +398,8 @@ def value_func(self, item, results_queue): pdb.fileio.load_pym_into(pym_filename) # remove the points that are far from the points region anyway - min_pts = np.min(pts, 0) - parameters["DistanceCutoff"] - 1 - max_pts = np.max(pts, 0) + parameters["DistanceCutoff"] + 1 + min_pts = np.min(pts, 0) - config.distance_cutoff - 1 + max_pts = np.max(pts, 0) + config.distance_cutoff + 1 # identify atoms that are so far away from points that they can be # ignored. First, x's too small. @@ -474,13 +470,13 @@ def value_func(self, item, results_queue): # now identify the points that are close to the protein atoms dists = cdist(pdb.information.coordinates, pts) - close_pt_index = np.nonzero((dists < (vdw + parameters["DistanceCutoff"])))[1] + close_pt_index = np.nonzero((dists < (vdw + config.distance_cutoff)))[1] # now keep the appropriate points pts = np.delete(pts, close_pt_index, axis=0) # exclude points outside convex hull - if parameters["ConvexHullExclusion"]: + if config.convex_hull_exclusion: convex_hull_3d = ConvexHull(pts) # get the coordinates of the non-hydrogen atoms (faster to discard @@ -519,27 +515,25 @@ def value_func(self, item, results_queue): pts = np.array(pts) # Now, enforce contiguity if needed - if len(parameters["ContiguousPocketSeedRegions"]) > 0 and len(pts) > 0: + if len(regions_contig) > 0 and len(pts) > 0: # first, for each point, determine how many neighbors it has to # count kiddy-corner points too - cutoff_dist = parameters["GridSpacing"] * 1.01 * math.sqrt(3) + cutoff_dist = config.grid_spacing * 1.01 * math.sqrt(3) pts_dists = squareform(pdist(pts)) # minus 1 because an atom shouldn't be considered its own neighor neighbor_counts = np.sum(pts_dists < cutoff_dist, axis=0) - 1 # remove all the points that don't have enough neighbors pts = pts[ - np.nonzero(neighbor_counts >= parameters["ContiguousPointsCriteria"])[0] + np.nonzero(neighbor_counts >= config.contiguous_points_criteria)[0] ] # get all the points in the defined parameters['ContiguousPocket'] # seed regions - contig_pts = parameters["ContiguousPocketSeedRegions"][0].points_set( - parameters["GridSpacing"] - ) - for Contig in parameters["ContiguousPocketSeedRegions"][1:]: + contig_pts = regions_contig[0].points_set(config.grid_spacing) + for Contig in regions_contig[1:]: contig_pts = np.vstack( - (contig_pts, Contig.points_set(parameters["GridSpacing"])) + (contig_pts, Contig.points_set(config.grid_spacing)) ) contig_pts = unique_rows(contig_pts) @@ -563,24 +557,23 @@ def value_func(self, item, results_queue): pts = contig_pts except: - log( - "\tFrame " + logger.exception( + "Frame " + str(frame_indx) - + ": None of the points in the contiguous-pocket seed region\n\t\tare outside the volume of the protein! Assuming a pocket\n\t\tvolume of 0.0 A.", - parameters, + + ": None of the points in the contiguous-pocket seed region\n\t\tare outside the volume of the protein! Assuming a pocket\n\t\tvolume of 0.0 A." ) pts = np.array([]) # now write the pdb and calculate the volume - volume = len(pts) * math.pow(parameters["GridSpacing"], 3) + volume = len(pts) * math.pow(config.grid_spacing, 3) - log("\tFrame " + str(frame_indx) + ": " + repr(volume) + " A^3", parameters) - if parameters["SaveIndividualPocketVolumes"]: + logger.info("\tFrame " + str(frame_indx) + ": " + repr(volume) + " A^3") + if config.save_individual_pocket_volumes: frame_text = f"REMARK Frame {str(frame_indx)}" + "\n" frame_text += f"REMARK Volume = {repr(volume)}" + " Cubic Angstroms\n" frame_text += numpy_to_pdb(pts, "X") - if parameters["OutputEqualNumPointsPerFrame"]: + if config.output_equal_num_points_per_frame: # you need to find the points that are in pts_deleted but not # in pts tmp = reduce( diff --git a/povme/io.py b/povme/io.py index 50dd038..7d0f1f3 100644 --- a/povme/io.py +++ b/povme/io.py @@ -1,5 +1,3 @@ -from typing import Any - import gzip import platform from pathlib import Path, PureWindowsPath @@ -7,6 +5,8 @@ import numpy as np import numpy.typing as npt +from .config import POVMEConfig + def fix_filename(path: str, must_exist: bool = True) -> Path: """ @@ -295,7 +295,9 @@ def numpy_to_pdb(narray, letter, resname=""): return t -def dx_freq(freq_mat: npt.NDArray[np.float64], parameters: dict[str, Any]) -> None: +def dx_freq( + freq_mat: npt.NDArray[np.float64], output_prefix: str, config: POVMEConfig +) -> None: """Generates a DX file that records the frequency that a volume element is open. diff --git a/povme/povme.py b/povme/povme.py index 40041f4..368925c 100644 --- a/povme/povme.py +++ b/povme/povme.py @@ -103,7 +103,6 @@ def load_multi_frame_pdb(self, filename, config): pymolecule.Molecule object representing the frame. """ - pdb_strings = [] growing_string = "" @@ -274,23 +273,17 @@ def write_points_contig(self, regions_contig, output_prefix, config): + " to permit visualization" ) - def compute_volume(self, pts, config): - # load the points in they aren't already present - if pts is None: - logger.info("Loading the point-field NPY file...") - parameters["pts_orig"] = np.load(parameters["LoadPointsFilename"]) - else: - parameters["pts_orig"] = pts - + def compute_volume(self, path_pdb, pts, regions_contig, output_prefix, config): # load the PDB frames - index_and_pdbs = self.load_multi_frame_pdb( - parameters["PDBFileName"], parameters - ) + index_and_pdbs = self.load_multi_frame_pdb(path_pdb, config) # calculate all the volumes logger.info("Calculating the pocket volume of each frame") tmp = MultiThreading( - [(index, pdb_object, config) for index, pdb_object in index_and_pdbs], + [ + (index, pdb_object, pts, regions_contig, output_prefix, config) + for index, pdb_object in index_and_pdbs + ], config.num_processors, MultithreadingCalcVolumeTask, ) @@ -299,22 +292,12 @@ def compute_volume(self, pts, config): if config.use_disk_not_memory: if os.path.exists("./.povme_tmp"): shutil.rmtree("./.povme_tmp") - - # display the results - results = {} - for result in tmp.results: - results[result[0]] = result[1] - logger.debug("FRAME | VOLUME (A^3)") - logger.debug("-------------+-------------") - for i in sorted(results.keys()): - logger.debug(str(i).ljust(13) + "| " + str(results[i])) - logger.info("Execution time = " + str(time.time() - self.t_start) + " sec") - return results + return tmp.results def run( self, - path_pdb: str | None = None, + path_pdb: str, output_prefix: str | None = None, ) -> dict[str, Any]: """Start POVME @@ -373,134 +356,140 @@ def run( if len(regions_contig) > 0: self.write_points_contig(regions_contig, output_prefix, config) - # so there's a PDB point specified for calculating the volume. - if path_pdb is not None: - if not os.path.exists(path_pdb): - logger.error(f"PDB file {path_pdb} does not exits!") - sys.exit(0) - results = self.compute_volume(path_pdb, config) + # Compute volumes of frames in PDB file. + if not os.path.exists(path_pdb): + logger.error(f"PDB file {path_pdb} does not exits!") + sys.exit(0) + results = self.compute_volume( + path_pdb, pts, regions_contig, output_prefix, config + ) + results_vol = {} + for result in results: + results_vol[result[0]] = result[1] - # if the user requested a separate volume file, save that as well - if config.save_tabbed_volume_file: - if config.compress_output: - f = gzopenfile( - output_prefix + "volumes.tabbed.txt.gz", - "wb", - ) + # Save volumes to CSV file + if config.compress_output: + f = gzopenfile( + output_prefix + "volumes.csv.gz", + "wb", + ) + else: + f = openfile(output_prefix + "volumes.csv", "w") - else: - f = openfile(output_prefix + "volumes.tabbed.txt", "w") - for i in sorted(results.keys()): - write_to_file( - f, - str(i) + "\t" + str(results[i]) + "\n", - encode=config.compress_output, - ) + write_to_file( + f, + "frame_idx,volume\n", + encode=config.compress_output, + ) + for i in sorted(results_vol.keys()): + write_to_file( + f, + str(i) + "," + str(results_vol[i]) + "\n", + encode=config.compress_output, + ) + f.close() - f.close() + # if the user wanted a single trajectory containing all the + # volumes, generate that here. + if config.save_pocket_volumes_trajectory: + if config.compress_output: + traj_file = gzopenfile( + output_prefix + "volume_trajectory.pdb.gz", + "wb", + ) + else: + traj_file = openfile( + output_prefix + "volume_trajectory.pdb", + "w", + ) - # if the user wanted a single trajectory containing all the - # volumes, generate that here. - if config.save_pocket_volumes_trajectory: + for frame_index in range(1, len(list(results_vol.keys())) + 1): if config.compress_output: - traj_file = gzopenfile( - output_prefix + "volume_trajectory.pdb.gz", - "wb", + frame_file = gzopenfile( + output_prefix + "frame_" + str(frame_index) + ".pdb.gz", + "rb", ) else: - traj_file = openfile( - output_prefix + "volume_trajectory.pdb", - "w", + frame_file = openfile( + output_prefix + "frame_" + str(frame_index) + ".pdb", + "r", ) - for frame_index in range(1, len(list(results.keys())) + 1): - if config.compress_output: - frame_file = gzopenfile( - output_prefix + "frame_" + str(frame_index) + ".pdb.gz", - "rb", - ) - else: - frame_file = openfile( - output_prefix + "frame_" + str(frame_index) + ".pdb", - "r", - ) - - traj_file.write(frame_file.read()) - frame_file.close() + traj_file.write(frame_file.read()) + frame_file.close() - traj_file.close() + traj_file.close() - # if the user requested a volumetric density map, then generate it - # here - if config.save_volumetric_density_map: - unique_points = {} + # if the user requested a volumetric density map, then generate it + # here + if config.save_volumetric_density_map: + unique_points: dict[str, Any] = {} - overall_min = np.ones(3) * 1e100 - overall_max = np.ones(3) * -1e100 + overall_min = np.ones(3) * 1e100 + overall_max = np.ones(3) * -1e100 - for result in tmp.results: - pts = result[2]["SaveVolumetricDensityMap"] + for result in results: + pts = result[2]["SaveVolumetricDensityMap"] - if len(pts) > 0: - amin = np.min(pts, axis=0) - amax = np.max(pts, axis=0) + if len(pts) > 0: + amin = np.min(pts, axis=0) + amax = np.max(pts, axis=0) - overall_min = np.min(np.vstack((overall_min, amin)), axis=0) - overall_max = np.max(np.vstack((overall_max, amax)), axis=0) + overall_min = np.min(np.vstack((overall_min, amin)), axis=0) + overall_max = np.max(np.vstack((overall_max, amax)), axis=0) - for pt in pts: - pt_key = str(pt[0]) + ";" + str(pt[1]) + ";" + str(pt[2]) - try: - unique_points[pt_key] = unique_points[pt_key] + 1 - except: - unique_points[pt_key] = 1 - if overall_min[0] == 1e100: - logger.info( - "ERROR! Cannont save volumetric density file because no volumes present in any frame.", - ) - else: - xpts = np.arange( - overall_min[0], - overall_max[0] + config.grid_spacing, - config.grid_spacing, - ) - ypts = np.arange( - overall_min[1], - overall_max[1] + config.grid_spacing, - config.grid_spacing, - ) - zpts = np.arange( - overall_min[2], - overall_max[2] + config.grid_spacing, - config.grid_spacing, - ) + for pt in pts: + pt_key = str(pt[0]) + ";" + str(pt[1]) + ";" + str(pt[2]) + try: + unique_points[pt_key] = unique_points[pt_key] + 1 + except: + unique_points[pt_key] = 1 + if overall_min[0] == 1e100: + logger.info( + "ERROR! Cannot save volumetric density file because no volumes present in any frame.", + ) + else: + xpts = np.arange( + overall_min[0], + overall_max[0] + config.grid_spacing, + config.grid_spacing, + ) + ypts = np.arange( + overall_min[1], + overall_max[1] + config.grid_spacing, + config.grid_spacing, + ) + zpts = np.arange( + overall_min[2], + overall_max[2] + config.grid_spacing, + config.grid_spacing, + ) - all_pts = np.zeros((len(xpts) * len(ypts) * len(zpts), 4)) + all_pts = np.zeros((len(xpts) * len(ypts) * len(zpts), 4)) - i = 0 - for x in xpts: - for y in ypts: - for z in zpts: - key = str(x) + ";" + str(y) + ";" + str(z) - all_pts[i][0] = x - all_pts[i][1] = y - all_pts[i][2] = z + i = 0 + for x in xpts: + for y in ypts: + for z in zpts: + key = str(x) + ";" + str(y) + ";" + str(z) + all_pts[i][0] = x + all_pts[i][1] = y + all_pts[i][2] = z - try: - all_pts[i][3] = unique_points[key] - except: - pass + try: + all_pts[i][3] = unique_points[key] + except: + pass - i = i + 1 + i = i + 1 - # convert the counts in the fourth column into frequencies - all_pts[:, 3] = all_pts[:, 3] / len(tmp.results) - dx_freq(all_pts, parameters) # save the dx file + # convert the counts in the fourth column into frequencies + all_pts[:, 3] = all_pts[:, 3] / len(results) + dx_freq(all_pts, output_prefix, config) # save the dx file - # print "To turn into a DX file:" - # print all_pts - # import cPickle as pickle - # pickle.dump(all_pts, open('dill.pickle', 'w')) + # print "To turn into a DX file:" + # print all_pts + # import cPickle as pickle + # pickle.dump(all_pts, open('dill.pickle', 'w')) - self.results = results - return results + return results_vol diff --git a/tests/files/4nss/povme.yml b/tests/files/4nss/povme.yml index cd5af90..4805141 100644 --- a/tests/files/4nss/povme.yml +++ b/tests/files/4nss/povme.yml @@ -1,5 +1,3 @@ -# POVME 2.2.2 Sample Input File - grid_spacing: 1.0 load_points_path: null @@ -41,8 +39,6 @@ save_pocket_volumes_trajectory: true output_equal_num_points_per_frame: true -save_tabbed_volume_file: true - save_volumetric_density_map: true -compress_output: true +compress_output: false From 092a10053125d3e6b0404064a52790c6be5772c6 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 12:01:41 -0500 Subject: [PATCH 15/20] refactor: modular writing on POVME --- povme/povme.py | 240 +++++++++++++++++++++++++------------------------ 1 file changed, 124 insertions(+), 116 deletions(-) diff --git a/povme/povme.py b/povme/povme.py index 368925c..b8ca804 100644 --- a/povme/povme.py +++ b/povme/povme.py @@ -294,6 +294,126 @@ def compute_volume(self, path_pdb, pts, regions_contig, output_prefix, config): shutil.rmtree("./.povme_tmp") logger.info("Execution time = " + str(time.time() - self.t_start) + " sec") return tmp.results + + @staticmethod + def write_vol_csv(results_vol, output_prefix, config): + if config.compress_output: + f = gzopenfile( + output_prefix + "volumes.csv.gz", + "wb", + ) + else: + f = openfile(output_prefix + "volumes.csv", "w") + + write_to_file( + f, + "frame_idx,volume\n", + encode=config.compress_output, + ) + for i in sorted(results_vol.keys()): + write_to_file( + f, + str(i) + "," + str(results_vol[i]) + "\n", + encode=config.compress_output, + ) + f.close() + + @staticmethod + def write_vol_traj(results_vol, output_prefix, config): + if config.compress_output: + traj_file = gzopenfile( + output_prefix + "volume_trajectory.pdb.gz", + "wb", + ) + else: + traj_file = openfile( + output_prefix + "volume_trajectory.pdb", + "w", + ) + + for frame_index in range(1, len(list(results_vol.keys())) + 1): + if config.compress_output: + frame_file = gzopenfile( + output_prefix + "frame_" + str(frame_index) + ".pdb.gz", + "rb", + ) + else: + frame_file = openfile( + output_prefix + "frame_" + str(frame_index) + ".pdb", + "r", + ) + + traj_file.write(frame_file.read()) + frame_file.close() + + traj_file.close() + + + @staticmethod + def write_vol_dens(results, output_prefix, config): + unique_points: dict[str, Any] = {} + + overall_min = np.ones(3) * 1e100 + overall_max = np.ones(3) * -1e100 + + for result in results: + pts = result[2]["SaveVolumetricDensityMap"] + + if len(pts) > 0: + amin = np.min(pts, axis=0) + amax = np.max(pts, axis=0) + + overall_min = np.min(np.vstack((overall_min, amin)), axis=0) + overall_max = np.max(np.vstack((overall_max, amax)), axis=0) + + for pt in pts: + pt_key = str(pt[0]) + ";" + str(pt[1]) + ";" + str(pt[2]) + try: + unique_points[pt_key] = unique_points[pt_key] + 1 + except: + unique_points[pt_key] = 1 + if overall_min[0] == 1e100: + logger.info( + "ERROR! Cannot save volumetric density file because no volumes present in any frame.", + ) + else: + xpts = np.arange( + overall_min[0], + overall_max[0] + config.grid_spacing, + config.grid_spacing, + ) + ypts = np.arange( + overall_min[1], + overall_max[1] + config.grid_spacing, + config.grid_spacing, + ) + zpts = np.arange( + overall_min[2], + overall_max[2] + config.grid_spacing, + config.grid_spacing, + ) + + all_pts = np.zeros((len(xpts) * len(ypts) * len(zpts), 4)) + + i = 0 + for x in xpts: + for y in ypts: + for z in zpts: + key = str(x) + ";" + str(y) + ";" + str(z) + all_pts[i][0] = x + all_pts[i][1] = y + all_pts[i][2] = z + + try: + all_pts[i][3] = unique_points[key] + except: + pass + + i = i + 1 + + # convert the counts in the fourth column into frequencies + all_pts[:, 3] = all_pts[:, 3] / len(results) + dx_freq(all_pts, output_prefix, config) # save the dx file def run( self, @@ -368,128 +488,16 @@ def run( results_vol[result[0]] = result[1] # Save volumes to CSV file - if config.compress_output: - f = gzopenfile( - output_prefix + "volumes.csv.gz", - "wb", - ) - else: - f = openfile(output_prefix + "volumes.csv", "w") - - write_to_file( - f, - "frame_idx,volume\n", - encode=config.compress_output, - ) - for i in sorted(results_vol.keys()): - write_to_file( - f, - str(i) + "," + str(results_vol[i]) + "\n", - encode=config.compress_output, - ) - f.close() + self.write_vol_csv(results_vol, output_prefix, config) # if the user wanted a single trajectory containing all the # volumes, generate that here. if config.save_pocket_volumes_trajectory: - if config.compress_output: - traj_file = gzopenfile( - output_prefix + "volume_trajectory.pdb.gz", - "wb", - ) - else: - traj_file = openfile( - output_prefix + "volume_trajectory.pdb", - "w", - ) + self.write_vol_traj(results_vol, output_prefix, config) - for frame_index in range(1, len(list(results_vol.keys())) + 1): - if config.compress_output: - frame_file = gzopenfile( - output_prefix + "frame_" + str(frame_index) + ".pdb.gz", - "rb", - ) - else: - frame_file = openfile( - output_prefix + "frame_" + str(frame_index) + ".pdb", - "r", - ) - - traj_file.write(frame_file.read()) - frame_file.close() - - traj_file.close() - - # if the user requested a volumetric density map, then generate it - # here + # if the user requested a volumetric density map, then generate it here if config.save_volumetric_density_map: - unique_points: dict[str, Any] = {} - - overall_min = np.ones(3) * 1e100 - overall_max = np.ones(3) * -1e100 - - for result in results: - pts = result[2]["SaveVolumetricDensityMap"] - - if len(pts) > 0: - amin = np.min(pts, axis=0) - amax = np.max(pts, axis=0) - - overall_min = np.min(np.vstack((overall_min, amin)), axis=0) - overall_max = np.max(np.vstack((overall_max, amax)), axis=0) - - for pt in pts: - pt_key = str(pt[0]) + ";" + str(pt[1]) + ";" + str(pt[2]) - try: - unique_points[pt_key] = unique_points[pt_key] + 1 - except: - unique_points[pt_key] = 1 - if overall_min[0] == 1e100: - logger.info( - "ERROR! Cannot save volumetric density file because no volumes present in any frame.", - ) - else: - xpts = np.arange( - overall_min[0], - overall_max[0] + config.grid_spacing, - config.grid_spacing, - ) - ypts = np.arange( - overall_min[1], - overall_max[1] + config.grid_spacing, - config.grid_spacing, - ) - zpts = np.arange( - overall_min[2], - overall_max[2] + config.grid_spacing, - config.grid_spacing, - ) - - all_pts = np.zeros((len(xpts) * len(ypts) * len(zpts), 4)) - - i = 0 - for x in xpts: - for y in ypts: - for z in zpts: - key = str(x) + ";" + str(y) + ";" + str(z) - all_pts[i][0] = x - all_pts[i][1] = y - all_pts[i][2] = z - - try: - all_pts[i][3] = unique_points[key] - except: - pass - - i = i + 1 - - # convert the counts in the fourth column into frequencies - all_pts[:, 3] = all_pts[:, 3] / len(results) - dx_freq(all_pts, output_prefix, config) # save the dx file + self.write_vol_dens(results, output_prefix, config) - # print "To turn into a DX file:" - # print all_pts - # import cPickle as pickle - # pickle.dump(all_pts, open('dill.pickle', 'w')) return results_vol From 704b48c10534f755364c3640bf8706cab473d3c4 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 12:01:50 -0500 Subject: [PATCH 16/20] tests: Enable logging --- tests/conftest.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index e1c767a..e020eaf 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,8 +2,14 @@ import pytest +from povme import enable_logging + TEST_DIR = os.path.dirname(__file__) +@pytest.fixture(scope="session", autouse=True) +def turn_on_logging(): + enable_logging(10) + @pytest.fixture def path_4nss_config(): From 98bda4be84995944190699c7153ddd304abf05db Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 12:04:03 -0500 Subject: [PATCH 17/20] tests: cleanup --- tests/files/4nss/povme-input.ini | 199 ------------------------------- tests/test_povme.py | 5 +- 2 files changed, 3 insertions(+), 201 deletions(-) delete mode 100755 tests/files/4nss/povme-input.ini diff --git a/tests/files/4nss/povme-input.ini b/tests/files/4nss/povme-input.ini deleted file mode 100755 index d2d807b..0000000 --- a/tests/files/4nss/povme-input.ini +++ /dev/null @@ -1,199 +0,0 @@ -# POVME 2.2.2 Sample Input File - -# First, we need to define a point field that entirely encompasses all trajectory pockets. -GridSpacing 1.0 # The distance, in Angstroms, between - # adjacent points. Making this number - # lower improves accuracy at the - # expense of compute time. - -PointsInclusionSphere 65.0 98.0 50.0 16.0 # Add a sphere of points to the pocket- - # encompassing region, centered on - # (65.0 98.0 50.0) with radius 16.0. - # (65.0 98.0 50.0) is the location of - # the enzymatic active site in the - # sample PDB trajectory file provided - # (4NSS.pdb). - -PointsInclusionSphere -100.0 -100.0 -100.0 10.0 # Add a second sphere of points. Note - # that this sphere is included only for - # demonstration purposes. The point - # (-100.0 -100.0 -100.0) is actually far - # from the 4NSS.pdb structure. - -PointsInclusionBox 100.0 100.0 100.0 10.0 10.0 10.0 # Add a rectangular prism ("box") of - # points to the pocket-encompassing - # region, centered on (100.0 100.0 100.0) - # and spanning 10.0 Angstroms in the x, - # y, and z directions, respectively. - # Again, this box is far from the - # 4NSS.pdb structure and is included only - # for demonstration purposes. - -PointsExclusionSphere -100.0 -100.0 -100.0 10.0 # Remove all points from the pocket- - # encompassing region that fall within - # a sphere centered at - # (-100.0 -100.0 -100.0) with radius - # 10.0. - -PointsExclusionBox 100.0 100.0 100.0 10.0 10.0 10.0 # Remove all points from the pocket- - # encompassing region that fall within a - # box, centered at (100.0 100.0 100.0) - # and spanning 10.0 Angstroms in the x, - # y, and z directions, respectively. - -# Saving and loading the POVME points of the pocket-encompassing region. -SavePoints true # You can optionally save the point - # field to a PDB file. As you can - # imagine, identifying just the right set - # of inclusion and exclusion spheres and - # boxes to encompass the binding pocket - # is challenging. One approach is to - # define an initial geometry, visualize - # that geometry together with the protein - # using a program like VMD, and then - # iteratively add new inclusion and - # exclusion regions as required. The - # ability to save the points for - # visualization is helpful. Additionally, - # if your point field contains many - # points, generating the field may be - # computationally intensive. If you want - # to use the same field for multiple - # POVME runs, using a saved copy of the - # field rather than repeatedly generating - # it from scratch is more efficient. Note - # that POVME also saves a NPY file, which - # contains the same data as the PDB file - # but can be loaded much faster in - # subsequent POVME runs. The point-field - # PDB file is saved to - # {PREFIX}point_field.pdb (see - # OutputFilenamePrefix below). - - # Additionally, if you specify a - # contiguous-pocket seed region (see - # ContiguousPocketSeedSphere and - # ContiguousPocketSeedBox below), POVME - # will also save those points to - # {PREFIX}contiguous_pocket_seed_points.pdb - # for visualization. - -#LoadPointsFilename points.pdb.npy # You can optionally load previous point - # fields if you don't want to generate - # them using the comamnds above. Note - # that you should use the .pdb.npy file, - # not the pdb file. - -# Load the PDB trajectory file -PDBFileName ./4nss.pdb # Load in the PDB trajectory file with - # the pocket you want to analyze. - -# Tell POVME how to identify points that are within the binding pocket. -DistanceCutoff 1.09 # Any point that comes within this - # distance of any receptor atom's van der - # Waals surface will not be considered - # part of the pocket volume. 1.09 - # Angstroms was chosen as the default - # value because that is the van der Waals - # radius of a hydrogen atom. - -ConvexHullExclusion true # Calculate the convex hull of receptor - # atoms near the pocket. Remove portions - # of the binding pocket that fall outside - # this convex hull. Setting this to false - # will speed up the calculation but may - # lead to inaccuracies in some cases. - - -ContiguousPocketSeedSphere 67.0 102.0 57.0 4.0 # It's possible your pocket-encompassing - # point field defined above might include - # more than one pocket in at least some - # of the frames of your trajectory. You - # can instruct POVME to remove any points - # that are not contiguous with a user- - # defined "contiguous pocket seed - # region." This region, which is typically - # just a small sphere placed in the - # center of your primary pocket of - # interest, tells POVME which pocket to - # measure. If no such regions are - # specified, POVME will calculate the - # total volume accross all pockets - # covered by your pocket-encompassing - # point field, even if they are not - # contiguous. - -#ContiguousPocketSeedBox 50.0 50.0 50.0 10.0 10.0 10.0 # You can add additional volumes to the - # contiguous pocket seed region with - # additional ContiguousPocketSeedSphere - # and ContiguousPocketSeedBox commands, - # following the notation described above. - -ContiguousPointsCriteria 3 # Two pocket volumes are considered - # "contiguous" if they share at least - # this number neighboring points in - # common. Note that points that are - # "kitty-corner" from each other count - # as neighbors. - -# Tell POVME how to perform the calculations. -NumProcessors 12 # POVME can use multiple processors on - # Unix-based systems. - -UseDiskNotMemory false # In some cases, your PDB trajectory may - # be so large that the resulting POVME - # analysis cannot be easily stored in - # your computer's memory. If - # UseDiskNotMemory is set to true, POVME - # will rely more on your disk space than - # on memory/RAM. - -# Tell POVME how to save the output -OutputFilenamePrefix ./tmp/4nss/POVME_ # All the files POVME outputs will start - # with this prefix. POVME automatically - # creates any required directory - # (./tmp/4nss/ in this case). - -SaveIndividualPocketVolumes true # If true, POVME saves the pocket-volume - # points of each frame to a separate PDB - # file. The file names will be like - # {PREFIX}frame_X.pdb. - -SavePocketVolumesTrajectory true # If true, POVME saves all the pocket- - # volume points of each frame to a single - # PDB trajectory file. The individual - # frames are separated by END cards. The - # file name will be - # {PREFIX}volume_trajectory.pdb. - -OutputEqualNumPointsPerFrame true # Some visualization programs (e.g. VMD) - # are only compatible with trajectories - # that have the same number of atoms in - # each frame. If EqualNumAtomsPerFrame is - # true, POVME adds extra points at the - # origin (0.0, 0.0, 0.0) to satisfy this - # requirement. This affects files created - # with both SaveIndividualPocketVolumes - # and SavePocketVolumesTrajectory but - # does not alter the volume calculation - # itself. - -SaveTabbedVolumeFile true # If true, POVME saves the calculated - # volumes to a file in a simple tabular - # format that can be easily pasted into - # popular spreadsheet programs like - # Microsoft Excel. The file is named - # {PREFIX}volumes.tabbed.txt - -SaveVolumetricDensityMap true # If true, POVME saves a volumetric - # density map in the DX format. A - # volumetric density value is associated - # with each of the pocket-occupying - # points by calculating the fraction of - # all trajectory pocket volumes that - # include the given point. The file is - # named {PREFIX}volumetric_density.dx. - -CompressOutput true # If you're short on disk space, POVME - # can automatically compress all output - # files using gz compression. diff --git a/tests/test_povme.py b/tests/test_povme.py index 2d93c04..bd75cd5 100644 --- a/tests/test_povme.py +++ b/tests/test_povme.py @@ -17,5 +17,6 @@ def test_4nss(path_4nss_config, path_4nss_output): actual_vols = set(results.values()) assert actual_vols == expected_vols num_output_files = len(glob.glob(dir_output + "/*")) - if num_output_files != 12: - raise Exception("Expected 12 output files, but got " + str(num_output_files)) + # Was 12, but we currently do not write a log file. + if num_output_files != 11: + raise Exception("Expected 11 output files, but got " + str(num_output_files)) From d9d3fa8a00ec93ca7bfdcd841e15f5c7fb62fbd4 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 16:23:25 -0500 Subject: [PATCH 18/20] refactor: fix pocket detection --- povme/__init__.py | 3 +- povme/config/__init__.py | 3 +- povme/config/pocket.py | 34 + povme/parallel.py | 21 + povme/pocket.py | 18 +- povme/pocket_id.py | 1770 ++--------------- povme/povme.py | 6 +- povme/pymolecule.py | 107 +- tests/conftest.py | 11 + tests/files/rel1/pocket-id.yml | 13 + .../files/rel1/{rel1_example.pdb => rel1.pdb} | 0 tests/test_pocketid.py | 26 +- 12 files changed, 387 insertions(+), 1625 deletions(-) create mode 100644 povme/config/pocket.py create mode 100644 tests/files/rel1/pocket-id.yml rename tests/files/rel1/{rel1_example.pdb => rel1.pdb} (100%) diff --git a/povme/__init__.py b/povme/__init__.py index 2e5e81a..fe13763 100644 --- a/povme/__init__.py +++ b/povme/__init__.py @@ -6,9 +6,10 @@ from loguru import logger +from .pocket_id import PocketDetector from .povme import POVME -__all__ = ["POVME"] +__all__ = ["POVME", "PocketDetector"] __version__ = "2.2.2" logger.disable("povme") diff --git a/povme/config/__init__.py b/povme/config/__init__.py index 3ab64e2..6d5311f 100644 --- a/povme/config/__init__.py +++ b/povme/config/__init__.py @@ -1,3 +1,4 @@ +from .pocket import PocketIDConfig from .povme import POVMEConfig -__all__ = ["POVMEConfig"] +__all__ = ["POVMEConfig", "PocketIDConfig"] diff --git a/povme/config/pocket.py b/povme/config/pocket.py new file mode 100644 index 0000000..168e411 --- /dev/null +++ b/povme/config/pocket.py @@ -0,0 +1,34 @@ +from loguru import logger +from pydantic import BaseModel + +from .io import YamlIO + + +class PocketIDConfig(BaseModel, YamlIO): + pocket_detection_resolution: float = 4.0 + """The distance between probe points used to initially find the pockets""" + + pocket_measuring_resolution: float = 1.0 + """The distance between probe points used to measure identified pockets in greater detail. Should divide --pocket_detection_resolution evenly.""" + + clashing_cutoff: float = 3.0 + """In measuring the pockets, any points closer than this cutoff to receptor atoms will be removed.""" + + n_neighbors: int = 4 + """In measuring the pockets, any points with fewer than this number of neighbors will be deleted. These are usually just stray points that don't belong to any real pocket.""" + + n_spheres: int = 5 + """The number of inclusion spheres to generate for each pocket.""" + + sphere_padding: float = 5.0 + """How much larger the radius of the inclusion spheres should be, beyond what is required to encompass the identified pockets.""" + + n_cores: int = 1 + """The number of processors to use.""" + + def log(self) -> None: + """Log all configuration parameters.""" + logger.info("Logging Pocket Detection Configuration Settings:") + config_dict = self.model_dump() + for key, value in config_dict.items(): + logger.info(f"{key}: {value}") diff --git a/povme/parallel.py b/povme/parallel.py index e0d4c9e..be9c325 100644 --- a/povme/parallel.py +++ b/povme/parallel.py @@ -156,3 +156,24 @@ def value_func(self, item, results_queue): # so overwriting this function # self.results.append(some_result) pass + + +class GeneralTask: + """A class that determines the specific calculations that will be + performed when multi-processor support is used. Other, more + specific classes will inherit this one.""" + + results = [] + + def runit(self, running, mutex, results_queue, items): + for item in items: + self.value_func(item, results_queue) + mutex.acquire() + running.value -= 1 + mutex.release() + results_queue.put(self.results) + + # this is the function that changes through inheritance + def value_func(self, item, results_queue): + print(item) # here's where you do something + self.results.append(item) # here save the results for later compilation diff --git a/povme/pocket.py b/povme/pocket.py index 73ead8b..e3a08ff 100644 --- a/povme/pocket.py +++ b/povme/pocket.py @@ -1,14 +1,10 @@ -from typing import Any - -import np.typing as npt import numpy as np +import numpy.typing as npt from scipy import spatial from .io import write_pdbs from .parallel import GeneralTask, MultiThreading -params: dict[str, Any] = {} - class BoxOfPoints: """A class representing a box of equidistant points.""" @@ -52,14 +48,14 @@ def __snap_float( return np.floor(val / reso) * reso - def remove_points_outside_convex_hull(self, hull): + def remove_points_outside_convex_hull(self, hull, config): """Removes box points that are outside a convex hull. Args: hull: The convex hull. """ - chunks = [(hull, t) for t in np.array_split(self.points, params["processors"])] - tmp = MultiThreading(chunks, params["processors"], self.__MultiIdHullPts) + chunks = [(hull, t) for t in np.array_split(self.points, config.n_cores)] + tmp = MultiThreading(chunks, config.n_cores, self.__MultiIdHullPts) self.points = np.vstack(tmp.results) class __MultiIdHullPts(GeneralTask): @@ -87,7 +83,7 @@ def value_func(self, items, results_queue): # so overwriting this function self.results.append(np.array(new_pts)) def remove_all_points_close_to_other_points( - self, other_points: npt.NDArray[np.float64], dist_cutoff: float + self, other_points: npt.NDArray[np.float64], dist_cutoff: float, config ) -> None: """Removes all points in this box that come within the points specified in a numpy array @@ -103,9 +99,9 @@ def remove_all_points_close_to_other_points( box_of_pts_distance_tree = spatial.KDTree(self.points) chunks = [ (box_of_pts_distance_tree, dist_cutoff, t) - for t in np.array_split(other_points, params["processors"]) + for t in np.array_split(other_points, config.n_cores) ] - tmp = MultiThreading(chunks, params["processors"], self.__MultiGetClosePoints) + tmp = MultiThreading(chunks, config.n_cores, self.__MultiGetClosePoints) indices_of_box_pts_close_to_molecule_points = np.unique(np.hstack(tmp.results)) self.points = np.delete( diff --git a/povme/pocket_id.py b/povme/pocket_id.py index 1f5cefd..030fff6 100644 --- a/povme/pocket_id.py +++ b/povme/pocket_id.py @@ -1,1627 +1,233 @@ -import getopt -import multiprocessing -import sys -import textwrap -import warnings +import os import numpy as np -from numpy.lib.recfunctions import append_fields -from scipy import spatial +from loguru import logger from scipy.cluster.vq import kmeans2 from scipy.spatial.distance import cdist -from .common import delete_testing_dir, openfile, setup_testing_dir, test_passed +from .config import PocketIDConfig +from .hull import ConvexHull +from .io import openfile, write_pdbs +from .pocket import BoxOfPoints +from .pymolecule import Molecule -# POVME Pocket ID 1.0 is a program for identifying protein pockets and -# generating appropriate pocket-encompassing inclusion spheres. These spheres, -# modified as required, can then be used as POVME input. -# Supress errors -np.seterr(all="ignore") -warnings.simplefilter("ignore") # no "One of the clusters is empty." warnings +class PocketDetector: + """The main class to run pocket detection.""" -# Some classes are required to support the loading and manipulation of 3D -# molecular information - - -class Information: - """A class for storing and accessing information about the elements of a - Molecule object""" - - def __init__(self, parent_molecule_object): - """Initializes the Information class. - - Args: - parent_molecule_object: The Molecule object associated with this - class. - - """ - - self.__parent_molecule = parent_molecule_object - - self.__constants = {} - self.__constants["i8_fields"] = ["serial", "resseq"] - self.__constants["f8_fields"] = ["x", "y", "z", "occupancy", "tempfactor"] - - self.__atom_information = None - self.__coordinates = None - - def get_atom_information(self): - return self.__atom_information - - def get_coordinates(self): - return self.__coordinates - - def get_constants(self): - return self.__constants - - def set_atom_information(self, atom_information): - self.__atom_information = atom_information - - def set_coordinates(self, coordinates): - self.__coordinates = coordinates - - def get_bounding_box(self, selection=None, padding=0.0): - """Calculates a box that bounds (encompasses) a set of atoms. - - Args: - selection: An optional np.array containing the indices of the - atoms to consider. If ommitted, all atoms of the Molecule - object will be considered. - padding: An optional float. The bounding box will extend this - many angstroms beyond the atoms being considered. - - Returns: - A numpy array representing two 3D points, (min_x, min_y, min_z) - and (max_x, max_y, max_z), that bound the molecule. - - """ - - if selection is None: - selection = self.__parent_molecule.select_all() - - return np.vstack( - ( - np.min(self.__coordinates[selection], 0), - np.max(self.__coordinates[selection], 0), - ) - ) - - -class FileIO: - """A class for saving and loading molecular data into a Molecule object.""" - - def __init__(self, parent_molecule_object): - """Initializes the FileIO class. + def __init__( + self, + path_config: str | None = None, + ) -> None: + """Initialize Pocket detector. Args: - parent_molecule_object: The Molecule object associated with this - class. - + path_config: Path to a configuration YAML file. """ - self.__parent_molecule = parent_molecule_object - - def load_pdb_into(self, filename): - """Loads the molecular data contained in a pdb file into the current - Molecule object. + self.config = PocketIDConfig() + if path_config is not None: + self.config.from_yaml(path_config) - Args: - filename: A string, the filename of the pdb file. + def run(self, path_pdb: str, output_prefix: str = "") -> None: - """ + config = self.config - # open/read the file - afile = openfile(filename, "r") - self.load_pdb_into_using_file_object(afile) - afile.close() + # If the output prefix includes a directory, create that directory if + # necessary + if "/" in output_prefix: + output_dirname = os.path.dirname(output_prefix) + os.makedirs(output_dirname, exist_ok=True) - def load_pdb_into_using_file_object(self, file_obj): - """Loads molecular data from a python file object (pdb formatted) into - the current Molecule object. Note that most users will want to use the - load_pdb_into() function instead, which is identical except that it - accepts a filename string instead of a python file object. + # Step 1: Load in the protein - Args: - file_obj: A python file object, containing pdb-formatted data. + logger.info("Step 1. Loading the PDB file " + path_pdb + "...") + molecule = Molecule() + molecule.fileio.load_pdb_into(path_pdb) - """ + # Step 2: Get rid of hydogen atoms. They just slow stuff down. - # source_data = np.genfromtxt(file_obj, dtype="S6,S5,S5,S4,S2,S4,S4,S8,S8,S8,S6,S6,S10,S2,S2", names=['record_name', 'serial', 'name', 'resname', 'chainid', 'resseq', 'empty', 'x', 'y', 'z', 'occupancy', 'tempfactor', 'empty2', 'element', 'charge'], delimiter=[6, 5, 5, 4, 2, 4, 4, 8, 8, 8, 6, 6, 10, 2, 2]) - source_data = np.genfromtxt( - file_obj, - dtype="S6,S5,S5,S5,S1,S4,S4,S8,S8,S8,S6,S6,S10,S2,S3", - names=[ - "record_name", - "serial", - "name", - "resname", - "chainid", - "resseq", - "empty", - "x", - "y", - "z", - "occupancy", - "tempfactor", - "empty2", - "element", - "charge", - ], - delimiter=[6, 5, 5, 5, 1, 4, 4, 8, 8, 8, 6, 6, 10, 2, 3], - ) + print("Step 2. Removing hydrogen atoms...") + sel = molecule.selections.select_atoms({"element_stripped": b"H"}) + sel = molecule.selections.invert_selection(sel) + molecule = molecule.selections.get_molecule_from_selection(sel) - if source_data.ndim == 0: - source_data = source_data.reshape( - 1, -1 - ) # in case the pdb file has only one line + # Step 3: Calculate the convex hull of the protein alpha carbons. + print("Step 3. Calculating the convex hull of the PDB file...") - # get the ones that are ATOM or HETATOM in the record_name - or_matrix = np.logical_or( - (source_data["record_name"] == b"ATOM "), - (source_data["record_name"] == b"HETATM"), + # Get a version of the protein with just the alpha carbons. In my + # experience, that's better for convex hull identification. Otherwise the + # program identifies shallow contors in the protein surface as pockets. + molecule_alpha_carbons = molecule.selections.get_molecule_from_selection( + molecule.selections.select_atoms({"name_stripped": b"CA"}) ) - indices_of_atom_or_hetatom = np.nonzero(or_matrix)[0] - self.__parent_molecule.set_atom_information( - source_data[indices_of_atom_or_hetatom] + convex_hull_3d = ConvexHull( + molecule_alpha_carbons.information.get_coordinates() ) - # now, some of the data needs to change types first, fields that - # should be numbers cannot be empty strings - for field in ( - self.__parent_molecule.get_constants()["i8_fields"] - + self.__parent_molecule.get_constants()["f8_fields"] - ): - check_fields = self.__parent_molecule.get_atom_information()[field] - check_fields = np.char.strip(check_fields) - indices_of_empty = np.nonzero(check_fields == "")[0] - self.__parent_molecule.get_atom_information()[field][indices_of_empty] = "0" + # Step 4. Get a box of equispaced points that surround the protein, + # snapped to reso. I'm putting a whole bunch of other functions in this + # class as well to manipulate the points of this box. - # now actually change the type - old_types = self.__parent_molecule.get_atom_information().dtype - descr = old_types.descr - for field in self.__parent_molecule.get_constants()["i8_fields"]: - index = self.__parent_molecule.get_atom_information().dtype.names.index( - field - ) - descr[index] = (descr[index][0], "i8") - for field in self.__parent_molecule.get_constants()["f8_fields"]: - index = self.__parent_molecule.get_atom_information().dtype.names.index( - field - ) - descr[index] = (descr[index][0], "f8") - new_types = np.dtype(descr) - self.__parent_molecule.set_atom_information( - self.__parent_molecule.get_atom_information().astype(new_types) + logger.info( + "Step 4. Making a box of points spaced " + + str(config.pocket_detection_resolution) + + " A apart that entirely encompasses the protein..." ) - # remove some of the fields that just contain empty data - self.__parent_molecule.set_atom_information( - self.__parent_molecule.numpy_structured_array_remove_field( - self.__parent_molecule.get_atom_information(), ["empty", "empty2"] - ) + # note that the initial box is low resolution (* 4) so convex hull will be + # very fast + box_pts = BoxOfPoints( + molecule.information.get_bounding_box(), + config.pocket_detection_resolution * 4, ) - # the coordinates need to be placed in their own special numpy array - # to facilitate later manipulation - self.__parent_molecule.set_coordinates( - np.vstack( - [ - self.__parent_molecule.get_atom_information()["x"], - self.__parent_molecule.get_atom_information()["y"], - self.__parent_molecule.get_atom_information()["z"], - ] - ).T + # Step 5. Remove points outside the convex hull. Gradually fill in + # protein-occupying region with denser point fields. Faster this way, I + # think. + logger.info( + "Step 5. Removing points that fall outside the protein's convex hull..." ) - self.__parent_molecule.set_atom_information( - self.__parent_molecule.numpy_structured_array_remove_field( - self.__parent_molecule.get_atom_information(), ["x", "y", "z"] - ) - ) # now remove the coordinates from the atom_information object to save memory - - # string values in - # self.__parent_molecule.information.get_atom_information() should - # also be provided in stripped format for easier comparison - fields_to_strip = ["name", "resname", "chainid", "element"] - for f in fields_to_strip: - self.__parent_molecule.set_atom_information( - append_fields( - self.__parent_molecule.get_atom_information(), - f + "_stripped", - data=np.char.strip( - self.__parent_molecule.get_atom_information()[f] - ), - ) - ) - - -class Selections: - """A class for selecting atoms""" - - ######## selections ######## - def __init__(self, parent_molecule_object): - """Initializes the Selections class. - - Args: - parent_molecule_object: The Molecule object associated with this - class. - - """ - - self.__parent_molecule = parent_molecule_object - - def select_atoms(self, selection_criteria): - """Select a set of atoms based on user-specified criteria. + box_pts.remove_points_outside_convex_hull(convex_hull_3d, config) + box_pts.expand_around_existing_points(2, config.pocket_detection_resolution * 2) + box_pts.remove_points_outside_convex_hull(convex_hull_3d, config) + box_pts.expand_around_existing_points(2, config.pocket_detection_resolution) + box_pts.remove_points_outside_convex_hull(convex_hull_3d, config) - Args: - selection_criteria: An dictionary, where the keys correspond to - keys in the - self.__parent_molecule.information.get_atom_information() - structured numpy array, and the values are lists of acceptable - matches. The selection is a logical "AND" between dictionary - entries, but "OR" within the value lists themselves. For - example: {'atom':['CA','O'], 'chain':'A', 'resname':'PRO'} - would select all atoms with the names CA or O that are located - in the PRO residues of chain A. - - Returns: - A np.array containing the indices of the atoms of the selection. - - """ - - try: - selection = np.ones( - len(self.__parent_molecule.get_atom_information()), dtype=bool - ) # start assuming everything is selected - - for key in list(selection_criteria.keys()): - - vals = selection_criteria[key] - - # make sure the vals are in a list - if not type(vals) is list and not type(vals) is tuple: - vals = [vals] # if it's a single value, put it in a list - - # make sure the vals are in the right format - if key in self.__parent_molecule.get_constants()["f8_fields"]: - vals = [float(v) for v in vals] - elif key in self.__parent_molecule.get_constants()["i8_fields"]: - vals = [int(v) for v in vals] - else: - vals = [v.strip() for v in vals] - - # "or" all the vals together - subselection = np.zeros( - len(self.__parent_molecule.get_atom_information()), dtype=bool - ) # start assuming nothing is selected - for val in vals: - subselection = np.logical_or( - subselection, - (self.__parent_molecule.get_atom_information()[key] == val), - ) - - # now "and" that with everything else - selection = np.logical_and(selection, subselection) - - # now get the indices of the selection - return np.nonzero(selection)[0] - except: - print("ERROR: Could not make the selection. Existing fields:") - print( - "\t" - + ", ".join(self.__parent_molecule.get_atom_information().dtype.names) - ) - sys.exit(0) - - def invert_selection(self, selection): - """Inverts a user-defined selection (i.e., identifies all atoms that - are not in the seleciton). - - Args: - selection: A np.array containing the indices of the - user-defined selection. - - Returns: - A np.array containing the indices of all atoms that are not in - the user-defined seleciton. - - """ - - # selection is a list of atom indices - all_atoms = np.arange( - 0, len(self.__parent_molecule.get_atom_information()), 1, dtype=int + # Step 6. Remove the points in this box that are too close to protein + # atoms. For simplicity's sake, don't worry about atomic radii. Just a + # simple cutoff. + logger.info( + "Step 6. Removing points that come within " + + str(config.clashing_cutoff) + + " A of any protein atom..." ) - remaining_indices = np.delete(all_atoms, selection) - return remaining_indices - - def select_all(self): - """Selects all the atoms in a Molecule object. - - Returns: - A np.array containing the indices of all atoms in the Molecule - object. - - """ - - return self.select_atoms({}) - - def get_molecule_from_selection(self, selection): - """Creates a Molecule from a user-defined atom selection. - - Arguments - selection: A np.array containing the indices of the atoms in - the user-defined selection. - - Returns: - A Molecule object containing the atoms of the user-defined - selection. - - """ - - new_mol = Molecule() - new_mol.set_coordinates(self.__parent_molecule.get_coordinates()[selection]) - new_mol.set_atom_information( - self.__parent_molecule.get_atom_information()[selection] + box_pts.remove_all_points_close_to_other_points( + molecule.information.get_coordinates(), config.clashing_cutoff, config ) - # note that hierarchy will have to be recalculated - - return new_mol - - -# here's the actual Molecule class -class Molecule: - """Loads, saves, and manupulates molecuar models. The main pymolecule - class.""" - - def __init__(self): - """Initializes the variables of the Molecule class.""" - - self.fileio = FileIO(self) - self.selections = Selections(self) - self.information = Information(self) - - # Information methods - def get_coordinates(self): - return self.information.get_coordinates() - - def get_atom_information(self): - return self.information.get_atom_information() - - def get_constants(self): - return self.information.get_constants() - - def get_bounding_box(self, selection=None, padding=0.0): - return self.information.get_bounding_box(selection, padding) - - def set_atom_information(self, atom_information): - self.information.set_atom_information(atom_information) - - def set_coordinates(self, coordinates): - self.information.set_coordinates(coordinates) - - # File I/O class methods - def load_pdb_into(self, filename): - self.fileio.load_pdb_into(filename) - - def load_pdb_into_using_file_object(self, file_obj): - self.fileio.load_pdb_into_using_file_object(file_obj) - - # Selections class - def get_molecule_from_selection(self, selection): - return self.selections.get_molecule_from_selection(selection) - - def select_atoms(self, selection_criteria): - return self.selections.select_atoms(selection_criteria) - - def invert_selection(self, selection): - return self.selections.invert_selection(selection) - - def select_all(self): - return self.selections.select_all() - - ######## supporting functions ######## - - def numpy_structured_array_remove_field( - self, narray, field_names - ): # surprised this doesn't come with numpy - """Removes a specific field name from a structured numpy array. - - Args: - narray: A structured numpy array. - field_names: A list of strings, where each string is one of the - field names of narray. - - Returns: - A structured numpy array identical to narray, but with the field - names in field_names removed. - - """ - - names = list( - narray.dtype.names - ) # now remove the coordinates from the atom_information object to save memory - for f in field_names: - names.remove(f) - return narray[names].copy() - - -# Some classes are required for calculating convex hulls - - -class ConvexHull: - """A class to handle convex-hull calculations""" - - def __init__(self, pts): - """Initializes the ConvexHull class.""" - - akl_toussaint_pts = self.akl_toussaint(pts) # quickly reduces input size - self.hull = self.gift_wrapping_3d( - akl_toussaint_pts - ) # calculate convex hull using gift wrapping algorithm - - def inside_hull(self, our_point): - """Determines if a point is inside the hull - - Args: - our_point: An x,y,z array - - Returns: - A boolean, True if the point is inside the hull, False otherwise. - - """ - - return not self.outside_hull(our_point, self.hull) - - def outside_hull( - self, our_point, triangles, epsilon=1.0e-5 - ): # this one used internally - """Given the hull as defined by a list of triangles, this definition - will return whether a point is within these or not. - - Args: - our_point: an x,y,z array - epsilon: needed for imprecisions in the floating-point operations. - - Returns: - True if our_point exists outside of the hull, False otherwise. - - """ - - our_point = np.array(our_point) # convert it to an np.array - for triangle in triangles: - # vector from triangle corner 0 to point - rel_point = our_point - triangle[0] - # vector from triangle corner 0 to corner 1 - vec1 = triangle[1] - triangle[0] - # vector from triangle corner 1 to corner 2 - vec2 = triangle[2] - triangle[1] - our_cross = np.cross(vec1, vec2) # cross product between vec1 and vec2 - # dot product to determine whether cross is point inward or outward - our_dot = np.dot(rel_point, our_cross) - # if the dot is greater than 0, then its outside - if np.dot(rel_point, our_cross) > epsilon: - return True - - return False - - def get_seg_dict_num(self, seg_dict, seg_index): - """seg_dict is a dictionary object that contains information about - segments within the convex hull. The keys are 2x3 tuples, which - represent two ends of a segment in space. The values of seg_dict are - the number of times a segment has been part of a triangle, either 1 or - 2. (Zero times would mean that the segment doesn't exist in the - dictionary yet). This function looks up and returns the value of a - seg_index from seg_dict. - - Args: - seg_dict: the dictionary of segment 2x3 tuples as keys, integers - as values. - seg_index: the key of the dictionary member we are going to - retrieve. - - Returns: - if seg_index exists in the keys of seg_dict, return the value. - Otherwise, return 0. - - """ - - # we want the index with the greater x-value, so we don't get - # identical segments in the dictionary more than once - if seg_index[0][0] > seg_index[1][0]: - index = seg_index - else: - index = seg_index[::-1] - - if index in seg_dict: - return seg_dict[index] - else: - return 0 - - def increment_seg_dict(self, seg_dict, seg_index): - """seg_dict is a dictionary object that contains information about - segments within the convex hull. The keys are 2x3 tuples, which - represent two ends of a segment in space. The values of seg_dict are - the number of times a segment has been part of a triangle, either 1 or - 2. (Zero times would mean that the segment doesn't exist in the - dictionary yet). This function increments the values within seg_dict, - or initiates them if they dont exist yet. - - Args: - seg_dict: the dictionary of segment 2x3 tuples as keys, integers - as values. - seg_index: the key of the dictionary member we are going to - increment. - - """ - - # we want the index with the greater x-value, so we don't get - # identical segments in the dictionary more than once - if seg_index[0][0] > seg_index[1][0]: - index = seg_index - else: - index = seg_index[::-1] - - # "putting index:", index, "into seg_dict because", index[0][0], ">", index[1][0] - - if index in seg_dict: # if the entry already exists in seg_dict - seg_dict[index] += 1 # increment - else: - # initiate with a value of 1 because it now exists on a triangle - seg_dict[index] = 1 - return - - def gift_wrapping_3d(self, raw_points): - """Gift wrapping for 3d convex hull. - - Args: - raw_points: A nx3 array of points, where each row corresponds to - an x,y,z point coordinate. - - Returns: - A convex hull represented by a list of triangles. Each triangle is - a 3x3 array, where each row is an x,y,z coordinate in space. - The 3 rows describe the location of the 3 corners of the - triangle. Each of the 3 points are arranged so that a cross - product will point outwards from the hull. - - """ - - n = np.shape(raw_points)[0] # number of points - point1 = raw_points[0] # take the first point - xaxis = np.array([1, 0, 0]) # create a ref vector pointing along x axis - maxx = raw_points[0][0] # initiate highest x value - points = [] # a list of tuples for easy dictionary lookup - seg_dict = {} # a dictionary that contains the number of triangles a seg is in - - for i in range(n): # find the n with the largest x value - point = tuple(raw_points[i]) - points.append(point) - if point[0] > maxx: - maxx = point[0] - point1 = raw_points[i] - - best_dot = -1.0 # initiate dot relative to x-axis - point2 = np.array(raw_points[1]) # initiate best segment - - # find first/best segment - for i in range(n): - pointi = raw_points[i] - if np.array_equal(pointi, point1): - continue - diff_vec = pointi - point1 - diff_len = np.linalg.norm(diff_vec) - - test_dot = np.dot(diff_vec / diff_len, xaxis) - if test_dot > best_dot: - best_dot = test_dot - point2 = pointi - - point1 = tuple(point1) - point2 = tuple(point2) - ref_vec = xaxis - - # now find the best triangle - triangles = [] - - seg_list = set([(point1, point2)]) - norm_dict = {(point1, point2): xaxis} - self.increment_seg_dict(seg_dict, (point1, point2)) - - counter = 0 - first_time = True - - section1 = 0.0 - section2 = 0.0 - section3 = 0.0 - - # as long as there are unexplored edges of triangles in the hull... - while seg_list: - counter += 1 - seg = seg_list.pop() # take a segment out of the seg_list - tuple1 = seg[0] # the two ends of the segment - tuple2 = seg[1] - point1 = np.array(seg[0]) - point2 = np.array(seg[1]) - result = self.get_seg_dict_num(seg_dict, (seg[0], seg[1])) - - if result >= 2: # then we already have 2 triangles on this segment - continue # forget about drawing a triangle for this seg - - ref_vec = norm_dict[ - (seg[0], seg[1]) - ] # get the norm for a triangle that the segment is part of - - best_dot_cross = -1.0 - best_point = None - - for i in range(n): # look at each point - - pointi = raw_points[i] - diff_vec1 = point2 - point1 - diff_vec2 = pointi - point2 - - test_cross = np.array( - [ - diff_vec1[1] * diff_vec2[2] - diff_vec1[2] * diff_vec2[1], - diff_vec1[2] * diff_vec2[0] - diff_vec1[0] * diff_vec2[2], - diff_vec1[0] * diff_vec2[1] - diff_vec1[1] * diff_vec2[0], - ] - ) # cross product - - # np.linalg.norm(test_cross) # get the norm of the cross - # product - test_cross_len = np.sqrt( - test_cross[0] * test_cross[0] - + test_cross[1] * test_cross[1] - + test_cross[2] * test_cross[2] - ) - - if test_cross_len <= 0.0: - continue - test_cross = test_cross / test_cross_len - dot_cross = np.dot(test_cross, ref_vec) - if dot_cross > best_dot_cross: - best_cross = test_cross - best_dot_cross = dot_cross - best_point = pointi - tuple3 = points[i] - - point3 = best_point - - if self.get_seg_dict_num(seg_dict, (tuple2, tuple1)) > 2: - continue - if self.get_seg_dict_num(seg_dict, (tuple3, tuple2)) > 2: - continue - if self.get_seg_dict_num(seg_dict, (tuple1, tuple3)) > 2: - continue - - # now we have a triangle from point1 -> point2 -> point3 must test - # each edge - if first_time: - self.increment_seg_dict(seg_dict, (tuple2, tuple1)) - seg_list.add((tuple2, tuple1)) - norm_dict[(tuple2, tuple1)] = best_cross - - self.increment_seg_dict(seg_dict, (tuple3, tuple2)) - seg_list.add((tuple3, tuple2)) - norm_dict[(tuple3, tuple2)] = best_cross - - self.increment_seg_dict(seg_dict, (tuple1, tuple3)) - seg_list.add((tuple1, tuple3)) - norm_dict[(tuple1, tuple3)] = best_cross - - triangles.append((np.array(tuple1), np.array(tuple2), np.array(tuple3))) - - first_time = False - - return triangles - - def akl_toussaint(self, points): - """The Akl-Toussaint Heuristic. Given a set of points, this definition - will create an octahedron whose corners are the extremes in x, y, and z - directions. Every point within this octahedron will be removed because - they are not part of the convex hull. This causes any expected running - time for a convex hull algorithm to be reduced to linear time. - - Args: - points: An nx3 array of x,y,z coordinates - - Returns: - All members of original set of points that fall outside the - Akl-Toussaint octahedron - - """ - - x_high = (-1e99, 0, 0) - x_low = (1e99, 0, 0) - y_high = (0, -1e99, 0) - y_low = (0, 1e99, 0) - z_high = (0, 0, -1e99) - z_low = (0, 0, 1e99) - - for point in points: # find the corners of the octahedron - if point[0] > x_high[0]: - x_high = point - if point[0] < x_low[0]: - x_low = point - if point[1] > y_high[1]: - y_high = point - if point[1] < y_low[1]: - y_low = point - if point[2] > z_high[2]: - z_high = point - if point[2] < z_low[2]: - z_low = point - - octahedron = [ # define the triangles of the surfaces of the octahedron - np.array((x_high, y_high, z_high)), - np.array((x_high, z_low, y_high)), - np.array((x_high, y_low, z_low)), - np.array((x_high, z_high, y_low)), - np.array((x_low, y_low, z_high)), - np.array((x_low, z_low, y_low)), - np.array((x_low, y_high, z_low)), - np.array((x_low, z_high, y_high)), - ] - new_points = [] # everything outside of the octahedron - - # now check to see if a point is inside or outside the octahedron - for point in points: - outside = self.outside_hull(point, octahedron, epsilon=-1.0e-5) - if outside: - new_points.append(point) - - return np.array(new_points) # convert back to an array - - -# Some classes are required for multiprocessing - - -class MultiThreading: - """A class for multi-processor support.""" - - results = [] - - def __init__(self, inputs, num_processors, task_class_name): - """Initializes the MultiThreading class.""" - - self.results = [] - - # first, if num_processors <= 0, determine the number of processors to - # use programatically - if num_processors <= 0: - num_processors = multiprocessing.cpu_count() - - # reduce the number of processors if too many have been specified - if len(inputs) < num_processors: - num_processors = len(inputs) - - # now, divide the inputs into the appropriate number of processors - inputs_divided = {} - for t in range(num_processors): - inputs_divided[t] = [] - - for t in range(0, len(inputs), num_processors): - for t2 in range(num_processors): - index = t + t2 - if index < len(inputs): - inputs_divided[t2].append(inputs[index]) - - # now, run each division on its own processor - - running = multiprocessing.Value("i", num_processors) - mutex = multiprocessing.Lock() - - arrays = [] - threads = [] - for i in range(num_processors): - threads.append(task_class_name()) - arrays.append(multiprocessing.Array("i", [0, 1])) - - results_queue = multiprocessing.Queue() # to keep track of the results - - processes = [] - for i in range(num_processors): - p = multiprocessing.Process( - target=threads[i].runit, - args=(running, mutex, results_queue, inputs_divided[i]), + # Step 7. Now surround each of these points with higher density points + # that in the same regions. This is for getting a more detailed view of + # the identified pockets. + if config.pocket_measuring_resolution != config.pocket_detection_resolution: + logger.info( + "Step 7. Flooding the identified pockets with points spaced " + + str(config.pocket_measuring_resolution) + + " A apart for a more detailed measurement of the pocket volume..." ) - p.start() - # p.join() - processes.append(p) - - while running.value > 0: - is_running = 0 # wait for everything to finish - - # compile all results - for thread in threads: - chunk = results_queue.get() - self.results.extend(chunk) - - -class GeneralTask: - """A class that determines the specific calculations that will be - performed when multi-processor support is used. Other, more - specific classes will inherit this one.""" - - results = [] - - def runit(self, running, mutex, results_queue, items): - for item in items: - self.value_func(item, results_queue) - mutex.acquire() - running.value -= 1 - mutex.release() - results_queue.put(self.results) - - # this is the function that changes through inheritance - def value_func(self, item, results_queue): - print(item) # here's where you do something - self.results.append(item) # here save the results for later compilation - - -# You'll also need a class representing a box of points, with associated -# definitions - - -class BoxOfPoints: - """A class representing a box of equidistant points.""" - - def __init__(self, box, reso): - """Initialize the class. - - Args: - box: A numpy array representing two 3D points, (min_x, min_y, - min_z) and (max_x, max_y, max_z), that define a box. - reso: The space between the points of the box, in the X, Y, and - Z direction. - - """ - - self.write_pdbs = write_pdbs() - - min_x = self.__snap_float(box[0][0], reso) - min_y = self.__snap_float(box[0][1], reso) - min_z = self.__snap_float(box[0][2], reso) - max_x = self.__snap_float(box[1][0], reso) + 1.1 * reso - max_y = self.__snap_float(box[1][1], reso) + 1.1 * reso - max_z = self.__snap_float(box[1][2], reso) + 1.1 * reso - - x, y, z = np.mgrid[min_x:max_x:reso, min_y:max_y:reso, min_z:max_z:reso] - self.points = np.array(list(zip(x.ravel(), y.ravel(), z.ravel()))) - - def __snap_float(self, val, reso): - """Snaps an arbitrary point to the nearest grid point. - - Args: - val: A numpy array corresponding to a 3D point. - reso: The resolution (distance in the X, Y, and Z directions - between adjacent points) of the grid. - - Returns: - A numpy array corresponding to a 3D point near val that is on a - nearby grid point. - - """ - - return np.floor(val / reso) * reso - - def remove_points_outside_convex_hull(self, hull): - """Removes box points that are outside a convex hull. - - Args: - hull: The convex hull. - - """ - - chunks = [(hull, t) for t in np.array_split(self.points, params["processors"])] - tmp = MultiThreading(chunks, params["processors"], self.__MultiIdHullPts) - self.points = np.vstack(tmp.results) - - class __MultiIdHullPts(GeneralTask): - """A class to remove points outside a convex hull using multiple - processors.""" - - def value_func(self, items, results_queue): # so overwriting this function - """The calculations that will run on a single processor to remove - points outside a convex hull.""" - - hull = items[0] - some_points = items[1] - - # Note this would be much faster if it were matrix-based intead of - # point-by-point based. Can preallocate numpy array size because I - # don't know beforehand how many points will be in the hull - new_pts = [] - for pt in some_points: - if hull.inside_hull(pt) == True: - new_pts.append(pt) - - if len(new_pts) == 0: - pass # here save the results for later compilation - else: - self.results.append(np.array(new_pts)) - - def remove_all_points_close_to_other_points(self, other_points, dist_cutoff): - """Removes all points in this box that come within the points specified - in a numpy array - - Args: - other_points: A numpy array containing the other points. - dist_cutoff: A float, the cutoff distance to use in determining - whether or not box points will be removed. - - """ - - # note, in newer versions of scipy use cKDTree - box_of_pts_distance_tree = spatial.KDTree(self.points) - chunks = [ - (box_of_pts_distance_tree, dist_cutoff, t) - for t in np.array_split(other_points, params["processors"]) - ] - tmp = MultiThreading(chunks, params["processors"], self.__MultiGetClosePoints) - indices_of_box_pts_close_to_molecule_points = np.unique(np.hstack(tmp.results)) - - self.points = np.delete( - self.points, indices_of_box_pts_close_to_molecule_points, axis=0 - ) # remove the ones that are too close to molecule atoms - - class __MultiGetClosePoints(GeneralTask): - """A class to remove box points that are near other, user-specified - points, using multiple processors.""" - - def value_func(self, items, results_queue): # so overwriting this function - """The calculations that will run on a single processor.""" - - box_of_pts_distance_tree = items[0] - dist_cutoff = items[1] - other_points = items[2] - - # note, in newer versions of scipy use cKDTree - other_points_distance_tree = spatial.KDTree(other_points) - sparce_distance_matrix = other_points_distance_tree.sparse_distance_matrix( - box_of_pts_distance_tree, dist_cutoff + print("\tAdding points...") + box_pts.expand_around_existing_points( + config.pocket_detection_resolution / config.pocket_measuring_resolution, + config.pocket_measuring_resolution, ) - indices_of_box_pts_close_to_molecule_points = np.unique( - sparce_distance_matrix.tocsr().indices + logger.info("\tRemoving points that fall outside the convex hull...") + box_pts.remove_points_outside_convex_hull(convex_hull_3d, config) + logger.info( + "\tRemoving points within " + + str(config.clashing_cutoff) + + " A of any protein atom..." ) - - self.results.append(indices_of_box_pts_close_to_molecule_points) - - def to_pdb(self, let="X"): - """Converts the points in this box into a PDB representation. - - Args: - let: An optional string, the chain ID to use. "X" by default. - - Returns: - A PDB-formatted string. - - """ - - return self.write_pdbs.numpy_to_pdb(self.points, let) - - def expand_around_existing_points(self, num_pts, reso): - """Add points to the current box that surround existing points, - essentially increasing the resolution of the box. - - Args: - num_pts: An int, the number of points to place on each side of - the existing points, in the X, Y, and Z directions. - reso: The distance between adjacent added points. - - """ - - new_pts = [] - - i = np.arange(-num_pts * reso, num_pts * reso + reso * 0.01, reso) - for xi in i: - for yi in i: - for zi in i: - vec = np.array([xi, yi, zi]) - new_pts.append(self.points + vec) - self.points = np.vstack(new_pts) - - self.__unique_points() - - def __unique_points(self): - """Identifies unique points (rows) in an array of points. - - Args: - a: A nx3 np.array representing 3D points. - - Returns: - A nx2 np.array containing the 3D points that are unique. - - """ - - b = np.ascontiguousarray(self.points).view( - np.dtype((np.void, self.points.dtype.itemsize * self.points.shape[1])) - ) - unique_points = ( - np.unique(b).view(self.points.dtype).reshape(-1, self.points.shape[1]) - ) - - self.points = unique_points - - def filter_isolated_points_until_no_change(self, reso, number_of_neighbors): - """Keep removing points that don't have enough neighbors, until no - such points exist. - - Args: - reso: The distance between adjacent points. - number_of_neighbors: The minimum number of permissible neighbors. - - """ - - # calculate the pairwise distances between all box points note, in - # newer versions of scipy use cKDTree - box_of_pts_distance_tree = spatial.KDTree(self.points) - - # so kiddy-corner counted as a neighbor - self.dist_matrix = box_of_pts_distance_tree.sparse_distance_matrix( - box_of_pts_distance_tree, reso * np.sqrt(3.0) * 1.1 - ).todense() - - # note that the diagnol of self.dist_matrix is zero, as expected, but - # ones with dist > reso * np.sqrt(3.0) * 1.1 are also 0. Pretty - # convenient. - - num_pts = 0 - # keep running the pass until there are no changes (points are stable) - while num_pts != len(self.points): - num_pts = len(self.points) - - # identify the points that have enough neighbors - columns_nonzero_count = np.array((self.dist_matrix != 0).sum(0))[0] - columns_nonzero_count_match_criteria = ( - columns_nonzero_count >= number_of_neighbors + box_pts.remove_all_points_close_to_other_points( + molecule.information.get_coordinates(), config.clashing_cutoff, config ) - columns_nonzero_count_match_criteria_index = np.nonzero( - columns_nonzero_count_match_criteria - ) - - self.__keep_limited_points(columns_nonzero_count_match_criteria_index) - def __keep_limited_points(self, pt_indices): - """A support function""" - - # keep only those points - self.points = self.points[pt_indices] - - # update the distance matrix so it doesn't need to be recalculated - self.dist_matrix = self.dist_matrix[pt_indices, :][0] - self.dist_matrix = self.dist_matrix.T - self.dist_matrix = self.dist_matrix[pt_indices, :][0] - # self.dist_matrix = self.dist_matrix.T # not necessary because it's a symetrical matrix - - def separate_out_pockets(self): - """Separate the points according to the pocket they belong to. - Determined by looking at patches of contiguous points. - - Returns: - A list of point arrays, each array corresponding to the points of a - separate pocket. - - """ - - all_pockets = [] - - # self.points is an array of 3D points - - # self.dist_matrix is a distance matrixs. self.dist_matrix[i,j] is - # distance between points i and j. But it only contains distances if - # the points are close (neighbors). Otherwise, 0. - - # Keep going until there are no more points that need to be assigned - # to a pocket. - while len(self.points) != 0: - pocket_indexes = np.array([0]) - num_pts_in_pocket = 0 - - # Keep looping into no new unique pockets are added. - while num_pts_in_pocket != len(pocket_indexes): - num_pts_in_pocket = len(pocket_indexes) - - # Get all the adjacent points - indices_of_neighbors = np.nonzero(self.dist_matrix[pocket_indexes, :])[ - 1 - ] - - # Get one of them. Not sure why this was previously in the code... - # if len(indices_of_neighbors) > 0: - # In case a point has no neighbors, you need this conditional. - # one_index_of_neighbor = np.array(indices_of_neighbors)[0] - - # Add that one index to the growing list. - pocket_indexes = np.hstack( - ( - pocket_indexes, - indices_of_neighbors, - # one_index_of_neighbor # Not sure why it used to be this. + # Step 8. Now start doing a repeated pass filter (keep repeating until no + # change). Don't know if this is a high pass or low pass filter. I've + # heard these terms, though, and they sound cool. + logger.info( + "Step 8. Removing points until all points have at least " + + str(config.n_neighbors) + + " neighbors..." + ) + box_pts.filter_isolated_points_until_no_change( + config.pocket_measuring_resolution, config.n_neighbors + ) + + # Step 9. Separate out the pockets so they can be considered in isolation. + logger.info("Step 9. Partitioning the remaining points by pocket...") + all_pockets = box_pts.separate_out_pockets() + + # Step 10. Get povme spheres that encompass each pocket, write pockets to + # separate pdb files + logger.info("Step 10. Saving the points of each pocket...") + let_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", + ] + write_some_pdbs = write_pdbs() + + for i, pts in enumerate(all_pockets): + path_pdb = output_prefix + "pocket" + str(i + 1) + ".pdb" + logger.info("Saving " + path_pdb + "...") + f = openfile(path_pdb, "w") + f.write("REMARK Pocket #" + str(i + 1) + "\n") + + # do I need to whiten stuff here? not sure what whitening is. + + centroids, idx = kmeans2(pts, config.n_spheres) + + pts_string = "" + for cluster_num in range(config.n_spheres): + indexes_for_this_cluster = np.nonzero(idx == cluster_num)[0] + cluster_pts = pts[indexes_for_this_cluster] + cluster_center = np.mean(cluster_pts, axis=0) + try: + cluster_radius = np.max( + cdist(np.array([cluster_center]), cluster_pts) ) - ) - - # Make sure only unique indices ones are retained. - pocket_indexes = np.unique(pocket_indexes) - - # Save these points (in the pocket) to a list of pockets. - pocket = self.points[pocket_indexes, :] - all_pockets.append(pocket) - - # Remove those points from the list of points before trying again. - self.__delete_limited_points(pocket_indexes) - - # sort the pockets by size - all_pockets = sorted(all_pockets, key=lambda pts: -len(pts)) - - return all_pockets - - def __delete_limited_points(self, pt_indices): - """A support function""" - - # keep only those points - self.points = np.delete(self.points, pt_indices, axis=0) - - # update the distance matrix so it doesn't need to be recalculated - self.dist_matrix = np.delete(self.dist_matrix, pt_indices, axis=0) - self.dist_matrix = self.dist_matrix.T - self.dist_matrix = np.delete(self.dist_matrix, pt_indices, axis=0) - - -# Also, you need a class to save numpy arrays as PDB files - - -class write_pdbs: - """A class for converting numpy arrays into PDB-formatted strings.""" - - def __create_pdb_line(self, numpy_array, index, resname, letter): - """Create a string formatted according to the PDB standard. - - Args: - numpy_array: A 1x3 np.array representing a 3D point. - index: An integer, the atom index to use in the string. - resname: A string, the RESNAME to use. - letter: A string, the atom name/chain/etc to use for the output. - - Returns: - A string, formatted according to the PDB standard. - - """ - - if len(numpy_array) == 2: - numpy_array = np.array([numpy_array[0], numpy_array[1], 0.0]) - if numpy_array.shape == (1, 3): - numpy_array = numpy_array[0] - - output = "ATOM " - output = ( - output - + str(index % 999999).rjust(6) - + letter.rjust(5) - + resname.rjust(4) - + letter.rjust(2) - + str(index % 9999).rjust(4) - ) - output = output + ("%.3f" % numpy_array[0]).rjust(12) - output = output + ("%.3f" % numpy_array[1]).rjust(8) - output = output + ("%.3f" % numpy_array[2]).rjust(8) - output = output + letter.rjust(24) - - return output - - def numpy_to_pdb(self, narray, letter, resname=""): - """Create a string formatted according to the PDB standard. - - Args: - narray: A nx3 np.array representing a 3D point. - letter: A string, the atom name/chain/etc to use for the output. - resname: An optional string, the RESNAME to use for the output. - - Returns: - A string, formatted according to the PDB standard. - - """ - - if len(narray.flatten()) == 3: - return self.__create_pdb_line(narray, 1, "AAA", letter) + "\n" - else: - if resname == "": - letters = [ - "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", - ] - resnames = [] - for l1 in letters: - for l2 in letters: - for l3 in letters: - resnames.append(l1 + l2 + l3) - resnames.remove("XXX") # because this is reserved for empty atoms - else: - resnames = [resname] - - t = "" - for i, item in enumerate(narray): - t = ( - t - + self.__create_pdb_line( - item, i + 1, resnames[i % len(resnames)], letter + f.write( + "REMARK CHAIN " + + let_ids[cluster_num] + + ": PointsInclusionSphere " + + str(np.round(cluster_center[0], 2)) + + " " + + str(np.round(cluster_center[1], 2)) + + " " + + str(np.round(cluster_center[2], 2)) + + " " + + str(np.round(cluster_radius + config.sphere_padding, 2)) + + "\n" + ) + pts_string = pts_string + write_some_pdbs.numpy_to_pdb( + cluster_pts, let_ids[cluster_num] + ) + except: + logger.info( + "There was an error, but I don't think it was catastrophic. Could be that one of the pocket clusters was empty." ) - + "\n" - ) - return t - - -params = {} - - -def run_pocket_id(parameters): - ####### Now the meat of the program ######## - - # Make sure running Python3 - if sys.version_info[0] < 3: - raise Exception("Please use Python 3 to run this version of POVME.") - - # First, check if running in test mode. - testing_mode = False - if "--test" in parameters: - setup_testing_dir( - ["/examples/POVME_Pocket_ID_example/" + f for f in ["rel1_example.pdb"]] - ) - - # Keep track that running in testing mode. - testing_mode = True - - # Change the argv list to run the copied ini file. - parameters = [ - parameters[0], - "--filename", - "rel1_example.pdb", - "--pocket_detection_resolution", - "4.0", - "--pocket_measuring_resolution", - "1.0", - "--clashing_cutoff", - "3.0", - "--number_of_neighbors", - "4", - "--processors", - "4", - "--number_of_spheres", - "5", - "--sphere_padding", - "5.0", - ] - - # First, show a brief help file describing the command-line arguments. - help_lines = [] - help_lines.append("") - help_lines.append("POVME Pocket ID 1.0") - help_lines.append("===================") - help_lines.append("") - help_lines.append("Required command-line parameters:") - help_lines.append("") - help_lines.append("--filename: The PDB filename to be analyzed.") - help_lines.append("") - help_lines.append("Optional command-line parameters:") - help_lines.append("") - help_lines.append( - "--pocket_detection_resolution: The distance between probe points used to initially find the pockets (4.0 by default)." - ) - help_lines.append( - "--pocket_measuring_resolution: The distance between probe points used to measure identified pockets in greater detail. Should divide --pocket_detection_resolution evenly. (1.0 by default)." - ) - help_lines.append( - "--clashing_cutoff: In measuring the pockets, any points closer than this cutoff to receptor atoms will be removed. (3.0 by default)." - ) - help_lines.append( - "--number_of_neighbors: In measuring the pockets, any points with fewer than this number of neighbors will be deleted. These are usually just stray points that don't belong to any real pocket. (4 by default)." - ) - help_lines.append("--processors: The number of processors to use. (1 by default).") - help_lines.append( - "--number_of_spheres: The number of inclusion spheres to generate for each pocket. (5 by default)." - ) - help_lines.append( - "--sphere_padding: How much larger the radius of the inclusion spheres should be, beyond what is required to encompass the identified pockets. (5.0 by default)." - ) - help_lines.append("") - help_lines.append("Example:") - help_lines.append("") - help_lines.append( - "python pocket_id.py --filename rel1_example.pdb --pocket_detection_resolution 4.0 --pocket_measuring_resolution 1.0 --clashing_cutoff 3.0 --number_of_neighbors 4 --processors 1 --number_of_spheres 5 --sphere_padding 5.0 " - ) - help_lines.append("") - - def printit(text): - print(textwrap.fill(text, initial_indent="", subsequent_indent=" ")) - - for line in help_lines: - printit(line) - if len(parameters[1:]) == 0: - sys.exit(0) - - # Now, parse the command-line arguments - global params - params = { - "filename": "", - "pocket_detection_resolution": 4.0, - "pocket_measuring_resolution": 1.0, - "clashing_cutoff": 3.0, - "number_of_neighbors": 4, - "processors": 1, - "number_of_spheres": 5, - "sphere_padding": 5.0, - } - - for item in getopt.getopt( - parameters[1:], - "", - [ - "filename=", - "pocket_detection_resolution=", - "pocket_measuring_resolution=", - "clashing_cutoff=", - "number_of_neighbors=", - "processors=", - "number_of_spheres=", - "sphere_padding=", - ], - )[0]: - params[item[0].replace("--", "")] = item[1] - - if params["filename"] == "": - print("ERROR: Must specify the --filename parameter!") - print("") - sys.exit(0) - - for key in ["number_of_neighbors", "processors", "number_of_spheres"]: - params[key] = int(params[key]) - for key in [ - "pocket_detection_resolution", - "pocket_measuring_resolution", - "clashing_cutoff", - "sphere_padding", - ]: - params[key] = float(params[key]) - - print("Specified command-line arguments:") - print("") - for key in params: - print(" --" + key + ": " + str(params[key])) - print("") - - # Step 1: Load in the protein - - printit("Step 1. Loading the PDB file " + params["filename"] + "...") - molecule = Molecule() - molecule.load_pdb_into(params["filename"]) - - # Step 2: Get rid of hydogen atoms. They just slow stuff down. - - print("Step 2. Removing hydrogen atoms...") - sel = molecule.selections.select_atoms({"element_stripped": b"H"}) - sel = molecule.selections.invert_selection(sel) - molecule = molecule.selections.get_molecule_from_selection(sel) - - # Step 3: Calculate the convex hull of the protein alpha carbons. - print("Step 3. Calculating the convex hull of the PDB file...") - - # Get a version of the protein with just the alpha carbons. In my - # experience, that's better for convex hull identification. Otherwise the - # program identifies shallow contors in the protein surface as pockets. - molecule_alpha_carbons = molecule.selections.get_molecule_from_selection( - molecule.selections.select_atoms({"name_stripped": b"CA"}) - ) - convex_hull_3d = ConvexHull(molecule_alpha_carbons.get_coordinates()) - - # Step 4. Get a box of equispaced points that surround the protein, - # snapped to reso. I'm putting a whole bunch of other functions in this - # class as well to manipulate the points of this box. - - printit( - "Step 4. Making a box of points spaced " - + str(params["pocket_detection_resolution"]) - + " A apart that entirely encompasses the protein..." - ) - - # note that the initial box is low resolution (* 4) so convex hull will be - # very fast - box_pts = BoxOfPoints( - molecule.get_bounding_box(), params["pocket_detection_resolution"] * 4 - ) - - # Step 5. Remove points outside the convex hull. Gradually fill in - # protein-occupying region with denser point fields. Faster this way, I - # think. - printit("Step 5. Removing points that fall outside the protein's convex hull...") - box_pts.remove_points_outside_convex_hull(convex_hull_3d) - box_pts.expand_around_existing_points(2, params["pocket_detection_resolution"] * 2) - box_pts.remove_points_outside_convex_hull(convex_hull_3d) - box_pts.expand_around_existing_points(2, params["pocket_detection_resolution"]) - box_pts.remove_points_outside_convex_hull(convex_hull_3d) - # Step 6. Remove the points in this box that are too close to protein - # atoms. For simplicity's sake, don't worry about atomic radii. Just a - # simple cutoff. - printit( - "Step 6. Removing points that come within " - + str(params["clashing_cutoff"]) - + " A of any protein atom..." - ) - box_pts.remove_all_points_close_to_other_points( - molecule.get_coordinates(), params["clashing_cutoff"] - ) + f.write(pts_string) + f.close() - # Step 7. Now surround each of these points with higher density points - # that in the same regions. This is for getting a more detailed view of - # the identified pockets. - if params["pocket_measuring_resolution"] != params["pocket_detection_resolution"]: - printit( - "Step 7. Flooding the identified pockets with points spaced " - + str(params["pocket_measuring_resolution"]) - + " A apart for a more detailed measurement of the pocket volume..." - ) - print("\tAdding points...") - box_pts.expand_around_existing_points( - params["pocket_detection_resolution"] - / params["pocket_measuring_resolution"], - params["pocket_measuring_resolution"], - ) - printit("\tRemoving points that fall outside the convex hull...") - box_pts.remove_points_outside_convex_hull(convex_hull_3d) - printit( - "\tRemoving points within " - + str(params["clashing_cutoff"]) - + " A of any protein atom..." + logger.info( + "Done. See the pocket{n}.pdb files. Using a visualization program like VMD, identify which of these files includes the pocket you wish to measure. POVME Pocket ID has divided each pocket volume into " + + str(config.n_spheres) + + " sections (i.e., PDB chains). In some cases, the pocket you're interested in might be included in a larger identified pocket, so feel free to use only certain sections of a given pocket as well." ) - box_pts.remove_all_points_close_to_other_points( - molecule.get_coordinates(), params["clashing_cutoff"] + logger.info( + "The POVME PointsInclusionSphere commands are located in the header of each pocket{n}.pdb file. A text editor can be used to copy and paste these commands into a POVME input file." ) - - # Step 8. Now start doing a repeated pass filter (keep repeating until no - # change). Don't know if this is a high pass or low pass filter. I've - # heard these terms, though, and they sound cool. - printit( - "Step 8. Removing points until all points have at least " - + str(params["number_of_neighbors"]) - + " neighbors..." - ) - box_pts.filter_isolated_points_until_no_change( - params["pocket_measuring_resolution"], params["number_of_neighbors"] - ) - - # Step 9. Separate out the pockets so they can be considered in isolation. - printit("Step 9. Partitioning the remaining points by pocket...") - all_pockets = box_pts.separate_out_pockets() - - # Step 10. Get povme spheres that encompass each pocket, write pockets to - # seprate pdb files - printit("Step 10. Saving the points of each pocket...") - let_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", - ] - write_some_pdbs = write_pdbs() - - for i, pts in enumerate(all_pockets): - filename = "pocket" + str(i + 1) + ".pdb" - printit("\tSaving " + filename + "...") - f = openfile(filename, "w") - f.write("REMARK Pocket #" + str(i + 1) + "\n") - - # do I need to whiten stuff here? not sure what whitening is. - - centroids, idx = kmeans2(pts, params["number_of_spheres"]) - - pts_string = "" - for cluster_num in range(params["number_of_spheres"]): - indexes_for_this_cluster = np.nonzero(idx == cluster_num)[0] - cluster_pts = pts[indexes_for_this_cluster] - cluster_center = np.mean(cluster_pts, axis=0) - try: - cluster_radius = np.max(cdist(np.array([cluster_center]), cluster_pts)) - f.write( - "REMARK CHAIN " - + let_ids[cluster_num] - + ": PointsInclusionSphere " - + str(np.round(cluster_center[0], 2)) - + " " - + str(np.round(cluster_center[1], 2)) - + " " - + str(np.round(cluster_center[2], 2)) - + " " - + str(np.round(cluster_radius + params["sphere_padding"], 2)) - + "\n" - ) - pts_string = pts_string + write_some_pdbs.numpy_to_pdb( - cluster_pts, let_ids[cluster_num] - ) - except: - print("") - printit( - "There was an error, but I don't think it was catastrophic. Could be that one of the pocket clusters was empty." - ) - print("") - - f.write(pts_string) - f.close() - - print("") - printit( - "Done. See the pocket{n}.pdb files. Using a visualization program like VMD, identify which of these files includes the pocket you wish to measure. POVME Pocket ID has divided each pocket volume into " - + str(params["number_of_spheres"]) - + " sections (i.e., PDB chains). In some cases, the pocket you're interested in might be included in a larger identified pocket, so feel free to use only certain sections of a given pocket as well." - ) - printit( - "The POVME PointsInclusionSphere commands are located in the header of each pocket{n}.pdb file. A text editor can be used to copy and paste these commands into a POVME input file." - ) - print("") - - if testing_mode: - import glob - - with open("pocket1.pdb") as f: - if not "PointsInclusionSphere" in f.read(): - raise Exception( - "pocket1.pdb did not contain substring 'PointsInclusionSphere'" - ) - num_output_files = len(glob.glob("*.pdb")) - 1 - if num_output_files != 9: - raise Exception("Expected 9 output files, but got " + str(num_output_files)) - - delete_testing_dir() - - test_passed() - - -if __name__ == "__main__": - dorun = run_pocket_id(sys.argv) diff --git a/povme/povme.py b/povme/povme.py index b8ca804..15313e9 100644 --- a/povme/povme.py +++ b/povme/povme.py @@ -294,7 +294,7 @@ def compute_volume(self, path_pdb, pts, regions_contig, output_prefix, config): shutil.rmtree("./.povme_tmp") logger.info("Execution time = " + str(time.time() - self.t_start) + " sec") return tmp.results - + @staticmethod def write_vol_csv(results_vol, output_prefix, config): if config.compress_output: @@ -317,7 +317,7 @@ def write_vol_csv(results_vol, output_prefix, config): encode=config.compress_output, ) f.close() - + @staticmethod def write_vol_traj(results_vol, output_prefix, config): if config.compress_output: @@ -348,7 +348,6 @@ def write_vol_traj(results_vol, output_prefix, config): traj_file.close() - @staticmethod def write_vol_dens(results, output_prefix, config): unique_points: dict[str, Any] = {} @@ -499,5 +498,4 @@ def run( if config.save_volumetric_density_map: self.write_vol_dens(results, output_prefix, config) - return results_vol diff --git a/povme/pymolecule.py b/povme/pymolecule.py index f42c8a3..6ab496a 100755 --- a/povme/pymolecule.py +++ b/povme/pymolecule.py @@ -869,6 +869,47 @@ def hybridization(self, atom_index): # Currently not working 100% return hybrid + def get_atom_information(self): + return self.atom_information + + def get_coordinates(self): + return self.coordinates + + def get_constants(self): + return self.constants + + def set_atom_information(self, atom_information): + self.atom_information = atom_information + + def set_coordinates(self, coordinates): + self.coordinates = coordinates + + def get_bounding_box(self, selection=None, padding=0.0): + """Calculates a box that bounds (encompasses) a set of atoms. + + Arguments: + selection -- An optional np.array containing the indices of the + atoms to consider. If ommitted, all atoms of the Molecule + object will be considered. + padding -- An optional float. The bounding box will extend this + many angstroms beyond the atoms being considered. + + Returns: + A numpy array representing two 3D points, (min_x, min_y, min_z) + and (max_x, max_y, max_z), that bound the molecule. + + """ + + if selection is None: + selection = self.parent_molecule.selections.select_all() + + return np.vstack( + ( + np.min(self.coordinates[selection], 0), + np.max(self.coordinates[selection], 0), + ) + ) + class FileIO: """A class for saving and loading molecular data into a pymolecule.Molecule @@ -932,7 +973,7 @@ def load_pym_into(self, filename): def load_pdb_into( self, filename, - bonds_by_distance=True, + bonds_by_distance=False, serial_reindex=True, resseq_reindex=False, ): @@ -1150,11 +1191,11 @@ def load_pdb_into_using_file_object( # else: # create empty bond array # self.parent_molecule.information.bonds = np.zeros((len(self.parent_molecule.information.atom_information), len(self.parent_molecule.information.atom_information))) - if bonds_by_distance == True: + if bonds_by_distance: self.parent_molecule.atoms_and_bonds.create_bonds_by_distance(False) - if serial_reindex == True: + if serial_reindex: self.serial_reindex() - if resseq_reindex == True: + if resseq_reindex: self.resseq_reindex() def save_pym( @@ -1213,7 +1254,7 @@ def save_pym( # save components # python objects must be pickled - if save_hierarchy == True: + if save_hierarchy: # note this is a combo of python objects and numpy arrays, so must # be pickled. pickle.dump( @@ -1221,13 +1262,13 @@ def save_pym( openfile(filename + "hierarchy", "wb"), -1, ) - if save_remarks == True: + if save_remarks: pickle.dump( self.parent_molecule.information.remarks, openfile(filename + "remarks", "wb"), -1, ) # using the latest protocol - if save_filename == True: + if save_filename: pickle.dump( self.parent_molecule.information.filename, openfile(filename + "filename", "wb"), @@ -1255,9 +1296,9 @@ def save_pym( np.savez( filename + "coordinates.npz", self.parent_molecule.information.coordinates ) - if save_bonds == True: + if save_bonds: np.savez(filename + "bonds.npz", self.parent_molecule.information.bonds) - if save_coordinates_undo_point == True: + if save_coordinates_undo_point: np.savez( filename + "coordinates_undo_point.npz", self.parent_molecule.information.coordinates_undo_point, @@ -1288,9 +1329,9 @@ def save_pdb( # so the pdb is not empty (if it is empty, don't save) if len(self.parent_molecule.information.atom_information) > 0: - if serial_reindex == True: + if serial_reindex: self.serial_reindex() - if resseq_reindex == True: + if resseq_reindex: self.resseq_reindex() if not return_text: @@ -1560,10 +1601,7 @@ def create_bonds_by_distance( """ # create/recreate the bond array if needed - if ( - remove_old_bond_data == True - or self.parent_molecule.information.bonds is None - ): + if remove_old_bond_data or self.parent_molecule.information.bonds is None: self.parent_molecule.information.bonds = np.zeros( ( len(self.parent_molecule.information.atom_information), @@ -1632,7 +1670,7 @@ def create_bonds_by_distance( self.parent_molecule.information.bonds[index1][index2] = 1 self.parent_molecule.information.bonds[index2][index1] = 1 - if delete_excessive_bonds == True: + if delete_excessive_bonds: # now do a sanity check. C cannot have more than 4 bonds, O cannot # have more than 2, and N cannot have more than 2 if more, than # use ones closest to ideal bond length @@ -2450,7 +2488,7 @@ def select_close_atoms_from_different_molecules( """ - if pairwise_comparison == True: + if pairwise_comparison: dists = cdist( self.parent_molecule.information.coordinates, @@ -2645,7 +2683,7 @@ def select_close_atoms_from_different_molecules( ) if ( - terminate_early == True + terminate_early ): # so don't keep looking once you've found something return (self_close_atom_indices, other_close_atom_indices) @@ -2702,9 +2740,9 @@ def create_molecule_from_selection( # note that hierarchy will have to be recalculated - if serial_reindex == True: + if serial_reindex: new_mol.fileio.serial_reindex() - if resseq_reindex == True: + if resseq_reindex: new_mol.fileio.resseq_reindex() return new_mol @@ -2832,6 +2870,31 @@ def get_residue_selections(self): return self.parent_molecule.information.hierarchy["residues"]["indices"] + def get_molecule_from_selection(self, selection): + """Creates a Molecule from a user-defined atom selection. + + Args: + selection: A np.array containing the indices of the atoms in + the user-defined selection. + + Returns: + A Molecule object containing the atoms of the user-defined + selection. + + """ + + new_mol = Molecule() + new_mol.information.set_coordinates( + self.parent_molecule.information.get_coordinates()[selection] + ) + new_mol.information.set_atom_information( + self.parent_molecule.information.get_atom_information()[selection] + ) + + # note that hierarchy will have to be recalculated + + return new_mol + class Manipulation: """A class for translating and rotating the atomic coordinates of a @@ -3491,7 +3554,7 @@ def steric_clash_with_another_molecule( """ if ( - pairwise_comparison == True + pairwise_comparison ): # so use a simple pairwise comparison to find close atoms ( indices1, @@ -3604,7 +3667,7 @@ def distance_to_another_molecule(self, other_molecule, pairwise_comparison=True) """ - if pairwise_comparison == True: + if pairwise_comparison: return np.amin( cdist( self.parent_molecule.information.coordinates, diff --git a/tests/conftest.py b/tests/conftest.py index e020eaf..712c450 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,6 +6,7 @@ TEST_DIR = os.path.dirname(__file__) + @pytest.fixture(scope="session", autouse=True) def turn_on_logging(): enable_logging(10) @@ -19,3 +20,13 @@ def path_4nss_config(): @pytest.fixture def path_4nss_output(): return os.path.join(TEST_DIR, "tmp/", "4nss/POVME_") + + +@pytest.fixture +def path_rel1_config(): + return os.path.join(TEST_DIR, "files/rel1/pocket-id.yml") + + +@pytest.fixture +def path_rel1_output(): + return os.path.join(TEST_DIR, "tmp/", "rel1/") diff --git a/tests/files/rel1/pocket-id.yml b/tests/files/rel1/pocket-id.yml new file mode 100644 index 0000000..c449c4b --- /dev/null +++ b/tests/files/rel1/pocket-id.yml @@ -0,0 +1,13 @@ +pocket_detection_resolution: 4.0 + +pocket_measuring_resolution: 1.0 + +clashing_cutoff: 3.0 + +n_neighbors: 4 + +n_spheres: 5 + +sphere_padding: 5.0 + +n_cores: 4 diff --git a/tests/files/rel1/rel1_example.pdb b/tests/files/rel1/rel1.pdb similarity index 100% rename from tests/files/rel1/rel1_example.pdb rename to tests/files/rel1/rel1.pdb diff --git a/tests/test_pocketid.py b/tests/test_pocketid.py index 3d992c8..4d75c04 100644 --- a/tests/test_pocketid.py +++ b/tests/test_pocketid.py @@ -1,6 +1,24 @@ -# To run the POVME Pocket ID example, type the following into the unix command -# line from the current directory: +import glob +import os +import shutil -# python ../../../POVME_pocket_id.py --filename rel1_example.pdb --pocket_detection_resolution 4.0 --pocket_measuring_resolution 1.0 --clashing_cutoff 3.0 --number_of_neighbors 4 --processors 4 --number_of_spheres 5 --sphere_padding 5.0 +from povme import PocketDetector -# A similar command should work from the Windows command line. + +def test_rel1(path_rel1_config, path_rel1_output): + dir_output = os.path.dirname(path_rel1_output) + if os.path.exists(dir_output): + shutil.rmtree(dir_output) + + pocket_id = PocketDetector(path_rel1_config) + pocket_id.run("./tests/files/rel1/rel1.pdb", path_rel1_output) + + with open(path_rel1_output + "pocket1.pdb", "r") as f: + if "PointsInclusionSphere" not in f.read(): + raise Exception( + "pocket1.pdb did not contain substring 'PointsInclusionSphere'" + ) + + num_output_files = len(glob.glob(path_rel1_output + "*.pdb")) - 1 + if num_output_files != 8: + raise Exception("Expected 8 output files, but got " + str(num_output_files)) From b595ce7cd0060738b50ca7b6b1909736d04e2bab Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 16:40:26 -0500 Subject: [PATCH 19/20] Cleanup docs --- README.md | 291 +++++++++------------------------------------- docs/.pages | 1 + docs/mono-docs.md | 232 ++++++++++++++++++++++++++++++++++++ 3 files changed, 285 insertions(+), 239 deletions(-) create mode 100644 docs/mono-docs.md diff --git a/README.md b/README.md index 3bd7651..7155421 100644 --- a/README.md +++ b/README.md @@ -1,267 +1,80 @@ -# POVME 2.2.2 +

    POVME

    -## 0. License: GNU General Public License version 3 +

    Detect and characterize pockets from molecular simulations.

    -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation, either version 3 of the License, or (at your option) any later -version. +

    + + Build Status + + + codecov + + + License + + + GitHub repo size + +

    -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. +POVME (POcket Volume MEasurer) is an open-source tool designed for detailed analysis of ligand-binding pocket shapes and volumes in proteins. +Initially developed to support structure-guided drug discovery, POVME has been widely adopted for its simplicity, speed, and flexibility. -You should have received a copy of the GNU General Public License along with -this program. If not, see -[https://www.gnu.org/licenses/](https://www.gnu.org/licenses/). +## Why binding pocket analysis? -## 1. Download POVME 2.2.2 +Binding pockets are critical for understanding protein-ligand interactions, a central theme in rational drug design. +Pocket shape and volume influence ligand binding, specificity, and the dynamics of molecular recognition. +By enabling precise volume and flexibility measurements, POVME has become an essential tool for characterizing these properties in applications such as: -Begin by downloading POVME 2.2.2. An example input file is included with the -download (in the 'povme/examples/' directory). This input file is heavily -commented and may be even more useful that the information provided on this -website. +- Identifying and analyzing transient binding pockets. +- Supporting virtual screening and druggability predictions. +- Comparing conformational ensembles from molecular dynamics simulations. -POVME is released under the GNU General Public License. If you have any -questions, comments, or suggestions, please don't hesitate to contact me, -[Jacob Durrant](http://durrantlab.com), at durrantj [at] pitt [dot] edu. +## Development -If you use POVME in your work, please cite: - -1. Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm for - measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -2. Durrant, J.D., L. Votapka, J. Sørensen, and R. E. Amaro (2014). "POVME 2.0: - An Enhanced Tool for Determining Pocket Shape and Volume Characteristics." - J. Chem. Theory Comput. 10(11):5047-5056. - -## 2. Align a PDB-formatted trajectory - -POVME accepts a multi-frame PDB (Protein Data Bank) file as input. The -computer program [Visual Molecular Dynamics -(VMD)](http://www.ks.uiuc.edu/Research/vmd/) is useful for aligning -trajectories and converting files to the PDB format. Alignment is necessary -because the POVME algorithm assumes the pocket being measured does not -translate or rotate in space. We note also that single-frame PDB files can -likewise serve as POVME input if the user wishes only to measure the volume of -a single pocket. - -## 3. Define an inclusion region - -The user must define an "inclusion" region. This region is constructed from a -combination of user-specified spheres and rectangular prisms. The required -inclusion region should entirely encompass all the binding-pocket -conformations of the trajectory. Specify the spheres and rectangular prisms of -the inclusion region in a text-based POVME input file (e.g., "POVME.in"): +We use [pixi](https://pixi.sh/latest/) to manage Python environments and simplify the developer workflow. +Once you have [pixi](https://pixi.sh/latest/) installed, move into `POVME` directory (e.g., `cd POVME`) and install the environment using the command -```text -PointsInclusionSphere -7.12 2.60 -4.67 6.0 -PointsInclusionSphere -2.0 -2.0 -4.0 5.0 -PointsInclusionBox -5.0 -7.0 2.0 10.0 10.0 10.0 -PointsInclusionBox -2.0 -9.0 -3.0 10.0 5.0 10.0 +```bash +pixi install ``` -Note that for the spheres, the first three parameters are coordinates, and the -fourth parameter is a radius. For the rectangular prisms (i.e. "boxes"), the -first three parameters are coordinates, and the last three are the dimensions -of the box in the X, Y, and Z directions. +Now you can activate the new virtual environment using -## 4. Define an exclusion region - -An optional exclusion region defines portions of the inclusion region that -should be ignored, perhaps because they are not truly associated with the -pocket. It is similarly constructed from spheres and boxes: - -```text -PointsExclusionSphere -2.0 -2.0 -4.0 5.0 -PointsExclusionBox -5.0 -7.0 2.0 10.0 10.0 10.0 +```sh +pixi shell ``` -## 5. Create a field of equidistant points - -To generate a field of equidistant points that encompasses all the -binding-pocket conformations of the trajectory, POVME first floods the -user-specified inclusion region with points and then removes any points also -contained in the optional exclusion region. You need to specify the distance -separating each of these equidistant points: - -```text -GridSpacing 1.0 -``` - -## 6. How to choose the inclusion and exclusion regions - -As you can imagine, identifying just the right set of inclusion and exclusion -spheres and boxes to encompass the binding pocket is challenging. One approach -is to define an initial geometry, visualize that geometry together with the -receptor using a program like VMD, and then iteratively add new inclusion and -exclusion regions as required. You can optionally save the point field to a -file called point_field.pdb for visualization: - -```text -SavePoints true -``` - -## 7. Specify the location of the receptor PDB file to analyze - -Once you've properly generated a pocket-encompassing point field, you're ready -to use that point field to calculate pocket volumes. Here's how to specify the -location of the PDB receptor file that has the pocket you wish to analyze: - -```PDBFileName my_receptor.pdb``` - -Note that this file can be a trajectory containing multiple frames. - -## 8. Remove points that are near receptor atoms - -As the purpose of POVME is to measure the volume of a binding-pocket cavity, -the program next removes any points that are close to receptor atoms, leaving -only those points that are likely to be located within the binding pocket -itself. To specify how close the points can come to the van der Waal's surface -of the receptor before being removed: +## Installation -```DistanceCutoff 1.09``` +Clone the [repository](https://github.com/durrantlab/POVME): -Note that if the receptor PDB file contains multiple frames, this will be done -on a frame-by-frame basis. - -## 9. Remove points outside the receptor's convex hull - -POVME 2.0 introduced an optional new feature for removing points that lie -entirely outside the binding pocket. Specifically, the gift-wrapping algorithm -is used in combination with the Akl-Toussaint heuristic to define the convex -hull of receptor atoms near the user-defined inclusion region. Any points that -fall outside the convex hull are removed. This feature is particularly useful -when the user defines an inclusion region that protrudes into the surrounding -solvent-occupying space. To activate the convex-hull feature: - -```ConvexHullExclusion true``` - -## 10. Remove points that are not contiguous with the primary pocket - -Like the original POVME program, version 2.2.2 retains the optional ability to -remove isolated patches of points that are not contiguous with the primary -binding pocket. POVME perfoms this task in two steps. - -First, POVME applys a low-pass filter to check the connectedness of the -remaining pocket-occupying points. It retains only those points that have at -least X neighboring points, where X is defined: - -```text -ContiguousPointsCriteria 3 +```bash +git clone https://github.com/durrantlab/POVME ``` -(Note that points that are "kitty-corner" from each other count as neighbors.) - -Second, POVME identifies which of the remaining connected points are also -connected to a user-defined contiguous pocket seed volume (e.g., located at -the center of the traditionally defined pocket), where the seed volume is -defined: +Install `povme` using `pip` after moving into the directory. -```text -ContiguousPocketSeedSphere 67.0 102.0 57.0 4.0 -ContiguousPocketSeedBox 50.0 50.0 50.0 10.0 10.0 10.0 +```sh +pip install . ``` -All pocket-occupying points contiguous (or connected) to this region are -retained, but isolated patches of points that are not directly connected are -deleted. - -## 11. Additional POVME parameters - -Here are some additional POVME parameters you might find helpful: - -```text -# Tell POVME how to perform the calculations. +This will install all dependencies and `povme` into your current Python environment. -NumProcessors 12 # POVME can use multiple processors on - # Unix-based systems. +## Cite -UseDiskNotMemory false # In some cases, your PDB trajectory may - # be so large that the resulting POVME - # analysis cannot be easily stored in - # your computer's memory. If - # UseDiskNotMemory is set to true, POVME - # will rely more on your disk space than - # on memory/RAM. - -# Tell POVME how to save the output - -OutputFilenamePrefix ./POVME_test_run/POVME_ # All the files POVME outputs will start - # with this prefix. POVME automatically - # creates any required directory - # (./POVME_test_run/ in this case). - -SaveIndividualPocketVolumes true # If true, POVME saves the pocket-volume - # points of each frame to a separate PDB - # file. The file names will be like - # {PREFIX}frame_X.pdb. - -SavePocketVolumesTrajectory true # If true, POVME saves all the pocket- - # volume points of each frame to a single - # PDB trajectory file. The individual - # frames are separated by END cards. The - # file name will be - # {PREFIX}volume_trajectory.pdb. - -OutputEqualNumPointsPerFrame true # Some visualization programs (e.g. VMD) - # are only compatible with trajectories - # that have the same number of atoms in - # each frame. If EqualNumAtomsPerFrame is - # true, POVME adds extra points at the - # origin (0.0, 0.0, 0.0) to satisfy this - # requirement. This affects files created - # with both SaveIndividualPocketVolumes - # and SavePocketVolumesTrajectory but - # does not alter the volume calculation - # itself. - -SaveTabbedVolumeFile true # If true, POVME saves the calculated - # volumes to a file in a simple tabular - # format that can be easily pasted into - # popular spreadsheet programs like - # Microsoft Excel. The file is named - # {PREFIX}volumes.tabbed.txt - -SaveVolumetricDensityMap true # If true, POVME saves a volumetric - # density map in the DX format. A - # volumetric density value is associated - # with each of the pocket-occupying - # points by calculating the fraction of - # all trajectory pocket volumes that - # include the given point. The file is - # named {PREFIX}volumetric_density.dx. - -CompressOutput true # If you're short on disk space, POVME - # can automatically compress all output - # files using gz compression. -``` +If you use POVME in your work, please cite: -## 12. POVME output +1. Durrant, J.D., L. Votapka, J. Sørensen, and R. E. Amaro (2014). "POVME 2.0: An Enhanced Tool for Determining Pocket Shape and Volume Characteristics." J. Chem. Theory Comput. 10(11):5047-5056. +2. Durrant, J. D., C. A. de Oliveira, et al. (2011). "POVME: An algorithm for measuring binding-pocket volumes." J Mol Graph Model 29(5): 773-776. -By default, POVME writes a number of files to the disk. The calculated pocket -volumes, as well as user-defined parameters and progress messages, are saved -to a simple text-based log file. POVME can also be instructed to save the -volume measurements to a second file in a simple tabular format that can be -easily pasted into popular spreadsheet programs. Pocket-occupying points are -equidistant (1.0 Å by default), so each point is associated with an identical -cubical volume (e.g. 1.0 Å3). The volume of a whole pocket is calculated by -simply summing the individual volumes associated with each unique point. +## License -POVME also optionally saves the pocket-occupying points of each frame to PDB -file(s) on this disk. The user can instruct the program to save these points -to separate files and/or to a single PDB trajectory. Some visualization -programs (e.g. VMD) are only compatible with trajectories that have the same -number of atoms in each frame. POVME can optionally write extra points to the -origin (0.0, 0.0, 0.0) on a frame-by-frame basis to satisfy this requirement. +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -Finally, POVME also optionally saves a volumetric density map in the Data -Explorer (DX) format. A volumetric density value is associated with each of -the pocket-occupying points by calculating the fraction of all trajectory -pocket volumes that include the given point. If the density map is displayed -as an isosurface, the value of the isosurface expresses the fraction of time -(e.g. over the course of the simulation) that the pocket included the -displayed volume. +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. +See the GNU General Public License for more details. -(README.md adapted from [this -website](http://rocce-vm0.ucsd.edu/data/sw/hosted/POVME/).) +You should have received a copy of the GNU General Public License along with this program. +If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/). diff --git a/docs/.pages b/docs/.pages index 0e8c500..c0e966e 100644 --- a/docs/.pages +++ b/docs/.pages @@ -1,3 +1,4 @@ nav: - Home: index.md + - Monolith docs: mono-docs.md - API: api diff --git a/docs/mono-docs.md b/docs/mono-docs.md new file mode 100644 index 0000000..f584726 --- /dev/null +++ b/docs/mono-docs.md @@ -0,0 +1,232 @@ +# Monolith documentation + +## 2. Align a PDB-formatted trajectory + +POVME accepts a multi-frame PDB (Protein Data Bank) file as input. The +computer program [Visual Molecular Dynamics +(VMD)](http://www.ks.uiuc.edu/Research/vmd/) is useful for aligning +trajectories and converting files to the PDB format. Alignment is necessary +because the POVME algorithm assumes the pocket being measured does not +translate or rotate in space. We note also that single-frame PDB files can +likewise serve as POVME input if the user wishes only to measure the volume of +a single pocket. + +## 3. Define an inclusion region + +The user must define an "inclusion" region. This region is constructed from a +combination of user-specified spheres and rectangular prisms. The required +inclusion region should entirely encompass all the binding-pocket +conformations of the trajectory. Specify the spheres and rectangular prisms of +the inclusion region in a text-based POVME input file (e.g., "POVME.in"): + +```text +PointsInclusionSphere -7.12 2.60 -4.67 6.0 +PointsInclusionSphere -2.0 -2.0 -4.0 5.0 +PointsInclusionBox -5.0 -7.0 2.0 10.0 10.0 10.0 +PointsInclusionBox -2.0 -9.0 -3.0 10.0 5.0 10.0 +``` + +Note that for the spheres, the first three parameters are coordinates, and the +fourth parameter is a radius. For the rectangular prisms (i.e. "boxes"), the +first three parameters are coordinates, and the last three are the dimensions +of the box in the X, Y, and Z directions. + +## 4. Define an exclusion region + +An optional exclusion region defines portions of the inclusion region that +should be ignored, perhaps because they are not truly associated with the +pocket. It is similarly constructed from spheres and boxes: + +```text +PointsExclusionSphere -2.0 -2.0 -4.0 5.0 +PointsExclusionBox -5.0 -7.0 2.0 10.0 10.0 10.0 +``` + +## 5. Create a field of equidistant points + +To generate a field of equidistant points that encompasses all the +binding-pocket conformations of the trajectory, POVME first floods the +user-specified inclusion region with points and then removes any points also +contained in the optional exclusion region. You need to specify the distance +separating each of these equidistant points: + +```text +GridSpacing 1.0 +``` + +## 6. How to choose the inclusion and exclusion regions + +As you can imagine, identifying just the right set of inclusion and exclusion +spheres and boxes to encompass the binding pocket is challenging. One approach +is to define an initial geometry, visualize that geometry together with the +receptor using a program like VMD, and then iteratively add new inclusion and +exclusion regions as required. You can optionally save the point field to a +file called point_field.pdb for visualization: + +```text +SavePoints true +``` + +## 7. Specify the location of the receptor PDB file to analyze + +Once you've properly generated a pocket-encompassing point field, you're ready +to use that point field to calculate pocket volumes. Here's how to specify the +location of the PDB receptor file that has the pocket you wish to analyze: + +```PDBFileName my_receptor.pdb``` + +Note that this file can be a trajectory containing multiple frames. + +## 8. Remove points that are near receptor atoms + +As the purpose of POVME is to measure the volume of a binding-pocket cavity, +the program next removes any points that are close to receptor atoms, leaving +only those points that are likely to be located within the binding pocket +itself. To specify how close the points can come to the van der Waal's surface +of the receptor before being removed: + +```DistanceCutoff 1.09``` + +Note that if the receptor PDB file contains multiple frames, this will be done +on a frame-by-frame basis. + +## 9. Remove points outside the receptor's convex hull + +POVME 2.0 introduced an optional new feature for removing points that lie +entirely outside the binding pocket. Specifically, the gift-wrapping algorithm +is used in combination with the Akl-Toussaint heuristic to define the convex +hull of receptor atoms near the user-defined inclusion region. Any points that +fall outside the convex hull are removed. This feature is particularly useful +when the user defines an inclusion region that protrudes into the surrounding +solvent-occupying space. To activate the convex-hull feature: + +```ConvexHullExclusion true``` + +## 10. Remove points that are not contiguous with the primary pocket + +Like the original POVME program, version 2.2.2 retains the optional ability to +remove isolated patches of points that are not contiguous with the primary +binding pocket. POVME perfoms this task in two steps. + +First, POVME applys a low-pass filter to check the connectedness of the +remaining pocket-occupying points. It retains only those points that have at +least X neighboring points, where X is defined: + +```text +ContiguousPointsCriteria 3 +``` + +(Note that points that are "kitty-corner" from each other count as neighbors.) + +Second, POVME identifies which of the remaining connected points are also +connected to a user-defined contiguous pocket seed volume (e.g., located at +the center of the traditionally defined pocket), where the seed volume is +defined: + +```text +ContiguousPocketSeedSphere 67.0 102.0 57.0 4.0 +ContiguousPocketSeedBox 50.0 50.0 50.0 10.0 10.0 10.0 +``` + +All pocket-occupying points contiguous (or connected) to this region are +retained, but isolated patches of points that are not directly connected are +deleted. + +## 11. Additional POVME parameters + +Here are some additional POVME parameters you might find helpful: + +```text +# Tell POVME how to perform the calculations. + +NumProcessors 12 # POVME can use multiple processors on + # Unix-based systems. + +UseDiskNotMemory false # In some cases, your PDB trajectory may + # be so large that the resulting POVME + # analysis cannot be easily stored in + # your computer's memory. If + # UseDiskNotMemory is set to true, POVME + # will rely more on your disk space than + # on memory/RAM. + +# Tell POVME how to save the output + +OutputFilenamePrefix ./POVME_test_run/POVME_ # All the files POVME outputs will start + # with this prefix. POVME automatically + # creates any required directory + # (./POVME_test_run/ in this case). + +SaveIndividualPocketVolumes true # If true, POVME saves the pocket-volume + # points of each frame to a separate PDB + # file. The file names will be like + # {PREFIX}frame_X.pdb. + +SavePocketVolumesTrajectory true # If true, POVME saves all the pocket- + # volume points of each frame to a single + # PDB trajectory file. The individual + # frames are separated by END cards. The + # file name will be + # {PREFIX}volume_trajectory.pdb. + +OutputEqualNumPointsPerFrame true # Some visualization programs (e.g. VMD) + # are only compatible with trajectories + # that have the same number of atoms in + # each frame. If EqualNumAtomsPerFrame is + # true, POVME adds extra points at the + # origin (0.0, 0.0, 0.0) to satisfy this + # requirement. This affects files created + # with both SaveIndividualPocketVolumes + # and SavePocketVolumesTrajectory but + # does not alter the volume calculation + # itself. + +SaveTabbedVolumeFile true # If true, POVME saves the calculated + # volumes to a file in a simple tabular + # format that can be easily pasted into + # popular spreadsheet programs like + # Microsoft Excel. The file is named + # {PREFIX}volumes.tabbed.txt + +SaveVolumetricDensityMap true # If true, POVME saves a volumetric + # density map in the DX format. A + # volumetric density value is associated + # with each of the pocket-occupying + # points by calculating the fraction of + # all trajectory pocket volumes that + # include the given point. The file is + # named {PREFIX}volumetric_density.dx. + +CompressOutput true # If you're short on disk space, POVME + # can automatically compress all output + # files using gz compression. +``` + +## 12. POVME output + +By default, POVME writes a number of files to the disk. The calculated pocket +volumes, as well as user-defined parameters and progress messages, are saved +to a simple text-based log file. POVME can also be instructed to save the +volume measurements to a second file in a simple tabular format that can be +easily pasted into popular spreadsheet programs. Pocket-occupying points are +equidistant (1.0 Å by default), so each point is associated with an identical +cubical volume (e.g. 1.0 Å3). The volume of a whole pocket is calculated by +simply summing the individual volumes associated with each unique point. + +POVME also optionally saves the pocket-occupying points of each frame to PDB +file(s) on this disk. The user can instruct the program to save these points +to separate files and/or to a single PDB trajectory. Some visualization +programs (e.g. VMD) are only compatible with trajectories that have the same +number of atoms in each frame. POVME can optionally write extra points to the +origin (0.0, 0.0, 0.0) on a frame-by-frame basis to satisfy this requirement. + +Finally, POVME also optionally saves a volumetric density map in the Data +Explorer (DX) format. A volumetric density value is associated with each of +the pocket-occupying points by calculating the fraction of all trajectory +pocket volumes that include the given point. If the density map is displayed +as an isosurface, the value of the isosurface expresses the fraction of time +(e.g. over the course of the simulation) that the pocket included the +displayed volume. + +(README.md adapted from [this +website](http://rocce-vm0.ucsd.edu/data/sw/hosted/POVME/).) From 866083fe497ad15cf7bf4b8265475376e3894bb5 Mon Sep 17 00:00:00 2001 From: Alex Maldonado Date: Fri, 29 Nov 2024 21:36:14 -0500 Subject: [PATCH 20/20] Add rogfp2 test --- tests/conftest.py | 12 + tests/files/rogfp2/pocket-id.yml | 13 + tests/files/rogfp2/rogfp2.pdb | 3538 +++++++++++++++++ ...test_pocketid.py => test_pocketid_rel1.py} | 0 tests/test_pocketid_rogfp2.py | 24 + tests/{test_povme.py => test_povme_4nss.py} | 0 6 files changed, 3587 insertions(+) create mode 100644 tests/files/rogfp2/pocket-id.yml create mode 100644 tests/files/rogfp2/rogfp2.pdb rename tests/{test_pocketid.py => test_pocketid_rel1.py} (100%) create mode 100644 tests/test_pocketid_rogfp2.py rename tests/{test_povme.py => test_povme_4nss.py} (100%) diff --git a/tests/conftest.py b/tests/conftest.py index 712c450..32e9dce 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -30,3 +30,15 @@ def path_rel1_config(): @pytest.fixture def path_rel1_output(): return os.path.join(TEST_DIR, "tmp/", "rel1/") + +@pytest.fixture +def path_rogfp2_pdb(): + return os.path.join(TEST_DIR, "files/rogfp2/rogfp2.pdb") + +@pytest.fixture +def path_rogfp2_config(): + return os.path.join(TEST_DIR, "files/rogfp2/pocket-id.yml") + +@pytest.fixture +def path_rogfp2_output(): + return os.path.join(TEST_DIR, "tmp/", "rogfp2/") diff --git a/tests/files/rogfp2/pocket-id.yml b/tests/files/rogfp2/pocket-id.yml new file mode 100644 index 0000000..c449c4b --- /dev/null +++ b/tests/files/rogfp2/pocket-id.yml @@ -0,0 +1,13 @@ +pocket_detection_resolution: 4.0 + +pocket_measuring_resolution: 1.0 + +clashing_cutoff: 3.0 + +n_neighbors: 4 + +n_spheres: 5 + +sphere_padding: 5.0 + +n_cores: 4 diff --git a/tests/files/rogfp2/rogfp2.pdb b/tests/files/rogfp2/rogfp2.pdb new file mode 100644 index 0000000..021ab94 --- /dev/null +++ b/tests/files/rogfp2/rogfp2.pdb @@ -0,0 +1,3538 @@ +TITLE MDANALYSIS FRAME 0: Created by PDBWriter +CRYST1 58.739 69.153 76.870 90.00 90.00 90.00 P 1 1 +ATOM 1 N MET X 1 0.823 44.854 27.197 1.00 0.00 SYST N +ATOM 2 H1 MET X 1 0.633 45.445 27.993 1.00 0.00 SYST H +ATOM 3 H2 MET X 1 1.305 45.435 26.525 1.00 0.00 SYST H +ATOM 4 H3 MET X 1 -0.077 44.637 26.794 1.00 0.00 SYST H +ATOM 5 CA MET X 1 1.621 43.630 27.467 1.00 0.00 SYST C +ATOM 6 HA MET X 1 2.553 43.827 27.996 1.00 0.00 SYST H +ATOM 7 CB MET X 1 1.029 42.658 28.509 1.00 0.00 SYST C +ATOM 8 HB2 MET X 1 0.239 42.153 27.952 1.00 0.00 SYST H +ATOM 9 HB3 MET X 1 1.816 41.934 28.724 1.00 0.00 SYST H +ATOM 10 CG MET X 1 0.619 43.159 29.918 1.00 0.00 SYST C +ATOM 11 HG2 MET X 1 1.577 43.370 30.393 1.00 0.00 SYST H +ATOM 12 HG3 MET X 1 0.092 44.095 29.728 1.00 0.00 SYST H +ATOM 13 SD MET X 1 -0.461 42.162 30.890 1.00 0.00 SYST S +ATOM 14 CE MET X 1 0.095 40.473 30.541 1.00 0.00 SYST C +ATOM 15 HE1 MET X 1 -0.553 39.712 30.977 1.00 0.00 SYST H +ATOM 16 HE2 MET X 1 0.326 40.241 29.501 1.00 0.00 SYST H +ATOM 17 HE3 MET X 1 1.051 40.300 31.035 1.00 0.00 SYST H +ATOM 18 C MET X 1 1.910 42.849 26.170 1.00 0.00 SYST C +ATOM 19 O MET X 1 1.017 42.211 25.687 1.00 0.00 SYST O +ATOM 20 N SER X 2 3.166 42.779 25.688 1.00 0.00 SYST N +ATOM 21 H SER X 2 3.864 43.004 26.382 1.00 0.00 SYST H +ATOM 22 CA SER X 2 3.683 42.027 24.526 1.00 0.00 SYST C +ATOM 23 HA SER X 2 3.026 42.136 23.663 1.00 0.00 SYST H +ATOM 24 CB SER X 2 5.126 42.509 24.167 1.00 0.00 SYST C +ATOM 25 HB2 SER X 2 5.408 42.084 23.204 1.00 0.00 SYST H +ATOM 26 HB3 SER X 2 5.135 43.595 24.077 1.00 0.00 SYST H +ATOM 27 OG SER X 2 6.009 42.317 25.251 1.00 0.00 SYST O +ATOM 28 HG SER X 2 5.892 43.052 25.858 1.00 0.00 SYST H +ATOM 29 C SER X 2 3.836 40.586 25.070 1.00 0.00 SYST C +ATOM 30 O SER X 2 3.806 40.287 26.243 1.00 0.00 SYST O +ATOM 31 N LYS X 3 3.788 39.651 24.088 1.00 0.00 SYST N +ATOM 32 H LYS X 3 3.891 39.981 23.139 1.00 0.00 SYST H +ATOM 33 CA LYS X 3 3.718 38.157 24.191 1.00 0.00 SYST C +ATOM 34 HA LYS X 3 2.716 37.945 24.563 1.00 0.00 SYST H +ATOM 35 CB LYS X 3 4.060 37.546 22.810 1.00 0.00 SYST C +ATOM 36 HB2 LYS X 3 4.787 38.170 22.289 1.00 0.00 SYST H +ATOM 37 HB3 LYS X 3 4.534 36.590 23.033 1.00 0.00 SYST H +ATOM 38 CG LYS X 3 2.798 37.504 21.950 1.00 0.00 SYST C +ATOM 39 HG2 LYS X 3 2.269 38.455 22.001 1.00 0.00 SYST H +ATOM 40 HG3 LYS X 3 3.104 37.276 20.929 1.00 0.00 SYST H +ATOM 41 CD LYS X 3 1.803 36.352 22.385 1.00 0.00 SYST C +ATOM 42 HD2 LYS X 3 2.388 35.466 22.633 1.00 0.00 SYST H +ATOM 43 HD3 LYS X 3 1.291 36.687 23.287 1.00 0.00 SYST H +ATOM 44 CE LYS X 3 0.696 36.111 21.234 1.00 0.00 SYST C +ATOM 45 HE2 LYS X 3 0.184 37.056 21.051 1.00 0.00 SYST H +ATOM 46 HE3 LYS X 3 1.305 35.895 20.356 1.00 0.00 SYST H +ATOM 47 NZ LYS X 3 -0.202 35.005 21.556 1.00 0.00 SYST N +ATOM 48 HZ1 LYS X 3 0.106 34.170 22.035 1.00 0.00 SYST H +ATOM 49 HZ2 LYS X 3 -0.931 35.289 22.195 1.00 0.00 SYST H +ATOM 50 HZ3 LYS X 3 -0.657 34.657 20.725 1.00 0.00 SYST H +ATOM 51 C LYS X 3 4.649 37.561 25.258 1.00 0.00 SYST C +ATOM 52 O LYS X 3 4.301 36.675 26.028 1.00 0.00 SYST O +ATOM 53 N GLY X 4 5.798 38.107 25.297 1.00 0.00 SYST N +ATOM 54 H GLY X 4 6.006 38.789 24.581 1.00 0.00 SYST H +ATOM 55 CA GLY X 4 6.811 37.675 26.257 1.00 0.00 SYST C +ATOM 56 HA2 GLY X 4 7.017 36.605 26.248 1.00 0.00 SYST H +ATOM 57 HA3 GLY X 4 7.725 38.147 25.897 1.00 0.00 SYST H +ATOM 58 C GLY X 4 6.542 38.151 27.660 1.00 0.00 SYST C +ATOM 59 O GLY X 4 6.916 37.592 28.687 1.00 0.00 SYST O +ATOM 60 N GLU X 5 5.844 39.231 27.807 1.00 0.00 SYST N +ATOM 61 H GLU X 5 5.755 39.859 27.021 1.00 0.00 SYST H +ATOM 62 CA GLU X 5 5.434 39.801 29.093 1.00 0.00 SYST C +ATOM 63 HA GLU X 5 6.217 39.659 29.838 1.00 0.00 SYST H +ATOM 64 CB GLU X 5 5.215 41.358 29.112 1.00 0.00 SYST C +ATOM 65 HB2 GLU X 5 4.444 41.606 28.382 1.00 0.00 SYST H +ATOM 66 HB3 GLU X 5 4.884 41.615 30.118 1.00 0.00 SYST H +ATOM 67 CG GLU X 5 6.456 42.184 28.678 1.00 0.00 SYST C +ATOM 68 HG2 GLU X 5 7.183 42.126 29.488 1.00 0.00 SYST H +ATOM 69 HG3 GLU X 5 6.821 41.833 27.713 1.00 0.00 SYST H +ATOM 70 CD GLU X 5 6.082 43.639 28.477 1.00 0.00 SYST C +ATOM 71 OE1 GLU X 5 5.926 44.431 29.445 1.00 0.00 SYST O +ATOM 72 OE2 GLU X 5 5.837 43.938 27.268 1.00 0.00 SYST O +ATOM 73 C GLU X 5 4.230 39.021 29.644 1.00 0.00 SYST C +ATOM 74 O GLU X 5 4.120 38.698 30.844 1.00 0.00 SYST O +ATOM 75 N GLU X 6 3.359 38.654 28.737 1.00 0.00 SYST N +ATOM 76 H GLU X 6 3.465 39.131 27.853 1.00 0.00 SYST H +ATOM 77 CA GLU X 6 2.290 37.636 28.904 1.00 0.00 SYST C +ATOM 78 HA GLU X 6 1.593 38.009 29.655 1.00 0.00 SYST H +ATOM 79 CB GLU X 6 1.511 37.550 27.523 1.00 0.00 SYST C +ATOM 80 HB2 GLU X 6 1.166 38.531 27.196 1.00 0.00 SYST H +ATOM 81 HB3 GLU X 6 2.182 37.231 26.725 1.00 0.00 SYST H +ATOM 82 CG GLU X 6 0.318 36.633 27.545 1.00 0.00 SYST C +ATOM 83 HG2 GLU X 6 0.697 35.632 27.753 1.00 0.00 SYST H +ATOM 84 HG3 GLU X 6 -0.363 37.026 28.301 1.00 0.00 SYST H +ATOM 85 CD GLU X 6 -0.427 36.683 26.151 1.00 0.00 SYST C +ATOM 86 OE1 GLU X 6 -0.437 37.721 25.456 1.00 0.00 SYST O +ATOM 87 OE2 GLU X 6 -1.209 35.776 25.865 1.00 0.00 SYST O +ATOM 88 C GLU X 6 2.666 36.259 29.339 1.00 0.00 SYST C +ATOM 89 O GLU X 6 1.843 35.588 29.969 1.00 0.00 SYST O +ATOM 90 N LEU X 7 3.852 35.852 28.920 1.00 0.00 SYST N +ATOM 91 H LEU X 7 4.401 36.456 28.325 1.00 0.00 SYST H +ATOM 92 CA LEU X 7 4.514 34.672 29.350 1.00 0.00 SYST C +ATOM 93 HA LEU X 7 3.945 33.803 29.019 1.00 0.00 SYST H +ATOM 94 CB LEU X 7 5.947 34.532 28.650 1.00 0.00 SYST C +ATOM 95 HB2 LEU X 7 5.924 34.755 27.584 1.00 0.00 SYST H +ATOM 96 HB3 LEU X 7 6.525 35.374 29.032 1.00 0.00 SYST H +ATOM 97 CG LEU X 7 6.573 33.101 28.922 1.00 0.00 SYST C +ATOM 98 HG LEU X 7 6.496 32.879 29.987 1.00 0.00 SYST H +ATOM 99 CD1 LEU X 7 5.940 31.953 28.066 1.00 0.00 SYST C +ATOM 100 HD11 LEU X 7 4.876 31.889 28.297 1.00 0.00 SYST H +ATOM 101 HD12 LEU X 7 6.056 32.253 27.025 1.00 0.00 SYST H +ATOM 102 HD13 LEU X 7 6.438 31.026 28.352 1.00 0.00 SYST H +ATOM 103 CD2 LEU X 7 8.021 33.374 28.458 1.00 0.00 SYST C +ATOM 104 HD21 LEU X 7 8.521 34.164 29.020 1.00 0.00 SYST H +ATOM 105 HD22 LEU X 7 8.544 32.419 28.402 1.00 0.00 SYST H +ATOM 106 HD23 LEU X 7 7.952 33.598 27.394 1.00 0.00 SYST H +ATOM 107 C LEU X 7 4.692 34.583 30.850 1.00 0.00 SYST C +ATOM 108 O LEU X 7 4.569 33.536 31.444 1.00 0.00 SYST O +ATOM 109 N PHE X 8 5.023 35.684 31.588 1.00 0.00 SYST N +ATOM 110 H PHE X 8 4.876 36.606 31.202 1.00 0.00 SYST H +ATOM 111 CA PHE X 8 5.217 35.637 32.990 1.00 0.00 SYST C +ATOM 112 HA PHE X 8 5.351 34.599 33.295 1.00 0.00 SYST H +ATOM 113 CB PHE X 8 6.532 36.272 33.353 1.00 0.00 SYST C +ATOM 114 HB2 PHE X 8 6.443 37.290 32.974 1.00 0.00 SYST H +ATOM 115 HB3 PHE X 8 6.591 36.421 34.431 1.00 0.00 SYST H +ATOM 116 CG PHE X 8 7.787 35.676 32.791 1.00 0.00 SYST C +ATOM 117 CD1 PHE X 8 8.398 34.572 33.496 1.00 0.00 SYST C +ATOM 118 HD1 PHE X 8 7.874 34.205 34.366 1.00 0.00 SYST H +ATOM 119 CE1 PHE X 8 9.623 34.058 33.071 1.00 0.00 SYST C +ATOM 120 HE1 PHE X 8 10.074 33.246 33.622 1.00 0.00 SYST H +ATOM 121 CZ PHE X 8 10.269 34.569 31.958 1.00 0.00 SYST C +ATOM 122 HZ PHE X 8 11.198 34.158 31.591 1.00 0.00 SYST H +ATOM 123 CE2 PHE X 8 9.607 35.627 31.203 1.00 0.00 SYST C +ATOM 124 HE2 PHE X 8 10.139 36.056 30.367 1.00 0.00 SYST H +ATOM 125 CD2 PHE X 8 8.347 36.103 31.601 1.00 0.00 SYST C +ATOM 126 HD2 PHE X 8 7.912 36.942 31.078 1.00 0.00 SYST H +ATOM 127 C PHE X 8 3.976 36.204 33.666 1.00 0.00 SYST C +ATOM 128 O PHE X 8 4.035 37.328 34.174 1.00 0.00 SYST O +ATOM 129 N THR X 9 2.877 35.418 33.655 1.00 0.00 SYST N +ATOM 130 H THR X 9 2.964 34.509 33.222 1.00 0.00 SYST H +ATOM 131 CA THR X 9 1.653 35.867 34.352 1.00 0.00 SYST C +ATOM 132 HA THR X 9 1.918 36.662 35.049 1.00 0.00 SYST H +ATOM 133 CB THR X 9 0.604 36.387 33.369 1.00 0.00 SYST C +ATOM 134 HB THR X 9 -0.317 36.548 33.931 1.00 0.00 SYST H +ATOM 135 CG2 THR X 9 1.000 37.636 32.692 1.00 0.00 SYST C +ATOM 136 HG21 THR X 9 1.122 38.314 33.537 1.00 0.00 SYST H +ATOM 137 HG22 THR X 9 1.945 37.560 32.154 1.00 0.00 SYST H +ATOM 138 HG23 THR X 9 0.271 37.936 31.939 1.00 0.00 SYST H +ATOM 139 OG1 THR X 9 0.340 35.340 32.461 1.00 0.00 SYST O +ATOM 140 HG1 THR X 9 1.063 35.371 31.830 1.00 0.00 SYST H +ATOM 141 C THR X 9 1.052 34.803 35.232 1.00 0.00 SYST C +ATOM 142 O THR X 9 -0.011 34.995 35.810 1.00 0.00 SYST O +ATOM 143 N GLY X 10 1.756 33.710 35.513 1.00 0.00 SYST N +ATOM 144 H GLY X 10 2.558 33.585 34.913 1.00 0.00 SYST H +ATOM 145 CA GLY X 10 1.518 32.615 36.470 1.00 0.00 SYST C +ATOM 146 HA2 GLY X 10 1.264 32.974 37.468 1.00 0.00 SYST H +ATOM 147 HA3 GLY X 10 0.697 32.005 36.093 1.00 0.00 SYST H +ATOM 148 C GLY X 10 2.736 31.711 36.610 1.00 0.00 SYST C +ATOM 149 O GLY X 10 3.853 32.164 36.361 1.00 0.00 SYST O +ATOM 150 N VAL X 11 2.568 30.485 37.207 1.00 0.00 SYST N +ATOM 151 H VAL X 11 1.664 30.198 37.553 1.00 0.00 SYST H +ATOM 152 CA VAL X 11 3.722 29.652 37.495 1.00 0.00 SYST C +ATOM 153 HA VAL X 11 4.396 30.175 38.173 1.00 0.00 SYST H +ATOM 154 CB VAL X 11 3.272 28.396 38.298 1.00 0.00 SYST C +ATOM 155 HB VAL X 11 2.596 27.790 37.695 1.00 0.00 SYST H +ATOM 156 CG1 VAL X 11 4.537 27.510 38.613 1.00 0.00 SYST C +ATOM 157 HG11 VAL X 11 4.868 27.019 37.698 1.00 0.00 SYST H +ATOM 158 HG12 VAL X 11 5.335 28.124 39.030 1.00 0.00 SYST H +ATOM 159 HG13 VAL X 11 4.260 26.711 39.301 1.00 0.00 SYST H +ATOM 160 CG2 VAL X 11 2.450 28.724 39.560 1.00 0.00 SYST C +ATOM 161 HG21 VAL X 11 2.165 27.805 40.072 1.00 0.00 SYST H +ATOM 162 HG22 VAL X 11 3.098 29.284 40.234 1.00 0.00 SYST H +ATOM 163 HG23 VAL X 11 1.566 29.326 39.351 1.00 0.00 SYST H +ATOM 164 C VAL X 11 4.550 29.259 36.232 1.00 0.00 SYST C +ATOM 165 O VAL X 11 4.083 28.346 35.501 1.00 0.00 SYST O +ATOM 166 N VAL X 12 5.768 29.778 36.045 1.00 0.00 SYST N +ATOM 167 H VAL X 12 6.155 30.405 36.736 1.00 0.00 SYST H +ATOM 168 CA VAL X 12 6.651 29.434 34.930 1.00 0.00 SYST C +ATOM 169 HA VAL X 12 6.161 28.843 34.157 1.00 0.00 SYST H +ATOM 170 CB VAL X 12 7.359 30.719 34.151 1.00 0.00 SYST C +ATOM 171 HB VAL X 12 8.135 31.166 34.771 1.00 0.00 SYST H +ATOM 172 CG1 VAL X 12 7.904 30.241 32.842 1.00 0.00 SYST C +ATOM 173 HG11 VAL X 12 8.419 31.031 32.296 1.00 0.00 SYST H +ATOM 174 HG12 VAL X 12 8.735 29.561 33.031 1.00 0.00 SYST H +ATOM 175 HG13 VAL X 12 7.152 29.765 32.212 1.00 0.00 SYST H +ATOM 176 CG2 VAL X 12 6.284 31.827 33.987 1.00 0.00 SYST C +ATOM 177 HG21 VAL X 12 6.747 32.439 33.213 1.00 0.00 SYST H +ATOM 178 HG22 VAL X 12 5.347 31.382 33.649 1.00 0.00 SYST H +ATOM 179 HG23 VAL X 12 6.128 32.297 34.958 1.00 0.00 SYST H +ATOM 180 C VAL X 12 7.778 28.512 35.404 1.00 0.00 SYST C +ATOM 181 O VAL X 12 8.391 28.735 36.437 1.00 0.00 SYST O +ATOM 182 N PRO X 13 8.010 27.350 34.786 1.00 0.00 SYST N +ATOM 183 CD PRO X 13 7.234 26.706 33.773 1.00 0.00 SYST C +ATOM 184 HD2 PRO X 13 7.749 26.784 32.815 1.00 0.00 SYST H +ATOM 185 HD3 PRO X 13 6.179 26.969 33.692 1.00 0.00 SYST H +ATOM 186 CG PRO X 13 7.105 25.251 34.295 1.00 0.00 SYST C +ATOM 187 HG2 PRO X 13 6.706 24.743 33.417 1.00 0.00 SYST H +ATOM 188 HG3 PRO X 13 6.567 25.243 35.243 1.00 0.00 SYST H +ATOM 189 CB PRO X 13 8.548 24.959 34.531 1.00 0.00 SYST C +ATOM 190 HB2 PRO X 13 8.955 24.818 33.530 1.00 0.00 SYST H +ATOM 191 HB3 PRO X 13 8.784 24.056 35.093 1.00 0.00 SYST H +ATOM 192 CA PRO X 13 8.964 26.354 35.163 1.00 0.00 SYST C +ATOM 193 HA PRO X 13 9.007 26.254 36.247 1.00 0.00 SYST H +ATOM 194 C PRO X 13 10.406 26.680 34.692 1.00 0.00 SYST C +ATOM 195 O PRO X 13 10.553 27.382 33.697 1.00 0.00 SYST O +ATOM 196 N ILE X 14 11.451 26.088 35.228 1.00 0.00 SYST N +ATOM 197 H ILE X 14 11.234 25.464 35.992 1.00 0.00 SYST H +ATOM 198 CA ILE X 14 12.860 26.591 35.058 1.00 0.00 SYST C +ATOM 199 HA ILE X 14 12.845 26.997 34.047 1.00 0.00 SYST H +ATOM 200 CB ILE X 14 13.368 27.592 36.199 1.00 0.00 SYST C +ATOM 201 HB ILE X 14 13.462 27.066 37.149 1.00 0.00 SYST H +ATOM 202 CG2 ILE X 14 14.664 28.344 35.806 1.00 0.00 SYST C +ATOM 203 HG21 ILE X 14 15.101 28.928 36.615 1.00 0.00 SYST H +ATOM 204 HG22 ILE X 14 15.459 27.598 35.769 1.00 0.00 SYST H +ATOM 205 HG23 ILE X 14 14.566 28.887 34.866 1.00 0.00 SYST H +ATOM 206 CG1 ILE X 14 12.344 28.634 36.557 1.00 0.00 SYST C +ATOM 207 HG12 ILE X 14 12.080 29.168 35.644 1.00 0.00 SYST H +ATOM 208 HG13 ILE X 14 11.468 28.043 36.826 1.00 0.00 SYST H +ATOM 209 CD1 ILE X 14 12.684 29.626 37.752 1.00 0.00 SYST C +ATOM 210 HD11 ILE X 14 11.775 30.176 37.995 1.00 0.00 SYST H +ATOM 211 HD12 ILE X 14 13.086 29.093 38.614 1.00 0.00 SYST H +ATOM 212 HD13 ILE X 14 13.318 30.475 37.495 1.00 0.00 SYST H +ATOM 213 C ILE X 14 13.788 25.326 34.975 1.00 0.00 SYST C +ATOM 214 O ILE X 14 13.541 24.410 35.686 1.00 0.00 SYST O +ATOM 215 N LEU X 15 14.735 25.340 34.016 1.00 0.00 SYST N +ATOM 216 H LEU X 15 14.683 26.170 33.443 1.00 0.00 SYST H +ATOM 217 CA LEU X 15 15.797 24.337 33.725 1.00 0.00 SYST C +ATOM 218 HA LEU X 15 15.852 23.636 34.558 1.00 0.00 SYST H +ATOM 219 CB LEU X 15 15.455 23.436 32.521 1.00 0.00 SYST C +ATOM 220 HB2 LEU X 15 14.414 23.139 32.646 1.00 0.00 SYST H +ATOM 221 HB3 LEU X 15 15.342 24.109 31.671 1.00 0.00 SYST H +ATOM 222 CG LEU X 15 16.452 22.350 31.992 1.00 0.00 SYST C +ATOM 223 HG LEU X 15 17.399 22.883 31.903 1.00 0.00 SYST H +ATOM 224 CD1 LEU X 15 16.532 21.323 33.123 1.00 0.00 SYST C +ATOM 225 HD11 LEU X 15 17.239 20.517 32.926 1.00 0.00 SYST H +ATOM 226 HD12 LEU X 15 16.845 21.874 34.011 1.00 0.00 SYST H +ATOM 227 HD13 LEU X 15 15.568 20.879 33.371 1.00 0.00 SYST H +ATOM 228 CD2 LEU X 15 16.109 21.676 30.631 1.00 0.00 SYST C +ATOM 229 HD21 LEU X 15 15.179 21.108 30.650 1.00 0.00 SYST H +ATOM 230 HD22 LEU X 15 16.141 22.371 29.791 1.00 0.00 SYST H +ATOM 231 HD23 LEU X 15 16.876 20.909 30.524 1.00 0.00 SYST H +ATOM 232 C LEU X 15 17.177 25.080 33.586 1.00 0.00 SYST C +ATOM 233 O LEU X 15 17.431 25.977 32.771 1.00 0.00 SYST O +ATOM 234 N VAL X 16 18.173 24.684 34.393 1.00 0.00 SYST N +ATOM 235 H VAL X 16 18.088 23.939 35.069 1.00 0.00 SYST H +ATOM 236 CA VAL X 16 19.522 25.308 34.446 1.00 0.00 SYST C +ATOM 237 HA VAL X 16 19.633 26.175 33.795 1.00 0.00 SYST H +ATOM 238 CB VAL X 16 19.622 25.923 35.873 1.00 0.00 SYST C +ATOM 239 HB VAL X 16 19.368 25.161 36.610 1.00 0.00 SYST H +ATOM 240 CG1 VAL X 16 21.011 26.571 36.186 1.00 0.00 SYST C +ATOM 241 HG11 VAL X 16 21.793 25.815 36.122 1.00 0.00 SYST H +ATOM 242 HG12 VAL X 16 21.193 27.428 35.539 1.00 0.00 SYST H +ATOM 243 HG13 VAL X 16 20.956 27.008 37.183 1.00 0.00 SYST H +ATOM 244 CG2 VAL X 16 18.574 27.084 36.068 1.00 0.00 SYST C +ATOM 245 HG21 VAL X 16 17.625 26.732 35.664 1.00 0.00 SYST H +ATOM 246 HG22 VAL X 16 18.426 27.453 37.083 1.00 0.00 SYST H +ATOM 247 HG23 VAL X 16 18.794 27.981 35.490 1.00 0.00 SYST H +ATOM 248 C VAL X 16 20.589 24.273 34.190 1.00 0.00 SYST C +ATOM 249 O VAL X 16 20.512 23.146 34.553 1.00 0.00 SYST O +ATOM 250 N GLU X 17 21.608 24.678 33.341 1.00 0.00 SYST N +ATOM 251 H GLU X 17 21.409 25.551 32.873 1.00 0.00 SYST H +ATOM 252 CA GLU X 17 22.779 23.914 32.905 1.00 0.00 SYST C +ATOM 253 HA GLU X 17 22.914 23.026 33.522 1.00 0.00 SYST H +ATOM 254 CB GLU X 17 22.530 23.516 31.434 1.00 0.00 SYST C +ATOM 255 HB2 GLU X 17 21.624 22.914 31.370 1.00 0.00 SYST H +ATOM 256 HB3 GLU X 17 22.461 24.480 30.931 1.00 0.00 SYST H +ATOM 257 CG GLU X 17 23.707 22.835 30.761 1.00 0.00 SYST C +ATOM 258 HG2 GLU X 17 23.601 22.897 29.678 1.00 0.00 SYST H +ATOM 259 HG3 GLU X 17 24.655 23.317 31.002 1.00 0.00 SYST H +ATOM 260 CD GLU X 17 23.870 21.368 31.193 1.00 0.00 SYST C +ATOM 261 OE1 GLU X 17 24.620 20.618 30.557 1.00 0.00 SYST O +ATOM 262 OE2 GLU X 17 23.194 20.936 32.141 1.00 0.00 SYST O +ATOM 263 C GLU X 17 24.073 24.764 33.136 1.00 0.00 SYST C +ATOM 264 O GLU X 17 24.244 25.779 32.500 1.00 0.00 SYST O +ATOM 265 N LEU X 18 24.942 24.327 34.074 1.00 0.00 SYST N +ATOM 266 H LEU X 18 24.675 23.542 34.652 1.00 0.00 SYST H +ATOM 267 CA LEU X 18 26.251 24.949 34.285 1.00 0.00 SYST C +ATOM 268 HA LEU X 18 26.444 25.819 33.658 1.00 0.00 SYST H +ATOM 269 CB LEU X 18 26.357 25.395 35.778 1.00 0.00 SYST C +ATOM 270 HB2 LEU X 18 25.661 26.209 35.979 1.00 0.00 SYST H +ATOM 271 HB3 LEU X 18 25.956 24.620 36.431 1.00 0.00 SYST H +ATOM 272 CG LEU X 18 27.765 25.946 36.126 1.00 0.00 SYST C +ATOM 273 HG LEU X 18 28.084 26.627 35.336 1.00 0.00 SYST H +ATOM 274 CD1 LEU X 18 27.627 26.840 37.385 1.00 0.00 SYST C +ATOM 275 HD11 LEU X 18 27.085 27.746 37.112 1.00 0.00 SYST H +ATOM 276 HD12 LEU X 18 27.020 26.361 38.153 1.00 0.00 SYST H +ATOM 277 HD13 LEU X 18 28.616 27.112 37.755 1.00 0.00 SYST H +ATOM 278 CD2 LEU X 18 28.942 25.017 36.386 1.00 0.00 SYST C +ATOM 279 HD21 LEU X 18 29.815 25.558 36.750 1.00 0.00 SYST H +ATOM 280 HD22 LEU X 18 28.789 24.375 37.254 1.00 0.00 SYST H +ATOM 281 HD23 LEU X 18 29.223 24.426 35.514 1.00 0.00 SYST H +ATOM 282 C LEU X 18 27.301 23.892 33.946 1.00 0.00 SYST C +ATOM 283 O LEU X 18 27.320 22.826 34.541 1.00 0.00 SYST O +ATOM 284 N ASP X 19 28.275 24.321 33.118 1.00 0.00 SYST N +ATOM 285 H ASP X 19 28.147 25.192 32.622 1.00 0.00 SYST H +ATOM 286 CA ASP X 19 29.332 23.449 32.747 1.00 0.00 SYST C +ATOM 287 HA ASP X 19 29.499 22.686 33.507 1.00 0.00 SYST H +ATOM 288 CB ASP X 19 28.943 22.677 31.558 1.00 0.00 SYST C +ATOM 289 HB2 ASP X 19 28.138 21.984 31.807 1.00 0.00 SYST H +ATOM 290 HB3 ASP X 19 28.615 23.347 30.764 1.00 0.00 SYST H +ATOM 291 CG ASP X 19 30.060 21.762 31.025 1.00 0.00 SYST C +ATOM 292 OD1 ASP X 19 29.660 21.049 30.090 1.00 0.00 SYST O +ATOM 293 OD2 ASP X 19 31.243 21.868 31.494 1.00 0.00 SYST O +ATOM 294 C ASP X 19 30.661 24.207 32.598 1.00 0.00 SYST C +ATOM 295 O ASP X 19 30.813 24.983 31.634 1.00 0.00 SYST O +ATOM 296 N GLY X 20 31.685 24.002 33.531 1.00 0.00 SYST N +ATOM 297 H GLY X 20 31.496 23.347 34.276 1.00 0.00 SYST H +ATOM 298 CA GLY X 20 32.889 24.869 33.601 1.00 0.00 SYST C +ATOM 299 HA2 GLY X 20 33.225 25.078 32.585 1.00 0.00 SYST H +ATOM 300 HA3 GLY X 20 32.618 25.838 34.019 1.00 0.00 SYST H +ATOM 301 C GLY X 20 34.032 24.316 34.455 1.00 0.00 SYST C +ATOM 302 O GLY X 20 34.194 23.105 34.469 1.00 0.00 SYST O +ATOM 303 N ASP X 21 34.837 25.215 35.077 1.00 0.00 SYST N +ATOM 304 H ASP X 21 34.676 26.207 34.983 1.00 0.00 SYST H +ATOM 305 CA ASP X 21 36.109 24.850 35.710 1.00 0.00 SYST C +ATOM 306 HA ASP X 21 35.918 24.084 36.462 1.00 0.00 SYST H +ATOM 307 CB ASP X 21 37.069 24.270 34.651 1.00 0.00 SYST C +ATOM 308 HB2 ASP X 21 37.912 23.906 35.238 1.00 0.00 SYST H +ATOM 309 HB3 ASP X 21 36.628 23.438 34.101 1.00 0.00 SYST H +ATOM 310 CG ASP X 21 37.550 25.202 33.576 1.00 0.00 SYST C +ATOM 311 OD1 ASP X 21 38.571 25.947 33.755 1.00 0.00 SYST O +ATOM 312 OD2 ASP X 21 36.994 25.146 32.512 1.00 0.00 SYST O +ATOM 313 C ASP X 21 36.757 26.028 36.497 1.00 0.00 SYST C +ATOM 314 O ASP X 21 36.401 27.168 36.353 1.00 0.00 SYST O +ATOM 315 N VAL X 22 37.724 25.639 37.345 1.00 0.00 SYST N +ATOM 316 H VAL X 22 37.967 24.659 37.338 1.00 0.00 SYST H +ATOM 317 CA VAL X 22 38.548 26.604 38.172 1.00 0.00 SYST C +ATOM 318 HA VAL X 22 38.625 27.554 37.642 1.00 0.00 SYST H +ATOM 319 CB VAL X 22 37.812 26.904 39.449 1.00 0.00 SYST C +ATOM 320 HB VAL X 22 36.801 27.244 39.224 1.00 0.00 SYST H +ATOM 321 CG1 VAL X 22 37.654 25.720 40.367 1.00 0.00 SYST C +ATOM 322 HG11 VAL X 22 38.570 25.334 40.815 1.00 0.00 SYST H +ATOM 323 HG12 VAL X 22 37.068 26.157 41.175 1.00 0.00 SYST H +ATOM 324 HG13 VAL X 22 37.167 24.977 39.736 1.00 0.00 SYST H +ATOM 325 CG2 VAL X 22 38.456 28.039 40.201 1.00 0.00 SYST C +ATOM 326 HG21 VAL X 22 39.376 27.697 40.676 1.00 0.00 SYST H +ATOM 327 HG22 VAL X 22 38.647 28.858 39.507 1.00 0.00 SYST H +ATOM 328 HG23 VAL X 22 37.779 28.405 40.973 1.00 0.00 SYST H +ATOM 329 C VAL X 22 39.946 25.999 38.367 1.00 0.00 SYST C +ATOM 330 O VAL X 22 40.046 24.881 38.762 1.00 0.00 SYST O +ATOM 331 N ASN X 23 41.011 26.759 38.067 1.00 0.00 SYST N +ATOM 332 H ASN X 23 40.789 27.713 37.820 1.00 0.00 SYST H +ATOM 333 CA ASN X 23 42.390 26.367 38.076 1.00 0.00 SYST C +ATOM 334 HA ASN X 23 43.006 27.165 37.663 1.00 0.00 SYST H +ATOM 335 CB ASN X 23 42.941 26.129 39.535 1.00 0.00 SYST C +ATOM 336 HB2 ASN X 23 42.427 25.330 40.069 1.00 0.00 SYST H +ATOM 337 HB3 ASN X 23 43.966 25.758 39.521 1.00 0.00 SYST H +ATOM 338 CG ASN X 23 42.974 27.451 40.373 1.00 0.00 SYST C +ATOM 339 OD1 ASN X 23 42.480 28.526 40.068 1.00 0.00 SYST O +ATOM 340 ND2 ASN X 23 43.718 27.352 41.455 1.00 0.00 SYST N +ATOM 341 HD21 ASN X 23 43.945 28.228 41.904 1.00 0.00 SYST H +ATOM 342 HD22 ASN X 23 44.172 26.541 41.851 1.00 0.00 SYST H +ATOM 343 C ASN X 23 42.645 25.148 37.111 1.00 0.00 SYST C +ATOM 344 O ASN X 23 43.484 24.329 37.445 1.00 0.00 SYST O +ATOM 345 N GLY X 24 41.904 25.032 35.979 1.00 0.00 SYST N +ATOM 346 H GLY X 24 41.421 25.855 35.647 1.00 0.00 SYST H +ATOM 347 CA GLY X 24 41.736 23.915 35.137 1.00 0.00 SYST C +ATOM 348 HA2 GLY X 24 41.386 24.177 34.138 1.00 0.00 SYST H +ATOM 349 HA3 GLY X 24 42.713 23.434 35.090 1.00 0.00 SYST H +ATOM 350 C GLY X 24 40.831 22.733 35.617 1.00 0.00 SYST C +ATOM 351 O GLY X 24 40.585 21.859 34.814 1.00 0.00 SYST O +ATOM 352 N HID X 25 40.319 22.701 36.890 1.00 0.00 SYST N +ATOM 353 H HID X 25 40.528 23.360 37.627 1.00 0.00 SYST H +ATOM 354 CA HID X 25 39.484 21.636 37.483 1.00 0.00 SYST C +ATOM 355 HA HID X 25 39.846 20.675 37.117 1.00 0.00 SYST H +ATOM 356 CB HID X 25 39.706 21.542 38.976 1.00 0.00 SYST C +ATOM 357 HB2 HID X 25 39.349 22.321 39.650 1.00 0.00 SYST H +ATOM 358 HB3 HID X 25 39.191 20.644 39.319 1.00 0.00 SYST H +ATOM 359 CG HID X 25 41.180 21.415 39.334 1.00 0.00 SYST C +ATOM 360 ND1 HID X 25 42.144 20.654 38.821 1.00 0.00 SYST N +ATOM 361 HD1 HID X 25 42.115 20.141 37.951 1.00 0.00 SYST H +ATOM 362 CE1 HID X 25 43.367 20.880 39.420 1.00 0.00 SYST C +ATOM 363 HE1 HID X 25 44.295 20.389 39.167 1.00 0.00 SYST H +ATOM 364 NE2 HID X 25 43.161 21.871 40.294 1.00 0.00 SYST N +ATOM 365 CD2 HID X 25 41.810 22.243 40.239 1.00 0.00 SYST C +ATOM 366 HD2 HID X 25 41.367 22.990 40.880 1.00 0.00 SYST H +ATOM 367 C HID X 25 38.024 21.648 37.089 1.00 0.00 SYST C +ATOM 368 O HID X 25 37.251 22.513 37.511 1.00 0.00 SYST O +ATOM 369 N LYS X 26 37.645 20.809 36.043 1.00 0.00 SYST N +ATOM 370 H LYS X 26 38.394 20.293 35.602 1.00 0.00 SYST H +ATOM 371 CA LYS X 26 36.272 20.729 35.448 1.00 0.00 SYST C +ATOM 372 HA LYS X 26 35.969 21.713 35.088 1.00 0.00 SYST H +ATOM 373 CB LYS X 26 36.305 19.689 34.315 1.00 0.00 SYST C +ATOM 374 HB2 LYS X 26 36.822 18.776 34.611 1.00 0.00 SYST H +ATOM 375 HB3 LYS X 26 35.303 19.350 34.050 1.00 0.00 SYST H +ATOM 376 CG LYS X 26 36.997 20.271 33.058 1.00 0.00 SYST C +ATOM 377 HG2 LYS X 26 36.513 21.212 32.795 1.00 0.00 SYST H +ATOM 378 HG3 LYS X 26 38.041 20.467 33.302 1.00 0.00 SYST H +ATOM 379 CD LYS X 26 36.927 19.277 31.886 1.00 0.00 SYST C +ATOM 380 HD2 LYS X 26 37.705 19.393 31.132 1.00 0.00 SYST H +ATOM 381 HD3 LYS X 26 37.103 18.299 32.335 1.00 0.00 SYST H +ATOM 382 CE LYS X 26 35.567 19.293 31.216 1.00 0.00 SYST C +ATOM 383 HE2 LYS X 26 34.842 19.141 32.015 1.00 0.00 SYST H +ATOM 384 HE3 LYS X 26 35.463 20.262 30.726 1.00 0.00 SYST H +ATOM 385 NZ LYS X 26 35.456 18.165 30.200 1.00 0.00 SYST N +ATOM 386 HZ1 LYS X 26 36.303 18.148 29.650 1.00 0.00 SYST H +ATOM 387 HZ2 LYS X 26 35.260 17.277 30.638 1.00 0.00 SYST H +ATOM 388 HZ3 LYS X 26 34.634 18.324 29.636 1.00 0.00 SYST H +ATOM 389 C LYS X 26 35.239 20.292 36.421 1.00 0.00 SYST C +ATOM 390 O LYS X 26 35.505 19.442 37.281 1.00 0.00 SYST O +ATOM 391 N PHE X 27 34.072 20.904 36.356 1.00 0.00 SYST N +ATOM 392 H PHE X 27 34.030 21.618 35.642 1.00 0.00 SYST H +ATOM 393 CA PHE X 27 32.817 20.515 36.993 1.00 0.00 SYST C +ATOM 394 HA PHE X 27 32.834 19.428 37.067 1.00 0.00 SYST H +ATOM 395 CB PHE X 27 32.651 21.148 38.400 1.00 0.00 SYST C +ATOM 396 HB2 PHE X 27 31.918 20.534 38.922 1.00 0.00 SYST H +ATOM 397 HB3 PHE X 27 33.590 20.973 38.924 1.00 0.00 SYST H +ATOM 398 CG PHE X 27 32.447 22.637 38.577 1.00 0.00 SYST C +ATOM 399 CD1 PHE X 27 33.530 23.477 38.426 1.00 0.00 SYST C +ATOM 400 HD1 PHE X 27 34.450 22.989 38.143 1.00 0.00 SYST H +ATOM 401 CE1 PHE X 27 33.434 24.865 38.599 1.00 0.00 SYST C +ATOM 402 HE1 PHE X 27 34.317 25.486 38.592 1.00 0.00 SYST H +ATOM 403 CZ PHE X 27 32.206 25.391 39.055 1.00 0.00 SYST C +ATOM 404 HZ PHE X 27 32.191 26.463 39.191 1.00 0.00 SYST H +ATOM 405 CE2 PHE X 27 31.079 24.516 39.270 1.00 0.00 SYST C +ATOM 406 HE2 PHE X 27 30.104 24.895 39.540 1.00 0.00 SYST H +ATOM 407 CD2 PHE X 27 31.203 23.122 38.960 1.00 0.00 SYST C +ATOM 408 HD2 PHE X 27 30.399 22.408 38.862 1.00 0.00 SYST H +ATOM 409 C PHE X 27 31.501 20.783 36.232 1.00 0.00 SYST C +ATOM 410 O PHE X 27 31.443 21.729 35.499 1.00 0.00 SYST O +ATOM 411 N SER X 28 30.393 20.045 36.412 1.00 0.00 SYST N +ATOM 412 H SER X 28 30.393 19.270 37.060 1.00 0.00 SYST H +ATOM 413 CA SER X 28 29.091 20.456 35.816 1.00 0.00 SYST C +ATOM 414 HA SER X 28 29.054 21.527 35.617 1.00 0.00 SYST H +ATOM 415 CB SER X 28 28.782 19.863 34.444 1.00 0.00 SYST C +ATOM 416 HB2 SER X 28 29.508 20.157 33.686 1.00 0.00 SYST H +ATOM 417 HB3 SER X 28 28.609 18.789 34.518 1.00 0.00 SYST H +ATOM 418 OG SER X 28 27.554 20.341 33.956 1.00 0.00 SYST O +ATOM 419 HG SER X 28 27.577 21.299 33.901 1.00 0.00 SYST H +ATOM 420 C SER X 28 27.837 20.262 36.807 1.00 0.00 SYST C +ATOM 421 O SER X 28 27.738 19.349 37.634 1.00 0.00 SYST O +ATOM 422 N VAL X 29 26.886 21.176 36.846 1.00 0.00 SYST N +ATOM 423 H VAL X 29 26.789 21.810 36.066 1.00 0.00 SYST H +ATOM 424 CA VAL X 29 25.752 21.273 37.768 1.00 0.00 SYST C +ATOM 425 HA VAL X 29 25.606 20.317 38.271 1.00 0.00 SYST H +ATOM 426 CB VAL X 29 26.021 22.426 38.771 1.00 0.00 SYST C +ATOM 427 HB VAL X 29 26.366 23.328 38.264 1.00 0.00 SYST H +ATOM 428 CG1 VAL X 29 24.828 22.838 39.635 1.00 0.00 SYST C +ATOM 429 HG11 VAL X 29 25.036 23.642 40.341 1.00 0.00 SYST H +ATOM 430 HG12 VAL X 29 23.943 23.170 39.093 1.00 0.00 SYST H +ATOM 431 HG13 VAL X 29 24.445 21.975 40.181 1.00 0.00 SYST H +ATOM 432 CG2 VAL X 29 27.231 22.096 39.688 1.00 0.00 SYST C +ATOM 433 HG21 VAL X 29 27.491 23.010 40.222 1.00 0.00 SYST H +ATOM 434 HG22 VAL X 29 26.871 21.305 40.345 1.00 0.00 SYST H +ATOM 435 HG23 VAL X 29 28.116 21.738 39.161 1.00 0.00 SYST H +ATOM 436 C VAL X 29 24.468 21.522 37.030 1.00 0.00 SYST C +ATOM 437 O VAL X 29 24.403 22.405 36.142 1.00 0.00 SYST O +ATOM 438 N SER X 30 23.520 20.647 37.350 1.00 0.00 SYST N +ATOM 439 H SER X 30 23.773 20.031 38.109 1.00 0.00 SYST H +ATOM 440 CA SER X 30 22.202 20.576 36.783 1.00 0.00 SYST C +ATOM 441 HA SER X 30 22.204 21.265 35.938 1.00 0.00 SYST H +ATOM 442 CB SER X 30 21.864 19.175 36.257 1.00 0.00 SYST C +ATOM 443 HB2 SER X 30 22.565 18.721 35.557 1.00 0.00 SYST H +ATOM 444 HB3 SER X 30 21.874 18.563 37.158 1.00 0.00 SYST H +ATOM 445 OG SER X 30 20.627 19.113 35.658 1.00 0.00 SYST O +ATOM 446 HG SER X 30 20.703 19.506 34.786 1.00 0.00 SYST H +ATOM 447 C SER X 30 21.105 21.141 37.714 1.00 0.00 SYST C +ATOM 448 O SER X 30 21.296 21.101 38.917 1.00 0.00 SYST O +ATOM 449 N GLY X 31 20.096 21.788 37.256 1.00 0.00 SYST N +ATOM 450 H GLY X 31 20.020 21.943 36.261 1.00 0.00 SYST H +ATOM 451 CA GLY X 31 19.069 22.341 38.143 1.00 0.00 SYST C +ATOM 452 HA2 GLY X 31 19.026 21.633 38.970 1.00 0.00 SYST H +ATOM 453 HA3 GLY X 31 19.346 23.352 38.442 1.00 0.00 SYST H +ATOM 454 C GLY X 31 17.696 22.496 37.538 1.00 0.00 SYST C +ATOM 455 O GLY X 31 17.533 22.626 36.345 1.00 0.00 SYST O +ATOM 456 N GLU X 32 16.699 22.523 38.354 1.00 0.00 SYST N +ATOM 457 H GLU X 32 16.821 22.448 39.354 1.00 0.00 SYST H +ATOM 458 CA GLU X 32 15.292 22.632 37.935 1.00 0.00 SYST C +ATOM 459 HA GLU X 32 15.261 23.394 37.156 1.00 0.00 SYST H +ATOM 460 CB GLU X 32 14.748 21.345 37.235 1.00 0.00 SYST C +ATOM 461 HB2 GLU X 32 13.847 21.489 36.639 1.00 0.00 SYST H +ATOM 462 HB3 GLU X 32 15.470 21.005 36.493 1.00 0.00 SYST H +ATOM 463 CG GLU X 32 14.314 20.289 38.265 1.00 0.00 SYST C +ATOM 464 HG2 GLU X 32 15.191 19.993 38.841 1.00 0.00 SYST H +ATOM 465 HG3 GLU X 32 13.530 20.670 38.920 1.00 0.00 SYST H +ATOM 466 CD GLU X 32 13.773 18.963 37.714 1.00 0.00 SYST C +ATOM 467 OE1 GLU X 32 13.792 18.052 38.523 1.00 0.00 SYST O +ATOM 468 OE2 GLU X 32 13.334 18.829 36.522 1.00 0.00 SYST O +ATOM 469 C GLU X 32 14.306 23.188 39.010 1.00 0.00 SYST C +ATOM 470 O GLU X 32 14.519 23.093 40.195 1.00 0.00 SYST O +ATOM 471 N GLY X 33 13.151 23.747 38.603 1.00 0.00 SYST N +ATOM 472 H GLY X 33 13.005 23.752 37.603 1.00 0.00 SYST H +ATOM 473 CA GLY X 33 12.204 24.404 39.533 1.00 0.00 SYST C +ATOM 474 HA2 GLY X 33 11.744 23.618 40.133 1.00 0.00 SYST H +ATOM 475 HA3 GLY X 33 12.781 25.070 40.176 1.00 0.00 SYST H +ATOM 476 C GLY X 33 11.055 25.111 38.910 1.00 0.00 SYST C +ATOM 477 O GLY X 33 10.795 24.823 37.744 1.00 0.00 SYST O +ATOM 478 N GLU X 34 10.483 26.160 39.511 1.00 0.00 SYST N +ATOM 479 H GLU X 34 10.958 26.417 40.365 1.00 0.00 SYST H +ATOM 480 CA GLU X 34 9.370 26.977 39.049 1.00 0.00 SYST C +ATOM 481 HA GLU X 34 9.566 27.162 37.993 1.00 0.00 SYST H +ATOM 482 CB GLU X 34 8.073 26.144 38.993 1.00 0.00 SYST C +ATOM 483 HB2 GLU X 34 7.285 26.767 38.570 1.00 0.00 SYST H +ATOM 484 HB3 GLU X 34 8.085 25.243 38.380 1.00 0.00 SYST H +ATOM 485 CG GLU X 34 7.604 25.759 40.436 1.00 0.00 SYST C +ATOM 486 HG2 GLU X 34 7.896 26.472 41.208 1.00 0.00 SYST H +ATOM 487 HG3 GLU X 34 6.519 25.674 40.377 1.00 0.00 SYST H +ATOM 488 CD GLU X 34 8.112 24.375 40.872 1.00 0.00 SYST C +ATOM 489 OE1 GLU X 34 8.230 24.207 42.111 1.00 0.00 SYST O +ATOM 490 OE2 GLU X 34 8.464 23.499 40.056 1.00 0.00 SYST O +ATOM 491 C GLU X 34 9.175 28.298 39.770 1.00 0.00 SYST C +ATOM 492 O GLU X 34 9.574 28.427 40.916 1.00 0.00 SYST O +ATOM 493 N GLY X 35 8.653 29.351 39.105 1.00 0.00 SYST N +ATOM 494 H GLY X 35 8.509 29.316 38.106 1.00 0.00 SYST H +ATOM 495 CA GLY X 35 8.535 30.712 39.625 1.00 0.00 SYST C +ATOM 496 HA2 GLY X 35 8.482 30.630 40.710 1.00 0.00 SYST H +ATOM 497 HA3 GLY X 35 9.397 31.269 39.258 1.00 0.00 SYST H +ATOM 498 C GLY X 35 7.254 31.420 39.131 1.00 0.00 SYST C +ATOM 499 O GLY X 35 6.601 31.066 38.191 1.00 0.00 SYST O +ATOM 500 N ASP X 36 6.887 32.573 39.707 1.00 0.00 SYST N +ATOM 501 H ASP X 36 7.514 32.843 40.452 1.00 0.00 SYST H +ATOM 502 CA ASP X 36 5.737 33.424 39.516 1.00 0.00 SYST C +ATOM 503 HA ASP X 36 5.469 33.301 38.467 1.00 0.00 SYST H +ATOM 504 CB ASP X 36 4.471 32.965 40.313 1.00 0.00 SYST C +ATOM 505 HB2 ASP X 36 4.257 31.904 40.179 1.00 0.00 SYST H +ATOM 506 HB3 ASP X 36 4.584 33.108 41.388 1.00 0.00 SYST H +ATOM 507 CG ASP X 36 3.208 33.750 39.877 1.00 0.00 SYST C +ATOM 508 OD1 ASP X 36 3.340 34.771 39.117 1.00 0.00 SYST O +ATOM 509 OD2 ASP X 36 2.126 33.269 40.228 1.00 0.00 SYST O +ATOM 510 C ASP X 36 6.120 34.888 39.885 1.00 0.00 SYST C +ATOM 511 O ASP X 36 6.378 35.219 41.041 1.00 0.00 SYST O +ATOM 512 N ALA X 37 6.287 35.667 38.848 1.00 0.00 SYST N +ATOM 513 H ALA X 37 6.038 35.245 37.964 1.00 0.00 SYST H +ATOM 514 CA ALA X 37 6.563 37.119 38.881 1.00 0.00 SYST C +ATOM 515 HA ALA X 37 7.293 37.254 39.679 1.00 0.00 SYST H +ATOM 516 CB ALA X 37 7.097 37.465 37.574 1.00 0.00 SYST C +ATOM 517 HB1 ALA X 37 6.309 37.173 36.880 1.00 0.00 SYST H +ATOM 518 HB2 ALA X 37 7.469 38.485 37.665 1.00 0.00 SYST H +ATOM 519 HB3 ALA X 37 8.023 36.895 37.492 1.00 0.00 SYST H +ATOM 520 C ALA X 37 5.362 38.032 39.261 1.00 0.00 SYST C +ATOM 521 O ALA X 37 5.468 39.233 39.613 1.00 0.00 SYST O +ATOM 522 N THR X 38 4.133 37.480 39.407 1.00 0.00 SYST N +ATOM 523 H THR X 38 4.065 36.502 39.168 1.00 0.00 SYST H +ATOM 524 CA THR X 38 3.016 38.002 40.221 1.00 0.00 SYST C +ATOM 525 HA THR X 38 2.882 39.000 39.805 1.00 0.00 SYST H +ATOM 526 CB THR X 38 1.782 37.231 39.966 1.00 0.00 SYST C +ATOM 527 HB THR X 38 1.881 36.329 40.570 1.00 0.00 SYST H +ATOM 528 CG2 THR X 38 0.604 37.940 40.491 1.00 0.00 SYST C +ATOM 529 HG21 THR X 38 0.104 37.386 41.285 1.00 0.00 SYST H +ATOM 530 HG22 THR X 38 0.682 38.971 40.834 1.00 0.00 SYST H +ATOM 531 HG23 THR X 38 -0.243 37.839 39.812 1.00 0.00 SYST H +ATOM 532 OG1 THR X 38 1.564 36.893 38.621 1.00 0.00 SYST O +ATOM 533 HG1 THR X 38 1.912 36.000 38.573 1.00 0.00 SYST H +ATOM 534 C THR X 38 3.403 38.330 41.581 1.00 0.00 SYST C +ATOM 535 O THR X 38 3.225 39.447 42.023 1.00 0.00 SYST O +ATOM 536 N TYR X 39 4.264 37.549 42.203 1.00 0.00 SYST N +ATOM 537 H TYR X 39 4.484 36.719 41.671 1.00 0.00 SYST H +ATOM 538 CA TYR X 39 4.881 37.785 43.537 1.00 0.00 SYST C +ATOM 539 HA TYR X 39 4.306 38.575 44.019 1.00 0.00 SYST H +ATOM 540 CB TYR X 39 4.739 36.465 44.371 1.00 0.00 SYST C +ATOM 541 HB2 TYR X 39 5.477 35.755 43.998 1.00 0.00 SYST H +ATOM 542 HB3 TYR X 39 4.939 36.541 45.440 1.00 0.00 SYST H +ATOM 543 CG TYR X 39 3.368 35.821 44.271 1.00 0.00 SYST C +ATOM 544 CD1 TYR X 39 3.216 34.534 43.702 1.00 0.00 SYST C +ATOM 545 HD1 TYR X 39 4.100 34.011 43.369 1.00 0.00 SYST H +ATOM 546 CE1 TYR X 39 1.866 34.076 43.474 1.00 0.00 SYST C +ATOM 547 HE1 TYR X 39 1.728 33.148 42.939 1.00 0.00 SYST H +ATOM 548 CZ TYR X 39 0.759 34.851 43.914 1.00 0.00 SYST C +ATOM 549 OH TYR X 39 -0.526 34.352 43.810 1.00 0.00 SYST O +ATOM 550 HH TYR X 39 -1.265 34.964 43.838 1.00 0.00 SYST H +ATOM 551 CE2 TYR X 39 0.967 36.139 44.507 1.00 0.00 SYST C +ATOM 552 HE2 TYR X 39 0.109 36.651 44.915 1.00 0.00 SYST H +ATOM 553 CD2 TYR X 39 2.242 36.560 44.733 1.00 0.00 SYST C +ATOM 554 HD2 TYR X 39 2.359 37.477 45.291 1.00 0.00 SYST H +ATOM 555 C TYR X 39 6.382 38.093 43.419 1.00 0.00 SYST C +ATOM 556 O TYR X 39 6.917 38.436 44.477 1.00 0.00 SYST O +ATOM 557 N GLY X 40 7.076 38.148 42.225 1.00 0.00 SYST N +ATOM 558 H GLY X 40 6.538 38.030 41.378 1.00 0.00 SYST H +ATOM 559 CA GLY X 40 8.512 38.302 42.122 1.00 0.00 SYST C +ATOM 560 HA2 GLY X 40 8.666 38.514 41.063 1.00 0.00 SYST H +ATOM 561 HA3 GLY X 40 8.843 39.214 42.619 1.00 0.00 SYST H +ATOM 562 C GLY X 40 9.350 37.111 42.522 1.00 0.00 SYST C +ATOM 563 O GLY X 40 10.315 37.428 43.170 1.00 0.00 SYST O +ATOM 564 N LYS X 41 8.967 35.843 42.382 1.00 0.00 SYST N +ATOM 565 H LYS X 41 8.137 35.764 41.813 1.00 0.00 SYST H +ATOM 566 CA LYS X 41 9.448 34.714 43.252 1.00 0.00 SYST C +ATOM 567 HA LYS X 41 10.238 35.091 43.902 1.00 0.00 SYST H +ATOM 568 CB LYS X 41 8.209 34.362 44.075 1.00 0.00 SYST C +ATOM 569 HB2 LYS X 41 7.891 35.322 44.481 1.00 0.00 SYST H +ATOM 570 HB3 LYS X 41 7.431 33.912 43.459 1.00 0.00 SYST H +ATOM 571 CG LYS X 41 8.562 33.467 45.287 1.00 0.00 SYST C +ATOM 572 HG2 LYS X 41 9.016 32.558 44.892 1.00 0.00 SYST H +ATOM 573 HG3 LYS X 41 9.367 34.035 45.753 1.00 0.00 SYST H +ATOM 574 CD LYS X 41 7.475 33.189 46.323 1.00 0.00 SYST C +ATOM 575 HD2 LYS X 41 7.850 32.742 47.244 1.00 0.00 SYST H +ATOM 576 HD3 LYS X 41 6.879 34.095 46.430 1.00 0.00 SYST H +ATOM 577 CE LYS X 41 6.489 32.136 45.864 1.00 0.00 SYST C +ATOM 578 HE2 LYS X 41 6.207 32.273 44.820 1.00 0.00 SYST H +ATOM 579 HE3 LYS X 41 7.082 31.222 45.835 1.00 0.00 SYST H +ATOM 580 NZ LYS X 41 5.304 31.966 46.766 1.00 0.00 SYST N +ATOM 581 HZ1 LYS X 41 4.629 31.340 46.350 1.00 0.00 SYST H +ATOM 582 HZ2 LYS X 41 5.646 31.625 47.654 1.00 0.00 SYST H +ATOM 583 HZ3 LYS X 41 4.904 32.877 46.943 1.00 0.00 SYST H +ATOM 584 C LYS X 41 9.906 33.530 42.422 1.00 0.00 SYST C +ATOM 585 O LYS X 41 9.354 33.332 41.270 1.00 0.00 SYST O +ATOM 586 N LEU X 42 10.834 32.725 42.895 1.00 0.00 SYST N +ATOM 587 H LEU X 42 11.400 33.047 43.667 1.00 0.00 SYST H +ATOM 588 CA LEU X 42 11.165 31.479 42.271 1.00 0.00 SYST C +ATOM 589 HA LEU X 42 10.239 31.016 41.931 1.00 0.00 SYST H +ATOM 590 CB LEU X 42 12.003 31.615 41.001 1.00 0.00 SYST C +ATOM 591 HB2 LEU X 42 12.035 30.620 40.558 1.00 0.00 SYST H +ATOM 592 HB3 LEU X 42 11.443 32.306 40.371 1.00 0.00 SYST H +ATOM 593 CG LEU X 42 13.478 32.136 41.166 1.00 0.00 SYST C +ATOM 594 HG LEU X 42 13.978 31.527 41.919 1.00 0.00 SYST H +ATOM 595 CD1 LEU X 42 14.277 32.091 39.904 1.00 0.00 SYST C +ATOM 596 HD11 LEU X 42 15.187 32.651 40.120 1.00 0.00 SYST H +ATOM 597 HD12 LEU X 42 14.498 31.025 39.868 1.00 0.00 SYST H +ATOM 598 HD13 LEU X 42 13.704 32.438 39.043 1.00 0.00 SYST H +ATOM 599 CD2 LEU X 42 13.489 33.646 41.531 1.00 0.00 SYST C +ATOM 600 HD21 LEU X 42 13.159 33.799 42.559 1.00 0.00 SYST H +ATOM 601 HD22 LEU X 42 14.495 34.065 41.544 1.00 0.00 SYST H +ATOM 602 HD23 LEU X 42 12.804 34.252 40.938 1.00 0.00 SYST H +ATOM 603 C LEU X 42 11.846 30.498 43.275 1.00 0.00 SYST C +ATOM 604 O LEU X 42 12.496 30.921 44.283 1.00 0.00 SYST O +ATOM 605 N THR X 43 11.923 29.214 42.923 1.00 0.00 SYST N +ATOM 606 H THR X 43 11.456 28.938 42.071 1.00 0.00 SYST H +ATOM 607 CA THR X 43 12.604 28.158 43.596 1.00 0.00 SYST C +ATOM 608 HA THR X 43 13.447 28.534 44.176 1.00 0.00 SYST H +ATOM 609 CB THR X 43 11.656 27.478 44.591 1.00 0.00 SYST C +ATOM 610 HB THR X 43 11.345 28.303 45.232 1.00 0.00 SYST H +ATOM 611 CG2 THR X 43 10.524 26.728 43.967 1.00 0.00 SYST C +ATOM 612 HG21 THR X 43 10.100 27.394 43.216 1.00 0.00 SYST H +ATOM 613 HG22 THR X 43 10.927 25.875 43.421 1.00 0.00 SYST H +ATOM 614 HG23 THR X 43 9.846 26.301 44.707 1.00 0.00 SYST H +ATOM 615 OG1 THR X 43 12.361 26.475 45.340 1.00 0.00 SYST O +ATOM 616 HG1 THR X 43 13.126 26.847 45.783 1.00 0.00 SYST H +ATOM 617 C THR X 43 13.271 27.162 42.573 1.00 0.00 SYST C +ATOM 618 O THR X 43 12.777 26.973 41.480 1.00 0.00 SYST O +ATOM 619 N LEU X 44 14.346 26.550 43.034 1.00 0.00 SYST N +ATOM 620 H LEU X 44 14.618 26.650 44.001 1.00 0.00 SYST H +ATOM 621 CA LEU X 44 15.027 25.435 42.360 1.00 0.00 SYST C +ATOM 622 HA LEU X 44 14.266 24.828 41.869 1.00 0.00 SYST H +ATOM 623 CB LEU X 44 16.089 25.823 41.314 1.00 0.00 SYST C +ATOM 624 HB2 LEU X 44 16.795 26.507 41.786 1.00 0.00 SYST H +ATOM 625 HB3 LEU X 44 16.674 24.926 41.110 1.00 0.00 SYST H +ATOM 626 CG LEU X 44 15.789 26.460 39.986 1.00 0.00 SYST C +ATOM 627 HG LEU X 44 14.776 26.265 39.635 1.00 0.00 SYST H +ATOM 628 CD1 LEU X 44 15.891 27.921 39.992 1.00 0.00 SYST C +ATOM 629 HD11 LEU X 44 15.910 28.351 38.990 1.00 0.00 SYST H +ATOM 630 HD12 LEU X 44 15.031 28.396 40.464 1.00 0.00 SYST H +ATOM 631 HD13 LEU X 44 16.771 28.291 40.518 1.00 0.00 SYST H +ATOM 632 CD2 LEU X 44 16.800 26.095 38.940 1.00 0.00 SYST C +ATOM 633 HD21 LEU X 44 17.790 26.551 38.955 1.00 0.00 SYST H +ATOM 634 HD22 LEU X 44 16.882 25.009 38.938 1.00 0.00 SYST H +ATOM 635 HD23 LEU X 44 16.362 26.432 38.001 1.00 0.00 SYST H +ATOM 636 C LEU X 44 15.741 24.606 43.387 1.00 0.00 SYST C +ATOM 637 O LEU X 44 16.446 25.100 44.275 1.00 0.00 SYST O +ATOM 638 N LYS X 45 15.701 23.262 43.148 1.00 0.00 SYST N +ATOM 639 H LYS X 45 15.018 22.946 42.474 1.00 0.00 SYST H +ATOM 640 CA LYS X 45 16.816 22.335 43.527 1.00 0.00 SYST C +ATOM 641 HA LYS X 45 17.261 22.724 44.444 1.00 0.00 SYST H +ATOM 642 CB LYS X 45 16.214 20.924 43.859 1.00 0.00 SYST C +ATOM 643 HB2 LYS X 45 15.601 21.109 44.742 1.00 0.00 SYST H +ATOM 644 HB3 LYS X 45 15.633 20.653 42.978 1.00 0.00 SYST H +ATOM 645 CG LYS X 45 17.247 19.839 44.088 1.00 0.00 SYST C +ATOM 646 HG2 LYS X 45 17.594 19.553 43.095 1.00 0.00 SYST H +ATOM 647 HG3 LYS X 45 18.106 20.276 44.599 1.00 0.00 SYST H +ATOM 648 CD LYS X 45 16.739 18.663 44.950 1.00 0.00 SYST C +ATOM 649 HD2 LYS X 45 17.604 17.999 44.958 1.00 0.00 SYST H +ATOM 650 HD3 LYS X 45 16.480 19.010 45.950 1.00 0.00 SYST H +ATOM 651 CE LYS X 45 15.553 17.973 44.194 1.00 0.00 SYST C +ATOM 652 HE2 LYS X 45 14.681 18.627 44.148 1.00 0.00 SYST H +ATOM 653 HE3 LYS X 45 15.852 17.735 43.173 1.00 0.00 SYST H +ATOM 654 NZ LYS X 45 15.181 16.694 44.777 1.00 0.00 SYST N +ATOM 655 HZ1 LYS X 45 14.577 16.285 44.079 1.00 0.00 SYST H +ATOM 656 HZ2 LYS X 45 15.969 16.084 44.941 1.00 0.00 SYST H +ATOM 657 HZ3 LYS X 45 14.658 16.824 45.631 1.00 0.00 SYST H +ATOM 658 C LYS X 45 17.847 22.359 42.385 1.00 0.00 SYST C +ATOM 659 O LYS X 45 17.544 22.440 41.153 1.00 0.00 SYST O +ATOM 660 N PHE X 46 19.112 22.261 42.753 1.00 0.00 SYST N +ATOM 661 H PHE X 46 19.268 22.421 43.738 1.00 0.00 SYST H +ATOM 662 CA PHE X 46 20.262 21.935 41.882 1.00 0.00 SYST C +ATOM 663 HA PHE X 46 19.983 21.706 40.853 1.00 0.00 SYST H +ATOM 664 CB PHE X 46 21.160 23.087 41.879 1.00 0.00 SYST C +ATOM 665 HB2 PHE X 46 21.744 23.223 42.789 1.00 0.00 SYST H +ATOM 666 HB3 PHE X 46 21.801 22.825 41.037 1.00 0.00 SYST H +ATOM 667 CG PHE X 46 20.609 24.488 41.585 1.00 0.00 SYST C +ATOM 668 CD1 PHE X 46 20.002 25.199 42.613 1.00 0.00 SYST C +ATOM 669 HD1 PHE X 46 20.010 24.684 43.562 1.00 0.00 SYST H +ATOM 670 CE1 PHE X 46 19.497 26.483 42.459 1.00 0.00 SYST C +ATOM 671 HE1 PHE X 46 19.138 26.994 43.340 1.00 0.00 SYST H +ATOM 672 CZ PHE X 46 19.443 27.035 41.192 1.00 0.00 SYST C +ATOM 673 HZ PHE X 46 18.954 27.979 41.005 1.00 0.00 SYST H +ATOM 674 CE2 PHE X 46 20.115 26.380 40.225 1.00 0.00 SYST C +ATOM 675 HE2 PHE X 46 19.981 26.859 39.266 1.00 0.00 SYST H +ATOM 676 CD2 PHE X 46 20.646 25.049 40.326 1.00 0.00 SYST C +ATOM 677 HD2 PHE X 46 21.061 24.492 39.499 1.00 0.00 SYST H +ATOM 678 C PHE X 46 21.092 20.749 42.434 1.00 0.00 SYST C +ATOM 679 O PHE X 46 21.037 20.423 43.601 1.00 0.00 SYST O +ATOM 680 N ILE X 47 21.895 20.096 41.566 1.00 0.00 SYST N +ATOM 681 H ILE X 47 21.917 20.405 40.605 1.00 0.00 SYST H +ATOM 682 CA ILE X 47 22.707 18.914 41.977 1.00 0.00 SYST C +ATOM 683 HA ILE X 47 22.975 19.089 43.019 1.00 0.00 SYST H +ATOM 684 CB ILE X 47 21.841 17.660 41.819 1.00 0.00 SYST C +ATOM 685 HB ILE X 47 21.710 17.478 40.752 1.00 0.00 SYST H +ATOM 686 CG2 ILE X 47 22.586 16.470 42.452 1.00 0.00 SYST C +ATOM 687 HG21 ILE X 47 21.919 15.631 42.250 1.00 0.00 SYST H +ATOM 688 HG22 ILE X 47 23.572 16.331 42.009 1.00 0.00 SYST H +ATOM 689 HG23 ILE X 47 22.693 16.502 43.536 1.00 0.00 SYST H +ATOM 690 CG1 ILE X 47 20.359 17.790 42.304 1.00 0.00 SYST C +ATOM 691 HG12 ILE X 47 20.248 18.107 43.341 1.00 0.00 SYST H +ATOM 692 HG13 ILE X 47 19.891 18.527 41.651 1.00 0.00 SYST H +ATOM 693 CD1 ILE X 47 19.507 16.614 42.277 1.00 0.00 SYST C +ATOM 694 HD11 ILE X 47 19.770 15.950 43.100 1.00 0.00 SYST H +ATOM 695 HD12 ILE X 47 18.452 16.802 42.476 1.00 0.00 SYST H +ATOM 696 HD13 ILE X 47 19.460 16.065 41.337 1.00 0.00 SYST H +ATOM 697 C ILE X 47 23.950 18.756 41.125 1.00 0.00 SYST C +ATOM 698 O ILE X 47 23.874 19.034 39.913 1.00 0.00 SYST O +ATOM 699 N SER X 48 25.082 18.342 41.717 1.00 0.00 SYST N +ATOM 700 H SER X 48 25.055 18.062 42.688 1.00 0.00 SYST H +ATOM 701 CA SER X 48 26.260 18.129 40.850 1.00 0.00 SYST C +ATOM 702 HA SER X 48 26.284 19.007 40.205 1.00 0.00 SYST H +ATOM 703 CB SER X 48 27.490 18.022 41.792 1.00 0.00 SYST C +ATOM 704 HB2 SER X 48 27.681 18.958 42.318 1.00 0.00 SYST H +ATOM 705 HB3 SER X 48 27.278 17.196 42.472 1.00 0.00 SYST H +ATOM 706 OG SER X 48 28.682 17.653 41.021 1.00 0.00 SYST O +ATOM 707 HG SER X 48 29.157 16.978 41.512 1.00 0.00 SYST H +ATOM 708 C SER X 48 26.035 16.896 39.960 1.00 0.00 SYST C +ATOM 709 O SER X 48 25.263 15.995 40.306 1.00 0.00 SYST O +ATOM 710 N THR X 49 26.820 16.918 38.938 1.00 0.00 SYST N +ATOM 711 H THR X 49 27.336 17.767 38.756 1.00 0.00 SYST H +ATOM 712 CA THR X 49 26.786 15.743 38.050 1.00 0.00 SYST C +ATOM 713 HA THR X 49 26.212 14.860 38.332 1.00 0.00 SYST H +ATOM 714 CB THR X 49 26.358 16.250 36.699 1.00 0.00 SYST C +ATOM 715 HB THR X 49 26.374 15.271 36.220 1.00 0.00 SYST H +ATOM 716 CG2 THR X 49 24.934 16.849 36.670 1.00 0.00 SYST C +ATOM 717 HG21 THR X 49 24.846 17.654 37.399 1.00 0.00 SYST H +ATOM 718 HG22 THR X 49 24.628 17.304 35.728 1.00 0.00 SYST H +ATOM 719 HG23 THR X 49 24.219 16.067 36.928 1.00 0.00 SYST H +ATOM 720 OG1 THR X 49 27.216 17.173 36.093 1.00 0.00 SYST O +ATOM 721 HG1 THR X 49 27.374 17.939 36.651 1.00 0.00 SYST H +ATOM 722 C THR X 49 28.185 15.136 37.791 1.00 0.00 SYST C +ATOM 723 O THR X 49 28.270 14.097 37.153 1.00 0.00 SYST O +ATOM 724 N THR X 50 29.267 15.597 38.354 1.00 0.00 SYST N +ATOM 725 H THR X 50 29.066 16.522 38.705 1.00 0.00 SYST H +ATOM 726 CA THR X 50 30.661 15.237 38.133 1.00 0.00 SYST C +ATOM 727 HA THR X 50 30.716 14.412 37.423 1.00 0.00 SYST H +ATOM 728 CB THR X 50 31.441 16.449 37.420 1.00 0.00 SYST C +ATOM 729 HB THR X 50 32.480 16.196 37.208 1.00 0.00 SYST H +ATOM 730 CG2 THR X 50 30.934 16.772 36.045 1.00 0.00 SYST C +ATOM 731 HG21 THR X 50 29.915 17.156 36.100 1.00 0.00 SYST H +ATOM 732 HG22 THR X 50 31.487 17.648 35.708 1.00 0.00 SYST H +ATOM 733 HG23 THR X 50 31.012 15.940 35.344 1.00 0.00 SYST H +ATOM 734 OG1 THR X 50 31.381 17.630 38.205 1.00 0.00 SYST O +ATOM 735 HG1 THR X 50 31.951 17.374 38.935 1.00 0.00 SYST H +ATOM 736 C THR X 50 31.395 14.822 39.405 1.00 0.00 SYST C +ATOM 737 O THR X 50 32.568 15.078 39.637 1.00 0.00 SYST O +ATOM 738 N GLY X 51 30.806 14.066 40.316 1.00 0.00 SYST N +ATOM 739 H GLY X 51 29.826 13.866 40.175 1.00 0.00 SYST H +ATOM 740 CA GLY X 51 31.356 13.891 41.687 1.00 0.00 SYST C +ATOM 741 HA2 GLY X 51 30.756 13.132 42.189 1.00 0.00 SYST H +ATOM 742 HA3 GLY X 51 32.332 13.408 41.645 1.00 0.00 SYST H +ATOM 743 C GLY X 51 31.345 15.186 42.503 1.00 0.00 SYST C +ATOM 744 O GLY X 51 30.741 16.208 42.170 1.00 0.00 SYST O +ATOM 745 N LYS X 52 32.082 15.193 43.628 1.00 0.00 SYST N +ATOM 746 H LYS X 52 32.566 14.331 43.836 1.00 0.00 SYST H +ATOM 747 CA LYS X 52 32.078 16.323 44.587 1.00 0.00 SYST C +ATOM 748 HA LYS X 52 31.068 16.509 44.954 1.00 0.00 SYST H +ATOM 749 CB LYS X 52 33.045 15.973 45.736 1.00 0.00 SYST C +ATOM 750 HB2 LYS X 52 33.970 15.572 45.321 1.00 0.00 SYST H +ATOM 751 HB3 LYS X 52 33.180 16.798 46.436 1.00 0.00 SYST H +ATOM 752 CG LYS X 52 32.278 14.944 46.550 1.00 0.00 SYST C +ATOM 753 HG2 LYS X 52 31.321 15.224 46.991 1.00 0.00 SYST H +ATOM 754 HG3 LYS X 52 31.977 14.080 45.958 1.00 0.00 SYST H +ATOM 755 CD LYS X 52 33.288 14.243 47.528 1.00 0.00 SYST C +ATOM 756 HD2 LYS X 52 34.113 13.822 46.954 1.00 0.00 SYST H +ATOM 757 HD3 LYS X 52 33.791 14.910 48.228 1.00 0.00 SYST H +ATOM 758 CE LYS X 52 32.747 13.026 48.261 1.00 0.00 SYST C +ATOM 759 HE2 LYS X 52 32.550 12.268 47.502 1.00 0.00 SYST H +ATOM 760 HE3 LYS X 52 33.442 12.640 49.006 1.00 0.00 SYST H +ATOM 761 NZ LYS X 52 31.546 13.397 48.981 1.00 0.00 SYST N +ATOM 762 HZ1 LYS X 52 30.817 13.747 48.376 1.00 0.00 SYST H +ATOM 763 HZ2 LYS X 52 31.236 12.603 49.521 1.00 0.00 SYST H +ATOM 764 HZ3 LYS X 52 31.772 14.136 49.632 1.00 0.00 SYST H +ATOM 765 C LYS X 52 32.563 17.545 43.901 1.00 0.00 SYST C +ATOM 766 O LYS X 52 33.495 17.511 43.084 1.00 0.00 SYST O +ATOM 767 N LEU X 53 31.931 18.729 44.228 1.00 0.00 SYST N +ATOM 768 H LEU X 53 31.161 18.717 44.882 1.00 0.00 SYST H +ATOM 769 CA LEU X 53 32.346 19.934 43.532 1.00 0.00 SYST C +ATOM 770 HA LEU X 53 32.468 19.623 42.494 1.00 0.00 SYST H +ATOM 771 CB LEU X 53 31.207 20.897 43.613 1.00 0.00 SYST C +ATOM 772 HB2 LEU X 53 30.898 20.825 44.655 1.00 0.00 SYST H +ATOM 773 HB3 LEU X 53 31.568 21.926 43.594 1.00 0.00 SYST H +ATOM 774 CG LEU X 53 29.903 20.688 42.828 1.00 0.00 SYST C +ATOM 775 HG LEU X 53 29.406 19.754 43.090 1.00 0.00 SYST H +ATOM 776 CD1 LEU X 53 28.834 21.761 43.044 1.00 0.00 SYST C +ATOM 777 HD11 LEU X 53 28.621 21.899 44.104 1.00 0.00 SYST H +ATOM 778 HD12 LEU X 53 29.224 22.726 42.720 1.00 0.00 SYST H +ATOM 779 HD13 LEU X 53 27.917 21.610 42.474 1.00 0.00 SYST H +ATOM 780 CD2 LEU X 53 30.222 20.613 41.314 1.00 0.00 SYST C +ATOM 781 HD21 LEU X 53 29.359 20.652 40.649 1.00 0.00 SYST H +ATOM 782 HD22 LEU X 53 30.971 21.332 40.979 1.00 0.00 SYST H +ATOM 783 HD23 LEU X 53 30.633 19.675 40.942 1.00 0.00 SYST H +ATOM 784 C LEU X 53 33.668 20.447 43.963 1.00 0.00 SYST C +ATOM 785 O LEU X 53 34.130 20.067 45.041 1.00 0.00 SYST O +ATOM 786 N PRO X 54 34.335 21.295 43.136 1.00 0.00 SYST N +ATOM 787 CD PRO X 54 34.081 21.530 41.751 1.00 0.00 SYST C +ATOM 788 HD2 PRO X 54 33.214 22.183 41.652 1.00 0.00 SYST H +ATOM 789 HD3 PRO X 54 33.755 20.706 41.116 1.00 0.00 SYST H +ATOM 790 CG PRO X 54 35.312 22.138 41.066 1.00 0.00 SYST C +ATOM 791 HG2 PRO X 54 35.209 23.222 41.009 1.00 0.00 SYST H +ATOM 792 HG3 PRO X 54 35.641 21.617 40.167 1.00 0.00 SYST H +ATOM 793 CB PRO X 54 36.372 22.010 42.080 1.00 0.00 SYST C +ATOM 794 HB2 PRO X 54 37.113 22.787 41.894 1.00 0.00 SYST H +ATOM 795 HB3 PRO X 54 36.862 21.041 41.982 1.00 0.00 SYST H +ATOM 796 CA PRO X 54 35.636 21.913 43.468 1.00 0.00 SYST C +ATOM 797 HA PRO X 54 36.163 21.269 44.171 1.00 0.00 SYST H +ATOM 798 C PRO X 54 35.583 23.335 44.106 1.00 0.00 SYST C +ATOM 799 O PRO X 54 36.551 23.961 44.395 1.00 0.00 SYST O +ATOM 800 N VAL X 55 34.329 23.821 44.251 1.00 0.00 SYST N +ATOM 801 H VAL X 55 33.639 23.151 43.943 1.00 0.00 SYST H +ATOM 802 CA VAL X 55 33.907 25.154 44.678 1.00 0.00 SYST C +ATOM 803 HA VAL X 55 34.648 25.576 45.357 1.00 0.00 SYST H +ATOM 804 CB VAL X 55 33.753 26.230 43.518 1.00 0.00 SYST C +ATOM 805 HB VAL X 55 33.308 27.138 43.926 1.00 0.00 SYST H +ATOM 806 CG1 VAL X 55 35.201 26.447 43.007 1.00 0.00 SYST C +ATOM 807 HG11 VAL X 55 35.530 25.579 42.436 1.00 0.00 SYST H +ATOM 808 HG12 VAL X 55 35.179 27.332 42.371 1.00 0.00 SYST H +ATOM 809 HG13 VAL X 55 35.869 26.542 43.863 1.00 0.00 SYST H +ATOM 810 CG2 VAL X 55 32.767 25.673 42.489 1.00 0.00 SYST C +ATOM 811 HG21 VAL X 55 33.015 24.665 42.158 1.00 0.00 SYST H +ATOM 812 HG22 VAL X 55 31.751 25.756 42.878 1.00 0.00 SYST H +ATOM 813 HG23 VAL X 55 32.793 26.365 41.647 1.00 0.00 SYST H +ATOM 814 C VAL X 55 32.646 25.017 45.508 1.00 0.00 SYST C +ATOM 815 O VAL X 55 31.735 24.289 45.166 1.00 0.00 SYST O +ATOM 816 N PRO X 56 32.554 25.844 46.582 1.00 0.00 SYST N +ATOM 817 CD PRO X 56 33.540 26.733 47.086 1.00 0.00 SYST C +ATOM 818 HD2 PRO X 56 34.061 27.340 46.346 1.00 0.00 SYST H +ATOM 819 HD3 PRO X 56 34.293 26.118 47.579 1.00 0.00 SYST H +ATOM 820 CG PRO X 56 32.933 27.579 48.208 1.00 0.00 SYST C +ATOM 821 HG2 PRO X 56 32.550 28.554 47.908 1.00 0.00 SYST H +ATOM 822 HG3 PRO X 56 33.613 27.583 49.060 1.00 0.00 SYST H +ATOM 823 CB PRO X 56 31.738 26.680 48.664 1.00 0.00 SYST C +ATOM 824 HB2 PRO X 56 30.962 27.221 49.205 1.00 0.00 SYST H +ATOM 825 HB3 PRO X 56 32.133 25.865 49.271 1.00 0.00 SYST H +ATOM 826 CA PRO X 56 31.305 25.961 47.392 1.00 0.00 SYST C +ATOM 827 HA PRO X 56 30.889 24.969 47.566 1.00 0.00 SYST H +ATOM 828 C PRO X 56 30.140 26.784 46.712 1.00 0.00 SYST C +ATOM 829 O PRO X 56 30.353 27.767 46.022 1.00 0.00 SYST O +ATOM 830 N TRP X 57 28.874 26.438 46.993 1.00 0.00 SYST N +ATOM 831 H TRP X 57 28.810 25.588 47.536 1.00 0.00 SYST H +ATOM 832 CA TRP X 57 27.630 26.955 46.509 1.00 0.00 SYST C +ATOM 833 HA TRP X 57 27.474 26.739 45.452 1.00 0.00 SYST H +ATOM 834 CB TRP X 57 26.547 26.101 47.185 1.00 0.00 SYST C +ATOM 835 HB2 TRP X 57 26.872 25.982 48.218 1.00 0.00 SYST H +ATOM 836 HB3 TRP X 57 25.559 26.532 47.021 1.00 0.00 SYST H +ATOM 837 CG TRP X 57 26.531 24.778 46.549 1.00 0.00 SYST C +ATOM 838 CD1 TRP X 57 26.960 23.760 47.294 1.00 0.00 SYST C +ATOM 839 HD1 TRP X 57 27.383 23.720 48.287 1.00 0.00 SYST H +ATOM 840 NE1 TRP X 57 26.647 22.649 46.612 1.00 0.00 SYST N +ATOM 841 HE1 TRP X 57 26.782 21.715 46.972 1.00 0.00 SYST H +ATOM 842 CE2 TRP X 57 26.028 22.884 45.359 1.00 0.00 SYST C +ATOM 843 CZ2 TRP X 57 25.570 22.103 44.325 1.00 0.00 SYST C +ATOM 844 HZ2 TRP X 57 25.685 21.039 44.465 1.00 0.00 SYST H +ATOM 845 CH2 TRP X 57 24.895 22.653 43.258 1.00 0.00 SYST C +ATOM 846 HH2 TRP X 57 24.498 22.011 42.485 1.00 0.00 SYST H +ATOM 847 CZ3 TRP X 57 24.752 24.080 43.194 1.00 0.00 SYST C +ATOM 848 HZ3 TRP X 57 24.115 24.514 42.438 1.00 0.00 SYST H +ATOM 849 CE3 TRP X 57 25.210 24.848 44.248 1.00 0.00 SYST C +ATOM 850 HE3 TRP X 57 24.987 25.905 44.250 1.00 0.00 SYST H +ATOM 851 CD2 TRP X 57 25.885 24.292 45.350 1.00 0.00 SYST C +ATOM 852 C TRP X 57 27.338 28.448 46.618 1.00 0.00 SYST C +ATOM 853 O TRP X 57 26.903 29.023 45.675 1.00 0.00 SYST O +ATOM 854 N PRO X 58 27.686 29.098 47.749 1.00 0.00 SYST N +ATOM 855 CD PRO X 58 28.075 28.527 49.039 1.00 0.00 SYST C +ATOM 856 HD2 PRO X 58 29.083 28.126 48.937 1.00 0.00 SYST H +ATOM 857 HD3 PRO X 58 27.411 27.737 49.393 1.00 0.00 SYST H +ATOM 858 CG PRO X 58 28.067 29.612 50.117 1.00 0.00 SYST C +ATOM 859 HG2 PRO X 58 28.771 29.374 50.914 1.00 0.00 SYST H +ATOM 860 HG3 PRO X 58 27.057 29.743 50.506 1.00 0.00 SYST H +ATOM 861 CB PRO X 58 28.418 30.901 49.369 1.00 0.00 SYST C +ATOM 862 HB2 PRO X 58 29.501 31.025 49.349 1.00 0.00 SYST H +ATOM 863 HB3 PRO X 58 27.983 31.725 49.935 1.00 0.00 SYST H +ATOM 864 CA PRO X 58 27.758 30.532 47.984 1.00 0.00 SYST C +ATOM 865 HA PRO X 58 26.717 30.848 48.053 1.00 0.00 SYST H +ATOM 866 C PRO X 58 28.396 31.278 46.778 1.00 0.00 SYST C +ATOM 867 O PRO X 58 27.831 32.203 46.236 1.00 0.00 SYST O +ATOM 868 N THR X 59 29.540 30.776 46.291 1.00 0.00 SYST N +ATOM 869 H THR X 59 29.804 29.935 46.784 1.00 0.00 SYST H +ATOM 870 CA THR X 59 30.178 31.299 45.061 1.00 0.00 SYST C +ATOM 871 HA THR X 59 30.445 32.342 45.231 1.00 0.00 SYST H +ATOM 872 CB THR X 59 31.579 30.708 44.752 1.00 0.00 SYST C +ATOM 873 HB THR X 59 32.000 31.298 43.938 1.00 0.00 SYST H +ATOM 874 CG2 THR X 59 32.641 30.652 45.866 1.00 0.00 SYST C +ATOM 875 HG21 THR X 59 33.452 29.945 45.694 1.00 0.00 SYST H +ATOM 876 HG22 THR X 59 33.049 31.649 46.034 1.00 0.00 SYST H +ATOM 877 HG23 THR X 59 32.114 30.347 46.770 1.00 0.00 SYST H +ATOM 878 OG1 THR X 59 31.511 29.372 44.254 1.00 0.00 SYST O +ATOM 879 HG1 THR X 59 31.082 28.871 44.951 1.00 0.00 SYST H +ATOM 880 C THR X 59 29.370 31.207 43.755 1.00 0.00 SYST C +ATOM 881 O THR X 59 29.711 31.888 42.829 1.00 0.00 SYST O +ATOM 882 N LEU X 60 28.242 30.393 43.672 1.00 0.00 SYST N +ATOM 883 H LEU X 60 27.960 29.961 44.540 1.00 0.00 SYST H +ATOM 884 CA LEU X 60 27.632 30.011 42.329 1.00 0.00 SYST C +ATOM 885 HA LEU X 60 28.310 30.425 41.583 1.00 0.00 SYST H +ATOM 886 CB LEU X 60 27.474 28.418 42.268 1.00 0.00 SYST C +ATOM 887 HB2 LEU X 60 26.954 28.082 43.165 1.00 0.00 SYST H +ATOM 888 HB3 LEU X 60 26.924 28.187 41.356 1.00 0.00 SYST H +ATOM 889 CG LEU X 60 28.732 27.555 42.108 1.00 0.00 SYST C +ATOM 890 HG LEU X 60 29.326 27.669 43.015 1.00 0.00 SYST H +ATOM 891 CD1 LEU X 60 28.463 26.013 42.032 1.00 0.00 SYST C +ATOM 892 HD11 LEU X 60 27.842 25.700 42.871 1.00 0.00 SYST H +ATOM 893 HD12 LEU X 60 27.907 25.679 41.156 1.00 0.00 SYST H +ATOM 894 HD13 LEU X 60 29.365 25.412 42.142 1.00 0.00 SYST H +ATOM 895 CD2 LEU X 60 29.614 27.952 40.949 1.00 0.00 SYST C +ATOM 896 HD21 LEU X 60 30.322 27.144 40.765 1.00 0.00 SYST H +ATOM 897 HD22 LEU X 60 29.030 28.262 40.083 1.00 0.00 SYST H +ATOM 898 HD23 LEU X 60 30.283 28.745 41.282 1.00 0.00 SYST H +ATOM 899 C LEU X 60 26.212 30.530 42.046 1.00 0.00 SYST C +ATOM 900 O LEU X 60 25.727 30.668 40.882 1.00 0.00 SYST O +ATOM 901 N VAL X 61 25.507 30.981 43.085 1.00 0.00 SYST N +ATOM 902 H VAL X 61 26.015 31.122 43.946 1.00 0.00 SYST H +ATOM 903 CA VAL X 61 24.118 31.412 43.110 1.00 0.00 SYST C +ATOM 904 HA VAL X 61 23.526 30.525 42.884 1.00 0.00 SYST H +ATOM 905 CB VAL X 61 23.706 31.898 44.528 1.00 0.00 SYST C +ATOM 906 HB VAL X 61 24.489 32.618 44.768 1.00 0.00 SYST H +ATOM 907 CG1 VAL X 61 22.293 32.454 44.525 1.00 0.00 SYST C +ATOM 908 HG11 VAL X 61 21.904 32.479 45.543 1.00 0.00 SYST H +ATOM 909 HG12 VAL X 61 22.208 33.399 43.988 1.00 0.00 SYST H +ATOM 910 HG13 VAL X 61 21.745 31.716 43.940 1.00 0.00 SYST H +ATOM 911 CG2 VAL X 61 23.745 30.649 45.503 1.00 0.00 SYST C +ATOM 912 HG21 VAL X 61 23.397 31.011 46.470 1.00 0.00 SYST H +ATOM 913 HG22 VAL X 61 23.136 29.803 45.185 1.00 0.00 SYST H +ATOM 914 HG23 VAL X 61 24.758 30.304 45.713 1.00 0.00 SYST H +ATOM 915 C VAL X 61 23.740 32.489 42.125 1.00 0.00 SYST C +ATOM 916 O VAL X 61 22.756 32.381 41.330 1.00 0.00 SYST O +ATOM 917 N THR X 62 24.496 33.593 42.087 1.00 0.00 SYST N +ATOM 918 H THR X 62 25.252 33.738 42.740 1.00 0.00 SYST H +ATOM 919 CA THR X 62 24.229 34.731 41.221 1.00 0.00 SYST C +ATOM 920 HA THR X 62 23.178 34.981 41.368 1.00 0.00 SYST H +ATOM 921 CB THR X 62 25.175 35.871 41.669 1.00 0.00 SYST C +ATOM 922 HB THR X 62 26.193 35.508 41.808 1.00 0.00 SYST H +ATOM 923 CG2 THR X 62 25.355 37.150 40.836 1.00 0.00 SYST C +ATOM 924 HG21 THR X 62 25.888 36.946 39.907 1.00 0.00 SYST H +ATOM 925 HG22 THR X 62 24.388 37.620 40.657 1.00 0.00 SYST H +ATOM 926 HG23 THR X 62 25.948 37.829 41.448 1.00 0.00 SYST H +ATOM 927 OG1 THR X 62 24.714 36.461 42.905 1.00 0.00 SYST O +ATOM 928 HG1 THR X 62 23.848 36.844 42.747 1.00 0.00 SYST H +ATOM 929 C THR X 62 24.536 34.380 39.784 1.00 0.00 SYST C +ATOM 930 O THR X 62 23.983 35.130 38.951 1.00 0.00 SYST O +ATOM 931 N THR X 63 25.405 33.382 39.456 1.00 0.00 SYST N +ATOM 932 H THR X 63 26.123 33.206 40.144 1.00 0.00 SYST H +ATOM 933 CA THR X 63 25.583 32.913 38.134 1.00 0.00 SYST C +ATOM 934 HA THR X 63 25.649 33.728 37.412 1.00 0.00 SYST H +ATOM 935 CB THR X 63 26.943 32.142 38.034 1.00 0.00 SYST C +ATOM 936 HB THR X 63 26.901 31.401 38.833 1.00 0.00 SYST H +ATOM 937 CG2 THR X 63 27.250 31.398 36.762 1.00 0.00 SYST C +ATOM 938 HG21 THR X 63 28.285 31.056 36.782 1.00 0.00 SYST H +ATOM 939 HG22 THR X 63 26.558 30.598 36.496 1.00 0.00 SYST H +ATOM 940 HG23 THR X 63 27.313 32.164 35.989 1.00 0.00 SYST H +ATOM 941 OG1 THR X 63 28.027 33.037 38.168 1.00 0.00 SYST O +ATOM 942 HG1 THR X 63 28.001 33.399 39.057 1.00 0.00 SYST H +ATOM 943 C THR X 63 24.439 32.067 37.732 1.00 0.00 SYST C +ATOM 944 O THR X 63 23.816 32.296 36.739 1.00 0.00 SYST O +ATOM 945 N LEU X 64 24.091 31.123 38.571 1.00 0.00 SYST N +ATOM 946 H LEU X 64 24.470 31.189 39.504 1.00 0.00 SYST H +ATOM 947 CA LEU X 64 23.031 30.101 38.269 1.00 0.00 SYST C +ATOM 948 HA LEU X 64 23.355 29.616 37.348 1.00 0.00 SYST H +ATOM 949 CB LEU X 64 22.925 29.051 39.463 1.00 0.00 SYST C +ATOM 950 HB2 LEU X 64 22.742 29.534 40.423 1.00 0.00 SYST H +ATOM 951 HB3 LEU X 64 21.990 28.512 39.312 1.00 0.00 SYST H +ATOM 952 CG LEU X 64 24.074 28.010 39.655 1.00 0.00 SYST C +ATOM 953 HG LEU X 64 25.081 28.383 39.471 1.00 0.00 SYST H +ATOM 954 CD1 LEU X 64 23.884 27.434 41.016 1.00 0.00 SYST C +ATOM 955 HD11 LEU X 64 24.617 26.652 41.214 1.00 0.00 SYST H +ATOM 956 HD12 LEU X 64 23.970 28.288 41.689 1.00 0.00 SYST H +ATOM 957 HD13 LEU X 64 22.842 27.119 41.059 1.00 0.00 SYST H +ATOM 958 CD2 LEU X 64 23.743 26.875 38.681 1.00 0.00 SYST C +ATOM 959 HD21 LEU X 64 24.477 26.131 38.994 1.00 0.00 SYST H +ATOM 960 HD22 LEU X 64 22.748 26.435 38.740 1.00 0.00 SYST H +ATOM 961 HD23 LEU X 64 23.888 27.188 37.647 1.00 0.00 SYST H +ATOM 962 C LEU X 64 21.619 30.811 38.021 1.00 0.00 SYST C +ATOM 963 O LEU X 64 20.806 30.331 37.191 1.00 0.00 SYST O +ATOM 1000 N VAL X 66 18.347 34.546 35.985 1.00 0.00 SYST N +ATOM 1001 H VAL X 66 18.362 34.886 36.936 1.00 0.00 SYST H +ATOM 1002 CA VAL X 66 17.048 34.718 35.336 1.00 0.00 SYST C +ATOM 1003 HA VAL X 66 17.130 35.003 34.287 1.00 0.00 SYST H +ATOM 1004 CB VAL X 66 16.149 33.398 35.492 1.00 0.00 SYST C +ATOM 1005 HB VAL X 66 15.177 33.766 35.163 1.00 0.00 SYST H +ATOM 1006 CG1 VAL X 66 16.619 32.401 34.429 1.00 0.00 SYST C +ATOM 1007 HG11 VAL X 66 16.161 31.433 34.632 1.00 0.00 SYST H +ATOM 1008 HG12 VAL X 66 16.402 32.829 33.450 1.00 0.00 SYST H +ATOM 1009 HG13 VAL X 66 17.675 32.194 34.598 1.00 0.00 SYST H +ATOM 1010 CG2 VAL X 66 16.057 32.747 36.875 1.00 0.00 SYST C +ATOM 1011 HG21 VAL X 66 15.714 33.521 37.562 1.00 0.00 SYST H +ATOM 1012 HG22 VAL X 66 15.415 31.867 36.879 1.00 0.00 SYST H +ATOM 1013 HG23 VAL X 66 17.003 32.362 37.257 1.00 0.00 SYST H +ATOM 1014 C VAL X 66 16.305 35.962 35.894 1.00 0.00 SYST C +ATOM 1015 O VAL X 66 15.311 35.852 36.569 1.00 0.00 SYST O +ATOM 1016 N GLN X 67 16.618 37.198 35.386 1.00 0.00 SYST N +ATOM 1017 H GLN X 67 17.437 37.319 34.808 1.00 0.00 SYST H +ATOM 1018 CA GLN X 67 15.873 38.364 35.961 1.00 0.00 SYST C +ATOM 1019 HA GLN X 67 15.737 38.197 37.030 1.00 0.00 SYST H +ATOM 1020 CB GLN X 67 16.726 39.664 35.882 1.00 0.00 SYST C +ATOM 1021 HB2 GLN X 67 16.729 39.989 34.842 1.00 0.00 SYST H +ATOM 1022 HB3 GLN X 67 16.144 40.367 36.479 1.00 0.00 SYST H +ATOM 1023 CG GLN X 67 18.182 39.780 36.413 1.00 0.00 SYST C +ATOM 1024 HG2 GLN X 67 18.454 40.834 36.466 1.00 0.00 SYST H +ATOM 1025 HG3 GLN X 67 18.206 39.396 37.432 1.00 0.00 SYST H +ATOM 1026 CD GLN X 67 19.228 39.209 35.406 1.00 0.00 SYST C +ATOM 1027 OE1 GLN X 67 18.944 38.641 34.318 1.00 0.00 SYST O +ATOM 1028 NE2 GLN X 67 20.536 39.248 35.719 1.00 0.00 SYST N +ATOM 1029 HE21 GLN X 67 21.188 38.637 35.246 1.00 0.00 SYST H +ATOM 1030 HE22 GLN X 67 20.781 39.599 36.633 1.00 0.00 SYST H +ATOM 1031 C GLN X 67 14.448 38.611 35.279 1.00 0.00 SYST C +ATOM 1032 O GLN X 67 13.775 39.535 35.733 1.00 0.00 SYST O +ATOM 1033 N CYS X 68 14.042 37.738 34.363 1.00 0.00 SYST N +ATOM 1034 H CYS X 68 14.669 37.006 34.061 1.00 0.00 SYST H +ATOM 1035 CA CYS X 68 12.692 37.819 33.846 1.00 0.00 SYST C +ATOM 1036 HA CYS X 68 12.476 38.773 33.366 1.00 0.00 SYST H +ATOM 1037 CB CYS X 68 12.653 36.888 32.670 1.00 0.00 SYST C +ATOM 1038 HB2 CYS X 68 11.605 36.897 32.372 1.00 0.00 SYST H +ATOM 1039 HB3 CYS X 68 13.175 37.369 31.842 1.00 0.00 SYST H +ATOM 1040 SG CYS X 68 13.418 35.224 33.013 1.00 0.00 SYST S +ATOM 1041 HG CYS X 68 12.448 34.647 33.728 1.00 0.00 SYST H +ATOM 1042 C CYS X 68 11.532 37.584 34.790 1.00 0.00 SYST C +ATOM 1043 O CYS X 68 10.384 37.823 34.434 1.00 0.00 SYST O +ATOM 1044 N PHE X 69 11.867 37.085 36.029 1.00 0.00 SYST N +ATOM 1045 H PHE X 69 12.850 36.863 36.080 1.00 0.00 SYST H +ATOM 1046 CA PHE X 69 10.905 36.853 37.108 1.00 0.00 SYST C +ATOM 1047 HA PHE X 69 9.923 36.744 36.648 1.00 0.00 SYST H +ATOM 1048 CB PHE X 69 11.295 35.586 37.849 1.00 0.00 SYST C +ATOM 1049 HB2 PHE X 69 12.352 35.641 38.110 1.00 0.00 SYST H +ATOM 1050 HB3 PHE X 69 10.749 35.502 38.789 1.00 0.00 SYST H +ATOM 1051 CG PHE X 69 11.122 34.214 37.151 1.00 0.00 SYST C +ATOM 1052 CD1 PHE X 69 10.030 33.374 37.436 1.00 0.00 SYST C +ATOM 1053 HD1 PHE X 69 9.284 33.696 38.148 1.00 0.00 SYST H +ATOM 1054 CE1 PHE X 69 9.865 32.135 36.808 1.00 0.00 SYST C +ATOM 1055 HE1 PHE X 69 9.106 31.397 37.024 1.00 0.00 SYST H +ATOM 1056 CZ PHE X 69 10.714 31.815 35.706 1.00 0.00 SYST C +ATOM 1057 HZ PHE X 69 10.629 30.815 35.304 1.00 0.00 SYST H +ATOM 1058 CE2 PHE X 69 11.817 32.708 35.336 1.00 0.00 SYST C +ATOM 1059 HE2 PHE X 69 12.552 32.430 34.596 1.00 0.00 SYST H +ATOM 1060 CD2 PHE X 69 12.021 33.869 36.143 1.00 0.00 SYST C +ATOM 1061 HD2 PHE X 69 12.948 34.408 36.016 1.00 0.00 SYST H +ATOM 1062 C PHE X 69 10.741 38.020 38.042 1.00 0.00 SYST C +ATOM 1063 O PHE X 69 9.908 37.930 38.984 1.00 0.00 SYST O +ATOM 1064 N SER X 70 11.442 39.090 37.770 1.00 0.00 SYST N +ATOM 1065 H SER X 70 12.048 38.995 36.968 1.00 0.00 SYST H +ATOM 1066 CA SER X 70 11.416 40.311 38.491 1.00 0.00 SYST C +ATOM 1067 HA SER X 70 11.669 40.210 39.547 1.00 0.00 SYST H +ATOM 1068 CB SER X 70 12.499 41.245 38.018 1.00 0.00 SYST C +ATOM 1069 HB2 SER X 70 13.468 40.751 37.939 1.00 0.00 SYST H +ATOM 1070 HB3 SER X 70 12.240 41.571 37.011 1.00 0.00 SYST H +ATOM 1071 OG SER X 70 12.484 42.468 38.716 1.00 0.00 SYST O +ATOM 1072 HG SER X 70 12.648 43.081 37.996 1.00 0.00 SYST H +ATOM 1073 C SER X 70 9.974 40.872 38.339 1.00 0.00 SYST C +ATOM 1074 O SER X 70 9.400 40.981 37.233 1.00 0.00 SYST O +ATOM 1075 N ARG X 71 9.455 41.232 39.543 1.00 0.00 SYST N +ATOM 1076 H ARG X 71 10.101 41.130 40.312 1.00 0.00 SYST H +ATOM 1077 CA ARG X 71 8.205 42.007 39.811 1.00 0.00 SYST C +ATOM 1078 HA ARG X 71 7.459 41.794 39.045 1.00 0.00 SYST H +ATOM 1079 CB ARG X 71 7.582 41.473 41.129 1.00 0.00 SYST C +ATOM 1080 HB2 ARG X 71 7.510 40.390 41.035 1.00 0.00 SYST H +ATOM 1081 HB3 ARG X 71 8.250 41.720 41.954 1.00 0.00 SYST H +ATOM 1082 CG ARG X 71 6.124 41.906 41.384 1.00 0.00 SYST C +ATOM 1083 HG2 ARG X 71 5.632 42.101 40.431 1.00 0.00 SYST H +ATOM 1084 HG3 ARG X 71 5.616 41.176 42.015 1.00 0.00 SYST H +ATOM 1085 CD ARG X 71 5.958 43.249 42.032 1.00 0.00 SYST C +ATOM 1086 HD2 ARG X 71 6.307 44.061 41.395 1.00 0.00 SYST H +ATOM 1087 HD3 ARG X 71 4.910 43.497 42.205 1.00 0.00 SYST H +ATOM 1088 NE ARG X 71 6.559 43.476 43.319 1.00 0.00 SYST N +ATOM 1089 HE ARG X 71 6.955 42.748 43.897 1.00 0.00 SYST H +ATOM 1090 CZ ARG X 71 6.461 44.591 44.070 1.00 0.00 SYST C +ATOM 1091 NH1 ARG X 71 5.787 45.600 43.619 1.00 0.00 SYST N +ATOM 1092 HH11 ARG X 71 5.316 45.558 42.727 1.00 0.00 SYST H +ATOM 1093 HH12 ARG X 71 5.701 46.444 44.168 1.00 0.00 SYST H +ATOM 1094 NH2 ARG X 71 6.957 44.627 45.250 1.00 0.00 SYST N +ATOM 1095 HH21 ARG X 71 7.610 43.935 45.590 1.00 0.00 SYST H +ATOM 1096 HH22 ARG X 71 6.640 45.332 45.900 1.00 0.00 SYST H +ATOM 1097 C ARG X 71 8.311 43.558 39.901 1.00 0.00 SYST C +ATOM 1098 O ARG X 71 8.902 44.095 40.885 1.00 0.00 SYST O +ATOM 1099 N TYR X 72 7.706 44.305 38.940 1.00 0.00 SYST N +ATOM 1100 H TYR X 72 7.070 43.934 38.249 1.00 0.00 SYST H +ATOM 1101 CA TYR X 72 8.024 45.800 38.789 1.00 0.00 SYST C +ATOM 1102 HA TYR X 72 8.926 45.950 39.381 1.00 0.00 SYST H +ATOM 1103 CB TYR X 72 8.383 46.199 37.361 1.00 0.00 SYST C +ATOM 1104 HB2 TYR X 72 7.545 46.063 36.678 1.00 0.00 SYST H +ATOM 1105 HB3 TYR X 72 8.592 47.259 37.506 1.00 0.00 SYST H +ATOM 1106 CG TYR X 72 9.654 45.652 36.780 1.00 0.00 SYST C +ATOM 1107 CD1 TYR X 72 9.727 44.248 36.500 1.00 0.00 SYST C +ATOM 1108 HD1 TYR X 72 8.823 43.661 36.437 1.00 0.00 SYST H +ATOM 1109 CE1 TYR X 72 10.881 43.723 36.070 1.00 0.00 SYST C +ATOM 1110 HE1 TYR X 72 11.036 42.702 35.753 1.00 0.00 SYST H +ATOM 1111 CZ TYR X 72 12.007 44.496 35.915 1.00 0.00 SYST C +ATOM 1112 OH TYR X 72 13.204 43.958 35.594 1.00 0.00 SYST O +ATOM 1113 HH TYR X 72 13.863 44.612 35.350 1.00 0.00 SYST H +ATOM 1114 CE2 TYR X 72 11.973 45.843 36.158 1.00 0.00 SYST C +ATOM 1115 HE2 TYR X 72 12.856 46.463 36.201 1.00 0.00 SYST H +ATOM 1116 CD2 TYR X 72 10.769 46.421 36.573 1.00 0.00 SYST C +ATOM 1117 HD2 TYR X 72 10.708 47.488 36.729 1.00 0.00 SYST H +ATOM 1118 C TYR X 72 6.934 46.778 39.370 1.00 0.00 SYST C +ATOM 1119 O TYR X 72 5.795 46.612 38.970 1.00 0.00 SYST O +ATOM 1120 N PRO X 73 7.278 47.751 40.192 1.00 0.00 SYST N +ATOM 1121 CD PRO X 73 8.400 47.876 41.046 1.00 0.00 SYST C +ATOM 1122 HD2 PRO X 73 9.302 48.230 40.547 1.00 0.00 SYST H +ATOM 1123 HD3 PRO X 73 8.587 46.901 41.496 1.00 0.00 SYST H +ATOM 1124 CG PRO X 73 8.062 48.807 42.243 1.00 0.00 SYST C +ATOM 1125 HG2 PRO X 73 8.949 49.384 42.503 1.00 0.00 SYST H +ATOM 1126 HG3 PRO X 73 7.575 48.222 43.023 1.00 0.00 SYST H +ATOM 1127 CB PRO X 73 7.075 49.784 41.547 1.00 0.00 SYST C +ATOM 1128 HB2 PRO X 73 7.655 50.568 41.061 1.00 0.00 SYST H +ATOM 1129 HB3 PRO X 73 6.402 50.183 42.306 1.00 0.00 SYST H +ATOM 1130 CA PRO X 73 6.395 48.933 40.464 1.00 0.00 SYST C +ATOM 1131 HA PRO X 73 5.525 48.472 40.932 1.00 0.00 SYST H +ATOM 1132 C PRO X 73 6.005 49.659 39.182 1.00 0.00 SYST C +ATOM 1133 O PRO X 73 6.660 49.577 38.107 1.00 0.00 SYST O +ATOM 1134 N ASP X 74 4.907 50.423 39.128 1.00 0.00 SYST N +ATOM 1135 H ASP X 74 4.410 50.523 40.001 1.00 0.00 SYST H +ATOM 1136 CA ASP X 74 4.313 51.043 37.968 1.00 0.00 SYST C +ATOM 1137 HA ASP X 74 4.066 50.192 37.333 1.00 0.00 SYST H +ATOM 1138 CB ASP X 74 2.985 51.679 38.321 1.00 0.00 SYST C +ATOM 1139 HB2 ASP X 74 2.286 51.077 38.902 1.00 0.00 SYST H +ATOM 1140 HB3 ASP X 74 3.172 52.546 38.955 1.00 0.00 SYST H +ATOM 1141 CG ASP X 74 2.202 52.263 37.179 1.00 0.00 SYST C +ATOM 1142 OD1 ASP X 74 2.118 51.610 36.129 1.00 0.00 SYST O +ATOM 1143 OD2 ASP X 74 1.578 53.355 37.255 1.00 0.00 SYST O +ATOM 1144 C ASP X 74 5.299 51.984 37.192 1.00 0.00 SYST C +ATOM 1145 O ASP X 74 5.502 51.799 35.982 1.00 0.00 SYST O +ATOM 1146 N HID X 75 5.990 52.799 37.841 1.00 0.00 SYST N +ATOM 1147 H HID X 75 5.825 53.021 38.812 1.00 0.00 SYST H +ATOM 1148 CA HID X 75 6.999 53.644 37.146 1.00 0.00 SYST C +ATOM 1149 HA HID X 75 6.506 54.036 36.256 1.00 0.00 SYST H +ATOM 1150 CB HID X 75 7.390 54.785 38.012 1.00 0.00 SYST C +ATOM 1151 HB2 HID X 75 8.023 55.496 37.481 1.00 0.00 SYST H +ATOM 1152 HB3 HID X 75 6.535 55.398 38.296 1.00 0.00 SYST H +ATOM 1153 CG HID X 75 8.199 54.432 39.208 1.00 0.00 SYST C +ATOM 1154 ND1 HID X 75 7.842 53.847 40.386 1.00 0.00 SYST N +ATOM 1155 HD1 HID X 75 6.912 53.544 40.638 1.00 0.00 SYST H +ATOM 1156 CE1 HID X 75 8.906 53.786 41.234 1.00 0.00 SYST C +ATOM 1157 HE1 HID X 75 8.952 53.279 42.187 1.00 0.00 SYST H +ATOM 1158 NE2 HID X 75 9.980 54.288 40.597 1.00 0.00 SYST N +ATOM 1159 CD2 HID X 75 9.555 54.764 39.323 1.00 0.00 SYST C +ATOM 1160 HD2 HID X 75 10.239 55.249 38.642 1.00 0.00 SYST H +ATOM 1161 C HID X 75 8.218 52.869 36.651 1.00 0.00 SYST C +ATOM 1162 O HID X 75 8.795 53.263 35.649 1.00 0.00 SYST O +ATOM 1163 N MET X 76 8.480 51.657 37.169 1.00 0.00 SYST N +ATOM 1164 H MET X 76 7.807 51.214 37.778 1.00 0.00 SYST H +ATOM 1165 CA MET X 76 9.610 50.851 36.721 1.00 0.00 SYST C +ATOM 1166 HA MET X 76 10.403 51.428 36.246 1.00 0.00 SYST H +ATOM 1167 CB MET X 76 10.214 50.160 37.921 1.00 0.00 SYST C +ATOM 1168 HB2 MET X 76 9.527 49.397 38.286 1.00 0.00 SYST H +ATOM 1169 HB3 MET X 76 11.073 49.618 37.528 1.00 0.00 SYST H +ATOM 1170 CG MET X 76 10.740 51.020 39.019 1.00 0.00 SYST C +ATOM 1171 HG2 MET X 76 10.378 52.019 38.777 1.00 0.00 SYST H +ATOM 1172 HG3 MET X 76 10.246 50.625 39.906 1.00 0.00 SYST H +ATOM 1173 SD MET X 76 12.536 50.886 39.374 1.00 0.00 SYST S +ATOM 1174 CE MET X 76 12.886 52.308 40.441 1.00 0.00 SYST C +ATOM 1175 HE1 MET X 76 13.011 53.210 39.842 1.00 0.00 SYST H +ATOM 1176 HE2 MET X 76 12.251 52.381 41.324 1.00 0.00 SYST H +ATOM 1177 HE3 MET X 76 13.852 52.156 40.924 1.00 0.00 SYST H +ATOM 1178 C MET X 76 9.227 49.821 35.704 1.00 0.00 SYST C +ATOM 1179 O MET X 76 10.102 49.257 35.097 1.00 0.00 SYST O +ATOM 1180 N LYS X 77 7.906 49.621 35.514 1.00 0.00 SYST N +ATOM 1181 H LYS X 77 7.281 50.129 36.124 1.00 0.00 SYST H +ATOM 1182 CA LYS X 77 7.360 48.596 34.678 1.00 0.00 SYST C +ATOM 1183 HA LYS X 77 7.804 47.667 35.034 1.00 0.00 SYST H +ATOM 1184 CB LYS X 77 5.802 48.597 34.751 1.00 0.00 SYST C +ATOM 1185 HB2 LYS X 77 5.508 48.560 35.800 1.00 0.00 SYST H +ATOM 1186 HB3 LYS X 77 5.469 49.518 34.273 1.00 0.00 SYST H +ATOM 1187 CG LYS X 77 5.120 47.450 34.043 1.00 0.00 SYST C +ATOM 1188 HG2 LYS X 77 4.083 47.739 33.872 1.00 0.00 SYST H +ATOM 1189 HG3 LYS X 77 5.547 47.422 33.040 1.00 0.00 SYST H +ATOM 1190 CD LYS X 77 5.088 46.100 34.851 1.00 0.00 SYST C +ATOM 1191 HD2 LYS X 77 4.522 45.326 34.332 1.00 0.00 SYST H +ATOM 1192 HD3 LYS X 77 6.092 45.677 34.895 1.00 0.00 SYST H +ATOM 1193 CE LYS X 77 4.527 46.199 36.258 1.00 0.00 SYST C +ATOM 1194 HE2 LYS X 77 4.493 45.163 36.596 1.00 0.00 SYST H +ATOM 1195 HE3 LYS X 77 5.195 46.743 36.925 1.00 0.00 SYST H +ATOM 1196 NZ LYS X 77 3.199 46.849 36.393 1.00 0.00 SYST N +ATOM 1197 HZ1 LYS X 77 3.087 47.366 37.253 1.00 0.00 SYST H +ATOM 1198 HZ2 LYS X 77 3.051 47.532 35.664 1.00 0.00 SYST H +ATOM 1199 HZ3 LYS X 77 2.455 46.166 36.372 1.00 0.00 SYST H +ATOM 1200 C LYS X 77 7.861 48.695 33.188 1.00 0.00 SYST C +ATOM 1201 O LYS X 77 8.141 47.694 32.547 1.00 0.00 SYST O +ATOM 1202 N ARG X 78 8.181 49.973 32.762 1.00 0.00 SYST N +ATOM 1203 H ARG X 78 7.836 50.719 33.348 1.00 0.00 SYST H +ATOM 1204 CA ARG X 78 8.944 50.291 31.525 1.00 0.00 SYST C +ATOM 1205 HA ARG X 78 8.450 49.798 30.687 1.00 0.00 SYST H +ATOM 1206 CB ARG X 78 8.872 51.770 31.142 1.00 0.00 SYST C +ATOM 1207 HB2 ARG X 78 9.131 52.005 30.110 1.00 0.00 SYST H +ATOM 1208 HB3 ARG X 78 7.888 52.188 31.354 1.00 0.00 SYST H +ATOM 1209 CG ARG X 78 9.819 52.614 31.994 1.00 0.00 SYST C +ATOM 1210 HG2 ARG X 78 9.969 52.244 33.008 1.00 0.00 SYST H +ATOM 1211 HG3 ARG X 78 10.750 52.678 31.430 1.00 0.00 SYST H +ATOM 1212 CD ARG X 78 9.267 54.055 32.122 1.00 0.00 SYST C +ATOM 1213 HD2 ARG X 78 8.784 54.336 31.186 1.00 0.00 SYST H +ATOM 1214 HD3 ARG X 78 8.513 54.156 32.903 1.00 0.00 SYST H +ATOM 1215 NE ARG X 78 10.419 54.955 32.342 1.00 0.00 SYST N +ATOM 1216 HE ARG X 78 11.114 55.141 31.633 1.00 0.00 SYST H +ATOM 1217 CZ ARG X 78 10.780 55.633 33.445 1.00 0.00 SYST C +ATOM 1218 NH1 ARG X 78 10.197 55.559 34.581 1.00 0.00 SYST N +ATOM 1219 HH11 ARG X 78 9.650 54.727 34.752 1.00 0.00 SYST H +ATOM 1220 HH12 ARG X 78 10.469 56.114 35.379 1.00 0.00 SYST H +ATOM 1221 NH2 ARG X 78 11.690 56.499 33.320 1.00 0.00 SYST N +ATOM 1222 HH21 ARG X 78 12.143 56.649 32.430 1.00 0.00 SYST H +ATOM 1223 HH22 ARG X 78 11.693 57.288 33.951 1.00 0.00 SYST H +ATOM 1224 C ARG X 78 10.374 49.805 31.459 1.00 0.00 SYST C +ATOM 1225 O ARG X 78 10.993 49.755 30.392 1.00 0.00 SYST O +ATOM 1226 N HIE X 79 10.938 49.495 32.658 1.00 0.00 SYST N +ATOM 1227 H HIE X 79 10.496 49.953 33.442 1.00 0.00 SYST H +ATOM 1228 CA HIE X 79 12.368 49.061 32.788 1.00 0.00 SYST C +ATOM 1229 HA HIE X 79 12.888 49.493 31.933 1.00 0.00 SYST H +ATOM 1230 CB HIE X 79 12.964 49.553 34.075 1.00 0.00 SYST C +ATOM 1231 HB2 HIE X 79 12.362 49.177 34.902 1.00 0.00 SYST H +ATOM 1232 HB3 HIE X 79 13.913 49.028 34.188 1.00 0.00 SYST H +ATOM 1233 CG HIE X 79 13.145 51.069 34.335 1.00 0.00 SYST C +ATOM 1234 ND1 HIE X 79 13.266 51.940 33.265 1.00 0.00 SYST N +ATOM 1235 CE1 HIE X 79 13.143 53.182 33.795 1.00 0.00 SYST C +ATOM 1236 HE1 HIE X 79 13.285 54.128 33.293 1.00 0.00 SYST H +ATOM 1237 NE2 HIE X 79 12.902 53.108 35.133 1.00 0.00 SYST N +ATOM 1238 HE2 HIE X 79 12.763 53.939 35.690 1.00 0.00 SYST H +ATOM 1239 CD2 HIE X 79 12.973 51.810 35.531 1.00 0.00 SYST C +ATOM 1240 HD2 HIE X 79 12.896 51.497 36.562 1.00 0.00 SYST H +ATOM 1241 C HIE X 79 12.602 47.553 32.758 1.00 0.00 SYST C +ATOM 1242 O HIE X 79 13.753 47.083 32.856 1.00 0.00 SYST O +ATOM 1243 N ASP X 80 11.519 46.795 32.571 1.00 0.00 SYST N +ATOM 1244 H ASP X 80 10.624 47.239 32.421 1.00 0.00 SYST H +ATOM 1245 CA ASP X 80 11.527 45.326 32.461 1.00 0.00 SYST C +ATOM 1246 HA ASP X 80 12.253 44.910 33.159 1.00 0.00 SYST H +ATOM 1247 CB ASP X 80 10.131 44.876 32.845 1.00 0.00 SYST C +ATOM 1248 HB2 ASP X 80 9.768 45.396 33.732 1.00 0.00 SYST H +ATOM 1249 HB3 ASP X 80 9.486 45.084 31.990 1.00 0.00 SYST H +ATOM 1250 CG ASP X 80 10.042 43.384 33.085 1.00 0.00 SYST C +ATOM 1251 OD1 ASP X 80 11.009 42.578 32.917 1.00 0.00 SYST O +ATOM 1252 OD2 ASP X 80 8.923 42.998 33.476 1.00 0.00 SYST O +ATOM 1253 C ASP X 80 11.946 44.804 31.056 1.00 0.00 SYST C +ATOM 1254 O ASP X 80 11.212 44.143 30.331 1.00 0.00 SYST O +ATOM 1255 N PHE X 81 13.250 45.083 30.728 1.00 0.00 SYST N +ATOM 1256 H PHE X 81 13.782 45.496 31.481 1.00 0.00 SYST H +ATOM 1257 CA PHE X 81 13.863 44.574 29.517 1.00 0.00 SYST C +ATOM 1258 HA PHE X 81 13.460 45.154 28.686 1.00 0.00 SYST H +ATOM 1259 CB PHE X 81 15.356 44.867 29.593 1.00 0.00 SYST C +ATOM 1260 HB2 PHE X 81 15.389 45.940 29.400 1.00 0.00 SYST H +ATOM 1261 HB3 PHE X 81 15.625 44.703 30.636 1.00 0.00 SYST H +ATOM 1262 CG PHE X 81 16.218 44.170 28.588 1.00 0.00 SYST C +ATOM 1263 CD1 PHE X 81 16.138 44.473 27.221 1.00 0.00 SYST C +ATOM 1264 HD1 PHE X 81 15.520 45.247 26.791 1.00 0.00 SYST H +ATOM 1265 CE1 PHE X 81 16.935 43.736 26.332 1.00 0.00 SYST C +ATOM 1266 HE1 PHE X 81 16.880 43.968 25.279 1.00 0.00 SYST H +ATOM 1267 CZ PHE X 81 17.764 42.732 26.762 1.00 0.00 SYST C +ATOM 1268 HZ PHE X 81 18.408 42.182 26.092 1.00 0.00 SYST H +ATOM 1269 CE2 PHE X 81 17.926 42.468 28.181 1.00 0.00 SYST C +ATOM 1270 HE2 PHE X 81 18.764 41.892 28.544 1.00 0.00 SYST H +ATOM 1271 CD2 PHE X 81 17.071 43.115 29.046 1.00 0.00 SYST C +ATOM 1272 HD2 PHE X 81 17.202 42.873 30.090 1.00 0.00 SYST H +ATOM 1273 C PHE X 81 13.746 43.099 29.271 1.00 0.00 SYST C +ATOM 1274 O PHE X 81 13.433 42.604 28.176 1.00 0.00 SYST O +ATOM 1275 N PHE X 82 14.032 42.324 30.329 1.00 0.00 SYST N +ATOM 1276 H PHE X 82 14.194 42.752 31.229 1.00 0.00 SYST H +ATOM 1277 CA PHE X 82 14.059 40.882 30.414 1.00 0.00 SYST C +ATOM 1278 HA PHE X 82 14.938 40.460 29.927 1.00 0.00 SYST H +ATOM 1279 CB PHE X 82 14.244 40.535 31.904 1.00 0.00 SYST C +ATOM 1280 HB2 PHE X 82 13.342 40.866 32.419 1.00 0.00 SYST H +ATOM 1281 HB3 PHE X 82 14.342 39.455 32.015 1.00 0.00 SYST H +ATOM 1282 CG PHE X 82 15.487 41.278 32.517 1.00 0.00 SYST C +ATOM 1283 CD1 PHE X 82 16.766 40.819 32.199 1.00 0.00 SYST C +ATOM 1284 HD1 PHE X 82 17.041 39.960 31.605 1.00 0.00 SYST H +ATOM 1285 CE1 PHE X 82 17.976 41.417 32.708 1.00 0.00 SYST C +ATOM 1286 HE1 PHE X 82 18.962 41.047 32.466 1.00 0.00 SYST H +ATOM 1287 CZ PHE X 82 17.803 42.468 33.630 1.00 0.00 SYST C +ATOM 1288 HZ PHE X 82 18.639 42.841 34.203 1.00 0.00 SYST H +ATOM 1289 CE2 PHE X 82 16.496 42.876 34.031 1.00 0.00 SYST C +ATOM 1290 HE2 PHE X 82 16.400 43.606 34.821 1.00 0.00 SYST H +ATOM 1291 CD2 PHE X 82 15.320 42.298 33.491 1.00 0.00 SYST C +ATOM 1292 HD2 PHE X 82 14.312 42.529 33.801 1.00 0.00 SYST H +ATOM 1293 C PHE X 82 12.824 40.106 29.830 1.00 0.00 SYST C +ATOM 1294 O PHE X 82 12.896 39.062 29.193 1.00 0.00 SYST O +ATOM 1295 N LYS X 83 11.605 40.626 30.075 1.00 0.00 SYST N +ATOM 1296 H LYS X 83 11.576 41.426 30.691 1.00 0.00 SYST H +ATOM 1297 CA LYS X 83 10.380 40.074 29.571 1.00 0.00 SYST C +ATOM 1298 HA LYS X 83 10.461 38.990 29.655 1.00 0.00 SYST H +ATOM 1299 CB LYS X 83 9.227 40.492 30.448 1.00 0.00 SYST C +ATOM 1300 HB2 LYS X 83 9.069 41.567 30.538 1.00 0.00 SYST H +ATOM 1301 HB3 LYS X 83 8.312 40.129 29.981 1.00 0.00 SYST H +ATOM 1302 CG LYS X 83 9.295 39.838 31.811 1.00 0.00 SYST C +ATOM 1303 HG2 LYS X 83 9.446 38.764 31.700 1.00 0.00 SYST H +ATOM 1304 HG3 LYS X 83 10.031 40.370 32.414 1.00 0.00 SYST H +ATOM 1305 CD LYS X 83 7.945 40.053 32.488 1.00 0.00 SYST C +ATOM 1306 HD2 LYS X 83 7.571 41.073 32.573 1.00 0.00 SYST H +ATOM 1307 HD3 LYS X 83 7.196 39.443 31.983 1.00 0.00 SYST H +ATOM 1308 CE LYS X 83 7.973 39.657 33.953 1.00 0.00 SYST C +ATOM 1309 HE2 LYS X 83 6.997 39.644 34.437 1.00 0.00 SYST H +ATOM 1310 HE3 LYS X 83 8.275 38.624 34.125 1.00 0.00 SYST H +ATOM 1311 NZ LYS X 83 8.907 40.576 34.699 1.00 0.00 SYST N +ATOM 1312 HZ1 LYS X 83 8.827 41.524 34.359 1.00 0.00 SYST H +ATOM 1313 HZ2 LYS X 83 8.769 40.659 35.697 1.00 0.00 SYST H +ATOM 1314 HZ3 LYS X 83 9.907 40.438 34.702 1.00 0.00 SYST H +ATOM 1315 C LYS X 83 10.129 40.266 28.090 1.00 0.00 SYST C +ATOM 1316 O LYS X 83 9.627 39.390 27.411 1.00 0.00 SYST O +ATOM 1317 N SER X 84 10.469 41.482 27.608 1.00 0.00 SYST N +ATOM 1318 H SER X 84 10.898 42.184 28.193 1.00 0.00 SYST H +ATOM 1319 CA SER X 84 10.206 41.903 26.192 1.00 0.00 SYST C +ATOM 1320 HA SER X 84 9.168 41.714 25.918 1.00 0.00 SYST H +ATOM 1321 CB SER X 84 10.409 43.460 26.088 1.00 0.00 SYST C +ATOM 1322 HB2 SER X 84 10.090 43.805 25.105 1.00 0.00 SYST H +ATOM 1323 HB3 SER X 84 9.782 43.807 26.909 1.00 0.00 SYST H +ATOM 1324 OG SER X 84 11.721 43.988 26.138 1.00 0.00 SYST O +ATOM 1325 HG SER X 84 12.266 43.672 26.862 1.00 0.00 SYST H +ATOM 1326 C SER X 84 11.072 41.162 25.106 1.00 0.00 SYST C +ATOM 1327 O SER X 84 10.679 40.831 23.994 1.00 0.00 SYST O +ATOM 1328 N ALA X 85 12.292 40.936 25.508 1.00 0.00 SYST N +ATOM 1329 H ALA X 85 12.416 41.217 26.471 1.00 0.00 SYST H +ATOM 1330 CA ALA X 85 13.287 40.024 24.856 1.00 0.00 SYST C +ATOM 1331 HA ALA X 85 13.369 40.409 23.839 1.00 0.00 SYST H +ATOM 1332 CB ALA X 85 14.617 40.204 25.563 1.00 0.00 SYST C +ATOM 1333 HB1 ALA X 85 15.458 39.838 24.975 1.00 0.00 SYST H +ATOM 1334 HB2 ALA X 85 14.871 41.262 25.641 1.00 0.00 SYST H +ATOM 1335 HB3 ALA X 85 14.619 39.643 26.497 1.00 0.00 SYST H +ATOM 1336 C ALA X 85 12.931 38.534 24.709 1.00 0.00 SYST C +ATOM 1337 O ALA X 85 13.302 37.820 23.736 1.00 0.00 SYST O +ATOM 1338 N MET X 86 12.166 37.994 25.663 1.00 0.00 SYST N +ATOM 1339 H MET X 86 12.061 38.518 26.520 1.00 0.00 SYST H +ATOM 1340 CA MET X 86 11.527 36.666 25.691 1.00 0.00 SYST C +ATOM 1341 HA MET X 86 12.226 35.891 25.376 1.00 0.00 SYST H +ATOM 1342 CB MET X 86 11.114 36.338 27.166 1.00 0.00 SYST C +ATOM 1343 HB2 MET X 86 10.594 37.199 27.587 1.00 0.00 SYST H +ATOM 1344 HB3 MET X 86 10.412 35.506 27.223 1.00 0.00 SYST H +ATOM 1345 CG MET X 86 12.297 35.983 28.116 1.00 0.00 SYST C +ATOM 1346 HG2 MET X 86 13.241 36.483 27.901 1.00 0.00 SYST H +ATOM 1347 HG3 MET X 86 11.987 35.973 29.161 1.00 0.00 SYST H +ATOM 1348 SD MET X 86 12.778 34.198 27.846 1.00 0.00 SYST S +ATOM 1349 CE MET X 86 14.356 34.267 28.736 1.00 0.00 SYST C +ATOM 1350 HE1 MET X 86 14.962 35.063 28.303 1.00 0.00 SYST H +ATOM 1351 HE2 MET X 86 14.332 34.534 29.792 1.00 0.00 SYST H +ATOM 1352 HE3 MET X 86 14.880 33.332 28.536 1.00 0.00 SYST H +ATOM 1353 C MET X 86 10.362 36.584 24.736 1.00 0.00 SYST C +ATOM 1354 O MET X 86 9.878 37.645 24.374 1.00 0.00 SYST O +ATOM 1355 N PRO X 87 9.854 35.426 24.212 1.00 0.00 SYST N +ATOM 1356 CD PRO X 87 8.679 35.400 23.416 1.00 0.00 SYST C +ATOM 1357 HD2 PRO X 87 8.787 36.062 22.557 1.00 0.00 SYST H +ATOM 1358 HD3 PRO X 87 7.820 35.629 24.047 1.00 0.00 SYST H +ATOM 1359 CG PRO X 87 8.655 33.974 22.849 1.00 0.00 SYST C +ATOM 1360 HG2 PRO X 87 9.158 33.947 21.883 1.00 0.00 SYST H +ATOM 1361 HG3 PRO X 87 7.638 33.594 22.756 1.00 0.00 SYST H +ATOM 1362 CB PRO X 87 9.337 33.120 23.910 1.00 0.00 SYST C +ATOM 1363 HB2 PRO X 87 9.743 32.194 23.501 1.00 0.00 SYST H +ATOM 1364 HB3 PRO X 87 8.625 32.931 24.713 1.00 0.00 SYST H +ATOM 1365 CA PRO X 87 10.415 34.093 24.421 1.00 0.00 SYST C +ATOM 1366 HA PRO X 87 10.582 34.037 25.497 1.00 0.00 SYST H +ATOM 1367 C PRO X 87 11.723 33.734 23.806 1.00 0.00 SYST C +ATOM 1368 O PRO X 87 12.471 32.884 24.281 1.00 0.00 SYST O +ATOM 1369 N GLU X 88 12.082 34.419 22.734 1.00 0.00 SYST N +ATOM 1370 H GLU X 88 11.361 35.025 22.371 1.00 0.00 SYST H +ATOM 1371 CA GLU X 88 13.300 34.226 21.930 1.00 0.00 SYST C +ATOM 1372 HA GLU X 88 13.294 33.199 21.564 1.00 0.00 SYST H +ATOM 1373 CB GLU X 88 13.304 35.259 20.714 1.00 0.00 SYST C +ATOM 1374 HB2 GLU X 88 12.295 35.308 20.306 1.00 0.00 SYST H +ATOM 1375 HB3 GLU X 88 13.460 36.213 21.217 1.00 0.00 SYST H +ATOM 1376 CG GLU X 88 14.513 35.039 19.788 1.00 0.00 SYST C +ATOM 1377 HG2 GLU X 88 14.354 35.867 19.097 1.00 0.00 SYST H +ATOM 1378 HG3 GLU X 88 15.425 35.100 20.381 1.00 0.00 SYST H +ATOM 1379 CD GLU X 88 14.422 33.683 18.974 1.00 0.00 SYST C +ATOM 1380 OE1 GLU X 88 15.443 33.343 18.344 1.00 0.00 SYST O +ATOM 1381 OE2 GLU X 88 13.395 32.978 19.061 1.00 0.00 SYST O +ATOM 1382 C GLU X 88 14.509 34.290 22.786 1.00 0.00 SYST C +ATOM 1383 O GLU X 88 15.365 33.411 22.666 1.00 0.00 SYST O +ATOM 1384 N GLY X 89 14.571 35.300 23.643 1.00 0.00 SYST N +ATOM 1385 H GLY X 89 13.995 36.090 23.387 1.00 0.00 SYST H +ATOM 1386 CA GLY X 89 15.442 35.234 24.836 1.00 0.00 SYST C +ATOM 1387 HA2 GLY X 89 14.894 35.228 25.778 1.00 0.00 SYST H +ATOM 1388 HA3 GLY X 89 16.060 34.336 24.798 1.00 0.00 SYST H +ATOM 1389 C GLY X 89 16.436 36.303 24.942 1.00 0.00 SYST C +ATOM 1390 O GLY X 89 16.349 37.306 24.254 1.00 0.00 SYST O +ATOM 1391 N TYR X 90 17.400 36.197 25.818 1.00 0.00 SYST N +ATOM 1392 H TYR X 90 17.428 35.334 26.342 1.00 0.00 SYST H +ATOM 1393 CA TYR X 90 18.522 37.120 25.969 1.00 0.00 SYST C +ATOM 1394 HA TYR X 90 18.808 37.707 25.097 1.00 0.00 SYST H +ATOM 1395 CB TYR X 90 18.041 38.100 27.011 1.00 0.00 SYST C +ATOM 1396 HB2 TYR X 90 18.851 38.825 26.928 1.00 0.00 SYST H +ATOM 1397 HB3 TYR X 90 17.248 38.669 26.525 1.00 0.00 SYST H +ATOM 1398 CG TYR X 90 17.801 37.686 28.403 1.00 0.00 SYST C +ATOM 1399 CD1 TYR X 90 18.909 37.598 29.306 1.00 0.00 SYST C +ATOM 1400 HD1 TYR X 90 19.882 37.644 28.841 1.00 0.00 SYST H +ATOM 1401 CE1 TYR X 90 18.788 37.344 30.655 1.00 0.00 SYST C +ATOM 1402 HE1 TYR X 90 19.637 37.343 31.323 1.00 0.00 SYST H +ATOM 1403 CZ TYR X 90 17.498 37.214 31.256 1.00 0.00 SYST C +ATOM 1404 OH TYR X 90 17.394 37.094 32.632 1.00 0.00 SYST O +ATOM 1405 HH TYR X 90 18.209 37.496 32.941 1.00 0.00 SYST H +ATOM 1406 CE2 TYR X 90 16.377 37.455 30.431 1.00 0.00 SYST C +ATOM 1407 HE2 TYR X 90 15.406 37.560 30.891 1.00 0.00 SYST H +ATOM 1408 CD2 TYR X 90 16.546 37.761 29.041 1.00 0.00 SYST C +ATOM 1409 HD2 TYR X 90 15.670 37.948 28.437 1.00 0.00 SYST H +ATOM 1410 C TYR X 90 19.790 36.343 26.386 1.00 0.00 SYST C +ATOM 1411 O TYR X 90 19.763 35.166 26.862 1.00 0.00 SYST O +ATOM 1412 N VAL X 91 20.897 36.980 26.212 1.00 0.00 SYST N +ATOM 1413 H VAL X 91 20.789 37.950 25.950 1.00 0.00 SYST H +ATOM 1414 CA VAL X 91 22.258 36.600 26.567 1.00 0.00 SYST C +ATOM 1415 HA VAL X 91 22.236 35.541 26.823 1.00 0.00 SYST H +ATOM 1416 CB VAL X 91 23.222 36.789 25.315 1.00 0.00 SYST C +ATOM 1417 HB VAL X 91 23.348 37.867 25.215 1.00 0.00 SYST H +ATOM 1418 CG1 VAL X 91 24.659 36.214 25.489 1.00 0.00 SYST C +ATOM 1419 HG11 VAL X 91 24.666 35.125 25.542 1.00 0.00 SYST H +ATOM 1420 HG12 VAL X 91 25.214 36.548 24.613 1.00 0.00 SYST H +ATOM 1421 HG13 VAL X 91 25.098 36.427 26.464 1.00 0.00 SYST H +ATOM 1422 CG2 VAL X 91 22.586 36.076 24.113 1.00 0.00 SYST C +ATOM 1423 HG21 VAL X 91 21.703 36.617 23.771 1.00 0.00 SYST H +ATOM 1424 HG22 VAL X 91 23.222 36.139 23.230 1.00 0.00 SYST H +ATOM 1425 HG23 VAL X 91 22.196 35.073 24.285 1.00 0.00 SYST H +ATOM 1426 C VAL X 91 22.700 37.394 27.760 1.00 0.00 SYST C +ATOM 1427 O VAL X 91 22.264 38.479 27.963 1.00 0.00 SYST O +ATOM 1428 N GLN X 92 23.647 36.791 28.468 1.00 0.00 SYST N +ATOM 1429 H GLN X 92 24.017 35.921 28.111 1.00 0.00 SYST H +ATOM 1430 CA GLN X 92 24.299 37.385 29.632 1.00 0.00 SYST C +ATOM 1431 HA GLN X 92 24.077 38.449 29.548 1.00 0.00 SYST H +ATOM 1432 CB GLN X 92 23.591 36.847 30.883 1.00 0.00 SYST C +ATOM 1433 HB2 GLN X 92 22.568 37.177 30.703 1.00 0.00 SYST H +ATOM 1434 HB3 GLN X 92 23.552 35.761 30.970 1.00 0.00 SYST H +ATOM 1435 CG GLN X 92 24.052 37.500 32.208 1.00 0.00 SYST C +ATOM 1436 HG2 GLN X 92 25.024 37.117 32.518 1.00 0.00 SYST H +ATOM 1437 HG3 GLN X 92 24.261 38.538 31.949 1.00 0.00 SYST H +ATOM 1438 CD GLN X 92 23.083 37.587 33.312 1.00 0.00 SYST C +ATOM 1439 OE1 GLN X 92 22.459 38.594 33.412 1.00 0.00 SYST O +ATOM 1440 NE2 GLN X 92 22.715 36.568 34.130 1.00 0.00 SYST N +ATOM 1441 HE21 GLN X 92 22.092 36.730 34.909 1.00 0.00 SYST H +ATOM 1442 HE22 GLN X 92 22.964 35.626 33.862 1.00 0.00 SYST H +ATOM 1443 C GLN X 92 25.793 37.179 29.724 1.00 0.00 SYST C +ATOM 1444 O GLN X 92 26.288 36.071 29.743 1.00 0.00 SYST O +ATOM 1445 N GLU X 93 26.455 38.304 29.699 1.00 0.00 SYST N +ATOM 1446 H GLU X 93 26.080 39.237 29.608 1.00 0.00 SYST H +ATOM 1447 CA GLU X 93 27.896 38.400 29.821 1.00 0.00 SYST C +ATOM 1448 HA GLU X 93 28.332 37.401 29.833 1.00 0.00 SYST H +ATOM 1449 CB GLU X 93 28.550 39.087 28.598 1.00 0.00 SYST C +ATOM 1450 HB2 GLU X 93 28.028 40.023 28.399 1.00 0.00 SYST H +ATOM 1451 HB3 GLU X 93 29.615 39.290 28.714 1.00 0.00 SYST H +ATOM 1452 CG GLU X 93 28.357 38.193 27.369 1.00 0.00 SYST C +ATOM 1453 HG2 GLU X 93 29.264 37.589 27.380 1.00 0.00 SYST H +ATOM 1454 HG3 GLU X 93 27.451 37.614 27.543 1.00 0.00 SYST H +ATOM 1455 CD GLU X 93 28.207 38.991 26.020 1.00 0.00 SYST C +ATOM 1456 OE1 GLU X 93 27.121 39.150 25.410 1.00 0.00 SYST O +ATOM 1457 OE2 GLU X 93 29.257 39.515 25.673 1.00 0.00 SYST O +ATOM 1458 C GLU X 93 28.244 39.032 31.123 1.00 0.00 SYST C +ATOM 1459 O GLU X 93 27.640 40.045 31.512 1.00 0.00 SYST O +ATOM 1460 N ARG X 94 29.226 38.511 31.846 1.00 0.00 SYST N +ATOM 1461 H ARG X 94 29.765 37.752 31.454 1.00 0.00 SYST H +ATOM 1462 CA ARG X 94 29.365 38.490 33.285 1.00 0.00 SYST C +ATOM 1463 HA ARG X 94 29.113 39.473 33.683 1.00 0.00 SYST H +ATOM 1464 CB ARG X 94 28.420 37.392 33.820 1.00 0.00 SYST C +ATOM 1465 HB2 ARG X 94 28.280 36.591 33.095 1.00 0.00 SYST H +ATOM 1466 HB3 ARG X 94 28.907 36.952 34.690 1.00 0.00 SYST H +ATOM 1467 CG ARG X 94 27.140 38.051 34.333 1.00 0.00 SYST C +ATOM 1468 HG2 ARG X 94 26.822 38.879 33.699 1.00 0.00 SYST H +ATOM 1469 HG3 ARG X 94 26.279 37.389 34.428 1.00 0.00 SYST H +ATOM 1470 CD ARG X 94 27.230 38.571 35.782 1.00 0.00 SYST C +ATOM 1471 HD2 ARG X 94 27.737 37.809 36.376 1.00 0.00 SYST H +ATOM 1472 HD3 ARG X 94 27.746 39.524 35.663 1.00 0.00 SYST H +ATOM 1473 NE ARG X 94 25.895 38.826 36.334 1.00 0.00 SYST N +ATOM 1474 HE ARG X 94 25.507 39.753 36.234 1.00 0.00 SYST H +ATOM 1475 CZ ARG X 94 25.013 37.901 36.783 1.00 0.00 SYST C +ATOM 1476 NH1 ARG X 94 25.258 36.635 36.956 1.00 0.00 SYST N +ATOM 1477 HH11 ARG X 94 26.187 36.242 36.896 1.00 0.00 SYST H +ATOM 1478 HH12 ARG X 94 24.546 36.035 37.347 1.00 0.00 SYST H +ATOM 1479 NH2 ARG X 94 23.814 38.374 37.088 1.00 0.00 SYST N +ATOM 1480 HH21 ARG X 94 23.492 39.286 36.797 1.00 0.00 SYST H +ATOM 1481 HH22 ARG X 94 22.998 37.801 37.247 1.00 0.00 SYST H +ATOM 1482 C ARG X 94 30.800 38.194 33.778 1.00 0.00 SYST C +ATOM 1483 O ARG X 94 31.353 37.186 33.374 1.00 0.00 SYST O +ATOM 1484 N THR X 95 31.391 39.018 34.617 1.00 0.00 SYST N +ATOM 1485 H THR X 95 30.753 39.705 34.995 1.00 0.00 SYST H +ATOM 1486 CA THR X 95 32.683 38.729 35.271 1.00 0.00 SYST C +ATOM 1487 HA THR X 95 32.820 37.649 35.220 1.00 0.00 SYST H +ATOM 1488 CB THR X 95 33.842 39.347 34.498 1.00 0.00 SYST C +ATOM 1489 HB THR X 95 33.782 38.866 33.522 1.00 0.00 SYST H +ATOM 1490 CG2 THR X 95 33.847 40.792 34.418 1.00 0.00 SYST C +ATOM 1491 HG21 THR X 95 32.998 41.038 33.781 1.00 0.00 SYST H +ATOM 1492 HG22 THR X 95 33.667 41.156 35.430 1.00 0.00 SYST H +ATOM 1493 HG23 THR X 95 34.790 41.159 34.012 1.00 0.00 SYST H +ATOM 1494 OG1 THR X 95 35.007 39.005 35.206 1.00 0.00 SYST O +ATOM 1495 HG1 THR X 95 35.574 39.675 34.817 1.00 0.00 SYST H +ATOM 1496 C THR X 95 32.594 39.141 36.700 1.00 0.00 SYST C +ATOM 1497 O THR X 95 31.841 40.059 37.093 1.00 0.00 SYST O +ATOM 1498 N ILE X 96 33.289 38.396 37.569 1.00 0.00 SYST N +ATOM 1499 H ILE X 96 33.910 37.719 37.148 1.00 0.00 SYST H +ATOM 1500 CA ILE X 96 33.154 38.481 39.017 1.00 0.00 SYST C +ATOM 1501 HA ILE X 96 32.724 39.468 39.186 1.00 0.00 SYST H +ATOM 1502 CB ILE X 96 32.277 37.437 39.618 1.00 0.00 SYST C +ATOM 1503 HB ILE X 96 32.740 36.504 39.297 1.00 0.00 SYST H +ATOM 1504 CG2 ILE X 96 32.329 37.643 41.178 1.00 0.00 SYST C +ATOM 1505 HG21 ILE X 96 32.167 38.694 41.415 1.00 0.00 SYST H +ATOM 1506 HG22 ILE X 96 31.534 37.078 41.667 1.00 0.00 SYST H +ATOM 1507 HG23 ILE X 96 33.193 37.302 41.748 1.00 0.00 SYST H +ATOM 1508 CG1 ILE X 96 30.821 37.504 39.096 1.00 0.00 SYST C +ATOM 1509 HG12 ILE X 96 30.402 38.487 39.311 1.00 0.00 SYST H +ATOM 1510 HG13 ILE X 96 30.854 37.467 38.007 1.00 0.00 SYST H +ATOM 1511 CD1 ILE X 96 29.877 36.363 39.484 1.00 0.00 SYST C +ATOM 1512 HD11 ILE X 96 28.868 36.521 39.103 1.00 0.00 SYST H +ATOM 1513 HD12 ILE X 96 30.161 35.436 38.987 1.00 0.00 SYST H +ATOM 1514 HD13 ILE X 96 29.912 36.268 40.570 1.00 0.00 SYST H +ATOM 1515 C ILE X 96 34.578 38.426 39.638 1.00 0.00 SYST C +ATOM 1516 O ILE X 96 35.295 37.399 39.431 1.00 0.00 SYST O +ATOM 1517 N PHE X 97 35.059 39.463 40.313 1.00 0.00 SYST N +ATOM 1518 H PHE X 97 34.489 40.292 40.399 1.00 0.00 SYST H +ATOM 1519 CA PHE X 97 36.380 39.465 40.998 1.00 0.00 SYST C +ATOM 1520 HA PHE X 97 37.019 38.704 40.550 1.00 0.00 SYST H +ATOM 1521 CB PHE X 97 37.203 40.695 40.656 1.00 0.00 SYST C +ATOM 1522 HB2 PHE X 97 36.669 41.589 40.978 1.00 0.00 SYST H +ATOM 1523 HB3 PHE X 97 38.133 40.594 41.215 1.00 0.00 SYST H +ATOM 1524 CG PHE X 97 37.574 40.736 39.216 1.00 0.00 SYST C +ATOM 1525 CD1 PHE X 97 36.711 41.311 38.322 1.00 0.00 SYST C +ATOM 1526 HD1 PHE X 97 35.703 41.577 38.605 1.00 0.00 SYST H +ATOM 1527 CE1 PHE X 97 37.096 41.385 36.979 1.00 0.00 SYST C +ATOM 1528 HE1 PHE X 97 36.435 41.837 36.255 1.00 0.00 SYST H +ATOM 1529 CZ PHE X 97 38.350 40.935 36.565 1.00 0.00 SYST C +ATOM 1530 HZ PHE X 97 38.530 40.910 35.500 1.00 0.00 SYST H +ATOM 1531 CE2 PHE X 97 39.298 40.535 37.509 1.00 0.00 SYST C +ATOM 1532 HE2 PHE X 97 40.256 40.198 37.142 1.00 0.00 SYST H +ATOM 1533 CD2 PHE X 97 38.886 40.313 38.841 1.00 0.00 SYST C +ATOM 1534 HD2 PHE X 97 39.549 39.817 39.534 1.00 0.00 SYST H +ATOM 1535 C PHE X 97 36.237 39.286 42.494 1.00 0.00 SYST C +ATOM 1536 O PHE X 97 35.714 40.137 43.200 1.00 0.00 SYST O +ATOM 1537 N PHE X 98 36.680 38.226 43.090 1.00 0.00 SYST N +ATOM 1538 H PHE X 98 37.084 37.473 42.552 1.00 0.00 SYST H +ATOM 1539 CA PHE X 98 36.791 38.074 44.564 1.00 0.00 SYST C +ATOM 1540 HA PHE X 98 35.832 38.360 44.996 1.00 0.00 SYST H +ATOM 1541 CB PHE X 98 36.906 36.523 44.803 1.00 0.00 SYST C +ATOM 1542 HB2 PHE X 98 37.850 36.167 44.391 1.00 0.00 SYST H +ATOM 1543 HB3 PHE X 98 37.001 36.367 45.878 1.00 0.00 SYST H +ATOM 1544 CG PHE X 98 35.709 35.690 44.371 1.00 0.00 SYST C +ATOM 1545 CD1 PHE X 98 35.480 35.438 43.032 1.00 0.00 SYST C +ATOM 1546 HD1 PHE X 98 36.189 35.710 42.264 1.00 0.00 SYST H +ATOM 1547 CE1 PHE X 98 34.430 34.557 42.579 1.00 0.00 SYST C +ATOM 1548 HE1 PHE X 98 34.288 34.475 41.512 1.00 0.00 SYST H +ATOM 1549 CZ PHE X 98 33.558 34.057 43.503 1.00 0.00 SYST C +ATOM 1550 HZ PHE X 98 32.769 33.407 43.154 1.00 0.00 SYST H +ATOM 1551 CE2 PHE X 98 33.730 34.393 44.881 1.00 0.00 SYST C +ATOM 1552 HE2 PHE X 98 32.972 34.132 45.605 1.00 0.00 SYST H +ATOM 1553 CD2 PHE X 98 34.709 35.220 45.294 1.00 0.00 SYST C +ATOM 1554 HD2 PHE X 98 34.720 35.562 46.318 1.00 0.00 SYST H +ATOM 1555 C PHE X 98 38.044 38.838 45.066 1.00 0.00 SYST C +ATOM 1556 O PHE X 98 39.206 38.610 44.664 1.00 0.00 SYST O +ATOM 1557 N LYS X 99 37.822 39.883 45.916 1.00 0.00 SYST N +ATOM 1558 H LYS X 99 36.885 40.150 46.180 1.00 0.00 SYST H +ATOM 1559 CA LYS X 99 38.828 40.601 46.674 1.00 0.00 SYST C +ATOM 1560 HA LYS X 99 39.274 41.265 45.934 1.00 0.00 SYST H +ATOM 1561 CB LYS X 99 38.194 41.309 47.932 1.00 0.00 SYST C +ATOM 1562 HB2 LYS X 99 37.320 41.809 47.514 1.00 0.00 SYST H +ATOM 1563 HB3 LYS X 99 37.913 40.593 48.704 1.00 0.00 SYST H +ATOM 1564 CG LYS X 99 39.126 42.353 48.552 1.00 0.00 SYST C +ATOM 1565 HG2 LYS X 99 38.767 42.660 49.535 1.00 0.00 SYST H +ATOM 1566 HG3 LYS X 99 40.132 41.938 48.604 1.00 0.00 SYST H +ATOM 1567 CD LYS X 99 39.159 43.646 47.714 1.00 0.00 SYST C +ATOM 1568 HD2 LYS X 99 39.321 43.390 46.667 1.00 0.00 SYST H +ATOM 1569 HD3 LYS X 99 38.120 43.967 47.791 1.00 0.00 SYST H +ATOM 1570 CE LYS X 99 40.171 44.697 48.120 1.00 0.00 SYST C +ATOM 1571 HE2 LYS X 99 40.084 44.813 49.201 1.00 0.00 SYST H +ATOM 1572 HE3 LYS X 99 41.185 44.357 47.912 1.00 0.00 SYST H +ATOM 1573 NZ LYS X 99 39.875 46.052 47.570 1.00 0.00 SYST N +ATOM 1574 HZ1 LYS X 99 39.013 46.485 47.871 1.00 0.00 SYST H +ATOM 1575 HZ2 LYS X 99 40.637 46.664 47.823 1.00 0.00 SYST H +ATOM 1576 HZ3 LYS X 99 39.796 45.995 46.564 1.00 0.00 SYST H +ATOM 1577 C LYS X 99 39.898 39.561 47.076 1.00 0.00 SYST C +ATOM 1578 O LYS X 99 39.612 38.615 47.801 1.00 0.00 SYST O +ATOM 1579 N ASP X 100 41.156 39.801 46.666 1.00 0.00 SYST N +ATOM 1580 H ASP X 100 41.293 40.586 46.045 1.00 0.00 SYST H +ATOM 1581 CA ASP X 100 42.403 39.137 47.168 1.00 0.00 SYST C +ATOM 1582 HA ASP X 100 43.345 39.394 46.683 1.00 0.00 SYST H +ATOM 1583 CB ASP X 100 42.721 39.659 48.623 1.00 0.00 SYST C +ATOM 1584 HB2 ASP X 100 42.064 39.248 49.389 1.00 0.00 SYST H +ATOM 1585 HB3 ASP X 100 43.688 39.332 49.008 1.00 0.00 SYST H +ATOM 1586 CG ASP X 100 42.596 41.182 48.688 1.00 0.00 SYST C +ATOM 1587 OD1 ASP X 100 42.494 41.600 49.859 1.00 0.00 SYST O +ATOM 1588 OD2 ASP X 100 42.753 41.952 47.718 1.00 0.00 SYST O +ATOM 1589 C ASP X 100 42.408 37.646 46.995 1.00 0.00 SYST C +ATOM 1590 O ASP X 100 42.941 36.917 47.809 1.00 0.00 SYST O +ATOM 1591 N ASP X 101 41.764 37.252 45.921 1.00 0.00 SYST N +ATOM 1592 H ASP X 101 41.369 38.006 45.379 1.00 0.00 SYST H +ATOM 1593 CA ASP X 101 41.747 35.835 45.368 1.00 0.00 SYST C +ATOM 1594 HA ASP X 101 42.666 35.312 45.630 1.00 0.00 SYST H +ATOM 1595 CB ASP X 101 40.633 35.017 46.133 1.00 0.00 SYST C +ATOM 1596 HB2 ASP X 101 40.616 35.474 47.123 1.00 0.00 SYST H +ATOM 1597 HB3 ASP X 101 39.640 35.228 45.735 1.00 0.00 SYST H +ATOM 1598 CG ASP X 101 40.901 33.516 46.251 1.00 0.00 SYST C +ATOM 1599 OD1 ASP X 101 40.483 32.908 47.248 1.00 0.00 SYST O +ATOM 1600 OD2 ASP X 101 41.365 32.857 45.254 1.00 0.00 SYST O +ATOM 1601 C ASP X 101 41.479 35.961 43.866 1.00 0.00 SYST C +ATOM 1602 O ASP X 101 41.807 37.028 43.291 1.00 0.00 SYST O +ATOM 1603 N GLY X 102 41.122 34.849 43.208 1.00 0.00 SYST N +ATOM 1604 H GLY X 102 40.840 33.997 43.673 1.00 0.00 SYST H +ATOM 1605 CA GLY X 102 40.796 34.833 41.770 1.00 0.00 SYST C +ATOM 1606 HA2 GLY X 102 41.713 35.159 41.278 1.00 0.00 SYST H +ATOM 1607 HA3 GLY X 102 40.805 33.764 41.555 1.00 0.00 SYST H +ATOM 1608 C GLY X 102 39.643 35.652 41.156 1.00 0.00 SYST C +ATOM 1609 O GLY X 102 38.996 36.539 41.783 1.00 0.00 SYST O +ATOM 1610 N ASN X 103 39.264 35.243 39.951 1.00 0.00 SYST N +ATOM 1611 H ASN X 103 39.756 34.488 39.495 1.00 0.00 SYST H +ATOM 1612 CA ASN X 103 38.170 35.827 39.175 1.00 0.00 SYST C +ATOM 1613 HA ASN X 103 37.492 36.403 39.805 1.00 0.00 SYST H +ATOM 1614 CB ASN X 103 38.822 36.826 38.225 1.00 0.00 SYST C +ATOM 1615 HB2 ASN X 103 39.099 37.785 38.662 1.00 0.00 SYST H +ATOM 1616 HB3 ASN X 103 39.712 36.428 37.737 1.00 0.00 SYST H +ATOM 1617 CG ASN X 103 37.991 37.158 36.942 1.00 0.00 SYST C +ATOM 1618 OD1 ASN X 103 38.356 36.955 35.801 1.00 0.00 SYST O +ATOM 1619 ND2 ASN X 103 36.757 37.544 37.084 1.00 0.00 SYST N +ATOM 1620 HD21 ASN X 103 36.275 37.745 36.219 1.00 0.00 SYST H +ATOM 1621 HD22 ASN X 103 36.394 37.714 38.012 1.00 0.00 SYST H +ATOM 1622 C ASN X 103 37.410 34.725 38.399 1.00 0.00 SYST C +ATOM 1623 O ASN X 103 38.015 33.835 37.901 1.00 0.00 SYST O +ATOM 1624 N TYR X 104 36.050 34.741 38.322 1.00 0.00 SYST N +ATOM 1625 H TYR X 104 35.550 35.451 38.837 1.00 0.00 SYST H +ATOM 1626 CA TYR X 104 35.170 33.993 37.415 1.00 0.00 SYST C +ATOM 1627 HA TYR X 104 35.781 33.174 37.034 1.00 0.00 SYST H +ATOM 1628 CB TYR X 104 33.865 33.487 38.152 1.00 0.00 SYST C +ATOM 1629 HB2 TYR X 104 33.405 34.371 38.594 1.00 0.00 SYST H +ATOM 1630 HB3 TYR X 104 33.137 33.093 37.443 1.00 0.00 SYST H +ATOM 1631 CG TYR X 104 33.847 32.435 39.297 1.00 0.00 SYST C +ATOM 1632 CD1 TYR X 104 32.661 32.338 40.101 1.00 0.00 SYST C +ATOM 1633 HD1 TYR X 104 31.842 33.004 39.875 1.00 0.00 SYST H +ATOM 1634 CE1 TYR X 104 32.595 31.427 41.167 1.00 0.00 SYST C +ATOM 1635 HE1 TYR X 104 31.688 31.344 41.748 1.00 0.00 SYST H +ATOM 1636 CZ TYR X 104 33.678 30.540 41.405 1.00 0.00 SYST C +ATOM 1637 OH TYR X 104 33.596 29.578 42.340 1.00 0.00 SYST O +ATOM 1638 HH TYR X 104 32.777 29.623 42.840 1.00 0.00 SYST H +ATOM 1639 CE2 TYR X 104 34.835 30.610 40.619 1.00 0.00 SYST C +ATOM 1640 HE2 TYR X 104 35.661 29.936 40.791 1.00 0.00 SYST H +ATOM 1641 CD2 TYR X 104 34.976 31.614 39.690 1.00 0.00 SYST C +ATOM 1642 HD2 TYR X 104 35.943 31.677 39.212 1.00 0.00 SYST H +ATOM 1643 C TYR X 104 34.749 34.784 36.165 1.00 0.00 SYST C +ATOM 1644 O TYR X 104 33.819 35.561 36.270 1.00 0.00 SYST O +ATOM 1645 N LYS X 105 35.245 34.434 34.974 1.00 0.00 SYST N +ATOM 1646 H LYS X 105 36.000 33.765 34.931 1.00 0.00 SYST H +ATOM 1647 CA LYS X 105 34.616 34.902 33.708 1.00 0.00 SYST C +ATOM 1648 HA LYS X 105 34.092 35.835 33.917 1.00 0.00 SYST H +ATOM 1649 CB LYS X 105 35.594 34.935 32.520 1.00 0.00 SYST C +ATOM 1650 HB2 LYS X 105 35.820 33.902 32.254 1.00 0.00 SYST H +ATOM 1651 HB3 LYS X 105 35.156 35.547 31.731 1.00 0.00 SYST H +ATOM 1652 CG LYS X 105 36.912 35.601 32.779 1.00 0.00 SYST C +ATOM 1653 HG2 LYS X 105 36.634 36.601 33.113 1.00 0.00 SYST H +ATOM 1654 HG3 LYS X 105 37.455 35.044 33.542 1.00 0.00 SYST H +ATOM 1655 CD LYS X 105 37.793 35.622 31.498 1.00 0.00 SYST C +ATOM 1656 HD2 LYS X 105 38.119 34.665 31.091 1.00 0.00 SYST H +ATOM 1657 HD3 LYS X 105 37.214 36.028 30.669 1.00 0.00 SYST H +ATOM 1658 CE LYS X 105 38.893 36.597 31.719 1.00 0.00 SYST C +ATOM 1659 HE2 LYS X 105 38.475 37.521 32.119 1.00 0.00 SYST H +ATOM 1660 HE3 LYS X 105 39.558 36.248 32.509 1.00 0.00 SYST H +ATOM 1661 NZ LYS X 105 39.491 36.960 30.399 1.00 0.00 SYST N +ATOM 1662 HZ1 LYS X 105 40.319 37.538 30.359 1.00 0.00 SYST H +ATOM 1663 HZ2 LYS X 105 39.754 36.184 29.810 1.00 0.00 SYST H +ATOM 1664 HZ3 LYS X 105 38.774 37.369 29.817 1.00 0.00 SYST H +ATOM 1665 C LYS X 105 33.650 33.816 33.373 1.00 0.00 SYST C +ATOM 1666 O LYS X 105 33.988 32.613 33.509 1.00 0.00 SYST O +ATOM 1667 N THR X 106 32.457 34.184 32.789 1.00 0.00 SYST N +ATOM 1668 H THR X 106 32.306 35.168 32.621 1.00 0.00 SYST H +ATOM 1669 CA THR X 106 31.385 33.264 32.484 1.00 0.00 SYST C +ATOM 1670 HA THR X 106 31.858 32.379 32.058 1.00 0.00 SYST H +ATOM 1671 CB THR X 106 30.738 32.734 33.832 1.00 0.00 SYST C +ATOM 1672 HB THR X 106 31.535 32.084 34.193 1.00 0.00 SYST H +ATOM 1673 CG2 THR X 106 30.445 33.851 34.815 1.00 0.00 SYST C +ATOM 1674 HG21 THR X 106 31.280 34.526 35.002 1.00 0.00 SYST H +ATOM 1675 HG22 THR X 106 29.683 34.479 34.354 1.00 0.00 SYST H +ATOM 1676 HG23 THR X 106 30.133 33.447 35.778 1.00 0.00 SYST H +ATOM 1677 OG1 THR X 106 29.469 32.099 33.623 1.00 0.00 SYST O +ATOM 1678 HG1 THR X 106 29.744 31.247 33.276 1.00 0.00 SYST H +ATOM 1679 C THR X 106 30.418 33.795 31.445 1.00 0.00 SYST C +ATOM 1680 O THR X 106 30.371 35.005 31.235 1.00 0.00 SYST O +ATOM 1681 N ARG X 107 29.675 33.027 30.649 1.00 0.00 SYST N +ATOM 1682 H ARG X 107 29.561 32.049 30.873 1.00 0.00 SYST H +ATOM 1683 CA ARG X 107 28.667 33.497 29.668 1.00 0.00 SYST C +ATOM 1684 HA ARG X 107 28.354 34.534 29.793 1.00 0.00 SYST H +ATOM 1685 CB ARG X 107 29.343 33.424 28.334 1.00 0.00 SYST C +ATOM 1686 HB2 ARG X 107 30.326 33.885 28.240 1.00 0.00 SYST H +ATOM 1687 HB3 ARG X 107 29.591 32.420 27.990 1.00 0.00 SYST H +ATOM 1688 CG ARG X 107 28.494 34.055 27.223 1.00 0.00 SYST C +ATOM 1689 HG2 ARG X 107 27.552 33.519 27.106 1.00 0.00 SYST H +ATOM 1690 HG3 ARG X 107 28.284 35.102 27.444 1.00 0.00 SYST H +ATOM 1691 CD ARG X 107 29.210 34.070 25.813 1.00 0.00 SYST C +ATOM 1692 HD2 ARG X 107 30.154 34.614 25.840 1.00 0.00 SYST H +ATOM 1693 HD3 ARG X 107 29.509 33.042 25.610 1.00 0.00 SYST H +ATOM 1694 NE ARG X 107 28.338 34.753 24.837 1.00 0.00 SYST N +ATOM 1695 HE ARG X 107 28.354 35.759 24.745 1.00 0.00 SYST H +ATOM 1696 CZ ARG X 107 27.656 34.147 23.851 1.00 0.00 SYST C +ATOM 1697 NH1 ARG X 107 27.469 32.832 23.863 1.00 0.00 SYST N +ATOM 1698 HH11 ARG X 107 27.754 32.305 24.676 1.00 0.00 SYST H +ATOM 1699 HH12 ARG X 107 26.870 32.456 23.142 1.00 0.00 SYST H +ATOM 1700 NH2 ARG X 107 27.214 34.860 22.875 1.00 0.00 SYST N +ATOM 1701 HH21 ARG X 107 27.343 35.856 22.982 1.00 0.00 SYST H +ATOM 1702 HH22 ARG X 107 26.748 34.423 22.092 1.00 0.00 SYST H +ATOM 1703 C ARG X 107 27.460 32.588 29.683 1.00 0.00 SYST C +ATOM 1704 O ARG X 107 27.577 31.362 29.879 1.00 0.00 SYST O +ATOM 1705 N ALA X 108 26.256 33.200 29.521 1.00 0.00 SYST N +ATOM 1706 H ALA X 108 26.229 34.173 29.251 1.00 0.00 SYST H +ATOM 1707 CA ALA X 108 24.995 32.543 29.587 1.00 0.00 SYST C +ATOM 1708 HA ALA X 108 25.190 31.534 29.224 1.00 0.00 SYST H +ATOM 1709 CB ALA X 108 24.490 32.633 31.023 1.00 0.00 SYST C +ATOM 1710 HB1 ALA X 108 23.493 32.206 31.133 1.00 0.00 SYST H +ATOM 1711 HB2 ALA X 108 25.234 32.172 31.672 1.00 0.00 SYST H +ATOM 1712 HB3 ALA X 108 24.410 33.681 31.312 1.00 0.00 SYST H +ATOM 1713 C ALA X 108 23.927 33.039 28.579 1.00 0.00 SYST C +ATOM 1714 O ALA X 108 24.021 34.099 27.987 1.00 0.00 SYST O +ATOM 1715 N GLU X 109 22.982 32.177 28.422 1.00 0.00 SYST N +ATOM 1716 H GLU X 109 22.926 31.367 29.023 1.00 0.00 SYST H +ATOM 1717 CA GLU X 109 21.970 32.238 27.339 1.00 0.00 SYST C +ATOM 1718 HA GLU X 109 21.801 33.271 27.032 1.00 0.00 SYST H +ATOM 1719 CB GLU X 109 22.536 31.454 26.156 1.00 0.00 SYST C +ATOM 1720 HB2 GLU X 109 23.592 31.684 26.011 1.00 0.00 SYST H +ATOM 1721 HB3 GLU X 109 22.451 30.389 26.372 1.00 0.00 SYST H +ATOM 1722 CG GLU X 109 21.748 31.845 24.941 1.00 0.00 SYST C +ATOM 1723 HG2 GLU X 109 20.680 31.871 25.160 1.00 0.00 SYST H +ATOM 1724 HG3 GLU X 109 22.113 32.814 24.600 1.00 0.00 SYST H +ATOM 1725 CD GLU X 109 21.915 30.805 23.778 1.00 0.00 SYST C +ATOM 1726 OE1 GLU X 109 21.576 29.609 23.970 1.00 0.00 SYST O +ATOM 1727 OE2 GLU X 109 22.420 31.219 22.658 1.00 0.00 SYST O +ATOM 1728 C GLU X 109 20.648 31.632 27.788 1.00 0.00 SYST C +ATOM 1729 O GLU X 109 20.634 30.488 28.234 1.00 0.00 SYST O +ATOM 1730 N VAL X 110 19.516 32.369 27.513 1.00 0.00 SYST N +ATOM 1731 H VAL X 110 19.706 33.284 27.131 1.00 0.00 SYST H +ATOM 1732 CA VAL X 110 18.286 32.196 28.318 1.00 0.00 SYST C +ATOM 1733 HA VAL X 110 18.241 31.141 28.586 1.00 0.00 SYST H +ATOM 1734 CB VAL X 110 18.328 33.121 29.575 1.00 0.00 SYST C +ATOM 1735 HB VAL X 110 18.135 34.154 29.286 1.00 0.00 SYST H +ATOM 1736 CG1 VAL X 110 17.223 32.650 30.612 1.00 0.00 SYST C +ATOM 1737 HG11 VAL X 110 16.339 32.516 29.989 1.00 0.00 SYST H +ATOM 1738 HG12 VAL X 110 17.563 31.673 30.955 1.00 0.00 SYST H +ATOM 1739 HG13 VAL X 110 17.008 33.340 31.428 1.00 0.00 SYST H +ATOM 1740 CG2 VAL X 110 19.678 33.051 30.326 1.00 0.00 SYST C +ATOM 1741 HG21 VAL X 110 19.562 33.648 31.229 1.00 0.00 SYST H +ATOM 1742 HG22 VAL X 110 19.824 32.020 30.650 1.00 0.00 SYST H +ATOM 1743 HG23 VAL X 110 20.535 33.437 29.775 1.00 0.00 SYST H +ATOM 1744 C VAL X 110 17.102 32.399 27.365 1.00 0.00 SYST C +ATOM 1745 O VAL X 110 16.909 33.504 26.869 1.00 0.00 SYST O +ATOM 1746 N LYS X 111 16.329 31.367 27.152 1.00 0.00 SYST N +ATOM 1747 H LYS X 111 16.415 30.517 27.691 1.00 0.00 SYST H +ATOM 1748 CA LYS X 111 15.218 31.344 26.169 1.00 0.00 SYST C +ATOM 1749 HA LYS X 111 14.768 32.326 26.024 1.00 0.00 SYST H +ATOM 1750 CB LYS X 111 15.697 30.931 24.745 1.00 0.00 SYST C +ATOM 1751 HB2 LYS X 111 14.861 30.910 24.046 1.00 0.00 SYST H +ATOM 1752 HB3 LYS X 111 16.407 31.684 24.403 1.00 0.00 SYST H +ATOM 1753 CG LYS X 111 16.420 29.529 24.786 1.00 0.00 SYST C +ATOM 1754 HG2 LYS X 111 17.078 29.439 25.651 1.00 0.00 SYST H +ATOM 1755 HG3 LYS X 111 15.693 28.732 24.938 1.00 0.00 SYST H +ATOM 1756 CD LYS X 111 17.327 29.293 23.547 1.00 0.00 SYST C +ATOM 1757 HD2 LYS X 111 17.957 30.163 23.361 1.00 0.00 SYST H +ATOM 1758 HD3 LYS X 111 17.930 28.392 23.653 1.00 0.00 SYST H +ATOM 1759 CE LYS X 111 16.347 29.145 22.388 1.00 0.00 SYST C +ATOM 1760 HE2 LYS X 111 15.762 28.285 22.715 1.00 0.00 SYST H +ATOM 1761 HE3 LYS X 111 15.716 30.031 22.331 1.00 0.00 SYST H +ATOM 1762 NZ LYS X 111 17.049 28.781 21.156 1.00 0.00 SYST N +ATOM 1763 HZ1 LYS X 111 16.277 28.424 20.611 1.00 0.00 SYST H +ATOM 1764 HZ2 LYS X 111 17.486 29.597 20.752 1.00 0.00 SYST H +ATOM 1765 HZ3 LYS X 111 17.696 28.020 21.304 1.00 0.00 SYST H +ATOM 1766 C LYS X 111 14.095 30.430 26.718 1.00 0.00 SYST C +ATOM 1767 O LYS X 111 14.333 29.511 27.443 1.00 0.00 SYST O +ATOM 1768 N PHE X 112 12.847 30.845 26.414 1.00 0.00 SYST N +ATOM 1769 H PHE X 112 12.756 31.624 25.777 1.00 0.00 SYST H +ATOM 1770 CA PHE X 112 11.727 29.956 26.633 1.00 0.00 SYST C +ATOM 1771 HA PHE X 112 11.745 29.577 27.655 1.00 0.00 SYST H +ATOM 1772 CB PHE X 112 10.484 30.814 26.467 1.00 0.00 SYST C +ATOM 1773 HB2 PHE X 112 10.541 31.584 27.236 1.00 0.00 SYST H +ATOM 1774 HB3 PHE X 112 10.587 31.375 25.539 1.00 0.00 SYST H +ATOM 1775 CG PHE X 112 9.232 29.958 26.579 1.00 0.00 SYST C +ATOM 1776 CD1 PHE X 112 8.941 29.423 27.856 1.00 0.00 SYST C +ATOM 1777 HD1 PHE X 112 9.654 29.693 28.622 1.00 0.00 SYST H +ATOM 1778 CE1 PHE X 112 7.824 28.636 28.061 1.00 0.00 SYST C +ATOM 1779 HE1 PHE X 112 7.547 28.259 29.035 1.00 0.00 SYST H +ATOM 1780 CZ PHE X 112 6.933 28.350 26.985 1.00 0.00 SYST C +ATOM 1781 HZ PHE X 112 6.072 27.714 27.129 1.00 0.00 SYST H +ATOM 1782 CE2 PHE X 112 7.333 28.742 25.710 1.00 0.00 SYST C +ATOM 1783 HE2 PHE X 112 6.791 28.429 24.830 1.00 0.00 SYST H +ATOM 1784 CD2 PHE X 112 8.382 29.672 25.501 1.00 0.00 SYST C +ATOM 1785 HD2 PHE X 112 8.550 29.985 24.481 1.00 0.00 SYST H +ATOM 1786 C PHE X 112 11.785 28.767 25.608 1.00 0.00 SYST C +ATOM 1787 O PHE X 112 12.127 29.002 24.429 1.00 0.00 SYST O +ATOM 1788 N GLU X 113 11.615 27.490 26.002 1.00 0.00 SYST N +ATOM 1789 H GLU X 113 11.466 27.430 26.999 1.00 0.00 SYST H +ATOM 1790 CA GLU X 113 11.552 26.276 25.153 1.00 0.00 SYST C +ATOM 1791 HA GLU X 113 11.231 26.516 24.139 1.00 0.00 SYST H +ATOM 1792 CB GLU X 113 12.879 25.513 24.979 1.00 0.00 SYST C +ATOM 1793 HB2 GLU X 113 13.062 24.899 25.861 1.00 0.00 SYST H +ATOM 1794 HB3 GLU X 113 12.764 24.968 24.042 1.00 0.00 SYST H +ATOM 1795 CG GLU X 113 14.196 26.373 24.770 1.00 0.00 SYST C +ATOM 1796 HG2 GLU X 113 14.143 27.157 24.014 1.00 0.00 SYST H +ATOM 1797 HG3 GLU X 113 14.354 26.896 25.713 1.00 0.00 SYST H +ATOM 1798 CD GLU X 113 15.430 25.520 24.334 1.00 0.00 SYST C +ATOM 1799 OE1 GLU X 113 15.367 24.259 24.496 1.00 0.00 SYST O +ATOM 1800 OE2 GLU X 113 16.506 26.094 23.952 1.00 0.00 SYST O +ATOM 1801 C GLU X 113 10.615 25.181 25.696 1.00 0.00 SYST C +ATOM 1802 O GLU X 113 10.768 24.780 26.837 1.00 0.00 SYST O +ATOM 1803 N GLY X 114 9.641 24.849 24.940 1.00 0.00 SYST N +ATOM 1804 H GLY X 114 9.586 25.328 24.053 1.00 0.00 SYST H +ATOM 1805 CA GLY X 114 8.682 23.645 25.039 1.00 0.00 SYST C +ATOM 1806 HA2 GLY X 114 8.307 23.448 24.035 1.00 0.00 SYST H +ATOM 1807 HA3 GLY X 114 9.259 22.768 25.334 1.00 0.00 SYST H +ATOM 1808 C GLY X 114 7.542 23.943 25.974 1.00 0.00 SYST C +ATOM 1809 O GLY X 114 6.387 23.914 25.517 1.00 0.00 SYST O +ATOM 1810 N ASP X 115 7.881 24.337 27.204 1.00 0.00 SYST N +ATOM 1811 H ASP X 115 8.885 24.328 27.311 1.00 0.00 SYST H +ATOM 1812 CA ASP X 115 7.025 24.655 28.382 1.00 0.00 SYST C +ATOM 1813 HA ASP X 115 6.245 25.365 28.108 1.00 0.00 SYST H +ATOM 1814 CB ASP X 115 6.234 23.392 28.753 1.00 0.00 SYST C +ATOM 1815 HB2 ASP X 115 5.678 23.509 29.683 1.00 0.00 SYST H +ATOM 1816 HB3 ASP X 115 5.442 23.219 28.024 1.00 0.00 SYST H +ATOM 1817 CG ASP X 115 7.161 22.205 28.847 1.00 0.00 SYST C +ATOM 1818 OD1 ASP X 115 8.270 22.269 29.466 1.00 0.00 SYST O +ATOM 1819 OD2 ASP X 115 6.707 21.140 28.417 1.00 0.00 SYST O +ATOM 1820 C ASP X 115 7.806 25.248 29.627 1.00 0.00 SYST C +ATOM 1821 O ASP X 115 7.255 25.498 30.719 1.00 0.00 SYST O +ATOM 1822 N THR X 116 9.067 25.614 29.419 1.00 0.00 SYST N +ATOM 1823 H THR X 116 9.471 25.689 28.496 1.00 0.00 SYST H +ATOM 1824 CA THR X 116 10.000 25.879 30.443 1.00 0.00 SYST C +ATOM 1825 HA THR X 116 9.535 26.170 31.385 1.00 0.00 SYST H +ATOM 1826 CB THR X 116 10.853 24.532 30.682 1.00 0.00 SYST C +ATOM 1827 HB THR X 116 11.256 24.293 29.698 1.00 0.00 SYST H +ATOM 1828 CG2 THR X 116 11.905 24.608 31.737 1.00 0.00 SYST C +ATOM 1829 HG21 THR X 116 12.716 25.293 31.490 1.00 0.00 SYST H +ATOM 1830 HG22 THR X 116 11.382 24.806 32.673 1.00 0.00 SYST H +ATOM 1831 HG23 THR X 116 12.317 23.610 31.889 1.00 0.00 SYST H +ATOM 1832 OG1 THR X 116 10.043 23.444 31.051 1.00 0.00 SYST O +ATOM 1833 HG1 THR X 116 9.470 23.221 30.315 1.00 0.00 SYST H +ATOM 1834 C THR X 116 10.938 26.998 30.062 1.00 0.00 SYST C +ATOM 1835 O THR X 116 11.359 27.134 28.937 1.00 0.00 SYST O +ATOM 1836 N LEU X 117 11.315 27.805 31.052 1.00 0.00 SYST N +ATOM 1837 H LEU X 117 10.795 27.717 31.913 1.00 0.00 SYST H +ATOM 1838 CA LEU X 117 12.459 28.726 31.013 1.00 0.00 SYST C +ATOM 1839 HA LEU X 117 12.377 29.173 30.022 1.00 0.00 SYST H +ATOM 1840 CB LEU X 117 12.112 29.828 31.984 1.00 0.00 SYST C +ATOM 1841 HB2 LEU X 117 11.044 29.911 32.183 1.00 0.00 SYST H +ATOM 1842 HB3 LEU X 117 12.562 29.647 32.960 1.00 0.00 SYST H +ATOM 1843 CG LEU X 117 12.454 31.312 31.540 1.00 0.00 SYST C +ATOM 1844 HG LEU X 117 12.146 32.018 32.312 1.00 0.00 SYST H +ATOM 1845 CD1 LEU X 117 13.982 31.530 31.479 1.00 0.00 SYST C +ATOM 1846 HD11 LEU X 117 14.537 31.147 30.623 1.00 0.00 SYST H +ATOM 1847 HD12 LEU X 117 14.141 32.606 31.407 1.00 0.00 SYST H +ATOM 1848 HD13 LEU X 117 14.416 31.263 32.443 1.00 0.00 SYST H +ATOM 1849 CD2 LEU X 117 11.903 31.752 30.185 1.00 0.00 SYST C +ATOM 1850 HD21 LEU X 117 10.820 31.633 30.165 1.00 0.00 SYST H +ATOM 1851 HD22 LEU X 117 12.058 32.827 30.092 1.00 0.00 SYST H +ATOM 1852 HD23 LEU X 117 12.257 31.217 29.304 1.00 0.00 SYST H +ATOM 1853 C LEU X 117 13.833 28.086 31.285 1.00 0.00 SYST C +ATOM 1854 O LEU X 117 14.168 27.609 32.387 1.00 0.00 SYST O +ATOM 1855 N VAL X 118 14.637 28.095 30.195 1.00 0.00 SYST N +ATOM 1856 H VAL X 118 14.280 28.435 29.314 1.00 0.00 SYST H +ATOM 1857 CA VAL X 118 15.866 27.330 30.080 1.00 0.00 SYST C +ATOM 1858 HA VAL X 118 15.877 26.527 30.816 1.00 0.00 SYST H +ATOM 1859 CB VAL X 118 15.815 26.614 28.651 1.00 0.00 SYST C +ATOM 1860 HB VAL X 118 15.770 27.315 27.817 1.00 0.00 SYST H +ATOM 1861 CG1 VAL X 118 17.078 25.746 28.310 1.00 0.00 SYST C +ATOM 1862 HG11 VAL X 118 16.905 25.226 27.368 1.00 0.00 SYST H +ATOM 1863 HG12 VAL X 118 17.881 26.482 28.260 1.00 0.00 SYST H +ATOM 1864 HG13 VAL X 118 17.309 24.988 29.059 1.00 0.00 SYST H +ATOM 1865 CG2 VAL X 118 14.576 25.643 28.594 1.00 0.00 SYST C +ATOM 1866 HG21 VAL X 118 14.716 24.970 27.748 1.00 0.00 SYST H +ATOM 1867 HG22 VAL X 118 14.505 25.027 29.490 1.00 0.00 SYST H +ATOM 1868 HG23 VAL X 118 13.687 26.218 28.331 1.00 0.00 SYST H +ATOM 1869 C VAL X 118 17.063 28.307 30.094 1.00 0.00 SYST C +ATOM 1870 O VAL X 118 16.991 29.404 29.539 1.00 0.00 SYST O +ATOM 1871 N ASN X 119 18.132 27.916 30.802 1.00 0.00 SYST N +ATOM 1872 H ASN X 119 18.004 27.068 31.336 1.00 0.00 SYST H +ATOM 1873 CA ASN X 119 19.339 28.688 31.072 1.00 0.00 SYST C +ATOM 1874 HA ASN X 119 19.550 29.535 30.419 1.00 0.00 SYST H +ATOM 1875 CB ASN X 119 19.108 29.208 32.486 1.00 0.00 SYST C +ATOM 1876 HB2 ASN X 119 18.329 29.971 32.506 1.00 0.00 SYST H +ATOM 1877 HB3 ASN X 119 18.768 28.440 33.180 1.00 0.00 SYST H +ATOM 1878 CG ASN X 119 20.306 29.999 33.001 1.00 0.00 SYST C +ATOM 1879 OD1 ASN X 119 21.045 30.616 32.241 1.00 0.00 SYST O +ATOM 1880 ND2 ASN X 119 20.236 30.249 34.305 1.00 0.00 SYST N +ATOM 1881 HD21 ASN X 119 20.858 30.905 34.755 1.00 0.00 SYST H +ATOM 1882 HD22 ASN X 119 19.622 29.699 34.889 1.00 0.00 SYST H +ATOM 1883 C ASN X 119 20.598 27.821 31.018 1.00 0.00 SYST C +ATOM 1884 O ASN X 119 20.736 26.798 31.609 1.00 0.00 SYST O +ATOM 1885 N ARG X 120 21.522 28.133 30.044 1.00 0.00 SYST N +ATOM 1886 H ARG X 120 21.475 29.044 29.611 1.00 0.00 SYST H +ATOM 1887 CA ARG X 120 22.763 27.379 29.745 1.00 0.00 SYST C +ATOM 1888 HA ARG X 120 22.944 26.537 30.414 1.00 0.00 SYST H +ATOM 1889 CB ARG X 120 22.722 26.853 28.316 1.00 0.00 SYST C +ATOM 1890 HB2 ARG X 120 22.678 27.692 27.621 1.00 0.00 SYST H +ATOM 1891 HB3 ARG X 120 23.661 26.317 28.179 1.00 0.00 SYST H +ATOM 1892 CG ARG X 120 21.497 25.967 27.942 1.00 0.00 SYST C +ATOM 1893 HG2 ARG X 120 21.452 25.026 28.490 1.00 0.00 SYST H +ATOM 1894 HG3 ARG X 120 20.532 26.473 27.950 1.00 0.00 SYST H +ATOM 1895 CD ARG X 120 21.621 25.618 26.420 1.00 0.00 SYST C +ATOM 1896 HD2 ARG X 120 21.752 26.579 25.922 1.00 0.00 SYST H +ATOM 1897 HD3 ARG X 120 22.543 25.041 26.339 1.00 0.00 SYST H +ATOM 1898 NE ARG X 120 20.448 24.816 26.034 1.00 0.00 SYST N +ATOM 1899 HE ARG X 120 20.465 23.814 26.163 1.00 0.00 SYST H +ATOM 1900 CZ ARG X 120 19.360 25.188 25.435 1.00 0.00 SYST C +ATOM 1901 NH1 ARG X 120 19.084 26.428 25.138 1.00 0.00 SYST N +ATOM 1902 HH11 ARG X 120 19.608 27.105 25.673 1.00 0.00 SYST H +ATOM 1903 HH12 ARG X 120 18.132 26.627 24.865 1.00 0.00 SYST H +ATOM 1904 NH2 ARG X 120 18.411 24.433 25.185 1.00 0.00 SYST N +ATOM 1905 HH21 ARG X 120 18.489 23.492 25.545 1.00 0.00 SYST H +ATOM 1906 HH22 ARG X 120 17.562 24.795 24.777 1.00 0.00 SYST H +ATOM 1907 C ARG X 120 24.024 28.223 29.974 1.00 0.00 SYST C +ATOM 1908 O ARG X 120 24.088 29.300 29.382 1.00 0.00 SYST O +ATOM 1909 N ILE X 121 24.865 27.725 30.828 1.00 0.00 SYST N +ATOM 1910 H ILE X 121 24.683 26.813 31.223 1.00 0.00 SYST H +ATOM 1911 CA ILE X 121 25.942 28.563 31.478 1.00 0.00 SYST C +ATOM 1912 HA ILE X 121 25.999 29.470 30.876 1.00 0.00 SYST H +ATOM 1913 CB ILE X 121 25.628 28.803 32.954 1.00 0.00 SYST C +ATOM 1914 HB ILE X 121 25.684 27.799 33.376 1.00 0.00 SYST H +ATOM 1915 CG2 ILE X 121 26.708 29.556 33.605 1.00 0.00 SYST C +ATOM 1916 HG21 ILE X 121 26.601 29.391 34.677 1.00 0.00 SYST H +ATOM 1917 HG22 ILE X 121 27.722 29.240 33.362 1.00 0.00 SYST H +ATOM 1918 HG23 ILE X 121 26.706 30.594 33.271 1.00 0.00 SYST H +ATOM 1919 CG1 ILE X 121 24.256 29.410 33.419 1.00 0.00 SYST C +ATOM 1920 HG12 ILE X 121 24.313 30.490 33.288 1.00 0.00 SYST H +ATOM 1921 HG13 ILE X 121 23.598 29.044 32.630 1.00 0.00 SYST H +ATOM 1922 CD1 ILE X 121 23.836 28.888 34.806 1.00 0.00 SYST C +ATOM 1923 HD11 ILE X 121 22.916 29.392 35.103 1.00 0.00 SYST H +ATOM 1924 HD12 ILE X 121 23.647 27.819 34.708 1.00 0.00 SYST H +ATOM 1925 HD13 ILE X 121 24.566 29.071 35.595 1.00 0.00 SYST H +ATOM 1926 C ILE X 121 27.299 27.948 31.290 1.00 0.00 SYST C +ATOM 1927 O ILE X 121 27.481 26.736 31.559 1.00 0.00 SYST O +ATOM 1928 N GLU X 122 28.295 28.728 30.895 1.00 0.00 SYST N +ATOM 1929 H GLU X 122 28.025 29.662 30.622 1.00 0.00 SYST H +ATOM 1930 CA GLU X 122 29.722 28.325 30.825 1.00 0.00 SYST C +ATOM 1931 HA GLU X 122 29.790 27.312 31.222 1.00 0.00 SYST H +ATOM 1932 CB GLU X 122 30.216 28.278 29.440 1.00 0.00 SYST C +ATOM 1933 HB2 GLU X 122 31.270 28.002 29.477 1.00 0.00 SYST H +ATOM 1934 HB3 GLU X 122 29.673 27.538 28.851 1.00 0.00 SYST H +ATOM 1935 CG GLU X 122 30.218 29.620 28.615 1.00 0.00 SYST C +ATOM 1936 HG2 GLU X 122 29.183 29.881 28.393 1.00 0.00 SYST H +ATOM 1937 HG3 GLU X 122 30.620 30.363 29.303 1.00 0.00 SYST H +ATOM 1938 CD GLU X 122 31.010 29.665 27.250 1.00 0.00 SYST C +ATOM 1939 OE1 GLU X 122 30.455 29.967 26.171 1.00 0.00 SYST O +ATOM 1940 OE2 GLU X 122 32.212 29.336 27.322 1.00 0.00 SYST O +ATOM 1941 C GLU X 122 30.593 29.188 31.758 1.00 0.00 SYST C +ATOM 1942 O GLU X 122 30.448 30.416 31.853 1.00 0.00 SYST O +ATOM 1943 N LEU X 123 31.501 28.531 32.573 1.00 0.00 SYST N +ATOM 1944 H LEU X 123 31.391 27.528 32.515 1.00 0.00 SYST H +ATOM 1945 CA LEU X 123 32.219 29.124 33.711 1.00 0.00 SYST C +ATOM 1946 HA LEU X 123 32.126 30.210 33.713 1.00 0.00 SYST H +ATOM 1947 CB LEU X 123 31.507 28.697 34.946 1.00 0.00 SYST C +ATOM 1948 HB2 LEU X 123 30.513 29.143 34.903 1.00 0.00 SYST H +ATOM 1949 HB3 LEU X 123 31.362 27.626 34.804 1.00 0.00 SYST H +ATOM 1950 CG LEU X 123 32.038 28.956 36.321 1.00 0.00 SYST C +ATOM 1951 HG LEU X 123 32.903 28.316 36.496 1.00 0.00 SYST H +ATOM 1952 CD1 LEU X 123 32.454 30.503 36.574 1.00 0.00 SYST C +ATOM 1953 HD11 LEU X 123 32.806 30.664 37.592 1.00 0.00 SYST H +ATOM 1954 HD12 LEU X 123 33.316 30.814 35.983 1.00 0.00 SYST H +ATOM 1955 HD13 LEU X 123 31.665 31.138 36.171 1.00 0.00 SYST H +ATOM 1956 CD2 LEU X 123 30.987 28.604 37.351 1.00 0.00 SYST C +ATOM 1957 HD21 LEU X 123 30.839 27.526 37.283 1.00 0.00 SYST H +ATOM 1958 HD22 LEU X 123 31.318 28.976 38.321 1.00 0.00 SYST H +ATOM 1959 HD23 LEU X 123 30.140 29.211 37.033 1.00 0.00 SYST H +ATOM 1960 C LEU X 123 33.729 28.856 33.703 1.00 0.00 SYST C +ATOM 1961 O LEU X 123 34.188 27.760 33.894 1.00 0.00 SYST O +ATOM 1962 N LYS X 124 34.492 29.932 33.447 1.00 0.00 SYST N +ATOM 1963 H LYS X 124 33.993 30.787 33.246 1.00 0.00 SYST H +ATOM 1964 CA LYS X 124 35.933 29.979 33.612 1.00 0.00 SYST C +ATOM 1965 HA LYS X 124 36.296 28.958 33.729 1.00 0.00 SYST H +ATOM 1966 CB LYS X 124 36.568 30.559 32.333 1.00 0.00 SYST C +ATOM 1967 HB2 LYS X 124 36.046 30.072 31.510 1.00 0.00 SYST H +ATOM 1968 HB3 LYS X 124 36.347 31.626 32.292 1.00 0.00 SYST H +ATOM 1969 CG LYS X 124 38.087 30.326 32.190 1.00 0.00 SYST C +ATOM 1970 HG2 LYS X 124 38.406 30.920 31.333 1.00 0.00 SYST H +ATOM 1971 HG3 LYS X 124 38.515 30.738 33.103 1.00 0.00 SYST H +ATOM 1972 CD LYS X 124 38.514 28.855 31.970 1.00 0.00 SYST C +ATOM 1973 HD2 LYS X 124 39.599 28.768 32.011 1.00 0.00 SYST H +ATOM 1974 HD3 LYS X 124 38.085 28.183 32.714 1.00 0.00 SYST H +ATOM 1975 CE LYS X 124 37.975 28.326 30.639 1.00 0.00 SYST C +ATOM 1976 HE2 LYS X 124 36.899 28.478 30.564 1.00 0.00 SYST H +ATOM 1977 HE3 LYS X 124 38.580 28.798 29.865 1.00 0.00 SYST H +ATOM 1978 NZ LYS X 124 38.226 26.866 30.423 1.00 0.00 SYST N +ATOM 1979 HZ1 LYS X 124 37.997 26.520 29.502 1.00 0.00 SYST H +ATOM 1980 HZ2 LYS X 124 39.146 26.579 30.727 1.00 0.00 SYST H +ATOM 1981 HZ3 LYS X 124 37.756 26.305 31.119 1.00 0.00 SYST H +ATOM 1982 C LYS X 124 36.391 30.795 34.759 1.00 0.00 SYST C +ATOM 1983 O LYS X 124 36.813 31.972 34.618 1.00 0.00 SYST O +ATOM 1984 N GLY X 125 36.568 30.182 35.951 1.00 0.00 SYST N +ATOM 1985 H GLY X 125 36.310 29.205 35.961 1.00 0.00 SYST H +ATOM 1986 CA GLY X 125 37.373 30.678 37.073 1.00 0.00 SYST C +ATOM 1987 HA2 GLY X 125 37.158 31.742 37.171 1.00 0.00 SYST H +ATOM 1988 HA3 GLY X 125 37.132 30.141 37.990 1.00 0.00 SYST H +ATOM 1989 C GLY X 125 38.905 30.444 36.974 1.00 0.00 SYST C +ATOM 1990 O GLY X 125 39.311 29.397 36.385 1.00 0.00 SYST O +ATOM 1991 N ILE X 126 39.701 31.435 37.397 1.00 0.00 SYST N +ATOM 1992 H ILE X 126 39.140 32.220 37.696 1.00 0.00 SYST H +ATOM 1993 CA ILE X 126 41.078 31.641 36.977 1.00 0.00 SYST C +ATOM 1994 HA ILE X 126 41.497 30.693 36.640 1.00 0.00 SYST H +ATOM 1995 CB ILE X 126 41.123 32.746 35.899 1.00 0.00 SYST C +ATOM 1996 HB ILE X 126 40.545 33.593 36.269 1.00 0.00 SYST H +ATOM 1997 CG2 ILE X 126 42.535 33.200 35.603 1.00 0.00 SYST C +ATOM 1998 HG21 ILE X 126 42.608 33.755 34.668 1.00 0.00 SYST H +ATOM 1999 HG22 ILE X 126 42.927 33.779 36.439 1.00 0.00 SYST H +ATOM 2000 HG23 ILE X 126 43.209 32.353 35.473 1.00 0.00 SYST H +ATOM 2001 CG1 ILE X 126 40.458 32.359 34.527 1.00 0.00 SYST C +ATOM 2002 HG12 ILE X 126 41.056 31.689 33.910 1.00 0.00 SYST H +ATOM 2003 HG13 ILE X 126 39.562 31.791 34.778 1.00 0.00 SYST H +ATOM 2004 CD1 ILE X 126 39.973 33.560 33.668 1.00 0.00 SYST C +ATOM 2005 HD11 ILE X 126 39.594 34.383 34.276 1.00 0.00 SYST H +ATOM 2006 HD12 ILE X 126 40.821 33.823 33.036 1.00 0.00 SYST H +ATOM 2007 HD13 ILE X 126 39.192 33.194 33.002 1.00 0.00 SYST H +ATOM 2008 C ILE X 126 41.927 32.188 38.212 1.00 0.00 SYST C +ATOM 2009 O ILE X 126 41.627 33.185 38.815 1.00 0.00 SYST O +ATOM 2010 N ASP X 127 43.066 31.527 38.397 1.00 0.00 SYST N +ATOM 2011 H ASP X 127 43.227 30.825 37.689 1.00 0.00 SYST H +ATOM 2012 CA ASP X 127 44.075 31.841 39.371 1.00 0.00 SYST C +ATOM 2013 HA ASP X 127 44.765 31.007 39.502 1.00 0.00 SYST H +ATOM 2014 CB ASP X 127 45.018 32.971 38.755 1.00 0.00 SYST C +ATOM 2015 HB2 ASP X 127 44.607 33.972 38.882 1.00 0.00 SYST H +ATOM 2016 HB3 ASP X 127 45.917 32.837 39.356 1.00 0.00 SYST H +ATOM 2017 CG ASP X 127 45.506 32.854 37.252 1.00 0.00 SYST C +ATOM 2018 OD1 ASP X 127 45.899 31.722 36.876 1.00 0.00 SYST O +ATOM 2019 OD2 ASP X 127 45.888 33.869 36.642 1.00 0.00 SYST O +ATOM 2020 C ASP X 127 43.559 32.040 40.816 1.00 0.00 SYST C +ATOM 2021 O ASP X 127 43.916 33.026 41.424 1.00 0.00 SYST O +ATOM 2022 N PHE X 128 42.704 31.194 41.340 1.00 0.00 SYST N +ATOM 2023 H PHE X 128 42.406 30.459 40.715 1.00 0.00 SYST H +ATOM 2024 CA PHE X 128 42.322 31.187 42.793 1.00 0.00 SYST C +ATOM 2025 HA PHE X 128 42.205 32.258 42.959 1.00 0.00 SYST H +ATOM 2026 CB PHE X 128 40.947 30.523 43.007 1.00 0.00 SYST C +ATOM 2027 HB2 PHE X 128 40.995 29.626 42.390 1.00 0.00 SYST H +ATOM 2028 HB3 PHE X 128 40.759 30.338 44.064 1.00 0.00 SYST H +ATOM 2029 CG PHE X 128 39.784 31.340 42.466 1.00 0.00 SYST C +ATOM 2030 CD1 PHE X 128 39.548 31.302 41.054 1.00 0.00 SYST C +ATOM 2031 HD1 PHE X 128 40.092 30.769 40.288 1.00 0.00 SYST H +ATOM 2032 CE1 PHE X 128 38.386 31.991 40.599 1.00 0.00 SYST C +ATOM 2033 HE1 PHE X 128 38.074 31.959 39.565 1.00 0.00 SYST H +ATOM 2034 CZ PHE X 128 37.542 32.711 41.500 1.00 0.00 SYST C +ATOM 2035 HZ PHE X 128 36.684 33.199 41.062 1.00 0.00 SYST H +ATOM 2036 CE2 PHE X 128 37.905 32.795 42.849 1.00 0.00 SYST C +ATOM 2037 HE2 PHE X 128 37.290 33.382 43.515 1.00 0.00 SYST H +ATOM 2038 CD2 PHE X 128 39.015 32.056 43.400 1.00 0.00 SYST C +ATOM 2039 HD2 PHE X 128 39.172 32.110 44.467 1.00 0.00 SYST H +ATOM 2040 C PHE X 128 43.483 30.644 43.600 1.00 0.00 SYST C +ATOM 2041 O PHE X 128 44.259 29.796 43.105 1.00 0.00 SYST O +ATOM 2042 N LYS X 129 43.599 31.239 44.801 1.00 0.00 SYST N +ATOM 2043 H LYS X 129 42.890 31.921 45.033 1.00 0.00 SYST H +ATOM 2044 CA LYS X 129 44.536 30.822 45.811 1.00 0.00 SYST C +ATOM 2045 HA LYS X 129 45.542 30.664 45.423 1.00 0.00 SYST H +ATOM 2046 CB LYS X 129 44.539 31.842 46.945 1.00 0.00 SYST C +ATOM 2047 HB2 LYS X 129 43.538 31.904 47.372 1.00 0.00 SYST H +ATOM 2048 HB3 LYS X 129 45.108 31.412 47.769 1.00 0.00 SYST H +ATOM 2049 CG LYS X 129 45.022 33.228 46.646 1.00 0.00 SYST C +ATOM 2050 HG2 LYS X 129 46.047 33.231 46.276 1.00 0.00 SYST H +ATOM 2051 HG3 LYS X 129 44.405 33.647 45.850 1.00 0.00 SYST H +ATOM 2052 CD LYS X 129 44.949 34.143 47.881 1.00 0.00 SYST C +ATOM 2053 HD2 LYS X 129 44.000 34.596 48.169 1.00 0.00 SYST H +ATOM 2054 HD3 LYS X 129 45.176 33.637 48.819 1.00 0.00 SYST H +ATOM 2055 CE LYS X 129 45.895 35.371 47.660 1.00 0.00 SYST C +ATOM 2056 HE2 LYS X 129 46.915 35.020 47.815 1.00 0.00 SYST H +ATOM 2057 HE3 LYS X 129 45.754 35.766 46.654 1.00 0.00 SYST H +ATOM 2058 NZ LYS X 129 45.627 36.502 48.539 1.00 0.00 SYST N +ATOM 2059 HZ1 LYS X 129 45.446 36.299 49.512 1.00 0.00 SYST H +ATOM 2060 HZ2 LYS X 129 46.379 37.173 48.469 1.00 0.00 SYST H +ATOM 2061 HZ3 LYS X 129 44.872 37.030 48.124 1.00 0.00 SYST H +ATOM 2062 C LYS X 129 44.155 29.466 46.281 1.00 0.00 SYST C +ATOM 2063 O LYS X 129 43.000 29.244 46.712 1.00 0.00 SYST O +ATOM 2064 N GLU X 130 45.131 28.558 46.385 1.00 0.00 SYST N +ATOM 2065 H GLU X 130 46.008 28.786 45.938 1.00 0.00 SYST H +ATOM 2066 CA GLU X 130 45.108 27.277 46.955 1.00 0.00 SYST C +ATOM 2067 HA GLU X 130 44.397 26.736 46.331 1.00 0.00 SYST H +ATOM 2068 CB GLU X 130 46.553 26.737 46.784 1.00 0.00 SYST C +ATOM 2069 HB2 GLU X 130 46.837 26.669 45.734 1.00 0.00 SYST H +ATOM 2070 HB3 GLU X 130 47.328 27.307 47.297 1.00 0.00 SYST H +ATOM 2071 CG GLU X 130 46.738 25.304 47.429 1.00 0.00 SYST C +ATOM 2072 HG2 GLU X 130 47.779 25.063 47.213 1.00 0.00 SYST H +ATOM 2073 HG3 GLU X 130 46.705 25.367 48.516 1.00 0.00 SYST H +ATOM 2074 CD GLU X 130 45.765 24.183 46.829 1.00 0.00 SYST C +ATOM 2075 OE1 GLU X 130 45.578 23.207 47.571 1.00 0.00 SYST O +ATOM 2076 OE2 GLU X 130 45.290 24.170 45.711 1.00 0.00 SYST O +ATOM 2077 C GLU X 130 44.575 27.161 48.386 1.00 0.00 SYST C +ATOM 2078 O GLU X 130 43.821 26.268 48.761 1.00 0.00 SYST O +ATOM 2079 N ASP X 131 45.113 27.969 49.215 1.00 0.00 SYST N +ATOM 2080 H ASP X 131 45.906 28.558 49.007 1.00 0.00 SYST H +ATOM 2081 CA ASP X 131 44.711 28.151 50.658 1.00 0.00 SYST C +ATOM 2082 HA ASP X 131 44.484 27.159 51.048 1.00 0.00 SYST H +ATOM 2083 CB ASP X 131 45.867 28.739 51.377 1.00 0.00 SYST C +ATOM 2084 HB2 ASP X 131 46.750 28.140 51.158 1.00 0.00 SYST H +ATOM 2085 HB3 ASP X 131 45.953 29.772 51.038 1.00 0.00 SYST H +ATOM 2086 CG ASP X 131 45.696 28.663 52.912 1.00 0.00 SYST C +ATOM 2087 OD1 ASP X 131 44.934 27.819 53.387 1.00 0.00 SYST O +ATOM 2088 OD2 ASP X 131 46.333 29.494 53.625 1.00 0.00 SYST O +ATOM 2089 C ASP X 131 43.482 29.118 50.880 1.00 0.00 SYST C +ATOM 2090 O ASP X 131 43.059 29.455 51.988 1.00 0.00 SYST O +ATOM 2091 N GLY X 132 43.045 29.689 49.733 1.00 0.00 SYST N +ATOM 2092 H GLY X 132 43.216 29.281 48.825 1.00 0.00 SYST H +ATOM 2093 CA GLY X 132 42.034 30.783 49.765 1.00 0.00 SYST C +ATOM 2094 HA2 GLY X 132 42.394 31.604 50.385 1.00 0.00 SYST H +ATOM 2095 HA3 GLY X 132 41.879 31.143 48.748 1.00 0.00 SYST H +ATOM 2096 C GLY X 132 40.661 30.380 50.156 1.00 0.00 SYST C +ATOM 2097 O GLY X 132 40.240 29.216 49.940 1.00 0.00 SYST O +ATOM 2098 N ASN X 133 39.812 31.288 50.522 1.00 0.00 SYST N +ATOM 2099 H ASN X 133 40.149 32.232 50.647 1.00 0.00 SYST H +ATOM 2100 CA ASN X 133 38.436 30.976 50.933 1.00 0.00 SYST C +ATOM 2101 HA ASN X 133 38.534 30.335 51.808 1.00 0.00 SYST H +ATOM 2102 CB ASN X 133 37.841 32.306 51.206 1.00 0.00 SYST C +ATOM 2103 HB2 ASN X 133 37.794 32.934 50.316 1.00 0.00 SYST H +ATOM 2104 HB3 ASN X 133 36.810 32.092 51.488 1.00 0.00 SYST H +ATOM 2105 CG ASN X 133 38.468 33.102 52.336 1.00 0.00 SYST C +ATOM 2106 OD1 ASN X 133 38.579 32.642 53.481 1.00 0.00 SYST O +ATOM 2107 ND2 ASN X 133 38.824 34.324 52.100 1.00 0.00 SYST N +ATOM 2108 HD21 ASN X 133 39.155 34.952 52.819 1.00 0.00 SYST H +ATOM 2109 HD22 ASN X 133 38.775 34.593 51.128 1.00 0.00 SYST H +ATOM 2110 C ASN X 133 37.557 30.166 49.920 1.00 0.00 SYST C +ATOM 2111 O ASN X 133 36.672 29.430 50.312 1.00 0.00 SYST O +ATOM 2112 N ILE X 134 37.861 30.243 48.600 1.00 0.00 SYST N +ATOM 2113 H ILE X 134 38.740 30.662 48.331 1.00 0.00 SYST H +ATOM 2114 CA ILE X 134 37.031 29.662 47.536 1.00 0.00 SYST C +ATOM 2115 HA ILE X 134 35.996 29.700 47.875 1.00 0.00 SYST H +ATOM 2116 CB ILE X 134 37.045 30.505 46.235 1.00 0.00 SYST C +ATOM 2117 HB ILE X 134 38.090 30.766 46.068 1.00 0.00 SYST H +ATOM 2118 CG2 ILE X 134 36.445 29.671 45.049 1.00 0.00 SYST C +ATOM 2119 HG21 ILE X 134 36.442 30.298 44.157 1.00 0.00 SYST H +ATOM 2120 HG22 ILE X 134 37.053 28.771 44.950 1.00 0.00 SYST H +ATOM 2121 HG23 ILE X 134 35.438 29.287 45.211 1.00 0.00 SYST H +ATOM 2122 CG1 ILE X 134 36.216 31.772 46.437 1.00 0.00 SYST C +ATOM 2123 HG12 ILE X 134 35.950 32.205 45.473 1.00 0.00 SYST H +ATOM 2124 HG13 ILE X 134 35.278 31.577 46.956 1.00 0.00 SYST H +ATOM 2125 CD1 ILE X 134 36.987 32.956 47.118 1.00 0.00 SYST C +ATOM 2126 HD11 ILE X 134 37.755 33.299 46.426 1.00 0.00 SYST H +ATOM 2127 HD12 ILE X 134 36.303 33.775 47.340 1.00 0.00 SYST H +ATOM 2128 HD13 ILE X 134 37.387 32.696 48.098 1.00 0.00 SYST H +ATOM 2129 C ILE X 134 37.331 28.222 47.401 1.00 0.00 SYST C +ATOM 2130 O ILE X 134 36.591 27.308 47.914 1.00 0.00 SYST O +ATOM 2131 N LEU X 135 38.548 27.963 46.917 1.00 0.00 SYST N +ATOM 2132 H LEU X 135 39.088 28.802 46.765 1.00 0.00 SYST H +ATOM 2133 CA LEU X 135 39.122 26.615 46.763 1.00 0.00 SYST C +ATOM 2134 HA LEU X 135 38.434 26.131 46.069 1.00 0.00 SYST H +ATOM 2135 CB LEU X 135 40.508 26.791 46.142 1.00 0.00 SYST C +ATOM 2136 HB2 LEU X 135 41.176 27.248 46.871 1.00 0.00 SYST H +ATOM 2137 HB3 LEU X 135 40.849 25.771 45.963 1.00 0.00 SYST H +ATOM 2138 CG LEU X 135 40.656 27.425 44.719 1.00 0.00 SYST C +ATOM 2139 HG LEU X 135 40.273 28.444 44.787 1.00 0.00 SYST H +ATOM 2140 CD1 LEU X 135 42.046 27.325 44.157 1.00 0.00 SYST C +ATOM 2141 HD11 LEU X 135 42.431 26.305 44.170 1.00 0.00 SYST H +ATOM 2142 HD12 LEU X 135 42.024 27.709 43.137 1.00 0.00 SYST H +ATOM 2143 HD13 LEU X 135 42.664 27.989 44.761 1.00 0.00 SYST H +ATOM 2144 CD2 LEU X 135 39.783 26.711 43.663 1.00 0.00 SYST C +ATOM 2145 HD21 LEU X 135 39.602 27.406 42.843 1.00 0.00 SYST H +ATOM 2146 HD22 LEU X 135 40.204 25.811 43.215 1.00 0.00 SYST H +ATOM 2147 HD23 LEU X 135 38.757 26.642 44.024 1.00 0.00 SYST H +ATOM 2148 C LEU X 135 39.120 25.854 48.128 1.00 0.00 SYST C +ATOM 2149 O LEU X 135 38.778 24.661 48.119 1.00 0.00 SYST O +ATOM 2150 N GLY X 136 39.549 26.551 49.190 1.00 0.00 SYST N +ATOM 2151 H GLY X 136 39.902 27.476 48.993 1.00 0.00 SYST H +ATOM 2152 CA GLY X 136 39.577 26.211 50.589 1.00 0.00 SYST C +ATOM 2153 HA2 GLY X 136 40.247 25.353 50.640 1.00 0.00 SYST H +ATOM 2154 HA3 GLY X 136 40.207 26.978 51.040 1.00 0.00 SYST H +ATOM 2155 C GLY X 136 38.234 25.844 51.290 1.00 0.00 SYST C +ATOM 2156 O GLY X 136 38.385 25.071 52.237 1.00 0.00 SYST O +ATOM 2157 N HID X 137 37.100 26.234 50.753 1.00 0.00 SYST N +ATOM 2158 H HID X 137 37.283 26.920 50.035 1.00 0.00 SYST H +ATOM 2159 CA HID X 137 35.765 26.079 51.346 1.00 0.00 SYST C +ATOM 2160 HA HID X 137 35.050 26.663 50.767 1.00 0.00 SYST H +ATOM 2161 CB HID X 137 35.260 24.610 51.224 1.00 0.00 SYST C +ATOM 2162 HB2 HID X 137 35.956 23.890 51.654 1.00 0.00 SYST H +ATOM 2163 HB3 HID X 137 34.279 24.527 51.692 1.00 0.00 SYST H +ATOM 2164 CG HID X 137 35.120 24.200 49.796 1.00 0.00 SYST C +ATOM 2165 ND1 HID X 137 36.121 24.220 48.825 1.00 0.00 SYST N +ATOM 2166 HD1 HID X 137 37.068 24.556 48.932 1.00 0.00 SYST H +ATOM 2167 CE1 HID X 137 35.675 23.708 47.661 1.00 0.00 SYST C +ATOM 2168 HE1 HID X 137 36.270 23.594 46.767 1.00 0.00 SYST H +ATOM 2169 NE2 HID X 137 34.403 23.331 47.846 1.00 0.00 SYST N +ATOM 2170 CD2 HID X 137 34.030 23.661 49.136 1.00 0.00 SYST C +ATOM 2171 HD2 HID X 137 33.011 23.690 49.491 1.00 0.00 SYST H +ATOM 2172 C HID X 137 35.591 26.547 52.764 1.00 0.00 SYST C +ATOM 2173 O HID X 137 35.350 25.809 53.702 1.00 0.00 SYST O +ATOM 2174 N LYS X 138 35.761 27.873 52.849 1.00 0.00 SYST N +ATOM 2175 H LYS X 138 36.218 28.253 52.033 1.00 0.00 SYST H +ATOM 2176 CA LYS X 138 35.690 28.689 54.086 1.00 0.00 SYST C +ATOM 2177 HA LYS X 138 35.635 28.070 54.982 1.00 0.00 SYST H +ATOM 2178 CB LYS X 138 36.996 29.555 54.224 1.00 0.00 SYST C +ATOM 2179 HB2 LYS X 138 37.099 30.204 53.354 1.00 0.00 SYST H +ATOM 2180 HB3 LYS X 138 36.845 30.205 55.086 1.00 0.00 SYST H +ATOM 2181 CG LYS X 138 38.227 28.700 54.425 1.00 0.00 SYST C +ATOM 2182 HG2 LYS X 138 38.000 27.990 55.220 1.00 0.00 SYST H +ATOM 2183 HG3 LYS X 138 38.444 28.192 53.485 1.00 0.00 SYST H +ATOM 2184 CD LYS X 138 39.540 29.380 54.871 1.00 0.00 SYST C +ATOM 2185 HD2 LYS X 138 39.669 30.294 54.291 1.00 0.00 SYST H +ATOM 2186 HD3 LYS X 138 39.542 29.675 55.920 1.00 0.00 SYST H +ATOM 2187 CE LYS X 138 40.740 28.359 54.615 1.00 0.00 SYST C +ATOM 2188 HE2 LYS X 138 40.458 27.508 55.234 1.00 0.00 SYST H +ATOM 2189 HE3 LYS X 138 40.898 28.075 53.575 1.00 0.00 SYST H +ATOM 2190 NZ LYS X 138 42.056 28.896 55.080 1.00 0.00 SYST N +ATOM 2191 HZ1 LYS X 138 42.633 28.076 54.953 1.00 0.00 SYST H +ATOM 2192 HZ2 LYS X 138 42.479 29.434 54.337 1.00 0.00 SYST H +ATOM 2193 HZ3 LYS X 138 42.026 29.367 55.973 1.00 0.00 SYST H +ATOM 2194 C LYS X 138 34.497 29.619 54.120 1.00 0.00 SYST C +ATOM 2195 O LYS X 138 34.414 30.442 55.062 1.00 0.00 SYST O +ATOM 2196 N LEU X 139 33.485 29.458 53.282 1.00 0.00 SYST N +ATOM 2197 H LEU X 139 33.569 28.626 52.716 1.00 0.00 SYST H +ATOM 2198 CA LEU X 139 32.248 30.271 53.177 1.00 0.00 SYST C +ATOM 2199 HA LEU X 139 32.503 31.207 53.675 1.00 0.00 SYST H +ATOM 2200 CB LEU X 139 31.918 30.585 51.746 1.00 0.00 SYST C +ATOM 2201 HB2 LEU X 139 31.749 29.643 51.224 1.00 0.00 SYST H +ATOM 2202 HB3 LEU X 139 31.017 31.196 51.730 1.00 0.00 SYST H +ATOM 2203 CG LEU X 139 33.133 31.453 51.098 1.00 0.00 SYST C +ATOM 2204 HG LEU X 139 34.068 30.895 51.067 1.00 0.00 SYST H +ATOM 2205 CD1 LEU X 139 32.797 31.700 49.624 1.00 0.00 SYST C +ATOM 2206 HD11 LEU X 139 32.703 30.710 49.178 1.00 0.00 SYST H +ATOM 2207 HD12 LEU X 139 31.825 32.179 49.739 1.00 0.00 SYST H +ATOM 2208 HD13 LEU X 139 33.507 32.360 49.125 1.00 0.00 SYST H +ATOM 2209 CD2 LEU X 139 33.613 32.758 51.717 1.00 0.00 SYST C +ATOM 2210 HD21 LEU X 139 32.940 33.613 51.658 1.00 0.00 SYST H +ATOM 2211 HD22 LEU X 139 33.793 32.622 52.784 1.00 0.00 SYST H +ATOM 2212 HD23 LEU X 139 34.582 32.994 51.278 1.00 0.00 SYST H +ATOM 2213 C LEU X 139 31.138 29.504 53.898 1.00 0.00 SYST C +ATOM 2214 O LEU X 139 30.890 28.286 53.716 1.00 0.00 SYST O +ATOM 2215 N GLU X 140 30.347 30.185 54.678 1.00 0.00 SYST N +ATOM 2216 H GLU X 140 30.585 31.160 54.791 1.00 0.00 SYST H +ATOM 2217 CA GLU X 140 29.038 29.739 55.291 1.00 0.00 SYST C +ATOM 2218 HA GLU X 140 29.191 28.791 55.808 1.00 0.00 SYST H +ATOM 2219 CB GLU X 140 28.562 30.831 56.284 1.00 0.00 SYST C +ATOM 2220 HB2 GLU X 140 28.565 31.718 55.651 1.00 0.00 SYST H +ATOM 2221 HB3 GLU X 140 27.561 30.637 56.671 1.00 0.00 SYST H +ATOM 2222 CG GLU X 140 29.528 31.250 57.429 1.00 0.00 SYST C +ATOM 2223 HG2 GLU X 140 30.575 31.235 57.125 1.00 0.00 SYST H +ATOM 2224 HG3 GLU X 140 29.361 32.290 57.709 1.00 0.00 SYST H +ATOM 2225 CD GLU X 140 29.443 30.450 58.763 1.00 0.00 SYST C +ATOM 2226 OE1 GLU X 140 29.899 30.956 59.775 1.00 0.00 SYST O +ATOM 2227 OE2 GLU X 140 29.008 29.246 58.748 1.00 0.00 SYST O +ATOM 2228 C GLU X 140 27.942 29.523 54.242 1.00 0.00 SYST C +ATOM 2229 O GLU X 140 28.046 30.051 53.132 1.00 0.00 SYST O +ATOM 2230 N TYR X 141 27.037 28.572 54.470 1.00 0.00 SYST N +ATOM 2231 H TYR X 141 27.270 28.007 55.274 1.00 0.00 SYST H +ATOM 2232 CA TYR X 141 25.991 28.146 53.518 1.00 0.00 SYST C +ATOM 2233 HA TYR X 141 26.425 28.345 52.538 1.00 0.00 SYST H +ATOM 2234 CB TYR X 141 25.690 26.634 53.635 1.00 0.00 SYST C +ATOM 2235 HB2 TYR X 141 26.542 25.961 53.545 1.00 0.00 SYST H +ATOM 2236 HB3 TYR X 141 25.207 26.484 54.600 1.00 0.00 SYST H +ATOM 2237 CG TYR X 141 24.771 26.181 52.499 1.00 0.00 SYST C +ATOM 2238 CD1 TYR X 141 25.282 26.079 51.182 1.00 0.00 SYST C +ATOM 2239 HD1 TYR X 141 26.298 26.389 50.990 1.00 0.00 SYST H +ATOM 2240 CE1 TYR X 141 24.402 25.575 50.234 1.00 0.00 SYST C +ATOM 2241 HE1 TYR X 141 24.642 25.679 49.186 1.00 0.00 SYST H +ATOM 2242 CZ TYR X 141 23.131 25.197 50.551 1.00 0.00 SYST C +ATOM 2243 OH TYR X 141 22.330 24.572 49.640 1.00 0.00 SYST O +ATOM 2244 HH TYR X 141 21.437 24.366 49.926 1.00 0.00 SYST H +ATOM 2245 CE2 TYR X 141 22.674 25.195 51.886 1.00 0.00 SYST C +ATOM 2246 HE2 TYR X 141 21.670 24.865 52.111 1.00 0.00 SYST H +ATOM 2247 CD2 TYR X 141 23.547 25.634 52.898 1.00 0.00 SYST C +ATOM 2248 HD2 TYR X 141 23.342 25.438 53.940 1.00 0.00 SYST H +ATOM 2249 C TYR X 141 24.709 28.952 53.623 1.00 0.00 SYST C +ATOM 2250 O TYR X 141 23.655 28.593 54.123 1.00 0.00 SYST O +ATOM 2251 N ASN X 142 24.819 30.183 53.111 1.00 0.00 SYST N +ATOM 2252 H ASN X 142 25.652 30.443 52.603 1.00 0.00 SYST H +ATOM 2253 CA ASN X 142 23.796 31.213 53.299 1.00 0.00 SYST C +ATOM 2254 HA ASN X 142 22.883 30.681 53.032 1.00 0.00 SYST H +ATOM 2255 CB ASN X 142 23.780 31.766 54.730 1.00 0.00 SYST C +ATOM 2256 HB2 ASN X 142 23.128 32.631 54.857 1.00 0.00 SYST H +ATOM 2257 HB3 ASN X 142 23.366 31.050 55.440 1.00 0.00 SYST H +ATOM 2258 CG ASN X 142 25.104 32.228 55.238 1.00 0.00 SYST C +ATOM 2259 OD1 ASN X 142 26.094 32.471 54.578 1.00 0.00 SYST O +ATOM 2260 ND2 ASN X 142 25.243 32.457 56.568 1.00 0.00 SYST N +ATOM 2261 HD21 ASN X 142 26.130 32.830 56.877 1.00 0.00 SYST H +ATOM 2262 HD22 ASN X 142 24.565 32.080 57.215 1.00 0.00 SYST H +ATOM 2263 C ASN X 142 23.971 32.408 52.260 1.00 0.00 SYST C +ATOM 2264 O ASN X 142 24.969 32.396 51.468 1.00 0.00 SYST O +ATOM 2265 N TYR X 143 23.001 33.271 52.220 1.00 0.00 SYST N +ATOM 2266 H TYR X 143 22.271 33.196 52.915 1.00 0.00 SYST H +ATOM 2267 CA TYR X 143 22.878 34.338 51.269 1.00 0.00 SYST C +ATOM 2268 HA TYR X 143 23.881 34.539 50.892 1.00 0.00 SYST H +ATOM 2269 CB TYR X 143 22.153 33.808 50.037 1.00 0.00 SYST C +ATOM 2270 HB2 TYR X 143 22.029 32.732 50.162 1.00 0.00 SYST H +ATOM 2271 HB3 TYR X 143 21.210 34.320 49.843 1.00 0.00 SYST H +ATOM 2272 CG TYR X 143 22.961 34.125 48.826 1.00 0.00 SYST C +ATOM 2273 CD1 TYR X 143 22.575 35.234 48.057 1.00 0.00 SYST C +ATOM 2274 HD1 TYR X 143 21.777 35.827 48.478 1.00 0.00 SYST H +ATOM 2275 CE1 TYR X 143 23.264 35.540 46.845 1.00 0.00 SYST C +ATOM 2276 HE1 TYR X 143 22.855 36.372 46.290 1.00 0.00 SYST H +ATOM 2277 CZ TYR X 143 24.329 34.752 46.433 1.00 0.00 SYST C +ATOM 2278 OH TYR X 143 25.057 35.097 45.350 1.00 0.00 SYST O +ATOM 2279 HH TYR X 143 24.601 35.808 44.893 1.00 0.00 SYST H +ATOM 2280 CE2 TYR X 143 24.811 33.740 47.281 1.00 0.00 SYST C +ATOM 2281 HE2 TYR X 143 25.727 33.251 46.985 1.00 0.00 SYST H +ATOM 2282 CD2 TYR X 143 24.071 33.332 48.396 1.00 0.00 SYST C +ATOM 2283 HD2 TYR X 143 24.364 32.489 49.004 1.00 0.00 SYST H +ATOM 2284 C TYR X 143 22.192 35.602 51.788 1.00 0.00 SYST C +ATOM 2285 O TYR X 143 21.661 35.505 52.852 1.00 0.00 SYST O +ATOM 2286 N ASN X 144 22.278 36.783 51.144 1.00 0.00 SYST N +ATOM 2287 H ASN X 144 22.680 36.641 50.229 1.00 0.00 SYST H +ATOM 2288 CA ASN X 144 21.683 38.032 51.691 1.00 0.00 SYST C +ATOM 2289 HA ASN X 144 20.917 37.716 52.400 1.00 0.00 SYST H +ATOM 2290 CB ASN X 144 22.835 38.649 52.510 1.00 0.00 SYST C +ATOM 2291 HB2 ASN X 144 23.474 39.187 51.809 1.00 0.00 SYST H +ATOM 2292 HB3 ASN X 144 22.496 39.478 53.131 1.00 0.00 SYST H +ATOM 2293 CG ASN X 144 23.568 37.758 53.497 1.00 0.00 SYST C +ATOM 2294 OD1 ASN X 144 23.027 37.511 54.595 1.00 0.00 SYST O +ATOM 2295 ND2 ASN X 144 24.745 37.284 53.091 1.00 0.00 SYST N +ATOM 2296 HD21 ASN X 144 25.241 36.677 53.728 1.00 0.00 SYST H +ATOM 2297 HD22 ASN X 144 25.094 37.365 52.147 1.00 0.00 SYST H +ATOM 2298 C ASN X 144 21.023 38.962 50.662 1.00 0.00 SYST C +ATOM 2299 O ASN X 144 20.956 38.501 49.537 1.00 0.00 SYST O +ATOM 2300 N CYS X 145 20.570 40.168 51.014 1.00 0.00 SYST N +ATOM 2301 H CYS X 145 20.676 40.498 51.963 1.00 0.00 SYST H +ATOM 2302 CA CYS X 145 19.870 41.118 50.205 1.00 0.00 SYST C +ATOM 2303 HA CYS X 145 19.337 40.531 49.458 1.00 0.00 SYST H +ATOM 2304 CB CYS X 145 18.699 41.794 51.000 1.00 0.00 SYST C +ATOM 2305 HB2 CYS X 145 18.230 41.077 51.674 1.00 0.00 SYST H +ATOM 2306 HB3 CYS X 145 19.179 42.607 51.545 1.00 0.00 SYST H +ATOM 2307 SG CYS X 145 17.479 42.514 49.844 1.00 0.00 SYST S +ATOM 2308 HG CYS X 145 16.690 42.998 50.807 1.00 0.00 SYST H +ATOM 2309 C CYS X 145 20.748 42.101 49.561 1.00 0.00 SYST C +ATOM 2310 O CYS X 145 21.342 42.962 50.259 1.00 0.00 SYST O +ATOM 2311 N HID X 146 20.678 42.182 48.239 1.00 0.00 SYST N +ATOM 2312 H HID X 146 20.215 41.429 47.750 1.00 0.00 SYST H +ATOM 2313 CA HID X 146 21.430 43.055 47.439 1.00 0.00 SYST C +ATOM 2314 HA HID X 146 22.021 43.682 48.107 1.00 0.00 SYST H +ATOM 2315 CB HID X 146 22.470 42.194 46.742 1.00 0.00 SYST C +ATOM 2316 HB2 HID X 146 22.007 41.687 45.896 1.00 0.00 SYST H +ATOM 2317 HB3 HID X 146 23.273 42.702 46.207 1.00 0.00 SYST H +ATOM 2318 CG HID X 146 23.192 41.111 47.638 1.00 0.00 SYST C +ATOM 2319 ND1 HID X 146 23.075 39.750 47.428 1.00 0.00 SYST N +ATOM 2320 HD1 HID X 146 22.577 39.301 46.673 1.00 0.00 SYST H +ATOM 2321 CE1 HID X 146 23.727 39.140 48.477 1.00 0.00 SYST C +ATOM 2322 HE1 HID X 146 23.787 38.066 48.565 1.00 0.00 SYST H +ATOM 2323 NE2 HID X 146 24.220 40.007 49.306 1.00 0.00 SYST N +ATOM 2324 CD2 HID X 146 23.937 41.297 48.772 1.00 0.00 SYST C +ATOM 2325 HD2 HID X 146 24.042 42.233 49.300 1.00 0.00 SYST H +ATOM 2326 C HID X 146 20.533 43.849 46.537 1.00 0.00 SYST C +ATOM 2327 O HID X 146 19.434 43.408 46.147 1.00 0.00 SYST O +ATOM 2328 N ASN X 147 21.061 45.000 46.164 1.00 0.00 SYST N +ATOM 2329 H ASN X 147 21.996 45.194 46.492 1.00 0.00 SYST H +ATOM 2330 CA ASN X 147 20.415 45.898 45.196 1.00 0.00 SYST C +ATOM 2331 HA ASN X 147 19.456 45.464 44.914 1.00 0.00 SYST H +ATOM 2332 CB ASN X 147 20.197 47.284 45.863 1.00 0.00 SYST C +ATOM 2333 HB2 ASN X 147 21.070 47.689 46.375 1.00 0.00 SYST H +ATOM 2334 HB3 ASN X 147 19.898 48.004 45.102 1.00 0.00 SYST H +ATOM 2335 CG ASN X 147 18.977 47.347 46.833 1.00 0.00 SYST C +ATOM 2336 OD1 ASN X 147 17.818 47.034 46.605 1.00 0.00 SYST O +ATOM 2337 ND2 ASN X 147 19.250 47.902 48.011 1.00 0.00 SYST N +ATOM 2338 HD21 ASN X 147 18.562 47.881 48.750 1.00 0.00 SYST H +ATOM 2339 HD22 ASN X 147 20.201 48.076 48.305 1.00 0.00 SYST H +ATOM 2340 C ASN X 147 21.247 45.881 43.859 1.00 0.00 SYST C +ATOM 2341 O ASN X 147 22.371 46.391 43.881 1.00 0.00 SYST O +ATOM 2342 N VAL X 148 20.751 45.295 42.738 1.00 0.00 SYST N +ATOM 2343 H VAL X 148 19.805 44.957 42.835 1.00 0.00 SYST H +ATOM 2344 CA VAL X 148 21.415 45.073 41.446 1.00 0.00 SYST C +ATOM 2345 HA VAL X 148 22.495 45.139 41.584 1.00 0.00 SYST H +ATOM 2346 CB VAL X 148 21.031 43.658 40.930 1.00 0.00 SYST C +ATOM 2347 HB VAL X 148 19.941 43.697 40.932 1.00 0.00 SYST H +ATOM 2348 CG1 VAL X 148 21.597 43.366 39.549 1.00 0.00 SYST C +ATOM 2349 HG11 VAL X 148 21.138 42.395 39.359 1.00 0.00 SYST H +ATOM 2350 HG12 VAL X 148 21.239 44.096 38.823 1.00 0.00 SYST H +ATOM 2351 HG13 VAL X 148 22.666 43.198 39.679 1.00 0.00 SYST H +ATOM 2352 CG2 VAL X 148 21.507 42.613 41.940 1.00 0.00 SYST C +ATOM 2353 HG21 VAL X 148 20.993 42.707 42.896 1.00 0.00 SYST H +ATOM 2354 HG22 VAL X 148 21.359 41.585 41.609 1.00 0.00 SYST H +ATOM 2355 HG23 VAL X 148 22.587 42.680 42.071 1.00 0.00 SYST H +ATOM 2356 C VAL X 148 21.059 46.238 40.477 1.00 0.00 SYST C +ATOM 2357 O VAL X 148 19.976 46.245 39.831 1.00 0.00 SYST O +ATOM 2358 N TYR X 149 21.949 47.186 40.321 1.00 0.00 SYST N +ATOM 2359 H TYR X 149 22.752 47.086 40.925 1.00 0.00 SYST H +ATOM 2360 CA TYR X 149 21.825 48.448 39.569 1.00 0.00 SYST C +ATOM 2361 HA TYR X 149 20.853 48.940 39.618 1.00 0.00 SYST H +ATOM 2362 CB TYR X 149 23.003 49.378 40.000 1.00 0.00 SYST C +ATOM 2363 HB2 TYR X 149 23.907 48.807 39.789 1.00 0.00 SYST H +ATOM 2364 HB3 TYR X 149 23.095 50.263 39.370 1.00 0.00 SYST H +ATOM 2365 CG TYR X 149 23.097 49.706 41.447 1.00 0.00 SYST C +ATOM 2366 CD1 TYR X 149 23.836 48.913 42.343 1.00 0.00 SYST C +ATOM 2367 HD1 TYR X 149 24.402 48.067 41.981 1.00 0.00 SYST H +ATOM 2368 CE1 TYR X 149 23.855 49.297 43.675 1.00 0.00 SYST C +ATOM 2369 HE1 TYR X 149 24.565 48.803 44.322 1.00 0.00 SYST H +ATOM 2370 CZ TYR X 149 23.009 50.276 44.228 1.00 0.00 SYST C +ATOM 2371 OH TYR X 149 22.883 50.562 45.534 1.00 0.00 SYST O +ATOM 2372 HH TYR X 149 23.259 49.918 46.139 1.00 0.00 SYST H +ATOM 2373 CE2 TYR X 149 22.212 51.006 43.329 1.00 0.00 SYST C +ATOM 2374 HE2 TYR X 149 21.362 51.595 43.642 1.00 0.00 SYST H +ATOM 2375 CD2 TYR X 149 22.279 50.720 41.920 1.00 0.00 SYST C +ATOM 2376 HD2 TYR X 149 21.550 51.156 41.253 1.00 0.00 SYST H +ATOM 2377 C TYR X 149 21.946 48.178 38.035 1.00 0.00 SYST C +ATOM 2378 O TYR X 149 22.951 47.537 37.602 1.00 0.00 SYST O +ATOM 2379 N ILE X 150 21.052 48.762 37.259 1.00 0.00 SYST N +ATOM 2380 H ILE X 150 20.393 49.401 37.680 1.00 0.00 SYST H +ATOM 2381 CA ILE X 150 20.863 48.603 35.780 1.00 0.00 SYST C +ATOM 2382 HA ILE X 150 21.817 48.210 35.430 1.00 0.00 SYST H +ATOM 2383 CB ILE X 150 19.659 47.646 35.562 1.00 0.00 SYST C +ATOM 2384 HB ILE X 150 18.808 48.210 35.945 1.00 0.00 SYST H +ATOM 2385 CG2 ILE X 150 19.249 47.474 34.074 1.00 0.00 SYST C +ATOM 2386 HG21 ILE X 150 19.109 48.447 33.603 1.00 0.00 SYST H +ATOM 2387 HG22 ILE X 150 19.982 46.888 33.519 1.00 0.00 SYST H +ATOM 2388 HG23 ILE X 150 18.260 47.023 34.159 1.00 0.00 SYST H +ATOM 2389 CG1 ILE X 150 19.800 46.382 36.429 1.00 0.00 SYST C +ATOM 2390 HG12 ILE X 150 20.828 46.038 36.311 1.00 0.00 SYST H +ATOM 2391 HG13 ILE X 150 19.662 46.617 37.485 1.00 0.00 SYST H +ATOM 2392 CD1 ILE X 150 19.039 45.162 35.997 1.00 0.00 SYST C +ATOM 2393 HD11 ILE X 150 19.278 44.315 36.640 1.00 0.00 SYST H +ATOM 2394 HD12 ILE X 150 17.992 45.457 35.929 1.00 0.00 SYST H +ATOM 2395 HD13 ILE X 150 19.204 44.878 34.958 1.00 0.00 SYST H +ATOM 2396 C ILE X 150 20.769 49.957 35.142 1.00 0.00 SYST C +ATOM 2397 O ILE X 150 20.094 50.844 35.598 1.00 0.00 SYST O +ATOM 2398 N MET X 151 21.369 50.075 33.935 1.00 0.00 SYST N +ATOM 2399 H MET X 151 21.948 49.285 33.689 1.00 0.00 SYST H +ATOM 2400 CA MET X 151 21.111 51.072 32.900 1.00 0.00 SYST C +ATOM 2401 HA MET X 151 20.170 51.602 33.044 1.00 0.00 SYST H +ATOM 2402 CB MET X 151 22.245 52.081 32.982 1.00 0.00 SYST C +ATOM 2403 HB2 MET X 151 21.888 53.035 32.594 1.00 0.00 SYST H +ATOM 2404 HB3 MET X 151 22.403 52.167 34.057 1.00 0.00 SYST H +ATOM 2405 CG MET X 151 23.594 51.509 32.402 1.00 0.00 SYST C +ATOM 2406 HG2 MET X 151 23.895 50.764 33.140 1.00 0.00 SYST H +ATOM 2407 HG3 MET X 151 23.479 51.024 31.433 1.00 0.00 SYST H +ATOM 2408 SD MET X 151 24.664 52.935 32.247 1.00 0.00 SYST S +ATOM 2409 CE MET X 151 23.910 53.888 30.913 1.00 0.00 SYST C +ATOM 2410 HE1 MET X 151 23.102 54.483 31.339 1.00 0.00 SYST H +ATOM 2411 HE2 MET X 151 24.632 54.530 30.408 1.00 0.00 SYST H +ATOM 2412 HE3 MET X 151 23.515 53.145 30.220 1.00 0.00 SYST H +ATOM 2413 C MET X 151 20.984 50.423 31.441 1.00 0.00 SYST C +ATOM 2414 O MET X 151 21.389 49.276 31.229 1.00 0.00 SYST O +ATOM 2415 N ALA X 152 20.450 51.117 30.485 1.00 0.00 SYST N +ATOM 2416 H ALA X 152 20.086 52.010 30.786 1.00 0.00 SYST H +ATOM 2417 CA ALA X 152 20.394 50.785 29.048 1.00 0.00 SYST C +ATOM 2418 HA ALA X 152 20.152 49.729 28.933 1.00 0.00 SYST H +ATOM 2419 CB ALA X 152 19.293 51.492 28.263 1.00 0.00 SYST C +ATOM 2420 HB1 ALA X 152 19.412 51.322 27.193 1.00 0.00 SYST H +ATOM 2421 HB2 ALA X 152 18.310 51.166 28.603 1.00 0.00 SYST H +ATOM 2422 HB3 ALA X 152 19.376 52.570 28.398 1.00 0.00 SYST H +ATOM 2423 C ALA X 152 21.679 50.952 28.287 1.00 0.00 SYST C +ATOM 2424 O ALA X 152 22.431 51.867 28.550 1.00 0.00 SYST O +ATOM 2425 N ASP X 153 21.920 50.050 27.317 1.00 0.00 SYST N +ATOM 2426 H ASP X 153 21.144 49.409 27.230 1.00 0.00 SYST H +ATOM 2427 CA ASP X 153 23.048 50.068 26.403 1.00 0.00 SYST C +ATOM 2428 HA ASP X 153 23.656 50.973 26.414 1.00 0.00 SYST H +ATOM 2429 CB ASP X 153 23.986 48.875 26.781 1.00 0.00 SYST C +ATOM 2430 HB2 ASP X 153 24.084 48.726 27.857 1.00 0.00 SYST H +ATOM 2431 HB3 ASP X 153 23.470 48.017 26.350 1.00 0.00 SYST H +ATOM 2432 CG ASP X 153 25.351 49.041 26.241 1.00 0.00 SYST C +ATOM 2433 OD1 ASP X 153 26.086 48.044 26.116 1.00 0.00 SYST O +ATOM 2434 OD2 ASP X 153 25.818 50.150 25.848 1.00 0.00 SYST O +ATOM 2435 C ASP X 153 22.469 50.063 24.996 1.00 0.00 SYST C +ATOM 2436 O ASP X 153 22.475 49.067 24.312 1.00 0.00 SYST O +ATOM 2437 N LYS X 154 21.883 51.232 24.690 1.00 0.00 SYST N +ATOM 2438 H LYS X 154 21.943 51.991 25.354 1.00 0.00 SYST H +ATOM 2439 CA LYS X 154 21.069 51.454 23.490 1.00 0.00 SYST C +ATOM 2440 HA LYS X 154 20.255 50.739 23.613 1.00 0.00 SYST H +ATOM 2441 CB LYS X 154 20.414 52.919 23.599 1.00 0.00 SYST C +ATOM 2442 HB2 LYS X 154 19.700 53.103 22.796 1.00 0.00 SYST H +ATOM 2443 HB3 LYS X 154 19.893 52.895 24.556 1.00 0.00 SYST H +ATOM 2444 CG LYS X 154 21.488 54.057 23.426 1.00 0.00 SYST C +ATOM 2445 HG2 LYS X 154 22.248 53.905 24.193 1.00 0.00 SYST H +ATOM 2446 HG3 LYS X 154 21.828 53.901 22.402 1.00 0.00 SYST H +ATOM 2447 CD LYS X 154 20.967 55.489 23.438 1.00 0.00 SYST C +ATOM 2448 HD2 LYS X 154 20.191 55.723 22.710 1.00 0.00 SYST H +ATOM 2449 HD3 LYS X 154 20.498 55.662 24.407 1.00 0.00 SYST H +ATOM 2450 CE LYS X 154 22.085 56.516 23.251 1.00 0.00 SYST C +ATOM 2451 HE2 LYS X 154 22.859 56.299 23.988 1.00 0.00 SYST H +ATOM 2452 HE3 LYS X 154 22.587 56.489 22.284 1.00 0.00 SYST H +ATOM 2453 NZ LYS X 154 21.525 57.908 23.277 1.00 0.00 SYST N +ATOM 2454 HZ1 LYS X 154 22.292 58.547 23.122 1.00 0.00 SYST H +ATOM 2455 HZ2 LYS X 154 20.780 58.011 22.603 1.00 0.00 SYST H +ATOM 2456 HZ3 LYS X 154 21.231 58.266 24.174 1.00 0.00 SYST H +ATOM 2457 C LYS X 154 21.822 51.108 22.259 1.00 0.00 SYST C +ATOM 2458 O LYS X 154 21.207 50.604 21.311 1.00 0.00 SYST O +ATOM 2459 N GLN X 155 23.121 51.456 22.116 1.00 0.00 SYST N +ATOM 2460 H GLN X 155 23.670 51.818 22.882 1.00 0.00 SYST H +ATOM 2461 CA GLN X 155 23.830 51.143 20.897 1.00 0.00 SYST C +ATOM 2462 HA GLN X 155 23.321 51.318 19.949 1.00 0.00 SYST H +ATOM 2463 CB GLN X 155 25.183 51.904 20.891 1.00 0.00 SYST C +ATOM 2464 HB2 GLN X 155 25.757 51.707 21.796 1.00 0.00 SYST H +ATOM 2465 HB3 GLN X 155 25.812 51.627 20.045 1.00 0.00 SYST H +ATOM 2466 CG GLN X 155 25.085 53.448 20.736 1.00 0.00 SYST C +ATOM 2467 HG2 GLN X 155 24.623 53.955 21.583 1.00 0.00 SYST H +ATOM 2468 HG3 GLN X 155 26.107 53.823 20.787 1.00 0.00 SYST H +ATOM 2469 CD GLN X 155 24.377 53.958 19.498 1.00 0.00 SYST C +ATOM 2470 OE1 GLN X 155 23.204 54.374 19.645 1.00 0.00 SYST O +ATOM 2471 NE2 GLN X 155 24.956 53.990 18.323 1.00 0.00 SYST N +ATOM 2472 HE21 GLN X 155 24.342 54.218 17.554 1.00 0.00 SYST H +ATOM 2473 HE22 GLN X 155 25.941 53.807 18.196 1.00 0.00 SYST H +ATOM 2474 C GLN X 155 24.048 49.609 20.680 1.00 0.00 SYST C +ATOM 2475 O GLN X 155 24.149 49.118 19.560 1.00 0.00 SYST O +ATOM 2476 N LYS X 156 24.042 48.864 21.806 1.00 0.00 SYST N +ATOM 2477 H LYS X 156 23.778 49.238 22.707 1.00 0.00 SYST H +ATOM 2478 CA LYS X 156 23.898 47.378 21.707 1.00 0.00 SYST C +ATOM 2479 HA LYS X 156 24.363 47.048 20.778 1.00 0.00 SYST H +ATOM 2480 CB LYS X 156 24.675 46.696 22.808 1.00 0.00 SYST C +ATOM 2481 HB2 LYS X 156 24.525 47.242 23.739 1.00 0.00 SYST H +ATOM 2482 HB3 LYS X 156 24.225 45.725 23.012 1.00 0.00 SYST H +ATOM 2483 CG LYS X 156 26.064 46.312 22.360 1.00 0.00 SYST C +ATOM 2484 HG2 LYS X 156 26.614 45.853 23.181 1.00 0.00 SYST H +ATOM 2485 HG3 LYS X 156 26.037 45.617 21.520 1.00 0.00 SYST H +ATOM 2486 CD LYS X 156 27.037 47.343 21.695 1.00 0.00 SYST C +ATOM 2487 HD2 LYS X 156 28.032 46.898 21.662 1.00 0.00 SYST H +ATOM 2488 HD3 LYS X 156 26.669 47.629 20.710 1.00 0.00 SYST H +ATOM 2489 CE LYS X 156 27.256 48.603 22.568 1.00 0.00 SYST C +ATOM 2490 HE2 LYS X 156 27.770 49.375 21.996 1.00 0.00 SYST H +ATOM 2491 HE3 LYS X 156 26.316 49.020 22.930 1.00 0.00 SYST H +ATOM 2492 NZ LYS X 156 28.033 48.309 23.826 1.00 0.00 SYST N +ATOM 2493 HZ1 LYS X 156 28.668 47.532 23.708 1.00 0.00 SYST H +ATOM 2494 HZ2 LYS X 156 28.605 49.095 24.102 1.00 0.00 SYST H +ATOM 2495 HZ3 LYS X 156 27.411 48.086 24.589 1.00 0.00 SYST H +ATOM 2496 C LYS X 156 22.452 46.856 21.565 1.00 0.00 SYST C +ATOM 2497 O LYS X 156 22.231 45.613 21.489 1.00 0.00 SYST O +ATOM 2498 N ASN X 157 21.431 47.708 21.659 1.00 0.00 SYST N +ATOM 2499 H ASN X 157 21.644 48.688 21.779 1.00 0.00 SYST H +ATOM 2500 CA ASN X 157 20.044 47.329 21.950 1.00 0.00 SYST C +ATOM 2501 HA ASN X 157 19.545 48.280 22.135 1.00 0.00 SYST H +ATOM 2502 CB ASN X 157 19.384 46.770 20.690 1.00 0.00 SYST C +ATOM 2503 HB2 ASN X 157 19.803 45.843 20.300 1.00 0.00 SYST H +ATOM 2504 HB3 ASN X 157 18.343 46.629 20.981 1.00 0.00 SYST H +ATOM 2505 CG ASN X 157 19.332 47.735 19.563 1.00 0.00 SYST C +ATOM 2506 OD1 ASN X 157 19.404 48.955 19.627 1.00 0.00 SYST O +ATOM 2507 ND2 ASN X 157 19.058 47.132 18.418 1.00 0.00 SYST N +ATOM 2508 HD21 ASN X 157 19.128 47.643 17.549 1.00 0.00 SYST H +ATOM 2509 HD22 ASN X 157 18.740 46.175 18.376 1.00 0.00 SYST H +ATOM 2510 C ASN X 157 19.951 46.502 23.236 1.00 0.00 SYST C +ATOM 2511 O ASN X 157 19.299 45.467 23.191 1.00 0.00 SYST O +ATOM 2512 N GLY X 158 20.514 46.904 24.360 1.00 0.00 SYST N +ATOM 2513 H GLY X 158 21.063 47.750 24.304 1.00 0.00 SYST H +ATOM 2514 CA GLY X 158 20.534 46.079 25.548 1.00 0.00 SYST C +ATOM 2515 HA2 GLY X 158 19.600 45.520 25.610 1.00 0.00 SYST H +ATOM 2516 HA3 GLY X 158 21.362 45.375 25.463 1.00 0.00 SYST H +ATOM 2517 C GLY X 158 20.715 46.774 26.900 1.00 0.00 SYST C +ATOM 2518 O GLY X 158 20.098 47.812 27.053 1.00 0.00 SYST O +ATOM 2519 N ILE X 159 21.348 46.227 27.917 1.00 0.00 SYST N +ATOM 2520 H ILE X 159 21.864 45.375 27.752 1.00 0.00 SYST H +ATOM 2521 CA ILE X 159 21.513 46.742 29.271 1.00 0.00 SYST C +ATOM 2522 HA ILE X 159 21.565 47.831 29.267 1.00 0.00 SYST H +ATOM 2523 CB ILE X 159 20.354 46.255 30.211 1.00 0.00 SYST C +ATOM 2524 HB ILE X 159 20.497 46.671 31.209 1.00 0.00 SYST H +ATOM 2525 CG2 ILE X 159 18.978 46.595 29.767 1.00 0.00 SYST C +ATOM 2526 HG21 ILE X 159 18.689 46.069 28.857 1.00 0.00 SYST H +ATOM 2527 HG22 ILE X 159 18.341 46.284 30.595 1.00 0.00 SYST H +ATOM 2528 HG23 ILE X 159 18.769 47.659 29.650 1.00 0.00 SYST H +ATOM 2529 CG1 ILE X 159 20.441 44.697 30.409 1.00 0.00 SYST C +ATOM 2530 HG12 ILE X 159 20.012 44.152 29.568 1.00 0.00 SYST H +ATOM 2531 HG13 ILE X 159 21.488 44.461 30.601 1.00 0.00 SYST H +ATOM 2532 CD1 ILE X 159 19.675 44.161 31.644 1.00 0.00 SYST C +ATOM 2533 HD11 ILE X 159 19.732 43.073 31.662 1.00 0.00 SYST H +ATOM 2534 HD12 ILE X 159 20.201 44.481 32.543 1.00 0.00 SYST H +ATOM 2535 HD13 ILE X 159 18.603 44.359 31.638 1.00 0.00 SYST H +ATOM 2536 C ILE X 159 22.916 46.416 29.882 1.00 0.00 SYST C +ATOM 2537 O ILE X 159 23.477 45.395 29.616 1.00 0.00 SYST O +ATOM 2538 N LYS X 160 23.437 47.221 30.817 1.00 0.00 SYST N +ATOM 2539 H LYS X 160 22.953 48.054 31.120 1.00 0.00 SYST H +ATOM 2540 CA LYS X 160 24.623 46.898 31.555 1.00 0.00 SYST C +ATOM 2541 HA LYS X 160 24.773 45.826 31.424 1.00 0.00 SYST H +ATOM 2542 CB LYS X 160 25.849 47.708 31.013 1.00 0.00 SYST C +ATOM 2543 HB2 LYS X 160 26.675 47.493 31.691 1.00 0.00 SYST H +ATOM 2544 HB3 LYS X 160 26.064 47.379 29.997 1.00 0.00 SYST H +ATOM 2545 CG LYS X 160 25.815 49.238 30.966 1.00 0.00 SYST C +ATOM 2546 HG2 LYS X 160 24.848 49.558 30.578 1.00 0.00 SYST H +ATOM 2547 HG3 LYS X 160 26.054 49.703 31.923 1.00 0.00 SYST H +ATOM 2548 CD LYS X 160 26.864 49.888 30.050 1.00 0.00 SYST C +ATOM 2549 HD2 LYS X 160 27.828 49.421 30.253 1.00 0.00 SYST H +ATOM 2550 HD3 LYS X 160 26.520 49.562 29.068 1.00 0.00 SYST H +ATOM 2551 CE LYS X 160 27.007 51.390 30.317 1.00 0.00 SYST C +ATOM 2552 HE2 LYS X 160 26.084 51.946 30.151 1.00 0.00 SYST H +ATOM 2553 HE3 LYS X 160 27.135 51.534 31.390 1.00 0.00 SYST H +ATOM 2554 NZ LYS X 160 28.083 52.045 29.450 1.00 0.00 SYST N +ATOM 2555 HZ1 LYS X 160 28.966 51.635 29.719 1.00 0.00 SYST H +ATOM 2556 HZ2 LYS X 160 27.956 51.869 28.463 1.00 0.00 SYST H +ATOM 2557 HZ3 LYS X 160 28.235 53.035 29.584 1.00 0.00 SYST H +ATOM 2558 C LYS X 160 24.405 47.124 33.036 1.00 0.00 SYST C +ATOM 2559 O LYS X 160 23.603 47.993 33.423 1.00 0.00 SYST O +ATOM 2560 N VAL X 161 25.092 46.347 33.848 1.00 0.00 SYST N +ATOM 2561 H VAL X 161 25.746 45.697 33.437 1.00 0.00 SYST H +ATOM 2562 CA VAL X 161 24.797 46.166 35.322 1.00 0.00 SYST C +ATOM 2563 HA VAL X 161 24.275 47.083 35.596 1.00 0.00 SYST H +ATOM 2564 CB VAL X 161 23.864 44.926 35.397 1.00 0.00 SYST C +ATOM 2565 HB VAL X 161 24.384 44.097 34.916 1.00 0.00 SYST H +ATOM 2566 CG1 VAL X 161 23.590 44.472 36.864 1.00 0.00 SYST C +ATOM 2567 HG11 VAL X 161 23.088 43.518 36.703 1.00 0.00 SYST H +ATOM 2568 HG12 VAL X 161 24.547 44.360 37.372 1.00 0.00 SYST H +ATOM 2569 HG13 VAL X 161 22.961 45.247 37.302 1.00 0.00 SYST H +ATOM 2570 CG2 VAL X 161 22.573 45.021 34.684 1.00 0.00 SYST C +ATOM 2571 HG21 VAL X 161 22.791 44.810 33.637 1.00 0.00 SYST H +ATOM 2572 HG22 VAL X 161 21.779 44.386 35.077 1.00 0.00 SYST H +ATOM 2573 HG23 VAL X 161 22.167 46.014 34.879 1.00 0.00 SYST H +ATOM 2574 C VAL X 161 25.999 45.896 36.172 1.00 0.00 SYST C +ATOM 2575 O VAL X 161 26.830 45.017 35.901 1.00 0.00 SYST O +ATOM 2576 N ASN X 162 26.186 46.744 37.192 1.00 0.00 SYST N +ATOM 2577 H ASN X 162 25.509 47.467 37.385 1.00 0.00 SYST H +ATOM 2578 CA ASN X 162 27.369 46.786 37.953 1.00 0.00 SYST C +ATOM 2579 HA ASN X 162 28.067 45.985 37.706 1.00 0.00 SYST H +ATOM 2580 CB ASN X 162 28.160 48.115 37.560 1.00 0.00 SYST C +ATOM 2581 HB2 ASN X 162 28.573 47.891 36.576 1.00 0.00 SYST H +ATOM 2582 HB3 ASN X 162 27.641 49.070 37.475 1.00 0.00 SYST H +ATOM 2583 CG ASN X 162 29.333 48.298 38.555 1.00 0.00 SYST C +ATOM 2584 OD1 ASN X 162 29.886 47.337 39.122 1.00 0.00 SYST O +ATOM 2585 ND2 ASN X 162 29.621 49.549 38.890 1.00 0.00 SYST N +ATOM 2586 HD21 ASN X 162 30.470 49.764 39.394 1.00 0.00 SYST H +ATOM 2587 HD22 ASN X 162 29.207 50.301 38.359 1.00 0.00 SYST H +ATOM 2588 C ASN X 162 27.022 46.814 39.442 1.00 0.00 SYST C +ATOM 2589 O ASN X 162 26.171 47.701 39.828 1.00 0.00 SYST O +ATOM 2590 N PHE X 163 27.513 45.893 40.296 1.00 0.00 SYST N +ATOM 2591 H PHE X 163 28.078 45.223 39.795 1.00 0.00 SYST H +ATOM 2592 CA PHE X 163 26.999 45.677 41.711 1.00 0.00 SYST C +ATOM 2593 HA PHE X 163 27.021 46.637 42.227 1.00 0.00 SYST H +ATOM 2594 CB PHE X 163 25.635 45.007 41.668 1.00 0.00 SYST C +ATOM 2595 HB2 PHE X 163 25.268 44.914 42.690 1.00 0.00 SYST H +ATOM 2596 HB3 PHE X 163 24.853 45.632 41.236 1.00 0.00 SYST H +ATOM 2597 CG PHE X 163 25.572 43.676 41.072 1.00 0.00 SYST C +ATOM 2598 CD1 PHE X 163 25.657 43.551 39.660 1.00 0.00 SYST C +ATOM 2599 HD1 PHE X 163 25.857 44.387 39.005 1.00 0.00 SYST H +ATOM 2600 CE1 PHE X 163 25.556 42.313 38.994 1.00 0.00 SYST C +ATOM 2601 HE1 PHE X 163 25.632 42.391 37.920 1.00 0.00 SYST H +ATOM 2602 CZ PHE X 163 25.307 41.126 39.703 1.00 0.00 SYST C +ATOM 2603 HZ PHE X 163 25.291 40.154 39.233 1.00 0.00 SYST H +ATOM 2604 CE2 PHE X 163 25.234 41.165 41.151 1.00 0.00 SYST C +ATOM 2605 HE2 PHE X 163 25.030 40.268 41.715 1.00 0.00 SYST H +ATOM 2606 CD2 PHE X 163 25.373 42.435 41.794 1.00 0.00 SYST C +ATOM 2607 HD2 PHE X 163 25.434 42.462 42.872 1.00 0.00 SYST H +ATOM 2608 C PHE X 163 28.113 44.860 42.551 1.00 0.00 SYST C +ATOM 2609 O PHE X 163 29.208 44.609 41.976 1.00 0.00 SYST O +ATOM 2610 N LYS X 164 27.809 44.489 43.839 1.00 0.00 SYST N +ATOM 2611 H LYS X 164 27.013 44.833 44.355 1.00 0.00 SYST H +ATOM 2612 CA LYS X 164 28.830 43.845 44.773 1.00 0.00 SYST C +ATOM 2613 HA LYS X 164 29.483 43.207 44.178 1.00 0.00 SYST H +ATOM 2614 CB LYS X 164 29.680 44.882 45.559 1.00 0.00 SYST C +ATOM 2615 HB2 LYS X 164 29.089 45.798 45.583 1.00 0.00 SYST H +ATOM 2616 HB3 LYS X 164 29.784 44.492 46.571 1.00 0.00 SYST H +ATOM 2617 CG LYS X 164 31.133 45.007 44.945 1.00 0.00 SYST C +ATOM 2618 HG2 LYS X 164 31.697 44.122 45.241 1.00 0.00 SYST H +ATOM 2619 HG3 LYS X 164 31.127 45.167 43.867 1.00 0.00 SYST H +ATOM 2620 CD LYS X 164 31.850 46.259 45.633 1.00 0.00 SYST C +ATOM 2621 HD2 LYS X 164 31.216 47.140 45.531 1.00 0.00 SYST H +ATOM 2622 HD3 LYS X 164 32.108 45.989 46.657 1.00 0.00 SYST H +ATOM 2623 CE LYS X 164 33.229 46.531 44.972 1.00 0.00 SYST C +ATOM 2624 HE2 LYS X 164 33.650 47.255 45.669 1.00 0.00 SYST H +ATOM 2625 HE3 LYS X 164 33.750 45.577 45.059 1.00 0.00 SYST H +ATOM 2626 NZ LYS X 164 33.118 47.103 43.575 1.00 0.00 SYST N +ATOM 2627 HZ1 LYS X 164 32.662 46.460 42.944 1.00 0.00 SYST H +ATOM 2628 HZ2 LYS X 164 32.591 47.962 43.641 1.00 0.00 SYST H +ATOM 2629 HZ3 LYS X 164 34.010 47.432 43.233 1.00 0.00 SYST H +ATOM 2630 C LYS X 164 28.095 42.958 45.741 1.00 0.00 SYST C +ATOM 2631 O LYS X 164 27.094 43.397 46.329 1.00 0.00 SYST O +ATOM 2632 N ILE X 165 28.730 41.778 46.062 1.00 0.00 SYST N +ATOM 2633 H ILE X 165 29.597 41.569 45.588 1.00 0.00 SYST H +ATOM 2634 CA ILE X 165 28.223 40.810 47.083 1.00 0.00 SYST C +ATOM 2635 HA ILE X 165 27.395 41.295 47.602 1.00 0.00 SYST H +ATOM 2636 CB ILE X 165 27.568 39.592 46.451 1.00 0.00 SYST C +ATOM 2637 HB ILE X 165 28.353 39.268 45.768 1.00 0.00 SYST H +ATOM 2638 CG2 ILE X 165 27.523 38.324 47.289 1.00 0.00 SYST C +ATOM 2639 HG21 ILE X 165 26.828 38.544 48.099 1.00 0.00 SYST H +ATOM 2640 HG22 ILE X 165 27.120 37.598 46.582 1.00 0.00 SYST H +ATOM 2641 HG23 ILE X 165 28.449 37.984 47.753 1.00 0.00 SYST H +ATOM 2642 CG1 ILE X 165 26.216 39.855 45.941 1.00 0.00 SYST C +ATOM 2643 HG12 ILE X 165 25.529 39.619 46.754 1.00 0.00 SYST H +ATOM 2644 HG13 ILE X 165 26.043 40.920 45.785 1.00 0.00 SYST H +ATOM 2645 CD1 ILE X 165 25.745 39.096 44.721 1.00 0.00 SYST C +ATOM 2646 HD11 ILE X 165 26.264 39.494 43.849 1.00 0.00 SYST H +ATOM 2647 HD12 ILE X 165 26.005 38.040 44.802 1.00 0.00 SYST H +ATOM 2648 HD13 ILE X 165 24.665 39.213 44.633 1.00 0.00 SYST H +ATOM 2649 C ILE X 165 29.362 40.555 48.153 1.00 0.00 SYST C +ATOM 2650 O ILE X 165 30.382 40.090 47.759 1.00 0.00 SYST O +ATOM 2651 N ARG X 166 29.029 40.787 49.386 1.00 0.00 SYST N +ATOM 2652 H ARG X 166 28.201 41.347 49.533 1.00 0.00 SYST H +ATOM 2653 CA ARG X 166 29.743 40.153 50.497 1.00 0.00 SYST C +ATOM 2654 HA ARG X 166 30.803 40.183 50.244 1.00 0.00 SYST H +ATOM 2655 CB ARG X 166 29.560 40.979 51.827 1.00 0.00 SYST C +ATOM 2656 HB2 ARG X 166 28.561 40.968 52.262 1.00 0.00 SYST H +ATOM 2657 HB3 ARG X 166 30.216 40.662 52.637 1.00 0.00 SYST H +ATOM 2658 CG ARG X 166 29.855 42.428 51.639 1.00 0.00 SYST C +ATOM 2659 HG2 ARG X 166 30.859 42.536 51.228 1.00 0.00 SYST H +ATOM 2660 HG3 ARG X 166 29.229 42.935 50.905 1.00 0.00 SYST H +ATOM 2661 CD ARG X 166 29.783 43.188 52.977 1.00 0.00 SYST C +ATOM 2662 HD2 ARG X 166 28.756 43.125 53.336 1.00 0.00 SYST H +ATOM 2663 HD3 ARG X 166 30.525 42.719 53.623 1.00 0.00 SYST H +ATOM 2664 NE ARG X 166 30.191 44.602 52.735 1.00 0.00 SYST N +ATOM 2665 HE ARG X 166 30.626 44.786 51.842 1.00 0.00 SYST H +ATOM 2666 CZ ARG X 166 29.996 45.652 53.531 1.00 0.00 SYST C +ATOM 2667 NH1 ARG X 166 29.454 45.577 54.688 1.00 0.00 SYST N +ATOM 2668 HH11 ARG X 166 29.292 44.676 55.115 1.00 0.00 SYST H +ATOM 2669 HH12 ARG X 166 29.184 46.424 55.167 1.00 0.00 SYST H +ATOM 2670 NH2 ARG X 166 30.278 46.860 53.186 1.00 0.00 SYST N +ATOM 2671 HH21 ARG X 166 30.803 47.044 52.343 1.00 0.00 SYST H +ATOM 2672 HH22 ARG X 166 30.154 47.596 53.867 1.00 0.00 SYST H +ATOM 2673 C ARG X 166 29.332 38.678 50.745 1.00 0.00 SYST C +ATOM 2674 O ARG X 166 28.117 38.449 51.035 1.00 0.00 SYST O +ATOM 2675 N HID X 167 30.228 37.689 50.528 1.00 0.00 SYST N +ATOM 2676 H HID X 167 31.149 37.982 50.236 1.00 0.00 SYST H +ATOM 2677 CA HID X 167 30.096 36.345 51.026 1.00 0.00 SYST C +ATOM 2678 HA HID X 167 29.030 36.134 51.114 1.00 0.00 SYST H +ATOM 2679 CB HID X 167 30.787 35.365 50.068 1.00 0.00 SYST C +ATOM 2680 HB2 HID X 167 31.804 35.731 49.926 1.00 0.00 SYST H +ATOM 2681 HB3 HID X 167 30.769 34.364 50.498 1.00 0.00 SYST H +ATOM 2682 CG HID X 167 30.210 35.185 48.705 1.00 0.00 SYST C +ATOM 2683 ND1 HID X 167 28.905 34.891 48.473 1.00 0.00 SYST N +ATOM 2684 HD1 HID X 167 28.104 34.803 49.082 1.00 0.00 SYST H +ATOM 2685 CE1 HID X 167 28.706 34.874 47.121 1.00 0.00 SYST C +ATOM 2686 HE1 HID X 167 27.748 34.623 46.690 1.00 0.00 SYST H +ATOM 2687 NE2 HID X 167 29.878 35.084 46.488 1.00 0.00 SYST N +ATOM 2688 CD2 HID X 167 30.883 35.387 47.497 1.00 0.00 SYST C +ATOM 2689 HD2 HID X 167 31.916 35.669 47.355 1.00 0.00 SYST H +ATOM 2690 C HID X 167 30.586 36.242 52.478 1.00 0.00 SYST C +ATOM 2691 O HID X 167 31.372 36.998 52.999 1.00 0.00 SYST O +ATOM 2692 N ASN X 168 29.993 35.292 53.169 1.00 0.00 SYST N +ATOM 2693 H ASN X 168 29.347 34.658 52.723 1.00 0.00 SYST H +ATOM 2694 CA ASN X 168 30.081 35.142 54.664 1.00 0.00 SYST C +ATOM 2695 HA ASN X 168 30.488 36.064 55.079 1.00 0.00 SYST H +ATOM 2696 CB ASN X 168 28.685 34.985 55.277 1.00 0.00 SYST C +ATOM 2697 HB2 ASN X 168 28.293 34.027 54.935 1.00 0.00 SYST H +ATOM 2698 HB3 ASN X 168 28.810 34.841 56.350 1.00 0.00 SYST H +ATOM 2699 CG ASN X 168 27.572 36.027 55.004 1.00 0.00 SYST C +ATOM 2700 OD1 ASN X 168 26.908 36.042 53.982 1.00 0.00 SYST O +ATOM 2701 ND2 ASN X 168 27.250 36.720 56.026 1.00 0.00 SYST N +ATOM 2702 HD21 ASN X 168 26.598 37.475 55.866 1.00 0.00 SYST H +ATOM 2703 HD22 ASN X 168 27.775 36.597 56.880 1.00 0.00 SYST H +ATOM 2704 C ASN X 168 31.135 34.064 55.088 1.00 0.00 SYST C +ATOM 2705 O ASN X 168 30.871 32.861 54.943 1.00 0.00 SYST O +ATOM 2706 N ILE X 169 32.282 34.460 55.562 1.00 0.00 SYST N +ATOM 2707 H ILE X 169 32.298 35.405 55.919 1.00 0.00 SYST H +ATOM 2708 CA ILE X 169 33.418 33.655 56.026 1.00 0.00 SYST C +ATOM 2709 HA ILE X 169 33.628 32.940 55.230 1.00 0.00 SYST H +ATOM 2710 CB ILE X 169 34.772 34.424 56.151 1.00 0.00 SYST C +ATOM 2711 HB ILE X 169 34.659 35.176 56.932 1.00 0.00 SYST H +ATOM 2712 CG2 ILE X 169 35.999 33.592 56.513 1.00 0.00 SYST C +ATOM 2713 HG21 ILE X 169 35.734 32.918 57.328 1.00 0.00 SYST H +ATOM 2714 HG22 ILE X 169 36.328 32.979 55.675 1.00 0.00 SYST H +ATOM 2715 HG23 ILE X 169 36.849 34.149 56.906 1.00 0.00 SYST H +ATOM 2716 CG1 ILE X 169 35.104 35.303 54.927 1.00 0.00 SYST C +ATOM 2717 HG12 ILE X 169 34.967 34.695 54.033 1.00 0.00 SYST H +ATOM 2718 HG13 ILE X 169 34.440 36.163 55.007 1.00 0.00 SYST H +ATOM 2719 CD1 ILE X 169 36.555 35.891 54.895 1.00 0.00 SYST C +ATOM 2720 HD11 ILE X 169 36.804 36.523 55.747 1.00 0.00 SYST H +ATOM 2721 HD12 ILE X 169 37.379 35.193 54.746 1.00 0.00 SYST H +ATOM 2722 HD13 ILE X 169 36.697 36.595 54.075 1.00 0.00 SYST H +ATOM 2723 C ILE X 169 32.997 32.910 57.383 1.00 0.00 SYST C +ATOM 2724 O ILE X 169 32.417 33.449 58.278 1.00 0.00 SYST O +ATOM 2725 N GLU X 170 33.398 31.612 57.464 1.00 0.00 SYST N +ATOM 2726 H GLU X 170 33.820 31.235 56.627 1.00 0.00 SYST H +ATOM 2727 CA GLU X 170 33.124 30.849 58.692 1.00 0.00 SYST C +ATOM 2728 HA GLU X 170 32.127 31.127 59.035 1.00 0.00 SYST H +ATOM 2729 CB GLU X 170 33.190 29.292 58.365 1.00 0.00 SYST C +ATOM 2730 HB2 GLU X 170 32.855 28.654 59.182 1.00 0.00 SYST H +ATOM 2731 HB3 GLU X 170 32.489 29.084 57.556 1.00 0.00 SYST H +ATOM 2732 CG GLU X 170 34.502 28.785 57.898 1.00 0.00 SYST C +ATOM 2733 HG2 GLU X 170 34.327 27.902 57.282 1.00 0.00 SYST H +ATOM 2734 HG3 GLU X 170 35.068 29.524 57.332 1.00 0.00 SYST H +ATOM 2735 CD GLU X 170 35.358 28.330 59.023 1.00 0.00 SYST C +ATOM 2736 OE1 GLU X 170 36.406 28.910 59.236 1.00 0.00 SYST O +ATOM 2737 OE2 GLU X 170 34.992 27.299 59.701 1.00 0.00 SYST O +ATOM 2738 C GLU X 170 34.119 31.124 59.848 1.00 0.00 SYST C +ATOM 2739 O GLU X 170 33.866 30.674 60.999 1.00 0.00 SYST O +ATOM 2740 N ASP X 171 35.120 32.012 59.758 1.00 0.00 SYST N +ATOM 2741 H ASP X 171 35.356 32.350 58.836 1.00 0.00 SYST H +ATOM 2742 CA ASP X 171 35.791 32.584 60.949 1.00 0.00 SYST C +ATOM 2743 HA ASP X 171 35.769 31.829 61.735 1.00 0.00 SYST H +ATOM 2744 CB ASP X 171 37.210 33.000 60.637 1.00 0.00 SYST C +ATOM 2745 HB2 ASP X 171 37.703 33.370 61.535 1.00 0.00 SYST H +ATOM 2746 HB3 ASP X 171 37.855 32.170 60.348 1.00 0.00 SYST H +ATOM 2747 CG ASP X 171 37.270 34.155 59.627 1.00 0.00 SYST C +ATOM 2748 OD1 ASP X 171 36.333 34.985 59.512 1.00 0.00 SYST O +ATOM 2749 OD2 ASP X 171 38.258 34.369 58.963 1.00 0.00 SYST O +ATOM 2750 C ASP X 171 34.995 33.723 61.635 1.00 0.00 SYST C +ATOM 2751 O ASP X 171 35.357 34.218 62.741 1.00 0.00 SYST O +ATOM 2752 N GLY X 172 33.885 34.112 60.966 1.00 0.00 SYST N +ATOM 2753 H GLY X 172 33.556 33.627 60.144 1.00 0.00 SYST H +ATOM 2754 CA GLY X 172 33.012 35.226 61.324 1.00 0.00 SYST C +ATOM 2755 HA2 GLY X 172 31.965 35.003 61.121 1.00 0.00 SYST H +ATOM 2756 HA3 GLY X 172 32.993 35.403 62.399 1.00 0.00 SYST H +ATOM 2757 C GLY X 172 33.315 36.605 60.630 1.00 0.00 SYST C +ATOM 2758 O GLY X 172 32.562 37.510 60.939 1.00 0.00 SYST O +ATOM 2759 N SER X 173 34.275 36.775 59.634 1.00 0.00 SYST N +ATOM 2760 H SER X 173 34.860 35.988 59.392 1.00 0.00 SYST H +ATOM 2761 CA SER X 173 34.450 38.068 58.894 1.00 0.00 SYST C +ATOM 2762 HA SER X 173 33.962 38.828 59.505 1.00 0.00 SYST H +ATOM 2763 CB SER X 173 35.955 38.303 58.737 1.00 0.00 SYST C +ATOM 2764 HB2 SER X 173 36.250 39.243 58.270 1.00 0.00 SYST H +ATOM 2765 HB3 SER X 173 36.428 38.380 59.716 1.00 0.00 SYST H +ATOM 2766 OG SER X 173 36.524 37.308 57.936 1.00 0.00 SYST O +ATOM 2767 HG SER X 173 36.560 36.538 58.508 1.00 0.00 SYST H +ATOM 2768 C SER X 173 33.635 38.000 57.543 1.00 0.00 SYST C +ATOM 2769 O SER X 173 32.677 37.226 57.417 1.00 0.00 SYST O +ATOM 2770 N VAL X 174 34.097 38.640 56.490 1.00 0.00 SYST N +ATOM 2771 H VAL X 174 34.904 39.241 56.571 1.00 0.00 SYST H +ATOM 2772 CA VAL X 174 33.384 38.538 55.157 1.00 0.00 SYST C +ATOM 2773 HA VAL X 174 32.908 37.559 55.093 1.00 0.00 SYST H +ATOM 2774 CB VAL X 174 32.423 39.711 54.898 1.00 0.00 SYST C +ATOM 2775 HB VAL X 174 32.216 39.826 53.834 1.00 0.00 SYST H +ATOM 2776 CG1 VAL X 174 31.010 39.444 55.557 1.00 0.00 SYST C +ATOM 2777 HG11 VAL X 174 30.505 38.526 55.257 1.00 0.00 SYST H +ATOM 2778 HG12 VAL X 174 31.103 39.398 56.642 1.00 0.00 SYST H +ATOM 2779 HG13 VAL X 174 30.353 40.297 55.385 1.00 0.00 SYST H +ATOM 2780 CG2 VAL X 174 32.909 41.110 55.316 1.00 0.00 SYST C +ATOM 2781 HG21 VAL X 174 32.407 41.772 54.611 1.00 0.00 SYST H +ATOM 2782 HG22 VAL X 174 32.402 41.393 56.239 1.00 0.00 SYST H +ATOM 2783 HG23 VAL X 174 33.974 41.296 55.173 1.00 0.00 SYST H +ATOM 2784 C VAL X 174 34.479 38.480 54.051 1.00 0.00 SYST C +ATOM 2785 O VAL X 174 35.655 39.004 54.241 1.00 0.00 SYST O +ATOM 2786 N GLN X 175 34.133 37.849 52.936 1.00 0.00 SYST N +ATOM 2787 H GLN X 175 33.187 37.497 52.951 1.00 0.00 SYST H +ATOM 2788 CA GLN X 175 34.858 37.694 51.613 1.00 0.00 SYST C +ATOM 2789 HA GLN X 175 35.914 37.962 51.641 1.00 0.00 SYST H +ATOM 2790 CB GLN X 175 34.774 36.154 51.213 1.00 0.00 SYST C +ATOM 2791 HB2 GLN X 175 35.468 35.559 51.807 1.00 0.00 SYST H +ATOM 2792 HB3 GLN X 175 33.797 35.685 51.333 1.00 0.00 SYST H +ATOM 2793 CG GLN X 175 35.190 36.035 49.674 1.00 0.00 SYST C +ATOM 2794 HG2 GLN X 175 35.086 35.007 49.326 1.00 0.00 SYST H +ATOM 2795 HG3 GLN X 175 34.484 36.581 49.047 1.00 0.00 SYST H +ATOM 2796 CD GLN X 175 36.635 36.384 49.361 1.00 0.00 SYST C +ATOM 2797 OE1 GLN X 175 37.575 35.765 49.776 1.00 0.00 SYST O +ATOM 2798 NE2 GLN X 175 36.929 37.356 48.543 1.00 0.00 SYST N +ATOM 2799 HE21 GLN X 175 37.911 37.590 48.580 1.00 0.00 SYST H +ATOM 2800 HE22 GLN X 175 36.265 37.983 48.112 1.00 0.00 SYST H +ATOM 2801 C GLN X 175 34.176 38.571 50.603 1.00 0.00 SYST C +ATOM 2802 O GLN X 175 32.969 38.383 50.302 1.00 0.00 SYST O +ATOM 2803 N LEU X 176 34.785 39.685 50.209 1.00 0.00 SYST N +ATOM 2804 H LEU X 176 35.694 39.901 50.591 1.00 0.00 SYST H +ATOM 2805 CA LEU X 176 34.236 40.663 49.310 1.00 0.00 SYST C +ATOM 2806 HA LEU X 176 33.181 40.856 49.509 1.00 0.00 SYST H +ATOM 2807 CB LEU X 176 34.934 42.019 49.506 1.00 0.00 SYST C +ATOM 2808 HB2 LEU X 176 35.920 41.947 49.964 1.00 0.00 SYST H +ATOM 2809 HB3 LEU X 176 34.987 42.466 48.513 1.00 0.00 SYST H +ATOM 2810 CG LEU X 176 34.114 43.024 50.343 1.00 0.00 SYST C +ATOM 2811 HG LEU X 176 33.114 42.917 49.923 1.00 0.00 SYST H +ATOM 2812 CD1 LEU X 176 34.065 42.601 51.823 1.00 0.00 SYST C +ATOM 2813 HD11 LEU X 176 33.573 41.645 52.004 1.00 0.00 SYST H +ATOM 2814 HD12 LEU X 176 35.080 42.532 52.213 1.00 0.00 SYST H +ATOM 2815 HD13 LEU X 176 33.515 43.342 52.403 1.00 0.00 SYST H +ATOM 2816 CD2 LEU X 176 34.614 44.481 50.320 1.00 0.00 SYST C +ATOM 2817 HD21 LEU X 176 35.690 44.359 50.443 1.00 0.00 SYST H +ATOM 2818 HD22 LEU X 176 34.459 44.920 49.334 1.00 0.00 SYST H +ATOM 2819 HD23 LEU X 176 34.085 45.158 50.992 1.00 0.00 SYST H +ATOM 2820 C LEU X 176 34.383 40.198 47.831 1.00 0.00 SYST C +ATOM 2821 O LEU X 176 35.437 39.775 47.412 1.00 0.00 SYST O +ATOM 2822 N ALA X 177 33.294 40.356 47.088 1.00 0.00 SYST N +ATOM 2823 H ALA X 177 32.475 40.512 47.657 1.00 0.00 SYST H +ATOM 2824 CA ALA X 177 33.249 39.933 45.672 1.00 0.00 SYST C +ATOM 2825 HA ALA X 177 34.248 39.897 45.238 1.00 0.00 SYST H +ATOM 2826 CB ALA X 177 32.599 38.559 45.473 1.00 0.00 SYST C +ATOM 2827 HB1 ALA X 177 32.725 38.099 44.493 1.00 0.00 SYST H +ATOM 2828 HB2 ALA X 177 33.004 37.883 46.226 1.00 0.00 SYST H +ATOM 2829 HB3 ALA X 177 31.547 38.594 45.757 1.00 0.00 SYST H +ATOM 2830 C ALA X 177 32.504 40.972 44.793 1.00 0.00 SYST C +ATOM 2831 O ALA X 177 31.559 41.630 45.245 1.00 0.00 SYST O +ATOM 2832 N ASP X 178 33.065 41.276 43.602 1.00 0.00 SYST N +ATOM 2833 H ASP X 178 33.947 40.856 43.343 1.00 0.00 SYST H +ATOM 2834 CA ASP X 178 32.694 42.334 42.683 1.00 0.00 SYST C +ATOM 2835 HA ASP X 178 31.845 42.872 43.106 1.00 0.00 SYST H +ATOM 2836 CB ASP X 178 33.902 43.239 42.574 1.00 0.00 SYST C +ATOM 2837 HB2 ASP X 178 34.195 43.489 43.594 1.00 0.00 SYST H +ATOM 2838 HB3 ASP X 178 34.736 42.720 42.102 1.00 0.00 SYST H +ATOM 2839 CG ASP X 178 33.675 44.551 41.833 1.00 0.00 SYST C +ATOM 2840 OD1 ASP X 178 32.550 45.073 41.730 1.00 0.00 SYST O +ATOM 2841 OD2 ASP X 178 34.620 45.252 41.443 1.00 0.00 SYST O +ATOM 2842 C ASP X 178 32.135 41.885 41.313 1.00 0.00 SYST C +ATOM 2843 O ASP X 178 32.871 41.178 40.678 1.00 0.00 SYST O +ATOM 2844 N HIE X 179 30.940 42.357 40.903 1.00 0.00 SYST N +ATOM 2845 H HIE X 179 30.385 42.994 41.456 1.00 0.00 SYST H +ATOM 2846 CA HIE X 179 30.193 41.753 39.823 1.00 0.00 SYST C +ATOM 2847 HA HIE X 179 30.761 40.914 39.422 1.00 0.00 SYST H +ATOM 2848 CB HIE X 179 28.866 41.241 40.388 1.00 0.00 SYST C +ATOM 2849 HB2 HIE X 179 28.224 42.049 40.739 1.00 0.00 SYST H +ATOM 2850 HB3 HIE X 179 28.435 40.695 39.550 1.00 0.00 SYST H +ATOM 2851 CG HIE X 179 28.953 40.350 41.622 1.00 0.00 SYST C +ATOM 2852 ND1 HIE X 179 29.457 40.675 42.874 1.00 0.00 SYST N +ATOM 2853 CE1 HIE X 179 29.496 39.501 43.501 1.00 0.00 SYST C +ATOM 2854 HE1 HIE X 179 29.900 39.488 44.502 1.00 0.00 SYST H +ATOM 2855 NE2 HIE X 179 29.091 38.456 42.748 1.00 0.00 SYST N +ATOM 2856 HE2 HIE X 179 29.183 37.475 42.973 1.00 0.00 SYST H +ATOM 2857 CD2 HIE X 179 28.761 39.000 41.557 1.00 0.00 SYST C +ATOM 2858 HD2 HIE X 179 28.554 38.370 40.705 1.00 0.00 SYST H +ATOM 2859 C HIE X 179 29.936 42.820 38.748 1.00 0.00 SYST C +ATOM 2860 O HIE X 179 29.638 43.973 39.120 1.00 0.00 SYST O +ATOM 2861 N TYR X 180 30.083 42.483 37.482 1.00 0.00 SYST N +ATOM 2862 H TYR X 180 30.452 41.566 37.276 1.00 0.00 SYST H +ATOM 2863 CA TYR X 180 29.885 43.372 36.335 1.00 0.00 SYST C +ATOM 2864 HA TYR X 180 29.150 44.169 36.448 1.00 0.00 SYST H +ATOM 2865 CB TYR X 180 31.306 43.749 35.818 1.00 0.00 SYST C +ATOM 2866 HB2 TYR X 180 31.760 42.820 35.476 1.00 0.00 SYST H +ATOM 2867 HB3 TYR X 180 31.246 44.297 34.877 1.00 0.00 SYST H +ATOM 2868 CG TYR X 180 32.099 44.577 36.821 1.00 0.00 SYST C +ATOM 2869 CD1 TYR X 180 31.762 45.958 37.000 1.00 0.00 SYST C +ATOM 2870 HD1 TYR X 180 30.939 46.227 36.354 1.00 0.00 SYST H +ATOM 2871 CE1 TYR X 180 32.558 46.753 37.840 1.00 0.00 SYST C +ATOM 2872 HE1 TYR X 180 32.334 47.806 37.925 1.00 0.00 SYST H +ATOM 2873 CZ TYR X 180 33.635 46.118 38.548 1.00 0.00 SYST C +ATOM 2874 OH TYR X 180 34.234 46.900 39.477 1.00 0.00 SYST O +ATOM 2875 HH TYR X 180 34.444 46.421 40.282 1.00 0.00 SYST H +ATOM 2876 CE2 TYR X 180 33.739 44.722 38.594 1.00 0.00 SYST C +ATOM 2877 HE2 TYR X 180 34.638 44.367 39.078 1.00 0.00 SYST H +ATOM 2878 CD2 TYR X 180 32.992 43.927 37.663 1.00 0.00 SYST C +ATOM 2879 HD2 TYR X 180 33.190 42.883 37.473 1.00 0.00 SYST H +ATOM 2880 C TYR X 180 29.259 42.587 35.197 1.00 0.00 SYST C +ATOM 2881 O TYR X 180 29.497 41.375 35.019 1.00 0.00 SYST O +ATOM 2882 N GLN X 181 28.413 43.247 34.426 1.00 0.00 SYST N +ATOM 2883 H GLN X 181 28.250 44.238 34.538 1.00 0.00 SYST H +ATOM 2884 CA GLN X 181 27.398 42.459 33.615 1.00 0.00 SYST C +ATOM 2885 HA GLN X 181 27.831 41.535 33.232 1.00 0.00 SYST H +ATOM 2886 CB GLN X 181 26.257 42.095 34.644 1.00 0.00 SYST C +ATOM 2887 HB2 GLN X 181 26.711 41.312 35.251 1.00 0.00 SYST H +ATOM 2888 HB3 GLN X 181 25.911 42.910 35.280 1.00 0.00 SYST H +ATOM 2889 CG GLN X 181 25.048 41.464 33.882 1.00 0.00 SYST C +ATOM 2890 HG2 GLN X 181 24.821 42.108 33.032 1.00 0.00 SYST H +ATOM 2891 HG3 GLN X 181 25.523 40.545 33.539 1.00 0.00 SYST H +ATOM 2892 CD GLN X 181 23.829 41.274 34.706 1.00 0.00 SYST C +ATOM 2893 OE1 GLN X 181 23.959 40.935 35.877 1.00 0.00 SYST O +ATOM 2894 NE2 GLN X 181 22.681 41.597 34.215 1.00 0.00 SYST N +ATOM 2895 HE21 GLN X 181 21.850 41.231 34.659 1.00 0.00 SYST H +ATOM 2896 HE22 GLN X 181 22.535 41.679 33.219 1.00 0.00 SYST H +ATOM 2897 C GLN X 181 26.992 43.336 32.416 1.00 0.00 SYST C +ATOM 2898 O GLN X 181 26.880 44.601 32.523 1.00 0.00 SYST O +ATOM 2899 N GLN X 182 26.655 42.668 31.327 1.00 0.00 SYST N +ATOM 2900 H GLN X 182 26.864 41.683 31.250 1.00 0.00 SYST H +ATOM 2901 CA GLN X 182 26.162 43.313 30.119 1.00 0.00 SYST C +ATOM 2902 HA GLN X 182 25.659 44.256 30.333 1.00 0.00 SYST H +ATOM 2903 CB GLN X 182 27.402 43.620 29.183 1.00 0.00 SYST C +ATOM 2904 HB2 GLN X 182 28.154 44.140 29.776 1.00 0.00 SYST H +ATOM 2905 HB3 GLN X 182 27.807 42.680 28.808 1.00 0.00 SYST H +ATOM 2906 CG GLN X 182 27.148 44.689 28.046 1.00 0.00 SYST C +ATOM 2907 HG2 GLN X 182 26.554 45.462 28.533 1.00 0.00 SYST H +ATOM 2908 HG3 GLN X 182 28.083 45.141 27.713 1.00 0.00 SYST H +ATOM 2909 CD GLN X 182 26.460 44.211 26.783 1.00 0.00 SYST C +ATOM 2910 OE1 GLN X 182 26.346 43.068 26.515 1.00 0.00 SYST O +ATOM 2911 NE2 GLN X 182 26.046 45.176 25.991 1.00 0.00 SYST N +ATOM 2912 HE21 GLN X 182 25.612 44.891 25.124 1.00 0.00 SYST H +ATOM 2913 HE22 GLN X 182 26.202 46.142 26.238 1.00 0.00 SYST H +ATOM 2914 C GLN X 182 25.197 42.258 29.495 1.00 0.00 SYST C +ATOM 2915 O GLN X 182 25.471 41.054 29.635 1.00 0.00 SYST O +ATOM 2916 N ASN X 183 24.122 42.690 28.801 1.00 0.00 SYST N +ATOM 2917 H ASN X 183 23.869 43.667 28.830 1.00 0.00 SYST H +ATOM 2918 CA ASN X 183 23.172 41.697 28.188 1.00 0.00 SYST C +ATOM 2919 HA ASN X 183 23.695 40.802 27.850 1.00 0.00 SYST H +ATOM 2920 CB ASN X 183 21.979 41.378 29.086 1.00 0.00 SYST C +ATOM 2921 HB2 ASN X 183 21.380 42.285 29.160 1.00 0.00 SYST H +ATOM 2922 HB3 ASN X 183 21.405 40.539 28.693 1.00 0.00 SYST H +ATOM 2923 CG ASN X 183 22.212 41.061 30.565 1.00 0.00 SYST C +ATOM 2924 OD1 ASN X 183 22.576 41.892 31.365 1.00 0.00 SYST O +ATOM 2925 ND2 ASN X 183 21.830 39.822 30.975 1.00 0.00 SYST N +ATOM 2926 HD21 ASN X 183 21.820 39.624 31.966 1.00 0.00 SYST H +ATOM 2927 HD22 ASN X 183 21.509 39.086 30.363 1.00 0.00 SYST H +ATOM 2928 C ASN X 183 22.524 42.393 26.949 1.00 0.00 SYST C +ATOM 2929 O ASN X 183 22.379 43.591 26.899 1.00 0.00 SYST O +ATOM 2930 N THR X 184 22.132 41.528 25.948 1.00 0.00 SYST N +ATOM 2931 H THR X 184 22.269 40.542 26.121 1.00 0.00 SYST H +ATOM 2932 CA THR X 184 21.439 41.802 24.690 1.00 0.00 SYST C +ATOM 2933 HA THR X 184 21.002 42.800 24.662 1.00 0.00 SYST H +ATOM 2934 CB THR X 184 22.307 41.717 23.448 1.00 0.00 SYST C +ATOM 2935 HB THR X 184 21.677 41.695 22.559 1.00 0.00 SYST H +ATOM 2936 CG2 THR X 184 23.146 42.893 23.134 1.00 0.00 SYST C +ATOM 2937 HG21 THR X 184 22.561 43.780 23.375 1.00 0.00 SYST H +ATOM 2938 HG22 THR X 184 23.895 43.044 23.912 1.00 0.00 SYST H +ATOM 2939 HG23 THR X 184 23.568 42.903 22.129 1.00 0.00 SYST H +ATOM 2940 OG1 THR X 184 23.070 40.569 23.394 1.00 0.00 SYST O +ATOM 2941 HG1 THR X 184 23.742 40.734 24.060 1.00 0.00 SYST H +ATOM 2942 C THR X 184 20.347 40.716 24.458 1.00 0.00 SYST C +ATOM 2943 O THR X 184 20.537 39.584 24.884 1.00 0.00 SYST O +ATOM 2944 N PRO X 185 19.256 41.182 23.742 1.00 0.00 SYST N +ATOM 2945 CD PRO X 185 18.986 42.481 23.239 1.00 0.00 SYST C +ATOM 2946 HD2 PRO X 185 19.856 42.995 22.829 1.00 0.00 SYST H +ATOM 2947 HD3 PRO X 185 18.610 43.162 24.002 1.00 0.00 SYST H +ATOM 2948 CG PRO X 185 17.883 42.424 22.202 1.00 0.00 SYST C +ATOM 2949 HG2 PRO X 185 18.302 42.203 21.221 1.00 0.00 SYST H +ATOM 2950 HG3 PRO X 185 17.354 43.375 22.271 1.00 0.00 SYST H +ATOM 2951 CB PRO X 185 17.100 41.100 22.553 1.00 0.00 SYST C +ATOM 2952 HB2 PRO X 185 16.710 40.657 21.637 1.00 0.00 SYST H +ATOM 2953 HB3 PRO X 185 16.351 41.325 23.313 1.00 0.00 SYST H +ATOM 2954 CA PRO X 185 18.265 40.262 23.180 1.00 0.00 SYST C +ATOM 2955 HA PRO X 185 17.799 39.869 24.083 1.00 0.00 SYST H +ATOM 2956 C PRO X 185 18.942 39.204 22.234 1.00 0.00 SYST C +ATOM 2957 O PRO X 185 19.937 39.543 21.640 1.00 0.00 SYST O +ATOM 2958 N ILE X 186 18.315 38.040 22.159 1.00 0.00 SYST N +ATOM 2959 H ILE X 186 17.451 37.966 22.676 1.00 0.00 SYST H +ATOM 2960 CA ILE X 186 18.471 37.093 21.036 1.00 0.00 SYST C +ATOM 2961 HA ILE X 186 19.424 37.254 20.533 1.00 0.00 SYST H +ATOM 2962 CB ILE X 186 18.412 35.635 21.493 1.00 0.00 SYST C +ATOM 2963 HB ILE X 186 17.382 35.552 21.841 1.00 0.00 SYST H +ATOM 2964 CG2 ILE X 186 18.597 34.548 20.402 1.00 0.00 SYST C +ATOM 2965 HG21 ILE X 186 18.783 33.557 20.815 1.00 0.00 SYST H +ATOM 2966 HG22 ILE X 186 17.746 34.572 19.721 1.00 0.00 SYST H +ATOM 2967 HG23 ILE X 186 19.554 34.806 19.949 1.00 0.00 SYST H +ATOM 2968 CG1 ILE X 186 19.453 35.303 22.664 1.00 0.00 SYST C +ATOM 2969 HG12 ILE X 186 20.454 35.429 22.252 1.00 0.00 SYST H +ATOM 2970 HG13 ILE X 186 19.338 36.052 23.448 1.00 0.00 SYST H +ATOM 2971 CD1 ILE X 186 19.104 34.051 23.451 1.00 0.00 SYST C +ATOM 2972 HD11 ILE X 186 19.336 33.176 22.844 1.00 0.00 SYST H +ATOM 2973 HD12 ILE X 186 19.425 34.090 24.492 1.00 0.00 SYST H +ATOM 2974 HD13 ILE X 186 18.021 34.044 23.572 1.00 0.00 SYST H +ATOM 2975 C ILE X 186 17.309 37.345 20.069 1.00 0.00 SYST C +ATOM 2976 O ILE X 186 16.183 37.695 20.404 1.00 0.00 SYST O +ATOM 2977 N GLY X 187 17.598 37.263 18.747 1.00 0.00 SYST N +ATOM 2978 H GLY X 187 18.579 37.151 18.531 1.00 0.00 SYST H +ATOM 2979 CA GLY X 187 16.672 37.529 17.685 1.00 0.00 SYST C +ATOM 2980 HA2 GLY X 187 16.922 36.801 16.913 1.00 0.00 SYST H +ATOM 2981 HA3 GLY X 187 15.669 37.329 18.061 1.00 0.00 SYST H +ATOM 2982 C GLY X 187 16.829 38.953 17.169 1.00 0.00 SYST C +ATOM 2983 O GLY X 187 17.933 39.495 17.151 1.00 0.00 SYST O +ATOM 2984 N ASP X 188 15.744 39.470 16.548 1.00 0.00 SYST N +ATOM 2985 H ASP X 188 14.868 38.980 16.660 1.00 0.00 SYST H +ATOM 2986 CA ASP X 188 15.827 40.641 15.601 1.00 0.00 SYST C +ATOM 2987 HA ASP X 188 16.807 41.117 15.633 1.00 0.00 SYST H +ATOM 2988 CB ASP X 188 15.680 40.067 14.222 1.00 0.00 SYST C +ATOM 2989 HB2 ASP X 188 15.918 40.809 13.461 1.00 0.00 SYST H +ATOM 2990 HB3 ASP X 188 16.512 39.365 14.159 1.00 0.00 SYST H +ATOM 2991 CG ASP X 188 14.403 39.292 13.757 1.00 0.00 SYST C +ATOM 2992 OD1 ASP X 188 14.503 38.102 13.276 1.00 0.00 SYST O +ATOM 2993 OD2 ASP X 188 13.317 39.845 13.961 1.00 0.00 SYST O +ATOM 2994 C ASP X 188 14.827 41.801 15.928 1.00 0.00 SYST C +ATOM 2995 O ASP X 188 14.844 42.780 15.138 1.00 0.00 SYST O +ATOM 2996 N GLY X 189 13.994 41.743 16.970 1.00 0.00 SYST N +ATOM 2997 H GLY X 189 13.851 40.824 17.365 1.00 0.00 SYST H +ATOM 2998 CA GLY X 189 12.882 42.723 17.105 1.00 0.00 SYST C +ATOM 2999 HA2 GLY X 189 12.780 43.148 16.106 1.00 0.00 SYST H +ATOM 3000 HA3 GLY X 189 11.977 42.138 17.268 1.00 0.00 SYST H +ATOM 3001 C GLY X 189 13.066 43.724 18.116 1.00 0.00 SYST C +ATOM 3002 O GLY X 189 14.146 43.972 18.649 1.00 0.00 SYST O +ATOM 3003 N PRO X 190 11.995 44.480 18.460 1.00 0.00 SYST N +ATOM 3004 CD PRO X 190 10.649 44.284 17.938 1.00 0.00 SYST C +ATOM 3005 HD2 PRO X 190 10.330 43.246 18.027 1.00 0.00 SYST H +ATOM 3006 HD3 PRO X 190 10.518 44.664 16.925 1.00 0.00 SYST H +ATOM 3007 CG PRO X 190 9.752 45.203 18.732 1.00 0.00 SYST C +ATOM 3008 HG2 PRO X 190 9.294 44.794 19.632 1.00 0.00 SYST H +ATOM 3009 HG3 PRO X 190 8.891 45.533 18.150 1.00 0.00 SYST H +ATOM 3010 CB PRO X 190 10.705 46.265 19.113 1.00 0.00 SYST C +ATOM 3011 HB2 PRO X 190 10.290 46.734 20.005 1.00 0.00 SYST H +ATOM 3012 HB3 PRO X 190 10.916 47.090 18.432 1.00 0.00 SYST H +ATOM 3013 CA PRO X 190 11.979 45.530 19.386 1.00 0.00 SYST C +ATOM 3014 HA PRO X 190 12.712 46.318 19.215 1.00 0.00 SYST H +ATOM 3015 C PRO X 190 12.136 45.066 20.827 1.00 0.00 SYST C +ATOM 3016 O PRO X 190 11.835 43.908 21.072 1.00 0.00 SYST O +ATOM 3017 N VAL X 191 12.576 45.996 21.697 1.00 0.00 SYST N +ATOM 3018 H VAL X 191 12.810 46.881 21.270 1.00 0.00 SYST H +ATOM 3019 CA VAL X 191 12.625 45.765 23.200 1.00 0.00 SYST C +ATOM 3020 HA VAL X 191 11.930 45.034 23.613 1.00 0.00 SYST H +ATOM 3021 CB VAL X 191 14.022 45.211 23.725 1.00 0.00 SYST C +ATOM 3022 HB VAL X 191 14.028 45.337 24.808 1.00 0.00 SYST H +ATOM 3023 CG1 VAL X 191 14.389 43.733 23.312 1.00 0.00 SYST C +ATOM 3024 HG11 VAL X 191 15.371 43.541 23.744 1.00 0.00 SYST H +ATOM 3025 HG12 VAL X 191 13.709 43.001 23.749 1.00 0.00 SYST H +ATOM 3026 HG13 VAL X 191 14.397 43.581 22.233 1.00 0.00 SYST H +ATOM 3027 CG2 VAL X 191 15.186 46.199 23.217 1.00 0.00 SYST C +ATOM 3028 HG21 VAL X 191 14.966 47.224 23.516 1.00 0.00 SYST H +ATOM 3029 HG22 VAL X 191 16.104 45.871 23.706 1.00 0.00 SYST H +ATOM 3030 HG23 VAL X 191 15.196 46.126 22.130 1.00 0.00 SYST H +ATOM 3031 C VAL X 191 12.355 47.049 23.936 1.00 0.00 SYST C +ATOM 3032 O VAL X 191 12.573 48.094 23.375 1.00 0.00 SYST O +ATOM 3033 N LEU X 192 12.006 46.961 25.213 1.00 0.00 SYST N +ATOM 3034 H LEU X 192 11.940 46.046 25.637 1.00 0.00 SYST H +ATOM 3035 CA LEU X 192 12.066 48.142 26.140 1.00 0.00 SYST C +ATOM 3036 HA LEU X 192 11.528 49.012 25.763 1.00 0.00 SYST H +ATOM 3037 CB LEU X 192 11.471 47.600 27.472 1.00 0.00 SYST C +ATOM 3038 HB2 LEU X 192 11.990 46.680 27.738 1.00 0.00 SYST H +ATOM 3039 HB3 LEU X 192 11.687 48.277 28.299 1.00 0.00 SYST H +ATOM 3040 CG LEU X 192 9.963 47.420 27.395 1.00 0.00 SYST C +ATOM 3041 HG LEU X 192 9.714 46.964 26.437 1.00 0.00 SYST H +ATOM 3042 CD1 LEU X 192 9.650 46.630 28.625 1.00 0.00 SYST C +ATOM 3043 HD11 LEU X 192 8.574 46.591 28.796 1.00 0.00 SYST H +ATOM 3044 HD12 LEU X 192 9.988 45.594 28.653 1.00 0.00 SYST H +ATOM 3045 HD13 LEU X 192 10.092 47.092 29.508 1.00 0.00 SYST H +ATOM 3046 CD2 LEU X 192 9.178 48.741 27.556 1.00 0.00 SYST C +ATOM 3047 HD21 LEU X 192 9.432 49.259 28.480 1.00 0.00 SYST H +ATOM 3048 HD22 LEU X 192 9.275 49.479 26.760 1.00 0.00 SYST H +ATOM 3049 HD23 LEU X 192 8.168 48.340 27.465 1.00 0.00 SYST H +ATOM 3050 C LEU X 192 13.544 48.501 26.386 1.00 0.00 SYST C +ATOM 3051 O LEU X 192 14.383 47.638 26.539 1.00 0.00 SYST O +ATOM 3052 N LEU X 193 13.849 49.784 26.519 1.00 0.00 SYST N +ATOM 3053 H LEU X 193 13.110 50.374 26.163 1.00 0.00 SYST H +ATOM 3054 CA LEU X 193 15.216 50.356 26.806 1.00 0.00 SYST C +ATOM 3055 HA LEU X 193 15.937 49.541 26.867 1.00 0.00 SYST H +ATOM 3056 CB LEU X 193 15.737 51.215 25.622 1.00 0.00 SYST C +ATOM 3057 HB2 LEU X 193 15.066 52.056 25.447 1.00 0.00 SYST H +ATOM 3058 HB3 LEU X 193 16.692 51.620 25.954 1.00 0.00 SYST H +ATOM 3059 CG LEU X 193 15.851 50.514 24.288 1.00 0.00 SYST C +ATOM 3060 HG LEU X 193 14.947 49.967 24.021 1.00 0.00 SYST H +ATOM 3061 CD1 LEU X 193 16.044 51.607 23.257 1.00 0.00 SYST C +ATOM 3062 HD11 LEU X 193 16.173 51.138 22.282 1.00 0.00 SYST H +ATOM 3063 HD12 LEU X 193 15.171 52.256 23.188 1.00 0.00 SYST H +ATOM 3064 HD13 LEU X 193 16.966 52.157 23.446 1.00 0.00 SYST H +ATOM 3065 CD2 LEU X 193 16.936 49.493 24.218 1.00 0.00 SYST C +ATOM 3066 HD21 LEU X 193 17.150 49.121 23.216 1.00 0.00 SYST H +ATOM 3067 HD22 LEU X 193 17.811 49.924 24.705 1.00 0.00 SYST H +ATOM 3068 HD23 LEU X 193 16.595 48.534 24.610 1.00 0.00 SYST H +ATOM 3069 C LEU X 193 15.192 51.086 28.186 1.00 0.00 SYST C +ATOM 3070 O LEU X 193 14.882 52.260 28.251 1.00 0.00 SYST O +ATOM 3071 N PRO X 194 15.506 50.452 29.325 1.00 0.00 SYST N +ATOM 3072 CD PRO X 194 15.953 49.023 29.348 1.00 0.00 SYST C +ATOM 3073 HD2 PRO X 194 17.016 48.877 29.158 1.00 0.00 SYST H +ATOM 3074 HD3 PRO X 194 15.351 48.411 28.677 1.00 0.00 SYST H +ATOM 3075 CG PRO X 194 15.790 48.659 30.792 1.00 0.00 SYST C +ATOM 3076 HG2 PRO X 194 16.465 47.842 31.049 1.00 0.00 SYST H +ATOM 3077 HG3 PRO X 194 14.765 48.458 31.103 1.00 0.00 SYST H +ATOM 3078 CB PRO X 194 16.078 49.951 31.577 1.00 0.00 SYST C +ATOM 3079 HB2 PRO X 194 17.150 49.934 31.773 1.00 0.00 SYST H +ATOM 3080 HB3 PRO X 194 15.517 49.961 32.512 1.00 0.00 SYST H +ATOM 3081 CA PRO X 194 15.461 51.029 30.659 1.00 0.00 SYST C +ATOM 3082 HA PRO X 194 14.394 51.107 30.867 1.00 0.00 SYST H +ATOM 3083 C PRO X 194 16.146 52.387 30.829 1.00 0.00 SYST C +ATOM 3084 O PRO X 194 17.100 52.798 30.081 1.00 0.00 SYST O +ATOM 3085 N ASP X 195 15.642 53.165 31.788 1.00 0.00 SYST N +ATOM 3086 H ASP X 195 14.885 52.766 32.325 1.00 0.00 SYST H +ATOM 3087 CA ASP X 195 16.416 54.318 32.257 1.00 0.00 SYST C +ATOM 3088 HA ASP X 195 17.262 54.492 31.592 1.00 0.00 SYST H +ATOM 3089 CB ASP X 195 15.637 55.579 32.398 1.00 0.00 SYST C +ATOM 3090 HB2 ASP X 195 15.076 55.466 33.325 1.00 0.00 SYST H +ATOM 3091 HB3 ASP X 195 16.359 56.380 32.557 1.00 0.00 SYST H +ATOM 3092 CG ASP X 195 14.701 55.981 31.278 1.00 0.00 SYST C +ATOM 3093 OD1 ASP X 195 13.682 56.703 31.561 1.00 0.00 SYST O +ATOM 3094 OD2 ASP X 195 14.929 55.610 30.107 1.00 0.00 SYST O +ATOM 3095 C ASP X 195 17.130 53.876 33.612 1.00 0.00 SYST C +ATOM 3096 O ASP X 195 17.038 52.724 34.021 1.00 0.00 SYST O +ATOM 3097 N ASN X 196 17.885 54.758 34.286 1.00 0.00 SYST N +ATOM 3098 H ASN X 196 17.598 55.713 34.125 1.00 0.00 SYST H +ATOM 3099 CA ASN X 196 18.680 54.370 35.429 1.00 0.00 SYST C +ATOM 3100 HA ASN X 196 19.186 53.458 35.111 1.00 0.00 SYST H +ATOM 3101 CB ASN X 196 19.698 55.515 35.626 1.00 0.00 SYST C +ATOM 3102 HB2 ASN X 196 20.171 55.696 34.661 1.00 0.00 SYST H +ATOM 3103 HB3 ASN X 196 19.260 56.435 36.014 1.00 0.00 SYST H +ATOM 3104 CG ASN X 196 20.749 55.188 36.608 1.00 0.00 SYST C +ATOM 3105 OD1 ASN X 196 21.106 54.010 36.834 1.00 0.00 SYST O +ATOM 3106 ND2 ASN X 196 21.223 56.134 37.341 1.00 0.00 SYST N +ATOM 3107 HD21 ASN X 196 21.873 55.788 38.033 1.00 0.00 SYST H +ATOM 3108 HD22 ASN X 196 20.876 57.080 37.280 1.00 0.00 SYST H +ATOM 3109 C ASN X 196 17.883 54.039 36.699 1.00 0.00 SYST C +ATOM 3110 O ASN X 196 17.186 54.921 37.157 1.00 0.00 SYST O +ATOM 3111 N HID X 197 18.067 52.863 37.249 1.00 0.00 SYST N +ATOM 3112 H HID X 197 18.648 52.154 36.825 1.00 0.00 SYST H +ATOM 3113 CA HID X 197 17.308 52.266 38.358 1.00 0.00 SYST C +ATOM 3114 HA HID X 197 17.154 53.028 39.122 1.00 0.00 SYST H +ATOM 3115 CB HID X 197 15.877 51.881 37.882 1.00 0.00 SYST C +ATOM 3116 HB2 HID X 197 15.348 51.624 38.799 1.00 0.00 SYST H +ATOM 3117 HB3 HID X 197 15.368 52.739 37.443 1.00 0.00 SYST H +ATOM 3118 CG HID X 197 15.856 50.675 37.005 1.00 0.00 SYST C +ATOM 3119 ND1 HID X 197 16.241 50.575 35.675 1.00 0.00 SYST N +ATOM 3120 HD1 HID X 197 16.453 51.361 35.077 1.00 0.00 SYST H +ATOM 3121 CE1 HID X 197 16.261 49.286 35.344 1.00 0.00 SYST C +ATOM 3122 HE1 HID X 197 16.787 48.914 34.477 1.00 0.00 SYST H +ATOM 3123 NE2 HID X 197 15.954 48.535 36.407 1.00 0.00 SYST N +ATOM 3124 CD2 HID X 197 15.612 49.354 37.421 1.00 0.00 SYST C +ATOM 3125 HD2 HID X 197 15.129 49.029 38.331 1.00 0.00 SYST H +ATOM 3126 C HID X 197 18.023 51.042 39.020 1.00 0.00 SYST C +ATOM 3127 O HID X 197 19.171 50.807 38.627 1.00 0.00 SYST O +ATOM 3128 N TYR X 198 17.392 50.256 39.958 1.00 0.00 SYST N +ATOM 3129 H TYR X 198 16.451 50.486 40.243 1.00 0.00 SYST H +ATOM 3130 CA TYR X 198 17.938 48.988 40.454 1.00 0.00 SYST C +ATOM 3131 HA TYR X 198 18.420 48.611 39.553 1.00 0.00 SYST H +ATOM 3132 CB TYR X 198 18.940 49.212 41.535 1.00 0.00 SYST C +ATOM 3133 HB2 TYR X 198 19.411 48.307 41.919 1.00 0.00 SYST H +ATOM 3134 HB3 TYR X 198 19.814 49.776 41.210 1.00 0.00 SYST H +ATOM 3135 CG TYR X 198 18.393 49.873 42.805 1.00 0.00 SYST C +ATOM 3136 CD1 TYR X 198 18.699 51.216 42.886 1.00 0.00 SYST C +ATOM 3137 HD1 TYR X 198 19.329 51.626 42.111 1.00 0.00 SYST H +ATOM 3138 CE1 TYR X 198 18.375 51.909 44.049 1.00 0.00 SYST C +ATOM 3139 HE1 TYR X 198 18.768 52.879 44.313 1.00 0.00 SYST H +ATOM 3140 CZ TYR X 198 17.755 51.236 45.099 1.00 0.00 SYST C +ATOM 3141 OH TYR X 198 17.345 51.963 46.151 1.00 0.00 SYST O +ATOM 3142 HH TYR X 198 17.489 52.893 45.964 1.00 0.00 SYST H +ATOM 3143 CE2 TYR X 198 17.464 49.914 44.980 1.00 0.00 SYST C +ATOM 3144 HE2 TYR X 198 16.958 49.439 45.807 1.00 0.00 SYST H +ATOM 3145 CD2 TYR X 198 17.732 49.191 43.848 1.00 0.00 SYST C +ATOM 3146 HD2 TYR X 198 17.560 48.138 43.679 1.00 0.00 SYST H +ATOM 3147 C TYR X 198 16.849 47.907 40.896 1.00 0.00 SYST C +ATOM 3148 O TYR X 198 15.700 48.224 41.053 1.00 0.00 SYST O +ATOM 3149 N LEU X 199 17.296 46.667 41.164 1.00 0.00 SYST N +ATOM 3150 H LEU X 199 18.276 46.463 41.033 1.00 0.00 SYST H +ATOM 3151 CA LEU X 199 16.486 45.476 41.512 1.00 0.00 SYST C +ATOM 3152 HA LEU X 199 15.417 45.690 41.532 1.00 0.00 SYST H +ATOM 3153 CB LEU X 199 16.731 44.411 40.441 1.00 0.00 SYST C +ATOM 3154 HB2 LEU X 199 17.770 44.080 40.460 1.00 0.00 SYST H +ATOM 3155 HB3 LEU X 199 16.150 43.578 40.838 1.00 0.00 SYST H +ATOM 3156 CG LEU X 199 16.301 44.670 38.972 1.00 0.00 SYST C +ATOM 3157 HG LEU X 199 17.042 45.375 38.595 1.00 0.00 SYST H +ATOM 3158 CD1 LEU X 199 16.457 43.358 38.158 1.00 0.00 SYST C +ATOM 3159 HD11 LEU X 199 16.148 43.459 37.118 1.00 0.00 SYST H +ATOM 3160 HD12 LEU X 199 17.492 43.018 38.196 1.00 0.00 SYST H +ATOM 3161 HD13 LEU X 199 15.795 42.722 38.747 1.00 0.00 SYST H +ATOM 3162 CD2 LEU X 199 14.911 45.196 38.655 1.00 0.00 SYST C +ATOM 3163 HD21 LEU X 199 14.789 46.250 38.904 1.00 0.00 SYST H +ATOM 3164 HD22 LEU X 199 14.751 45.099 37.581 1.00 0.00 SYST H +ATOM 3165 HD23 LEU X 199 14.144 44.618 39.172 1.00 0.00 SYST H +ATOM 3166 C LEU X 199 16.892 44.952 42.903 1.00 0.00 SYST C +ATOM 3167 O LEU X 199 18.067 44.593 43.121 1.00 0.00 SYST O +ATOM 3168 N SER X 200 15.947 44.979 43.822 1.00 0.00 SYST N +ATOM 3169 H SER X 200 15.055 45.411 43.626 1.00 0.00 SYST H +ATOM 3170 CA SER X 200 16.098 44.362 45.187 1.00 0.00 SYST C +ATOM 3171 HA SER X 200 17.088 44.586 45.585 1.00 0.00 SYST H +ATOM 3172 CB SER X 200 15.011 44.965 46.064 1.00 0.00 SYST C +ATOM 3173 HB2 SER X 200 15.090 46.048 45.974 1.00 0.00 SYST H +ATOM 3174 HB3 SER X 200 13.987 44.746 45.761 1.00 0.00 SYST H +ATOM 3175 OG SER X 200 15.227 44.488 47.364 1.00 0.00 SYST O +ATOM 3176 HG SER X 200 15.842 45.121 47.741 1.00 0.00 SYST H +ATOM 3177 C SER X 200 16.055 42.857 44.972 1.00 0.00 SYST C +ATOM 3178 O SER X 200 15.012 42.222 44.849 1.00 0.00 SYST O +ATOM 3179 N THR X 201 17.194 42.235 45.076 1.00 0.00 SYST N +ATOM 3180 H THR X 201 18.058 42.715 45.285 1.00 0.00 SYST H +ATOM 3181 CA THR X 201 17.451 40.812 44.897 1.00 0.00 SYST C +ATOM 3182 HA THR X 201 16.594 40.291 44.471 1.00 0.00 SYST H +ATOM 3183 CB THR X 201 18.564 40.616 43.831 1.00 0.00 SYST C +ATOM 3184 HB THR X 201 19.531 41.002 44.154 1.00 0.00 SYST H +ATOM 3185 CG2 THR X 201 18.723 39.207 43.410 1.00 0.00 SYST C +ATOM 3186 HG21 THR X 201 19.546 39.130 42.699 1.00 0.00 SYST H +ATOM 3187 HG22 THR X 201 18.910 38.533 44.246 1.00 0.00 SYST H +ATOM 3188 HG23 THR X 201 17.757 38.863 43.040 1.00 0.00 SYST H +ATOM 3189 OG1 THR X 201 18.156 41.271 42.614 1.00 0.00 SYST O +ATOM 3190 HG1 THR X 201 17.846 42.134 42.898 1.00 0.00 SYST H +ATOM 3191 C THR X 201 17.786 40.102 46.202 1.00 0.00 SYST C +ATOM 3192 O THR X 201 18.571 40.578 47.020 1.00 0.00 SYST O +ATOM 3193 N CYS X 202 17.201 38.966 46.519 1.00 0.00 SYST N +ATOM 3194 H CYS X 202 16.630 38.447 45.868 1.00 0.00 SYST H +ATOM 3195 CA CYS X 202 17.431 38.301 47.845 1.00 0.00 SYST C +ATOM 3196 HA CYS X 202 18.453 38.423 48.205 1.00 0.00 SYST H +ATOM 3197 CB CYS X 202 16.418 38.919 48.834 1.00 0.00 SYST C +ATOM 3198 HB2 CYS X 202 16.300 39.988 48.658 1.00 0.00 SYST H +ATOM 3199 HB3 CYS X 202 15.416 38.546 48.619 1.00 0.00 SYST H +ATOM 3200 SG CYS X 202 16.888 38.655 50.619 1.00 0.00 SYST S +ATOM 3201 HG CYS X 202 17.891 39.537 50.653 1.00 0.00 SYST H +ATOM 3202 C CYS X 202 17.217 36.828 47.646 1.00 0.00 SYST C +ATOM 3203 O CYS X 202 16.383 36.461 46.814 1.00 0.00 SYST O +ATOM 3204 N SER X 203 17.745 35.901 48.509 1.00 0.00 SYST N +ATOM 3205 H SER X 203 18.285 36.206 49.305 1.00 0.00 SYST H +ATOM 3206 CA SER X 203 17.539 34.435 48.390 1.00 0.00 SYST C +ATOM 3207 HA SER X 203 16.470 34.281 48.250 1.00 0.00 SYST H +ATOM 3208 CB SER X 203 18.300 33.834 47.178 1.00 0.00 SYST C +ATOM 3209 HB2 SER X 203 17.874 34.348 46.316 1.00 0.00 SYST H +ATOM 3210 HB3 SER X 203 19.362 34.080 47.148 1.00 0.00 SYST H +ATOM 3211 OG SER X 203 18.114 32.455 47.025 1.00 0.00 SYST O +ATOM 3212 HG SER X 203 17.164 32.459 46.883 1.00 0.00 SYST H +ATOM 3213 C SER X 203 17.845 33.834 49.708 1.00 0.00 SYST C +ATOM 3214 O SER X 203 18.549 34.396 50.569 1.00 0.00 SYST O +ATOM 3215 N ALA X 204 17.421 32.573 49.879 1.00 0.00 SYST N +ATOM 3216 H ALA X 204 16.789 32.200 49.186 1.00 0.00 SYST H +ATOM 3217 CA ALA X 204 17.505 31.671 51.044 1.00 0.00 SYST C +ATOM 3218 HA ALA X 204 18.261 32.014 51.750 1.00 0.00 SYST H +ATOM 3219 CB ALA X 204 16.185 31.751 51.834 1.00 0.00 SYST C +ATOM 3220 HB1 ALA X 204 16.251 31.142 52.736 1.00 0.00 SYST H +ATOM 3221 HB2 ALA X 204 15.961 32.807 51.982 1.00 0.00 SYST H +ATOM 3222 HB3 ALA X 204 15.464 31.194 51.236 1.00 0.00 SYST H +ATOM 3223 C ALA X 204 17.832 30.288 50.536 1.00 0.00 SYST C +ATOM 3224 O ALA X 204 17.091 29.778 49.664 1.00 0.00 SYST O +ATOM 3225 N LEU X 205 18.862 29.686 51.102 1.00 0.00 SYST N +ATOM 3226 H LEU X 205 19.503 30.221 51.670 1.00 0.00 SYST H +ATOM 3227 CA LEU X 205 19.281 28.341 50.770 1.00 0.00 SYST C +ATOM 3228 HA LEU X 205 18.780 28.002 49.863 1.00 0.00 SYST H +ATOM 3229 CB LEU X 205 20.755 28.163 50.386 1.00 0.00 SYST C +ATOM 3230 HB2 LEU X 205 21.278 28.068 51.337 1.00 0.00 SYST H +ATOM 3231 HB3 LEU X 205 20.957 27.252 49.824 1.00 0.00 SYST H +ATOM 3232 CG LEU X 205 21.400 29.264 49.581 1.00 0.00 SYST C +ATOM 3233 HG LEU X 205 21.234 30.256 50.003 1.00 0.00 SYST H +ATOM 3234 CD1 LEU X 205 22.930 29.126 49.435 1.00 0.00 SYST C +ATOM 3235 HD11 LEU X 205 23.214 28.383 48.689 1.00 0.00 SYST H +ATOM 3236 HD12 LEU X 205 23.257 30.133 49.179 1.00 0.00 SYST H +ATOM 3237 HD13 LEU X 205 23.375 28.865 50.395 1.00 0.00 SYST H +ATOM 3238 CD2 LEU X 205 20.737 29.301 48.262 1.00 0.00 SYST C +ATOM 3239 HD21 LEU X 205 19.828 29.897 48.340 1.00 0.00 SYST H +ATOM 3240 HD22 LEU X 205 21.407 29.766 47.540 1.00 0.00 SYST H +ATOM 3241 HD23 LEU X 205 20.405 28.317 47.929 1.00 0.00 SYST H +ATOM 3242 C LEU X 205 18.847 27.398 51.839 1.00 0.00 SYST C +ATOM 3243 O LEU X 205 18.770 27.694 53.083 1.00 0.00 SYST O +ATOM 3244 N SER X 206 18.593 26.152 51.382 1.00 0.00 SYST N +ATOM 3245 H SER X 206 18.575 26.140 50.372 1.00 0.00 SYST H +ATOM 3246 CA SER X 206 18.330 24.861 52.203 1.00 0.00 SYST C +ATOM 3247 HA SER X 206 18.716 25.141 53.183 1.00 0.00 SYST H +ATOM 3248 CB SER X 206 16.799 24.699 52.428 1.00 0.00 SYST C +ATOM 3249 HB2 SER X 206 16.610 23.830 53.056 1.00 0.00 SYST H +ATOM 3250 HB3 SER X 206 16.448 25.627 52.879 1.00 0.00 SYST H +ATOM 3251 OG SER X 206 16.061 24.522 51.225 1.00 0.00 SYST O +ATOM 3252 HG SER X 206 15.976 25.416 50.885 1.00 0.00 SYST H +ATOM 3253 C SER X 206 19.056 23.610 51.554 1.00 0.00 SYST C +ATOM 3254 O SER X 206 19.856 23.827 50.628 1.00 0.00 SYST O +ATOM 3255 N LYS X 207 18.743 22.483 52.152 1.00 0.00 SYST N +ATOM 3256 H LYS X 207 18.111 22.564 52.935 1.00 0.00 SYST H +ATOM 3257 CA LYS X 207 19.369 21.154 51.805 1.00 0.00 SYST C +ATOM 3258 HA LYS X 207 19.932 21.219 50.874 1.00 0.00 SYST H +ATOM 3259 CB LYS X 207 20.401 20.804 52.878 1.00 0.00 SYST C +ATOM 3260 HB2 LYS X 207 19.881 20.969 53.821 1.00 0.00 SYST H +ATOM 3261 HB3 LYS X 207 20.592 19.732 52.833 1.00 0.00 SYST H +ATOM 3262 CG LYS X 207 21.747 21.689 52.833 1.00 0.00 SYST C +ATOM 3263 HG2 LYS X 207 21.559 22.761 52.886 1.00 0.00 SYST H +ATOM 3264 HG3 LYS X 207 22.409 21.360 53.634 1.00 0.00 SYST H +ATOM 3265 CD LYS X 207 22.553 21.421 51.557 1.00 0.00 SYST C +ATOM 3266 HD2 LYS X 207 22.692 20.344 51.460 1.00 0.00 SYST H +ATOM 3267 HD3 LYS X 207 22.127 21.821 50.637 1.00 0.00 SYST H +ATOM 3268 CE LYS X 207 23.943 22.032 51.552 1.00 0.00 SYST C +ATOM 3269 HE2 LYS X 207 23.715 23.075 51.773 1.00 0.00 SYST H +ATOM 3270 HE3 LYS X 207 24.534 21.505 52.301 1.00 0.00 SYST H +ATOM 3271 NZ LYS X 207 24.620 22.051 50.245 1.00 0.00 SYST N +ATOM 3272 HZ1 LYS X 207 24.009 22.337 49.492 1.00 0.00 SYST H +ATOM 3273 HZ2 LYS X 207 25.432 22.648 50.305 1.00 0.00 SYST H +ATOM 3274 HZ3 LYS X 207 25.040 21.161 50.017 1.00 0.00 SYST H +ATOM 3275 C LYS X 207 18.325 20.061 51.841 1.00 0.00 SYST C +ATOM 3276 O LYS X 207 17.218 20.210 52.389 1.00 0.00 SYST O +ATOM 3277 N ASP X 208 18.640 18.938 51.192 1.00 0.00 SYST N +ATOM 3278 H ASP X 208 19.609 18.973 50.909 1.00 0.00 SYST H +ATOM 3279 CA ASP X 208 17.864 17.764 51.046 1.00 0.00 SYST C +ATOM 3280 HA ASP X 208 16.811 17.989 51.221 1.00 0.00 SYST H +ATOM 3281 CB ASP X 208 17.901 17.235 49.594 1.00 0.00 SYST C +ATOM 3282 HB2 ASP X 208 17.575 18.031 48.925 1.00 0.00 SYST H +ATOM 3283 HB3 ASP X 208 18.952 17.062 49.363 1.00 0.00 SYST H +ATOM 3284 CG ASP X 208 16.960 16.034 49.455 1.00 0.00 SYST C +ATOM 3285 OD1 ASP X 208 17.283 14.965 49.983 1.00 0.00 SYST O +ATOM 3286 OD2 ASP X 208 15.854 16.224 48.970 1.00 0.00 SYST O +ATOM 3287 C ASP X 208 18.347 16.702 52.080 1.00 0.00 SYST C +ATOM 3288 O ASP X 208 19.592 16.476 52.140 1.00 0.00 SYST O +ATOM 3289 N PRO X 209 17.479 16.105 52.944 1.00 0.00 SYST N +ATOM 3290 CD PRO X 209 16.073 16.346 53.081 1.00 0.00 SYST C +ATOM 3291 HD2 PRO X 209 15.593 15.930 52.196 1.00 0.00 SYST H +ATOM 3292 HD3 PRO X 209 15.787 17.390 53.211 1.00 0.00 SYST H +ATOM 3293 CG PRO X 209 15.677 15.474 54.217 1.00 0.00 SYST C +ATOM 3294 HG2 PRO X 209 15.238 14.504 53.983 1.00 0.00 SYST H +ATOM 3295 HG3 PRO X 209 15.033 16.101 54.834 1.00 0.00 SYST H +ATOM 3296 CB PRO X 209 16.989 15.108 54.989 1.00 0.00 SYST C +ATOM 3297 HB2 PRO X 209 16.838 14.089 55.347 1.00 0.00 SYST H +ATOM 3298 HB3 PRO X 209 17.086 15.873 55.759 1.00 0.00 SYST H +ATOM 3299 CA PRO X 209 18.002 15.206 53.946 1.00 0.00 SYST C +ATOM 3300 HA PRO X 209 18.892 15.674 54.367 1.00 0.00 SYST H +ATOM 3301 C PRO X 209 18.439 13.832 53.450 1.00 0.00 SYST C +ATOM 3302 O PRO X 209 18.926 12.967 54.166 1.00 0.00 SYST O +ATOM 3303 N ASN X 210 18.343 13.506 52.171 1.00 0.00 SYST N +ATOM 3304 H ASN X 210 17.873 14.181 51.586 1.00 0.00 SYST H +ATOM 3305 CA ASN X 210 18.576 12.226 51.531 1.00 0.00 SYST C +ATOM 3306 HA ASN X 210 19.079 11.420 52.066 1.00 0.00 SYST H +ATOM 3307 CB ASN X 210 17.199 11.667 51.103 1.00 0.00 SYST C +ATOM 3308 HB2 ASN X 210 16.759 12.368 50.393 1.00 0.00 SYST H +ATOM 3309 HB3 ASN X 210 17.380 10.738 50.562 1.00 0.00 SYST H +ATOM 3310 CG ASN X 210 16.243 11.350 52.257 1.00 0.00 SYST C +ATOM 3311 OD1 ASN X 210 16.396 10.340 52.888 1.00 0.00 SYST O +ATOM 3312 ND2 ASN X 210 15.311 12.153 52.621 1.00 0.00 SYST N +ATOM 3313 HD21 ASN X 210 14.687 11.629 53.217 1.00 0.00 SYST H +ATOM 3314 HD22 ASN X 210 15.051 12.907 52.001 1.00 0.00 SYST H +ATOM 3315 C ASN X 210 19.582 12.334 50.325 1.00 0.00 SYST C +ATOM 3316 O ASN X 210 20.108 11.294 49.918 1.00 0.00 SYST O +ATOM 3317 N GLU X 211 19.670 13.426 49.617 1.00 0.00 SYST N +ATOM 3318 H GLU X 211 19.104 14.231 49.844 1.00 0.00 SYST H +ATOM 3319 CA GLU X 211 20.518 13.499 48.423 1.00 0.00 SYST C +ATOM 3320 HA GLU X 211 20.141 12.661 47.838 1.00 0.00 SYST H +ATOM 3321 CB GLU X 211 20.309 14.785 47.627 1.00 0.00 SYST C +ATOM 3322 HB2 GLU X 211 19.247 14.800 47.384 1.00 0.00 SYST H +ATOM 3323 HB3 GLU X 211 20.563 15.661 48.225 1.00 0.00 SYST H +ATOM 3324 CG GLU X 211 21.132 14.825 46.344 1.00 0.00 SYST C +ATOM 3325 HG2 GLU X 211 20.866 15.742 45.818 1.00 0.00 SYST H +ATOM 3326 HG3 GLU X 211 22.218 14.822 46.429 1.00 0.00 SYST H +ATOM 3327 CD GLU X 211 20.885 13.626 45.397 1.00 0.00 SYST C +ATOM 3328 OE1 GLU X 211 21.687 12.663 45.363 1.00 0.00 SYST O +ATOM 3329 OE2 GLU X 211 19.767 13.574 44.792 1.00 0.00 SYST O +ATOM 3330 C GLU X 211 21.996 13.288 48.760 1.00 0.00 SYST C +ATOM 3331 O GLU X 211 22.509 13.945 49.696 1.00 0.00 SYST O +ATOM 3332 N LYS X 212 22.692 12.316 48.128 1.00 0.00 SYST N +ATOM 3333 H LYS X 212 22.200 11.733 47.466 1.00 0.00 SYST H +ATOM 3334 CA LYS X 212 24.142 11.960 48.311 1.00 0.00 SYST C +ATOM 3335 HA LYS X 212 24.491 12.019 49.342 1.00 0.00 SYST H +ATOM 3336 CB LYS X 212 24.489 10.461 48.016 1.00 0.00 SYST C +ATOM 3337 HB2 LYS X 212 24.353 10.406 46.936 1.00 0.00 SYST H +ATOM 3338 HB3 LYS X 212 25.560 10.317 48.152 1.00 0.00 SYST H +ATOM 3339 CG LYS X 212 23.829 9.322 48.759 1.00 0.00 SYST C +ATOM 3340 HG2 LYS X 212 23.943 9.579 49.812 1.00 0.00 SYST H +ATOM 3341 HG3 LYS X 212 22.790 9.302 48.432 1.00 0.00 SYST H +ATOM 3342 CD LYS X 212 24.489 7.925 48.618 1.00 0.00 SYST C +ATOM 3343 HD2 LYS X 212 24.300 7.591 47.598 1.00 0.00 SYST H +ATOM 3344 HD3 LYS X 212 25.568 7.984 48.755 1.00 0.00 SYST H +ATOM 3345 CE LYS X 212 24.028 6.971 49.710 1.00 0.00 SYST C +ATOM 3346 HE2 LYS X 212 24.750 6.180 49.907 1.00 0.00 SYST H +ATOM 3347 HE3 LYS X 212 23.968 7.614 50.588 1.00 0.00 SYST H +ATOM 3348 NZ LYS X 212 22.671 6.447 49.383 1.00 0.00 SYST N +ATOM 3349 HZ1 LYS X 212 22.039 7.235 49.363 1.00 0.00 SYST H +ATOM 3350 HZ2 LYS X 212 22.639 6.012 48.472 1.00 0.00 SYST H +ATOM 3351 HZ3 LYS X 212 22.391 5.707 50.010 1.00 0.00 SYST H +ATOM 3352 C LYS X 212 25.148 12.812 47.475 1.00 0.00 SYST C +ATOM 3353 O LYS X 212 26.306 12.938 47.818 1.00 0.00 SYST O +ATOM 3354 N ARG X 213 24.714 13.331 46.284 1.00 0.00 SYST N +ATOM 3355 H ARG X 213 23.777 13.027 46.064 1.00 0.00 SYST H +ATOM 3356 CA ARG X 213 25.359 14.335 45.490 1.00 0.00 SYST C +ATOM 3357 HA ARG X 213 26.378 13.978 45.341 1.00 0.00 SYST H +ATOM 3358 CB ARG X 213 24.653 14.391 44.145 1.00 0.00 SYST C +ATOM 3359 HB2 ARG X 213 23.583 14.534 44.295 1.00 0.00 SYST H +ATOM 3360 HB3 ARG X 213 25.112 15.180 43.550 1.00 0.00 SYST H +ATOM 3361 CG ARG X 213 24.731 13.105 43.294 1.00 0.00 SYST C +ATOM 3362 HG2 ARG X 213 25.772 13.060 42.972 1.00 0.00 SYST H +ATOM 3363 HG3 ARG X 213 24.549 12.232 43.921 1.00 0.00 SYST H +ATOM 3364 CD ARG X 213 23.775 13.076 42.077 1.00 0.00 SYST C +ATOM 3365 HD2 ARG X 213 23.864 13.947 41.427 1.00 0.00 SYST H +ATOM 3366 HD3 ARG X 213 24.003 12.184 41.494 1.00 0.00 SYST H +ATOM 3367 NE ARG X 213 22.327 12.886 42.487 1.00 0.00 SYST N +ATOM 3368 HE ARG X 213 22.045 12.809 43.454 1.00 0.00 SYST H +ATOM 3369 CZ ARG X 213 21.217 12.735 41.711 1.00 0.00 SYST C +ATOM 3370 NH1 ARG X 213 21.257 12.732 40.413 1.00 0.00 SYST N +ATOM 3371 HH11 ARG X 213 22.163 12.577 39.993 1.00 0.00 SYST H +ATOM 3372 HH12 ARG X 213 20.473 12.374 39.887 1.00 0.00 SYST H +ATOM 3373 NH2 ARG X 213 20.050 12.566 42.262 1.00 0.00 SYST N +ATOM 3374 HH21 ARG X 213 19.805 12.734 43.227 1.00 0.00 SYST H +ATOM 3375 HH22 ARG X 213 19.318 12.232 41.651 1.00 0.00 SYST H +ATOM 3376 C ARG X 213 25.535 15.670 46.245 1.00 0.00 SYST C +ATOM 3377 O ARG X 213 24.654 16.078 47.028 1.00 0.00 SYST O +ATOM 3378 N ASP X 214 26.612 16.400 45.949 1.00 0.00 SYST N +ATOM 3379 H ASP X 214 27.088 16.064 45.124 1.00 0.00 SYST H +ATOM 3380 CA ASP X 214 26.653 17.815 46.285 1.00 0.00 SYST C +ATOM 3381 HA ASP X 214 26.585 17.920 47.368 1.00 0.00 SYST H +ATOM 3382 CB ASP X 214 28.024 18.436 45.850 1.00 0.00 SYST C +ATOM 3383 HB2 ASP X 214 28.102 18.165 44.797 1.00 0.00 SYST H +ATOM 3384 HB3 ASP X 214 27.850 19.512 45.832 1.00 0.00 SYST H +ATOM 3385 CG ASP X 214 29.213 18.104 46.765 1.00 0.00 SYST C +ATOM 3386 OD1 ASP X 214 30.361 18.566 46.518 1.00 0.00 SYST O +ATOM 3387 OD2 ASP X 214 29.028 17.360 47.756 1.00 0.00 SYST O +ATOM 3388 C ASP X 214 25.531 18.565 45.709 1.00 0.00 SYST C +ATOM 3389 O ASP X 214 25.185 18.390 44.515 1.00 0.00 SYST O +ATOM 3390 N HID X 215 24.847 19.449 46.457 1.00 0.00 SYST N +ATOM 3391 H HID X 215 25.254 19.716 47.343 1.00 0.00 SYST H +ATOM 3392 CA HID X 215 23.518 20.036 46.059 1.00 0.00 SYST C +ATOM 3393 HA HID X 215 23.571 20.302 45.003 1.00 0.00 SYST H +ATOM 3394 CB HID X 215 22.436 18.942 46.295 1.00 0.00 SYST C +ATOM 3395 HB2 HID X 215 21.575 19.240 45.696 1.00 0.00 SYST H +ATOM 3396 HB3 HID X 215 22.751 18.033 45.781 1.00 0.00 SYST H +ATOM 3397 CG HID X 215 22.084 18.739 47.772 1.00 0.00 SYST C +ATOM 3398 ND1 HID X 215 22.784 17.864 48.632 1.00 0.00 SYST N +ATOM 3399 HD1 HID X 215 23.483 17.156 48.454 1.00 0.00 SYST H +ATOM 3400 CE1 HID X 215 22.148 17.932 49.859 1.00 0.00 SYST C +ATOM 3401 HE1 HID X 215 22.349 17.311 50.719 1.00 0.00 SYST H +ATOM 3402 NE2 HID X 215 21.180 18.892 49.806 1.00 0.00 SYST N +ATOM 3403 CD2 HID X 215 21.177 19.389 48.496 1.00 0.00 SYST C +ATOM 3404 HD2 HID X 215 20.529 20.124 48.041 1.00 0.00 SYST H +ATOM 3405 C HID X 215 23.139 21.246 46.827 1.00 0.00 SYST C +ATOM 3406 O HID X 215 23.860 21.677 47.700 1.00 0.00 SYST O +ATOM 3407 N MET X 216 21.947 21.792 46.494 1.00 0.00 SYST N +ATOM 3408 H MET X 216 21.477 21.247 45.786 1.00 0.00 SYST H +ATOM 3409 CA MET X 216 21.444 23.054 46.825 1.00 0.00 SYST C +ATOM 3410 HA MET X 216 21.620 23.096 47.899 1.00 0.00 SYST H +ATOM 3411 CB MET X 216 22.137 24.175 46.034 1.00 0.00 SYST C +ATOM 3412 HB2 MET X 216 23.168 24.195 46.388 1.00 0.00 SYST H +ATOM 3413 HB3 MET X 216 22.084 24.085 44.949 1.00 0.00 SYST H +ATOM 3414 CG MET X 216 21.620 25.511 46.451 1.00 0.00 SYST C +ATOM 3415 HG2 MET X 216 20.764 25.829 45.855 1.00 0.00 SYST H +ATOM 3416 HG3 MET X 216 21.674 25.514 47.540 1.00 0.00 SYST H +ATOM 3417 SD MET X 216 22.941 26.689 46.031 1.00 0.00 SYST S +ATOM 3418 CE MET X 216 22.406 27.128 44.364 1.00 0.00 SYST C +ATOM 3419 HE1 MET X 216 23.109 27.817 43.897 1.00 0.00 SYST H +ATOM 3420 HE2 MET X 216 22.511 26.291 43.674 1.00 0.00 SYST H +ATOM 3421 HE3 MET X 216 21.416 27.584 44.391 1.00 0.00 SYST H +ATOM 3422 C MET X 216 19.968 23.058 46.608 1.00 0.00 SYST C +ATOM 3423 O MET X 216 19.480 22.644 45.547 1.00 0.00 SYST O +ATOM 3424 N VAL X 217 19.218 23.603 47.512 1.00 0.00 SYST N +ATOM 3425 H VAL X 217 19.644 23.953 48.358 1.00 0.00 SYST H +ATOM 3426 CA VAL X 217 17.810 24.038 47.377 1.00 0.00 SYST C +ATOM 3427 HA VAL X 217 17.478 23.833 46.359 1.00 0.00 SYST H +ATOM 3428 CB VAL X 217 16.868 23.321 48.306 1.00 0.00 SYST C +ATOM 3429 HB VAL X 217 17.288 23.511 49.294 1.00 0.00 SYST H +ATOM 3430 CG1 VAL X 217 15.422 23.904 48.183 1.00 0.00 SYST C +ATOM 3431 HG11 VAL X 217 14.924 23.584 47.268 1.00 0.00 SYST H +ATOM 3432 HG12 VAL X 217 14.791 23.511 48.980 1.00 0.00 SYST H +ATOM 3433 HG13 VAL X 217 15.275 24.939 48.490 1.00 0.00 SYST H +ATOM 3434 CG2 VAL X 217 16.909 21.787 47.916 1.00 0.00 SYST C +ATOM 3435 HG21 VAL X 217 16.005 21.285 48.260 1.00 0.00 SYST H +ATOM 3436 HG22 VAL X 217 16.829 21.694 46.832 1.00 0.00 SYST H +ATOM 3437 HG23 VAL X 217 17.736 21.230 48.357 1.00 0.00 SYST H +ATOM 3438 C VAL X 217 17.880 25.542 47.592 1.00 0.00 SYST C +ATOM 3439 O VAL X 217 18.556 26.039 48.479 1.00 0.00 SYST O +ATOM 3440 N LEU X 218 17.014 26.261 46.821 1.00 0.00 SYST N +ATOM 3441 H LEU X 218 16.505 25.761 46.106 1.00 0.00 SYST H +ATOM 3442 CA LEU X 218 17.011 27.745 46.683 1.00 0.00 SYST C +ATOM 3443 HA LEU X 218 17.543 28.132 47.552 1.00 0.00 SYST H +ATOM 3444 CB LEU X 218 17.850 28.016 45.439 1.00 0.00 SYST C +ATOM 3445 HB2 LEU X 218 18.831 27.556 45.563 1.00 0.00 SYST H +ATOM 3446 HB3 LEU X 218 17.449 27.493 44.570 1.00 0.00 SYST H +ATOM 3447 CG LEU X 218 18.076 29.518 45.058 1.00 0.00 SYST C +ATOM 3448 HG LEU X 218 17.881 30.156 45.920 1.00 0.00 SYST H +ATOM 3449 CD1 LEU X 218 19.529 29.778 44.603 1.00 0.00 SYST C +ATOM 3450 HD11 LEU X 218 19.778 29.236 43.690 1.00 0.00 SYST H +ATOM 3451 HD12 LEU X 218 19.771 30.832 44.471 1.00 0.00 SYST H +ATOM 3452 HD13 LEU X 218 20.214 29.438 45.380 1.00 0.00 SYST H +ATOM 3453 CD2 LEU X 218 17.124 29.854 43.935 1.00 0.00 SYST C +ATOM 3454 HD21 LEU X 218 17.177 29.184 43.077 1.00 0.00 SYST H +ATOM 3455 HD22 LEU X 218 16.138 29.652 44.353 1.00 0.00 SYST H +ATOM 3456 HD23 LEU X 218 17.166 30.896 43.619 1.00 0.00 SYST H +ATOM 3457 C LEU X 218 15.540 28.222 46.755 1.00 0.00 SYST C +ATOM 3458 O LEU X 218 14.669 27.698 46.025 1.00 0.00 SYST O +ATOM 3459 N LEU X 219 15.221 29.293 47.453 1.00 0.00 SYST N +ATOM 3460 H LEU X 219 15.962 29.574 48.079 1.00 0.00 SYST H +ATOM 3461 CA LEU X 219 14.109 30.168 47.323 1.00 0.00 SYST C +ATOM 3462 HA LEU X 219 13.436 29.993 46.483 1.00 0.00 SYST H +ATOM 3463 CB LEU X 219 13.190 30.119 48.554 1.00 0.00 SYST C +ATOM 3464 HB2 LEU X 219 13.783 30.721 49.242 1.00 0.00 SYST H +ATOM 3465 HB3 LEU X 219 12.276 30.699 48.424 1.00 0.00 SYST H +ATOM 3466 CG LEU X 219 12.912 28.694 49.146 1.00 0.00 SYST C +ATOM 3467 HG LEU X 219 13.791 28.055 49.054 1.00 0.00 SYST H +ATOM 3468 CD1 LEU X 219 12.516 28.870 50.617 1.00 0.00 SYST C +ATOM 3469 HD11 LEU X 219 12.423 27.954 51.201 1.00 0.00 SYST H +ATOM 3470 HD12 LEU X 219 13.358 29.351 51.116 1.00 0.00 SYST H +ATOM 3471 HD13 LEU X 219 11.615 29.474 50.721 1.00 0.00 SYST H +ATOM 3472 CD2 LEU X 219 11.719 28.069 48.328 1.00 0.00 SYST C +ATOM 3473 HD21 LEU X 219 12.032 28.063 47.284 1.00 0.00 SYST H +ATOM 3474 HD22 LEU X 219 11.575 27.018 48.581 1.00 0.00 SYST H +ATOM 3475 HD23 LEU X 219 10.892 28.726 48.597 1.00 0.00 SYST H +ATOM 3476 C LEU X 219 14.602 31.645 47.181 1.00 0.00 SYST C +ATOM 3477 O LEU X 219 15.543 32.001 47.826 1.00 0.00 SYST O +ATOM 3478 N GLH X 220 14.052 32.433 46.261 1.00 0.00 SYST N +ATOM 3479 H GLH X 220 13.359 32.033 45.645 1.00 0.00 SYST H +ATOM 3480 CA GLH X 220 14.682 33.689 45.787 1.00 0.00 SYST C +ATOM 3481 HA GLH X 220 15.236 34.238 46.548 1.00 0.00 SYST H +ATOM 3482 CB GLH X 220 15.669 33.418 44.709 1.00 0.00 SYST C +ATOM 3483 HB2 GLH X 220 16.545 32.886 45.080 1.00 0.00 SYST H +ATOM 3484 HB3 GLH X 220 15.182 32.782 43.969 1.00 0.00 SYST H +ATOM 3485 CG GLH X 220 16.242 34.637 43.886 1.00 0.00 SYST C +ATOM 3486 HG2 GLH X 220 15.440 35.093 43.305 1.00 0.00 SYST H +ATOM 3487 HG3 GLH X 220 16.517 35.505 44.484 1.00 0.00 SYST H +ATOM 3488 CD GLH X 220 17.317 34.259 42.870 1.00 0.00 SYST C +ATOM 3489 OE1 GLH X 220 17.317 34.492 41.662 1.00 0.00 SYST O +ATOM 3490 OE2 GLH X 220 18.385 33.638 43.408 1.00 0.00 SYST O +ATOM 3491 HE2 GLH X 220 19.064 33.446 42.757 1.00 0.00 SYST H +ATOM 3492 C GLH X 220 13.537 34.598 45.409 1.00 0.00 SYST C +ATOM 3493 O GLH X 220 12.449 34.165 45.126 1.00 0.00 SYST O +ATOM 3494 N PHE X 221 13.678 35.917 45.626 1.00 0.00 SYST N +ATOM 3495 H PHE X 221 14.596 36.150 45.977 1.00 0.00 SYST H +ATOM 3496 CA PHE X 221 12.772 36.982 45.251 1.00 0.00 SYST C +ATOM 3497 HA PHE X 221 11.989 36.527 44.645 1.00 0.00 SYST H +ATOM 3498 CB PHE X 221 12.168 37.569 46.539 1.00 0.00 SYST C +ATOM 3499 HB2 PHE X 221 12.976 37.690 47.260 1.00 0.00 SYST H +ATOM 3500 HB3 PHE X 221 11.713 38.548 46.386 1.00 0.00 SYST H +ATOM 3501 CG PHE X 221 11.070 36.844 47.221 1.00 0.00 SYST C +ATOM 3502 CD1 PHE X 221 11.277 36.224 48.464 1.00 0.00 SYST C +ATOM 3503 HD1 PHE X 221 12.268 36.234 48.893 1.00 0.00 SYST H +ATOM 3504 CE1 PHE X 221 10.183 35.728 49.177 1.00 0.00 SYST C +ATOM 3505 HE1 PHE X 221 10.336 35.458 50.212 1.00 0.00 SYST H +ATOM 3506 CZ PHE X 221 8.919 35.741 48.652 1.00 0.00 SYST C +ATOM 3507 HZ PHE X 221 8.098 35.405 49.268 1.00 0.00 SYST H +ATOM 3508 CE2 PHE X 221 8.703 36.174 47.347 1.00 0.00 SYST C +ATOM 3509 HE2 PHE X 221 7.699 36.141 46.951 1.00 0.00 SYST H +ATOM 3510 CD2 PHE X 221 9.775 36.719 46.610 1.00 0.00 SYST C +ATOM 3511 HD2 PHE X 221 9.526 37.149 45.651 1.00 0.00 SYST H +ATOM 3512 C PHE X 221 13.465 38.125 44.533 1.00 0.00 SYST C +ATOM 3513 O PHE X 221 14.636 38.445 44.789 1.00 0.00 SYST O +ATOM 3514 N VAL X 222 12.743 38.805 43.630 1.00 0.00 SYST N +ATOM 3515 H VAL X 222 11.840 38.465 43.330 1.00 0.00 SYST H +ATOM 3516 CA VAL X 222 13.263 39.670 42.586 1.00 0.00 SYST C +ATOM 3517 HA VAL X 222 14.108 40.190 43.038 1.00 0.00 SYST H +ATOM 3518 CB VAL X 222 13.812 38.954 41.335 1.00 0.00 SYST C +ATOM 3519 HB VAL X 222 12.942 38.643 40.757 1.00 0.00 SYST H +ATOM 3520 CG1 VAL X 222 14.530 40.071 40.552 1.00 0.00 SYST C +ATOM 3521 HG11 VAL X 222 14.710 39.671 39.554 1.00 0.00 SYST H +ATOM 3522 HG12 VAL X 222 13.835 40.900 40.416 1.00 0.00 SYST H +ATOM 3523 HG13 VAL X 222 15.523 40.353 40.900 1.00 0.00 SYST H +ATOM 3524 CG2 VAL X 222 14.512 37.599 41.439 1.00 0.00 SYST C +ATOM 3525 HG21 VAL X 222 15.483 37.760 41.908 1.00 0.00 SYST H +ATOM 3526 HG22 VAL X 222 13.821 36.981 42.012 1.00 0.00 SYST H +ATOM 3527 HG23 VAL X 222 14.748 37.240 40.438 1.00 0.00 SYST H +ATOM 3528 C VAL X 222 12.243 40.790 42.291 1.00 0.00 SYST C +ATOM 3529 O VAL X 222 11.141 40.560 41.798 1.00 0.00 SYST O +ATOM 3530 N THR X 223 12.527 42.105 42.600 1.00 0.00 SYST N +ATOM 3531 H THR X 223 13.348 42.306 43.154 1.00 0.00 SYST H +ATOM 3532 CA THR X 223 11.574 43.247 42.541 1.00 0.00 SYST C +ATOM 3533 HA THR X 223 10.940 43.098 41.667 1.00 0.00 SYST H +ATOM 3534 CB THR X 223 10.605 43.340 43.723 1.00 0.00 SYST C +ATOM 3535 HB THR X 223 10.009 42.436 43.845 1.00 0.00 SYST H +ATOM 3536 CG2 THR X 223 11.276 43.437 45.078 1.00 0.00 SYST C +ATOM 3537 HG21 THR X 223 11.726 44.414 45.253 1.00 0.00 SYST H +ATOM 3538 HG22 THR X 223 10.391 43.275 45.693 1.00 0.00 SYST H +ATOM 3539 HG23 THR X 223 11.961 42.600 45.209 1.00 0.00 SYST H +ATOM 3540 OG1 THR X 223 9.757 44.435 43.488 1.00 0.00 SYST O +ATOM 3541 HG1 THR X 223 9.265 44.259 42.682 1.00 0.00 SYST H +ATOM 3542 C THR X 223 12.373 44.553 42.275 1.00 0.00 SYST C +ATOM 3543 O THR X 223 13.306 44.939 43.000 1.00 0.00 SYST O +ATOM 3544 N ALA X 224 11.909 45.296 41.236 1.00 0.00 SYST N +ATOM 3545 H ALA X 224 11.035 45.149 40.752 1.00 0.00 SYST H +ATOM 3546 CA ALA X 224 12.510 46.594 40.913 1.00 0.00 SYST C +ATOM 3547 HA ALA X 224 13.579 46.383 40.891 1.00 0.00 SYST H +ATOM 3548 CB ALA X 224 12.040 46.990 39.488 1.00 0.00 SYST C +ATOM 3549 HB1 ALA X 224 11.895 46.111 38.861 1.00 0.00 SYST H +ATOM 3550 HB2 ALA X 224 11.135 47.590 39.579 1.00 0.00 SYST H +ATOM 3551 HB3 ALA X 224 12.793 47.587 38.974 1.00 0.00 SYST H +ATOM 3552 C ALA X 224 12.246 47.764 41.932 1.00 0.00 SYST C +ATOM 3553 O ALA X 224 11.153 47.763 42.548 1.00 0.00 SYST O +ATOM 3554 N ALA X 225 13.213 48.624 42.215 1.00 0.00 SYST N +ATOM 3555 H ALA X 225 14.096 48.441 41.762 1.00 0.00 SYST H +ATOM 3556 CA ALA X 225 13.293 49.249 43.508 1.00 0.00 SYST C +ATOM 3557 HA ALA X 225 12.303 49.369 43.948 1.00 0.00 SYST H +ATOM 3558 CB ALA X 225 14.099 48.406 44.461 1.00 0.00 SYST C +ATOM 3559 HB1 ALA X 225 13.969 48.977 45.380 1.00 0.00 SYST H +ATOM 3560 HB2 ALA X 225 13.628 47.424 44.505 1.00 0.00 SYST H +ATOM 3561 HB3 ALA X 225 15.150 48.301 44.191 1.00 0.00 SYST H +ATOM 3562 C ALA X 225 13.914 50.647 43.442 1.00 0.00 SYST C +ATOM 3563 O ALA X 225 14.887 50.773 42.785 1.00 0.00 SYST O +ATOM 3564 N GLY X 226 13.345 51.524 44.267 1.00 0.00 SYST N +ATOM 3565 H GLY X 226 12.586 51.227 44.863 1.00 0.00 SYST H +ATOM 3566 CA GLY X 226 13.774 52.951 44.403 1.00 0.00 SYST C +ATOM 3567 HA2 GLY X 226 14.623 52.918 45.085 1.00 0.00 SYST H +ATOM 3568 HA3 GLY X 226 14.080 53.464 43.492 1.00 0.00 SYST H +ATOM 3569 C GLY X 226 12.691 53.806 45.177 1.00 0.00 SYST C +ATOM 3570 O GLY X 226 13.017 54.266 46.296 1.00 0.00 SYST O +ATOM 3571 OXT GLY X 226 11.572 54.012 44.719 1.00 0.00 SYST O +END diff --git a/tests/test_pocketid.py b/tests/test_pocketid_rel1.py similarity index 100% rename from tests/test_pocketid.py rename to tests/test_pocketid_rel1.py diff --git a/tests/test_pocketid_rogfp2.py b/tests/test_pocketid_rogfp2.py new file mode 100644 index 0000000..bc25bc7 --- /dev/null +++ b/tests/test_pocketid_rogfp2.py @@ -0,0 +1,24 @@ +import glob +import os +import shutil + +from povme import PocketDetector + + +def test_pocket_detect_rofgp2(path_rogfp2_pdb, path_rogfp2_config, path_rogfp2_output): + dir_output = os.path.dirname(path_rogfp2_output) + if os.path.exists(dir_output): + shutil.rmtree(dir_output) + + pocket_id = PocketDetector(path_rogfp2_config) + pocket_id.run(path_rogfp2_pdb, path_rogfp2_output) + + with open(path_rogfp2_output + "pocket1.pdb", "r") as f: + if "PointsInclusionSphere" not in f.read(): + raise Exception( + "pocket1.pdb did not contain substring 'PointsInclusionSphere'" + ) + + num_output_files = len(glob.glob(path_rogfp2_output + "*.pdb")) - 1 + if num_output_files != 7: + raise Exception("Expected 7 output files, but got " + str(num_output_files)) diff --git a/tests/test_povme.py b/tests/test_povme_4nss.py similarity index 100% rename from tests/test_povme.py rename to tests/test_povme_4nss.py

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ɰ?+Lw^Q)HbZWQp0r^37mU6Hf($VlD{Kx{%4LI`DVSq2&3szw# zQ6y+L`T|*GdzlWN2QqE1Y;D#>x^BOcr3Rk{z5#T8y)5u|=AWO*bs$SH?D+n~_{hs9 zq_+jJSdEZ~pS9G-)*U4v>&$hKBxbd-z;=`9{x#x=fL^4ZKio_%TP zS^dUN6sn#403Rlb7b70cT=A@G&oVszDY%yP3FO%gbNzf7Ykgte%*loE%@SX!d%Qv655@W zWpSN?zb9D0qezq&OPvsM*jFN@GF~KF?fGz(4X&&Y7_pF4R&~SKu`b&&8KmqlZH6^h zQEp@_|7oD~B2i`53mDgYjEt#dWLv9zVe3~B5tIjA%kff|Xio$^QrxRiU$aYhUL=LX z2E0%M;9FiHT#NHIO2A@WEwu%uWP=K2tLiW8otku8Z1vRh(-KG6V-*>b8~*Og?D z-{0f3OqlE9MIp=+p_|l2g})06d0)4?koi&gzvk!pHhrvMBMf53yBmdyXn!jM9*ig9+^cb$!xp(6^+Y^9F0~>o%FZ zngjB`=o`n|Ta`x~a_C(2y5U2rkLK9*J28uF^!g4;XsiqvJq>R55jwzyxLgB~qF1zm zfbuka$5%wn$HDiW(}G8^TU&jd-UAF3U7g$Mf3dzclCkX5;oJ{%3N6RxMY``Nm+4&H zW55c~sOT{zwKSymJncu4l_tTE+C`4R4nB2elTlEXp^%8@Oaf;_2Rqx%N ztT%`DR8rJMmuKIh??Nol0W%(^zTyolpyR@y2N-_8VB2dt+v8&64*tTza zns#_n3ljX7~>o|;$9}B1UDv<}H6+X0l`RF(>0I{A3mgJm=q%Mv}sTEjQO)RUb}x^Uvn^J8w(2&Kh&IGex0Kv7EfNE&Jdhfj_DOu z-MtsQQ^M3gmS^!|P#gj}=4;(KFYmsi<(7`-blZHy&dY;**EP-})VR_CRwd7F9@PQ> z5BM8W^q)!XY6=*?;(prrMEe{Yf%pd$-o1-BJn5Eqm7)mV^yF(7@7 z9p+{eIa-Eam!XLu^nw-Q%HrQNE)L@^^QIQ;TEN@jwcUpI$&~?86{RFM%;MJO+|ZFB zUr0tkb^>dE*XxeMCjFqu%2&?sh2$K&EDkszNgU8wuR~fuAQ#}>Zif2#S$(Rr-wwe6 zuDr8D#t`*6&~Y{Ti@|{z%ej;x;|j*n1VHc$#CI^0&CTF2Kp^_U_P7M#Z3vh&IQl2> zFb^sjtCYj^68xlUvqbWK-)?g+dU~gq3BYyUS95j~a>1Q9Siv+;^X|4~&s%=zZu{*U z4~vU5W;F-E%=b*7xb_{&_#tHt5!BGNL+o|=qqclA`a9I0ULwME=}yWA=2-C=aV^8O z*k<6@zkfz2y7QjlH5KlPI6fekN2=ULy|JkOj?rOXJMLVhA>c8uAtaC)R?$Cog1tP~ zu!6bQr^)e;-R>8Q_n!S`qR^~CdrUiUQugq5Rfo&EOZ=OPhYSBrlii*iQAq3fhQ(Wh2%@Yd2g_ z4jWC(vUQ6)6!MPj^;_P!lT?%{N%Z7n@_`SZsP@YN_N>sSS<#2 zBokaa<8@d_{fEq>@&1j;%h96m=>sF{Hz~sy9A{h)c@x-4abD`6aCRYZ1eYaQj;TD4 z$I;Q`5JUglh3I=EUbd5g<15Jtb!eBr?IUP2uvhIsxwLorgM6BNxa<9H`k;IUmtRr? zJF&9!BG93BkTPj&A5)Vc49*3cK==p^J|Wlh>)v+5NPfe~Vb& z<4(3abk2GIA1zmFOKV`AxVCi)?8<@nHv)S0L)S^G`|nP8RhQp*#r;Hj_1xjb?guF zG6&-4hSi=w(YgJDJ|7a0^1Y)(3?dx;xJAX)D?uoHaeRcPfR)3LevGK?BW%9&mP&~V)Q~QK;o_?(@?D)`4 zWOQW3V}2*<{BCV`om}>rbBq#4U{O(*sui%Wza8h3-&scZVq8e$@%BN-EkK3Op<8!G z=@6@{d?`CX1r6@=>8GcddNzv;K0eKSD}#0q8x@JM2g$hDU3)C#(M|!l6I>S0{ww~V zIp@~Rk)l>(al11%#X5Y&S_JanT1~}&qW5V05Yu~lme>;1$?W5fGJp|l$6Z5_q87$K zFD(eX!zEdq?T>2Scg>F8^6P|HGmC5He5=Zg^&RNsE_{|BU01kFtsz5O1ek?TsZjx> zgD&S#bum*TuxInqPa!lHPt=TTe%Rfr_{{pgyxF@V0IqwS4aYD8UMM26(yV;0w^vyo z*Ni6WA^*IL6CwX`u=HCRHF;BiI1(=srSwCTm_n`eM~b>JnQ~VA2asfytp#Xt~R>r}s%xa*`G)6|4uAC5!AKQvZnL$RwRr z&8!&vMo|<3in9Bp(Em~`xspq;okSW862(aYz7c8kjzWeEPUGT6r=p*au!c&8l3qzw zQ8WYCZh-0V;p0(Jd~R$BmrNnu+{0aay}%EZ*e+8f))1t%Lj#W9G6#(1){@z-xS9hx z`oHZu&?W#wh7BB{ljaHuCa3>%71b8st>^#=nwNm^r)IUb-}xFCDB9wkaJw*#USrz< zzzP3)s&9yX4H@kMK2xEH{gf58E%GsnQqOdOky?tLcA#4WcHWXhz9tpxp|rad0;?%s!`k8w|e^gP{9EwgUv6yTP2k%4cQ& zW4@9?=h?^*%Uye_&x1=DXPcU3iA`=-PbiV`gy|jR^v~f@(0;YI+E8vr4OTUL3G9&J zZ@UD;PcRQsF7q9Rjot7rcW%E%`Dv}MV{sU6lW##7sThexG0K$ieP!=_<)b^}BQTCB z17;#BZb!)??JqvV7akH`IdP9m515HoMn_DH>jDS84d4nt5EUO~C*MpM;jZ@Bb@6Ypme&m8m5F*OR5h!W6F& zvwiZ`;}>U#iRc+BoK~RD8y`ig7uxBGNB#6EP^34MI5J`i&>`1W=Y!Rq;?(wrt^L3r_|V=3RJboEp|`oj>$vdU<^9l4qpY%f zpz0v=im{=f0r4trtF^dJ&g+~b#H{|k(tX~|Sbtd25oTb}N8e-^hK?p zA55UEyd#>_&joX{>(+1%v7I!e9FpR1?U8bAlcklifew|!_;Hi@?uz6JP9#Amc;^Sx z#zZKP?vdBXNLN}5iP^aAuAy|1OdIPunE-HKvBZ1flfV!G8Zo9xa>L>g&P zgxx5GK^A_}jh2pJCypR8Nyybx$T4GSxZy)SD}mNkUe{#39ZP7jz<$qxxyc>Js_YI^ zJ&GH>VJB^A&D@kZb}!PW>Ap-UgP`GjU;sOz0>YP#J?y1G=#z1P_+uG!XnnlirPfFejoF4pwZ8|TuvTX>qDRs zFUk=hUigu+m&)=CV2ofVzMi4B*jkfuF$ zw%swHTg&HH9>7Kdw`+$qXMV3fG!|nm8**Q{Wuw7DXvtK<`lesM6sx(Hr6q zhoXZVb(2?bLB=SbX};wgHWpA$bpjZMWp(jwCUoCv_KA>EC&hch0ir_2Ex-#lD-!MZq>8T9?0;1DQ(Me{ zjb)BrpSba{h|pjNs-+w{0B}1&$F-)t>c>_~FB;~o2F@6jPa_?kcu}L{2Nm+={`enu zT8_uo2Ra(my%4}tTHj4uU_CYfb(}289<+PYihHY)lh1SBnxU>HU0;uH?cK-YwQM#e zZHks}PL=5>TCMg9r)aTaEiMn1r28`|gTmH<%aPeDpJBLSd3O zVk5IKG67-dX>qh$hbAmy+t;NRj4{$x1_2um9%ht$P}igZ6rVD?%@Z+De_QFyy2LuZW(h8mi-R7`W%pTM6OhROYj4iMe&nnhI zrF2UYbZw2<+>iM> z_YV;et-ZM%M*1{|q6<(Fx2AN0kWv#3D{}Xz&;m%`pf=lGzm=wTL-;rXRxsD-PaUiq zczux3X_yfwv^Txg5)uyFIOX3)h6j7*21G5S&qLV zV-!+6TasAxaQz`Gi`O>A`fl}Og0`zyte*zO!k10~GiZPYh-=849$uP5H>WVD_fgmX zN{_t+H8^kP$Tbeh(xdFt3=EZ@-`$Dkffh zFnl@e!2;xzwm3L#Cf7N!`z1_3yBflshPB&~og1Mu#xU&ShN7RX8)56RjkqjK$prfd zDp+JUIpDmuX0Mywd+(WJpam%_)w~jd2K^*ov2r#y0^7oz%7gNvu?fx=wM>FaA`Qn0 zCoi3N224#b1gt~5!2Xb?A(eSX|D_*=1|JMSeFPp56VT&kEqQx8mRP#ao~2@%xzj|8 zB%C8x(+fM_VLl8|uO*+Fi2<}XbBsLR4-;KOV@_gE3GwMM53olowY5NBrP#8>#WaMR zD}0ZA^uMkrvTG}b|6O0+@SD9D_%e5`dh@3&%%RY!pbYV4dbb2cQWI50R+GgWqIU2@ zjaCZOTF2&RMM@d7Q&#*Hx**Lv^W$|>^vspItBIysFJZ7NpW zR1Mv11obmk{HP0lUG)$gA6wV>PR)k?Qfp8V2a6Gt5>`G~oO*2OY&y0W8^Rt~wTS~- z&(OKT{KOj~rxBN4tN@d1XW}^lrO&S2)aHI%wa@-yg(7&Yyz332PBQ{Pg#C>o(M534!6{R{I}8aO6v zoX`)wS6Rs3jeoVa;&nC7EF!`f9{!XK|gEiTQIJ1$LW+W5vl5@5!%+S>* z5`fwId!Ja11;KY8eBK~L?Wm}E{+c~-$gCwx@w=9tGMojn;EBC(@WPoAJ#vV?Pq1aK z87on8L1ZjVyEe08q+L?s_R3xjeB_N5Ocq7}p3V$NBGzVn=?t1T&=uQ{uvurD>v&|{ z;m6l?;fhOtCpYkI$2DAuC|hCnFyGYS@&0raCm?a>Ya;0{L&=?NPQY-m!J<5MvKlpL z$h?%jWHIN>yr*8x_Ww~`ypZviE6FpiGyKh*R^9VkF5s==;(_c~U<6<{BS};bmns!P z6a}ni)#Us+*pbMgA}@I$2vere-M8E+#9#)s*;it;;@BUP@!u1`v`IE8#73rbEH@g) z?UWWi59+78CcZfzYz&|k2IHvUN0pYo)$_H}kr;ssj9&op5t1$x@jXO6jSaf1xE?)?y98|oG8CtnoK7=TL$GWq|^P$*cv}fG*l)VLrm7YX-539uT!(y*M}7J*bjBo zJ~H2Ffse!~ zf!B7w^?l)6xlCYO62GX!V5#!#?@s0td*eV$oxs7hT-j-+I|-i5;W;Q!HF3L=?D3pI zxOVH9tomxTqF%C8yuZT7cD+IKEX=IV!tA}l{}X2S-=?YPMKJes?u4!jq1TxJzM|wi zxD>$d28T){OH ze5Ch*x{4HDvD5Iqu&!0-UhdYSS5rOZCu!a5&+Du@yTX_G;wU#fgYV)S6F{!m2`pyO_gW|LYf}2CO6w9YV!d3b zrt`mYgASU|GB;f2pXoz7`TUEpPumdUz6n>Mx`CP&d%+tb4Wt5k=bPo874K5x3RFL1 zKuO-KW1yOW7dg@sf8v?6t+swf{EB@R9n`fnY$Sm5Y7Hj|@8vjOfTzd40!|r=?Wphg zkJf_PYN>ipLnSs!dHLJv*BWiEgfYR#XFf&TYD?ySJB4Q7gw>|EGFc33T_LVOfgmwr0}SHoHRVTBzQ?sn=$&1P`q}v(Kv@y zchML7$pIL7;9e@|DdG1aS7)iTr$EF6`pSfN!ePern0MkZaJ>>a#52io7*-BEv7j5B zgmBUk%B{f@%!jp~!OpwIg0*%|oA#_*%`b7kVUUAu9x5cNN6+?C4eZzeVF}v0k@Fk@ zitzxSi_g#xV`u*s59(&{hct^9+vXsw;49`nL_H#j1lCgtL$1}@%9EQ>wqY_=-aTsv zr%9;HO~-G1hYpDE3n%AS-Rfuf6tIYShnhJQH_>dPm0k?Jl@`K2^A`KMIxzi7YJ!1) zaLvWFcbyP^fi+>J!S5$rkh3Q?)0$Ip7I2kzf|&0d#>_tT_Rhw;P2~9-Cu1;mgnwZA z=Y~G@r~is_$NdtVriyDftMrgH(*7S3Z@Jmzl>jtUHxESYg#l^eRPX9I0Rrnp65#4; zm5$#-j4bFd7XrI8o{!24p^LdfE6&j&L_1^D$i+u}F=z#HHFsqifFLgBn9Q8??spY5 zK9D5p*;ubC>XYrA)v#ZppPnEn`&T8S1Ey?i6dc+$L?`7rLUeB2Nv6HVMUZ6e+4yzR zaVl|}E6Fhu;X1i~1G(ZeJdY_7`tbNJ-bbX{J)bTQ6sLB*Fk~C=jXzh?0a^dFBg;2w zK|4B#&;}icPX)N=O_&!_&SL20YK`I~#>gVpX(bAPzPbFq*zQXZf*<6;UW7dMMK)-? z46`4Qm3@Zi;C7c@$Ew1wcY>L~E<`j2AB$5J|K1YK!%SSMnqx>q-(Ni&lEj=1#3A!G z@%uTXTWjK-K2(6IEa2)gZ6{I*$e|P~;cK-dZop5<3U{?@eSs_jxcvHYO4l7NYtD)< zcK;&=v~C==JP8C16<0+lPWg=av47e>c{Cg0ffmkTnS-8mnX*;2oCaARY;zDk$hdiY zepk5a` zh(dV~n!e~18>^6T%$(hwDw6t+A6olt1NEh)X#fP?7b++ZW^E8{2t|Bs_=wTV7?YKn zxMeoSth*%Nz?rs-+t#I6VDM2F%7|6W)^AX$R$-H-X(v5UX}IJOyJ-{%|I3fhPSWpX1Zq$A0$Ah%*#>N_E?5C|himZfe=v@?>jRn8Yp_geHIXwW*-zjMJ)+OrUrVqvERxSb}sHKWxivma*n{5{l zhH@ylkQEPB{CZv?@{1K^VCMJ}c>shQ2Nz1d6Rk0ENQIK!u7oD(yX+3 z5K!u+BNxrr0=G4;cRCpY`t!T5&Ff*_r1QJVpQjI3_OpJVE{Ox!78fZt>Qpzj9d4qu z#ZR*j>DH;8?at_c%5^I(yUxNrF4n>)e+3_m4eOa(eu%0nYSl6^J+Qn8r~wG|?!mcf zo}LnKfX3>Zo3p~~ejOwTm~;>;cvKXw9<0|40KAf}*-vkp1)QQ;g3bFb1jY7zFoK4o zu5K@q;<&U10lO{vp#!{+jj0w5%r9cC8lCn5QO<9e_ z-44yw>>9MOL(X#%n*xOiTmHTqhn3c<_^R`hhn5R(Dmt^CtB)3+Cq#}N9ePOy9+ltT z^EqPN{o}FybZAh!2IhXE<}r1Mu86UySNz$&jbDIRxGq0m?n-t+R_g=C*Tm;e9TsUH zE*d@GbXVtq7!Gg0Uifk2$90;L4a!-wF5+wLxzI z{s()sXjS}fw__*4ch^`f)d;0sKKLNXx68b$?(`5E6R++GTPNa@S2M?&PAq@fa?>aT zP|a$n9qoiur*Hw><;4PdL$-h+W(s55I?{ald82Q4Px)BalKnv1t-Uz$C^d(@;uujN zkg53UT)6l)b#PxSfQela9}e12LKDL{yB&f{jNyuJX+CMPgoMh+*iiAfK5XQ&5|h3F zBR>Kheh`UT<)Uryg92{Qq#rn{R!F3BSn^t|Ev^}Z`(}q~eE;5tsyJUTO>_Ms>&bnh z3zrU5Kgut5I1%i&IAu^1b|{5r9sJ~9U(E5VamR@dh%-Zb{6B`SlY1sGIH-+>x#Pq} z4@u#lsrfAi!>f#-8mBrK;5v$FflK<3cpwFbXWeawXZxur5I+>4mMlixCdLjOZ{b&N z!a3m?OgJMfL?gp`UfR0Lk>B4y`nBW1|G4sl|G09a6+F(8WvqY>V13YjXDGt@;D;ZA z{qCZT6+lS&TbDewsvB+KtL@~Be2`K6a7|xVmBJcVkE3atLRb7;Vpof3TFhr2t51Qi za03#Yg&7LB@1hlSabK9%jOY6vi_QEo7%Ax6k$|I*IRh}PuGq8f-3&2*jCKDoo@05$ z;;AzCf%2`a=-CCi2BBXe-rO`P3QuWgvjEP|Z95kWmPL$bnqqUn>7ydDq^9PA<=i}e zAndC178F~Qw+4brlkYhlhO-mITtxan(i@B+>$T@4Tx#n~R9 zioaWOBi@158_)RX`Op87nOEqqN_F2&T$U~s`nIM9$^^0nlH;_M5E;j_Px(=}<9$fVk@UP@ zp=Hp?(vtcES(ByU@UsU6sNj+L%qfO|vU_&(TV>~WpVi=p%(tHD(?h0Piod>Td{Wr_ zt)lFiszK1e?G_8H?|L5MmRknWfjybavmMB{criV2B82`?>YvnK9#=5?XbKUHIBDWW z?v}5BDJLlG2OYKf%MhB&@;5#P%b6*;T|_WP92wlB6?n`=&FC~WJ*!T&>+2u{X6=~m zq)+KdcjTYYW3#NT@|;jv^Ha}VIAq$Qx#9QmcKx*rz%>HSX_Rs)yo|4wxwunQk$tBct6^Ta=ZA>7dy3Qfe*E8 z+0&I&<~w&5h69}!xqYmli&{AbNTX^FB#tA+;csB&ZrKx1xF|X3$YYu9Zgwg~0GHwP zFwrDYyz*B_=axLR#SLn)w(^bBc=$M4(HF6}s$>>Cs+|;+-Z~s+!fwqBZ5cG3aHQ$^ z&88-1{fYC&`H&jJDW3$uV*4rM7e|?Y-3J0adTz2yh1@?*5lZh65_L_iQ43} z6NT?EPu*4WJ|5VlIB^uSV_wl;@tRNvbsT@{FBiyC{*xk{s^{$*3BWKfzdI%ONcUxg z6xN|zR6zMS%Y$FVOWQF2q;KLm`}W(nK@O*QKE8)K9I-eaKWtAs=~F1dNKcWerOUK` z0yVfU$<%I^I9eZ-B&G&zm5*AR9!wqDuV5B2bRm|szqkQYcR6^q7$cQ$wZ()-5rwVu zV-GH;Jkzbua;%Gf4{3xXXdhT6E<&5o187?El@xTWImT2gkoX(AaL{;#P3pL{>r{yS zTul!dWC{*l&PXL%+7-p4KrhflS_sk@Jp_7SstooCRc=JoQVDsm{T@+jQU>oexv^J_a=Nve`S&nNu>wEw zft`2|pMQiI-EP5Di!}H|t{jd9y!nh&IegNr*y!Cmo8}pG=gpyY*uBKBYPf-e)UFhX z0s$S8`Zjt^(VM8ejE?dh-MUf65^I9P7$qjrZ(i=wLjUZk7(hUa-HGb=GrK_~h_okF%qVzT$~= zU9@70PD1>LuyfG{g8aHm`Ec?_4Pp3oSF$(_L~XCd7QQtaw3QgGhV9T|6l0XX*6@c` z2HUE74-Frij}HDM@}-V3<{hF7Lj7x(*iBW{ShzL$zAkGx%--mQ;;daObi)6^x_H^v z;;_>SFollCvzC;%^@SNbG&S~E`mOg}bzw{P~S9~ioS zGAMJbfWMtanmZ;l1k8g;mx526RfSI_?CF+=Y^!W0{qqq78_oEQL-^oqJSGj!zcXLsj>v^9>LBX7`0=Gl8Vl)E|r}jOImqJC1t~ScZ<)ULtkeocQcLfFMn?pzsqi z-#YIeJ(DZQKdR>el}683ls+Ll+rO=Kp~cO7|Mhu|bcH0Wd~2CAeV_U`d!HjP@Ayy6 zfwbRx;|enSXbbPrf>2P}cEO@k+MWmRrv<&T{Uu~y_Xz=~XDxMg!v`nHlZ3?&T* zAc;$|@X}xIJs2xEH`UZ00)4Ct`|*VE~j|YJY<|uS0=kXf_psjc2x|# z#+&#?)AwSa*@bY^!F4a$6Wb{tty9Cx`gQ7iYnkSN-ZV1y^xkw1S?FAnr=Gk)?I>4X zF7V4vPaHY&`kwUHQ3&C?Ap-XZ*-_|zI2c{W`$ME~BphmbxTGpf)2eF5WEpg@27%*0 zmDujpW8VZLWK{QkM~k5$~;xXTQtVbFR>uq1361Q|Nua zsR}B0ULq8f`F6eT$hrp*@ie8?-Hpqk8oOORTEAVsEFav+eROe>UJSyU7D)IZ<=}dl zQWP&)n!gxft14;=srrNTCeZi`M75igJE-C?T@@v%`85f}L6uk)IgY9Io2~GQ%J|XS z-cI86sfyHr$GU-SGr)+0@WqaA7QwxoQ<-8tyAr#?mjCw>$08PoPEx%%w-h@RN*bfEk$jIF zE03(`rwji=A|Hqp*@@hcPaY}B;>_`gSjAJX>;1@fggH#`H*zt5}Dq`D+w=CawAPO`Al&`8X*Nw@pvk*Nit^lv^gJO2Q2yh-LSb@Guc zbivjWbb<+AS8(6n%AoyTL)Z3mq@BNHjcN<}e^j*>h43els1n;0l{|)76{l{1*U{Tx zS<=EWS&F(y4vKKfBx%zLaKctJ(ia#PbLf`PIBRQf66WMo{v=ybfN|ez$=f)>BGCb;kk}Vy$$D0j%m<&n730=7VLAs1XO&snT`j&-byK41EgbZn(8#PwX zH+wc}L#wk-xNrCtrh-jcWb}R~1Ms~7(B;s+nm#WNV5Z`laR2eneiFNMbML~~PZ_mW zpNvS0Yn*9xBrfpMtd`0;HTQ}B^j5>Ziu<3664~+Wt!}_?!<80)f?;Iu(pR^l0Yy5zC^S!sV50XKJ zBFA(`yho|gSNPfdx>(`Ao(%IA$3?x-Do^I7%)W%HZoaqkX9^|`a|ZcO5Zy+39L+FYVax5YAsi=ZKof&9mfHj%RwLCfo_Cxp>mI`_ov=TFd$M zhqMUxiq;*Y<|EBy@UEKDoFcb51wIACT!Z9n}}#jmnw-~-7XAvS@@K|}Q|&QEzF?;xFy zPsBD$pQO2dMh#(PrZ&n^gi>IIRb{mRESFHkBd@2sVQyac_mxYB&XJw!1aN&)bn=Yp z4J~>-lpPkRK@H`?8Woj~PI}du+2OqpRwddQs`|W#57WZgWg^ z&?>cy%d`CwR@r?WG$38~&GY8_iuDF=hDVRY_u|T3{iGSApYz?GVUnz_li9Q1Y@g}& zXm-AvjUl)!%d2%j-TLI5)JJ2S%@%X?3n#L!XW=^(r?t`>-1wI2Zsq0Oy=XWwg7_0K!@675 zuD<<6@UOVdO;_p*Jx1+ZG=f60GL4XWjt1zt;P&&nhBW-%W6!LT%N|zR-3VhrT=c~$ z{3=204nd}Se-TILfBt!6!Qa|6R<*;!a}$;sgo(fAa-!8nw0R!QhLPobxp;B$;Nx3<Knrb zybc18V9@%5-~1XU=;xA7J;-8- zsU4?J+G^X_sGv+v7doM~ZM%*bkeu!BHjW4Yq%lDklU?GW6TFjvCTZ6{_F1(y&N-sP zERKn$61WA)vl&{4$OQ4bg(D$4t@l(XUXCKN5LWPIe($;I69yGvKWG$z+(3?&ZQ1Dj zgnV3xXbr=%rRig^36+*c6DvMs(Ua~~6UN)%})o81|F>}3uZL(_n6S8j>S z(%Q_Y2;4~^p6W=xwK9fwBqUn~>!brR8kf?yj=!<@TuVDaUO|TO1G6*3wZioMBMbLK z7W(v7CVpH7N-Y+So3$$1%Z0$!yP^1jM5G&jEeCwK0w=EkW8oFiHf=%-RR+Sio4@3) zJ%9dESSU}ECx?m+Ox*RO*1DnH$le+ZF&Fea;#BuFGd8VOv*FrwQazdPkT}Ee#9_$f zR?9xV?)}y#dgy4K5tkY#2LnX_K|sF0wa_LCP$5^;!0j_y>&NApbxZ6#9&bN_Rc5+1 z7R?+)PAYPvD)70aA85pp$0()+sNzE^&Vk~~Q?)r%mu2yq&#W^W>~2p z+il{}AFbXRppG$DfkO&D9;a4aX194AGC=k0f^2zlNmym$S)N zbR2&1UEk2EkNbE$e!Xz61Yb__9ynA|0!@zRg#L8i*{YjyAbQA)1*)H7vcLLAN?&~r zx(2-Kw{2`NP+d58VtF@wopcJszU#R((d#>uVNJuY=z{Bd%KHX_C*d#Ie!$v;71}Na zI)Bm*XFP#CeHSX=zI4bS}#cRTAS(;Pt<%Ys)^X{94pH7QHHZI{1k(od2zYp0yn7* zS@O+z&9KIbZZdakkk>W|FD5c#x3bus;$z3OXe122buDUD?g|Sc2Mn#!hqdV@dcpwI zOliUz*GsP!&NCnwgqD8ICw4>6;o9~Q6k-nOtVH}Lhw76d_rc}3^9N5EecLXEiXAj2 z73HSU#~e)qQs|4uWV|n~Iq{_-2idGmw&ol}AgUQE1Gn!QHln|k{2^aPOlAz$SQk30 z;yr}QJAEYEZ|%{nspL40BhSwgHcCAWWVzNPU8eIobYmV6`}YJHuAuM3zq(L{`c1(2 z;i!%0qlnfQ%UnLBkTlvGW_L|d6>_xwKW%itzi`-^>fTel%`~lFf8rurOQu*qo<0;G zSDfRvXY=0nGJN^An+~vQVmBYMQzu(c5O^5Z4ZWMENUOiUf7G9uh4d6>G#ilSPb1?O zv9%%;kLTRNgF7Uj{_t{|8Wm~4W-$A+^`?qw0H>DZq}m}P`tB@gaC-WM4X@oXz91I$`KSm2sxy(^jM}-2dAs{(KP;rgxManJa^!-hjKWEy z-DziS{HKzHRwcDrH+#wJ?H9`VYv)C&n0_=oAWr8B?}el90N@hA(*n%S&m9}=G_v`> zsjUCB`odOMSUxGdHmsFzX-} zXzPMypEi9p_yWo&6j(sR6Gra0_N(4r!5mdoT0MQSiBDdwWz;Bvgh9T#+&=MP^ETWL z?LF>jB-nJl->FcI z%b6)3&WjZB(nTAkopHEeoraGsca>zz&$?a|1{~Ood_S&J)1`@Mghs01W*=*a%fbs*OV0YoF@dM#%;%2Z!&!LO zAVAw*P=lwXQACN?nB@-Z@29jkG`cydXkF^~g1PC;on%90ea9=x$i)u?0}q#&=R!w+ zMi*M+V-;!tsq0v~{NgfHRLDUH?SrTIf;A1~5z;XYH+ib=*kLcD)>^N?mJVT3hzf&K z7bXDiic6Bdutym%7UTyVM6liZ>SmqQ#((E3k3Cfq9hH#Br&{vrg!gDi13Zd*>p8?? z_m{OIxvPM}4&D1?T1R@%_ogbhN^VZP|9BPE3E#$tsE(t}CTqQ^bKVyE13$!YH-F zci0fE;h;Ho_4Hv4+6nCt^{Z4UQoajpgP|M2Qul8jd~nAHMVOux;C(AZBSD>M$4qsx zk&^>T`?OC60Ps@;sBu$2eOL6th!LIsu)1g@7QtbG&tMN#b?_qKxcaCF@a_pEqykI+4}GC7UO=a1+--sYu34BG~%-$SgpZxEOfO+Iws9`4=1-e

R^04=wT1Ir@&*BzoH=0t1J8*_<;v_ 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 z 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
i2fCN2J>?~SbZ`003%;9Sv?=2X|# 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