From e7e08de83b5c709e3b37cc0a5f95e783260aa2f4 Mon Sep 17 00:00:00 2001 From: "Cody, Jonathan William" Date: Mon, 15 May 2023 11:22:03 -0500 Subject: [PATCH] Delete N803_single.m --- N803_single.m | 217 -------------------------------------------------- 1 file changed, 217 deletions(-) delete mode 100644 N803_single.m diff --git a/N803_single.m b/N803_single.m deleted file mode 100644 index ce742b0..0000000 --- a/N803_single.m +++ /dev/null @@ -1,217 +0,0 @@ -%% N803_single.m - solves model for 1 cohort -% -% /--------------------------------------------------------------\ -% | Date: 01/08/2022 | -% | Author: Jonathan Cody | -% | Affiliation: Purdue University | -% | Weldon School of Biomedical Engineering | -% | Pienaar Computational Systems Pharmacology Lab | -% \--------------------------------------------------------------/ -% -% Nomenclature: V = SIV virions [#/uL] -% T8 = total CD8+ T cells [#/uL] -% S0 = resting SIV-specific CD8+ T cells [#/uL] -% Sa = active SIV-specific CD8+ T cells [#/uL] -% N0 = resting non-SIV-specific CD8+ T cells [#/uL] -% Na = active non-SIV-specific CD8+ T cells [#/uL] -% X = N803 at absorption site [pmol/kg] -% C = N803 plasma concentration [pM] -% R = regulation [] (dimensionless quantity) -% -%% ======================================================================== -% INPUTS -% ======================================================================== -% -% SoluTimes = ascending vector of days at which to evaluate solution -% -% DoseTimes = ascending vector of days at which to administer doses -% (elements of 'DoseTimes' must also be in 'SoluTimes') -% -% AllPars = vector of parameters (see list in function) -% -%% ======================================================================== -% OPTIONS -% ======================================================================== -% -% SkipTimes = [min max] time point beyond which to skip model solving -% (outputs before 'min' will be made equal to output at 'min') -% (leave as [] to ignore) -% -% All additional inputs will be passed as a cell vector to 'N803_model_2' -% and used to define options (see function for list) -% EX: N803_single(SoluTimes,DoseTimes,AllPars,'AbsTol',1e-2} -% will set ode solver absolute tolerance to 1e-2 -% -%% ======================================================================== -% OUTPUTS -% ======================================================================== -% -% Y_OUT(:,1) = V at points in 'SoluTimes' [log fold change] -% Y_OUT(:,2) = T8 at points in 'SoluTimes' [fold change] -% -% Pars = [ parameters , initial conditions ] -% -%% ======================================================================== -% FUNCTION -% ======================================================================== -function [Y_OUT,Pars] = ... - N803_single(SoluTimes,DoseTimes,AllPars,SkipTimes,varargin) - -% Rename inputed parameters ----------------------------------------------- -Vi = AllPars(01) ;% V initial value [log(#/mL)] -SNi = AllPars(02) ;% S+N initial value [#/uL] -fS = AllPars(03) ;% initial frequency: S/(S+N) -fSA = AllPars(04) ;% initial frequency: Sa/S -q = AllPars(05) ;% V growth rate (if S+N were absent) [/d] -psi = AllPars(06) ;% Na/Sa killing rate ratio [gN0/gS0] -V50S = AllPars(07) ;% 50% viral stimulation saturation for S [#/mL] -V50N = AllPars(08) ;% 50% viral stimulation saturation for N [#/mL] -mSn = AllPars(09) ;% normalized Sa reversion rate constant [] -mNn = AllPars(10) ;% normalized Na reversion rate constant [] -SN50 = AllPars(11) ;% 50% S+N proliferation saturation [#/uL] -pS = AllPars(12) ;% Sa proliferation rate constant [/d] -pN = AllPars(13) ;% Na proliferation rate constant [/d] -d = AllPars(14) ;% S0/N0 death rate constant [/d] -dA = AllPars(15) ;% Sa/Na death rate constant [/d] -Xi = AllPars(16) ;% X initial condition [pmol/kg] -ka = AllPars(17) ;% N803 absorption rate constant [/d] -ke = AllPars(18) ;% N803 elimination rate constant [/d] -vd = AllPars(19) ;% N803 'volume of distribution'/'bioavailability' [L/kg] -C50 = AllPars(20) ;% 50% N803 stimulation concentration [pM] -pm = AllPars(21) ;% S0/N0 maximum proliferation rate [] -aS1 = AllPars(22) ;% S activation stimulation factor [] -aN1 = AllPars(23) ;% N activation stimulation factor [] -sig = AllPars(24) ;% sN/sS regulation generation rate ratio -dR = AllPars(25) ;% R decay rate constant [/d] -gS2 = AllPars(26) ;% initial S killing regulation [] -gN2 = AllPars(27) ;% initial N killing regulation [] -p2 = AllPars(28) ;% initial S0/N0 proliferation regulation [] -aS2 = AllPars(29) ;% initial S activation regulation [] -aN2 = AllPars(30) ;% initial N activation regulation [] - -%% ------------------------------------------------------------------------ -% Calculate some initial conditions & parameters -------------------------- - -Vi = 10^(Vi-3) ;% V initial value [#/uL] -V50S = V50S/1000 ;% 50% viral stimulation saturation for S [#/uL] -V50N = V50N/1000 ;% 50% viral stimulation saturation for N [#/uL] - -% restrict mS and mN such that initial activation aS and aN are positive -US = 2*(2*pS/(pS+dA))^7 ; -UN = 2* 2*pN/(pN+dA) ; -mS = mSn*dA/(US-1) ;% Sa reversion rate constant [/d] -mN = mNn*dA/(UN-1) ;% Na reversion rate constant [/d] - -% solve for initial ratios below (based on active steady-state) -ZS = US/(mS+dA) ; -for i = 1:7 - ZS = ZS + 2*(2*pS)^(i-1)/(pS+dA)^i ;% SAi/aSi/S0i -end -ZN = UN/(mN+dA) + 2/(pN+dA) ;% NAi/aNi/N0i - -WS = 1 ; -for i = 1:7 - WS = WS + (mS+dA)*(pS+dA)^(i-1)/(2*pS)^i ;% SAi/S8i -end -WN = 1 + (mN+dA)/(2*pN) ;% NAi/N2i - -QS = mS/WS - 1/ZS ;% collection -QN = mN/WN - 1/ZN ;% collection - -fNA = 1/( 1 + QN/QS*(1-fSA)/fSA ) ;% initial frequency: Na/N - -% solve for S and N initial conditions -Si = SNi*fS ;% initial S -Ni = SNi*(1-fS) ;% initial N -SA = Si*fSA ;% initial Sa -S0 = Si*(1-fSA) ;% initial S0 -NA = Ni*fNA ;% initial Sa -N0 = Ni*(1-fNA) ;% initial S0 - -S = zeros(1,8) ;% initial S1-S8 -S(8) = SA/WS ;% S8 -S(7) = S(8) * (mS+dA)/(2*pS) ;% S7 -for i = 6:-1:1 - S(i) = S(i+1) * (pS+dA) / (2*pS) ;% S6 to S1 -end -N = NA/WN * [ (mN+dA) / (2*pN) , 1 ] ;% initial N1-N2 - -% solve for rate constants -aSi = S(1) / (2*S0) * (pS+dA) ;% initial activation rate for S0 -aNi = aSi * (US*mS/(mS+dA)-1) / (UN*mN/(mN+dA)-1) ;% for N0 -aS0 = aSi * (V50S+Vi)/Vi * (1+aS2) ;% S0 activation rate constant [/d] -aN0 = aNi * (V50N+Vi)/Vi * (1+aN2) ;% N0 activation rate constant [/d] - -pi = d - QS*SA/S0 ;% initial proliferation rate for S0/N0 -p0 = pi * (SN50+SNi)/SN50 * (1+p2) ;% S0/N0 proliferation rate con [/d] -p1 = pm/p0 ;% S0/N0 proliferation stimulation factor - -gS0 = q / ( SA/(1+gS2) + psi*NA/(1+gN2) ) ;% Sa killing rate con [uL/#-d] -gN0 = psi*gS0 ;% Na killing rate constant [uL/#-d] - -sS = dR / ( Vi/(V50S+Vi) + sig*Vi/(V50N+Vi) ) ;% regulation gen by S act -sN = sig*sS ;% regulation generation by N activation - -%% ------------------------------------------------------------------------ -% Prepare parameter and initial value vectors and call 'N803_model_2' ----- - -Pars(01) = q ;% V growth rate (if S+N were absent) [/d] -Pars(02) = gS0 ;% Sa killing rate constant [uL/#-d] -Pars(03) = gN0 ;% Na killing rate constant [uL/#-d] - -Pars(04) = V50S ;% 50% viral stimulation saturation for S [#/uL] -Pars(05) = V50N ;% 50% viral stimulation saturation for N [#/uL] -Pars(06) = aS0 ;% S0 activation rate constant [/d] -Pars(07) = aN0 ;% N0 activation rate constant [/d] -Pars(08) = mS ;% Sa reversion rate constant [/d] -Pars(09) = mN ;% Na reversion rate constant [/d] - -Pars(10) = SN50 ;% 50% S+N proliferation saturation [#/uL] -Pars(11) = p0 ;% S0/N0 proliferation rate constant [/d] -Pars(12) = pS ;% Sa proliferation rate constant [/d] -Pars(13) = pN ;% Na proliferation rate constant [/d] -Pars(14) = d ;% S0/N0 death rate constant [/d] -Pars(15) = dA ;% Sa/Na death rate constant [/d] - -Pars(16) = Xi ;% X initial condition [pmol/kg] -Pars(17) = ka ;% N803 absorption rate constant [/d] -Pars(18) = ke ;% N803 elimination rate constant [/d] -Pars(19) = vd ;% N803 'volume of distribution'/'bioavailability' [L/kg] -Pars(20) = C50 ;% 50% N803 stimulation concentration [pM] -Pars(21) = p1 ;% S0/N0 proliferation stimulation factor [] -Pars(22) = aS1 ;% S activation stimulation factor [] -Pars(23) = aN1 ;% N activation stimulation factor [] - -Pars(24) = sS ;% R generation due to S0 activation [/d] -Pars(25) = sN ;% R generation due to N0 activation [/d] -Pars(26) = dR ;% R decay rate constant [/d] -Pars(27) = gS2 ;% S killing regulation factor [] -Pars(28) = gN2 ;% N killing regulation factor [] -Pars(29) = p2 ;% S0/N0 proliferation regulation factor [] -Pars(30) = aS2 ;% S activation regulation factor [] -Pars(31) = aN2 ;% N activation regulation factor [] - -% V S0-8 N0-2 X C R initial values -Yic = [ Vi S0 S N0 N 0 0 1 1 ] ; - -if any( [ Pars Yic ] < 0 ) - error('Negative parameters or initial values.') -end - -% If 'SkipTimes' is empty, do not skip any times -if isempty(SkipTimes) ; SkipTimes = [-inf inf] ; end - -idLo = SoluTimes < SkipTimes(1) ;% index of early times to skip solution -idHi = SoluTimes > SkipTimes(2) ;% index of later times to skip solution -idSol = ~ ( idLo | idHi ) ;% index of times in 'SoluTimes' to solve - -% solve model -Y_OUT = N803_model_2(SoluTimes(idSol),DoseTimes,Pars,Yic,varargin) ; - -Y_LO = ones(sum(idLo),1)*Y_OUT(1 ,:) ;% constant Y for early times -Y_HI = ones(sum(idHi),1)*Y_OUT(end,:) ;% constant Y for later times -Y_OUT = [ Y_LO ; Y_OUT ; Y_HI ] ;% total 'solution' matrix - -Pars = [ Pars Yic ] ;% adding initial conditions to parameter output - -end \ No newline at end of file