tulpaObs
Bayesian Occupancy Models via 'tulpa'
An occupancy-modeling package that just deleted its own duplicate vocabulary for diagnostics.
◆Recent moves
- 1d ago
AGENTS.md added as the Codex-facing counterpart to CLAUDE.md
Adds an AGENTS.md carrying the same contract as the existing CLAUDE.md, listed in .Rbuildignore so R CMD check does not flag a non-standard top-level file. Repository housekeeping with no effect on the package's behavior or interface. It sits at the tail of a window otherwise occupied by registry and correctness work.
View source ↗ - 1d ago
SBC helper now handles any response rank, fixing 4D families
The SBC registry's slice helper enumerated response ranks explicitly, so ms_dyn_occu()'s four-dimensional response fell through to the 2D branch and errored outright. Since every registered family pools on the first axis, the helper now indexes axis 1 at any rank, which stops the enumeration going stale the next time a family arrives with a new response shape. A regenerated Rd file clears a codoc warning left over from an earlier engine change.
View source ↗ - 1d ago
ms_abun() registered for SBC, closing the 27-family scope
The last family of the original SBC registration scope lands, and it needed two upstream engine changes first: the cross-Hessian block, and a fix for the per-group posterior covariance that previously exposed only the diagonal. Without the second, a species' abundance and detection deviations would have been drawn independently across a real identifiability ridge. Meaningful as the closing increment of a long registration grind rather than as a change of direction.
View source ↗ - 1d ago
SBC registry gains the ms_abun() ranked-quantity branch
Community families rank the per-species realized coefficient rather than the community mean, so each needs its own branch in the registry's means helper; ms_abun() was registered without one and returned a 2-length vector against an expected 40. The branch is added mirroring ms_distance(), and all eight community families now have one. Published minutes before the release that registered the family, one of several places where this package's version order and publication order disagree.
View source ↗ - 5d ago
Every diagnostic becomes one verb dispatched on the fit (breaking)
⚡ SPARKThe release that resolves this package's longest-running duplication: the tobs_* diagnostic spellings are gone, replaced by S3 methods on generics owned by loo and the tulpa engine. It is the downstream half of the engine's generics conversion published a minute earlier, and it is what makes the two packages read as one stack rather than two vocabularies. Breaking for anyone calling the old names.
View source ↗ - 5d ago
Information criteria now score random effects the fit carried
On the grid-integrated route, occu_cover() had been scoring observation-arm and occupancy-arm random effects at the population mean across WAIC, LOO, CPO, PPC and PIT; both now reach the criteria through the same per-visit and per-site offset path the sampled route uses. The correction moves published numbers substantially — one detection-arm case shifts elpd_waic from -17.9 to -6.4. Fits carrying no random effect are unchanged, which bounds who is affected.
View source ↗