Team:British Columbia/Consortia

From 2012.igem.org

(Difference between revisions)
(Matlab Code)
(Matlab Code)
Line 153: Line 153:
% 1) Declare the name of the function:
% 1) Declare the name of the function:
-
function dy = iGEM2012_Ruichen(t,y);
+
function dy = UBCiGEM2012_ConsortiaModel(t,y);
% 2) define all your ODE variables clearly for your own understanding as they can get quite confusing if you don't.  
% 2) define all your ODE variables clearly for your own understanding as they can get quite confusing if you don't.  
Line 185: Line 185:
% 3) define your constants first that will not depend on variables
% 3) define your constants first that will not depend on variables
 +
 +
% in our case, it was all measured through our own wet lab data and is explained in the previous section
%define maximum growth rate constants
%define maximum growth rate constants
-
u_maxtrpA = 0.2442;   % units = hr-1
+
u_maxtrpA = 0.2442;     % units = hr-1
u_maxmetA = 0.5524;    % units = hr-1
u_maxmetA = 0.5524;    % units = hr-1
-
u_maxtyrA = 0.3332;   % units = hr-1
+
u_maxtyrA = 0.3332;     % units = hr-1
%define half-velocity constants
%define half-velocity constants
-
Ks_trpA = 1E-7;     % units = M
+
Ks_trpA = 1E-7;       % units = M
-
Ks_metA = 5E-6;     % units = M
+
Ks_metA = 5E-6;     % units = M
-
Ks_tyrA = 8.36E-8; % units = M
+
Ks_tyrA = 8.36E-8;   % units = M
Line 213: Line 215:
-
% 4) write out ODE CODE, suggest to write out all equations on paper first, as they are more clear than coding them directly.  
+
% 4) write out ODE CODE, suggest to write out all equations on paper first, as they are a lot more clear than coding them directly, and will reduce the chance for you to make error why coding significantly.  
dy = zeros(6,1);
dy = zeros(6,1);
Line 228: Line 230:
dy(6) = (u_maxtyrA*y(3))/(Ks_tyrA+y(3))*(y(6));
dy(6) = (u_maxtyrA*y(3))/(Ks_tyrA+y(3))*(y(6));
 +
 +
% note: '''For easy coding and checking purposes, all this equations are exactly the same as the one shown in equation (1), (2), and (3) for dy(1), dy(2), and dy(3) respectively, with also the same arrangements of each equation terms within them.'''
 +
 +
% and '''Please also note:''' these equation has been derived with direct simple substitution of equations, where equation (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14) and (15) have been substituted into the equation (1), (2) and (3).
%if you want, you can choose to plot diagrams and display the predicting dynamics within the mfile  
%if you want, you can choose to plot diagrams and display the predicting dynamics within the mfile  

Revision as of 20:29, 2 October 2012

British Columbia - 2012.igem.org

Modeling Microbial Consortia: The Auxotroph Approach

To gain a predictive understanding of consortium dynamics in the wet lab, we chose to model a system of simple auxotrophic interdependence. This system also enables us to establish a rapid foundation for which to conduct preliminary model refinements.

The three interdependent E. coli auxotrophs studied in our project are ΔtrpA, ΔmetA, and ΔtyrA. These three strains are deficient in the production of the amino acids tryptophan, methionine, and tyrosine, respectively. Thus, in order for each strain to survive, they must exist in the context of a consortium. Our model is designed to predict the growth and survival of such a system, and is based on the measured amino acid excretion rates under basal genomic expression. The model is written such that it can be easily updated when specific tuning of the amino acid production rates is desired (for example, by introducing induction systems for amino acid production in trans), rendering it ideal for modeling tuned and un-tuned consortium dynamics.

The key assumption for this model is that the tryptophan, tethionine, and tyrosine are the only growth limiting substrates for the ΔtrpA, ΔmetA, and ΔtyrA E. coli knock outs respectively.

One important equation which has been incorporated into our model is the Monod equation. This equation is most commonly used to model microbial growth and has been shown to fit a large variety of empirical data[1]. In addition, it shares the key assumption described above. This equation relates the specific growth rate (µg, the increase in cell mass per unit time) as function of the maximum growth rate (µm), and the concentration of a limiting substrate (S). The equation is written as follows:

British Columbia 2012 MonodEquation.png

where KS is the limiting substrate concentration when the specific growth rate is at half maximum (KS = S when µg = µm/2). KS is also known as the saturation constant or half-velocity constant[1].


Contents

Equations and Constants:

British Columbia 2012 governing Equation.png








Some of the key constants for the Monod Kinetics are obtained through analyzing various growth rates under different known amino acid concentrations. The values are listed as follows:

British Columbia 2012 constants from GrowthRates.png

and its wet lab data used is mainly based on the following graphs:


GrowthRatesAA university of british columbia.png

Figure 1: Monoculture Growth Rates at various Limiting Amino Acid Concentrations

GrowthRatesAA LOG university of british columbia.png

Figure 2: Log Scale of Monoculture Growth Rates at various Limiting Amino Acid Concentrations



Also, we assumed that the amino acid consumption is solely depended on the cell growth and not the cell self maintenance. thus they are also obtained directly using our own wet lab data for these specific E. coli. We grew TrpA-, MetA-, and TryA- E. coli knock outs in 50 ml flasks with known initial Tryptophan, Methionine, and Tyrosine concentrations (5E-5 M) respectively, and harvested 5ml of cell free supernatants at various ODs. All these supernatants served as new 96-well plate media for each knock out cultures with newly added M9-Glucose shots (2% glucose in the well), which made sure the Amino Acid will be the limiting substrate for all knock outs. (Through previous experiments, we found that the each of the knockout monocultures will reach to a certain final OD, with respect to the media amino acid concentrations, thus we generated a calibration curve to relate the limiting amino acid concentration to their final OD readings.) These calibration curves are shown below:

ODcalibrationTrp university of british columbia.png

Figure 3: trpA- Final OD and Trp Concentration Calibration Curve


ODcalibrationMet university of british columbia.png

Figure 4: metA- Final OD and Met Concentration Calibration Curve


ODcalibrationTyr university of british columbia.png

Figure 5: tyrA- Final OD and Tyr Concentration Calibration Curve


Note: We also tested the accuracy of one of the calibration curves. The blue dot in Figure 5 is another data value we obtained later at a known Tyrosine concentration (5E-5 M), and it is reasonably close to the predicted curve though not exactly the same. We are aware that this curve has limitation, mainly due to the big error bars at the higher OD data points, though this test point has proven that this calibration curve can serve us well at this stage of the research. Also, A Programmable Escherichia coli Consortium via Tunable Symbiosis also proved that this technique could be used for this purpose. (How should I say this, or should i say this at all??????????)

After growing the inoculated 96-well plate in humidified temperature control (37 deg) plate reader for 15 hours, their growth curves had been captured and most of the monocultures had reached their stationary phase, and the plate was then transferred to 37 deg room to obtain the remaining final OD readings.

Based on the calibration curves above, the amino acid concentrations in the wells were calculated, and when corrected with a dilution factor of 5/4 (when we added in the M9-Glucose shot, it was 1/5 of the total well media volume), we arrived at the corresponding supernatant amino acid concentration at various monoculture OD readings. With the assumption that the only change in the amino acid concentration in the media is due to cell growths, and as they are specific knock outs, they were not able to produce any amino acid into the environment, each auxotrophs' consumption constant with respect to cell growth rate are calculated. Their values are:

ConsumptionRateConstants university of british columbia.png



Moreover, in co-culture environment, to relate the contributions of the amino acid concentrations to the environment (media) of monocultures, the closest assumption we can make is that they will behave similarly to when they are in the monoculture conditions. Thus, we used the same method of relating the final OD to the limiting substrate amino acid concentration in the media, and found out the other two non-limiting amino acid concentrations of each knocked out E. coli auxotrophs (ΔtrpA, ΔmetA, and ΔtyrA) at various OD readings [2??]. With the consideration of sample taken time and some calculations, we were able to derive six functions that relate the change of all amino acid concentrations with respect to time (d[AA]/dt) with each auxotrophs' optical densities (ODaa), which is shown below:

MetofTrp university of british columbia.png

Figure 6: Change in Trp concentration as a function of metA- OD

TyrofTrp university of british columbia.png

Figure 7: Change in Trp concentration as a function of tyrA- OD

TrpofMet university of british columbia.png

Figure 8: Change in Met concentration as a function of trpA- OD

TyrofMet university of british columbia.png

Figure 9: Change in Met concentration as a function of tyrA- OD

TrpofTyr university of british columbia.png

Figure 10: Change in Tyr concentration as a function of trpA- OD

MetofTyr university of british columbia.png

Figure 11: Change in Tyr concentration as a function of metA- OD




Based on these approximated functions, we were able to obtain the equations used in equations (1), (2), and (3):

Equation10-15 data analyzed data university of british columbia.png



Note: I will then 'INDICATE THE LIMITATIONS OF THESE EQUATIONS and the future work needed to improve the accuracy significantly


Matlab Code

Now with all the key functions and constants approximated, we are able to encode our model into Matlab, where the six key ODE functions can be solved and output the our prediction of population dynamics

The code is shown below, which contains a detailed step by step instruction for future iGEM teams or related scientific researches use, as well as the clarifications of our own code. It is also written is a way that can be directly copy and paste into Matlab m.files with all the comments in Matlab commenting format, and can read the instruction and explanation in the coding command window without having to switching the windows.

Code begins here:

% input the following commands, which are all bolded, into MATLAB command window, and not the m.file, before you call the ODE function

%firstly, define a time array, set the upper limit to be the time (hr) you want this model to predict. For this model to be accurate, it is advised not to use extreme values.

%in our cases, the upper limit is set to 12 as some of the modelling equations are based on 11 hour culture supernatant data. Thus accuracy is expected within 12 hours.

% >> xspan = [0 12];

%in order to set up the initial conditions, where they corespond to the initial values of y(1), y(2), y(3)..., to y(6) in our case, and y(n) if you have n number of ODE equations

% >> ynot = [1E-7 1E-7 1E-7 0.01 0.01 0.01]';

% the first three values are the initial values for y(1), y(2), and y(3) respectively, which in out cases are the initial amino acid concentrations, and as we are adding the cells directly into the M9 media without supplementing any amino acids, it is believed to be at very low concentrations, and thus is set to 1E-7 mole/L.

% the remaining three values are the initial conditions for y(4), y(5), and y(6), which are the initial cell ODs in out case, and they are all set 0.01, which is based on the lower values of the OD plate readings after correcting with blanks.

%Then RUN THE FUNCTION

% >>[X,Y] = ode45(@UBCiGEM2012_ConsortiaModel,xspan,ynot);

% this takes the function name in your m.file, the range of your interest, and the initial conditions which is just defined, respectively

%Note: have to make sure that the name is exactly the same as the function name in your m.file for it to be able to run correctly.


%the following code is for the actual mfile.

% 1) Declare the name of the function:

function dy = UBCiGEM2012_ConsortiaModel(t,y);

% 2) define all your ODE variables clearly for your own understanding as they can get quite confusing if you don't.

% in our case:

% y(1) = [Trp];

% dy(1) = d[Trp]/dt

% y(2) = [Met];

% dy(2) = d[Met]/dt;

% y(3) = [Tyr];

% dy(3) = d[Tyr]/dt;

% y(4) = [OD_trpA-];

% dy(4) = d[OD_trpA-]/dt;

% y(5) = [OD_tyrA-];

% dy(5) = d[OD_tyrA-]/dt;

% y(6) = [OD_metA-];

% dy(6) = d[OD_metA-]/dt;


% 3) define your constants first that will not depend on variables

% in our case, it was all measured through our own wet lab data and is explained in the previous section

%define maximum growth rate constants

u_maxtrpA = 0.2442;  % units = hr-1

u_maxmetA = 0.5524;  % units = hr-1

u_maxtyrA = 0.3332;  % units = hr-1


%define half-velocity constants

Ks_trpA = 1E-7;  % units = M

Ks_metA = 5E-6;  % units = M

Ks_tyrA = 8.36E-8;  % units = M


%define the consumption rate constants

a1 = 4.08E-4;  %units= M/OD

a2 = 1.44E-4;  %units= M/OD

a3 = 1.23E-5;  %units= M/OD


% 4) write out ODE CODE, suggest to write out all equations on paper first, as they are a lot more clear than coding them directly, and will reduce the chance for you to make error why coding significantly.

dy = zeros(6,1);

dy(1) = ((1e-8)*(exp(1))^(16.586*y(4))) + ((-0.023*(y(5))^2)+0.021*y(5)-3.5e-3) - a1*(u_maxtrpA*(y(1))/(Ks_trpA+y(1)))*y(4);

dy(2) = ((9e-6)*(y(6))^2-(7e-6)*y(6)+1e-6) + (((2e-6)*(y(4))^2)-(2e-6)*y(4)+9e-7) - a2*(u_maxmetA*(y(2))/(Ks_metA+y(2)))*y(5);

dy(3) = ((3e-7)*(y(4))^2-(8e-7)*y(4)+4e-7) + (((1e-6)*(y(5))^2)-(2e-6)*y(5)+6e-7) - a3*(u_maxtyrA*(y(3))/(Ks_tyrA+y(3)))*y(6);

dy(4) = (u_maxtrpA*y(1))/(Ks_trpA+y(1))*(y(4));

dy(5) = (u_maxmetA*y(2))/(Ks_metA+y(2))*(y(5));

dy(6) = (u_maxtyrA*y(3))/(Ks_tyrA+y(3))*(y(6));

% note: For easy coding and checking purposes, all this equations are exactly the same as the one shown in equation (1), (2), and (3) for dy(1), dy(2), and dy(3) respectively, with also the same arrangements of each equation terms within them.

% and Please also note: these equation has been derived with direct simple substitution of equations, where equation (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14) and (15) have been substituted into the equation (1), (2) and (3).

%if you want, you can choose to plot diagrams and display the predicting dynamics within the mfile

%or manually plot the arrays of your interest in command window

%For example, for this project, we are interesting in predicting the ODs of each auxotrophs, thus, we can manually plot values in y(1), y(2), and y(3) agaisnt time. by typing the command after run the ODE45 functions:

%>>plot(X,Y(:,4:6))


Note: I will indicate here that the direct translation of the previous discussed equations with simple substitutions at either the beginning or the end of this section

Simulation and Analysis

When the previous matlab code was run, it predicted the population dynamics without inducing as shown in the following diagram:


Center

Figure#. Population Dynamics Prediction within Confidence Range


Center

Figure#. Population Dynamics Prediction for 16 hours


Center

Figure#. Population Dynamics 16-hour Prediction after eliminating one potential inaccurate function


Center

Figure#. Population Dynamics 12-hour Prediction after eliminating one potential inaccurate function


700x700px




As mentioned at the beginning, this code can be generalized to predict the population dynamics when there is a tuning effect, therefore we can use this model to see decide the amount of tuning we need to control the desired relative population of each auxotrophs.




References

[1] Shuler, ML; Kargi, F; Bioprocess Engineering Basic Concepts, 2002 2nd edition. Prentice Hall PTR.

[2]  ????The Consortia Paper (this will be cited many places, and should be consistent in format.