reporting/quarto-reports/SKILL.md
Build reproducible scientific documents, presentations, and websites with Quarto supporting R, Python, Julia, and Observable JS. Use when creating reproducible reports with Quarto.
npx skillsauth add GPTomics/bioSkills bio-reporting-quarto-reportsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
<tool> --version then <tool> --help to confirm flagsIf code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.
"Create a Quarto analysis report" -> Write reproducible documents mixing code (Python/R), narrative, and figures that render to HTML/PDF/Word.
quarto render report.qmd --to html---
title: "Analysis Report"
author: "Your Name"
date: today
format:
html:
toc: true
code-fold: true
theme: cosmo
---
---
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')
```
---
title: "DE Analysis"
format: html
---
```{r}
library(DESeq2)
dds <- DESeqDataSetFromMatrix(counts, metadata, ~ condition)
dds <- DESeq(dds)
```
---
title: "Multi-format Report"
format:
html:
toc: true
pdf:
documentclass: article
docx:
reference-doc: template.docx
---
# Render all formats
quarto render report.qmd
# Render specific format
quarto render report.qmd --to pdf
---
title: "Parameterized Report"
params:
sample: "sample1"
threshold: 0.05
---
# Render with parameters
quarto render report.qmd -P sample:sample2 -P threshold:0.01
::: {.panel-tabset}
## PCA
```{r}
plotPCA(vsd)
```
## Heatmap
```{r}
pheatmap(mat)
```
:::
::: {.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.
:::
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)
```
```{python}
#| echo: true
#| warning: false
#| fig-width: 10
#| fig-height: 6
#| cache: true
import scanpy as sc
sc.pl.umap(adata, color='leiden')
```
We found `{python} len(sig_genes)` significant genes.
We found `{r} nrow(sig)` significant genes.
---
title: "Analysis Results"
format: revealjs
---
## Slide 1
Content here
## Slide 2 {.smaller}
More content with smaller text
# _quarto.yml
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: references.bib
csl: nature.csl
---
Gene expression analysis was performed using DESeq2 [@love2014].
## References
# _quarto.yml
execute:
freeze: auto # Only re-run when source changes
{{< include _methods.qmd >}}
```{mermaid}
flowchart LR
A[Raw Data] --> B[QC]
B --> C[Alignment]
C --> D[Quantification]
D --> E[DE Analysis]
```
---
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
```
testing
Analyze multi-modal single-cell data (CITE-seq, Multiome, spatial). Use when working with data that measures multiple modalities per cell like RNA + protein or RNA + ATAC. Use when analyzing CITE-seq, Multiome, or other multi-modal single-cell data.
data-ai
Analyze metabolite-mediated cell-cell communication using MeboCost for metabolic signaling inference between cell types. Predict metabolite secretion and sensing patterns from scRNA-seq data. Use when studying metabolic crosstalk between cell populations or metabolite-receptor interactions.
development
Find marker genes and annotate cell types in single-cell RNA-seq using Seurat (R) and Scanpy (Python). Use for differential expression between clusters, identifying cluster-specific markers, scoring gene sets, and assigning cell type labels. Use when finding marker genes and annotating clusters.
development
Reconstruct cell lineage trees from CRISPR barcode tracing or mitochondrial mutations. Use when studying clonal dynamics, cell fate decisions, or developmental trajectories.