ArtPoon / BelleJS

Generate BEAST XML analysis files using a BEAUTI-like JavaScript interface
MIT License
2 stars 0 forks source link

ucld.mean has a unique prior #10

Closed ArtPoon closed 3 years ago

ArtPoon commented 3 years ago

If we select the uncorrelated lognormal model and do not parse tip dates, ucld.mean has no prior distribution (appears as Fixed value, value=1).

However, this setting appears if you set tip dates:

<ctmcScalePrior>
    <ctmcScale>
        <parameter idref="ucld.mean"/>
    </ctmcScale>
    <treeModel idref="treeModel"/>
</ctmcScalePrior>
ArtPoon commented 3 years ago
art@Wernstrom examples % diff -c fixed.xml ctmc.xml     
*** fixed.xml   2021-03-30 13:00:28.000000000 -0400
--- ctmc.xml    2021-03-30 13:02:46.000000000 -0400
***************
*** 438,444 ****
        <distribution>
            <logNormalDistributionModel meanInRealSpace="true">
                <mean>
!                   <parameter id="ucld.mean" value="1.0"/>
                </mean>
                <stdev>
                    <parameter id="ucld.stdev" value="0.3333333333333333" lower="0.0"/>
--- 438,444 ----
        <distribution>
            <logNormalDistributionModel meanInRealSpace="true">
                <mean>
!                   <parameter id="ucld.mean" value="1.0" lower="0.0"/>
                </mean>
                <stdev>
                    <parameter id="ucld.stdev" value="0.3333333333333333" lower="0.0"/>
***************
*** 511,521 ****
            <parameter idref="kappa"/>
        </scaleOperator>
        <scaleOperator scaleFactor="0.75" weight="3">
!           <parameter idref="ucld.stdev"/>
        </scaleOperator>
!       <scaleOperator scaleFactor="0.75" scaleAll="true" ignoreBounds="true" weight="3">
!           <parameter idref="treeModel.allInternalNodeHeights"/>
        </scaleOperator>
        <swapOperator size="1" weight="10" autoOptimize="false">
            <parameter idref="branchRates.categories"/>
        </swapOperator>
--- 511,529 ----
            <parameter idref="kappa"/>
        </scaleOperator>
        <scaleOperator scaleFactor="0.75" weight="3">
!           <parameter idref="ucld.mean"/>
        </scaleOperator>
!       <scaleOperator scaleFactor="0.75" weight="3">
!           <parameter idref="ucld.stdev"/>
        </scaleOperator>
+       <upDownOperator scaleFactor="0.75" weight="3">
+           <up>
+               <parameter idref="treeModel.allInternalNodeHeights"/>
+           </up>
+           <down>
+               <parameter idref="ucld.mean"/>
+           </down>
+       </upDownOperator>
        <swapOperator size="1" weight="10" autoOptimize="false">
            <parameter idref="branchRates.categories"/>
        </swapOperator>
***************
*** 553,558 ****
--- 561,572 ----
                <logNormalPrior mu="1.0" sigma="1.25" offset="0.0">
                    <parameter idref="kappa"/>
                </logNormalPrior>
+               <ctmcScalePrior>
+                   <ctmcScale>
+                       <parameter idref="ucld.mean"/>
+                   </ctmcScale>
+                   <treeModel idref="treeModel"/>
+               </ctmcScalePrior>
                <exponentialPrior mean="0.3333333333333333" offset="0.0">
                    <parameter idref="ucld.stdev"/>
                </exponentialPrior>
***************
*** 584,589 ****
--- 598,606 ----
            <column label="rootHeight" sf="6" width="12">
                <parameter idref="treeModel.rootHeight"/>
            </column>
+           <column label="ucld.mean" sf="6" width="12">
+               <parameter idref="ucld.mean"/>
+           </column>
        </log>

        <!-- write log to file                                                       -->
ArtPoon commented 3 years ago

New prior object generates upDown operator and prior https://github.com/ArtPoon/BelleJS/blob/bb5895779f5f36a686f39996063f81a52b7c5f78/js/priorGenerator.js#L311-L341

Still need to pull out the default allInternalNodeHeights operator and add ucld.mean to the file log.

ArtPoon commented 3 years ago

I had to modify the prior object classes to each return an Array of operator elements, not a single element.