beast ii 101 part 2
play

Beast II 101: Part 2 XML Add-ons Applications Remco R. Bouckaert - PowerPoint PPT Presentation

Beast II 101 Bouckaert Beast II 101: Part 2 XML Add-ons Applications Remco R. Bouckaert remco@cs.{auckland|waikato}.ac.nz Department of Computer Science University of Auckland & University of Waikato 1 Beast II 101 What is XML?


  1. Beast II 101 Bouckaert Beast II 101: Part 2 XML Add-ons Applications Remco R. Bouckaert remco@cs.{auckland|waikato}.ac.nz Department of Computer Science University of Auckland & University of Waikato 1

  2. Beast II 101 What is XML? Bouckaert "The Extensible Markup Language (XML) is a simple text-based format for representing structured information" XML Add-ons Applications Reserved characters in attribute values: " (&quot;) ’ (&apos;) < (&lt;) > (&gt;) & (&amp;) e.g. x="&quot;" 2

  3. Beast II 101 XML Bouckaert Let’s put this model into XML XML Add-ons Applications First the hky-scale operator 3

  4. Beast II 101 Beast 2 Reserved XML attributes Bouckaert name , spec , id , idref XML • XML element input can be used for every plugin. Add-ons Applications • Specify name to match with input name. • Specify spec to identity Plugin. • XML id/idref mechanism to reuse Plugins. • XML attributes for primitives (Integer, Double, Boolean, String). <input name=’operator’ id=’kappaScaler’ spec=’beast.evolution.operators.ScaleOperator’ scaleFactor=’0.5’ weight=’1’> <input name=’parameter’ idref=’hky.kappa’/> </input> 4

  5. Beast II 101 XML rule: namespaces Bouckaert Top level beast element can be used to define XML namespaces in the usual Java fashion. Add-ons <beast namespace="beast.core:beast.evolution.operators"> Applications This allows shortening of spec-values: <input name=’operator’ id=’kappaScaler’ spec=’beast.evolution.operators.ScaleOperator’ scaleFactor=’0.5’ weight=’1’> <input name=’parameter’ idref=’hky.kappa’/> </input> becomes <input name=’operator’ id=’kappaScaler’ spec=’ScaleOperator’ scaleFactor=’0.5’ weight=’1’> <input name=’parameter’ idref=’hky.kappa’/> </input> 5

  6. Beast II 101 XML rule: input/name Bouckaert Input elements with name attributes equal the name’s XML value as element name Add-ons Applications <input name=’xyz’></input> == <xyz></xyz> so <input name=’operator’ id=’kappaScaler’ spec=’ScaleOperator’ scaleFactor=’0.5’ weight=’1’> <input name=’parameter’ idref=’hky.kappa’/> </input> equals <operator id=’kappaScaler’ spec=’ScaleOperator’ scaleFactor=’0.5’ weight=’1’> <parameter idref=’hky.kappa’/> </operator> 6

  7. Beast II 101 XML rules: idref Bouckaert XML If idref is only attribute in element, an attribute with Add-ons element name and before the idref. Applications <name idref="some-id"/> == name=’@some-id’ So <operator id=’kappaScaler’ spec=’ScaleOperator’ scaleFactor=’0.5’ weight=’1’> <parameter idref=’hky.kappa’/> </operator> equals <operator id=’kappaScaler’ spec=’ScaleOperator’ scaleFactor="0.5" weight="1" parameter="@hky.kappa"/> 7

  8. Beast II 101 Beast 2 Reserved XML elements Bouckaert <beast version=’2.0’ namespace=’x.y.z:a.b.c’ > <map name=’xyz’ > x.y.z.Class </map> XML element <xyz> is expanded to Add-ons <input name=’xyz’ spec=’x.y.z.Class’> Applications <input > <run > spec must be beast.core.Runnable <distribution > spec must be beast.core.Distribution <operator > spec must be beast.core.Operator <logger > spec=beast.core.Logger <data > spec=beast.evolution.alignment.Alignment <sequence > spec=beast.evolution.alignment.Sequence <state > spec=beast.core.State <parameter > spec=beast.core.parameter.RealParameter <tree > spec=beast.evolution.tree.Tree <plate > mainly for Beauti templates 8

  9. Beast II 101 XML: example Bouckaert <input name=’substModel’ id="hky" spec="HKY"> XML <input name=’kappa’ idref="hky.kappa" > <input name=’frequencies’ id="freqs" spec="Frequencies"> Add-ons <input name=’data’ idref="alignment"/> Applications </input> </input> <input spec="TreeLikelihood"> <input name=’data’ idref=’alignment’/> <input name=’tree’ idref=’tree’/> <input name=’siteModel’ spec="SiteModel"> <input name=’substModel’ idref=’hky’/> </input> </input> Assuming namespace=’beast.evolution.sitemodel: beast.evolution.substitutionmodel: beast.evolution.likelihood’ 9

  10. Beast II 101 Compress inputs Bouckaert Input elements with name attributes equal the name’s value as element name XML <input name=’xyz’></input> == <xyz></xyz> Add-ons Applications Applying to the example <substModel id="hky" spec="HKY"> <kappa idref="hky.kappa" > <frequencies id="freqs" spec="Frequencies"> <data idref="alignment"/> </frequencies> </substModel> <distribution spec="TreeLikelihood"> <data idref=’alignment’/> <tree idref=’tree’/> <siteModel spec="SiteModel"> <substModel idref=’hky’/> </siteModel> </distribution> 10

  11. Beast II 101 Compress idrefs Bouckaert if idref is only attribute in element, an attribute with XML element name and before the idref. Add-ons <name idref="some-id"/> == name=’@some-id’ Applications Applying to the example <substModel id="hky" spec="HKY" kappa="@hky.kappa" > <frequencies id="freqs" spec="Frequencies" data="@alignment"/> </substModel> <distribution data="@alignment" spec="TreeLikelihood" tree="@tree"> <siteModel spec="SiteModel" substModel=’@hky’/> </distribution> Note: you still can use any of the previous versions! These are just short-cuts. 11

  12. Beast II 101 Resolving input name Bouckaert XML Add-ons • specified in name attribute Applications <input name="xyz" > • if not, use element name <xyz value="3" > • if input, use ’value’ when there is text content, but no element content <input>3</input> 12

  13. Beast II 101 Resolving input value Bouckaert XML • if idref is specified, use the referred object Add-ons <xyz idref="other" > or xyz=’@other’ Applications • specified in value attribute <xyz value="3" > • if not, use value of (non-reserved) attribute <input xyz="3" > • if not, use text content when there is text content, but no element content <input>3</input> 13

  14. Beast II 101 Bouckaert XML Add-ons Applications 14

  15. Beast II 101 XML Bouckaert XMLParser produces semi sensible parser error messages: XML Add-ons Error 124 parsing the xml input file Applications This plugin (treeLikelihood) has no input with name xxx. Choose one of these inputs: data,tree, siteModel,branchRateModel,useAmbiguities Error detected about here: <beast> <run id=’mcmc’ spec=’MCMC’> <distribution id=’posterior’ spec=’CompoundDistribution’> <distribution id=’treeLikelihood’ spec=’TreeLikelihood’> and Error 122 parsing the xml input file Cannot create class: CompoundDistibution. Class could not be found. Did you mean beast.core.util.CompoundDistribution? Error detected about here: <beast> <run id=’mcmc’ spec=’MCMC’> <distribution id=’posterior’ spec=’CompoundDistibution’> 15

  16. Beast II 101 Add-ons Bouckaert XML A Beast 2 add-on is a library based on Beast 2 Add-ons Applications Why add-ons: • Making work easier citable • Making the core easier to learn – it’s a lot smaller / cleaner • Separating out stable / experimental code / dead code • ... 16

  17. Beast II 101 Add-ons Bouckaert • SnAP - multi-species coalescent for SNP and AFLP XML data http://code.google.com/p/snap-mcmc/ Add-ons • beastii - utilities, Peter Will’s AARS substitution Applications model http://code.google.com/p/beastii/ • Subst-BMA - Bayes model averaging over subst. models http://code.google.com/p/subst-bma/ • EBSP/*BEAST - Joseph’s thesis work • Experimental phylogeography • David Welch’s Prevalence/SI-likelihood • Sibon’s MCMC monitoring thing • ... 17

  18. Beast II 101 What makes an Add-on Bouckaert • A jar file that contains the code • A jar file with the source XML • Example XML files Add-ons Applications • Documentation • A Beauti 2 template Recommended directory structure: Beast 2 files myAddOn/../beast2 source files myAddOn/src XML examples myAddOn/examples class files myAddOn/build jar files myAddOn/build/dist libraries used (if any) myAddOn/lib documentation myAddOn/doc Beauti templates (optional) myAddOn/templates 18

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend