Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,214 changes: 1,214 additions & 0 deletions demos/mixed_distributions_blog_analysis.ipynb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ nav:
- SciPyWrapper dependence and Custom distributions: demos/scipywrapper_dependence_custom/scipywrapper_demo.ipynb
- ProductMeasure: demos/product_measure.ipynb
- Mixed Distributions: demos/mixed_distributions.ipynb
- Mixed Distributions Blog Analysis: demos/mixed_distributions_blog_analysis.ipynb
- Acceptance-Rejection Sampling: demos/acceptance_rejection.ipynb
- Copula TrueMeasure Examples: demos/copula_examples.ipynb
- Cube-to-Simplex Transforms and SimplexUniform: demos/simplex_uniform.ipynb
Expand Down
1 change: 1 addition & 0 deletions scripts/colab_notebooks_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"demos/linear-scrambled-halton.ipynb",
"demos/makefile_dev_tools.ipynb",
"demos/mixed_distributions.ipynb",
"demos/mixed_distributions_blog_analysis.ipynb",
"demos/nei_demo.ipynb",
"demos/performance_optimizations_demo.ipynb",
"demos/plot_proj_function.ipynb",
Expand Down
69 changes: 69 additions & 0 deletions test/booktests/tb_mixed_distributions_blog_analysis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import tempfile
import unittest
from pathlib import Path

import nbformat

from __init__ import BaseNotebookTest


class NotebookTests(BaseNotebookTest):

def test_saved_results(self):
notebook_path, _ = self.locate_notebook(
"../../demos/mixed_distributions_blog_analysis.ipynb"
)
notebook = nbformat.read(notebook_path, as_version=4)
nbformat.validate(notebook)
code_cells = [
cell for cell in notebook.cells
if cell.cell_type == "code"
and not cell.source.startswith("# @title Execute this cell")
]
self.assertEqual(
[cell.execution_count for cell in code_cells],
list(range(1, len(code_cells) + 1)),
)
outputs = [output for cell in code_cells for output in cell.outputs]
self.assertFalse(any(output.output_type == "error" for output in outputs))
self.assertEqual(
sum("image/png" in output.get("data", {}) for output in outputs), 4
)

def test_mixed_distributions_blog_analysis_notebook(self):
"""Exercise every cell without rerunning the full publication study."""
notebook_path, _ = self.locate_notebook(
"../../demos/mixed_distributions_blog_analysis.ipynb"
)
original = Path(notebook_path).read_bytes()
notebook = nbformat.read(notebook_path, as_version=4)
source = "\n".join(
cell.source for cell in notebook.cells if cell.cell_type == "code"
)
with tempfile.TemporaryDirectory() as output_dir:
replacements = {
"sample_sizes = 2 ** np.arange(6, 16)":
"sample_sizes = 2 ** np.arange(6, 11)",
"n_cases100 = 100": "n_cases100 = 2",
"mc_n = 1_000_000": "mc_n = 20_000",
'output_dir = repo_root / "demos" / "mixed_distributions_blog_outputs"':
f"output_dir = Path({output_dir!r})",
}
# Fail if a notebook edit makes a workload override stop matching.
for old in replacements:
self.assertEqual(source.count(old), 1, old)
self.run_notebook(notebook_path, replacements=replacements)
self.assertEqual(
{path.name for path in Path(output_dir).iterdir()},
{
"mixture_density_1d.png",
"equal_cost_1d.png",
"equal_cost_fixed_10d.png",
"equal_cost_random_10d.png",
},
)
self.assertEqual(Path(notebook_path).read_bytes(), original)


if __name__ == "__main__":
unittest.main()
Loading