fraug/augmenters/
resize.rs

1use super::base::Augmenter;
2use tracing::{info_span};
3/// Changes temporal resolution of time series by changing the length
4///
5/// Does not interpolate values!
6pub struct Resize {
7    pub name: String,
8    /// size after the augmentation
9    pub size: usize,
10    p: f64,
11}
12
13impl Resize {
14    /// Creates new resize augmenter
15    pub fn new(size: usize) -> Self {
16        Resize {
17            name: "Resize".to_string(),
18            size,
19            p: 1.0,
20        }
21    }
22}
23
24impl Augmenter for Resize {
25    fn augment_one(&self, x: &[f64]) -> Vec<f64> {
26        let span = info_span!("", step = "augment_one");
27        let _enter = span.enter();
28
29        let ratio = x.len() as f64 / self.size as f64;
30        (0..self.size)
31            .map(|i| x[(i as f64 * ratio) as usize])
32            .collect()
33    }
34
35    fn get_probability(&self) -> f64 {
36        self.p
37    }
38
39    fn set_probability(&mut self, probability: f64) {
40        self.p = probability;
41    }
42
43    fn get_name(&self) ->String {
44        self.name.clone()
45    }
46}