%-------------------------------------------
% Text S4. Simulate and plot Figure 6-B and C.
%-------------------------------------------

%-------------------------------------------
% File name: plot_figure6_BC.m
%-------------------------------------------
% author: Sohyoung Kim
% last updated: Jul-30-2009
% matlab 7.2.0.232 (R2006a) was used.
% Description: this script generates figure 6-B,C
%-------------------------------------------

%-------------------------------------------
% requirement to run this script.
%-------------------------------------------
% - need function definition file under current working directory: 
%       mdmx_p53_mdm2_model.m
%-------------------------------------------


% generate data to draw image plot.

params=[              0.5
       0.0008
      0.02345
      0.02365
        0.002
       0.0015
       0.0005
          0.2
         0.02
       5e-005
            1
       0.0175
          2.5
          0.1
            0
      0.03425
         0.02
         0.02
      0.03425
      0.00415
       0.0008
      0.04825
         0.25
         0.35
       0.1211
       0.0183
       0.0005
       0.0005
     2.5e-005
       0.0005
     2.5e-005
       0.0005
          0.1];

k1as=logspace(-5,1,50); % various phosphorylation rate
ki1s=logspace(-4,1,50); % various p53 basal production rate

x0=zeros(14,1);
x0(13)=1;
params(15)=0; % no MdmX in the system.
oparams=params;
yswomdmx_max=[];
options=[];
for i=1:length(k1as),
    params=oparams;
    params(3)=k1as(i); % 3: phosphorylation index
   
    for j=25:length(ki1s),
       
        params(1)= ki1s(j); % p53 basal expression
        [x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
        xhalf_ind=min(find(x1>=50000));
        ymax2=max(y1(xhalf_ind:length(x1),14)); % find 50000 point approximately.    
        yswomdmx_max=[yswomdmx_max; ymax2];
        save yswomdmx_max; 
    end;
end;

oparams(15)=10; %set MdmX
ys_max=[];
for i=1:length(k1as),
    params=oparams;
    params(3)=k1as(i); % 3: phosphorylation index
    
    for j=25:length(ki1s),
       
        params(1)= ki1s(j); % p53 basal expression
        [x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
        xhalf_ind=min(find(x1>=50000));
        ymax2=max(y1(xhalf_ind:length(x1),14)); % find 50000 point approximately.    
        ys_max=[ys_max; ymax2];
        save ys_max; 
    end;
end;


%------------------------
% plot image: Figure 6B
%------------------------
load yswomdmx_max;
yswomx_m1a2=reshape(yswomdmx_max,26,50);

load ys_max;
ys_m1a2=reshape(ys_max,26,50);

I=sort(1:26,'descend');
figure(1);
c=colormap;
II=sort(1:64,'descend');
colormap(c(II,:));
imagesc(yswomx_m1a2(I,:)-ys_m1a2(I,:));

%-----------------------
% plot examples cases: Figure 6C
%-----------------------
params=oparams;
x0=zeros(14,1);
x0(13)=1;
MdmXlevel=10;

i=25;
j=14+24;
params(3)=k1as(i); % phospho
params(1)=ki1s(j); % basal expression
params(15)=0;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
params(15)=MdmXlevel;
figure(2)
subplot(2,3,3);
plot(x1, y1(:,14),'-'); hold;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
plot(x1, y1(:,14),'r-');
figure(1)
text(i-0.7, 27-j+24, '(3)')
%--------------------

i=17;
j=17+24;
params(3)=k1as(i); % phospho
params(1)=ki1s(j); % basal expression
params(15)=0;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
params(15)=MdmXlevel;
figure(2)
subplot(2,3,2);
plot(x1, y1(:,14),'-'); hold;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
plot(x1, y1(:,14),'r-');
figure(1)
text(i-0.7, 27-j+24, '(2)')
%--------------------

i=32;
j=12+24;
params(3)=k1as(i); % phospho
params(1)=ki1s(j); % basal expression
params(15)=0;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
params(15)=MdmXlevel;
figure(2)
subplot(2,3,4);
plot(x1, y1(:,14),'-'); hold;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
plot(x1, y1(:,14),'r-');
figure(1)
text(i-0.7, 27-j+24, '(4)')
%--------------------

i=40;
j=13+24;
params(3)=k1as(i); % phospho
params(1)=ki1s(j); % basal expression
params(15)=0;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
params(15)=MdmXlevel;
figure(2)
subplot(2,3,5);
plot(x1, y1(:,14),'-'); hold;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
plot(x1, y1(:,14),'r-');
figure(1)
text(i-0.7, 27-j+24, '(5)')
%--------------------


i=9;
j=23+24;
params(3)=k1as(i); % phospho
params(1)=ki1s(j); % basal expression
params(15)=0;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
params(15)=MdmXlevel;
figure(2)
subplot(2,3,1);
plot(x1, y1(:,14),'-'); hold;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
plot(x1, y1(:,14),'r-');
figure(1)
text(i-0.7, 27-j+24, '(1)')
%--------------------

i=48;
j=14+24;
params(3)=k1as(i); % phospho
params(1)=ki1s(j); % basal expression
params(15)=0;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
params(15)=MdmXlevel;
figure(2)
subplot(2,3,6);
plot(x1, y1(:,14),'-'); hold;
[x1, y1]=ode15s('mdmx_p53_mdm2_model',[0 100000],x0, options, params);
plot(x1, y1(:,14),'r-');
figure(1)
text(i-0.7, 27-j+24, '(6)')
%--------------------

figure(2)
for i=1:6,
    subplot(2,3,i);
    axis([0 100000 0 1]);
    title(strcat('(',num2str(i), ')'));
end;
legend('MdmX: 0', 'MdmX: 10')
 


figure(1)
xlabel('Rate constant of p53 phosphorylation (k3)');
ylabel('Rate of p53 basal production (k1)');