Team:Paris/Modeling/Implementation
From 2008.igem.org
(Difference between revisions)
(→Parameters Finder for our Example) |
(→Parameters Finder for our Example) |
||
Line 22: | Line 22: | ||
* <span style="color:#0000FF;">ƒ5( [''FlhDC''], 0 ) = ''β<sub>24</sub> * ƒ<sub>hill</sub>''( [''FlhDC''], ''K<sub>2</sub>'', ''n<sub>2</sub>'' )</span> and | * <span style="color:#0000FF;">ƒ5( [''FlhDC''], 0 ) = ''β<sub>24</sub> * ƒ<sub>hill</sub>''( [''FlhDC''], ''K<sub>2</sub>'', ''n<sub>2</sub>'' )</span> and | ||
* <span style="color:#0000FF;">ƒ5( 0, [''FliA''] ) = ''β<sub>25</sub> * ƒ<sub>hill</sub>''( [''FliA''], ''K<sub>8</sub>'', ''n<sub>8</sub>'' )</span> | * <span style="color:#0000FF;">ƒ5( 0, [''FliA''] ) = ''β<sub>25</sub> * ƒ<sub>hill</sub>''( [''FliA''], ''K<sub>8</sub>'', ''n<sub>8</sub>'' )</span> | ||
+ | |||
+ | <html><pre class="codeinput"> | ||
+ | <span class="keyword">function</span> optimal_parameters = find_FP(X_data, Y_data, initial_parameters) | ||
+ | |||
+ | <span class="Comment">% gives the 'best parameters' involved in f4, f5, f6, f7 or f8 with FlhDC = 0 | ||
+ | </span> | ||
+ | <span class="Comment">% or FliA = 0 by least-square optimisation | ||
+ | </span> | ||
+ | |||
+ | <span class="Comment">% X_data = vector of given values of [FliA]i or [FlhDC]i (experimentally | ||
+ | </span> | ||
+ | <span class="Comment">% controled) | ||
+ | </span> | ||
+ | <span class="Comment">% Y_data = vector of experimentally measured values f4, f5, f6, f7 or f8 corresponding of | ||
+ | </span> | ||
+ | <span class="Comment">% the X_data | ||
+ | </span> | ||
+ | <span class="Comment">% initial_parameters = values of the parameters proposed by the literature | ||
+ | </span> | ||
+ | <span class="Comment">% or simply guessed | ||
+ | </span> | ||
+ | <span class="Comment">% = [beta, K -> (K)/(coef), n] | ||
+ | </span> | ||
+ | |||
+ | |||
+ | <span class="keyword">function</span> output = expr_pProm(parameters, X_data) | ||
+ | <span class="keyword">for</span> k = 1:length(X_data) | ||
+ | output(k) = parameters(1)*hill(X_data(k), parameters(2), parameters(3)) ; | ||
+ | <span class="keyword">end</span> | ||
+ | <span class="keyword">end</span> | ||
+ | |||
+ | options = optimset(<span class="string">'LevenbergMarquardt'</span>,<span class="string">'on'</span>,<span class="string">'TolX'</span>,1e-10,<span class="string">'MaxFunEvals'</span>,1e10,<span class="string">'TolFun'</span>,1e-10,<span class="string">'MaxIter'</span>,1e4); | ||
+ | <span class="Comment">% options for the function lsqcurvefit | ||
+ | </span> | ||
+ | |||
+ | optimal_parameters = lsqcurvefit( @(parameters, X_data) expr_pProm(parameters, X_data), initial_parameters, X_data, Y_data,... | ||
+ | 1/10*initial_parameters, 10*initial_parameters, options ); | ||
+ | <span class="Comment">% search for the fittest parameters, between 1/10 and 10 times the initial | ||
+ | </span> | ||
+ | <span class="Comment">% parameters | ||
+ | </span> | ||
+ | |||
+ | <span class="keyword">end</span> | ||
+ | |||
+ | </pre></html> |
Revision as of 21:22, 27 October 2008
Implementation
[Back to "Workflow on an Example"] We use Matlab for all implementations. Parameters Finder Programsthe datasThe experimental datas consist typically in two tables, X_data (various concentrations of the transcription factor) and Y_data (corresponding output values).
Parameters Finder for our ExampleWe just write here the annoted program find_FP that is used to estimate, for instance, the parameters in :
function optimal_parameters = find_FP(X_data, Y_data, initial_parameters) % gives the 'best parameters' involved in f4, f5, f6, f7 or f8 with FlhDC = 0 % or FliA = 0 by least-square optimisation % X_data = vector of given values of [FliA]i or [FlhDC]i (experimentally % controled) % Y_data = vector of experimentally measured values f4, f5, f6, f7 or f8 corresponding of % the X_data % initial_parameters = values of the parameters proposed by the literature % or simply guessed % = [beta, K -> (K)/(coef), n] function output = expr_pProm(parameters, X_data) for k = 1:length(X_data) output(k) = parameters(1)*hill(X_data(k), parameters(2), parameters(3)) ; end end options = optimset('LevenbergMarquardt','on','TolX',1e-10,'MaxFunEvals',1e10,'TolFun',1e-10,'MaxIter',1e4); % options for the function lsqcurvefit optimal_parameters = lsqcurvefit( @(parameters, X_data) expr_pProm(parameters, X_data), initial_parameters, X_data, Y_data,... 1/10*initial_parameters, 10*initial_parameters, options ); % search for the fittest parameters, between 1/10 and 10 times the initial % parameters end |