Skip to content

T-200: Decouple R-loop search from MorphyLib; add concavity parameter#216

Open
ms609 wants to merge 10 commits intocpp-searchfrom
feature/native-search
Open

T-200: Decouple R-loop search from MorphyLib; add concavity parameter#216
ms609 wants to merge 10 commits intocpp-searchfrom
feature/native-search

Conversation

@ms609
Copy link
Copy Markdown
Owner

@ms609 ms609 commented Mar 24, 2026

Agent B

Summary

Replaces MorphyLib scoring in TreeSearch(), Ratchet(), Jackknife() with
native C++ engine (ts_fitch_score()), while retaining backward compatibility
for users passing MorphyLib scorers explicitly.

New exports

  • PrepareNativeData() — replaces PhyDat2Morphy()
  • CleanNativeData() — replaces UnloadMorphy()
  • NativeLength() — replaces MorphyLength()
  • NativeBootstrap() — replaces MorphyBootstrap()

Changed defaults

TreeSearch, Ratchet, Jackknife, and EdgeListSearch now default to
native scorers. New concavity parameter (default Inf = equal weights)
makes implied-weights searches trivial:

TreeSearch(tree, dataset, concavity = 10)

Deprecations

PhyDat2Morphy, UnloadMorphy, MorphyLength, MorphyTreeLength,
MorphyBootstrap emit .Deprecated() warnings.

Vignette

custom.Rmd IW section rewritten from ~150 lines of MorphyLib scaffolding
to ~30 lines.

Tests

7 new tests in test-NativeSearch.R. Existing tests updated to use native
defaults. 50 pass / 0 fail.

Note

Native scorer uses simple IW (fit = e / (e + k)), matching
TreeLength(..., extended_iw = FALSE). XPIWE (Extension 3) remains in the
C++ search path.

ms609 added 2 commits March 26, 2026 11:02
- New R/NativeSearch.R: PrepareNativeData, CleanNativeData,
  NativeLength, NativeBootstrap (4 exported functions)
- TreeSearch(), Ratchet(), Jackknife() now default to native scorer
- New 'concavity' parameter on all three functions
- Jackknife() rewritten to support both native and morphy paths
- EdgeListSearch() default scorer changed to NativeLength
- Deprecated: PhyDat2Morphy, UnloadMorphy, MorphyLength,
  MorphyTreeLength, MorphyBootstrap
- Vignette custom.Rmd IW section rewritten (was ~150 lines of
  MorphyLib scaffolding, now 30 lines using concavity parameter)
- test-NativeSearch.R: 7 tests covering all new functions
- test-CustomSearch.R: updated to use native defaults
Adds NativeSearch.Rd and updates Jackknife.Rd, Ratchet.Rd,
TreeSearch.Rd with new concavity parameter and default changes.
@ms609 ms609 force-pushed the feature/native-search branch from e25cbab to f59a193 Compare March 26, 2026 11:07
ms609 added a commit that referenced this pull request Mar 27, 2026
ms609 added 6 commits March 27, 2026 10:53
- inst/WORDLIST: add 'cleanup' and 'phyDat'
- R/mpl_morphy_objects.R: wrap PhyDat2Morphy/MorphyWeights @examples
  in \donttest{}; use suppressWarnings() for UnloadMorphy in
  GapHandler and SingleCharMorphy examples
- R/Morphy.R: wrap constraint example with suppressWarnings() so
  internal PhyDat2Morphy/UnloadMorphy calls don't emit warnings

Fixes 1 ERROR (spelling) + 1 WARNING (deprecated fns in examples)
Wrap PhyDat2Morphy() and UnloadMorphy() calls in suppressWarnings()
in the \examples{} sections of GapHandler.Rd, MorphyWeights.Rd,
PhyDat2Morphy.Rd, RearrangeEdges.Rd, and SingleCharMorphy.Rd.

Wrap Morphy() in suppressWarnings() in the \donttest{} block of
Morphy.Rd -- Morphy() calls PhyDat2Morphy/UnloadMorphy internally via
lapply/vapply, generating the 'FUN' is deprecated warning stream.

R CMD check --as-cran treats warnings-in-examples as errors.
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