diff --git a/MindSPONGE/README.md b/MindSPONGE/README.md index 3baba22227a222af088ac8b67bef843da0d1df45..d52b2f8676a94920c7dd00b5847bfaa596f4a2eb 100644 --- a/MindSPONGE/README.md +++ b/MindSPONGE/README.md @@ -33,7 +33,7 @@ MindSPONGE(Simulation Package tOwards Next GEneration molecular modelling)是基 ## **最新消息** -- 2022.07.18 论文"SPONGE: A GPU-Accelerated Molecular Dynamics Package with Enhanced Sampling and AI-Driven Algorithms"发表于期刊Chinese Journal of Chemistry。详情参见[论文](https://onlinelibrary.wiley.com/doi/epdf/10.1002/cjoc.202100456)和[代码](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/mindsponge/ccsrc/molecular_dynamics) +- 2022.07.18 论文"SPONGE: A GPU-Accelerated Molecular Dynamics Package with Enhanced Sampling and AI-Driven Algorithms"发表于期刊Chinese Journal of Chemistry。详情参见[论文](https://onlinelibrary.wiley.com/doi/epdf/10.1002/cjoc.202100456)和[代码](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/mindsponge/ccsrc/molecular_dynamics) - 2022.07.09 MEGA-Assessment在CAMEO-QE月榜取得第一名 - 2022.06.27 [发布首个百万级开源蛋白质结构训练数据集PSP](https://arxiv.org/pdf/2206.12240v1.pdf) - 2022.04.21 [CAMEO竞赛月榜第一](https://www.huawei.com/cn/news/2022/4/mindspore-cameo-protein-ascend) @@ -120,10 +120,10 @@ md.run(1000, callbacks=[run_info, cb_h5md]) **更多应用案例请见**: -- [蛋白质结构弛豫](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/molecular_dynamics/protein_relax/) -- [蛋白质结构预测 MEGA-Fold](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/MEGAProtein/) -- [蛋白质结构评估 MEGA-Assessment](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/MEGAProtein/) -- [共进化数据引擎 MEGA-EvoGen](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/MEGAProtein/) +- [蛋白质结构松弛](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/applications/molecular_dynamics/protein_relax/) +- [蛋白质结构预测 MEGA-Fold](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/applications/MEGAProtein/) +- [蛋白质结构评估 MEGA-Assessment](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/applications/MEGAProtein/) +- [共进化数据引擎 MEGA-EvoGen](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/applications/MEGAProtein/) - 基于功能的蛋白设计(TO BE DONE) - 基于结构的蛋白设计(TO BE DONE) - 蛋白质功能预测(TO BE DONE) diff --git a/MindSPONGE/build.sh b/MindSPONGE/build.sh index 8023939456fd93ab6bb68b57539562875c672f16..59f4e27f8e4905be797a5e90080d3d07ea1c1a3a 100644 --- a/MindSPONGE/build.sh +++ b/MindSPONGE/build.sh @@ -120,6 +120,7 @@ build_mindsponge() fi mk_new_dir "${OUTPUT_PATH}" cp -r "${BASEPATH}/mindsponge/python/" "${BASEPATH}/build/mindsponge/" + cp -r "${BASEPATH}/mindsponge/toolkits/" "${BASEPATH}/build/mindsponge/" cp "${BASEPATH}/setup.py" "${BASEPATH}/build/" cd "${BASEPATH}/build/" echo ${CMAKE_FLAG} diff --git a/MindSPONGE/mindsponge/python/common/constants.py b/MindSPONGE/mindsponge/python/common/constants.py deleted file mode 100644 index 3ea9ea0e4e3688474dbc1579a8b6f0dbc5887df5..0000000000000000000000000000000000000000 --- a/MindSPONGE/mindsponge/python/common/constants.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2021 The AIMM Group at Shenzhen Bay Laboratory & Peking University & Huawei Technologies Co., Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -"""constant""" -PI = 3.1415926535 -KB = 0.00198716 -TIME_UNIT = 20.455 -CHARGE_UNIT = 18.2223 -SUPPORT_TYPE = ["AMBER"] diff --git a/MindSPONGE/mindsponge/python/common/ff14SB_constants.py b/MindSPONGE/mindsponge/python/common/ff14SB_constants.py deleted file mode 100644 index b0f11fa737870633112abf83fc94668c6f57d4dd..0000000000000000000000000000000000000000 --- a/MindSPONGE/mindsponge/python/common/ff14SB_constants.py +++ /dev/null @@ -1,4449 +0,0 @@ -# Copyright 2021 The AIMM Group at Shenzhen Bay Laboratory & Peking University & Huawei Technologies Co., Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -"""This file is used to store constant parameters while modeling.""" -import numpy as np - -restype_name_to_atom14_names = { - 'ALA': ['N', 'CA', 'C', 'O', 'CB', '', '', '', '', '', '', '', '', ''], - 'ARG': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'NE', 'CZ', 'NH1', 'NH2', '', '', ''], - 'ASN': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'OD1', 'ND2', '', '', '', '', '', ''], - 'ASP': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'OD1', 'OD2', '', '', '', '', '', ''], - 'CYS': ['N', 'CA', 'C', 'O', 'CB', 'SG', '', '', '', '', '', '', '', ''], - 'GLN': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'OE1', 'NE2', '', '', '', '', ''], - 'GLU': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'OE1', 'OE2', '', '', '', '', ''], - 'GLY': ['N', 'CA', 'C', 'O', '', '', '', '', '', '', '', '', '', ''], - 'HIS': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'ND1', 'CD2', 'CE1', 'NE2', '', '', '', ''], - 'ILE': ['N', 'CA', 'C', 'O', 'CB', 'CG1', 'CG2', 'CD1', '', '', '', '', '', ''], - 'LEU': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', '', '', '', '', '', ''], - 'LYS': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', 'CE', 'NZ', '', '', '', '', ''], - 'MET': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'SD', 'CE', '', '', '', '', '', ''], - 'PHE': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', '', '', ''], - 'PRO': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD', '', '', '', '', '', '', ''], - 'SER': ['N', 'CA', 'C', 'O', 'CB', 'OG', '', '', '', '', '', '', '', ''], - 'THR': ['N', 'CA', 'C', 'O', 'CB', 'OG1', 'CG2', '', '', '', '', '', '', ''], - 'TRP': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', 'NE1', 'CE2', 'CE3', 'CZ2', 'CZ3', 'CH2'], - 'TYR': ['N', 'CA', 'C', 'O', 'CB', 'CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', 'OH', '', ''], - 'VAL': ['N', 'CA', 'C', 'O', 'CB', 'CG1', 'CG2', '', '', '', '', '', '', ''], - 'UNK': ['', '', '', '', '', '', '', '', '', '', '', '', '', ''], - -} - -amino_dict = { - 'VAL': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '3C', - 'HB': 'HC', - 'CG1': 'CT', - 'HG11': 'HC', - 'HG12': 'HC', - 'HG13': 'HC', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'CVAL': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '3C', - 'HB': 'HC', - 'CG1': 'CT', - 'HG11': 'HC', - 'HG12': 'HC', - 'HG13': 'HC', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NVAL': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '3C', - 'HB': 'HC', - 'CG1': 'CT', - 'HG11': 'HC', - 'HG12': 'HC', - 'HG13': 'HC', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'GLN': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C', - 'OE1': 'O', - 'NE2': 'N', - 'HE21': 'H', - 'HE22': 'H', - 'C': 'C', - 'O': 'O', - }, - 'CGLN': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C', - 'OE1': 'O', - 'NE2': 'N', - 'HE21': 'H', - 'HE22': 'H', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NGLN': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C', - 'OE1': 'O', - 'NE2': 'N', - 'HE21': 'H', - 'HE22': 'H', - 'C': 'C', - 'O': 'O', - }, - 'PHE': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CA', - 'CD1': 'CA', - 'HD1': 'HA', - 'CE1': 'CA', - 'HE1': 'HA', - 'CZ': 'CA', - 'HZ': 'HA', - 'CE2': 'CA', - 'HE2': 'HA', - 'CD2': 'CA', - 'HD2': 'HA', - 'C': 'C', - 'O': 'O', - }, - 'CPHE': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CA', - 'CD1': 'CA', - 'HD1': 'HA', - 'CE1': 'CA', - 'HE1': 'HA', - 'CZ': 'CA', - 'HZ': 'HA', - 'CE2': 'CA', - 'HE2': 'HA', - 'CD2': 'CA', - 'HD2': 'HA', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NPHE': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CA', - 'CD1': 'CA', - 'HD1': 'HA', - 'CE1': 'CA', - 'HE1': 'HA', - 'CZ': 'CA', - 'HZ': 'HA', - 'CE2': 'CA', - 'HE2': 'HA', - 'CD2': 'CA', - 'HD2': 'HA', - 'C': 'C', - 'O': 'O', - }, - 'ASN': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C', - 'OD1': 'O', - 'ND2': 'N', - 'HD21': 'H', - 'HD22': 'H', - 'C': 'C', - 'O': 'O', - }, - 'CASN': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C', - 'OD1': 'O', - 'ND2': 'N', - 'HD21': 'H', - 'HD22': 'H', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NASN': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C', - 'OD1': 'O', - 'ND2': 'N', - 'HD21': 'H', - 'HD22': 'H', - 'C': 'C', - 'O': 'O', - }, - 'PRO': { - 'N': 'N', - 'CD': 'CT', - 'HD2': 'H1', - 'HD3': 'H1', - 'CG': 'CT', - 'HG2': 'HC', - 'HG3': 'HC', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CA': 'CX', - 'HA': 'H1', - 'C': 'C', - 'O': 'O', - }, - 'CPRO': { - 'N': 'N', - 'CD': 'CT', - 'HD2': 'H1', - 'HD3': 'H1', - 'CG': 'CT', - 'HG2': 'HC', - 'HG3': 'HC', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CA': 'CX', - 'HA': 'H1', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NPRO': { - 'N': 'N3', - 'H2': 'H', - 'H3': 'H', - 'CD': 'CT', - 'HD2': 'HP', - 'HD3': 'HP', - 'CG': 'CT', - 'HG2': 'HC', - 'HG3': 'HC', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CA': 'CX', - 'HA': 'HP', - 'C': 'C', - 'O': 'O', - }, - 'THR': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '3C', - 'HB': 'H1', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'OG1': 'OH', - 'HG1': 'HO', - 'C': 'C', - 'O': 'O', - }, - 'CTHR': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '3C', - 'HB': 'H1', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'OG1': 'OH', - 'HG1': 'HO', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NTHR': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '3C', - 'HB': 'H1', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'OG1': 'OH', - 'HG1': 'HO', - 'C': 'C', - 'O': 'O', - }, - 'ALA': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB1': 'HC', - 'HB2': 'HC', - 'HB3': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'CALA': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB1': 'HC', - 'HB2': 'HC', - 'HB3': 'HC', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NALA': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'CT', - 'HB1': 'HC', - 'HB2': 'HC', - 'HB3': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'ILE': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '3C', - 'HB': 'HC', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'CG1': '2C', - 'HG12': 'HC', - 'HG13': 'HC', - 'CD1': 'CT', - 'HD11': 'HC', - 'HD12': 'HC', - 'HD13': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'CILE': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '3C', - 'HB': 'HC', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'CG1': '2C', - 'HG12': 'HC', - 'HG13': 'HC', - 'CD1': 'CT', - 'HD11': 'HC', - 'HD12': 'HC', - 'HD13': 'HC', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NILE': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '3C', - 'HB': 'HC', - 'CG2': 'CT', - 'HG21': 'HC', - 'HG22': 'HC', - 'HG23': 'HC', - 'CG1': '2C', - 'HG12': 'HC', - 'HG13': 'HC', - 'CD1': 'CT', - 'HD11': 'HC', - 'HD12': 'HC', - 'HD13': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'SER': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'H1', - 'HB3': 'H1', - 'OG': 'OH', - 'HG': 'HO', - 'C': 'C', - 'O': 'O', - }, - 'CSER': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'H1', - 'HB3': 'H1', - 'OG': 'OH', - 'HG': 'HO', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NSER': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'H1', - 'HB3': 'H1', - 'OG': 'OH', - 'HG': 'HO', - 'C': 'C', - 'O': 'O', - }, - 'LEU': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '3C', - 'HG': 'HC', - 'CD1': 'CT', - 'HD11': 'HC', - 'HD12': 'HC', - 'HD13': 'HC', - 'CD2': 'CT', - 'HD21': 'HC', - 'HD22': 'HC', - 'HD23': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'CLEU': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '3C', - 'HG': 'HC', - 'CD1': 'CT', - 'HD11': 'HC', - 'HD12': 'HC', - 'HD13': 'HC', - 'CD2': 'CT', - 'HD21': 'HC', - 'HD22': 'HC', - 'HD23': 'HC', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NLEU': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '3C', - 'HG': 'HC', - 'CD1': 'CT', - 'HD11': 'HC', - 'HD12': 'HC', - 'HD13': 'HC', - 'CD2': 'CT', - 'HD21': 'HC', - 'HD22': 'HC', - 'HD23': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'TRP': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C*', - 'CD1': 'CW', - 'HD1': 'H4', - 'NE1': 'NA', - 'HE1': 'H', - 'CE2': 'CN', - 'CZ2': 'CA', - 'HZ2': 'HA', - 'CH2': 'CA', - 'HH2': 'HA', - 'CZ3': 'CA', - 'HZ3': 'HA', - 'CE3': 'CA', - 'HE3': 'HA', - 'CD2': 'CB', - 'C': 'C', - 'O': 'O', - }, - 'CTRP': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C*', - 'CD1': 'CW', - 'HD1': 'H4', - 'NE1': 'NA', - 'HE1': 'H', - 'CE2': 'CN', - 'CZ2': 'CA', - 'HZ2': 'HA', - 'CH2': 'CA', - 'HH2': 'HA', - 'CZ3': 'CA', - 'HZ3': 'HA', - 'CE3': 'CA', - 'HE3': 'HA', - 'CD2': 'CB', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NTRP': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C*', - 'CD1': 'CW', - 'HD1': 'H4', - 'NE1': 'NA', - 'HE1': 'H', - 'CE2': 'CN', - 'CZ2': 'CA', - 'HZ2': 'HA', - 'CH2': 'CA', - 'HH2': 'HA', - 'CZ3': 'CA', - 'HZ3': 'HA', - 'CE3': 'CA', - 'HE3': 'HA', - 'CD2': 'CB', - 'C': 'C', - 'O': 'O', - }, - 'GLU': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'CO', - 'OE1': 'O2', - 'OE2': 'O2', - 'C': 'C', - 'O': 'O', - }, - 'CGLU': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'CO', - 'OE1': 'O2', - 'OE2': 'O2', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NGLU': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'CO', - 'OE1': 'O2', - 'OE2': 'O2', - 'C': 'C', - 'O': 'O', - }, - 'LYS': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'C8', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C8', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C8', - 'HD2': 'HC', - 'HD3': 'HC', - 'CE': 'C8', - 'HE2': 'HP', - 'HE3': 'HP', - 'NZ': 'N3', - 'HZ1': 'H', - 'HZ2': 'H', - 'HZ3': 'H', - 'C': 'C', - 'O': 'O', - }, - 'CLYS': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'C8', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C8', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C8', - 'HD2': 'HC', - 'HD3': 'HC', - 'CE': 'C8', - 'HE2': 'HP', - 'HE3': 'HP', - 'NZ': 'N3', - 'HZ1': 'H', - 'HZ2': 'H', - 'HZ3': 'H', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NLYS': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'C8', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C8', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C8', - 'HD2': 'HC', - 'HD3': 'HC', - 'CE': 'C8', - 'HE2': 'HP', - 'HE3': 'HP', - 'NZ': 'N3', - 'HZ1': 'H', - 'HZ2': 'H', - 'HZ3': 'H', - 'C': 'C', - 'O': 'O', - }, - 'CYS': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'H1', - 'HB3': 'H1', - 'SG': 'SH', - 'HG': 'HS', - 'C': 'C', - 'O': 'O', - }, - 'CCYS': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'H1', - 'HB3': 'H1', - 'SG': 'SH', - 'HG': 'HS', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NCYS': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'H1', - 'HB3': 'H1', - 'SG': 'SH', - 'HG': 'HS', - 'C': 'C', - 'O': 'O', - }, - 'TYR': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CA', - 'CD1': 'CA', - 'HD1': 'HA', - 'CE1': 'CA', - 'HE1': 'HA', - 'CZ': 'C', - 'OH': 'OH', - 'HH': 'HO', - 'CE2': 'CA', - 'HE2': 'HA', - 'CD2': 'CA', - 'HD2': 'HA', - 'C': 'C', - 'O': 'O', - }, - 'CTYR': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CA', - 'CD1': 'CA', - 'HD1': 'HA', - 'CE1': 'CA', - 'HE1': 'HA', - 'CZ': 'C', - 'OH': 'OH', - 'HH': 'HO', - 'CE2': 'CA', - 'HE2': 'HA', - 'CD2': 'CA', - 'HD2': 'HA', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NTYR': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CA', - 'CD1': 'CA', - 'HD1': 'HA', - 'CE1': 'CA', - 'HE1': 'HA', - 'CZ': 'C', - 'OH': 'OH', - 'HH': 'HO', - 'CE2': 'CA', - 'HE2': 'HA', - 'CD2': 'CA', - 'HD2': 'HA', - 'C': 'C', - 'O': 'O', - }, - 'HIS': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CC', - 'ND1': 'NB', - 'CE1': 'CR', - 'HE1': 'H5', - 'NE2': 'NA', - 'HE2': 'H', - 'CD2': 'CW', - 'HD2': 'H4', - 'C': 'C', - 'O': 'O', - }, - 'HID': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CC', - 'ND1': 'NA', - 'HD1': 'H', - 'CE1': 'CR', - 'HE1': 'H5', - 'NE2': 'NB', - 'CD2': 'CV', - 'HD2': 'H4', - 'C': 'C', - 'O': 'O' - }, - 'NHID': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CC', - 'ND1': 'NA', - 'HD1': 'H', - 'CE1': 'CR', - 'HE1': 'H5', - 'NE2': 'NB', - 'CD2': 'CV', - 'HD2': 'H4', - 'C': 'C', - 'O': 'O' - }, - 'CHID': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CC', - 'ND1': 'NA', - 'HD1': 'H', - 'CE1': 'CR', - 'HE1': 'H5', - 'NE2': 'NB', - 'CD2': 'CV', - 'HD2': 'H4', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2' - }, - 'CHIS': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CC', - 'ND1': 'NB', - 'CE1': 'CR', - 'HE1': 'H5', - 'NE2': 'NA', - 'HE2': 'H', - 'CD2': 'CW', - 'HD2': 'H4', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NHIS': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'CT', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CC', - 'ND1': 'NB', - 'CE1': 'CR', - 'HE1': 'H5', - 'NE2': 'NA', - 'HE2': 'H', - 'CD2': 'CW', - 'HD2': 'H4', - 'C': 'C', - 'O': 'O', - }, - 'GLY': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA2': 'H1', - 'HA3': 'H1', - 'C': 'C', - 'O': 'O', - }, - 'CGLY': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA2': 'H1', - 'HA3': 'H1', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NGLY': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA2': 'HP', - 'HA3': 'HP', - 'C': 'C', - 'O': 'O', - }, - 'ACE': { - 'H1': 'HC', - 'CH3': 'CT', - 'H2': 'HC', - 'H3': 'HC', - 'C': 'C', - 'O': 'O', - }, - 'ASP': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CO', - 'OD1': 'O2', - 'OD2': 'O2', - 'C': 'C', - 'O': 'O', - }, - 'CASP': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CO', - 'OD1': 'O2', - 'OD2': 'O2', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NASP': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'CO', - 'OD1': 'O2', - 'OD2': 'O2', - 'C': 'C', - 'O': 'O', - }, - 'ARG': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'C8', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C8', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C8', - 'HD2': 'H1', - 'HD3': 'H1', - 'NE': 'N2', - 'HE': 'H', - 'CZ': 'CA', - 'NH1': 'N2', - 'HH11': 'H', - 'HH12': 'H', - 'NH2': 'N2', - 'HH21': 'H', - 'HH22': 'H', - 'C': 'C', - 'O': 'O', - }, - 'CARG': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': 'C8', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C8', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C8', - 'HD2': 'H1', - 'HD3': 'H1', - 'NE': 'N2', - 'HE': 'H', - 'CZ': 'CA', - 'NH1': 'N2', - 'HH11': 'H', - 'HH12': 'H', - 'NH2': 'N2', - 'HH21': 'H', - 'HH22': 'H', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NARG': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': 'C8', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': 'C8', - 'HG2': 'HC', - 'HG3': 'HC', - 'CD': 'C8', - 'HD2': 'H1', - 'HD3': 'H1', - 'NE': 'N2', - 'HE': 'H', - 'CZ': 'CA', - 'NH1': 'N2', - 'HH11': 'H', - 'HH12': 'H', - 'NH2': 'N2', - 'HH21': 'H', - 'HH22': 'H', - 'C': 'C', - 'O': 'O', - }, - 'MET': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'H1', - 'HG3': 'H1', - 'SD': 'S', - 'CE': 'CT', - 'HE1': 'H1', - 'HE2': 'H1', - 'HE3': 'H1', - 'C': 'C', - 'O': 'O', - }, - 'CMET': { - 'N': 'N', - 'H': 'H', - 'CA': 'CX', - 'HA': 'H1', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'H1', - 'HG3': 'H1', - 'SD': 'S', - 'CE': 'CT', - 'HE1': 'H1', - 'HE2': 'H1', - 'HE3': 'H1', - 'C': 'C', - 'O': 'O2', - 'OXT': 'O2', - }, - 'NMET': { - 'N': 'N3', - 'H1': 'H', - 'H2': 'H', - 'H3': 'H', - 'CA': 'CX', - 'HA': 'HP', - 'CB': '2C', - 'HB2': 'HC', - 'HB3': 'HC', - 'CG': '2C', - 'HG2': 'H1', - 'HG3': 'H1', - 'SD': 'S', - 'CE': 'CT', - 'HE1': 'H1', - 'HE2': 'H1', - 'HE3': 'H1', - 'C': 'C', - 'O': 'O', - }, - 'NME': { - 'N': 'N', - 'H': 'H', - 'CH3': 'CT', - 'HH31': 'H1', - 'HH32': 'H1', - 'HH33': 'H1', - }, -} - -bond_pairs = { - 'VAL': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 14], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - [10, 12], - [10, 13], - [14, 15], - ], - 'CVAL': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 14], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - [10, 12], - [10, 13], - [14, 15], - [14, 16], - ], - 'NVAL': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 16], - [6, 7], - [6, 8], - [6, 12], - [8, 9], - [8, 10], - [8, 11], - [12, 13], - [12, 14], - [12, 15], - [16, 17], - ], - 'GLN': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [15, 16], - ], - 'CGLN': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [15, 16], - [15, 17], - ], - 'NGLN': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 17], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 12], - [12, 13], - [12, 14], - [14, 15], - [14, 16], - [17, 18], - ], - 'PHE': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 18], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 16], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [14, 15], - [14, 16], - [16, 17], - [18, 19], - ], - 'CPHE': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 18], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 16], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [14, 15], - [14, 16], - [16, 17], - [18, 19], - [18, 20], - ], - 'NPHE': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 20], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 18], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [14, 15], - [14, 16], - [16, 17], - [16, 18], - [18, 19], - [20, 21], - ], - 'ASN': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 12], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [9, 10], - [9, 11], - [12, 13], - ], - 'CASN': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 12], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [9, 10], - [9, 11], - [12, 13], - [12, 14], - ], - 'NASN': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 14], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [11, 12], - [11, 13], - [14, 15], - ], - 'PRO': [ - [0, 1], - [0, 10], - [1, 2], - [1, 3], - [1, 4], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [12, 13], - ], - 'CPRO': [ - [0, 1], - [0, 10], - [1, 2], - [1, 3], - [1, 4], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - ], - 'NPRO': [ - [0, 1], - [0, 2], - [0, 3], - [0, 12], - [3, 4], - [3, 5], - [3, 6], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 12], - [12, 13], - [12, 14], - [14, 15], - ], - 'THR': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 12], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - [12, 13], - ], - 'CTHR': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 12], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - [12, 13], - [12, 14], - ], - 'NTHR': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 14], - [6, 7], - [6, 8], - [6, 12], - [8, 9], - [8, 10], - [8, 11], - [12, 13], - [14, 15], - ], - 'ALA': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 8], - [4, 5], - [4, 6], - [4, 7], - [8, 9], - ], - 'CALA': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 8], - [4, 5], - [4, 6], - [4, 7], - [8, 9], - [8, 10], - ], - 'NALA': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - ], - 'ILE': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 17], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - [10, 12], - [10, 13], - [13, 14], - [13, 15], - [13, 16], - [17, 18], - ], - 'CILE': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 17], - [4, 5], - [4, 6], - [4, 10], - [6, 7], - [6, 8], - [6, 9], - [10, 11], - [10, 12], - [10, 13], - [13, 14], - [13, 15], - [13, 16], - [17, 18], - [17, 19], - ], - 'NILE': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 19], - [6, 7], - [6, 8], - [6, 12], - [8, 9], - [8, 10], - [8, 11], - [12, 13], - [12, 14], - [12, 15], - [15, 16], - [15, 17], - [15, 18], - [19, 20], - ], - 'SER': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 9], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [9, 10], - ], - 'CSER': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 9], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [9, 10], - [9, 11], - ], - 'NSER': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 11], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [11, 12], - ], - 'LEU': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 17], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 13], - [9, 10], - [9, 11], - [9, 12], - [13, 14], - [13, 15], - [13, 16], - [17, 18], - ], - 'CLEU': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 17], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 13], - [9, 10], - [9, 11], - [9, 12], - [13, 14], - [13, 15], - [13, 16], - [17, 18], - [17, 19], - ], - 'NLEU': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 19], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 15], - [11, 12], - [11, 13], - [11, 14], - [15, 16], - [15, 17], - [15, 18], - [19, 20], - ], - 'TRP': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 22], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 21], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 21], - [13, 14], - [13, 15], - [15, 16], - [15, 17], - [17, 18], - [17, 19], - [19, 20], - [19, 21], - [22, 23], - ], - 'CTRP': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 22], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 21], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 21], - [13, 14], - [13, 15], - [15, 16], - [15, 17], - [17, 18], - [17, 19], - [19, 20], - [19, 21], - [22, 23], - [22, 24], - ], - 'NTRP': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 24], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 23], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [14, 15], - [14, 23], - [15, 16], - [15, 17], - [17, 18], - [17, 19], - [19, 20], - [19, 21], - [21, 22], - [21, 23], - [24, 25], - ], - 'GLU': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 13], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [13, 14], - ], - 'CGLU': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 13], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [13, 14], - [13, 15], - ], - 'NGLU': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 15], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 12], - [12, 13], - [12, 14], - [15, 16], - ], - 'LYS': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 20], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [10, 13], - [13, 14], - [13, 15], - [13, 16], - [16, 17], - [16, 18], - [16, 19], - [20, 21], - ], - 'CLYS': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 20], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [10, 13], - [13, 14], - [13, 15], - [13, 16], - [16, 17], - [16, 18], - [16, 19], - [20, 21], - [20, 22], - ], - 'NLYS': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 22], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 12], - [12, 13], - [12, 14], - [12, 15], - [15, 16], - [15, 17], - [15, 18], - [18, 19], - [18, 20], - [18, 21], - [22, 23], - ], - 'CYS': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 9], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [9, 10], - ], - 'CCYS': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 9], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [9, 10], - [9, 11], - ], - 'NCYS': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 11], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [11, 12], - ], - 'TYR': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 19], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 17], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 15], - [13, 14], - [15, 16], - [15, 17], - [17, 18], - [19, 20], - ], - 'CTYR': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 19], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 17], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [12, 15], - [13, 14], - [15, 16], - [15, 17], - [17, 18], - [19, 20], - [19, 21], - ], - 'NTYR': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 21], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 19], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [14, 15], - [14, 17], - [15, 16], - [17, 18], - [17, 19], - [19, 20], - [21, 22], - ], - 'HIS': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 13], - [8, 9], - [9, 10], - [9, 11], - [11, 12], - [11, 13], - [13, 14], - [15, 16], - ], - 'HID': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 13], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [13, 14], - [15, 16] - ], - 'CHID': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 13], - [8, 9], - [8, 10], - [10, 11], - [10, 12], - [12, 13], - [13, 14], - [15, 16], - [15, 17] - ], - 'NHID': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 17], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 15], - [10, 11], - [10, 12], - [12, 13], - [12, 14], - [14, 15], - [15, 16], - [17, 18] - ], - 'CHIS': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 13], - [8, 9], - [9, 10], - [9, 11], - [11, 12], - [11, 13], - [13, 14], - [15, 16], - [15, 17], - ], - 'NHIS': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 17], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 15], - [10, 11], - [11, 12], - [11, 13], - [13, 14], - [13, 15], - [15, 16], - [17, 18], - ], - 'GLY': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 5], - [5, 6], - ], - 'CGLY': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 5], - [5, 6], - [5, 7], - ], - 'NGLY': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - ], - 'ACE': [ - [0, 1], - [1, 2], - [1, 3], - [1, 4], - [4, 5], - ], - 'ASP': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 10], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [10, 11], - ], - 'CASP': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 10], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [10, 11], - [10, 12], - ], - 'NASP': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 12], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [12, 13], - ], - 'ARG': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 22], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [10, 13], - [13, 14], - [13, 15], - [15, 16], - [15, 19], - [16, 17], - [16, 18], - [19, 20], - [19, 21], - [22, 23], - ], - 'CARG': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 22], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [10, 12], - [10, 13], - [13, 14], - [13, 15], - [15, 16], - [15, 19], - [16, 17], - [16, 18], - [19, 20], - [19, 21], - [22, 23], - [22, 24], - ], - 'NARG': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 24], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 12], - [12, 13], - [12, 14], - [12, 15], - [15, 16], - [15, 17], - [17, 18], - [17, 21], - [18, 19], - [18, 20], - [21, 22], - [21, 23], - [24, 25], - ], - 'MET': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [11, 12], - [11, 13], - [11, 14], - [15, 16], - ], - 'CMET': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 15], - [4, 5], - [4, 6], - [4, 7], - [7, 8], - [7, 9], - [7, 10], - [10, 11], - [11, 12], - [11, 13], - [11, 14], - [15, 16], - [15, 17], - ], - 'NMET': [ - [0, 1], - [0, 2], - [0, 3], - [0, 4], - [4, 5], - [4, 6], - [4, 17], - [6, 7], - [6, 8], - [6, 9], - [9, 10], - [9, 11], - [9, 12], - [12, 13], - [13, 14], - [13, 15], - [13, 16], - [17, 18], - ], - 'NME': [ - [0, 1], - [0, 2], - [2, 3], - [2, 4], - [2, 5], - ], -} - -charge_dict = { - 'NGLN': [2.720589, 3.637171, 3.637171, 3.637171, 0.976715, - 1.849563, 1.186272, 0.091111, 0.091111, -1.645474, - 0.603158, 0.603158, 13.400679, -11.175737, -18.278789, - 8.070657, 8.070657, 11.157514, -10.4104], - 'PRO': [-4.643042, 0.349868, 0.712492, 0.712492, 0.344401, - 0.388135, 0.388135, -0.127556, 0.461024, 0.461024, - -0.484713, 1.168049, 10.743868, -10.474178], - 'ACE': [2.046364, -6.673006, 2.046364, 2.046364, 10.882358, - -10.348444], - 'CLYS': [-6.343183, 5.036644, -5.289934, 2.620367, -0.98036, - 0.878315, 0.878315, 0.413646, 0.244179, 0.244179, - -0.714314, 1.113383, 1.113383, -0.320712, 2.04272, - 2.04272, -6.816962, 6.148204, 6.148204, 6.148204, - 15.467088, -15.037042, -15.037042], - 'NLEU': [1.840452, 3.91415, 3.91415, 3.91415, 0.189512, - 1.918808, -0.444624, 0.466491, 0.466491, 6.233849, - -0.692447, -7.482076, 1.785785, 1.785785, 1.785785, - -7.478432, 1.785785, 1.785785, 1.785785, 11.157514, - -10.4104], - 'PHE': [-7.57501, 4.954643, -0.043734, 1.782141, -0.625025, - 0.537558, 0.537558, 0.215023, -2.288721, 2.423566, - -3.10508, 2.605789, -1.953431, 2.363432, -3.10508, - 2.605789, -2.288721, 2.423566, 10.88418, -10.348444], - 'NSER': [3.369303, 3.458593, 3.458593, 3.458593, 1.033204, - 1.424984, 4.730509, 0.497469, 0.497469, -12.234452, - 7.724433, 11.230403, -10.4268], - 'NCYS': [2.414455, 3.686371, 3.686371, 3.686371, 1.689207, - 2.571167, -2.177565, 2.164809, 2.164809, -6.009715, - 3.598904, 11.157514, -10.4104], - 'NTRP': [3.485926, 3.44037, 3.44037, 3.44037, 0.767159, - 2.117431, 0.989471, 0.404535, 0.404535, -3.013968, - -3.258147, 3.999795, -6.27576, 6.217449, 2.870012, - -4.938243, 2.895523, -1.968008, 2.571167, -3.706416, - 2.656811, -4.127351, 2.999391, 2.062764, 11.157514, - -10.4104], - 'NALA': [2.576633, 3.638993, 3.638993, 3.638993, 1.752985, - 1.619962, -1.087871, 0.546669, 0.546669, 0.546669, - 11.230403, -10.4268], - 'CVAL': [-6.962741, 4.885399, -6.264827, 2.620367, 3.535126, - 0.561247, -5.583313, 1.523384, 1.523384, 1.523384, - -5.583313, 1.523384, 1.523384, 1.523384, 15.21562, - -14.893086, -14.893086], - 'CGLU': [-9.461018, 5.566913, -3.751972, 2.5493, 0.129378, - -0.142134, -0.142134, 1.230005, -0.998582, -0.998582, - 14.911308, -14.978731, -14.978731, 13.520947, -14.450284, - -14.450284], - 'CASN': [-6.962741, 4.885399, -3.790238, 2.474588, -4.189307, - 1.864141, 1.864141, 13.034411, -10.951602, -16.553137, - 7.562254, 7.562254, 14.668952, -14.845708, -14.845708], - 'NVAL': [1.051427, 4.140107, 4.140107, 4.140107, -0.0984, - 1.991697, 5.823847, -0.402713, -5.701758, 1.339339, - 1.339339, 1.339339, -5.701758, 1.339339, 1.339339, - 1.339339, 11.230403, -10.4268], - 'CLEU': [-6.962741, 4.885399, -5.187889, 2.452722, -4.499086, - 1.774852, 1.774852, 6.753184, -0.681514, -7.585943, - 1.891475, 1.891475, 1.891475, -7.585943, 1.891475, - 1.891475, 1.891475, 15.171887, -14.940464, -14.940464], - 'CPRO': [-5.105888, 0.790848, 0.603158, 0.603158, 0.849159, - 0.313424, 0.313424, -0.989471, 0.69427, 0.69427, - -2.434499, 1.41405, 12.083207, -14.025704, -14.025704], - 'NILE': [0.566714, 4.243974, 4.243974, 4.243974, 0.468313, - 1.878719, 3.434904, 0.388135, -6.778696, 1.725652, - 1.725652, 1.725652, -0.705203, 0.366268, 0.366268, - -1.654585, 0.411824, 0.411824, 0.411824, 11.157514, - -10.4104], - 'NPHE': [3.165214, 3.500504, 3.500504, 3.500504, 1.335695, - 1.896941, 0.601336, 0.189512, 0.189512, 0.056489, - -2.536544, 2.503744, -2.919212, 2.611256, -2.201254, - 2.421744, -2.921035, 2.611256, -2.534722, 2.503744, - 11.157514, -10.4104], - 'CTYR': [-6.962741, 4.885399, -3.671793, 1.989875, -1.370317, - 0.892893, 0.892893, 0.442802, -3.502326, 3.243569, - -4.479041, 3.048591, 6.186471, -10.282844, 7.319898, - -4.479041, 3.048591, -3.502326, 3.243569, 14.244372, - -14.705396, -14.705396], - 'CHID': [-6.962741, 4.885399, -3.168858, 2.004453, -1.906053, - 1.02956, 1.02956, 0.533913, -7.092119, 6.842474, - 3.507793, 2.583922, -10.257333, 1.824052, 2.261387, - 13.876281, -14.606996, -14.606996], - 'CMET': [-6.962741, 4.885399, -4.732331, 2.326988, -0.430046, - 0.87467, 0.87467, 0.896537, 0.577647, 0.577647, - -4.905443, -0.685158, 1.138894, 1.138894, 1.138894, - 14.601529, -14.769174, -14.769174], - 'CPHE': [-6.962741, 4.885399, -3.32557, 2.000809, -1.747519, - 0.807248, 0.807248, 1.005871, -2.368899, 2.5657, - -3.365659, 2.662278, -1.720185, 2.332454, -3.365659, - 2.662278, -2.368899, 2.5657, 13.958282, -14.625218, - -14.625218], - 'HIS': [-7.57501, 4.954643, -1.058716, 2.478233, -0.134845, - 0.668758, 0.668758, 3.403926, -9.898353, 2.979346, - 2.6149, -5.093133, 6.084426, -4.021662, 3.392992, - 10.88418, -10.348444], - 'CILE': [-6.962741, 4.885399, -5.648913, 2.505566, 0.661469, - 1.395828, -6.374161, 1.860497, 1.860497, 1.860497, - -0.58858, 0.584936, 0.584936, -1.273739, 0.357157, - 0.357157, 0.357157, 15.202865, -14.924064, -14.924064], - 'ARG': [-6.339538, 5.005666, -4.805221, 2.842679, -0.012756, - 0.595869, 0.595869, 0.71067, 0.519336, 0.519336, - 0.885604, 1.251872, 1.251872, -9.648708, 6.297627, - 14.716329, -15.720378, 8.159946, 8.159946, -15.720378, - 8.159946, 8.159946, 13.37699, -10.740224], - 'CASP': [-9.461018, 5.566913, -3.310992, 1.906053, -1.23365, - -0.386313, -0.386313, 16.128558, -14.873041, -14.873041, - 13.222101, -14.371928, -14.371928], - 'THR': [-7.57501, 4.954643, -0.708847, 1.834986, 6.658428, - 0.078356, -4.442597, 1.169872, 1.169872, 1.169872, - -12.320097, 7.474787, 10.88418, -10.348444], - 'MET': [-7.57501, 4.954643, -0.431869, 1.603562, 0.623203, - 0.439157, 0.439157, 0.0328, 0.801781, 0.801781, - -4.987444, -0.976715, 1.246405, 1.246405, 1.246405, - 10.88418, -10.348444], - 'ASN': [-7.57501, 4.954643, 0.260579, 1.909697, -3.719171, - 1.452317, 1.452317, 12.9925, -10.807646, -16.748116, - 7.646077, 7.646077, 10.88418, -10.348444], - 'HID': [-7.57501, 4.954643, 0.342579, 1.605385, -0.84187, - 0.732536, 0.732536, -0.484713, -6.944519, 6.649317, - 3.748327, 2.536544, -10.435911, 2.354321, 2.090098, - 10.88418, -10.348444], - 'CHIS': [-6.962741, 4.885399, -4.918199, 3.00668, -1.946142, - 1.129783, 1.129783, 4.963755, -10.053243, 2.839034, - 2.638589, -4.865354, 6.047981, -4.715931, 3.566104, - 14.424773, -14.696285, -14.696285], - 'ASP': [-9.408173, 5.350067, 0.69427, 1.603562, -0.552136, - -0.222312, -0.222312, 14.566907, -14.603351, - -14.603351, 9.778086, -10.603556], - 'NASN': [3.281836, 3.500504, 3.500504, 3.500504, 0.670581, - 2.243165, -0.515691, 0.938448, 0.938448, 10.629068, - -10.466889, -15.733134, 7.465676, 7.465676, 11.230403, - -10.4268], - 'NGLU': [0.030978, 4.356952, 4.356952, 4.356952, 1.071471, - 2.19032, 1.656407, -0.422757, -0.422757, -0.430046, - -0.574002, -0.574002, 14.736374, -14.922241, -14.922241, - 10.242755, -10.731112], - 'NHID': [2.809879, 3.577037, 3.577037, 3.577037, 1.75663, - 1.745696, 0.471958, 0.380846, 0.380846, -0.72707, - -6.959096, 6.618339, 3.875883, 2.523789, -10.406756, - 1.906053, 2.367077, 11.157514, -10.4104], - 'LYS': [-6.339538, 5.005666, -4.373352, 2.5985, -0.17129, - 0.659647, 0.659647, 0.340757, 0.18769, 0.18769, - -0.872848, 1.131605, 1.131605, -0.260579, 2.068231, - 2.068231, -7.022874, 6.195582, 6.195582, 6.195582, - 13.37699, -10.740224], - 'TYR': [-7.57501, 4.954643, -0.025511, 1.596273, -0.276979, - 0.537558, 0.537558, -0.020045, -3.47317, 3.095969, - -4.26584, 3.017613, 5.878514, -10.166221, 7.274342, - -4.26584, 3.017613, -3.47317, 3.095969, 10.88418, - -10.348444], - 'NLYS': [1.760274, 3.945128, 3.945128, 3.945128, -0.027333, - 2.150231, 0.386313, 0.515691, 0.515691, -0.087467, - 0.22049, 0.22049, -1.107916, 1.153472, 1.153472, - -0.329824, 2.133831, 2.133831, -6.858874, 6.162782, - 6.162782, 6.162782, 13.145567, -10.957069], - 'NME': [-7.57501, 4.954643, -2.715123, 1.778496, 1.778496, - 1.778496], - 'NARG': [2.37801, 3.795705, 3.795705, 3.795705, -0.406357, - 2.26321, 0.215023, 0.411824, 0.411824, 0.430046, - 0.563069, 0.563069, 1.703785, 0.960315, 0.960315, - -10.295599, 6.54545, 15.089887, -15.840645, 8.189102, - 8.189102, -15.840645, 8.189102, 8.189102, 13.145567, - -10.957069], - 'CSER': [-6.962741, 4.885399, -4.96011, 2.376188, 2.046364, - 1.481473, 1.481473, -11.870006, 8.152657, 14.783752, - -14.818374, -14.818374], - 'CGLY': [-6.962741, 4.885399, -4.542819, 1.924275, 1.924275, - 13.176545, -14.313617, -14.313617], - 'CYS': [-7.57501, 4.954643, 0.388135, 2.048187, -2.243165, - 2.02632, 2.02632, -5.683535, 3.522371, 10.88418, - -10.348444], - 'NTHR': [3.301881, 3.524193, 3.524193, 3.524193, 0.061956, - 1.980764, 8.225546, -0.58858, -4.653975, 1.142538, - 1.142538, 1.142538, -12.325564, 7.416476, 11.230403, - -10.4268], - 'LEU': [-7.57501, 4.954643, -0.943915, 1.680096, -2.008097, - 0.832759, 0.832759, 6.434294, -0.657825, -7.50941, - 1.82223, 1.82223, 1.82223, -7.50941, 1.82223, - 1.82223, 1.82223, 10.88418, -10.348444], - 'ILE': [-7.57501, 4.954643, -1.087871, 1.583518, 2.374366, - 0.340757, -5.838425, 1.607207, 1.607207, 1.607207, - -0.783559, 0.430046, 0.430046, -1.202672, 0.338935, - 0.338935, 0.338935, 10.88418, -10.348444], - 'CCYS': [-6.962741, 4.885399, -2.979346, 2.543833, -3.637171, - 2.618545, 2.618545, -5.652557, 3.768372, 13.661258, - -14.543218, -14.543218], - 'NPRO': [-3.680905, 5.685358, 5.685358, -0.218668, 1.82223, - 1.82223, -2.204898, 1.82223, 1.82223, -2.095565, - 1.82223, 1.82223, 1.82223, 1.82223, 9.58493, - -9.11115], - 'NTYR': [3.535126, 3.413037, 3.413037, 3.413037, 1.038671, - 1.791252, 1.20085, 0.185867, 0.185867, -0.373557, - -3.648104, 3.134236, -4.079973, 3.00668, 5.71998, - -10.164399, 7.290742, -4.079973, 3.00668, -3.648104, - 3.134236, 11.157514, -10.4104], - 'GLN': [-7.57501, 4.954643, -0.056489, 1.548896, -0.0656, - 0.311601, 0.311601, -1.175338, 0.641425, 0.641425, - 12.666321, -11.090092, -17.141718, 7.7463, 7.7463, - 10.88418, -10.348444], - 'GLU': [-9.408173, 5.350067, 0.723425, 2.013564, 1.020449, - -0.315246, -0.315246, 0.247823, -0.774448, -0.774448, - 14.67624, -14.920419, -14.920419, 9.778086, -10.603556], - 'CGLN': [-6.962741, 4.885399, -4.096373, 2.244987, -1.209961, - 0.823648, 0.823648, -0.382668, 0.369913, 0.369913, - 12.925077, -11.111959, -17.44603, 7.842878, 7.842878, - 14.167838, -14.654374, -14.654374], - 'TRP': [-7.57501, 4.954643, -0.501113, 2.046364, -0.091111, - 0.617736, 0.617736, -2.578455, -2.984813, 3.757438, - -6.228382, 6.217449, 2.514677, -4.73962, 2.864546, - -2.066409, 2.5821, -3.593438, 2.636767, -4.349663, - 3.097791, 2.265032, 10.88418, -10.348444], - 'CARG': [-6.343183, 5.036644, -5.590602, 2.636767, -0.681514, - 0.676047, 0.676047, 1.355739, 0.337113, 0.337113, - 2.029964, 0.852804, 0.852804, -10.138888, 6.339538, - 15.248421, -15.920824, 8.187279, 8.187279, -15.920824, - 8.187279, 8.187279, 15.592822, -15.062553, -15.062553], - 'ALA': [-7.57501, 4.954643, 0.614092, 1.499695, -3.32557, - 1.098805, 1.098805, 1.098805, 10.88418, -10.348444], - 'VAL': [-7.57501, 4.954643, -1.594451, 1.765741, 5.439357, - -0.541202, -5.816558, 1.441384, 1.441384, 1.441384, - -5.816558, 1.441384, 1.441384, 1.441384, 10.88418, - -10.348444], - 'CTHR': [-6.962741, 4.885399, -4.409797, 2.199432, 5.512246, - 0.142134, -3.376592, 1.067827, 1.067827, 1.067827, - -11.837206, 7.505765, 14.231616, -14.658018, -14.658018], - 'NASP': [1.424984, 4.008906, 4.008906, 4.008906, 0.532091, - 2.079164, -0.428224, -0.307957, -0.307957, 14.931353, - -14.730907, -14.730907, 10.242755, -10.731112], - 'CALA': [-6.962741, 4.885399, -3.183436, 1.944319, -3.813927, - 1.392184, 1.392184, 1.392184, 14.08766, -14.678063, - -14.678063], - 'GLY': [-7.57501, 4.954643, -0.459202, 1.271917, 1.271917, - 10.88418, -10.348444], - 'CTRP': [-6.962741, 4.885399, -3.797527, 2.317877, -1.352095, - 0.905648, 0.905648, -1.450495, -3.294592, 3.722816, - -6.042515, 6.219271, 2.226765, -4.726865, 2.855434, - -1.858675, 2.552944, -4.16744, 2.746101, -3.347437, - 2.716945, 1.964364, 13.954637, -14.597885, -14.597885], - 'NMET': [2.90099, 3.615304, 3.615304, 3.615304, 0.402713, - 2.033609, 1.576229, 0.227779, 0.227779, 0.608625, - 0.532091, 0.532091, -5.054866, -0.62138, 1.087871, - 1.087871, 1.087871, 11.157514, -10.4104], - 'NHIS': [2.682323, 3.673616, 3.673616, 3.673616, 0.430046, - 2.514677, 0.89107, 0.406357, 0.406357, 3.17068, - -10.166221, 3.287303, 2.545655, -5.067622, 6.057093, - -4.280418, 3.577037, 11.157514, -10.4104], - 'SER': [-7.57501, 4.954643, -0.453735, 1.53614, 3.857661, - 0.641425, 0.641425, -11.928318, 7.790033, 10.88418, - -10.348444], - 'NGLY': [5.362823, 2.992102, 2.992102, 2.992102, -0.182223, - 1.630896, 1.630896, 11.230403, -10.4268]} - -c_index = {'VAL': 14, 'CVAL': 14, 'NVAL': 16, 'GLN': 15, - 'CGLN': 15, 'NGLN': 17, 'PHE': 18, 'CPHE': 18, - 'NPHE': 20, 'ASN': 12, 'CASN': 12, 'NASN': 14, - 'PRO': 12, 'CPRO': 12, 'NPRO': 14, 'THR': 12, - 'CTHR': 12, 'NTHR': 14, 'ALA': 8, 'CALA': 8, - 'NALA': 10, 'ILE': 17, 'CILE': 17, 'NILE': 19, - 'SER': 9, 'CSER': 9, 'NSER': 11, 'LEU': 17, - 'CLEU': 17, 'NLEU': 19, 'TRP': 22, 'CTRP': 22, - 'NTRP': 24, 'GLU': 13, 'CGLU': 13, 'NGLU': 15, - 'LYS': 20, 'CLYS': 20, 'NLYS': 22, 'CYS': 9, - 'CCYS': 9, 'NCYS': 11, 'TYR': 19, 'CTYR': 19, - 'NTYR': 21, 'HIS': 15, 'CHIS': 15, 'NHIS': 17, - 'GLY': 5, 'CGLY': 5, 'NGLY': 7, 'ACE': 4, - 'ASP': 10, 'CASP': 10, 'NASP': 12, 'ARG': 22, - 'CARG': 22, 'NARG': 24, 'MET': 15, 'CMET': 15, - 'NMET': 17, 'NME': 2} - -n_index = {'VAL': 0, 'CVAL': 0, 'NVAL': 0, 'GLN': 0, - 'CGLN': 0, 'NGLN': 0, 'PHE': 0, 'CPHE': 0, - 'NPHE': 0, 'ASN': 0, 'CASN': 0, 'NASN': 0, - 'PRO': 0, 'CPRO': 0, 'NPRO': 0, 'THR': 0, - 'CTHR': 0, 'NTHR': 0, 'ALA': 0, 'CALA': 0, - 'NALA': 0, 'ILE': 0, 'CILE': 0, 'NILE': 0, - 'SER': 0, 'CSER': 0, 'NSER': 0, 'LEU': 0, - 'CLEU': 0, 'NLEU': 0, 'TRP': 0, 'CTRP': 0, - 'NTRP': 0, 'GLU': 0, 'CGLU': 0, 'NGLU': 0, - 'LYS': 0, 'CLYS': 0, 'NLYS': 0, 'CYS': 0, - 'CCYS': 0, 'NCYS': 0, 'TYR': 0, 'CTYR': 0, - 'NTYR': 0, 'HIS': 0, 'CHIS': 0, 'NHIS': 0, - 'GLY': 0, 'CGLY': 0, 'NGLY': 0, 'ASP': 0, - 'CASP': 0, 'NASP': 0, 'ARG': 0, 'CARG': 0, - 'NARG': 0, 'MET': 0, 'CMET': 0, 'NMET': 0, - 'NME': 0, 'ACE': None} - -vdw_params = {'name': np.array(['H', 'HO', 'HS', 'HC', 'H1', 'H2', 'H3', 'HP', 'HA', 'H4', 'H5', - 'HZ', 'O', 'O2', 'OH', 'OS', 'OP', 'C*', 'CI', 'C5', 'C4', 'CT', - 'CX', 'C', 'N', 'N3', 'S', 'SH', 'P', 'MG', 'C0', 'F', 'Cl', 'Br', - 'I', '2C', '3C', 'C8', 'CO'], np.str_), - 'radius': np.array([0.6, 0., 0.6, 1.487, 1.387, 1.287, 1.187, 1.1, - 1.459, 1.409, 1.359, 1.459, 1.6612, 1.6612, 1.721, 1.6837, - 1.85, 1.908, 1.908, 1.908, 1.908, 1.908, 1.908, 1.908, - 1.824, 1.824, 2., 2., 2.1, 0.7926, 1.7131, 1.75, - 1.948, 2.22, 2.35, 1.908, 1.908, 1.908, 1.908], np.float32), - 'well_depth': np.array([0.0157, 0., 0.0157, 0.0157, 0.0157, 0.0157, - 0.0157, 0.0157, 0.015, 0.015, 0.015, 0.015, - 0.21, 0.21, 0.2104, 0.17, 0.17, 0.086, - 0.1094, 0.086, 0.086, 0.1094, 0.1094, 0.086, - 0.17, 0.17, 0.25, 0.25, 0.2, 0.8947, - 0.459789, 0.061, 0.265, 0.32, 0.4, 0.1094, - 0.1094, 0.1094, 0.086], np.float32)} - -improper_params = {'name': np.array(['X-X-C-O', 'X-O2-C-O2', 'X-X-N-H', 'X-X-N2-H', 'X-X-NA-H', - 'X-N2-CA-N2', 'X-CT-N-CT', 'X-CT-N-CX', 'X-X-CA-HA', 'X-X-CW-H4', - 'X-X-CR-H5', 'X-X-CV-H4', 'X-X-CQ-H5', 'X-X-CK-H5', 'X-X-CP-H5', - 'X-X-CM-H4', 'X-X-CM-HA', 'X-X-CS-H4', 'X-X-CS-HA', 'X-X-CA-H4', - 'X-X-CA-H5', 'CB-CK-N*-CT', 'CB-CP-N*-CT', 'C-CM-N*-CT', - 'C-CS-N*-CT', 'C-CS-CM-CT', 'CT-O-C-OH', 'CT-CV-CC-NA', - 'CT-CW-CC-NB', 'CT-CW-CC-NA', 'CB-CT-C*-CW', 'CA-CA-CA-CT', - 'C-CM-CM-CT', 'C-CS-CS-CT', 'CM-N2-CA-NC', 'CS-N2-CA-NC', - 'CB-N2-CA-NC', 'N2-NA-CA-NC', 'CA-CA-C-OH', 'CA-CA-CA-OH', - 'H5-O-C-OH', 'H5-O-C-OS', 'CM-CT-CM-HA', 'CS-CT-CS-HA', - 'Br-CA-CA-CA', 'CM-H4-C-O', 'CS-H4-C-O', 'C-CT-N-H', 'C-CX-N-H', - 'C-CT-N-O', 'X-X-C5-H5', 'CB-C5-N*-CT', 'X-X-C4-H4', 'X-X-C4-HA', - 'C-C4-N*-CT', 'C-C4-C4-CT', 'C4-N2-CA-NC', 'CA-CA-C-OS', - 'CR-CC-NA-P', 'X-O2-CO-O2', '2C-O-C-OH', 'CA-CA-CA-2C'], np.str_), - 'k': np.array([10.5, 10.5, 1., 1., 1., 10.5, 1., 1., 1.1, 1.1, 1.1, - 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1., - 1., 1., 1., 1.1, 10.5, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, - 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, - 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1., 1.1, 1.1, 1., - 1.1, 1.1, 1.1, 1.1, 10.5, 10.5, 1.1], np.float32), - 'phi0': np.array([3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, - 3.14159265, 3.14159265], np.float32), - 'periodicity': np.array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], np.int32)} - -dihedral_params = {'name': np.array(['X-C-C-X', 'X-C-CA-X', 'X-C-CB-X', 'X-C-CM-X', 'X-C-CS-X', - 'X-C-CT-X', 'X-C-CX-X', 'X-C-N-X', 'X-C-N*-X', 'X-C-NA-X', - 'X-C-NC-X', 'X-C-O-X', 'X-C-OH-X', 'X-C-OS-X', 'X-CA-CA-X', - 'X-CA-CB-X', 'X-CA-CM-X', 'X-CA-CS-X', 'X-CA-CN-X', 'X-CA-CT-X', - 'X-CA-N2-X', 'X-CA-NA-X', 'X-CA-NC-X', 'X-CA-OH-X', 'X-CB-CB-X', - 'X-CB-CN-X', 'X-CB-N*-X', 'X-CB-NB-X', 'X-CB-NC-X', 'X-CC-CT-X', - 'X-CC-CV-X', 'X-CC-CW-X', 'X-CC-NA-X', 'X-CC-NB-X', 'X-CD-CD-X', - 'X-CD-CT-X', 'X-CD-CM-X', 'X-CD-CS-X', 'X-CK-N*-X', 'X-CK-NB-X', - 'X-CP-N*-X', 'X-CP-NB-X', 'X-CM-CM-X', 'X-CM-CT-X', 'X-CM-N*-X', - 'X-CM-OS-X', 'X-CS-CS-X', 'X-CS-CT-X', 'X-CS-N*-X', 'X-CS-OS-X', - 'X-CN-NA-X', 'X-CQ-NC-X', 'X-CT-CT-X', 'X-CT-CX-X', 'X-CT-CY-X', - 'X-CT-CZ-X', 'X-CT-N-X', 'X-CX-N-X', 'X-CT-N*-X', 'X-CT-N2-X', - 'X-CT-NT-X', 'X-CT-N3-X', 'X-CX-N3-X', 'X-CT-OH-X', 'X-CT-OS-X', - 'X-CT-S-X', 'X-CT-SH-X', 'X-C*-CB-X', 'X-C*-CT-X', 'X-C*-CW-X', - 'X-CR-NA-X', 'X-CR-NB-X', 'X-CV-NB-X', 'X-CW-NA-X', 'X-OH-P-X', - 'X-OS-P-X', 'X-CI-OS-X', 'X-CI-OH-X', 'X-CI-CT-X', 'X-C5-N*-X', - 'X-C5-NB-X', 'X-C-C4-X', 'X-CA-C4-X', 'X-C4-C4-X', 'X-C4-CT-X', - 'X-C4-N*-X', 'CT-OS-CT-CI', 'H1-CI-CT-OS', 'H1-CI-CT-OH', - 'H1-CT-CI-OS', 'H1-CT-CI-OH', 'CI-CT-CT-CT', 'OP-P-OS-CA', - 'CC-NA-P-OP', 'CR-NA-P-OP', 'OS-P-OS-CI', 'OH-P-OS-CI', - 'CT-CT-CI-OS', 'CT-CT-CI-OH', 'HC-CT-C4-C4', 'C4-C4-C-O', - 'OS-CT-N*-C5', 'OS-CT-N*-CP', 'OS-CT-N*-C4', 'OS-CT-N*-CS', - 'C-N-CX-C', 'N-CX-C-N', 'CT-CT-N-C', 'CT-CX-N-C', 'CT-CT-C-N', - 'CT-CX-C-N', 'CX-CT-C-N', 'H-N-C-O', 'CT-S-S-CT', 'OH-P-OS-CT', - 'OS-P-OS-CT', 'H1-CT-C-O', 'H1-CX-C-O', 'HC-CT-C-O', 'HC-CT-CT-HC', - 'HC-CT-CT-CT', 'HC-CT-CT-CX', 'HC-CT-CM-CM', 'HC-CT-CS-CS', - 'HO-OH-CT-CT', 'HO-OH-CT-CX', 'HO-OH-C-O', 'CM-CM-C-O', - 'CT-CM-CM-CT', 'CS-CS-C-O', 'CT-CS-CS-CT', 'CT-CT-CT-CT', - 'CX-CT-CT-CT', 'CT-CT-NT-CT', 'CT-CT-OS-CT', 'CT-CT-OS-C', - 'CT-OS-CT-OS', 'CT-OS-CT-N*', 'CT-CZ-CZ-HZ', 'O-C-OS-CT', - 'OS-CT-N*-CK', 'OS-CT-N*-CM', 'OS-CT-CT-OS', 'OS-CT-CT-OH', - 'OH-CT-CT-OH', 'F-CT-CT-F', 'Cl-CT-CT-Cl', 'Br-CT-CT-Br', - 'H1-CT-CT-OS', 'H1-CT-CT-OH', 'H1-CX-CT-OH', 'H1-CT-CT-F', - 'H1-CT-CT-Cl', 'H1-CT-CT-Br', 'HC-CT-CT-OS', 'HC-CT-CT-OH', - 'HC-CT-CT-F', 'HC-CT-CT-Cl', 'HC-CT-CT-Br', 'H1-CT-NT-EP', - 'CT-CT-NT-EP', 'CT-C-N-EP', 'O-C-N-EP', 'H1-CT-OH-EP', - 'CT-CT-OH-EP', 'H1-CT-OS-EP', 'H2-CT-OS-EP', 'CT-CT-OS-EP', - 'CM-CM-OS-EP', 'HA-CM-OS-EP', 'H4-CM-OS-EP', 'CS-CS-OS-EP', - 'HA-CS-OS-EP', 'H4-CS-OS-EP', 'N-CT-CT-OH', 'EP-S-S-CT', - 'EP-S-S-EP', 'C8-CX-N-C', '2C-CX-N-C', '3C-CX-N-C', 'N-C-CX-C8', - 'N-C-CX-2C', 'N-C-CX-3C', 'N-C-2C-HC', 'O-C-2C-HC', 'OH-C-2C-HC', - 'CB-C*-2C-HC', 'CW-C*-2C-HC', 'X-C8-C8-X', 'C8-C8-C8-HC', - 'CX-C8-C8-HC', 'HC-C8-C8-HC', 'X-C8-CX-X', 'X-C8-N2-X', - 'X-C8-N3-X', 'X-CA-2C-X', '2C-CC-CV-H4', '2C-CC-CV-NB', - '2C-CC-CW-H4', '2C-CC-CW-NA', '2C-CC-NA-CR', '2C-CC-NA-H', - '2C-CC-NB-CR', 'CV-CC-2C-HC', 'CW-CC-2C-HC', 'NA-CC-2C-HC', - 'NB-CC-2C-HC', 'O2-CO-2C-HC', 'H1-CT-S-2C', 'HC-CT-2C-HC', - 'HC-CT-2C-3C', 'HC-CT-3C-CT', 'HC-CT-3C-CX', 'HC-CT-3C-H1', - 'HC-CT-3C-HC', 'HC-CT-3C-OH', 'HC-CT-3C-2C', 'X-CX-2C-X', - 'H1-CX-2C-OH', 'X-CX-3C-X', 'H1-CX-3C-OH', 'HO-OH-2C-H1', - 'HO-OH-3C-H1', 'EP-S-S-2C', 'X-S-2C-X', 'X-SH-2C-X', 'X-2C-2C-X', - 'CX-2C-2C-HC', 'HC-2C-2C-HC', 'CT-2C-3C-HC', 'CX-2C-3C-HC', - 'HC-2C-3C-CT', 'HC-2C-3C-CX', 'HC-2C-3C-HC', 'C-CX-C8-C8', - 'N-CX-C8-C8', 'N3-CX-C8-C8', 'CX-C8-C8-C8', 'C8-C8-C8-N2', - 'C8-C8-N2-CA', 'C8-C8-C8-C8', 'C8-C8-C8-N3', 'C8-N2-CA-N2', - 'H-N2-CA-N2', 'C8-C8-N3-H', 'C-CX-2C-SH', 'N-CX-2C-SH', - 'N3-CX-2C-SH', 'CX-2C-SH-HS', 'C-CX-2C-CO', 'N-CX-2C-CO', - 'N3-CX-2C-CO', 'CX-2C-CO-O2', 'C-CX-2C-C', 'N-CX-2C-C', - 'N3-CX-2C-C', 'CX-2C-C-O', 'CX-2C-C-OH', '2C-C-OH-HO', 'CX-2C-C-N', - 'C-CX-CT-CC', 'N-CX-CT-CC', 'N3-CX-CT-CC', 'CX-CT-CC-NA', - 'CX-CT-CC-CV', 'CX-CT-CC-NB', 'C-CX-3C-CT', 'C-CX-3C-2C', - 'N-CX-3C-CT', 'N-CX-3C-2C', 'N3-CX-3C-CT', 'N3-CX-3C-2C', - 'CX-3C-2C-CT', 'CT-3C-2C-CT', 'C-CX-3C-OH', 'N-CX-3C-OH', - 'N3-CX-3C-OH', 'CX-3C-OH-HO', 'CT-3C-OH-HO', 'C-CX-2C-3C', - 'N-CX-2C-3C', 'N3-CX-2C-3C', 'CX-2C-3C-CT', 'C-CX-2C-OH', - 'N-CX-2C-OH', 'N3-CX-2C-OH', 'CX-2C-OH-HO', 'C-CX-CT-C*', - 'N-CX-CT-C*', 'N3-CX-CT-C*', 'CX-CT-C*-CB', 'CX-CT-C*-CW', - 'C-CX-CT-CA', 'N-CX-CT-CA', 'N3-CX-CT-CA', 'CX-CT-CA-CA', - 'CA-C-OH-HO', 'C-CX-2C-2C', 'N-CX-2C-2C', 'N3-CX-2C-2C', - 'CX-2C-2C-C', '2C-2C-C-O', '2C-2C-C-OH', '2C-2C-C-N', - 'CX-2C-2C-CO', '2C-2C-CO-O2', 'CX-2C-2C-S', '2C-2C-S-CT', - 'C-CX-2C-S', 'N-CX-2C-S', 'N3-CX-2C-S', 'CX-2C-S-S', '2C-S-S-2C'], np.str_), - 'ks': np.array([[3.625, 0.0, 0.0, 0.0], - [3.625, 0.0, 0.0, 0.0], - [3.0, 0.0, 0.0, 0.0], - [2.175, 0.0, 0.0, 0.0], - [2.175, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [2.5, 0.0, 0.0, 0.0], - [1.45, 0.0, 0.0, 0.0], - [1.35, 0.0, 0.0, 0.0], - [4.0, 0.0, 0.0, 0.0], - [2.8, 0.0, 0.0, 0.0], - [2.3, 0.0, 0.0, 0.0], - [2.7, 0.0, 0.0, 0.0], - [3.625, 0.0, 0.0, 0.0], - [3.5, 0.0, 0.0, 0.0], - [2.55, 0.0, 0.0, 0.0], - [2.55, 0.0, 0.0, 0.0], - [3.625, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [2.4, 0.0, 0.0, 0.0], - [1.5, 0.0, 0.0, 0.0], - [4.8, 0.0, 0.0, 0.0], - [0.9, 0.0, 0.0, 0.0], - [5.45, 0.0, 0.0, 0.0], - [3.0, 0.0, 0.0, 0.0], - [1.65, 0.0, 0.0, 0.0], - [2.55, 0.0, 0.0, 0.0], - [4.15, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [5.15, 0.0, 0.0, 0.0], - [5.375, 0.0, 0.0, 0.0], - [1.4, 0.0, 0.0, 0.0], - [2.4, 0.0, 0.0, 0.0], - [1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [6.65, 0.0, 0.0, 0.0], - [6.65, 0.0, 0.0, 0.0], - [1.7, 0.0, 0.0, 0.0], - [10.0, 0.0, 0.0, 0.0], - [1.7, 0.0, 0.0, 0.0], - [10.0, 0.0, 0.0, 0.0], - [6.65, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [1.85, 0.0, 0.0, 0.0], - [1.05, 0.0, 0.0, 0.0], - [6.65, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [1.85, 0.0, 0.0, 0.0], - [1.05, 0.0, 0.0, 0.0], - [1.525, 0.0, 0.0, 0.0], - [6.8, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.3, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.16666666666666666, 0.0, 0.0, 0.0], - [0.3833333333333333, 0.0, 0.0, 0.0], - [0.3333333333333333, 0.0, 0.0, 0.0], - [0.25, 0.0, 0.0, 0.0], - [1.675, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [6.525, 0.0, 0.0, 0.0], - [2.325, 0.0, 0.0, 0.0], - [5.0, 0.0, 0.0, 0.0], - [2.4, 0.0, 0.0, 0.0], - [1.5, 0.0, 0.0, 0.0], - [0.25, 0.0, 0.0, 0.0], - [0.25, 0.0, 0.0, 0.0], - [0.3833333333333333, 0.0, 0.0, 0.0], - [0.16666666666666666, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [1.7, 0.0, 0.0, 0.0], - [10.0, 0.0, 0.0, 0.0], - [2.175, 0.0, 0.0, 0.0], - [2.55, 0.0, 0.0, 0.0], - [6.65, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [1.85, 0.0, 0.0, 0.0], - [0.383, 0.1, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.18, 0.25, 0.2, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.23999999999999996, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.185181, 1.256531, 0.354858, 0.0], - [0.185181, 1.256531, 0.354858, 0.0], - [1.17804, 0.092102, 0.96283, 0.0], - [1.17804, 0.092102, 0.96283, 0.0], - [0.38, 1.15, 0.0, 0.0], - [2.175, 0.3, 0.0, 0.0], - [0.96561, 1.07403, 0.45754, 0.30917], - [0.7051, 1.06546, 0.44273, 0.25602], - [1.22506, 1.63459, 0.93747, 0.31033], - [1.02514, 1.74876, 0.5815, 0.35148], - [0.0, 0.42, 0.27, 0.0], - [0.0, 0.55, 1.58, 0.45], - [0.0, 0.4, 2.0, 2.0], - [0.0, 0.8, 1.8, 2.0], - [0.0, 0.4, 0.2, 0.2], - [0.0, 0.4, 0.2, 0.2], - [0.0, 0.4, 0.2, 0.2], - [2.5, 2.0, 0.0, 0.0], - [3.5, 0.6, 0.0, 0.0], - [0.25, 1.2, 0.0, 0.0], - [0.25, 1.2, 0.0, 0.0], - [0.8, 0.0, 0.08, 0.0], - [0.8, 0.0, 0.08, 0.0], - [0.8, 0.0, 0.08, 0.0], - [0.15, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.38, 1.15, 0.0, 0.0], - [0.38, 1.15, 0.0, 0.0], - [0.16, 0.25, 0.0, 0.0], - [0.16, 0.25, 0.0, 0.0], - [2.3, 1.9, 0.0, 0.0], - [2.175, 0.3, 0.0, 0.0], - [6.65, 1.9, 0.0, 0.0], - [2.175, 0.3, 0.0, 0.0], - [6.65, 1.9, 0.0, 0.0], - [0.18, 0.25, 0.2, 0.0], - [0.18, 0.25, 0.2, 0.0], - [0.3, 0.4799999999999999, 0.0, 0.0], - [0.383, 0.1, 0.0, 0.0], - [0.383, 0.8, 0.0, 0.0], - [0.1, 0.85, 1.35, 0.0], - [0.383, 0.65, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [2.7, 1.4, 0.0, 0.0], - [0.0, 2.5, 0.0, 0.0], - [0.0, 2.5, 0.0, 0.0], - [0.144, 1.175, 0.0, 0.0], - [0.144, 1.175, 0.0, 0.0], - [0.144, 1.175, 0.0, 0.0], - [0.0, 1.2, 0.0, 0.0], - [0.0, 0.45, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.19, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.55, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.19, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.0, 0.55, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 1.49, 0.156, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.8, 1.8, 2.0], - [0.0, 0.8, 1.8, 2.0], - [0.0, 0.8, 1.8, 2.0], - [0.0, 0.4, 0.2, 0.2], - [0.0, 0.4, 0.2, 0.2], - [0.0, 0.4, 0.2, 0.2], - [0.0, 0.0, 0.0, 0.0], - [0.08, 0.0, 0.8, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.15, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [5.15, 0.0, 0.0, 0.0], - [5.15, 0.0, 0.0, 0.0], - [5.375, 0.0, 0.0, 0.0], - [5.375, 0.0, 0.0, 0.0], - [1.4, 0.0, 0.0, 0.0], - [1.4, 0.0, 0.0, 0.0], - [2.4, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.3333333333333333, 0.0, 0.0, 0.0], - [0.15, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.15, 0.0, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 0.25, 0.0, 0.0], - [0.16666666666666666, 0.0, 0.0, 0.0], - [0.16666666666666666, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.3333333333333333, 0.0, 0.0, 0.0], - [0.25, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.15, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.16, 0.0, 0.0, 0.0], - [0.15, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.18, 0.25, 0.2, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.18, 0.25, 0.2, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.0, 2.4, 0.0, 0.0], - [0.0, 2.4, 0.0, 0.0], - [0.15555555555555556, 0.0, 0.0, 0.0], - [0.075, 0.251, 0.337, 0.269], - [0.033, 0.251, 0.486, 0.154], - [0.033, 0.251, 0.486, 0.154], - [0.029999999999999995, 0.252, 0.612, 0.092], - [0.154, 0.058, 0.459, 0.424], - [0.089, 0.058, 0.647, 2.154], - [0.089, 0.058, 0.647, 2.154], - [0.031000000000000003, 0.0, 0.769, 0.0], - [0.107, 0.033, 0.303, 1.046], - [0.059, 0.033, 0.297, 0.688], - [0.059, 0.033, 0.297, 0.688], - [0.0, 0.0, 0.0, 0.0], - [0.199, 0.008, 0.575, 1.199], - [0.113, 0.479, 2.706, 0.448], - [0.008, 0.301, 0.48500000000000004, 0.828], - [0.025, 0.219, 0.244, 0.143], - [0.089, 0.219, 0.221, 0.306], - [0.089, 0.219, 0.221, 0.306], - [0.037, 0.686, 0.392, 0.16], - [0.01, 0.122, 0.75, 0.674], - [0.047, 0.74, 0.204, 0.69], - [0.112, 0.148, 0.289, 0.406], - [0.115, 0.113, 0.735, 0.162], - [0.001, 0.148, 0.216, 0.337], - [0.097, 0.113, 0.144, 0.31], - [0.001, 0.148, 0.216, 0.337], - [0.097, 0.113, 0.144, 0.31], - [0.23, 0.107, 0.053, 0.447], - [0.224, 0.107, 0.077, 0.202], - [0.156, 0.315, 0.119, 0.697], - [0.095, 0.315, 0.006, 0.674], - [0.095, 0.315, 0.006, 0.674], - [0.013, 0.236, 0.251, 0.006], - [0.048, 0.236, 0.079, 0.643], - [0.19, 0.144, 0.62, 0.706], - [0.073, 0.144, 0.259, 0.098], - [0.073, 0.144, 0.259, 0.098], - [0.179, 0.142, 0.027, 0.379], - [0.129, 0.401, 0.218, 0.661], - [0.16, 0.401, 0.24599999999999997, 0.666], - [0.16, 0.401, 0.24599999999999997, 0.666], - [0.007, 0.267, 0.444, 0.211], - [0.074, 0.234, 0.353, 0.017], - [0.031000000000000003, 0.234, 0.313, 0.079], - [0.031000000000000003, 0.234, 0.313, 0.079], - [0.095, 0.819, 0.408, 0.365], - [0.0, 0.0, 0.0, 0.0], - [0.012, 0.192, 0.469, 0.055], - [0.007, 0.192, 0.29, 0.012], - [0.007, 0.192, 0.29, 0.012], - [0.048, 0.0, 0.069, 0.0], - [0.065, 0.0, 0.883, 0.0], - [0.145, 0.144, 0.393, 0.421], - [0.078, 0.144, 0.184, 0.1], - [0.078, 0.144, 0.184, 0.1], - [0.138, 0.412, 0.083, 0.196], - [0.0, 0.0, 0.0, 0.0], - [0.066, 0.025, 1.104, 0.824], - [0.042, 0.085, 0.845, 0.609], - [0.056, 0.608, 0.222, 1.367], - [0.064, 0.39, 0.0, 0.0], - [0.028, 0.016, 0.245, 0.417], - [0.057, 0.414, 0.442, 0.24699999999999997], - [0.278, 0.323, 0.394, 0.602], - [0.064, 0.323, 0.021, 0.469], - [0.064, 0.323, 0.021, 0.469], - [0.135, 0.302, 0.666, 0.056], - [0.379, 0.682, 4.48, 0.42]], np.float32), - 'phi0s': np.array([[3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 0.0], - [3.141592653589793, 3.141592653589793, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.5549288319349986, 6.142853854002235, 6.2351447704525915, 0.0], - [0.5549288319349986, 6.142853854002235, 6.2351447704525915, 0.0], - [3.3331692425337263, 5.159765562356967, 6.075409968382043, 0.0], - [3.3331692425337263, 5.159765562356967, 6.075409968382043, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [1.2006154831054032, - 0.2728996818418334, - 2.994613241291595, - 0.33322000612000935], - [1.3047348449623768, - 0.10870957778971882, - 2.9435030194761924, - 0.06936985644976662], - [2.565445504872449, - 0.28757091953409775, - 3.2441726350465077, - 0.5612804341488564], - [2.6155207464414185, - 0.2926009584383454, - 3.130202634891278, - 0.27928060558712464], - [0.0, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 3.141592653589793, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 3.141592653589793, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 3.141592653589793, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [3.141592653589793, 0.0, 3.141592653589793, 3.141592653589793], - [3.141592653589793, 3.141592653589793, 0.0, 3.141592653589793], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 3.141592653589793, 3.141592653589793], - [3.141592653589793, 0.0, 3.141592653589793, 3.141592653589793], - [3.141592653589793, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 3.141592653589793], - [0.0, 3.141592653589793, 0.0, 3.141592653589793], - [0.0, 0.0, 0.0, 0.0], - [3.141592653589793, 3.141592653589793, 3.141592653589793, 3.141592653589793], - [0.0, 3.141592653589793, 3.141592653589793, 3.141592653589793], - [3.141592653589793, 3.141592653589793, 3.141592653589793, 3.141592653589793], - [0.0, 3.141592653589793, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 3.141592653589793], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [0.0, 0.0, 3.141592653589793, 0.0], - [3.141592653589793, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0]], np.float32), - 'periodicitys': np.array([[2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [1, 0, 0, 0], - [1, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [3, 2, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 2, 1, 0], - [3, 1, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [1, 2, 3, 0], - [1, 2, 3, 0], - [1, 2, 3, 0], - [1, 2, 3, 0], - [3, 1, 0, 0], - [2, 3, 0, 0], - [1, 2, 3, 4], - [1, 2, 3, 4], - [1, 2, 3, 4], - [1, 2, 3, 4], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [2, 1, 0, 0], - [2, 3, 0, 0], - [3, 2, 0, 0], - [3, 2, 0, 0], - [1, 2, 3, 0], - [1, 2, 3, 0], - [1, 2, 3, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [2, 1, 0, 0], - [2, 3, 0, 0], - [2, 1, 0, 0], - [2, 3, 0, 0], - [2, 1, 0, 0], - [3, 2, 1, 0], - [3, 2, 1, 0], - [3, 2, 0, 0], - [3, 2, 0, 0], - [3, 1, 0, 0], - [3, 2, 1, 0], - [3, 2, 0, 0], - [1, 0, 0, 0], - [2, 1, 0, 0], - [2, 1, 0, 0], - [2, 1, 0, 0], - [3, 2, 0, 0], - [3, 2, 0, 0], - [3, 2, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 1, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [1, 2, 3, 4], - [3, 0, 0, 0], - [3, 0, 0, 0], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [2, 0, 0, 0], - [3, 2, 1, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [2, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 1, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 1, 0, 0], - [3, 0, 0, 0], - [3, 1, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 0, 0, 0], - [3, 2, 1, 0], - [3, 0, 0, 0], - [3, 1, 0, 0], - [3, 2, 1, 0], - [3, 0, 0, 0], - [4, 2, 0, 0], - [4, 2, 0, 0], - [3, 0, 0, 0], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [1, 0, 0, 0], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [1, 0, 0, 0], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 2, 0, 0], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1], - [4, 3, 2, 1]], np.int32), - 'multiple_numbers': np.array([1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 2, - 3, - 2, - 1, - 1, - 3, - 3, - 3, - 3, - 2, - 2, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 3, - 3, - 2, - 2, - 2, - 3, - 2, - 1, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 4, - 1, - 1, - 4, - 4, - 4, - 4, - 4, - 4, - 1, - 3, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 1, - 1, - 2, - 1, - 2, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 3, - 1, - 2, - 3, - 1, - 2, - 2, - 1, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 1, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 1, - 4, - 4, - 4, - 2, - 4, - 4, - 4, - 4, - 4, - 4, - 4], np.int32)} - -angle_params = {'name': np.array(['HW-OW-HW', 'HW-HW-OW', 'C-C-O', 'C-C-OH', 'CA-C-CA', 'CA-C-OH', - 'CA-C-OS', 'CC-NA-P', 'CR-NA-P', 'NA-P-OP', 'CB-C-NA', 'CB-C-O', - 'CM-C-NA', 'CM-C-O', 'CS-C-NA', 'CS-C-O', 'CT-C-O', 'CX-C-O', - 'CT-C-O2', 'CX-C-O2', 'CT-C-N', 'CX-C-N', 'CT-C-CT', 'CT-C-OS', - 'CT-C-OH', 'CX-C-OH', 'N*-C-NA', 'N*-C-NC', 'N*-C-O', 'NA-C-O', - 'NC-C-O', 'N-C-O', 'O-C-O', 'O-C-OH', 'O-C-OS', 'O2-C-O2', - 'H4-C-C', 'H4-C-CM', 'H4-C-CS', 'H4-C-CT', 'H4-C-O', 'H4-C-OH', - 'H5-C-N', 'H5-C-O', 'H5-C-OH', 'H5-C-OS', 'C-CA-CA', 'C-CA-HA', - 'CA-CA-CA', 'CA-CA-CB', 'CA-CA-CT', 'CA-CA-HA', 'CA-CA-H4', - 'CA-CA-OH', 'CA-CA-CN', 'CB-CA-HA', 'CB-CA-H4', 'CB-CA-N2', - 'CB-CA-NC', 'CM-CA-N2', 'CM-CA-NC', 'CS-CA-N2', 'CS-CA-NC', - 'CN-CA-HA', 'NA-CA-NC', 'N2-CA-NA', 'N2-CA-NC', 'N2-CA-N2', - 'F-CA-CA', 'Cl-CA-CA', 'Br-CA-CA', 'I-CA-CA', 'C-CB-CB', 'C-CB-NB', - 'CA-CB-CB', 'CA-CB-NB', 'CB-CB-N*', 'CB-CB-NB', 'CB-CB-NC', - 'C*-CB-CA', 'C*-CB-CN', 'CA-CB-CN', 'N*-CB-NC', 'CD-CD-CM', - 'CD-CD-CS', 'CD-CD-CT', 'CM-CD-CT', 'CS-CD-CT', 'HA-CD-HA', - 'HA-CD-CD', 'HA-CD-CM', 'HA-CD-CS', 'H5-CK-N*', 'H5-CK-NB', - 'N*-CK-NB', 'H5-CP-N*', 'H5-CP-NB', 'N*-CP-NB', 'C-CM-CM', - 'C-CM-CT', 'C-CM-HA', 'C-CM-H4', 'CA-CM-CM', 'CA-CM-HA', - 'CA-CM-H4', 'CM-CM-CT', 'CM-CM-HA', 'CM-CM-H4', 'CM-CM-N*', - 'CM-CM-OS', 'H4-CM-N*', 'H4-CM-OS', 'HA-CM-HA', 'HA-CM-CD', - 'HA-CM-CT', 'C-CS-CS', 'C-CS-CT', 'C-CS-HA', 'C-CS-H4', 'CA-CS-CS', - 'CA-CS-HA', 'CA-CS-H4', 'CM-CS-CT', 'CS-CS-HA', 'CS-CS-H4', - 'CS-CS-N*', 'CS-CS-OS', 'H4-CS-N*', 'H4-CS-OS', 'HA-CS-HA', - 'HA-CS-CD', 'HA-CS-CT', 'NC-CQ-NC', 'H5-CQ-NC', 'H1-CT-H1', - 'H1-CX-H1', 'H1-CT-N*', 'H1-CT-OH', 'H1-CT-OS', 'H1-CT-CM', - 'H1-CT-CS', 'H1-CT-CY', 'H1-CT-CZ', 'H1-CT-N', 'H1-CX-N', - 'H1-CT-S', 'H1-CT-SH', 'H1-CT-N2', 'H1-CT-NT', 'H2-CT-H2', - 'H2-CT-N*', 'H2-CT-OS', 'HP-CT-HP', 'HP-CX-HP', 'HP-CT-N3', - 'HP-CX-N3', 'HC-CT-HC', 'HC-CT-CM', 'HC-CT-CS', 'HC-CT-CD', - 'HC-CT-CZ', 'C-CT-H1', 'C-CX-H1', 'C-CT-HP', 'C-CX-HP', 'C-CT-HC', - 'C-CT-N', 'C-CX-N', 'C-CT-N3', 'C-CX-N3', 'C-CT-CT', 'C-CT-CX', - 'C-CX-CT', 'C-CT-OS', 'CA-CT-HC', 'CC-CT-CT', 'CC-CT-CX', - 'CC-CT-HC', 'CM-CT-CT', 'CM-CT-OS', 'CS-CT-CT', 'CS-CT-OS', - 'CT-CT-CT', 'CT-CT-CX', 'CT-CT-HC', 'CX-CT-HC', 'CT-CT-H1', - 'CT-CX-H1', 'CX-CT-H1', 'CT-CT-H2', 'CT-CT-HP', 'CT-CX-HP', - 'CT-CT-N*', 'CT-CT-OH', 'CX-CT-OH', 'CT-CT-OS', 'CT-CT-S', - 'CX-CT-S', 'CT-CT-SH', 'CX-CT-SH', 'CT-CT-CA', 'CX-CT-CA', - 'CT-CT-N2', 'CT-CT-N', 'CT-CX-N', 'CT-CT-N3', 'CT-CX-N3', - 'CT-CT-NT', 'CT-CT-CY', 'CT-CT-CZ', 'C*-CT-CT', 'C*-CT-CX', - 'C*-CT-HC', 'OS-CT-OS', 'OS-CT-CY', 'OS-CT-CZ', 'OS-CT-N*', - 'F-CT-F', 'F-CT-H1', 'F-CT-CT', 'F-CT-H2', 'Cl-CT-CT', 'Cl-CT-H1', - 'Br-CT-CT', 'Br-CT-H1', 'I-CT-CT', 'CT-CC-NA', 'CT-CC-CV', - 'CT-CC-NB', 'CV-CC-NA', 'CW-CC-NA', 'CW-CC-NB', 'CT-CC-CW', - 'H5-CR-NA', 'H5-CR-NB', 'NA-CR-NA', 'NA-CR-NB', 'CC-CV-H4', - 'CC-CV-NB', 'H4-CV-NB', 'CC-CW-H4', 'CC-CW-NA', 'C*-CW-H4', - 'C*-CW-NA', 'H4-CW-NA', 'CB-C*-CT', 'CB-C*-CW', 'CT-C*-CW', - 'CA-CN-CB', 'CA-CN-NA', 'CB-CN-NA', 'CT-CY-NY', 'CT-CZ-CZ', - 'CZ-CZ-HZ', 'C-N-CT', 'C-N-CX', 'C-N-H', 'CT-N-H', 'CX-N-H', - 'CT-N-CT', 'CT-N-CX', 'H-N-H', 'C-N*-CM', 'C-N*-CS', 'C-N*-CT', - 'C-N*-H', 'CB-N*-CK', 'CB-N*-CP', 'CB-N*-CT', 'CB-N*-H', - 'CK-N*-CT', 'CK-N*-H', 'CP-N*-CT', 'CP-N*-H', 'CM-N*-CT', - 'CM-N*-H', 'CS-N*-CT', 'CS-N*-H', 'CA-N2-H', 'CA-N2-CT', 'CT-N2-H', - 'H-N2-H', 'CT-N3-H', 'CX-N3-H', 'CT-N3-CT', 'CT-N3-CX', 'H-N3-H', - 'CT-NT-H', 'CT-NT-CT', 'H-NT-H', 'C-NA-C', 'C-NA-CA', 'C-NA-H', - 'CA-NA-H', 'CC-NA-CR', 'CC-NA-H', 'CR-NA-CW', 'CR-NA-H', 'CW-NA-H', - 'CN-NA-CW', 'CN-NA-H', 'CB-NB-CK', 'CB-NB-CP', 'CC-NB-CR', - 'CR-NB-CV', 'C-NC-CA', 'CA-NC-CB', 'CA-NC-CQ', 'CB-NC-CQ', - 'C-OH-HO', 'CA-OH-HO', 'CT-OH-HO', 'HO-OH-P', 'C-OS-CT', - 'CM-OS-CT', 'CS-OS-CT', 'CT-OS-CT', 'CT-OS-P', 'C-OS-P', 'P-OS-P', - 'O2-P-OH', 'O2-P-O2', 'OP-P-OP', 'OP-P-OS', 'O2-P-OS', 'OH-P-OS', - 'OS-P-OS', 'CT-S-CT', 'CT-S-S', 'CT-SH-HS', 'HS-SH-HS', 'CB-NB-EP', - 'CC-NB-EP', 'CK-NB-EP', 'CP-NB-EP', 'CR-NB-EP', 'CV-NB-EP', - 'C-NC-EP', 'CA-NC-EP', 'CB-NC-EP', 'CQ-NC-EP', 'CT-N3-EP', - 'H-N3-EP', 'CT-NT-EP', 'H-NT-EP', 'C-O-EP', 'EP-O-EP', 'C-OH-EP', - 'CT-OH-EP', 'HO-OH-EP', 'EP-OH-EP', 'C-OS-EP', 'CM-OS-EP', - 'CS-OS-EP', 'CT-OS-EP', 'EP-OS-EP', 'CT-S-EP', 'CT-SH-EP', - 'P-OS-EP', 'EP-S-EP', 'EP-SH-EP', 'HS-SH-EP', 'H1-CI-CT', - 'H1-CI-H1', 'CI-CT-H1', 'CI-CT-OS', 'CI-CT-CT', 'OS-CI-H1', - 'OS-CI-CT', 'P-OS-CI', 'OH-CI-H1', 'OH-CI-CT', 'HO-OH-CI', - 'H5-C5-N*', 'H5-C5-NB', 'N*-C5-NB', 'CB-N*-C5', 'C5-N*-CT', - 'CB-NB-C5', 'C4-C-NA', 'C4-C-O', 'C4-CA-N2', 'C4-CA-NC', 'C-C4-C4', - 'C-C4-CT', 'C-C4-HA', 'C-C4-H4', 'CA-C4-C4', 'CA-C4-HA', - 'CA-C4-H4', 'C4-C4-CT', 'C4-C4-HA', 'C4-C4-H4', 'C4-C4-N*', - 'H4-C4-N*', 'H1-CT-C4', 'HC-CT-C4', 'C-N*-C4', 'C4-N*-CT', - 'EP-S-S', 'N-C-2C', 'O-C-2C', 'OH-C-2C', 'CB-C*-2C', 'CW-C*-2C', - 'C8-C8-C8', 'C8-C8-CX', 'C8-C8-H1', 'C8-C8-HC', 'C8-C8-HP', - 'C8-C8-N2', 'C8-C8-N3', 'CX-C8-HC', 'H1-C8-H1', 'H1-C8-N2', - 'HC-C8-HC', 'HP-C8-HP', 'HP-C8-N3', 'CA-CA-2C', 'CV-CC-2C', - 'CW-CC-2C', 'NA-CC-2C', 'NB-CC-2C', 'O2-CO-O2', 'O2-CO-2C', - 'HC-CT-2C', 'HC-CT-3C', 'C-CX-C8', 'C-CX-2C', 'C-CX-3C', - 'C8-CX-H1', 'C8-CX-N', 'C8-CX-N3', 'H1-CX-2C', 'H1-CX-3C', - 'HP-CX-C8', 'HP-CX-2C', 'HP-CX-3C', 'N-CX-2C', 'N-CX-3C', - 'N3-CX-2C', 'N3-CX-3C', 'C8-N2-CA', 'C8-N2-H', 'C8-N3-H', - 'HO-OH-2C', 'HO-OH-3C', 'CT-S-2C', '2C-S-S', 'HS-SH-2C', 'C-2C-CX', - 'C-2C-HC', 'C-2C-2C', 'C*-2C-CX', 'C*-2C-HC', 'CA-2C-CX', - 'CA-2C-HC', 'CC-2C-CX', 'CC-2C-HC', 'CO-2C-CX', 'CO-2C-HC', - 'CO-2C-2C', 'CT-2C-HC', 'CT-2C-3C', 'CX-2C-H1', 'CX-2C-HC', - 'CX-2C-OH', 'CX-2C-S', 'CX-2C-SH', 'CX-2C-2C', 'CX-2C-3C', - 'H1-2C-H1', 'H1-2C-OH', 'H1-2C-S', 'H1-2C-SH', 'H1-2C-2C', - 'HC-2C-HC', 'HC-2C-2C', 'HC-2C-3C', 'S-2C-2C', 'CT-3C-CT', - 'CT-3C-CX', 'CT-3C-H1', 'CT-3C-HC', 'CT-3C-OH', 'CT-3C-2C', - 'CX-3C-H1', 'CX-3C-HC', 'CX-3C-OH', 'CX-3C-2C', 'H1-3C-OH', - 'HC-3C-2C'], np.str_), - 'k': np.array([100., 0., 80., 80., 63., 70., 70., 76.7, 76.7, - 42.9, 70., 80., 70., 80., 70., 80., 80., 80., - 70., 70., 70., 70., 63., 80., 80., 80., 70., - 70., 80., 80., 80., 80., 80., 80., 80., 80., - 50., 50., 50., 50., 50., 50., 50., 50., 50., - 50., 63., 50., 63., 63., 70., 50., 50., 70., - 63., 50., 50., 70., 70., 70., 70., 70., 70., - 50., 70., 70., 70., 70., 70., 70., 70., 70., - 63., 70., 63., 70., 70., 70., 70., 63., 63., - 63., 70., 63., 63., 70., 70., 70., 35., 50., - 50., 50., 50., 50., 70., 50., 50., 70., 63., - 70., 50., 50., 63., 50., 50., 70., 50., 50., - 70., 80., 50., 50., 35., 50., 50., 63., 70., - 50., 50., 63., 50., 50., 70., 50., 50., 70., - 80., 50., 50., 35., 50., 50., 70., 50., 35., - 35., 50., 50., 50., 50., 50., 50., 50., 50., - 50., 50., 50., 50., 50., 35., 50., 50., 35., - 35., 50., 50., 35., 50., 50., 50., 50., 50., - 50., 50., 50., 50., 63., 63., 80., 80., 63., - 63., 63., 60., 50., 63., 63., 50., 63., 50., - 63., 50., 40., 40., 50., 50., 50., 50., 50., - 50., 50., 50., 50., 50., 50., 50., 50., 50., - 50., 50., 63., 63., 80., 80., 80., 80., 80., - 80., 63., 63., 63., 63., 50., 160., 50., 50., - 50., 77., 50., 50., 50., 50., 50., 50., 50., - 50., 70., 70., 70., 70., 70., 70., 70., 50., - 50., 70., 70., 50., 70., 50., 50., 70., 50., - 70., 50., 70., 63., 70., 63., 70., 70., 80., - 80., 50., 50., 50., 50., 50., 50., 50., 50., - 35., 70., 70., 70., 50., 70., 70., 70., 50., - 70., 50., 70., 50., 70., 50., 70., 50., 50., - 50., 50., 35., 50., 50., 50., 50., 35., 50., - 50., 35., 70., 70., 50., 50., 70., 50., 70., - 50., 50., 70., 50., 70., 70., 70., 70., 70., - 70., 70., 70., 50., 50., 55., 45., 60., 60., - 60., 60., 100., 100., 100., 45., 140., 140., 100., - 100., 45., 45., 62., 68., 43., 35., 150., 150., - 150., 150., 150., 150., 150., 150., 150., 150., 150., - 150., 150., 150., 150., 150., 150., 150., 150., 150., - 150., 150., 150., 150., 150., 150., 150., 150., 150., - 150., 150., 50., 35., 50., 50., 40., 50., 50., - 100., 50., 50., 55., 50., 50., 70., 70., 70., - 70., 70., 80., 70., 70., 63., 70., 50., 50., - 63., 50., 50., 70., 50., 50., 70., 50., 50., - 50., 70., 70., 150., 70., 80., 80., 70., 70., - 40., 40., 50., 50., 50., 80., 80., 50., 35., - 50., 35., 35., 50., 70., 70., 70., 70., 70., - 80., 70., 50., 50., 63., 63., 63., 50., 80., - 80., 50., 50., 50., 50., 50., 80., 80., 80., - 80., 50., 50., 50., 55., 55., 62., 68., 43., - 63., 50., 63., 63., 50., 63., 50., 63., 50., - 63., 50., 63., 50., 40., 50., 50., 50., 50., - 50., 40., 40., 35., 50., 50., 50., 50., 35., - 50., 50., 50., 40., 40., 50., 50., 50., 40., - 50., 50., 50., 40., 50., 50.], np.float32), - 'b': np.array([1.82421813, 2.22948359, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.18340689, 2.18340689, 1.78686809, - 1.94255146, 2.24798408, 1.99142068, 2.18689755, 1.99142068, - 2.18689755, 2.10137642, 2.10137642, 2.04203522, 2.04203522, - 2.03505391, 2.03505391, 2.04203522, 2.00712864, 1.91986218, - 1.91986218, 2.01410996, 2.06996049, 2.11010307, 2.10486708, - 2.13802833, 2.14500965, 2.19911486, 2.0943951, 2.18166156, - 2.19911486, 2.0943951, 2.00712864, 2.00712864, 2.00712864, - 2.0943951, 2.0943951, 2.0943951, 2.07694181, 1.8675023, - 1.8675023, 2.0943951, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.15548163, 2.04727121, 2.09614043, - 2.12057504, 2.09614043, 2.12057504, 2.0943951, 2.15199097, - 2.02458193, 2.0821778, 2.0943951, 2.11184839, 2.07345115, - 2.07345115, 2.07345115, 2.08043247, 2.26892803, 2.04727121, - 2.31081593, 1.85353967, 1.92684349, 2.22878545, 2.35444916, - 1.89891823, 2.02807259, 2.20260552, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 2.07694181, 2.0943951, - 2.0943951, 2.0943951, 2.14762764, 2.14762764, 1.98793002, - 2.14762764, 2.14762764, 1.98793002, 2.10661241, 2.08915911, - 2.08915911, 2.08915911, 2.04203522, 2.15199097, 2.15199097, - 2.08915911, 2.08915911, 2.08915911, 2.11533905, 2.18166156, - 2.07868714, 1.97222205, 2.0943951, 2.0943951, 2.0943951, - 2.10661241, 2.08915911, 2.08915911, 2.08915911, 2.04203522, - 2.15199097, 2.15199097, 2.08915911, 2.08915911, 2.08915911, - 2.11533905, 2.18166156, 2.07868714, 1.97222205, 2.0943951, - 2.0943951, 2.0943951, 2.25322006, 2.01498262, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91986218, 1.91986218, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91986218, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.92160751, 1.92160751, 1.94080613, 1.94080613, - 1.9390608, 1.9390608, 1.9390608, 1.91113553, 1.91113553, - 1.97396738, 1.97396738, 1.91113553, 1.93731547, 1.91113553, - 1.93731547, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 2.00189265, 2.00189265, 1.89542757, 1.89542757, - 1.98967535, 1.98967535, 1.94080613, 1.91462619, 1.91462619, - 1.94080613, 1.94080613, 1.94080613, 1.91986218, 1.91986218, - 2.01760062, 2.01760062, 1.91113553, 1.76278254, 1.91986218, - 1.91986218, 1.91113553, 1.90415421, 1.91113553, 1.90240888, - 1.91113553, 1.89368224, 1.89368224, 1.88495559, 1.85877565, - 1.85004901, 2.0943951, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 1.8971729, 2.0943951, - 2.24449342, 1.85703032, 2.18166156, 2.14151899, 2.31779725, - 1.82212374, 3.14159265, 3.14159265, 3.14159265, 2.12755636, - 2.12755636, 2.0943951, 2.06018665, 2.06018665, 2.05948852, - 2.05948852, 2.0943951, 2.12232037, 2.12232037, 2.0525072, - 2.08043247, 1.83957703, 1.83957703, 2.1956242, 2.1956242, - 2.24798408, 2.24798408, 2.24798408, 2.24798408, 2.11533905, - 2.11533905, 2.11533905, 2.11533905, 2.0943951, 2.15024564, - 2.06646983, 2.0943951, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 2.20609617, 2.18515222, 2.03854457, 2.05948852, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 2.0943951, 1.94778745, - 2.14850031, 1.81165176, 1.81165176, 2.04203522, 2.04203522, - 2.10312175, 1.95825942, 2.06996049, 1.93731547, 1.97222205, - 1.97222205, 1.89368224, 1.89368224, 2.04203522, 2.04203522, - 2.04203522, 1.91113553, 2.10312175, 2.10312175, 2.10312175, - 1.88896985, 2.09264977, 2.09264977, 1.88896985, 1.88896985, - 1.79070781, 1.79070781, 1.72613063, 1.80990643, 1.67551608, - 1.60692464, 2.19911486, 2.19911486, 2.19911486, 2.19911486, - 2.19911486, 2.19911486, 2.0943951, 2.0943951, 2.0943951, - 2.0943951, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 2.0943951, 2.0943951, 2.0943951, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.57079633, 1.57079633, 1.91113553, 3.14159265, - 3.14159265, 1.57079633, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 2.10312175, - 1.91113553, 1.91113553, 1.89368224, 2.14762764, 2.14762764, - 1.98793002, 1.83957703, 2.24798408, 1.81165176, 1.99142068, - 2.18689755, 2.09614043, 2.12057504, 2.10661241, 2.08915911, - 2.08915911, 2.08915911, 2.04203522, 2.15199097, 2.15199097, - 2.08915911, 2.08915911, 2.08915911, 2.11533905, 2.07868714, - 1.91113553, 1.91113553, 2.12232037, 2.11533905, 1.68773339, - 2.03505391, 2.10137642, 1.91986218, 2.24449342, 2.18166156, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.94080613, 1.94080613, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 2.0943951, 2.0943951, - 2.0943951, 2.0943951, 2.0943951, 2.19911486, 2.04203522, - 1.91113553, 1.91113553, 1.9390608, 1.9390608, 1.9390608, - 1.91113553, 1.91462619, 1.94080613, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91462619, 1.91462619, - 1.94080613, 1.94080613, 2.15024564, 2.06646983, 1.91113553, - 1.89368224, 1.89368224, 1.72613063, 1.80990643, 1.67551608, - 1.9390608, 1.91113553, 1.9390608, 2.01760062, 1.91113553, - 1.98967535, 1.91113553, 1.97396738, 1.91113553, 1.9390608, - 1.91113553, 1.9390608, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 2.00189265, 1.89542757, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 2.00189265, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553, 1.91113553, 1.91113553, 1.91113553, - 1.91113553, 1.91113553], np.float32)} - -bond_params = {'name': np.array(['OW-HW', 'HW-HW', 'C-C', 'C-CA', 'C-CB', 'C-CM', 'C-CS', 'C-CT', - 'C-CX', 'C-N', 'C-N*', 'C-NA', 'C-NC', 'C-O', 'C-O2', 'C-OH', - 'C-OS', 'C-H4', 'C-H5', 'CA-CA', 'CA-CB', 'CA-CM', 'CA-CS', - 'CA-CN', 'CA-CT', 'CA-HA', 'CA-H4', 'CA-N2', 'CA-NA', 'CA-NC', - 'CA-OH', 'CB-CB', 'CB-N*', 'CB-NB', 'CB-NC', 'CD-HA', 'CD-CD', - 'CD-CM', 'CD-CS', 'CD-CT', 'CK-H5', 'CK-N*', 'CK-NB', 'CP-H5', - 'CP-N*', 'CP-NB', 'CM-CM', 'CM-CT', 'CM-HA', 'CM-H4', 'CM-H5', - 'CM-N*', 'CM-OS', 'CS-CS', 'CS-CT', 'CS-HA', 'CS-H4', 'CS-H5', - 'CS-N*', 'CS-OS', 'CQ-H5', 'CQ-NC', 'CT-CT', 'CX-CT', 'CT-HC', - 'CT-H1', 'CX-H1', 'CT-H2', 'CT-H3', 'CT-HP', 'CX-HP', 'CT-N*', - 'CT-N2', 'CT-OH', 'CT-OS', 'C*-HC', 'C*-CB', 'C*-CT', 'C*-CW', - 'CB-CN', 'CC-CT', 'CC-CV', 'CC-CW', 'CC-NA', 'CC-NB', 'CN-NA', - 'CR-H5', 'CR-NA', 'CR-NB', 'CT-N', 'CX-N', 'CT-N3', 'CX-N3', - 'CT-NT', 'CT-S', 'CT-SH', 'CT-CY', 'CT-CZ', 'CV-H4', 'CV-NB', - 'CW-H4', 'CW-NA', 'CY-NY', 'CZ-CZ', 'CZ-HZ', 'OP-P', 'O2-P', - 'OH-P', 'OS-P', 'NA-P', 'H-N2', 'H-N*', 'H-NA', 'H-N', 'H-N3', - 'H-NT', 'HO-OH', 'HO-OS', 'HS-SH', 'S-S', 'F-CT', 'Cl-CT', 'Br-CT', - 'I-CT', 'F-CA', 'Cl-CA', 'I-CA', 'Br-CA', 'EP-O', 'EP-OH', 'EP-OS', - 'EP-N3', 'EP-NT', 'EP-NB', 'EP-NC', 'EP-S', 'EP-SH', 'CI-H1', - 'CI-CT', 'OS-CI', 'OH-CI', 'C5-H5', 'C5-N*', 'C5-NB', 'C-C4', - 'CA-C4', 'C4-C4', 'C4-CT', 'C4-HA', 'C4-H4', 'C4-N*', 'C-2C', - 'C*-2C', 'C8-C8', 'C8-CX', 'C8-H1', 'C8-HC', 'C8-HP', 'C8-N2', - 'C8-N3', 'CA-2C', 'CC-2C', 'CO-O2', 'CO-2C', 'CT-2C', 'CT-3C', - 'CX-2C', 'CX-3C', 'H1-2C', 'H1-3C', 'HC-2C', 'HC-3C', 'OH-2C', - 'OH-3C', 'S-2C', 'SH-2C', '2C-2C', '2C-3C'], np.str_), - 'k': np.array([553., 553., 310., 469., 447., 410., 410., 317., 317., 490., 424., - 418., 457., 570., 656., 450., 450., 367., 367., 469., 469., 427., - 427., 469., 317., 367., 367., 481., 427., 483., 450., 520., 436., - 414., 461., 367., 469., 549., 549., 317., 367., 440., 529., 367., - 440., 529., 549., 317., 367., 367., 367., 448., 480., 549., 317., - 367., 367., 367., 448., 480., 367., 502., 310., 310., 340., 340., - 340., 340., 340., 340., 340., 337., 337., 320., 320., 367., 388., - 317., 546., 447., 317., 512., 518., 422., 410., 428., 367., 477., - 488., 337., 337., 367., 367., 367., 227., 237., 400., 400., 367., - 410., 367., 427., 600., 600., 400., 525., 525., 230., 230., 250., - 434., 434., 434., 434., 434., 434., 553., 553., 274., 166., 367., - 232., 159., 148., 386., 193., 171., 172., 600., 600., 600., 600., - 600., 600., 600., 600., 600., 340., 310., 320., 320., 367., 440., - 529., 410., 427., 549., 317., 367., 367., 448., 317., 317., 310., - 310., 340., 340., 340., 337., 367., 317., 317., 656., 317., 310., - 310., 310., 310., 340., 340., 340., 340., 320., 320., 227., 237., - 310., 310.], np.float32), - 'b': np.array([0.9572, 1.5136, 1.525, 1.409, 1.419, 1.444, 1.444, 1.522, - 1.522, 1.335, 1.383, 1.388, 1.358, 1.229, 1.25, 1.364, - 1.323, 1.08, 1.08, 1.4, 1.404, 1.433, 1.433, 1.4, - 1.51, 1.08, 1.08, 1.34, 1.381, 1.339, 1.364, 1.37, - 1.374, 1.391, 1.354, 1.08, 1.4, 1.35, 1.35, 1.51, - 1.08, 1.371, 1.304, 1.08, 1.371, 1.304, 1.35, 1.51, - 1.08, 1.08, 1.08, 1.365, 1.24, 1.35, 1.51, 1.08, - 1.08, 1.08, 1.365, 1.24, 1.08, 1.324, 1.526, 1.526, - 1.09, 1.09, 1.09, 1.09, 1.09, 1.09, 1.09, 1.475, - 1.463, 1.41, 1.41, 1.08, 1.459, 1.495, 1.352, 1.419, - 1.504, 1.375, 1.371, 1.385, 1.394, 1.38, 1.08, 1.343, - 1.335, 1.449, 1.449, 1.471, 1.471, 1.471, 1.81, 1.81, - 1.458, 1.459, 1.08, 1.394, 1.08, 1.381, 1.15, 1.206, - 1.056, 1.48, 1.48, 1.61, 1.61, 1.84, 1.01, 1.01, - 1.01, 1.01, 1.01, 1.01, 0.96, 0.96, 1.336, 2.038, - 1.38, 1.766, 1.944, 2.166, 1.359, 1.727, 2.075, 1.89, - 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.7, - 0.7, 1.09, 1.526, 1.41, 1.41, 1.08, 1.371, 1.304, - 1.444, 1.433, 1.35, 1.51, 1.08, 1.08, 1.365, 1.522, - 1.495, 1.526, 1.526, 1.09, 1.09, 1.09, 1.463, 1.471, - 1.51, 1.504, 1.25, 1.522, 1.526, 1.526, 1.526, 1.526, - 1.09, 1.09, 1.09, 1.09, 1.41, 1.41, 1.81, 1.81, - 1.526, 1.526], np.float32)} diff --git a/MindSPONGE/mindsponge/python/common/r3.py b/MindSPONGE/mindsponge/python/common/r3.py deleted file mode 100644 index ee058e44e4c5d00459d7dfdeeabc594fa6fcd0f9..0000000000000000000000000000000000000000 --- a/MindSPONGE/mindsponge/python/common/r3.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright 2021-2022 @ Shenzhen Bay Laboratory & -# Peking University & -# Huawei Technologies Co., Ltd -# -# This code is a part of MindSPONGE: -# MindSpore Simulation Package tOwards Next Generation molecular modelling. -# -# MindSPONGE is open-source software based on the AI-framework: -# MindSpore (https://www.mindspore.cn/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -"""r3""" - -import numpy as np -import mindspore.numpy as mnp - - -def vecs_sub(v1, v2): - """Computes v1 - v2.""" - return v1 - v2 - - -def vecs_robust_norm(v, epsilon=1e-8, use_numpy=False): - """Computes norm of vectors 'v'.""" - if use_numpy: - return np.sqrt(np.square(v[0]) + np.square(v[1]) + np.square(v[2]) + epsilon) - return mnp.sqrt(mnp.sum(mnp.square(v), axis=-1) + epsilon) - - -def vecs_robust_normalize(v, epsilon=1e-8, use_numpy=False): - """Normalizes vectors 'v'.""" - - norms = vecs_robust_norm(v, epsilon, use_numpy=use_numpy) - if use_numpy: - return v / norms[None, ...] - return v / norms[..., None] - - -def vecs_dot_vecs(v1, v2, use_numpy=False): - """Dot product of vectors 'v1' and 'v2'.""" - if use_numpy: - return np.sum(v1 * v2, axis=0) - return mnp.sum(v1 * v2, axis=-1) - - -def vecs_cross_vecs(v1, v2, use_numpy=False): - """Cross product of vectors 'v1' and 'v2'.""" - if use_numpy: - out = np.array((v1[1] * v2[2] - v1[2] * v2[1], - v1[2] * v2[0] - v1[0] * v2[2], - v1[0] * v2[1] - v1[1] * v2[0])) - return out - return mnp.concatenate(((v1[..., 1] * v2[..., 2] - v1[..., 2] * v2[..., 1])[..., None], - (v1[..., 2] * v2[..., 0] - - v1[..., 0] * v2[..., 2])[..., None], - (v1[..., 0] * v2[..., 1] - v1[..., 1] * v2[..., 0])[..., None]), axis=-1) - - -def rots_from_two_vecs(e0_unnormalized, e1_unnormalized, use_numpy=False): - """Create rotation matrices from unnormalized vectors for the x and y-axes.""" - - # Normalize the unit vector for the x-axis, e0. - e0 = vecs_robust_normalize(e0_unnormalized, use_numpy=use_numpy) - - # make e1 perpendicular to e0. - c = vecs_dot_vecs(e1_unnormalized, e0, use_numpy=use_numpy) - if use_numpy: - e1 = e1_unnormalized - c[None, ...] * e0 - else: - e1 = e1_unnormalized - c[..., None] * e0 - e1 = vecs_robust_normalize(e1, use_numpy=use_numpy) - - # Compute e2 as cross product of e0 and e1. - e2 = vecs_cross_vecs(e0, e1, use_numpy=use_numpy) - - if use_numpy: - rots = np.array((e0[0], e1[0], e2[0], e0[1], - e1[1], e2[1], e0[2], e1[2], e2[2])) - return rots - - rots = mnp.concatenate( - (mnp.concatenate([e0[..., 0][None, ...], e1[..., 0][None, ...], e2[..., 0][None, ...]], axis=0)[None, ...], - mnp.concatenate([e0[..., 1][None, ...], e1[..., 1] - [None, ...], e2[..., 1][None, ...]], axis=0)[None, ...], - mnp.concatenate([e0[..., 2][None, ...], e1[..., 2][None, ...], e2[..., 2][None, ...]], axis=0)[None, ...]), - axis=0) - return rots - - -def rigids_from_3_points( - point_on_neg_x_axis, # shape (...) - origin, # shape (...) - point_on_xy_plane, # shape (...) - use_numpy=False -): # shape (...) - """Create Rigids from 3 points. """ - m = rots_from_two_vecs( - e0_unnormalized=vecs_sub(origin, point_on_neg_x_axis), - e1_unnormalized=vecs_sub(point_on_xy_plane, origin), - use_numpy=use_numpy) - return m, origin - - -def invert_rots(m, use_numpy=False): - """Computes inverse of rotations 'm'.""" - if use_numpy: - out = np.array((m[0], m[3], m[6], - m[1], m[4], m[7], - m[2], m[5], m[8])) - return out - return mnp.transpose(m, (1, 0, 2, 3, 4)) - - -def rots_mul_vecs(m, v, use_numpy=False): - """Apply rotations 'm' to vectors 'v'.""" - if use_numpy: - out = np.array((m[0] * v[0] + m[1] * v[1] + m[2] * v[2], - m[3] * v[0] + m[4] * v[1] + m[5] * v[2], - m[6] * v[0] + m[7] * v[1] + m[8] * v[2])) - return out - return mnp.concatenate(((m[0][0] * v[..., 0] + m[0][1] * v[..., 1] + m[0][2] * v[..., 2])[..., None], - (m[1][0] * v[..., 0] + m[1][1] * - v[..., 1] + m[1][2] * v[..., 2])[..., None], - (m[2][0] * v[..., 0] + m[2][1] * v[..., 1] + m[2][2] * v[..., 2])[..., None]), axis=-1) - - -def invert_rigids(rot, trans, use_numpy=False): - """Computes group inverse of rigid transformations 'r'.""" - inv_rots = invert_rots(rot, use_numpy=use_numpy) - t = rots_mul_vecs(inv_rots, trans, use_numpy=use_numpy) - inv_trans = -t - return inv_rots, inv_trans - - -def vecs_add(v1, v2): - """Add two vectors 'v1' and 'v2'.""" - return v1 + v2 - - -def rigids_mul_vecs(rot, trans, v, use_numpy=False): - """Apply rigid transforms 'r' to points 'v'.""" - return vecs_add(rots_mul_vecs(rot, v, use_numpy=use_numpy), trans) - - -def rigids_mul_rots(x, y, use_numpy=False): - """numpy version of getting results rigids x multiply rots y""" - rigids = (rots_mul_rots(x[0], y, use_numpy=use_numpy), x[1]) - return rigids - - -def rots_mul_rots(x, y, use_numpy=False): - """numpy version of getting result of rots x multiply rots y""" - vecs0 = rots_mul_vecs(x, (y[0], y[3], y[6]), use_numpy) - vecs1 = rots_mul_vecs(x, (y[1], y[4], y[7]), use_numpy) - vecs2 = rots_mul_vecs(x, (y[2], y[5], y[8]), use_numpy) - return np.array((vecs0[0], vecs1[0], vecs2[0], vecs0[1], vecs1[1], vecs2[1], vecs0[2], vecs1[2], vecs2[2])) - - -def vecs_from_tensor(inputs): - """get vectors from input tensor""" - num_components = inputs.shape[-1] - assert num_components == 3 - return np.array((inputs[..., 0], inputs[..., 1], inputs[..., 2])) - - -def rigids_to_tensor_flat12(inputs): # outputs shape (..., 12) - """transfer rigids to flat tensor""" - return np.stack(list(inputs[0]) + list(inputs[1]), axis=-1) - - -def rots_from_tensor3x3(inputs): - """get rotation from inputs tensor""" - assert inputs.shape[-1] == 3 - assert inputs.shape[-2] == 3 - return np.array((inputs[..., 0, 0], inputs[..., 0, 1], inputs[..., 0, 2], - inputs[..., 1, 0], inputs[..., 1, 1], inputs[..., 1, 2], - inputs[..., 2, 0], inputs[..., 2, 1], inputs[..., 2, 2])) diff --git a/MindSPONGE/mindsponge/python/data/data_loader.py b/MindSPONGE/mindsponge/python/data/data_loader.py deleted file mode 100644 index d96a1cc5a79b7a3b476b7eeb9a38a3b4356691f1..0000000000000000000000000000000000000000 --- a/MindSPONGE/mindsponge/python/data/data_loader.py +++ /dev/null @@ -1,247 +0,0 @@ -# Copyright 2021 The AIMM Group at Shenzhen Bay Laboratory & Peking University & Huawei Technologies Co., Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -"""data loader""" -import math -import parmed as pmd -import numpy as np - -from ..common.constants import TIME_UNIT, CHARGE_UNIT, SUPPORT_TYPE, KB - - -class system: - """system""" - - def __init__(self, config): - if config.file_type not in SUPPORT_TYPE: - return None - self.mode = config.mode - self.dt = config.dt - self.target_temperature = config.target_temperature - self.gamma_ln = 1.0 - if 'gamma_ln' in vars(config): - self.gamma_ln = config.gamma_ln - elif 'langevin_gamma' in vars(config): - self.gamma_ln = config.langevin_gamma - self.gamma_ln = self.gamma_ln / TIME_UNIT - self.exp_gamma = math.exp(-1 * self.gamma_ln * self.dt) - self.sqrt_gamma = math.sqrt((1. - self.exp_gamma * self.exp_gamma) * self.target_temperature * KB) - - if "coordinates_file" in vars(config): - self._system = pmd.load_file(config.topology_file, xyz=config.coordinates_file) - self._crd = pmd.load_file(config.coordinates_file) - else: - self._system = pmd.load_file(config.topology_file, xyz=config.coordinates_file) - self.atom_numbers = len(self._system.atoms) - self.system_freedom = 3 * self.atom_numbers - self.coordinates = self._system.coordinates.astype(np.float32) - self.box_len = self._crd.box.astype(np.float32)[:3] - self.velocities = None - if self._crd.hasvels: - self.velocities = self._crd.velocities - self.velocities = self.velocities / TIME_UNIT - else: - self.velocities = np.zeros([self.atom_numbers, 3]).astype(np.float32) - self._residue() - self._atom_info() - self._virtual_atom() - self._bond() - self._angle() - self._dihedral_nb14() - self._lennard_jones() - self._exclude() - self._simple_constrain(config) - - def _residue(self): - self.residue_numbers = len(self._system.residues) - self.residues = [] - for residue in self._system.residues: - self.residues.append(len(residue)) - - def _atom_info(self): - self.mass = [] - self.charge = [] - for atom in self._system.atoms: - self.mass.append(atom.mass) - self.charge.append(atom.charge * CHARGE_UNIT) - self.mass = np.array(self.mass).astype(np.float32) - self.inverse_mass = 1.0 / self.mass - self.charge = np.array(self.charge).astype(np.float32) - - def _virtual_atom(self): - virtual_atoms = [] - for residue in self._system.residues: - if residue.name in ("WAT", "HOH"): - if len(residue.atoms) == 4: - virtual_bond = residue.atoms[3].bonds[0] - if residue.atoms[1].bonds[0].atom1 == residue.atoms[0] or residue.atoms[1].bonds[0].atom2 == \ - residue.atoms[0]: - ho_bond = residue.atoms[1].bonds[0].type.req - hh_bond = residue.atoms[1].bonds[1].type.req - else: - ho_bond = residue.atoms[1].bonds[1].type.req - hh_bond = residue.atoms[1].bonds[0].type.req - factor = virtual_bond.type.req / (4 * ho_bond * ho_bond - hh_bond * hh_bond) ** 0.5 - virtual_atoms.append([2, residue.atoms[3].idx, residue.atoms[0].idx, - residue.atoms[1].idx, residue.atoms[2].idx, factor, factor]) - self._system.bonds.remove(virtual_bond) - if virtual_atoms: - self.virtual_atoms = virtual_atoms - - def _bond(self): - self.bond_numbers = len(self._system.bonds) - bond = [] - for _bond in self._system.bonds: - bond.append([_bond.atom1.idx, _bond.atom2.idx, _bond.type.k, _bond.type.req]) - bond = np.array(bond) - self.bond_atom_a = bond[:, 0].astype(np.int32) - self.bond_atom_b = bond[:, 1].astype(np.int32) - self.bond_k = bond[:, 2].astype(np.float32) - self.bond_r0 = bond[:, 3].astype(np.float32) - - def _angle(self): - self.angle_numbers = len(self._system.angles) - angle = [] - for _angle in self._system.angles: - angle.append([_angle.atom1.idx, _angle.atom2.idx, _angle.atom3.idx, _angle.type.k, - _angle.type.utheteq.value_in_unit(pmd.unit.radian)]) - angle = np.array(angle) - self.angle_atom_a = angle[:, 0].astype(np.int32) - self.angle_atom_b = angle[:, 1].astype(np.int32) - self.angle_atom_c = angle[:, 2].astype(np.int32) - self.angle_k = angle[:, 3].astype(np.float32) - self.angle_theta0 = angle[:, 4].astype(np.float32) - - def _dihedral_nb14(self): - self.dihedral_numbers = len(self._system.dihedrals) - if self.dihedral_numbers: - self.dihedral_numbers = 0 - dihedral = [] - towrite = "" - for _dihedral in self._system.dihedrals: - if _dihedral.type.phi_k != 0: - dihedral.append([_dihedral.atom1.idx, _dihedral.atom2.idx, _dihedral.atom3.idx, _dihedral.atom4.idx, - _dihedral.type.per, _dihedral.type.phi_k, - _dihedral.type.uphase.value_in_unit(pmd.unit.radian)]) - self.dihedral_numbers += 1 - dihedral = np.array(dihedral) - self.dihedral_atom_a = dihedral[:, 0].astype(np.int32) - self.dihedral_atom_b = dihedral[:, 1].astype(np.int32) - self.dihedral_atom_c = dihedral[:, 2].astype(np.int32) - self.dihedral_atom_d = dihedral[:, 3].astype(np.int32) - self.dihedral_ipn = dihedral[:, 4].astype(np.float32) - self.dihedral_pn = dihedral[:, 4].astype(np.float32) - self.dihedral_pk = dihedral[:, 5].astype(np.float32) - self.dihedral_gamc = np.float32(np.cos(dihedral[:, 6]) * dihedral[:, 5]) - self.dihedral_gams = np.float32(np.sin(dihedral[:, 6]) * dihedral[:, 5]) - - self.nb14_numbers = 0 - nb14 = [] - for _dihedral in self._system.dihedrals: - if _dihedral.type.scnb != 0 and _dihedral.type.scee != 0 and not _dihedral.ignore_end: - nb14.append([_dihedral.atom1.idx, _dihedral.atom4.idx, - 1.0 / _dihedral.type.scnb, 1.0 / _dihedral.type.scee]) - self.nb14_numbers += 1 - self.nb14_atom_a = np.array(nb14)[:, 0].astype(np.int32) - self.nb14_atom_b = np.array(nb14)[:, 1].astype(np.int32) - self.nb14_lj_scale_factor = np.array(nb14)[:, 2].astype(np.float32) - self.nb14_cf_scale_factor = np.array(nb14)[:, 3].astype(np.float32) - - def _lennard_jones(self): - LJ_depth = self._system.LJ_depth - LJ_radius = self._system.LJ_radius - self.atom_type_numbers = len(LJ_depth) - LJ_idx = [] - for atom in self._system.atoms: - LJ_idx.append(atom.nb_idx - 1) - - def getLJ_A(i, j): - return (np.sqrt(LJ_depth[i] * LJ_depth[j]) * ((LJ_radius[i] + LJ_radius[j])) ** 12) - - def getLJ_B(i, j): - return (np.sqrt(LJ_depth[i] * LJ_depth[j]) * 2 * ((LJ_radius[i] + LJ_radius[j])) ** 6) - - self.LJ_A = [] - for i in range(self.atom_type_numbers): - temp = [] - for j in range(i + 1): - temp.append(getLJ_A(i, j)) - self.LJ_A.extend(temp) - self.LJ_B = [] - for i in range(self.atom_type_numbers): - temp = [] - for j in range(i + 1): - temp.append(getLJ_B(i, j)) - self.LJ_B.extend(temp) - _LJ_idx = [] - for i in range(self.atom_numbers): - _LJ_idx.append(LJ_idx[i]) - - self.LJ_A = np.float32(np.array(self.LJ_A) * 12.0) - self.LJ_B = np.float32(np.array(self.LJ_B) * 6.0) - self.LJ_type = np.array(_LJ_idx).astype(np.float32) - - def _exclude(self): - self.excluded_atom_numbers = 0 - self.excluded_atom = [] - for atom in self._system.atoms: - temp = 0 - exclusions_temp = atom.bond_partners + atom.angle_partners + \ - atom.dihedral_partners + atom.tortor_partners + atom.exclusion_partners - exclusions = [] - for atom_e in exclusions_temp: - if (atom_e > atom): - exclusions.append("%d" % atom_e.idx) - temp += 1 - exclusions.sort(key=lambda x: int(x)) - self.excluded_atom.append(exclusions) - - def _simple_constrain(self, config): - def add_bond_to_constrain_pair(constrain_mass, atom_mass, atom_a, atom_b, bond_r): - bond_pair = [] - s = 0 - for i in range(self.bond_numbers): - mass_a = atom_mass[atom_a[i]] - mass_b = atom_mass[atom_b[i]] - if (float(mass_a) < constrain_mass and mass_a > 0) or \ - (float(mass_b) < constrain_mass and mass_b > 0): - constrain_k = \ - atom_mass[atom_a[i]] * atom_mass[atom_b[i]] / (atom_mass[atom_a[i]] + atom_mass[atom_b[i]]) - bond_pair.append([atom_a[i], atom_b[i], bond_r[i], constrain_k]) - s += 1 - return bond_pair - - def add_angle_to_constrain_pair(agnle_num, atom_a, atom_b, atom_c, theta, mass): - raise NotImplementedError - - constrain_mass = 3.0 if "constrain_mass" not in vars(config) else float(config.constrain_mass) - bond_pair = add_bond_to_constrain_pair(constrain_mass, self.mass, self.bond_atom_a, self.bond_atom_b, - self.bond_r0) - angle_pair = [] - self.volume = float(self.box_len[0] * self.box_len[1] * self.box_len[2]) - half_exp_gamma_plus_half = 0.5 * (1. + self.exp_gamma) - if config.mode == "Minimization": - exp_gamma = 0.0 - self.iteration_numbers = 25 if "iteration_numbers" not in vars(config) else config.iteration_numbers - step_length = 1 if "step_length" not in vars(config) else float(config.iteration_numbers) - extra_numbers = 0 - - self.dt_inverse = 1 / self.dt - constrain_pair_numbers = len(bond_pair) + len(angle_pair) + extra_numbers - self.system_freedom -= constrain_pair_numbers - self.constrain_pair = [] - for i in range(len(bond_pair)): - self.constrain_pair.append(bond_pair[i]) - self.constrain_pair[i][-1] = step_length / half_exp_gamma_plus_half \ - * self.constrain_pair[i][-1] diff --git a/MindSPONGE/mindsponge/python/loss/__init__.py b/MindSPONGE/mindsponge/python/loss/__init__.py deleted file mode 100644 index ef5cc82b5147efe17b71f1e84ba8c797584879a9..0000000000000000000000000000000000000000 --- a/MindSPONGE/mindsponge/python/loss/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2021-2022 @ Shenzhen Bay Laboratory & -# Peking University & -# Huawei Technologies Co., Ltd -# -# This code is a part of MindSPONGE: -# MindSpore Simulation Package tOwards Next Generation molecular modelling. -# -# MindSPONGE is open-source software based on the AI-framework: -# MindSpore (https://www.mindspore.cn/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -""" loss init""" - -from .violation_loss import get_violation_loss diff --git a/MindSPONGE/mindsponge/python/loss/violation_loss.py b/MindSPONGE/mindsponge/python/loss/violation_loss.py deleted file mode 100644 index a2edce1f90c4243088a5e54ccd4c435e10926344..0000000000000000000000000000000000000000 --- a/MindSPONGE/mindsponge/python/loss/violation_loss.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2021-2022 @ Shenzhen Bay Laboratory & -# Peking University & -# Huawei Technologies Co., Ltd -# -# This code is a part of MindSPONGE: -# MindSpore Simulation Package tOwards Next Generation molecular modelling. -# -# MindSPONGE is open-source software based on the AI-framework: -# MindSpore (https://www.mindspore.cn/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================ -"""violation loss calculation.""" - -import numpy as np - -import mindspore as ms -from mindspore import Tensor -from mindspore.ops import operations as P - -from ..metrics.structure_violations import find_structural_violations -from ..common import residue_constants -from ..common.utils import get_pdb_info - -C_ONE_HOT = np.array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], np.float32) -N_ONE_HOT = np.array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], np.float32) -ATOMTYPE_RADIUS = np.array([1.55, 1.7, 1.7, 1.7, 1.52, 1.7, 1.7, 1.7, 1.52, 1.52, 1.8, 1.7, 1.7, 1.7, 1.55, 1.55, 1.52, - 1.52, 1.8, 1.7, 1.7, 1.7, 1.7, 1.55, 1.55, 1.55, 1.52, 1.52, 1.7, 1.55, 1.55, 1.52, 1.7, - 1.7, 1.7, 1.55, 1.52]) -DISTS_MASK_I = np.eye(14, 14) -LOWER_BOUND, UPPER_BOUND, RESTYPE_ATOM14_BOUND_STDDEV = \ - residue_constants.make_atom14_dists_bounds(overlap_tolerance=1.5, bond_length_tolerance_factor=12.0) - -VIOLATION_TOLERANCE_ACTOR = 12.0 -CLASH_OVERLAP_TOLERANCE = 1.5 -CYS_SG_IDX = 5 - - -def get_violation_loss(pdb_path=None, atom14_atom_exists=None, residue_index=None, residx_atom14_to_atom37=None, - atom14_positions=None, aatype=None): - """calculate violations loss for a given pdb or pdb info - Args: - pdb_path: absolute path of pdb - atom14_atom_exists: weather atom exists in atom14 order from residue constants (ndarray or Tensor in float32) - residue_index: residue index from pdb (ndarray or Tensor in float32) - residx_atom14_to_atom37:map atom14 residue_index to atom37 (ndarray or Tensor in int32) - atom14_positions:atom positions in atom14 order (ndarray or Tensor in float32) - aatype:amino acid type (ndarray or Tensor in int32) - - Returns: - pdb's violations loss - """ - if pdb_path: - features = get_pdb_info(pdb_path) - - atom14_atom_exists = Tensor(features.get("atom14_gt_exists")).astype(ms.float32) - residue_index = Tensor(features.get("residue_index")).astype(ms.float32) - residx_atom14_to_atom37 = Tensor(features.get("residx_atom14_to_atom37")).astype(ms.int32) - atom14_positions = Tensor(features.get("atom14_gt_positions")).astype(ms.float32) - aatype = Tensor(features.get("aatype")).astype(ms.int32) - else: - atom14_atom_exists = Tensor(atom14_atom_exists).astype(ms.float32) \ - if isinstance(atom14_atom_exists, np.ndarray) else atom14_atom_exists - residue_index = Tensor(residue_index).astype(ms.float32) \ - if isinstance(residue_index, np.ndarray) else residue_index - residx_atom14_to_atom37 = Tensor(residx_atom14_to_atom37).astype(ms.int32) \ - if isinstance(residx_atom14_to_atom37, np.ndarray) else residx_atom14_to_atom37 - atom14_positions = Tensor(atom14_positions).astype(ms.float32) \ - if isinstance(atom14_positions, np.ndarray) else atom14_positions - aatype = Tensor(aatype).astype(ms.int32) if isinstance(aatype, np.ndarray) else aatype - - lower_bound_t = Tensor(LOWER_BOUND, ms.float32) - upper_bound_t = Tensor(UPPER_BOUND, ms.float32) - atom_type_radius_t = Tensor(ATOMTYPE_RADIUS, ms.float32) - c_one_hot_t = Tensor(C_ONE_HOT, ms.int32) - n_one_hot_t = Tensor(N_ONE_HOT, ms.int32) - dists_mask_i_t = Tensor(DISTS_MASK_I, ms.int32) - cys_sg_idx_t = Tensor(CYS_SG_IDX, ms.int32) - - (bonds_c_n_loss_mean, angles_ca_c_n_loss_mean, angles_c_n_ca_loss_mean, _, _, _, clashes_per_atom_loss_sum, - _, per_atom_loss_sum, _, total_per_residue_violations_mask) = \ - find_structural_violations(atom14_atom_exists, residue_index, aatype, residx_atom14_to_atom37, - atom14_positions, VIOLATION_TOLERANCE_ACTOR, - CLASH_OVERLAP_TOLERANCE, lower_bound_t, upper_bound_t, atom_type_radius_t, - c_one_hot_t, n_one_hot_t, dists_mask_i_t, cys_sg_idx_t) - num_atoms = P.ReduceSum()(atom14_atom_exists.astype(ms.float32)) - structure_violation_loss = bonds_c_n_loss_mean + angles_ca_c_n_loss_mean + angles_c_n_ca_loss_mean +\ - P.ReduceSum()(clashes_per_atom_loss_sum + per_atom_loss_sum) / (1e-6 + num_atoms) - - return structure_violation_loss, total_per_residue_violations_mask diff --git a/MindSPONGE/setup.py b/MindSPONGE/setup.py index b927bc4e299901dcb26960601b8b2379872034e6..a38d925d97c7840d2a09c2131f461477cb2c133f 100644 --- a/MindSPONGE/setup.py +++ b/MindSPONGE/setup.py @@ -25,7 +25,7 @@ cur_dir = os.path.dirname(os.path.realpath(__file__)) pkg_dir = os.path.join(cur_dir, 'build') package_name = os.getenv('SPONGE_PACKAGE_NAME').replace("\n", "") package_data = { - '': ["*.txt", "libs/*.so", "bin/*"] + '': ["*.txt", "libs/*.so", "bin/*", "*.mol2", "*.frcmod", "*.dat", "*.itp", "*.yaml"] } def read_version():