Skip to content

Homeostat

Homeostat generates process-industry time series with full ground truth. Instead of simulating physics, it composes abstract data generating processes: stochastic sources, dynamic operators, control loops, instrument models and timed events. Because the control loops are closed, a disturbance or a fault shows up where it does in a real plant: often not on the controlled variable, but on the valve.

Every run returns the data a historian would record, the true values behind it, and the ground truth: the causal graph, each signal's role, the control loops, and a log of every event.

seed: 42
duration: 1d
dt: 1s
library: process@1

units:
  - {id: TIC-101, template: temperature_loop, sp: 80}

exogenous:
  - target: TIC-101.feed_temp          # a disturbance nobody measures
    source: {kind: ou, mean: 25, std: 3, tau: 2h}

interventions:
  - {at: 6h, target: TIC-101.sp, value: 85, profile: ramp, over: 30min}
  - {at: 12h, target: TIC-101, fault: valve_stiction, magnitude: 3}
import homeostat

run = homeostat.simulate("scenario.yaml")
run.observed   # what a historian records: TT-101, TIC-101.sp, TIC-101.out, TIC-101.mode
run.truth      # the true value of every signal, including the disturbance
run.meta       # causal graph, roles, loops, event log, reproducibility

What it is for

  • Fault detection and diagnosis. The onset, size and location of every fault are known, and a labeler says when each fault becomes visible in the data, and on which signal.
  • Soft sensors and quality prediction. The true product property is available at every step, while the lab reports it every few hours, late.
  • Long histories and regime changes. Production plans, maintenance, degradation and random faults generate months of history, with every change recorded.
  • Many plants at once. Any value in a scenario can be a distribution; a family of plants runs as one batch.

Principles

  • Data generating processes, not physics. A plant is a composition of small operators with exact discrete-time math. It behaves like a controlled plant without modelling the chemistry.
  • Ground truth is an output. Truth, measurements, the causal graph, roles, loops and events come with every run.
  • Written by people and AI assistants. A scenario is a declarative YAML file. Errors say what is wrong, where, and how to fix it.
  • Reproducible. The same scenario, seed, package version and NumPy version give identical data.
  • A small core with plugins. The core is pure math. Domain vocabulary (loops, ISA tags, sensors, faults) comes from libraries such as process.

Where to go next

  • Getting started: install Homeostat and run a first scenario.
  • Tutorial: build a reactor–mixer plant whose product depends on conditions nobody measures.
  • Guides: plans, faults, plant families, labels and more.
  • Concepts: how operators, graphs, events and randomness fit together.
  • Reference: every scenario key, operator, template, fault and error code.

Status

Homeostat is in development (version 0.1.0.dev0). It is named after W. Ross Ashby's 1948 Homeostat.