snpStats
Dependencies & Environment
Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.
- Version: 1.62.0 · Bioconductor: 3.23 · R: ≥ 4.6
- Depends: survival, Matrix
- Imports: BiocGenerics
- System requirements: URL
- Install:
BiocManager::install("snpStats")
When to Use
- Performing genome-wide association studies (GWAS) on large cohorts with hundreds of thousands of SNPs.
- Analyzing imputed genotype data where genotypes are represented as posterior probabilities (uncertainty) rather than hard calls.
- Calculating linkage disequilibrium (LD) statistics ($r^2$ and $D'$) and performing haplotype-based association testing.
- Conducting family-based association tests, such as the Transmission Disequilibrium Test (TDT).
- Calculating fixation index ($F_{ST}$) to measure genetic differentiation between populations.
When NOT to Use
- For modern, multi-million variant biobank-scale GWAS with complex population structure, use
REGENIE or PLINK2 because snpStats is single-threaded and runs entirely in R memory.
- For sequencing-based rare variant association tests (e.g., burden tests, SKAT), use
SeqVarTools or GENESIS because snpStats is optimized for common micro-array SNP data.
Data Requirements
- Input Format: PLINK bed/bim/fam files, or imputed genotype files (e.g., IMPUTE2 format).
- Structure: Genotypes must be stored in the highly memory-efficient
SnpMatrix or XSnpMatrix (for the X chromosome) classes, which pack genotypes into 1 byte per SNP.
- Size: Typically thousands of samples and up to 1 million SNPs.
Key Parameters
- snps: A
SnpMatrix or XSnpMatrix object containing the genotype data.
- phenotype: A vector or factor containing the target trait/phenotype for association testing.
- covariates: A data frame of confounding variables (e.g., age, sex, principal components) to include in the regression model.
- depth (1): The maximum distance (in number of SNPs) over which to calculate pairwise LD.
- stats: A logical indicating whether to return detailed test statistics or just p-values.
Best Practices
- Perform rigorous quality control (QC) on the
SnpMatrix using col.summary() and row.summary() to filter out samples/SNPs with high missingness, low minor allele frequency (MAF), or Hardy-Weinberg equilibrium (HWE) deviations.
- Always use the
XSnpMatrix class for X-chromosome variants to correctly handle male hemizygosity and female heterozygosity.
- Use principal component analysis (PCA) on a pruned subset of independent SNPs to identify and control for population stratification.
- When working with imputed data, retain the probabilistic representation (uncertainty) to preserve statistical power and avoid bias from hard-calling.
Common Pitfalls
- Mismatched PLINK files: Attempting to load PLINK files with mismatched sample or SNP counts causes import crashes. Fix: Verify that the
.bed, .bim, and .fam files are perfectly synchronized and have not been modified independently.
- Uncorrected population structure: Running association tests without correcting for population structure leads to highly inflated QQ-plots. Fix: Extract the top principal components using
xxt() and include them as covariates in single.snp.tests().
- Memory exhaustion during LD calculation: Calculating pairwise LD across an entire chromosome can exhaust system memory. Fix: Restrict the LD calculation using the
depth parameter or a sliding window of physical distance.
Alternatives
GENESIS: For association testing in samples with complex pedigree structures or ancestry, supporting both GDS and SnpMatrix formats.
gwascat: For comparing GWAS results with the NHGRI-EBI GWAS Catalog.
GWASTools: For comprehensive quality control and data management of genome-wide association studies.
Citations
- Clayton, D. (2021). snpStats: SnpMatrix and XSnpMatrix classes and methods. R package version 1.44.0.
- Clayton, D., & Leung, H. T. (2007). An R package for association studies on locus-specific and genome-wide scales. Human Heredity, 64(1), 45-51.
References
Run this on BioMate
This skill is the knowledge layer — when, why, and how to use snpstats. To run this analysis on your own data with managed compute, automated QC, and reproducible outputs, use BioMate — free to start.
▶ Open snpstats on BioMate →
1---2name: bioconductor-snpstats3description: Classes and statistical methods for large SNP association studies. This extends the earlier snpMatrix package, allowing for uncertainty in genotypes.4---56# snpStats78## Dependencies & Environment910> Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.1112- **Version:** 1.62.0 · **Bioconductor:** 3.23 · **R:** ≥ 4.613- **Depends:** survival, Matrix14- **Imports:** BiocGenerics15- **System requirements:** URL16- **Install:** `BiocManager::install("snpStats")`1718## When to Use19- Performing genome-wide association studies (GWAS) on large cohorts with hundreds of thousands of SNPs.20- Analyzing imputed genotype data where genotypes are represented as posterior probabilities (uncertainty) rather than hard calls.21- Calculating linkage disequilibrium (LD) statistics ($r^2$ and $D'$) and performing haplotype-based association testing.22- Conducting family-based association tests, such as the Transmission Disequilibrium Test (TDT).23- Calculating fixation index ($F_{ST}$) to measure genetic differentiation between populations.2425## When NOT to Use26- For modern, multi-million variant biobank-scale GWAS with complex population structure, use `REGENIE` or `PLINK2` because snpStats is single-threaded and runs entirely in R memory.27- For sequencing-based rare variant association tests (e.g., burden tests, SKAT), use `SeqVarTools` or `GENESIS` because snpStats is optimized for common micro-array SNP data.2829## Data Requirements30- **Input Format**: PLINK bed/bim/fam files, or imputed genotype files (e.g., IMPUTE2 format).31- **Structure**: Genotypes must be stored in the highly memory-efficient `SnpMatrix` or `XSnpMatrix` (for the X chromosome) classes, which pack genotypes into 1 byte per SNP.32- **Size**: Typically thousands of samples and up to 1 million SNPs.3334## Key Parameters35- **snps**: A `SnpMatrix` or `XSnpMatrix` object containing the genotype data.36- **phenotype**: A vector or factor containing the target trait/phenotype for association testing.37- **covariates**: A data frame of confounding variables (e.g., age, sex, principal components) to include in the regression model.38- **depth** (1): The maximum distance (in number of SNPs) over which to calculate pairwise LD.39- **stats**: A logical indicating whether to return detailed test statistics or just p-values.4041## Best Practices42- Perform rigorous quality control (QC) on the `SnpMatrix` using `col.summary()` and `row.summary()` to filter out samples/SNPs with high missingness, low minor allele frequency (MAF), or Hardy-Weinberg equilibrium (HWE) deviations.43- Always use the `XSnpMatrix` class for X-chromosome variants to correctly handle male hemizygosity and female heterozygosity.44- Use principal component analysis (PCA) on a pruned subset of independent SNPs to identify and control for population stratification.45- When working with imputed data, retain the probabilistic representation (uncertainty) to preserve statistical power and avoid bias from hard-calling.4647## Common Pitfalls48- **Mismatched PLINK files**: Attempting to load PLINK files with mismatched sample or SNP counts causes import crashes. *Fix*: Verify that the `.bed`, `.bim`, and `.fam` files are perfectly synchronized and have not been modified independently.49- **Uncorrected population structure**: Running association tests without correcting for population structure leads to highly inflated QQ-plots. *Fix*: Extract the top principal components using `xxt()` and include them as covariates in `single.snp.tests()`.50- **Memory exhaustion during LD calculation**: Calculating pairwise LD across an entire chromosome can exhaust system memory. *Fix*: Restrict the LD calculation using the `depth` parameter or a sliding window of physical distance.5152## Alternatives53- `GENESIS`: For association testing in samples with complex pedigree structures or ancestry, supporting both GDS and SnpMatrix formats.54- `gwascat`: For comparing GWAS results with the NHGRI-EBI GWAS Catalog.55- `GWASTools`: For comprehensive quality control and data management of genome-wide association studies.5657## Citations58- Clayton, D. (2021). snpStats: SnpMatrix and XSnpMatrix classes and methods. *R package version 1.44.0*.59- Clayton, D., & Leung, H. T. (2007). An R package for association studies on locus-specific and genome-wide scales. *Human Heredity*, 64(1), 45-51.6061## References62- Homepage: https://bioconductor.org/packages/snpStats63- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/snpStats/inst/doc/snpStats-vignette.pdf6465<!-- biomate-cta -->66---6768## Run this on BioMate6970This skill is the **knowledge layer** — when, why, and how to use `snpstats`. To **run this analysis on your own data** with managed compute, automated QC, and reproducible outputs, use **[BioMate](https://www.biomate.ai?ref=kb&pkg=snpstats)** — free to start.7172▶ **[Open `snpstats` on BioMate →](https://www.biomate.ai?ref=kb&pkg=snpstats)**