Source code for lrdbenchmark.benchmarks.comprehensive_benchmark

from typing import Any, Dict, List, Optional
from .base import BaseBenchmark
from .classical_benchmark import ClassicalBenchmark
from .ml_benchmark import MLBenchmark
from .nn_benchmark import NNBenchmark


[docs] class MultiCategoryBenchmark(BaseBenchmark): """ Run classical, ML, and NN sweep benchmarks behind one entry point. This coordinates :class:`~lrdbenchmark.benchmarks.classical_benchmark.ClassicalBenchmark`, :class:`~lrdbenchmark.benchmarks.ml_benchmark.MLBenchmark`, and :class:`~lrdbenchmark.benchmarks.nn_benchmark.NNBenchmark`. For the full diagnostic engine (runtime profiles, stratified metrics, significance tests), use :class:`~lrdbenchmark.analysis.benchmark.ComprehensiveBenchmark`. """
[docs] def __init__(self, output_dir: Optional[str] = None, seed: Optional[int] = None): super().__init__("MultiCategoryBenchmark", output_dir, seed) self.classical = ClassicalBenchmark(output_dir, seed=seed) self.ml = MLBenchmark(output_dir, seed=seed) self.nn = NNBenchmark(output_dir, seed=seed)
[docs] def run( self, models: List[str] = None, lengths: List[int] = None, num_realizations: int = 10, params: Dict[str, Any] = None, run_classical: bool = True, run_ml: bool = True, run_nn: bool = True, ): """Run selected benchmark categories and aggregate row results.""" if models is None: models = ["fbm", "fgn"] if lengths is None: lengths = [512, 1024] if params is None: params = {"H": 0.7} all_results = [] if run_classical: res = self.classical.run(models, lengths, num_realizations, params) all_results.extend(res) if run_ml: res = self.ml.run(models, lengths, num_realizations, params) all_results.extend(res) if run_nn: res = self.nn.run(models, lengths, num_realizations, params) all_results.extend(res) self.results = all_results self.save_results() return self.results