|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectmeshi.energy.AbstractEnergy
meshi.energy.CooperativeEnergyTerm
meshi.energy.solvate.SolvateEnergy
public final class SolvateEnergy
The implementation of the cooperative solvation term for proteins as described in Kalisman & Keasar (2008). Since the cooperative solvation is described in the above paper, we bring here only the implementaion details. Especially regarding the calculation of the derivatives, which was too lengthy for the paper. The class allows to give a different weight to the solvation energies of certain atom types in the final summation described in Eq. 5. These atom types are side-chain polars, side-chain carbons, and backbone polars. The class also include a regular hydrogen bond term. The functional form is therefore: Esolv = weightSCPolarSolvate*Eside_chain_polars + weightSCCarbonSolvate*Eside_chain_carbons + weightBBPolarSolvate*Ebackbone_polars + weightHB*Ehb Where Ehb is the negative of the HBC summation over all atoms. The weights are defined in the "Creator" class, and passed to the constructor as parameters. General remarks: ---------------- 1) This term is derivable twice (because the splines are derivable twice). 2) This term is using hydrogen bond description that is dependent on two angles in the bond. This decription follows that of McDonald and Thornton (1994) and Dahiyat et al. (1996). The only place where the hydrogen bond list is declared explicitly is in line 204. This means that any hydrogen bond implementation that extends the "AbstractHydrogenBondList" template can be used, by correcting line 204. 3) We calculate the regular hydrogen bond energy term (Ehb) together with the solvation terms themselves, since the hydrogen bonds calculation is a by-product of the first step in the solvation evaluation, and is thus for free. 4) Disulfide bonds are treated as "hydrogen bonds" between the SG's of two cystines. 5) The SD sulfor of methionine is treated as a hydrophobic carbon. 6) See the remarks in the "Creators" classes for a quick start on how to create a working instance of the term. The energy evaluation: ---------------------- The energy value and derivatives is calculated in 3 steps: 1) A first pass over the non-bonded list. Each Distance instance in the non-bonded-list, is used to update the CNC's and HBC's of its atom pairs (Eqs. 1 and 2, respectively). The partial derivatives of the CNC's and HBC's with respect to the distance atoms are alsoclaculated. Since some of this values will be needed also in step 3, we save them in an instance of "SolvateDistanceAttribute" that is attached as an "Attribute" to the Distance instance. 2) A pass on the atom list. Once we have the CNC and HBC of every atom in the protein, we can proceed to calculate the solvation energy associated with every atom. In this implementation we combined the EI(CNC,HBC) evaluation (Eq. 3) of every atom and the -log(spline(EI)) evaluation (Eq. 4) into a single step by using a 2D spline, i.e. spline2D(CNC,HBC). The 2D spline is, of course, atom type specific. The derivatives of each atom solvate energy value with respect to the HBC and CNC are also calculated. 3) A second pass over the non-bonded list. Equiped with the The derivatives of the atom energies (with respect to the CNC's and HBC's) from step 2, we can now calculate the energy derivative with respect to the atomic coordinates. In this step we simply make sure that every term that arises from the derivative chain rule is accounted for.
| Nested Class Summary | |
|---|---|
private static class |
SolvateEnergy.SuperType
Setting the general type for each atom in the atom list: (0) Carbon (1) Backbone polar, (2) Sidechain polar (3) Hydrogens This is done to save time on type checking. |
| Nested classes/interfaces inherited from class meshi.energy.AbstractEnergy |
|---|
AbstractEnergy.UpdateableList |
| Field Summary | |
|---|---|
private static Atom |
atom
|
private static AtomType |
atomType
|
private static int |
atomTypeNumber
|
private double[] |
CNC
These are fields for temporary array results that are needed in the evaluation stage. |
private double[] |
dSplineDCNC
|
private double[] |
dSplineDHBC
|
private double[] |
forceX
|
private double[] |
forceY
|
private double[] |
forceZ
|
private double[] |
HBC
|
private double[] |
HBCforHBenergy
|
private int[] |
lut
The look-up table (lut) converts the atom internal number (field of Atom), which is the index of the array, to its index in the atom list given to the constructor. |
MolecularSystem |
molecularSystem
|
int |
molecularSystemSize
|
private SolvateParametersList |
parameters
The instance of the parameter list object. |
static double |
SALT_BRIDGE_STRENGTH_ARG_NH
|
static double |
SALT_BRIDGE_STRENGTH_ASP_OD
|
static double |
SALT_BRIDGE_STRENGTH_GENERAL
The following parameter allow for a different weighting of SALT BRIDGES compared with regular HYDROGEN BONDS for the Ehb energy, that is also claculated. |
static double |
SALT_BRIDGE_STRENGTH_GLU_OE
|
static double |
SALT_BRIDGE_STRENGTH_LYS_NZ
|
static double |
SALT_BRIDGE_STRENGTH_TRN
|
static double |
SALT_BRIDGE_STRENGTH_TRO
|
private AbstractHydrogenBondList |
solvateHB
The only hydrogen bond list class in the term. |
private Spline2D[] |
splinesBB
The 2D spline array (i.e. |
private Spline1D[] |
splinesSCCarbon
The 1D spline array (i.e. |
private Spline2D[] |
splinesSCPolar
The 2D spline array (i.e. |
private SolvateEnergy.SuperType[] |
superType
|
private double |
weightBBPolarSolvate
|
private double |
weightHB
|
private double |
weightSCCarbonSolvate
|
private double |
weightSCPolarSolvate
|
| Fields inherited from class meshi.energy.CooperativeEnergyTerm |
|---|
atomList, coordinates, dm, DX, relativeDiffTolerance, verySmall, XYZ |
| Fields inherited from class meshi.energy.AbstractEnergy |
|---|
comment, filter, INFINITY, NaN, on, updateableResources, weight |
| Constructor Summary | |
|---|---|
SolvateEnergy()
|
|
SolvateEnergy(AtomList atomList,
DistanceMatrix dm,
SolvateParametersList parameters,
double weightSCPolarSolvate,
double weightBBPolarSolvate,
double weightSCCarbonSolvate,
double weightHB)
See the comment at the top of the class for descriptions on the weights. |
|
SolvateEnergy(AtomList atomList,
DistanceMatrix dm,
SolvateParametersList parameters,
double weightSCPolarSolvate,
double weightBBPolarSolvate,
double weightSCCarbonSolvate,
double weightHB,
java.lang.String comment)
|
|
| Method Summary | |
|---|---|
void |
assignForcesToAtoms()
|
double |
calculatingTheSolvationEnergiesOfEachAtom(boolean updateAtoms,
double W_SCPolarSolvate,
double W_SCCarbonSolvate,
double W_BBPolarSolvate)
|
double |
evaluate()
Calculates Esolv with the weights given in the constructor. |
double |
evaluate(boolean updateAtoms,
double W_SCPolarSolvate,
double W_SCCarbonSolvate,
double W_BBPolarSolvate)
Calculates Esolv with the weights you give as parameters! |
void |
evaluateAtoms()
Evaluates the energy term and devides the energy between the atoms. |
void |
firstPassOverTheNonBondedList()
|
private void |
resetAuxilaryArrays()
|
void |
secondPassOverTheNonBondedList()
|
| Methods inherited from class meshi.energy.CooperativeEnergyTerm |
|---|
test |
| Methods inherited from class meshi.energy.AbstractEnergy |
|---|
addAttribute, comment, getAttribute, handleMissingParameters, isOn, off, on, toArray, toArray, toArray, toArray, toString, update |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final double SALT_BRIDGE_STRENGTH_ASP_OD
public static final double SALT_BRIDGE_STRENGTH_GLU_OE
public static final double SALT_BRIDGE_STRENGTH_LYS_NZ
public static final double SALT_BRIDGE_STRENGTH_ARG_NH
public static final double SALT_BRIDGE_STRENGTH_TRO
public static final double SALT_BRIDGE_STRENGTH_TRN
public static final double SALT_BRIDGE_STRENGTH_GENERAL
private double[] CNC
private double[] HBC
private double[] HBCforHBenergy
private double[] dSplineDCNC
private double[] dSplineDHBC
private double[] forceX
private double[] forceY
private double[] forceZ
private SolvateParametersList parameters
private int[] lut
private SolvateEnergy.SuperType[] superType
private Spline2D[] splinesSCPolar
private Spline2D[] splinesBB
private Spline1D[] splinesSCCarbon
private AbstractHydrogenBondList solvateHB
private double weightSCPolarSolvate
private double weightBBPolarSolvate
private double weightSCCarbonSolvate
private double weightHB
public final MolecularSystem molecularSystem
public final int molecularSystemSize
private static Atom atom
private static int atomTypeNumber
private static AtomType atomType
| Constructor Detail |
|---|
public SolvateEnergy()
public SolvateEnergy(AtomList atomList,
DistanceMatrix dm,
SolvateParametersList parameters,
double weightSCPolarSolvate,
double weightBBPolarSolvate,
double weightSCCarbonSolvate,
double weightHB)
public SolvateEnergy(AtomList atomList,
DistanceMatrix dm,
SolvateParametersList parameters,
double weightSCPolarSolvate,
double weightBBPolarSolvate,
double weightSCCarbonSolvate,
double weightHB,
java.lang.String comment)
| Method Detail |
|---|
public void evaluateAtoms()
AbstractEnergy
evaluateAtoms in class AbstractEnergypublic double evaluate()
evaluate in class AbstractEnergy
public final double evaluate(boolean updateAtoms,
double W_SCPolarSolvate,
double W_SCCarbonSolvate,
double W_BBPolarSolvate)
private void resetAuxilaryArrays()
public void firstPassOverTheNonBondedList()
public double calculatingTheSolvationEnergiesOfEachAtom(boolean updateAtoms,
double W_SCPolarSolvate,
double W_SCCarbonSolvate,
double W_BBPolarSolvate)
public void secondPassOverTheNonBondedList()
public void assignForcesToAtoms()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||