Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import numpy as np | |
| import plotly.graph_objects as go | |
| import sympy | |
| import cv2 | |
| import time | |
| import os | |
| import sys | |
| from collections import Counter | |
| from PIL import Image | |
| # Ensure logos package is importable | |
| current_dir = os.path.dirname(os.path.abspath(__file__)) | |
| parent_dir = os.path.dirname(current_dir) | |
| if parent_dir not in sys.path: | |
| sys.path.append(parent_dir) | |
| try: | |
| from logos.dsp_bridge import DSPBridge | |
| from logos.logos_core import PRIME_MODULO | |
| except ImportError as e: | |
| print(f"Error importing LOGOS components: {e}") | |
| DSPBridge = None | |
| PRIME_MODULO = 9973 | |
| # ========================================== | |
| # PRIME VISUALIZATION (From User Snippet) | |
| # ========================================== | |
| def get_gpf(n): | |
| """Returns the Greatest Prime Factor.""" | |
| if n <= 1: return 1 | |
| i = 2 | |
| while i * i <= n: | |
| if n % i: | |
| i += 1 | |
| else: | |
| n //= i | |
| return n | |
| def visualize_potentiality_flow(): | |
| """ | |
| Tab 1: Directed Graph (Sankey) showing Digit Constraints. | |
| """ | |
| labels = ["Integer Stream"] + [f"Ends in {i}" for i in range(10)] + ["Composite Sink", "Prime Potential (P_n)"] | |
| sources, targets, values, colors = [], [], [], [] | |
| # Layer 1: Stream -> Digits | |
| for i in range(10): | |
| sources.append(0); targets.append(i+1); values.append(10); colors.append("#444") | |
| # Layer 2: Digits -> Destination | |
| prime_lanes = [1, 3, 7, 9] | |
| for i in range(10): | |
| sources.append(i+1) | |
| if i in prime_lanes: | |
| targets.append(12) # Prime Potential | |
| colors.append("#00ffea") # Cyan | |
| else: | |
| targets.append(11) # Sink | |
| colors.append("#ff0055") # Red | |
| values.append(10) | |
| fig = go.Figure(data=[go.Sankey( | |
| node=dict(pad=15, thickness=20, line=dict(color="black", width=0.5), label=labels, color=["white"]+["#333"]*10+["#ff0055", "#00ffea"]), | |
| link=dict(source=sources, target=targets, value=values, color=colors) | |
| )]) | |
| fig.update_layout(title="Prime Potentiality Flow (Mod 10 Constraints)", template="plotly_dark", height=600) | |
| return fig | |
| def visualize_prime_network(max_integer, show_links): | |
| """ | |
| Tab 2: Radial Topology. | |
| """ | |
| fig = go.Figure() | |
| positions, gpf_map, prime_counts = {}, {}, Counter() | |
| for n in range(1, max_integer + 1): | |
| angle = np.pi/2 - (2 * np.pi * (n % 10)) / 10 # Clockwise from Top | |
| radius = n | |
| positions[n] = (radius * np.cos(angle), radius * np.sin(angle)) | |
| if n > 1 and not sympy.isprime(n): | |
| gpf = get_gpf(n) | |
| gpf_map[n] = gpf | |
| prime_counts[gpf] += 1 | |
| if show_links: | |
| edge_x, edge_y = [], [] | |
| for n, base in gpf_map.items(): | |
| if base in positions: | |
| x0, y0 = positions[n] | |
| x1, y1 = positions[base] | |
| edge_x.extend([x0, x1, None]) | |
| edge_y.extend([y0, y1, None]) | |
| fig.add_trace(go.Scatter(x=edge_x, y=edge_y, mode='lines', line=dict(color='rgba(100,100,100,0.15)', width=0.5), hoverinfo='none', name='GPF Gravity')) | |
| # Draw Nodes | |
| px, py, ps, pt = [], [], [], [] | |
| cx, cy, ct = [], [], [] | |
| for n in range(1, max_integer + 1): | |
| x, y = positions[n] | |
| if sympy.isprime(n) or n == 1: | |
| px.append(x); py.append(y) | |
| ps.append(5 + (np.log(prime_counts[n]+1)*6)) | |
| pt.append(f"PRIME: {n}<br>Gravity: {prime_counts[n]}") | |
| else: | |
| cx.append(x); cy.append(y) | |
| ct.append(f"Composite: {n}") | |
| fig.add_trace(go.Scatter(x=cx, y=cy, mode='markers', marker=dict(size=3, color='#ff0055', opacity=0.5), text=ct, hoverinfo='text', name='Composites')) | |
| fig.add_trace(go.Scatter(x=px, y=py, mode='markers', marker=dict(size=ps, color='#00ffea', line=dict(width=1, color='white')), text=pt, hoverinfo='text', name='Primes')) | |
| # Spokes | |
| for i in range(10): | |
| angle = np.pi/2 - (2 * np.pi * i) / 10 | |
| fig.add_trace(go.Scatter(x=[0, max_integer*1.1*np.cos(angle)], y=[0, max_integer*1.1*np.sin(angle)], mode='lines', line=dict(color='#222', width=1, dash='dot'), showlegend=False)) | |
| fig.update_layout(title=f"Radial Prime-Indexed Topology", template="plotly_dark", height=800, width=800, xaxis=dict(visible=False), yaxis=dict(visible=False)) | |
| return fig | |
| def visualize_gpf_counts(sequence_length): | |
| """ | |
| Tab 3: GPF Density (The Orange Graph). | |
| """ | |
| gpf_counts = Counter() | |
| for n in range(4, sequence_length): | |
| if not sympy.isprime(n): gpf_counts[get_gpf(n)] += 1 | |
| sorted_gpfs = sorted(gpf_counts.keys()) | |
| counts = [gpf_counts[p] for p in sorted_gpfs] | |
| fig = go.Figure(data=go.Bar(x=sorted_gpfs, y=counts, marker_color='#ff7f00', name="Composite Count")) | |
| fig.update_layout(title="Composite Density by GPF Base", xaxis_title="Prime Base", yaxis_title="Count", template="plotly_dark", xaxis=dict(type='category')) | |
| return fig | |
| # ========================================== | |
| # LOGOS MACHINE SHOP | |
| # ========================================== | |
| def process_dsp(image, grid_size=8, workers=16): | |
| """ | |
| Process image through LOGOS SPCW DSP Bridge. | |
| """ | |
| if image is None: | |
| return None, "No Image Provided" | |
| if DSPBridge is None: | |
| return None, "LOGOS Components Not Loaded" | |
| # Save temp file | |
| temp_path = "temp_ingest.png" | |
| if isinstance(image, np.ndarray): | |
| img_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) | |
| cv2.imwrite(temp_path, img_bgr) | |
| elif isinstance(image, str): | |
| temp_path = image | |
| else: | |
| # PIL Image | |
| try: | |
| image.save(temp_path) | |
| except Exception: | |
| # Maybe numpy conversion needed | |
| np_img = np.array(image) | |
| cv2.imwrite(temp_path, cv2.cvtColor(np_img, cv2.COLOR_RGB2BGR)) | |
| # Init Bridge | |
| bridge = DSPBridge(num_workers=int(workers), viewport_size=(1024, 768)) | |
| try: | |
| # Transmit (Encoding -> Decoding) | |
| stats = bridge.transmit(temp_path, show_window=False) | |
| # Get result | |
| recon = bridge.get_canvas() | |
| if recon is not None: | |
| # Convert to PIL | |
| output_img = Image.fromarray(recon) | |
| else: | |
| output_img = None | |
| # Format stats | |
| status = f""" | |
| ### LOGOS SPCW TRANSMISSION REPORT | |
| - **State**: CRYSTALLINE | |
| - **Mod**: {PRIME_MODULO} | |
| - **Waves**: {stats.total_tiles} ({stats.parallel_waves} parallel) | |
| - **Atoms**: {stats.atoms_sent} | |
| - **Throughput**: {stats.throughput_mbps:.2f} MB/s | |
| - **Latency**: {stats.elapsed_ms:.1f} ms | |
| - **SSIM**: {stats.ssim:.6f} | |
| """ | |
| return output_img, status | |
| except Exception as e: | |
| import traceback | |
| traceback.print_exc() | |
| return None, f"ERROR: {str(e)}" | |
| # ========================================== | |
| # APP LAYOUT | |
| # ========================================== | |
| with gr.Blocks(theme=gr.themes.Monochrome(), title="LOGOS SPCW Protocol") as demo: | |
| gr.Markdown("# LOGOS: Structured Prime Composite Waveform (SPCW)") | |
| gr.Markdown("_\"The Machine Shop\" - Research & Development Lab_") | |
| with gr.Tabs(): | |
| with gr.Tab("Prime Network Visualizer"): | |
| gr.Markdown("## Layer 1: Mathematical Blueprints") | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| max_int = gr.Slider(50, 5000, value=1000, label="Max Integer", step=50) | |
| show_links = gr.Checkbox(True, label="Show Gravity Links (GPF)") | |
| btn_viz = gr.Button("Generate Network", variant="primary") | |
| with gr.Column(scale=2): | |
| plot_radial = gr.Plot(label="Radial Topology") | |
| with gr.Row(): | |
| with gr.Column(): | |
| plot_flow = gr.Plot(label="Potentiality Flow") | |
| with gr.Column(): | |
| plot_counts = gr.Plot(label="Composite Density") | |
| btn_viz.click(visualize_prime_network, [max_int, show_links], plot_radial) | |
| btn_viz.click(visualize_potentiality_flow, None, plot_flow) | |
| btn_viz.click(visualize_gpf_counts, [max_int], plot_counts) | |
| with gr.Tab("The Machine Shop (DSP Bridge)"): | |
| gr.Markdown("## Layer 3: SPCW Transmission Engine") | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_img = gr.Image(type="numpy", label="Input Reality (The Cake)") | |
| workers = gr.Slider(1, 64, value=16, label="Parallel Workers", step=1) | |
| btn_proc = gr.Button("Bake & Eat (Transmit)", variant="primary") | |
| with gr.Column(): | |
| output_img = gr.Image(type="pil", label="Reconstructed Hologram") | |
| output_stats = gr.Markdown("Waiting for transmission...") | |
| btn_proc.click(process_dsp, [input_img, workers], [output_img, output_stats]) | |
| if __name__ == "__main__": | |
| demo.launch() | |