Open
Conversation
beast-base/CompEvol#20 introduces a binding three-method Scalable
contract: scale returns log Jacobian (double) instead of dof (int);
adds getScalableValue / setScalableValue (default).
PrevalenceList:
* scale return type int -> double, returns nodes.size() * log(scale)
* adds getScalableValue() returning the sum of m_fTime values across
items associated with a node (the s-equivariant summary under the
existing scale operation)
TreeScaleOperator:
* consume tree.scale() return as double log Jacobian, factor the HR
as treeLogJacobian - 2 * log(scale) for the kernel-symmetry term
* list.scale() return discarded (existing TODO about list HR
contribution preserved verbatim)
Tested against beast3 scalable-contract branch: all 83 BEASTLabs
tests pass.
Requires beast-base 2.8.0-SNAPSHOT or newer with the contract change.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migration to the new
beast.base.inference.Scalablecontract introduced in CompEvol/beast3#70:scale(double)return typeint → doublelog JacobiangetScalableValue()added (defaultsetScalableValueinherited)Two files affected (the only places in this repo that touch
Scalabledirectly):PrevalenceList:scalenow returnsnodes.size() * Math.log(fScale); newgetScalableValue()returns the sum ofm_fTimevalues across items associated with a node — the s-equivariant summary under the existing scale operation.TreeScaleOperator: consumetree.scale()return asdoublelog Jacobian; HR factored astreeLogJacobian − 2 × log(scale)for the kernel-symmetry term. The pre-existing// TODO: check the HastingsRatioabout the prevalence list's contribution is preserved verbatim.Why
CompEvol/beast3#70 turns
Scalableinto a binding three-method contract whose invariants are mutually consistent on a single dilation axis. Any downstream package that implementsScalabledirectly needs the corresponding update; this is BEASTLabs's. Verified by parallel testing against the beast3 branch.Requires
beast-base 2.8.0-SNAPSHOT or newer with the contract change merged.
Test plan
beast3:scalable-contract(locally installed)See also
CompEvol/beast3#70 — full motivation and contract description.