Skip to content

Releases: atudoras/nova

NOVA 0.3.0 — simpler trajectory summary

Choose a tag to compare

@atudoras atudoras released this 23 Jun 02:44

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 sorts min/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

Choose a tag to compare

@atudoras atudoras released this 23 Jun 02:13

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 persistence
  • nova_transition_matrix() — k-means network states, empirical Markov matrix, occupancy, state-flow diagram
  • nova_trajectory_similarity() — DTW / Frechet / Euclidean / cosine distances + clustering
  • nova_dynamical_regime() — stable / convergent / divergent / oscillatory / transitional, with confidence
  • nova_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

Choose a tag to compare

@atudoras atudoras released this 26 Mar 22:24

NOVA v0.1.1

Install from GitHub:

remotes::install_github("atudoras/nova")

New Features

UX Enhancements

  • color_by parameter in plot_pca_trajectories_general() — colour trajectory lines by Treatment or Genotype
  • Genotype end-labelsggrepel labels at trajectory endpoints, shaped start (◇) and end (●) markers, timepoint subtitle
  • split_by = "combination" in create_mea_heatmaps_enhanced() — Treatment × Genotype dual-annotated heatmap with Z-score scaling (blue-white-red, ±3 SD cap)
  • Per-metric visualisationplot_mea_metric() supports bar, box, violin and line plots per electrode metric
  • Zero-code quickstartExample/nova_quickstart.R requires 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_Well IDs
  • names(.) anti-pattern inside dplyr::summarise — replaced with pre-computed flags
  • Scoping bug in pca_analysis_enhanced Excel loading branch
  • Duplicate null_coalesce definition removed
  • Missing tp_subtitle in per-group trajectory labs() calls