NASA's LSTM anomaly detector, now with less boilerplate
A KDD 2018 paper implementation that spots spacecraft telemetry weirdness without hand-tuned thresholds.

What it does
Telemanom trains vanilla LSTMs to predict normal behavior in multivariate sensor streams, then flags anomalies by thresholding prediction errors. It was built at NASA JPL to monitor the Curiosity rover and SMAP satellite, and ships with their real (anonymized) telemetry data. You feed it .npy files of time-series data; it spits out anomaly sequences and an interactive Plotly viewer.
The interesting bit
The thresholding is the clever part. Instead of asking you to guess a magic epsilon, it uses a nonparametric, unsupervised method to identify anomalous sequences of errors rather than single spikes. The README also notes a nice modularity trick: set train: False and predict: False in config.yaml to reuse cached predictions while you tweak thresholding parameters.
Key highlights
- Reproduces the 2018 KDD paper “Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding”
- Includes 82 channels of real SMAP/MSL spacecraft data with 105 labeled anomaly sequences
- Dockerized; also runs locally with Python 3.6+
- v2.0 refactor: vectorized numpy ops, single branch for labeled/unlabeled modes, PEP8 cleanup
- Jupyter notebook (
result-viewer.ipynb) for interactive Plotly visualization
Caveats
- Only installable from source; no PyPI package
- Data download requires Kaggle API setup and some manual
mv/unzipshuffling - Default TensorFlow/Keras stack; no mention of PyTorch or modern TF versions
Verdict Worth a look if you’re working with multivariate time-series anomaly detection and want a reproducible, published baseline with real aerospace data. Skip if you need a maintained, pip-installable library or are allergic to Keras.