Repository navigation
Conversation
Several default priors were improper: Uniform(0, Infinity) on the strict clock rate and the Yule birth rate, OneOnX (1/x) on the mutation rate and the constant and exponential coalescent population sizes, and a Jeffreys (1/x) prior on the first Bayesian skyline population size. Others were Gamma(0.01, 100), which has about half its mass below 1e-28, or Uniform(0, 1000) on birth rates. Use LogNormal(M=0, S=8) in log space (median 1, 95% from 1.6e-7 to 6.4e6) for the clock rates (strict and relaxed mean), mutation rate, Yule, calibrated-Yule and birth-death birth rates, the coalescent population sizes and the EBSP populationMean. The same defaults are being adopted in BEAST 3's BEAUti (CompEvol/beast3). The Bayesian skyline's first population size now has an exponential prior with an estimated mean (bPopSizesInitialMean) that has a LogNormal(0, 8) prior, a scale operator and a trace-log column. The hyperprior BEAUti adds when a prior's own parameter is estimated was OneOnX, which is improper. A positive parameter (lower bound >= 0 or value > 0) now gets LogNormal(0, 8) with a scale operator; any other, such as a LogNormal's M = 0, gets Normal(0, 8) with a random-walk operator, since a scale operator cannot move a value of 0. Checked by compiling the changed classes against BEAST.base 2.7.9 and writing a Yule analysis of anolis.nex with "beauti -exitaction writexml", which runs. The GUI tests were not run.
This was referenced Nov 9, 2026
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.
Several of BEAUti's default priors are improper, and so is the hyperprior it adds. This PR replaces them with a single proper default, LogNormal(M = 0, S = 8) in log space (median 1, 95% from 1.6×10⁻⁷ to 6.4×10⁶), which is wide enough for any time unit. BEAST 3's BEAUti gets the same defaults (CompEvol/beast3#208).
Default priors
Standard.xml)ClockModels.xml)Standard.xml,SubstModels.xml)populationMeanbPopSizesInitialMean: LogNormal(0, 8) prior, scale operator, trace-log columnGamma(0.01, 100) is proper, but about half its mass lies below 10⁻²⁸. In practice it's a 1/x prior with an arbitrary cutoff far below any meaningful value. The birth–death relative death rate (Uniform(0, 1)) and the other proper defaults are unchanged.
Hyperprior
Ticking "estimate" on a prior's own parameter added a OneOnX hyperprior with a scale operator. That's improper, and a scale operator can't move a value of 0, such as a LogNormal's M = 0. Now:
Legacy parameters often have no lower bound even when they're positive (a LogNormal's S, for example), hence the value test.
Testing
beauti -nex anolis.nex -exitaction writexmlwrites a Yule analysis with the new birth-rate prior, and it runs.