Source code for conkit.misc.distances

# BSD 3-Clause License
#
# Copyright (c) 2016-19, University of Liverpool
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
#   list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
#   this list of conditions and the following disclaimer in the documentation
#   and/or other materials provided with the distribution.
#
# * Neither the name of the copyright holder nor the names of its
#   contributors may be used to endorse or promote products derived from
#   this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Amino acid specific distance calculator"""

__author__ = "Felix Simkovic"
__date__ = "13 Aug 2018"
__version__ = "1.0"


[docs]class DynamicDistances(object): """Dynamic distance calculator Description ----------- The data stored in this class corresponds to Supplementary Table 3 in [1]_. Examples -------- >>> DynamicDistances.cutoff('A', 'Y') 9.121 >>> DynamicDistances.percentile('A', 'Y') 0.443 References ---------- .. [1] Kamisetty et al. (2013). Assessing the utility of coevolution based residue-residue contact predictions in a sequence and structure rich era. PNAS 110(39), 15674-9. """ __slots__ = () _CB_CB_CUTOFF = { "A": { "A": 5.381, "C": 6.057, "E": 7.124, "D": 6.388, "G": 5.201, "F": 8.162, "I": 6.587, "H": 7.591, "K": 8.327, "M": 7.605, "L": 6.707, "N": 6.766, "Q": 7.583, "P": 6.412, "S": 5.829, "R": 9.365, "T": 5.982, "W": 9.252, "V": 5.854, "Y": 9.121, }, "C": { "A": 6.057, "C": 6.426, "E": 7.449, "D": 6.985, "G": 5.777, "F": 9.026, "I": 7.476, "H": 8.422, "K": 8.494, "M": 8.265, "L": 7.685, "N": 7.205, "Q": 7.962, "P": 7.157, "S": 6.59, "R": 9.46, "T": 6.801, "W": 9.752, "V": 6.941, "Y": 9.362, }, "D": { "A": 6.388, "C": 6.985, "E": 8.945, "D": 8.001, "G": 6.135, "F": 9.111, "I": 7.472, "H": 8.634, "K": 9.306, "M": 8.401, "L": 7.696, "N": 7.672, "Q": 8.601, "P": 7.321, "S": 6.76, "R": 10.123, "T": 6.971, "W": 9.867, "V": 6.972, "Y": 9.979, }, "E": { "A": 7.124, "C": 7.449, "E": 9.863, "D": 8.945, "G": 7.036, "F": 9.403, "I": 7.949, "H": 9.454, "K": 9.842, "M": 8.87, "L": 7.696, "N": 7.672, "Q": 8.601, "P": 7.321, "S": 6.76, "R": 10.123, "T": 6.971, "W": 9.867, "V": 6.972, "Y": 9.979, }, "F": { "A": 8.162, "C": 9.026, "E": 9.403, "D": 9.111, "G": 7.966, "F": 10.903, "I": 9.602, "H": 9.602, "K": 9.344, "M": 10.253, "L": 9.9, "N": 9.168, "Q": 9.506, "P": 8.895, "S": 8.694, "R": 10.577, "T": 9.03, "W": 11.758, "V": 9.057, "Y": 10.999, }, "G": { "A": 5.201, "C": 5.777, "E": 7.036, "D": 6.135, "G": 4.467, "F": 7.966, "I": 6.413, "H": 7.472, "K": 8.216, "M": 7.383, "L": 6.554, "N": 6.321, "Q": 7.297, "P": 6.14, "S": 5.51, "R": 9.166, "T": 5.619, "W": 8.966, "V": 5.671, "Y": 9.098, }, "H": { "A": 7.591, "C": 8.422, "E": 9.454, "D": 8.634, "G": 7.472, "F": 9.602, "I": 8.523, "H": 10.606, "K": 9.582, "M": 9.396, "L": 8.676, "N": 8.672, "Q": 9.391, "P": 8.537, "S": 8.051, "R": 10.879, "T": 8.221, "W": 10.661, "V": 8.179, "Y": 10.843, }, "I": { "A": 6.587, "C": 7.476, "E": 7.949, "D": 7.472, "G": 6.413, "F": 9.602, "I": 8.096, "H": 8.523, "K": 8.329, "M": 8.874, "L": 8.342, "N": 7.631, "Q": 8.302, "P": 7.554, "S": 7.142, "R": 9.746, "T": 7.442, "W": 10.47, "V": 7.441, "Y": 9.719, }, "K": { "A": 8.327, "C": 8.494, "E": 9.842, "D": 9.306, "G": 8.216, "F": 9.344, "I": 8.329, "H": 9.582, "K": 10.662, "M": 9.096, "L": 8.479, "N": 9.319, "Q": 9.667, "P": 9.198, "S": 8.792, "R": 11.322, "T": 8.715, "W": 10.136, "V": 8.077, "Y": 10.627, }, "L": { "A": 6.707, "C": 7.685, "E": 8.077, "D": 7.696, "G": 6.554, "F": 9.9, "I": 8.342, "H": 8.676, "K": 8.479, "M": 9.122, "L": 8.522, "N": 7.889, "Q": 8.48, "P": 7.751, "S": 7.394, "R": 9.852, "T": 7.642, "W": 10.707, "V": 7.633, "Y": 9.889, }, "M": { "A": 7.605, "C": 8.265, "E": 8.87, "D": 8.401, "G": 7.383, "F": 10.253, "I": 8.874, "H": 9.396, "K": 9.096, "M": 9.53, "L": 9.122, "N": 8.55, "Q": 9.102, "P": 8.247, "S": 8.01, "R": 10.25, "T": 8.397, "W": 11.11, "V": 8.335, "Y": 10.4, }, "N": { "A": 6.766, "C": 7.205, "E": 8.485, "D": 7.672, "G": 6.321, "F": 9.168, "I": 7.631, "H": 8.672, "K": 9.319, "M": 8.55, "L": 7.889, "N": 7.682, "Q": 8.502, "P": 7.497, "S": 7.081, "R": 10.135, "T": 7.159, "W": 9.976, "V": 7.219, "Y": 10.039, }, "P": { "A": 6.412, "C": 7.157, "E": 7.938, "D": 7.321, "G": 6.14, "F": 8.895, "I": 7.554, "H": 8.537, "K": 9.198, "M": 8.247, "L": 7.751, "N": 7.497, "Q": 8.308, "P": 7.288, "S": 6.937, "R": 10.266, "T": 7.062, "W": 9.719, "V": 7.063, "Y": 9.965, }, "Q": { "A": 7.583, "C": 7.962, "E": 9.328, "D": 8.601, "G": 7.297, "F": 9.506, "I": 8.302, "H": 9.391, "K": 9.667, "M": 9.102, "L": 8.48, "N": 8.502, "Q": 9.074, "P": 8.308, "S": 7.807, "R": 10.61, "T": 8.055, "W": 10.429, "V": 8.008, "Y": 10.534, }, "R": { "A": 9.365, "C": 9.46, "E": 10.713, "D": 10.123, "G": 9.166, "F": 10.577, "I": 9.746, "H": 10.879, "K": 11.322, "M": 10.25, "L": 9.852, "N": 10.135, "Q": 10.61, "P": 10.266, "S": 9.753, "R": 12.05, "T": 9.764, "W": 11.355, "V": 9.513, "Y": 11.615, }, "S": { "A": 5.829, "C": 6.59, "E": 7.483, "D": 6.76, "G": 5.51, "F": 8.694, "I": 7.142, "H": 8.051, "K": 8.792, "M": 8.01, "L": 7.394, "N": 7.081, "Q": 7.807, "P": 6.937, "S": 6.19, "R": 9.753, "T": 6.45, "W": 9.77, "V": 6.567, "Y": 9.594, }, "T": { "A": 5.982, "C": 6.801, "E": 7.628, "D": 6.971, "G": 5.619, "F": 9.03, "I": 7.442, "H": 8.221, "K": 8.715, "M": 8.397, "L": 7.642, "N": 7.159, "Q": 8.055, "P": 7.062, "S": 6.45, "R": 9.764, "T": 6.676, "W": 9.98, "V": 6.791, "Y": 9.813, }, "V": { "A": 5.854, "C": 6.941, "E": 7.404, "D": 6.972, "G": 5.671, "F": 9.057, "I": 7.441, "H": 8.179, "K": 8.077, "M": 8.335, "L": 7.633, "N": 7.219, "Q": 8.008, "P": 7.063, "S": 6.567, "R": 9.513, "T": 6.791, "W": 10.021, "V": 6.759, "Y": 9.442, }, "W": { "A": 9.252, "C": 9.752, "E": 10.303, "D": 9.867, "G": 8.966, "F": 11.758, "I": 10.47, "H": 10.661, "K": 10.136, "M": 11.11, "L": 10.707, "N": 9.976, "Q": 10.429, "P": 9.719, "S": 9.77, "R": 11.355, "T": 9.98, "W": 12.806, "V": 10.021, "Y": 11.807, }, "Y": { "A": 9.121, "C": 9.362, "E": 10.544, "D": 9.979, "G": 9.098, "F": 10.999, "I": 9.719, "H": 10.843, "K": 10.627, "M": 10.4, "L": 9.889, "N": 10.039, "Q": 10.534, "P": 9.965, "S": 9.594, "R": 11.615, "T": 9.813, "W": 11.807, "V": 9.442, "Y": 11.536, }, } _CB_CB_PERCENT = { "A": { "A": 0.262, "C": 0.394, "E": 0.34, "D": 0.289, "G": 0.269, "F": 0.26, "I": 0.214, "H": 0.38, "K": 0.55, "M": 0.394, "L": 0.25, "N": 0.349, "Q": 0.356, "P": 0.399, "S": 0.291, "R": 0.485, "T": 0.378, "W": 0.29, "V": 0.312, "Y": 0.443, }, "C": { "A": 0.394, "C": 0.178, "E": 0.538, "D": 0.299, "G": 0.129, "F": 0.286, "I": 0.295, "H": 0.203, "K": 0.521, "M": 0.439, "L": 0.206, "N": 0.24, "Q": 0.347, "P": 0.259, "S": 0.24, "R": 0.491, "T": 0.181, "W": 0.417, "V": 0.173, "Y": 0.585, }, "D": { "A": 0.289, "C": 0.299, "E": 0.354, "D": 0.392, "G": 0.193, "F": 0.351, "I": 0.341, "H": 0.325, "K": 0.343, "M": 0.361, "L": 0.348, "N": 0.337, "Q": 0.357, "P": 0.416, "S": 0.323, "R": 0.327, "T": 0.307, "W": 0.475, "V": 0.287, "Y": 0.676, }, "E": { "A": 0.34, "C": 0.538, "E": 0.389, "D": 0.354, "G": 0.249, "F": 0.512, "I": 0.453, "H": 0.443, "K": 0.434, "M": 0.511, "L": 0.475, "N": 0.423, "Q": 0.45, "P": 0.475, "S": 0.446, "R": 0.363, "T": 0.409, "W": 0.493, "V": 0.51, "Y": 0.469, }, "F": { "A": 0.26, "C": 0.286, "E": 0.512, "D": 0.351, "G": 0.219, "F": 0.46, "I": 0.347, "H": 0.542, "K": 0.441, "M": 0.377, "L": 0.26, "N": 0.393, "Q": 0.451, "P": 0.425, "S": 0.394, "R": 0.738, "T": 0.264, "W": 0.447, "V": 0.246, "Y": 0.767, }, "G": { "A": 0.269, "C": 0.129, "E": 0.249, "D": 0.193, "G": 0.017, "F": 0.219, "I": 0.179, "H": 0.206, "K": 0.358, "M": 0.255, "L": 0.125, "N": 0.169, "Q": 0.216, "P": 0.245, "S": 0.153, "R": 0.334, "T": 0.12, "W": 0.239, "V": 0.107, "Y": 0.267, }, "H": { "A": 0.38, "C": 0.203, "E": 0.443, "D": 0.325, "G": 0.206, "F": 0.542, "I": 0.379, "H": 0.333, "K": 0.714, "M": 0.342, "L": 0.401, "N": 0.289, "Q": 0.401, "P": 0.457, "S": 0.435, "R": 0.595, "T": 0.417, "W": 0.458, "V": 0.383, "Y": 0.554, }, "I": { "A": 0.214, "C": 0.295, "E": 0.453, "D": 0.341, "G": 0.179, "F": 0.347, "I": 0.321, "H": 0.379, "K": 0.582, "M": 0.327, "L": 0.261, "N": 0.341, "Q": 0.406, "P": 0.336, "S": 0.342, "R": 0.557, "T": 0.259, "W": 0.397, "V": 0.242, "Y": 0.589, }, "K": { "A": 0.55, "C": 0.521, "E": 0.434, "D": 0.343, "G": 0.358, "F": 0.441, "I": 0.582, "H": 0.714, "K": 0.738, "M": 0.611, "L": 0.591, "N": 0.398, "Q": 0.521, "P": 0.55, "S": 0.445, "R": 0.648, "T": 0.464, "W": 0.47, "V": 0.634, "Y": 0.704, }, "L": { "A": 0.25, "C": 0.206, "E": 0.475, "D": 0.348, "G": 0.125, "F": 0.26, "I": 0.261, "H": 0.401, "K": 0.591, "M": 0.318, "L": 0.198, "N": 0.279, "Q": 0.411, "P": 0.317, "S": 0.287, "R": 0.578, "T": 0.19, "W": 0.331, "V": 0.179, "Y": 0.611, }, "M": { "A": 0.394, "C": 0.439, "E": 0.511, "D": 0.361, "G": 0.255, "F": 0.377, "I": 0.327, "H": 0.342, "K": 0.611, "M": 0.457, "L": 0.318, "N": 0.31, "Q": 0.498, "P": 0.388, "S": 0.369, "R": 0.641, "T": 0.292, "W": 0.397, "V": 0.295, "Y": 0.661, }, "N": { "A": 0.349, "C": 0.24, "E": 0.423, "D": 0.337, "G": 0.169, "F": 0.393, "I": 0.341, "H": 0.289, "K": 0.398, "M": 0.31, "L": 0.279, "N": 0.249, "Q": 0.373, "P": 0.334, "S": 0.305, "R": 0.372, "T": 0.262, "W": 0.458, "V": 0.232, "Y": 0.586, }, "P": { "A": 0.399, "C": 0.259, "E": 0.475, "D": 0.416, "G": 0.245, "F": 0.425, "I": 0.336, "H": 0.457, "K": 0.55, "M": 0.388, "L": 0.317, "N": 0.334, "Q": 0.41, "P": 0.339, "S": 0.321, "R": 0.506, "T": 0.32, "W": 0.462, "V": 0.298, "Y": 0.506, }, "Q": { "A": 0.356, "C": 0.347, "E": 0.45, "D": 0.357, "G": 0.216, "F": 0.451, "I": 0.406, "H": 0.401, "K": 0.521, "M": 0.498, "L": 0.411, "N": 0.373, "Q": 0.436, "P": 0.41, "S": 0.408, "R": 0.535, "T": 0.378, "W": 0.49, "V": 0.359, "Y": 0.547, }, "R": { "A": 0.485, "C": 0.491, "E": 0.363, "D": 0.327, "G": 0.334, "F": 0.738, "I": 0.557, "H": 0.595, "K": 0.648, "M": 0.641, "L": 0.578, "N": 0.372, "Q": 0.535, "P": 0.506, "S": 0.483, "R": 0.704, "T": 0.477, "W": 0.889, "V": 0.514, "Y": 0.822, }, "S": { "A": 0.291, "C": 0.24, "E": 0.446, "D": 0.323, "G": 0.153, "F": 0.394, "I": 0.342, "H": 0.435, "K": 0.445, "M": 0.369, "L": 0.287, "N": 0.305, "Q": 0.408, "P": 0.321, "S": 0.292, "R": 0.483, "T": 0.214, "W": 0.497, "V": 0.205, "Y": 0.467, }, "T": { "A": 0.378, "C": 0.181, "E": 0.409, "D": 0.307, "G": 0.12, "F": 0.264, "I": 0.259, "H": 0.417, "K": 0.464, "M": 0.292, "L": 0.19, "N": 0.262, "Q": 0.378, "P": 0.32, "S": 0.214, "R": 0.477, "T": 0.188, "W": 0.315, "V": 0.138, "Y": 0.43, }, "V": { "A": 0.312, "C": 0.173, "E": 0.51, "D": 0.287, "G": 0.107, "F": 0.246, "I": 0.242, "H": 0.383, "K": 0.634, "M": 0.295, "L": 0.179, "N": 0.232, "Q": 0.359, "P": 0.298, "S": 0.205, "R": 0.514, "T": 0.138, "W": 0.271, "V": 0.145, "Y": 0.535, }, "W": { "A": 0.29, "C": 0.417, "E": 0.493, "D": 0.475, "G": 0.239, "F": 0.447, "I": 0.397, "H": 0.458, "K": 0.47, "M": 0.397, "L": 0.331, "N": 0.458, "Q": 0.49, "P": 0.462, "S": 0.497, "R": 0.889, "T": 0.315, "W": 0.473, "V": 0.271, "Y": 0.684, }, "Y": { "A": 0.443, "C": 0.585, "E": 0.469, "D": 0.676, "G": 0.267, "F": 0.767, "I": 0.589, "H": 0.554, "K": 0.704, "M": 0.661, "L": 0.611, "N": 0.586, "Q": 0.547, "P": 0.506, "S": 0.467, "R": 0.822, "T": 0.43, "W": 0.684, "V": 0.535, "Y": 0.855, }, }
[docs] @classmethod def cutoff(cls, x, y): """Return the amino acid pair-specific cB-cB cutoff Parameters ---------- x : str Single-letter amino acid y : str Single-letter amino acid """ return cls._CB_CB_CUTOFF[x][y]
[docs] @classmethod def percentile(cls, x, y): """Return 95-97 percentile data Parameters ---------- x : str Single-letter amino acid y : str Single-letter amino acid """ return cls._CB_CB_PERCENT[x][y]