-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsel_example2.slim
More file actions
54 lines (43 loc) · 1.45 KB
/
sel_example2.slim
File metadata and controls
54 lines (43 loc) · 1.45 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
initialize() { //15.6 pg 275
defineConstant("optimum", 5.0);
defineConstant("sigma_K", 1.0);
defineConstant("sigma_C", 0.4);
defineConstant("NORM", dnorm(0.0, mean=0, sd=sigma_C));
initializeMutationRate(1e-6);
initializeMutationType("m1", 0.5, "f", 0.0);
initializeMutationType("m2", 0.5, "n", 0.0, 1.0);
m2.convertToSubstitution = F;
initializeGenomicElementType("g1", c(m1, m2), c(1, 0.01));
initializeGenomicElement(g1, 0, 1e5 - 1);
initializeRecombinationRate(1e-8);
initializeInteractionType(1, "", reciprocal=T); // competition
i1.setInteractionFunction("f", 1.0);
}
fitness(m2) { return 1.0; }
1 late() {
sim.addSubpop("p1", 500);
}
1: late() {
inds = sim.subpopulations.individuals;
// construct phenotypes and fitness effects from QTLs
phenotypes = inds.sumOfMutationsOfType(m2);
inds.fitnessScaling = 1.0 + dnorm(phenotypes, optimum, sigma_K);
inds.tagF = phenotypes;
// evaluate phenotypic competition
i1.evaluate();
competition = sapply(inds, "sum(i1.strength(applyValue));");
effects = 1.0 - competition / size(inds);
inds.fitnessScaling = inds.fitnessScaling * effects;
}
interaction(i1) {
return dnorm(exerter.tagF, receiver.tagF, sigma_C) / NORM; }
1:2001 late() {
if (sim.generation == 1)
cat(" gen mean sd\n");
if (sim.generation % 100 == 1)
{
phenotypes = p1.individuals.tagF;
cat(format("%5d ", sim.generation));
cat(format("%6.2f ", mean(phenotypes)));
cat(format("%6.2f\n", sd(phenotypes)));
} }