light_curve_feature/
feature.rs

1use crate::evaluator::*;
2use crate::extractor::FeatureExtractor;
3use crate::features::*;
4use crate::float_trait::Float;
5use crate::time_series::TimeSeries;
6use crate::transformers::Transformer;
7
8use enum_dispatch::enum_dispatch;
9use std::fmt::Debug;
10
11/// All features are available as variants of this enum
12///
13/// Consider to import [crate::FeatureEvaluator] as well
14#[enum_dispatch(FeatureEvaluator<T>, FeatureNamesDescriptionsTrait, EvaluatorInfoTrait)]
15#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema)]
16#[serde(bound = "T: Float")]
17#[non_exhaustive]
18pub enum Feature<T>
19where
20    T: Float,
21{
22    // extractor
23    FeatureExtractor(FeatureExtractor<T, Self>),
24    // features
25    Amplitude,
26    AndersonDarlingNormal,
27    Bins(Bins<T, Self>),
28    BazinFit,
29    BeyondNStd(BeyondNStd<T>),
30    Cusum,
31    Duration,
32    Eta,
33    EtaE,
34    ExcessVariance,
35    InterPercentileRange,
36    Kurtosis,
37    LinearFit,
38    LinearTrend,
39    LinexpFit,
40    MagnitudePercentageRatio,
41    MaximumSlope,
42    MaximumTimeInterval,
43    MinimumTimeInterval,
44    Mean,
45    MeanVariance,
46    Median,
47    MedianAbsoluteDeviation,
48    MedianBufferRangePercentage(MedianBufferRangePercentage<T>),
49    ObservationCount,
50    OtsuSplit,
51    PercentAmplitude,
52    PercentDifferenceMagnitudePercentile,
53    Periodogram(Periodogram<T, Self>),
54    _PeriodogramPeaks,
55    ReducedChi2,
56    Roms,
57    Skew,
58    StandardDeviation,
59    StetsonK,
60    TimeMean,
61    TimeStandardDeviation,
62    Transformed(Transformed<T, Self, Transformer<T>>),
63    VillarFit,
64    WeightedMean,
65}