Alzheimer’s Disease Gene Expression
Parameterized Reporting & Interactive Exploration in R
Research Area: Alzheimer’s Disease
Alzheimer’s disease (AD) is a progressive neurodegenerative disorder and the leading cause of dementia worldwide.
- The brain is not uniformly affected — some regions deteriorate earlier than others
- The hippocampus and entorhinal cortex show early, severe damage (memory and navigation)
- The postcentral gyrus and superior frontal gyrus tend to be affected later
- Understanding which genes are disrupted in each region helps identify both shared disease mechanisms and region-specific vulnerabilities
The Data: GSE48350
Postmortem brain tissue microarray data from the Gene Expression Omnibus (GEO).
253 total samples
- 80 Alzheimer’s patients
- 173 age-matched controls
4 brain regions
- Hippocampus
- Entorhinal Cortex
- Postcentral Gyrus
- Superior Frontal Gyrus
54,675 genes measured per sample via microarray
Each gene has a measured expression level — we compare AD patients vs. controls to find genes that are significantly up- or down-regulated
What is Differential Gene Expression?
When we compare gene activity between two groups (here: AD vs. control), we calculate for each gene:
- Log2 Fold Change (logFC): how much the gene’s expression changed
- Positive = higher in AD (upregulated)
- Negative = lower in AD (downregulated)
- Adjusted p-value: statistical confidence after correcting for testing ~55,000 genes at once
- A gene is considered significantly differentially expressed when it meets both a fold change and p-value threshold
Volcano Plot
Each point is one gene. A useful way to see both effect size and significance at once.
X-axis: magnitude of change — Y-axis: statistical confidence — Dashed lines: significance thresholds
Top Differentially Expressed Genes
The 20 genes with the largest absolute fold change in the Hippocampus.
Red = higher expression in AD (upregulated) — Blue = lower expression in AD (downregulated)
Heatmap of Top Significant Genes
Rows: the 10 most statistically significant genes. Columns: individual samples, grouped by disease status.
Red = high expression — Blue = low expression — Each panel is one condition
Project 1: Parameterized Reporting
The same analysis pipeline — re-run automatically across all four brain regions.
The Problem
Running identical analysis code manually for each of 4 brain regions is tedious and error-prone.
The Solution: Parameterized Quarto Reports
- Write the analysis workflow once
- Pass
brain_region and data_path as parameters
- Batch-render all four reports with a single R script
Each report contains:
- Differential expression summary table
- Top genes table (searchable)
- Most significant genes table
- Volcano plot
- Top genes bar chart
- Heatmap
Project 2: The Shiny App
Why build an app?
Static reports answer a fixed question. With an app, the user drives the exploration.
What the app does:
- Select any of the 4 brain regions from a sidebar dropdown — all views update instantly
- Tab 1 — Volcano Plot: adjust logFC and p-value thresholds with sliders to see how significance calls change
- Tab 2 — Heatmap: choose how many top genes to show and filter by condition (AD, Control, or both)
- Tab 3 — Top Genes Table: formatted
gt table of the most significant genes, adjustable N
Demo
Let’s look at the app.
Switch to RStudio / the running Shiny app now
Workflow to cover:
- Load the app — default view (Hippocampus, Volcano Plot)
- Switch brain regions — notice all three tabs update
- Adjust logFC and p-value sliders on the Volcano Plot tab
- Switch to the Heatmap tab — adjust gene count, toggle conditions
- Switch to the Top Genes Table — adjust N, explore the output
Conclusion
What I built:
- A parameterized Quarto reporting pipeline for 4 brain regions
- An interactive Shiny app for real-time exploration of the same data
What I learned:
- Parameterization eliminates repetition and reduces errors
- Reactivity in Shiny makes analysis far more exploratory
Bigger picture:
Gene expression patterns differ meaningfully across brain regions in Alzheimer’s disease. Tools like these make it easier to identify and communicate those differences — without rerunning code from scratch each time.