reinfer_client/resources/
validation.rs1use crate::{LabelGroup, LabelName, ModelVersion};
2use ordered_float::NotNan;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize)]
6pub struct LabelValidation {
7 pub thresholds: Vec<NotNan<f64>>,
8 pub precisions: Vec<NotNan<f64>>,
9 pub recalls: Vec<NotNan<f64>>,
10}
11
12#[derive(Serialize)]
13pub struct LabelValidationRequest {
14 pub label: LabelName,
15}
16
17#[derive(Deserialize)]
18pub struct LabelValidationResponse {
19 pub label_validation: LabelValidation,
20}
21
22#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
23pub struct ModelScore(pub f32);
24
25impl std::fmt::Display for ModelScore {
26 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27 write!(f, "{}", self.0)
28 }
29}
30
31#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
32#[serde(rename_all = "snake_case")]
33pub enum DatasetQuality {
34 None,
35 Poor,
36 Average,
37 Good,
38 Excellent,
39}
40
41impl std::fmt::Display for DatasetQuality {
42 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43 write!(
44 f,
45 "{}",
46 match self {
47 Self::None => "None",
48 Self::Poor => "Poor",
49 Self::Average => "Average",
50 Self::Good => "Good",
51 Self::Excellent => "Excellent",
52 }
53 )
54 }
55}
56
57#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
58pub struct ModelRating {
59 pub score: ModelScore,
60 pub quality: DatasetQuality,
61}
62
63#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
64pub struct ValidationSummary {
65 pub version: ModelVersion,
66 pub model_rating: ModelRating,
67 pub reviewed_size: usize,
68}
69
70#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
71pub struct ValidationResponse {
72 pub label_groups: Vec<LabelGroup>,
73 pub validation: ValidationSummary,
74}
75
76impl ValidationResponse {
77 pub fn get_default_label_group(&self) -> Option<&LabelGroup> {
78 self.label_groups
79 .iter()
80 .find(|group| group.name.0 == "default")
81 }
82}