kernel_data/
kernel_data.rs

1use bokeh::{kernel_gaussian_components, params::*};
2use std::env;
3use std::fs::File;
4use std::io::prelude::*;
5
6fn main() -> std::io::Result<()> {
7    let mut args = env::args();
8    args.next();
9    let out_dir = args.next().unwrap_or("plots".to_string());
10
11    for (p, params) in [
12        KERNEL1_PARAM_SET,
13        KERNEL2_PARAM_SET,
14        KERNEL3_PARAM_SET,
15        KERNEL4_PARAM_SET,
16        KERNEL5_PARAM_SET,
17        KERNEL6_PARAM_SET,
18        KERNEL7_PARAM_SET,
19        KERNEL8_PARAM_SET,
20        KERNEL9_PARAM_SET,
21    ]
22    .iter()
23    .enumerate()
24    {
25        for kernel_size in [1, 5, 10, 50, 100] {
26            let kernels = kernel_gaussian_components(params, kernel_size as f64);
27
28            let mut output = vec![0.0; kernels[0].len()];
29            for (n, kernel) in kernels.iter().enumerate() {
30                for (m, k) in kernel.iter().enumerate() {
31                    output[m] += params.real_component(n) * k.re + params.imag_component(n) * k.im;
32                }
33
34                let mut file = File::create(format!("{}/{}_{}.json", out_dir, p + 1, kernel_size))?;
35                write!(file, "{:?}", output)?;
36            }
37        }
38    }
39
40    Ok(())
41}