This class converts PeakMaps and MSSpectra from/to different IM/FAIMS storage models.
More...
|
static std::vector< PeakMap > | splitByFAIMSCV (PeakMap &&exp) |
| Splits a PeakMap into one PeakMap per FAIMS compensation voltage. More...
|
|
static MSExperiment | reshapeIMFrameToMany (MSSpectrum im_frame) |
| Split a (TimsTOF) ion mobility frame (i.e. a spectrum concatenated from multiple spectra with different IM values) into separate spectra. More...
|
|
static std::tuple< std::vector< MSExperiment >, Math::BinContainer > | splitExperimentByIonMobility (MSExperiment &&in, UInt number_of_IM_bins, double bin_extension_abs, double mz_binning_width, MZ_UNITS mz_binning_width_unit) |
| Bins the ion mobility range into discrete bins and creates a new MSExperiment for each IM bin. More...
|
|
static MSExperiment | reshapeIMFrameToSingle (const MSExperiment &in) |
| Collapses multiple MS spectra (each with its own drift time) from the same IM-frame into a single MSSpectrum (with an IM-float data array) More...
|
|
static void | setIMUnit (DataArrays::FloatDataArray &fda, const DriftTimeUnit unit) |
| Convert from a Unit to a CV term and annotate is as the FDA's name. This is not very accurate (since we cannot decide if its 'raw' or 'binned' IM data), but it allows to reconstruct the unit from the IM float-data array which is annotated with this term. More...
|
|
static bool | getIMUnit (const DataArrays::FloatDataArray &fda, DriftTimeUnit &unit) |
| Checks if the fda is an ion-mobility array and if so, returns the unit (either MILLISECOND or VSSC, or NONE) More...
|
|
This class converts PeakMaps and MSSpectra from/to different IM/FAIMS storage models.
Checks if the fda
is an ion-mobility array and if so, returns the unit (either MILLISECOND or VSSC, or NONE)
The name of the fda
should correspond to a value set by setIMUnit(), but all CV names of child terms of 'MS:1002893 ! ion mobility array' are accepted.
**
) or a child term, which is not one of the terms used above.
- Parameters
-
[in] | fda | Input array, which is tested for its name |
[out] | unit | If fda is an IM array, the unit will contain the IM unit (undefined otherwise) |
- Returns
- True if
fda
is an IM array, false otherwise
Split a (TimsTOF) ion mobility frame (i.e. a spectrum concatenated from multiple spectra with different IM values) into separate spectra.
The input im_frame
must have a floatDataArray where IM values are annotated. If not, an exception is thrown.
For the output spectra, the IM value is annotated once in spec.getDriftTime()
(there is no metadata array which contains IM values, since they are all the same).
Output spectra are sorted by m/z. Ranges of the experiment are updated.
The reverse operation is reshapeIMFrameToSingle()
.
- Parameters
-
im_frame | Concatenated spectrum representing an IM frame |
- Returns
- IM frame split into spectra (one per distinct IM value), sorted by m/z, with updated ranges
- Exceptions
-
Referenced by TOPPViewBase::showCurrentPeaksAsIonMobility().
Collapses multiple MS spectra (each with its own drift time) from the same IM-frame into a single MSSpectrum (with an IM-float data array)
Frames are recognized by having the same RT for subsequent spectra. The IM information is taken from each input spectrum's .getDriftTime(). Multiple frames are allowed. If the input already contains IM-frames, they are simply copied.
If a spectrum does not have drift time (spec.getDriftTime()), it is simply copied to the output and ignored during the collapsing process.
- Parameters
-
in | The input experiment with multiple spectra per frame |
- Returns
- result The output spectra collapsed to a single spectrum per frame
- Note
- This requires that spectra from the same frame have the same RT ("scan start time")
The reverse operation is reshapeIMFrameToMany()
.
- Exceptions
-
Bins the ion mobility range into discrete bins and creates a new MSExperiment for each IM bin.
The IM range (of the whole in
) is divided into equally spaced IM-bins and the bin center is the new drift time (see spec.getDriftTime()
). Usually multiple spectra from an IM frame (with close IM values) fall into the same bin. These spectra are merged using SpectraMerger's block-method. When merging m/z peaks of two MS spectra with SpectraMerger, parameters mz_binning_width
and mz_binning_width_unit
and used internally.
To avoid artifacts at the bin borders, each bin can be extended by bin_extension_abs
on both sides. The actual overlap between adjacent bins is thus 2*bin_extension_abs
.
- Note
- All MS levels are binned. If you want to bin only a specific MS level, you need to filter the input MSExperiment before calling this function.
- Parameters
-
in | The PeakMap containing many 'wide' IM-frame spectra (where one spectrum contains multiple IM values). |
number_of_IM_bins | Into how many bins should the ion mobility range be sliced? |
bin_extension_abs | How much should each bin be extended at its borders? (in absolute IM units). The actual overlap between adjacent bins is thus 2*bin_extension_abs . |
mz_binning_width | The width of the m/z binning window, when merging spectra of the same IM-bin (in Da or ppm, see mz_binning_width_unit ) |
mz_binning_width_unit | The unit of the m/z binning window (Da or ppm) |
- Returns
- One MSExperiment per IM-bin and the corresponding binning borders
- Exceptions
-