Skip to content

Commit

Permalink
centralize statsComputer retrieval
Browse files Browse the repository at this point in the history
  • Loading branch information
WolfgangWaltenberger committed Jan 22, 2025
1 parent a0fedff commit 5b8f784
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
14 changes: 4 additions & 10 deletions smodels/matching/theoryPrediction.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,8 @@ def setStatsComputer(self):
to define a statistical computer (upper limit result or no expected
upper limits), set the computer to 'N/A'.
"""
from smodels.base import runtime
if runtime._experimental["spey"]:
from smodels.statistics.speyTools import SpeyComputer as StatsComputer
else:
from smodels.statistics.statsTools import StatsComputer
from smodels.statistics.statsTools import getStatsComputerModule
StatsComputer = getStatsComputerModule()

if self.dataType() == "upperLimit":
from smodels.base.runtime import experimentalFeature
Expand Down Expand Up @@ -527,11 +524,8 @@ def setStatsComputer(self):
if any(tp.statsComputer == 'N/A' for tp in self.theoryPredictions):
computer = 'N/A'
else:
from smodels.base import runtime
if runtime._experimental["spey"]:
from smodels.statistics.speyTools import SpeyComputer as StatsComputer
else:
from smodels.statistics.statsTools import StatsComputer
from smodels.statistics.statsTools import getStatsComputerModule
StatsComputer = getStatsComputerModule()
computer = StatsComputer.forAnalysesComb(self.theoryPredictions, self.deltas_rel)

self._statsComputer = computer
Expand Down
13 changes: 12 additions & 1 deletion smodels/statistics/statsTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"""

__all__ = [ "StatsComputer" ]
__all__ = [ "StatsComputer", "getStatsComputerModule" ]

from typing import Union, Text, Dict, List
from smodels.statistics.exceptions import SModelSStatisticsError as SModelSError
Expand All @@ -23,6 +23,17 @@
from smodels.experiment.datasetObj import DataSet,CombinedDataSet
from typing import Union, Text

def getStatsComputerModule():
""" very single convenience function to centralize
switching between our stats code and spey. """
from smodels.base import runtime
if runtime._experimental["spey"]:
from smodels.statistics.speyTools import SpeyComputer as StatsComputer
return StatsComputer
else:
from smodels.statistics.statsTools import StatsComputer
return StatsComputer

class StatsComputer:
__slots__ = [ "nsig", "dataObject", "dataType", "likelihoodComputer", "data",
"upperLimitComputer", "deltas_sys", "allowNegativeSignals" ]
Expand Down

0 comments on commit 5b8f784

Please sign in to comment.