router_demo/
router_demo.rs1use hybrid_phi::quantized_memory::phi_quantized_encode;
6use hybrid_phi::phi_fs::PhiMemoryStore;
7use hybrid_phi::phi_router::{phi_route, phi_similarity};
8use std::env;
9
10fn parse_args() -> (f64, f64, bool) {
11 let mut step = 0.01;
12 let mut threshold = 0.8;
13 let mut verbose = false;
14 for arg in env::args().skip(1) {
15 if let Some(v) = arg.strip_prefix("--step=") {
16 step = v.parse().unwrap_or(step);
17 }
18 if let Some(v) = arg.strip_prefix("--threshold=") {
19 threshold = v.parse().unwrap_or(threshold);
20 }
21 if arg == "--verbose" {
22 verbose = true;
23 }
24 }
25 (step, threshold, verbose)
26}
27
28fn main() {
29 let n = 10;
30 let (step, threshold, verbose) = parse_args();
31 let store = PhiMemoryStore::new(".phi_store");
32
33 let patterns = vec![
35 ("calm", vec![0.1, 0.1, 0.1, 0.1]),
36 ("ramp", vec![0.1, 0.2, 0.3, 0.4]),
37 ("burst", vec![1.0, 2.0, 3.0, 4.0]),
38 ];
39
40 for (name, signal) in &patterns {
41 let encoded: Vec<f64> = signal
42 .iter()
43 .map(|&x| phi_quantized_encode(x, n, step))
44 .collect();
45 store.save(name, &encoded).expect("save failed");
46 }
47
48 let input_signal = vec![0.95, 2.05, 3.1, 3.95];
50 let encoded_input: Vec<f64> = input_signal
51 .iter()
52 .map(|&x| phi_quantized_encode(x, n, step))
53 .collect();
54
55 if verbose {
56 println!("\nSimilarity to each pattern:");
57 let names = store.list().expect("failed to list");
58 for name in names {
59 if let Ok(entry) = store.load(&name) {
60 let score = phi_similarity(&encoded_input, &entry);
61 println!("- {}: {:.3}%", name, score * 100.0);
62 }
63 }
64 }
65
66 match phi_route(&encoded_input, &store, threshold) {
68 Some((name, score)) => {
69 println!("\nInput routed to '{}', similarity = {:.3}%", name, score * 100.0);
70 }
71 None => println!("\nNo matching route found (threshold = {:.2})", threshold),
72 }
73
74 let _ = std::fs::remove_dir_all(".phi_store");
76}