libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::GrpExperiment Class Reference

#include <grpexperiment.h>

Public Member Functions

GrpProteinSpgetGrpProteinSp (const QString &acc, const QString &description)
GrpPeptideSpsetGrpPeptide (const GrpProteinSp &proteinSp, const QString &sequence, pappso_double mass)
 GrpExperiment (GrpGroupingMonitorInterface *p_monitor)
virtual ~GrpExperiment ()
void startGrouping ()
std::vector< GrpProteinSpConstgetGrpProteinSpList () const
void setRemoveNonInformativeSubgroups (bool ok)
void addPostGroupingGrpProteinSpRemoval (GrpProteinSp sp_protein)
 protein to remove with its entire group after grouping is completed typically : to use with protein contaminants if you want to ignore any group containing one contaminant protein
void addPreGroupingGrpProteinSpRemoval (GrpProteinSp sp_protein)
 protein peptides to remove before grouping typically : remove protein contaminants in special metaproteomics cases
std::vector< GrpGroupSpConstgetGrpGroupSpList () const

Private Member Functions

void addSubGroupSp (GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const
void numbering ()
void removeNonInformativeSubGroups ()

Private Attributes

GrpGroupingMonitorInterfacemp_monitor = nullptr
bool m_isRemoveNonInformativeSubgroups = true
std::map< QString, GrpProteinSpm_mapProteins
std::map< QString, std::map< unsigned long, GrpPeptideSp > > m_mapPeptides
std::list< GrpPeptideSpm_grpPeptideList
std::list< GrpProteinSpm_grpProteinList
bool m_isGroupingStarted = false
std::list< GrpProtein * > m_remainingGrpProteinList
GrpPeptideSet m_grpPostGroupingProteinListRemoval
GrpPeptideSet m_grpPreGroupingProteinListRemoval
std::list< GrpGroupSpm_grpGroupSpList

Detailed Description

Definition at line 41 of file grpexperiment.h.

Constructor & Destructor Documentation

◆ GrpExperiment()

GrpExperiment::GrpExperiment ( GrpGroupingMonitorInterface * p_monitor)

Definition at line 37 of file grpexperiment.cpp.

38{
39 mp_monitor = p_monitor;
40}
GrpGroupingMonitorInterface * mp_monitor

References mp_monitor.

◆ ~GrpExperiment()

GrpExperiment::~GrpExperiment ( )
virtual

Definition at line 42 of file grpexperiment.cpp.

43{
44}

Member Function Documentation

◆ addPostGroupingGrpProteinSpRemoval()

void GrpExperiment::addPostGroupingGrpProteinSpRemoval ( GrpProteinSp sp_protein)

protein to remove with its entire group after grouping is completed typically : to use with protein contaminants if you want to ignore any group containing one contaminant protein

Definition at line 52 of file grpexperiment.cpp.

53{
54 GrpPeptideSet peptide_set(sp_protein.get());
55 m_grpPostGroupingProteinListRemoval.addAll(peptide_set);
56}
GrpPeptideSet m_grpPostGroupingProteinListRemoval

References m_grpPostGroupingProteinListRemoval.

◆ addPreGroupingGrpProteinSpRemoval()

void GrpExperiment::addPreGroupingGrpProteinSpRemoval ( GrpProteinSp sp_protein)

protein peptides to remove before grouping typically : remove protein contaminants in special metaproteomics cases

Definition at line 60 of file grpexperiment.cpp.

61{
62 GrpPeptideSet peptide_set(sp_protein.get());
63 m_grpPreGroupingProteinListRemoval.addAll(peptide_set);
64}
GrpPeptideSet m_grpPreGroupingProteinListRemoval

References m_grpPreGroupingProteinListRemoval.

◆ addSubGroupSp()

void GrpExperiment::addSubGroupSp ( GrpMapPeptideToGroup & grp_map_peptide_to_group,
GrpSubGroupSp & grpSubGroupSp ) const
private

Definition at line 196 of file grpexperiment.cpp.

198{
199 qDebug() << "GrpExperiment::addSubGroupSp begin " << grpSubGroupSp.get()->getFirstAccession();
200
201 std::list<GrpGroupSp> new_group_list;
202 grp_map_peptide_to_group.getGroupList(grpSubGroupSp.get()->getPeptideSet(), new_group_list);
203
204 if(new_group_list.size() == 0)
205 {
206 qDebug() << "GrpExperiment::addSubGroupSp create a new group";
207 // create a new group
208 GrpGroupSp sp_group = GrpGroup(grpSubGroupSp).makeGrpGroupSp();
209 // m_grpGroupSpList.push_back(sp_group);
210
211 grp_map_peptide_to_group.set(grpSubGroupSp.get()->getPeptideSet(), sp_group);
212 }
213 else
214 {
215 qDebug() << "GrpExperiment::addSubGroupSp fusion groupList.size() " << new_group_list.size();
216 // fusion group and add the subgroup
217 auto itGroup = new_group_list.begin();
218 GrpGroupSp p_keepGroup = *itGroup;
219 qDebug() << "GrpExperiment::addSubGroupSp "
220 "p_keepGroup->addSubGroupSp(grpSubGroupSp) "
221 << p_keepGroup.get();
222 p_keepGroup->addSubGroupSp(grpSubGroupSp);
223 grp_map_peptide_to_group.set(grpSubGroupSp.get()->getPeptideSet(), p_keepGroup);
224
225 itGroup++;
226 while(itGroup != new_group_list.end())
227 {
228 qDebug() << "GrpExperiment::addSubGroupSp p_keepGroup->addGroup(*itGroup) "
229 << itGroup->get();
230 p_keepGroup->addGroup(itGroup->get());
231 grp_map_peptide_to_group.set((*itGroup)->getGrpPeptideSet(), p_keepGroup);
232
233 // m_grpGroupSpList.remove_if([itGroup](GrpGroupSp & groupSp) {
234 // return (itGroup->get() == groupSp.get()) ;
235 //});
236 itGroup++;
237 }
238 }
239
240 qDebug() << "GrpExperiment::addSubGroupSp end";
241}
void addSubGroupSp(const GrpSubGroupSp &grpSubGroupSp)
Definition grpgroup.cpp:147
void addGroup(GrpGroup *p_group_to_add)
Definition grpgroup.cpp:110
void getGroupList(const GrpPeptideSet &peptide_set_in, std::list< GrpGroupSp > &impacted_group_list) const
get all groups concerned by a list of peptides
void set(const GrpPeptideSet &peptide_set_in, GrpGroupSp grp_group)
set peptide keys pointing on the group
const GrpPeptideSet & getPeptideSet() const
const QString & getFirstAccession() const
std::shared_ptr< GrpGroup > GrpGroupSp
Definition grpgroup.h:39

References pappso::GrpGroup::addGroup(), pappso::GrpGroup::addSubGroupSp(), pappso::GrpSubGroup::getFirstAccession(), pappso::GrpMapPeptideToGroup::getGroupList(), pappso::GrpSubGroup::getPeptideSet(), pappso::GrpGroup::makeGrpGroupSp(), and pappso::GrpMapPeptideToGroup::set().

Referenced by removeNonInformativeSubGroups(), and startGrouping().

◆ getGrpGroupSpList()

std::vector< GrpGroupSpConst > GrpExperiment::getGrpGroupSpList ( ) const

Definition at line 67 of file grpexperiment.cpp.

68{
69 std::vector<GrpGroupSpConst> grp_list;
70 for(GrpGroupSp group : m_grpGroupSpList)
71 {
72 grp_list.push_back(group);
73 }
74 return grp_list;
75}
std::list< GrpGroupSp > m_grpGroupSpList

References m_grpGroupSpList.

◆ getGrpProteinSp()

GrpProteinSp & GrpExperiment::getGrpProteinSp ( const QString & acc,
const QString & description )

Definition at line 78 of file grpexperiment.cpp.

79{
80 GrpProtein grpProtein(accession, description);
81 auto insertedPair = m_mapProteins.insert(
82 std::pair<QString, GrpProteinSp>(accession, std::make_shared<GrpProtein>(grpProtein)));
83 if(insertedPair.second)
84 {
85 m_grpProteinList.push_back(insertedPair.first->second);
86 m_remainingGrpProteinList.push_back(insertedPair.first->second.get());
87 }
88 return (insertedPair.first->second);
89}
std::list< GrpProteinSp > m_grpProteinList
std::list< GrpProtein * > m_remainingGrpProteinList
std::map< QString, GrpProteinSp > m_mapProteins

References m_grpProteinList, m_mapProteins, and m_remainingGrpProteinList.

◆ getGrpProteinSpList()

std::vector< GrpProteinSpConst > GrpExperiment::getGrpProteinSpList ( ) const

Definition at line 266 of file grpexperiment.cpp.

267{
268 std::vector<GrpProteinSpConst> grouped_protein_list;
270 {
271 throw PappsoException(QObject::tr("unable to get grouped protein list before grouping"));
272 }
273 for(auto &&protein_sp : m_grpProteinList)
274 {
275 if(protein_sp.get()->getGroupNumber() > 0)
276 {
277 grouped_protein_list.push_back(protein_sp);
278 }
279 }
280 return grouped_protein_list;
281}

References m_grpProteinList, and m_isGroupingStarted.

◆ numbering()

void GrpExperiment::numbering ( )
private

Definition at line 244 of file grpexperiment.cpp.

245{
246 qDebug() << "GrpExperiment::numbering begin";
247 if(mp_monitor != nullptr)
248 mp_monitor->startNumberingAllGroups(m_grpGroupSpList.size());
249 for(auto &&group_sp : m_grpGroupSpList)
250 {
251 group_sp.get()->numbering();
252 }
253 m_grpGroupSpList.sort(
254 [](GrpGroupSp &first, GrpGroupSp &second) { return ((*first.get()) < (*second.get())); });
255 unsigned int i = 1;
256 for(auto &&group_sp : m_grpGroupSpList)
257 {
258 group_sp.get()->setGroupNumber(i);
259 i++;
260 }
261
262 qDebug() << "GrpExperiment::numbering end";
263}

References m_grpGroupSpList, and mp_monitor.

Referenced by startGrouping().

◆ removeNonInformativeSubGroups()

void GrpExperiment::removeNonInformativeSubGroups ( )
private

Definition at line 284 of file grpexperiment.cpp.

285{
286 qDebug() << "GrpExperiment::removeNonInformativeSubGroups begin";
287 if(mp_monitor != nullptr)
288 mp_monitor->startRemovingNonInformativeSubGroupsInAllGroups(m_grpGroupSpList.size());
289
290 std::list<GrpGroupSp> old_grp_group_sp_list(m_grpGroupSpList);
291 m_grpGroupSpList.clear();
292 auto it_group = old_grp_group_sp_list.begin();
293 while(it_group != old_grp_group_sp_list.end())
294 {
295 if(mp_monitor != nullptr)
296 mp_monitor->removingNonInformativeSubGroupsInGroup();
297 if(it_group->get()->removeNonInformativeSubGroups())
298 {
299 // need to regroup it
300 GrpGroupSp old_group_sp = *it_group;
301 GrpMapPeptideToGroup grp_map_peptide_to_group;
302
303 std::list<GrpSubGroupSp> dispatch_sub_group_set = old_group_sp.get()->getSubGroupSpList();
304 for(GrpSubGroupSp &grp_subgroup : dispatch_sub_group_set)
305 {
306 addSubGroupSp(grp_map_peptide_to_group, grp_subgroup);
307 }
308 grp_map_peptide_to_group.clear(m_grpGroupSpList);
309 }
310 else
311 {
312 qDebug() << "GrpExperiment::removeNonInformativeSubGroups no "
313 "removeNonInformativeSubGroups";
314 m_grpGroupSpList.push_back(*it_group);
315 }
316 it_group++;
317 }
318 if(mp_monitor != nullptr)
319 mp_monitor->stopRemovingNonInformativeSubGroupsInAllGroups(m_grpGroupSpList.size());
320
321 qDebug() << "GrpExperiment::removeNonInformativeSubGroups end";
322}
void addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const
const std::list< GrpSubGroupSp > & getSubGroupSpList() const
Definition grpgroup.cpp:66
void clear(std::list< GrpGroupSp > &grp_group_list)
std::shared_ptr< GrpSubGroup > GrpSubGroupSp
Definition grpsubgroup.h:39

References addSubGroupSp(), pappso::GrpMapPeptideToGroup::clear(), pappso::GrpGroup::getSubGroupSpList(), m_grpGroupSpList, and mp_monitor.

Referenced by startGrouping().

◆ setGrpPeptide()

GrpPeptideSp & GrpExperiment::setGrpPeptide ( const GrpProteinSp & proteinSp,
const QString & sequence,
pappso_double mass )

Definition at line 92 of file grpexperiment.cpp.

95{
96 proteinSp.get()->countPlus();
97 GrpPeptideSp sp_grppeptide = std::make_shared<GrpPeptide>(GrpPeptide(sequence, mass));
98
99 auto insertedPair =
100 m_mapPeptides.insert(std::pair<QString, std::map<unsigned long, GrpPeptideSp>>(
101 sp_grppeptide.get()->m_sequence, std::map<unsigned long, GrpPeptideSp>()));
102 auto secondInsertedPair = insertedPair.first->second.insert(
103 std::pair<unsigned long, GrpPeptideSp>((unsigned long)(mass * 100), sp_grppeptide));
104 if(secondInsertedPair.second)
105 {
106 m_grpPeptideList.push_back(secondInsertedPair.first->second);
107 }
108 proteinSp.get()->push_back(secondInsertedPair.first->second.get());
109 return (secondInsertedPair.first->second);
110}
std::list< GrpPeptideSp > m_grpPeptideList
std::map< QString, std::map< unsigned long, GrpPeptideSp > > m_mapPeptides
const QString m_sequence
Definition grppeptide.h:50
void push_back(GrpPeptide *p_grpPeptide)
std::shared_ptr< GrpPeptide > GrpPeptideSp
Definition grppeptide.h:40

References pappso::GrpProtein::countPlus(), m_grpPeptideList, m_mapPeptides, pappso::GrpPeptide::m_sequence, and pappso::GrpProtein::push_back().

◆ setRemoveNonInformativeSubgroups()

void GrpExperiment::setRemoveNonInformativeSubgroups ( bool ok)

Definition at line 46 of file grpexperiment.cpp.

References m_isRemoveNonInformativeSubgroups.

◆ startGrouping()

void GrpExperiment::startGrouping ( )

Definition at line 113 of file grpexperiment.cpp.

114{
115 qDebug() << "GrpExperiment::startGrouping begin";
116 if(mp_monitor != nullptr)
117 mp_monitor->startGrouping(m_remainingGrpProteinList.size(), m_grpPeptideList.size());
118 m_isGroupingStarted = true;
119 m_mapPeptides.clear();
120 m_mapProteins.clear();
121 qDebug() << "GrpExperiment::startGrouping sort protein list "
122 "m_remainingGrpProteinList.size() "
124 // m_remainingGrpProteinList.sort();
125 // m_remainingGrpProteinList.unique();
126
128 {
129 // TODO clean protein list to remove contaminant peptides before grouping
130 }
131
132
133 GrpMapPeptideToGroup grp_map_peptide_to_group;
134 qDebug() << "GrpExperiment::startGrouping grouping begin";
135 for(auto p_grpProtein : m_remainingGrpProteinList)
136 {
137 p_grpProtein->strip();
138 if(p_grpProtein->m_count == 0)
139 {
140 // no peptides : do not group this protein
141 }
142 else
143 {
144 GrpSubGroupSp grpSubGroupSp = GrpSubGroup(p_grpProtein).makeGrpSubGroupSp();
145
146 if(mp_monitor != nullptr)
147 mp_monitor->groupingProtein();
148 this->addSubGroupSp(grp_map_peptide_to_group, grpSubGroupSp);
149 }
150 }
151 grp_map_peptide_to_group.clear(m_grpGroupSpList);
152 qDebug() << "GrpExperiment::startGrouping grouping end";
153
154 qDebug() << "GrpExperiment::startGrouping grouping m_grpGroupSpList.size() "
155 << m_grpGroupSpList.size();
156
158 {
160 }
161
162 // post grouping protein group removal
163 // remove any group containing contaminants
164 m_grpGroupSpList.remove_if([this](GrpGroupSp &groupSp) {
165 return (groupSp.get()->containsAny(this->m_grpPostGroupingProteinListRemoval));
166 });
167
168
169 numbering();
170 if(mp_monitor != nullptr)
171 mp_monitor->stopGrouping();
172 // GrpGroup(this, *m_remainingGrpProteinList.begin());
173 qDebug() << "GrpExperiment::startGrouping end";
174}
bool containsAny(const GrpPeptideSet &peptideSet) const
Definition grpgroup.cpp:103

References addSubGroupSp(), pappso::GrpMapPeptideToGroup::clear(), pappso::GrpGroup::containsAny(), m_grpGroupSpList, m_grpPeptideList, m_grpPreGroupingProteinListRemoval, m_isGroupingStarted, m_isRemoveNonInformativeSubgroups, m_mapPeptides, m_mapProteins, m_remainingGrpProteinList, pappso::GrpSubGroup::makeGrpSubGroupSp(), mp_monitor, numbering(), and removeNonInformativeSubGroups().

Member Data Documentation

◆ m_grpGroupSpList

std::list<GrpGroupSp> pappso::GrpExperiment::m_grpGroupSpList
private

◆ m_grpPeptideList

std::list<GrpPeptideSp> pappso::GrpExperiment::m_grpPeptideList
private

Definition at line 49 of file grpexperiment.h.

Referenced by setGrpPeptide(), and startGrouping().

◆ m_grpPostGroupingProteinListRemoval

GrpPeptideSet pappso::GrpExperiment::m_grpPostGroupingProteinListRemoval
private

Definition at line 54 of file grpexperiment.h.

Referenced by addPostGroupingGrpProteinSpRemoval().

◆ m_grpPreGroupingProteinListRemoval

GrpPeptideSet pappso::GrpExperiment::m_grpPreGroupingProteinListRemoval
private

Definition at line 56 of file grpexperiment.h.

Referenced by addPreGroupingGrpProteinSpRemoval(), and startGrouping().

◆ m_grpProteinList

std::list<GrpProteinSp> pappso::GrpExperiment::m_grpProteinList
private

Definition at line 50 of file grpexperiment.h.

Referenced by getGrpProteinSp(), and getGrpProteinSpList().

◆ m_isGroupingStarted

bool pappso::GrpExperiment::m_isGroupingStarted = false
private

Definition at line 51 of file grpexperiment.h.

Referenced by getGrpProteinSpList(), and startGrouping().

◆ m_isRemoveNonInformativeSubgroups

bool pappso::GrpExperiment::m_isRemoveNonInformativeSubgroups = true
private

Definition at line 45 of file grpexperiment.h.

Referenced by setRemoveNonInformativeSubgroups(), and startGrouping().

◆ m_mapPeptides

std::map<QString, std::map<unsigned long, GrpPeptideSp> > pappso::GrpExperiment::m_mapPeptides
private

Definition at line 47 of file grpexperiment.h.

Referenced by setGrpPeptide(), and startGrouping().

◆ m_mapProteins

std::map<QString, GrpProteinSp> pappso::GrpExperiment::m_mapProteins
private

Definition at line 46 of file grpexperiment.h.

Referenced by getGrpProteinSp(), and startGrouping().

◆ m_remainingGrpProteinList

std::list<GrpProtein *> pappso::GrpExperiment::m_remainingGrpProteinList
private

Definition at line 52 of file grpexperiment.h.

Referenced by getGrpProteinSp(), and startGrouping().

◆ mp_monitor

GrpGroupingMonitorInterface* pappso::GrpExperiment::mp_monitor = nullptr
private

The documentation for this class was generated from the following files: