pub struct MultiLayerSpectrum<C: CentroidLike = CentroidPeak, D: DeconvolutedCentroidLike = DeconvolutedPeak> {
pub description: SpectrumDescription,
pub arrays: Option<BinaryArrayMap>,
pub peaks: Option<MZPeakSetType<C>>,
pub deconvoluted_peaks: Option<MassPeakSetType<D>>,
}Expand description
Represent a spectrum with multiple layers of representation of the peak data.
This type is useful because it permits us to hold spectra in incrementally more processed representations without loss of information.
Fields§
§description: SpectrumDescriptionThe spectrum metadata describing acquisition conditions and details.
arrays: Option<BinaryArrayMap>The (potentially absent) data arrays describing the m/z, intensity, and potentially other measured properties
peaks: Option<MZPeakSetType<C>>§deconvoluted_peaks: Option<MassPeakSetType<D>>Implementations§
Source§impl<C: CentroidLike, D: DeconvolutedCentroidLike> MultiLayerSpectrum<C, D>
impl<C: CentroidLike, D: DeconvolutedCentroidLike> MultiLayerSpectrum<C, D>
Sourcepub fn new(
description: SpectrumDescription,
arrays: Option<BinaryArrayMap>,
peaks: Option<MZPeakSetType<C>>,
deconvoluted_peaks: Option<MassPeakSetType<D>>,
) -> Self
pub fn new( description: SpectrumDescription, arrays: Option<BinaryArrayMap>, peaks: Option<MZPeakSetType<C>>, deconvoluted_peaks: Option<MassPeakSetType<D>>, ) -> Self
Create a new MultiLayerSpectrum from a SpectrumDescription and
any/all/none of the different levels of processing details for signal
data.
Source§impl<C, D> MultiLayerSpectrum<C, D>where
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
impl<C, D> MultiLayerSpectrum<C, D>where
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
Sourcepub fn into_centroid(
self,
) -> Result<CentroidSpectrumType<C>, SpectrumConversionError>
pub fn into_centroid( self, ) -> Result<CentroidSpectrumType<C>, SpectrumConversionError>
Convert a spectrum into a CentroidSpectrumType.
This will try the following steps to get the peak list to use in the new instance:
- If the
peaksfield is populated, use it directly . - If the
Self::signal_continuityisSignalContinuity::CentroidandSelf::arraysis populated, attempt [C::try_from_arrays] to build the peak list from the raw arrays. Otherwise assume the peak list is empty. - Fail with
SpectrumConversionError::NotCentroided
Sourcepub fn into_raw(self) -> Result<RawSpectrum, SpectrumConversionError>
pub fn into_raw(self) -> Result<RawSpectrum, SpectrumConversionError>
Convert a spectrum into a RawSpectrum
Sourcepub fn from_arrays_and_description(
arrays: BinaryArrayMap,
description: SpectrumDescription,
) -> Self
pub fn from_arrays_and_description( arrays: BinaryArrayMap, description: SpectrumDescription, ) -> Self
Construct a MultiLayerSpectrum with description and the provided raw data arrays
Sourcepub fn from_description(description: SpectrumDescription) -> Self
pub fn from_description(description: SpectrumDescription) -> Self
Construct a MultiLayerSpectrum with description and no peak data of any kind
Sourcepub fn from_peaks_data_levels_and_description(
peaks: PeakDataLevel<C, D>,
description: SpectrumDescription,
) -> Self
pub fn from_peaks_data_levels_and_description( peaks: PeakDataLevel<C, D>, description: SpectrumDescription, ) -> Self
Construct a MultiLayerSpectrum with description and a PeakDataLevel containing
at most one of the data modalities. This is convenient for reconstructing a spectrum
from its parts.
Sourcepub fn from_spectrum_like<S: SpectrumLike<C, D>>(spectrum: S) -> Self
pub fn from_spectrum_like<S: SpectrumLike<C, D>>(spectrum: S) -> Self
Converts an arbitrary SpectrumLike type into a MultiLayerSpectrum with the same
peak types.
This is a thin wrapper around SpectrumLike::into_peaks_and_description and MultiLayerSpectrum::from_peaks_data_levels_and_description
Sourcepub fn reinterpret<C1, D1>(self) -> MultiLayerSpectrum<C1, D1>where
C1: CentroidLike + BuildArrayMapFrom + BuildFromArrayMap,
D1: DeconvolutedCentroidLike + BuildArrayMapFrom + BuildFromArrayMap,
C: BuildArrayMapFrom,
D: BuildArrayMapFrom,
pub fn reinterpret<C1, D1>(self) -> MultiLayerSpectrum<C1, D1>where
C1: CentroidLike + BuildArrayMapFrom + BuildFromArrayMap,
D1: DeconvolutedCentroidLike + BuildArrayMapFrom + BuildFromArrayMap,
C: BuildArrayMapFrom,
D: BuildArrayMapFrom,
Convert a MultiLayerSpectrum with one set of peak types to another with any peak type, but
recode the peak list as DataArray as an intermediary, potentially losing information if
the new peak types do not re-use the same ArrayType during peak reconstruction.
§Note
Peak data is not actually reconstructed from the intermediate data arrays. If that is desired,
call MultiLayerSpectrum::try_build_peaks
Source§impl<C, D> MultiLayerSpectrum<C, D>
impl<C, D> MultiLayerSpectrum<C, D>
Sourcepub fn try_build_peaks(
&mut self,
) -> Result<RefPeakDataLevel<'_, C, D>, SpectrumConversionError>
pub fn try_build_peaks( &mut self, ) -> Result<RefPeakDataLevel<'_, C, D>, SpectrumConversionError>
Attempt to reconstruct one of the peak layers based upon the available data arrays if this spectrum is in centroid mode.
§Errors
If constructing the peak list encounters an error, or if data array access/decoding fails,
a SpectrumConversionError is returned.
pub fn try_build_centroids( &mut self, ) -> Result<&MZPeakSetType<C>, SpectrumConversionError>
pub fn try_build_deconvoluted_centroids( &mut self, ) -> Result<&MassPeakSetType<D>, SpectrumConversionError>
Trait Implementations§
Source§impl<C: Clone + CentroidLike, D: Clone + DeconvolutedCentroidLike> Clone for MultiLayerSpectrum<C, D>
impl<C: Clone + CentroidLike, D: Clone + DeconvolutedCentroidLike> Clone for MultiLayerSpectrum<C, D>
Source§impl<C: Debug + CentroidLike, D: Debug + DeconvolutedCentroidLike> Debug for MultiLayerSpectrum<C, D>
impl<C: Debug + CentroidLike, D: Debug + DeconvolutedCentroidLike> Debug for MultiLayerSpectrum<C, D>
Source§impl<C: CentroidLike, D: DeconvolutedCentroidLike> Default for MultiLayerSpectrum<C, D>
impl<C: CentroidLike, D: DeconvolutedCentroidLike> Default for MultiLayerSpectrum<C, D>
Source§impl<C: CentroidLike, D: DeconvolutedCentroidLike> From<CentroidSpectrumType<C>> for MultiLayerSpectrum<C, D>
impl<C: CentroidLike, D: DeconvolutedCentroidLike> From<CentroidSpectrumType<C>> for MultiLayerSpectrum<C, D>
Source§fn from(spectrum: CentroidSpectrumType<C>) -> MultiLayerSpectrum<C, D>
fn from(spectrum: CentroidSpectrumType<C>) -> MultiLayerSpectrum<C, D>
Source§impl<C, D> From<MultiLayerSpectrum<C, D>> for RawSpectrumwhere
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
impl<C, D> From<MultiLayerSpectrum<C, D>> for RawSpectrumwhere
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
Source§fn from(spectrum: MultiLayerSpectrum<C, D>) -> RawSpectrum
fn from(spectrum: MultiLayerSpectrum<C, D>) -> RawSpectrum
Source§impl<C, D> From<RawSpectrum> for MultiLayerSpectrum<C, D>
impl<C, D> From<RawSpectrum> for MultiLayerSpectrum<C, D>
Source§fn from(spectrum: RawSpectrum) -> MultiLayerSpectrum<C, D>
fn from(spectrum: RawSpectrum) -> MultiLayerSpectrum<C, D>
Source§impl<C: CentroidLike, D: DeconvolutedCentroidLike> ParamDescribed for MultiLayerSpectrum<C, D>
impl<C: CentroidLike, D: DeconvolutedCentroidLike> ParamDescribed for MultiLayerSpectrum<C, D>
Source§fn params_mut(&mut self) -> &mut ParamList
fn params_mut(&mut self) -> &mut ParamList
Param listSource§fn extend_params(&mut self, it: impl IntoIterator<Item = Param>)
fn extend_params(&mut self, it: impl IntoIterator<Item = Param>)
Param to the entitySource§fn get_param_by_name(&self, name: &str) -> Option<&Param>
fn get_param_by_name(&self, name: &str) -> Option<&Param>
Param whose name matches nameSource§impl<C: CentroidLike, D: DeconvolutedCentroidLike> SpectrumLike<C, D> for MultiLayerSpectrum<C, D>
impl<C: CentroidLike, D: DeconvolutedCentroidLike> SpectrumLike<C, D> for MultiLayerSpectrum<C, D>
Source§fn description(&self) -> &SpectrumDescription
fn description(&self) -> &SpectrumDescription
Source§fn description_mut(&mut self) -> &mut SpectrumDescription
fn description_mut(&mut self) -> &mut SpectrumDescription
Source§fn peaks(&self) -> RefPeakDataLevel<'_, C, D>
fn peaks(&self) -> RefPeakDataLevel<'_, C, D>
Source§fn raw_arrays(&self) -> Option<&BinaryArrayMap>
fn raw_arrays(&self) -> Option<&BinaryArrayMap>
BinaryArrayMap if one is available for the peak
information. This may not be the most refined version of the peak signal if
it has been processed further.Source§fn into_peaks_and_description(
self,
) -> (PeakDataLevel<C, D>, SpectrumDescription)
fn into_peaks_and_description( self, ) -> (PeakDataLevel<C, D>, SpectrumDescription)
SpectrumDescription and an owning
PeakDataLevel. Read moreSource§fn acquisition(&self) -> &Acquisition
fn acquisition(&self) -> &Acquisition
Source§fn precursor(&self) -> Option<&Precursor>
fn precursor(&self) -> Option<&Precursor>
Source§fn precursor_iter(&self) -> impl Iterator<Item = &Precursor> + ExactSizeIterator
fn precursor_iter(&self) -> impl Iterator<Item = &Precursor> + ExactSizeIterator
Source§fn precursor_count(&self) -> usize
fn precursor_count(&self) -> usize
Source§fn precursor_mut(&mut self) -> Option<&mut Precursor>
fn precursor_mut(&mut self) -> Option<&mut Precursor>
Source§fn precursor_iter_mut(
&mut self,
) -> impl Iterator<Item = &mut Precursor> + ExactSizeIterator
fn precursor_iter_mut( &mut self, ) -> impl Iterator<Item = &mut Precursor> + ExactSizeIterator
Source§fn add_precursor(&mut self, precursor: Precursor)
fn add_precursor(&mut self, precursor: Precursor)
Source§fn remove_precursor(&mut self, index: usize) -> Precursor
fn remove_precursor(&mut self, index: usize) -> Precursor
index in the precursor list. Read moreSource§fn start_time(&self) -> f64
fn start_time(&self) -> f64
Source§fn signal_continuity(&self) -> SignalContinuity
fn signal_continuity(&self) -> SignalContinuity
Source§fn polarity(&self) -> ScanPolarity
fn polarity(&self) -> ScanPolarity
Source§fn ion_mobility(&self) -> Option<f64>
fn ion_mobility(&self) -> Option<f64>
Source§fn has_ion_mobility(&self) -> bool
fn has_ion_mobility(&self) -> bool
Source§fn has_ion_mobility_dimension(&self) -> bool
fn has_ion_mobility_dimension(&self) -> bool
Source§fn has_ion_mobility_class(&self) -> HasIonMobility
fn has_ion_mobility_class(&self) -> HasIonMobility
Source§fn spectrum_type(&self) -> Option<SpectrumType>
fn spectrum_type(&self) -> Option<SpectrumType>
Source§fn set_spectrum_type(&mut self, spectrum_type: SpectrumType)
fn set_spectrum_type(&mut self, spectrum_type: SpectrumType)
Source§fn update_summaries(&mut self)
fn update_summaries(&mut self)
Source§impl<CFeat: FeatureLike<MZ, IonMobility> + BuildArrayMap3DFrom, DFeat: FeatureLike<Mass, IonMobility> + KnownCharge + BuildArrayMap3DFrom, CPeak: CentroidLike + BuildFromArrayMap, DPeak: DeconvolutedCentroidLike + BuildFromArrayMap> TryFrom<MultiLayerIonMobilityFrame<CFeat, DFeat>> for MultiLayerSpectrum<CPeak, DPeak>
A MultiLayerIonMobilityFrame can be converted to MultiLayerSpectrum by flattening
the feature data into a BinaryArrayMap.
impl<CFeat: FeatureLike<MZ, IonMobility> + BuildArrayMap3DFrom, DFeat: FeatureLike<Mass, IonMobility> + KnownCharge + BuildArrayMap3DFrom, CPeak: CentroidLike + BuildFromArrayMap, DPeak: DeconvolutedCentroidLike + BuildFromArrayMap> TryFrom<MultiLayerIonMobilityFrame<CFeat, DFeat>> for MultiLayerSpectrum<CPeak, DPeak>
A MultiLayerIonMobilityFrame can be converted to MultiLayerSpectrum by flattening
the feature data into a BinaryArrayMap.
Source§type Error = ArrayRetrievalError
type Error = ArrayRetrievalError
Source§impl<C, D> TryFrom<MultiLayerSpectrum<C, D>> for CentroidSpectrumType<C>where
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
impl<C, D> TryFrom<MultiLayerSpectrum<C, D>> for CentroidSpectrumType<C>where
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
Source§type Error = SpectrumConversionError
type Error = SpectrumConversionError
Source§fn try_from(
spectrum: MultiLayerSpectrum<C, D>,
) -> Result<CentroidSpectrumType<C>, Self::Error>
fn try_from( spectrum: MultiLayerSpectrum<C, D>, ) -> Result<CentroidSpectrumType<C>, Self::Error>
Source§impl<C, D> TryFrom<MultiLayerSpectrum<C, D>> for DeconvolutedSpectrumType<D>where
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
impl<C, D> TryFrom<MultiLayerSpectrum<C, D>> for DeconvolutedSpectrumType<D>where
C: BuildFromArrayMap + BuildArrayMapFrom + CentroidLike,
D: BuildFromArrayMap + BuildArrayMapFrom + DeconvolutedCentroidLike,
Source§type Error = SpectrumConversionError
type Error = SpectrumConversionError
Source§impl<CFeat: FeatureLike<MZ, IonMobility>, DFeat: FeatureLike<Mass, IonMobility> + KnownCharge, CPeak: CentroidLike, DPeak: DeconvolutedCentroidLike> TryFrom<MultiLayerSpectrum<CPeak, DPeak>> for MultiLayerIonMobilityFrame<CFeat, DFeat>
MultiLayerSpectrum instances can be converted to MultiLayerIonMobilityFrame by
using BinaryArrayMap3D::stack on the flat MultiLayerSpectrum::arrays.
impl<CFeat: FeatureLike<MZ, IonMobility>, DFeat: FeatureLike<Mass, IonMobility> + KnownCharge, CPeak: CentroidLike, DPeak: DeconvolutedCentroidLike> TryFrom<MultiLayerSpectrum<CPeak, DPeak>> for MultiLayerIonMobilityFrame<CFeat, DFeat>
MultiLayerSpectrum instances can be converted to MultiLayerIonMobilityFrame by
using BinaryArrayMap3D::stack on the flat MultiLayerSpectrum::arrays.
§Errors
This will fail if BinaryArrayMap3D::stack fails