File size: 2,565 Bytes
1480422
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35b9efa
 
1480422
35b9efa
1480422
 
 
 
 
 
 
 
 
 
 
 
 
 
35b9efa
 
 
 
1480422
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35b9efa
 
1480422
35b9efa
1480422
 
 
 
 
 
 
 
 
 
 
 
 
35b9efa
 
1480422
 
35b9efa
1480422
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
license: bsd-3-clause
library_name: keras
tags:
- seti
- radio-astronomy
- anomaly-detection
- beta-vae
- random-forest
---

# Aetherscan

[Breakthrough Listen](https://breakthroughinitiatives.org/initiative/1)'s deep-learning SETI
pipeline: a two-stage architecture where a **Beta-VAE encoder** compresses each observation of
a 6-observation cadence (3 ON / 3 OFF, ABACAD) into an 8-dimensional latent, and a **Random
Forest** classifies the cadence's concatenated latents as a technosignature candidate or not.

This repository carries the released model weights at stable filenames, versioned via git
tags: training tags match the pipeline run's save tag (e.g. `train_20260101_120000`), and
release tags (`vX.Y.Z`) mark blessed weights.

**Training tag**: `train_20260729_152426`

## Files

| File | Description |
|---|---|
| `vae_encoder.keras` | Beta-VAE encoder (Keras) — the inference feature extractor |
| `vae_decoder.keras` | Beta-VAE decoder (Keras) — for reconstruction/traversal analysis |
| `random_forest.joblib` | Random Forest cadence classifier (joblib) |
| `config.json` | Full resolved training configuration for this run |

## Training configuration

| Parameter | Value |
|---|---|
| Training rounds | `10` |
| Epochs per round | `100` |
| Beta-VAE samples per round | `499200` |
| Random Forest samples | `99840` |
| Curriculum schedule | `exponential` |
| SNR base | `10` |
| Initial SNR range | `40` |
| Final SNR range | `10` |
| Latent dimensions | `8` |
| Beta (KL weight) | `1.5` |
| Alpha (clustering weight) | `10.0` |
| RF estimators | `1000` |

The complete configuration is in `config.json`.

## Evaluation (validation split)

| Metric | Value |
|---|---|
| ROC AUC | 1.0000 |
| Average precision | 1.0000 |
| Classification threshold | 0.99 |
| Validation samples | 19968 |

## Library versions

| Library | Version |
|---|---|
| python | `3.12.3` |
| tensorflow | `2.17.0` |
| numpy | `1.26.4` |
| scikit-learn | `1.5.2` |
| huggingface_hub | `1.21.0` |

## Usage

Pin this training tag with `--hf-revision` to download exactly these weights (a bare no-artifact
inference download resolves to the latest `vX.Y.Z` release tag instead, never a training tag):

```bash
python -m aetherscan.main inference --hf-revision train_20260729_152426 --inference-files <catalog.csv>
```

## Links & citation

Source code, documentation, and issue tracker: [https://github.com/zachtheyek/Aetherscan](https://github.com/zachtheyek/Aetherscan).
If you use Aetherscan in your research, please cite it via the repository's `CITATION.cff`.