| name | bio-reporting-quarto-reports |
| description | Build reproducible scientific documents, presentations, and websites with Quarto supporting R, Python, Julia, and Observable JS. Use when creating reproducible reports with Quarto. |
| tool_type | mixed |
| primary_tool | Quarto |
Version Compatibility
Reference examples tested with: Quarto 1.4+, DESeq2 1.42+, ggplot2 3.5+, matplotlib 3.8+, scanpy 1.10+
Before using code patterns, verify installed versions match. If versions differ:
- CLI:
<tool> --version then <tool> --help to confirm flags
If code throws ImportError, AttributeError, or TypeError, introspect the installed
package and adapt the example to match the actual API rather than retrying.
Quarto Reports
"Create a Quarto analysis report" → Write reproducible documents mixing code (Python/R), narrative, and figures that render to HTML/PDF/Word.
- CLI:
quarto render report.qmd --to html
Basic Document
---
title: "Analysis Report"
author: "Your Name"
date: today
format:
html:
toc: true
code-fold: true
theme: cosmo
---
Python Document
---
title: "scRNA-seq Analysis"
format: html
jupyter: python3
---
```{python}
import scanpy as sc
import matplotlib.pyplot as plt
adata = sc.read_h5ad('data.h5ad')
sc.pl.umap(adata, color='leiden')
```
R Document
---
title: "DE Analysis"
format: html
---
```{r}
library(DESeq2)
dds <- DESeqDataSetFromMatrix(counts, metadata, ~ condition)
dds <- DESeq(dds)
```
Multiple Formats
---
title: "Multi-format Report"
format:
html:
toc: true
pdf:
documentclass: article
docx:
reference-doc: template.docx
---
quarto render report.qmd
quarto render report.qmd --to pdf
Parameters
---
title: "Parameterized Report"
params:
sample: "sample1"
threshold: 0.05
---
quarto render report.qmd -P sample:sample2 -P threshold:0.01
Tabsets
::: {.panel-tabset}
## PCA
```{r}
plotPCA(vsd)
```
## Heatmap
```{r}
pheatmap(mat)
```
:::
Callouts
::: {.callout-note}
This is an important note about the analysis.
:::
::: {.callout-warning}
Check your input data format before proceeding.
:::
::: {.callout-tip}
Use caching for long computations.
:::
Cross-References
See @fig-volcano for the volcano plot.
```{r}
#| label: fig-volcano
#| fig-cap: "Volcano plot showing DE genes"
ggplot(res, aes(log2FC, -log10(pvalue))) + geom_point()
```
Results are summarized in @tbl-summary.
```{r}
#| label: tbl-summary
#| tbl-cap: "Summary statistics"
knitr::kable(summary_df)
```
Code Cell Options
```{python}
#| echo: true
#| warning: false
#| fig-width: 10
#| fig-height: 6
#| cache: true
import scanpy as sc
sc.pl.umap(adata, color='leiden')
```
Inline Code
We found `{python} len(sig_genes)` significant genes.
We found `{r} nrow(sig)` significant genes.
Presentations
---
title: "Analysis Results"
format: revealjs
---
Content here
More content with smaller text
Quarto Projects
project:
type: website
output-dir: docs
website:
title: "Analysis Portal"
navbar:
left:
- href: index.qmd
text: Home
- href: methods.qmd
text: Methods
- href: results.qmd
text: Results
Bibliography
---
bibliography: references.bib
csl: nature.csl
---
Gene expression analysis was performed using DESeq2 [@love2014].
## References
Freeze Computations
execute:
freeze: auto
Include Files
{{< include _methods.qmd >}}
Diagrams with Mermaid
```{mermaid}
flowchart LR
A[Raw Data] --> B[QC]
B --> C[Alignment]
C --> D[Quantification]
D --> E[DE Analysis]
```
Multi-Language Document
---
title: "R + Python Analysis"
---
Load in R:
```{r}
library(reticulate)
counts <- read.csv('counts.csv')
```
Process in Python:
```{python}
import pandas as pd
counts_py = r.counts # Access R object
```
Related Skills
- reporting/rmarkdown-reports - R-focused alternative
- data-visualization/ggplot2-fundamentals - R visualizations
- workflow-management/snakemake-workflows - Pipeline integration