OpenMS
Loading...
Searching...
No Matches
ProFormaWriter Class Reference

Writer for ProForma v2 peptidoform notation. More...

#include <OpenMS/CHEMISTRY/ProFormaWriter.h>

Static Public Member Functions

static String toString (const Peptidoform &peptidoform, ProFormaWriteMode mode=ProFormaWriteMode::LOSSLESS)
 Convert a Peptidoform to a ProForma string.
 
static String toString (const PeptidoformIon &ion, ProFormaWriteMode mode=ProFormaWriteMode::LOSSLESS)
 Convert a PeptidoformIon to a ProForma string.
 

Static Private Member Functions

static void writeGlobalMods_ (std::ostream &os, const std::vector< GlobalModEntry > &mods, ProFormaWriteMode mode)
 Write global modification entries to stream.
 
static void writeIsotopeReplacement_ (std::ostream &os, const IsotopeReplacement &isotope)
 Write an isotope replacement to stream.
 
static void writeGlobalModification_ (std::ostream &os, const GlobalModification &mod, ProFormaWriteMode mode)
 Write a global modification to stream.
 
static void writeModification_ (std::ostream &os, const Modification &mod, ProFormaWriteMode mode)
 Write a modification (with alternatives) to stream.
 
static void writeModificationTag_ (std::ostream &os, const ModificationTag &tag, ProFormaWriteMode mode)
 Write a modification tag (variant) to stream.
 
static void writeCvAccession_ (std::ostream &os, const CvAccession &cv)
 Write a CV accession to stream.
 
static void writeNamedMod_ (std::ostream &os, const NamedMod &named)
 Write a named modification to stream.
 
static void writeMassDelta_ (std::ostream &os, const MassDelta &delta, ProFormaWriteMode mode)
 Write a mass delta to stream.
 
static void writeFormulaTag_ (std::ostream &os, const FormulaTag &formula)
 Write a formula tag to stream.
 
static void writeGlycanComposition_ (std::ostream &os, const GlycanComposition &glycan)
 Write a glycan composition to stream.
 
static void writeInfoTag_ (std::ostream &os, const InfoTag &info)
 Write an info tag to stream.
 
static void writePositionConstraint_ (std::ostream &os, const PositionConstraint &pc)
 Write a position constraint to stream.
 
static void writeLabel_ (std::ostream &os, const Label &label, ProFormaWriteMode mode)
 Write a label to stream.
 
static void writeUnlocalisedMods_ (std::ostream &os, const std::vector< UnlocalisedMod > &mods, ProFormaWriteMode mode)
 Write unlocalised modifications to stream.
 
static void writeLabileModifications_ (std::ostream &os, const std::vector< LabileModification > &mods, ProFormaWriteMode mode)
 Write labile modifications to stream.
 
static void writeNTermMods_ (std::ostream &os, const std::vector< Modification > &mods, ProFormaWriteMode mode)
 Write N-terminal modifications to stream.
 
static void writeCTermMods_ (std::ostream &os, const std::vector< Modification > &mods, ProFormaWriteMode mode)
 Write C-terminal modifications to stream.
 
static void writeSequence_ (std::ostream &os, const std::vector< SequenceSection > &seq, ProFormaWriteMode mode)
 Write the sequence with modifications to stream.
 
static void writeSequenceElement_ (std::ostream &os, const SequenceElement &elem, ProFormaWriteMode mode)
 Write a single sequence element to stream.
 
static void writeAmbiguousRegion_ (std::ostream &os, const AmbiguousRegion &region, ProFormaWriteMode mode)
 Write an ambiguous region to stream.
 
static void writeModifiedRange_ (std::ostream &os, const ModifiedRange &range, ProFormaWriteMode mode)
 Write a modified range to stream.
 
static void writeChargeState_ (std::ostream &os, const ChargeState &charge)
 Write a charge state to stream.
 
static const char * cvDatabaseToString_ (CvDatabase db)
 Get the string representation of a CV database prefix.
 
static const char * cvDatabaseToHint_ (CvDatabase db)
 Get the single-letter hint for a CV database.
 
static const char * massSourceToString_ (MassDelta::Source source)
 Get the source prefix string for mass delta.
 

Detailed Description

Writer for ProForma v2 peptidoform notation.

This class provides serialization of ProForma AST structures back to ProForma strings. It supports lossless roundtrip conversion when the AST was populated from parsing, preserving the original notation style (e.g., using "Oxidation" vs "UNIMOD:35" based on what was originally parsed).

Output Format Rules:

  • Global mods: <[MOD]@A,C> or <13C> for isotope replacement
  • N-terminal: [mod]-SEQUENCE
  • C-terminal: SEQUENCE-[mod]
  • Modifications: A[mod1][mod2]
  • Alternatives: [mod1|mod2]
  • Cross-links: [mod#XL1]
  • Glycan: [Glycan:HexNAc2Hex5]
  • CV accession: [UNIMOD:35]
  • Mass delta: [+15.9949]
  • Formula: [Formula:C2H3NO]
  • Charge: /2 or /[M+2H]2+
  • Unlocalised: [Phospho]? or [Phospho]^2?
  • Labile: {Glycan:Hex}
  • Ambiguous region: (?DQ)
  • Modified range: (EOSFORMS)[+19.0523]
  • Multiple chains: PEPTIDE//PEPTIDE

Usage example:

Peptidoform peptidoform;
// ... populate peptidoform ...
String proforma_str = ProFormaWriter::toString(peptidoform);
// ... populate ion with charge ...
static String toString(const Peptidoform &peptidoform, ProFormaWriteMode mode=ProFormaWriteMode::LOSSLESS)
Convert a Peptidoform to a ProForma string.
A more convenient string class.
Definition String.h:34
A single peptidoform (one peptide chain)
Definition ProFormaData.h:509
A peptidoform ion (one or more chains with optional charge)
Definition ProFormaData.h:532

Member Function Documentation

◆ cvDatabaseToHint_()

static const char * cvDatabaseToHint_ ( CvDatabase  db)
staticprivate

Get the single-letter hint for a CV database.

Parameters
dbThe CV database enum
Returns
The single-letter hint (e.g., "U", "M", "X")

◆ cvDatabaseToString_()

static const char * cvDatabaseToString_ ( CvDatabase  db)
staticprivate

Get the string representation of a CV database prefix.

Parameters
dbThe CV database enum
Returns
The prefix string (e.g., "UNIMOD", "MOD", "XLMOD")

◆ massSourceToString_()

static const char * massSourceToString_ ( MassDelta::Source  source)
staticprivate

Get the source prefix string for mass delta.

Parameters
sourceThe mass delta source enum
Returns
The source prefix (e.g., "Obs", "U", "M") or empty for NONE

◆ toString() [1/2]

static String toString ( const Peptidoform peptidoform,
ProFormaWriteMode  mode = ProFormaWriteMode::LOSSLESS 
)
static

Convert a Peptidoform to a ProForma string.

Serializes a single peptide chain including all modifications, but without charge state information.

Parameters
[in]peptidoformThe peptidoform to serialize
[in]modeWrite mode: LOSSLESS preserves original formatting, CANONICAL produces normalized output
Returns
The ProForma string representation

◆ toString() [2/2]

static String toString ( const PeptidoformIon ion,
ProFormaWriteMode  mode = ProFormaWriteMode::LOSSLESS 
)
static

Convert a PeptidoformIon to a ProForma string.

Serializes one or more peptide chains with optional charge state. Multiple chains are separated by "//".

Parameters
[in]ionThe peptidoform ion to serialize
[in]modeWrite mode: LOSSLESS preserves original formatting, CANONICAL produces normalized output
Returns
The ProForma string representation including charge if present

◆ writeAmbiguousRegion_()

static void writeAmbiguousRegion_ ( std::ostream &  os,
const AmbiguousRegion region,
ProFormaWriteMode  mode 
)
staticprivate

Write an ambiguous region to stream.

Formats as (?AA...), e.g., (?DQ)

Parameters
osOutput stream
regionThe ambiguous region
modeWrite mode

◆ writeChargeState_()

static void writeChargeState_ ( std::ostream &  os,
const ChargeState charge 
)
staticprivate

Write a charge state to stream.

Formats as /CHARGE or /[ADDUCTS]CHARGE+, e.g., /2, /[M+2H]2+

Parameters
osOutput stream
chargeThe charge state

◆ writeCTermMods_()

static void writeCTermMods_ ( std::ostream &  os,
const std::vector< Modification > &  mods,
ProFormaWriteMode  mode 
)
staticprivate

Write C-terminal modifications to stream.

Formats as -[MOD], e.g., -[Amidated]

Parameters
osOutput stream
modsVector of C-terminal modifications
modeWrite mode

◆ writeCvAccession_()

static void writeCvAccession_ ( std::ostream &  os,
const CvAccession cv 
)
staticprivate

Write a CV accession to stream.

Formats as DATABASE:ACCESSION, e.g., UNIMOD:35, MOD:00046

Parameters
osOutput stream
cvThe CV accession

◆ writeFormulaTag_()

static void writeFormulaTag_ ( std::ostream &  os,
const FormulaTag formula 
)
staticprivate

Write a formula tag to stream.

Formats as Formula:FORMULA or Formula:FORMULA:z+CHARGE

Parameters
osOutput stream
formulaThe formula tag

◆ writeGlobalModification_()

static void writeGlobalModification_ ( std::ostream &  os,
const GlobalModification mod,
ProFormaWriteMode  mode 
)
staticprivate

Write a global modification to stream.

Formats as <[MOD]@TARGETS>, e.g., <[TMT6plex]@K,N-term>

Parameters
osOutput stream
modThe global modification
modeWrite mode

◆ writeGlobalMods_()

static void writeGlobalMods_ ( std::ostream &  os,
const std::vector< GlobalModEntry > &  mods,
ProFormaWriteMode  mode 
)
staticprivate

Write global modification entries to stream.

Handles both IsotopeReplacement (<13C>) and GlobalModification (<[TMT6plex]@K>).

Parameters
osOutput stream
modsVector of global modification entries
modeWrite mode

◆ writeGlycanComposition_()

static void writeGlycanComposition_ ( std::ostream &  os,
const GlycanComposition glycan 
)
staticprivate

Write a glycan composition to stream.

Formats as Glycan:COMPOSITION, e.g., Glycan:HexNAc2Hex5

Parameters
osOutput stream
glycanThe glycan composition

◆ writeInfoTag_()

static void writeInfoTag_ ( std::ostream &  os,
const InfoTag info 
)
staticprivate

Write an info tag to stream.

Formats as INFO:TEXT

Parameters
osOutput stream
infoThe info tag

◆ writeIsotopeReplacement_()

static void writeIsotopeReplacement_ ( std::ostream &  os,
const IsotopeReplacement isotope 
)
staticprivate

Write an isotope replacement to stream.

Formats as <ISOTOPE>, e.g., <13C>, <15N>, <D>

Parameters
osOutput stream
isotopeThe isotope replacement

◆ writeLabel_()

static void writeLabel_ ( std::ostream &  os,
const Label label,
ProFormaWriteMode  mode 
)
staticprivate

Write a label to stream.

Formats as #ID or #ID(SCORE), e.g., #XL1, #g1(0.90), #BRANCH

Parameters
osOutput stream
labelThe label
modeWrite mode

◆ writeLabileModifications_()

static void writeLabileModifications_ ( std::ostream &  os,
const std::vector< LabileModification > &  mods,
ProFormaWriteMode  mode 
)
staticprivate

Write labile modifications to stream.

Formats as {MOD}, e.g., {Glycan:Hex}

Parameters
osOutput stream
modsVector of labile modifications
modeWrite mode

◆ writeMassDelta_()

static void writeMassDelta_ ( std::ostream &  os,
const MassDelta delta,
ProFormaWriteMode  mode 
)
staticprivate

Write a mass delta to stream.

In LOSSLESS mode, uses original_text if available. In CANONICAL mode, formats with 4 decimal places.

Parameters
osOutput stream
deltaThe mass delta
modeWrite mode

◆ writeModification_()

static void writeModification_ ( std::ostream &  os,
const Modification mod,
ProFormaWriteMode  mode 
)
staticprivate

Write a modification (with alternatives) to stream.

Handles single modifications and alternatives separated by |. Includes labels like #XL1 or #g1(0.90) if present.

Parameters
osOutput stream
modThe modification with its alternatives
modeWrite mode

◆ writeModificationTag_()

static void writeModificationTag_ ( std::ostream &  os,
const ModificationTag tag,
ProFormaWriteMode  mode 
)
staticprivate

Write a modification tag (variant) to stream.

Dispatches to the appropriate writer based on tag type: CvAccession, NamedMod, MassDelta, FormulaTag, GlycanComposition, InfoTag

Parameters
osOutput stream
tagThe modification tag variant
modeWrite mode

◆ writeModifiedRange_()

static void writeModifiedRange_ ( std::ostream &  os,
const ModifiedRange range,
ProFormaWriteMode  mode 
)
staticprivate

Write a modified range to stream.

Formats as (SEQ)[MOD], e.g., (EOSFORMS)[+19.0523]

Parameters
osOutput stream
rangeThe modified range
modeWrite mode

◆ writeNamedMod_()

static void writeNamedMod_ ( std::ostream &  os,
const NamedMod named 
)
staticprivate

Write a named modification to stream.

Formats as NAME or PREFIX:NAME, e.g., Oxidation, U:Oxidation

Parameters
osOutput stream
namedThe named modification

◆ writeNTermMods_()

static void writeNTermMods_ ( std::ostream &  os,
const std::vector< Modification > &  mods,
ProFormaWriteMode  mode 
)
staticprivate

Write N-terminal modifications to stream.

Formats as [MOD]-, e.g., [Acetyl]-

Parameters
osOutput stream
modsVector of N-terminal modifications
modeWrite mode

◆ writePositionConstraint_()

static void writePositionConstraint_ ( std::ostream &  os,
const PositionConstraint pc 
)
staticprivate

Write a position constraint to stream.

Formats as Position:RESIDUES, e.g., Position:MKC

Parameters
osOutput stream
pcThe position constraint

◆ writeSequence_()

static void writeSequence_ ( std::ostream &  os,
const std::vector< SequenceSection > &  seq,
ProFormaWriteMode  mode 
)
staticprivate

Write the sequence with modifications to stream.

Handles SequenceElement, AmbiguousRegion, and ModifiedRange.

Parameters
osOutput stream
seqVector of sequence sections
modeWrite mode

◆ writeSequenceElement_()

static void writeSequenceElement_ ( std::ostream &  os,
const SequenceElement elem,
ProFormaWriteMode  mode 
)
staticprivate

Write a single sequence element to stream.

Formats as AA[MOD][MOD]..., e.g., M[Oxidation], K[TMT6plex]

Parameters
osOutput stream
elemThe sequence element
modeWrite mode

◆ writeUnlocalisedMods_()

static void writeUnlocalisedMods_ ( std::ostream &  os,
const std::vector< UnlocalisedMod > &  mods,
ProFormaWriteMode  mode 
)
staticprivate

Write unlocalised modifications to stream.

Formats as [MOD]? or [MOD]^N?, e.g., [Phospho]?, [Phospho]^2?

Parameters
osOutput stream
modsVector of unlocalised modifications
modeWrite mode