Introduction, downloads

S: 31 Oct 2026 (b.1.3)

Recent version history

What's new?

Coming next

[Jump to search box]

General usage

Getting started

Flag usage summaries

Column set descriptors

Citation instructions

Standard data input

PLINK 1 binary (.bed)

PROVISIONAL_REF?

PLINK 2 binary (.pgen)

Autoconversion behavior

VCF/BCF (.vcf[.gz], .bcf)

Oxford genotype (.bgen)

Oxford haplotype (.haps)

EIGENSOFT binary

BIMBAM Mean Genotype

23andMe text

PLINK 1 text (.ped, .tped)

PLINK 1 dosage

Sample ID conversion

Dosage import settings

Generate random

Unusual chromosome IDs

Recombination map

Allele frequencies

Phenotypes

Covariates

'Cluster' import

Variant sets

Reference genome (.fa)

Input filtering

Sample ID file

Variant ID file

Interval-BED file

Set membership

Attribute-based

--extract-col-cond

QUAL, FILTER, INFO

Chromosomes

SNPs only

Palindromic SNPs

Simple variant window

Multiple variant ranges

Deduplicate variants

Sample/variant thinning

Pheno./covar. condition

Missingness

Category subset

--keep-col-match

Missing genotypes

Same-indiv selection

Number of distinct alleles

Allele frequencies/counts

Hardy-Weinberg

Imputation quality

Mendel errors

Sex

Founder status

Relationships

Main functions

Data management

--make-[b]pgen/--make-bed

--export

--output-chr

--zero-cluster

--split-par/--merge-par

--set-me-missing

--set-all-var-ids

--recover-var-ids

--update-map...

--update-ids...

--flip

--flip-scan

--ref-allele

--ref-from-fa

--normalize

--indiv-sort

--write-covar

--variance-standardize

--quantile-normalize

--split-cat-pheno

--pheno-svd

--pmerge[-list]

--write-samples

--info-to-cols

Basic statistics

--freq

--geno-counts

--sample-counts

--missing

--genotyping-rate

--test-mishap

--hardy

--mendel

--het

--check-sex/--impute-sex

--fst

--pgen-info

Pairwise diffs

--pgen-diff

--sample-diff

Linkage disequilibrium

--indep...

--r[2]-[un]phased

--ld

--ld-score

--show-tags

--blocks

Sample-distance matrices

Identity-by-state/Hamming

  (--distance...)

Relationship/covariance

  (--make-grm-bin...)

--make-king...

--king-cutoff

Runs of homozygosity

Population stratification

--pca

PCA projection

--neighbour

Association analysis

--glm

--glm ERRCODE values

--gwas-ssf

--test-missing

--adjust-file

Monte Carlo permutation

Family-based association

--tucc

Report postprocessing

--clump

--gene-report

--meta-analysis

Epistasis

--epistasis-boost

--epistasis

--twolocus

Linear scoring

--score[-list]

--variant-score

Distributed computation

Command-line help

Bundled utilities

ldsc

mtag

vcf_subset

Miscellaneous

Flag/parameter reuse

System resource usage

--loop-cats

.zst decompression

Pseudorandom numbers

Warnings as errors

.pgen validation

Resources

1000 Genomes phase 3

HGDP-CEPH

FASTA files

Errors and warnings

Output file list

Order of operations

Developer information

GitHub root

Python library

R library

Compilation

Adding new functionality

Discussion forums

Credits

File formats

Tutorials

Setup

Rules of Thumb

Data Exploration 1 — HWE, Allele Frequency Spectrum

Data Exploration 2 — Genomic Structure

Linkage

Relationship Matrix

Genome-Wide Assocation Analyses (GWAS)

Regressions

Post-Hoc

Formatting Files

bcftools

Variant IDs

Reference Alleles

Format for R

Shortcuts

Quick index search

Report postprocessing

LD-based result clumping

--clump ['zs'] ['cols='<col set desc.>] <PLINK report filename(s)...>

--clump-p1 <index variant p-value threshold>
--clump-p2 <SP2 column p-value threshold>
--clump-r2 <r^2 threshold>
--clump-kb <clump kb radius>

--clump-unphased
--clump-log10 ['input-only' | 'output-only']
--clump-log10-p1 <-log10(index variant p-value threshold)>
--clump-log10-p2 <-log10(SP2 column p-value threshold)>
--clump-bins <p-value bin boundaries...>

--clump-id-field <field name(s)...>
  (alias: --clump-snp-field)
--clump-p-field <field name(s)...>
  (alias: --clump-field)

--clump-a1-field [field name(s)...]
--clump-test-field [field name(s)...]
--clump-force-a1
--clump-test <test name(s)...>

--clump-allow-overlap

--clump-range <filename>

--clump-range0 <filename>

--clump-range-border <kbs>

When there are multiple significant association p-values in the same region, LD should be taken into account when interpreting the results. The --clump command is designed to help with this.

--clump loads the named PLINK-format association report(s) (text files with a header line, a column containing variant IDs, and another column containing p-values) and groups results into LD-based clumps, writing a new report to plink2.clumps[.zst]. Multiple filenames can be separated by spaces or commas.

  • Clumps are formed around central "index variants" which, by default, must have p-value no larger than 0.0001; change this threshold with --clump-p1. Index variants are chosen greedily starting with the lowest p-value. Variants which meet the --clump-p1 threshold, but have already been assigned to another clump, do not start their own clumps.
  • Sites which are less than 250 kb away from an index variant and have r2 larger than 0.5 with it are assigned to that index variant's clump (unless they have been previously been assigned to another clump, and --clump-allow-overlap is not in effect). These two thresholds can be changed with --clump-kb and --clump-r2, respectively.
  • By default, the r2 values computed by --clump are haplotype-based; maximum likelihood haplotype frequency estimates are applied to unphased data. Use --clump-unphased to change this to unphased r2; the resulting correlation coefficients are less accurate measures of LD, but they are more accurate measures of --glm genotype-column similarity (since --glm also doesn't use phase information).
  • When dosages are present, they are now used in the r2 computation.
  • As usual, only founders are considered in the r2 computation. If your dataset has a shortage of them, --make-founders may come in handy.
  • By default, a p-value histogram is given for each clump, with default bin boundaries 0.0001,0.001,0.01,0.05. You can control the bin boundaries with --clump-bins; provide a comma- or space-separated sequence of increasing numbers.
  • Sites within the clump which have association p-value smaller than 0.01 are listed in the 'SP2' column of the main report, and their span is used for --clump-range[0]. This threshold can be adjusted with --clump-p2.
  • Given a gene region file with 1-based coordinates, --clump-range causes overlaps between regions and clumps to be reported. --clump-range0 does the same with 0-based input coordinates.
    • Overlaps are now reported in the main .clumps[.zst] file; this is a change from PLINK 1.x.
    • With either flag, --clump-range-border extends each region's bounds by the given number of kilobases.
  • By default, variant IDs are expected to be in the 'ID' column, or if that's absent, 'SNP'. You can change this with the --clump-id-field flag, which takes a space-delimited sequence of field names to search for. With multiple field names, earlier names take precedence over later ones. (The other --clump-...-field flags work the same way.)
  • --clump-log10 specifies -log10(p) rather than raw p-value input/output. The 'input-only' and 'output-only' modifiers let you convert from one format to the other.
  • By default, p-values are expected to be in the 'P' column (or, with --clump-log10, 'LOG10_P' and 'NEG_LOG10_P' are also recognized); change this with --clump-p-field.
  • Multiallelic variants are effectively split in this computation. This requires the input file(s) to contain an effect-allele column; by default, this is expected to be 'A1', but you can change this with --clump-a1-field. A1 alleles aren't normally checked or reported for biallelic variants (since they usually don't affect p-values), but you can change that with --clump-force-a1.
  • Entries in the SP2 column are now of the form <variant ID>[(A1 allele)][(file number)]. The A1 component normally only appears for multiallelic variants; --clump-force-a1 changes this. The file-number component now only defaults to appearing when more than one input file is provided; this can be changed with "cols=+f".
  • If a single variant appears in multiple --clump files, index variant candidacy is based on its lowest p-value. For other purposes, the variant's appearances are treated as distinct, i.e. the same variant can be listed multiple times with different file numbers in the 'SP2' column, and can be counted multiple times in the TOTAL/NONSIG/S0.05/S0.01/S0.001/S0.0001 columns.
  • By default, if there is a 'TEST' column, only lines where the test value is 'ADD' are considered. (This is a change from PLINK 1.x.) These default values can be changed with --clump-test-field and --clump-test, respectively.
  • By default, no variant may belong to more than one clump; remove this restriction with --clump-allow-overlap.
  • When variant IDs with p ≤ --clump-p1 threshold are present in a --clump input file, but missing from the main dataset, they are now written to plink2.clumps.missing_id[.zst]. When (variant ID, A1 allele) pairs with with p ≤ --clump-p1 threshold in the --clump input file are ignored due to the A1 allele being missing from the main dataset (note that A1 is only checked for multiallelic variants and --clump-force-a1), they are written to plink2.clumps.missing_allele[.zst].
  • We have provisionally retired --clump's other bells and whistles; contact us if this is a problem.

The PLINK 1.07 documentation has more discussion of these flags, including a few detailed examples.

Gene-based reporting

--gene-report <PLINK report> <gene region file> ['zs'] ['0based']
              ['cols='<column set descriptor>]

--gene-list-border <kbs>
--gene-subset <filename>
--gene-report-id-field <field name(s)...>
  (alias: --gene-report-snp-field)

--gene-report-chr-field <field name(s)...>
--gene-report-pos-field <field name(s)...>
--gene-report-p-field <field name(s)...>

Given a gene region file and a PLINK report with CHROM/CHR and POS/BP columns, --gene-report lists every (gene, variant) pair where the variant falls inside the gene, sorted by gene name.

  • No main dataset is loaded; the chromosome codes and base-pair coordinates are taken from the association report.
  • Input columns outside of {CHROM, POS, ID, P} are currently dropped from the report; contact us if you want to be able to keep some/all of them.
  • --gene-list-border extends each gene's bounds out by the given number of kilobases.
  • --gene-subset causes only genes named in the given file to be loaded from the gene region file.
  • When --extract (without 'range') is present, PLINK report lines with variant IDs not contained in the --extract file are filtered out.
  • By default, variant IDs are expected to be in the 'ID' column, or if that's absent, 'SNP'. You can change this with the --gene-report-id-field flag, which takes a space-delimited sequence of field names to search for. With multiple field names, earlier names take precedence over later ones. (The other --gene-report-...-field flags work the same way.)
  • If the PLINK report contains a 'P' column, you can use --pfilter to filter out lines with high p-values.
Meta-analysis

--meta-analysis <PLINK report filenames...>
--meta-analysis <PLINK report filenames...> + [{logscale | qt}]
                [{no-map | no-allele}] ['study'] ['report-all']
                ['weighted-z'] ['re2'] ['zs']
--meta-analysis-chr-field <field name(s)...>
--meta-analysis-bp-field <field name(s)...>
--meta-analysis-snp-field <field name(s)...>
--meta-analysis-a1-field <field name(s)...>
--meta-analysis-a2-field <field name(s)...>
--meta-analysis-se-field <field name(s)...>
--meta-analysis-p-field <field name(s)...>
--meta-analysis-ess-field <field name(s)...>

Given multiple PLINK-format association reports, --meta-analysis performs basic fixed-effects and random-effects meta-analysis of the data, writing results to plink2.meta.

All input files must contain variant ID and standard error. Note that the original association analyses might not report standard errors except when --ci is specified.

  • Normally, an 'OR' odds ratio field must also be present in each input file. With 'logscale', 'BETA' log-odds values/regression coefficients are expected instead, but the generated report will still contain odds ratio estimates. With 'qt' both input and output values are regression betas.
  • 'CHROM', 'POS', and A1 allele fields are also normally required. 'no-map' causes them to all be ignored, while 'no-allele' causes just A1 to be ignored.
  • Odds ratios in both input and output are with respect to the A1 allele. I.e. if it's greater than 1, that implies the A1 allele increases risk relative to A2.
  • When --extract (without 'range') is present, only variants named in the --extract file are considered.
  • Unless 'no-map' is specified, chromosome filters are also respected.
  • If A2 allele fields are present, and neither 'no-map' nor 'no-allele' was specified, A1/A2 allele flips are handled properly. Otherwise, A1 mismatches are thrown out.
  • CHROM/POS values are permitted to differ. When they do, the .meta report will contain CHROM/POS values from the first input file containing the variant.
  • If a variant appears more than once in the same file (e.g. --glm output), only the first appearance is considered.
  • 'study' causes study-specific effect estimates to be collated in the meta-analysis report.
  • 'report-all' causes variants present in only a single input file to be included in the meta-analysis report.
  • When using optional modifier(s) with --meta-analysis, you must include a '+' in the parameter list to separate input filenames from modifier names. Note that there must be spaces both before and after the '+'.
  • By default, variant IDs are expected to be in the 'ID' column; failing that, 'SNP'. You can change this with the --meta-analysis-snp-field flag, which takes a space-delimited sequence of field names to search for. With multiple field names, earlier names take precedence over later ones.
  • The name search orders for the chromosome, position, standard error, A1 allele, and A2 allele fields can be changed in the same manner, with --meta-analysis-chr-field, --meta-analysis-bp-field, --meta-analysis-se-field, --meta-analysis-a1-field, and --meta-analysis-a2-field respectively (defaults are "CHROM CHR", "POS BP", 'SE', 'A1', and 'A2').
  • 'weighted-z' requests weighted Z-score-based p-values (as computed by the Abecasis Lab's METAL software) in addition to PLINK's usual inverse variance-based analysis. This requires P and effective sample size fields (default column search-orders are 'P' and "OBS_CT NMISS"; these can be changed with --meta-analysis-p-field and --meta-analysis-ess-field). Note that, if the numbers of cases and controls are unequal, effective sample size should be 4 / (1/<# of cases> + 1/<# of controls>).
  • 're2' adds TAU2 and P_RE2, the Han & Eskin (2011) random-effects test. DerSimonian-Laird assumes heterogeneity under the null, which costs it most of its power in this setting; RE2 tests the mean effect and the heterogeneity jointly, so a variant with an effect in only some studies still registers. TAU2 is the maximum-likelihood between-study variance, and is zero whenever the studies are consistent.

Epistasis >>