OpenMS
ClusteringGrid.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: Lars Nilse $
6 // $Authors: Lars Nilse $
7 // --------------------------------------------------------------------------
8 #pragma once
9 
12 
13 #include <OpenMS/CONCEPT/Types.h>
15 #include <OpenMS/CONCEPT/Macros.h>
16 
17 #include <map>
18 #include <vector>
19 #include <list>
20 
21 namespace OpenMS
22 {
29 class OPENMS_DLLAPI ClusteringGrid
30 {
31  public:
35  typedef std::pair<int,int> CellIndex;
36 
41 
49  ClusteringGrid(const std::vector<double> &grid_spacing_x, const std::vector<double> &grid_spacing_y);
50 
54  std::vector<double> getGridSpacingX() const;
55 
59  std::vector<double> getGridSpacingY() const;
60 
67  void addCluster(const CellIndex &cell_index, const int &cluster_index);
68 
76  void removeCluster(const CellIndex &cell_index, const int &cluster_index);
77 
82 
89  std::list<int> getClusters(const CellIndex &cell_index) const;
90 
97  CellIndex getIndex(const Point &position) const;
98 
108  bool isNonEmptyCell(const CellIndex &cell_index) const;
109 
115  int getCellCount() const;
116 
117  private:
121  const std::vector<double> grid_spacing_x_;
122  const std::vector<double> grid_spacing_y_;
123 
127  std::pair <double,double> range_x_;
128  std::pair <double,double> range_y_;
129 
133  std::map<CellIndex, std::list<int> > cells_;
134 
135 };
136 
137 }
138 
data structure to store 2D data to be clustered e.g. (m/z, retention time) coordinates from multiplex...
Definition: ClusteringGrid.h:30
std::vector< double > getGridSpacingX() const
returns grid spacing in x direction
const std::vector< double > grid_spacing_y_
Definition: ClusteringGrid.h:122
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:121
std::pair< int, int > CellIndex
Definition: ClusteringGrid.h:35
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:133
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:127
std::pair< double, double > range_y_
Definition: ClusteringGrid.h:128
DPosition< 2 > Point
Definition: ClusteringGrid.h:40
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19