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

Utility class for computing the isoelectric point (pI) and net charge of peptides. More...

#include <OpenMS/CHEMISTRY/IsoelectricPoint.h>

Classes

struct  PkaValues
 Internal struct holding pKa values for a given scale. More...
 

Static Public Member Functions

static double computeCharge (const AASequence &seq, double pH, ProteomicsPkaScale scale=ProteomicsPkaScale::LEHNINGER)
 Computes the net charge of an amino acid sequence at a given pH.
 
static double computePI (const AASequence &seq, ProteomicsPkaScale scale=ProteomicsPkaScale::LEHNINGER, double tolerance=1e-4)
 Computes the isoelectric point (pI) of an amino acid sequence via bisection.
 

Static Private Member Functions

static const PkaValues & getPkaValues_ (ProteomicsPkaScale scale)
 Returns the pKa values for the specified scale.
 
static double chargeAcidic_ (double pH, double pKa)
 Charge contribution from an acidic group (COOH, side chains of D, E, C, Y)
 
static double chargeBasic_ (double pH, double pKa)
 Charge contribution from a basic group (NH2, side chains of H, K, R)
 

Detailed Description

Utility class for computing the isoelectric point (pI) and net charge of peptides.

This class provides methods to compute:

  • The net charge of an amino acid sequence at a given pH using the Henderson-Hasselbalch equation
  • The isoelectric point (pI), i.e. the pH at which the net charge is zero, found via bisection

The calculation considers:

  • The N-terminal amino group (pKa), unless the peptide has an N-terminal modification
  • The C-terminal carboxyl group (pKa), unless the peptide has a C-terminal modification
  • Ionizable side chains of D, E, C, U, Y, H, K, R

The default pK values follow the Lehninger scale (Nelson & Cox, Lehninger Principles of Biochemistry). Other supported scales (EMBOSS, Sillero, Bjellqvist) can be selected via the ProteomicsPkaScale enum.

The Bjellqvist scale uses N-terminal-residue-dependent pKa values for the N-terminus (one value per N-terminal residue identity) and residue-dependent C-terminal pKas for D and E.

Side-chain PTM-specific pKa shifts are currently not modeled; modified residues are evaluated using the parent residue one-letter code. Pyrrolysine (O) is not supported and raises Exception::InvalidValue. If the zero crossing lies outside the searched pH interval [0, 14], computePI() returns the closer boundary and logs a warning.

References:

  • Nelson DL, Cox MM. Lehninger Principles of Biochemistry. 6th ed. (2013).
  • Sillero A, Ribeiro JM. Isoelectric points of proteins... Anal Biochem. 1989;179:319-325.
  • Bjellqvist B et al. Isoelectric focusing in immobilized pH gradients... Electrophoresis 1993;14:1023-1031.

Class Documentation

◆ OpenMS::IsoelectricPoint::PkaValues

struct OpenMS::IsoelectricPoint::PkaValues

Internal struct holding pKa values for a given scale.

Class Members
double C Cysteine side chain.
double cterm pKa of the C-terminal carboxyl group (default; overridden per residue when cterm_by_residue is non-empty)
unordered_map< char, double > cterm_by_residue Per-residue C-terminal pKa (Bjellqvist scale). Overrides cterm for the last residue when non-empty.
double D Aspartate side chain.
double E Glutamate side chain.
double H Histidine side chain.
double K Lysine side chain.
double nterm pKa of the N-terminal amino group (default; overridden per residue when nterm_by_residue is non-empty)
unordered_map< char, double > nterm_by_residue Per-residue N-terminal pKa (Bjellqvist scale). Overrides nterm for the first residue when non-empty.
double R

Arginine side chain

double Y Tyrosine side chain.

Member Function Documentation

◆ chargeAcidic_()

static double chargeAcidic_ ( double  pH,
double  pKa 
)
staticprivate

Charge contribution from an acidic group (COOH, side chains of D, E, C, Y)

◆ chargeBasic_()

static double chargeBasic_ ( double  pH,
double  pKa 
)
staticprivate

Charge contribution from a basic group (NH2, side chains of H, K, R)

◆ computeCharge()

static double computeCharge ( const AASequence &  seq,
double  pH,
ProteomicsPkaScale  scale = ProteomicsPkaScale::LEHNINGER 
)
static

Computes the net charge of an amino acid sequence at a given pH.

Parameters
seqThe amino acid sequence
pHThe pH value at which to compute the charge
scaleThe pKa scale to use (default: Lehninger)
Returns
The net charge of the peptide at the given pH
Exceptions
Exception::InvalidValueif the sequence is empty

◆ computePI()

static double computePI ( const AASequence &  seq,
ProteomicsPkaScale  scale = ProteomicsPkaScale::LEHNINGER,
double  tolerance = 1e-4 
)
static

Computes the isoelectric point (pI) of an amino acid sequence via bisection.

Parameters
seqThe amino acid sequence
scaleThe pKa scale to use (default: Lehninger)
toleranceThe convergence tolerance for the bisection (default: 1e-4)
Returns
The isoelectric point (pH where net charge ≈ 0)
Exceptions
Exception::InvalidValueif the sequence is empty

◆ getPkaValues_()

static const PkaValues & getPkaValues_ ( ProteomicsPkaScale  scale)
staticprivate

Returns the pKa values for the specified scale.