Analysis of U-R model

A:    R + L <=> RL

B:    R <=> R*

Back to Contents

Goals

In this notebook I will write out equations for equilibrium concentrations and either solve them or generate expressions for numeric solutions for a number of models derived in   /Users/kovrigin/Documents/Workspace/Data/Data.XV/EKM16.Analysis_of_multistep_kinetic_mechanisms/LRIM/Specific_models/Models.pdf

Back to Contents

1. Definitions

clean up workspace

reset()

Set path to save results into:

ProjectName:="LRIM_U_R";

CurrentPath:="/Users/kovrigin/Documents/Workspace/Data/Data.XV/EKM16.Analysis_of_multistep_kinetic_mechanisms/Equilibria/";  Binding constants:

All binding constants I am using are formation constants so I denote them all as Ka and add a label for the transition.

K_a_A

K_a_A;

assume(K_a_A >= 0):

assumeAlso(K_a_A, R_): K_a_B - Monomer-Ligand complex formation constant

K_a_B;

assumeAlso(K_a_B>=0):

assumeAlso(K_a_B,R_): Total concentrations

Rtot - total concentration of the receptor

Rtot;

assumeAlso(Rtot>=0):

assumeAlso(Rtot,R_): Ltot - total concentration of a ligand

Ltot;

assumeAlso(Ltot>=0):

assumeAlso(Ltot,R_): Common equilibrium concentrations

Req - equilibrium concentration of a receptor monomer

Req;

assumeAlso(Req>=0):

assumeAlso(Req<=Rtot):

assumeAlso(Req,R_): Leq - equilibrium concentration of a receptor monomer

Leq;

assumeAlso(Leq>=0):

assumeAlso(Leq<=Ltot):

assumeAlso(Leq,R_): RLeq - equilibrium concentration of a receptor monomer

RLeq;

assumeAlso(RLeq>=0):

assumeAlso(RLeq<=Rtot):

assumeAlso(RLeq,R_): Other species will be defined in the sections of specific models.

anames(All,User);

anames(Properties,User);  Back to Contents

2. Derivation of working equation

U-R is a model with a receptor isomerization such that only one of the isomers binds ligand.

A:    R + L <=> RL

B:     R <=> R*

Working equation: I will try to express analytical [L] from equation for a total concentration of a receptor or use it for numeric solution if analytical is not possible

[R*] - equilibrium concentration of a receptor non-binding isomer

Rstareq;

assumeAlso(Rstareq>=0):

assumeAlso(Rstareq<=Rtot):

assumeAlso(Rstareq,R_): Total concentrations of protein and a ligand

eq2_1:= Rtot = Req + Rstareq + RLeq;

eq2_2:= Ltot = Leq + RLeq;  Transition A: Equilibrium constant of ligand binding

eq2_3:= K_a_A = RLeq / (Req*Leq); Transition B: Equilibrium constant of isomerization

eq2_4:= K_a_B = Rstareq/Req; Let's get rid of [R*]

solve(eq2_4,Rstareq);

eq2_5:= Rstareq = %  Let's get rid of [R]

solve(eq2_3,Req);

eq2_6:= Req = %  Let's get rid of [RL]

solve(eq2_2,RLeq);

eq2_7:= RLeq = %  Substitute

eq2_1 | eq2_5;

% | eq2_6;

% | eq2_7;

eq2_8:= %;    Final equation for [L] in terms of all constants

eq2_8 For the sake of my speed - use numerical solutions leaving analytical for future analysis.

Solve it for [L]

solutions2:=solve(eq2_8, Leq) Extract solutions

eq2_9:= solutions2[i,1] \$ i=1..nops(solutions2); Is Eq2.9 a set of Eq2.9 and  Eq2.9?

if eq2_9 in eq2_9

then print(Unquoted,"First set of roots contains the second root.");

else print(Unquoted,"First  set of roots  DOES NOT contain the second root!");

end_if;

if eq2_9 in eq2_9

then print(Unquoted,"First set of roots contains the third root.");

else print(Unquoted,"First  set of roots  DOES NOT contain the third root!");

end_if;

First set of roots contains the second root.

First set of roots contains the third root.

Check correctness of the solutions by substitution into original equation to be solved:

Check first root

test1:= eq2_8 | Leq=eq2_9;

test2:=normal(test1);  Check the second root

test1:= eq2_8 | Leq=eq2_9;

test2:=normal(test1);  Back to Contents

3. Express concentrations of equilibrium species in terms of a found solution

Select one solution out of two found (check it below for being right one).

solution:=3 Equilibrium concentration of L :

eq3_1:= Leq= eq2_9[solution]; Equations for equilibrium concentrations

eq2_5; eq2_6; eq2_7   [RL]

eq3_2:= eq2_7 | eq3_1; [R]

eq3_3:= eq2_6 | eq2_7 | eq3_1; [R*]

eq3_4:= eq2_5 | eq3_3 Summary of equations for equilibrium concentrations:

eq3_1 eq2_7;eq3_2  eq2_6; eq3_3  eq2_5; eq3_4  Back to Contents

4. Define functions for equilibrium concentrations

fLeq:=(Rtot, Ltot, K_a_A, K_a_B) --> eq3_1 fReq:=(Rtot, Ltot, K_a_A, K_a_B) --> eq3_3 fRLeq:=(Rtot, Ltot, K_a_A, K_a_B) --> eq3_2 fRstareq:=(Rtot, Ltot, K_a_A, K_a_B) --> eq3_4 Back to Contents

5. Test if solution is meaningful

Set some realistic values for constants:

Rtotal:=1e-3:

Ltotal:=0.5e-3:

KaA:=1e6:

KaB:=1:

Test that all equilibrium concentrations are positive values:

if (fLeq(Rtotal, Ltotal, KaA, KaB)>0 and

fReq(Rtotal, Ltotal, KaA, KaB)>0 and

fRLeq(Rtotal, Ltotal, KaA, KaB)>0 and

fRstareq(Rtotal, Ltotal, KaA, KaB)>0

)

then

print(Unquoted,"Solution is meaningful.");

else

print(Unquoted,"WARNING!!!!  Solution is NOT meaningful: some concentrations become negative!");

end_if

Solution is meaningful.

Back to Contents

6. Check whether the solution satisfies all initial equation and conditions

Here are all original independent

equations to substitute into:

eq2_1; eq2_2; eq2_3; eq2_4    My solutions

eq3_1; eq3_2; eq3_3; eq3_4    eq2_1;

% | eq3_2 | eq3_3 | eq3_4;

normal(%);

bool(%)    eq2_2;

% | eq3_1 | eq3_2;

normal(%);

bool(%)    eq2_3;

% | eq3_1 | eq3_2 | eq3_3;

normal(%);

bool(%)    eq2_4;

% | eq3_3 | eq3_4;

normal(%);

bool(%)    My solutions satisfy all initial equations!

Back to Contents

7. Save results on disk for future use

(you can retrieve them later by executing: fread(filename,Quiet))

Equations we want to save:

eq3_1 eq2_7;eq3_2  eq2_6; eq3_3  eq2_5; eq3_4  Rename them with a unique identifier of the project:

ProjectName Leq_U_R:= eq3_1:

RLeq_U_R_short:= eq2_7:

RLeq_U_R_long:= eq3_2:

Req_U_R_short:= eq2_6:

Req_U_R_long:= eq3_3:

Rstareq_U_R_short:= eq2_5:

Rstareq_U_R_long:= eq3_4:

filename:=CurrentPath.ProjectName.".derivations";

write(filename,Leq_U_R,RLeq_U_R_short,RLeq_U_R_long,Req_U_R_short,Req_U_R_long,Rstareq_U_R_short,Rstareq_U_R_long) Back to Contents

8. 2D plotting

Rtotal:=1e-3:

Ltotal:=0.5e-3:

KaA:=1e6:

KaB:=2:

pLeq:=  plot::Function2d(

Function=(fLeq(Rtotal, L, KaA, KaB)),

LegendText="[L]",

Color = RGB::Black,

XMin=(0),

XMax=(2e-3),

XName=(L),

TitlePositionX=(0)):

pReq:=  plot::Function2d(

Function=(fReq(Rtotal, L, KaA, KaB)),

LegendText="[R]",

Color = RGB::Red,

XMin=(0),

XMax=(2e-3),

XName=(L),

TitlePositionX=(0)):

pRLeq:=  plot::Function2d(

Function=(fRLeq(Rtotal, L, KaA, KaB)),

LegendText="[RL]",

Color = RGB::Blue,

XMin=(0),

XMax=(2e-3),

XName=(L),

TitlePositionX=(0)):

pRstareq:=  plot::Function2d(

Function=(fRstareq(Rtotal, L, KaA, KaB)),

LegendText="[R*]",

Color = RGB::Green,

XMin=(0),

XMax=(2e-3),

XName=(L),

TitlePositionX=(0)):

plot(pLeq,pReq,pRLeq,pRstareq, YAxisTitle="conc",

Height=180, Width=160,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]); Test limiting concentrations

check R+R* total at 0

x1:=limit(fReq(Rtotal, x, KaA, KaB), x=0,Right);

x2:=limit(fRstareq(Rtotal, x, KaA, KaB), x=0,Right);

Rtotal=x1+x2;   check LR total at +INF

x1:=limit(fRLeq(Rtotal, x, KaA, KaB), x=infinity);

Rtotal=x1  Back to Contents

9. ITC curve

Plot differential (simulated normalized ITC curve - a sum of differentials of all components, not counting R):

df:=L -> diff(fRLeq(Rtotal, L, KaA, KaB),L) +

diff(fRstareq(Rtotal, L, KaA, KaB),L) :

plot(df(L),L=0..Rtotal*2); Back to Contents

Conclusions

1. I successfully derived analytical equations for the U-R model

Back to Contents