Patch release addressing two issues from the CRAN auto-check on v2.0.4.
inst/CITATION no longer errors during CRAN incoming-feasibility check. The file previously called utils::packageDescription("vennDiagramLab"), which returns NA when the package is not yet installed (as during CRAN's pre-install incoming check). NA$Version then triggers the cryptic "$ operator is invalid for atomic vectors" error. The fix uses the meta variable that R auto-injects when parsing the CITATION file, the documented pattern from "Writing R Extensions". citation("vennDiagramLab") output is unchanged on installed copies.NOT_CRAN for every chunk in every vignette. v2.0.4 gated only the four obviously-slow chunks (render_upset, render_network, to_pdf_report, geom_venn composite), but win-builder still reported [12m] OK on the re-building of vignette outputs step. The remaining time was spent on per-vignette library(vennDiagramLab) calls (which transitively load ggplot2, ComplexUpset, ggraph, tidygraph, rsvg, patchwork, gridExtra, BiocGenerics — slow on Windows VMs) plus the lightweight analyze() / render_venn_svg() / broom chunks across eight vignettes. The setup chunk of every vignette now sets knitr::opts_chunk$set(eval = NOT_CRAN), so on CRAN the rebuild is text-only (~1 minute total). Under devtools::check() and on the package's GitHub Actions CI matrix NOT_CRAN=true and all chunks evaluate normally. Locally verified: total vignette rebuild dropped from 12 min (Windows) / ~2 min (Mac) to ~12 seconds on Mac.No public-API or feature changes.
inst/CITATION packageDescription() NA crash during incoming check, (2) overall checktime 20 min > 10 min (vignettes 12 min — partial gating was insufficient).meta; all vignette chunks gated.Patch release addressing two issues from the CRAN auto-check + human reviewer feedback on v2.0.3.
'Venn Diagram Lab', 'UpSet', 'CSV', 'TSV', 'GMT', 'GMX', 'Jaccard', 'ggplot2', 'tidygraph', 'broom'. Suppresses the "Possibly misspelled words in DESCRIPTION" NOTE (flagged GMX, Jaccard, TSV, UpSet, ggplot, tidygraph).render_upset, render_network, to_pdf_report, geom_venn composite, rsvg_png/rsvg_pdf export) on NOT_CRAN. On dev (devtools::check() sets NOT_CRAN=true) and CI all chunks still build their figures; the full 590+ test suite + 8 vignettes still execute on the 5-cell GitHub Actions matrix. On CRAN only the lightweight analysis chunks evaluate, bringing total checktime well under the 10-minute budget.No public-API or feature changes.
NOT_CRAN gating + DESCRIPTION quoting.Patch release reducing CRAN auto-check time below the 10-minute target. The full test suite (590+ tests) and integration tests against bundled samples + 44 SVG models pushed the Windows R CMD check to ~41 minutes, which auto-rejected the v2.0.2 incoming pretest.
test-render-pdf, test-render-svg, test-render-upset, test-render-network, test-parity-with-webapp) now call testthat::skip_on_cran() at the top of every test_that() block. CRAN sees only the fast unit-test slice (test-analysis, test-classes, test-statistics, test-broom-tidy, test-ggplot-layer, test-io, test-samples, test-proportional, test-tsv-export). The skipped tests still run on the package's GitHub Actions CI matrix (5 cells × 590 tests), where NOT_CRAN=true triggers the full test suite.No public-API or feature changes; the package's user-facing behavior is identical.
cat(..., file = path) text-mode write.skip_on_cran() in slow tests; expected sub-10-min pretest.Patch release fixing a cross-platform packaging bug that surfaced on the win-builder CRAN check for v2.0.1.
cat(out, file = path) opens the connection in text mode by default; on Windows that converts "\n" → "\r\n", breaking the 12 byte-parity tests against the Python golden fixtures (which use "\n" only, matching the React webapp's TSV exports). New private helper .write_bytes() opens the file in "wb" (binary) mode and uses writeBin(charToRaw(x), con). Affects to_region_summary_tsv(), to_matrix_tsv(), and to_statistics_tsv(). No public-API changes; behavior on Linux/macOS unchanged.v2.0.1 was submitted to CRAN on 2026-05-07; the win-builder pretest failed with the CRLF bug above before the human reviewer was reached. v2.0.2 is the resubmission with the fix.
Patch release fixing a packaging bug that broke analyze() for users installing via remotes::install_github().
analyze() no longer fails with "no file found" after remotes::install_github(..., subdir = "r"). Root cause: the bundled 44 SVG templates, 44 region JSONs, and 5 sample datasets under r/inst/extdata/ were gitignored; only the directory structure (via .gitkeep files) was tracked. The local developer populated them by running Rscript r/data-raw/sync_data.R before R CMD build, so the CRAN / Bioconductor tarballs would have shipped them — but remotes::install_github() builds from the git tree, where those files were absent. The result: install succeeds, but system.file("extdata", "models", "json", package = "vennDiagramLab", mustWork = TRUE) returns "", and the first analyze() call throws the cryptic mustWork error.The fix tracks the synced data files in git (root .gitignore updated), so install_github now produces a working install out of the box. The synced files are regenerated and committed as part of the release workflow; the r/data-raw/sync_data.R script remains the single source of truth.
.models_json_dir() (internal) replaced the cryptic mustWork = TRUE error with an actionable message walking the user through the clone + sync + R CMD INSTALL workflow as a fallback. This branch is now defensive — the gitignore fix removed the trigger — but mis-built installs (hand-edited package directories, missing rebuilds after a model change) will still see a useful message instead of "no file found".No public-API changes. No new features.
First public release. Headless companion to the Venn Diagram Lab web tool and the Python venn-diagram-lab package, targeting CRAN + Bioconductor.
VennDataset, RegionData, RegionResult, StatisticsResult — four S4 classes covering inputs, regions, results, and pairwise statistics.load_csv, load_tsv, load_gmt, load_gmx) plus load_sample / list_samples for five bundled datasets (3 biological, 2 mock).analyze(dataset, model = "auto") — region enumeration via integer bitmask, model resolution mirroring the web tool.statistics(result) — lazy StatisticsResult with five pairwise metrics: Jaccard, Dice, overlap coefficient, fold enrichment, hypergeometric p-value (BH-FDR adjusted).jaccard(), dice(), overlap_coefficient(), hypergeometric_p_value(), fold_enrichment(), bh_fdr(), compute_pairwise().effective_universe(result) — universe N consistent with the web tool's binary/aggregated semantics.to_region_summary_tsv(), to_matrix_tsv(), to_statistics_tsv() — three byte-equivalent writers matching the React webapp's TSV exports.dataset_mock_streaming_platforms is xfail-strict due to the documented row-vs-set divergence in the web tool's loader.render_venn_svg(result, ...) — templates the bundled 44-model SVG library via xml2 (Count_*, Name*, Bullet*, Shape* substitution).set_names, colors, title, show_names, show_counts overrides per render.analyze(ds, model = "proportional") — area-proportional 2-set (exact) and 3-set (approximate) generator with solve_2set, solve_3set, circle_intersection_area, generate_proportional_svg helpers.render_upset(result, ...) — ComplexUpset-based UpSet plot with sort modes (size, degree), color modes (depth, heatmap, custom), and threshold / max_columns cutoffs.render_network(result, ...) — force-directed network via tidygraph + ggraph. Edge metric configurable (intersection, jaccard, fold_enrichment, overlap_coefficient); significance threshold colorizes edges.to_pdf_report(result, path, ...) — multi-page US-Letter-landscape PDF combining venn + UpSet + statistics + network + about pages, generated via grDevices::pdf + patchwork.include_network and include_about.geom_venn(data, ...) — embed a rendered venn as a ggplot2 layer (annotation_custom + geom_blank + coord_fixed).tidy.RegionResult(), glance.RegionResult(), augment.RegionResult() — broom-compatible S3 methods returning tibbles.broom and tibble are Suggests-only (registered via @exportS3Method) — users not in the tidyverse pay zero install cost.R CMD check --as-cran:v01_quickstart — five-step introv02_real_cancer_drivers — long-form biological walkthrough (Vogelstein / COSMIC / OncoKB / IntOGen)v03_proportional_diagrams — when to use area-proportional + low-level helpersv04_upset_vs_venn_vs_network — choosing the right visualizationv05_statistics_deep_dive — Jaccard / Dice / hypergeometric / BH-FDR workedv06_pipeline_integration — broom + dplyr + targets pipeline sketchv07_pdf_reports — composite PDF generationv08_custom_styling_and_export — custom names/colors, geom_venn, multi-format exportrender_upset() and to_pdf_report() emit a runtime warning about an upstream ComplexUpset 1.3.3 / ggplot2 4.x incompatibility (tracking krassowski/complex-upset#213). Vignette chunks that depend on UpSet rendering are gated on eval = (getRversion() >= "4.6"). The warning + skip will be removed when ComplexUpset 1.4+ ships.Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.