libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::cbor::psm::PsmProteinMap Class Reference

store PsmProtein in a map with accession as key More...

#include <psmproteinmap.h>

Public Member Functions

 PsmProteinMap ()
virtual ~PsmProteinMap ()
std::pair< std::map< QString, PsmProtein >::iterator, bool > insert (const PsmProtein &psm_protein)
 standard map insert of a PsmProtein (accession is the key)
void writeMap (CborStreamWriter &writer) const
 writes the protein map in a cbor output stream this output a CborMap structure directly in the output stream
void readMap (CborStreamReader &reader)
 reads the protein map from a cbor input stream
std::size_t size () const
 get protein map size
const pappso::cbor::psm::PsmProteingetByAccession (const QString &accession) const
 retrieve a PsmProtein with its accession
void merge (const PsmProteinMap &other_protein_map)
 merge with other protein map
void reduce (const QStringList &accession_list)
 reduce to protein accessions listed in input
std::map< QString, PsmProtein > & getProteinMap ()

Private Attributes

std::map< QString, PsmProteinm_proteinMap

Detailed Description

store PsmProtein in a map with accession as key

Definition at line 55 of file psmproteinmap.h.

Constructor & Destructor Documentation

◆ PsmProteinMap()

pappso::cbor::psm::PsmProteinMap::PsmProteinMap ( )

Default constructor

Definition at line 33 of file psmproteinmap.cpp.

34{
35}

Referenced by merge().

◆ ~PsmProteinMap()

pappso::cbor::psm::PsmProteinMap::~PsmProteinMap ( )
virtual

Destructor

Definition at line 37 of file psmproteinmap.cpp.

38{
39}

Member Function Documentation

◆ getByAccession()

const pappso::cbor::psm::PsmProtein & pappso::cbor::psm::PsmProteinMap::getByAccession ( const QString & accession) const

retrieve a PsmProtein with its accession

Returns
PsmProtein const reference

Definition at line 164 of file psmproteinmap.cpp.

165{
166 auto it = m_proteinMap.find(accession);
167
168 if(it == m_proteinMap.end())
169 {
170 throw pappso::ExceptionNotFound(QObject::tr("%1 accession not found").arg(accession));
171 }
172 return it->second;
173}
std::map< QString, PsmProtein > m_proteinMap

References m_proteinMap.

Referenced by pappso::cbor::psm::CborScanMapBase::populateProteinMapUsingOldProteinMap(), and reduce().

◆ getProteinMap()

std::map< QString, pappso::cbor::psm::PsmProtein > & pappso::cbor::psm::PsmProteinMap::getProteinMap ( )

Definition at line 43 of file psmproteinmap.cpp.

44{
45 return m_proteinMap;
46}

References m_proteinMap.

◆ insert()

std::pair< std::map< QString, pappso::cbor::psm::PsmProtein >::iterator, bool > pappso::cbor::psm::PsmProteinMap::insert ( const PsmProtein & psm_protein)

standard map insert of a PsmProtein (accession is the key)

Returns
standard C++ insert iterator on a map

Definition at line 50 of file psmproteinmap.cpp.

51{
52 return m_proteinMap.insert(
53 std::pair<QString, PsmProtein>(psm_protein.protein_sp.get()->getAccession(), psm_protein));
54}

References m_proteinMap, and pappso::cbor::psm::PsmProtein::protein_sp.

Referenced by pappso::cbor::psm::CborScanMapBase::populateProteinMapUsingOldProteinMap().

◆ merge()

void pappso::cbor::psm::PsmProteinMap::merge ( const PsmProteinMap & other_protein_map)

merge with other protein map

Definition at line 176 of file psmproteinmap.cpp.

177{
178 for(auto &it_prot : other_protein_map.m_proteinMap)
179 {
180 m_proteinMap.insert(std::pair<QString, PsmProtein>(it_prot.first, it_prot.second));
181 }
182}

References PsmProteinMap(), and m_proteinMap.

◆ readMap()

void pappso::cbor::psm::PsmProteinMap::readMap ( CborStreamReader & reader)

reads the protein map from a cbor input stream

Parameters
readerthe cbor intput stream

Definition at line 88 of file psmproteinmap.cpp.

89{
90 PsmProtein psm_protein;
91 reader.enterContainer();
92 while(!reader.lastError() && reader.hasNext())
93 {
94 bool is_ok;
95
96 QString accession;
97 is_ok = reader.decodeString(accession);
98 qDebug() << accession;
99 if(is_ok)
100 {
101 reader.enterContainer();
102 pappso::Protein protein;
103 protein.setAccession(accession);
104 psm_protein.protein_sp = std::make_shared<pappso::Protein>(protein);
105 psm_protein.isContaminant = false;
106 psm_protein.isTarget = true;
107 auto it = m_proteinMap.insert(std::pair<QString, PsmProtein>(accession, psm_protein));
108
109 QString tag;
110 while(!reader.lastError() && reader.hasNext())
111 {
112 is_ok = reader.decodeString(tag);
113 qDebug() << tag;
114 if(is_ok)
115 {
116 if(tag == "description")
117 {
118 QString description;
119 is_ok = reader.decodeString(description);
120 qDebug() << description;
121 it.first->second.protein_sp.get()->setDescription(description);
122 }
123 else if(tag == "sequence")
124 {
125 QString sequence;
126 reader.decodeString(sequence);
127 it.first->second.protein_sp.get()->setSequence(sequence);
128 }
129 else if(tag == "target")
130 {
131 it.first->second.isTarget = reader.toBool();
132 reader.next();
133 }
134 else if(tag == "contaminant")
135 {
136 it.first->second.isContaminant = reader.toBool();
137 reader.next();
138 }
139 else if(tag == "eval")
140 {
141 reader.readCborMap(it.first->second.cborEval);
142 }
143 }
144 }
145 reader.leaveContainer();
146 }
147 else
148 {
149 // no accession
150 }
151 // reader.next();
152 // }
153 }
154 reader.leaveContainer();
155}
virtual void setAccession(const QString &accession)
Definition protein.cpp:132

References pappso::cbor::CborStreamReader::decodeString(), pappso::cbor::psm::PsmProtein::isContaminant, pappso::cbor::psm::PsmProtein::isTarget, m_proteinMap, pappso::cbor::psm::PsmProtein::protein_sp, pappso::cbor::CborStreamReader::readCborMap(), and pappso::Protein::setAccession().

◆ reduce()

void pappso::cbor::psm::PsmProteinMap::reduce ( const QStringList & accession_list)

reduce to protein accessions listed in input

Definition at line 185 of file psmproteinmap.cpp.

186{
187 std::map<QString, PsmProtein> new_protein_map;
188
189 for(const QString &accession : accession_list)
190 {
191 new_protein_map.insert(std::pair<QString, PsmProtein>(accession, getByAccession(accession)));
192 }
193 m_proteinMap = new_protein_map;
194}
const pappso::cbor::psm::PsmProtein & getByAccession(const QString &accession) const
retrieve a PsmProtein with its accession

References getByAccession(), and m_proteinMap.

◆ size()

std::size_t pappso::cbor::psm::PsmProteinMap::size ( ) const

get protein map size

Definition at line 158 of file psmproteinmap.cpp.

159{
160 return m_proteinMap.size();
161}

References m_proteinMap.

◆ writeMap()

void pappso::cbor::psm::PsmProteinMap::writeMap ( CborStreamWriter & writer) const

writes the protein map in a cbor output stream this output a CborMap structure directly in the output stream

Parameters
writerthe cbor output stream

Definition at line 57 of file psmproteinmap.cpp.

58{
59 // writer.append("protein_map");
60 writer.startMap(m_proteinMap.size()); // protein map
61 for(auto &protein_pair : m_proteinMap)
62 {
63 writer.append(protein_pair.first);
64
65 qDebug() << protein_pair.first;
66 writer.startMap(); // protein
67 writer.append("description");
68 writer.append(protein_pair.second.protein_sp.get()->getDescription());
69 writer.append("sequence");
70 writer.append(protein_pair.second.protein_sp.get()->getSequence());
71 writer.append("target");
72 writer.append(protein_pair.second.isTarget);
73 writer.append("contaminant");
74 writer.append(protein_pair.second.isContaminant);
75
76 if(!protein_pair.second.cborEval.isEmpty())
77 {
78 writer.append("eval");
79 writer.writeCborMap(protein_pair.second.cborEval);
80 }
81 writer.endMap(); // protein
82 }
83
84 writer.endMap(); // protein map
85}

References m_proteinMap, and pappso::cbor::CborStreamWriter::writeCborMap().

Member Data Documentation

◆ m_proteinMap

std::map<QString, PsmProtein> pappso::cbor::psm::PsmProteinMap::m_proteinMap
private

Definition at line 111 of file psmproteinmap.h.

Referenced by getByAccession(), getProteinMap(), insert(), merge(), readMap(), reduce(), size(), and writeMap().


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