Comments (2)
Since the overhaul of the clock system (i.e. the addition of [clock]
sections and the introduction of the implicit [clock default]
model), this issue has changed in nature somewhat. Now, all clocks by default share the one strict clock. This will cause problems if there are multiple [model]
s with different rates of change, but I'm not too concerned because our (current) convention is that the default configuration is the simplest possible thing and is not expected to handle all issues.
If multiple clocks are specified for multiple models, the behaviour is now:
- If the tree branchlengths are non-arbitrary (e.g. we have calibration nodes), then the mean rate of both clocks are allowed to vary independently.
- If the tree branchlengths are arbitrary, then the mean rate of the "first" clock is fixed at 1.0, and the tree is scaled so that branchlengths are in units of expected substitutions for all models using that clock, and all "subsequent" clocks are allowed to vary independently.
The definition of "first" in the above is "the clock associated with the first model", and the definition of "first model" is "first according to the following code":
model_sections = [s for s in p.sections() if s.lower().startswith("model")]
I would like to believe that this means the "first" clock is the one which occurs first in the .conf file, but I haven't looked into the implementation of ConfigParser so I don't guarantee this.
I will update the output of --verbose
to make explicit what it's doing, and extend the configuration of [clock]
sections to give users more explicit control over this.
Everything I said in the first comment on this issue about setting the mean of all clocks to 1.0 is nonsense.
from beastling.
Okay, the user can now use estimate_mean = True
or estimate_mean = False
in a [clock]
section to explicit control whether a clock's mean rate is estimated or fixed to 1.0. Their instructions will be respected in all cases. If there are any [clock]
s for which the user did not give explicit instructions, BEASTling will estimate means for them, unless the tree's branchlengths are arbitrary and the user did not specify any non-estimated clocks, in which case BEASTling will fix exactly one clock at 1.0 and inform the user which one was fixed via a --verbose
message. If the user doesn't like what BEASTling's automagic does, they can explicitly specify whatever alternative they like.
from beastling.
Related Issues (20)
- CLDF dataset loading pains HOT 19
- "The Yule model is not particularly suitable for linguistic analyses, however it is currently the best BEAST has to offer." HOT 7
- ASR tests fail HOT 33
- log_params duplicates log entries. HOT 1
- Refactor beastrun tests? HOT 6
- Unify file handling HOT 2
- Remove the dependency on clldutils HOT 2
- Remaining synonym issues
- Hack BEAST XML using DOM notation? HOT 2
- OSError: File name too long, instead of being interpreted as list HOT 1
- Make TreePrior.add_state_nodes use state instead of beastxml
- LogNormal Relaxed Clock parameterized by “variance”, is actually “stdev in log space”
- PyYAML, an indirect dependency, needs Python>3.4 HOT 4
- Document and Unify Exit Codes
- Should base-clocks/models/priors be abstract?
- Report could use slightly more clever templating
- Should __distribution__ be a property of all clocks?
- 'BinaryModel' object has no attribute 'share_params' HOT 11
- Binary CTMC binarised=True
- BEASTling does not clean up concept names with commas properly
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from beastling.