trustformers_debug/interpretability/
attribution.rs1use chrono::{DateTime, Utc};
7use serde::{Deserialize, Serialize};
8use std::collections::HashMap;
9
10use super::config::AttributionMethod;
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct FeatureAttributionResult {
15 pub timestamp: DateTime<Utc>,
17 pub attribution_by_method: HashMap<AttributionMethod, AttributionMethodResult>,
19 pub consensus_attribution: Vec<FeatureAttribution>,
21 pub method_agreement: MethodAgreementAnalysis,
23 pub top_features: Vec<TopFeature>,
25 pub visualization_data: AttributionVisualizationData,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct AttributionMethodResult {
32 pub method: AttributionMethod,
34 pub attributions: Vec<FeatureAttribution>,
36 pub method_parameters: HashMap<String, f64>,
38 pub reliability_score: f64,
40 pub computation_time_ms: f64,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct FeatureAttribution {
47 pub feature_id: String,
49 pub feature_name: String,
51 pub attribution_value: f64,
53 pub confidence: f64,
55 pub feature_value: f64,
57 pub normalized_attribution: f64,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct MethodAgreementAnalysis {
64 pub method_correlations: HashMap<(AttributionMethod, AttributionMethod), f64>,
66 pub overall_agreement: f64,
68 pub consistent_features: Vec<String>,
70 pub divergent_features: Vec<String>,
72 pub method_reliability: Vec<(AttributionMethod, f64)>,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
78pub struct TopFeature {
79 pub feature: FeatureAttribution,
81 pub overall_rank: usize,
83 pub method_ranks: HashMap<AttributionMethod, usize>,
85 pub stability: f64,
87 pub interpretation: String,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct AttributionVisualizationData {
94 pub heatmap_data: Vec<Vec<f64>>,
96 pub feature_names: Vec<String>,
98 pub method_names: Vec<String>,
100 pub timeline_data: Option<Vec<TimelinePoint>>,
102 pub interaction_data: Vec<FeatureInteraction>,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct TimelinePoint {
109 pub time_point: usize,
111 pub attributions: Vec<FeatureAttribution>,
113}
114
115#[derive(Debug, Clone, Serialize, Deserialize)]
117pub struct FeatureInteraction {
118 pub feature1: String,
120 pub feature2: String,
122 pub interaction_strength: f64,
124 pub interaction_type: InteractionType,
126}
127
128#[derive(Debug, Clone, Serialize, Deserialize)]
130pub enum InteractionType {
131 Positive,
133 Negative,
135 Conditional,
137 Independent,
139}