function task2CaProbeIndo1Pulse()
%Indo1 Ca応答をシミュレート
param = [9.4*10^8,180]; % Indo1 kf,kbのパラメータ
% param = [**,**]; % Cameleon kf,kbのパラメータ←(課題2.2)
y0 = [0,1*10^(-6),0]; %A:カルシウム, B:プローブ, AB:複合体の初期濃度(M)

figure;%フィギュアを作成
hold on;%フィギュアを上書きする

t0 = 0;
dt=20;%刺激の時間間隔
[t,y] = ode15s(@(t,y) ODE(t,y,param),[t0,t0+dt],y0);%ODEソルバを解く(0-20sec)      
plot(t,y(:,1),'b',t,y(:,2),'r',t,y(:,3),'k');%ODEソルバから返されたベクトルt、yをプロット
axis([0, 3*dt, 0, 1.5*10^(-6)]);% x軸　0-3*dt秒、y軸0-1.5uMまで表示

%刺激後のシミュレート
t0 = t(end);%ｔの最後の値を次のシミュレーションの初期値に設定し直す
y0 = y(end,:);%ｙの最後の値を次のシミュレーションの初期値に設定し直す
y0(1) = 1*10^(-7);%Aの濃度を100nMに設定
[t,y] = ode15s(@(t,y) ODE(t,y,param),[t0,t0+dt],y0);%ODEソルバを解く(20-40sec)  
plot(t,y(:,1),'b',t,y(:,2),'r',t,y(:,3),'k');%ODEソルバから返されたベクトルt、yをプロット
 
**;%ｔの最後の値を次のシミュレーションの初期値に設定し直す
**;%ｙの最後の値を次のシミュレーションの初期値に設定し直す
**;%Aの濃度を0nMに設定
**;%ODEソルバを解く(40-60sec)     
**;%ODEソルバから返されたベクトルt、yをプロット

%ラベリング
xlabel('time (sec)');
ylabel('conc. (M)');
legend('Ca','CaProbe','Complex');
hold off;
end
 
function dydt = ODE(t,y,param) % ODE(t,y,param)という関数の定義
A = y(1); % A:カルシウムの濃度
B = y(2); % B：プローブの濃度
AB = y(3); % AB：複合体の濃度
 
kf = param(1); % kfはparamの1番目の値
kb = param(2); % kbはparamの2番目の値
 
dydt(1,:) = 0; % dydtの1行目(分子A:カルシウム)の式の定義
dydt(2,:) = -kf*A*B+kb*AB; % dydtの2行目(分子B：プローブ)の式の定義
dydt(3,:) = kf*A*B-kb*AB;  % dydtの3行目(分子AB：複合体)の式の定義
end

