How badly is each animal actually doing?
Paste a welfare cohort - one row per animal per time point. Your browser combines the readouts into one RELSA severity score per animal per day, relative to the reference set you choose, and finds candidate severity zones - free, nothing uploaded. A paid run then reads the scores against the reporting checklist or writes the script that reproduces them.
Each example has a saved model run, so you can see the whole page for free. Example data are synthetic.
Your recent runs
What this does, and what it does not
RELSA (RELative Severity Assessment, Talbot et al. 2022) turns several welfare readouts into one
number per animal per time point. Each variable becomes a percent of the animal's own baseline;
variables that rise under worsening are "turned"; an ordinal score whose healthy value is 0 is
mapped onto the percent scale instead (healthy 100%, worst 200%). The reference set - the group
assumed to carry the greatest burden - fixes the scale: for each variable, its most extreme value
there. A variable's weight is its deviation from baseline over that maximum deviation, floored at
0 and rounded to two decimals as the R package does, and the score is the root mean square of the
weights measured at that time point: 0 is baseline, 1 is the reference set's maximum. Severity
zones are the minima of a kernel density estimate of the scores (Lutscher et al. 2026), with R's
bw.nrd0 bandwidth, a 512-point grid and a thin-zone filter; the bandwidth sweep shows
whether a threshold survives a small change of smoother. The page follows the
relsa-severity-assessment skill's relsa_score.py and kde_thresholds.py
and was checked against them on 1,400 random cohorts. ARIMA forecasting (foRcast) is not run
here; the script lane can add it with the skill's forecast_relsa.py.
RELSA is an aid to severity assessment, not a decision rule: a low score never overrides an animal that looks unwell, and the humane endpoint criteria of the protocol always come first. Scores are comparable only within one reference frame, and KDE zones are candidate cut-points for one model - not the severity categories of EU Directive 2010/63/EU. The paid run reads only what the browser computed and your notes; it is told never to compute a new number, and the page checks every number it writes. Derived from the agent skill @k-dense-ai/relsa-severity-assessment (k-dense-ai/scientific-agent-skills, K-Dense Inc.; see the notice).