RFTSystems's picture
Update app.py
151a562 verified
import gradio as gr
import json
import os
import matplotlib.pyplot as plt
from simulation import RFTSimulation
from utils import export_json, seed_everything
# Detect Colab
IN_COLAB = 'COLAB_GPU' in os.environ or 'Google' in os.environ.get('COLAB_CLOUD_PLATFORM', '')
if IN_COLAB:
from IPython.display import Image, display
# -----------------------------
# Core Simulation Function
# -----------------------------
def run_simulation_and_plot(num_agents, steps, mutation_rate, drift_rate, seed=None):
if seed is not None:
seed_everything(seed)
simulation = RFTSimulation(num_agents, steps, mutation_rate, drift_rate, save_plots=True)
all_agents_history, coherence_list, stability_list = simulation.run()
final_agent_states = []
for i, agent in enumerate(simulation.agents):
final_agent_states.append({
'id': i + 1,
'phi': agent.phi,
'tau_eff': agent.tau_eff,
'tier': agent.tier,
'fitness': agent.fitness
})
json_filename = "final_agent_states.json"
export_json(final_agent_states, json_filename)
plot_filenames = [
'phi_plot.png',
'tau_plot.png',
'fitness_plot.png',
'coherence_plot.png',
'stability_plot.png'
]
return (*plot_filenames, json_filename)
# -----------------------------
# PREMIUM UI (Always Unlocked)
# -----------------------------
with gr.Blocks(title="RFT Agent Simulation Engine — Premium") as iface:
gr.Markdown("# 🔥 RFT Agent Simulation Engine — Premium Edition")
gr.Markdown("Full‑power simulation engine with extended limits, advanced controls, and unrestricted exports.")
with gr.Group():
gr.Markdown("### Premium Simulation Controls")
num_agents = gr.Slider(1, 200, value=10, step=1, label="Number of Agents (Premium)")
steps = gr.Slider(10, 20000, value=500, step=10, label="Steps (Premium)")
mutation_rate = gr.Slider(0.001, 1.0, value=0.05, step=0.001, label="Mutation Rate")
drift_rate = gr.Slider(0.001, 1.0, value=0.02, step=0.001, label="Drift Rate")
seed = gr.Number(value=42, label="Random Seed")
outputs = [
gr.Image(label="Phi Plot"),
gr.Image(label="Tau Effective Plot"),
gr.Image(label="Fitness Plot"),
gr.Image(label="Coherence Plot"),
gr.Image(label="Stability Plot"),
gr.File(label="Exported Final Agent States (JSON)")
]
run_button = gr.Button("🚀 Run Premium Simulation")
run_button.click(
run_simulation_and_plot,
inputs=[num_agents, steps, mutation_rate, drift_rate, seed],
outputs=outputs
)
# -----------------------------
# Launch Logic
# -----------------------------
if IN_COLAB:
print("Running in Colab development mode (skipping Gradio launch).")
else:
iface.launch()