Skip to main content

Genetics engine

OmniBurrow works out each rabbit's genotype from the records you already keep: its variety, its parents, its ancestors, and the kits it has produced. It then uses those genotypes to predict what a pairing is likely to throw and how closely related the pair is. It models 13 colour loci, and it is deliberately honest about uncertainty: where the evidence only supports a probability, you get a probability rather than a confident-looking guess.

Both apps show the same results. Genotypes are worked out on the server and synced to your phone; predicting a pairing and COI run on the phone itself, so they work at the cages with no signal, using the genotypes the phone already has.

The loci it models​

The first five loci are the well-established major colour genes. The rest follow classical or breeder models that describe inheritance well but cannot predict every detail of how a coat looks. The list order is the conventional dominance order; where expression is more complicated than "dominant hides recessive", the last column says how.

LocusAlleles / conventional dominance orderInheritance and expression
A: agoutiA › at › aComplete dominance. A is agouti, at tan pattern, a self. Other loci can hide the pattern without changing the A genotype.
B: black/brownB › bComplete dominance; chocolate is recessive. B/B and B/b are black-based, b/b chocolate-based.
C: colour seriesC › c^chd › c^chl › c^h › cA dominance series, with incomplete dominance around sable: the second allele matters. On a black self, c^chl/c^chl is seal, while c^chl/c or c^chl/c^h is sable. Varieties such as Seal are matched on the exact pair.
D: dilutionD › dComplete dominance; dilution is recessive. d/d turns black to blue and chocolate to lilac.
E: extensionE^s › E › e^j › eThe common four-allele model. Expression depends on the pair, so not every combination behaves as simple dominance.
En: English spottingEn, enIncomplete dominance. en/en is solid, En/en broken, En/En Charlie (lightly marked). How much white a broken shows varies and is not predicted.
Du: DutchDu, duSimplified classical model. du/du is Dutch-patterned; Du/du is treated as a carrier, though some show small white markings. Exact markings are not predicted.
Si: silveringSi › siTraditional recessive model. si/si is silvered; how much silvering shows varies with breed and age and is not predicted.
W: widebandW › wClassical recessive model. w/w is wideband. A red coat alone does not prove w/w; rufus intensity is a separate matter.
P: lutinoP › pRecessive under the conventional breeder model. p/p is lutino (pink-eyed dilute), P/p a carrier. The final colour still depends on other loci.
V: ViennaV, vBlue-eyed white with variable carrier expression. OmniBurrow writes the Vienna allele as V: V/V is blue-eyed white, V/v a carrier that may or may not show Vienna marks, v/v non-Vienna. Other genes, such as REW, can hide it.
Dw: dwarfDw, dwIncomplete dominance for size; two copies are lethal. OmniBurrow writes the dwarf allele as Dw: Dw/dw is a true dwarf, Dw/Dw the non-viable peanut, dw/dw normal size (false dwarf).
Mf: max factorMf, mfA reported breeder model, not a molecularly confirmed gene. OmniBurrow writes the max-factor allele as Mf: two copies are affected, one copy is an unaffected carrier. Affected kits often have developmental problems; OmniBurrow warns about them rather than calling them lethal.
About the notation

Scientific papers often write the Vienna and dwarf mutations in lower case, with the normal allele in capitals, the reverse of the symbols above. The genetics are the same; only the letters differ. Your records keep the notation they were entered with.

Two rules follow from the table. Appearance is not genotype: an unmarked Vienna carrier is still V/v, and a heavily marked broken is not automatically En/En, so OmniBurrow does not force those genotypes from how a rabbit looks. And two dwarfs are the one pairing it flags as lethal: a quarter of their kits are expected to be peanuts, and the prediction says so.

What it infers, and from what​

The engine never assumes a genotype from breed alone. It builds each locus up from evidence:

  • Your recorded variety tells it a lot. A REW is c/c; a self black is a/a. Those are certainties, not guesses.
  • Parents constrain what a rabbit can carry, since each contributes one allele.
  • Ancestors contribute recessive reveals, weighted by distance (below).
  • Offspring work backwards: a kit showing a recessive proves both parents carried it. This is why genotypes sharpen as you record more litters.
  • Manual overrides win outright. If you have test-bred an animal and know what it is, set it and the engine stops second-guessing you.

Distance is weighted, and it matters​

A recessive appearing in a distant ancestor does not make a rabbit a carrier. The engine scores by generation, halving at each step:

Where the recessive appearedWhat the engine concludes
Parent is homozygous recessiveCertain carrier: a b/b parent must pass b
Grandparent50% chance of carrying
Great-grandparent25% chance of carrying

It stops at three generations. That halving is the entire point: treating a great-grandparent's reveal as a guaranteed carrier produces predictions that look confident and are wrong. Here the probability rides alongside the locus instead of overwriting it, and feeds prediction as a probability.

A worked example​

Here is the whole loop on one locus, with made-up rabbits:

  1. A buck is recorded as Castor (a chestnut agouti Rex). Castor needs at least one A, so his A locus shows A with the second allele unknown, so Castor could be A/A, A/at, or A/a.
  2. A litter from him is recorded, and one kit is a self black. Self is a/a, so that kit got an a from each parent.
  3. The buck's A locus resolves to A/a, marked exact, with the litter listed as the evidence. Nobody had to test-breed him on purpose; the record did it.
  4. Pair him with a self black doe (a/a) and the A locus predicts 50% agouti, 50% self. That is the Punnett square you would draw by hand. If the pair match on their other loci, the variety list reads chestnut agouti 50%, self black 50%.

If the kit had been agouti instead, nothing would change: an agouti kit is consistent with every possibility, so the buck stays unresolved rather than being guessed at.

Predicting a pairing​

Pick a doe and a buck, and you get two things.

Per-locus odds. For each locus the engine builds the gamete distribution each parent can contribute and combines them. Where both parents are fully resolved this is exactly the Punnett square you would draw by hand. A/a × a/a gives 50% agouti, 50% self, and the engine returns precisely that.

Ranked variety predictions. It scores the varieties in your breed's catalog, ranks them, and returns the top 12 with likelihoods on a 0–100 scale. Anything below 2% is dropped so the list stays readable instead of trailing into near-impossible combinations.

Where a parent's locus is unresolved, a known allele contributes at 50%, a carrier hint contributes at its own weight, and a locus with no evidence contributes nothing. The consequence is deliberate: recessive predictions come out below 100% when the evidence is genuinely incomplete. A pairing that could throw REW shows honest odds rather than a certainty you cannot bank on.

Masked genotypes still count. If a rabbit's visible colour hides what it carries underneath, and a litter later reveals it, prediction reads the underlying genotype, not just the coat you can see.

Coefficient of inbreeding​

COI is calculated by Wright's path method, including the standard correction for an inbred common ancestor:

FX = Σ (½)n₁+n₂+1 × (1 + FA)

It walks up to 10 generations, and reports both the depth it actually reached and how many ancestors were missing, so you can tell whether a low number means "genuinely unrelated" or "not enough pedigree yet".

The canonical pairings land where they should, and each is pinned by a test:

PairingCOI
Unrelated0%
Parent × offspring25%
Full siblings25%
Half siblings12.5%
First cousins6.25%
COI is only as deep as your pedigree

A 0% COI on a rabbit with two recorded generations means "no shared ancestor in what OmniBurrow knows". It is not proof the pair is unrelated. Add or import more ancestry and the number becomes more meaningful. The reported depth and missing-ancestor count tell you how far to trust it.

What a prediction can and cannot tell you​

A prediction tells you the odds for a pairing given what your records prove, and how much of that is certain versus inferred. It is a probability, not a promise about any one litter.

It cannot know:

  • Anything you have not recorded. No variety, no parents, no litters means no evidence. The engine says it does not know rather than inventing a genotype.
  • Traits outside those 13 loci. Body type, fur density, ear carriage, temperament: none of it is modelled. Genetics here means colour genetics plus dwarfing and max factor.
  • How strongly a pattern shows. The amount of white on a broken or Dutch, or of silvering, varies and is not predicted. Only the genotype behind it is.
  • Whether your recorded variety is correct. Enter a rabbit as the wrong variety and every inference downstream inherits the error.

When the numbers are recomputed​

Inferred genotypes are stored so screens load quickly, and recomputed when their inputs change, such as when you edit a rabbit, record a litter that reveals something, or refresh herd genetics from Tools. Correct an old record and the affected genotypes update on their own. The recalculation happens on the server, so a litter recorded with no signal updates its parents once it has synced.