diff --git a/.readthedocs.yml b/.readthedocs.yml deleted file mode 100644 index 670362fa51..0000000000 --- a/.readthedocs.yml +++ /dev/null @@ -1,14 +0,0 @@ -# Build ePub (pdf is currently failing) -formats: - - epub - -# pip requirements file for building sphinx docs (e.g. nbsphinx) -requirements_file: docs/requirements-docs.txt - -# can also specify a conda env file if pip isn't enough, for example: -# conda: -# file: environment.yml - -# Use python 3 for building -python: - version: 3.5 diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 96c3523f13..dc72f1789f 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -21,6 +21,7 @@ - Deprecated `sd` in version 3.7 has been replaced by `sigma` now raises `DepreciationWarning` on using `sd` in continuous, mixed and timeseries distributions. (see #3837 and #3688). - In named models, `pm.Data` objects now get model-relative names (see [#3843](https://github.com/pymc-devs/pymc3/pull/3843)). - `pm.sample` now takes 1000 draws and 1000 tuning samples by default, instead of 500 previously (see [#3855](https://github.com/pymc-devs/pymc3/pull/3855)). +- Dropped some deprecated kwargs and functions (see [#3906](https://github.com/pymc-devs/pymc3/pull/3906)) - Dropped the outdated 'nuts' initialization method for `pm.sample` (see [#3863](https://github.com/pymc-devs/pymc3/pull/3863)). - Moved argument division out of `NegativeBinomial` `random` method. Fixes [#3864](https://github.com/pymc-devs/pymc3/issues/3864) in the style of [#3509](https://github.com/pymc-devs/pymc3/pull/3509). - The Dirichlet distribution now raises a ValueError when it's initialized with <= 0 values (see [#3853](https://github.com/pymc-devs/pymc3/pull/3853)). diff --git a/docs/source/notebooks/api_quickstart.ipynb b/docs/source/notebooks/api_quickstart.ipynb index 4f6a4d0ba3..90bce3e030 100644 --- a/docs/source/notebooks/api_quickstart.ipynb +++ b/docs/source/notebooks/api_quickstart.ipynb @@ -1284,7 +1284,7 @@ } ], "source": [ - "pm.gelman_rubin(trace)" + "pm.rhat(trace)" ] }, { diff --git a/docs/source/notebooks/bayes_param_survival_pymc3.ipynb b/docs/source/notebooks/bayes_param_survival_pymc3.ipynb index ee0d52c8af..0ecaaad6fc 100644 --- a/docs/source/notebooks/bayes_param_survival_pymc3.ipynb +++ b/docs/source/notebooks/bayes_param_survival_pymc3.ipynb @@ -594,7 +594,7 @@ } ], "source": [ - "max(np.max(gr_stats) for gr_stats in pm.gelman_rubin(weibull_trace).values())" + "max(np.max(gr_stats) for gr_stats in pm.rhat(weibull_trace).values())" ] }, { @@ -904,7 +904,7 @@ } ], "source": [ - "max(np.max(gr_stats) for gr_stats in pm.gelman_rubin(log_logistic_trace).values())" + "max(np.max(gr_stats) for gr_stats in pm.rhat(log_logistic_trace).values())" ] }, { @@ -1030,4 +1030,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file diff --git a/docs/source/notebooks/rugby_analytics.ipynb b/docs/source/notebooks/rugby_analytics.ipynb index 8a49912079..b1725a299e 100644 --- a/docs/source/notebooks/rugby_analytics.ipynb +++ b/docs/source/notebooks/rugby_analytics.ipynb @@ -801,7 +801,7 @@ "outputs": [], "source": [ "bfmi = np.max(pm.stats.bfmi(trace))\n", - "max_gr = max(np.max(gr_stats) for gr_stats in pm.stats.gelman_rubin(trace).values()).values" + "max_gr = max(np.max(gr_stats) for gr_stats in pm.stats.rhat(trace).values()).values" ] }, { @@ -1470,4 +1470,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/pymc3/examples/samplers_mvnormal.py b/pymc3/examples/samplers_mvnormal.py index 14b87d7958..2d5e919cbb 100644 --- a/pymc3/examples/samplers_mvnormal.py +++ b/pymc3/examples/samplers_mvnormal.py @@ -52,7 +52,7 @@ def run(steppers, p): runtimes[name] = time.time() - t_start print('{} samples across {} chains'.format(len(mt) * mt.nchains, mt.nchains)) traces[name] = mt - en = pm.diagnostics.effective_n(mt) + en = pm.ess(mt) print('effective: {}\r\n'.format(en)) if USE_XY: effn[name] = np.mean(en['x']) / len(mt) / mt.nchains diff --git a/pymc3/sampling.py b/pymc3/sampling.py index 7c32ba6bc2..1973d0cb0a 100644 --- a/pymc3/sampling.py +++ b/pymc3/sampling.py @@ -368,36 +368,9 @@ def sample( """ model = modelcontext(model) - nuts_kwargs = kwargs.pop("nuts_kwargs", None) - if nuts_kwargs is not None: - warnings.warn( - "The nuts_kwargs argument has been deprecated. Pass step " - "method arguments directly to sample instead", - DeprecationWarning, - ) - kwargs.update(nuts_kwargs) - step_kwargs = kwargs.pop("step_kwargs", None) - if step_kwargs is not None: - warnings.warn( - "The step_kwargs argument has been deprecated. Pass step " - "method arguments directly to sample instead", - DeprecationWarning, - ) - kwargs.update(step_kwargs) - if cores is None: cores = min(4, _cpu_count()) - if "njobs" in kwargs: - cores = kwargs["njobs"] - warnings.warn( - "The njobs argument has been deprecated. Use cores instead.", DeprecationWarning - ) - if "nchains" in kwargs: - chains = kwargs["nchains"] - warnings.warn( - "The nchains argument has been deprecated. Use chains instead.", DeprecationWarning - ) if chains is None: chains = max(2, cores) if isinstance(start, dict): @@ -412,11 +385,6 @@ def sample( random_seed = [np.random.randint(2 ** 30) for _ in range(chains)] if not isinstance(random_seed, Iterable): raise TypeError("Invalid value for `random_seed`. Must be tuple, list or int") - if "chain" in kwargs: - chain_idx = kwargs["chain"] - warnings.warn( - "The chain argument has been deprecated. Use chain_idx instead.", DeprecationWarning - ) if start is not None: for start_vals in start: diff --git a/pymc3/stats/__init__.py b/pymc3/stats/__init__.py index c0b4f6fca4..9b059b4dcb 100644 --- a/pymc3/stats/__init__.py +++ b/pymc3/stats/__init__.py @@ -53,19 +53,6 @@ def wrapped(*args, **kwargs): waic = map_args(az.waic) -def gelman_rubin(*args, **kwargs): - warnings.warn("gelman_rubin has been deprecated. In the future, use rhat instead.") - return rhat(*args, **kwargs) - -gelman_rubin.__doc__ = rhat.__doc__ - - -def effective_n(*args, **kwargs): - warnings.warn("effective_n has been deprecated. In the future, use ess instead.") - return ess(*args, **kwargs) - -effective_n.__doc__ = ess.__doc__ - __all__ = [ "bfmi", "compare", @@ -78,6 +65,4 @@ def effective_n(*args, **kwargs): "rhat", "summary", "waic", - "gelman_rubin", # deprecated, remove after 3.8 - "effective_n", # deprecated, remove after 3.8 ] diff --git a/pymc3/tests/sampler_fixtures.py b/pymc3/tests/sampler_fixtures.py index 9be0c60bbc..94b8741fa8 100644 --- a/pymc3/tests/sampler_fixtures.py +++ b/pymc3/tests/sampler_fixtures.py @@ -149,12 +149,12 @@ def setup_class(cls): def test_neff(self): if hasattr(self, 'min_n_eff'): - n_eff = pm.effective_n(self.trace[self.burn:]) + n_eff = pm.ess(self.trace[self.burn:]) for var in n_eff: npt.assert_array_less(self.min_n_eff, n_eff[var]) def test_Rhat(self): - rhat = pm.gelman_rubin(self.trace[self.burn:]) + rhat = pm.rhat(self.trace[self.burn:]) for var in rhat: npt.assert_allclose(rhat[var], 1, rtol=0.01) diff --git a/pymc3/tests/test_sampling.py b/pymc3/tests/test_sampling.py index 6ebc91f323..769b77c6c4 100644 --- a/pymc3/tests/test_sampling.py +++ b/pymc3/tests/test_sampling.py @@ -103,7 +103,7 @@ def test_sample_args(self): assert "'foo'" in str(excinfo.value) with pytest.raises(ValueError) as excinfo: - pm.sample(50, tune=0, init=None, step_kwargs={"foo": {}}) + pm.sample(50, tune=0, init=None, foo={}) assert "foo" in str(excinfo.value) with pytest.raises(ValueError) as excinfo: