DrMoagiSpace / app.py
LordXido's picture
Update app.py
c142618 verified
import gradio as gr
import numpy as np
import time
from system import DrMoagiArchitecture
from graph_cluster import GraphMoagiCluster
from trainer import SelfTrainer
from policy import PolicyController
from visualization import plot_knowledge
system = DrMoagiArchitecture(dim=16)
cluster = GraphMoagiCluster(nodes=6, dim=16)
trainer = SelfTrainer(system)
policy_controller = PolicyController(system)
def step_system(steps):
for _ in range(int(steps)):
Psi = np.random.randn(system.n)
system.bounded_update(Psi)
return diagnostics()
def diagnostics():
return {
"Xi_norm": float(np.linalg.norm(system.Xi)),
"Omega_norm": float(np.linalg.norm(system.Omega)),
"Knowledge_Field_K": float(system.archive[-1]) if system.archive else 0.0,
"Lyapunov_Energy": float(system.lyapunov_energy()),
"Entropy": float(system.entropy()),
"Stability_Zone": system.stability_zone(),
"Ticks": system.tick_counter,
}
def reset_system(seed):
global system, trainer, policy_controller
system = DrMoagiArchitecture(dim=16, seed=int(seed))
trainer = SelfTrainer(system)
policy_controller = PolicyController(system)
return {"status": "reset complete"}
def autonomous_loop():
while system.running:
Psi = np.random.randn(system.n)
system.bounded_update(Psi)
time.sleep(0.1)
with gr.Blocks(title="Dr Moagi Research Engine") as demo:
gr.Markdown("## Dr Moagi Distributed Research Engine")
steps_input = gr.Number(value=5, label="Steps")
seed_input = gr.Number(value=42, label="Seed")
run_btn = gr.Button("Run")
reset_btn = gr.Button("Reset")
start_btn = gr.Button("Start Autonomous")
stop_btn = gr.Button("Stop Autonomous")
cluster_btn = gr.Button("Cluster Step")
train_btn = gr.Button("Self-Train")
policy_btn = gr.Button("Policy Step")
plot_btn = gr.Button("Plot Knowledge")
output_json = gr.JSON()
plot_output = gr.Plot()
run_btn.click(step_system, inputs=steps_input, outputs=output_json)
reset_btn.click(reset_system, inputs=seed_input, outputs=output_json)
start_btn.click(lambda: system.start(), outputs=[])
stop_btn.click(lambda: system.stop(), outputs=[])
cluster_btn.click(lambda: cluster.graph_step(), outputs=[])
train_btn.click(lambda: trainer.train_step(), outputs=[])
policy_btn.click(lambda: policy_controller.policy_step(), outputs=[])
plot_btn.click(lambda: plot_knowledge(system.archive), outputs=plot_output)
if __name__ == "__main__":
demo.launch()