Description Usage Arguments Details Value Note Author(s) References See Also Examples
Generate random fitness landscapes under a House of Cards, Rough Mount Fuji (RMF), additive (multiplicative) model, Kauffman's NK model, Ising model, Eggbox model and Full model
1 2 3 4 5 6 7 | rfitness(g, c = 0.5, sd = 1, mu = 1, reference = "random", scale = NULL,
wt_is_1 = c("subtract", "divide", "force", "no"),
log = FALSE, min_accessible_genotypes = NULL,
accessible_th = 0, truncate_at_0 = TRUE,
K = 1, r = TRUE, i = 0, I = -1, circular = FALSE, e = 0, E = -1,
H = -1, s = 0.1, S = -1, d = 0, o = 0, O = -1, p = 0, P = -1,
model = c("RMF", "Additive", "NK", "Ising", "Eggbox", "Full"))
|
g |
Number of genes. |
c |
The decrease in fitness of a genotype per each unit increase
in Hamming distance from the reference genotype for the RMF model
(see |
sd |
The standard deviation of the random component (a normal
distribution of mean |
mu |
The mean of the random component (a normal distribution of
mean |
reference |
The reference genotype: in the RMF model, for the
deterministic, additive part, this is the genotype with maximal
fitness, and all other genotypes decrease their fitness by |
scale |
Either NULL (nothing is done) or a two-element vector. If a
two-element vector, fitness is re-scaled between |
wt_is_1 |
If "divide" the fitness of all genotypes is
divided by the fitness of the wildtype (after possibly adding a value
to ensure no negative fitness) so that the wildtype (the genotype with
no mutations) has fitness 1. This is a case of scaling, and it is
applied after If "subtract" (the default) we shift all the fitness values (subtracting fitness of
the wildtype and adding 1) so that the wildtype ends up with a fitness
of 1. This is also applied after If "force" we simply set the fitness of the wildtype to 1, without any
divisions. This means that the If "no", the fitness of the wildtype is not modified. |
log |
If TRUE, log-transform fitness. Actually, there are two
cases: if |
min_accessible_genotypes |
If not NULL, the minimum number of
accessible genotypes in the fitness landscape. A genotype is
considered accessible if you can reach if from the wildtype by going
through at least one path where all changes in fitness are larger or
equal to If the condition is not satisfied, we continue generating random fitness landscapes with the specified parameters until the condition is satisfied. (Why check against NULL and not against zero? Because this allows you to count accessible genotypes even if you do not want to ensure a minimum number of accessible genotypes.) |
accessible_th |
The threshold for the minimal change in fitness at
each mutation step (i.e., between successive genotypes) that allows a
genotype to be regarded as accessible. This only applies if
|
truncate_at_0 |
If TRUE (the default) any fitness <= 0 is substituted by a small positive constant (a random uniform number between 1e-10 and 1e-9). Why? Because MAGELLAN and some plotting routines can have trouble (specially if you log) with values <=0. Or we might have trouble if we want to log the fitness. This is done after possibly taking logs. Noise is added to prevent creating several identical minimal fitness values. |
K |
K for NK model; K is the number of loci with which each locus interacts, and the larger the K the larger the ruggedness of the landscape. |
r |
For the NK model, whether interacting loci are chosen at random
( |
i |
For de Ising model, i is the mean cost for incompatibility with which the genotype's fitness is penalized when in two adjacent genes, only one of them is mutated. |
I |
For the Ising model, I is the standard deviation for the cost incompatibility (i). |
circular |
For the Ising model, whether there is a circular arrangement, where the last and the first genes are adjacent to each other. |
e |
For the Eggbox model, mean effect in fitness for the neighbor locus +/- e. |
E |
For the Eggbox model, noise added to the mean effect in fitness (e). |
H |
For Full models, standard deviation for the House of Cards model. |
s |
For Full models, mean of the fitness for the Multiplicative model. |
S |
For Full models, standard deviation for the Multiplicative model. |
d |
For Full models, a disminishing (negative) or increasing (positive) return as the peak is approached for multiplicative model. |
o |
For Full models, mean value for the optimum model. |
O |
For Full models, standard deviation for the optimum model. |
p |
For Full models, the mean production value for each non 0 allele in the Optimum model component. |
P |
For Full models, the associated stdev (of non 0 alleles) in the Optimum model component. |
model |
One of "RMF" (default) for Rough Mount Fuji, "Additive" for Additive model, "NK", for Kauffman's NK model, "Ising" for Ising model, "Eggbox" for Eggbox model or "Full" for Full models. |
When using model = "RMF"
, the model used here follows
the Rough Mount Fuji model in Szendro et al., 2013 or Franke et al.,
2011. Fitness is given as
f(i) = -c d(i, reference) + x_i
where d(i, j) is the Hamming distance between genotypes i
and j (the number of positions that differ) and x_i is a
random variable (in this case, a normal deviate of mean mu
and standard deviation sd
).
When using model = "RMF"
, setting c = 0 we obtain a House
of Cards model. Setting sd = 0 fitness is given by the
distance from the reference and if the reference is the genotype
with all positions mutated, then we have a fully additive model
(fitness increases linearly with the number of positions mutated),
where all mutations have the same effect.
More flexible additive models can be used using model =
"Additive"
. This model is like the Rough Mount Fuji model in Szendro
et al., 2013 or Franke et al., 2011, but in this case, each locus can
have different contributions to the fitness evaluation. This model is
also referred to as the "multiplicative" model in the literature as it
is additive in the log-scale (e.g., see Brouillet et al., 2015 or
Ferretti et al., 2016). The contribution of each mutated allele to the
log-fitness is a random deviate from a Normal distribution with
specified mean mu
and standard deviation sd
, and the
log-fitness of a genotype is the sum of the contributions of each
mutated allele. There is no "reference" genotype in the Additive
model. There is no epistasis in the additve model because the effect
of a mutation in a locus does not depend on the genetic background, or
whether the rest of the loci are mutated or not.
When using model = "NK"
fitness is drawn from a uniform (0, 1)
distribution.
When using model = "Ising"
for each pair of interacting loci,
there is an associated cost if both alleles are not identical
(and therefore 'compatible').
When using model = "Eggbox"
each locus is either high or low fitness,
with a systematic change between each neighbor.
When using model = "Full"
, the fitness is computed with different
parts of the previous models depending on the choosen parameters described
above.
For model = "NK" | "Ising" | "Eggbox" | "Full"
the fitness
landscape is generated by directly calling the fl_generate
function of MAGELLAN
(http://wwwabi.snv.jussieu.fr/public/Magellan/). See details in
Ferretti et al. 2016, or Brouillet et al., 2015.
For OncoSimulR, we often want the wildtype to have a mean of
1. Reasonable settings when using RMF are mu = 1
and wt_is_1 =
'subtract'
so that we simulate from a distribution centered in 1, and
we make sure afterwards (via a simple shift) that the wildtype is
actuall 1. The sd
controls the standard deviation, with the
usual working and meaning as in a normal distribution, unless c
is different from zero. In this case, with c
large, the range
of the data can be large, specially if g
(the number of genes)
is large.
An matrix with g + 1
columns. Each column corresponds to a
gene, except the last one that corresponds to fitness. 1/0 in a gene
column denotes gene mutated/not-mutated. (For ease of use in other
functions, this matrix has class "genotype_fitness_matrix".)
If you have specified min_accessible_genotypes > 0
, the return
object has added attributes accessible_genotypes
and
accessible_th
that show the number of accessible
genotypes under the specified threshold.
MAGELLAN uses its own random number generating functions; using
set.seed
does not allow to obtain the same fitness landscape
repeatedly.
Ramon Diaz-Uriarte for the RMF and general wrapping code. S. Brouillet, G. Achaz, S. Matuszewski, H. Annoni, and L. Ferreti for the MAGELLAN code. Further contributions to the additive model and to wrapping MAGELLAN code and documentation from Guillermo Gorines Cordero, Ivan Lorca Alonso, Francisco Muñoz Lopez, David Roncero Moroño, Alvaro Quevedo, Pablo Perez, Cristina Devesa, Alejandro Herrador.
Szendro I.~G. et al. (2013). Quantitative analyses of empirical fitness landscapes. Journal of Statistical Mehcanics: Theory and Experiment\/, 01, P01005.
Franke, J. et al. (2011). Evolutionary accessibility of mutational pathways. PLoS Computational Biology\/, 7(8), 1–9.
Brouillet, S. et al. (2015). MAGELLAN: a tool to explore small fitness landscapes. bioRxiv, 31583. http://doi.org/10.1101/031583
Ferretti, L., Schmiegelt, B., Weinreich, D., Yamauchi, A., Kobayashi, Y., Tajima, F., & Achaz, G. (2016). Measuring epistasis in fitness landscapes: The correlation of fitness effects of mutations. Journal of Theoretical Biology\/, 396, 132–143. https://doi.org/10.1016/j.jtbi.2016.01.037
MAGELLAN web site: http://wwwabi.snv.jussieu.fr/public/Magellan/
oncoSimulIndiv
,
plot.genotype_fitness_matrix
,
evalAllGenotypes
allFitnessEffects
plotFitnessLandscape
Magellan_stats
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ## Random fitness for four genes-genotypes,
## plotting and simulating an oncogenetic trajectory
r1 <- rfitness(4)
plot(r1)
oncoSimulIndiv(allFitnessEffects(genotFitness = r1))
## NK model
rnk <- rfitness(5, K = 3, model = "NK")
plot(rnk)
oncoSimulIndiv(allFitnessEffects(genotFitness = rnk))
## Additive model
radd <- rfitness(4, model = "Additive", mu = 0.2, sd = 0.5)
plot(radd)
## Eggbox model
regg = rfitness(g=4,model="Eggbox", e = 2, E=2.4)
plot(regg)
## Ising model
ris = rfitness(g=4,model="Ising", i = 0.002, I=2)
plot(ris)
## Full model
rfull = rfitness(g=4, model="Full", i = 0.002, I=2,
K = 2, r = TRUE,
p = 0.2, P = 0.3, o = 0.3, O = 1)
plot(rfull)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.