Skip to main content

MultiFunData

Struct MultiFunData 

Source
#[non_exhaustive]
pub struct MultiFunData { /* private fields */ }
Expand description

Multi-domain functional data container.

Holds several FdComponent blocks that may live on different domains (grids, lengths). The invariant shared across all components is that they must all record the same number of observations (data.nrows()). Each component keeps its own evaluation grid so that multi-domain data (e.g. temperature + precipitation observed at different densities) can coexist under a single object.

Constructed via MultiFunData::new, which validates both invariants:

  1. All components must have data.nrows() == n_obs (equal observation count).
  2. Each component must have argvals.len() == data.ncols().

§Examples

use fdars_core::matrix::FdMatrix;
use fdars_core::multi_fdata::{FdComponent, MultiFunData};

let n = 8;
let comp_a = FdComponent {
    data: FdMatrix::zeros(n, 20),
    argvals: (0..20).map(|i| i as f64).collect(),
};
let comp_b = FdComponent {
    data: FdMatrix::zeros(n, 5),
    argvals: vec![0.0, 0.25, 0.5, 0.75, 1.0],
};
let mfd = MultiFunData::new(vec![comp_a, comp_b]).unwrap();
assert_eq!(mfd.n_obs(), n);
assert_eq!(mfd.n_components(), 2);

Implementations§

Source§

impl MultiFunData

Source

pub fn new(components: Vec<FdComponent>) -> Result<Self, FdarError>

Construct a validated multi-domain functional data container.

§Invariants enforced
  1. components must be non-empty.
  2. All components must share the same observation count (data.nrows()).
  3. Each component must satisfy argvals.len() == data.ncols().
§Errors
§Examples
use fdars_core::matrix::FdMatrix;
use fdars_core::multi_fdata::{FdComponent, MultiFunData};

let comp = FdComponent {
    data: FdMatrix::zeros(3, 6),
    argvals: vec![0.0, 0.2, 0.4, 0.6, 0.8, 1.0],
};
let mfd = MultiFunData::new(vec![comp]).unwrap();
assert_eq!(mfd.n_obs(), 3);
Source

pub fn n_obs(&self) -> usize

Number of observations shared by all components.

§Panics

Never — components is always non-empty after MultiFunData::new.

Source

pub fn n_components(&self) -> usize

Number of components.

Source

pub fn component(&self, k: usize) -> Result<&FdComponent, FdarError>

Return a reference to the k-th component.

§Errors

FdarError::InvalidParameter if k >= n_components().

Source

pub fn argvals(&self, k: usize) -> Result<&[f64], FdarError>

Return a reference to the evaluation grid of the k-th component.

§Errors

FdarError::InvalidParameter if k >= n_components().

Trait Implementations§

Source§

impl Clone for MultiFunData

Source§

fn clone(&self) -> MultiFunData

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MultiFunData

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for MultiFunData

Source§

fn eq(&self, other: &MultiFunData) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for MultiFunData

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V