From 424aa324f2772d36f2434d786c75d8750d91a68b Mon Sep 17 00:00:00 2001 From: Fergus Cooper Date: Tue, 26 Feb 2019 15:59:15 +0000 Subject: [PATCH 1/4] #751 Add new section 'Statistical modelling' to examples README --- examples/README.md | 7 ++++--- .../{sampling-log-priors.ipynb => stats-log-priors.ipynb} | 0 ...ng-error.ipynb => stats-student-t-sampling-error.ipynb} | 0 3 files changed, 4 insertions(+), 3 deletions(-) rename examples/{sampling-log-priors.ipynb => stats-log-priors.ipynb} (100%) rename examples/{sampling-student-t-sampling-error.ipynb => stats-student-t-sampling-error.ipynb} (100%) diff --git a/examples/README.md b/examples/README.md index 2eb2a3af0..e6ad3a5e8 100644 --- a/examples/README.md +++ b/examples/README.md @@ -44,11 +44,12 @@ relevant code. - [Autocorrelation](./plot-mcmc-autocorrelation.ipynb) - [Pairwise scatterplots](./plot-mcmc-pairwise-scatterplots.ipynb) - [Pairwise scatterplots with KDE](./plot-mcmc-pairwise-kde-plots.ipynb) +- [Effective sample size](./sampling-effective-sample-size.ipynb) -### Further sampling +## Statistical modelling -- [Effective sample size](./sampling-effective-sample-size.ipynb) -- [Student-t noise model](./sampling-student-t-sampling-error.ipynb) +- [Log priors](./stats-log-priors.ipynb) +- [Student-t noise model](./stats-student-t-sampling-error.ipynb) ## Toy problems diff --git a/examples/sampling-log-priors.ipynb b/examples/stats-log-priors.ipynb similarity index 100% rename from examples/sampling-log-priors.ipynb rename to examples/stats-log-priors.ipynb diff --git a/examples/sampling-student-t-sampling-error.ipynb b/examples/stats-student-t-sampling-error.ipynb similarity index 100% rename from examples/sampling-student-t-sampling-error.ipynb rename to examples/stats-student-t-sampling-error.ipynb From 711c5eedfcdda4b917ca5313667a7c21822b14ed Mon Sep 17 00:00:00 2001 From: Fergus Cooper Date: Tue, 26 Feb 2019 16:52:48 +0000 Subject: [PATCH 2/4] #751 Split up doctests and add new one for examples readme --- run-tests.py | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/run-tests.py b/run-tests.py index fc62c3c06..891025445 100755 --- a/run-tests.py +++ b/run-tests.py @@ -78,8 +78,19 @@ def run_flake8(): def run_doctests(): """ - Checks if the documentation can be built, runs any doctests (currently not - used). + Runs a number of tests related to documentation + """ + + # Check documentation can be built with sphinx + doctest_sphinx() + + # Check all example notebooks are in the index + doctest_examples_readme() + + +def doctest_sphinx(): + """ + Checks that sphinx-build can be invoked without producing errors """ print('Checking if docs can be built.') p = subprocess.Popen([ @@ -105,6 +116,38 @@ def run_doctests(): sys.exit(ret) +def doctest_examples_readme(): + """ + Checks that every ipynb in the examples directory is included in the index + `examples/README.md`. + """ + print('\nChecking that example notebooks are indexed.') + + # Index file is in ./examples/README.md + index_file = os.path.join('examples', 'README.md') + assert(os.path.isfile(index_file)) + + with open(index_file, 'r') as f: + index_contents = f.read() + + # Get a list of all notebooks in the examples directory + notebooks = [x for x in os.listdir('examples') if x.endswith('.ipynb')] + assert(len(notebooks) > 10) + + # Find which are not indexed + not_indexed = [nb for nb in notebooks if nb not in index_contents] + + # Report any failures + if len(not_indexed) > 0: + print('The following notebooks are not indexed in %s:' % index_file) + for nb in not_indexed: + print(nb) + print('FAILED') + sys.exit(1) + else: + print('All example notebooks are indexed.') + + def run_notebook_tests(skip_slow_books=False, executable='python'): """ Runs Jupyter notebook tests. Exits if they fail. From 8f3a0677e84e6b56ef3a0efdbeb640aa031b925a Mon Sep 17 00:00:00 2001 From: Fergus Cooper Date: Tue, 26 Feb 2019 17:56:08 +0000 Subject: [PATCH 3/4] Add better code hub badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 43bbb8227..b1843b2eb 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![functional](https://github.com/pints-team/functional-testing-results/blob/master/badge.svg)](https://github.com/pints-team/functional-testing-results) [![binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/pints-team/pints/master?filepath=examples) [![readthedocs](https://readthedocs.org/projects/pints/badge/?version=latest)](http://pints.readthedocs.io/en/latest/?badge=latest) +[![BCH compliance](https://bettercodehub.com/edge/badge/pints-team/pints?branch=master)](https://bettercodehub.com/results/pints-team/pints) # What is Pints? From 3be3529feceb81dcb49dfbdce06b438bbb509810 Mon Sep 17 00:00:00 2001 From: Fergus Cooper Date: Tue, 26 Feb 2019 18:11:05 +0000 Subject: [PATCH 4/4] #751 Update README.md to include all example notebooks --- examples/README.md | 15 ++++++++++++++- ...ts-autoregressive-moving-average-errors.ipynb} | 0 ...or.ipynb => stats-cauchy-sampling-error.ipynb} | 0 run-tests.py | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) rename examples/{sampling-autoregressive-moving-average-errors.ipynb => stats-autoregressive-moving-average-errors.ipynb} (100%) rename examples/{sampling-cauchy-sampling-error.ipynb => stats-cauchy-sampling-error.ipynb} (100%) diff --git a/examples/README.md b/examples/README.md index e6ad3a5e8..f6af75ec4 100644 --- a/examples/README.md +++ b/examples/README.md @@ -26,6 +26,7 @@ relevant code. - [Transformed parameter space](./optimisation-transformed-parameters.ipynb) - [Ask-and-tell interface](./optimisation-ask-and-tell.ipynb) - [Convenience methods fmin() and curve\_fit()](./optimisation-convenience.ipynb) +- [Multiple objectives](./optimisation-multi-objective.ipynb) ## Sampling @@ -34,6 +35,12 @@ relevant code. - [Adaptive Covariance MCMC](./sampling-adaptive-covariance-mcmc.ipynb) - [Population MCMC](./sampling-population-mcmc.ipynb) - [Differential Evolution MCMC](./sampling-differential-evolution-mcmc.ipynb) +- [Emcee Hammer](./sampling-emcee-hammer.ipynb) +- [DREAM MCMC](./sampling-dream-mcmc.ipynb) + +### MCMC with gradients +- [Hamiltonian MCMC](./sampling-hamiltonian-mcmc.ipynb) +- [MALA MCMC](./sampling-mala-mcmc.ipynb) ### Nested sampling - [Ellipsoidal nested rejection sampling](./sampling-ellipsoidal-nested-rejection-sampling.ipynb) @@ -50,6 +57,8 @@ relevant code. - [Log priors](./stats-log-priors.ipynb) - [Student-t noise model](./stats-student-t-sampling-error.ipynb) +- [Autoregressive moving average errors](./stats-autoregressive-moving-average-errors.ipynb) +- [Cauchy sampling error](./stats-cauchy-sampling-error.ipynb) ## Toy problems @@ -68,8 +77,12 @@ relevant code. ### Distributions -- [Multimodal normal distribution](./toy-distribution-multimodal-normal.ipynb) +- [Multimodal gaussian distribution](./toy-distribution-multimodal-gaussian.ipynb) +- [High dimensional gaussian](./toy-distribution-high-dimensional-gaussian.ipynb) - [Rosenbrock function](./toy-distribution-rosenbrock.ipynb) - [Simple Egg Box](./toy-distribution-simple-egg-box.ipynb) - [Twisted Gaussian Banana](./toy-distribution-twisted-gaussian.ipynb) +- [Annulus](./toy-distribution-annulus.ipynb) +- [Cone](./toy-distribution-cone.ipynb) +- [Neals Funnel](./toy-distribution-neals-funnel.ipynb) diff --git a/examples/sampling-autoregressive-moving-average-errors.ipynb b/examples/stats-autoregressive-moving-average-errors.ipynb similarity index 100% rename from examples/sampling-autoregressive-moving-average-errors.ipynb rename to examples/stats-autoregressive-moving-average-errors.ipynb diff --git a/examples/sampling-cauchy-sampling-error.ipynb b/examples/stats-cauchy-sampling-error.ipynb similarity index 100% rename from examples/sampling-cauchy-sampling-error.ipynb rename to examples/stats-cauchy-sampling-error.ipynb diff --git a/run-tests.py b/run-tests.py index 891025445..5ee195a70 100755 --- a/run-tests.py +++ b/run-tests.py @@ -140,7 +140,7 @@ def doctest_examples_readme(): # Report any failures if len(not_indexed) > 0: print('The following notebooks are not indexed in %s:' % index_file) - for nb in not_indexed: + for nb in sorted(not_indexed): print(nb) print('FAILED') sys.exit(1)