Fine-mapping GWAS summary statistics with SuSiE RSS#

This vignette shows how to combine GWAS summary statistics with an ancestry-matched LD reference to fine-map a genomic region.

Learning goals#

After completing this vignette, you will be able to prepare GWAS and LD metadata, run the RSS workflow, inspect variant PIPs and credible sets, and recognize LD or allele-alignment problems that can invalidate the result.

Background and method#

SuSiE RSS performs Bayesian fine-mapping from marginal association statistics and an external linkage-disequilibrium matrix. The workflow standardizes each GWAS, aligns its variants and alleles to the selected LD block, optionally performs summary-statistic QC or imputation, and fits SuSiE RSS within each study-region pair.

The LD reference should match the GWAS ancestry and genome build. A mismatch can produce distorted z-score/LD relationships, unstable credible sets or apparently strong signals that are alignment artifacts. This vignette covers fine-mapping; it does not train individual-level TWAS weights.

Worked example#

The example analyzes one chromosome 22 LD block from the Bellenguez 2022 Alzheimer disease GWAS.

Role

Example path

Required contents

GWAS metadata

input/rss_analysis/protocol_example.rss_mwe.gwas_meta.tsv

Study identifier, summary-statistics path and optional column mapping

GWAS summary statistics

input/rss_analysis/protocol_example.gwas_sumstats.chr22.tsv.gz

Variant alleles, effect estimate or z score, sample size and frequency fields

Column mapping

input/rss_analysis/protocol_example.gwas_column_mapping.fixed.yml

Maps study-specific columns to the protocol schema

LD metadata

input/ld_reference/protocol_example.ld_meta_file.tsv

Region coordinates and the corresponding LD-reference prefix

The requested region is chr22:49355984-50799822. GWAS and LD variants must use compatible coordinates, alleles and ancestry.

Run summary-statistics fine-mapping#

The four chained workflows generate the analysis manifest, harmonize GWAS statistics, fit SuSiE RSS and draw the PIP plot.

Timing: TBD

sos run pipeline/rss_analysis.ipynb \
  generate_manifest+generate_gwas_sumstats+gwas_fine_mapping+gwas_rss_plot \
  --cwd output/rss_analysis \
  --modular-script-dir code/script \
  --gwas-meta input/rss_analysis/protocol_example.rss_mwe.gwas_meta.tsv \
  --regions chr22:49355984-50799822 \
  --ld-meta input/ld_reference/protocol_example.ld_meta_file.tsv

The command creates:

  • output/rss_analysis/sumstats/AD_Bellenguez_2022.chr22_49355984_50799822.gwas_sumstats.rds — the harmonized GwasSumStats object.

  • output/rss_analysis/fine_mapping/AD_Bellenguez_2022.chr22_49355984_50799822.gwas_finemap.rds — the GwasFineMappingResult.

  • output/rss_analysis/plots/AD_Bellenguez_2022.chr22_49355984_50799822.pip_plot.png — the regional PIP plot.

Optional QC settings include --qc-method (none, slalom or dentist), --impute, JSON --qc-args, and the credible-set purity threshold. Use these settings only after confirming their assumptions for the available GWAS and LD reference.

Command reference#

Check the current interface before adapting the example.

sos run pipeline/rss_analysis.ipynb -h

Results and interpretation#

Fine-mapping result#

The GwasFineMappingResult records the study, region and method. Its entry contains the SuSiE fit and a topLoci table with one row per aligned variant.

Component

Interpretation

topLoci$pip

Posterior probability that a variant contributes to a modeled effect

cs_95

95% credible-set assignment

cs_95_purity

LD-based purity of the assigned credible set

Marginal columns

Harmonized GWAS effect, uncertainty, z score and p-value

susieFit

Model fit, credible sets and diagnostics

suppressPackageStartupMessages(library(pecotmr))

result_file <- "output/rss_analysis/fine_mapping/AD_Bellenguez_2022.chr22_49355984_50799822.gwas_finemap.rds"
result <- readRDS(result_file)
ld <- attr(result, "listData")
cat("Class:", class(result), "\n")
print(ld[c("study", "method", "region_id")])

entry <- ld$entry[[1]]
top_loci <- attr(entry, "topLoci")
top_loci <- top_loci[order(top_loci$pip, decreasing = TRUE), ]
head(top_loci[, c("variant_id", "af", "marginal_z", "pip", "cs_95", "cs_95_purity")], 8)

The toy result ranks variants by PIP but does not retain a high-purity credible set. That means the example demonstrates the object and workflow without localizing a causal variant. In a substantive analysis, prioritize high-PIP variants only after checking credible-set purity, allele alignment, GWAS/LD ancestry matching and sensitivity to QC. Several variants in one credible set represent unresolved alternatives, not multiple confirmed causal variants.

Limitations and common pitfalls#

  • External LD must match the GWAS ancestry, build and allele coding.

  • Summary statistics and the LD panel should cover the same variants; extensive missingness can change the fit.

  • Imputed summary statistics add model-based information and should be labeled as imputed.

  • Credible sets depend on LD quality and the assumed maximum number of effects.

  • Low purity means the set should not be interpreted as localized.

  • The example block is intentionally small and is not a biological benchmark.

Next steps#

Annotate well-supported variants, compare credible sets across relevant populations or studies, and integrate the result with QTL fine-mapping or colocalization. Preserve the GWAS and LD provenance so downstream users can evaluate compatibility.