function [t,CA,CB,y] = equilibrium(DoseA,DoseB,tend,P) %DoseA=IV bouls dose of drug A. %DoseB=IV bolus dose of drug B. %tend=tast time point for simulations. %P=vector of model parameters (see below). %t=column vector of times for soultions. %y=length(t)x5 matrix of solutions: % y(:,1)=CAtot % y(:,2)=ATA % y(:,3)=CBtot % y(:,4)=ATB % y(:,5)=Rtot %CA=column vector of free drug A concentrations. %CB=column vector of free drug B concentrations. % Model parameters. Vc =P(1); kelA =P(2); kelB =P(3); ktpA =P(4); ktpB =P(5); kptA =P(6); kptB =P(7); kintA=P(8); kintB=P(9); KDA =P(10); KDB =P(11); kdeg =P(12); Rtot0=P(13); CA0 =P(14); CB0 =P(15); % Model secondary parameters RCA0=Rtot0*CA0/KDA/(1+CA0/KDA+CB0/KDB); RCB0=Rtot0*CB0/KDB/(1+CA0/KDA+CB0/KDB); CAtot0=CA0+RCA0; CBtot0=CB0+RCB0; InA0=kelA*CA0+kintA*RCA0; InB0=kelB*CB0+kintB*RCB0; ATA0=kptA*Vc*CA0/ktpA; ATB0=kptB*Vc*CB0/ktpB; ksyn=kdeg*(Rtot0-RCA0-RCB0)+kintA*RCA0+kintB*RCB0; % Model initial conditions; IC=[DoseA/Vc+CAtot0;ATA0;DoseB/Vc+CBtot0;ATB0;Rtot0]; % solving model ODEs over time interval [0, tend]. RelTol=10^(-8);% default 10^(-3) AbsTol=10^(-8);% default 10^(-6) options = odeset('RelTol',RelTol,'AbsTol',AbsTol); [t,y]=ode45(@model,[0:0.1:tend],IC,options); % Calculating CA and CB based on the model variables:CAtot,CBtot, Rtot. CA=t; CB=t; for i=1:length(t) CAtot=y(i,1); ATA =y(i,2); CBtot=y(i,3); ATB =y(i,4); Rtot =y(i,5); [CA(i),CB(i)] = agonism_roots(Rtot,CAtot,CBtot,KDA,KDB); end % Model ODEs. function [dydt] = model(t,y); CAtot=y(1); ATA =y(2); CBtot=y(3); ATB =y(4); Rtot =y(5); [CA,CB] = equilibrium_roots(Rtot,CAtot,CBtot,KDA,KDB); dydt=[InA0-(kelA+kptA)*CA+ktpA*ATA/Vc-kintA*(CAtot-CA); kptA*Vc*CA-ktpA*ATA; InB0-(kelB+kptB)*CB+ktpB*ATB/Vc-kintB*(CBtot-CB); kptB*Vc*CB-ktpB*ATB; ksyn-kdeg*Rtot-(kintA-kdeg)*(CAtot-CA)-(kintB-kdeg)*(CBtot-CB)]; end % Endo of function agonism end function [ CA,CB ] = equilibrium_roots(Rtot,CtotA,CtotB, KDA,KDB ) % This function solves the equilibrium equations using roots function % to find the only solution z to the equlibrium polynomial such that % 0 < z & z < 1 & z < aA+aB. aA=CtotA/Rtot; aB=CtotB/Rtot; kA=KDA/Rtot; kB=KDB/Rtot; if (kA == kB) % root of z^2+b*z+c=0 b=-(1+aA+aB+kA); c=aA+aB; p=roots([1,b,c]); if (0