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
00035
00036 #ifndef OPENMS_ANALYSIS_ID_PILISMODEL_H
00037 #define OPENMS_ANALYSIS_ID_PILISMODEL_H
00038
00039 #include <vector>
00040 #include <OpenMS/KERNEL/StandardTypes.h>
00041 #include <OpenMS/DATASTRUCTURES/Map.h>
00042 #include <OpenMS/CONCEPT/Types.h>
00043 #include <OpenMS/ANALYSIS/ID/HiddenMarkovModel.h>
00044 #include <OpenMS/ANALYSIS/ID/ProtonDistributionModel.h>
00045 #include <OpenMS/CHEMISTRY/TheoreticalSpectrumGenerator.h>
00046 #include <OpenMS/COMPARISON/SPECTRA/SpectrumAlignment.h>
00047 #include <OpenMS/FORMAT/TextFile.h>
00048 #include <OpenMS/DATASTRUCTURES/DefaultParamHandler.h>
00049 #include <OpenMS/ANALYSIS/ID/PILISNeutralLossModel.h>
00050
00051
00052 namespace OpenMS
00053 {
00054 class AASequence;
00055
00067 class OPENMS_DLLAPI PILISModel :
00068 public DefaultParamHandler
00069 {
00070 public:
00071
00075
00076 PILISModel();
00077
00079 PILISModel(const PILISModel & model);
00080
00082 virtual ~PILISModel();
00084
00086 PILISModel & operator=(const PILISModel & mode);
00087
00091
00092 void train(const RichPeakSpectrum &, const AASequence & peptide, UInt charge);
00093
00097 void readFromFile(const String & filename);
00098
00100 void writeGraphMLFile(const String & filename);
00101
00105 void writeToFile(const String & filename);
00106
00107
00108 void init(bool generate_models = true);
00109
00111 void getSpectrum(RichPeakSpectrum & spec, const AASequence & peptide, UInt charge);
00112
00114 void evaluate();
00116
00117 protected:
00118
00120 bool getInitialTransitionProbabilities_(std::vector<DoubleReal> & bb_init,
00121 std::vector<DoubleReal> & cr_init,
00122 std::vector<DoubleReal> & sc_init,
00123 DoubleReal & precursor_init,
00124 const std::vector<DoubleReal> & bb_charges,
00125 const std::vector<DoubleReal> & sc_charges,
00126 const AASequence & peptide);
00127
00128 DoubleReal getAvailableBackboneCharge_(const AASequence & ion, Residue::ResidueType res_type, int charge);
00129
00131 void addPeaks_(DoubleReal mz, int charge, DoubleReal mz_offset, DoubleReal intensity, RichPeakSpectrum & spectrum, const IsotopeDistribution & id, const String & name);
00132
00134 void parseHMMModel_(const TextFile::ConstIterator & begin, const TextFile::ConstIterator & end, HiddenMarkovModel & hmm, Param & param);
00135
00137 void writeParameters_(std::ostream & os, const Param & param);
00138
00140 HiddenMarkovModel hmm_;
00141
00143 ProtonDistributionModel prot_dist_;
00144
00146 TheoreticalSpectrumGenerator tsg_;
00147
00149 bool valid_;
00150
00152 Map<DoubleReal, std::vector<RichPeak1D> > peaks_;
00153
00155 SpectrumAlignment spectra_aligner_;
00156
00158 PILISNeutralLossModel precursor_model_cr_;
00159
00160 PILISNeutralLossModel precursor_model_cd_;
00161
00162 PILISNeutralLossModel a_ion_losses_cr_;
00163 PILISNeutralLossModel a_ion_losses_cd_;
00164
00165 PILISNeutralLossModel b_ion_losses_cr_;
00166 PILISNeutralLossModel b_ion_losses_cd_;
00167
00168 PILISNeutralLossModel b2_ion_losses_cr_;
00169 PILISNeutralLossModel b2_ion_losses_cd_;
00170
00171 PILISNeutralLossModel y_ion_losses_cr_;
00172 PILISNeutralLossModel y_ion_losses_cd_;
00173
00174 void updateMembers_();
00175 };
00176 }
00177 #endif