Skip to content

Latest commit

 

History

History
75 lines (63 loc) · 5.11 KB

File metadata and controls

75 lines (63 loc) · 5.11 KB

TODO — Package Developer Readiness

1. Javadoc: evolution-tier spec classes DONE

Added class-level javadoc to ~90 evolution-tier spec files: substitution models, likelihood, tree operators, branch rate models, speciation, coalescent, distributions, site model, tree types, loggers, and utility classes.

2. Package Developer Guide

Write a guide covering:

  • How to write a custom Operator (lifecycle, proposal, Hastings ratio)
  • How to write a custom Distribution (ScalarDistribution / TensorDistribution)
  • Type system patterns (RealScalar vs RealVector, domain propagation, casting utilities)
  • Service registration (@ServiceProvider vs module-info.java provides vs version.xml)
  • Testing patterns for custom components

3. Fix pre-existing javadoc errors DONE

mvn javadoc:javadoc -pl beast-base now runs with 0 errors (was 100+).

4. Publish javadoc site

Set up GitHub Pages (or similar) to host generated javadoc, and link from README.

5. CHANGELOG DONE

Created CHANGELOG.md covering build/tooling, spec type system, new distributions & operators, API removals, package system, dependency updates, BEAUti/templates, and testing. Cross-references scripts/migration-guide.md for detailed class mappings.

6. Verify beast-package-skeleton DONE

Fixed dead README links, removed unnecessary surefire --add-reads flags, corrected XML version attribute. Skeleton compiles, all 4 tests pass, no warnings.

7. Version / release strategy

Currently 2.8.0-SNAPSHOT. Decide whether to cut a release or tag before the call so package developers have a stable version to build against.

8. Fix disabled beast-fx tests

Several beast-fx tests are disabled pending deeper fixes:

  • Port StarBeast.xml template to BEAST 3 (enables BeautiStarBeastTest, BeautiCLITest.testStarBeastBatchMode, LinkUnlinkTest.starBeastLinkTreesAndDeleteTest)
  • Port Relaxed Clock subtemplates (Exponential, Log Normal) to ClockModels.xml (enables SimpleClockModelTest, CloneTest.simpleClockModelCloneTest)
  • Fix BEAUti partition deletion to clean up tree priors and clock priors for deleted partitions (enables 6 LinkUnlinkTest methods: linkTreesAndDeleteTest2a/2b/3, linkSiteModelsAndDeleteTest/2, linkClocksSitesAndDeleteTest)
  • Fix SimplexParam cloning across partitions — freqParameter dimension gets multiplied when site model is cloned (enables CloneTest.simpleSiteModelCloneTest)
  • Update assertParameterCountInPriorIs in BeautiBase to handle new spec distributions (Gamma, Beta, etc.) which are not instanceof beast.base.inference.distribution.Prior
  • Investigate testBSP.xml intermittent failure — passes in isolation but fails in full suite due to Randomizer state pollution from BEAUti JavaFX threads

9. Maven Central package distribution (#40)

Enable external BEAST packages to be distributed as plain Maven Central JARs instead of (or in addition to) ZIP archives. Roadmap:

  • Step 1: Load fxtemplates from JAR resources DONE — BeautiDoc.processTemplate() now scans JPMS module resources in addition to filesystem directories
  • Step 2: Maven-based package resolution DONE — MavenPackageResolver resolves Maven coordinates to local JAR paths via Apache Maven Resolver; PackageManager loads, installs, and uninstalls Maven packages alongside ZIP packages; config persisted in maven-packages.xml
  • Step 3: Package manager UI DONE — "Install from Maven" button added to BEAUti package manager dialog
  • Step 4: Migrate existing packages DONE — beast-package-skeleton updated with Maven Central metadata, release profile, version.xml JAR embedding, and publishing docs; morph-models updated with io.github.compevol groupId, release profile, and version.xml JAR embedding

10. JPMS split package: fxtemplates in multiple modules DONE

Moved beast-fx fxtemplates to module-unique path beast.fx/fxtemplates/. Updated BeautiDoc module resource scanner to match */fxtemplates/*.xml (namespaced) and fxtemplates/*.xml (legacy). loadResourceFromModules() tries namespaced path first with legacy fallback. External packages use their own namespace (e.g. beast.morph.models.fx/fxtemplates/) to avoid JPMS split-package conflicts.

11. Reconcile trace analysis implementations (#42)

Trace utilities moved from test tree to beast.base.trace (done). Remaining work:

  • Extract computeACT as public static method on TraceStatistics; have ESS.ACT() delegate to it (exact batch algorithm replaces incremental approximation)
  • Move core log reading/stats from beastfx.app.tools.LogAnalyser into beast.base.trace; make the beast-fx class a thin CLI/GUI wrapper
  • Rework LogCombiner (currently extends beastfx.app.tools.LogAnalyser) to use composition
  • Update LogComparator to depend on beast.base.trace types

12. Custom domain extension limitation

The current domain system (Real, PositiveReal, etc.) is a closed set of enum-like classes. Document the recommended approach for packages that need custom domains (e.g., correlation matrices, probability simplices with specific constraints).