OpenMS
Loading...
Searching...
No Matches
TriqlerFile.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: Timo Sachsenberg $
6// $Authors: Timo Sachsenberg $
7// --------------------------------------------------------------------------
8
9#pragma once
10
14
15#include <map>
16#include <utility>
17#include <unordered_map>
18#include <set>
19#include <vector>
20
21namespace OpenMS
22{
24 using IndProtGrps = std::vector<IndProtGrp>;
25
31 class OPENMS_DLLAPI TriqlerFile
32 {
33 public:
35 TriqlerFile() = default;
37 ~TriqlerFile() = default;
38
40 void storeLFQ(const std::string& filename,
41 const ConsensusMap &consensus_map,
42 const ExperimentalDesign& design,
43 const StringList& reannotate_filenames,
44 const std::string& condition);
45
46 private:
49
50 static const std::string na_string_;
51 static const char delim_ = ',';
52 static const char accdelim_ = ';';
53 static const char quote_ = '"';
54
55 /*
56 * @brief: Struct to aggregate intermediate information from ConsensusFeature and ConsensusMap,
57 * such as filenames, intensities, retention times, labels and features (for further processing)
58 */
60 {
61 std::vector< std::vector< std::string> > consensus_feature_filenames; //< Filenames of ConsensusFeature
62 std::vector< std::vector< Intensity > > consensus_feature_intensities; //< Intensities of ConsensusFeature
63 std::vector< std::vector< Coordinate > > consensus_feature_retention_times; //< Retention times of ConsensusFeature
64 std::vector< std::vector< unsigned > > consensus_feature_labels; //< Labels of ConsensusFeature
65 std::vector<BaseFeature> features; //<s Features of ConsensusMap
66 };
67
68 /*
69 * @brief: Aggregates information from ConsensusFeature and ConsensusMap,
70 * such as filenames, intensities, retention times, labels and features.
71 * Stores them in AggregatedConsensusInfo for later processing
72 */
74 const std::vector<std::string>& spectra_paths);
75
76 /*
77 * @brief: Internal function to check if condition exists in Experimental Design
78 */
79 static void checkConditionLFQ_(const ExperimentalDesign::SampleSection& sampleSection, const std::string& condition);
80
81 /*
82 * In OpenMS, a run is split into multiple fractions.
83 */
84 static void assembleRunMap_(
85 std::map< std::pair< std::string, unsigned>, unsigned> &run_map,
86 const ExperimentalDesign &design);
87
88 /*
89 * @brief checks two vectors for same content
90 */
91 static bool checkUnorderedContent_(const std::vector< std::string> &first, const std::vector< std::string> &second);
92
93 OpenMS::Peak2D::IntensityType sumIntensity_(const std::set< OpenMS::Peak2D::IntensityType > &intensities) const
94 {
96 for (const OpenMS::Peak2D::IntensityType &intensity : intensities)
97 {
98 result += intensity;
99 }
100 return result;
101 }
102
103 OpenMS::Peak2D::IntensityType meanIntensity_(const std::set< OpenMS::Peak2D::IntensityType > &intensities) const
104 {
105 return sumIntensity_(intensities) / intensities.size();
106 }
107
109 {
110 public :
112 const std::string& run,
113 const std::string& condition,
114 const std::string& precursor_charge,
115 const std::string& search_score,
116 const std::string& intensity,
117 const std::string& sequence,
118 const std::string& accession
119 ): run_(run),
120 condition_(condition),
121 precursor_charge_(precursor_charge),
122 search_score_(search_score),
123 intensity_(intensity),
124 sequence_(sequence),
125 accession_(accession)
126 {}
127
129
130 TriqlerLine_(const TriqlerLine_& m) = default;
131
133 std::string toString() const;
134
135 friend bool operator<(const TriqlerLine_ &l,
136 const TriqlerLine_ &r)
137 {
138 return std::tie(l.accession_, l.run_, l.condition_, l.precursor_charge_, l.intensity_, l.sequence_) <
140 }
141
142 private:
143 std::string run_;
144 std::string condition_;
145 std::string precursor_charge_;
146 std::string search_score_;
147 std::string intensity_;
148 std::string sequence_;
149 std::string accession_;
150 };
151
152 using MapSequenceToLines_ = std::map<std::string, std::set<TriqlerLine_>>;
153 /*
154 * @brief Constructs the lines and adds them to the TextFile
155 * @param[out] peptideseq_quantifyable Has to be a set (only) for deterministic ordered output
156 */
158 const std::set<std::string>& peptideseq_quantifyable,
159 const MapSequenceToLines_& peptideseq_to_line) const;
160
161 /*
162 * @brief Constructs the accession to indist. group mapping
163 */
164 static std::unordered_map<std::string, const IndProtGrp* > getAccessionToGroupMap_(const IndProtGrps& ind_prots);
165
166
167 /*
168 * @brief Based on the evidence accession set in a PeptideHit, checks if is unique and therefore quantifyable
169 * in a group context.
170 *
171 */
173 const std::set<std::string>& accs,
174 const std::unordered_map<std::string, const IndProtGrp*>& accession_to_group) const;
175
176 };
177} // namespace OpenMS
A container for consensus elements.
Definition ConsensusMap.h:67
Definition ExperimentalDesign.h:131
Representation of an experimental design in OpenMS. Instances can be loaded with the ExperimentalDesi...
Definition ExperimentalDesign.h:109
double CoordinateType
Coordinate type (of the position)
Definition Peak2D.h:39
float IntensityType
Intensity type.
Definition Peak2D.h:37
Bundles multiple (e.g. indistinguishable) proteins in a group.
Definition ProteinIdentification.h:73
Definition TextFile.h:21
Definition TriqlerFile.h:109
std::string toString() const
as string
std::string precursor_charge_
Definition TriqlerFile.h:145
TriqlerLine_(TriqlerLine_ &&m)=default
std::string run_
Definition TriqlerFile.h:143
std::string search_score_
Definition TriqlerFile.h:146
friend bool operator<(const TriqlerLine_ &l, const TriqlerLine_ &r)
Definition TriqlerFile.h:135
TriqlerLine_(const TriqlerLine_ &m)=default
std::string sequence_
Definition TriqlerFile.h:148
std::string accession_
Definition TriqlerFile.h:149
TriqlerLine_(const std::string &run, const std::string &condition, const std::string &precursor_charge, const std::string &search_score, const std::string &intensity, const std::string &sequence, const std::string &accession)
Definition TriqlerFile.h:111
std::string intensity_
Definition TriqlerFile.h:147
std::string condition_
Definition TriqlerFile.h:144
File adapter for Triqler files.
Definition TriqlerFile.h:32
~TriqlerFile()=default
Destructor.
static std::unordered_map< std::string, const IndProtGrp * > getAccessionToGroupMap_(const IndProtGrps &ind_prots)
void constructFile_(TextFile &csv_out, const std::set< std::string > &peptideseq_quantifyable, const MapSequenceToLines_ &peptideseq_to_line) const
TriqlerFile()=default
Default constructor.
OpenMS::Peak2D::IntensityType sumIntensity_(const std::set< OpenMS::Peak2D::IntensityType > &intensities) const
Definition TriqlerFile.h:93
std::vector< std::vector< unsigned > > consensus_feature_labels
Definition TriqlerFile.h:64
static bool checkUnorderedContent_(const std::vector< std::string > &first, const std::vector< std::string > &second)
OpenMS::Peak2D::CoordinateType Coordinate
Definition TriqlerFile.h:48
static void assembleRunMap_(std::map< std::pair< std::string, unsigned >, unsigned > &run_map, const ExperimentalDesign &design)
static const std::string na_string_
Definition TriqlerFile.h:50
TriqlerFile::AggregatedConsensusInfo aggregateInfo_(const ConsensusMap &consensus_map, const std::vector< std::string > &spectra_paths)
std::vector< std::vector< Intensity > > consensus_feature_intensities
Definition TriqlerFile.h:62
std::vector< BaseFeature > features
Definition TriqlerFile.h:65
bool isQuantifyable_(const std::set< std::string > &accs, const std::unordered_map< std::string, const IndProtGrp * > &accession_to_group) const
std::vector< std::vector< Coordinate > > consensus_feature_retention_times
Definition TriqlerFile.h:63
OpenMS::Peak2D::IntensityType meanIntensity_(const std::set< OpenMS::Peak2D::IntensityType > &intensities) const
Definition TriqlerFile.h:103
static void checkConditionLFQ_(const ExperimentalDesign::SampleSection &sampleSection, const std::string &condition)
std::map< std::string, std::set< TriqlerLine_ > > MapSequenceToLines_
Definition TriqlerFile.h:152
std::vector< std::vector< std::string > > consensus_feature_filenames
Definition TriqlerFile.h:61
OpenMS::Peak2D::IntensityType Intensity
Definition TriqlerFile.h:47
void storeLFQ(const std::string &filename, const ConsensusMap &consensus_map, const ExperimentalDesign &design, const StringList &reannotate_filenames, const std::string &condition)
store label free experiment
std::vector< std::string > StringList
Vector of String.
Definition ListUtils.h:44
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
OpenMS::ProteinIdentification::ProteinGroup IndProtGrp
Definition MSstatsFile.h:23
std::vector< IndProtGrp > IndProtGrps
Definition MSstatsFile.h:24