Releases: atudoras/nova
Release list
NOVA 0.3.0 — simpler trajectory summary
NOVA 0.3.0
This release replaces the exploratory 0.2.0 dynamics module with a single, honest summary that matches what MEA timecourse data can actually support.
Why
A typical MEA run has only a handful of timepoints and a few replicate wells. That is enough to describe how far a condition moved from baseline and whether it went straight out or wandered — but not enough to fit velocities, "stable vs unstable" regimes, or transition models without turning noise into false precision. Those were removed.
New
nova_trajectory_summary()— per condition: net displacement, total path length, directness (net / path), and the timepoint of peak displacement. Returns two figures — distance-from-baseline over time (mean ± SEM across replicate wells) and a PC-space trajectory map — plus the metrics table.nova_describe()— a cautious, rule-based plain-language summary (no AI/API).nova_order_timepoints()/nova_time_to_minutes()— baseline-first ordering that sortsmin/h/s/DIV/compound (1h30) labels by real elapsed time.
Removed (from 0.2.0)
nova_state_geometry, nova_transition_matrix, nova_trajectory_similarity, nova_dynamical_regime, nova_landscape, nova_dynamics, and the dtw/igraph/MASS/patchwork optional dependencies.
Unchanged
All original visualization functions are fully backward compatible — no signature, return, or export changed. Your existing scripts keep working.
Clean R CMD check (0 errors / 0 warnings / 0 notes), 72 passing tests.
Install: remotes::install_github("atudoras/nova")
NOVA 0.2.0 — nova_dynamics
NOVA 0.2.0 — a dynamical-systems toolkit for neuronal network state analysis
NOVA now formalises neuronal networks as trajectories through latent state space. The new nova_dynamics module operates on PCA (or UMAP / any embedding) coordinates and never replaces PCA. It adds no new hard dependencies (DTW and Frechet distance implemented in base R; dtw/igraph/MASS/patchwork optional).
New analyses
nova_state_geometry()— path length, displacement, velocity, acceleration, tortuosity, directional persistencenova_transition_matrix()— k-means network states, empirical Markov matrix, occupancy, state-flow diagramnova_trajectory_similarity()— DTW / Frechet / Euclidean / cosine distances + clusteringnova_dynamical_regime()— stable / convergent / divergent / oscillatory / transitional, with confidencenova_landscape()— occupancy density + pseudo-potential (U = -log p)nova_describe()— rule-based natural-language interpretation (no LLM)nova_dynamics()— one-call pipeline
Correctness fix
nova_order_timepoints()/nova_time_to_minutes()— baseline always first; orders compound labels (1h15/1h30/1h45) by real elapsed time.
Quality
- Clean
R CMD check(0 errors / 0 warnings / 0 notes), 109 passing tests, new tutorial vignette. - Full backward compatibility — no existing signature or export changed.
Install: remotes::install_github("atudoras/nova")
NOVA v0.1.1 — CRAN-ready + UX enhancements
NOVA v0.1.1
Install from GitHub:
remotes::install_github("atudoras/nova")New Features
UX Enhancements
color_byparameter inplot_pca_trajectories_general()— colour trajectory lines by Treatment or Genotype- Genotype end-labels —
ggrepellabels at trajectory endpoints, shaped start (◇) and end (●) markers, timepoint subtitle split_by = "combination"increate_mea_heatmaps_enhanced()— Treatment × Genotype dual-annotated heatmap with Z-score scaling (blue-white-red, ±3 SD cap)- Per-metric visualisation —
plot_mea_metric()supports bar, box, violin and line plots per electrode metric - Zero-code quickstart —
Example/nova_quickstart.Rrequires only a single path change - Smart MEA row detection — label-based scan replaces hardcoded row positions
README & Docs
- Publication-quality 300 DPI trajectory figure from real MEA Neuronal Agonists data (4 treatment groups × 7 timepoints)
- Illustrated HTML User Guide with step-by-step walkthroughs
Bug Fixes & Code Quality
CRAN Readiness — 0 ERRORs · 0 WARNINGs in R CMD check --as-cran
| # | Issue | Fix |
|---|---|---|
| 1 | Non-ASCII chars in source (→ — × ◇ ● + box-drawing in comments) caused 4 test failures in ASCII locale |
Replaced all with ASCII equivalents |
| 2 | 4 undocumented params in create_mea_heatmaps_enhanced() |
Added @param for use_raw, filter_timepoints, filter_treatments, filter_genotypes |
| 3 | ~192 cat() calls writing to stdout |
Converted to message() — now suppressable via suppressMessages() |
| 4 | 6 print(plot_obj) side-effects |
Removed; plots already saved by ggsave() |
| 5 | 6 deprecated aes_string() calls |
Replaced with aes(x = .data[[col]]) pattern |
| 6 | size = in geom_tile, geom_errorbar, geom_errorbarh, stat_ellipse |
Changed to linewidth = (ggplot2 >= 3.4) |
| 7 | Missing globalVariables() entries |
All NSE column names declared; no "no visible binding" NOTEs |
| 8 | No LICENSE file | GPL (>= 3) LICENSE file added |
| 9 | LazyData: true with no data/ directory |
Removed from DESCRIPTION |
| 10 | No Language field |
Added Language: en-US to DESCRIPTION |
| 11 | .Rbuildignore too narrow |
Expanded to exclude .claude/, docs/, scripts/, Rplots.pdf, .github/ |
| 12 | Stray Rplots.pdf in root and tests/testthat/ |
Deleted |
| 13 | @param roxygen order didn't match function signature |
Reordered to match |
Earlier Bug Fixes
- Z-score scaling on combination heatmap (raw 300–500 range → normalised ±3 SD, blue-white-red)
- Duplicate row names in combination heatmap — fixed with unique
Treatment_Genotype_WellIDs names(.)anti-pattern insidedplyr::summarise— replaced with pre-computed flags- Scoping bug in
pca_analysis_enhancedExcel loading branch - Duplicate
null_coalescedefinition removed - Missing
tp_subtitlein per-group trajectorylabs()calls