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());
56}
GrpPeptideSet m_grpPostGroupingProteinListRemoval
void addAll(const GrpPeptideSet &peptideSet)

References pappso::GrpPeptideSet::addAll(), and 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());
64}
GrpPeptideSet m_grpPreGroupingProteinListRemoval

References pappso::GrpPeptideSet::addAll(), and m_grpPreGroupingProteinListRemoval.

◆ addSubGroupSp()

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

Definition at line 203 of file grpexperiment.cpp.

205{
206 qDebug() << "GrpExperiment::addSubGroupSp begin "
207 << grpSubGroupSp.get()->getFirstAccession();
208
209 std::list<GrpGroupSp> new_group_list;
210 grp_map_peptide_to_group.getGroupList(grpSubGroupSp.get()->getPeptideSet(),
211 new_group_list);
212
213 if(new_group_list.size() == 0)
214 {
215 qDebug() << "GrpExperiment::addSubGroupSp create a new group";
216 // create a new group
217 GrpGroupSp sp_group = GrpGroup(grpSubGroupSp).makeGrpGroupSp();
218 // m_grpGroupSpList.push_back(sp_group);
219
220 grp_map_peptide_to_group.set(grpSubGroupSp.get()->getPeptideSet(),
221 sp_group);
222 }
223 else
224 {
225 qDebug() << "GrpExperiment::addSubGroupSp fusion groupList.size() "
226 << new_group_list.size();
227 // fusion group and add the subgroup
228 auto itGroup = new_group_list.begin();
229 GrpGroupSp p_keepGroup = *itGroup;
230 qDebug() << "GrpExperiment::addSubGroupSp "
231 "p_keepGroup->addSubGroupSp(grpSubGroupSp) "
232 << p_keepGroup.get();
233 p_keepGroup->addSubGroupSp(grpSubGroupSp);
234 grp_map_peptide_to_group.set(grpSubGroupSp.get()->getPeptideSet(),
235 p_keepGroup);
236
237 itGroup++;
238 while(itGroup != new_group_list.end())
239 {
240 qDebug()
241 << "GrpExperiment::addSubGroupSp p_keepGroup->addGroup(*itGroup) "
242 << itGroup->get();
243 p_keepGroup->addGroup(itGroup->get());
244 grp_map_peptide_to_group.set((*itGroup)->getGrpPeptideSet(),
245 p_keepGroup);
246
247 // m_grpGroupSpList.remove_if([itGroup](GrpGroupSp & groupSp) {
248 // return (itGroup->get() == groupSp.get()) ;
249 //});
250 itGroup++;
251 }
252 }
253
254 qDebug() << "GrpExperiment::addSubGroupSp end";
255}
GrpGroupSp makeGrpGroupSp()
Definition grpgroup.cpp:98
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
std::shared_ptr< GrpGroup > GrpGroupSp
Definition grpgroup.h:39

References pappso::GrpMapPeptideToGroup::getGroupList(), 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.

80{
81 GrpProtein grpProtein(accession, description);
82 auto insertedPair = m_mapProteins.insert(std::pair<QString, GrpProteinSp>(
83 accession, std::make_shared<GrpProtein>(grpProtein)));
84 if(insertedPair.second)
85 {
86 m_grpProteinList.push_back(insertedPair.first->second);
87 m_remainingGrpProteinList.push_back(insertedPair.first->second.get());
88 }
89 return (insertedPair.first->second);
90}
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 281 of file grpexperiment.cpp.

282{
283 std::vector<GrpProteinSpConst> grouped_protein_list;
285 {
286 throw PappsoException(
287 QObject::tr("unable to get grouped protein list before grouping"));
288 }
289 for(auto &&protein_sp : m_grpProteinList)
290 {
291 if(protein_sp.get()->getGroupNumber() > 0)
292 {
293 grouped_protein_list.push_back(protein_sp);
294 }
295 }
296 return grouped_protein_list;
297}

References m_grpProteinList, and m_isGroupingStarted.

◆ numbering()

void GrpExperiment::numbering ( )
private

Definition at line 258 of file grpexperiment.cpp.

259{
260 qDebug() << "GrpExperiment::numbering begin";
261 if(mp_monitor != nullptr)
263 for(auto &&group_sp : m_grpGroupSpList)
264 {
265 group_sp.get()->numbering();
266 }
267 m_grpGroupSpList.sort([](GrpGroupSp &first, GrpGroupSp &second) {
268 return ((*first.get()) < (*second.get()));
269 });
270 unsigned int i = 1;
271 for(auto &&group_sp : m_grpGroupSpList)
272 {
273 group_sp.get()->setGroupNumber(i);
274 i++;
275 }
276
277 qDebug() << "GrpExperiment::numbering end";
278}
virtual void startNumberingAllGroups(std::size_t total_number_group)=0

References m_grpGroupSpList, mp_monitor, and pappso::GrpGroupingMonitorInterface::startNumberingAllGroups().

Referenced by startGrouping().

◆ removeNonInformativeSubGroups()

void GrpExperiment::removeNonInformativeSubGroups ( )
private

Definition at line 300 of file grpexperiment.cpp.

301{
302 qDebug() << "GrpExperiment::removeNonInformativeSubGroups begin";
303 if(mp_monitor != nullptr)
305 m_grpGroupSpList.size());
306
307 std::list<GrpGroupSp> old_grp_group_sp_list(m_grpGroupSpList);
308 m_grpGroupSpList.clear();
309 auto it_group = old_grp_group_sp_list.begin();
310 while(it_group != old_grp_group_sp_list.end())
311 {
312 if(mp_monitor != nullptr)
314 if(it_group->get()->removeNonInformativeSubGroups())
315 {
316 // need to regroup it
317 GrpGroupSp old_group_sp = *it_group;
318 GrpMapPeptideToGroup grp_map_peptide_to_group;
319
320 std::list<GrpSubGroupSp> dispatch_sub_group_set =
321 old_group_sp.get()->getSubGroupSpList();
322 for(GrpSubGroupSp &grp_subgroup : dispatch_sub_group_set)
323 {
324 addSubGroupSp(grp_map_peptide_to_group, grp_subgroup);
325 }
326 grp_map_peptide_to_group.clear(m_grpGroupSpList);
327 }
328 else
329 {
330 qDebug() << "GrpExperiment::removeNonInformativeSubGroups no "
331 "removeNonInformativeSubGroups";
332 m_grpGroupSpList.push_back(*it_group);
333 }
334 it_group++;
335 }
336 if(mp_monitor != nullptr)
338 m_grpGroupSpList.size());
339
340 qDebug() << "GrpExperiment::removeNonInformativeSubGroups end";
341}
void addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const
virtual void removingNonInformativeSubGroupsInGroup()=0
virtual void startRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)=0
virtual void stopRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)=0
void clear(std::list< GrpGroupSp > &grp_group_list)
std::shared_ptr< GrpSubGroup > GrpSubGroupSp
Definition grpsubgroup.h:39

References addSubGroupSp(), pappso::GrpMapPeptideToGroup::clear(), m_grpGroupSpList, mp_monitor, pappso::GrpGroupingMonitorInterface::removingNonInformativeSubGroupsInGroup(), pappso::GrpGroupingMonitorInterface::startRemovingNonInformativeSubGroupsInAllGroups(), and pappso::GrpGroupingMonitorInterface::stopRemovingNonInformativeSubGroupsInAllGroups().

Referenced by startGrouping().

◆ setGrpPeptide()

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

Definition at line 93 of file grpexperiment.cpp.

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

References m_grpPeptideList, and m_mapPeptides.

◆ setRemoveNonInformativeSubgroups()

void GrpExperiment::setRemoveNonInformativeSubgroups ( bool  ok)

Definition at line 46 of file grpexperiment.cpp.

References m_isRemoveNonInformativeSubgroups.

◆ startGrouping()

void GrpExperiment::startGrouping ( )

Definition at line 117 of file grpexperiment.cpp.

118{
119 qDebug() << "GrpExperiment::startGrouping begin";
120 if(mp_monitor != nullptr)
122 m_grpPeptideList.size());
123 m_isGroupingStarted = true;
124 m_mapPeptides.clear();
125 m_mapProteins.clear();
126 qDebug() << "GrpExperiment::startGrouping sort protein list "
127 "m_remainingGrpProteinList.size() "
129 // m_remainingGrpProteinList.sort();
130 // m_remainingGrpProteinList.unique();
131
133 {
134 // TODO clean protein list to remove contaminant peptides before grouping
135 }
136
137
138 GrpMapPeptideToGroup grp_map_peptide_to_group;
139 qDebug() << "GrpExperiment::startGrouping grouping begin";
140 for(auto p_grpProtein : m_remainingGrpProteinList)
141 {
142 p_grpProtein->strip();
143 if(p_grpProtein->m_count == 0)
144 {
145 // no peptides : do not group this protein
146 }
147 else
148 {
149 GrpSubGroupSp grpSubGroupSp =
150 GrpSubGroup(p_grpProtein).makeGrpSubGroupSp();
151
152 if(mp_monitor != nullptr)
154 this->addSubGroupSp(grp_map_peptide_to_group, grpSubGroupSp);
155 }
156 }
157 grp_map_peptide_to_group.clear(m_grpGroupSpList);
158 qDebug() << "GrpExperiment::startGrouping grouping end";
159
160 qDebug() << "GrpExperiment::startGrouping grouping m_grpGroupSpList.size() "
161 << m_grpGroupSpList.size();
162
164 {
166 }
167
168 // post grouping protein group removal
169 // remove any group containing contaminants
170 m_grpGroupSpList.remove_if([this](GrpGroupSp &groupSp) {
171 return (
172 groupSp.get()->containsAny(this->m_grpPostGroupingProteinListRemoval));
173 });
174
175
176 numbering();
177 if(mp_monitor != nullptr)
179 // GrpGroup(this, *m_remainingGrpProteinList.begin());
180 qDebug() << "GrpExperiment::startGrouping end";
181}
virtual void startGrouping(std::size_t total_number_protein, std::size_t total_number_peptide)=0
unsigned int size() const
GrpSubGroupSp makeGrpSubGroupSp()

References addSubGroupSp(), pappso::GrpMapPeptideToGroup::clear(), pappso::GrpGroupingMonitorInterface::groupingProtein(), m_grpGroupSpList, m_grpPeptideList, m_grpPreGroupingProteinListRemoval, m_isGroupingStarted, m_isRemoveNonInformativeSubgroups, m_mapPeptides, m_mapProteins, m_remainingGrpProteinList, pappso::GrpSubGroup::makeGrpSubGroupSp(), mp_monitor, numbering(), removeNonInformativeSubGroups(), pappso::GrpPeptideSet::size(), pappso::GrpGroupingMonitorInterface::startGrouping(), and pappso::GrpGroupingMonitorInterface::stopGrouping().

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: