From 236f442cba0ade6247ecfbe5943105e59b097f97 Mon Sep 17 00:00:00 2001 From: Alexei Drummond Date: Sat, 2 May 2026 10:48:19 +1200 Subject: [PATCH 1/6] Scalable contract: scale returns log Jacobian; sum-of-margins for Tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactors the Scalable interface to a three-method contract whose invariants are mutually consistent on a single dilation axis: scale(s) returns log Jacobian determinant of the move getScalableValue() returns position on the dilation axis setScalableValue(V) default: scale(V / getScalableValue()) The contract requires: (1) scale(s) makes getScalableValue() return s × original (2) setScalableValue(V) makes getScalableValue() return V (3) setScalableValue(get × s) produces the same state as scale(s) A new ScalableContractTest harness exercises these three invariants on every concrete implementation. Per-class tests cover RealScalarParam, RealVectorParam, and Tree on ultrametric, heterochronous, and leaf-intruding fixtures. Tree.scale switches from affine internal-height scaling to interval (margin) scaling so the move always succeeds for any positive s on heterochronous trees, and the dilation summary getScalableValue = sum of margins is exactly s-equivariant. The previous affine semantics remain available as Tree.scaleToRootHeight(targetHeight), used by StarBeastStartState init code. Operator-side updates are mechanical: scale return type int -> double log Jacobian, summed directly. ScaleOperator and UpDownOperator (legacy + spec + Bactrian variants) preserve their existing kernel-symmetry corrections. AMVN routes through setScalableValue / getScalableValue, inheriting the contract; this also fixes a latent bug in spec AMVN where Tree.getValue had no return statement. Out of scope for this PR (operator-design layer, deferred to follow-up): * spec UpDown actualScaler logic for tree+up/down combinations * IntervalScaleOperator collapse into UpDown * AMVN's covariance behaviour for non-ultrametric trees beyond the target-landing fix Tested: * 408 existing beast-base unit tests pass * 9 new Scalable contract tests pass * 10 heterochronous MCMC integration tests pass (TipTimeTest legacy + spec under -Pslow-tests, ~4 minutes) * Mascot, beast-classic, LPhyBeast core compile cleanly against new beast-base * BEASTLabs requires corresponding 2-file update; see parallel BEASTLabs scalable-contract branch (all 83 tests pass) API impact: binding interface change. Downstream packages that implement Scalable directly or store the int return must update; the beast.base implementations and BEASTLabs branch demonstrate the migration pattern. Closes/addresses: CompEvol/beast3#20 --- .../evolution/operator/ScaleOperator.java | 16 +- ...bleVarianceMultivariateNormalOperator.java | 9 +- .../kernel/BactrianScaleOperator.java | 14 +- .../speciation/StarBeastStartState.java | 7 +- .../java/beast/base/evolution/tree/Node.java | 50 +++++- .../java/beast/base/evolution/tree/Tree.java | 76 ++++++++- .../java/beast/base/inference/Scalable.java | 123 +++++++++++--- .../inference/operator/UpDownOperator.java | 18 +- .../kernel/BactrianUpDownOperator.java | 15 +- .../inference/parameter/RealParameter.java | 17 +- ...bleVarianceMultivariateNormalOperator.java | 11 +- .../operator/IntervalScaleOperator.java | 7 +- .../evolution/operator/ScaleTreeOperator.java | 5 +- .../evolution/operator/UpDownOperator.java | 27 +-- .../inference/operator/ScaleOperator.java | 14 +- .../parameter/CompoundRealScalarParam.java | 14 +- .../inference/parameter/RealScalarParam.java | 13 +- .../inference/parameter/RealVectorParam.java | 19 ++- .../base/evolution/tree/TreeScalableTest.java | 157 ++++++++++++++++++ .../base/inference/ScalableContractTest.java | 94 +++++++++++ .../RealScalarParamScalableTest.java | 39 +++++ .../parameter/RealScalarParamTest.java | 6 +- .../RealVectorParamScalableTest.java | 48 ++++++ .../evolution/operator/ScaleOperatorTest.java | 17 +- .../test/beast/evolution/tree/TreeTest.java | 16 +- 25 files changed, 719 insertions(+), 113 deletions(-) create mode 100644 beast-base/src/test/java/beast/base/evolution/tree/TreeScalableTest.java create mode 100644 beast-base/src/test/java/beast/base/inference/ScalableContractTest.java create mode 100644 beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamScalableTest.java create mode 100644 beast-base/src/test/java/beast/base/spec/inference/parameter/RealVectorParamScalableTest.java diff --git a/beast-base/src/main/java/beast/base/evolution/operator/ScaleOperator.java b/beast-base/src/main/java/beast/base/evolution/operator/ScaleOperator.java index b8478036..044f6a67 100644 --- a/beast-base/src/main/java/beast/base/evolution/operator/ScaleOperator.java +++ b/beast-base/src/main/java/beast/base/evolution/operator/ScaleOperator.java @@ -145,8 +145,10 @@ public double proposal() { return -Math.log(scale); } else { // scale the beast.tree - final int internalNodes = tree.scale(scale); - return Math.log(scale) * (internalNodes - 2); + // tree.scale returns the log Jacobian (dof * log(scale)); + // operator adds the -2*log(scale) kernel-symmetry correction. + final double treeLogJacobian = tree.scale(scale); + return treeLogJacobian - 2 * Math.log(scale); } } @@ -205,9 +207,13 @@ public double proposal() { // for the proof. It is supposed to be somewhere in an Alexei/Nicholes article. // all Values assumed independent! - final int computedDoF = param.scale(scale); - final int usedDoF = (specifiedDoF > 0) ? specifiedDoF : computedDoF ; - hastingsRatio = (usedDoF - 2) * Math.log(scale); + // param.scale returns the log Jacobian (dof * log(scale)); + // operator adds the -2*log(scale) kernel-symmetry correction. + final double paramLogJacobian = param.scale(scale); + final double dofLogScale = (specifiedDoF > 0) + ? specifiedDoF * Math.log(scale) + : paramLogJacobian; + hastingsRatio = dofLogScale - 2 * Math.log(scale); } else { hastingsRatio = -Math.log(scale); diff --git a/beast-base/src/main/java/beast/base/evolution/operator/kernel/AdaptableVarianceMultivariateNormalOperator.java b/beast-base/src/main/java/beast/base/evolution/operator/kernel/AdaptableVarianceMultivariateNormalOperator.java index c58a52cf..b99804ab 100644 --- a/beast-base/src/main/java/beast/base/evolution/operator/kernel/AdaptableVarianceMultivariateNormalOperator.java +++ b/beast-base/src/main/java/beast/base/evolution/operator/kernel/AdaptableVarianceMultivariateNormalOperator.java @@ -752,9 +752,9 @@ public int setValue(final int param, final double value) throws Exception { } return 1; } else if (para instanceof Tree) { - double old = para.getArrayValue(); - double scale = value / old; - ((Tree) para).scale(scale); + // Use the Scalable contract: setScalableValue lands the tree's + // dilation-axis summary (sum of intervals) at exactly `value`. + ((Tree) para).setScalableValue(value); return ((Tree) para).getInternalNodeCount(); } return 0; @@ -765,7 +765,8 @@ public double getValue(final int param) { if (f instanceof RealParameter) { return f.getArrayValue(getX(param)); } - return ((Tree) f).getRoot().getHeight(); + // Read the tree's position on its dilation axis (sum of intervals) + return ((Tree) f).getScalableValue(); } // public double getLower(final int param) { diff --git a/beast-base/src/main/java/beast/base/evolution/operator/kernel/BactrianScaleOperator.java b/beast-base/src/main/java/beast/base/evolution/operator/kernel/BactrianScaleOperator.java index cc2f2303..fbb316bf 100644 --- a/beast-base/src/main/java/beast/base/evolution/operator/kernel/BactrianScaleOperator.java +++ b/beast-base/src/main/java/beast/base/evolution/operator/kernel/BactrianScaleOperator.java @@ -64,9 +64,10 @@ public double proposal() { return Math.log(scale); } else { // scale the beast.tree + // tree.scale returns the log Jacobian (dof * log(scale)); + // Bactrian kernel is symmetric so no kernel-ratio correction is needed. final double scale = getScaler(0, Double.NaN); - final int scaledNodes = tree.scale(scale); - return Math.log(scale) * scaledNodes; + return tree.scale(scale); } } @@ -125,10 +126,11 @@ public double proposal() { // for the proof. It is supposed to be somewhere in an Alexei/Nicholes article. // all Values assumed independent! - final double scale = getScaler(0, param.getValue(0)); - final int computedDoF = param.scale(scale); - final int usedDoF = (specifiedDoF > 0) ? specifiedDoF : computedDoF ; - hastingsRatio = usedDoF * Math.log(scale); + // param.scale returns the log Jacobian (dof * log(scale)); + // Bactrian kernel is symmetric so no kernel-ratio correction is needed. + final double scale = getScaler(0, param.getValue(0)); + final double paramLogJacobian = param.scale(scale); + hastingsRatio = (specifiedDoF > 0) ? specifiedDoF * Math.log(scale) : paramLogJacobian; } else { // which position to scale diff --git a/beast-base/src/main/java/beast/base/evolution/speciation/StarBeastStartState.java b/beast-base/src/main/java/beast/base/evolution/speciation/StarBeastStartState.java index 93d57f2d..a12d1b62 100644 --- a/beast-base/src/main/java/beast/base/evolution/speciation/StarBeastStartState.java +++ b/beast-base/src/main/java/beast/base/evolution/speciation/StarBeastStartState.java @@ -191,7 +191,9 @@ private void fullInit() { final ClusterTree ctree = new ClusterTree(); ctree.initByName("initial", gtree, "clusterType", "upgma", "taxa", alignment); - gtree.scale(1 / mu); + // Affine helper: scales internal heights by 1/mu (preserving leaf heights). + // Tree.scale would do interval scaling, which is the wrong operation here. + gtree.scaleToRootHeight(gtree.getRoot().getHeight() / mu); maxNsites = max(maxNsites, alignment.getSiteCount()); } @@ -388,7 +390,8 @@ private void randomInit() { s += 1.0/k; } final double rootHeight = (1/lam) * s; - stree.scale(rootHeight/stree.getRoot().getHeight()); + // Affine helper: lands species tree root at rootHeight exactly. + stree.scaleToRootHeight(rootHeight); randomInitGeneTrees(rootHeight); // final List geneTrees = genes.get(); // for (final Tree gtree : geneTrees) { diff --git a/beast-base/src/main/java/beast/base/evolution/tree/Node.java b/beast-base/src/main/java/beast/base/evolution/tree/Node.java index 0cebae5b..5912809b 100644 --- a/beast-base/src/main/java/beast/base/evolution/tree/Node.java +++ b/beast-base/src/main/java/beast/base/evolution/tree/Node.java @@ -802,7 +802,17 @@ public Set getLengthMetaDataNames() { /** - * scale height of this node and all its descendants + * Affine height scaling: multiply this node's height by {@code scale}, + * recursively. Leaves and fake (sampled-ancestor) nodes are skipped. + *

+ * Used by {@link Tree#scaleToRootHeight(double)} for the affine + * "land root at target" helper. NOT used by {@link Tree#scale(double)}, + * which applies interval scaling via {@link #intervalScale(double)}. + *

+ * Throws {@link IllegalArgumentException} for non-ultrametric trees if a + * scaled internal height drops below a leaf child's height. This is the + * historical {@code Node.scale} behaviour, preserved here for callers + * that explicitly want affine scaling and can handle the failure. * * @param scale scale factor * @return degrees of freedom scaled (used for HR calculations) @@ -832,6 +842,44 @@ public int scale(final double scale) { return dof; } + /** + * Interval scaling: multiply this node's "margin" (height above its taller + * child) by {@code scale}, recursively. Tip heights are preserved by + * construction, so the resulting tree is always valid for any positive + * scale factor. + *

+ * Used by {@link Tree#scale(double)} as the contract-bound dilation + * operation. Each margin is independently multiplied by {@code scale}, so + * the tree's sum of margins (= {@link Tree#getScalableValue()}) is + * exactly multiplied by {@code scale}. + * + * @param scale positive scale factor + * @return number of intervals (margins) scaled, for HR calculations + */ + public int intervalScale(final double scale) { + if (isLeaf()) { + return 0; + } + // sampled-ancestor fake nodes: skip, recurse into the non-direct-ancestor child + if (isFake()) { + if (getLeft().isDirectAncestor()) { + return getRight().intervalScale(scale); + } else { + return getLeft().intervalScale(scale); + } + } + startEditing(); + final double oldMargin = height - Math.max(getLeft().getHeight(), getRight().getHeight()); + int scaledNodeCount = 1; + scaledNodeCount += getLeft().intervalScale(scale); + scaledNodeCount += getRight().intervalScale(scale); + // recompute minHeight after children have been scaled + final double minChildHeight = Math.max(getLeft().getHeight(), getRight().getHeight()); + height = oldMargin * scale + minChildHeight; + isDirty |= Tree.IS_DIRTY; + return scaledNodeCount; + } + // /** // * Used for sampled ancestor trees // * Scales this node and all its descendants (either all descendants, or only non-sampled descendants) diff --git a/beast-base/src/main/java/beast/base/evolution/tree/Tree.java b/beast-base/src/main/java/beast/base/evolution/tree/Tree.java index 5772cbdf..e161e2dc 100644 --- a/beast-base/src/main/java/beast/base/evolution/tree/Tree.java +++ b/beast-base/src/main/java/beast/base/evolution/tree/Tree.java @@ -654,9 +654,81 @@ public void setEverythingDirty(final boolean isDirty) { } } + /** + * Scale this tree by factor {@code scale} along its dilation axis. + *

+ * The dilation axis for {@code Tree} is the sum of intervals (margins above + * taller children) across internal non-fake nodes. Each margin is + * multiplied by {@code scale}; tip dates are preserved by construction. + * Equivalent to interval scaling: see {@link #getScalableValue()} for the + * summary that scales by exactly {@code scale} under this operation. + *

+ * Always succeeds for any positive {@code scale} (no leaf can violate a + * branch-length constraint, because each margin remains positive). + * + * @return log Jacobian determinant of the move ({@code dof × log(scale)}) + */ + @Override + public double scale(final double scale) { + int dof = root.intervalScale(scale); + return dof * Math.log(scale); + } + + /** + * Read this tree's position on its dilation axis: the sum of intervals + * (margins above taller children) across internal non-fake nodes. + *

+ * This summary is exactly {@code s}-equivariant under {@link #scale(double)}. + */ @Override - public int scale(final double scale) { - return root.scale(scale); + public double getScalableValue() { + return computeSumIntervals(root); + } + + /** + * Affine helper: scale the tree so its root height equals {@code targetRootHeight}. + * Multiplies every internal non-fake non-leaf height by + * {@code targetRootHeight / oldRootHeight}, keeping leaf heights fixed. + *

+ * Not part of the Scalable contract. May throw + * {@link IllegalArgumentException} for non-ultrametric trees if the + * resulting state has a parent below a leaf child. + * + * @return number of internal nodes scaled (degrees of freedom) + */ + public int scaleToRootHeight(final double targetRootHeight) { + double oldRoot = root.getHeight(); + if (oldRoot <= 0.0) { + throw new IllegalArgumentException( + "Cannot scale to root height: current root height is " + oldRoot); + } + return root.scale(targetRootHeight / oldRoot); + } + + /** + * Compute the sum of margins (h_N - max(h_children)) across internal + * non-fake nodes. For sampled-ancestor trees, fake nodes are skipped. + */ + private double computeSumIntervals(final Node node) { + if (node.isLeaf()) { + return 0.0; + } + if (node.isFake()) { + // skip the fake; recurse into the non-direct-ancestor child + if (node.getLeft().isDirectAncestor()) { + return computeSumIntervals(node.getRight()); + } else { + return computeSumIntervals(node.getLeft()); + } + } + double margin = node.getHeight() + - Math.max(node.getLeft().getHeight(), node.getRight().getHeight()); + double sum = margin; + sum += computeSumIntervals(node.getLeft()); + if (node.getRight() != null) { + sum += computeSumIntervals(node.getRight()); + } + return sum; } @Override diff --git a/beast-base/src/main/java/beast/base/inference/Scalable.java b/beast-base/src/main/java/beast/base/inference/Scalable.java index 4f6013c0..3b1187e3 100644 --- a/beast-base/src/main/java/beast/base/inference/Scalable.java +++ b/beast-base/src/main/java/beast/base/inference/Scalable.java @@ -2,36 +2,113 @@ import beast.base.core.Description; -@Description("For StateNodes that can be scaled by a scale/up-down operator") +/** + * A {@code Scalable} represents a state component that can be moved along a + * single positive-real dilation axis. The interface defines three operations + * that must be mutually consistent — together they form the + * Scalable contract: + * + *

    + *
  1. {@link #scale(double)} dilates the component by a factor {@code s} + * and returns the log Jacobian determinant of that move + * (i.e. {@code log |det(∂new/∂old)|}).
  2. + *
  3. {@link #getScalableValue()} reads the component's current position + * on its dilation axis.
  4. + *
  5. {@link #setScalableValue(double)} moves the component so that + * {@code getScalableValue()} returns the supplied target {@code V}, and + * returns the log Jacobian for that move.
  6. + *
+ * + *

The log Jacobian is the move's contribution to the Metropolis-Hastings + * acceptance ratio from the change-of-variables formula. The proposal density + * ratio (the "Hastings ratio" proper, {@code q(reverse)/q(forward)}) lives in + * the calling operator's kernel and is not part of the Scalable's + * return.

+ * + *

The contract requires the following three invariants to hold for any + * valid {@code Scalable x} and any positive scale factor {@code s}:

+ * + *
+ *   // (1) scale-equivariance
+ *   double v0 = x.getScalableValue();
+ *   x.scale(s);
+ *   assert x.getScalableValue() == s * v0;
+ *
+ *   // (2) set is a fixed point of get
+ *   x.setScalableValue(V);
+ *   assert x.getScalableValue() == V;
+ *
+ *   // (3) set composes with scale
+ *   //     x.setScalableValue(x.getScalableValue() * s)
+ *   //     produces the same state as
+ *   //     x.scale(s)
+ * 
+ * + *

The choice of dilation axis (and therefore the meaning of + * {@code getScalableValue}) is bound to the implementation of {@code scale}. + * For example, an affine-scaling parameter exposes its value directly. A tree + * whose {@code scale} is interval-scaling exposes its sum-of-margins. A custom + * {@code Scalable} chooses whichever summary is exactly multiplied by {@code s} + * under its own {@code scale} operation.

+ * + *

{@code scale(s)} is expected to succeed for any positive {@code s} that + * leaves the component in a valid state. Implementations may throw + * {@link IllegalArgumentException} for moves that produce an invalid state; + * such throws act as rejection signals for the calling operator. The contract + * invariants apply when {@code scale} does not throw.

+ * + * @see beast3 issue #20 + */ +@Description("State component that can be dilated along a 1-D axis by scale or up-down operators.") public interface Scalable { /** - * Scale StateNode with amount scale and + * Dilate this component by factor {@code s} along its scaling axis. + * After the call, {@link #getScalableValue()} returns + * {@code s * (its previous value)}. * - * @param scale scaling factor - * @return the number of degrees of freedom used in this operation. This number varies - * for the different types of StateNodes. For example, for real - * valued n-dimensional parameters, it is n, for a tree it is the - * number of internal nodes being scaled. - * @throws IllegalArgumentException when StateNode become not valid, e.g. has - * values outside bounds or negative branch lengths. + * @param s positive scale factor + * @return log Jacobian determinant of this move + * @throws IllegalArgumentException if the move would produce an invalid state */ - abstract public int scale(double scale); + double scale(double s); /** - * only scale the i-th element of the StateNode - * @param i - * @param scale + * Read the component's current position on its dilation axis. + * The contract requires this to be exactly {@code s}-equivariant under + * {@link #scale(double)}. */ - abstract public void scaleOne(int i, double scale); + double getScalableValue(); + + /** + * Move the component so that {@link #getScalableValue()} returns {@code V}. + * Defined as {@code scale(V / getScalableValue())}. + *

+ * Implementations rarely need to override this; the default expresses the + * contract identity {@code setScalableValue(V) ≡ scale(V / getScalableValue())} + * directly. Override only if the dilation axis cannot be reached by a + * single multiplicative scale (rare). + * + * @param V target value (must be positive for typical multiplicative axes) + * @return log Jacobian determinant of this move + * @throws IllegalArgumentException if the current value is zero (no + * multiplicative scale can land at {@code V}) or if the resulting + * state would be invalid + */ + default double setScalableValue(double V) { + double current = getScalableValue(); + if (current == 0.0) { + throw new IllegalArgumentException( + "Cannot set scalable value: current value is zero " + + "(no multiplicative scale lands at " + V + ")"); + } + return scale(V / current); + } + + /** + * Scale only the {@code i}-th element of a multi-dimensional Scalable. + * Not part of the dilation-axis contract above. + */ + void scaleOne(int i, double scale); - default double scaleAll(double scale) { - try { - int d = scale(scale); - return d * Math.log(scale); - } catch (IllegalArgumentException e) { - return Double.NEGATIVE_INFINITY; - } - } - } diff --git a/beast-base/src/main/java/beast/base/inference/operator/UpDownOperator.java b/beast-base/src/main/java/beast/base/inference/operator/UpDownOperator.java index b8856987..9ea83467 100644 --- a/beast-base/src/main/java/beast/base/inference/operator/UpDownOperator.java +++ b/beast-base/src/main/java/beast/base/inference/operator/UpDownOperator.java @@ -67,17 +67,18 @@ public void initAndValidate() { public final double proposal() { final double scale = (scaleFactor + (Randomizer.nextDouble() * ((1.0 / scaleFactor) - scaleFactor))); - int goingUp = 0, goingDown = 0; + double netLogJacobian = 0.0; if (elementWiseInput.get()) { int size = 0; + int numUp = 0, numDown = 0; for (StateNode up : upInput.get()) { if (size == 0) size = ((Function)up).getDimension(); if (size > 0 && ((Function)up).getDimension() != size) { throw new RuntimeException("elementWise=true but parameters of differing lengths!"); } - goingUp += 1; + numUp += 1; } for (StateNode down : downInput.get()) { @@ -85,7 +86,7 @@ public final double proposal() { if (size > 0 && ((Function)down).getDimension() != size) { throw new RuntimeException("elementWise=true but parameters of differing lengths!"); } - goingDown += 1; + numDown += 1; } int index = Randomizer.nextInt(size); @@ -115,12 +116,15 @@ public final double proposal() { index = Randomizer.nextInt(size); } } + // each up StateNode contributes +log(scale), each down -log(scale) + netLogJacobian = (numUp - numDown) * Math.log(scale); } else { try { for (StateNode up : upInput.get()) { up = up.getCurrentEditable(this); - goingUp += ((Scalable)up).scale(scale); + // scale returns log Jacobian = dof * log(scale) + netLogJacobian += ((Scalable)up).scale(scale); } // separated this into second loop because the outsideBounds might return true transiently with // related variables which would be BAD. Note current implementation of outsideBounds isn't dynamic, @@ -134,7 +138,8 @@ public final double proposal() { for (StateNode down : downInput.get()) { down = down.getCurrentEditable(this); - goingDown += ((Scalable)down).scale(1.0 / scale); + // scale returns log Jacobian = dof * log(1/scale) = -dof * log(scale) + netLogJacobian += ((Scalable)down).scale(1.0 / scale); } for (StateNode down : downInput.get()) { if (outsideBounds(down)) { @@ -146,7 +151,8 @@ public final double proposal() { return Double.NEGATIVE_INFINITY; } } - return (goingUp - goingDown - 2) * Math.log(scale); + // kernel-symmetry correction: -2 * log(scale) + return netLogJacobian - 2 * Math.log(scale); } private boolean outsideBounds(final StateNode node) { diff --git a/beast-base/src/main/java/beast/base/inference/operator/kernel/BactrianUpDownOperator.java b/beast-base/src/main/java/beast/base/inference/operator/kernel/BactrianUpDownOperator.java index 34164990..0f315eca 100644 --- a/beast-base/src/main/java/beast/base/inference/operator/kernel/BactrianUpDownOperator.java +++ b/beast-base/src/main/java/beast/base/inference/operator/kernel/BactrianUpDownOperator.java @@ -72,17 +72,18 @@ protected double getScaler(int i) { public final double proposal() { final double scale = getScaler(0); - int goingUp = 0, goingDown = 0; + double netLogJacobian = 0.0; if (elementWiseInput.get()) { int size = 0; + int numUp = 0, numDown = 0; for (StateNode up : upInput.get()) { if (size == 0) size = ((Function)up).getDimension(); if (size > 0 && ((Function)up).getDimension() != size) { throw new RuntimeException("elementWise=true but parameters of differing lengths!"); } - goingUp += 1; + numUp += 1; } for (StateNode down : downInput.get()) { @@ -90,7 +91,7 @@ public final double proposal() { if (size > 0 && ((Function)down).getDimension() != size) { throw new RuntimeException("elementWise=true but parameters of differing lengths!"); } - goingDown += 1; + numDown += 1; } int index = Randomizer.nextInt(size); @@ -114,12 +115,13 @@ public final double proposal() { return Double.NEGATIVE_INFINITY; } } + netLogJacobian = (numUp - numDown) * Math.log(scale); } else { try { for (StateNode up : upInput.get()) { up = up.getCurrentEditable(this); - goingUp += ((Scalable)up).scale(scale); + netLogJacobian += ((Scalable)up).scale(scale); } // separated this into second loop because the outsideBounds might return true transiently with // related variables which would be BAD. Note current implementation of outsideBounds isn't dynamic, @@ -133,7 +135,7 @@ public final double proposal() { for (StateNode down : downInput.get()) { down = down.getCurrentEditable(this); - goingDown += ((Scalable)down).scale(1.0 / scale); + netLogJacobian += ((Scalable)down).scale(1.0 / scale); } for (StateNode down : downInput.get()) { if (outsideBounds(down)) { @@ -145,7 +147,8 @@ public final double proposal() { return Double.NEGATIVE_INFINITY; } } - return (goingUp - goingDown) * Math.log(scale); + // Bactrian kernel is symmetric so no kernel-ratio correction is needed. + return netLogJacobian; } private boolean outsideBounds(final StateNode node) { diff --git a/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java b/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java index 891b587d..39895aef 100644 --- a/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java +++ b/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java @@ -96,7 +96,7 @@ public void log(final long sample, final PrintStream out) { * StateNode methods * */ @Override - public int scale(final double scale) { + public double scale(final double scale) { int nScaled = 0; for (int i = 0; i < values.length; i++) { @@ -111,7 +111,20 @@ public int scale(final double scale) { } } - return nScaled; + return nScaled * Math.log(scale); + } + + /** + * Read this parameter's position on its dilation axis: sum of values. + * Exactly {@code s}-equivariant under {@link #scale(double)}. + */ + @Override + public double getScalableValue() { + double sum = 0.0; + for (Double v : values) { + sum += v; + } + return sum; } @Override diff --git a/beast-base/src/main/java/beast/base/spec/evolution/operator/AdaptableVarianceMultivariateNormalOperator.java b/beast-base/src/main/java/beast/base/spec/evolution/operator/AdaptableVarianceMultivariateNormalOperator.java index fcbe53cb..e401ef64 100644 --- a/beast-base/src/main/java/beast/base/spec/evolution/operator/AdaptableVarianceMultivariateNormalOperator.java +++ b/beast-base/src/main/java/beast/base/spec/evolution/operator/AdaptableVarianceMultivariateNormalOperator.java @@ -779,10 +779,10 @@ public int setValue(final int param, final double value) throws Exception { } return 1; } else if (para instanceof Tree tree) { - double old = tree.getArrayValue(); - double scale = value / old; - ((Tree) para).scale(scale); - return ((Tree) para).getInternalNodeCount(); + // Use the Scalable contract: setScalableValue lands the tree's + // dilation-axis summary (sum of intervals) at exactly `value`. + tree.setScalableValue(value); + return tree.getInternalNodeCount(); } return 0; } @@ -799,7 +799,8 @@ public double getValue(final int param) { } else if (f instanceof IntVectorParam p) { return p.get(getX(param)); } else if (f instanceof Tree t) { - t.getRoot().getHeight(); + // Read the tree's position on its dilation axis (sum of intervals) + return t.getScalableValue(); } throw new RuntimeException("programmer error: should not get here"); } diff --git a/beast-base/src/main/java/beast/base/spec/evolution/operator/IntervalScaleOperator.java b/beast-base/src/main/java/beast/base/spec/evolution/operator/IntervalScaleOperator.java index 7e53a527..038135f8 100644 --- a/beast-base/src/main/java/beast/base/spec/evolution/operator/IntervalScaleOperator.java +++ b/beast-base/src/main/java/beast/base/spec/evolution/operator/IntervalScaleOperator.java @@ -77,13 +77,12 @@ public double proposal() { double logHR = Math.log(scaler) * (numbers); + // scale returns log Jacobian = dim * log(factor) for (Scalable down : downInput.get()) { - int dim = down.scale(1.0/actualScaler);//setValue(down.getValue() / actualScaler); - logHR -= dim * Math.log(actualScaler); + logHR += down.scale(1.0/actualScaler); } for (Scalable up : upInput.get()) { - int dim = up.scale(actualScaler);//setValue(up.getValue() * actualScaler); - logHR += dim * Math.log(actualScaler); + logHR += up.scale(actualScaler); } return logHR; } diff --git a/beast-base/src/main/java/beast/base/spec/evolution/operator/ScaleTreeOperator.java b/beast-base/src/main/java/beast/base/spec/evolution/operator/ScaleTreeOperator.java index 21d7d90b..8d9b1ed2 100644 --- a/beast-base/src/main/java/beast/base/spec/evolution/operator/ScaleTreeOperator.java +++ b/beast-base/src/main/java/beast/base/spec/evolution/operator/ScaleTreeOperator.java @@ -46,10 +46,9 @@ public double proposal() { } else { // scale the beast.tree + // tree.scale returns the log Jacobian (dof * log(scale)) final double scale = getScaler(0, Double.NaN); - final int scaledNodes = tree.scale(scale); - // hastings ratio - return Math.log(scale) * scaledNodes; + return tree.scale(scale); } } catch (Exception e) { diff --git a/beast-base/src/main/java/beast/base/spec/evolution/operator/UpDownOperator.java b/beast-base/src/main/java/beast/base/spec/evolution/operator/UpDownOperator.java index 7f25986f..a716d959 100644 --- a/beast-base/src/main/java/beast/base/spec/evolution/operator/UpDownOperator.java +++ b/beast-base/src/main/java/beast/base/spec/evolution/operator/UpDownOperator.java @@ -107,18 +107,18 @@ protected double getScaler(int i) { public double proposal() { double scale = getScaler(0); - int goingUp = 0, goingDown = 0; - double logHR = 0; + double logHR = 0; if (elementWiseInput.get()) { int size = 0; + int numUp = 0, numDown = 0; for (Scalable up : upInput.get()) { if (size == 0) size = ((Tensor)up).size(); if (size > 0 && ((Tensor)up).size() != size) { throw new RuntimeException("elementWise=true but parameters of differing lengths!"); } - goingUp += 1; + numUp += 1; } for (Scalable down : downInput.get()) { @@ -126,7 +126,7 @@ public double proposal() { if (size > 0 && ((Tensor)down).size() != size) { throw new RuntimeException("elementWise=true but parameters of differing lengths!"); } - goingDown += 1; + numDown += 1; } int index = Randomizer.nextInt(size); @@ -148,12 +148,12 @@ public double proposal() { return Double.NEGATIVE_INFINITY; } } - logHR = (goingUp - goingDown) * Math.log(scale); + logHR = (numUp - numDown) * Math.log(scale); } else { try { if (treesUp.size() > 0) { - + // scale trees up and adjust scale factor double lengthBefore =0, lenghtAfter = 0; for (TreeInterface up : treesUp) { @@ -162,9 +162,9 @@ public double proposal() { lenghtAfter += treeLength(up); } scale = lenghtAfter / lengthBefore; - + } else if (treesDown.size() > 0) { - + // scale trees down and adjust scale factor double lengthBefore =0, lenghtAfter = 0; for (TreeInterface down : treesDown) { @@ -173,12 +173,13 @@ public double proposal() { lenghtAfter += treeLength(down); } scale = 1.0/(lenghtAfter / lengthBefore); - + } - + for (Scalable up : otherUp) { up = (Scalable) ((StateNode) up).getCurrentEditable(this); - goingUp += up.scale(scale); + // scale returns log Jacobian = dof * log(scale) + logHR += up.scale(scale); } // separated this into second loop because the outsideBounds might return true transiently with // related variables which would be BAD. Note current implementation of outsideBounds isn't dynamic, @@ -192,7 +193,8 @@ public double proposal() { for (Scalable down : otherDown) { down = (Scalable) ((StateNode) down).getCurrentEditable(this); - goingDown += down.scale(1.0 / scale); + // scale returns log Jacobian = dof * log(1/scale) = -dof * log(scale) + logHR += down.scale(1.0 / scale); } for (Scalable down : otherDown) { if (outsideBounds(down)) { @@ -203,7 +205,6 @@ public double proposal() { // scale resulted in invalid StateNode, abort proposal return Double.NEGATIVE_INFINITY; } - logHR += (goingUp - goingDown) * Math.log(scale); } return logHR; } diff --git a/beast-base/src/main/java/beast/base/spec/inference/operator/ScaleOperator.java b/beast-base/src/main/java/beast/base/spec/inference/operator/ScaleOperator.java index c6417f5c..82bee40e 100644 --- a/beast-base/src/main/java/beast/base/spec/inference/operator/ScaleOperator.java +++ b/beast-base/src/main/java/beast/base/spec/inference/operator/ScaleOperator.java @@ -145,10 +145,11 @@ public double proposal() { // for the proof. It is supposed to be somewhere in an Alexei/Nicholes article. // all Values assumed independent! + // realVectorParam.scale returns the log Jacobian (dof * log(scale)); + // spec ScaleOperator does not add a kernel-symmetry correction here. final double scale = getScaler(0, realVectorParam.get(0)); - final int computedDoF = realVectorParam.scale(scale); - final int usedDoF = (specifiedDoF > 0) ? specifiedDoF : computedDoF; - logHR = usedDoF * Math.log(scale); + final double paramLogJacobian = realVectorParam.scale(scale); + logHR = (specifiedDoF > 0) ? specifiedDoF * Math.log(scale) : paramLogJacobian; } else { // which position to scale @@ -211,15 +212,14 @@ public double proposal() { } else if (param instanceof RealScalarParam realScalarParam) { final double scale = getScaler(0); - // this set new value - int dim = realScalarParam.scale(scale); + // realScalarParam.scale returns the log Jacobian (= log(scale) for a 1-D scalar) + // and applies the value update as a side effect. + logHR = realScalarParam.scale(scale); if (! realScalarParam.withinBounds(realScalarParam.get()) ) { // reject out of bounds scales return Double.NEGATIVE_INFINITY; } - // hastings ratio - logHR = Math.log(scale); } return logHR; diff --git a/beast-base/src/main/java/beast/base/spec/inference/parameter/CompoundRealScalarParam.java b/beast-base/src/main/java/beast/base/spec/inference/parameter/CompoundRealScalarParam.java index 793d28cb..160a26d5 100644 --- a/beast-base/src/main/java/beast/base/spec/inference/parameter/CompoundRealScalarParam.java +++ b/beast-base/src/main/java/beast/base/spec/inference/parameter/CompoundRealScalarParam.java @@ -150,13 +150,21 @@ protected boolean requiresRecalculation() { } @Override - public int scale(double scale) { - int sum = 0; + public double scale(double scale) { + double sum = 0; for (RealScalarParam p : parameters) { sum += p.scale(scale); } return sum; -// throw new UnsupportedOperationException(); + } + + @Override + public double getScalableValue() { + double sum = 0.0; + for (RealScalarParam p : parameters) { + sum += p.getScalableValue(); + } + return sum; } @Override diff --git a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java index ab44bbd7..d3d1974d 100644 --- a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java +++ b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java @@ -153,10 +153,15 @@ public void close(PrintStream out) { /** {@inheritDoc} */ @Override - public int scale(double scale) { - startEditing(null); - value *= scale; - return 1; + public double scale(double scale) { + startEditing(null); + value *= scale; + return Math.log(scale); + } + + @Override + public double getScalableValue() { + return value; } @Override diff --git a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java index 8c6de25b..aecb53bb 100644 --- a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java +++ b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java @@ -427,7 +427,7 @@ public void close(PrintStream out) { * StateNode methods * */ @Override - public int scale(final double scale) { + public double scale(final double scale) { startEditing(null); int nScaled = 0; @@ -443,7 +443,22 @@ public int scale(final double scale) { } - return nScaled; + return nScaled * Math.log(scale); + } + + /** + * Read this vector's position on its dilation axis. + * The summary is the sum of values: invariant under sign and exactly + * {@code s}-equivariant under {@link #scale(double)}, since each non-zero + * element is multiplied by {@code s} and zero elements stay zero. + */ + @Override + public double getScalableValue() { + double sum = 0.0; + for (double v : values) { + sum += v; + } + return sum; } @Override diff --git a/beast-base/src/test/java/beast/base/evolution/tree/TreeScalableTest.java b/beast-base/src/test/java/beast/base/evolution/tree/TreeScalableTest.java new file mode 100644 index 00000000..d0deb935 --- /dev/null +++ b/beast-base/src/test/java/beast/base/evolution/tree/TreeScalableTest.java @@ -0,0 +1,157 @@ +package beast.base.evolution.tree; + +import beast.base.inference.ScalableContractTest; +import org.junit.jupiter.api.Test; + +import java.util.function.BiConsumer; +import java.util.function.Supplier; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Tests the {@link beast.base.inference.Scalable} contract on {@link Tree}, + * including heterochronous (serially-sampled) trees that the previous + * affine {@code Tree.scale} implementation could not handle for small scale + * factors. + * + *

The contract requires:

+ *
    + *
  • {@code scale(s)} followed by {@code getScalableValue()} returns + * {@code s × original}.
  • + *
  • {@code setScalableValue(V)} lands at exactly {@code V}.
  • + *
  • {@code setScalableValue(get × s)} produces the same state as + * {@code scale(s)}.
  • + *
+ * + *

Under the new interval-style {@code Tree.scale}, the contract holds for + * any positive scale factor on any tree shape (ultrametric or heterochronous), + * and the move never throws.

+ */ +public class TreeScalableTest { + + @Test + void contractHoldsForUltrametricTree() { + ScalableContractTest.assertContractAcrossScales( + () -> buildUltrametric(), + this::assertSameTreeState + ); + } + + @Test + void contractHoldsForHeterochronousTree() { + ScalableContractTest.assertContractAcrossScales( + () -> buildHeterochronous(), + this::assertSameTreeState + ); + } + + @Test + void contractHoldsForLeafIntrudingTopology() { + // 4-tip topology where the always-taller-child path doesn't reach the + // oldest leaf. Under the old affine Tree.scale, scaling by s < 0.5 + // would either throw or produce wrong root height. + ScalableContractTest.assertContractAcrossScales( + () -> buildLeafIntruding(), + this::assertSameTreeState + ); + } + + @Test + void scaleNeverThrowsForHeterochronousSmallScales() { + // Path B fix: the new interval-scale Tree.scale should succeed for any + // positive s on a heterochronous tree, including very small s where the + // old affine implementation threw. + for (double s : new double[] { 0.001, 0.01, 0.1, 0.5, 0.9, 1.1, 10.0 }) { + Tree tree = buildHeterochronous(); + // should not throw + tree.scale(s); + // tree should still be valid: all parents above their children + for (Node n : tree.getNodesAsArray()) { + if (!n.isLeaf()) { + assertTrue(n.getHeight() >= n.getLeft().getHeight(), + "Parent below left child after scale(" + s + ")"); + if (n.getRight() != null) { + assertTrue(n.getHeight() >= n.getRight().getHeight(), + "Parent below right child after scale(" + s + ")"); + } + } + } + } + } + + @Test + void sumIntervalsIsExactlyScaleEquivariant() { + // Spot-check: getScalableValue scales by EXACTLY s under interval scaling. + Tree tree = buildHeterochronous(); + double v0 = tree.getScalableValue(); + tree.scale(1.7); + assertEquals(1.7 * v0, tree.getScalableValue(), Math.abs(1.7 * v0) * 1e-12); + } + + /** Ultrametric: leaves A, B, C all at height 0; internal P at 1; root at 2. */ + private Tree buildUltrametric() { + Node a = leaf("A", 0, 0.0); + Node b = leaf("B", 1, 0.0); + Node c = leaf("C", 2, 0.0); + Node p = internal(3, 1.0, a, b); + Node root = internal(4, 2.0, p, c); + return new Tree(root); + } + + /** Heterochronous: A=0, B=2, C=1, P at 4, root at 5. */ + private Tree buildHeterochronous() { + Node a = leaf("A", 0, 0.0); + Node b = leaf("B", 1, 2.0); + Node c = leaf("C", 2, 1.0); + Node p = internal(3, 4.0, a, b); + Node root = internal(4, 5.0, p, c); + return new Tree(root); + } + + /** + * 4-tip leaf-intrusion topology: A=0, B=0, C=1, D=2. + * Topology is (D, ((B, C), A)). The always-taller-child path from root + * leads through ((B,C), A) to (B,C) to C — bypassing D, which is the + * oldest leaf. Under the old affine Tree.scale, scaling by s < 2/3 + * causes leaves to violate parent constraints. + */ + private Tree buildLeafIntruding() { + Node a = leaf("A", 0, 0.0); + Node b = leaf("B", 1, 0.0); + Node c = leaf("C", 2, 1.0); + Node d = leaf("D", 3, 2.0); + Node y = internal(4, 2.0, b, c); // (B, C) + Node x = internal(5, 3.0, y, a); // ((B, C), A) + Node root = internal(6, 4.0, d, x); + return new Tree(root); + } + + private Node leaf(String id, int nr, double height) { + Node n = new Node(id); + n.setNr(nr); + n.setHeight(height); + return n; + } + + private Node internal(int nr, double height, Node left, Node right) { + Node n = new Node(); + n.setNr(nr); + n.setHeight(height); + n.addChild(left); + n.addChild(right); + return n; + } + + /** Compare two Trees node-for-node by height. */ + private void assertSameTreeState(Tree a, Tree b) { + Node[] na = a.getNodesAsArray(); + Node[] nb = b.getNodesAsArray(); + assertEquals(na.length, nb.length, "Trees should have same number of nodes"); + for (int i = 0; i < na.length; i++) { + assertEquals(na[i].getHeight(), nb[i].getHeight(), + Math.abs(na[i].getHeight()) * 1e-9 + 1e-9, + "Node " + i + " (id=" + na[i].getID() + ") height should match across paths"); + } + } +} diff --git a/beast-base/src/test/java/beast/base/inference/ScalableContractTest.java b/beast-base/src/test/java/beast/base/inference/ScalableContractTest.java new file mode 100644 index 00000000..17c55fe8 --- /dev/null +++ b/beast-base/src/test/java/beast/base/inference/ScalableContractTest.java @@ -0,0 +1,94 @@ +package beast.base.inference; + +import java.util.function.BiConsumer; +import java.util.function.Supplier; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Reusable test helper that asserts the three {@link Scalable} contract + * invariants on a supplied implementation. + * + *

The contract:

+ * + *
+ *   // (1) scale-equivariance
+ *   double v0 = x.getScalableValue();
+ *   x.scale(s);
+ *   assert x.getScalableValue() == s * v0;
+ *
+ *   // (2) set is a fixed point of get
+ *   x.setScalableValue(V);
+ *   assert x.getScalableValue() == V;
+ *
+ *   // (3) set ∘ get×s ≡ scale
+ *   //     x.setScalableValue(x.getScalableValue() * s)
+ *   //     produces the same state as
+ *   //     x.scale(s)
+ * 
+ * + *

Per-class tests should call {@link #assertContract} with a factory that + * produces a fresh, identically-initialised instance on each call, and an + * {@code assertSameState} comparator that checks full internal state (not just + * the dilation summary).

+ */ +public class ScalableContractTest { + + public static final double EPSILON = 1e-9; + + /** + * Assert the three contract invariants on instances produced by {@code factory} + * with scale factor {@code s} and a state-comparison callback. + * + * @param factory produces a fresh Scalable on each call (state must be deterministic) + * @param s positive scale factor to test (different from 1.0) + * @param assertSameState asserts that two Scalables have identical internal state + */ + public static void assertContract( + Supplier factory, + double s, + BiConsumer assertSameState) { + + // (1) scale-equivariance: getScalableValue() after scale(s) equals s × original + T a = factory.get(); + double v0 = a.getScalableValue(); + double logJacobian = a.scale(s); + assertEquals(s * v0, a.getScalableValue(), Math.abs(s * v0) * EPSILON + EPSILON, + "scale(" + s + ") should make getScalableValue() return s × " + v0 + + " = " + (s * v0) + ", got " + a.getScalableValue()); + // sanity: logJacobian should be finite and have correct sign for nontrivial moves + assertEquals(true, Double.isFinite(logJacobian), + "scale should return a finite log Jacobian, got " + logJacobian); + + // (2) set is a fixed point of get: getScalableValue() after setScalableValue(V) equals V + T b = factory.get(); + double v1 = b.getScalableValue(); + double targetV = v1 * 1.7; + b.setScalableValue(targetV); + assertEquals(targetV, b.getScalableValue(), Math.abs(targetV) * EPSILON + EPSILON, + "setScalableValue(" + targetV + ") should make getScalableValue() return " + + targetV + ", got " + b.getScalableValue()); + + // (3) set ∘ get×s ≡ scale: the two paths produce the same internal state + T c = factory.get(); + double vc = c.getScalableValue(); + c.scale(s); + + T d = factory.get(); + d.setScalableValue(vc * s); + + assertSameState.accept(c, d); + } + + /** + * Convenience overload that asserts the contract for several scale factors + * including values both less than and greater than 1.0. + */ + public static void assertContractAcrossScales( + Supplier factory, + BiConsumer assertSameState) { + for (double s : new double[] { 0.5, 0.9, 1.1, 1.5, 2.0, 3.7 }) { + assertContract(factory, s, assertSameState); + } + } +} diff --git a/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamScalableTest.java b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamScalableTest.java new file mode 100644 index 00000000..355033c8 --- /dev/null +++ b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamScalableTest.java @@ -0,0 +1,39 @@ +package beast.base.spec.inference.parameter; + +import beast.base.inference.ScalableContractTest; +import beast.base.spec.domain.PositiveReal; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Tests the {@link beast.base.inference.Scalable} contract on + * {@link RealScalarParam}. + */ +public class RealScalarParamScalableTest { + + @Test + void contractHoldsForPositiveScalar() { + ScalableContractTest.assertContractAcrossScales( + () -> { + RealScalarParam p = new RealScalarParam<>(1.5, PositiveReal.INSTANCE); + p.initAndValidate(); + return p; + }, + (a, b) -> assertEquals(a.get(), b.get(), ScalableContractTest.EPSILON, + "RealScalarParam internal value should match across scale and set+get×s paths") + ); + } + + @Test + void contractHoldsForLargerInitialValue() { + ScalableContractTest.assertContractAcrossScales( + () -> { + RealScalarParam p = new RealScalarParam<>(42.0, PositiveReal.INSTANCE); + p.initAndValidate(); + return p; + }, + (a, b) -> assertEquals(a.get(), b.get(), ScalableContractTest.EPSILON) + ); + } +} diff --git a/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java index 734a0583..e026a61a 100644 --- a/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java +++ b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java @@ -108,13 +108,13 @@ void testStoreAndRestore() { /* * - Purpose: verify scale(...) and scaleOne(...) multiply the stored value and * return expected counts. - * - Assertions: scale returns 1 and multiplies value; - * scaleOne multiplies value too. + * - Assertions: scale returns log Jacobian (= log(s) for a 1-D scalar) + * and multiplies value; scaleOne multiplies value too. */ @Test void testScaleAndScaleOne() { RealScalarParam param = new RealScalarParam(3.0, Real.INSTANCE); - assertEquals(1, param.scale(2.0)); + assertEquals(Math.log(2.0), param.scale(2.0), 1e-12); assertEquals(6.0, param.get(), 1e-12); param.scaleOne(0, 0.5); assertEquals(3.0, param.get(), 1e-12); diff --git a/beast-base/src/test/java/beast/base/spec/inference/parameter/RealVectorParamScalableTest.java b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealVectorParamScalableTest.java new file mode 100644 index 00000000..46d97287 --- /dev/null +++ b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealVectorParamScalableTest.java @@ -0,0 +1,48 @@ +package beast.base.spec.inference.parameter; + +import beast.base.inference.ScalableContractTest; +import beast.base.spec.domain.PositiveReal; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Tests the {@link beast.base.inference.Scalable} contract on + * {@link RealVectorParam}. + */ +public class RealVectorParamScalableTest { + + @Test + void contractHoldsForPositiveVector() { + ScalableContractTest.assertContractAcrossScales( + () -> { + RealVectorParam p = new RealVectorParam<>( + new double[] { 1.0, 2.5, 3.7, 0.4 }, PositiveReal.INSTANCE); + p.initAndValidate(); + return p; + }, + this::assertSameVectorState + ); + } + + @Test + void contractHoldsForVectorWithMixedMagnitudes() { + ScalableContractTest.assertContractAcrossScales( + () -> { + RealVectorParam p = new RealVectorParam<>( + new double[] { 0.001, 100.0, 5.5 }, PositiveReal.INSTANCE); + p.initAndValidate(); + return p; + }, + this::assertSameVectorState + ); + } + + private void assertSameVectorState(RealVectorParam a, RealVectorParam b) { + assertEquals(a.size(), b.size(), "Vector sizes should match"); + for (int i = 0; i < a.size(); i++) { + assertEquals(a.get(i), b.get(i), ScalableContractTest.EPSILON, + "Element " + i + " should match across scale and set+get×s paths"); + } + } +} diff --git a/beast-base/src/test/java/test/beast/evolution/operator/ScaleOperatorTest.java b/beast-base/src/test/java/test/beast/evolution/operator/ScaleOperatorTest.java index 790e5e24..57c9b095 100644 --- a/beast-base/src/test/java/test/beast/evolution/operator/ScaleOperatorTest.java +++ b/beast-base/src/test/java/test/beast/evolution/operator/ScaleOperatorTest.java @@ -34,11 +34,16 @@ public void testTreeScaling() { assertEquals(0.5, node[2].getHeight(), EPSILON); assertEquals(0.5, node[3].getHeight(), EPSILON); - // internal nodes, all scaled - // first determine scale factor - double scale = node[4].getHeight() / 1.0; - assertEquals(1.0 * scale, node[4].getHeight(), EPSILON); - assertEquals(1.5 * scale, node[5].getHeight(), EPSILON); - assertEquals(2.0 * scale, node[6].getHeight(), EPSILON); + // Under interval-scaling Tree.scale: + // * node4 (parent of leaves at h=0): margin 1.0 -> 1.0*s, new h = s + // * node5 (parent of leaves at h=0.5): margin 1.0 -> 1.0*s, new h = 0.5 + s + // * node6 (root, children node4=s, node5=0.5+s): + // old margin = 2.0 - 1.5 = 0.5; after recurse min child h = 0.5 + s + // new h = (0.5 + s) + 0.5*s = 0.5 + 1.5*s + // Recover s from node4 (whose taller child is a leaf at h=0). + double scale = node[4].getHeight(); + assertEquals(scale, node[4].getHeight(), EPSILON); + assertEquals(0.5 + scale, node[5].getHeight(), EPSILON); + assertEquals(0.5 + 1.5 * scale, node[6].getHeight(), EPSILON); } } diff --git a/beast-base/src/test/java/test/beast/evolution/tree/TreeTest.java b/beast-base/src/test/java/test/beast/evolution/tree/TreeTest.java index 6cf47cd6..97c4c54a 100644 --- a/beast-base/src/test/java/test/beast/evolution/tree/TreeTest.java +++ b/beast-base/src/test/java/test/beast/evolution/tree/TreeTest.java @@ -27,18 +27,22 @@ public void testTreeScaling() { assertEquals(2.0, node[6].getHeight(), EPSILON); treeParser.scale(2.0); - + // leaf node node = treeParser.getNodesAsArray(); assertEquals(0.0, node[0].getHeight(), EPSILON); assertEquals(0.0, node[1].getHeight(), EPSILON); - // leaf node, not scaled + // leaves are preserved (not scaled) under interval scaling assertEquals(0.5, node[2].getHeight(), EPSILON); assertEquals(0.5, node[3].getHeight(), EPSILON); - // internal nodes, all scaled + // Under interval-scaling Tree.scale(2.0): + // * node4: margin 1.0 -> 2.0; new h = 0 + 2.0 = 2.0 + // * node5: margin 1.0 -> 2.0; new h = 0.5 + 2.0 = 2.5 + // * node6: old margin 0.5 -> 1.0; new min child h = max(2.0, 2.5) = 2.5 + // new h = 2.5 + 1.0 = 3.5 assertEquals(2.0, node[4].getHeight(), EPSILON); - assertEquals(3.0, node[5].getHeight(), EPSILON); - assertEquals(4.0, node[6].getHeight(), EPSILON); - + assertEquals(2.5, node[5].getHeight(), EPSILON); + assertEquals(3.5, node[6].getHeight(), EPSILON); + } } From 338b652678576c31101fba83b48ad066ef6577b7 Mon Sep 17 00:00:00 2001 From: Alexei Drummond Date: Sat, 2 May 2026 12:24:19 +1200 Subject: [PATCH 2/6] BactrianScaleOperatorTest: update expected heights for interval scaling Same change pattern as TreeTest and the legacy ScaleOperatorTest in the parent commit. BactrianScaleOperatorTest is @Tag("slow") so it was not exercised in the default test run; surfaced when running mvn -Pslow-tests test. --- .../operator/BactrianScaleOperatorTest.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/beast-base/src/test/java/test/beast/evolution/operator/BactrianScaleOperatorTest.java b/beast-base/src/test/java/test/beast/evolution/operator/BactrianScaleOperatorTest.java index 3718015c..6dafb5e4 100644 --- a/beast-base/src/test/java/test/beast/evolution/operator/BactrianScaleOperatorTest.java +++ b/beast-base/src/test/java/test/beast/evolution/operator/BactrianScaleOperatorTest.java @@ -144,12 +144,17 @@ public void testTreeScaling() { assertEquals(0.5, node[2].getHeight(), EPSILON); assertEquals(0.5, node[3].getHeight(), EPSILON); - // internal nodes, all scaled - // first determine scale factor - double scale = node[4].getHeight() / 1.0; - assertEquals(1.0 * scale, node[4].getHeight(), EPSILON); - assertEquals(1.5 * scale, node[5].getHeight(), EPSILON); - assertEquals(2.0 * scale, node[6].getHeight(), EPSILON); + // Under interval-scaling Tree.scale (CompEvol/beast3#70): + // * node4 (parent of leaves at h=0): margin 1.0 -> 1.0*s, new h = s + // * node5 (parent of leaves at h=0.5): margin 1.0 -> 1.0*s, new h = 0.5 + s + // * node6 (root, children node4=s, node5=0.5+s): + // old margin = 2.0 - 1.5 = 0.5; after recurse min child h = 0.5 + s + // new h = (0.5 + s) + 0.5*s = 0.5 + 1.5*s + // Recover s from node4 (whose taller child is a leaf at h=0). + double scale = node[4].getHeight(); + assertEquals(scale, node[4].getHeight(), EPSILON); + assertEquals(0.5 + scale, node[5].getHeight(), EPSILON); + assertEquals(0.5 + 1.5 * scale, node[6].getHeight(), EPSILON); } From 193f66fc18e9861795dcfe7c7e16bca17f263777 Mon Sep 17 00:00:00 2001 From: Alexei Drummond Date: Sat, 2 May 2026 12:33:34 +1200 Subject: [PATCH 3/6] Widen MCMC convergence tolerances to 3 SE; fix seed for reproducibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UpDownOperatorTest.testLogNormalDistribution and RealRandomWalkOperatorTest.testNormalDistribution were failing intermittently because their tolerance (5e-3) was at ~2.7 SE of the sample mean — a ~5%/~10% expected failure rate per run by design. Computing 3 SE properly using ESS rather than nominal sample count: UpDownOperatorTest (LogNormal M=1, S=1, no tree, ~498k samples, ESS near nominal): SE = sqrt(1.72 / 498000) ~= 1.86e-3, 3 SE ~= 5.6e-3. Tolerance set to 6e-3. RealRandomWalkOperatorTest (Normal mean=1, var=1, documented Mirror ESS = 196k from existing comment): SE = sqrt(1 / 196000) ~= 2.26e-3, 3 SE ~= 6.8e-3. Tolerance set to 7e-3. Re-enabled Randomizer.setSeed(127) in RealRandomWalkOperatorTest (it had been commented out, leaving the test non-deterministic against whatever Randomizer state preceded it). Expected failure rate at the new bounds: 0.27% per test run. These are pre-existing flake fixes surfaced when running mvn -Pslow-tests test against the Scalable contract change (CompEvol/beast3#70). The identical failing values reproduce on master; not caused by the contract change. --- .../evolution/operator/RealRandomWalkOperatorTest.java | 10 ++++++---- .../spec/evolution/operator/UpDownOperatorTest.java | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/beast-base/src/test/java/beast/base/spec/evolution/operator/RealRandomWalkOperatorTest.java b/beast-base/src/test/java/beast/base/spec/evolution/operator/RealRandomWalkOperatorTest.java index 9d04b59e..ee026a00 100644 --- a/beast-base/src/test/java/beast/base/spec/evolution/operator/RealRandomWalkOperatorTest.java +++ b/beast-base/src/test/java/beast/base/spec/evolution/operator/RealRandomWalkOperatorTest.java @@ -36,9 +36,8 @@ public void resetRng() { @Test public void testNormalDistribution() throws Exception { - // Fix seed: will hopefully ensure success of test unless something - // goes terribly wrong. -// Randomizer.setSeed(127); + // Fix seed: ensures reproducibility at the test's 3-SE tolerance. + Randomizer.setSeed(127); // Assemble model: RealScalarParam param = new RealScalarParam<>(0.0, Real.INSTANCE); @@ -97,7 +96,10 @@ public void testNormalDistribution() throws Exception { } double m = StatUtils.mean(v); double s = StatUtils.variance(v); - assertEquals(1.0, m, 5e-3); + // 3 SE for sample mean of Normal(1, 1) with documented ESS ~196k + // (Mirror kernel, see comment above): SE = sqrt(1 / 196000) ~= 2.26e-3, + // 3 SE ~= 6.8e-3. Expected failure rate at this tolerance: 0.27%. + assertEquals(1.0, m, 7e-3); assertEquals(1.0, s, 5e-3); } diff --git a/beast-base/src/test/java/beast/base/spec/evolution/operator/UpDownOperatorTest.java b/beast-base/src/test/java/beast/base/spec/evolution/operator/UpDownOperatorTest.java index d42c251e..2250d5ac 100644 --- a/beast-base/src/test/java/beast/base/spec/evolution/operator/UpDownOperatorTest.java +++ b/beast-base/src/test/java/beast/base/spec/evolution/operator/UpDownOperatorTest.java @@ -124,7 +124,10 @@ private void doMCMCrun(RealScalar param, Loggable param1, Loggable double m = StatUtils.mean(v); double median = StatUtils.percentile(v, 50); double s = StatUtils.variance(v, 50); - assertEquals(1.0, m, 5e-3); + // 3 SE for sample mean of ~498k LogNormal(M=1, S=1) draws (ESS ~ N + // for parameter-only chain): SE = sqrt((exp(1)-1) / 498000) ~= 1.86e-3, + // 3 SE ~= 5.6e-3. Expected failure rate at this tolerance: 0.27%. + assertEquals(1.0, m, 6e-3); assertEquals(Math.exp(-0.5), median, 5e-3); assertEquals(Math.exp(1)-1, s, 1e-1); assertEquals(0.0854, StatUtils.percentile(v, 2.5), 5e-3); From f92ac389a276300ee934b87fe3d71b06f136f53e Mon Sep 17 00:00:00 2001 From: Alexei Drummond Date: Sat, 2 May 2026 13:01:50 +1200 Subject: [PATCH 4/6] scripts: lab-meeting beamer slides for Scalable contract PR #70 --- scripts/scalable-contract-talk.pdf | Bin 0 -> 252322 bytes scripts/scalable-contract-talk.tex | 357 +++++++++++++++++++++++++++++ 2 files changed, 357 insertions(+) create mode 100644 scripts/scalable-contract-talk.pdf create mode 100644 scripts/scalable-contract-talk.tex diff --git a/scripts/scalable-contract-talk.pdf b/scripts/scalable-contract-talk.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3e611256c173389a4b389865250d63fbfbe92240 GIT binary patch literal 252322 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

CUbE#bltZQHN@ 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 literal 0 HcmV?d00001 diff --git a/scripts/scalable-contract-talk.tex b/scripts/scalable-contract-talk.tex new file mode 100644 index 00000000..c751f0df --- /dev/null +++ b/scripts/scalable-contract-talk.tex @@ -0,0 +1,357 @@ +% !TEX program = pdflatex +\documentclass[aspectratio=169,11pt]{beamer} + +\usetheme{Madrid} +\usecolortheme{seahorse} +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{footline}[frame number] + +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{listings} +\usepackage{booktabs} +\usepackage{tikz} +\usetikzlibrary{arrows.meta,positioning} + +\lstset{ + basicstyle=\ttfamily\scriptsize, + keywordstyle=\color{blue!70!black}\bfseries, + commentstyle=\color{green!50!black}, + stringstyle=\color{red!60!black}, + breaklines=true, + showstringspaces=false, + columns=fullflexible, + frame=single, + backgroundcolor=\color{gray!8}, + rulecolor=\color{gray!40}, + xleftmargin=2pt, + xrightmargin=2pt, + language=Java, +} + +\definecolor{beastblue}{RGB}{40,80,140} +\definecolor{beastorange}{RGB}{200,100,20} +\setbeamercolor{frametitle}{fg=beastblue} +\setbeamercolor{title}{fg=beastblue} +\setbeamercolor{structure}{fg=beastblue} + +\newcommand{\pkg}[1]{\texttt{\color{beastorange}#1}} +\newcommand{\code}[1]{\texttt{#1}} + +\title{The Scalable Contract} +\subtitle{Resolving beast3 issue \#20: a binding three-method contract on \texttt{Scalable}} +\author{Alexei Drummond} +\date{5 May 2026} + +\begin{document} + +% ============================================================ +\begin{frame} +\titlepage +\end{frame} + +% ============================================================ +\begin{frame}{The blocker} +Joelle Barido-Sottani has been blocked porting custom-tree packages to beast3 since 26 March. + +\vspace{1em} + +Issue \href{https://github.com/CompEvol/beast3/issues/20}{CompEvol/beast3\#20}, opened by Remco in October 2025. + +\vspace{1em} + +Two distinct problems she ran into: + +\begin{enumerate} +\item The old \code{Scalable} interface returns degrees of freedom (\code{int}), which encodes a specific Hastings-ratio shape (\code{dof $\times$ log(s)}). +For her custom trees the HR isn't of that shape. + +\item The new spec \code{UpDownOperator} bypasses \code{Tree.scale()} entirely and runs its own recursion. +Even if she fixed her tree's \code{scale()}, UpDown wouldn't call it. +\end{enumerate} +\end{frame} + +% ============================================================ +\begin{frame}[fragile]{The old contract} +\begin{lstlisting} +public interface Scalable { + int scale(double s); // returns dof + void scaleOne(int i, double s); + default double scaleAll(double s) { + return scale(s) * Math.log(s); + } +} +\end{lstlisting} + +\vspace{0.5em} + +\textbf{What's wrong:} + +\begin{itemize} +\item \code{int dof} is a stand-in for one specific HR formula. +Operators reconstruct \code{dof $\times$ log(s)} as the move's Jacobian contribution. +\item Anything that scales differently (interval scaling, custom trees, IntervalScaleOperator) has to bypass the interface and compute HR inline. +\item The interface gives no way to ask ``what does this Scalable use as its dilation axis?'' +\end{itemize} +\end{frame} + +% ============================================================ +\begin{frame}{What does \texttt{scale} actually return?} +The Metropolis-Hastings acceptance ratio has three parts: + +\begin{enumerate} +\item \textbf{Target ratio}: $\pi(x') / \pi(x)$. +\item \textbf{Proposal ratio} (the Hastings ratio proper): $q(x \mid x') / q(x' \mid x)$. +\item \textbf{Jacobian determinant}: $|\det(\partial x' / \partial x)|$ from the change of variables. +\end{enumerate} + +\vspace{1em} + +\code{Scalable.scale(s)} can only sensibly return the \textbf{Jacobian} of the deterministic part of the move. + +\vspace{0.5em} + +The proposal ratio depends on how the operator drew \code{s} (uniform-on-log, Bactrian, Gaussian, ...) and belongs to the operator's kernel. + +\vspace{0.5em} + +\textbf{Joelle's option (1)} of returning ``the HR'' is right in spirit; the precise refinement is to return the log Jacobian determinant. +\end{frame} + +% ============================================================ +\begin{frame}[fragile]{The new contract} +\begin{lstlisting} +public interface Scalable { + double scale(double s); // returns log Jacobian + double getScalableValue(); // current pos. on dilation axis + default double setScalableValue(double V) { + return scale(V / getScalableValue()); + } + void scaleOne(int i, double s); +} +\end{lstlisting} + +\vspace{0.5em} + +Three methods, mutually consistent on a single dilation axis. +\end{frame} + +% ============================================================ +\begin{frame}[fragile]{The three invariants} +For any valid Scalable \code{x} and positive \code{s}: + +\begin{enumerate} +\item \textbf{Scale-equivariance.} After \code{scale(s)}, \code{getScalableValue()} returns $s \times$ its previous value. +\begin{lstlisting} +double v0 = x.getScalableValue(); +x.scale(s); +assert x.getScalableValue() == s * v0; +\end{lstlisting} + +\item \textbf{Set is a fixed point of get.} +\begin{lstlisting} +x.setScalableValue(V); +assert x.getScalableValue() == V; +\end{lstlisting} + +\item \textbf{Set composes with scale.} +\begin{lstlisting} +x.setScalableValue(x.getScalableValue() * s) == x.scale(s); +\end{lstlisting} +\end{enumerate} + +\vspace{0.5em} + +The default \code{setScalableValue} expresses (3) directly. +\end{frame} + +% ============================================================ +\begin{frame}{What is the dilation axis?} +\code{getScalableValue} must return whatever quantity \emph{actually} scales by exactly \code{s} under the implementer's \code{scale}. + +\vspace{1em} + +\begin{tabular}{ll} +\toprule +\textbf{Implementer} & \textbf{Dilation summary} \\ +\midrule +\code{RealScalarParam} & the value itself \\ +\code{RealVectorParam} & sum of values \\ +\code{Tree} (interval scaling) & sum of margins \\ +\code{Tree} (affine height scaling) & root height \\ +Joelle's custom tree & whatever her scale preserves \\ +\bottomrule +\end{tabular} + +\vspace{1em} + +\textbf{The contract is enforced per-implementation.} +A type that violates the invariants is not a valid Scalable. +\end{frame} + +% ============================================================ +\begin{frame}{Why interval scaling for \texttt{Tree.scale}?} +The old \code{Tree.scale(s)} multiplied internal heights by \code{s} (affine). +For a heterochronous tree with leaves at \code{h\_c > 0} and parent at \code{h\_N}, +the move \textbf{throws} when \code{s < h\_c / h\_N}. + +\vspace{1em} + +This is not an edge case. +Most BEAST analyses with sampling dates run on heterochronous trees. + +\vspace{1em} + +\textbf{Interval scaling}: multiply each internal node's margin (height above its taller child) by \code{s}. + +\begin{itemize} +\item Tip dates preserved by construction. +\item Move is valid for any positive \code{s}; never throws. +\item Sum of margins is exactly \code{s}-equivariant: matches \code{getScalableValue}. +\item For binary trees, the dof count equals the number of margins, +so operator HRs are unchanged. +\end{itemize} +\end{frame} + +% ============================================================ +\begin{frame}{Affine semantics retained where needed} +Some callers genuinely want ``set my root to exactly this height'' with affine semantics. + +\vspace{1em} + +\code{Tree.scaleToRootHeight(double targetHeight)} preserves the old affine behaviour as a separate helper, outside the contract. + +\begin{itemize} +\item Multiplies internal heights by \code{targetHeight / oldRoot}. +\item May throw \code{IllegalArgumentException} for invalid configurations. +\item Used by \code{StarBeastStartState} init code. +\item Not part of the Scalable contract. +\end{itemize} + +\vspace{1em} + +Two methods, two purposes: \code{scale} for moves, \code{scaleToRootHeight} for setup. +\end{frame} + +% ============================================================ +\begin{frame}{AMVN now reaches its proposed value} +Before: AMVN proposed a target root height $V$, called \code{tree.scale(V/oldRoot)}. + +\vspace{0.5em} + +For non-ultrametric trees under affine scaling, the move sometimes \textbf{threw}. +For non-ultrametric trees under interval scaling, the root would end up at some height other than $V$. +Either way, AMVN's empirical covariance bookkeeping was wrong. + +\vspace{1em} + +After: AMVN parameterises trees by sum-of-margins via \code{getScalableValue} / \code{setScalableValue}. +\code{setScalableValue(V)} reduces to \code{scale(V / sum\_margins)}. + +\begin{itemize} +\item Sum of margins equals $V$ exactly, by the contract. +\item AMVN's covariance is now updated against the realised state. +\item Side benefit: fixes a latent missing \texttt{return} in spec AMVN's \code{getValue} for trees. +\end{itemize} +\end{frame} + +% ============================================================ +\begin{frame}{Test plan} +Three layers of testing in \href{https://github.com/CompEvol/beast3/pull/70}{PR \#70}: + +\begin{itemize} +\item \textbf{ScalableContractTest harness}: a reusable helper that asserts the three invariants on any Scalable. Per-class tests for \code{RealScalarParam}, \code{RealVectorParam}, \code{Tree} on ultrametric, heterochronous, and leaf-intruding fixtures. + +\item \textbf{408 existing beast-base unit tests} all pass. + +\item \textbf{Heterochronous MCMC integration}: 10 \code{TipTimeTest} chains under \texttt{-Pslow-tests}. +Real chains on tip-dated data converge to BEAST1 reference values within tolerance. +\textit{Tree height: $15147 \pm 73$, expected $15000 \pm 70$, ESS $\sim$22000.} +\end{itemize} + +\vspace{1em} + +Statistical-tolerance fix on two slow tests (\code{UpDownOperatorTest}, \code{RealRandomWalkOperatorTest}): tolerances widened to 3 SE using ESS rather than nominal sample count, so they fail less often. +\end{frame} + +% ============================================================ +\begin{frame}{Downstream impact} +Binding API change. +Any package that implements \code{Scalable} or stores the int return needs to update. + +\vspace{1em} + +\begin{tabular}{lll} +\toprule +\textbf{Package} & \textbf{Impact} & \textbf{Status} \\ +\midrule +Mascot & none (no \code{Scalable}) & compiles clean \\ +beast-classic & none & compiles clean \\ +LPhyBeast core & none & compiles clean \\ +BEASTLabs & 2 files & migrated, all 83 tests pass \\ +\bottomrule +\end{tabular} + +\vspace{1em} + +BEASTLabs migration in parallel \href{https://github.com/BEAST2-Dev/BEASTLabs/pull/29}{PR \#29}: + +\begin{itemize} +\item \code{PrevalenceList.scale} returns log Jacobian; new \code{getScalableValue} returns sum of node times. +\item \code{TreeScaleOperator} consumes log Jacobian directly; HR factored as \code{treeLogJ $-$ 2 log(s)}. +\end{itemize} +\end{frame} + +% ============================================================ +\begin{frame}{Out of scope (deferred)} +Operator-design questions, separable from the interface contract: + +\begin{itemize} +\item Spec \code{UpDownOperator}'s \code{actualScaler = lengthAfter / lengthBefore} logic for tree + up/down combinations. +\item Whether \code{IntervalScaleOperator} should collapse into \code{UpDownOperator} now that \code{Tree.scale} does interval scaling. +\item AMVN's covariance behaviour for non-ultrametric trees beyond the proposal-target fix. +\item Whether tree-aware operators should use the kernel \code{s} or an effective tree-dilation factor for non-tree up/down parameters. +\end{itemize} + +\vspace{1em} + +The interface contract enables these to be tackled separately on their own merits. +\end{frame} + +% ============================================================ +\begin{frame}{Timeline} +\begin{itemize} +\item \textbf{2 May}: \href{https://github.com/CompEvol/beast3/pull/70}{PR \#70} and \href{https://github.com/BEAST2-Dev/BEASTLabs/pull/29}{BEASTLabs \#29} ready for review. +\item \textbf{Awaiting}: Remco's review (he owns beast-base). +\item \textbf{Proposed at next stakeholders meeting}: this is the last substantive API change to the beast core before an official release. +Aim for release on the BEAST website mid-June. +\end{itemize} +\end{frame} + +% ============================================================ +\begin{frame}{Summary} +\begin{block}{The contract} +\code{scale(s)} returns the log Jacobian determinant of a move along a single dilation axis. +\code{getScalableValue} reads position on that axis. +\code{setScalableValue(V) = scale(V / getScalableValue())}. +\end{block} + +\vspace{0.5em} + +\begin{block}{The Tree side} +\code{Tree.scale} does interval scaling and never throws. +Sum of margins is the dilation summary. +\code{Tree.scaleToRootHeight} preserves affine semantics where they were genuinely wanted. +\end{block} + +\vspace{0.5em} + +\begin{block}{The result} +Joelle's custom trees can implement the contract directly. +AMVN works correctly on non-ultrametric trees. +408 + 9 + 10 tests pass. +Mid-June beast3 release on track. +\end{block} +\end{frame} + +\end{document} From 1890f2fb045889067ed001b37227a48f4dd4eb0f Mon Sep 17 00:00:00 2001 From: alexeid Date: Mon, 4 May 2026 14:05:32 +1200 Subject: [PATCH 5/6] Remove scaleOne from Scalable contract scaleOne had no production callers (only one test invocation) and was inconsistent with the contract added in this PR: void return doesn't compose with scale's log-Jacobian, and there was no per-index getter for equivariance to be defined against. On Tree it was also stuck on node-affine semantics, mismatched with the new interval-scaling scale. Per-component scaling will be reintroduced on a separate VectorScalable subtype paired with getScalableValues() when an actual caller (e.g. AVMN over tree intervals) lands. --- .../java/beast/base/evolution/tree/Tree.java | 17 ----------------- .../java/beast/base/inference/Scalable.java | 6 ------ .../base/inference/parameter/RealParameter.java | 6 ------ .../inference/parameter/RealScalarParam.java | 6 ------ .../inference/parameter/RealVectorParam.java | 6 ------ .../parameter/RealScalarParamTest.java | 10 ++++------ 6 files changed, 4 insertions(+), 47 deletions(-) diff --git a/beast-base/src/main/java/beast/base/evolution/tree/Tree.java b/beast-base/src/main/java/beast/base/evolution/tree/Tree.java index e161e2dc..587c8a5a 100644 --- a/beast-base/src/main/java/beast/base/evolution/tree/Tree.java +++ b/beast-base/src/main/java/beast/base/evolution/tree/Tree.java @@ -731,23 +731,6 @@ private double computeSumIntervals(final Node node) { return sum; } - @Override - public void scaleOne(int i, final double scale) { - startEditing(null); - double h = m_nodes[i].getHeight(); - double newHeight = h * scale; - for (Node child : m_nodes[i].children) { - if (newHeight < child.getHeight()) { - throw new IllegalArgumentException("scale sets nodes below child result in negative branch length"); - } - } - if (!m_nodes[i].isRoot() && newHeight > m_nodes[i].getParent().getHeight()) { - throw new IllegalArgumentException("scale sets nodes above parent result in negative branch length"); - } - m_nodes[i].setHeight(newHeight); - } - - // /** // * The same as scale but with option to scale all sampled nodes // * @param scale diff --git a/beast-base/src/main/java/beast/base/inference/Scalable.java b/beast-base/src/main/java/beast/base/inference/Scalable.java index 3b1187e3..c398d879 100644 --- a/beast-base/src/main/java/beast/base/inference/Scalable.java +++ b/beast-base/src/main/java/beast/base/inference/Scalable.java @@ -105,10 +105,4 @@ default double setScalableValue(double V) { return scale(V / current); } - /** - * Scale only the {@code i}-th element of a multi-dimensional Scalable. - * Not part of the dilation-axis contract above. - */ - void scaleOne(int i, double scale); - } diff --git a/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java b/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java index 39895aef..e909417e 100644 --- a/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java +++ b/beast-base/src/main/java/beast/base/inference/parameter/RealParameter.java @@ -127,12 +127,6 @@ public double getScalableValue() { return sum; } - @Override - public void scaleOne(int i, double scale) { - values[i] *= scale; - } - - @Override void fromXML(final int dimension, final String lower, final String upper, final String[] valuesString) { setLower(Double.parseDouble(lower)); diff --git a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java index d3d1974d..329766cb 100644 --- a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java +++ b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealScalarParam.java @@ -164,12 +164,6 @@ public double getScalableValue() { return value; } - @Override - public void scaleOne(int i, double scale) { - startEditing(null); - value *= scale; - } - /** * @return a deep copy of this node in the state. * This will generally be called only for stochastic nodes. diff --git a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java index aecb53bb..48fe139c 100644 --- a/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java +++ b/beast-base/src/main/java/beast/base/spec/inference/parameter/RealVectorParam.java @@ -461,12 +461,6 @@ public double getScalableValue() { return sum; } - @Override - public void scaleOne(int i, double scale) { - startEditing(null); - values[i] *= scale; - } - /** * @return a deep copy of this node in the state. * This will generally be called only for stochastic nodes. diff --git a/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java index e026a61a..7495dd6c 100644 --- a/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java +++ b/beast-base/src/test/java/beast/base/spec/inference/parameter/RealScalarParamTest.java @@ -106,18 +106,16 @@ void testStoreAndRestore() { } /* - * - Purpose: verify scale(...) and scaleOne(...) multiply the stored value and - * return expected counts. + * - Purpose: verify scale(...) multiplies the stored value and returns the + * log Jacobian. * - Assertions: scale returns log Jacobian (= log(s) for a 1-D scalar) - * and multiplies value; scaleOne multiplies value too. + * and multiplies value. */ @Test - void testScaleAndScaleOne() { + void testScale() { RealScalarParam param = new RealScalarParam(3.0, Real.INSTANCE); assertEquals(Math.log(2.0), param.scale(2.0), 1e-12); assertEquals(6.0, param.get(), 1e-12); - param.scaleOne(0, 0.5); - assertEquals(3.0, param.get(), 1e-12); } /* From 2bb0b4cf93c620b0dbfc846acf63334b24c1bbb3 Mon Sep 17 00:00:00 2001 From: alexeid Date: Mon, 4 May 2026 14:09:25 +1200 Subject: [PATCH 6/6] Slides: drop scaleOne from new-contract slide Mirrors the contract change in the previous commit; the old-contract slide retains scaleOne for historical context. --- scripts/scalable-contract-talk.pdf | Bin 252322 -> 240354 bytes scripts/scalable-contract-talk.tex | 1 - 2 files changed, 1 deletion(-) diff --git a/scripts/scalable-contract-talk.pdf b/scripts/scalable-contract-talk.pdf index 3e611256c173389a4b389865250d63fbfbe92240..8a3b38252ff16b76cf364e561f8e282525bae41e 100644 GIT binary patch delta 17462 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 diff --git a/scripts/scalable-contract-talk.tex b/scripts/scalable-contract-talk.tex index c751f0df..76050327 100644 --- a/scripts/scalable-contract-talk.tex +++ b/scripts/scalable-contract-talk.tex @@ -127,7 +127,6 @@ default double setScalableValue(double V) { return scale(V / getScalableValue()); } - void scaleOne(int i, double s); } \end{lstlisting}