appleparan/telemanom
收藏Hugging Face2026-04-09 更新2026-04-12 收录
下载链接:
https://hf-mirror.com/datasets/appleparan/telemanom
下载链接
链接失效反馈官方服务:
资源简介:
---
license: bsd-3-clause
task_categories:
- other
tags:
- timeseries
- anomaly-detection
- spacecraft
- telemetry
- NASA
- SMAP
- MSL
pretty_name: "NASA SMAP and MSL Spacecraft Anomaly Detection Dataset"
size_categories:
- 100K<n<1M
configs:
- config_name: "A-1"
data_files:
- split: train
path: "data/train/A-1.parquet"
- split: test
path: "data/test/A-1.parquet"
- config_name: "A-2"
data_files:
- split: train
path: "data/train/A-2.parquet"
- split: test
path: "data/test/A-2.parquet"
- config_name: "A-3"
data_files:
- split: train
path: "data/train/A-3.parquet"
- split: test
path: "data/test/A-3.parquet"
- config_name: "A-4"
data_files:
- split: train
path: "data/train/A-4.parquet"
- split: test
path: "data/test/A-4.parquet"
- config_name: "A-5"
data_files:
- split: train
path: "data/train/A-5.parquet"
- split: test
path: "data/test/A-5.parquet"
- config_name: "A-6"
data_files:
- split: train
path: "data/train/A-6.parquet"
- split: test
path: "data/test/A-6.parquet"
- config_name: "A-7"
data_files:
- split: train
path: "data/train/A-7.parquet"
- split: test
path: "data/test/A-7.parquet"
- config_name: "A-8"
data_files:
- split: train
path: "data/train/A-8.parquet"
- split: test
path: "data/test/A-8.parquet"
- config_name: "A-9"
data_files:
- split: train
path: "data/train/A-9.parquet"
- split: test
path: "data/test/A-9.parquet"
- config_name: "B-1"
data_files:
- split: train
path: "data/train/B-1.parquet"
- split: test
path: "data/test/B-1.parquet"
- config_name: "C-1"
data_files:
- split: train
path: "data/train/C-1.parquet"
- split: test
path: "data/test/C-1.parquet"
- config_name: "C-2"
data_files:
- split: train
path: "data/train/C-2.parquet"
- split: test
path: "data/test/C-2.parquet"
- config_name: "D-1"
data_files:
- split: train
path: "data/train/D-1.parquet"
- split: test
path: "data/test/D-1.parquet"
- config_name: "D-11"
data_files:
- split: train
path: "data/train/D-11.parquet"
- split: test
path: "data/test/D-11.parquet"
- config_name: "D-12"
data_files:
- split: train
path: "data/train/D-12.parquet"
- split: test
path: "data/test/D-12.parquet"
- config_name: "D-13"
data_files:
- split: train
path: "data/train/D-13.parquet"
- split: test
path: "data/test/D-13.parquet"
- config_name: "D-14"
data_files:
- split: train
path: "data/train/D-14.parquet"
- split: test
path: "data/test/D-14.parquet"
- config_name: "D-15"
data_files:
- split: train
path: "data/train/D-15.parquet"
- split: test
path: "data/test/D-15.parquet"
- config_name: "D-16"
data_files:
- split: train
path: "data/train/D-16.parquet"
- split: test
path: "data/test/D-16.parquet"
- config_name: "D-2"
data_files:
- split: train
path: "data/train/D-2.parquet"
- split: test
path: "data/test/D-2.parquet"
- config_name: "D-3"
data_files:
- split: train
path: "data/train/D-3.parquet"
- split: test
path: "data/test/D-3.parquet"
- config_name: "D-4"
data_files:
- split: train
path: "data/train/D-4.parquet"
- split: test
path: "data/test/D-4.parquet"
- config_name: "D-5"
data_files:
- split: train
path: "data/train/D-5.parquet"
- split: test
path: "data/test/D-5.parquet"
- config_name: "D-6"
data_files:
- split: train
path: "data/train/D-6.parquet"
- split: test
path: "data/test/D-6.parquet"
- config_name: "D-7"
data_files:
- split: train
path: "data/train/D-7.parquet"
- split: test
path: "data/test/D-7.parquet"
- config_name: "D-8"
data_files:
- split: train
path: "data/train/D-8.parquet"
- split: test
path: "data/test/D-8.parquet"
- config_name: "D-9"
data_files:
- split: train
path: "data/train/D-9.parquet"
- split: test
path: "data/test/D-9.parquet"
- config_name: "E-1"
data_files:
- split: train
path: "data/train/E-1.parquet"
- split: test
path: "data/test/E-1.parquet"
- config_name: "E-10"
data_files:
- split: train
path: "data/train/E-10.parquet"
- split: test
path: "data/test/E-10.parquet"
- config_name: "E-11"
data_files:
- split: train
path: "data/train/E-11.parquet"
- split: test
path: "data/test/E-11.parquet"
- config_name: "E-12"
data_files:
- split: train
path: "data/train/E-12.parquet"
- split: test
path: "data/test/E-12.parquet"
- config_name: "E-13"
data_files:
- split: train
path: "data/train/E-13.parquet"
- split: test
path: "data/test/E-13.parquet"
- config_name: "E-2"
data_files:
- split: train
path: "data/train/E-2.parquet"
- split: test
path: "data/test/E-2.parquet"
- config_name: "E-3"
data_files:
- split: train
path: "data/train/E-3.parquet"
- split: test
path: "data/test/E-3.parquet"
- config_name: "E-4"
data_files:
- split: train
path: "data/train/E-4.parquet"
- split: test
path: "data/test/E-4.parquet"
- config_name: "E-5"
data_files:
- split: train
path: "data/train/E-5.parquet"
- split: test
path: "data/test/E-5.parquet"
- config_name: "E-6"
data_files:
- split: train
path: "data/train/E-6.parquet"
- split: test
path: "data/test/E-6.parquet"
- config_name: "E-7"
data_files:
- split: train
path: "data/train/E-7.parquet"
- split: test
path: "data/test/E-7.parquet"
- config_name: "E-8"
data_files:
- split: train
path: "data/train/E-8.parquet"
- split: test
path: "data/test/E-8.parquet"
- config_name: "E-9"
data_files:
- split: train
path: "data/train/E-9.parquet"
- split: test
path: "data/test/E-9.parquet"
- config_name: "F-1"
data_files:
- split: train
path: "data/train/F-1.parquet"
- split: test
path: "data/test/F-1.parquet"
- config_name: "F-2"
data_files:
- split: train
path: "data/train/F-2.parquet"
- split: test
path: "data/test/F-2.parquet"
- config_name: "F-3"
data_files:
- split: train
path: "data/train/F-3.parquet"
- split: test
path: "data/test/F-3.parquet"
- config_name: "F-4"
data_files:
- split: train
path: "data/train/F-4.parquet"
- split: test
path: "data/test/F-4.parquet"
- config_name: "F-5"
data_files:
- split: train
path: "data/train/F-5.parquet"
- split: test
path: "data/test/F-5.parquet"
- config_name: "F-7"
data_files:
- split: train
path: "data/train/F-7.parquet"
- split: test
path: "data/test/F-7.parquet"
- config_name: "F-8"
data_files:
- split: train
path: "data/train/F-8.parquet"
- split: test
path: "data/test/F-8.parquet"
- config_name: "G-1"
data_files:
- split: train
path: "data/train/G-1.parquet"
- split: test
path: "data/test/G-1.parquet"
- config_name: "G-2"
data_files:
- split: train
path: "data/train/G-2.parquet"
- split: test
path: "data/test/G-2.parquet"
- config_name: "G-3"
data_files:
- split: train
path: "data/train/G-3.parquet"
- split: test
path: "data/test/G-3.parquet"
- config_name: "G-4"
data_files:
- split: train
path: "data/train/G-4.parquet"
- split: test
path: "data/test/G-4.parquet"
- config_name: "G-6"
data_files:
- split: train
path: "data/train/G-6.parquet"
- split: test
path: "data/test/G-6.parquet"
- config_name: "G-7"
data_files:
- split: train
path: "data/train/G-7.parquet"
- split: test
path: "data/test/G-7.parquet"
- config_name: "M-1"
data_files:
- split: train
path: "data/train/M-1.parquet"
- split: test
path: "data/test/M-1.parquet"
- config_name: "M-2"
data_files:
- split: train
path: "data/train/M-2.parquet"
- split: test
path: "data/test/M-2.parquet"
- config_name: "M-3"
data_files:
- split: train
path: "data/train/M-3.parquet"
- split: test
path: "data/test/M-3.parquet"
- config_name: "M-4"
data_files:
- split: train
path: "data/train/M-4.parquet"
- split: test
path: "data/test/M-4.parquet"
- config_name: "M-5"
data_files:
- split: train
path: "data/train/M-5.parquet"
- split: test
path: "data/test/M-5.parquet"
- config_name: "M-6"
data_files:
- split: train
path: "data/train/M-6.parquet"
- split: test
path: "data/test/M-6.parquet"
- config_name: "M-7"
data_files:
- split: train
path: "data/train/M-7.parquet"
- split: test
path: "data/test/M-7.parquet"
- config_name: "P-1"
data_files:
- split: train
path: "data/train/P-1.parquet"
- split: test
path: "data/test/P-1.parquet"
- config_name: "P-10"
data_files:
- split: train
path: "data/train/P-10.parquet"
- split: test
path: "data/test/P-10.parquet"
- config_name: "P-11"
data_files:
- split: train
path: "data/train/P-11.parquet"
- split: test
path: "data/test/P-11.parquet"
- config_name: "P-14"
data_files:
- split: train
path: "data/train/P-14.parquet"
- split: test
path: "data/test/P-14.parquet"
- config_name: "P-15"
data_files:
- split: train
path: "data/train/P-15.parquet"
- split: test
path: "data/test/P-15.parquet"
- config_name: "P-2"
data_files:
- split: train
path: "data/train/P-2.parquet"
- split: test
path: "data/test/P-2.parquet"
- config_name: "P-3"
data_files:
- split: train
path: "data/train/P-3.parquet"
- split: test
path: "data/test/P-3.parquet"
- config_name: "P-4"
data_files:
- split: train
path: "data/train/P-4.parquet"
- split: test
path: "data/test/P-4.parquet"
- config_name: "P-7"
data_files:
- split: train
path: "data/train/P-7.parquet"
- split: test
path: "data/test/P-7.parquet"
- config_name: "R-1"
data_files:
- split: train
path: "data/train/R-1.parquet"
- split: test
path: "data/test/R-1.parquet"
- config_name: "S-1"
data_files:
- split: train
path: "data/train/S-1.parquet"
- split: test
path: "data/test/S-1.parquet"
- config_name: "S-2"
data_files:
- split: train
path: "data/train/S-2.parquet"
- split: test
path: "data/test/S-2.parquet"
- config_name: "T-1"
data_files:
- split: train
path: "data/train/T-1.parquet"
- split: test
path: "data/test/T-1.parquet"
- config_name: "T-10"
data_files:
- split: train
path: "data/train/T-10.parquet"
- split: test
path: "data/test/T-10.parquet"
- config_name: "T-12"
data_files:
- split: train
path: "data/train/T-12.parquet"
- split: test
path: "data/test/T-12.parquet"
- config_name: "T-13"
data_files:
- split: train
path: "data/train/T-13.parquet"
- split: test
path: "data/test/T-13.parquet"
- config_name: "T-2"
data_files:
- split: train
path: "data/train/T-2.parquet"
- split: test
path: "data/test/T-2.parquet"
- config_name: "T-3"
data_files:
- split: train
path: "data/train/T-3.parquet"
- split: test
path: "data/test/T-3.parquet"
- config_name: "T-4"
data_files:
- split: train
path: "data/train/T-4.parquet"
- split: test
path: "data/test/T-4.parquet"
- config_name: "T-5"
data_files:
- split: train
path: "data/train/T-5.parquet"
- split: test
path: "data/test/T-5.parquet"
- config_name: "T-8"
data_files:
- split: train
path: "data/train/T-8.parquet"
- split: test
path: "data/test/T-8.parquet"
- config_name: "T-9"
data_files:
- split: train
path: "data/train/T-9.parquet"
- split: test
path: "data/test/T-9.parquet"
default_config_name: "A-1"
---
# NASA SMAP and MSL Spacecraft Anomaly Detection Dataset
## Dataset Description
This dataset contains real spacecraft telemetry data and labeled anomalies from two NASA missions:
- **SMAP** (Soil Moisture Active Passive satellite)
- **MSL** (Mars Science Laboratory / Curiosity Rover)
The data was originally used in the 2018 KDD paper [Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding](https://arxiv.org/abs/1802.04431) and released via the [telemanom](https://github.com/khundman/telemanom) repository.
## Dataset Structure
```
data/
train/ # 82 Parquet files (one per channel)
test/ # 82 Parquet files (one per channel)
data/
train/ # 82 .npy files (original format)
test/ # 82 .npy files (original format)
labeled_anomalies.csv
```
Each channel is available as a separate config (e.g., `A-1`, `P-1`, `M-1`) that can be selected in the dataset viewer or loaded programmatically.
### Data Files
Each Parquet file contains the following columns:
| Column | Description |
|---|---|
| `timestep` | Integer index of the time step |
| `value` | Target telemetry value being monitored |
| `cmd_0` ... `cmd_N` | One-hot encoded command information (24 or 54 columns depending on channel) |
- All telemetry values are anonymized and normalized to `[-1, 1]` based on min/max in the test set.
- Channel IDs are anonymized; the first letter indicates channel type (`P` = power, `R` = radiation, etc.).
- SMAP channels have 24 command columns; MSL channels have 54 command columns.
### Anomaly Labels (`labeled_anomalies.csv`)
| Column | Description |
|---|---|
| `chan_id` | Anonymized channel ID |
| `spacecraft` | `SMAP` or `MSL` |
| `anomaly_sequences` | Start and end indices of anomalies in the test set |
| `class` | Anomaly type: `point` or `contextual` |
| `num_values` | Number of telemetry values in the test stream |
## Dataset Statistics
| | SMAP | MSL | Total |
|---|:---:|:---:|:---:|
| Total anomaly sequences | 69 | 36 | 105 |
| Point anomalies (%) | 43 (62%) | 19 (53%) | 62 (59%) |
| Contextual anomalies (%) | 26 (38%) | 17 (47%) | 43 (41%) |
| Unique telemetry channels | 55 | 27 | 82 |
| Telemetry values evaluated | 429,735 | 66,709 | 496,444 |
## Usage
### Using `datasets` library (recommended)
```python
from datasets import load_dataset
# Load a specific channel (e.g., P-1)
ds = load_dataset("appleparan/telemanom", name="P-1")
print(ds)
# DatasetDict({
# train: Dataset({features: ['timestep', 'value', 'cmd_0', ...], num_rows: ...})
# test: Dataset({features: ['timestep', 'value', 'cmd_0', ...], num_rows: ...})
# })
# Access train/test splits
train_df = ds["train"].to_pandas()
test_df = ds["test"].to_pandas()
```
### Using numpy (original .npy format)
```python
import numpy as np
from huggingface_hub import hf_hub_download
path = hf_hub_download(
repo_id="appleparan/telemanom",
filename="data/data/test/P-1.npy",
repo_type="dataset",
)
data = np.load(path)
print(data.shape) # (n_timesteps, n_inputs)
```
## Source
- **Original repository**: [khundman/telemanom](https://github.com/khundman/telemanom)
- **Paper**: [arXiv:1802.04431](https://arxiv.org/abs/1802.04431)
- **Contributors**: Kyle Hundman, Valentinos Constantinou, Christopher Laporte, Ian Colwell, Tom Soderstrom (NASA JPL)
## Citation
```bibtex
@inproceedings{hundman2018detecting,
title = {Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding},
author = {Hundman, Kyle and Constantinou, Valentino and Laporte, Christopher and Colwell, Ian and Soderstrom, Tom},
booktitle = {Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining},
year = {2018}
}
```
## License
This dataset is distributed under the [BSD 3-Clause License](LICENSE.txt) (Copyright (c) 2018, California Institute of Technology).
Note: The original repository's README states Apache 2.0, but the actual `LICENSE.txt` file contains a BSD 3-Clause license from Caltech/JPL. This dataset card follows the license file.
提供机构:
appleparan



