Analysis of B_R2_R2L2
Receptor dimerization coupled with binding of one ligand per receptor monomer
In this notebook I will analyze B_R2_R2L2 model using numeric solutions from
EKM16.Analysis_of_multistep_kinetic_mechanisms/
Equilibria/B_R2_R2L2_model/B_R2_R2L2_derivation.mn
clean up workspace
reset()
Set path to save results into:
ProjectName:="B_R2_R2L2";
CurrentPath:="/Users/kovrigin/Documents/Workspace/Data/Data.XV/EKM16.Analysis_of_multistep_kinetic_mechanisms/Equilibria/B_R2_R2L2_model/";
Read results of derivations
filename:=CurrentPath.ProjectName.".mb";
fread(filename,Quiet):
anames(User);
Assume some constant values for testing
Total_R:=1e-3:
Ka1:=1e7:
Kb1:=2e3:
Ka2:=1e5:
Ka3:=1e5:
LR_Ratio_max:=2.5:
LR_Ratio:=0.8:
Test procedures
pnLeq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) ;
pnReq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) ;
pnRLeq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) ;
pnR2eq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) ;
pnR2Leq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) ;
pnR2L2eq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) ;
functions loaded OK.
Make wrapper functions for plotting
// Make wrapper functions dependent on LRratio
fnLeq:=LR_Ratio -> pnLeq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) :
fnReq:=LR_Ratio -> pnReq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) :
fnRLeq:=LR_Ratio -> pnRLeq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) :
fnR2eq:=LR_Ratio -> pnR2eq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) :
fnR2Leq:=LR_Ratio -> pnR2Leq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) :
fnR2L2eq:=LR_Ratio -> pnR2L2eq_B_R2_R2L2(Total_R, LR_Ratio, Ka1, Kb1, Ka2, Ka3) :
// control function for performance of the numeric solver
fnRtot:=LR_Ratio -> fRtot_B_R2_R2L2(Total_R, LR_Ratio, fnLeq(LR_Ratio), Ka1, Kb1, Ka2, Ka3):
Test plotting
Total_R:=1e-3:
Ka1:=10:
Kb1:=1e3:
Ka2:=1e6:
Ka3:=1e4:
LR_Ratio_min:=1e-16:
LR_Ratio_max:=1.2:
pnR2L2eq_B_R2_R2L2(Total_R, LR_Ratio_min, Ka1, Kb1, Ka2, Ka3);
pnR2L2eq_B_R2_R2L2(Total_R, LR_Ratio_max, Ka1, Kb1, Ka2, Ka3);
print(Unquoted,"Leq ",fnLeq(LR_Ratio_min),fnLeq(LR_Ratio_max));
print(Unquoted,"Req ",fnReq(LR_Ratio_min),fnReq(LR_Ratio_max));
print(Unquoted,"RLeq ",fnLeq(LR_Ratio_min),fnRLeq(LR_Ratio_max));
print(Unquoted,"R2eq ",fnR2eq(LR_Ratio_min),fnR2eq(LR_Ratio_max));
print(Unquoted,"R2Leq ",fnR2Leq(LR_Ratio_min),fnR2Leq(LR_Ratio_max));
print(Unquoted,"R2L2eq ",fnR2L2eq(LR_Ratio_min),fnR2L2eq(LR_Ratio_max));
LW:=1.5:
pLeq:= plot::Function2d(
Function=(fnLeq),
LegendText="[L]",
Color = RGB::Blue,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pReq:= plot::Function2d(
Function=(fnReq),
LegendText="[R]",
Color = RGB::Black,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pR2L2eq:= plot::Function2d(
Function=(fnR2L2eq),
LegendText="[R2L2]",
Color = RGB::Red,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pRtot:= plot::Function2d(
Function=(fnRtot),
LegendText="Total R",
Color = RGB::Cyan,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
plot(pRtot,pR2L2eq,pReq,pLeq,LegendVisible=TRUE);
Leq , 3.983981204e-22, 0.0003325264778
Req , 0.0005000002003, 0.00001846519415
RLeq , 3.983981204e-22, 0.00000006140165974
R2eq , 0.0002500002003, 0.0000003409633952
R2Leq , 9.959960989e-20, 0.0001133793568
R2L2eq , 3.968029737e-37, 0.0003770163819
OK
KB2_B_R2_R2L2; KB3_B_R2_R2L2
Assume some constant values and evaluate titrations for desired conditions.
delete LR_Ratio;
DIGITS:=10:
/*
// Using independent constants
Total_R:=0.001:
Ka1:=1000.0:
Ka2:=1e10:
Ka3:=1e10:
Kb1:=0.1:
*/
/*
// --- no dimerization of monomers -----
// Using dependent constants
Total_R:=0.001:
Ka1:=1e5:
Kb1:=1e-3:
Kb2:=1:
Kb3:=1e4:
// compute independent constants
Ka2:= Kb2*Ka1/Kb1;
Ka3:= Kb3*Ka1*Ka1/(Ka2*Kb1);
*/
// --- Monomer does not bind ligand -----
// Using dependent constants
Total_R:=0.001:
Ka1:=1:
Ka2:=1e6:
Kb1:=1:
Ka3:=1e6:
LR_Ratio_min:=1e-16:
LR_Ratio_max:=1.5:
// Compute dependent constants
Kb2:=KB2_B_R2_R2L2[2] | K_A_1=Ka1 | K_A_2=Ka2 | K_B_1=Kb1:
Kb3:=KB3_B_R2_R2L2[2] | K_A_1=Ka1 | K_A_2=Ka2 | K_A_3=Ka3 | K_B_1=Kb1:
pLeq:= plot::Function2d(
Function=(fnLeq),
LegendText="[L]",
Color = RGB::Yellow,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pReq:= plot::Function2d(
Function=(fnReq),
LegendText="[R]",
Color = RGB::Black,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pR2eq:= plot::Function2d(
Function=(fnR2eq),
LegendText="[R2]",
Color = RGB::Blue,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pRLeq:= plot::Function2d(
Function=(fnRLeq),
LegendText="[RL]",
Color = RGB::Green,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pR2Leq:= plot::Function2d(
Function=(fnR2Leq),
LegendText="[R2L]",
Color = RGB::Magenta,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pR2L2eq:= plot::Function2d(
Function=(fnR2L2eq),
LegendText="[R2L2]",
Color = RGB::Red,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
pRtot:= plot::Function2d(
Function=(fnRtot),
LegendText="Total R",
Color = RGB::Cyan,
XMin=(LR_Ratio_min),
XMax=(LR_Ratio_max),
XName=(LR_Ratio),
TitlePositionX=(0),
LineWidth=LW):
// Report constants
print(Unquoted,"Model: ".ProjectName);
print(Unquoted,"Total_R:=".Total_R.":");
print(Unquoted,"Ka1:=".Ka1.":");
print(Unquoted,"Ka2:=".Ka2.":");
print(Unquoted,"Ka3:=".Ka3.":");
print(Unquoted,"Kb1:=".Kb1.":");
print(Unquoted,"//Kb2:=".Kb2.": (dep.)");
print(Unquoted,"//Kb3:=".Kb3.": (dep.)");
// plot all together
plot(pRtot, pLeq, pReq, pR2eq, pRLeq, pR2Leq, pR2L2eq,
YAxisTitle="M", Header=("Model: ".ProjectName),
Height=160, Width=100,TicksLabelFont=["Helvetica",12,[0,0,0],Left],
AxesTitleFont=["Helvetica",14,[0,0,0],Left],
XGridVisible=TRUE, YGridVisible=TRUE,
LegendVisible=TRUE, LegendFont=["Helvetica",14,[0,0,0],Left]);
Model: B_R2_R2L2
Total_R:=0.001:
Ka1:=1:
Ka2:=1000000.0:
Ka3:=1000000.0:
Kb1:=1:
//Kb2:=1000000.0: (dep.)
//Kb3:=1.0e12: (dep.)
Jump to beginning of simulation
Test some situations
Jump to beginning of simulation
Simple test case |
No dimerizaion and affinity for dimer and a monomer is identical |
Monomer does not bind ligand |
No dimerization in R, only RL can dimerize // Using dependent constants Total_R:=0.001: Ka1:=1e5: Kb1:=1e-3: Kb2:=1: Kb3:=1e4: // compute independent constants Ka2:= Kb2*Ka1/Kb1; Ka3:= Kb3*Ka1*Ka1/(Ka2*Kb1); |
Model: B_R2_R2L2 Total_R:=0.001: Ka1:=100000.0: Ka2:=1000000.0: Ka3:=100000.0: Kb1:=1000.0: //Kb2:=10000.0: (dep.) //Kb3:=10000.0: (dep.)
|
Model: B_R2_R2L2 Total_R:=0.001: Ka1:=100000.0: Ka2:=100000.0: Ka3:=100000.0: Kb1:=1: //Kb2:=1.0: (dep.) //Kb3:=1.0: (dep.) |
Model: B_R2_R2L2 Total_R:=0.001: Ka1:=1: Ka2:=1000000.0: Ka3:=1000000.0: Kb1:=1: //Kb2:=1000000.0: (dep.) //Kb3:=1.0e12: (dep.)
|
Model: B_R2_R2L2 Total_R:=0.001: Ka1:=100000.0: Ka2:=100000000.0: Ka3:=1000000000.0: Kb1:=0.001: //Kb2:=1.0: (dep.) //Kb3:=10000.0: (dep.)
|
Jump to beginning of simulation
Conclusion:
Equations behave as expected. To 'switch off' parts of the scheme : set the dependent constants and back-calculate independent ones
Conclusions
1. The numeric solutions are tested and behave predictably. To 'switch off' parts of the scheme : set the dependent constants and back-calculate independent ones