31 #include "../pappsoexception.h"
66 std::vector<GrpGroupSpConst>
69 std::vector<GrpGroupSpConst> grp_list;
72 grp_list.push_back(group);
79 const QString &description)
82 auto insertedPair =
m_mapProteins.insert(std::pair<QString, GrpProteinSp>(
83 accession, std::make_shared<GrpProtein>(grpProtein)));
84 if(insertedPair.second)
89 return (insertedPair.first->second);
94 const QString &sequence,
97 proteinSp.get()->countPlus();
99 std::make_shared<GrpPeptide>(
GrpPeptide(sequence, mass));
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)
112 proteinSp.get()->push_back(secondInsertedPair.first->second.get());
113 return (secondInsertedPair.first->second);
119 qDebug() <<
"GrpExperiment::startGrouping begin";
126 qDebug() <<
"GrpExperiment::startGrouping sort protein list "
127 "m_remainingGrpProteinList.size() "
139 qDebug() <<
"GrpExperiment::startGrouping grouping begin";
142 p_grpProtein->strip();
143 if(p_grpProtein->m_count == 0)
154 this->
addSubGroupSp(grp_map_peptide_to_group, grpSubGroupSp);
158 qDebug() <<
"GrpExperiment::startGrouping grouping end";
160 qDebug() <<
"GrpExperiment::startGrouping grouping m_grpGroupSpList.size() "
172 groupSp.get()->containsAny(this->m_grpPostGroupingProteinListRemoval));
180 qDebug() <<
"GrpExperiment::startGrouping end";
195 return testGroupSp.get()->containsAny(_peptide_set);
206 qDebug() <<
"GrpExperiment::addSubGroupSp begin "
207 << grpSubGroupSp.get()->getFirstAccession();
209 std::list<GrpGroupSp> new_group_list;
210 grp_map_peptide_to_group.
getGroupList(grpSubGroupSp.get()->getPeptideSet(),
213 if(new_group_list.size() == 0)
215 qDebug() <<
"GrpExperiment::addSubGroupSp create a new group";
220 grp_map_peptide_to_group.
set(grpSubGroupSp.get()->getPeptideSet(),
225 qDebug() <<
"GrpExperiment::addSubGroupSp fusion groupList.size() "
226 << new_group_list.size();
228 auto itGroup = new_group_list.begin();
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(),
238 while(itGroup != new_group_list.end())
241 <<
"GrpExperiment::addSubGroupSp p_keepGroup->addGroup(*itGroup) "
243 p_keepGroup->addGroup(itGroup->get());
244 grp_map_peptide_to_group.
set((*itGroup)->getGrpPeptideSet(),
254 qDebug() <<
"GrpExperiment::addSubGroupSp end";
260 qDebug() <<
"GrpExperiment::numbering begin";
265 group_sp.get()->numbering();
268 return ((*first.get()) < (*second.get()));
273 group_sp.get()->setGroupNumber(i);
277 qDebug() <<
"GrpExperiment::numbering end";
280 std::vector<GrpProteinSpConst>
283 std::vector<GrpProteinSpConst> grouped_protein_list;
287 QObject::tr(
"unable to get grouped protein list before grouping"));
291 if(protein_sp.get()->getGroupNumber() > 0)
293 grouped_protein_list.push_back(protein_sp);
296 return grouped_protein_list;
302 qDebug() <<
"GrpExperiment::removeNonInformativeSubGroups begin";
309 auto it_group = old_grp_group_sp_list.begin();
310 while(it_group != old_grp_group_sp_list.end())
314 if(it_group->get()->removeNonInformativeSubGroups())
320 std::list<GrpSubGroupSp> dispatch_sub_group_set =
321 old_group_sp.get()->getSubGroupSpList();
330 qDebug() <<
"GrpExperiment::removeNonInformativeSubGroups no "
331 "removeNonInformativeSubGroups";
340 qDebug() <<
"GrpExperiment::removeNonInformativeSubGroups end";
void addSubGroupSp(GrpMapPeptideToGroup &grp_map_peptide_to_group, GrpSubGroupSp &grpSubGroupSp) const
std::list< GrpGroupSp > m_grpGroupSpList
GrpPeptideSp & setGrpPeptide(const GrpProteinSp &proteinSp, const QString &sequence, pappso_double mass)
GrpGroupingMonitorInterface * mp_monitor
void removeNonInformativeSubGroups()
GrpProteinSp & getGrpProteinSp(const QString &acc, const QString &description)
void addPostGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein)
protein to remove with its entire group after grouping is completed typically : to use with protein c...
bool m_isRemoveNonInformativeSubgroups
std::list< GrpPeptideSp > m_grpPeptideList
std::vector< GrpGroupSpConst > getGrpGroupSpList() const
void setRemoveNonInformativeSubgroups(bool ok)
GrpPeptideSet m_grpPreGroupingProteinListRemoval
GrpExperiment(GrpGroupingMonitorInterface *p_monitor)
void addPreGroupingGrpProteinSpRemoval(GrpProteinSp sp_protein)
protein peptides to remove before grouping typically : remove protein contaminants in special metapro...
std::map< QString, std::map< unsigned long, GrpPeptideSp > > m_mapPeptides
std::list< GrpProteinSp > m_grpProteinList
GrpPeptideSet m_grpPostGroupingProteinListRemoval
std::list< GrpProtein * > m_remainingGrpProteinList
std::vector< GrpProteinSpConst > getGrpProteinSpList() const
std::map< QString, GrpProteinSp > m_mapProteins
GrpGroupSp makeGrpGroupSp()
virtual void removingNonInformativeSubGroupsInGroup()=0
virtual void startNumberingAllGroups(std::size_t total_number_group)=0
virtual void startRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)=0
virtual void stopGrouping()=0
virtual void startGrouping(std::size_t total_number_protein, std::size_t total_number_peptide)=0
virtual void groupingProtein()=0
virtual void stopRemovingNonInformativeSubGroupsInAllGroups(std::size_t total_number_group)=0
void clear(std::list< GrpGroupSp > &grp_group_list)
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
unsigned int size() const
void addAll(const GrpPeptideSet &peptideSet)
GrpSubGroupSp makeGrpSubGroupSp()
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
std::shared_ptr< GrpProtein > GrpProteinSp
std::shared_ptr< GrpSubGroup > GrpSubGroupSp
std::shared_ptr< GrpPeptide > GrpPeptideSp
double pappso_double
A type definition for doubles.
std::shared_ptr< GrpGroup > GrpGroupSp
bool operator()(const GrpGroupSp &testGroupSp)
GrpPeptideSet _peptide_set
ContainsAny(const GrpPeptideSet &peptide_set)