OpenMS
Loading...
Searching...
No Matches
OpenMS::UniPEFFEntries Namespace Reference

The annotations of the PEFF entries that UniPEFF writes for a UniProtKB entry: its canonical entry and the entries of its reconstructed isoforms. More...

Classes

struct  DisulfidePairItem
 
struct  EntryAnnotations
 
struct  IsoformEntry
 One reconstructed isoform, ready for emission as its own PEFF entry. More...
 
struct  IsoformScopedTracker
 
struct  ModResItem
 
struct  PreparedEntry
 
struct  ProcessedItem
 
struct  PtmEntry
 
struct  VariantComplexItem
 
struct  VariantSimpleItem
 

Typedefs

using PtmMap = std::unordered_map< std::string, PtmEntry >
 
using SkippedIsoformCounts = std::map< std::string, size_t >
 

Enumerations

enum class  ChainPosition { Anywhere , NTerminal , CTerminal }
 Where the ptmlist places a residue of a modification in the polypeptide (one part of its "PP" line) More...
 

Functions

std::vector< ChainPosition > parseChainPositions (const std::string &pp)
 
bool isResidueCode (char c)
 PEFF VariantSimple newAA must be an amino-acid letter (or '*').
 
std::string positionOrUnknown (int p)
 0 → "?", else decimal.
 
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)
 

Variables

constexpr uint32_t kNoId = std::numeric_limits<uint32_t>::max()
 Sentinel for "no annotation identifier assigned": the tuple is emitted without an id: prefix.
 

Detailed Description

The annotations of the PEFF entries that UniPEFF writes for a UniProtKB entry: its canonical entry and the entries of its reconstructed isoforms.

prepareEntry() classifies the features of an entry into annotations of the canonical entry or of the isoform they are annotated on; the tool writes the prepared entries.


Class Documentation

◆ OpenMS::UniPEFFEntries::DisulfidePairItem

struct OpenMS::UniPEFFEntries::DisulfidePairItem
Class Members
uint32_t annotation_id {kNoId} id of the \DisulfideBond tuple itself (kNoId = not emitted)
size_t idx_a {0} Indices into EntryAnnotations::mods after merge — resolved to annotation_ids during emission.
size_t idx_b {0}
bool valid {false} true when both endpoints come from a <begin>/<end> location; cleared by invalidateOutOfRangeDisulfides()

◆ OpenMS::UniPEFFEntries::EntryAnnotations

struct OpenMS::UniPEFFEntries::EntryAnnotations
Class Members
vector< VariantComplexItem > complex_variants
vector< DisulfidePairItem > disulfides indices reference halfcys before merge, mods after merge
vector< ModResItem > halfcys
vector< ModResItem > mods Final merged + sorted list (built by classifyAndMerge).
vector< ProcessedItem > processed
vector< ModResItem > regular_mods
vector< VariantSimpleItem > simple_variants

◆ OpenMS::UniPEFFEntries::IsoformEntry

struct OpenMS::UniPEFFEntries::IsoformEntry

One reconstructed isoform, ready for emission as its own PEFF entry.

Class Members
string accession isoform accession, e.g. "P02768-2"
EntryAnnotations annotations

features UniProt annotates on this isoform (<location sequence="...">), plus, unless -omit_canonical_features is set, the canonical ones mapped onto it

string name isoform <name>, e.g. "2" or "VEGF121"
string sequence

canonical sequence with the referenced splice variants applied

◆ OpenMS::UniPEFFEntries::ModResItem

struct OpenMS::UniPEFFEntries::ModResItem
Class Members
uint32_t annotation_id {kNoId} 0-based; all tuples in Option B, paired half-cystines in default mode
bool is_halfcys {false} for stable tie-break on merge
string name display name (UniProt PTM ID or fallback description)
int position {0} 0 = unknown ('?')
const PtmEntry * ptm {nullptr} nullptr = generic (no accession), description in name

◆ OpenMS::UniPEFFEntries::PreparedEntry

struct OpenMS::UniPEFFEntries::PreparedEntry
Class Members
EntryAnnotations annotations
size_t canonical_mapped {0} canonical mapping: canonical annotations written to an isoform entry (counted once per isoform)
size_t canonical_unmapped {0}

canonical mapping: canonical annotations not written to an isoform entry because they lie in or cross one of its splice variants (or one changes the cleavage site or chain terminus they depend on), have an unknown position, or contradict an annotation UniProt makes on that isoform itself (counted once per isoform)

size_t isoform_scoped_applied {0} isoform-scoped features written to their isoform's entry
size_t isoform_scoped_skipped {0}

isoform-scoped features left out (isoform not written) that would otherwise have become annotations

vector< IsoformEntry > isoforms reconstructed alternative products (emitted after the entry)
string prefix sp/tr or user override
UniProtEntry source

◆ OpenMS::UniPEFFEntries::ProcessedItem

struct OpenMS::UniPEFFEntries::ProcessedItem
Class Members
uint32_t annotation_id {kNoId} assigned in Option B only
int begin {0}
string cv PEFF CV accession, e.g. "PEFF:0001021".
int end {0}
string type_name human name, e.g. "signal peptide"

◆ OpenMS::UniPEFFEntries::PtmEntry

struct OpenMS::UniPEFFEntries::PtmEntry
Class Members
string accession UniProt internal accession, e.g. "PTM-0253".
vector< ChainPosition > chain_positions {}

ptmlist "PP" line (position of the modification in the polypeptide, see parseChainPositions()): one value per residue, in the order the ID names them, e.g. {NTerminal} for N-acetylalanine ("PP N-terminal.") or {Anywhere, CTerminal} for the cross-link S-(2-aminovinyl)-D-cysteine (Cys-Cys) of lantibiotics ("PP Anywhere-C-terminal."). Empty if the line is missing or not understood.

string id UniProt PTM name (the lookup key from feature/@description)
string psi_mod "MOD:xxxxx" or empty
string unimod

"N" (numeric Unimod id) or empty (NOT prefixed with "UNIMOD:")

◆ OpenMS::UniPEFFEntries::VariantComplexItem

struct OpenMS::UniPEFFEntries::VariantComplexItem
Class Members
uint32_t annotation_id {kNoId} assigned in Option B only
int begin {0}
int end {0}
string new_seq

◆ OpenMS::UniPEFFEntries::VariantSimpleItem

struct OpenMS::UniPEFFEntries::VariantSimpleItem
Class Members
uint32_t annotation_id {kNoId} assigned in Option B only
char new_aa {'?'}
int position {0}

Typedef Documentation

◆ PtmMap

using PtmMap = std::unordered_map<std::string, PtmEntry>

◆ SkippedIsoformCounts

using SkippedIsoformCounts = std::map<std::string, size_t>

Isoforms without a reconstructable sequence ("external": stored as its own UniProt entry; "not described": sequence unknown), counted per sequence type so the run reports them in one summary line instead of one line per isoform.

Enumeration Type Documentation

◆ ChainPosition

enum class ChainPosition
strong

Where the ptmlist places a residue of a modification in the polypeptide (one part of its "PP" line)

Enumerator
Anywhere 

"Anywhere" or "Protein core"

NTerminal 

"N-terminal": the residue is at the N-terminus of a chain, e.g. N-acetylalanine

CTerminal 

"C-terminal": the residue is at the C-terminus of a chain, e.g. an amidated residue

Function Documentation

◆ isResidueCode()

bool isResidueCode ( char  c)

PEFF VariantSimple newAA must be an amino-acid letter (or '*').

◆ parseChainPositions()

std::vector< ChainPosition > parseChainPositions ( const std::string &  pp)

Parse the value of a ptmlist "PP" line, e.g. "N-terminal." or "N-terminal-C-terminal." (a head-to-tail cyclopeptide), into one ChainPosition per residue. Returns an empty vector if a part is not "Anywhere", "Protein core", "N-terminal" or "C-terminal".

References Anywhere, CTerminal, and NTerminal.

◆ positionOrUnknown()

std::string positionOrUnknown ( int  p)

0 → "?", else decimal.

◆ prepareEntry()

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 
)

Prepare one entry: reconstruct the emittable isoform sequences ("external" / "not described" isoforms are counted in skipped_isoforms), classify each feature into the canonical entry or, if its <location sequence="..."> names an emitted isoform, into that isoform's entry. With map_canonical_features (the tool's default, unset by -omit_canonical_features), the canonical entry's annotations are also mapped onto each isoform through its splice variants: features in a deleted or replaced region, or regions overlapping one, are not mapped (processed regions may span one, but not a cleavage site at their ends: one whose flanking residues a splice variant changes; a region starting right after a removed initiator methionine then starts at the isoform's N-terminus), nor are modifications the ptmlist places at a chain terminus (PtmEntry::chain_positions) next to a splice variant, and a copy of a feature UniProt annotates on that isoform itself (for a glycosylation: any on that residue) is not added again. UniProt's own isoform annotation also wins over a mapped one it contradicts (same-type processed regions that overlap, disulfide bonds sharing a cysteine, a cross-link sharing a residue with a disulfide bond or cross-link if one of the two links two residues): the mapped one is not added and a warning is logged. Then, per entry, merge halfcys, drop disulfide pairs with out-of-range endpoints and stamp annotation IDs (global in Option B, selective disulfide labels otherwise).

References IsoformEntry::accession, UniProtEntry::accession, IsoformEntry::annotations, PreparedEntry::annotations, PreparedEntry::canonical_mapped, PreparedEntry::canonical_unmapped, UniProtEntry::dataset, UniProtFeature::description, UniProtEntry::features, first, PreparedEntry::isoform_scoped_applied, PreparedEntry::isoform_scoped_skipped, PreparedEntry::isoforms, UniProtEntry::isoforms, IsoformEntry::name, OPENMS_LOG_DEBUG, OPENMS_LOG_WARN, PreparedEntry::prefix, IsoformEntry::sequence, UniProtEntry::sequence, PreparedEntry::source, and UniProtFeature::type.

Variable Documentation

◆ kNoId

constexpr uint32_t kNoId = std::numeric_limits<uint32_t>::max()
constexpr

Sentinel for "no annotation identifier assigned": the tuple is emitted without an id: prefix.