Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef OPENMS_TRANSFORMATIONS_FEATUREFINDER_SUPERHIRN_LCELUTIONPEAK_H
00051 #define OPENMS_TRANSFORMATIONS_FEATUREFINDER_SUPERHIRN_LCELUTIONPEAK_H
00052
00053 #include <vector>
00054 #include <map>
00055 #include <OpenMS/TRANSFORMATIONS/FEATUREFINDER/SUPERHIRN/ConsensusIsotopePattern.h>
00056
00057 namespace OpenMS
00058 {
00059
00060 typedef std::multimap<int, MSPeak> elution_peak;
00061 typedef std::vector<elution_peak> MZ_series;
00062 typedef std::vector<elution_peak>::iterator MZ_series_ITERATOR;
00063 typedef std::multimap<int, MSPeak>::iterator SIGNAL_iterator;
00064
00065 class OPENMS_DLLAPI LCElutionPeak
00066 {
00067
00069
00070
00071 private:
00072
00073
00074 ConsensusIsotopePattern * isotopePattern;
00075 int fNrIsotopes;
00076 double f_observed_Mass;
00077 double fIsotopMass;
00078
00079 protected:
00080
00081 double fMonoMass;
00082 double fVolume;
00083 int fCharge;
00084 int fScanNumberStart;
00085 int fScanNumberApex;
00086 int fScanNumberEnd;
00087 double fapex_intensity;
00088 double fRT;
00089 double fStartTR;
00090 double fEndTR;
00091 double fpeak_area;
00092 double fSignalToNoise;
00093 double fSNIntensityThreshold;
00094 MSPeak * APEX;
00095
00096 std::string elutionPeakExtraInfo;
00097
00098
00099 std::multimap<int, MSPeak> intens_signals;
00100
00101 std::multimap<int, int> CHRG_MAP;
00102
00104
00105
00106 public:
00107
00108
00109 static double DEBUG_MASS_START;
00110 static double DEBUG_MASS_END;
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 ~LCElutionPeak();
00121
00122
00123 LCElutionPeak();
00124
00125 LCElutionPeak(MZ_series_ITERATOR, double);
00126
00127 LCElutionPeak(const LCElutionPeak &);
00128
00129 LCElutionPeak(const LCElutionPeak *);
00130
00132
00133 void analyzeLCElutionPeak()
00134 {
00135
00136 if (get_nb_ms_peaks() > 1)
00137 {
00138
00139 CHRG_MAP.clear();
00140
00141
00142
00143 setSNIntensityThreshold();
00144
00145
00146 computeLCElutionPeakParameters();
00147
00148
00149 compute_CHRG();
00150
00151
00152 createConsensIsotopPattern();
00153 }
00154 else
00155 {
00156 defineLCElutionPeakParametersFromMSPeak();
00157 }
00158 }
00159
00161
00162
00163 void setSNIntensityThreshold();
00164
00166
00167 void computeLCElutionPeakParameters();
00168
00169
00170
00171
00172 double compute_delta_area(double, double, double, double);
00173
00174
00175
00176
00177 void remove_background_peak();
00178
00179 void compute_CHRG();
00180
00181
00182
00183 void defineLCElutionPeakParametersFromMSPeak();
00185
00187
00188 void createConsensIsotopPattern();
00189
00190
00191 void print_profile(std::ofstream *);
00192
00193 MSPeak * find_true_peak(float);
00194
00195 void show_info();
00196
00198
00199 LCElutionPeak & operator=(const LCElutionPeak &);
00200 LCElutionPeak & operator<=(const LCElutionPeak &);
00201 LCElutionPeak & operator>=(const LCElutionPeak &);
00202 LCElutionPeak & operator<(const LCElutionPeak &);
00203 LCElutionPeak & operator>(const LCElutionPeak &);
00204
00206
00207
00208
00209
00210
00211 void setElutionPeakExtraInfo(std::string in)
00212 {
00213 elutionPeakExtraInfo = in;
00214 }
00215
00216 std::string getElutionPeakExtraInfo()
00217 {
00218 return elutionPeakExtraInfo;
00219 }
00220
00222
00223
00224
00225
00227
00228 SIGNAL_iterator get_signal_list_start()
00229 {
00230 return intens_signals.begin();
00231 }
00232
00233 SIGNAL_iterator get_signal_list_end()
00234 {
00235 return intens_signals.end();
00236 }
00237
00239
00240
00241
00242
00243
00244 void set_apex_retention_time(double IN)
00245 {
00246 fRT = IN;
00247 }
00248
00249
00250 void update_CHRGMAP(MSPeak * IN)
00251 {
00252 std::multimap<int, int>::iterator T = CHRG_MAP.find(IN->get_charge_state());
00253 if (T == CHRG_MAP.end())
00254 {
00255 CHRG_MAP.insert(std::make_pair(IN->get_charge_state(), 1));
00256 }
00257 else
00258 {
00259 (*T).second++;
00260 }
00261 }
00262
00264
00265 int get_scan_apex()
00266 {
00267 return fScanNumberApex;
00268 }
00269
00270 double get_apex_intensity()
00271 {
00272 return fapex_intensity;
00273 }
00274
00275 double get_apex_retention_time()
00276 {
00277 return fRT;
00278 }
00279
00280 double get_apex_MZ()
00281 {
00282 return get_MZ(get_scan_apex());
00283 }
00284
00286
00287 float get_intensity(int IN)
00288 {
00289 return (*(intens_signals.find(IN))).second.get_intensity();
00290 }
00291
00292
00293 double get_MZ(int);
00294
00296
00297 double get_total_peak_area()
00298 {
00299 return fpeak_area;
00300 }
00301
00303
00304 int get_start_scan()
00305 {
00306 return fScanNumberStart;
00307 }
00308
00309 int get_end_scan()
00310 {
00311 return fScanNumberEnd;
00312 }
00313
00314 void set_start_retention_time(double IN)
00315 {
00316 fStartTR = IN;
00317 }
00318
00319 double get_start_retention_time()
00320 {
00321 return fStartTR;
00322 }
00323
00324 void set_end_retention_time(double IN)
00325 {
00326 fEndTR = IN;
00327 }
00328
00329 double get_end_retention_time()
00330 {
00331 return fEndTR;
00332 }
00333
00335
00336 int get_nb_ms_peaks()
00337 {
00338 return (int) intens_signals.size();
00339 }
00340
00342
00343 int get_charge_state()
00344 {
00345 return fCharge;
00346 }
00347
00349
00350 double getSignalToNoise()
00351 {
00352 return fSignalToNoise;
00353 }
00354
00355 double getSignalToNoiseBackground()
00356 {
00357 return fSNIntensityThreshold;
00358 }
00359
00360 };
00361
00362 }
00363
00364 #endif // OPENMS_TRANSFORMATIONS_FEATUREFINDER_SUPERHIRN_LCELUTIONPEAK_H