File size: 5,865 Bytes
991d5ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Reproducing FLARE paper experiments

Each top-level folder under `run_scripts/` is one paper setting. **Params YAML
files live alongside the scripts** in that folder.

## Naming convention

| Prefix | Role |
|--------|------|
| `0_*` | Training or preprocessing |
| `1_*` | Test / retrieval evaluation (+ `eval.py` metrics when a result pickle exists) |

Some settings split evaluation by candidate list (`cand_by_mass` vs
`cand_by_form`). Those use separate `1_run_test_*.sh` scripts that share the
same trained checkpoint but point at different params / candidate JSON files.

**Default eval path:** released checkpoint in `pretrained_models/` (override
with `FLARE_CHECKPOINT`).

**Full reproduction:** run `0_run_train.sh` in that folder, then the
appropriate `1_run_test_*.sh`.

---

## Directory layout

```
run_scripts/
β”œβ”€β”€ msgym_main/                          # FLARE (main paper model)
β”‚   β”œβ”€β”€ params.yaml                      # candidates by mass
β”‚   β”œβ”€β”€ params_cand_by_form.yaml         # candidates by formula
β”‚   β”œβ”€β”€ 0_run_train.sh                   # train FLARE
β”‚   β”œβ”€β”€ 1_run_test_cand_by_mass.sh       # eval, mass candidates
β”‚   └── 1_run_test_cand_by_form.sh       # eval, formula candidates
β”œβ”€β”€ msgym_global/                        # global mean-pool baseline
β”‚   β”œβ”€β”€ params_global.yaml
β”‚   β”œβ”€β”€ 0_run_train.sh                   # train global contrastive model
β”‚   β”œβ”€β”€ 1_run_test_cand_by_mass.sh       # eval, mass candidates
β”‚   └── 1_run_test_cand_by_form.sh       # eval, formula candidates
└── msgym_cand_by_mass_msbuddy_pred_form/  # FLARE + msbuddy formulas (eval only)
    β”œβ”€β”€ params_predicted_formula.yaml
    β”œβ”€β”€ 0_preprocess_msgym/              # msbuddy annotation + subformulae
    β”‚   β”œβ”€β”€ run.sh
    β”‚   └── run_msbuddy.py
    └── 1_run_test.sh                    # eval with released FLARE checkpoint
```

---

## Experiment map

| Folder | Model | Train? | Params | Eval scripts |
|--------|-------|--------|--------|--------------|
| [`msgym_main/`](msgym_main/) | FLARE (`filipContrastive`) | `0_run_train.sh` | `params.yaml`, `params_cand_by_form.yaml` | `1_run_test_cand_by_mass.sh`, `1_run_test_cand_by_form.sh` |
| [`msgym_global/`](msgym_global/) | Global contrastive (`contrastive`) | `0_run_train.sh` | `params_global.yaml` | `1_run_test_cand_by_mass.sh`, `1_run_test_cand_by_form.sh` |
| [`msgym_cand_by_mass_msbuddy_pred_form/`](msgym_cand_by_mass_msbuddy_pred_form/) | FLARE + msbuddy formulas | preprocess only (`0_preprocess_msgym/run.sh`) | `params_predicted_formula.yaml` | `1_run_test.sh` |

---

## Quick start

### Main FLARE results (MassSpecGym)

Uses MIST-style subformulae under `data/subformulae_default/`.

```bash
# Optional: train from scratch
bash run_scripts/msgym_main/0_run_train.sh

# Eval with released checkpoint (default)
bash run_scripts/msgym_main/1_run_test_cand_by_mass.sh
bash run_scripts/msgym_main/1_run_test_cand_by_form.sh
```

### Global pooling baseline

```bash
bash run_scripts/msgym_global/0_run_train.sh          # optional
bash run_scripts/msgym_global/1_run_test_cand_by_mass.sh
bash run_scripts/msgym_global/1_run_test_cand_by_form.sh
```

Prefer `pretrained_models/flare_global.ckpt` when available; scripts fall back
to `flare.ckpt` with a warning.

### msbuddy predicted formulas (eval-only)

No training script β€” reuses the main FLARE checkpoint. Preprocess writes
gitignored artifacts under this folder's `0_preprocess_msgym/data/`.

```bash
bash run_scripts/msgym_cand_by_mass_msbuddy_pred_form/0_preprocess_msgym/run.sh
bash run_scripts/msgym_cand_by_mass_msbuddy_pred_form/1_run_test.sh
```

---

## Params files

Each experiment folder ships its own YAML. Paths inside are **relative to the
repository root** unless absolute. Override any file with `FLARE_PARAMS`:

```bash
export FLARE_PARAMS="$PWD/run_scripts/msgym_main/params.yaml"
```

| File | Used for |
|------|----------|
| `msgym_main/params.yaml` | FLARE training + mass-candidate eval |
| `msgym_main/params_cand_by_form.yaml` | Formula-candidate eval (same architecture) |
| `msgym_global/params_global.yaml` | Global contrastive train + eval |
| `msgym_cand_by_mass_msbuddy_pred_form/params_predicted_formula.yaml` | msbuddy subformulae + mass-candidate eval |

---

## Shared environment variables

| Variable | Purpose |
|----------|---------|
| `FLARE_REPO_ROOT` | Repository root (auto-detected by scripts) |
| `FLARE_PARAMS` | Override params YAML (default: co-located params in each folder) |
| `FLARE_CHECKPOINT` | Checkpoint for eval |
| `MASSSPECGYM_TSV` | MassSpecGym spectra TSV |
| `CANDIDATES_JSON` | Retrieval candidate list JSON |
| `SUBFORMULA_DIR` | Per-spectrum subformula JSON directory |
| `EXP_DIR` | Output directory under `experiments/` |
| `LIMIT` | (preprocess) limit spectra for a smoke test |
| `SKIP_ASSIGN` | (preprocess) annotate only; skip subformula assignment |

---

## Data layout (expected under repo `data/`)

Place MassSpecGym files yourself:

```
data/MassSpecGym.tsv
data/MassSpecGym_retrieval_candidates_mass.json
data/MassSpecGym_retrieval_candidates_formula.json
data/subformulae_default/   # one JSON per spectrum id (MIST-style)
```

Generate MIST-style subformulae with:

```bash
cd flare/subformula_assign
SPEC_FILES=$PWD/../../data/MassSpecGym.tsv \
OUTPUT_DIR=$PWD/../../data/subformulae_default \
bash run.sh
```

msbuddy outputs for the predicted-formula experiment land under
`run_scripts/msgym_cand_by_mass_msbuddy_pred_form/0_preprocess_msgym/data/`
(gitignored). Regenerate with `0_preprocess_msgym/run.sh` or host/download
those artifacts separately.

---

## Metrics

After `test.py`, eval scripts call `flare/eval.py <result_*.pkl> --ci --mces`
when a result pickle is present. Artifacts land in `experiments/<name>/`.