OpenMS
Loading...
Searching...
No Matches
FeatureOverlapFilter.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Julianus Pfeuffer $
6// $Authors: Julianus Pfeuffer $
7// --------------------------------------------------------------------------
8
9#pragma once
10
13
14namespace OpenMS
15{
18 {
22 };
23
26 {
27 SUM,
28 MAX
29 };
30
33 {
34 double rt_tolerance = 5.0;
35 double mz_tolerance = 0.05;
36 bool require_same_charge = true;
37 bool require_same_im = false;
38 };
39
40 class OPENMS_DLLAPI FeatureOverlapFilter
41 {
42 public:
43
46
47 /*
48 @brief Filter overlapping features using a spatial datastructure (quadtree).
49 Retains only the best feature in each cluster of overlapping features.
50
51 @param[in] FeatureComparator must implement the concept of a less comparator.
52 If several features overlap, the feature that evaluates as "smallest" is considered the best (according to the passed comparator) and is kept.
53 The other overlapping features are removed and FeatureOverlapCallback evaluated on them.
54 Default: overall feature quality.
55
56 @param[in] FeatureOverlapCallback(best_in_cluster, f) is called if a feature f overlaps with a feature best_in_cluster.
57 FeatureOverlapCallback provides a customization point to e.g.:
58 - transfer information from the soon-to-be-removed feature f over to the best_in_cluster feature
59 - gather overlap statistics
60 - help in debugging
61 - etc.
62 in form of a callable.
63 If the FeatureOverlapCallback returns false, the overlapping feature will be treated as not overlapping with best_in_cluster (and not removed).
64 Default: function that just returns true.
65
66 @ingroup Datareduction
67 */
68 static void filter(FeatureMap& fmap,
69 std::function<bool(const Feature&, const Feature&)> FeatureComparator = [](const Feature& left, const Feature& right){ return left.getOverallQuality() > right.getOverallQuality(); },
70 std::function<bool(Feature&, Feature&)> FeatureOverlapCallback = [](Feature&, Feature&){ return true; },
71 bool check_overlap_at_trace_level = true);
72
73 /*
74 @brief Filter overlapping features with configurable overlap detection mode.
75 Extended version that allows choosing between different overlap detection strategies.
76
77 @param[in,out] fmap The feature map to filter
78 @param[in] FeatureComparator Comparator to determine the best feature in overlapping clusters
79 @param[in] FeatureOverlapCallback Callback function called when features overlap
80 @param[in] mode The overlap detection mode to use
81 @param[in] tolerances Tolerances for centroid-based overlap detection (only used when mode == CENTROID_BASED)
82
83 @ingroup Datareduction
84 */
85 static void filter(FeatureMap& fmap,
86 std::function<bool(const Feature&, const Feature&)> FeatureComparator,
87 std::function<bool(Feature&, Feature&)> FeatureOverlapCallback,
89 const CentroidTolerances& tolerances = CentroidTolerances());
90
112 static std::function<bool(Feature&, Feature&)> createFAIMSMergeCallback(
113 MergeIntensityMode intensity_mode = MergeIntensityMode::SUM,
114 bool write_meta_values = true);
115
148 static void mergeOverlappingFeatures(FeatureMap& feature_map,
149 double max_rt_diff = 5.0,
150 double max_mz_diff = 0.05,
151 bool require_same_charge = true,
152 bool require_same_im = false,
153 MergeIntensityMode intensity_mode = MergeIntensityMode::SUM,
154 bool write_meta_values = true);
155
181 static void mergeFAIMSFeatures(FeatureMap& feature_map,
182 double max_rt_diff = 5.0,
183 double max_mz_diff = 0.05);
184 };
185
186}
187
188
A container for features.
Definition FeatureMap.h:82
Definition FeatureOverlapFilter.h:41
static void mergeOverlappingFeatures(FeatureMap &feature_map, double max_rt_diff=5.0, double max_mz_diff=0.05, bool require_same_charge=true, bool require_same_im=false, MergeIntensityMode intensity_mode=MergeIntensityMode::SUM, bool write_meta_values=true)
Merge overlapping features based on centroid distances.
static void mergeFAIMSFeatures(FeatureMap &feature_map, double max_rt_diff=5.0, double max_mz_diff=0.05)
Merge FAIMS features that represent the same analyte detected at different CV values.
static void filter(FeatureMap &fmap, std::function< bool(const Feature &, const Feature &)> FeatureComparator, std::function< bool(Feature &, Feature &)> FeatureOverlapCallback, FeatureOverlapMode mode, const CentroidTolerances &tolerances=CentroidTolerances())
static std::function< bool(Feature &, Feature &)> createFAIMSMergeCallback(MergeIntensityMode intensity_mode=MergeIntensityMode::SUM, bool write_meta_values=true)
Create a callback function for merging overlapping features.
static void filter(FeatureMap &fmap, std::function< bool(const Feature &, const Feature &)> FeatureComparator=[](const Feature &left, const Feature &right){ return left.getOverallQuality() > right.getOverallQuality();}, std::function< bool(Feature &, Feature &)> FeatureOverlapCallback=[](Feature &, Feature &){ return true;}, bool check_overlap_at_trace_level=true)
An LC-MS feature.
Definition Feature.h:46
QualityType getOverallQuality() const
Non-mutable access to the overall quality.
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
FeatureOverlapMode
Enum to specify the overlap detection mode.
Definition FeatureOverlapFilter.h:18
@ CENTROID_BASED
Check overlap based on centroid distances.
@ TRACE_LEVEL
Check overlap at trace level.
@ CONVEX_HULL
Use convex hull bounding boxes (default)
MergeIntensityMode
Enum to specify how intensities are combined when merging features.
Definition FeatureOverlapFilter.h:26
double mz_tolerance
Maximum m/z difference in Da.
Definition FeatureOverlapFilter.h:35
bool require_same_charge
Whether to require identical charge states.
Definition FeatureOverlapFilter.h:36
double rt_tolerance
Maximum RT difference in seconds.
Definition FeatureOverlapFilter.h:34
bool require_same_im
Whether to require identical FAIMS CV (or both missing)
Definition FeatureOverlapFilter.h:37
Structure to hold centroid-based overlap tolerances.
Definition FeatureOverlapFilter.h:33