OpenMS
ClusteringGrid.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Lars Nilse $
6 // $Authors: Lars Nilse $
7 // --------------------------------------------------------------------------
8 #pragma once
9 
12 
14 #include <OpenMS/CONCEPT/Types.h>
16 #include <OpenMS/CONCEPT/Macros.h>
17 
18 #include <map>
19 #include <vector>
20 #include <list>
21 
22 namespace OpenMS
23 {
30 class OPENMS_DLLAPI ClusteringGrid
31 {
32  public:
36  typedef std::pair<int,int> CellIndex;
37 
42 
50  ClusteringGrid(const std::vector<double> &grid_spacing_x, const std::vector<double> &grid_spacing_y);
51 
55  std::vector<double> getGridSpacingX() const;
56 
60  std::vector<double> getGridSpacingY() const;
61 
68  void addCluster(const CellIndex &cell_index, const int &cluster_index);
69 
77  void removeCluster(const CellIndex &cell_index, const int &cluster_index);
78 
83 
90  std::list<int> getClusters(const CellIndex &cell_index) const;
91 
98  CellIndex getIndex(const Point &position) const;
99 
109  bool isNonEmptyCell(const CellIndex &cell_index) const;
110 
116  int getCellCount() const;
117 
118  private:
122  const std::vector<double> grid_spacing_x_;
123  const std::vector<double> grid_spacing_y_;
124 
128  std::pair <double,double> range_x_;
129  std::pair <double,double> range_y_;
130 
134  std::map<CellIndex, std::list<int> > cells_;
135 
136 };
137 
138 }
139 
data structure to store 2D data to be clustered e.g. (m/z, retention time) coordinates from multiplex...
Definition: ClusteringGrid.h:31
std::vector< double > getGridSpacingX() const
returns grid spacing in x direction
const std::vector< double > grid_spacing_y_
Definition: ClusteringGrid.h:123
CellIndex getIndex(const Point &position) const
returns grid cell index (i,j) for the positions (x,y)
void removeCluster(const CellIndex &cell_index, const int &cluster_index)
removes a cluster from this grid cell and removes the cell if no other cluster left
int getCellCount() const
returns number of grid cells occupied by one or more clusters
std::list< int > getClusters(const CellIndex &cell_index) const
returns clusters in this grid cell
const std::vector< double > grid_spacing_x_
spacing of the grid in x and y direction
Definition: ClusteringGrid.h:122
std::pair< int, int > CellIndex
Definition: ClusteringGrid.h:36
std::vector< double > getGridSpacingY() const
returns grid spacing in y direction
std::map< CellIndex, std::list< int > > cells_
grid cell index mapped to a list of clusters in it
Definition: ClusteringGrid.h:134
void removeAllClusters()
removes all clusters from this grid (and hence all cells)
ClusteringGrid(const std::vector< double > &grid_spacing_x, const std::vector< double > &grid_spacing_y)
constructor taking two vectors
bool isNonEmptyCell(const CellIndex &cell_index) const
checks if there are clusters at this cell index
void addCluster(const CellIndex &cell_index, const int &cluster_index)
adds a cluster to this grid cell
std::pair< double, double > range_x_
[min, max] of the grid in x and y direction
Definition: ClusteringGrid.h:128
std::pair< double, double > range_y_
Definition: ClusteringGrid.h:129
DPosition< 2 > Point
Definition: ClusteringGrid.h:41
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22