NEWS
exploreDE 3.9.0
Breaking changes
- Saved sessions are
.json only (format exploreDE-session/2). The .rds
session format is removed: An uploaded .rds is refused with a message
asking the user to save again as .json. Reading an .rds can run code;
reading JSON can't. Save / Load Session is out of beta.
- Only the documented API is exported:
exploreDE(), build_explore_h5ad(), new_explore_dataset(), validate_explore_dataset(), and the ExploreDataset* classes. The 89 app helpers (generateParams(), step_*(), banana_*(), save_state_*(), ...) are internal, so exploreDE::<helper>() no longer works; the app gets them by sourcing R/ or, when installed, from the package namespace.
New features
- Open an
.h5ad from a link: ?data=<percent-encoded https URL>, from an
allowed source (APB Export jobs and public pStore by default; set
EXPLOREDE_URL_SOURCES to change them). Plain https:// only, no
redirects, up to 1 GB, then the same checks as an upload.
- JSON session files also save and restore the Multi DE datasets, in order,
with their settings.
- Per-tab contrast selectors throughout the app, kept in sync.
.h5ad DE tables can say which features entered the test: Optional
used_in_test column (spec §5). build_explore_h5ad() picks up a
usedInTest / used_in_test column from the DE table through the column
dictionary, so files built from SUSHI results show the same tested features
as the SUSHI original. Without it, "tested" still means a non-NA p-value.
- Reads the prolfquapp DEA's
AnnData.h5ad and prolfquapp ≥ 2.10
SummarizedExperiment results.
- Container RAM/CPU badge in the header.
- GO behaves like KEGG: The GO parts of the app (tile plot selector, heatmap
GO sub-tab) appear only when the features carry GO annotation columns, and
any subset of
GO BP / GO MF / GO CC works. The Pathway Tile Plots tab
shows when GO annotation or a supported KEGG species is available, so
human/mouse/rat data without GO columns now get KEGG tiles.
Bug fixes
- An
.h5ad without uns["de"] loads as counts-only; before, uns$de
partial-matched uns$design and the file failed to load. Pathway tables
are read with [[ for the same reason.
- Multi DE: Dataset paths outside the data roots (or containing
..) are
refused, and each dataset gets its own LDAP project check.
- An empty feature bucket no longer prints "display:none;".
- GO tile plots and the GO heatmap work on
.h5ad files: GO membership is
read from the features, not the DE table (which .h5ad files don't give
GO columns). Before, they failed with "object 'GO BP' not found".
- GO tile plots skip features without a log2 fold change and draw no stars
for an
NA p-value, instead of failing ("NA/NaN/Inf in foreign function
call", "missing value where TRUE/FALSE needed").
- GO tabs follow the changed
twoGroups output of ezRun; small ORA/GSEA and
volcano fixes.
rhdf5 is a declared dependency, so .h5ad files load on a fresh install; before, anndataR failed with "HDF5AnnData requires the rhdf5 package".
- The app gets the package's functions, internal helpers included, when it
runs from the installed package, however it is started
(
exploreDE::exploreDE(), or shiny::runApp() on
system.file("app", package = "exploreDE")). Before, it needed
library(exploreDE) first ('could not find function
"legend_offset_ui"'), and internal helpers such as the prolfquapp .h5ad
reader were never available.
- The ORA and GSEA tabs keep their settings apart. Before, for an uploaded
.h5ad, the GSEA tab overwrote the ORA FDR threshold, and the ORA table
failed with "length(cuts) must be equal to length(values) - 1".
- The Volcano and DE Table tabs work for an
.h5ad whose features have no
description column (the description falls back to the gene name, as for
SUSHI results). Before, the volcano failed with "undefined columns
selected".
- Species without KEGG support (anything but human, mouse and rat): Changing
the contrast no longer ends the session with "EXPR must be a length 1
vector". An
.h5ad with two or more contrasts hung on load.
- Level labels with Greek letters, or with a space between two tags, keep their formatting when a PDF device is open on Linux. Before, the label check measured them on that device, failed, and fell back to plain text.
Documentation
- Written format specs in
inst/spec/: exploreDE-h5ad-1.0.md (the .h5ad
layout, proteomics profile including precursor level, prolfquapp dialects,
and a minimal Python writer) and exploreDE-session-2.md (session files).
- README, the bring-your-own-data vignette, and the AI skill now cover
writing files outside R, opening files from a link, and saving sessions.
- The help pages of the
ExploreDataset* classes describe every public method and its arguments.
Removed
- The App Data tab (deprecated).
devtools as a dependency: installing exploreDE no longer installs it. dendextend and rlang, which the package code calls, move from Suggests to Imports.
exploreDE 3.8.0
- Project Jambon: One column dictionary with ordered patterns; enrichment
rebuilt from tidy tables on load;
build_explore_h5ad() documented in the
bring-your-own-data vignette and an AI skill; exploreDE(file) opens a file
directly, and the demo ships with the package; ezRun dropped.
- Level labels, heatmap legend sliders, feature bucket fixes, and "DEG" →
"DE" throughout the interface.
exploreDE 0.99.0
- Submitted to Bioconductor. The version restarts at 0.99.0, the number Bioconductor gives a new package; the changes below were developed as 3.10.0. Witold Wolski is the maintainer.
- The vignette installs exploreDE from Bioconductor (
BiocManager::install("exploreDE")).
- The app opens about a second faster: checking whether the KEGG views can be offered no longer loads pathview, which now loads when a KEGG view is first opened.
- VST is computed once per dataset: switching a tab to VST again, or a second plot on VST, no longer recomputes it (0.3 s on the demo, much longer on large datasets).
exploreDE() opens a SummarizedExperiment or AnnData object as well as a path: exploreDE(se). The object is written to a temporary file that the app opens; a SummarizedExperiment that is not a SUSHI or prolfqua result opens as a Count QC dataset.
?"exploreDE-package" gives an overview of the package's functions and vignettes. vignette("exploreDE") has a section on how exploreDE builds on Bioconductor and how it differs from iSEE, pcaExplorer, ideal, GeneTonic and debrowser; both vignettes use BiocStyle.
inst/examples/README.md lists the source of each example dataset: the RNA-seq demo is a trimmed SUSHI DESeq2 result, the proteomics example six runs of the public LFQ benchmark PXD028735.
- New vignette
vignette("exploreDE"): starting the app, a tour of its tabs with screenshots of the demo dataset, and opening a dataset in R with new_explore_dataset(). The README describes installing from GitHub until the Bioconductor release.
- The app run from the installed package (
exploreDE(), or shiny::runApp() on system.file("app", package = "exploreDE")) no longer spends most of its time in garbage collection. It put the package's objects on the search path together with the namespace's .__NAMESPACE__. record, and with the byte-code compiler on, R then ran a full garbage collection on nearly every allocation: loading the demo dataset took about 5 times as long as from the source tree, and several minutes on a slow machine. The namespace's own records are now left out.
- Several
.h5ad files can be compared in one session. The landing page takes more than one file: the first that loads opens in the tabs, and the contrasts of all of them are loaded into the Multi DE tabs, the loaded dataset's under their own names and the other files' as <file>_<contrast>. Multi DE's Data Selection tab has an "Upload files" panel that adds more files later, also to a SUSHI dataset; a file of another omics class, or without contrasts, is refused with a message. exploreDE() takes a vector of paths the same way. Saved sessions record these datasets by file label and contrast, and restore them when the same files have been added again (the files themselves are never saved).
- Heatmaps redraw without computing the counts again when only colours, labels, fonts or layout change. Every change recomputed the count method (VST runs DESeq2) and the batch correction on all features, and repeated their messages.
- Heatmap table downloads list features under their full ids, so "Include DE statistics" fills in every row. The DE heatmap cut ids to 15 characters, which left the statistics empty for longer ids and merged ids that share their first 15 characters. A heatmap that shows no features downloads an empty table instead of the last one it drew, and a dataset whose DE heatmap starts empty can download its table once it has features.
- Heatmaps: a GO term or KEGG pathway with one gene left after its filters, or a single kept sample, draws instead of ending the session; the expression filter now applies to a single-gene term too.
- Count QC shows feature descriptions without the
[Source:HGNC Symbol;Acc:...] suffix, as RNA-seq does.
- Multi DE reads a dataset's count methods once for all its contrasts and keeps one copy of them. It computed VST, FPKM and TPM again for every contrast and held a copy per contrast, so a dataset with many contrasts loaded slowly and took that many times the memory.
- Heatmaps: a "Sample ratios" setting defines log2 ratios between any two sets of samples (the difference of their mean log2 values on the chosen count method, always taken on the log2 scale, with no statistics; a ratio keeps the count method and batch setting it was added with), and a "Ratios" heatmap shows the features with the most variable or the largest ratios across the ratios chosen, next to each contrast's log2 fold change. Ratios are not kept in saved sessions.
- Boxplots, Volcano Plots and the Custom heatmap can select features by pattern, next to the feature picker and the paste box:
* and ? are wildcards (Hsp*, *rik; every other character is literal, so sp|P02768|ALBU_HUMAN matches as typed), or, with "Regular expression" ticked, the pattern is one (^Hsp[0-9], Gm1|Gm2). It is matched ignoring case against the names the tab's picker offers (feature IDs, gene symbols or protein IDs), applied when the box loses focus, and the matches join the shared feature bucket like a pasted list, at most 1000 matching names; the box says how many matched.
- The ORA tab shows the results of every contrast that has them. It was set up only when the first contrast had ORA results, so when that contrast had none (no enriched terms, or no enrichment run for it) the tab stayed empty for every other contrast too. An
.h5ad also took its enrichment kinds from its first contrast only, so a file with ORA results in a later contrast alone showed none and loaded no pathway results into Multi DE. Switching to a contrast without results now clears the ORA and GSEA tables instead of leaving the previous contrast's table in place, the "no results" message opens only on the tab concerned and says when another contrast has results, and the ORA results file covers every ontology stored, not only GO BP/MF/CC.
- Security: an
.h5ad can no longer run code when its pathway tabs open. The reader decoded uns$enrichment_native with unserialize(), which runs code embedded in the file; that block is now ignored, and export_h5ad_to_parquet() no longer copies it. Files written before 2026-09-25 that carry their ORA/GSEA results only in that block show no enrichment; rebuild them with build_explore_h5ad().
- Security: a
?data= link whose path contains "zip" no longer loads a fixed 2023 proteomics dataset over ssh before the access check; that leftover debugging branch is removed.
- Security: Multi DE "Browse Projects" lists a project's analysis folders only for users with access to it. A link the user was denied no longer leaves its project browsable after loading the demo or an upload.
- Security: the landing page and Multi DE's "Upload files" panel take
.h5ad files only. An uploaded .rds was opened with readRDS(), which can run code that the file carries. exploreDE("file.rds") still opens a local .rds.
- Security: the Multi DE Upset/Venn tab shows the features of a selected intersection as text. It inserted the feature ids as HTML, so a dataset whose ids contained markup could run script in the viewer's browser. The "Analyse at Enrichr website" link is gone; it called a function the app never defined and did nothing.
exploreDE() no longer turns on shiny::reactiveConsole(), which stayed on in the calling R session after the app closed and hid errors from reading reactive values outside a reactive context.
build_explore_h5ad() aligns every count matrix to the samples by column name. A second matrix (for example tpm) with its samples in another order was stored under the wrong sample labels; a matrix with different samples is now an error.
build_explore_h5ad() keeps the values of duplicated feature ids. Every duplicate after the first was stored as an all-NA row, although the warning said the ids were made unique.
build_explore_h5ad() stops when two count matrices map to the same layer (for example raw and counts) or two contrast names to the same storage key (for example B_vs_A and b-vs-a). Before, one of them was silently dropped.
- DE Table: the significance calculator and the "selected" and "filtered" downloads always use the selected contrast. Each contrast change registered another copy of their handlers, so after switching, a copy for an earlier contrast could answer, and selected row numbers could be applied to the earlier contrast's table.
- Breaking: an
.h5ad must carry uns schema_version ("exploreDE/1.0"), omics_type and feature_id_kind, as the spec requires; a file without them is refused with a message naming the missing key. Before, defaults were filled in: a proteomics file with a missing or misspelt omics_type loaded as RNA-seq (VST and normalisation computed on log2 intensities), and any AnnData loaded as exploreDE/1.0. Files written by build_explore_h5ad() carry all three.
- Breaking:
new_explore_dataset() and the constructors of the ExploreDataset* classes no longer take a config argument. Nothing in the package passed one; for an .h5ad or a Parquet directory a supplied config made loading fail and skipped the check that the file is exploreDE/1.0.
build_explore_h5ad() stores every assay of a SummarizedExperiment under its name, with its colData and rowData: a prolfqua result's rawData and transformedData become the layers intensities_raw and intensities. It kept only the first assay, unannounced, so a proteomics object's raw intensities were stored as its log2 intensities. Several assays need names; coldata and rowdata, when given, replace the object's own.
- Breaking:
build_explore_h5ad() no longer takes a gene_symbol argument. For symbols, name the rowdata column with rowdata_columns = list(symbol_col = ...).
- Breaking:
build_explore_h5ad() requires contrast names of the form <test>_vs_<reference>, with both groups levels of one coldata factor, and records that factor as factor_used. Before, it stored any name split at _vs_ as the groups (contrast1 gave the reference group "NA").
build_explore_h5ad() writes proteomics layers under the spec's names: a single matrix as intensities, raw ones (raw, counts) as intensities_raw. Before, the single matrix became counts. uns$de records model = "DESeq2" only for DESeq2 results, instead of for every table, and enrichment_filter$padj_max only for pathway tables that were filtered.
validate_explore_dataset() also fails on DE tables without effect_log2fc or score_fdr, and on a raw or primary assay that is not offered. With strict = FALSE it no longer throws when samples() fails, and records a failing assay_names() instead of skipping the check.
- Multi DE Manual Import loads the datasets when all twelve link boxes are filled; before, nothing loaded. An import file whose first cell is empty no longer ends the session.
- Proteomics results whose
protein_Id has gaps (SAINT, for example) load: a missing id is replaced by the row name. Before, one missing id stopped the dataset from loading, and two or more could replace every feature id by its row name. A table without a protein_Id column is refused with a message that lists its columns.
- Batch correction is skipped, with a message, when the batch or design column has missing values. A missing value in the design column stopped the tab with "number of rows of matrices must match".
- Proteomics data without transformed intensities (an
.h5ad with raw intensities only, or a SummarizedExperiment without transformedData) is no longer taken to be on the log2 scale: batch correction asks for "Log2" first instead of running on the raw intensities shown in their place, and sample ratios take their log2. eds$assay_is_log2() says which assays are on the log2 scale; each backend records it when it loads.
eds$raw_assay_name() and eds$raw_assay() of proteomics data give the raw intensities (intensities_raw) when the data has them; they gave the transformed intensities.
- Boxplots, Multi DE Boxplots and Heatmaps log raw proteomics intensities when "Log2" is ticked (the Heatmaps' default); they logged RNA-seq counts only and plotted, or refused to batch-correct, raw intensities on their linear scale.
- Replicability shows "Log2 Counts?" again, for every count method. It appeared only for count methods named "TPM", "FPKM", "Normalised" or "Raw", names the selector no longer uses; a count method already on the log2 scale (log2 counts, VST, transformed intensities) is not logged a second time when it is ticked.
- Ordination: "Log2 counts?" (on by default) logs raw proteomics intensities before batch correction. It logged RNA-seq counts only, so raw intensities were batch-corrected and ordinated on their linear scale, and FGCZ staff's "Preprocessing order" had no Log2 step for them. The "Batch correction requires log-scale data" message no longer appears when no batch correction is chosen.
- Ordination (PCA, PCoA, NMDS) leaves out features with missing values instead of samples. Proteomics data has missing values in every sample, so when "Use top n features" covered all features (the default for datasets with fewer than 500), no plot appeared.
- Ordination: FGCZ staff see the "Preprocessing order" settings again; everybody saw the staff-only message instead.
- Ordination and Heatmaps say when "Minimum number of peptides" (default 2) leaves too few features, as for a prolfquapp result whose proteins all have one peptide. Ordination showed an empty plot behind a spinner: its point-selection table, drawn without columns, made the browser drop the rest of the update. The Heatmaps' "No features found" message did not name the filter.
- The README says how the
?data= LDAP check identifies the user (SHINYPROXY_USERNAME, one ShinyProxy container per user), and that without it every gStore link is refused.
- Every backend builds its DE table the same way: SAINT
.h5ad results are sorted by FDR, as SAINT SummarizedExperiments are (they kept feature order), and an RNA-seq SummarizedExperiment without a usedInTest column marks as tested the features with a p-value, as .h5ad files do (it had no such column).
- Multi DE opens canonical proteomics
.h5ad files and Parquet directories: their contrasts are loaded into the Multi DE tabs, as for a prolfquapp result; before, the tabs stayed empty. All proteomics data now goes through the same converter, so the Multi-Contrast Boxplot offers the intensities as intensities / intensities_raw instead of the result's own assay names (transformedData, imputedData, ...).
- Multi DE "DE Tile Plots" draw when all plotted contrasts have the same log2 fold changes, for example one contrast loaded from two copies of a file; they stopped with "invalid 'yscale' in viewport". Such columns are left unclustered.
- Multi DE KEGG Pathway Plots and the DE Tile Plots' KEGG tab recognise the species as the single-dataset KEGG views do, from the reference build's species (
Homo_sapiens/..., Mus_musculus/..., Rattus_norvegicus/...): rat data gets them too, and a build whose name merely contains "mm" or "hg" (macaque's Mmul_10, for example) is no longer taken for mouse or human. A KEGG pathway fetch reports only a failed download as "Failed to fetch KEGG pathway"; a gene-mapping error shows as itself.
- Heatmaps: the DE, Custom, GO and KEGG table downloads include the contrast's log2 ratio, p-value and FDR only when "Include DE statistics" is ticked. RNA-seq downloads always included them, whatever the box said.
- An
.h5ad whose sample table has a column such as organism part but no organism no longer shows that column's value (a tissue, say) as the organism and reference in the Results Summary.
build_explore_h5ad() without ref_build writes no reference_genome; it wrote the text "NA", which the app then showed as the reference build. Files written before keep it until rebuilt.
- The Results Summary's settings table of a SUSHI result leaves out a setting the result does not record (analysis, method, reference, ...) instead of failing to show.
- An RNA-seq
SummarizedExperiment without feature lengths (featWidth) no longer offers FPKM and TPM, which could not be computed; an isoform-level one without gene_name loads with its row names as feature ids instead of failing. CountQC results already did both.
exploreDE() and new_explore_dataset() refuse an .RData file that is not a SUSHI ...-EzResult.RData with a message; it ran until R's stack overflowed.
- A prolfqua
SummarizedExperiment without contrasts opens as proteomics data with all its proteins. It was taken for a CountQC result and offered a VST of raw counts it does not have; built directly as ExploreDatasetSE_Proteomics it had no features.
- A proteomics
?data= link to a file that does not exist on pStore (or with pStore out of reach) shows "This link can't be opened" with the reason. The session used to end on a grey screen.
- Count QC plot downloads use the figure width and height set at the time of the download. The first download fixed the size for every later one.
- KEGG Pathway views show why a pathway map could not be drawn, and a failed KEGG image download fails visibly. The error went only to the server log: the user saw no image, or got an empty file.
- Colours / Labels: importing a colour template sets the colours again. The import ended the session with "updateColourInput() has been moved to the 'colourpicker' package": the app called shinyjs's retired function of that name, attached after colourpicker.
- Results Summary, Methods download: when the document cannot be built, the download fails with the error instead of saving an empty file. For an RNA-seq
.h5ad the tab says that methods text needs a SUSHI result, instead of offering a button that gave an empty file.
- Loading a saved session reports a Multi DE dataset whose file exists but cannot be read as "Could not be read", with the error, instead of "Not found or not accessible".
- The GSEA table shows again after switching back from a contrast without GSEA results. It stayed on the "No GSEA results" message for the rest of the session, and with GSEA results on a second contrast only it never appeared.
- Select features by pattern: a regular expression is matched with R's default engine instead of Perl's. Some patterns, such as
(.+)+X$, made the Perl engine search for over a minute on a few thousand protein IDs, holding up every session served by that R process; Perl-only syntax such as lookarounds is no longer accepted.
- Saved sessions no longer contain the upload boxes' last file (its name and the server's temporary path); loading such a session tried to set the upload box again and again.
- Select features by pattern: the limit of 1000 counts features, not names. With protein IDs or gene symbols each name can stand for many peptides or sites, so
* added 5000 peptides of 1000 proteins; the box now says how many features matched when the limit applies.
exploreDE(c(...)) opens the first file that loads and compares the files after it in Multi DE, as the landing page does; one message lists the files that could not be loaded. When the first file failed, the app stayed on the landing page and dropped the others.
- Loading a saved session brings back the loaded dataset's own contrasts in Multi DE, also in a fresh session where Multi DE does not hold them yet; they were reported as "Not found or not accessible".
- The Multi DE "Integrated DE Table" shows each contrast's p-value. It looked for a
pvalue column, while the results carry pValue, so the column was never there.
- Multi DE results added through Browse Projects or Manual Import are read like the dataset in the main tabs, with the sample table taken from the result itself. Before, it came from
../input_dataset.tsv, and a result without that file got an empty sample table.
- An RNA-seq
SummarizedExperiment whose p-value column is named P Value lists its features by p-value, as one named pValue or P.Value does.
- An
.h5ad written by another tool, with gene symbols in a gene_name or gene_symbol column instead of label_gene_symbol, labels its features with those symbols; before, the labels were the feature ids, while the gene picker offered the symbols.
- DE QC offers the GC content and gene width plots for
.h5ad files that carry feature lengths and GC content. Files written by build_explore_h5ad() store them as label_featwidth and label_gc, which the DE table never picked up, so only the standard view was offered.
- The DESCRIPTION declares every package the app uses: pathview, enrichplot, KEGGREST, ggvenn, cowplot, colorspace, scales and tidyr were missing, so on a fresh install the app failed at startup (pathview) or when reaching the Venn diagram (ggvenn). The two
shinyalert pop-ups are now Shiny's own modal and notification, so shinyalert is no longer needed.
- Installing exploreDE no longer pulls in tidyverse, patchwork, shinylogs, SingleCellExperiment, plyr, reshape2, gplots, gridExtra or writexl. The app attached the first four but never called them; the other five did small jobs that dplyr, tidyr, cowplot, openxlsx and base R already do.
- pathview, KEGGREST, glmpca, ggtext, gridtext, png and BiocManager are optional (Suggests). Without pathview, the KEGG tabs and the KEGG inputs of the Heatmap and tile tabs are hidden; without glmpca, Ordination does not offer GLM-PCA; without ggtext and gridtext, custom level labels show as plain text. The README gives the install line; a deployment that should keep these features must install them.
- Heatmap and Ordination treat peptide and phospho datasets like protein datasets when choosing the batch-correction defaults: with two factors, the design is locked to the group factor, as Boxplot and Correlation already did. Before, the design defaulted to "None", so batch correction did not protect the group effect. All four tabs now use one rule.
- Batch correction is no longer applied to raw (linear) proteomics intensities as if they were log2: the tabs say that log-scale data is needed, as they do for raw RNA-seq counts. Only the transformed intensities count as log2.
- The proteomics Volcano download file names carry the contrast, and the colour-template file name the dataset's design label. Both used to take a value set by the ORA tab.
- The version follows Bioconductor's numbering, where an even middle number marks a release.
- anndataR is installed from Bioconductor: the DESCRIPTION no longer has a
Remotes: field pointing to GitHub, and requires anndataR >= 1.2.3 (Bioconductor 3.23), the version the deployed app reads with. A file that is not valid HDF5 is read once before the error is shown, not three times.
- The demo dataset (
inst/examples/genomics/deResult.rds) is 4.4 MB instead of 34 MB. It shows the same samples, features, DE table and ORA/GSEA results; removed are parts the app never reads: the DESeq2 object, the gene sets of GO terms that are in no result table, and duplicate annotation columns. inst/scripts/trim_demo_deResult.R records the trimming.
- Every exported function and class has a help-page example that runs on the shipped example datasets, and says what it returns. The DESCRIPTION gives the package's URL, bug tracker, Bioconductor categories, and the maintainer's ORCID.
- exploreDE has a hex sticker (
man/figures/logo.png, drawn by inst/scripts/make_hex_logo.R): a volcano plot whose point density draws a cat face. The README opens with what exploreDE is.
- The hex sticker now has dotted cat eyes, ears and whiskers, a background-coloured mouth, and subdued grey "re" lettering. The README links the sticker to the full-size PNG.
- The sticker colours every point, the cat's eyes, ears and whiskers included, by the volcano's cutoffs: blue or orange beyond a log2 fold change of ±1 and above the FDR 0.05 line, grey elsewhere. The eyes, ears and whiskers are jittered, so they read as scattered points like the rest of the volcano.
- Documentation website at https://fgcz.github.io/exploreDE/ (pkgdown): the README, the help pages, the bring-your-own-data vignette and this changelog, rebuilt on every push to
main.
- Help pages show code and links as such: backticks and
[function()] references in the documentation were printed literally before.
ExploreDataset objects print the same summary as before, now from a format() method: format(eds) returns its lines, and the eds$print() method is gone (print(eds) works as before).