Difference: NmrTitration (14 vs. 15)

Revision 1504 Feb 2010 - Main.DavidCowburn

 
META TOPICPARENT name="NmrIT"
Changed:
<
<

Current function in Matlab - LIBRARY:/Matlab/lib1/titrateKD.m

>
>

Current function in Matlab - LIBRARY:matlab/lib1/titrateKD.m

 
function [out] = titrateKD ( shifts, nomcon, protein, other)
%
% shifts - a vs . ns matrix of shifts, unidentified other than index
% nomcon - the nominal concentration of ligand per titration step (not
%           corrected for dilution) vector of length vs  (uM typically) 
% protein - total protein concentration ( uM typically) 
% other - (optional) dilution calculation.  If omitted assumes a start vol
% of 300 ul and increment of 1 ul . Other wise, include these two data
% DC 2/10

out includes means, estimates of error (not of uniform type) and tag describing process in a structure.

The data is analyzed with the equation below, and Kd, and D values derived.

A second step obtains Kd from the sum of all shifts at each concentration

A third step tests for serious outliers by comparison (using t-test) of each individual Kd with the rest of the distribution, at the 95% confidence limit. This should confirm whether or not there is a clearly different peak moving.

Finally, the t-test is used to see whether there is any improvement in t-score (not just at 95% level) by omission(s) of specific peaks.

Caution This does assume the fast exchange limit. Moving into intermediate exchange is quite complex and would normally require a good estimate of the end states.


  1. Demo script -- LIBRARY:matlab/lib1/titrationscript.htm or NmrTitration
  2. Needed data - 1. protein concentration at start. 2. initial total volume, 3 concn of ligand in the added volumes , 4 incremental volume added , 5 number of increments (VS), 6 number of peaks logged (VN), 7 matrix of shifts (VS, VN)
  3. assumes multiple equal steps. Can be altered to use none equal volumes.
  4. Precision is limited by VS and VN and the relative Kd.


Equation

This documents the fitting procedure for the formula

d(obs: 1:vs, 1:vn)-d(0) = D(1:vn) * ( ( P + L (1:vs) + K ) - sqrt ( (P + L(1:vs) + K )^2 - 4( P L(1:VS) ) )) / ( 2 P )

where P is the protein conc., L the ligand conc, K the Kd, D are fitted constants for (saturated shift - no ligand shift), and K is the primary fitted variable.

The concentrations are adjusted for volumetric dilutions.

Function

The lsqcurvefit matlab procedure is used, with the kdfuntitr function. The following is needed for [x,r] = lsqcurvefit(@kdfuntitr , x0 , xdata, zs2 ); as illustrated below.

Input values

x 0 - starting values of Kd and D's. Can be artibitarily set to 1's if needed.

xdata - the concentration of ligand nominally added , e.g. so if you added 10 µl of a 100 mM solution, and nominally diluted it 50 time, you have a 2 mM 'nominal' conc, and the increments are similar 4,6,8 .... The volumetric correction is internally calculated.

global variables, for TOTALPROTEIN , VOLUME0, and DELTAVOL for total protein concentration initially, the initial (no ligand) volume, and the delta volume of the additions during titration. It's assumed there's a constant vol addition. Alternate schemes could be handled.

zs2 - a matrix of numbers for each peak studied with the variation of shifts from the starting value. Dont include 0 for 0 ligand.

Output

The principal output is a vector similar to x0 with Kd as the first value followed by the D's for each peak. Other outputs are described .

titrationscript

% script to demonstrate simple protein binding curve fitting
% set up for simlulation by simshift, using titration formulism
in.ns = 20;     % number of peak positions in use
in.ra = 0.2;    % max range of shifts
in.kd = 1e-2;   % apparent Kd
in.tp = 1e-4;   % total protein conc

global TOTALPROTEIN VOLUME0 DELTAVOL
TOTALPROTEIN = in.tp;
VOLUME0=500;
in.vs = 10;     % number of steps of titration
in.ml = 1e-3;   % ligand added concn
DELTAVOL =  20;
[zsim, fm] = simshifttitr(in);
zs2 = zsim;
plot(zs2);
xdata =    in.ml.*[1:in.vs] ;    % range of concentrations
x0= [ 0,  2*max(zs2)];
[x,r] = lsqcurvefit(@kdfuntitr , x0 , xdata, zs2 );
disp('outputs');
disp( x);
disp('deviations');
disp(  x - [in.kd fm']);
Local minimum possible.

lsqcurvefit stopped because the final change in the sum of squares relative to 
its initial value is less than the default value of the function tolerance.



outputs
  Columns 1 through 7
    0.0100    0.1671    0.1671    0.0100    0.1092    0.1886    0.0643
  Columns 8 through 14
    0.1613    0.1203    0.1579    0.1598    0.0099    0.0566    0.1307
  Columns 15 through 21
    0.0979    0.1946    0.1497    0.1136    0.0598    0.0512    0.1773
deviations
  1.0e-006 *
  Columns 1 through 7
   -0.0330   -0.3427   -0.3428   -0.0204   -0.2239   -0.3869   -0.1319
  Columns 8 through 14
   -0.3308   -0.2467   -0.3239   -0.3278   -0.0203   -0.1162   -0.2680
  Columns 15 through 21
   -0.2008   -0.3990   -0.3070   -0.2329   -0.1226   -0.1050   -0.3636
* untitled.jpg:
untitled.jpg

META FILEATTACHMENT attachment="untitled.jpg" attr="" comment="" date="1265133369" name="untitled.jpg" path="untitled.jpg" size="48403" stream="untitled.jpg" user="Main.DavidCowburn" version="1"
 
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding this intranet, Send feedback