jjmccollum / teiphy

A Python package for converting TEI XML collations to NEXUS, BEAST 2.7 XML, and other formats
MIT License
11 stars 3 forks source link

Update BEAST ancestral state/sequence logger template to reference rootFrequencies #89

Closed jjmccollum closed 1 month ago

jjmccollum commented 1 month ago

Currently, the AncestralStateLogger and AncestralSequenceLogger elements in beast_template.xml do not have a rootFrequencies attribute. Without this, the loggers will instead use the equilibrium frequencies of states (which teiphy assumes have a uniform distribution), which means that intrinsic probabilities assigned by the user will be ignored in logging.

To fix this, change

<log spec="beastlabs.evolution.likelihood.AncestralStateLogger" id="morphTreeLikelihood.character.{{ loop.index }}.anclogger" data="@filter.{{ loop.index }}" taxonset="@taxa" siteModel="@morphSiteModel.{{ loop.index }}" branchRateModel="@clock" tree="@tree" useAmbiguities="true" useTipLikelihoods="true"/>
...
<log spec="beastclassic.evolution.likelihood.AncestralSequenceLogger" id="morphTreeLikelihood.character.{{ loop.index }}.anclogger" tag="morphTreeLikelihood.character.{{ loop.index }}" data="@filter.{{ loop.index }}" siteModel="@morphSiteModel.{{ loop.index }}" branchRateModel="@clock" tree="@tree" useAmbiguities="true" useTipLikelihoods="true"/>

to

<log spec="beastlabs.evolution.likelihood.AncestralStateLogger" id="morphTreeLikelihood.character.{{ loop.index }}.anclogger" data="@filter.{{ loop.index }}" taxonset="@taxa" siteModel="@morphSiteModel.{{ loop.index }}" rootFrequencies="@rootfreqs.{{loop.index}}" branchRateModel="@clock" tree="@tree" useAmbiguities="true" useTipLikelihoods="true"/>
...
<log spec="beastclassic.evolution.likelihood.AncestralSequenceLogger" id="morphTreeLikelihood.character.{{ loop.index }}.anclogger" tag="morphTreeLikelihood.character.{{ loop.index }}" data="@filter.{{ loop.index }}" siteModel="@morphSiteModel.{{ loop.index }}" rootFrequencies="@rootfreqs.{{loop.index}}" branchRateModel="@clock" tree="@tree" useAmbiguities="true" useTipLikelihoods="true"/>