Notes On Chevron Plots
From Foldeomics Wiki
Contents |
Equation Overview
Chevron plots are graphs of folding rate vs concentration of a denaturant. For 'simple' two state proteins the observed relaxation rate constant kobs can be closely fitted to the equation:
ln(kobs) = ln[exp(A + mf[denaturant]/RT) + exp(B + mu[denaturant]/RT)] (eq 1)
Numerical Curve Fitting
For the purposes of fitting this numerically we simplify the above equation by combining the mu|f/RT terms, fitting the curve, and post multiplying by RT for the reporting stage.
Numerical fitting is done using the 'R' statistics package. An 'R' batch script is run by the php web site.
Initial values are automatically estimated using the slopes of the outer parts of the Chevron 'V' as initial estimates. These initial estimates are required for the numerical least squares fit method used.
Example R Script
The following is an example of curve fitting a simple chevron plot using the 'R' statistical programming language.
set the raw chevron values as matched arrays of ln(k) and concentration values
- > lnK <- c(4.836,4.459,4.03,3.61,3.251,2.846,2.468,2.096,1.744,1.128,1.122,1.473,0.621,0.428,0.407,0.671,0.5,0.373,0.34,0.407,0.386,0.538,0.707,0.819,0.9,1.082,1.242,1.449,1.587,1.807,1.992,2.152,2.252)
- > conc <- c(0.53,0.65,0.73,0.85,0.94,1.05,1.16,1.25,1.35,1.53,1.53,1.43,1.68,1.82,1.88,1.63,1.75,1.84,1.92,2.03,2.1,2.22,2.3,2.39,2.45,2.55,2.65,2.73,2.83,2.91,3,3.12,3.17)
plot the results as a manual check that the experimental results have been entered correctly
- > plot (conc, lnK)
create a sequence of 26 x values from .5 to 3 for our curve fitting
- > xfit <- seq(.5, 3.0, 0.1)
do a rough fit by inspection of the slopes of the outlying arms of the Chevron 'V'
- > yfit <- log(exp(6-(3*xfit)) + exp(-4 + (2*xfit)))
show the 'rough fit' on the results plot
- > lines(spline(xfit, yfit))
Now do the proper plot: set up the least squares function minimising the four unknowns of eqn 1, using the arrays lnK and conc
- > fn <- function(p) sum((lnK - (log(exp(p[1] + p[2]*conc) + exp(p[3] + p[4]*conc))))^2)
run R's non linear minimisation function on the least squares function above
- > out <- nlm(fn, p = c(6, -3, -4, 2), hessian = TRUE)
print out the resulting estimates
- > out$estimate
- [1] 6.958113 -3.931185 -3.864067 1.936795
create a fitted line, and display it on the plot to check the fit values
- > ln_fit <- log (exp(6.958113 - 3.931185*xfit) + exp(-3.864067 + 1.936795*xfit))
- > lines (spline(xfit, ln_fit))
the error is then found using the R command:
- sqrt(diag(2*out$minimum/(length(lnK) - 2) * solve(out$hessian)))
See Also
- Notes on Equilibrium Plots
- The Chevron Plot article in WikiPedia
Chris 12:15, 30 August 2006 (EST)
