OpenMS
Loading...
Searching...
No Matches
UniPEFFEntries.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Timo Sachsenberg $
7// --------------------------------------------------------------------------
8
9#pragma once
10
11#include "UniProtXMLFile.h"
12
13#include <cstdint>
14#include <limits>
15#include <map>
16#include <string>
17#include <unordered_map>
18#include <vector>
19
28{
29 // ──────────────────────────────────────────────────────────────────
30 // ptmlist.txt — UniProt PTM controlled vocabulary
31 // ──────────────────────────────────────────────────────────────────
32
34 enum class ChainPosition
35 {
36 Anywhere,
37 NTerminal,
39 };
40
41 struct PtmEntry
42 {
43 std::string id;
44 std::string accession;
45 std::string psi_mod;
46 std::string unimod;
51 std::vector<ChainPosition> chain_positions{};
52 };
53
54 using PtmMap = std::unordered_map<std::string, PtmEntry>;
55
59 std::vector<ChainPosition> parseChainPositions(const std::string& pp);
60
64 using SkippedIsoformCounts = std::map<std::string, size_t>;
65
66 // ──────────────────────────────────────────────────────────────────
67 // Intermediate annotation structures (built per UniProtEntry)
68 // ──────────────────────────────────────────────────────────────────
69
71 constexpr uint32_t kNoId = std::numeric_limits<uint32_t>::max();
72
74 {
75 int position{0};
76 bool is_halfcys{false};
77 const PtmEntry* ptm{nullptr};
78 std::string name;
79 uint32_t annotation_id{kNoId};
80 };
81
83 {
84 int position{0};
85 char new_aa{'?'};
86 uint32_t annotation_id{kNoId};
87 };
88
90 {
91 int begin{0};
92 int end{0};
93 std::string new_seq;
94 uint32_t annotation_id{kNoId};
95 };
96
98 {
99 int begin{0};
100 int end{0};
101 std::string cv;
102 std::string type_name;
104 };
105
107 {
109 size_t idx_a{0};
110 size_t idx_b{0};
111 bool valid{false};
113 };
114
116 {
117 std::vector<ModResItem> regular_mods;
118 std::vector<ModResItem> halfcys;
119 std::vector<DisulfidePairItem> disulfides;
120 std::vector<VariantSimpleItem> simple_variants;
121 std::vector<VariantComplexItem> complex_variants;
122 std::vector<ProcessedItem> processed;
123
125 std::vector<ModResItem> mods;
126 };
127
130 {
131 std::string accession;
132 std::string name;
133 std::string sequence;
137 };
138
155
162 {
163 size_t applied{0};
165 size_t skipped{0};
167
168 void add(size_t applied_in_entry, size_t skipped_in_entry)
169 {
170 applied += applied_in_entry;
171 if (applied_in_entry > 0) ++applied_entries;
172 skipped += skipped_in_entry;
173 if (skipped_in_entry > 0) ++skipped_entries;
174 }
175 };
176
178 bool isResidueCode(char c);
179
181 std::string positionOrUnknown(int p);
182
200 PreparedEntry prepareEntry(UniProtEntry&& e, const PtmMap& ptms, const std::string& prefix_override,
201 bool option_b, bool record_processing, bool record_aa_mods,
202 bool record_variants, bool record_isoforms, bool map_canonical_features,
203 SkippedIsoformCounts& skipped_isoforms);
204} // namespace OpenMS::UniPEFFEntries
The annotations of the PEFF entries that UniPEFF writes for a UniProtKB entry: its canonical entry an...
Definition UniPEFFEntries.h:28
std::vector< DisulfidePairItem > disulfides
indices reference halfcys before merge, mods after merge
Definition UniPEFFEntries.h:119
std::vector< ChainPosition > chain_positions
Definition UniPEFFEntries.h:51
size_t canonical_unmapped
Definition UniPEFFEntries.h:151
std::vector< ModResItem > mods
Final merged + sorted list (built by classifyAndMerge).
Definition UniPEFFEntries.h:125
std::string type_name
human name, e.g. "signal peptide"
Definition UniPEFFEntries.h:102
std::vector< IsoformEntry > isoforms
reconstructed alternative products (emitted after the entry)
Definition UniPEFFEntries.h:153
ChainPosition
Where the ptmlist places a residue of a modification in the polypeptide (one part of its "PP" line)
Definition UniPEFFEntries.h:35
@ CTerminal
"C-terminal": the residue is at the C-terminus of a chain, e.g. an amidated residue
@ Anywhere
"Anywhere" or "Protein core"
@ NTerminal
"N-terminal": the residue is at the N-terminus of a chain, e.g. N-acetylalanine
size_t isoform_scoped_skipped
Definition UniPEFFEntries.h:144
bool valid
true when both endpoints come from a <begin>/<end> location; cleared by invalidateOutOfRangeDisulfide...
Definition UniPEFFEntries.h:111
char new_aa
Definition UniPEFFEntries.h:85
std::vector< VariantSimpleItem > simple_variants
Definition UniPEFFEntries.h:120
std::unordered_map< std::string, PtmEntry > PtmMap
Definition UniPEFFEntries.h:54
bool is_halfcys
for stable tie-break on merge
Definition UniPEFFEntries.h:76
EntryAnnotations annotations
Definition UniPEFFEntries.h:136
int position
0 = unknown ('?')
Definition UniPEFFEntries.h:75
std::string cv
PEFF CV accession, e.g. "PEFF:0001021".
Definition UniPEFFEntries.h:101
std::vector< ChainPosition > parseChainPositions(const std::string &pp)
Definition UniPEFFEntries.cpp:34
std::vector< VariantComplexItem > complex_variants
Definition UniPEFFEntries.h:121
std::vector< ModResItem > regular_mods
Definition UniPEFFEntries.h:117
std::map< std::string, size_t > SkippedIsoformCounts
Definition UniPEFFEntries.h:64
std::vector< ProcessedItem > processed
Definition UniPEFFEntries.h:122
size_t isoform_scoped_applied
isoform-scoped features written to their isoform's entry
Definition UniPEFFEntries.h:143
std::string prefix
sp/tr or user override
Definition UniPEFFEntries.h:152
bool isResidueCode(char c)
PEFF VariantSimple newAA must be an amino-acid letter (or '*').
Definition UniPEFFEntries.cpp:23
uint32_t annotation_id
0-based; all tuples in Option B, paired half-cystines in default mode
Definition UniPEFFEntries.h:79
const PtmEntry * ptm
nullptr = generic (no accession), description in name
Definition UniPEFFEntries.h:77
size_t idx_a
Indices into EntryAnnotations::mods after merge — resolved to annotation_ids during emission.
Definition UniPEFFEntries.h:109
size_t idx_b
Definition UniPEFFEntries.h:110
int begin
Definition UniPEFFEntries.h:91
PreparedEntry prepareEntry(UniProtEntry &&e, const PtmMap &ptms, const std::string &prefix_override, bool option_b, bool record_processing, bool record_aa_mods, bool record_variants, bool record_isoforms, bool map_canonical_features, SkippedIsoformCounts &skipped_isoforms)
Definition UniPEFFEntries.cpp:757
std::string sequence
Definition UniPEFFEntries.h:133
std::string name
display name (UniProt PTM ID or fallback description)
Definition UniPEFFEntries.h:78
int end
Definition UniPEFFEntries.h:92
size_t canonical_mapped
canonical mapping: canonical annotations written to an isoform entry (counted once per isoform)
Definition UniPEFFEntries.h:146
std::string psi_mod
"MOD:xxxxx" or empty
Definition UniPEFFEntries.h:45
std::string unimod
Definition UniPEFFEntries.h:46
UniProtEntry source
Definition UniPEFFEntries.h:141
std::string positionOrUnknown(int p)
0 → "?", else decimal.
Definition UniPEFFEntries.cpp:29
std::string accession
UniProt internal accession, e.g. "PTM-0253".
Definition UniPEFFEntries.h:44
std::vector< ModResItem > halfcys
Definition UniPEFFEntries.h:118
constexpr uint32_t kNoId
Sentinel for "no annotation identifier assigned": the tuple is emitted without an id: prefix.
Definition UniPEFFEntries.h:71
std::string id
UniProt PTM name (the lookup key from feature/@description)
Definition UniPEFFEntries.h:43
std::string new_seq
Definition UniPEFFEntries.h:93
Definition UniPEFFEntries.h:107
Definition UniPEFFEntries.h:116
One reconstructed isoform, ready for emission as its own PEFF entry.
Definition UniPEFFEntries.h:130
Definition UniPEFFEntries.h:74
Definition UniPEFFEntries.h:140
Definition UniPEFFEntries.h:98
Definition UniPEFFEntries.h:42
Definition UniPEFFEntries.h:90
Definition UniPEFFEntries.h:83
A single <entry> from a UniProtKB XML file, in a parser-neutral form.
Definition UniProtXMLFile.h:69
Definition UniPEFFEntries.h:162
size_t skipped_entries
Definition UniPEFFEntries.h:166
size_t skipped
Definition UniPEFFEntries.h:165
size_t applied
Definition UniPEFFEntries.h:163
size_t applied_entries
Definition UniPEFFEntries.h:164
void add(size_t applied_in_entry, size_t skipped_in_entry)
Definition UniPEFFEntries.h:168