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

Fragment-index-based peptide database search algorithm (experimental). More...

#include <OpenMS/ANALYSIS/ID/ProSEAlgorithm.h>

Inheritance diagram for ProSEAlgorithm:
[legend]
Collaboration diagram for ProSEAlgorithm:
[legend]

Classes

struct  AnnotatedHit_
 Slimmer structure as storing all scored candidates in PeptideHit objects takes too much space. More...
 
struct  CalibrationResult_
 Result of a calibration pass. More...
 
struct  MultiFileSearchResult
 Multi-file search result bundle. More...
 
struct  SearchContext
 Prepared per-database state shared across multiple spectrum files. More...
 
struct  SearchResult
 Comprehensive search result including modification analysis. More...
 

Public Types

enum class  ExitCodes {
  EXECUTION_OK , INPUT_FILE_EMPTY , UNEXPECTED_RESULT , UNKNOWN_ERROR ,
  ILLEGAL_PARAMETERS
}
 Exit codes. More...
 
- Public Types inherited from ProgressLogger
enum  LogType { CMD , GUI , NONE }
 Possible log types. More...
 

Public Member Functions

 ProSEAlgorithm ()
 
ExitCodes search (const String &in_spectra, const String &in_db, std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids) const
 Search spectra in a spectrum file (mzML or Bruker .d) against a protein database using an FI-backed workflow.
 
SearchResult searchWithModificationAnalysis (const String &in_spectra, const String &in_db, const String &output_base_name="") const
 Search with comprehensive results including modification analysis tables.
 
ExitCodes search (PeakMap &spectra, const std::vector< FASTAFile::FASTAEntry > &fasta_db, std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids) const
 In-memory search: search spectra against a protein database without file I/O.
 
SearchContext prepareContext (const std::vector< FASTAFile::FASTAEntry > &fasta_db) const
 Build a SearchContext (decoy-augmented database + FragmentIndex) for reuse.
 
ExitCodes search (PeakMap &spectra, SearchContext &ctx, std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids) const
 In-memory search using a pre-built SearchContext.
 
SearchResult searchWithModificationAnalysis (PeakMap &spectra, const std::vector< FASTAFile::FASTAEntry > &fasta_db, const String &output_base_name="") const
 In-memory search with modification analysis: no file I/O required.
 
MultiFileSearchResult searchWithModificationAnalysis (const std::vector< String > &in_spectra_files, const std::vector< FASTAFile::FASTAEntry > &fasta_db, const std::vector< String > &output_base_names={}, const String &aggregate_base_name="") const
 Multi-file search with modification analysis (in-memory FASTA).
 
MultiFileSearchResult searchWithModificationAnalysis (const std::vector< String > &in_spectra_files, const String &in_db, const std::vector< String > &output_base_names={}, const String &aggregate_base_name="") const
 Multi-file search with modification analysis (FASTA file path).
 
- Public Member Functions inherited from DefaultParamHandler
 DefaultParamHandler (const String &name)
 Constructor with name that is displayed in error messages.
 
 DefaultParamHandler (const DefaultParamHandler &rhs)
 Copy constructor.
 
virtual ~DefaultParamHandler ()
 Destructor.
 
DefaultParamHandleroperator= (const DefaultParamHandler &rhs)
 Assignment operator.
 
virtual bool operator== (const DefaultParamHandler &rhs) const
 Equality operator.
 
void setParameters (const Param &param)
 Sets the parameters.
 
const ParamgetParameters () const
 Non-mutable access to the parameters.
 
const ParamgetDefaults () const
 Non-mutable access to the default parameters.
 
const StringgetName () const
 Non-mutable access to the name.
 
void setName (const String &name)
 Mutable access to the name.
 
const std::vector< String > & getSubsections () const
 Non-mutable access to the registered subsections.
 
- Public Member Functions inherited from ProgressLogger
 ProgressLogger ()
 Constructor.
 
virtual ~ProgressLogger ()
 Destructor.
 
 ProgressLogger (const ProgressLogger &other)
 Copy constructor.
 
ProgressLoggeroperator= (const ProgressLogger &other)
 Assignment Operator.
 
void setLogType (LogType type) const
 Sets the progress log that should be used. The default type is NONE!
 
LogType getLogType () const
 Returns the type of progress log being used.
 
void setLogger (ProgressLoggerImpl *logger)
 Sets the logger to be used for progress logging.
 
void startProgress (SignedSize begin, SignedSize end, const String &label) const
 Initializes the progress display.
 
void setProgress (SignedSize value) const
 Sets the current progress.
 
void endProgress (UInt64 bytes_processed=0) const
 
void nextProgress () const
 increment progress by 1 (according to range begin-end)
 

Protected Member Functions

void updateMembers_ () override
 This method is used to update extra member variables at the end of the setParameters() method.
 
void postProcessHits_ (const PeakMap &exp, std::vector< std::vector< ProSEAlgorithm::AnnotatedHit_ > > &annotated_hits, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, Size top_hits, const StringList &modifications_fixed, const StringList &modifications_variable, Int peptide_missed_cleavages, double precursor_mass_tolerance, double fragment_mass_tolerance, const String &precursor_mass_tolerance_unit_ppm, const String &fragment_mass_tolerance_unit_ppm, const Int precursor_min_charge, const Int precursor_max_charge, const String &enzyme, const String &database_name) const
 Filter and annotate search results.
 
double computeModMatchTolerance_ () const
 
CalibrationResult_ runCalibrationPass_ (PeakMap &spectra, FragmentIndex &fragment_index, const std::vector< FASTAFile::FASTAEntry > &db) const
 Run a fast calibration pass on a subset of spectra to estimate mass accuracy.
 
void logModificationAnalysisSummary_ (const SearchResult &result, const String &output_base_name) const
 Helper: log the modification analysis summary (shared by in-memory and file-based paths)
 
void logSearchDiagnostics_ (const PeakMap &spectra, const std::vector< ProteinIdentification > &protein_ids, const PeptideIdentificationList &peptide_ids) const
 Helper: log search summary statistics and per-run tolerance estimation.
 
bool isOpenSearchMode_ () const
 Helper function to determine if open search should be used based on tolerance.
 
- Protected Member Functions inherited from DefaultParamHandler
void defaultsToParam_ ()
 Updates the parameters after the defaults have been set in the constructor.
 

Static Protected Member Functions

static void preprocessSpectra_ (PeakMap &exp, double fragment_mass_tolerance, bool fragment_mass_tolerance_unit_ppm)
 filter, deisotope, decharge spectra
 

Protected Attributes

double precursor_mass_tolerance_lower_ {20.0}
 positive magnitude
 
double precursor_mass_tolerance_upper_ {20.0}
 positive magnitude
 
String precursor_mass_tolerance_unit_ {"ppm"}
 
Size precursor_min_charge_
 
Size precursor_max_charge_
 
IntList precursor_isotopes_
 
double fragment_mass_tolerance_
 
String fragment_mass_tolerance_unit_
 
StringList modifications_fixed_
 
StringList modifications_variable_
 
Size modifications_max_variable_mods_per_peptide_
 
String enzyme_
 
bool decoys_
 
String decoy_prefix_
 
double fdr_psm_ {0.0}
 
double fdr_protein_ {0.0}
 
StringList annotate_psm_
 
Size peptide_min_size_
 
Size peptide_max_size_
 
Size peptide_missed_cleavages_
 
EnzymaticDigestion::Specificity peptide_enzyme_specificity_ {EnzymaticDigestion::SPEC_FULL}
 
String peptide_motif_
 
Size report_top_hits_
 
bool calibration_enabled_ {false}
 
double calibration_subset_ratio_ {0.1}
 
Size calibration_min_psms_ {50}
 
CalibrationResult_ last_calibration_result_
 
double last_mod_match_tolerance_used_ {-1.0}
 
- Protected Attributes inherited from DefaultParamHandler
Param param_
 Container for current parameters.
 
Param defaults_
 Container for default parameters. This member should be filled in the constructor of derived classes!
 
std::vector< Stringsubsections_
 Container for registered subsections. This member should be filled in the constructor of derived classes!
 
String error_name_
 Name that is displayed in error messages during the parameter checking.
 
bool check_defaults_
 If this member is set to false no checking if parameters in done;.
 
bool warn_empty_defaults_
 If this member is set to false no warning is emitted when defaults are empty;.
 
- Protected Attributes inherited from ProgressLogger
LogType type_
 
time_t last_invoke_
 
ProgressLoggerImplcurrent_logger_
 

Additional Inherited Members

- Static Public Member Functions inherited from DefaultParamHandler
static void writeParametersToMetaValues (const Param &write_this, MetaInfoInterface &write_here, const String &key_prefix="")
 Writes all parameters to meta values.
 
- Static Protected Attributes inherited from ProgressLogger
static int recursion_depth_
 

Detailed Description

Fragment-index-based peptide database search algorithm (experimental).

Provides a self-contained search engine that matches MS/MS spectra against a protein database using an FI (Fragment Index). Typical usage:

Notes:

  • Used by the ProSE TOPP tool
  • Experimental; interfaces and behavior may change

Class Documentation

◆ OpenMS::ProSEAlgorithm::CalibrationResult_

struct OpenMS::ProSEAlgorithm::CalibrationResult_

Result of a calibration pass.

Holds the estimated precursor and fragment tolerances computed from confident PSMs during the calibration pass. When success is false, the tolerance values are undefined and should not be used.

Collaboration diagram for ProSEAlgorithm::CalibrationResult_:
[legend]
Class Members
double cal_lower {0} calibrated lower magnitude (valid iff !extreme_bias && success)
double cal_upper {0} calibrated upper magnitude (valid iff !extreme_bias && success)
bool extreme_bias {false} |shift| >= spread — writeback skipped (test observability)
double fragment_shift {0} reserved for future fragment m/z shift correction
double fragment_tolerance {0} estimated fragment tolerance (same unit as configured)
double precursor_shift {0} signed median of precursor errors (calibration bias)
double precursor_spread {0} median(|e - shift|) + 3 * MAD(|e - shift|)
bool success {false} true if enough PSMs were found for reliable estimation

◆ OpenMS::ProSEAlgorithm::MultiFileSearchResult

struct OpenMS::ProSEAlgorithm::MultiFileSearchResult

Multi-file search result bundle.

Returned by the file-list searchWithModificationAnalysis() overloads. Holds one SearchResult per input file (in per_file, in input order) and a single aggregate result whose peptide_ids are the concatenation of all per-file PSMs and whose modification_analysis is computed once on the pooled set of PSMs.

Special cases for aggregate:

  • When the input list contains exactly one file, aggregate is left almost-empty (only is_open_search and exit_code are set) — the single-file pooled aggregate would just duplicate per_file[0] and re-run modification analysis on the same PSMs. Callers should use per_file[0] for the result in this case.
  • When every per-file run failed, aggregate.exit_code is set to the first non-OK per-file exit code (so callers can inspect it without walking the per_file vector).

The aggregate's protein_ids template is taken from the first successful per-file result (search parameters are identical across files by construction), with the primary MS run path overwritten to list every input file.

Collaboration diagram for ProSEAlgorithm::MultiFileSearchResult:
[legend]
Class Members
SearchResult aggregate
vector< SearchResult > per_file

◆ OpenMS::ProSEAlgorithm::SearchContext

struct OpenMS::ProSEAlgorithm::SearchContext

Prepared per-database state shared across multiple spectrum files.

Holds the (decoy-augmented) protein database and the built FragmentIndex so that searching N spectrum files against the same FASTA pays the index build cost only once. Construct via prepareContext() and pass to the context-taking search() overload.

Collaboration diagram for ProSEAlgorithm::SearchContext:
[legend]
Class Members
vector< FASTAEntry > db
FragmentIndex fragment_index

◆ OpenMS::ProSEAlgorithm::SearchResult

struct OpenMS::ProSEAlgorithm::SearchResult

Comprehensive search result including modification analysis.

This structure contains all outputs from an open search including:

  • Standard protein and peptide identifications
  • Delta mass statistics table (histogram of mass shifts)
  • PTM statistics table (mapped modifications with residue analysis)
Collaboration diagram for ProSEAlgorithm::SearchResult:
[legend]
Class Members
ExitCodes exit_code = ExitCodes::EXECUTION_OK
bool is_open_search = false
OpenSearchAnalysisResult modification_analysis
PeptideIdentificationList peptide_ids
vector< ProteinIdentification > protein_ids

Member Enumeration Documentation

◆ ExitCodes

enum class ExitCodes
strong

Exit codes.

Enumerator
EXECUTION_OK 
INPUT_FILE_EMPTY 
UNEXPECTED_RESULT 
UNKNOWN_ERROR 
ILLEGAL_PARAMETERS 

Constructor & Destructor Documentation

◆ ProSEAlgorithm()

Member Function Documentation

◆ computeModMatchTolerance_()

double computeModMatchTolerance_ ( ) const
inlineprotected

Scalar tolerance passed to OpenSearchModificationAnalysis under asymmetric bounds. Uses the tighter of the two positive magnitudes — semantically correct for UniMod Δmass matching precision. OpenSearchModificationAnalysis internally clamps this at MAX_MOD_MAPPING_TOL_ = 0.02 Da; see spec §7 for rationale.

Zero on one side is a legal one-sided window (e.g., [0, 500] Da = "search only positive mass shifts"). In that case std::min() would collapse to 0, passing a useless zero tolerance into the mod analyzer — masked in ppm mode by the internal clamp, but genuinely broken in Da mode. Fall back to the non-zero side so the mod-matching precision reflects the configured tolerance.

◆ isOpenSearchMode_()

bool isOpenSearchMode_ ( ) const
inlineprotected

Helper function to determine if open search should be used based on tolerance.

◆ logModificationAnalysisSummary_()

void logModificationAnalysisSummary_ ( const SearchResult result,
const String output_base_name 
) const
protected

Helper: log the modification analysis summary (shared by in-memory and file-based paths)

◆ logSearchDiagnostics_()

void logSearchDiagnostics_ ( const PeakMap spectra,
const std::vector< ProteinIdentification > &  protein_ids,
const PeptideIdentificationList peptide_ids 
) const
protected

Helper: log search summary statistics and per-run tolerance estimation.

◆ postProcessHits_()

void postProcessHits_ ( const PeakMap exp,
std::vector< std::vector< ProSEAlgorithm::AnnotatedHit_ > > &  annotated_hits,
std::vector< ProteinIdentification > &  protein_ids,
PeptideIdentificationList peptide_ids,
Size  top_hits,
const StringList modifications_fixed,
const StringList modifications_variable,
Int  peptide_missed_cleavages,
double  precursor_mass_tolerance,
double  fragment_mass_tolerance,
const String precursor_mass_tolerance_unit_ppm,
const String fragment_mass_tolerance_unit_ppm,
const Int  precursor_min_charge,
const Int  precursor_max_charge,
const String enzyme,
const String database_name 
) const
protected

Filter and annotate search results.

Trims per-spectrum candidate hits to the top N and converts them into PeptideIdentification objects, adding requested PSM annotations and populating protein-level search metadata.

Parameters
[in]expInput MS experiment providing spectra/metadata for annotation.
[in,out]annotated_hitsPer-spectrum candidate hits (trimmed to top_hits in-place).
[out]protein_idsOutput container for protein-level identification and search metadata.
[out]peptide_idsOutput container for spectrum-level peptide identifications (PSMs).
[in]top_hitsNumber of top-scoring hits to retain per spectrum (report_top_hits_).
[in]modifications_fixedFixed modifications (by name) used during the search.
[in]modifications_variableVariable modifications (by name) used during the search.
[in]peptide_missed_cleavagesAllowed missed cleavages in digestion.
[in]precursor_mass_tolerancePrecursor mass tolerance value.
[in]fragment_mass_toleranceFragment mass tolerance value.
[in]precursor_mass_tolerance_unit_ppmPrecursor tolerance unit ("true"->ppm, "false"->Da).
[in]fragment_mass_tolerance_unit_ppmFragment tolerance unit ("true"->ppm, "false"->Da).
[in]precursor_min_chargeMinimum precursor charge considered.
[in]precursor_max_chargeMaximum precursor charge considered.
[in]enzymeDigestion enzyme name.
[out]database_nameDatabase file name used for the search (stored in protein_ids).

◆ prepareContext()

SearchContext prepareContext ( const std::vector< FASTAFile::FASTAEntry > &  fasta_db) const

Build a SearchContext (decoy-augmented database + FragmentIndex) for reuse.

Performs the database preparation and FragmentIndex construction steps so that subsequent calls to search(spectra, ctx, ...) can reuse the same index across many spectrum files. If decoy generation is enabled (parameter "decoys"), decoys are generated and shuffled into the returned context's db member exactly once here.

Parameters
[in]fasta_dbProtein sequence database as FASTA entries.
Returns
Prepared SearchContext containing the (possibly decoy-augmented) database and the built FragmentIndex.

Thread-safety: the returned context's FragmentIndex is read-only during subsequent search() calls; concurrent search() calls reading the same SearchContext are safe (per FragmentIndex query thread-safety contract). Do not call prepareContext() concurrently on the same algorithm instance.

◆ preprocessSpectra_()

static void preprocessSpectra_ ( PeakMap exp,
double  fragment_mass_tolerance,
bool  fragment_mass_tolerance_unit_ppm 
)
staticprotected

filter, deisotope, decharge spectra

◆ runCalibrationPass_()

CalibrationResult_ runCalibrationPass_ ( PeakMap spectra,
FragmentIndex fragment_index,
const std::vector< FASTAFile::FASTAEntry > &  db 
) const
protected

Run a fast calibration pass on a subset of spectra to estimate mass accuracy.

Scores a TIC-ranked subset of spectra against the fragment index, collects precursor and fragment mass errors from high-confidence PSMs, and returns calibrated tolerances using median + 3*MAD estimation.

Parameters
[in]spectraPreprocessed MS/MS spectra (subset is selected internally by TIC).
[in,out]fragment_indexPre-built fragment index for candidate lookup.
[in]dbProtein database (for sequence reconstruction of candidates).
Returns
CalibrationResult_ with estimated tolerances, or success=false if insufficient PSMs.

◆ search() [1/3]

ExitCodes search ( const String in_spectra,
const String in_db,
std::vector< ProteinIdentification > &  prot_ids,
PeptideIdentificationList pep_ids 
) const

Search spectra in a spectrum file (mzML or Bruker .d) against a protein database using an FI-backed workflow.

Populates protein and peptide identifications, including search meta data, PSM hits, and search engine annotations. Parameters are taken from this instance (DefaultParamHandler).

Parameters
[in]in_spectraInput path to the spectra file (mzML or Bruker .d) containing MS/MS spectra to search.
[in]in_dbInput path to the protein sequence database in FASTA format.
[out]prot_idsOutput container receiving search meta data and protein-level information.
[out]pep_idsOutput container receiving spectrum-level peptide identifications (PSMs).
Returns
ExitCodes indicating success (EXECUTION_OK) or the encountered error condition.

Side effects:

  • Updates ProgressLogger during processing.
  • Assigns identifiers and sets search engine name/version in prot_ids/pep_ids.

Errors:

  • May signal invalid parameters via ILLEGAL_PARAMETERS exit code.
  • May propagate OpenMS exceptions (e.g., I/O or parse errors) from underlying components.

◆ search() [2/3]

ExitCodes search ( PeakMap spectra,
const std::vector< FASTAFile::FASTAEntry > &  fasta_db,
std::vector< ProteinIdentification > &  prot_ids,
PeptideIdentificationList pep_ids 
) const

In-memory search: search spectra against a protein database without file I/O.

Same as the file-based search() but takes pre-loaded spectra and FASTA entries directly. Spectra are preprocessed in-place (filtered, deisotoped, normalized).

Parameters
[in,out]spectraMS/MS spectra to search (preprocessed in-place).
[in]fasta_dbProtein sequence database as FASTA entries.
[out]prot_idsOutput protein-level identifications.
[out]pep_idsOutput spectrum-level peptide identifications (PSMs).
Returns
ExitCodes indicating success or error.

Internally this is a thin wrapper around prepareContext() + the context-taking search() overload, so the FragmentIndex is rebuilt on every call. For repeated searches against the same database, prefer calling prepareContext() once and reusing the resulting SearchContext.

◆ search() [3/3]

ExitCodes search ( PeakMap spectra,
SearchContext ctx,
std::vector< ProteinIdentification > &  prot_ids,
PeptideIdentificationList pep_ids 
) const

In-memory search using a pre-built SearchContext.

Searches spectra against the database and FragmentIndex held in ctx. The fragment index build cost (decoy generation, peptide/fragment generation, sorting, bucketing) is paid by prepareContext() and is not repeated here, making this overload the right choice when searching many spectrum files against the same database.

Parameters
[in,out]spectraMS/MS spectra to search (preprocessed in-place).
[in,out]ctxPre-built SearchContext from prepareContext(). Taken by non-const reference because the underlying FragmentIndex query API is non-const, even though the index content is not modified during the search; the db member is also handed non-const to the downstream PeptideIndexing step (which requires a non-const reference).
[out]prot_idsOutput protein-level identifications.
[out]pep_idsOutput spectrum-level peptide identifications (PSMs).
Returns
ExitCodes indicating success or error.

◆ searchWithModificationAnalysis() [1/4]

MultiFileSearchResult searchWithModificationAnalysis ( const std::vector< String > &  in_spectra_files,
const std::vector< FASTAFile::FASTAEntry > &  fasta_db,
const std::vector< String > &  output_base_names = {},
const String aggregate_base_name = "" 
) const

Multi-file search with modification analysis (in-memory FASTA).

Builds a single SearchContext (decoy generation + FragmentIndex) from fasta_db and reuses it across all input spectrum files. Each input file produces its own SearchResult including a per-file modification analysis (TSV written if a non-empty per-file base name is provided). An additional aggregate SearchResult is computed by pooling all per-file peptide identifications and running modification analysis once on the pooled set.

Parameters
[in]in_spectra_filesSpectrum file paths (mzML or Bruker .d).
[in]fasta_dbProtein sequence database as FASTA entries.
[in]output_base_namesOptional per-file base names for modification-analysis TSV outputs. Must be empty or have the same length as in_spectra_files. Empty entries skip TSV writing for that file.
[in]aggregate_base_nameOptional base name for the aggregate modification-analysis TSV output. Empty disables aggregate TSV writing (the aggregate analysis is still computed).
Returns
MultiFileSearchResult bundling per-file results and aggregate.

Errors:

◆ searchWithModificationAnalysis() [2/4]

MultiFileSearchResult searchWithModificationAnalysis ( const std::vector< String > &  in_spectra_files,
const String in_db,
const std::vector< String > &  output_base_names = {},
const String aggregate_base_name = "" 
) const

Multi-file search with modification analysis (FASTA file path).

Convenience overload that loads the FASTA database from in_db and delegates to the in-memory multi-file overload. The database file path is recorded in each per-file ProteinIdentification's SearchParameters (and on the aggregate result).

See also
searchWithModificationAnalysis(const std::vector<String>&, const std::vector<FASTAFile::FASTAEntry>&, const std::vector<String>&, const String&) const

◆ searchWithModificationAnalysis() [3/4]

SearchResult searchWithModificationAnalysis ( const String in_spectra,
const String in_db,
const String output_base_name = "" 
) const

Search with comprehensive results including modification analysis tables.

This method performs a peptide database search and additionally returns structured modification analysis results for open search mode. This is the recommended method for modification discovery workflows.

The method automatically:

  • Detects open search mode based on precursor tolerance
  • Computes delta mass statistics
  • Maps delta masses to known modifications
  • Generates PTM statistics with residue localization
  • Writes TSV output files if output_base_name is provided
Parameters
in_spectraInput path to the spectra file (mzML or Bruker .d) containing MS/MS spectra
in_dbInput path to the protein sequence database in FASTA format
output_base_nameOptional base name for output files (TSV tables)
Returns
SearchResult containing identifications and modification analysis

Example usage:

Param p = algo.getParameters();
p.setValue("precursor:mass_tolerance_lower", 500.0); // Open search
p.setValue("precursor:mass_tolerance_upper", 500.0);
p.setValue("precursor:mass_tolerance_unit", "Da");
algo.setParameters(p);
auto result = algo.searchWithModificationAnalysis("spectra.mzML", "database.fasta", "output");
if (result.exit_code == ExitCodes::EXECUTION_OK && result.is_open_search)
{
// Access PTM statistics
for (const auto& ptm : result.modification_analysis.ptm_stats.entries)
{
std::cout << ptm.name << ": " << ptm.count << " PSMs" << std::endl;
}
// Access delta mass statistics
for (const auto& dm : result.modification_analysis.delta_mass_stats.entries)
{
std::cout << dm.delta_mass << " Da: " << dm.count << " PSMs" << std::endl;
}
}
const Param & getParameters() const
Non-mutable access to the parameters.
void setParameters(const Param &param)
Sets the parameters.
Management and storage of parameters / INI files.
Definition Param.h:46
void setValue(const std::string &key, const ParamValue &value, const std::string &description="", const std::vector< std::string > &tags=std::vector< std::string >())
Sets a value.
Fragment-index-based peptide database search algorithm (experimental).
Definition ProSEAlgorithm.h:46
SearchResult searchWithModificationAnalysis(const String &in_spectra, const String &in_db, const String &output_base_name="") const
Search with comprehensive results including modification analysis tables.

◆ searchWithModificationAnalysis() [4/4]

SearchResult searchWithModificationAnalysis ( PeakMap spectra,
const std::vector< FASTAFile::FASTAEntry > &  fasta_db,
const String output_base_name = "" 
) const

In-memory search with modification analysis: no file I/O required.

Same as the file-based searchWithModificationAnalysis() but takes pre-loaded data.

Parameters
[in,out]spectraMS/MS spectra (preprocessed in-place).
[in]fasta_dbProtein sequence database as FASTA entries.
[in]output_base_nameOptional base name for TSV output files.
Returns
SearchResult containing identifications and modification analysis.

◆ updateMembers_()

void updateMembers_ ( )
overrideprotectedvirtual

This method is used to update extra member variables at the end of the setParameters() method.

Also call it at the end of the derived classes' copy constructor and assignment operator.

The default implementation is empty.

Reimplemented from DefaultParamHandler.

Member Data Documentation

◆ annotate_psm_

StringList annotate_psm_
protected

◆ calibration_enabled_

bool calibration_enabled_ {false}
protected

◆ calibration_min_psms_

Size calibration_min_psms_ {50}
protected

◆ calibration_subset_ratio_

double calibration_subset_ratio_ {0.1}
protected

◆ decoy_prefix_

String decoy_prefix_
protected

◆ decoys_

bool decoys_
protected

◆ enzyme_

String enzyme_
protected

◆ fdr_protein_

double fdr_protein_ {0.0}
protected

◆ fdr_psm_

double fdr_psm_ {0.0}
protected

◆ fragment_mass_tolerance_

double fragment_mass_tolerance_
protected

◆ fragment_mass_tolerance_unit_

String fragment_mass_tolerance_unit_
protected

◆ last_calibration_result_

CalibrationResult_ last_calibration_result_
mutableprotected

Most recent calibration result (valid after any search that invoked runCalibrationPass_). Stored for test observability and diagnostics. Marked mutable because it is pure diagnostic/telemetry state that doesn't affect the logical const-ness of search().

◆ last_mod_match_tolerance_used_

double last_mod_match_tolerance_used_ {-1.0}
mutableprotected

Scalar tolerance passed to OpenSearchModificationAnalysis on the most recent search() call. Stored for test observability: because the calibration writeback restores the tolerance members on exit (to avoid per-file state leaks in the multi-file wrapper), tests that want to verify "the mod analyzer received the calibrated value, not the user-configured one" can't just read the members post-search — they need to see what was actually passed to the analyzer. Default -1.0 (sentinel: no search has run yet).

◆ modifications_fixed_

StringList modifications_fixed_
protected

◆ modifications_max_variable_mods_per_peptide_

Size modifications_max_variable_mods_per_peptide_
protected

◆ modifications_variable_

StringList modifications_variable_
protected

◆ peptide_enzyme_specificity_

EnzymaticDigestion::Specificity peptide_enzyme_specificity_ {EnzymaticDigestion::SPEC_FULL}
protected

◆ peptide_max_size_

Size peptide_max_size_
protected

◆ peptide_min_size_

Size peptide_min_size_
protected

◆ peptide_missed_cleavages_

Size peptide_missed_cleavages_
protected

◆ peptide_motif_

String peptide_motif_
protected

◆ precursor_isotopes_

IntList precursor_isotopes_
protected

◆ precursor_mass_tolerance_lower_

double precursor_mass_tolerance_lower_ {20.0}
mutableprotected

positive magnitude

Calibration overwrites these with the calibrated magnitudes for the duration of search(); pure runtime-state mutation that does not affect the logical const-ness of search(), matching the mutable pattern used by last_calibration_result_.

◆ precursor_mass_tolerance_unit_

String precursor_mass_tolerance_unit_ {"ppm"}
protected

◆ precursor_mass_tolerance_upper_

double precursor_mass_tolerance_upper_ {20.0}
mutableprotected

positive magnitude

◆ precursor_max_charge_

Size precursor_max_charge_
protected

◆ precursor_min_charge_

Size precursor_min_charge_
protected

◆ report_top_hits_

Size report_top_hits_
protected