A window that makes a pattern
Worth reading first: How far a primordium reaches · The exponent that barely matters · The lag that is not there.
Two stems, grown by identical code, from the same starting divergence, at the same rate, with the same repulsion exponent. The only difference is how many neighbours the rule was allowed to look at when it placed each node.
The first is a lattice. The blind counter finds 8/13 near the top, the divergence sits at 137.62°, and it wanders by 0.58° over the last quarter of the run — cleaner than several of the patterns this site has published as real. Nothing about it would fail any test in this collection.
The second has 43.9° of divergence scatter and no pattern at all.
The exponent is 1, which is in the region where the previous essay found that the rule does not make lattices. What the narrow window is doing is manufacturing one.
Why a cut-off is not an approximation here
Every simulation of a placement rule truncates something. The sum over neighbours has to stop somewhere, and stopping it a long way out is normally thought of as an approximation whose error goes to zero as the cut-off recedes.
That is the right picture when the thing being computed converges. It is the wrong picture here, and the reason is the subject of the first essay in this ladder: what decides a placement is not the total energy but how much each shell of neighbours makes the energy vary around the circumference. At an exponent of 1 the nearest shell leads the next by a factor of about eight — enough that the immediate neighbours have the loudest voice and nowhere near enough that they have the only one.
Cutting the neighbourhood at three spacings does not remove a small correction. It removes the competition. With only the nearest neighbours left, the profile has a clean minimum in each gap between them, the node goes into a gap, and the arrangement that results is a lattice by construction — not because the rule found one, but because the truncation left it nothing else to find.
That is why the resulting pattern looks so good. It is not a noisy version of the true answer; it is the exact answer to a different and much easier question.
The artefact is an artefact twice over
The manufactured lattice has a second property that took an ensemble to see, and it is the more diagnostic of the two.
It is not robust. Add a fifth of a degree of placement noise — a twelfth of what a genuine lattice tolerates, and a hundredth of what would visibly disturb one — and the truncated rule keeps its pattern in three runs of eight. The same noise at an exponent of 3, with the same narrow window, leaves the pattern standing in eight of eight.
So the manufactured pattern exists only in the absence of anything at all disturbing it, where a real one shrugs the same disturbance off. That difference is measurable, it is large, and it is the sort of test that a study reporting a pattern from a truncated long-range rule would probably not think to run.
Two ways of putting the same point:
- A pattern that survives only for a rule that is deterministic, exactly evaluated, and cut off at a particular distance is a pattern with three load-bearing assumptions in it.
- Or: if the answer depends on the cut-off, the cut-off is a parameter of the model and should be reported as one.
How this was nearly missed, and the trap underneath
The first sweep of the neighbourhood on this site found the answer perfectly stable, and it was wrong.
The rule’s neighbourhood is set by two numbers. One is a cap, maxWindow, on how many previous nodes to consider. The other is a multiple of — the number of nodes within a fixed distance of the growing tip, which climbs as the rise falls, so that a fixed count does not starve the fine end of every run.
The first sweep varied the cap: 30, 60, 120, 240, 480. Every column of the table came back identical, which read as beautiful robustness.
The cap was not the binding constraint. At the rises those runs reach, is about ninety-five, comfortably under every cap tried except the smallest — so five of the six columns were the same run, computed five times and printed five times. A sweep of a parameter that is not binding reports the same number at every step, and the same number at every step reads as a result.
Once the multiple itself was made a knob, the picture changed completely and the numbers above appeared. The two numbers were one number until this phase, and separating them is the whole of the repair.
The general shape of that trap is worth carrying: a robustness sweep should report what it actually varied. A table of identical values means either that the answer does not depend on the parameter or that the parameter did not change; those are very different, and only one of them is a finding.
What the two windows actually contain
It is worth putting numbers on “three spacings” and “twelve”, because the words make the difference sound larger than the pictures do and smaller than it is.
The neighbourhood is counted in nodes, and the number of nodes within a fixed distance of the growing tip goes as . At the rise these runs end at — 0.004, where the pattern shows 8/13 — the node spacing is about 0.063 of a circumference, and the two windows hold 48 nodes and 190 nodes.
Forty-eight nodes is not a small neighbourhood. It is four or five rows of the lattice all the way round the stem, which is more than a real apex has visible at once and about as many as it plausibly has specified. Somebody choosing that cut-off would not feel they were cutting anything important, and by the standards of the phenomenon they would be right.
By the standards of the rule, they would be removing the entire competition. The shells between three and twelve spacings contribute, at an exponent of 1, roughly as much variation to the profile as the first three do — which is why the answer changes completely and why “four rows is surely enough” is not an argument that can be made without measuring.
The number that would have to be quoted for the result to be checkable is therefore not “48 nodes” either. It is the ratio between what the nearest shell contributes and what the rest do, which is the quantity the first essay in this ladder measures and which nobody would think to report.
What this says about the literature it belongs to
This collection does not have a survey of other people’s simulations and cannot make a claim about how common the defect is. What it can say is what would have to be true for a published result of this kind to be safe, and there are three conditions.
The interaction has to converge, or the cut-off has to be physical. A rule with an unbounded power law below the critical band has no well-defined minimum, and any pattern reported from it is the cut-off’s pattern. A rule whose cut-off is a stated physical range — the size of the meristem, the reach of a diffusible inhibitor — is a different and legitimate model, and its range is then a parameter with a value that should be quoted and varied.
The cut-off has to be reported. It very often is not, because it does not feel like a modelling choice; it feels like a numerical detail, in the same category as a time step or a tolerance.
And the sweep of it has to be a real sweep. Which is the trap above, and the reason this essay spends as long on a table of identical numbers as on the result.
A physical cut-off would be a different model, and a better one
Nothing above argues against truncating. It argues against truncating implicitly, and the difference is worth setting out because the fix is not “use a wider window”.
A real inhibition has a range. Whatever carries it — a diffusible signal from an existing primordium, a mechanical stress field, the auxin depletion the modern account uses — it acts over a distance set by the tissue, and beyond that distance it does not act at all. A model that says so is stating a physical hypothesis with a parameter in it, and that parameter can be varied, fitted, and argued about.
The model in this collection does not say so. It sums an unbounded power law and then stops summing when the array runs out, which is a numerical decision standing in for a physical one. At an exponent of 3 the two coincide closely enough that it makes no difference — the interaction has effectively vanished by three spacings anyway, so where the array stops is irrelevant. At an exponent of 1 they do not coincide at all, and the numerical decision is carrying the whole result.
The productive version of this criticism is therefore a suggestion rather than a complaint. A rule with an explicit range is more honest than a rule with an implicit one, and it costs nothing: multiply the interaction by a cut-off function with a stated width, and the width becomes a parameter of the model rather than of the loop. The pattern that comes out of a long-range rule with a stated cut-off is then a real prediction of a real model — one which says that inhibition reaches so far and no further — and the question of whether a plant’s inhibition reaches that far becomes a question about a plant.
That model is not built here. It is written down as the shape the next version of this rule should take, and the prediction it would be tested against is available already: a rule with a physical cut-off at three spacings should reproduce the manufactured lattice exactly, and should be as fragile to a fifth of a degree of noise as the manufactured one is.
The honest reading of this site’s own results
The obvious question to turn back on this collection: how much of what is published here rests on a truncation?
The stem results are at an exponent of 3, which the previous essay measured to be deep in the region where nothing depends on the range at all — every exponent from 1.25 to 8 gives the same pair at the same angle with the same scatter, and widening the neighbourhood from three spacings to twelve changes nothing there. That is the check that matters and it has now been run.
The disc results are in a geometry where the elements drift outward exponentially, so the neighbourhood is local whatever the rule; widening its window from eight elements to a hundred and forty moves the settled angle by nothing measurable. That check has also now been run.
So the answer is that none of it does, and the reason to be confident is not that the exponent was chosen well. It is that the exponent was chosen for a ferrofluid experiment, and happened to land inside the region where the choice is harmless — which was not known until this phase, and which is a different kind of statement from having got it right.
What a manufactured pattern looks like from outside
The uncomfortable part of this result is that the manufactured lattice passes every check this collection has.
It has a countable parastichy pair. The pair is consecutive Fibonacci. The divergence is within a tenth of a degree of 137.5°. The scatter is half a degree, which is better than several genuine runs. Run the recovery machinery on it and the angle comes back; run the ladder against it and its transitions land where they should, because it is a lattice — the fact that no well-posed rule produced it is not written anywhere on it.
The only thing that distinguishes it is that it disappears when the model is asked a question it was not built to answer: widen the neighbourhood, or nudge it, and it is not there.
That is the practical lesson and it generalises past this subject. A result that is real should survive being asked a question the author did not have in mind, and the cheapest such questions are the ones about the machinery rather than about the phenomenon — the cut-off, the resolution, the window, the seed. This phase found two defects of exactly that kind in its own new code within a day of writing it: an ensemble whose members were all the same run, and a noise amplitude whose meaning depended on the sample count. Neither was visible in any output; both were visible the moment a parameter that should not have mattered was varied.
The check this site now owns
The result above is a claim about a rule that this collection does not otherwise use, at an exponent it does not otherwise run at, so there is a fair question about why it should be gated rather than simply written down.
It is gated because it is the only assertion here that fails in the interesting direction. Almost every check in this collection is of the form the machinery produces the right answer — the round trip closes, the counted pair matches the predicted one, the ratio is φ². A check of that shape can be satisfied by machinery that is broken in a way that happens to produce the right answer, and this collection has caught several such: a counter that returned the two smallest offsets rather than the two shortest, and got 21 and 34 for a head whose real neighbours are 34 and 55, drew twenty-one spirals and there were twenty-one of them.
The truncation check is the other shape. It asserts that a particular configuration produces a clean, plausible, entirely wrong lattice, and that the same rule with a wider neighbourhood produces none. If somebody later changes the placement rule in a way that makes long-range exponents behave — by adding a physical cut-off, say, or by normalising the energy — this check fails, and it fails by reporting that a pattern which should be an artefact has become robust.
That is worth having. A gate that only ever confirms good behaviour cannot tell the difference between machinery that is right and machinery that has been repaired into agreeing. A gate that requires a specific pathology to still be there will notice when the pathology is fixed, which is the moment the reasoning around it needs revisiting.
The same principle runs through the rest of this site’s own gate, and it is the reason the last section of every check file feeds the machinery input it must refuse. An assertion that has never rejected anything is an assertion whose passing means nothing — and the corollary, learned here, is that an assertion which has only ever been shown correct answers has never been asked whether it can see a wrong one.
What links here
Computed from the collection, not written here: the essays that point at this one.
Shares its objects with
Essays that name at least two of the same things, and that neither author linked.
- Noise is not a slow rate — both name divergence angle, ladder, noise, the placement rule, rise
- Where the noise gets in — both name divergence angle, the neighbour graph, noise, the placement rule, rise
- A pattern with a rate — both name noise, the placement rule, repulsion, rise
- The rate decides the branch — both name ladder, noise, repulsion, rise
- Two degrees of scatter — both name divergence angle, ladder, noise, rise
- A cone has a rise that falls — both name divergence angle, ladder, rise
Named objects
A flat tag is an object no other essay names yet.
ArtefactDivergence angleLadderThe neighbour graphNoiseThe placement ruleRepulsionRiseTruncation