Skip to content

Migrate morph-models to BEAST 3#18

Open
alexeid wants to merge 15 commits intoCompEvol:masterfrom
alexeid:master
Open

Migrate morph-models to BEAST 3#18
alexeid wants to merge 15 commits intoCompEvol:masterfrom
alexeid:master

Conversation

@alexeid
Copy link
Member

@alexeid alexeid commented Mar 16, 2026

Summary

  • Migrate morph-models to BEAST 3 Maven multi-module build with strongly-typed spec classes
  • Migrate BEAUti template to spec classes
  • Add Maven Central publishing support and maven-assembly-plugin for releases
  • Update groupId to io.github.compevol
  • Add BEAST.base dependency to version.xml and CI workflow

Context

Prepares morph-models for beta1 release to Maven Central alongside beast3 2.8.0-beta1, so packagemanager -maven can be tested end-to-end.

🤖 Generated with Claude Code

…d spec classes

Two modules: beast-morph-models (core, depends on beast-base) and
beast-morph-models-fx (BEAUti integration, depends on beast-fx).

- LewisMK extends spec Base, adds getRateMatrix(), renames internal
  freqValues field to avoid shadowing parent Frequencies
- NStatesNoRatesSubstitutionModel extends spec BasicGeneralSubstitutionModel,
  now abstract (setupRelativeRates inherited as abstract)
- Ordinal/NestedOrdinal: clean unused imports
- BEAUti template: update namespace, replace ScaleOperator/Uniform/SubtreeSlide
  with UpDownOperator/BactrianNodeOperator/BactrianSubtreeSlide
- Add JPMS module-info.java for both modules
- Add LewisMKTest with 8 unit tests
- Move legacy 2.7 example XMLs to examples/legacy-2.7/
- Add M3982.xml using BEAST 3 spec classes (spec SiteModel,
  TreeLikelihood, StrictClockModel, YuleModel, ScaleTreeOperator,
  BactrianNodeOperator, RealScalarParam, TreeWithMetaDataLogger)
- Fix exec-maven-plugin to use commandlineArgs with %classpath
  so multi-word beast.args are tokenized correctly
- Remove test resource copies of examples needing external packages
- Update README with module structure, build/run instructions
- Delete build.xml (legacy Ant build)
- Update version.xml to BEAST 3 format (remove BEAST 2 depends)
- Migrate fxtemplate: RealScalarParam for estimated params,
  spec distributions-as-priors, spec SiteModel/TreeLikelihood/
  YuleModel/ScaleOperator/UpDownOperator/TreeWithMetaDataLogger
- Remove unused ExtensionFileFilter import
Builds JARs, assembles flat ZIP matching the BEAST package convention
(version.xml, lib/, fxtemplates/, examples/ at root), and optionally
creates a GitHub release with --release flag. Version and package name
are extracted from version.xml.
Replaces the morph-models-specific script with the generic version
that auto-discovers JARs, fxtemplates, and examples. Works for both
single-module and multi-module layouts. Also adds *.v*.zip to gitignore.
Move BEAST package ZIP assembly from shell script into Maven so
`mvn package` reproducibly produces the correct ZIP on any platform.
BEAST core and JavaFX deps marked as provided scope to exclude them
and their transitives from the package. Assembly descriptor placed in
beast-morph-models-fx (last reactor module). release.sh becomes a
thin wrapper for GitHub release creation only.
Updates all POMs and README to use the CompEvol organisation namespace.
Notes Maven Central as alternative source if published there.
Allows third-party developers to run BEAST via exec:exec to test
their package. The assembly descriptor now uses an includes whitelist
to keep only morph-models JARs in the distribution ZIP.
Move fxtemplates to beast.morph.models.fx/fxtemplates/ to avoid
JPMS split-package conflict with beast-fx. Add exec-maven-plugin
to beast-morph-models-fx for running BEAUti with morph-models on
the module path. Add beast.main and beast.args default properties.
Add <depends on='BEAST.base' atleast='2.8.0'/> to version.xml for
consistency with other BEAST3 packages. Add GitHub Actions workflow
for running tests on push/PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant