vennDiagramLab
Headless Venn Diagram Analysis and Rendering
Headless companion to the 'Venn Diagram Lab' web tool (<https://www.venndiagramlab.org/>). Build, render, and statistically analyze Venn / 'UpSet' diagrams from 'CSV' / 'TSV' / 'GMT' / 'GMX' inputs. Provides the same 44 SVG models, intersection / 'Jaccard' / hypergeometric statistics, and PDF report layout as the web tool, with byte-equivalent 'TSV' exports (parity-tested against the published Python package). Integrates with 'ggplot2', 'tidygraph', and 'broom'.
README
# vennDiagramLab
<!-- badges: start -->
[](https://github.com/ZoliQua/Venn-Diagram-Lab/actions/workflows/r-cmd-check.yml)
[](https://lifecycle.r-lib.org/articles/stages.html#stable)
[](https://opensource.org/licenses/MIT)
[](https://doi.org/10.5281/zenodo.19510813)
<!-- badges: end -->
`vennDiagramLab` is the R companion to the [Venn Diagram Lab web tool](https://www.venndiagramlab.org/) and the [Python `venn-diagram-lab` package](https://pypi.org/project/venn-diagram-lab/). It provides headless Venn / UpSet / Network diagram analysis and rendering for bioinformaticians and biostatisticians who work natively in R, with byte-equivalent outputs that match the web tool and the Python package down to the byte.
## Features
* **44 SVG diagram models** (2- to 9-set) from a dozen construction methods (Venn 1880, Edwards 1996, Anderson 1988, Grünbaum 1984/1992, Bannier-Bodin 2017, Carroll 2000, Mamakani 2012, SUMO-Venn) — the same library shipped by the web tool.
* **Area-proportional 2- and 3-set layouts** via analytical (`solve_2set`) and approximate (`solve_3set`) solvers.
* **UpSet plots** via [`ComplexUpset`](https://github.com/krassowski/complex-upset) with sort-by-size / sort-by-degree, depth / heatmap / custom color modes, and threshold cutoffs.
* **Force-directed network views** via [`ggraph`](https://ggraph.data-imaginist.com/) + [`tidygraph`](https://tidygraph.data-imaginist.com/), with configurable edge metric (intersection / Jaccard / fold enrichment / overlap coefficient) and significance coloring.
* **Five pairwise statistical metrics** (Jaccard, Dice, overlap coefficient, fold enrichment, hypergeometric over-representation) with BH-FDR adjustment.
* **Multi-page PDF reports** combining overview, Venn + UpSet, statistics tables, network, and methodology pages in a single US-Letter-landscape document.
* **`ggplot2` layer** (`geom_venn()`) and **`broom`-compatible S3 methods** (`tidy()` / `glance()` / `augment()`) for tidyverse + `targets` / `drake` pipeline integration.
* **Byte-equivalent TSV exports** tested against the React webapp's golden fixtures — the same region-summary, item-matrix, and statistics files the web tool's "Export" buttons emit.
* **Cross-implementation parity** verified by 12 byte-equivalence tests against the Python package's golden fixtures (4 sample datasets × 3 export types).
## Install
### From CRAN (recommended once published)
```r
install.packages("vennDiagramLab")
```
### From Bioconductor (alternate channel once published)
```r
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("vennDiagramLab")
```
### Development version (GitHub)
The package source lives in the `r/` subdirectory of the monorepo:
```r
install.packages("remotes")
remotes::install_github("ZoliQua/Venn-Diagram-Lab", subdir = "r")
```
A standalone mirror (no `subdir =` needed) is kept in sync on every push to `main` for Bioconductor's Single Package Builder, which requires `DESCRIPTION` at repo root:
```r
remotes::install_github("ZoliQua/vennDiagramLab")
```
Both installs produce the same package; the mirror exists purely to satisfy Bioc's submission tooling.
## Quickstart
```r
library(vennDiagramLab)
# Load a bundled dataset (4 cancer driver source catalogs)
ds <- load_sample("dataset_real_cancer_drivers_4")
result <- analyze(ds)
# Render the Venn diagram as SVG
svg <- render_venn_svg(result, title = "Cancer driver overlap")
writeLines(svg, "cancer_drivers.svg")
# Or get a tidy summary
broom::tidy(result)
# Or generate a multi-page PDF report
to_pdf_report(result, "cancer_drivers.pdf")
```
See `vignette("v01_quickstart")` for the full intro and `browseVignettes("vennDiagramLab")` for the complete eight-vignette gallery.
## Documentation
* Full reference site + vignettes: <https://zoliqua.github.io/Venn-Diagram-Lab/r/>
* Eight RMarkdown vignettes (also accessible via `vignette(package = "vennDiagramLab")`):
1. `v01_quickstart` — five-step intro.
2. `v02_real_cancer_drivers` — long-form biological walkthrough (Vogelstein, COSMIC CGC, OncoKB, IntOGen).
3. `v03_proportional_diagrams` — area-proportional 2/3-set layouts and the low-level geometry helpers.
4. `v04_upset_vs_venn_vs_network` — choosing the right visualization per set count.
5. `v05_statistics_deep_dive` — Jaccard / Dice / hypergeometric / BH-FDR worked examples.
6. `v06_pipeline_integration` — `broom` + `dplyr` + `targets` pipeline sketch.
7. `v07_pdf_reports` — composite multi-page PDF generation.
8. `v08_custom_styling_and_export` — custom names / colors, `geom_venn()`, multi-format export.
## Related projects
`vennDiagramLab` is one of three coordinated implementations sharing the same SVG model library, statistics, and byte-equivalent TSV outputs:
* **Web tool** — interactive viewer, editor, and visual analysis: <https://www.venndiagramlab.org/>
* **Python package** (`venn-diagram-lab` on PyPI): <https://pypi.org/project/venn-diagram-lab/>
* **R package** (this package — `vennDiagramLab` on CRAN + Bioconductor)
### Source repositories
* **Monorepo** (web tool + Python + R, primary development): <https://github.com/ZoliQua/Venn-Diagram-Lab>
* **R-only mirror** (for Bioconductor Single Package Builder, auto-synced from monorepo `main`): <https://github.com/ZoliQua/vennDiagramLab>
The mirror is read-only — file changes should always be made in the monorepo. A GitHub Action splits the `r/` subtree and force-pushes it (with a Bioc `0.99.z` `Version` override) to the mirror on every push to `main`.
## Citation
If you use `vennDiagramLab` in published work, please cite both the software and the version you used.
After install:
```r
citation("vennDiagramLab")
```
returns a `bibentry` with the correct version + DOI for the installed copy.
### Concept (all-versions) DOI
The Zenodo concept DOI [10.5281/zenodo.19510813](https://doi.org/10.5281/zenodo.19510813) always resolves to the latest version of `vennDiagramLab`. Cite this DOI when you want readers to be pointed at whatever is current.
### Version-specific DOI
Each tagged R release (`r-vX.Y.Z`) mints its own Zenodo deposit and DOI. The most recent version-specific record is at <https://zenodo.org/records/20088768>; the per-version DOI from any release archive is preferable for exact reproducibility.
### Plain-text citation
```
Dul Z., Ölbei M., Thomas N.S.B., Si Ammour A., Csikász-Nagy A. (2026).
vennDiagramLab: Headless Venn diagram analysis and rendering.
R package version 2.0.4.
https://zoliqua.github.io/Venn-Diagram-Lab/r/
DOI: 10.5281/zenodo.19510813 (all versions)
```
## Contributing + bug reports
* Issues: <https://github.com/ZoliQua/Venn-Diagram-Lab/issues>
* The repository accepts pull requests against `main` in the monorepo. Do not open PRs against the R-only mirror — they will be lost on the next subtree sync.
## License
MIT — see [LICENSE](LICENSE).
Versions across snapshots
| Version | Repository | File | Size |
|---|---|---|---|
2.0.5 |
rolling linux/jammy R-4.5 | vennDiagramLab_2.0.5.tar.gz |
4.1 MiB |
2.0.5 |
rolling linux/noble R-4.5 | vennDiagramLab_2.0.5.tar.gz |
4.1 MiB |
2.0.5 |
rolling source/ R- | vennDiagramLab_2.0.5.tar.gz |
4.1 MiB |
2.0.5 |
latest linux/jammy R-4.5 | vennDiagramLab_2.0.5.tar.gz |
4.1 MiB |
2.0.5 |
latest linux/noble R-4.5 | vennDiagramLab_2.0.5.tar.gz |
4.1 MiB |
2.0.5 |
latest source/ R- | vennDiagramLab_2.0.5.tar.gz |
4.1 MiB |
2.0.5 |
2026-04-23 source/ R- | vennDiagramLab_2.0.5.tar.gz |
0 B |