simul.next.resident simulates a time step, i.e. computes effects of a new mutation and gives next resident values whatever this mutation is fixed or not
simul.next.resident(E_res_fun, kin_fun, Keq_fun, N_fun,
correl_fun, beta_fun=NULL, X_fun=1, max_mut_size_E=1, max_mut_size_A=1,
pmutA=0, typ_E=1, typ_A=1, use.old.mut=FALSE)Numeric vector of enzyme concentrations (resident)
Numeric vector of kinetic parameters (catalytic constant kcat divided by Michaelis constant Km)
Numeric vector of equilibrium constants
Numeric. Population size
Character string indicating the abbreviation of the constraint applied on the system
Matrix of co-regulation coefficients
Numeric. Numerator of function flux. Default is 1
Numeric. Maximum absolute size of mutation for enzyme concentrations. Default is 1
Numeric. Maximum absolute size of mutation for kinetic parameters. Default is 1
Numeric. Mutation probability of kinetic parameters.
Higher pmutA, higher the mutation probability of kinetic parameters compared to enzyme concentrations.
Default is 0, i.e. no mutation of kinetic parameters
Numeric for mutation method. Authorized values: 1 or 2. Default is 1.
Numeric for mutation method. Default is 1. See details in mut.kin.
Logical. If FALSE (default), use mut.E.direct mutation method, else use mut.E.old mutation method if TRUE
Returns a list of 7 elements:
$E_next: numeric vector (length n) of the enzyme concentrations of next resident
$kin_next: numeric vector (length n) of the kinetic parameters of next resident
$Etot_next: numeric, the total concentration of next resident
$kintot_next: numeric, the total kinetic of next resident
$J_next: numeric, flux of next resident
$size_mut: numeric, mutation size, even if it is not fixed
$target_mut: numeric, number of enzyme targeted by the mutation
Note that n is the number of enzymes, which is the length of E_res_fun.
This function gives the genotype (enzyme concentrations and activities) and phenotype (flux) values of the next resident in an haploid population after a time step. Here, a time step corresponds to the apparition and fixation (or disappearance) of a mutation targeting one enzyme. Therefore a time step is the interval between appearances of two successive mutations.
This function is used for simulation of enzyme concentration evolution.
Algorithm
target enzyme and mutation sign are chosen randomly with a uniform law
mutation targets randomly concentration or kinetic parameter depending on pmutA value
mutation size is chosen randomly between 0 and max_mut_size_E for concentrations (resp. max_mut_size_A for kinetic parameters), then multiplied by its sign
mutation effects on all enzymes are computed with function mut.E.direct (resp. mut.kin). The input mutation method is only available for mut.E.old, but multiplicative mutation method typ_E=2 is not accurate in case of regulation
if concentration or kinetic parameter become negative, which is biologically impossible, they are set to 0
activities, then flux are computed
selection coefficient is also computed, considering flux as fitness
fixation probability of this mutation is computed
fixation of this mutation is random, depending on this fixation probability: if mutation is fixed, mutant become resident for next step, else resident is unchanged for next step
returns value of the resident for next step
Algorithm is also detailed in Coton et al. (2021)
Coton et al. (2021)
See function mut.E.direct and mut.kin to see how enzymes are mutated.
Fitness is computed with function flux.
# NOT RUN {
E <- c(30,30,30)
kin <- c(53/0.29,50/0.78,29)
Keq <- c(1.1e+8,4.9e+3,1.1e+3)
beta <- matrix(c(1,10,5,0.1,1,0.5,0.2,2,1),nrow=3)
correl <- "RegPos"
N <- 1000
simul.next.resident(E, kin, Keq, N, correl, beta, pmutA=0.1)
# }
Run the code above in your browser using DataLab