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
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user