modewise_operations/
lib.rs

1//! Built-in pipeline operations: adapters from methods to the pipeline engine.
2
3mod catalogue;
4mod cwt;
5mod emd;
6mod epoch;
7mod functional_connectivity;
8mod hilbert;
9mod mvmd;
10mod reconstruct;
11mod regions;
12mod spectrum;
13mod stft;
14mod vlmd;
15mod wavelet;
16
17use std::sync::Arc;
18
19use modewise_pipeline::{Artifact, Inputs, Registry};
20
21pub use catalogue::{catalogue, reference_markdown};
22pub use cwt::CwtOperation;
23pub use emd::{CeemdanOperation, EemdOperation, EmdOperation, MemdOperation};
24pub use epoch::EpochOperation;
25pub use functional_connectivity::FunctionalConnectivityOperation;
26pub use hilbert::{HilbertOperation, HilbertSpectrumOperation};
27pub use mvmd::{MvmdOperation, NaMvmdOperation, VmdOperation};
28pub use reconstruct::ReconstructOperation;
29pub use regions::{RegionAverageOperation, SelectOperation};
30pub use spectrum::SpectrumOperation;
31pub use stft::StftOperation;
32pub use vlmd::VlmdOperation;
33pub use wavelet::ModwtMraOperation;
34
35pub fn register_builtin(registry: &mut Registry) {
36    registry.register(Arc::new(FunctionalConnectivityOperation));
37    registry.register(Arc::new(CwtOperation));
38    registry.register(Arc::new(EpochOperation));
39    registry.register(Arc::new(HilbertOperation));
40    registry.register(Arc::new(HilbertSpectrumOperation));
41    registry.register(Arc::new(CeemdanOperation));
42    registry.register(Arc::new(EemdOperation));
43    registry.register(Arc::new(EmdOperation));
44    registry.register(Arc::new(MemdOperation));
45    registry.register(Arc::new(ModwtMraOperation));
46    registry.register(Arc::new(MvmdOperation));
47    registry.register(Arc::new(NaMvmdOperation));
48    registry.register(Arc::new(VmdOperation));
49    registry.register(Arc::new(SpectrumOperation));
50    registry.register(Arc::new(StftOperation));
51    registry.register(Arc::new(VlmdOperation));
52    registry.register(Arc::new(ReconstructOperation));
53    registry.register(Arc::new(RegionAverageOperation));
54    registry.register(Arc::new(SelectOperation));
55}
56
57pub fn builtin_registry() -> Registry {
58    let mut registry = Registry::new();
59    register_builtin(&mut registry);
60    registry
61}
62
63fn input<'a>(inputs: &'a Inputs, port: &str) -> Result<&'a Artifact, String> {
64    inputs
65        .get(port)
66        .map(|a| a.as_ref())
67        .ok_or_else(|| format!("input {port:?} missing"))
68}