U-R-RL-RM

 

Binding of two mutually exclusive ligands coupled with intramolecular isomerization of the receptor (competitive ligand binding)

 

 

image

 

image

 

image

(images from Equilibrium_models/U-R-RL-RM_model.pdf)

 

 

 

 

 

Contents

 

Goals

 

1. Definitions

 

2. Basic equilibrium equations

 

3. Derivation of equations for equilibrium concentrations

 

4. Prepare equations for a numeric solution

 

 

6. Preparing numeric solutions

 

7. Reproduce a graph for equilibrium concentrations using a numeric solution

 

8. Save results on disk for future use

 

 

 

 

 

Conclusions

 

 

 

 

 

Back to Contents

 

Goals

 

In this notebook I will derive equations for two-ligand competitive U-R-RL-RM model and prepare equations for numerical simulations.

 

Analysis will be done in

EKM16.Analysis_of_multistep_kinetic_mechanisms/Equilibria/LRIM_U_R_RL_RM_analysis.mn

 

 

 

 

1. Definitions

 

clean up workspace

reset()

 

Set path to save results into:

ProjectName:="U_R_RL_RM";

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

math

math

 

 

 

 

Binding and isomerization constants

 

 

 

All binding constants I am using are association constants.

 

 

These relationships serve as restraints for solve(), but not restrict these values in calculations!

 

K_A_1

K_A_1 ;

assumeAlso(K_A_1  > 0):

assumeAlso(K_A_1 , R_):

math

K_A_2

K_A_2 ;

assumeAlso(K_A_2  > 0):

assumeAlso(K_A_2 , R_):

math

K_A_3

K_A_3 ;

assumeAlso(K_A_3  > 0):

assumeAlso(K_A_3 , R_):

math

K_A_4

K_A_4 ;

assumeAlso(K_A_4  > 0):

assumeAlso(K_A_4 , R_):

math

 

Isomerization constants are formation constants for the alternative species

 

K_B_1

K_B_1 ;

assumeAlso(K_B_1  > 0):

assumeAlso(K_B_1 , R_):

math

K_B_2

K_B_2 ;

assumeAlso(K_B_2  > 0):

assumeAlso(K_B_2 , R_):

math

K_B_3

K_B_3 ;

assumeAlso(K_B_3  > 0):

assumeAlso(K_B_3 , R_):

math

 

 

 

Total concentrations

 

 

Rtot - total concentration of the receptor

Rtot;

assumeAlso(Rtot>0):

assumeAlso(Rtot,R_):

math

Ltot - total concentration of a ligand

Ltot;

assumeAlso(Ltot>0):

assumeAlso(Ltot,R_):

math

 

 

 

 

 

Common equilibrium concentrations

 

Req - equilibrium concentration of a receptor monomer

Req;

assumeAlso(Req>0):

assumeAlso(Req<Rtot):

assumeAlso(Req,R_):

math

Rstareq - equilibrium concentration of an isomerized receptor monomer

Rstareq;

assumeAlso(Rstareq>0):

assumeAlso(Rstareq<Rtot):

assumeAlso(Rstareq,R_):

math

 

Leq - equilibrium concentration of a free ligand

Leq;

assumeAlso(Leq>0):

assumeAlso(Leq<Ltot):

assumeAlso(Leq,R_):

math

 

RLeq - equilibrium concentration of a receptor-ligand complex

RLeq;

assumeAlso(RLeq>0):

assumeAlso(RLeq<Rtot):

assumeAlso(RLeq,R_):

math

RstarLeq - equilibrium concentration of an isomerized receptor-ligand complex

RstarLeq;

assumeAlso(RstarLeq>0):

assumeAlso(RstarLeq<Rtot):

assumeAlso(RstarLeq,R_):

math

RMeq - equilibrium concentration of a receptor-ligand complex

RMeq;

assumeAlso(RMeq>0):

assumeAlso(RMeq<Rtot):

assumeAlso(RMeq,R_):

math

RstarMeq - equilibrium concentration of a receptor-ligand complex

RstarMeq;

assumeAlso(RstarMeq>0):

assumeAlso(RstarMeq<Rtot):

assumeAlso(RstarMeq,R_):

math

 

 

 

anames(Properties,User);

 

math

 

 

 

 

Back to Contents

 

 

 

 

2. Basic equilibrium equations

 

 

 

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

 

 

Total concentrations of a receptor and a ligand

eq2_1:= Rtot = Req + Rstareq + RLeq + RstarLeq + RMeq + RstarMeq;

eq2_2:= Ltot = Leq + RLeq + RstarLeq;

eq2_3:= Mtot = Meq + RMeq + RstarMeq;

 

math

math

math

 

 

 

Write equilibrium thermodynamics equations (KA2 and KA4 are chosen to be dependent constants).

eq2_4:= K_A_1 = RLeq / (Req*Leq)

math

 

eq2_5:= K_A_2 = RstarLeq / (Rstareq*Leq)  // !!! Dependent constant

math

 

eq2_6:= K_A_3 = RMeq / (Req*Meq)

math

 

eq2_7:= K_A_4 = RstarMeq / (Rstareq*Meq)  // !!! Dependent constant

math

 

eq2_8:= K_B_1 = Rstareq / Req

math

 

eq2_9:= K_B_2 = RstarLeq / RLeq

math

 

eq2_10:= K_B_3 = RstarMeq / RMeq

math

 

 

 

 

 

Back to Contents

 

 

 

 

 

 

 

3. Derivation of equations for equilibrium concentrations

 

 

 

 

 

Try to express Leq as a function of all constants and total concentrations

 

Express [R*L]

eq2_9;

solve(%, RstarLeq);

%[1][1];

eq3_1:= RstarLeq = %

math

math

math

math

Express [R*M]

eq2_10;

solve(%, RstarMeq);

%[1][1];

eq3_2:= RstarMeq = %

math

math

math

math

Express [R*]

eq2_8;

solve(%,Rstareq);

%[1][1];

eq3_3:= Rstareq = %

math

math

math

math

Express [RLeq]

eq2_4;

solve(%,RLeq);

%[1][1];

eq3_4:= RLeq = %

math

math

math

math

Express [RMeq]

eq2_6;

solve(%,RMeq);

%[1][1];

eq3_5:= RMeq = %

math

math

math

math

 

 

 

 

Substitute in mass conservation equations (begin with shorter ones for ligands)

eq2_2;

% | eq3_1;

% | eq3_4;

eq3_6:= %:

math

math

math

Express [R] from there (keep [L] for last solving)

solve(eq3_6,Req);

%[1][1];

eq3_7:= Req = %

math

math

math

 

Use second ligand mass conservation law

eq2_3;

% | eq3_2;

% | eq3_5;

% | eq3_7;

eq3_8:= %:

math

math

math

math

Solve it for [M]

solution3_8:=solve(eq3_8,Meq);

%[1][1];

eq3_9:= Meq = %

math

math

math

 

 

Use receptor mass conservation law

eq2_1;

% | eq3_2;

% | eq3_1;

% | eq3_3;

% | eq3_4;

% | eq3_5;

% | eq3_9;

% | eq3_7;

eq3_10:=%:

math

math

math

math

math

math

math

math

 

 

Solve for [L]

solution3_10:= solve(eq3_10,Leq);

math

Insoluble in analytical form.

 

 

Back to Contents

 

 

 

 

 

 

4. Prepare equations for a  numeric solution

 

 

I will express all equilibrium concentrations in terms of each other in successive order, easy to code in Matlab.

 

 

Summary of equilibrium thermodynamics equations for U-R-RL-RM system

 

 

[L] (to be solved for)

eq3_10

math

 

[M]

eq3_9

math

 

 

[R]

eq3_7

math

 

 

[RM]

eq3_5

math

 

[RL]

eq3_4;

math

 

 

[R*]

eq3_3;

math

 

[R*M]

eq3_2;

math

 

[R*L]

eq3_1

math

 

 

 

 

 

 

 

 

 

 

 

Test equations' consistency by expressing dependentt equilibrium constants:

eq2_7;

% | eq3_3;

% | eq3_2;

% | eq3_5;

eq3_11:=%:

math

math

math

math

Correct relationship!

 

 

eq2_5;

% | eq3_3;

% | eq3_1;

% | eq3_4;

eq3_12:=%:

math

math

math

math

Correct relationship!

 

 

 

 

Back to Contents

 

 

 

 

 

6. Preparing numeric solutions

 

 

 

 

Make a function for numeric solving and switch to LRratio=Ltot/Rtot

fRtot_U_R_RL_RM:=(Rtot, LR_Ratio, MR_Ratio, Leq, K_A_1, K_A_3, K_B_1, K_B_2, K_B_3) --> eq3_10[2] | Ltot=Rtot*LR_Ratio | Mtot=Rtot*MR_Ratio

math

 

Assume some constant values for testing

Total_R:=1e-3:

Ka1:=1e7:

Ka3:=1e6:

Kb1:=2/1:

Kb2:=0.1:

Kb3:=0.1:

LRratio_max:=1.2:

MRratio_max:=1.2:

// some test point

LRratio:=0.95:

MRratio:=0.95:

 

 

Define a procedure for numeric solving the equation Rtot=f([L]) for [L] thus creating a function [L]=f(Rtot,...)

// WARNING: make sure the Leq search range starts with a non-zero number!!!! Use a number larger than that to create approximation of Ltot=0

pnLeq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   begin

      // numeric solving equation for Leq in a restricted range.

      // WARNING: make sure the range starts with a non-zero number!!!!

      result:=numeric::fsolve(

            Total_R-fRtot_U_R_RL_RM(Total_R, LRratio, MRratio, Leq, Ka1, Ka3, Kb1, Kb2, Kb3),

            Leq=10e-32..Total_R*LRratio);

     //print(result);

     // extract answer from equation

     result[1][2]

end_proc;

 

 

math

test operation

pnLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3) 

math

 

Make "portable" equations (unique names for future use):

Meq_U_R_RL_RM:=eq3_9;

Req_U_R_RL_RM:=eq3_7;

RMeq_U_R_RL_RM:=eq3_5;

RLeq_U_R_RL_RM:=eq3_4;

Rstareq_U_R_RL_RM:=eq3_3;

RstarMeq_U_R_RL_RM:=eq3_2;

RstarLeq_U_R_RL_RM:=eq3_1;

KA2_U_R_RL_RM:=eq3_12;

KA4_U_R_RL_RM:=eq3_11;

math

math

math

math

math

math

math

math

math

 

Define functions for equilibrium concentrations of all species:

 

 

 

[R]

Req_U_R_RL_RM;

pnReq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local  L;

    begin

      

      L:=pnLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [R]

      Req_U_R_RL_RM[2] | Ltot=Total_R*LRratio | Leq=L | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnReq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

 

 

[M]

Meq_U_R_RL_RM;

pnMeq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local  L;

    begin

      

      L:=pnLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [M]

      Meq_U_R_RL_RM[2] | Ltot=Total_R*LRratio  | Mtot=Total_R*MRratio | Leq=L | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnMeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

 

[RL]

RLeq_U_R_RL_RM;

pnRLeq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local  R, L;

    begin

      

      L:=pnLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

      R:=pnReq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [RL]

      RLeq_U_R_RL_RM[2]  | Req=R | Leq=L | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnRLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

[RM]

RMeq_U_R_RL_RM;

pnRMeq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local M, R;

    begin

      

      R:=pnReq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

      M:=pnMeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [RM]

      RMeq_U_R_RL_RM[2]  | Req=R | Meq=M | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnRMeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

 

 

[R*]

Rstareq_U_R_RL_RM;

pnRstareq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local R;

    begin

      

      R:=pnReq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [R*]

      Rstareq_U_R_RL_RM[2]  | Req=R  | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnRstareq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

 

 

[R*L]

RstarLeq_U_R_RL_RM;

pnRstarLeq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local RL;

    begin

      

      RL:=pnRLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [R*L]

      RstarLeq_U_R_RL_RM[2]  | RLeq=RL  | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnRstarLeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

 

 

[R*M]

RstarMeq_U_R_RL_RM;

pnRstarMeq_U_R_RL_RM:= proc(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

   // Parameter names should be different from

   // variable names used in the equation!!!

   local RM;

    begin

      

      RM:=pnRMeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3);

        

      // Equation for [R*M]

      RstarMeq_U_R_RL_RM[2]  | RMeq=RM  | K_A_1=Ka1 | K_A_3=Ka3 | K_B_1=Kb1 | K_B_2=Kb2 | K_B_3=Kb3;

     

    end_proc

math

math

Test

pnRstarMeq_U_R_RL_RM(Total_R, LRratio, MRratio, Ka1, Ka3, Kb1, Kb2, Kb3)

math

 

 

 

 

 

 

 

 

Back to Contents

 

 

 

 

8. Save results on disk for future use

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

 

ProjectName

math

 

Save all numeric solutions:

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

write(filename,

// save basic equations

Meq_U_R_RL_RM,

Req_U_R_RL_RM,

RMeq_U_R_RL_RM,

RLeq_U_R_RL_RM,

Rstareq_U_R_RL_RM,

RstarMeq_U_R_RL_RM,

RstarLeq_U_R_RL_RM,

 

// save dependent constants

KA2_U_R_RL_RM,

KA4_U_R_RL_RM,

 

// save numeric procedures

fRtot_U_R_RL_RM,

pnLeq_U_R_RL_RM,

pnMeq_U_R_RL_RM,

pnReq_U_R_RL_RM,

pnRMeq_U_R_RL_RM,

pnRLeq_U_R_RL_RM,

pnRstareq_U_R_RL_RM,

pnRstarMeq_U_R_RL_RM,

pnRstarLeq_U_R_RL_RM)

 

math

 

 

 

 

 

 

Conclusions

 

1. This system is analytically insoluble.

 

2. I derived numeric solutions and saved them.

 

 

 

Back to Contents