Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
ProteinResolver.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2017.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Timo Sachsenberg $
32 // $Authors: David Wojnar $
33 // --------------------------------------------------------------------------
34 
35 #ifndef OPENMS_ANALYSIS_QUANTITATION_PROTEINRESOLVER_H
36 #define OPENMS_ANALYSIS_QUANTITATION_PROTEINRESOLVER_H
37 
45 
46 
47 namespace OpenMS
48 {
59  class OPENMS_DLLAPI ProteinResolver :
60  public DefaultParamHandler
61  {
62 
63 public:
64 
65  //default constructor
67 
68  //copy constructor
69  ProteinResolver(const ProteinResolver & rhs);
70 
71  //assignment operator
72  ProteinResolver & operator=(const ProteinResolver & rhs);
73 
74  //destructor
75  virtual ~ProteinResolver();
76 
77 
78  struct ProteinEntry;
79  struct PeptideEntry;
80  struct ISDGroup;
81  struct MSDGroup;
82  struct ResolverResult;
83 
85  struct ProteinEntry
86  {
87  std::list<PeptideEntry *> peptides;
88  bool traversed;
90  enum type {primary, secondary, primary_indistinguishable, secondary_indistinguishable} protein_type;
91  double weight; //monoisotopic
92  float coverage; //in percent
93  //if Protein is indistinguishable all his fellows are in the list indis
94  std::list<ProteinEntry *> indis;
96  Size msd_group; //index
97  Size isd_group; //index
99  };
100 
103  {
104  std::list<ProteinEntry *> proteins;
105  bool traversed;
110  Size msd_group; //index
111  Size isd_group; //index
113  float intensity;
115  };
116 
118  struct MSDGroup
119  {
120  std::list<ProteinEntry *> proteins;
121  std::list<PeptideEntry *> peptides;
127  float intensity; // intensity of the MSD Group. Defined as the median of the peptide intensities.
128  };
129 
130  struct ISDGroup
131  {
132  std::list<ProteinEntry *> proteins;
133  std::list<PeptideEntry *> peptides;
135  std::list<Size> msd_groups;
136  };
137 
139  {
141  std::vector<ISDGroup> * isds;
142  std::vector<MSDGroup> * msds;
143  std::vector<ProteinEntry> * protein_entries;
144  std::vector<PeptideEntry> * peptide_entries;
145  std::vector<Size> * reindexed_peptides;
146  std::vector<Size> * reindexed_proteins;
147  enum type {PeptideIdent, Consensus} input_type;
148  std::vector<PeptideIdentification> * peptide_identification;
150  };
151 
159  void resolveConsensus(ConsensusMap & consensus);
160 
168  void resolveID(std::vector<PeptideIdentification> & peptide_identifications);
169 
180  // void writeProteinsAndPeptidesmzTab(std::vector<ProteinEntry>& protein_nodes, std::vector<PeptideEntry>& peptide_nodes, std::vector<Size>& reindexed_proteins, std::vector<Size>& reindexed_peptides, std::vector<PeptideIdentification>& peptide_identifications, String& output );
189  // void writePeptideTable(std::vector<PeptideEntry> & peptides, std::vector<Size> & reindexed_peptides, std::vector<PeptideIdentification> & identifications, String & output_file); // not implemented
198  // void writePeptideTable(std::vector<PeptideEntry> & peptides, std::vector<Size> & reindexed_peptides, ConsensusMap & consensus, String & output_file); // not implemented
206  // void writeProteinTable(std::vector<ProteinEntry> & proteins, std::vector<Size> & reindexed_proteins, String & output_file); // not implemented
214  // void writeProteinGroups(std::vector<ISDGroup> & isd_groups, std::vector<MSDGroup> & msd_groups, String & output_file); // not implemented
215 
222  void countTargetDecoy(std::vector<MSDGroup> & msd_groups, ConsensusMap & consensus);
223 
230  void countTargetDecoy(std::vector<MSDGroup> & msd_groups, std::vector<PeptideIdentification> & peptide_nodes);
231 
232  void clearResult();
233 
234  void setProteinData(std::vector<FASTAFile::FASTAEntry> & protein_data);
235 
236  const std::vector<ResolverResult> & getResults();
237 
239  static const PeptideIdentification & getPeptideIdentification(const ConsensusMap & consensus, const PeptideEntry * peptide);
240  static const PeptideHit & getPeptideHit(const ConsensusMap & consensus, const PeptideEntry * peptide);
241  static const PeptideIdentification & getPeptideIdentification(const std::vector<PeptideIdentification> & peptide_nodes, const PeptideEntry * peptide);
242  static const PeptideHit & getPeptideHit(const std::vector<PeptideIdentification> & peptide_nodes, const PeptideEntry * peptide);
243 
244 private:
245 
246  std::vector<ResolverResult> resolver_result_;
247  std::vector<FASTAFile::FASTAEntry> protein_data_;
248 
249  void computeIntensityOfMSD_(std::vector<MSDGroup> & msd_groups);
250 
252  void traverseProtein_(ProteinEntry * prot_node, MSDGroup & group);
253  void traversePeptide_(PeptideEntry * pep_node, MSDGroup & group);
255  Size findPeptideEntry_(String seq, std::vector<PeptideEntry> & nodes);
257  Size binarySearchNodes_(String & seq, std::vector<PeptideEntry> & nodes, Size start, Size end);
259  Size includeMSMSPeptides_(std::vector<PeptideIdentification> & peptide_identifications, std::vector<PeptideEntry> & peptide_nodes);
262  Size includeMSMSPeptides_(ConsensusMap & consensus, std::vector<PeptideEntry> & peptide_nodes);
264  void reindexingNodes_(std::vector<MSDGroup> & msd_groups, std::vector<Size> & reindexed_proteins, std::vector<Size> & reindexed_peptides);
266  void primaryProteins_(std::vector<PeptideEntry> & peptide_nodes, std::vector<Size> & reindexed_peptides);
267  void buildingMSDGroups_(std::vector<MSDGroup> & msd_groups, std::vector<ISDGroup> & isd_groups);
268  void buildingISDGroups_(std::vector<ProteinEntry> & protein_nodes, std::vector<PeptideEntry> & peptide_nodes,
269  std::vector<ISDGroup> & isd_groups);
270  // disabled/buggy
271  //ProteinResolver::indistinguishableProteins(vector<MSDGroup>& msd_groups);
272 
273  }; // class
274 
275 } // namespace
276 
277 #endif // OPENMS_ANALYSIS_QUANTITATION_PROTEINRESOLVER_H
std::list< ProteinEntry * > proteins
Definition: ProteinResolver.h:132
Definition: ProteinResolver.h:130
std::list< ProteinEntry * > proteins
Definition: ProteinResolver.h:120
Size index
Definition: ProteinResolver.h:109
std::vector< Size > * reindexed_proteins
Definition: ProteinResolver.h:146
Size msd_group
Definition: ProteinResolver.h:110
A more convenient string class.
Definition: String.h:57
ISDGroup * isd_group
Definition: ProteinResolver.h:123
Size index
Definition: ProteinResolver.h:134
std::vector< PeptideIdentification > * peptide_identification
Definition: ProteinResolver.h:148
Size peptide_hit
Definition: ProteinResolver.h:108
std::vector< PeptideEntry > * peptide_entries
Definition: ProteinResolver.h:144
std::list< PeptideEntry * > peptides
Definition: ProteinResolver.h:87
Size isd_group
Definition: ProteinResolver.h:97
String identifier
Definition: ProteinResolver.h:140
representation of an msd group. Contains peptides, proteins and a pointer to its ISD group ...
Definition: ProteinResolver.h:118
std::vector< FASTAFile::FASTAEntry > protein_data_
Definition: ProteinResolver.h:247
Size number_of_decoy
Definition: ProteinResolver.h:124
Size index
Definition: ProteinResolver.h:95
A container for consensus elements.
Definition: ConsensusMap.h:72
Size peptide_identification
Definition: ProteinResolver.h:107
float coverage
Definition: ProteinResolver.h:92
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
std::vector< Size > * reindexed_peptides
Definition: ProteinResolver.h:145
std::list< PeptideEntry * > peptides
Definition: ProteinResolver.h:121
std::list< ProteinEntry * > indis
Definition: ProteinResolver.h:94
float intensity
Definition: ProteinResolver.h:113
Size index
Definition: ProteinResolver.h:122
Size number_of_target_plus_decoy
Definition: ProteinResolver.h:126
bool traversed
Definition: ProteinResolver.h:105
Helper class for peptide and protein quantification based on feature data annotated with IDs...
Definition: ProteinResolver.h:59
Size isd_group
Definition: ProteinResolver.h:111
Size number_of_experimental_peptides
Definition: ProteinResolver.h:98
std::vector< ProteinEntry > * protein_entries
Definition: ProteinResolver.h:143
type
Definition: ProteinResolver.h:147
String origin
Definition: ProteinResolver.h:114
Size msd_group
Definition: ProteinResolver.h:96
std::list< PeptideEntry * > peptides
Definition: ProteinResolver.h:133
std::list< Size > msd_groups
Definition: ProteinResolver.h:135
Representation of a peptide hit.
Definition: PeptideHit.h:55
represents a protein from FASTA file
Definition: ProteinResolver.h:85
bool experimental
Definition: ProteinResolver.h:112
FASTAFile::FASTAEntry * fasta_entry
Definition: ProteinResolver.h:89
Definition: ProteinResolver.h:138
ConsensusMap * consensus_map
Definition: ProteinResolver.h:149
String sequence
Definition: ProteinResolver.h:106
Size number_of_target
Definition: ProteinResolver.h:125
std::vector< ResolverResult > resolver_result_
Definition: ProteinResolver.h:246
std::vector< MSDGroup > * msds
Definition: ProteinResolver.h:142
bool traversed
Definition: ProteinResolver.h:88
std::vector< ISDGroup > * isds
Definition: ProteinResolver.h:141
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:128
represents a peptide. First in silico. If experimental is set to true it is MS/MS derived...
Definition: ProteinResolver.h:102
FASTA entry type (identifier, description and sequence)
Definition: FASTAFile.h:74
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:92
std::list< ProteinEntry * > proteins
Definition: ProteinResolver.h:104
type
Definition: ProteinResolver.h:90
float intensity
Definition: ProteinResolver.h:127
Represents the peptide hits for a spectrum.
Definition: PeptideIdentification.h:63
double weight
Definition: ProteinResolver.h:91

OpenMS / TOPP release 2.3.0 Documentation generated on Tue Jan 9 2018 18:22:03 using doxygen 1.8.13