ds6b-attackplan-qlora / scripts /write_glm_snippets.py
adetuire1's picture
Upload folder using huggingface_hub
fba140f verified
# -*- coding: utf-8 -*-
"""
write_glm_snippets.py
Write a few canonical GLM snippets under kb/snippets/glm for reference.
These are small, human-readable examples — not full runnable feeders.
Usage:
%run scripts/write_glm_snippets.py
"""
from pathlib import Path
SNIPS = {
"open_switch_status.glm": r"""// Minimal switch example (OPEN)
object switch {
name microgrid_switch_YYY;
status OPEN; // CLOSE to reconnect
}
""",
"close_switch_status.glm": r"""// Minimal switch example (CLOSED)
object switch {
name microgrid_switch_YYY;
status CLOSED;
}
""",
"set_inverter_Pref_Qref.glm": r"""// Inverter real/reactive setpoints (values indicative)
object inverter_dyn {
name inverter_XXX;
Pref 10000; // [W]
Qref 0; // [var]
// Pmax 50000; // [W] (if present in your models)
// Qmax 30000; // [var]
// Vset 4800; // [mV] or [V] depending on your modeling (verify in your pipeline)
}
""",
"set_load_constant_power_A.glm": r"""// Load constant power (phase A)
object load {
name load_41;
constant_power_A 25000; // [VA], can be complex like 60000+12000j
}
""",
"set_generator_power_out.glm": r"""// Diesel generator phase power outputs
object diesel_dg {
name gen_01;
power_out_A 60000+12000j; // [VA], complex
// power_out_B 40000+8000j;
// power_out_C 30000+5000j;
}
""",
"set_capacitor_phase.glm": r"""// Capacitor phase state/setting (model-specific)
object capacitor {
name cap_01;
// Some models use per-phase flags or discrete steps; confirm with your code.
// Examples (choose one representation your pipeline expects):
// capacitor_A CLOSED;
// capacitor_B OPEN;
// capacitor_C CLOSED;
}
""",
"set_regulator_tap.glm": r"""// Regulator tap steps (example)
object regulator {
name reg_01;
tap_A 3; // integer step
tap_B 2;
tap_C 4;
}
""",
"README.md": r"""These snippets are tiny GLM fragments used as **reference** for RAG.
They are not full feeders. Use them to:
- ground the LLM on property spellings and typical values,
- show OPEN/CLOSED vs numeric edits,
- remind how inverter/load/generator/regulator properties look in GLM.
**REALITY FILTER**:
- Where semantics are unclear, this folder includes comments marked [Inference] or asks you to verify in your pipeline.
- Prefer your actual GLM corpus (via RAG) for precise formatting when available.
"""
}
def main():
outdir = Path("kb/snippets/glm")
outdir.mkdir(parents=True, exist_ok=True)
for fname, text in SNIPS.items():
(outdir / fname).write_text(text.strip() + "\n", encoding="utf-8")
print("[ok] wrote", len(SNIPS), "files to", outdir.resolve())
if __name__ == "__main__":
main()