/usr/share/pdb2pqr/pdb2pka/pKa_base.py is in pdb2pqr 2.1.1+dfsg-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | #
# $Id$
#
# Helper classes for all the pKa stuff. I need to reorganise these into something
# more logic at some point
#
#
class pKa:
"""
The main pKa object
"""
def __init__(self, residue, group, amb):
"""
Initialize the pKa object
Parameters
residue: The residue object (residue)
group: The pKaGroup object associated with the residue
(pKaGroup)
amb: The associated hydrogenAmbiguity object
(hydrogenAmbiguity)
"""
self.residue = residue
self.pKaGroup = group
self.amb = amb
self.desolvation = {}
self.background = {}
self.interactionEnergies = {}
self.intrinsic_pKa = {}
self.simulated_intrinsic_pKa = None
self.pKa = None
#
# Unique identifier
#
self.uniqueid='%s_%s_%d_TITTYPE:%s' %(residue.name,residue.chainID,residue.resSeq,group.name)
return
def __repr__(self):
return self.uniqueid
#
# -------------------------------------------
#
class pKaGroup:
#
# pKaGroup holds the defintion on a single titratable entity. In most cases we will
# only have a single titration taking place in one group, but in some cases
# we might have to have several transitions in one group (e.g. His - -> His 0 -> His +)
#
# The name, resname and type should probably be in pKaTitrations, but for now I'll leave
# them here to get something working before we do complicated things...
#
def __init__(self, name, resname, type, DefTitrations):
#
# Initialize the pKaGroup object
#
# Parameters
# name: The name of the group (string)
# resname: The residue name (string)
# type: The type of group, acid or base (string)
# DefTitrations: A list of DefTitration objects (list)
#
#
self.name = name
self.resname = resname
self.type = type
self.DefTitrations = DefTitrations
return
#
# ------------------------
#
def __str__(self):
"""
Print the pKa group object for debugging purposes
Returns
text: The pKaGroup information (string)
"""
text = "Group name: %s\n" % self.name
text += "Residue name: %s\n" % self.resname
text += "Group type: %s\n" % self.type
text += "Transitions:\n"
for tran in self.DefTitrations:
text += str(tran)
return text
#
# -----------------------------------------------
#
class DefTitration:
#
# pKa_Titration holds all the info on a specific titration
# We define a titration as a single group that has a number of
# startstates and a number of endstates which is modelled by a
# single model pKa value
# A single group can have several transitions depending on the
# number of startstates and endstates
#
def __init__(self, startstates, endstates, modelpKa,name):
#
# Initialize the pKaTransition object
#
# Parameters
# startstates: A list of state numbers (list)
# endstates: A list of state numbers (list)
# modelpKa: The model pKa associated with this titration
# (float)
# transitions: A dictionary of the possible transitions for this group
# (dictionary)
# interactions: A dictionary of the interaction energies with all other states
# of all other titrations in the molecule. Only part of them
# will be calculated
#
self.residue = None
self.startstates = startstates
self.endstates = endstates
self.allstates=startstates+endstates
self.modelpKa = modelpKa
self.name = name
#
# Set transitions
#
self.transitions={}
count=0
for start_s in self.startstates:
for end_s in self.endstates:
count=count+1
self.transitions[count]={'start':start_s,'end':end_s}
#
# Interactions has to be set at a higher level
#
return
#
# ---------------------
#
def __str__(self):
"""
Print the pKa Transition object for debugging purposes
Returns
text: The pKaTransition information (string)
"""
text = "\tStartstates: %s\n" % self.startstates
text += "\tEndstates: %s\n" % self.endstates
text += "\tmodelpKa: %.1f\n" % self.modelpKa
text += "\tName: %s\n" % self.name
return text
|