libpappsomspp
Library for mass spectrometry
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 More...
 
void addPreGroupingGrpProteinSpRemoval (GrpProteinSp sp_protein)
 protein peptides to remove before grouping typically : remove protein contaminants in special metaproteomics cases More...
 
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 35 of file grpexperiment.cpp.

36 {
37  mp_monitor = p_monitor;
38 }

References mp_monitor.

◆ ~GrpExperiment()

GrpExperiment::~GrpExperiment ( )
virtual

Definition at line 40 of file grpexperiment.cpp.

41 {
42 }

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 50 of file grpexperiment.cpp.

51 {
52  GrpPeptideSet peptide_set(sp_protein.get());
54 }

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 58 of file grpexperiment.cpp.

59 {
60  GrpPeptideSet peptide_set(sp_protein.get());
62 }

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

◆ addSubGroupSp()

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

Definition at line 201 of file grpexperiment.cpp.

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

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 65 of file grpexperiment.cpp.

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

References m_grpGroupSpList.

◆ getGrpProteinSp()

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

Definition at line 76 of file grpexperiment.cpp.

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

References m_grpProteinList, m_mapProteins, and m_remainingGrpProteinList.

◆ getGrpProteinSpList()

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

Definition at line 279 of file grpexperiment.cpp.

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

References m_grpProteinList, and m_isGroupingStarted.

◆ numbering()

void GrpExperiment::numbering ( )
private

Definition at line 256 of file grpexperiment.cpp.

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

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

Referenced by startGrouping().

◆ removeNonInformativeSubGroups()

void GrpExperiment::removeNonInformativeSubGroups ( )
private

Definition at line 298 of file grpexperiment.cpp.

299 {
300  qDebug() << "GrpExperiment::removeNonInformativeSubGroups begin";
301  if(mp_monitor != nullptr)
303  m_grpGroupSpList.size());
304 
305  std::list<GrpGroupSp> old_grp_group_sp_list(m_grpGroupSpList);
306  m_grpGroupSpList.clear();
307  auto it_group = old_grp_group_sp_list.begin();
308  while(it_group != old_grp_group_sp_list.end())
309  {
310  if(mp_monitor != nullptr)
312  if(it_group->get()->removeNonInformativeSubGroups())
313  {
314  // need to regroup it
315  GrpGroupSp old_group_sp = *it_group;
316  GrpMapPeptideToGroup grp_map_peptide_to_group;
317 
318  std::list<GrpSubGroupSp> dispatch_sub_group_set =
319  old_group_sp.get()->getSubGroupSpList();
320  for(GrpSubGroupSp &grp_subgroup : dispatch_sub_group_set)
321  {
322  addSubGroupSp(grp_map_peptide_to_group, grp_subgroup);
323  }
324  grp_map_peptide_to_group.clear(m_grpGroupSpList);
325  }
326  else
327  {
328  qDebug() << "GrpExperiment::removeNonInformativeSubGroups no "
329  "removeNonInformativeSubGroups";
330  m_grpGroupSpList.push_back(*it_group);
331  }
332  it_group++;
333  }
334  if(mp_monitor != nullptr)
336  m_grpGroupSpList.size());
337 
338  qDebug() << "GrpExperiment::removeNonInformativeSubGroups end";
339 }

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 91 of file grpexperiment.cpp.

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

References m_grpPeptideList, and m_mapPeptides.

◆ setRemoveNonInformativeSubgroups()

void GrpExperiment::setRemoveNonInformativeSubgroups ( bool  ok)

Definition at line 44 of file grpexperiment.cpp.

45 {
47 }

References m_isRemoveNonInformativeSubgroups.

◆ startGrouping()

void GrpExperiment::startGrouping ( )

Definition at line 115 of file grpexperiment.cpp.

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

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:
pappso::GrpSubGroup
Definition: grpsubgroup.h:43
pappso::GrpExperiment::removeNonInformativeSubGroups
void removeNonInformativeSubGroups()
Definition: grpexperiment.cpp:298
pappso::GrpExperiment::addSubGroupSp
void addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const
Definition: grpexperiment.cpp:201
pappso::GrpPeptideSet::addAll
void addAll(const GrpPeptideSet &peptideSet)
Definition: grppeptideset.cpp:165
pappso::GrpGroupingMonitorInterface::stopRemovingNonInformativeSubGroupsInAllGroups
virtual void stopRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)=0
pappso::GrpExperiment::numbering
void numbering()
Definition: grpexperiment.cpp:256
pappso::GrpGroupingMonitorInterface::startNumberingAllGroups
virtual void startNumberingAllGroups(std::size_t total_number_group)=0
pappso::GrpExperiment::m_grpPeptideList
std::list< GrpPeptideSp > m_grpPeptideList
Definition: grpexperiment.h:49
pappso::GrpMapPeptideToGroup
Definition: grpmappeptidetogroup.h:43
pappso::GrpPeptideSet
Definition: grppeptideset.h:36
pappso::GrpSubGroupSp
std::shared_ptr< GrpSubGroup > GrpSubGroupSp
Definition: grpsubgroup.h:39
pappso::GrpPeptide
Definition: grppeptide.h:43
pappso::GrpGroupingMonitorInterface::groupingProtein
virtual void groupingProtein()=0
pappso::GrpMapPeptideToGroup::set
void set(const GrpPeptideSet &peptide_set_in, GrpGroupSp grp_group)
set peptide keys pointing on the group
Definition: grpmappeptidetogroup.cpp:74
pappso::GrpExperiment::m_grpProteinList
std::list< GrpProteinSp > m_grpProteinList
Definition: grpexperiment.h:50
pappso::GrpExperiment::m_remainingGrpProteinList
std::list< GrpProtein * > m_remainingGrpProteinList
Definition: grpexperiment.h:52
pappso::GrpExperiment::m_mapPeptides
std::map< QString, std::map< unsigned long, GrpPeptideSp > > m_mapPeptides
Definition: grpexperiment.h:47
pappso::GrpGroupingMonitorInterface::startRemovingNonInformativeSubGroupsInAllGroups
virtual void startRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)=0
pappso::GrpExperiment::m_grpPreGroupingProteinListRemoval
GrpPeptideSet m_grpPreGroupingProteinListRemoval
Definition: grpexperiment.h:56
pappso::GrpMapPeptideToGroup::getGroupList
void getGroupList(const GrpPeptideSet &peptide_set_in, std::list< GrpGroupSp > &impacted_group_list) const
get all groups concerned by a list of peptides
Definition: grpmappeptidetogroup.cpp:50
pappso::GrpSubGroup::makeGrpSubGroupSp
GrpSubGroupSp makeGrpSubGroupSp()
Definition: grpsubgroup.cpp:128
pappso::GrpProtein
Definition: grpprotein.h:40
pappso::GrpGroup::makeGrpGroupSp
GrpGroupSp makeGrpGroupSp()
Definition: grpgroup.cpp:98
pappso::GrpPeptideSp
std::shared_ptr< GrpPeptide > GrpPeptideSp
Definition: grppeptide.h:40
pappso::GrpMapPeptideToGroup::clear
void clear(std::list< GrpGroupSp > &grp_group_list)
Definition: grpmappeptidetogroup.cpp:94
pappso::GrpExperiment::m_grpPostGroupingProteinListRemoval
GrpPeptideSet m_grpPostGroupingProteinListRemoval
Definition: grpexperiment.h:54
pappso::GrpGroup
Definition: grpgroup.h:44
pappso::GrpGroupingMonitorInterface::removingNonInformativeSubGroupsInGroup
virtual void removingNonInformativeSubGroupsInGroup()=0
pappso::GrpExperiment::m_grpGroupSpList
std::list< GrpGroupSp > m_grpGroupSpList
Definition: grpexperiment.h:58
pappso::GrpGroupingMonitorInterface::startGrouping
virtual void startGrouping(std::size_t total_number_protein, std::size_t total_number_peptide)=0
pappso::GrpExperiment::mp_monitor
GrpGroupingMonitorInterface * mp_monitor
Definition: grpexperiment.h:44
pappso::GrpPeptideSet::size
unsigned int size() const
Definition: grppeptideset.h:54
pappso::GrpExperiment::m_isGroupingStarted
bool m_isGroupingStarted
Definition: grpexperiment.h:51
pappso::GrpGroupSp
std::shared_ptr< GrpGroup > GrpGroupSp
Definition: grpgroup.h:38
pappso::GrpGroupingMonitorInterface::stopGrouping
virtual void stopGrouping()=0
pappso::GrpExperiment::m_mapProteins
std::map< QString, GrpProteinSp > m_mapProteins
Definition: grpexperiment.h:46
pappso::GrpExperiment::m_isRemoveNonInformativeSubgroups
bool m_isRemoveNonInformativeSubgroups
Definition: grpexperiment.h:45
pappso::PappsoException
Definition: pappsoexception.h:42