Spaces:
Sleeping
Sleeping
| 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") | |