Master 2 BV, specialties “SEPPRO&SPP” and “Santé des Plantes - PHP”. Duration: about 2 hours. You may work alone or in pairs.
This exercise uses a GroIMP model based on: Drazeta L., Lang A., Hall A.J., Volz R.K., Jameson P.E. (2004). Modelling the influence of seed set on fruit shape in apple. Journal of Horticultural Science & Biotechnology 79(2): 241–245. doi:10.1080/14620316.2004.11511755
At the end of this session you should be able to:
You do not need to be a programmer. Every change you are asked to make is a change of one value at the top of the file.
| Part | Content | Time |
| 0 | Setup: open and run the model | 10 min |
| 1 | The biology in brief | 15 min |
| 2 | The model at a glance | 20 min |
| 3 | Designed experiments: where the seeds are | 25 min |
| 4 | The virtual orchard: comparing with the paper | 25 min |
| 5 | Your specialty: plant health or seed science | 15 min |
| 6 | Synthesis | 10 min |
| (Bonus) | Fruit drop of poorly seeded fruits | for fast groups |
Drazeta.gsz (File → Open).What you get:
VERBOSE = true to see the seeds and sectors of every fruit.| Chart | What it shows |
| Seed asymmetry vs number of viable seeds | one point per fruit – compare with Fig. 3 of the paper |
| Sector weight vs seed weight model | one point per sector (5 per fruit) – compare with Fig. 4 of the paper |
| Fruit weight vs number of viable seeds | one point per fruit |
All parameters you will change are at the top of the file, in the section PARAMETERS. Change one value, save, and look at the result.
The apple fruit develops from an ovary made of five fused carpels. Each carpel encloses a locule containing two ovules, so an apple can contain at most 10 seeds. Apple is self-incompatible: ovules are only fertilised after cross-pollination, usually by bees carrying pollen from a compatible cultivar (a “pollinizer”).
After fertilisation, seeds develop and produce hormones (auxins, gibberellins) that stimulate the growth of the surrounding flesh and make the fruit a strong sink for assimilates. Drazeta et al. found three kinds of seeds in mature fruits:
A fruit whose seeds are unevenly distributed tends to grow unevenly: it becomes lopsided. In New Zealand, about 2.4 % of the apple crop was rejected in the packhouse because of lopsidedness – not counting the fruit already discarded by pickers.
Questions (answer in 2–3 lines each):
Drazeta et al. cut each fruit into five sectors, one per carpel, weighed each sector and the seeds in each locule, and fitted a three-order model (their Equation 4):
S_i = a + b·w_i + c·(w_i-1 + w_i+1) + d·(w_i-2 + w_i+2)
where S_i is the weight of sector i, w_i the combined weight of the seeds in its own locule, w_i-1 and w_i+1 the seed weights of the two flanking locules, and w_i-2, w_i+2 those of the two distant locules.
| Coefficient | Meaning | Value in the paper | In the model (g sector per mg seed) |
|---|---|---|---|
| a | intercept: sector weight without any seed effect | fitted per fruit | A_MEAN = 22 g, varies between fruits (A_SD = 3 g) |
| b | first order: own locule | 75.36 g/g (P ≤ 0.001) | B = 0.0755 |
| c | second order: flanking locules | 18.97 g/g (P ≤ 0.05) | C = 0.0189 |
| d | third order: distant locules | 0.25 g/g (P = 0.97) | D = 0 |
In the code, the equation looks like this:
for (int j = 0; j < 5; j++) { seedTerm[j] = B * locule(j) + C * (locule(j - 1) + locule(j + 1)) + D * (locule(j - 2) + locule(j + 2)); sectorWt[j] = a + seedTerm[j]; totalWt += sectorWt[j]; }
locule(j) returns the combined seed weight of locule j. The locules form a circle, so locule 0 and locule 4 are neighbours: the function “wraps around”.
a = 22 g in which all 10 seeds are viable and weigh 65 mg each. Then calculate the weight of a sector whose own locule contains only two rudimentary seeds (about 3 mg each), its neighbours being normal.D set to 0 in the model? What does the P value of 0.97 mean?a vary from fruit to fruit? The authors say that the remaining variability “is probably the result of a range of factors such as vigour, crop load and position in the canopy”. Which of these factors could you explain with the model of our previous exercise (assimilate transport)?boolean fertilised = USE_PATTERN ? (PATTERN[j][i] == 1) : probability(POLL_PROB); if (!fertilised) { // rudimentary seed seedClass[j][i] = 0; seedWeight[j][i] = random(0.5, 5.0); } else if (probability(ABORT_PROB)) { // aborted: empty seed seedClass[j][i] = 1; seedWeight[j][i] = random(10.0, 30.0); } else { // viable seed seedClass[j][i] = 2; seedWeight[j][i] = max(40, normal(VIABLE_MEAN, VIABLE_SD)); }
Each of the 10 ovules is fertilised with probability POLL_PROB (or according to a fixed PATTERN, see Part 3). A fertilised seed aborts with probability ABORT_PROB.
POLL_PROB = 0.95 and ABORT_PROB = 0.10, how many viable seeds do you expect per fruit on average? Compare with the value measured by Drazeta et al. in lopsided 'Granny Smith': 8.63 ± 0.2 seeds.
The paper defines an index of seed asymmetry I by treating the fruit as a five-spoked wheel with a weight at the end of each spoke for every seed. I is the distance between the centre of gravity of the wheel and its axis: 0 = perfect symmetry, 1 = maximum asymmetry. Following the authors, only viable seeds are counted, all with the same weight. The console also gives the same index computed with the sector weights, I(fruit), and the ratio largest / smallest sector. A fruit counts as lopsided when this ratio exceeds LOPSIDED_RATIO = 1.4.
For each sector, the model places a point on the fruit's equator at a distance proportional to the square root of the sector weight, then draws a smooth closed curve through the five points and sweeps a profile along it to build the 3D fruit.
With USE_PATTERN = true, all 30 fruits share the same pollination pattern, set in PATTERN (1 = ovule fertilised, 0 = not fertilised, one line per locule). The fruits still differ because of seed abortion, seed weight and the intercept a.
For each pattern: write your prediction first (mean weight, how many fruits lopsided), then run and record the summary line of the console.
| Pattern | PATTERN | Prediction | Mean weight (g) | Nb lopsided / 30 | Typical largest/smallest ratio |
|---|---|---|---|---|---|
| Fully seeded | {1,1},{1,1},{1,1},{1,1},{1,1} | ||||
| One ovule missing | {1,1},{1,1},{1,0},{1,1},{1,1} | ||||
| One empty locule | {1,1},{1,1},{0,0},{1,1},{1,1} | ||||
| Two adjacent empty locules | {1,1},{0,0},{0,0},{1,1},{1,1} | ||||
| Two opposite empty locules | {0,0},{1,1},{0,0},{1,1},{1,1} | ||||
| Only one locule seeded | {1,1},{0,0},{0,0},{0,0},{0,0} | ||||
| No seed at all | {0,0},{0,0},{0,0},{0,0},{0,0} |
B and C in your answer.
Set USE_PATTERN = false. Every ovule is now fertilised at random with probability POLL_PROB.
Run the model with the default values (POLL_PROB = 0.95, ABORT_PROB = 0.10). Because a reset makes a new sample of 30 fruits, reset 3–4 times and look at how the charts change.
POLL_PROB to 0.6 so that you get fruits with few seeds too.A_SD = 0. Then restore A_SD = 3.Run the orchard with different pollination probabilities (reset at least twice for each value and average):
POLL_PROB | Prediction | Mean weight (g) | Mean viable seeds | Nb lopsided / 30 |
|---|---|---|---|---|
| 0.95 | ||||
| 0.7 | ||||
| 0.5 | ||||
| 0.3 |
Choose one track. Restore the default values before you start (POLL_PROB = 0.95, ABORT_PROB = 0.10).
A1. Frost at flowering. A late frost damages the pistils of many flowers: fewer ovules can be fertilised. Represent this with POLL_PROB = 0.6. Compare with the reference.
A2. Seed abortion. Stress after fertilisation (drought, heat, a pathogen, a hormone imbalance) makes developing seeds abort. Set ABORT_PROB = 0.4.
A3. Codling moth. Larvae of the codling moth (Cydia pomonella) bore into the fruit core and eat the seeds. Represent a fruit whose larva destroyed the seeds of one locule with USE_PATTERN = true and the “one empty locule” pattern.
Questions:
POLL_PROB. How could a grower tell them apart in the orchard?
B1. Pollinizer efficiency. A poorly placed or poorly compatible pollinizer (shared S-alleles, flowering not overlapping) gives low fertilisation. Compare POLL_PROB = 0.95, 0.8 and 0.6.
B2. Seed filling. Poor seed filling produces lighter viable seeds. Set VIABLE_MEAN = 45 (instead of 65) and compare.
B3. Testing the three-order model. Set C = 0 (no influence of flanking locules), then D = 0.0189 (distant locules as influential as flanking ones). How do fruit weight and lopsidedness change?
Questions:
For fast groups. In real orchards, many fruits with few seeds are shed during the “June drop”, so they are never harvested. Add this to the model:
MIN_SEEDS (e.g. 3) at the top of the file.init(), after the first derive();, add a rule that removes every Fruit with fewer than MIN_SEEDS viable seeds (hint: f:Fruit, (f.nViable < MIN_SEEDS) =⇒ ;), followed by a second derive();.This exercise is not handed in, but the questions above cover the kind of reasoning expected in the exam: explaining how seed set controls fruit growth, reading a simple model, and predicting and interpreting the outcome of a virtual experiment. Keep your answers and tables as revision notes.