Files
resonance-engine/scripts/sweep_real.py
T
Scruff AI 9302a86ea8 2026-03-28: EM spectrum overlay, CTO report, sweep/analysis scripts, prime analysis
New docs:
- docs/em_spectrum_overlay.html: Full EM spectrum with Khra/Gixx lines, physics markers, cell-size slider
- docs/2026-03-28_170500_cto-report_fractal-echo-analysis.txt: CTO fractal echo analysis report

New scripts (Beast sweep infrastructure + analyzers):
- scripts/nuclear_magic_analyzer.py: shell structure, peak clustering, mode counting, GUE tests
- scripts/physics_domain_analysis.py: 4-domain physics (nuclear shells, Brillouin, band gaps, GUE)
- scripts/direct_zmq_sweep.py: ZMQ direct sweep driver
- scripts/sweep_real.py: real sweep execution
- scripts/analyze_sweep.py, comprehensive_analysis.py: sweep analysis tools
- scripts/execute_prime_mapping.py: prime lattice mapping
- scripts/extrapolate_findings.py, check_extrapolation.py: extrapolation tools
- scripts/eta_calc.py, time_estimate.py, updated_estimate.py, show_pattern.py: utilities

Prime analysis (root):
- navigator_prime_analysis.py, navigator_prime_analysis_v2.py

Updated:
- navigator/mock_lbm_daemon.py, navigator/telemetry_server.py
2026-03-28 17:31:52 +07:00

116 lines
3.8 KiB
Python

#!/usr/bin/env python3
"""
EM Frequency Sweep - Real Data Collection
No bullshit. Just numbers.
"""
import zmq
import json
import time
import csv
import requests
from datetime import datetime
import sys
import os
OBSERVER_URL = "http://127.0.0.1:28820"
OUTPUT_FILE = "/mnt/d/Resonance_Engine/sweep_results/em_sweep_real.csv"
# Sweep ranges - reduced for faster collection
OMEGA_VALUES = [round(0.5 + 0.1*i, 1) for i in range(21)] # 0.5 to 2.5
KHRA_VALUES = [0.01, 0.03, 0.05] # Reduced from 5 to 3 values
GIXX_VALUES = [0.004, 0.008, 0.012] # Reduced from 5 to 3 values
STABILIZE_TIME = 2 # Reduced from 3 to 2 seconds
def send_zmq_command(cmd, value=None):
"""Send command. No waiting."""
try:
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.connect("tcp://localhost:5557")
socket.setsockopt(zmq.LINGER, 0)
time.sleep(0.1)
if value is not None:
msg = json.dumps({"cmd": cmd, "value": float(value)})
else:
msg = json.dumps({"cmd": cmd})
socket.send_string(msg)
socket.close()
context.term()
return True
except:
return False
def get_telemetry():
"""Get telemetry."""
try:
response = requests.get(f"{OBSERVER_URL}/telemetry", timeout=5)
return response.json()
except:
return None
def main():
total_points = len(OMEGA_VALUES) * len(KHRA_VALUES) * len(GIXX_VALUES)
print(f"SWEEP START: {total_points} points")
print(f"Output: {OUTPUT_FILE}")
print("")
# Ensure directory exists
os.makedirs(os.path.dirname(OUTPUT_FILE), exist_ok=True)
point_count = 0
with open(OUTPUT_FILE, 'w', newline='', buffering=1) as f: # Line buffered
writer = csv.writer(f)
writer.writerow(['timestamp', 'omega', 'khra_amp', 'gixx_amp', 'coherence', 'asymmetry', 'vorticity_mean', 'gpu_temp_c', 'gpu_power_w', 'cycle'])
f.flush()
for omega in OMEGA_VALUES:
for khra in KHRA_VALUES:
for gixx in GIXX_VALUES:
point_count += 1
print(f"[{point_count}/{total_points}] omega={omega} khra={khra} gixx={gixx}")
# Send commands
send_zmq_command("set_omega", omega)
time.sleep(0.1)
send_zmq_command("set_khra_amp", khra)
time.sleep(0.1)
send_zmq_command("set_gixx_amp", gixx)
# Wait
time.sleep(STABILIZE_TIME)
# Get data
telem = get_telemetry()
if telem:
row = [
datetime.now().isoformat(),
omega, khra, gixx,
telem.get('coherence', 0),
telem.get('asymmetry', 0),
telem.get('vorticity_mean', 0),
telem.get('gpu_temp_c', 0),
telem.get('gpu_power_w', 0),
telem.get('cycle', 0)
]
writer.writerow(row)
f.flush() # Force write to disk
print(f" -> Coh={telem.get('coherence', 0):.4f} T={telem.get('gpu_temp_c', 0)}C P={telem.get('gpu_power_w', 0)}W")
else:
print(f" -> FAILED")
if point_count % 10 == 0:
print(f"PROGRESS: {point_count}/{total_points}")
print(f"")
print(f"SWEEP COMPLETE: {point_count} points")
print(f"Output: {OUTPUT_FILE}")
if __name__ == "__main__":
main()