/* * A Mathematical Model for Germinal Centre Kinetics and Affinity * Maturation * * Model Status * * This is the original unchecked version of the model imported * from the previous CellML model repository, 24-Jan-2006. * * Model Structure * * Affinity maturation refers to an increase in the affinity of * antibodies for the antigen produced during an immune response. * This is achieved by mutation of the genes encoding the antibody, * followed by selection for the B cells which express B cell receptors * with the highest affinity for antigen. Both gene mutation and * subsequent protein selection occur in the germinal centres of * secondary lymphoid organs. Upon immunisation (infection), the * antigen is concentrated in the secondary lymphoid organs, where * a small subset of all B cells recognise it. After successful * presentation of the antigen fragments to T cells, B cells enter * the blast state. After about three days, the B blasts differentiate * into centroblasts, and then into centrocytes. Centrocytes express * B cell receptors on their surface and they are believed to be * subject to selection by antigen in that they need to bind, internalise * and present antigen to T cells in order to prevent their under * going apoptosis. Centrocytes that successfully interact with * T cells (selected centrocytes), can either differentiate into * memory cells, antibody forming cells (AFCs), or they can revert * back to the centroblast state (see below). * * Shortly after the first differentiation of centroblasts into * centrocytes, somatic hypermutation starts to act on the centroblasts * and changes the affinity of the B cell receptors for the antigen. * About 53% of the mutations are silent, and have no affect on * affinity. About 28% of the mutations are fatal, leading to B * cell apoptosis. The remaining 19% of mutations either increase * or decrease affinity. Selection is therefore needed to select * for the mutations leading to an increase in affinity and driving * affinity maturation. * * The molecular mechanisms underlying these processes are not * yet clearly understood, and as yet there is no experimental * system available to investigate this. A mathematical model is * therefore useful in investigating hypotheses and comparing their * simulation results with available experimental data. In 2002, * Iber and Maini published a mathematical model for germinal centre * kinetics and affinity maturation. They began with a simple model * of the primed primary immune response (see below), and then * in this they embedded the model of affinity maturation. Model * simulations showed that antigen masking by antibodies can drive * affinity maturation and provide a stabilising feedback mechanism. * Iber and Maini proposed that the selection probability of centrocytes * and the recycling probability of selected centrocytes vary over * time. They also show that the efficiency of affinity maturation * is highest if clones with a very high affinity antigen leave * the germinal centre for either the memory or the plasma cell * pool. It is further shown that the termination of somatic hypermutation * for several days before the end of the germinal centre immune * reaction is beneficial for affinity maturation. * * The complete original paper reference is cited below: * * A Mathematical Model for Germinal Centre Kinetics and Affinity * Maturation, Dagmar Iber and Philip K. Maini, 2002, Journal of * Theoretical Biology, 219, 153-175. PubMed ID: 12413873 * * reaction schematic for the model * * [[Image file: iber_2002.png]] * * A schematic diagram showing the model scheme for the primed * primary immune response. */ import nsrunit; // Warning: unit conversion turned off due to unit errors in 12 equation(s) unit conversion off; unit day=86400 second^1; unit cell_number = fundamental; unit particle = fundamental; unit antibody = fundamental; unit generation_number = fundamental; unit per_day=1.1574074E-5 second^(-1); unit per_particle=1 particle^(-1); unit per_day_per_particle=1.1574074E-5 second^(-1)*particle^(-1); unit particle_per_cell_day=1.1574074E-5 second^(-1)*cell_number^(-1)*particle^1; unit antibody_per_day_cell=1.1574074E-5 second^(-1)*cell_number^(-1)*antibody^1; math main { //Warning: the following variables were set 'extern' or given // an initial value of '0' because the model would otherwise be // underdetermined: Ag_min, K_AgAb, C1, C2, C, Cs, Ab, AFC, B, // B1, B2, Cs1, Cs2, M21, M22, M, M1, M2 realDomain time day; time.min=0; extern time.max; extern time.delta; real rho per_day; real d per_day; real n(time) generation_number; real pr dimensionless; real pr1 dimensionless; real pr2(time) dimensionless; real eta(time) dimensionless; extern real Ag_min per_particle; real Ag(time) per_particle; when(time=time.min) Ag=2500.0; real K_AgAb(time) per_particle; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) K_AgAb=0; real C1(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) C1=0; real C2(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) C2=0; real k_on per_day_per_particle; k_on=5.0E-13; real k dimensionless; k=0.0; real u particle_per_cell_day; u=1.0E-4; real C(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) C=0; real Cs(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) Cs=0; real Ab(time) per_particle; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) Ab=0; real beta antibody_per_day_cell; beta=1.0E8; real AFC(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) AFC=0; real theta(time) dimensionless; real s(time) dimensionless; real s1(time) dimensionless; real s2(time) dimensionless; real h dimensionless; h=0.07; real f dimensionless; f=0.35; real sc dimensionless; sc=0.45; real zeta(time) dimensionless; real delta_c per_day; real m dimensionless; m=0.72; real B(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) B=0; real B1(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) B1=0; real B2(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) B2=0; real Cs1(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) Cs1=0; real Cs2(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) Cs2=0; real mu(time) per_day; real mu1(time) per_day; real mu2(time) per_day; real M11 dimensionless; real M12 dimensionless; extern real M21 dimensionless; extern real M22 dimensionless; real M(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) M=0; real M1(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) M1=0; real M2(time) cell_number; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) M2=0; // rho=((24 per_day)/6.5*ln(2)); d=((12 per_day)*ln(2)); // pr=(.6+.2*(Ag^n/(Ag^n+Ag_min^n))); pr1=.95; pr2=(.7*eta); eta=(if ((K_AgAb/(C1+C2))<1) K_AgAb/(C1+C2) else 1); // Ag:time=((-1)*(u*k*C+u*Cs*(1-k))*Ag-k_on*Ag*Ab); // Ab:time=(beta*AFC-k_on*Ag*Ab); // K_AgAb:time=(k_on*Ag*Ab); theta=(.3*(Ag/(C1+C2))*(Ag/(Ag+K_AgAb))); // s=(sc-(h+f*(Ag_min^n/(Ag_min^n+Ag^n)))); sc=(delta_c/(d*(2*pr*m-1)+delta_c)); s1=(.01+.09*zeta); s2=(.1+.85*zeta); zeta=(Ag/(C1+C2)); // B:time=(rho*B); B1:time=(pr1*rho*Cs1-rho*B1); B2:time=(pr2*rho*Cs2-rho*B2); // C:time=(2*rho*m*B-mu*C); C1:time=(2*rho*m*(M11+B1)*(M12+B2)-mu1*C1); C2:time=(2*rho*m*(M21+B1)*(M22+B2)-mu2*C2); mu=(d*s+delta_c*(1-s)); mu1=(d*s1+delta_c*(1-s1)); mu2=(d*s2+delta_c*(1-s2)); delta_c=((1.5 per_day)*ln(2)); M11=(1-M21); M12=(1-M22); // Cs:time=(d*s*C-rho*Cs); Cs1:time=(d*s1*C1-rho*Cs1); Cs2:time=(d*s2*C2-rho*Cs2); // M:time=((1-theta)*rho*(1-pr)*Cs); M1:time=((1-pr1)*Cs1); M2:time=((1-pr2)*Cs2); // AFC:time=(theta*rho*(1-pr)*Cs); }