GEN-3a: Uw=G alias, second spotting locus Sls (SlSl lethal), Sp×Sls Superschecke, flag/metadata token tolerance (dea/WFNZ/DP/RV/GV)

This commit is contained in:
2026-06-06 10:25:48 +02:00
parent c93c24f37c
commit 1e7dc8f91d
4 changed files with 128 additions and 21 deletions

View File

@@ -12,8 +12,12 @@
* - de.wikibooks.org/wiki/Die_Rennmaus/_Farbvarianten_und_Farbgenetik
*/
/** Canonical locus keys, in conventional display order. */
export const LOCUS_ORDER = ['A', 'C', 'D', 'E', 'G', 'P', 'Sp', 'Re'] as const
/**
* Canonical locus keys, in conventional display order. Sls (second spotting
* locus) is appended LAST so legacy 8-locus genotype strings still parse — a
* missing Sls token defaults to wild-type sl/sl.
*/
export const LOCUS_ORDER = ['A', 'C', 'D', 'E', 'G', 'P', 'Sp', 'Re', 'Sls'] as const
export type LocusKey = (typeof LOCUS_ORDER)[number]
export interface LocusDef {
@@ -33,9 +37,12 @@ export interface LocusDef {
* E = full extension
* ef = Schimmel/roan (progressive whitening)
* e = Fox (suppresses eumelanin)
* Sp/Re are dominant markers, lethal/semi-lethal when homozygous (see lethality.ts):
* Sp = Schecke (checkered); checkered animals are always Spsp, SpSp dies in utero.
* Re = Rex (curly coat); rex animals are Re-, ReRe is semi-lethal.
* Sp/Re/Sls are dominant markers, lethal/semi-lethal when homozygous (see lethality.ts):
* Sp = Schecke (checkered); checkered animals are always Spsp, SpSp dies in utero.
* Re = Rex (curly coat); rex animals are Re-, ReRe is semi-lethal.
* Sls = second spotting locus (S(l), WP/Minimalschecke). S(l)s(l) het = the WP
* phenotype; S(l)S(l) homozygous = lethal (Rumpback/megacolon). Sp + Sls
* together => Superschecke (very high white, deafness-prone).
*/
export const LOCI: Readonly<Record<LocusKey, LocusDef>> = {
A: { key: 'A', nameDe: 'Agouti', alleles: ['A', 'a'] },
@@ -46,6 +53,7 @@ export const LOCI: Readonly<Record<LocusKey, LocusDef>> = {
P: { key: 'P', nameDe: 'Rotaugenaufhellung (Pink-Eye)', alleles: ['P', 'p'] },
Sp: { key: 'Sp', nameDe: 'Schecke', alleles: ['Sp', 'sp'] },
Re: { key: 'Re', nameDe: 'Rex', alleles: ['Re', 're'] },
Sls: { key: 'Sls', nameDe: 'Zweite Scheckung (WP)', alleles: ['Sl', 'sl'] },
}
/** Set of all valid allele symbols, longest-first (for maximal-munch parsing). */