circular and signal are no longer suggested by the metapackage. Nothing in it uses either — the only mentions were string literals in test fixtures — but because animovement_show_suggested() reads each package's Suggests, they were reported under animovement:, as though the metapackage needed them. signal belongs to aniprocess, which suggests it for the Savitzky-Golay and Butterworth filters. circular is no longer used anywhere in the ecosystem, since animetric took its circular statistics from anicore (animovement/anicore#147); this removes the last reference to it.Messages are only styled when whatever receives them can render colour. The attach banner and the other styled output used to emit ANSI escape sequences unconditionally, so redirecting R output to a file, or rendering it in a knitr chunk, produced text like [1mAttaching packages[22m. NO_COLOR and options(cli.num_colors = 1) are now honoured, and options(animovement.styling = TRUE) forces colour on where it is wanted anyway (#178).
The attach banner and animovement_show_suggested() are each emitted as a single message rather than one per line. Anything that captures messages singly — a knitr chunk, a log, testthat — used to receive them in pieces, which rendered as a stack of separate blocks with a scrollbar per line. animovement_show_suggested() also honours animovement.quiet now, which it bypassed by printing through cli directly (#178).
The minimum anicore is 0.8.0, the first version published under that name — the metapackage depended on anicore with no version constraint, so nothing recorded that a pre-rename aniframe will not do.
aniframe is now anicore. The core package was renamed, so the set that library(animovement) attaches, animovement_packages(), and the .animovement project file all name anicore instead.
Removed the unused cyan(), lightblue() and yellow() styling helpers, left over from the fastverse adaptation (#159).
The stray LICENSE file is removed and AGENTS.md is kept out of the built package, clearing the two notes R CMD check reported. LICENSE held a YEAR:/COPYRIGHT HOLDER: template, the form R uses for MIT + file LICENSE; it was left behind when 0.7.4 corrected the declaration to GPL-3, whose full text is LICENSE.md.
print() on an animovement_conflicts object returns the object invisibly, as an S3 print method should, instead of NULL (#159).
GPL-3 + file LICENSE to GPL-3, with the full text as LICENSE.md. The + file LICENSE form asserts additional restrictions beyond GPL-3, and the file held nothing but the stock GPL-3 text. The licence that applies is unchanged; only how it is declared. CITATION.cff said MIT, left over from before the metapackage was rebuilt on the fastverse pattern, and now agrees at GPL-3.0-only.animovement_update(), animovement_install() and animovement_deps() look in the animovement r-universe by default, via the new animovement_repos(), instead of failing unless repos was set by hand (#144).webr::install() for every install function, not just animovement_install_suggested() (#139)..animovement project configuration, extending, updating and suggested packages (#136, #148).rhdf5 and the Bioconductor r-universe from Suggests — needed only by the tutorials that have moved. animovement_install_suggested() still resolves it for the ecosystem packages that suggest it.animovement_install_suggested() works again: it no longer passes an unsupported repos argument to pak::pkg_install(), and finds rhdf5 on the Bioconductor r-universe (#146)..png extension.here and signal to Suggests, and circular for summarise_aniframe().r-wasm support, so the package can run in the browser.animovementtemplate.anispace joins the bundled suite, bringing spatial transformations into animovement.animovement_install_suggested(), to install the optional packages some functions use.animovement is now a metapackage. The codebase is split into a suite of focused packages that animovement bundles and re-exports: aniframe (the shared data class), aniread (readers), aniprocess (cleaning and filtering), anicheck (quality control), animetric (metrics) and anivis (visualisation).
ani_df class, with accompanying improvements and tests.frame rate is replaced by sampling rate throughout.classify_*() functions.A large feature release, focused on filtering, calculation and movement classification.
replace_na() and the NA-handling family, and classify_low_periods().set_individual() and set_framerate(), and a return_type argument on several functions.filter_by_speed().smooth_track() is renamed smooth_movement() and now smooths any movement data, not only trackball data. It gains use_derivatives (default FALSE), which is how trackball data should be smoothed; the non-derivative path is new.Three major changes: a data format stabilised across every reader, the first metadata, and tests to hold both in place.
read_animalta().read_animalta() for AnimalTA, and read_idtracker() for idtracker.ai.read_bonsai() reads centroid tracking from Bonsai files.The package is renamed from trackballr to animovement, reflecting a scope that now covers movement data generally rather than trackballs alone. The rename brings a great deal of new functionality and a correspondingly large set of breaking changes.
For the former trackballr functionality, install from source from the repository history.
read_deeplabcut(), read_sleap(), read_trex() and others.smooth_tracks(), for standardised data cleaning.read_trackball_data().format parameter of read_trackball_data().configuration in read_trackball_data() becomes fixed / free.First upload to GitHub.