PhosphoRS Algorithm Documentation
June 7, 2026 · View on GitHub
Overview
PhosphoRS (Phosphorylation site Ranking and Scoring) is a comprehensive algorithm for phosphorylation site localization that implements a Compomics-inspired scoring method. It provides detailed site-specific probability calculations and isomer analysis for confident phosphorylation site assignment.
Algorithm Description
Core Principles
- Isomer Generation: Generates all possible phosphorylation site combinations
- Theoretical Spectrum Matching: Compares experimental spectra with theoretical predictions
- Probability Scoring: Calculates site-specific probabilities using statistical models
- Confidence Assessment: Provides detailed confidence metrics for each potential site
Mathematical Foundation
PhosphoRS uses a sophisticated statistical approach:
-
Site-Determining Ions (SDI): Identifies ions that distinguish between different site assignments
-
Binomial Probability: Uses cumulative binomial probability for scoring:
P(X ≥ k) = Σ(i=k to n) C(n,i) * p^i * (1-p)^(n-i)Where:
n= number of theoretical ionsk= number of matched ionsp= probability of random match
-
Delta Selection: Optimizes spectrum reduction using site-determining ion differences
-
Normalization: Converts raw scores to site-specific probabilities
Key Features
- Fragment Tolerance: 0.05 Da (default)
- Site-Specific Probabilities: Individual confidence scores for each site
- Isomer Analysis: Detailed analysis of all possible site combinations
- Neutral Loss Support: Handles phospho-specific neutral losses
- Decoy Validation: Optional decoy site analysis
Implementation Details
Parameters
| Parameter | Default | Description |
|---|---|---|
fragment_tolerance | 0.05 | Fragment mass tolerance in Da |
fragment_method_ppm | False | Use ppm tolerance instead of Da |
add_precursor_peak | False | Include precursor peaks in analysis |
add_ion_types | ("b", "y") | Ion types to consider |
max_ion_charge | 2 | Maximum fragment charge state |
add_neutral_losses | True | Include neutral losses |
add_decoys | False | Include decoy sites for validation |
window_size | 100.0 | Window size for spectrum reduction |
max_depth | 8 | Maximum depth for intensity thresholds |
min_depth | 2 | Minimum depth for intensity thresholds |
Workflow
- Site Identification: Identify potential phosphorylation sites (S, T, Y)
- Isomer Generation: Create all possible site combinations
- Spectrum Filtering: Reduce spectrum using window-based peak selection
- SDI Analysis: Identify site-determining ions across isomers
- Delta Selection: Optimize spectrum reduction using SDI differences
- Theoretical Matching: Generate and match theoretical spectra
- Probability Calculation: Calculate site-specific probabilities
- Result Assignment: Assign final localization scores
Advanced Features
Site-Determining Ion Analysis
The algorithm identifies ions that are unique to specific site assignments:
def _site_determining_ions(profiles, precursor_charge, add_neutral_losses):
"""
Identify site-determining ions that distinguish between different
phosphorylation site assignments.
"""
# Implementation details...
Delta Selection
Optimizes spectrum reduction by selecting the best depth based on site-determining ion differences:
def _reduce_by_delta_selection(filtered_spec, profiles, fragment_tolerance, fragment_method_ppm):
"""
Reduce spectrum using delta-based depth selection with site-determining ions.
"""
# Implementation details...
Binomial Probability Calculation
Uses sophisticated statistical methods for probability calculation:
def binomial_tail_probability(k: int, n: int, p: float) -> float:
"""
Calculate cumulative binomial probability P(X >= k) for X~Bin(n,p).
"""
# Implementation details...
Usage Examples
Command Line Interface
# Basic usage
onsite phosphors -in spectra.mzML -id identifications.idparquet -out results.idparquet
# With custom parameters
onsite phosphors -in spectra.mzML -id identifications.idparquet -out results.idparquet \
--fragment-mass-tolerance 0.05 \
--fragment-mass-unit Da \
--threads 1 \
--add-decoys
Python API
from onsite import calculate_phospho_localization_compomics_style
# Calculate phosphorylation site probabilities
site_probs, isomer_details = calculate_phospho_localization_compomics_style(
peptide_hit,
spectrum,
fragment_tolerance=0.05,
fragment_method_ppm=False,
add_neutral_losses=True
)
Advanced Usage
# Custom configuration
site_probs, isomer_details = calculate_phospho_localization_compomics_style(
peptide_hit,
spectrum,
modification_name="Phospho",
potential_sites={"S", "T", "Y"},
fragment_tolerance=0.05,
fragment_method_ppm=False,
add_precursor_peak=False,
add_ion_types=("b", "y"),
max_ion_charge=2,
add_neutral_losses=True,
add_decoys=False
)
# Process results
if site_probs is not None:
print("Site Probabilities:")
for site_index, probability in site_probs.items():
print(f" Site {site_index}: {probability:.4f}")
print("\nIsomer Details:")
for seq_str, score in isomer_details:
print(f" {seq_str}: {score:.4f}")
Performance Characteristics
Computational Complexity
- Time Complexity: O(n²) where n is the number of potential sites
- Space Complexity: O(n) for storing isomers and spectra
- Optimization: Uses caching for probability calculations
Performance Metrics
- Processing Speed: ~50-200 PSMs/second (depending on complexity)
- Memory Usage: ~2-4 GB for typical datasets
- Accuracy: High accuracy for peptides with clear site-determining ions
Optimization Features
- Distribution Caching: Caches binomial probability calculations
- Window Reduction: Efficient spectrum filtering
- SDI Optimization: Focuses on site-determining ions
- Memory Management: Efficient memory usage for large datasets
Output Format
Site Probabilities
Returns a dictionary mapping site indices to probability scores:
{
0: 85.2, # Site 0 has 85.2% probability
3: 14.8, # Site 3 has 14.8% probability
7: 0.0 # Site 7 has 0% probability
}
Isomer Details
Returns a list of tuples with sequence and score:
[
("PEPTIDE(Phospho)SEQUENCE", 0.95),
("PEPTIDESEQUENCE(Phospho)", 0.05)
]
Limitations
- Computational Cost: Can be expensive for peptides with many potential sites
- Fragment Quality: Requires high-quality MS/MS spectra
- Site Ambiguity: May struggle with highly ambiguous localizations
- Memory Usage: Can be memory-intensive for large datasets
Troubleshooting
Common Issues
- Low Probabilities: Check fragment tolerance and spectrum quality
- Memory Errors: Reduce window size or max depth
- Poor Localization: Ensure sufficient site-determining ions
- Slow Processing: Consider reducing max depth or window size
Optimization Tips
- Fragment Tolerance: Use appropriate tolerance for your instrument
- Window Size: Adjust based on spectrum complexity
- Depth Settings: Balance between accuracy and performance
- Neutral Losses: Enable for phospho-specific analysis
References
Original Publication
Taus, T., Köcher, T., Pichler, P., Paschke, C., Schmidt, A., Henrich, C., & Mechtler, K. (2011). Universal and confident phosphorylation site localization using phosphoRS. Journal of Proteome Research, 10(12), 5354-5362.
DOI: 10.1021/pr200611n
Abstract: We present a new approach for confident phosphorylation site localization using phosphoRS, a method that combines the intensity information of site-determining fragment ions with a probability-based scoring scheme. The method is universally applicable to any type of mass spectrometric data and provides confident phosphorylation site localization with high accuracy.
Key Features of Original Implementation
- Universal Applicability: Works with any type of MS data
- Confident Localization: High accuracy for site assignment
- Probability-Based Scoring: Statistical framework for confidence assessment
- Site-Determining Ions: Focus on ions that distinguish between sites
Related Work
- AScore: Alternative probability-based approach
- LuciPHOr: FLR-based approach for site localization
- Mascot Delta Score: Similar concept in database search engines
Implementation Notes
Differences from Original
- Compomics Integration: Enhanced with Compomics-style scoring
- PyOpenMS Integration: Uses PyOpenMS for spectrum handling
- Advanced SDI Analysis: Improved site-determining ion identification
- Delta Selection: Optimized spectrum reduction
Future Improvements
- Machine Learning: Integration of ML-based scoring
- Real-time Processing: Streaming analysis capabilities
- Cross-linking: Extension to cross-linked peptides
- Quantification: Integration with quantification methods