Skip to content

GEIGER Correspondence

GEIGER is the live reference for continuous and discrete evolutionary-model fitting. The governed registry currently contains 48 cases across 17 model shards. It is designed to expose parameterization and optimizer differences, not merely compare the name of the selected model.

Continuous Models

The fitContinuous registry covers Brownian motion, OU, early burst, lambda, kappa, delta, white noise, and explicit candidate-model comparisons. Depending on the model, the comparison can include log likelihood, information criteria, ancestral mean, evolutionary variance, attraction strength, optimum, or tree transformation parameter.

Discrete Models

The fitDiscrete registry covers ER, SYM, and ARD rate structures plus governed lambda, kappa, delta, and early-burst transformations where reference behavior is supported. State order and the mapping between rate-vector positions and transitions are recorded because a numerically similar vector with different labels is not parity.

Model Correspondence Key

GEIGER reference Bijux registry surface Identity required before comparison
fitContinuous(model='BM') fit_continuous_evolutionary_mode with BM trait/tree population, root treatment, rate, ancestral mean, likelihood convention
fitContinuous(model='OU') the same surface with OU optimum, attraction strength, rate, bounds, starting values, likelihood
fitContinuous(model='EB') the same surface with early burst rate-change parameter sign/scale, boundary, likelihood and transformation
fitContinuous lambda, kappa, delta, or white the corresponding declared mode tree transform, parameter bounds, free-parameter count and optimizer state
fitContinuous model comparison compare_fitcontinuous_model_ranking identical candidate population, criterion, likelihood and parameter-count policy
fitDiscrete(model='ER'/'SYM'/'ARD') fit_discrete_mk_model state order, transition labels, constrained rate structure and likelihood
transformed fitDiscrete cases fit_discrete_mk_model with declared tree transform transform parameterization, bounds, rate mapping and optimized objective

Two successful fits are comparable only after this key resolves. A common model label with different root treatment, rate ordering, likelihood constant, or tree-transform convention is an identity mismatch before it is a numerical mismatch.

Review artifact Question it answers
summary table Which model shards passed, failed, or skipped?
observation table Which compared value, tolerance, outcome, and mismatch reason belong to each case?
optimizer triage Is disagreement associated with starts, convergence, or boundary estimates?
boundary warnings Which parameters lie on or near constrained boundaries?
likelihood policy Which sign, constant, and comparability rules apply?
model confidence How strong and stable is the declared comparison?
parameterization registry How do Bijux fields correspond to GEIGER parameters?
generated report Which cases and non-claims can a reviewer read without decoding JSON?

Run The Live Lane

RUN_LIVE_PARITY=1 bijux-phylogenetics parity \
  --reference-source geiger-live \
  --geiger-shard geiger-fitcontinuous-model-ou \
  --summary-out artifacts/parity/geiger-summary.tsv \
  --observations-out artifacts/parity/geiger-observations.tsv \
  --optimizer-triage-out artifacts/parity/geiger-optimizer-triage.tsv \
  --parameterization-registry-out artifacts/parity/geiger-parameters.tsv \
  --generated-report-out artifacts/parity/geiger-report.md \
  --json

Repeat --geiger-case or --geiger-shard to select a bounded registry subset. The live lane requires Rscript, GEIGER, and RUN_LIVE_PARITY=1.

Programmatic Surface

Public locator Purpose
bijux_phylogenetics.parity.geiger:list_geiger_parity_cases enumerate 48 registered model cases
bijux_phylogenetics.parity.geiger:list_geiger_parity_shards enumerate 17 model-owned shards
bijux_phylogenetics.parity.geiger:run_geiger_parity_cases execute the selected live reference and Bijux fits
bijux_phylogenetics.parity.geiger:write_geiger_parity_observation_table persist value, tolerance, boundary, and mismatch observations
bijux_phylogenetics.parity.geiger:write_geiger_optimizer_triage_table separate optimizer-sensitive disagreements from other outcomes
bijux_phylogenetics.parity.geiger:write_geiger_parameterization_registry_table persist the field-to-parameter correspondence
bijux_phylogenetics.parity.geiger:build_generated_geiger_parity_report build a reviewer projection from governed records

The generated report is not a second adjudication layer. Its totals and categories must be reproducible from the selected cases and observation rows.

Reading Differences

A likelihood difference is actionable only after tree scale, trait transform, root treatment, parameter bounds, likelihood convention, and optimizer search are aligned. Similar AIC values can coexist with materially different parameter estimates. Conversely, a boundary estimate can be scientifically equivalent while failing naive relative-error comparison.

The generated GEIGER report keeps these cases separate:

  • agreement within the declared value and likelihood policy;
  • expected assumption or parameterization difference;
  • optimizer-sensitive result requiring triage;
  • reference boundary or unsupported case;
  • unexplained mismatch requiring investigation.

These are diagnostic and review categories around a passed, failed, or skipped harness case. They are not Evidence Book verdict names. In particular, an expected assumption difference must remain visible even when a dedicated comparison policy accepts the case, and an unexplained harness mismatch needs claim-scoped review before it can be recorded as mismatch_unexplained in a scientific bundle.

Diagnose The Optimizer Before The Parameter

Review execution success, finite objective, convergence state, boundary state, start population, accepted optimum, and alternative optima before comparing reported parameters. If the two surfaces reach materially different objective values, parameter distance is not yet the primary diagnosis. If objectives agree but parameters differ, inspect identifiability, boundaries, and equivalent parameterizations before applying a scalar tolerance.

The optimizer-triage table preserves that ordering. It must not be used to excuse a difference automatically: every accepted assumption or boundary classification needs the registered policy and observation evidence.

Admit Likelihoods Before Ranking Models

Model rankings are comparable only when every candidate contributes the same kind of maximized likelihood over the same observation population. Before comparing AIC, AICc, likelihood-ratio quantities, or model weights, establish:

  • identical taxa and trait observations after missing-data handling;
  • the same transformed data and tree, including any Jacobian contribution;
  • aligned likelihood density, root, variance, and constant-term conventions;
  • equivalent parameter constraints and free-parameter counts;
  • admissible optimization states under the registered convergence policy;
  • the same candidate-model population and criterion definition.
flowchart LR
    fits["GEIGER and Bijux<br/>fit records"]
    identity{"Observation and likelihood<br/>identity aligned?"}
    optimum{"Admissible maxima under<br/>registered policy?"}
    ranking["Compare criterion and<br/>candidate ranking"]
    bounded["Compare only aligned<br/>parameters or predictions"]

    fits --> identity
    identity -->|yes| optimum
    identity -->|no| bounded
    optimum -->|yes| ranking
    optimum -->|no| bounded

An additive likelihood constant can leave within-implementation ranking unchanged while making cross-implementation likelihood values and information criteria non-comparable. Likewise, similar objective values at boundary or non-identifiable optima may support a bounded fit correspondence without supporting parameter equality.

Denominator And Model Identity

Report selected, executed, passed, failed, and skipped cases by model shard. For each fit, retain the model family, parameterization registry entry, likelihood policy, optimizer starts, bounds, and observed boundary state. Two rows labeled “OU” are not comparable when those identities differ.

The registry does not claim universal GEIGER coverage or that agreement makes the fitted model appropriate for a biological study.

Model Parameter Record

Every case retains the GEIGER model name, Bijux model identity, state or trait ordering, tree and trait fixture, transformation, root treatment, bounds, starts, convergence state, likelihood convention, free-parameter count, and reported parameters. Information criteria are compared only when likelihood and parameter-count conventions are aligned.

If different optima satisfy the declared likelihood rule but parameters differ materially, retain both facts. Do not collapse the case to “passed” without its parameter observations and boundary classification.