Mass++ Common Libraries v2.7.5
 All Classes Namespaces Files Functions Variables Enumerations Macros
Peaks2D.cpp
Go to the documentation of this file.
1 
14 #include "stdafx.h"
15 #include "Peaks2D.h"
16 
17 #include "Peak2DElement.h"
18 #include "PeaksCluster2D.h"
19 
20 
21 using namespace kome::objects;
22 
23 
24 #include <crtdbg.h>
25 #ifdef _DEBUG
26  #define new new( _NORMAL_BLOCK, __FILE__, __LINE__ )
27  #define malloc( s ) _malloc_dbg( s, _NORMAL_BLOCK, __FILE__, __LINE__ )
28 #endif // _DEBUG
29 
30 
31 
32 // constructor
34  m_dataId = -1;
35 }
36 
37 // copy constructor
38 Peaks2D::Peaks2D( const Peaks2D& peaks ) {
39  // create clusters
40  std::map< PeaksCluster2D*, PeaksCluster2D* > clusterMap;
41  clusterMap[ NULL ] = NULL;
42 
43  for( unsigned int i = 0; i < peaks.m_clusters.size(); i++ ) {
44  // source cluster
45  PeaksCluster2D* src = peaks.m_clusters[ i ];
46 
47  // new cluster
48  PeaksCluster2D* cluster = new PeaksCluster2D();
49  m_clusters.push_back( cluster );
50  clusterMap[ src ] = cluster;
51 
52  cluster->setRt( src->getRt() );
53  cluster->setRtRange( src->getStartRt(), src->getEndRt() );
54  cluster->setMz( src->getMz() );
55  cluster->setMzRange( src->getStartMz(), src->getEndMz() );
56  cluster->setIntensity( src->getIntensity() );
57  }
58 
59  // create peaks
60  m_peaks.clear();
61  for( unsigned int i = 0; i < peaks.m_peaks.size(); i++ ) {
62  // source peak
63  Peak2DElement* src = peaks.m_peaks[ i ];
64 
65  // new peak
66  Peak2DElement* peak = new Peak2DElement( this );
67  m_peaks.push_back( peak );
68 
69  peak->setRt( src->getRt(), src->getStartRt(), src->getEndRt() );
70  peak->setMz( src->getMz(), src->getStartMz(), src->getEndMz() );
71  peak->setIntensity( src->getIntensity() );
72 
73  PeaksCluster2D* cluster = clusterMap[ src->getCluster() ];
74  if( cluster != NULL ) {
75  cluster->addPeak( peak );
76  }
77  }
78 
79  // data ID
80  m_dataId = peaks.m_dataId;
81 }
82 
83 // destructor
85  clearClusters();
86  clearPeaks();
87 }
88 
89 // substitution operator
91  // create clusters
92  std::map< PeaksCluster2D*, PeaksCluster2D* > clusterMap;
93  clusterMap[ NULL ] = NULL;
94 
95  for( unsigned int i = 0; i < other.m_clusters.size(); i++ ) {
96  // source cluster
97  PeaksCluster2D* src = other.m_clusters[ i ];
98 
99  // new cluster
100  PeaksCluster2D* cluster = new PeaksCluster2D();
101  m_clusters.push_back( cluster );
102  clusterMap[ src ] = cluster;
103 
104  cluster->setRt( src->getRt() );
105  cluster->setRtRange( src->getStartRt(), src->getEndRt() );
106  cluster->setMz( src->getMz() );
107  cluster->setMzRange( src->getStartMz(), src->getEndMz() );
108  cluster->setIntensity( src->getIntensity() );
109  }
110 
111  // create peaks
112  m_peaks.clear();
113  for( unsigned int i = 0; i < other.m_peaks.size(); i++ ) {
114  // source peak
115  Peak2DElement* src = other.m_peaks[ i ];
116 
117  // new peak
118  Peak2DElement* peak = new Peak2DElement( this );
119  m_peaks.push_back( peak );
120 
121  peak->setRt( src->getRt(), src->getStartRt(), src->getEndRt() );
122  peak->setMz( src->getMz(), src->getStartMz(), src->getEndMz() );
123  peak->setIntensity( src->getIntensity() );
124 
125  PeaksCluster2D* cluster = clusterMap[ src->getCluster() ];
126  if( cluster != NULL ) {
127  cluster->addPeak( peak );
128  }
129  }
130 
131  // data ID
132  m_dataId = other.m_dataId;
133 
134  return *this;
135 }
136 
137 // create peak
139  const double rt,
140  const double startRt,
141  const double endRt,
142  const double mz,
143  const double startMz,
144  const double endMz,
145  const double intensity
146 ) {
147  // create peak
148  Peak2DElement* peak = new Peak2DElement( this );
149  m_peaks.push_back( peak );
150 
151  // set
152  peak->setRt( rt, startRt, endRt );
153  peak->setMz( mz, startMz, endMz );
154  peak->setIntensity( intensity );
155 
156  return peak;
157 }
158 // @date 2011.03.04 <Add> M.Aihara ->
159 // add createPeak TBB parallel code
160 #ifdef ENABLE_MASSPP_PARALLEL_TBB_MODE
161 Peak2DElement* Peaks2D::createPeak_TBB(
162  const double rt,
163  const double startRt,
164  const double endRt,
165  const double mz,
166  const double startMz,
167  const double endMz,
168  const double intensity
169 ) {
170  // create peak
171  Peak2DElement* peak = new Peak2DElement( this );
172  // m_peaks.push_back( peak );
173 
174  // set
175  peak->setRt( rt, startRt, endRt );
176  peak->setMz( mz, startMz, endMz );
177  peak->setIntensity( intensity );
178 
179  return peak;
180 }
181 // push_back peak element objects
182 void Peaks2D::push_back_TBB(
183  std::vector<kome::objects::Peak2DElement*>& peaks
184 ) {
185  for(std::vector<kome::objects::Peak2DElement*>::iterator it= peaks.begin();
186  it != peaks.end();
187  ++it ){
188  m_peaks.push_back( *it );
189  }
190  return;
191 }
192 #endif // ENABLE_MASSPP_PARALLEL_TBB_MODE
193 // <Add> M.Aihara <-
194 
195 // create peak
197  const double rt,
198  const double mz,
199  const double intensity
200 ) {
201  // create peak
202  Peak2DElement* peak = createPeak( rt, rt, rt, mz, mz, mz, intensity );
203  return peak;
204 }
205 
206 // clear peaks
208  for( unsigned int i = 0; i < m_peaks.size(); i++ ) {
209  delete m_peaks[ i ];
210  }
211  m_peaks.clear();
212 }
213 
214 // remove peak
216  // search
217  int idx = -1;
218  for( unsigned int i = 0; i < m_peaks.size() && idx < 0 ; i++ ) {
219  if( peak == m_peaks[ i ] ) {
220  idx = (int)i;
221  }
222  }
223 
224  // remove
225  if( idx >= 0 ) {
226  removePeak( idx );
227  }
228 }
229 
230 // remove peak
231 void Peaks2D::removePeak( const unsigned int idx ) {
232  // check
233  if( idx >= m_peaks.size() ) {
234  return;
235  }
236 
237  // delete
238  kome::objects::Peak2DElement* peak = m_peaks[ idx ];
239  kome::objects::PeaksCluster2D* cluster = peak->getCluster();
240  if( cluster != NULL ) {
241  cluster->removePeak( peak );
242  }
243  delete peak;
244  m_peaks.erase( m_peaks.begin() + idx );
245 }
246 
247 // create cluster
249  PeaksCluster2D* cluster = new PeaksCluster2D();
250  m_clusters.push_back( cluster );
251 
252  return cluster;
253 }
254 
255 // get the number of clusters
257  return m_clusters.size();
258 }
259 
260 // get cluster
261 PeaksCluster2D* Peaks2D::getCluster( const unsigned int idx ) {
262  if( idx >= m_clusters.size() ) {
263  return NULL;
264  }
265  return m_clusters[ idx ];
266 }
267 
268 // clear clusters
270  for( unsigned int i = 0; i < m_clusters.size(); i++ ) {
271  delete m_clusters[ i ];
272  }
273  m_clusters.clear();
274 }
275 
276 // remove cluster
278  // search
279  int idx = -1;
280  for( unsigned int i = 0; i < m_clusters.size() && idx < 0; i++ ) {
281  if( cluster == m_clusters[ i ] ) {
282  idx = (int)i;
283  }
284  }
285 
286  // remove
287  if( idx >= 0 ) {
288  removeCluster( idx );
289  }
290 }
291 
292 // remove cluster
293 void Peaks2D::removeCluster( const unsigned int idx ) {
294  // check
295  if( idx >= m_clusters.size() ) {
296  return;
297  }
298 
299  // remove
300  delete m_clusters[ idx ];
301  m_clusters.erase( m_clusters.begin() + idx );
302 }
303 
304 // set data ID
305 void Peaks2D::setDataId( const int id ) {
306  m_dataId = id;
307 }
308 
309 // get data ID
311  return m_dataId;
312 }
void setRt(const double rt)
sets RT
void removePeak(Peak2DElement *peak)
removes peak
Definition: Peaks2D.cpp:215
void removeCluster(PeaksCluster2D *cluster)
removes cluster
Definition: Peaks2D.cpp:277
double getStartRt()
gets start RT
int getDataId()
gets the data ID
Definition: Peaks2D.cpp:310
void addPeak(Peak2DElement *peak)
adds peak
PeaksCluster2D * getCluster(const unsigned int idx)
gets cluster
Definition: Peaks2D.cpp:261
void setIntensity(const double intensity)
sets intensity
Peak2DElement * createPeak(const double rt, const double startRt, const double endRt, const double mz, const double startMz, const double endMz, const double intensity)
creates new peak element
Definition: Peaks2D.cpp:138
void removePeak(Peak2DElement *peak)
removes peak
interfaces of Peaks2D class
void setMz(const double mz, const double startMz, const double endMz)
sets m/z
2-dimentional peaks cluster
double getIntensity()
gets intensity
void setMz(const double mz)
sets m/z
Peaks2D()
constructor
Definition: Peaks2D.cpp:33
unsigned int getNumberOfClusters()
gets the number of clusters
Definition: Peaks2D.cpp:256
interfaces of Peak2DElement class
#define NULL
Definition: CoreMacros.h:18
double getEndRt()
gets end RT
std::vector< PeaksCluster2D * > m_clusters
Definition: Peaks2D.h:64
std::vector< Peak2DElement * > m_peaks
Definition: Peaks2DArray.h:44
double getEndMz()
gets end m/z
void setRtRange(const double startRt, const double endRt)
sets RT range
2-dimentional peaks
Definition: Peaks2D.h:32
PeaksCluster2D * getCluster()
gets cluster
2-dimentional peak element
Definition: Peak2DElement.h:33
void setDataId(const int id)
sets the data ID
Definition: Peaks2D.cpp:305
virtual ~Peaks2D()
destructor
Definition: Peaks2D.cpp:84
double getStartMz()
gets start m/z
void setRt(const double rt, const double startRt, const double endRt)
sets RT
void clearClusters()
clears clusters
Definition: Peaks2D.cpp:269
void clearPeaks()
clears peaks
Definition: Peaks2D.cpp:207
double getEndRt()
gets end RT
double getStartRt()
gets start RT
double getEndMz()
gets end m/z
void setIntensity(const double intensity)
sets intensity
double getIntensity()
gets intensity
PeaksCluster2D * createCluster()
creates cluster
Definition: Peaks2D.cpp:248
void setMzRange(const double startMz, const double endMz)
sets m/z range
Peaks2D & operator=(const Peaks2D &other)
substitution operator
Definition: Peaks2D.cpp:90
interfaces of PeaksCluster2D class
double getStartMz()
gets start m/z