42std::map<QString, pappso::cbor::psm::PsmProtein> &
49std::pair<std::map<QString, pappso::cbor::psm::PsmProtein>::iterator,
bool>
53 std::pair<QString, PsmProtein>(psm_protein.
protein_sp.get()->getAccession(), psm_protein));
63 writer.append(protein_pair.first);
65 qDebug() << protein_pair.first;
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);
76 if(!protein_pair.second.cborEval.isEmpty())
78 writer.append(
"eval");
91 reader.enterContainer();
92 while(!reader.lastError() && reader.hasNext())
98 qDebug() << accession;
101 reader.enterContainer();
104 psm_protein.
protein_sp = std::make_shared<pappso::Protein>(protein);
107 auto it =
m_proteinMap.insert(std::pair<QString, PsmProtein>(accession, psm_protein));
110 while(!reader.lastError() && reader.hasNext())
116 if(tag ==
"description")
120 qDebug() << description;
121 it.first->second.protein_sp.get()->setDescription(description);
123 else if(tag ==
"sequence")
127 it.first->second.protein_sp.get()->setSequence(sequence);
129 else if(tag ==
"target")
131 it.first->second.isTarget = reader.toBool();
134 else if(tag ==
"contaminant")
136 it.first->second.isContaminant = reader.toBool();
139 else if(tag ==
"eval")
145 reader.leaveContainer();
154 reader.leaveContainer();
180 m_proteinMap.insert(std::pair<QString, PsmProtein>(it_prot.first, it_prot.second));
187 std::map<QString, PsmProtein> new_protein_map;
189 for(
const QString &accession : accession_list)
191 new_protein_map.insert(std::pair<QString, PsmProtein>(accession,
getByAccession(accession)));
virtual void setAccession(const QString &accession)
simple override of the raw QCborStreamReader This adds convenient functions to put CBOR data into C++...
bool readCborMap(QCborMap &cbor_map)
transfer the entire current CBOR map to a QCborMap object
bool decodeString(QString &the_str)
decode the current cbor value as a string the point to the next value the current value is decoded as...
overrides QCborStreamWriter base class to provide convenient functions
void writeCborMap(const QCborMap &cbor_map)
void reduce(const QStringList &accession_list)
reduce to protein accessions listed in input
std::size_t size() const
get protein map size
void merge(const PsmProteinMap &other_protein_map)
merge with other protein map
std::map< QString, PsmProtein > m_proteinMap
const pappso::cbor::psm::PsmProtein & getByAccession(const QString &accession) const
retrieve a PsmProtein with its accession
std::map< QString, PsmProtein > & getProteinMap()
std::pair< std::map< QString, PsmProtein >::iterator, bool > insert(const PsmProtein &psm_protein)
standard map insert of a PsmProtein (accession is the key)
void readMap(CborStreamReader &reader)
reads the protein map from a cbor input stream
void writeMap(CborStreamWriter &writer) const
writes the protein map in a cbor output stream this output a CborMap structure directly in the output...
std::shared_ptr< Protein > protein_sp