Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auspex

AI-powered predictive maintenance platform for industrial assets.

The adapter layer. Every dataset — a NASA benchmark, a customer's historian export — lands in one canonical schema, and nothing downstream can tell which is which.

Run it

pip install pandas numpy pyyaml pyarrow
python scripts/make_sample_data.py                                  # stand-in data
python -m pdm.cli list
python -m pdm.cli ingest --dataset cmapss      --raw data/raw/cmapss     --out data/canonical
python -m pdm.cli ingest --dataset generic_csv --raw data/raw/acme_pumps --out data/canonical

Canonical schema

asset_id · timestamp · channel · value · unit · quality

Plus an asset registry (class, criticality, redundancy, bearing geometry) and an event log (failures, maintenance, inspections). Bearing geometry lives in the registry because without it you cannot compute BPFO/BPFI, and without those you cannot name a fault mode — only report that a number moved.

Layout

pdm/
  schema.py             canonical contract + validation. Adapters fail here, loudly
  store.py              parquet, or CSV when no engine is installed
  quality.py            stuck sensors, dropouts, constant channels, irregular sampling
  cli.py                ingest entrypoint
  adapters/
    base.py             Adapter ABC + registry
    cmapss.py           NASA turbofan, 26-column whitespace format
    generic_csv.py      customer export driven by mapping.yaml
scripts/
  make_sample_data.py   generates both formats so this runs before you download anything

Swapping in the real NASA data

Download the Turbofan Engine Degradation Simulation Data Set from the NASA PCoE repository, unzip into data/raw/cmapss/, and rerun the same command. No code changes. That is the whole point of the boundary.

Onboarding a customer

Drop their CSVs in a directory with a mapping.yaml:

dataset: acme_pumps
site: acme_plant_2
asset_class: pump
timestamp_column: Timestamp
asset_column: TagPrefix
channels:
  PUMP_DE_VIB_MMS: {name: drive_end_velocity, unit: mm_s}
  PUMP_BRG_TEMP_C: {name: bearing_temp, unit: degC}

No code changes. A mapping file is a sales artifact, not an engineering ticket — that difference is what makes a two-week deployment possible.

The rule

No if dataset == "..." anywhere outside adapters/. If that branch appears, you are building three demos instead of one product. Enforce it in review.

Next: phase 2

Rolling z-score and EWMA baselines, then PCA T²/SPE, then an autoencoder only if it beats them. Expanding-window splits. False alarms per asset-month at a fixed budget. Publish the runs where the simple baseline wins.

About

Industrial asset health monitoring — know which machines need attention before they fail. Multi-source sensor ingestion, anomaly detection, and fault diagnosis. Validated on NASA C-MAPSS.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages