| { |
| "_comment": "Definitive signal-to-MDSplus mapping for edensfit89 history features.", |
| "_source_of_truth": "docs/history_feature_order.txt + per-bundle model_config.json input_contract", |
| "_created": "2026-04-04", |
| "_notes": [ |
| "Each entry: model_name -> {pointname, tree, method, notes}", |
| "method: ptdata = ptdata('POINTNAME', shot), tree = openTree(tree,shot) then get(node)", |
| "Signals not in the export plan table are inferred from DIII-D conventions (UPPERCASE = pointname).", |
| "ADVISOR VALIDATION NEEDED for: edensfit89, pedestal (edensfit100), prad_tot/divl/divu, rmaxis, zmaxis, rvsin, rvsout, zvsin, zvsout, e567up/dn, e89up/dn, pinj_*/tinj_* individual beamlines." |
| ], |
|
|
| "history_block1_base_signals": { |
| "_doc": "67 signals x 4 stats = indices 0-267. Order matches history_feature_order.txt.", |
|
|
| "kappa": {"pointname": "KAPPA", "tree": "EFIT01", "method": "tree"}, |
| "betap": {"pointname": "BETAP", "tree": "EFIT01", "method": "tree"}, |
| "tribot": {"pointname": "TRIBOT", "tree": "EFIT01", "method": "tree"}, |
| "tritop": {"pointname": "TRITOP", "tree": "EFIT01", "method": "tree"}, |
| "rmaxis": {"pointname": "RMAXIS", "tree": "EFIT01", "method": "tree"}, |
| "zmaxis": {"pointname": "ZMAXIS", "tree": "EFIT01", "method": "tree"}, |
| "li": {"pointname": "LI", "tree": "EFIT01", "method": "tree"}, |
| "rvsin": {"pointname": "RVSIN", "tree": "EFIT01", "method": "tree"}, |
| "rvsout": {"pointname": "RVSOUT", "tree": "EFIT01", "method": "tree"}, |
| "zvsin": {"pointname": "ZVSIN", "tree": "EFIT01", "method": "tree"}, |
| "zvsout": {"pointname": "ZVSOUT", "tree": "EFIT01", "method": "tree"}, |
| "pohm": {"pointname": "POHM", "tree": null, "method": "ptdata"}, |
| "pinj": {"pointname": "PINJ", "tree": null, "method": "ptdata"}, |
| "tinj": {"pointname": "TINJ", "tree": null, "method": "ptdata"}, |
| "ech_total": {"pointname": "ECHPWRC", "tree": null, "method": "ptdata", "notes": "export plan maps ech_total -> ECHPWRC"}, |
| "pinj_15l": {"pointname": "PINJ_15L", "tree": null, "method": "ptdata"}, |
| "pinj_15r": {"pointname": "PINJ_15R", "tree": null, "method": "ptdata"}, |
| "pinj_21l": {"pointname": "PINJ_21L", "tree": null, "method": "ptdata"}, |
| "pinj_21r": {"pointname": "PINJ_21R", "tree": null, "method": "ptdata"}, |
| "pinj_30l": {"pointname": "PINJ_30L", "tree": null, "method": "ptdata"}, |
| "pinj_30r": {"pointname": "PINJ_30R", "tree": null, "method": "ptdata"}, |
| "pinj_33l": {"pointname": "PINJ_33L", "tree": null, "method": "ptdata"}, |
| "pinj_33r": {"pointname": "PINJ_33R", "tree": null, "method": "ptdata"}, |
| "tinj_15l": {"pointname": "TINJ_15L", "tree": null, "method": "ptdata"}, |
| "tinj_15r": {"pointname": "TINJ_15R", "tree": null, "method": "ptdata"}, |
| "tinj_21l": {"pointname": "TINJ_21L", "tree": null, "method": "ptdata"}, |
| "tinj_21r": {"pointname": "TINJ_21R", "tree": null, "method": "ptdata"}, |
| "tinj_30l": {"pointname": "TINJ_30L", "tree": null, "method": "ptdata"}, |
| "tinj_30r": {"pointname": "TINJ_30R", "tree": null, "method": "ptdata"}, |
| "tinj_33l": {"pointname": "TINJ_33L", "tree": null, "method": "ptdata"}, |
| "tinj_33r": {"pointname": "TINJ_33R", "tree": null, "method": "ptdata"}, |
| "f1a": {"pointname": "F1A", "tree": null, "method": "ptdata"}, |
| "f2a": {"pointname": "F2A", "tree": null, "method": "ptdata"}, |
| "f3a": {"pointname": "F3A", "tree": null, "method": "ptdata"}, |
| "f4a": {"pointname": "F4A", "tree": null, "method": "ptdata"}, |
| "f5a": {"pointname": "F5A", "tree": null, "method": "ptdata"}, |
| "f6a": {"pointname": "F6A", "tree": null, "method": "ptdata"}, |
| "f7a": {"pointname": "F7A", "tree": null, "method": "ptdata"}, |
| "f8a": {"pointname": "F8A", "tree": null, "method": "ptdata"}, |
| "f9a": {"pointname": "F9A", "tree": null, "method": "ptdata"}, |
| "f1b": {"pointname": "F1B", "tree": null, "method": "ptdata"}, |
| "f2b": {"pointname": "F2B", "tree": null, "method": "ptdata"}, |
| "f3b": {"pointname": "F3B", "tree": null, "method": "ptdata"}, |
| "f4b": {"pointname": "F4B", "tree": null, "method": "ptdata"}, |
| "f5b": {"pointname": "F5B", "tree": null, "method": "ptdata"}, |
| "f6b": {"pointname": "F6B", "tree": null, "method": "ptdata"}, |
| "f7b": {"pointname": "F7B", "tree": null, "method": "ptdata"}, |
| "f8b": {"pointname": "F8B", "tree": null, "method": "ptdata"}, |
| "f9b": {"pointname": "F9B", "tree": null, "method": "ptdata"}, |
| "ecoila": {"pointname": "ECOILA", "tree": null, "method": "ptdata"}, |
| "ecoilb": {"pointname": "ECOILB", "tree": null, "method": "ptdata"}, |
| "e567up": {"pointname": "E567UP", "tree": null, "method": "ptdata", "notes": "inferred; needs advisor confirmation"}, |
| "e567dn": {"pointname": "E567DN", "tree": null, "method": "ptdata", "notes": "inferred; needs advisor confirmation"}, |
| "e89up": {"pointname": "E89UP", "tree": null, "method": "ptdata", "notes": "inferred; needs advisor confirmation"}, |
| "e89dn": {"pointname": "E89DN", "tree": null, "method": "ptdata", "notes": "inferred; needs advisor confirmation"}, |
| "gasa_cal": {"pointname": "GASA_CAL", "tree": null, "method": "ptdata"}, |
| "gasb_cal": {"pointname": "GASB_CAL", "tree": null, "method": "ptdata"}, |
| "gasc_cal": {"pointname": "GASC_CAL", "tree": null, "method": "ptdata"}, |
| "gasd_cal": {"pointname": "GASD_CAL", "tree": null, "method": "ptdata"}, |
| "gase_cal": {"pointname": "GASE_CAL", "tree": null, "method": "ptdata"}, |
| "ip": {"pointname": "IP", "tree": null, "method": "ptdata"}, |
| "ipspr15v": {"pointname": "IPSPR15V", "tree": null, "method": "ptdata"}, |
| "bt": {"pointname": "BT", "tree": null, "method": "ptdata"}, |
| "density": {"pointname": "DENSITY", "tree": "ELECTRONS", "method": "tree"}, |
| "n1rms": {"pointname": "N1RMS", "tree": null, "method": "ptdata"}, |
| "n2rms": {"pointname": "N2RMS", "tree": null, "method": "ptdata"}, |
| "prad": {"pointname": "PRAD", "tree": null, "method": "ptdata", "notes": "may need bolometer tree; needs advisor confirmation"} |
| }, |
|
|
| "history_block2_pedestal_target": { |
| "_doc": "2 features at indices 268-269. Only mean and std (not min/max).", |
| "pedestal": {"pointname": "EDENSFIT100", "tree": null, "method": "ptdata", "notes": "edensfit index 100; exact pointname needs advisor confirmation"} |
| }, |
|
|
| "history_block3_ece_channels": { |
| "_doc": "40 ECE channels x 4 stats = indices 270-429.", |
| "ece1": {"pointname": "ECE01", "tree": "ECE", "method": "tree"}, |
| "ece2": {"pointname": "ECE02", "tree": "ECE", "method": "tree"}, |
| "ece3": {"pointname": "ECE03", "tree": "ECE", "method": "tree"}, |
| "ece4": {"pointname": "ECE04", "tree": "ECE", "method": "tree"}, |
| "ece5": {"pointname": "ECE05", "tree": "ECE", "method": "tree"}, |
| "ece6": {"pointname": "ECE06", "tree": "ECE", "method": "tree"}, |
| "ece7": {"pointname": "ECE07", "tree": "ECE", "method": "tree"}, |
| "ece8": {"pointname": "ECE08", "tree": "ECE", "method": "tree"}, |
| "ece9": {"pointname": "ECE09", "tree": "ECE", "method": "tree"}, |
| "ece10": {"pointname": "ECE10", "tree": "ECE", "method": "tree"}, |
| "ece11": {"pointname": "ECE11", "tree": "ECE", "method": "tree"}, |
| "ece12": {"pointname": "ECE12", "tree": "ECE", "method": "tree"}, |
| "ece13": {"pointname": "ECE13", "tree": "ECE", "method": "tree"}, |
| "ece14": {"pointname": "ECE14", "tree": "ECE", "method": "tree"}, |
| "ece15": {"pointname": "ECE15", "tree": "ECE", "method": "tree"}, |
| "ece16": {"pointname": "ECE16", "tree": "ECE", "method": "tree"}, |
| "ece17": {"pointname": "ECE17", "tree": "ECE", "method": "tree"}, |
| "ece18": {"pointname": "ECE18", "tree": "ECE", "method": "tree"}, |
| "ece19": {"pointname": "ECE19", "tree": "ECE", "method": "tree"}, |
| "ece20": {"pointname": "ECE20", "tree": "ECE", "method": "tree"}, |
| "ece21": {"pointname": "ECE21", "tree": "ECE", "method": "tree"}, |
| "ece22": {"pointname": "ECE22", "tree": "ECE", "method": "tree"}, |
| "ece23": {"pointname": "ECE23", "tree": "ECE", "method": "tree"}, |
| "ece24": {"pointname": "ECE24", "tree": "ECE", "method": "tree"}, |
| "ece25": {"pointname": "ECE25", "tree": "ECE", "method": "tree"}, |
| "ece26": {"pointname": "ECE26", "tree": "ECE", "method": "tree"}, |
| "ece27": {"pointname": "ECE27", "tree": "ECE", "method": "tree"}, |
| "ece28": {"pointname": "ECE28", "tree": "ECE", "method": "tree"}, |
| "ece29": {"pointname": "ECE29", "tree": "ECE", "method": "tree"}, |
| "ece30": {"pointname": "ECE30", "tree": "ECE", "method": "tree"}, |
| "ece31": {"pointname": "ECE31", "tree": "ECE", "method": "tree"}, |
| "ece32": {"pointname": "ECE32", "tree": "ECE", "method": "tree"}, |
| "ece33": {"pointname": "ECE33", "tree": "ECE", "method": "tree"}, |
| "ece34": {"pointname": "ECE34", "tree": "ECE", "method": "tree"}, |
| "ece35": {"pointname": "ECE35", "tree": "ECE", "method": "tree"}, |
| "ece36": {"pointname": "ECE36", "tree": "ECE", "method": "tree"}, |
| "ece37": {"pointname": "ECE37", "tree": "ECE", "method": "tree"}, |
| "ece38": {"pointname": "ECE38", "tree": "ECE", "method": "tree"}, |
| "ece39": {"pointname": "ECE39", "tree": "ECE", "method": "tree"}, |
| "ece40": {"pointname": "ECE40", "tree": "ECE", "method": "tree"} |
| }, |
|
|
| "history_block4_radiation": { |
| "_doc": "3 radiation signals x 4 stats = indices 430-441.", |
| "prad_tot": {"pointname": "PRAD_TOT", "tree": null, "method": "ptdata", "notes": "bolometer total; exact source needs advisor confirmation"}, |
| "prad_divl": {"pointname": "PRAD_DIVL", "tree": null, "method": "ptdata", "notes": "divertor lower; exact source needs advisor confirmation"}, |
| "prad_divu": {"pointname": "PRAD_DIVU", "tree": null, "method": "ptdata", "notes": "divertor upper; exact source needs advisor confirmation"} |
| }, |
|
|
| "history_block5_edensfit89_target": { |
| "_doc": "1 signal x 4 stats = indices 442-445.", |
| "edensfit89": {"pointname": "EDENSFIT89", "tree": null, "method": "ptdata", "notes": "fitted density at index 89; exact pointname needs advisor confirmation"} |
| }, |
|
|
| "fpe_signals": { |
| "_doc": "32 FPE actuator channels (real-time input to FPE encoder). Order matches normalization_params.json.", |
| "_order": [ |
| "pohm", "pinj", "tinj", "ech_total", |
| "f1a", "f2a", "f3a", "f4a", "f5a", "f6a", "f7a", "f8a", "f9a", |
| "f1b", "f2b", "f3b", "f4b", "f5b", "f6b", "f7b", "f8b", "f9b", |
| "ecoila", "ecoilb", |
| "gasa_cal", "gasb_cal", "gasc_cal", "gasd_cal", "gase_cal", |
| "ip", "ipspr15v", "bt" |
| ], |
| "_note": "These are a subset of block1 signals; use the same pointname/tree/method entries from block1." |
| }, |
|
|
| "history_signal_order": { |
| "_doc": "Ordered list of signal names matching history_feature_order.txt. Used by _compute_shot_stats().", |
| "block1_67_signals": [ |
| "kappa", "betap", "tribot", "tritop", "rmaxis", "zmaxis", "li", |
| "rvsin", "rvsout", "zvsin", "zvsout", |
| "pohm", "pinj", "tinj", "ech_total", |
| "pinj_15l", "pinj_15r", "pinj_21l", "pinj_21r", |
| "pinj_30l", "pinj_30r", "pinj_33l", "pinj_33r", |
| "tinj_15l", "tinj_15r", "tinj_21l", "tinj_21r", |
| "tinj_30l", "tinj_30r", "tinj_33l", "tinj_33r", |
| "f1a", "f2a", "f3a", "f4a", "f5a", "f6a", "f7a", "f8a", "f9a", |
| "f1b", "f2b", "f3b", "f4b", "f5b", "f6b", "f7b", "f8b", "f9b", |
| "ecoila", "ecoilb", |
| "e567up", "e567dn", "e89up", "e89dn", |
| "gasa_cal", "gasb_cal", "gasc_cal", "gasd_cal", "gase_cal", |
| "ip", "ipspr15v", "bt", |
| "density", "n1rms", "n2rms", "prad" |
| ], |
| "block2_pedestal": ["pedestal"], |
| "block3_40_ece": [ |
| "ece1", "ece2", "ece3", "ece4", "ece5", "ece6", "ece7", "ece8", "ece9", "ece10", |
| "ece11", "ece12", "ece13", "ece14", "ece15", "ece16", "ece17", "ece18", "ece19", "ece20", |
| "ece21", "ece22", "ece23", "ece24", "ece25", "ece26", "ece27", "ece28", "ece29", "ece30", |
| "ece31", "ece32", "ece33", "ece34", "ece35", "ece36", "ece37", "ece38", "ece39", "ece40" |
| ], |
| "block4_3_radiation": ["prad_tot", "prad_divl", "prad_divu"], |
| "block5_edensfit89": ["edensfit89"] |
| } |
| } |
|
|