CV10 / analyze_cocoons2.py
Raiff1982's picture
Upload 189 files
02919f5 verified
raw
history blame
2.62 kB
import os
import json
import matplotlib.pyplot as plt
# --- Setup ---
folder = '.' # Use '.' if script is in same directory as cocoons, or set full path
quantum_states = []
chaos_states = []
proc_ids = []
labels = []
all_perspectives = []
# --- Read cocoons ---
for fname in os.listdir(folder):
if fname.endswith('.cocoon'):
with open(os.path.join(folder, fname), 'r') as f:
try:
data = json.load(f)['data']
quantum = data.get('quantum_state', [0, 0])
chaos = data.get('chaos_state', [0, 0, 0])
pid = data.get('run_by_proc', -1)
perspectives = data.get('perspectives', [])
quantum_states.append(quantum)
chaos_states.append(chaos)
proc_ids.append(pid)
labels.append(fname)
all_perspectives.append(perspectives)
except Exception as e:
print(f"Warning: {fname} failed to read ({e})")
# --- Table Output ---
print("\nStep-by-step Fact Table:\n")
header = "Cocoon File | Quantum State | Chaos State | Proc/CoreID | Perspectives"
print(header)
print('-'*len(header))
for l,q,c,p,s in zip(labels, quantum_states, chaos_states, proc_ids, all_perspectives):
print(f"{l} | {q} | {c} | {p} | {s}")
# --- Plots ---
if len(quantum_states) > 0 and len(chaos_states) > 0:
q0 = [q[0] for q in quantum_states]
q1 = [q[1] for q in quantum_states]
c0 = [c[0] for c in chaos_states]
c2 = [c[2] if len(c) > 2 else 0 for c in chaos_states]
fig, axs = plt.subplots(1, 2, figsize=(14,6))
# First plot: Quantum[0] vs Chaos[0]
sc0 = axs[0].scatter(q0, c0, c=proc_ids, cmap='hsv', s=80)
axs[0].set_xlabel('Quantum State [0]')
axs[0].set_ylabel('Chaos State [0]')
axs[0].set_title('Quantum[0] vs Chaos[0]')
axs[0].grid(True)
cb1 = fig.colorbar(sc0, ax=axs[0], label="Proc/Core ID")
# Second plot: Quantum[1] vs Chaos[2]
sc1 = axs[1].scatter(q1, c2, c=proc_ids, cmap='plasma', s=80)
axs[1].set_xlabel('Quantum State [1]')
axs[1].set_ylabel('Chaos State [2]')
axs[1].set_title('Quantum[1] vs Chaos[2]')
axs[1].grid(True)
cb2 = fig.colorbar(sc1, ax=axs[1], label="Proc/Core ID")
plt.suptitle("Parallel Codette Universe Analysis", fontsize=16)
fig.subplots_adjust(
top=0.88,
bottom=0.11,
left=0.07,
right=0.95,
wspace=0.3,
hspace=0.2
)
plt.show()
else:
print("\nNo cocoons with valid data found.\n")