From db20f82f181a2fc8cbaed8d97b96135794999be0 Mon Sep 17 00:00:00 2001 From: Jack Christopher Hutchinson Rolph <jack.rolph@desy.de> Date: Sun, 14 Nov 2021 20:56:44 +0100 Subject: [PATCH] Update PeakOTron.py --- PeakOTron.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/PeakOTron.py b/PeakOTron.py index 0731dcd..04cc17e 100644 --- a/PeakOTron.py +++ b/PeakOTron.py @@ -60,11 +60,13 @@ class BandWidthOptimiser: try: x_kde, y_kde = FFTKDE(kernel = self.kernel, bw=bw).fit(self.data).evaluate(self.n_kde_samples) - loss = np.log((self.N-1)*bw) - np.sum(np.log(y_kde)) + loss = np.log((self.N-1)*bw) - np.sum(np.log(y_kde)) - return loss except: - return np.nan + + loss = np.log((self.N-1)*bw) + self.eps_inv + + return loss def _PPF(self, data): """ Compute ECDF """ @@ -89,6 +91,7 @@ class BandWidthOptimiser: self.last_arg = None self.func_code = FakeFuncCode(self._Dummy, dock=True) self.eps = np.finfo(np.float64).eps * 10 + self.eps_inv = 1/self.eps def __call__(self, *arg): @@ -493,14 +496,9 @@ class PeakOTron: minuit_kde.migrad(ncall= self._n_call_minuit, iterate =self._n_iterations_minuit) - if(minuit_kde.valid): - bw = minuit_kde.values["bw"] - if(self._verbose): - print("KDE Bandwidth optimised to: {0}".format(bw)) - else: - if(self._verbose): - print("KDE Bandwidth optimisation failed. Defaulting to Improved Sheather Jones.") - bw = "ISJ" + bw = minuit_kde.values["bw"] + if(self._verbose): + print("KDE Bandwidth optimised to: {0}".format(bw)) except: if(self._verbose): print("KDE Bandwidth optimisation failed. Defaulting to Improved Sheather Jones.") -- GitLab