demo_offline_matching/
demo_offline_matching.rs1use phenomenological_rendezvous::matching::{MatchingConfig, Matcher};
2use phenomenological_rendezvous::srt::pattern_from_srt;
3use phenomenological_rendezvous::{SemanticRendezvousToken, SubmodalityPattern};
4
5fn main() {
6 let srt = SemanticRendezvousToken::from_hex(
7 "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
8 )
9 .expect("valid hex");
10 let target = pattern_from_srt(&srt, b"oracle-state");
11
12 let measured_stream = vec![
13 SubmodalityPattern::zeros(),
14 SubmodalityPattern {
15 brightness: 0.52,
16 volume: 0.47,
17 ..SubmodalityPattern::zeros()
18 },
19 SubmodalityPattern {
20 brightness: 0.51,
21 volume: 0.48,
22 ..SubmodalityPattern::zeros()
23 },
24 SubmodalityPattern {
25 brightness: 0.5,
26 volume: 0.49,
27 ..SubmodalityPattern::zeros()
28 },
29 ];
30
31 let mut matcher = Matcher::new(MatchingConfig::new(0.2, 2));
32
33 for (index, measured) in measured_stream.iter().enumerate() {
34 let matched = matcher.observe(measured, &target);
35 if matched {
36 println!("rendezvous triggered at index {index}");
37 } else {
38 println!("no match at index {index}");
39 }
40 }
41}