IMP logo
IMP Reference Guide  2.8.0
The Integrative Modeling Platform
estimates.h
Go to the documentation of this file.
1 /**
2  * \file IMP/atom/estimates.h
3  * \brief Estimates of various physical quantities.
4  *
5  * Copyright 2007-2017 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPATOM_ESTIMATES_H
9 #define IMPATOM_ESTIMATES_H
10 
11 #include <IMP/atom/atom_config.h>
12 #include "Residue.h"
13 #include <IMP/base_types.h>
14 
15 IMPATOM_BEGIN_NAMESPACE
16 /** @name Estimator Functions
17 
18  These functions allow you to estimate physical quantities
19  relating to biomolecules.
20 */
21 //!@{
22 
23 /*! Several protein density value references that have been proposed
24  * in the literature.
25  * - ALBER et al. (structure 2005) Estimated value 0.625 (1/1.60) Da/A3
26  * - HARPAZ et al. (1994) Computed value 0.826446=1/1.21 Da/A3
27  * - ANDERSSON and Hovmuller (1998) Computed value 1.22 g/cm3 ~ 0.7347 Da/A3
28  * - TSAI et al. (1999) Computed value 1.40 g/cm3 ~ 0.84309 Da/A3
29  * - QUILLIN and Matthews (2000) Computed value 1.43 g/cm3 ~ 0.86116 Da/A3
30  * - SQUIRE and Himmel (1979),
31  * Gekko and Noguchi (1979) Experimental value 1.37 g/cm3 ~ 0.82503 Da/A3
32  */
34  ALBER,
35  HARPAZ,
36  ANDERSSON,
37  TSAI,
38  QUILLIN,
39  SQUIRE
40 };
41 
42 //! returns the protein density value (in Da/A^3)
43 //! associated with a given reference
44 IMPATOMEXPORT double get_protein_density_from_reference(
45  ProteinDensityReference densityReference);
46 
47 //! Estimate the volume of a protein from its mass
48 /**
49  * \param[in] m the mass for which we want to output the corresponding volume
50  * \param[in] ref the protein density reference used in the computation.
51  * As a default ref is the estimate published in Alber et. al, Structure 2005.
52 */
53 IMPATOMEXPORT double get_volume_from_mass(double m,
54  ProteinDensityReference ref = ALBER);
55 
56 //! Estimate the mass of a protein from its volume
57 /**
58  * \param[in] v the volume for which we want to output the corresponding mass
59  * \param[in] ref the protein density reference used in the computation.
60  * As a default ref is the estimate published in Alber et. al, Structure 2005.
61 */
62 IMPATOMEXPORT double get_mass_from_volume(double v,
63  ProteinDensityReference ref = ALBER);
64 
65 //! Estimate the mass of a protein from the number of amino acids
66 /** We use an estimate of 110 Daltons per residue, following Chimera.
67 
68  The mass is in Daltons.
69  */
70 IMPATOMEXPORT double get_mass_from_number_of_residues(unsigned int num_aa);
71 
72 //! Return an estimate for the volume of a given residue
73 /** The volume estimates are taken from
74  Pontius J, Richelle J, Wodak SJ.,
75  \external{https://www.ncbi.nlm.nih.gov/pubmed/8950272,
76  Deviations from standard atomic volumes as a quality measure for
77  protein crystal structures}, J Mol Biol. 1996 Nov 22;264(1):121-36.
78 
79 
80  \throw ValueException if a non-standard residue type is passed
81  */
82 IMPATOMEXPORT double get_volume_from_residue_type(ResidueType rt);
83 
84 //!@}
85 
86 /** Compute the concentration in molarity from the passed values*/
87 inline double get_molarity(double n, double volume) {
88  double v = volume;
89  // n*10^27/(v *6.02e23)
90  return n * 1e4 / (v * 6.02);
91 }
92 
93 /** Compute the concentration in molarity from the passed values*/
94 inline double get_kd(double na, double nb, double nab, double volume) {
95  return get_molarity(na, volume) * get_molarity(nb, volume) /
96  get_molarity(nab, volume);
97 }
98 
99 /** Return the prediction diffusion coefficient in Angstrom squared per
100  femtosecond given a radius in angstrom.
101  See
102  \external{http://en.wikipedia.org/wiki/Einstein_relation_(kinetic_theory),
103  wikipedia} for a reference and
104  \external{http://en.wikipedia.org/wiki/Viscosity,Wikipedia on Viscosity}
105  for the values of the viscosity of water used.*/
106 IMPATOMEXPORT double get_einstein_diffusion_coefficient(double r);
107 
108 /** Return the prediction diffusion coefficient in radians squared per
109  femtosecond given a radius in angstrom.*/
110 IMPATOMEXPORT double get_einstein_rotational_diffusion_coefficient(double r);
111 
112 /** Return the standard deviation for the Brownian step in Angstroms given the
113  diffusion coefficient D in A^2/fs and the time step t in fs.*/
114 IMPATOMEXPORT double get_diffusion_length(double D, double t);
115 
116 /** Return the scale for diffusion in Angstroms given the specified force,
117  the diffusion coefficient D and the time step t.
118 
119  @param D diffusion coefficient in Angstrom^2/femtosecond
120  @param force applied force in kcal/mol/A
121  @param t time step in femtoseconds
122  @param temp temperature in Kelvin
123 */
124 IMPATOMEXPORT double get_diffusion_length(double D, double force, double t,
125  double temp = 273);
126 
127 /** Get the standard deviation of the diffusion angle change in radians given
128  the rigid body diffusion coefficient in A^2/fs and the time step dtfs in fs.*/
129 IMPATOMEXPORT double get_diffusion_angle(double D, double dtfs);
130 
131 /** Estimate the diffusion coefficient of a particle in A^2/fs from a list of
132  displacements each taken after the given time step dt.
133 
134  @param displacements displacement vectors in Angstroms
135  @param dt time step in femtoseconds
136 */
137 IMPATOMEXPORT double get_diffusion_coefficient(
138  const algebra::Vector3Ds &displacements, double dt);
139 
140 /** Estimate the rotational diffusion coefficient of a particle in Rad^2/fs
141  from a list of rotational displacements each taken after the given time
142  step dt [fs].
143 */
144 IMPATOMEXPORT double get_rotational_diffusion_coefficient(
145  const algebra::Rotation3Ds &displacements, double dt);
146 
147 /**\name Energy conversions
148 
149  Convert energy from kcal/mol to femtojoules
150  @{
151 */
152 IMPATOMEXPORT double get_energy_in_femto_joules(double energy_in_kcal_per_mol);
153 
154 //! Convert force from kcal/mol/A to femtonewtons
155 IMPATOMEXPORT double get_force_in_femto_newtons(
156  double force_in_kcal_per_mol_per_angstrom);
157 
158 //! Convert spring constant from kcal/mol/A^2 to femtonewton/A
160  double k_in_kcal_per_mol_per_angstrom_square);
161 
162 
163 
164 IMPATOM_END_NAMESPACE
165 
166 #endif /* IMPATOM_ESTIMATES_H */
double get_volume_from_residue_type(ResidueType rt)
Return an estimate for the volume of a given residue.
Basic types used by IMP.
double get_einstein_rotational_diffusion_coefficient(double r)
double get_protein_density_from_reference(ProteinDensityReference densityReference)
double get_spring_constant_in_femto_newtons_per_angstrom(double k_in_kcal_per_mol_per_angstrom_square)
Convert spring constant from kcal/mol/A^2 to femtonewton/A.
double get_mass_from_number_of_residues(unsigned int num_aa)
Estimate the mass of a protein from the number of amino acids.
double get_mass_from_volume(double v, ProteinDensityReference ref=ALBER)
Estimate the mass of a protein from its volume.
ProteinDensityReference
Definition: estimates.h:33
double get_kd(double na, double nb, double nab, double volume)
Definition: estimates.h:94
double get_diffusion_angle(double D, double dtfs)
double get_rotational_diffusion_coefficient(const algebra::Rotation3Ds &displacements, double dt)
double get_volume_from_mass(double m, ProteinDensityReference ref=ALBER)
Estimate the volume of a protein from its mass.
A decorator for Residues.
double get_molarity(double n, double volume)
Definition: estimates.h:87
double get_force_in_femto_newtons(double force_in_kcal_per_mol_per_angstrom)
Convert force from kcal/mol/A to femtonewtons.
double get_diffusion_length(double D, double force, double t, double temp=273)
double get_diffusion_coefficient(const algebra::Vector3Ds &displacements, double dt)
double get_einstein_diffusion_coefficient(double r)