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 54 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}

◆ ~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

Referenced by pappso::cbor::psm::PsmFileReaderBase::currentProteinRefListContainsDecoy(), pappso::cbor::psm::PsmFileReaderBase::currentProteinRefListContainsTarget(), pappso::cbor::psm::CborScanMapBase::populateProteinMapUsingOldProteinMap(), and pappso::cbor::psm::SageTsvHandler::recordLine().

◆ 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}

◆ 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 pappso::cbor::psm::PsmProtein::protein_sp.

Referenced by pappso::cbor::psm::MzIdentMlReader::finalDebrief(), pappso::cbor::psm::SageTsvHandler::parseProteins(), pappso::cbor::psm::CborScanMapBase::populateProteinMapUsingOldProteinMap(), and pappso::cbor::psm::SageTsvHandler::recordLine().

◆ 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 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, pappso::cbor::psm::PsmProtein::protein_sp, pappso::cbor::CborStreamReader::readCborMap(), and pappso::Protein::setAccession().

Referenced by pappso::cbor::psm::PsmFileReaderBase::readProteinMap().

◆ 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

◆ 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}

◆ 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 pappso::cbor::CborStreamWriter::writeCborMap().

Referenced by pappso::cbor::psm::PsmFileScanProcessAndCopy::close(), pappso::cbor::psm::MzIdentMlReader::finalDebrief(), and pappso::cbor::psm::PsmFileScanProcessAndCopy::proteinMapReady().

Member Data Documentation

◆ m_proteinMap

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

Definition at line 110 of file psmproteinmap.h.

Referenced by merge().


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