scouter_types/psi/
types.rs

1use crate::util::PyHelperFuncs;
2use chrono::{DateTime, Utc};
3use pyo3::prelude::*;
4use serde::{Deserialize, Serialize};
5use std::collections::BTreeMap;
6
7#[pyclass]
8#[derive(Serialize, Deserialize, Debug, Clone, Default)]
9pub struct BinnedPsiMetric {
10    #[pyo3(get)]
11    pub created_at: Vec<DateTime<Utc>>,
12
13    #[pyo3(get)]
14    pub psi: Vec<f64>,
15
16    #[pyo3(get)]
17    pub overall_psi: f64,
18
19    #[pyo3(get)]
20    pub bins: BTreeMap<usize, f64>,
21}
22
23#[pymethods]
24impl BinnedPsiMetric {
25    pub fn __str__(&self) -> String {
26        // serialize the struct to a string
27        PyHelperFuncs::__str__(self)
28    }
29}
30
31#[pyclass]
32#[derive(Serialize, Deserialize, Debug, Clone, Default)]
33pub struct BinnedPsiFeatureMetrics {
34    #[pyo3(get)]
35    pub features: BTreeMap<String, BinnedPsiMetric>,
36}
37
38#[pymethods]
39impl BinnedPsiFeatureMetrics {
40    pub fn __str__(&self) -> String {
41        // serialize the struct to a string
42        PyHelperFuncs::__str__(self)
43    }
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize, Default)]
47pub struct FeatureBinProportionResult {
48    pub feature: String,
49    pub created_at: Vec<DateTime<Utc>>,
50    pub bin_proportions: Vec<BTreeMap<usize, f64>>,
51    pub overall_proportions: BTreeMap<usize, f64>,
52}