/* This model incorporates the observation that it is not necessary to deal with the malaria switch in the kinetic law - it could be in the variables. The advantage of this approach is that the laws are all the same, and the place of difference is easily found. There is an underlying assumption that the malaria injection happens before the helminth injection. In addition, we add that boosted rates are just scalings of recruitment rates. CES 5/3/12 Compartmental model. Three experiments in one model. Growth model. Here, the rates are tied more loosely together than in Compartment model 1. See particularly, see E2_rec2, E3_boost_TH1, E3_recruit_TH2. First compartment is worm-primed + worm boost (E1) Second compartment is worm-primed + malaria + worm boost (E2) Third compartment is unprimed + malaria + worm boost (E3) Fourth compartment is unprimed + malaria (E4) This model updated to reflect less coupling between rates of recruitment. The T helper cells in this model can recruit naive cells and divide. Division rate remains constant across all compartments, as does cell death. The total time of the experiment is 19 days (456 hours). There is an implicit pool of naive cells (we can recruit to either Th1 or Th2 from this). */ compsize = 10000; location world : size = 30000, type = compartment; location E1 in world : size = compsize, type = compartment; location E2 in world : size = compsize, type = compartment; location E3 in world : size = compsize, type = compartment; // Basic constants recruit_TH1_rate= 0.0028; //T helper cell type 1 recruit rate boost_TH1 = 1.29; // scaling for boosted recuitment boost_recruit_TH1_rate= boost_TH1*recruit_TH1_rate; //T helper cell type 1 recruit rate (boosted by injection of Malaria) inhibition_TH1_rate = 0.1; // TH2 inhibits the growth of TH1 // We don't currently have any justification for this choice. recruit_TH2_rate= 0.0009; //T helper cell type 2 recruit rate boost_TH2 = 1.67; // scaling factor for boosted recruitment boost_recruit_TH2_rate= boost_TH2 * recruit_TH2_rate; //T helper cell type 2 recruit rate (boosted by injection of Helminth) inhibition_TH2_rate = 0.1; // TH1 inhibits the growth of TH2 // Assumed to be the same as Th2 on Th1, but may not be. divide_TH1_rate=0.006; //T helper cell type 1 division rate, Zhu and Paul divide_TH2_rate=0.006; //T helper cell type 2 division rate death_rate = 0.00694; //T helper cell death rate, Freitas malariaI = H( time - 72 ); //Malaria injection after 3 days (72 hours). Value is 0 up to 72, and 1 thereafter. helminthI = H (time - 384); //Helminth injection after 16 days (384 hours) // constants replicated for each compartment // First compartment is worm-primed + worm boost (E1) E1_rec_TH1 = recruit_TH1_rate; // The immune system is activated by being worm-primed. E1_boost_TH1 = recruit_TH1_rate; //there is no malaria injection E1_inhibit_TH1 = inhibition_TH1_rate; E1_rec_TH2 = recruit_TH2_rate; E1_boost_TH2 = boost_recruit_TH2_rate; E1_inhibit_TH2 = inhibition_TH2_rate; E1_TH1_div = divide_TH1_rate; E1_TH2_div = divide_TH2_rate; E1_TH1_die = death_rate; E1_TH2_die = death_rate; // Second compartment is worm-primed + malaria + worm boost (E2) E2_rec_TH1 = recruit_TH1_rate; E2_boost_TH1 = boost_recruit_TH1_rate; E2_inhibit_TH1 = inhibition_TH1_rate; E2_mal_TH2 = 1.6; // a constant multiplier to the base recruitment rate in the presence of malaria // using malariaI here works because of the assumption that the malaria injection happens before the helminth injection E2_rec_TH2 = ((1-malariaI)*recruit_TH2_rate) + (malariaI*recruit_TH2_rate * E2_mal_TH2); // strictly, the following variable shouldn't be the same as in E1, since there is a malaria injection here. // But the time that this is used for is rather small, so we leave it as is. E2_boost_TH2 = boost_recruit_TH2_rate; E2_inhibit_TH2 = inhibition_TH2_rate; E2_TH1_div = divide_TH1_rate; E2_TH2_div = divide_TH2_rate; E2_TH1_die = death_rate; E2_TH2_die = death_rate; // Third compartment is unprimed + malaria + worm boost (E3) E3_rec_TH1 = 0; // no previous exposure to worm or malaria. The alternative would be to use recruit_TH1_rate; E3_mal_suppress_TH1 = 0.9; // a constant multiplier to the boosted recruitment rate given no initial worm Ag E3_boost_TH1 = boost_recruit_TH1_rate * E3_mal_suppress_TH1; E3_inhibit_TH1 = inhibition_TH1_rate; E3_mal_TH2 = 3.1; // a constant multiplier to the base recruitment rate in the presence of malaria E3_rec_TH2 = (1-malariaI)*0 + malariaI*recruit_TH2_rate*E3_mal_TH2; // 0 while unprimed and no malaria, then boosted base rate with malaria. E3_boost_TH2 = boost_recruit_TH2_rate; E3_inhibit_TH2 = inhibition_TH2_rate; E3_TH1_div = divide_TH1_rate; E3_TH2_div = divide_TH2_rate; E3_TH1_die = death_rate; E3_TH2_die = death_rate; // Fourth compartment is unprimed + malaria (E4) // not modelled currently // functional rates kineticLawOf E1_div1 : (E1_TH1_div * TH1@E1); kineticLawOf E1_div2 : (E1_TH2_div * TH2@E1); kineticLawOf E1_die1 : (E1_TH1_die * TH1@E1); kineticLawOf E1_die2 : (E1_TH2_die * TH2@E1); kineticLawOf E2_div1 : (E2_TH1_div * TH1@E2); kineticLawOf E2_div2 : (E2_TH2_div * TH2@E2); kineticLawOf E2_die1 : (E2_TH1_die * TH1@E2); kineticLawOf E2_die2 : (E2_TH2_die * TH2@E2); kineticLawOf E3_div1 : (E3_TH1_div * TH1@E3); kineticLawOf E3_div2 : (E3_TH2_div * TH2@E3); kineticLawOf E3_die1 : (E3_TH1_die * TH1@E3); kineticLawOf E3_die2 : (E3_TH2_die * TH2@E3); kineticLawOf E1_rec1 : (1 - malariaI)* (E1_rec_TH1 * TH1@E1 - E1_inhibit_TH1*(TH2@E1+1)/(TH1@E1+1)) + (malariaI)* (E1_boost_TH1 * TH1@E1 - E1_inhibit_TH1* (TH2@E1+1)/(TH1@E1+1)); kineticLawOf E1_rec2 : (1 - helminthI)* (E1_rec_TH2 * TH2@E1 - E1_inhibit_TH2*(TH1@E1+1)/(TH2@E1+1)) + (helminthI)* (E1_boost_TH2 * TH2@E1 - E1_inhibit_TH2* (TH1@E1+1)/(TH2@E1+1)); kineticLawOf E2_rec1 : (1 - malariaI)* (E2_rec_TH1 * TH1@E2 - E2_inhibit_TH1*(TH2@E2+1)/(TH1@E2+1)) + (malariaI)* (E2_boost_TH1 * TH1@E2 - E2_inhibit_TH1* (TH2@E2+1)/(TH1@E2+1)); kineticLawOf E2_rec2 : (1 - helminthI)* ((E2_rec_TH2 * TH2@E2) - E2_inhibit_TH2*(TH1@E2+1)/(TH2@E2+1)) + (helminthI)* (E2_boost_TH2 * TH2@E2 - E2_inhibit_TH2* (TH1@E2+1)/(TH2@E2+1)); kineticLawOf E3_rec1 : (1 - malariaI)* (E3_rec_TH1 * TH1@E3 - E3_inhibit_TH1*(TH2@E3+1)/(TH1@E3+1)) + (malariaI)* (E3_boost_TH1 * TH1@E3 - E3_inhibit_TH1* (TH2@E3+1)/(TH1@E3+1)); kineticLawOf E3_rec2 : (1 - helminthI)* (E3_rec_TH2 * TH2@E3 - E3_inhibit_TH2*(TH1@E3+1)/(TH2@E3+1)) + (helminthI)* (E3_boost_TH2 * TH2@E3 - E3_inhibit_TH2* (TH1@E3+1)/(TH2@E3+1)); TH1 = (E1_div1,1) >> TH1@E1 + (E1_die1,1) << TH1@E1 + (E1_rec1,1) >> TH1@E1 + (E1_rec2,1) (-) TH1@E1 + (E2_div1,1) >> TH1@E2 + (E2_die1,1) << TH1@E2 + (E2_rec1,1) >> TH1@E2 + (E2_rec2,1) (-) TH1@E2 + (E3_div1,1) >> TH1@E3 + (E3_die1,1) << TH1@E3 + (E3_rec1,1) >> TH1@E3 + (E3_rec2,1) (-) TH1@E3 ; TH2 = (E1_div2,1) >> TH2@E1 + (E1_die2,1) << TH2@E1 + (E1_rec2,1) >> TH2@E1 + (E1_rec1,1) (-) TH2@E1 + (E2_div2,1) >> TH2@E2 + (E2_die2,1) << TH2@E2 + (E2_rec2,1) >> TH2@E2 + (E2_rec1,1) (-) TH2@E2 + (E3_div2,1) >> TH2@E3 + (E3_die2,1) << TH2@E3 + (E3_rec2,1) >> TH2@E3 + (E3_rec1,1) (-) TH2@E3; // worm-primed E1 and E2 has population 20:80 // unprimed E3 and E4 has population 50:50 // If we want to have vaguely realistic numbers, 2.5% of the total cell population of 5-7M is 125000-175000 // In the 50:50 case, both Th1 and Th2 are about 2.5% of the population. // We're not modelling that here, instead we are setting the overall population lower. TH1@E1[200] <> TH2@E1[800] <> TH1@E2[200] <> TH2@E2[800] <> TH1@E3[200] <> TH2@E3[200]