pymc3/step_methods/hmc/base_hmc.py

Killed 31 out of 73 mutants

Survived

Survived mutation testing. These mutants show holes in your test suite.

Mutant 301

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -26,7 +26,7 @@
 from pymc3.backends.report import SamplerWarning, WarningType
 from pymc3.exceptions import SamplingError
 
-logger = logging.getLogger("pymc3")
+logger = logging.getLogger("XXpymc3XX")
 
 HMCStepData = namedtuple("HMCStepData", "end, accept_stat, divergence_info, stats")
 

Mutant 302

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -26,7 +26,7 @@
 from pymc3.backends.report import SamplerWarning, WarningType
 from pymc3.exceptions import SamplingError
 
-logger = logging.getLogger("pymc3")
+logger = None
 
 HMCStepData = namedtuple("HMCStepData", "end, accept_stat, divergence_info, stats")
 

Mutant 303

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -28,7 +28,7 @@
 
 logger = logging.getLogger("pymc3")
 
-HMCStepData = namedtuple("HMCStepData", "end, accept_stat, divergence_info, stats")
+HMCStepData = namedtuple("XXHMCStepDataXX", "end, accept_stat, divergence_info, stats")
 
 
 DivergenceInfo = namedtuple("DivergenceInfo", "message, exec_info, state")

Mutant 306

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -31,7 +31,7 @@
 HMCStepData = namedtuple("HMCStepData", "end, accept_stat, divergence_info, stats")
 
 
-DivergenceInfo = namedtuple("DivergenceInfo", "message, exec_info, state")
+DivergenceInfo = namedtuple("XXDivergenceInfoXX", "message, exec_info, state")
 
 class BaseHMC(arraystep.GradientSharedStep):
     """Superclass to implement Hamiltonian/hybrid monte carlo."""

Mutant 309

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -36,7 +36,7 @@
 class BaseHMC(arraystep.GradientSharedStep):
     """Superclass to implement Hamiltonian/hybrid monte carlo."""
 
-    default_blocked = True
+    default_blocked = False
 
     def __init__(
         self,

Mutant 310

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -36,7 +36,7 @@
 class BaseHMC(arraystep.GradientSharedStep):
     """Superclass to implement Hamiltonian/hybrid monte carlo."""
 
-    default_blocked = True
+    default_blocked = None
 
     def __init__(
         self,

Mutant 315

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -85,7 +85,7 @@
 
         super().__init__(vars, blocked=blocked, model=model, dtype=dtype, **theano_kwargs)
 
-        self.adapt_step_size = adapt_step_size
+        self.adapt_step_size = None
         self.Emax = Emax
         self.iter_count = 0
         size = self._logp_dlogp_func.size

Mutant 317

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -87,7 +87,7 @@
 
         self.adapt_step_size = adapt_step_size
         self.Emax = Emax
-        self.iter_count = 0
+        self.iter_count = 1
         size = self._logp_dlogp_func.size
 
         self.step_size = step_scale / (size ** 0.25)

Mutant 320

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -90,7 +90,7 @@
         self.iter_count = 0
         size = self._logp_dlogp_func.size
 
-        self.step_size = step_scale / (size ** 0.25)
+        self.step_size = step_scale * (size ** 0.25)
         self.step_adapt = step_sizes.DualAverageAdaptation(
             self.step_size, target_accept, gamma, k, t0
         )

Mutant 321

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -90,7 +90,7 @@
         self.iter_count = 0
         size = self._logp_dlogp_func.size
 
-        self.step_size = step_scale / (size ** 0.25)
+        self.step_size = step_scale / (size * 0.25)
         self.step_adapt = step_sizes.DualAverageAdaptation(
             self.step_size, target_accept, gamma, k, t0
         )

Mutant 322

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -90,7 +90,7 @@
         self.iter_count = 0
         size = self._logp_dlogp_func.size
 
-        self.step_size = step_scale / (size ** 0.25)
+        self.step_size = step_scale / (size ** 1.25)
         self.step_adapt = step_sizes.DualAverageAdaptation(
             self.step_size, target_accept, gamma, k, t0
         )

Mutant 324

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -94,7 +94,7 @@
         self.step_adapt = step_sizes.DualAverageAdaptation(
             self.step_size, target_accept, gamma, k, t0
         )
-        self.target_accept = target_accept
+        self.target_accept = None
         self.tune = True
 
         if scaling is None and potential is None:

Mutant 325

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -95,7 +95,7 @@
             self.step_size, target_accept, gamma, k, t0
         )
         self.target_accept = target_accept
-        self.tune = True
+        self.tune = False
 
         if scaling is None and potential is None:
             mean = floatX(np.zeros(size))

Mutant 326

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -95,7 +95,7 @@
             self.step_size, target_accept, gamma, k, t0
         )
         self.target_accept = target_accept
-        self.tune = True
+        self.tune = None
 
         if scaling is None and potential is None:
             mean = floatX(np.zeros(size))

Mutant 327

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -97,7 +97,7 @@
         self.target_accept = target_accept
         self.tune = True
 
-        if scaling is None and potential is None:
+        if scaling is not None and potential is None:
             mean = floatX(np.zeros(size))
             var = floatX(np.ones(size))
             potential = QuadPotentialDiagAdapt(size, mean, var, 10)

Mutant 328

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -97,7 +97,7 @@
         self.target_accept = target_accept
         self.tune = True
 
-        if scaling is None and potential is None:
+        if scaling is None and potential is not None:
             mean = floatX(np.zeros(size))
             var = floatX(np.ones(size))
             potential = QuadPotentialDiagAdapt(size, mean, var, 10)

Mutant 329

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -97,7 +97,7 @@
         self.target_accept = target_accept
         self.tune = True
 
-        if scaling is None and potential is None:
+        if scaling is None or potential is None:
             mean = floatX(np.zeros(size))
             var = floatX(np.ones(size))
             potential = QuadPotentialDiagAdapt(size, mean, var, 10)

Mutant 331

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -106,7 +106,7 @@
             point = Point(scaling, model=model)
             scaling = guess_scaling(point, model=model, vars=vars)
 
-        if scaling is not None and potential is not None:
+        if scaling is not None and potential is  None:
             raise ValueError("Can not specify both potential and scaling.")
 
         if potential is not None:

Mutant 335

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -118,7 +118,7 @@
             self.potential, self._logp_dlogp_func
         )
 
-        self._step_rand = step_rand
+        self._step_rand = None
         self._warnings = []
         self._samples_after_tune = 0
         self._num_divs_sample = 0

Mutant 337

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -120,7 +120,7 @@
 
         self._step_rand = step_rand
         self._warnings = []
-        self._samples_after_tune = 0
+        self._samples_after_tune = 1
         self._num_divs_sample = 0
 
     def _hamiltonian_step(self, start, p0, step_size):

Mutant 339

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -121,7 +121,7 @@
         self._step_rand = step_rand
         self._warnings = []
         self._samples_after_tune = 0
-        self._num_divs_sample = 0
+        self._num_divs_sample = 1
 
     def _hamiltonian_step(self, start, p0, step_size):
         """Compute one hamiltonian trajectory and return the next state.

Mutant 344

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -157,7 +157,7 @@
             self._warnings.append(warning)
             raise SamplingError("Bad initial energy")
 
-        adapt_step = self.tune and self.adapt_step_size
+        adapt_step = self.tune or self.adapt_step_size
         step_size = self.step_adapt.current(adapt_step)
         self.step_size = step_size
 

Mutant 345

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -157,7 +157,7 @@
             self._warnings.append(warning)
             raise SamplingError("Bad initial energy")
 
-        adapt_step = self.tune and self.adapt_step_size
+        adapt_step = None
         step_size = self.step_adapt.current(adapt_step)
         self.step_size = step_size
 

Mutant 347

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -159,7 +159,7 @@
 
         adapt_step = self.tune and self.adapt_step_size
         step_size = self.step_adapt.current(adapt_step)
-        self.step_size = step_size
+        self.step_size = None
 
         if self._step_rand is not None:
             step_size = self._step_rand(step_size)

Mutant 351

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -171,7 +171,7 @@
         if hmc_step.divergence_info:
             info = hmc_step.divergence_info
             if self.tune:
-                kind = WarningType.TUNING_DIVERGENCE
+                kind = None
                 point = None
             else:
                 kind = WarningType.DIVERGENCE

Mutant 352

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -172,7 +172,7 @@
             info = hmc_step.divergence_info
             if self.tune:
                 kind = WarningType.TUNING_DIVERGENCE
-                point = None
+                point = ""
             else:
                 kind = WarningType.DIVERGENCE
                 self._num_divs_sample += 1

Mutant 353

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -182,7 +182,7 @@
                 else:
                     point = None
             warning = SamplerWarning(
-                kind, info.message, "debug", self.iter_count, info.exec_info, point
+                kind, info.message, "XXdebugXX", self.iter_count, info.exec_info, point
             )
 
             self._warnings.append(warning)

Mutant 354

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -187,7 +187,7 @@
 
             self._warnings.append(warning)
 
-        self.iter_count += 1
+        self.iter_count = 1
         if not self.tune:
             self._samples_after_tune += 1
 

Mutant 355

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -187,7 +187,7 @@
 
             self._warnings.append(warning)
 
-        self.iter_count += 1
+        self.iter_count -= 1
         if not self.tune:
             self._samples_after_tune += 1
 

Mutant 356

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -187,7 +187,7 @@
 
             self._warnings.append(warning)
 
-        self.iter_count += 1
+        self.iter_count += 2
         if not self.tune:
             self._samples_after_tune += 1
 

Mutant 357

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -188,7 +188,7 @@
             self._warnings.append(warning)
 
         self.iter_count += 1
-        if not self.tune:
+        if  self.tune:
             self._samples_after_tune += 1
 
         stats = {"tune": self.tune, "diverging": bool(hmc_step.divergence_info)}

Mutant 358

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -189,7 +189,7 @@
 
         self.iter_count += 1
         if not self.tune:
-            self._samples_after_tune += 1
+            self._samples_after_tune = 1
 
         stats = {"tune": self.tune, "diverging": bool(hmc_step.divergence_info)}
 

Mutant 359

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -189,7 +189,7 @@
 
         self.iter_count += 1
         if not self.tune:
-            self._samples_after_tune += 1
+            self._samples_after_tune -= 1
 
         stats = {"tune": self.tune, "diverging": bool(hmc_step.divergence_info)}
 

Mutant 360

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -189,7 +189,7 @@
 
         self.iter_count += 1
         if not self.tune:
-            self._samples_after_tune += 1
+            self._samples_after_tune += 2
 
         stats = {"tune": self.tune, "diverging": bool(hmc_step.divergence_info)}
 

Mutant 365

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -207,7 +207,7 @@
         warnings = self._warnings[:]
 
         # Generate a global warning for divergences
-        message = ""
+        message = "XXXX"
         n_divs = self._num_divs_sample
         if n_divs and self._samples_after_tune == n_divs:
             message = (

Mutant 366

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -207,7 +207,7 @@
         warnings = self._warnings[:]
 
         # Generate a global warning for divergences
-        message = ""
+        message = None
         n_divs = self._num_divs_sample
         if n_divs and self._samples_after_tune == n_divs:
             message = (

Mutant 368

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -209,7 +209,7 @@
         # Generate a global warning for divergences
         message = ""
         n_divs = self._num_divs_sample
-        if n_divs and self._samples_after_tune == n_divs:
+        if n_divs and self._samples_after_tune != n_divs:
             message = (
                 "The chain contains only diverging samples. The model "
                 "is probably misspecified."

Mutant 369

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -209,7 +209,7 @@
         # Generate a global warning for divergences
         message = ""
         n_divs = self._num_divs_sample
-        if n_divs and self._samples_after_tune == n_divs:
+        if n_divs or self._samples_after_tune == n_divs:
             message = (
                 "The chain contains only diverging samples. The model "
                 "is probably misspecified."

Mutant 370

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -214,7 +214,7 @@
                 "The chain contains only diverging samples. The model "
                 "is probably misspecified."
             )
-        elif n_divs == 1:
+        elif n_divs != 1:
             message = (
                 "There was 1 divergence after tuning. Increase "
                 "`target_accept` or reparameterize."

Mutant 371

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -214,7 +214,7 @@
                 "The chain contains only diverging samples. The model "
                 "is probably misspecified."
             )
-        elif n_divs == 1:
+        elif n_divs == 2:
             message = (
                 "There was 1 divergence after tuning. Increase "
                 "`target_accept` or reparameterize."

Mutant 372

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -219,7 +219,7 @@
                 "There was 1 divergence after tuning. Increase "
                 "`target_accept` or reparameterize."
             )
-        elif n_divs > 1:
+        elif n_divs >= 1:
             message = (
                 "There were %s divergences after tuning. Increase "
                 "`target_accept` or reparameterize." % n_divs

Mutant 373

--- pymc3/step_methods/hmc/base_hmc.py
+++ pymc3/step_methods/hmc/base_hmc.py
@@ -219,7 +219,7 @@
                 "There was 1 divergence after tuning. Increase "
                 "`target_accept` or reparameterize."
             )
-        elif n_divs > 1:
+        elif n_divs > 2:
             message = (
                 "There were %s divergences after tuning. Increase "
                 "`target_accept` or reparameterize." % n_divs