Skip to content

Commit 366cda7

Browse files
committed
update: refine language and clarity in the Tidyomics ecosystem post, enhancing descriptions of data structures and analysis capabilities
1 parent bed4d19 commit 366cda7

File tree

1 file changed

+30
-32
lines changed
  • posts/2025-10-10-introducing-tidyomics-ecosystem

1 file changed

+30
-32
lines changed

posts/2025-10-10-introducing-tidyomics-ecosystem/index.qmd

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ execute:
2424

2525
# Introduction
2626

27-
The tidyomics ecosystem was born from a common challenge faced by life-scientists: every omics technology and framework in R seemed to require learning a new data structure and syntax. Switching from bulk RNA-seq to single-cell, or from expression data to genomic ranges, often felt climbing a different mountain. Tidyomics keeps the **underlying objects exactly the same** while giving them a single, tidyverse-flavoured grammar so that moving from bulk RNA-seq to single-cell or spatial data is no harder than shifting between two dplyr pipelines. Its design principles take inspiration from the tidyverse philosophy of clear, human-readable code as articulated by Wickham *et al.* (2019) ([JOSS 10.21105/joss.01686](https://joss.theoj.org/papers/10.21105/joss.01686)).
27+
The tidyomics ecosystem was born from a common challenge faced by life-scientists: omics technologies and frameworks in R often require specialised data structures and syntax. Switching from bulk RNA-seq to single-cell, or from expression data to genomic ranges, often felt climbing a different mountain. Tidyomics keeps the **underlying objects exactly the same** while giving them a single, tidyverse-flavoured grammar and data display making moving from bulk RNA-seq to single-cell or spatial data seamless. Its design principles take inspiration from the tidyverse philosophy of clear, human-readable code as articulated by Wickham *et al.* (2019) ([JOSS 10.21105/joss.01686](https://joss.theoj.org/papers/10.21105/joss.01686)).
2828

2929
This initiative snowballed into an international collaboration—and ultimately into `tidyomics` ([Nat. Methods 2024](https://www.nature.com/articles/s41592-024-02299-2)). Thanks to support from the [Chan Zuckerberg Initiative's Essential Open Source Software for Science (EOSS) Cycle 6 program](https://chanzuckerberg.com/eoss/proposals/?cycle=6), we are actively improving tidyomics through performance optimization, enhanced documentation, and ecosystem expansion to better serve the biomedical research community.
3030

3131
# What is Tidyomics?
3232

3333
![Tidyomics Logo - The official logo of the tidyomics ecosystem](logo.png){width="120px"}
3434

35-
`tidyomics` is an open project to develop and integrate software and documentation to enable a tidy data analysis framework for omics data objects ([Hutchison *et al.* 2024](https://doi.org/10.1038/s41592-024-02299-2)). The development of packages and tutorials is organized around [tidyomics open challenges](https://github.com/tidyomics/). Tidyomics enables the use of familiar tidyverse verbs (`select`, `filter`, `mutate`, etc.) to manipulate rich data objects in the Bioconductor ecosystem. Importantly, the data objects are not modified, but tidyomics provides a tidy *interface* to work on the native objects, leveraging existing Bioconductor classes and algorithms.
35+
`tidyomics` is an open project to develop and integrate software and documentation to enable a tidy data analysis framework for omics data objects ([Hutchison *et al.* 2024](https://doi.org/10.1038/s41592-024-02299-2)). The development of packages and tutorials is organized around [tidyomics open challenges](https://github.com/tidyomics/). Tidyomics enables the use of familiar tidyverse verbs (`select`, `filter`, `mutate`, etc.) to manipulate rich data objects in the Bioconductor ecosystem. Importantly, while the data objects are not modified, `tidyomics` provides a tidy *interface* to work on the native objects, leveraging existing Bioconductor classes and algorithms.
3636

3737
`tidyomics` is a set of R packages by an international group of developers. The ecosystem allows for code such as:
3838

@@ -83,7 +83,7 @@ colData names(9): SampleName cell ... Sample BioSample
8383
```
8484
:::
8585

86-
Loading `tidyprint` (available in the 3.22 Bioconductor release), the `SummarizedExperimenrt` is abstracted to a richer flat representation, without altering its internal properties or structure.
86+
Loading `tidyprint` (available from the 3.22 Bioconductor release), the `SummarizedExperimenrt` is abstracted to a richer flat representation, without altering its internal properties or structure.
8787

8888
```r
8989
library(tidyprint)
@@ -148,21 +148,21 @@ With a single call you have a tidy interface ready for spatial, single-cell, bul
148148
## Utility packages
149149

150150
### tidyprint
151-
`tidyprint` offers a consistent, user-friendly print method for Bioconductor objects such as `SummarizedExperiment`, `SingleCellExperiment`, and others. It flattens complex S4 objects into tidy tibbles for straightforward inspection, summarization, and reporting—without modifying the underlying data. This approach makes it easy to explore and understand your data at a glance using familiar tidyverse conventions.
151+
`tidyprint` (available from the 3.22 Bioconductor release) offers a consistent, user-friendly print method for Bioconductor objects such as `SummarizedExperiment`. It flattens the display of complex S4 objects into tidy tibbles for straightforward inspection, summarization, and reporting—without modifying the underlying data. This approach makes it easy to explore and understand your data at a glance using familiar tidyverse conventions.
152152

153153
**[Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/tidyprint.html)** | **[GitHub](https://github.com/tidyomics/tidyprint)**
154154

155155
## Transcriptomics Packages
156156

157-
Each tidyomics package tackles a real-world analytical challenge. Bulk RNA-seq analyses, for example, are traditionally scattered across disjoint data frames, objects and helper lists. `tidySummarizedExperiment` re-imagines a `SummarizedExperiment` as a tibble-first citizen: you can `filter()`, `mutate()` and `group_by()` genes or samples exactly as you do with any tidyverse data frame. For single-cell data the same philosophy inspired `tidySingleCellExperiment`, while for users of the Seurat workflow we created `tidyseurat`, a drop-in tidy wrapper that never compromises the original Seurat object.
157+
Bulk RNA-seq analyses, for example, are traditionally scattered across disjoint data frames, objects and helper lists. `tidySummarizedExperiment` re-imagines a `SummarizedExperiment` through a tibble-like interface: you can `filter()`, `mutate()` and `group_by()` genes or samples exactly as you do with any tidyverse data frame. For single-cell data the same philosophy inspired `tidySingleCellExperiment`, while for users of the Seurat workflow we created `tidyseurat`, a drop-in tidy wrapper that makes transitioning between Bioconductor and Seurat frameworks seamless.
158158

159159
### tidySummarizedExperiment
160160
The tidy interface for `SummarizedExperiment` objects, enabling tidyverse operations on bulk RNA-seq data.
161161

162162
**[Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/tidySummarizedExperiment.html)** | **[GitHub](https://github.com/tidyomics/tidySummarizedExperiment)**
163163

164164
### tidySingleCellExperiment
165-
Single-cell experiments often contain millions of cells and dozens of matrices. `tidySingleCellExperiment` flattens this complexity so you can focus on the biology instead of the bookkeeping.
165+
Single-cell experiments are highly dimensional. `tidySingleCellExperiment` flattens this complexity so you can focus on the biology instead of the bookkeeping.
166166

167167
**[Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/tidySingleCellExperiment.html)** | **[GitHub](https://github.com/tidyomics/tidySingleCellExperiment)**
168168

@@ -172,7 +172,7 @@ For Seurat users, `tidyseurat` adds the missing tidyverse layer without forcing
172172
**[CRAN](https://cran.r-project.org/web/packages/tidyseurat/index.html)** | **[GitHub](https://github.com/stemangiola/tidyseurat)**
173173

174174
### tidySpatialExperiment
175-
Spatial transcriptomics combines gene expression with tissue geography. `tidySpatialExperiment` brings the tidy philosophy to `SpatialExperiment` objects so you can transform, visualise and model spatial spots with the same verbs you already use for bulk and single-cell data.
175+
Spatial transcriptomics combines gene expression with tissue spatial coordinates. `tidySpatialExperiment` brings the tidy philosophy to `SpatialExperiment` objects so you can transform, visualise and gate spatial spots with the same verbs you already use for bulk and single-cell data.
176176

177177
**[Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/tidySpatialExperiment.html)** | **[GitHub](https://github.com/william-hutchison/tidySpatialExperiment)**
178178

@@ -242,57 +242,55 @@ The tidyomics ecosystem welcomes contributions from the community. You can contr
242242

243243

244244
### Transcriptomics Example
245-
```{r}
245+
```{r, eval=FALSE}
246246
#| eval: false
247247
library(tidyverse)
248248
library(tidybulk)
249249
library(tidySummarizedExperiment)
250250
251-
# Example workflow (requires airway data)
252-
# data(airway, package = "airway")
253-
# airway |>
254-
# keep_abundant(factor_of_interest = dex) |>
255-
# scale_abundance() |>
256-
# test_differential_abundance(~ dex) |>
257-
# filter(abundant) |>
258-
# arrange(desc(abs(logFC)))
251+
data(airway, package = "airway")
252+
airway |>
253+
keep_abundant(factor_of_interest = dex) |>
254+
scale_abundance() |>
255+
test_differential_abundance(~ dex) |>
256+
filter(abundant) |>
257+
arrange(desc(abs(logFC)))
259258
```
260259

261260
### Genomics Example
262-
```{r}
261+
```{r, eval=FALSE}
263262
#| eval: false
264263
library(plyranges)
265264
library(tidyverse)
266265
267-
# Example workflow (requires genomic data)
268-
# granges |>
269-
# filter(score > 10) |>
270-
# join_overlap_inner(promoters) |>
271-
# group_by(gene_id) |>
272-
# summarize(mean_score = mean(score))
266+
Example workflow (requires genomic data)
267+
granges |>
268+
filter(score > 10) |>
269+
join_overlap_inner(promoters) |>
270+
group_by(gene_id) |>
271+
summarize(mean_score = mean(score))
273272
```
274273

275274
### Single-Cell Example
276-
```{r}
275+
```{r, eval=FALSE}
277276
#| eval: false
278277
library(tidySingleCellExperiment)
279278
library(tidyverse)
280279
281-
# Example workflow (requires single-cell data)
282-
# sce |>
283-
# filter(Phase == "G1") |>
284-
# ggplot(aes(UMAP_1, UMAP_2, color=score)) +
285-
# geom_point()
280+
sce |>
281+
filter(Phase == "G1") |>
282+
ggplot(aes(UMAP_1, UMAP_2, color=score)) +
283+
geom_point()
286284
```
287285

288286
# Future Directions
289287

290288
## Planned Developments
291289

292290
1. **Enhanced Single-Cell Support**: Expanded analysis capabilities for single-cell data
293-
2. **Multi-Omics Integration**: Support for multi-omics data analysis
294-
3. **Cloud Computing**: Integration with cloud-based analysis platforms
295-
4. **Educational Expansion**: More comprehensive educational materials
291+
2. **Proteomics Integration**: Support for proteomic data analysis
292+
3. **Education**: More comprehensive educational materials
293+
4. **Reproducibility**: Allow to track object manipulation history with `tidyomicslog`
296294

297295
## Community Goals
298296

0 commit comments

Comments
 (0)