Skip to main content

gamlss_core/
error.rs

1use thiserror::Error;
2
3/// Ошибки построения и проверки GAMLSS-моделей.
4#[derive(Debug, Clone, PartialEq, Eq, Error)]
5pub enum ModelError {
6    /// Response vector пуст.
7    #[error("response vector must contain at least one observation")]
8    EmptyResponse,
9
10    /// Скалярный параметр модели имеет недопустимое значение.
11    #[error("{parameter} must be {expected}")]
12    InvalidParameter {
13        /// Имя параметра.
14        parameter: &'static str,
15        /// Ожидаемый инвариант.
16        expected: &'static str,
17    },
18
19    /// Dense matrix получила неверное число row-major значений.
20    ///
21    /// Число переданных значений `actual_values` не совпадает с `nrows * ncols`.
22    #[error("design matrix has {actual_values} values, expected {expected_values}")]
23    DesignSize {
24        /// Ожидаемое число значений.
25        expected_values: usize,
26        /// Фактическое число значений.
27        actual_values: usize,
28    },
29
30    /// Число строк design matrix не совпадает с длиной response.
31    #[error(
32        "{parameter} design has {actual_rows} rows, expected {expected_rows} rows from response"
33    )]
34    DesignRowMismatch {
35        /// Имя или роль проверяемого параметра.
36        parameter: &'static str,
37        /// Ожидаемое число строк.
38        expected_rows: usize,
39        /// Фактическое число строк.
40        actual_rows: usize,
41    },
42
43    /// Длина response не совпадает с ожидаемой.
44    #[error("response length is {actual}, expected {expected}")]
45    ResponseLength {
46        /// Ожидаемая длина.
47        expected: usize,
48        /// Фактическая длина.
49        actual: usize,
50    },
51
52    /// Длина beta-вектора не совпадает с числом коэффициентов модели.
53    #[error("beta length is {actual}, expected {expected}")]
54    BetaLength {
55        /// Ожидаемая длина.
56        expected: usize,
57        /// Фактическая длина.
58        actual: usize,
59    },
60
61    /// Длина gradient-вектора не совпадает с числом коэффициентов модели.
62    #[error("gradient length is {actual}, expected {expected}")]
63    GradientLength {
64        /// Ожидаемая длина.
65        expected: usize,
66        /// Фактическая длина.
67        actual: usize,
68    },
69
70    /// Два parameter block используют пересекающиеся диапазоны beta.
71    #[error("{first} parameter block overlaps with {second} parameter block")]
72    BlockOverlap {
73        /// Первый пересекающийся блок.
74        first: &'static str,
75        /// Второй пересекающийся блок.
76        second: &'static str,
77    },
78}