Contents

Script to process FRET experimental data

Nonlinear fit
Suitable for multiple sets of data (different protein concentration)
k1,k2,k3,A are parameters to be estimated;
Author: Chang Lu (lu-c12@mails.tsinghua.edu.cn)
Paper: Quantitative analysis of ligand induced Hetero-dimerization
function nlm_fkbp_frb_data

data input

data: Experiment data
data(:,1) is ligand concentration
data(:,2~n) is fluorescence intensity for each experiment
data = importdata('1010_3data.txt');
total_conc = [39.6 39; 55.4 39; 71.3 39];
data_length = [12 12 12];

% s0 = n*3: s0(1,:)=[p10, p20, l0]
[a,b]=size(data);
s0=zeros(a*(b-1),3);
p1lp2=zeros(a*(b-1),1);
count=0;
n=b-1;
for i=1:n
    s0(count+1:count+a,1)=total_conc(i,1);
    s0(count+1:count+a,2)=total_conc(i,2);
    s0(count+1:count+a,3)=data(:,1);
    p1lp2(count+1:count+a)=data(:,i+1);
    count=count+a;
end

initial parameters

k1=1;  % D+L->DL
k2=1000; % A+L->LA
k3=10;  % DL+A->DLA
A0=10; % ratio between intensity and complex conc., proportional to FRET efficiency
c0=[k1 k2 k3 A0];

nonlinear regression

options = statset(...
    'MaxIter',1000000,...
    'TolFun',1e-26,'DerivStep',1,...
    'TolX',1e-20);
%     'Display','iter',...

mdl = NonLinearModel.fit(s0,p1lp2,@ihetero_nlinfit_k3,c0,'Options',options,'CoefficientNames',{'k1','k2','k3','A'});
mdl
mdl = 


Nonlinear regression model:
    y ~ ihetero_nlinfit_k3(b,X)

Estimated Coefficients:
          Estimate      SE       tStat       pValue  
          ________    _______    ______    __________

    k1    2.0589       1.9095    1.0783       0.28898
    k2    1434.8       461.48     3.109     0.0039249
    k3    12.358       6.2576    1.9749      0.056959
    A     10.541      0.94649    11.137    1.5249e-12


Number of observations: 36, Error degrees of freedom: 32
Root Mean Squared Error: 8.72
R-Squared: 0.991,  Adjusted R-Squared 0.99
F-statistic vs. zero model: 5.15e+03, p-value = 1.9e-44

figure generation

X2=10.^linspace(-0.5,4,500)'; % for fitted line generation
c=mdl.Coefficients.Estimate;
for i=1:n
    YMatrix2(:,i)=ihetero_nlinfit_k3(total_conc(i,1),total_conc(i,2),c,X2);
end
createfigure2(data_length, [s0(:,3), p1lp2], X2, YMatrix2,[],[])
end