From 96ba389e7d8078f624034ae950594f1e346484c1 Mon Sep 17 00:00:00 2001
From: Penelope Yong
Date: Sat, 19 Jul 2025 15:07:24 +0100
Subject: [PATCH 1/6] Add categories (?)
---
ad.py | 11 +++
main.jl | 134 ++++++++++++++++++------------------
models/observe_von_mises.jl | 6 ++
models/von_mises.jl | 6 --
4 files changed, 85 insertions(+), 72 deletions(-)
create mode 100644 models/observe_von_mises.jl
delete mode 100644 models/von_mises.jl
diff --git a/ad.py b/ad.py
index cc35551..a38ba0b 100644
--- a/ad.py
+++ b/ad.py
@@ -83,6 +83,15 @@ def run_ad(args):
else:
RUN_JULIA_COMMAND = JULIA_COMMAND
+ # Get category
+ try:
+ category = run_and_capture([*RUN_JULIA_COMMAND, "--get-category", model_key])
+ except sp.CalledProcessError as e:
+ print(f"Julia crashed when getting category for {model_key}.")
+ print(f"To reproduce, run: `julia --project=. main.jl --get-category {model_key}`")
+ category = "error"
+ results["__category__"] = category
+
# Run tests
for adtype in adtypes:
print(f"Running {model_key} with {adtype}...")
@@ -127,12 +136,14 @@ def html(_args):
# [
# {"model_name": "model1",
# "results": {
+ # "__category_": "category1",
# "AD1": "result1",
# "AD2": "result2"
# }
# },
# {"model_name": "model2",
# "results": {
+ # "__category_": "category2",
# "AD1": "result3",
# "AD2": "result4"
# }
diff --git a/main.jl b/main.jl
index 7faffc9..6f1e9db 100644
--- a/main.jl
+++ b/main.jl
@@ -1,8 +1,6 @@
-import Test: @test, @testset
using DynamicPPL: DynamicPPL, VarInfo
using DynamicPPL.TestUtils.AD: run_ad, ADResult, ADIncorrectException
using ADTypes
-using Printf: @printf
import FiniteDifferences: central_fdm
import ForwardDiff
@@ -13,30 +11,26 @@ import Zygote
# AD backends to test.
ADTYPES = Dict(
- "FiniteDifferences" => AutoFiniteDifferences(; fdm = central_fdm(5, 1)),
+ "FiniteDifferences" => AutoFiniteDifferences(; fdm=central_fdm(5, 1)),
"ForwardDiff" => AutoForwardDiff(),
- "ReverseDiff" => AutoReverseDiff(; compile = false),
- "ReverseDiffCompiled" => AutoReverseDiff(; compile = true),
- "Mooncake" => AutoMooncake(; config = nothing),
- "EnzymeForward" => AutoEnzyme(; mode = set_runtime_activity(Forward, true)),
- "EnzymeReverse" => AutoEnzyme(; mode = set_runtime_activity(Reverse, true)),
+ "ReverseDiff" => AutoReverseDiff(; compile=false),
+ "ReverseDiffCompiled" => AutoReverseDiff(; compile=true),
+ "Mooncake" => AutoMooncake(; config=nothing),
+ "EnzymeForward" => AutoEnzyme(; mode=set_runtime_activity(Forward, true)),
+ "EnzymeReverse" => AutoEnzyme(; mode=set_runtime_activity(Reverse, true)),
"Zygote" => AutoZygote(),
)
-# Models to test. The convention is that:
-# a, b, c, ... are assumed variables
-# x, y, z, ... are observed variables
-# although it's hardly a big deal.
-MODELS = Dict{String,DynamicPPL.Model}()
-macro register(model)
- :(MODELS[string($(esc(model)).f)] = $(esc(model)))
+MODELS = Dict{String,Tuple{String,DynamicPPL.Model}}()
+macro register(category, model)
+ :(MODELS[string($(esc(model)).f)] = ($(esc(category)), $(esc(model))))
end
"""
- include_model(model_name::AbstractString)
+ include_model(category::AbstractString, model_name::AbstractString)
Add the model defined in `models/model_name.jl` to the full list of models
-tested in this script.
+tested in this script. The model is registered under the given `category`.
We want to isolate every model in its own module, so that we avoid e.g.
variable clashes, and also so that we make imports explicit.
@@ -57,17 +51,17 @@ definition file:
- Once defined, the model is created using `model = model_name(...)`. The
`model` on the left-hand side is mandatory.
"""
-macro include_model(model_name::AbstractString)
+macro include_model(category::AbstractString, model_name::AbstractString)
MODELS_TO_LOAD = get(ENV, "ADTESTS_MODELS_TO_LOAD", "__all__")
if MODELS_TO_LOAD == "__all__" || model_name in split(MODELS_TO_LOAD, ",")
# Declare a module containing the model. In principle esc() shouldn't
# be needed, but see https://github.com/JuliaLang/julia/issues/55677
Expr(:toplevel, esc(:(
module $(gensym())
- using .Main: @register
- using Turing
- include("models/" * $(model_name) * ".jl")
- @register model
+ using .Main: @register
+ using Turing
+ include("models/" * $(model_name) * ".jl")
+ @register $(category) model
end
)))
else
@@ -76,63 +70,70 @@ macro include_model(model_name::AbstractString)
end
end
-@include_model "assume_beta"
-@include_model "assume_dirichlet"
-@include_model "assume_lkjcholu"
-@include_model "assume_mvnormal"
-@include_model "assume_normal"
-@include_model "assume_submodel"
-@include_model "assume_wishart"
-@include_model "broadcast_macro"
-@include_model "control_flow"
-@include_model "demo_assume_dot_observe"
-@include_model "demo_assume_dot_observe_literal"
-@include_model "demo_assume_index_observe"
-@include_model "demo_assume_matrix_observe_matrix_index"
-@include_model "demo_assume_multivariate_observe"
-@include_model "demo_assume_multivariate_observe_literal"
-@include_model "demo_assume_observe_literal"
-@include_model "demo_assume_submodel_observe_index_literal"
-@include_model "demo_dot_assume_observe"
-@include_model "demo_dot_assume_observe_index"
-@include_model "demo_dot_assume_observe_index_literal"
-@include_model "demo_dot_assume_observe_matrix_index"
-@include_model "demo_dot_assume_observe_submodel"
-@include_model "dot_assume"
-@include_model "dot_observe"
-@include_model "dynamic_constraint"
-@include_model "multiple_constraints_same_var"
-@include_model "multithreaded"
-@include_model "n010"
-@include_model "n050"
-@include_model "n100"
-@include_model "n500"
-@include_model "observe_bernoulli"
-@include_model "observe_categorical"
-@include_model "observe_index"
-@include_model "observe_literal"
-@include_model "observe_multivariate"
-@include_model "observe_submodel"
-@include_model "pdb_eight_schools_centered"
-@include_model "pdb_eight_schools_noncentered"
-@include_model "von_mises"
+# Models to test. The convention is that:
+# a, b, c, ... are assumed variables
+# x, y, z, ... are observed variables
+# although it's hardly a big deal.
+@include_model "Base Julia features" "control_flow"
+@include_model "Base Julia features" "multithreaded"
+@include_model "Core Turing syntax" "broadcast_macro"
+@include_model "Core Turing syntax" "dot_assume"
+@include_model "Core Turing syntax" "dot_observe"
+@include_model "Core Turing syntax" "dynamic_constraint"
+@include_model "Core Turing syntax" "multiple_constraints_same_var"
+@include_model "Core Turing syntax" "observe_index"
+@include_model "Core Turing syntax" "observe_literal"
+@include_model "Core Turing syntax" "observe_multivariate"
+@include_model "Core Turing syntax" "observe_submodel"
+@include_model "Distributions" "assume_beta"
+@include_model "Distributions" "assume_dirichlet"
+@include_model "Distributions" "assume_lkjcholu"
+@include_model "Distributions" "assume_mvnormal"
+@include_model "Distributions" "assume_normal"
+@include_model "Distributions" "assume_submodel"
+@include_model "Distributions" "assume_wishart"
+@include_model "Distributions" "observe_bernoulli"
+@include_model "Distributions" "observe_categorical"
+@include_model "Distributions" "observe_von_mises"
+@include_model "DynamicPPL demo models" "demo_assume_dot_observe"
+@include_model "DynamicPPL demo models" "demo_assume_dot_observe_literal"
+@include_model "DynamicPPL demo models" "demo_assume_index_observe"
+@include_model "DynamicPPL demo models" "demo_assume_matrix_observe_matrix_index"
+@include_model "DynamicPPL demo models" "demo_assume_multivariate_observe"
+@include_model "DynamicPPL demo models" "demo_assume_multivariate_observe_literal"
+@include_model "DynamicPPL demo models" "demo_assume_observe_literal"
+@include_model "DynamicPPL demo models" "demo_assume_submodel_observe_index_literal"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_index"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_index_literal"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_matrix_index"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_submodel"
+@include_model "Effect of model size" "n010"
+@include_model "Effect of model size" "n050"
+@include_model "Effect of model size" "n100"
+@include_model "Effect of model size" "n500"
+@include_model "PosteriorDB" "pdb_eight_schools_centered"
+@include_model "PosteriorDB" "pdb_eight_schools_noncentered"
# The entry point to this script itself begins here
if ARGS == ["--list-model-keys"]
foreach(println, sort(collect(keys(MODELS))))
elseif ARGS == ["--list-adtype-keys"]
foreach(println, sort(collect(keys(ADTYPES))))
+elseif length(ARGS) == 2 && ARGS[1] == "--get-category"
+ println(MODELS[ARGS[2]][1])
elseif length(ARGS) == 3 && ARGS[1] == "--run"
- model, adtype = MODELS[ARGS[2]], ADTYPES[ARGS[3]]
+ model_name, adtype_name = ARGS[2], ARGS[3]
+ model, adtype = MODELS[model_name][2], ADTYPES[adtype_name]
try
- if ARGS[2] == "control_flow"
+ if model_name == "control_flow"
# https://github.com/TuringLang/ADTests/issues/4
vi = DynamicPPL.unflatten(VarInfo(model), [0.5, -0.5])
params = [-0.5, 0.5]
- result = run_ad(model, adtype; varinfo = vi, params = params, benchmark = true)
+ result = run_ad(model, adtype; varinfo=vi, params=params, benchmark=true)
else
- result = run_ad(model, adtype; benchmark = true)
+ result = run_ad(model, adtype; benchmark=true)
end
# If reached here - nothing went wrong
println(result.time_vs_primal)
@@ -162,4 +163,5 @@ else
println("Usage: julia main.jl --list-model-keys")
println(" julia main.jl --list-adtype-keys")
println(" julia main.jl --run ")
+ println(" julia main.jl --get-category ")
end
diff --git a/models/observe_von_mises.jl b/models/observe_von_mises.jl
new file mode 100644
index 0000000..7554398
--- /dev/null
+++ b/models/observe_von_mises.jl
@@ -0,0 +1,6 @@
+@model function observe_von_mises(x)
+ a ~ InverseGamma(2, 3)
+ x ~ VonMises(0, a)
+end
+
+model = observe_von_mises(0.4)
diff --git a/models/von_mises.jl b/models/von_mises.jl
deleted file mode 100644
index e3b997f..0000000
--- a/models/von_mises.jl
+++ /dev/null
@@ -1,6 +0,0 @@
-@model function von_mises(x)
- a ~ InverseGamma(2, 3)
- x ~ VonMises(0, a)
-end
-
-model = von_mises(0.4)
From db4b6931a089ee4acbf0f1db0653f12b29c7d4da Mon Sep 17 00:00:00 2001
From: Penelope Yong
Date: Sat, 19 Jul 2025 15:39:45 +0100
Subject: [PATCH 2/6] try with just 3 for now
---
main.jl | 74 ++++++++++++++++++++++++++++-----------------------------
1 file changed, 37 insertions(+), 37 deletions(-)
diff --git a/main.jl b/main.jl
index 6f1e9db..322df37 100644
--- a/main.jl
+++ b/main.jl
@@ -75,45 +75,45 @@ end
# x, y, z, ... are observed variables
# although it's hardly a big deal.
@include_model "Base Julia features" "control_flow"
-@include_model "Base Julia features" "multithreaded"
-@include_model "Core Turing syntax" "broadcast_macro"
+# @include_model "Base Julia features" "multithreaded"
+# @include_model "Core Turing syntax" "broadcast_macro"
@include_model "Core Turing syntax" "dot_assume"
-@include_model "Core Turing syntax" "dot_observe"
-@include_model "Core Turing syntax" "dynamic_constraint"
-@include_model "Core Turing syntax" "multiple_constraints_same_var"
-@include_model "Core Turing syntax" "observe_index"
-@include_model "Core Turing syntax" "observe_literal"
-@include_model "Core Turing syntax" "observe_multivariate"
-@include_model "Core Turing syntax" "observe_submodel"
+# @include_model "Core Turing syntax" "dot_observe"
+# @include_model "Core Turing syntax" "dynamic_constraint"
+# @include_model "Core Turing syntax" "multiple_constraints_same_var"
+# @include_model "Core Turing syntax" "observe_index"
+# @include_model "Core Turing syntax" "observe_literal"
+# @include_model "Core Turing syntax" "observe_multivariate"
+# @include_model "Core Turing syntax" "observe_submodel"
@include_model "Distributions" "assume_beta"
-@include_model "Distributions" "assume_dirichlet"
-@include_model "Distributions" "assume_lkjcholu"
-@include_model "Distributions" "assume_mvnormal"
-@include_model "Distributions" "assume_normal"
-@include_model "Distributions" "assume_submodel"
-@include_model "Distributions" "assume_wishart"
-@include_model "Distributions" "observe_bernoulli"
-@include_model "Distributions" "observe_categorical"
-@include_model "Distributions" "observe_von_mises"
-@include_model "DynamicPPL demo models" "demo_assume_dot_observe"
-@include_model "DynamicPPL demo models" "demo_assume_dot_observe_literal"
-@include_model "DynamicPPL demo models" "demo_assume_index_observe"
-@include_model "DynamicPPL demo models" "demo_assume_matrix_observe_matrix_index"
-@include_model "DynamicPPL demo models" "demo_assume_multivariate_observe"
-@include_model "DynamicPPL demo models" "demo_assume_multivariate_observe_literal"
-@include_model "DynamicPPL demo models" "demo_assume_observe_literal"
-@include_model "DynamicPPL demo models" "demo_assume_submodel_observe_index_literal"
-@include_model "DynamicPPL demo models" "demo_dot_assume_observe"
-@include_model "DynamicPPL demo models" "demo_dot_assume_observe_index"
-@include_model "DynamicPPL demo models" "demo_dot_assume_observe_index_literal"
-@include_model "DynamicPPL demo models" "demo_dot_assume_observe_matrix_index"
-@include_model "DynamicPPL demo models" "demo_dot_assume_observe_submodel"
-@include_model "Effect of model size" "n010"
-@include_model "Effect of model size" "n050"
-@include_model "Effect of model size" "n100"
-@include_model "Effect of model size" "n500"
-@include_model "PosteriorDB" "pdb_eight_schools_centered"
-@include_model "PosteriorDB" "pdb_eight_schools_noncentered"
+# @include_model "Distributions" "assume_dirichlet"
+# @include_model "Distributions" "assume_lkjcholu"
+# @include_model "Distributions" "assume_mvnormal"
+# @include_model "Distributions" "assume_normal"
+# @include_model "Distributions" "assume_submodel"
+# @include_model "Distributions" "assume_wishart"
+# @include_model "Distributions" "observe_bernoulli"
+# @include_model "Distributions" "observe_categorical"
+# @include_model "Distributions" "observe_von_mises"
+# @include_model "DynamicPPL demo models" "demo_assume_dot_observe"
+# @include_model "DynamicPPL demo models" "demo_assume_dot_observe_literal"
+# @include_model "DynamicPPL demo models" "demo_assume_index_observe"
+# @include_model "DynamicPPL demo models" "demo_assume_matrix_observe_matrix_index"
+# @include_model "DynamicPPL demo models" "demo_assume_multivariate_observe"
+# @include_model "DynamicPPL demo models" "demo_assume_multivariate_observe_literal"
+# @include_model "DynamicPPL demo models" "demo_assume_observe_literal"
+# @include_model "DynamicPPL demo models" "demo_assume_submodel_observe_index_literal"
+# @include_model "DynamicPPL demo models" "demo_dot_assume_observe"
+# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_index"
+# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_index_literal"
+# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_matrix_index"
+# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_submodel"
+# @include_model "Effect of model size" "n010"
+# @include_model "Effect of model size" "n050"
+# @include_model "Effect of model size" "n100"
+# @include_model "Effect of model size" "n500"
+# @include_model "PosteriorDB" "pdb_eight_schools_centered"
+# @include_model "PosteriorDB" "pdb_eight_schools_noncentered"
# The entry point to this script itself begins here
if ARGS == ["--list-model-keys"]
From 6e5681c0403b468b6b5e7c257bfcc11a90d0c867 Mon Sep 17 00:00:00 2001
From: Penelope Yong
Date: Sat, 19 Jul 2025 16:16:09 +0100
Subject: [PATCH 3/6] Split website by categories too
---
web/src/App.svelte | 29 ++++++++++++++++++++++++++++-
web/src/lib/Manifest.svelte | 8 +++++++-
web/src/lib/ResultsTable.svelte | 7 ++++---
web/src/lib/utils.ts | 6 +++---
4 files changed, 42 insertions(+), 8 deletions(-)
diff --git a/web/src/App.svelte b/web/src/App.svelte
index ddaaf82..5e3a200 100644
--- a/web/src/App.svelte
+++ b/web/src/App.svelte
@@ -2,6 +2,30 @@
import data from "./data/adtests.json";
import modelDefinitions from "./data/model_definitions.json";
+ // Parse data into nice JS objects.
+ // Obviously, the nested strings are a bit ugly. From outer to inner, they are:
+ // category -> model_name -> adtype -> result
+ let categorisedData = new Map<
+ string,
+ Map>
+ >();
+ for (const [model_name, results] of Object.entries(data)) {
+ let category = results.__category__;
+ delete results.__category__;
+ let resultsMap = new Map();
+ for (const [adtype, result] of Object.entries(results)) {
+ resultsMap.set(adtype, result);
+ }
+ if (!categorisedData.has(category)) {
+ categorisedData.set(
+ category,
+ new Map>(),
+ );
+ }
+ categorisedData.get(category).set(model_name, resultsMap);
+ }
+ console.log(categorisedData);
+
import Manifest from "./lib/Manifest.svelte";
import ResultsTable from "./lib/ResultsTable.svelte";
@@ -78,7 +102,10 @@
>Download the raw data (JSON)
-
+ {#each categorisedData.entries() as [category, modelData]}
+ {category}
+
+ {/each}
Manifest
The tests above were run with the following package versions:
diff --git a/web/src/lib/Manifest.svelte b/web/src/lib/Manifest.svelte
index d5584f8..d99f7e5 100644
--- a/web/src/lib/Manifest.svelte
+++ b/web/src/lib/Manifest.svelte
@@ -1,5 +1,11 @@
diff --git a/web/src/lib/ResultsTable.svelte b/web/src/lib/ResultsTable.svelte
index 109684c..5e181e9 100644
--- a/web/src/lib/ResultsTable.svelte
+++ b/web/src/lib/ResultsTable.svelte
@@ -5,13 +5,14 @@
import { getSortedEntries } from "./utils";
interface Props {
- data: object;
+ // model name -> adtype -> result
+ data: Map>;
modelDefinitions: object;
}
const { data, modelDefinitions }: Props = $props();
- const models = Object.keys(data);
- const adtypes = Object.keys(data[models[0]]);
+ const models = [...data.keys()];
+ const adtypes = data.get(models[0]).keys();
// Known errors
const ENZYME_FWD_BLAS = "https://github.com/EnzymeAD/Enzyme.jl/issues/1995";
diff --git a/web/src/lib/utils.ts b/web/src/lib/utils.ts
index ce7f8b5..21f2483 100644
--- a/web/src/lib/utils.ts
+++ b/web/src/lib/utils.ts
@@ -1,5 +1,5 @@
-export function getSortedEntries(obj: object) {
- return Object.entries(obj).sort(([a, _x], [b, _y]) =>
- a.localeCompare(b),
+export function getSortedEntries(m: Map) {
+ return [...m.entries()].sort(([k1, _v1], [k2, _v2]) =>
+ k1.localeCompare(k2),
);
}
From d82ea68a01aa3b9b46344bb33a7a7dd92bdaf71d Mon Sep 17 00:00:00 2001
From: Penelope Yong
Date: Sat, 19 Jul 2025 16:19:39 +0100
Subject: [PATCH 4/6] take json from PR subdir if it's a PR
---
.github/workflows/refresh_website.yml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/refresh_website.yml b/.github/workflows/refresh_website.yml
index 4465450..3048696 100644
--- a/.github/workflows/refresh_website.yml
+++ b/.github/workflows/refresh_website.yml
@@ -32,10 +32,12 @@ jobs:
- name: Download results to web/src/data
run: |
- curl -O https://raw.githubusercontent.com/TuringLang/ADTests/refs/heads/gh-pages/adtests.json
- curl -O https://raw.githubusercontent.com/TuringLang/ADTests/refs/heads/gh-pages/manifest.json
- curl -O https://raw.githubusercontent.com/TuringLang/ADTests/refs/heads/gh-pages/model_definitions.json
+ curl -O https://raw.githubusercontent.com/TuringLang/ADTests/refs/heads/gh-pages/${PR}adtests.json
+ curl -O https://raw.githubusercontent.com/TuringLang/ADTests/refs/heads/gh-pages/${PR}manifest.json
+ curl -O https://raw.githubusercontent.com/TuringLang/ADTests/refs/heads/gh-pages/${PR}model_definitions.json
working-directory: web/src/data
+ env:
+ PR: ${{ github.event_name == 'pull_request' && 'pr/' || '' }}
# This isn't needed to build the website, it's just there so that the
# JSON is easily accessible on the gh-pages branch
From 2200a583f2d568a8f8c94d04234e7a5594fb7ae8 Mon Sep 17 00:00:00 2001
From: Penelope Yong
Date: Sat, 19 Jul 2025 16:27:11 +0100
Subject: [PATCH 5/6] Update README
---
README.md | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 3f80e5c..fc1241f 100644
--- a/README.md
+++ b/README.md
@@ -13,11 +13,30 @@ You can modify the list of AD types in `main.jl`.
## I want to add more models!
You can modify the list of models by adding a new file inside the `models` directory.
-This file should contain the model definition, and call the `@register` macro to register the model with the `ADTests` package.
-See the existing files in that directory for examples.
-Then, make sure to `include` the new source file in `main.jl`.
-To make sure that the definition is included in the final website, you will have to make sure that the filename is the same as the model name (i.e. a model `@model function f()` is in `models/f.jl`).
+Inside this file, you do not need to call `using Turing` or any of the AD backends.
+However, you will have to make sure to import any other packages that your model uses.
+
+This file should have, as the final line, the creation of the Turing model object using `model = model_f(...)`.
+(It is mandatory for the model object to be called `model`.)
+
+Then, inside `main.jl`, call `@include_model category_heading model_name`.
+
+- `category_heading` is a string that is used to determine which table the model appears under on the website.
+- For the automated tests to run properly, `model_name` **must** be consistent between the following:
+ - The name of the model itself i.e. `@model function model_name(...)`
+ - The filename i.e. `models/model_name.jl`
+ - The name of the model in `main.jl` i.e. `@include_model "Category Heading" model_name`
+
+Ideally, `model_name` would be self-explanatory, i.e. it would serve to illustrate exactly one feature and the name would indicate this.
+However, if necessary, you can add explanatory comments inside the model definition file.
+
+You can see the existing files in that directory for examples.
+
+> [!NOTE]
+> This setup does admittedly feel a bit complicated.
+> Unfortunately I could not find a simpler way to get all the components (Julia, Python, web app) to work together in an automated fashion.
+> Hopefully it is a small price to pay for the ability to just add a new model and have it be automatically included on the website.
## I want to edit the website!
From c072b81556e61614c9f57e5382e38c5a8f8dafca Mon Sep 17 00:00:00 2001
From: Penelope Yong
Date: Sat, 19 Jul 2025 16:28:08 +0100
Subject: [PATCH 6/6] Uncomment models
---
main.jl | 74 ++++++++++++++++++++++++++++-----------------------------
1 file changed, 37 insertions(+), 37 deletions(-)
diff --git a/main.jl b/main.jl
index 322df37..6f1e9db 100644
--- a/main.jl
+++ b/main.jl
@@ -75,45 +75,45 @@ end
# x, y, z, ... are observed variables
# although it's hardly a big deal.
@include_model "Base Julia features" "control_flow"
-# @include_model "Base Julia features" "multithreaded"
-# @include_model "Core Turing syntax" "broadcast_macro"
+@include_model "Base Julia features" "multithreaded"
+@include_model "Core Turing syntax" "broadcast_macro"
@include_model "Core Turing syntax" "dot_assume"
-# @include_model "Core Turing syntax" "dot_observe"
-# @include_model "Core Turing syntax" "dynamic_constraint"
-# @include_model "Core Turing syntax" "multiple_constraints_same_var"
-# @include_model "Core Turing syntax" "observe_index"
-# @include_model "Core Turing syntax" "observe_literal"
-# @include_model "Core Turing syntax" "observe_multivariate"
-# @include_model "Core Turing syntax" "observe_submodel"
+@include_model "Core Turing syntax" "dot_observe"
+@include_model "Core Turing syntax" "dynamic_constraint"
+@include_model "Core Turing syntax" "multiple_constraints_same_var"
+@include_model "Core Turing syntax" "observe_index"
+@include_model "Core Turing syntax" "observe_literal"
+@include_model "Core Turing syntax" "observe_multivariate"
+@include_model "Core Turing syntax" "observe_submodel"
@include_model "Distributions" "assume_beta"
-# @include_model "Distributions" "assume_dirichlet"
-# @include_model "Distributions" "assume_lkjcholu"
-# @include_model "Distributions" "assume_mvnormal"
-# @include_model "Distributions" "assume_normal"
-# @include_model "Distributions" "assume_submodel"
-# @include_model "Distributions" "assume_wishart"
-# @include_model "Distributions" "observe_bernoulli"
-# @include_model "Distributions" "observe_categorical"
-# @include_model "Distributions" "observe_von_mises"
-# @include_model "DynamicPPL demo models" "demo_assume_dot_observe"
-# @include_model "DynamicPPL demo models" "demo_assume_dot_observe_literal"
-# @include_model "DynamicPPL demo models" "demo_assume_index_observe"
-# @include_model "DynamicPPL demo models" "demo_assume_matrix_observe_matrix_index"
-# @include_model "DynamicPPL demo models" "demo_assume_multivariate_observe"
-# @include_model "DynamicPPL demo models" "demo_assume_multivariate_observe_literal"
-# @include_model "DynamicPPL demo models" "demo_assume_observe_literal"
-# @include_model "DynamicPPL demo models" "demo_assume_submodel_observe_index_literal"
-# @include_model "DynamicPPL demo models" "demo_dot_assume_observe"
-# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_index"
-# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_index_literal"
-# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_matrix_index"
-# @include_model "DynamicPPL demo models" "demo_dot_assume_observe_submodel"
-# @include_model "Effect of model size" "n010"
-# @include_model "Effect of model size" "n050"
-# @include_model "Effect of model size" "n100"
-# @include_model "Effect of model size" "n500"
-# @include_model "PosteriorDB" "pdb_eight_schools_centered"
-# @include_model "PosteriorDB" "pdb_eight_schools_noncentered"
+@include_model "Distributions" "assume_dirichlet"
+@include_model "Distributions" "assume_lkjcholu"
+@include_model "Distributions" "assume_mvnormal"
+@include_model "Distributions" "assume_normal"
+@include_model "Distributions" "assume_submodel"
+@include_model "Distributions" "assume_wishart"
+@include_model "Distributions" "observe_bernoulli"
+@include_model "Distributions" "observe_categorical"
+@include_model "Distributions" "observe_von_mises"
+@include_model "DynamicPPL demo models" "demo_assume_dot_observe"
+@include_model "DynamicPPL demo models" "demo_assume_dot_observe_literal"
+@include_model "DynamicPPL demo models" "demo_assume_index_observe"
+@include_model "DynamicPPL demo models" "demo_assume_matrix_observe_matrix_index"
+@include_model "DynamicPPL demo models" "demo_assume_multivariate_observe"
+@include_model "DynamicPPL demo models" "demo_assume_multivariate_observe_literal"
+@include_model "DynamicPPL demo models" "demo_assume_observe_literal"
+@include_model "DynamicPPL demo models" "demo_assume_submodel_observe_index_literal"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_index"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_index_literal"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_matrix_index"
+@include_model "DynamicPPL demo models" "demo_dot_assume_observe_submodel"
+@include_model "Effect of model size" "n010"
+@include_model "Effect of model size" "n050"
+@include_model "Effect of model size" "n100"
+@include_model "Effect of model size" "n500"
+@include_model "PosteriorDB" "pdb_eight_schools_centered"
+@include_model "PosteriorDB" "pdb_eight_schools_noncentered"
# The entry point to this script itself begins here
if ARGS == ["--list-model-keys"]