Introduction, downloads

S: 24 Oct 2026 (b.1.2)

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

File format reference

This page describes specialized PLINK 2.0 input and output file formats which are identifiable by file extension. (Most extensions not listed here have very simple one-entry-per-line or two-entry-per-line text formats.)

Unless otherwise specified, all multicolumn text files generated by PLINK 2.0 are tab-delimited, with one header line starting with '#'. In the column summaries, columns which are present unless removed by the column set descriptor are boldface, and columns which only appear under some data/flag/modifier combination(s) are italicized.

Jump to: .acount | .adjusted | .afreq | .allele.no.snp | .aperm | .bcf | .beagle.dat[.phased] | .bed | .bgen | .bim | .bins | .blocks | .clumps | .cov | .dist | .eigenvec{,.allele|.var} | .epi.* | .fam | .flipscan{,.verbose} | .fst.summary | .fst.var | .gcount | .gen | .gene.report | .geno | .genopairs | .glm.firth | .glm.linear | .glm.logistic[.hybrid] | .glm.multinomial* | .grm | .grm.N.bin | .grm.bin | .grm.sp | .haps | .hardy | .hardy.x | .het | .hom | .hom.indiv | .hom.summary | .*.id | .ind | .info | .kin0 | .king[.bin] | .ldscore | .legend | .lgen | .list | .map | .mdist | .*mendel | .meta | .mgf | .mibs | .missing | .missing.hap | .mperm | .neighbour | .pdiff | .ped | .pgen{,.pgi} | .phase.inp | .phy | .pphe | .psam | .pvar | .raw | .ref | .rel[.bin] | .sample | .scount | .sdiff | .sdiff.summary | .set | .set.table | .sexcheck | .smiss | .snp | .sscore | .ssf.tsv | .strct_in | .svd.pheno | .svd.pheno_wts | .tags.list | .tfam | .tped | .traw | .used_sites.tsv | .var.ranges | .vcf | .vcor | .vcor{1|2}[.bin] | .vinfo | .vmiss | .vscore | .vscore.bin


.acount, .afreq (allele count/frequency report)

Produced by --freq.

A text file with a header line, and then one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
'REF_FREQ'/'REF_CT'reffreqReference allele frequency/dosage
'ALT1_FREQ'/'ALT1_CT'alt1freqAlternate allele 1 frequency/dosage
'ALT_FREQS'/'ALT_CTS'altfreq, alteq, alteqzComma-separated freqs/dosages for all alts; 'eq' requests '1=<ALT1 value>,2=<ALT2 value>,...' formatting with zero-values omitted, 'eqz' includes zeroes
'ALT_NUM_{FREQS,CTS}'altnumeqComma-separated freqs/dosages for all alts
'FREQS'/'CTS'freq, eq, eqzComma-separated freqs/dosages for all alleles
'NUM_FREQS'/'NUM_CTS'numeqComma-separated freqs/dosages for all alleles
MACH_R2machr2MaCH imputation quality metric
MINIMAC3_R2minimac3r2Minimac3 phased-dosage imputation quality metric; inaccurate unless phased dosages were imported with e.g. "--vcf dosage=HDS" (dosage=DS is not enough)
OBS_CTnobsNumber of allele observations

.adjusted (basic multiple-testing corrections)

Produced by --adjust[-file].

A text file with a header line, and then one line per tested allele with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1a1Tested allele
[NEG_LOG10_]UNADJunadjUnadjusted p-value
[NEG_LOG10_]GCgcDevlin & Roeder (1999) genomic control corrected p-value (additive model only)
QQqqP-value quantile.
[NEG_LOG10_]BONFbonfBonferroni correction
[NEG_LOG10_]HOLMholmHolm-Bonferroni (1979) adjusted p-value
[NEG_LOG10_]SIDAK_SSsidakssŠidák single-step adjusted p-value
[NEG_LOG10_]SIDAK_SDsidaksdŠidák step-down adjusted p-value
[NEG_LOG10_]FDR_BHfdrbhBenjamini & Hochberg (1995) step-up false discovery control
[NEG_LOG10_]FDR_BYfdrbyBenjamini & Yekutieli (2001) step-up false discovery control

Entries are sorted in increasing p-value order. (Thus, if the QQ field is present, its values just increase linearly.)


.allele.no.snp (allele mismatch report)

Produced by --update-alleles when there are too many mismatches between the loaded alleles for a variant and the old-allele column(s) of the --update-alleles input file..

A text file with no header line, and one line per mismatching variant with the following three columns:

  1. Variant identifier
  2. Expected allele #1 (from --update-alleles input file)
  3. Remaining expected alleles, comma-separated; or "." if none
.bcf (binary Variant Call Format)

Variant information + sample ID + genotype call binary file. Imported with --bcf, and produced by "--export bcf".

Refer to the hts-specs GitHub repository for a detailed description of the format. "--export bcf" uses binary encoding v2.2.


.beagle.dat, .beagle.dat.phased (BEAGLE 3.3 genotype+variant info file)

Produced by "--export beagle-[un]phased", for use by BEAGLE 3.3. (Newer BEAGLE versions accept VCF input.) This format cannot be loaded by PLINK.

A text file with 2+P header lines, followed by one line per variant with 2N+2 space/tab-delimited columns (where N is the number of samples and P is the number of phenotypes):

1st header line2nd header linePheno header line(s)Subsequent contents
'P''I''A'/'T'/'C' class'M'
'FID''IID''PHE'Variant identifier
FIDs, 2x per sample...IIDs, 2x per samplePheno values, 2x per sampleAllele calls

The phenotype classes are 'A'=case/control, 'T'=scalar, 'C'=categorical. The allele calls are phased iff the file extension is .beagle.dat.phased rather than .beagle.dat . Up to 128 distinct allele codes are allowed per variant.


.bed (PLINK 1 binary biallelic genotype table)

PLINK 1's preferred way to represent genotype calls. Must be accompanied by .bim and .fam files. Loaded with --bfile, and generated by --make-bed.

Do not confuse this with the UCSC Genome Browser's BED format, which is totally different. (It is safe to change a PLINK 1 .bed file's extension to .pgen and use --bpfile to load it.)

See the PLINK 1.9 documentation for a detailed description of the usual variant-major form, along with an example. PLINK 2 can also efficiently export the sample-major form ("--export ind-major-bed"); it has third byte equal to zero instead of one, but is otherwise analogous.


.bgen (Oxford variant info + genomic data binary file)

Native binary file format for Oxford statistical genetics tools, such as IMPUTE2 and SNPTEST. BGEN v1.1 files should always be accompanied by a .sample file. Loaded with --bgen, and produced by "--export bgen-1.{1,2,3}".

Refer to https://www.chg.ox.ac.uk/~gav/bgen_format/ for a detailed description of the format.


.bim (PLINK extended MAP file)

Variant information file accompanying a .bed or biallelic .pgen binary genotype table. (--make-just-bim can be used to update just this file.)

A text file with no header line, and one line per variant with the following six columns:

  1. Chromosome code
  2. Variant ID
  3. Position in centimorgans (safe to use dummy value of '0')
  4. Base-pair coordinate (1-based; limited to 231-2)
  5. ALT ('A1' in PLINK 1.x) allele code
  6. REF ('A2' in PLINK 1.x) allele code

A few notes:

  • Yes, the ALT column comes before the REF column in a .bim file.
  • When .bed files are involved, the ALT and REF allele codes will sometimes be swapped, since that's PLINK 1.x's default behavior whenever the true REF allele is less common than the ALT allele in the current dataset. If that's a problem, you can use --ref-allele to swap them back.
  • It is safe to change a .bim file's extension to .pvar and use --pfile to load it.
  • Variants with negative bp coordinates are ignored by PLINK.
  • PLINK 1.9 and 2.0 permit the centimorgan column to be omitted. (However, omission is not recommended if the .bim file needs to be read by other software.)

.bins (allele count or frequency histogram)

A text file with a header line, followed by one line per [start, end) histogram bin with the following two columns:

HeaderContents
BIN_STARTStart of bin
OBS_CTNumber of variants in the bin

The end of the current bin interval is the next line's BIN_START value (or positive infinity if there is no next line).


.blocks, .blocks.det (haplotype blocks, estimated using Haploview's default algorithm)

Produced by --blocks.

.blocks files contain one line per block, each with an asterisk followed by variant IDs.

.blocks.det files have a header line, followed by one line per block with the following six columns:

CHROMChromosome code
BP1First base-pair coordinate
BP2Last base-pair coordinate
KBBlock length in kbs
NSNPSNumber of variants in block
SNPS'|'-delimited variant IDs

Contact us if you want to be able to customize this.


.clumps (reprocessed LD-clumped reports)

Produced by --clump.

A text file with a header line, and one line per index variant (lowest p-values first) with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1maybea1, a1Tested allele
Fmaybef, f1-based file number
[NEG_LOG10_]P(required)Index variant p-value (or -log10(p))
TOTALtotalNumber of other variants in clump
CLUMP_FIRST_POSmaybebounds, boundsPOS of first member with p < --clump-p2 threshold
CLUMP_LAST_POSmaybebounds, boundsPOS of last member with p < --clump-p2 threshold
NONSIGbinsNumber of clumped variants with p ≥ [highest p-value boundary]
S<bin boundary>, ...binsNumber of clumped variants with [lower boundary] ≤ p < [this boundary]
SP2sp2Comma-delimited IDs, and possibly A1 allele and/or file number, of members with p < --clump-p2 threshold.
RANGES(with --clump-range[0])Comma-separated list of overlapping ranges

S<bin boundary> columns are in decreasing-p-value order, and the bin-boundary component of the column names no longer omit the leading "0.".

.cov (covariate table)

Produced by --write-covar, --make-[b]pgen/--make-bed, and --export when covariates have been loaded/specified. Valid input for --covar.

A text file with a header line, and one line per sample with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
PATmaybeparents, parentsPaternal individual ID
MATmaybeparents, parentsMaternal individual ID
SEXsexSex (1 = male, 2 = female, 'NA' = unknown)
PHENO1pheno1All-missing phenotype column, if none loaded
<Pheno name>, ...pheno1, phenosPhenotype value(s) (only first if just 'pheno1')
<Covar name>, ...(required)Covariate values

(Note that --covar can also be used with files lacking a header row.)


.dist (genomic Hamming distance matrix)

Produced by --distance.

A tab-delimited text file that is either lower-triangular (first line has only one entry containing the <genome 1-genome 2> Hamming distance, second line has two entries containing the <genome 1-genome 3> and <genome 2-genome 3> Hamming distances in that order, etc.) or square. If square, the upper-right triangle may be either zeroed out or the mirror-image of the lower-left triangle, depending on whether the 'square0' or 'square' modifier was used.

When missing values are present, the affected raw Hamming distances are rescaled to be comparable to pairwise distances unaffected by missing data, unless 'flat-missing' was specified.


.eigenvec, .eigenvec.allele, .eigenvec.var (principal components)

Produced by --pca. Accompanied by an .eigenval file, which contains one eigenvalue per line.

The .eigenvec file is a text file with a header line and between 1+V and 3+V columns per sample, where V is the number of requested principal components. The first columns contain the sample ID, and the rest are principal component scores in the same order as the .eigenval values (with column headers 'PC1', 'PC2', ...).

With the 'allele-wts' modifier, an .eigenvec.allele file is also generated. It's a text file with a header line, followed by one line per allele with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Current allele
AXaxOther alleles, comma-separated
PC1, PC2, ...(required)Principal component allele scores

Alternatively, with the 'biallelic-var-wts' modifier, an old-style .eigenvec.var file is generated. It's a text file with a header line, followed by one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
MAJmajMajor allele
NONMAJnonmajAll nonmajor alleles, comma separated
PC1, PC2, ...(required)Principal component variant weights; signs are w.r.t. the major allele

.epi.{cc,qt}, .epi.{cc,qt}.summary (epistatic interaction scan reports)

Produced by --epistasis and --epistasis-boost. 'cc' secondary extension indicates a case/control test, while 'qt' indicates --epistasis linear regression on a quantitative trait.

The --epistasis main report is normally a text file with a header line, followed by one line per variant pair clearing the --epi1 threshold with the following columns:

HeaderColumn setContents
CHROM1chromVariant 1 chromosome code
POS1posVariant 1 base-pair coordinate
ID1(required)Variant 1 identifier
ALLELE1maybea1, a1Variant 1 counted allele, if multiallelic or 'a1'
CHROM2chromVariant 2 chromosome code
POS2posVariant 2 base-pair coordinate
ID2(required)Variant 2 identifier
ALLELE2maybea1, a1Variant 2 counted allele, if multiallelic or 'a1'
BETA_INTbeta, orbetaRegression coefficient, if 'beta' or quantitative trait
OR_INTorbetaOdds ratio, if binary trait
SEseStandard error of beta
'T_STAT'/'Z_STAT'statT-stat for linear regression, Wald Z-score for logistic/Firth
[NEG_LOG10_]PpAsymptotic p-value (or -log10(p))

The --epistasis-boost main report is similar, with the columns after ALLELE2 replaced with

STATstatChi-square statistic
DFdfChi-square degrees of freedom
[NEG_LOG10_]PpAsymptotic p-value (or -log10(p))

In both cases, a .summary file is also generated. This is a text file, followed by one line per variant (or just one line per variant in set #1, if 'set-by-set' or 'set-by-all' was specified) with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant identifier
ALLELEmaybea1, a1Counted allele, if multiallelic or 'a1'
N_SIGnsigNumber of 'significant' (based on --epi2 value) epistatic test results
N_TOTntotTotal number of valid test results
PROPpropProportion significant, if not --parallel
BEST_CHISQ(required)Largest chi-square statistic (approximate when 'boost' test and ≤ --epi1 threshold)
BEST_CHROMchromChromosome of largest-statistic variant
BEST_ID(required)ID of largest-statistic variant

For the 'boost' test, the BEST_CHISQ/BEST_CHROM/BEST_ID entry occasionally doesn't correspond to lowest p-value, since DF is variable.

For two-set tests, if variant v1 is in both sets but v2 is only in set #1, the v1-v2 test is only counted in the v2 summary row.


.fam (PLINK sample information file)

Sample information file accompanying a .bed or biallelic .pgen binary genotype table. (--make-just-fam can be used to update just this file.)

A text file with no header line, and one line per sample with the following six columns:

  1. Family ID ('FID')
  2. Individual ID ('IID'; cannot be '0')
  3. Individual ID of father ('0' if father isn't in dataset)
  4. Individual ID of mother ('0' if mother isn't in dataset)
  5. Sex code ('1' = male, '2' = female, '0' = unknown)
  6. Phenotype value ('1' = control, '2' = case, '-9'/'0'/non-numeric = missing data if case/control)

.flipscan, .flipscan.verbose (strand inconsistency report)

Produced by --flip-scan.

The .flipscan file is a text file with a header line, and one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1a1Counted allele
BASE_A1_FREQfreqbaseMain-dataset A1 allele frequency, if not --flip-scan-ref-...
'CUR_A1_FREQ'/'CASE_A1_FREQ'freqsCurrent-dataset or case A1 allele frequency
'PANEL_A1_FREQ'/'CTRL_A1_FREQ'freqsReference-dataset or control A1 allele frequency
POS_CTposctNumber of positive LD matches
'R_POS'/'DPRIME_POS'rposMean correlation or |D'| over positive-match neighbors
NEG_CTnegctNumber of negative LD matches
'R_NEG'/'DPRIME_NEG'rnegMean correlation or |D'| over negative-match neighbors
PROBLEMproblem'Y' if either step flagged the variant, otherwise 'N'
NEG_IDSnegidsIDs of negative-match neighbors, '|'-separated

If the 'verbose' modifier is present, a .flipscan.verbose file is also generated. This is a text file with a header line, and one line per relevant variant pair (i.e. index variant has at least one negative LD match, and case and/or control correlation has sufficient absolute value) with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POS_INDEXposIndex variant base-pair coordinate
ID_INDEX(required)Index variant ID
A1_INDEXa1Index variant counted allele
POS_PAIRposSecond variant base-pair coordinate
ID_PAIR(required)Second variant ID
A1_PAIRa1Second variant counted allele
'R_CUR'/'R_CASE'/'DPRIME_CUR'/'DPRIME_CASE'(required)Current-dataset-only or case-only correlation/D'
'R_PANEL'/'R_CTRL'/'DPRIME_PANEL'/'DPRIME_CTRL'(required)Reference-dataset-only or control-only correlation/D'

.fst.summary (all-population-pairs Wright's FST report)

Produced by --fst.

A text file with a header line, and then one line per population-pair with the following columns:

HeaderColumn setContents
POP1(required)First population ID
POP2(required)Second population ID
OBS_CTnobsNumber of variants with valid FST estimates
'HUDSON_FST'/'WC_FST'(required)Between-population FST estimate
SE(required)Standard error of FST estimate, if blocksize= specified

.fst.var (per-variant Wright's FST report for one population pair)

Produced by --fst when 'report-variants' is specified. A separate file is generated for each population pair.

A text file with a header line, and then one line per autosomal variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
OBS_CTnobsNumber of (nonmissing) genotype observations across population pair
POP1_ALLELE_CTnalleleNumber of nonmissing allele observations in first population
POP2_ALLELE_CTnalleleNumber of nonmissing allele observations in second population
FST_NUMERfstfracNumerator of FST estimate
FST_DENOMfstfracDenominator of FST estimate
'HUDSON_FST'/'WC_FST'fstWright's FST estimate

.gcount (genotype count report)

Produced by --geno-counts.

A text file with a header line, and then one line per variant with the following columns:

HeaderCol. setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
HOM_REF_CThomrefHomozygous-ref count
HET_REF_ALT1_CTrefalt1Heterozygous ref-alt1 count
HET_REF_ALT_CTSrefaltComma-separated het ref-altx counts
HOM_ALT1_CThomalt1Homozygous-alt1 count
TWO_ALT_GENO_CTSaltxyComma-separated altx-alty counts, in (1/1)-(1/2)-(2/2)-(1/3)-... order
DIPLOID_GENO_CTSxySimilar to altxy, except reference allele included
HAP_REF_CThaprefHaploid-ref count
HAP_ALT1_CThapalt1Haploid-alt1 count
HAP_ALT_CTShapaltComma-separated haploid-altx counts
HAP_CTShapSimilar to hapalt, except ref also included
GENO_NUM_CTSnumeq"0/0=<hom ref ct>,0/1=<het ref-alt1>,...,0=<hap ref>" etc.; zero-counts are omitted; '.' if all genotypes missing
MISSING_CTmissingNumber of missing genotypes
OBS_CTnobsNumber of (nonmissing) genotype observations

.gen (Oxford text genotype file format)

Native text genotype file format for Oxford statistical genetics tools, such as IMPUTE2 and SNPTEST. Should always be accompanied by a .sample file. Imported with --data/--gen, and produced by "--export oxford[-v2]".

A text file with no header line, and one line per variant with either 3N+5 or 3N+6 columns where N is the number of samples. Each line stores information for a single SNP.

In the 3N+5 case (corresponding to the original specification), the first five columns are:

  1. "SNP ID"
  2. rsID (treated by PLINK as the main variant ID)
  3. Base-pair coordinate
  4. Allele 1 (usually minor, use 'ref-first' when importing to treat as REF)
  5. Allele 2 (usually major, use 'ref-last' when importing to treat as REF)

Unless the chromosome code was declared with --oxford-single-chr (in which case the SNP ID column is ignored), PLINK has no choice but to assume that the "SNP ID" column actually stores chromosome codes. (This is the convention when PLINK exports a 5-leading-column .gen file.)

The newer 3N+6 column flavor has a dedicated chromosome column in front.

Each subsequent triplet of values then indicate likelihoods of homozygote A1, heterozygote, and homozygote A2 genotypes at this variant, respectively, for one sample. If they add up to less than one, the remainder is a no-call probability weight.

The PLINK 2 binary format can represent allele count expected values, but it does not distinguish between e.g. {P(hom-ref)=0.28, P(het)=0.52, P(hom-alt)=0.2} and {P(hom-ref)=0.08, P(het)=0.92, P(hom-alt)=0}, and it ignores the no-call probability weight (though "0 0 0" will be correctly converted to a missing call). The --import-dosage-certainty flag can be used during import to replace some of the most uncertain genotype calls with missing values.


.gene.report (reprocessed gene-based report)

Produced by --gene-report.

A text file with a header line, and then one line per qualifying (gene, variant) pair with the following columns:

HeaderColumn setContents
GENE(required)Gene ID
CHROMchromChromosome code
GENE_STARTgeneposGene start coordinate (1-based)
GENE_ENDgeneposGene end coordinate (1-based)
GENE_KBgenekbGene kb length
DISTdistDistance (kb) from start of gene to variant
POSposVariant base-pair coordinate
ID(required)Variant ID
PpVariant p-value (omitted if missing from input)

.geno (EIGENSOFT PACKEDANCESTRYMAP or TGENO binary genotype format)

Native binary genotype file format for EIGENSOFT and ADMIXTOOLS. Should always be accompanied by .ind and .snp files. Imported with --eigfile/--eiggeno. The original variant-major PACKEDANCESTRYMAP form is produced by "--export eig", while the sample-major TGENO form is produced by "--export eigt"


A PACKEDANCESTRYMAP file has V+1 blocks of max(48, ⌈N/4⌉) bytes each, where V is the number of variants and N is the number of samples. The first block is a header, starting with a space/tab-delimited string with the following entries:

  1. "GENO"
  2. Number of samples
  3. Number of variants
  4. hasharr(sample_ids, N) in hex
  5. hasharr(variant_ids, V) in hex

and followed by null bytes. In C, the hasharr() function can be defined as follows:

uint32_t hasharr(const char* const* ids, uint32_t n) {
  uint32_t hash = 0;
  for (uint32_t i = 0; i < n; ++i) {
    hash = (hash * 17) ^ hashone(ids[i]);
  }
  return hash;
}

where hashone() is:

uint32_t hashone(const char* id) {
  uint32_t hash = 0;
  for (uint32_t i = 0; ; ++i) {
    unsigned char cur_char = id[i];
    if (cur_char == 0) {
      return hash;
    }
    hash = (hash * 23) + cur_char;
  }
}

Each remaining block corresponds to one marker in the .snp file. The high-order two bits of a block's first byte store the first sample's genotype code, using the following encoding:

00Zero copies of REF allele (i.e. homozygous-ALT)
01One copy of REF allele
10Two copies of REF allele
11Missing genotype

Next three samples are stored in lower-order bits of the first byte, etc. Trailing bits in the block are always zero.


A TGENO file has a 48-byte header, starting with a space/tab-delimited string; the first field in that string is "TGENO", and the other four fields match those in the PACKEDANCESTRYMAP header. This is followed by N blocks of max(48, ⌈V/4⌉) bytes each, each corresponding to one sample in the .ind file. Encoding is otherwise the same as with PACKEDANCESTRYMAP.


.genopairs (genotype-pair count table)

Produced by --twolocus.

A text file with a header line, and then one line per (GROUP, GT1, GT2) tuple with the following 7 columns:

GROUP'ALL', or phenotype category label ('CASE'/'CONTROL' for binary)
ID1First variant identifier
GT1Genotype at first variant
ID2Second variant identifier
GT2Genotype at second variant
CTNumber of samples with genotype-pair
FREQRate of samples with genotype-pair

Contact us if you want to be able to customize this.


.glm.firth, .glm.logistic[.hybrid] (logistic/Firth regression association statistics)

Produced by --glm with a case/control phenotype.

A text file with a header line, and then one group of lines per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Counted allele1 in regression
OMITTEDomittedOmitted allele
A1_CT2a1countTotal A1 allele count (can be decimal with dosage data)
ALLELE_CT2totalleleAllele observation count
A1_CASE_CT2a1countccA1 count in cases
A1_CTRL_CT2a1countccA1 count in controls
CASE_ALLELE_CT2totalleleccCase allele observation count
CTRL_ALLELE_CT2totalleleccControl allele observation count
CASE_NON_A1_CTgcountccCase genotypes with 0 copies of A1
CASE_HET_A1_CTgcountccCase genotypes with 1 copy of A1
CASE_HOM_A1_CTgcountccCase genotypes with 2 copies of A1
CTRL_NON_A1_CTgcountccControl genotypes with 0 copies of A1
CTRL_HET_A1_CTgcountccControl genotypes with 1 copy of A1
CTRL_HOM_A1_CTgcountccControl genotypes with 2 copies of A1
A1_FREQa1freqA1 allele frequency
A1_CASE_FREQa1freqccA1 allele frequency in cases
A1_CTRL_FREQa1freqccA1 allele frequency in controls
MACH_R2machr2MaCH imputation quality metric
FIRTH?firthReports whether Firth reg. used (if 'firth-fallback')
TESTtestTest identifier
OBS_CTnobsNumber of samples in regression
BETAbetaRegression coefficient (for A1 allele)
ORorbetaOdds ratio (for A1 allele)
[LOG(OR)_]SEseStandard error of log-odds (i.e. beta)
L##ciBottom of symmetric approx. confidence int. (if --ci)
U##ciTop of symmetric approx. confidence interval (if --ci)
Z_[OR_F_]STATtzF-statistic for joint test, Wald Z-score for logistic/Firth regression
[NEG_LOG10_]PpAsymptotic p-value (or -log10(p)) for Z/chisq-stat
ERRCODEerrWhen result is 'NA', an error code describing the reason

All statistics are computed across just the samples used in the regression.


.glm.linear (linear regression association statistics)

Produced by --glm with a quantitative phenotype.

A text file with a header line, and then one group of lines per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Counted allele1 in regression
OMITTEDomittedOmitted allele
A1_CT2a1countTotal A1 allele count (can be decimal with dosage data)
ALLELE_CT2totalleleAllele observation count
A1_FREQa1freqA1 allele frequency
MACH_R2machr2MaCH imputation quality metric
TESTtestTest identifier
OBS_CTnobsNumber of samples in regression
BETAbeta, orbetaRegression coefficient (for A1 allele)
SEseStandard error of log-odds (i.e. beta)
L##ciBottom of symmetric approx. confidence int. (if --ci)
U##ciTop of symmetric approx. confidence interval (if --ci)
T_[OR_F_]STATtzF-statistic for joint test; t-statistic for linear regression
[NEG_LOG10_]PpAsymptotic p-value (or -log10(p)) for T/chisq-stat
ERRCODEerrWhen result is 'NA', an error code describing the reason

All statistics are computed across just the samples used in the regression.


.glm.multinomial[.hybrid], .glm.multinomial.firth (multinomial regression stats)

Produced by "--glm multinomial" with a categorical phenotype.

A text file with a header line, and then one group of lines per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Counted allele1 in regression
OMITTEDomittedOmitted allele
A1_CT2a1countTotal A1 allele count (can be decimal with dosage data)
ALLELE_CT2totalleleAllele observation count
A1_CT_<category>...2a1countccA1 counts by category
ALLELE_CT_<category>...2totalleleccAllele observation counts by category
A1_FREQa1freqA1 allele frequency
A1_FREQ_<category>...a1freqccA1 allele frequencies by category
MACH_R2machr2MaCH imputation quality metric
FIRTH?firthReports whether Firth reg. used (if 'firth-fallback')
TESTtestTest identifier
OBS_CTnobsNumber of samples in regression
MIN_EXPECTED(required)Min. expected A1_CT_<category> under indep.
BETA_<first category>betaRegression coefficient (for A1 x first category)
SE_<first category>beta&seStandard error of beta
L##_<first category>beta&ciBottom of symmetric approx. confidence int. (if --ci)
U##_<first category>beta&ciTop of symmetric approx. confidence interval (if --ci)
BETA_<second category>betaRegression coefficient (for A1 x second category)
.........
CHISQtzChi-square statistic
DFtzChi-square degrees of freedom
[NEG_LOG10_]PpAsymptotic p-value (or -log10(p)) for Z/chisq-stat
ERRCODEerrWhen result is 'NA', an error code describing the reason

All statistics are computed across just the samples used in the regression.

1: For multiallelic variants, this column may contain multiple comma-separated alleles when the result doesn't depend on which allele is A1.
2: For males on chrX, these values are normally computed as if males were diploid, since that's the encoding used in the regression. The exception is when "--xchr-model 1" is specified, where male 0..1 values coexist with female 0..2 values in the regression. In that case, these columns will also be based on the mixed male 0..1, female 0..2 scaling.
To be clear, --glm only uses this 0..2 haploid coding on chrX, to put males and females on an equal footing in a world where X-inactivation is common. chrY/chrM use 0..1 coding.


.grm (GCTA text relationship matrix)

Produced by --make-grm-list.

A text file with no header line, and one line per pair of samples (not necessarily distinct) with the following four columns:

  1. 1-based index of first sample in .grm.id file
  2. 1-based index of second sample in .grm.id file
  3. Number of observations (variants where neither sample has a missing call)
  4. Relationship value

.grm.N.bin, .grm.bin (GCTA 1.1+ triangular binary relationship matrix)

Produced by --make-grm-bin.

These files contain single-precision (4-byte) floating point values. Using 1-based matrix indices, the first value in each file is the (1, 1) relationship value (.grm.bin) or observation count (.grm.N.bin); the second and third values are the (2, 1) and (2, 2) relationships/counts; the fourth through sixth values are the (3, 1), (3, 2) and (3, 3) relationships/counts in that order; and so on.

Note that .grm.bin files generated by GCTA versions before 1.1 have a different format.


.grm.sp (GCTA sparse relationship matrix)

Produced by --make-grm-sparse.

A text file with no header line, and one line per qualifying pair of samples (not necessarily distinct) with the following three columns:

  1. 0-based index of first sample in .grm.id file
  2. 0-based index of second sample in .grm.id file
  3. Relationship value

.haps (Oxford phased haplotype file)

Reference panel haplotype file format for IMPUTE2. Must be accompanied by a .legend file when no variant info header columns are present. Imported with --haps, and produced by "--export haps[legend]".

A text file with no header line, and either 2N+5 or 2N columns where N is the number of samples. In the former case, the first five columns are:

  1. Chromosome code
  2. Variant ID
  3. Base-pair coordinate
  4. Allele 0 (usually minor, use 'ref-first' when importing to treat as REF)
  5. Allele 1 (usually major, use 'ref-last' when importing to treat as REF)

This is followed by a pair of 0/1-valued haplotype columns for the first sample, then a pair of haplotype columns for the second sample, etc. (For male samples on chrX, the second column may contain dummy '-' entries; otherwise, missing genotype calls are not permitted.)


.hardy (Hardy-Weinberg equilibrium exact test report)

Produced by --hardy when autosomal diploid variants are present.

A text file with a header line, and one line per autosomal diploid variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Tested allele
AXaxNon-A1 alleles, comma-separated
HOM_A1_CTgcountsHomozygous-A1 genotype count
HET_A1_CTgcountsHeterozygous-A1 genotype count
TWO_AX_CTgcounts# of nonmissing calls with no A1 copies
GCOUNTSgcount1colgcounts values in a single comma-separated column
O(HET_A1)hetfreqObserved heterozygous-major frequency
E(HET_A1)hetfreqExpected heterozygous-major frequency
[NEG_LOG10_][MID]PpHardy-Weinberg equilibrium exact test [mid-]p-value (or -log10(p))

.hardy.x (Graffelman-Weir extended chrX HWE test report)

Produced by --hardy when chrX variants are present.

A text file with a header line, and one line per chrX variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Tested allele
AXaxNon-A1 alleles, comma-separated
FEMALE_HOM_A1_CTgcountsFemale homozygous-A1 genotype count
FEMALE_HET_A1_CTgcountsFemale heterozygous-A1 genotype count
FEMALE_TWO_AX_CTgcounts# of nonmissing female calls with no A1 copies
MALE_A1_CTgcountsMale A1 allele count
MALE_AX_CTgcountsMale non-A1 allele count
GCOUNTSgcount1colgcounts values in a single comma-separated column
O(FEMALE_HET_A1)hetfreqObserved het-A1 frequency
E(FEMALE_HET_A1)hetfreqExpected het-A1 frequency
FEMALE_A1_FREQsexafFemale A1 allele frequency
MALE_A1_FREQsexafMale A1 allele frequency
FEMALE_ONLY_[NEG_LOG10_][MID]PfemalepOld female-only HWE exact test [mid-]p-value (or -log10(p))
[NEG_LOG10_][MID]PpGraffelman-Weir HWE test [mid-]p-value (or -log10(p))

.het (method-of-moments F coefficient estimates)

Produced by --het.

A text file with a header line, and one line per sample with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
O(HOM)homObserved number of homozygous genotypes
E(HOM)homExpected number of homozygous genotypes
O(HET)hetObserved number of heterozygous genotypes
E(HET)hetExpected number of heterozygous genotypes
OBS_CTnobsNumber of (nonmissing, non-monomorphic) autosomal genotype observations
FfMethod-of-moments F coefficient estimate
FHAT1fhat1GCTA's variance-standardized relationship minus 1
FHAT2fhat2GCTA's excess-homozygosity-based estimator (mean of per-variant ratios)
FHAT3fhat3GCTA's correlation between uniting gametes

.hom (run-of-homozygosity list)

Produced by --homozyg. Accompanied by a .hom.indiv and a .hom.summary file.

A text file with a header line, and one line per run with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
PHENOmaybepheno, phenoPhenotype value
CHROMchromChromosome code
POS1posBase-pair coordinate of first variant in run
ID1(required)ID of first variant in run
ID2(required)ID of last variant in run
KBkbLength of region in kb>/td>
NSNPnsnpNumber of SNPs in run
DENSITYdensityInverse SNP density in kb/SNP
PHOMphomProportion of calls homozygous
PHETphetProportion of calls heterozygous

Note that PHOM + PHET can be less than 1 when missing calls are present.


.hom.indiv (sample-based runs-of-homozygosity report)

Produced by --homozyg.

A text file with a header line, and one line per sample with the following columns:

FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
PHENOmaybepheno, phenoPhenotype value
NSEGnsegNumber of runs of homozygosity
KBkbtotTotal length of runs (kb)
KBAVGkbavgAverage length of runs (kb)
FROHfrohGenomic inbreeding coefficient (kbtot / <total length scanned>)

.hom.summary (SNP-based runs-of-homozygosity report)

Produced by --homozyg.

A text file with a header line, and one line per SNP with the following columns:

CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
ROH_CTmayberohct, rohctNumber of samples with a ROH including this variant
<category name>_ROH_CTstratrohctNumber of samples in category (binary: 'CASE'/'CTRL') with ROH including variant

Note that, unlike PLINK 1.x, samples with missing binary-phenotype values are not counted in CTRL_ROH_CT.


.id (Sample ID list)

When generated by PLINK 2, this is a text file which may or may not have a header line. If there's no header line (default with .grm.id files, can be forced for other .id files with --no-id-header), and there's a single column, they are IIDs; if there are two columns, they are FID/IID. Otherwise, there's one line per sample after the header line with the following columns:

HeaderContents
FIDFamily ID (present iff .psam or --update-ids file has it)
IIDIndividual ID (always present)
SIDSource ID (present iff .psam or --update-ids file has it)

.ind (EIGENSOFT sample information file)

Sample information file accompanying an EIGENSOFT .geno binary genotype table. Loaded with --eigfile/--eigind, and produced by --export eig[t].

A text file with no header line, and one line per sample with the following three columns:

  1. Sample ID (max 39 characters)
  2. Sex code ('M' = male, 'F' = female, 'U' = unknown)
  3. Label (binary phenotype represented as 'Case'/'Control')

.info (Haploview map file)

Produced by "--export HV[-1chr]", for use by Haploview. Accompanies a .ped file. With "--export HV", one .ped + .info fileset is generated per chromosome, and the full file extensions are of the form .chr-<chromosome number>.info. This format cannot be loaded by PLINK.

A text file with no header line, and one line per variant with the following two fields:

  1. Variant identifier
  2. Base-pair coordinate

.kin0 (KING-robust kinship coefficient report)

Produced by --make-king-table.

A text file with a header line, and one line per sample pair with kinship coefficient no smaller than the --king-table-filter value. When --king-table-filter is not specified, all sample pairs are included. The following columns are present:

HeaderColumn setContents
FID1maybefid, fidFID of first sample in current pair
ID1idIID of first sample in current pair
SID1maybesid, sidSID of first sample in current pair
FID2maybefid, fidFID of second sample in current pair
ID2idIID of second sample in current pair
SID2maybesid, sidSID of second sample in current pair
NSNPnsnpNumber of variants considered (autosomal, neither call missing)
HETHEThethetProportion/count of considered call pairs which are het-het
IBS0ibs0Proportion/count of considered call pairs which are opposite homs
HET1_HOM2ibs1Proportion/count of sample 1 het, sample 2 hom
HET2_HOM1ibs1Proportion/count of sample 1 hom, sample 2 het
IBSibsHamming distance (2 * ibs0 + ibs1), divided by 2 * nsnp if proportion
KINSHIPkinshipKING-robust between-family kinship estimate
RTrtPedigree relationship type: PO=parent/offspring, FS=full-sibling, HS=half-sibling, GG=grandparent/child, AV=avuncular, REL=otherwise-related, UN=unrelated
PEDIGREE_KINSHIPpkinKinship coefficient expected from pedigree

.king[.bin] (KING-robust kinship coefficient matrix)

Produced by --make-king. Accompanied by a .king[.bin].id file containing sample IDs.

If text, a tab-delimited file that is either lower-triangular (excluding the diagonal) or square. If it's square, the upper-right triangle may be either zeroed out or the mirror-image of the lower-left triangle, depending on whether the 'square0' or 'square' modifier was used.

The binary format is semantically identical; it just has nothing but single- (4-byte) or double-precision (8-byte) floating point values, instead of text+delimiters+linebreaks.


.ldscore (variant LD Scores)

Produced by --ld-score. Accompanied by .ldscore.M and .ldscore.M_5_50 files containing variant counts behind each score.

A text file with a header line, and usually one per autosomal biallelic variant with the following columns:

CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
NOBSInobsiNumber of variants in the window, including this one
'L2', or '<annotation>L2'...l2LD Score, or one column per annotation

Multiallelic variants are also included if --ld-score's 'multiallelic' modifier is specified.


.legend (Oxford single-chromosome variant information file)

Single-chromosome variant information file accompanying a bare .haps reference panel haplotype file. Imported with --legend, and produced by "--export hapslegend".

A text file with a header line, and one line per variant with the following four columns:

HeaderContents
idVariant ID
positionBase-pair coordinate
a0Allele 0 (usually minor, use 'ref-first' to treat as REF)
a1Allele 1 (usually major, use 'ref-last' to treat as REF)

.lgen (PLINK long-format genotype file)

Produced by "--export lgen" and "--export lgen-ref". Accompanied by a .fam, .map, and possibly a .ref file. Loaded with --lfile.

A text file with no header line, and one line per genotype call (or just not-homozygous-major calls if 'lgen-ref' was invoked) usually with the following five columns:

  1. Family ID
  2. Within-family ID
  3. Variant identifier
  4. Allele call 1 ('0' for missing)
  5. Allele call 2

There are several variations which are also handled by PLINK; see the original discussion for details.


.list (PLINK 1 genotype list file)

Produced by "--export list". This format cannot be loaded by PLINK.

A text file with no header line, and four lines per variant. Each line starts with the following three fields:

  1. Chromosome code
  2. Variant identifier
  3. Genotype ('00' for missing)

This is followed by two additional fields (FID, then IID) for each sample with the specified genotype call at the variant.


.map (PLINK 1 text fileset variant information file)

Variant information file accompanying a .ped text pedigree + genotype table.

A text file with no expected header line, and one line per variant with the following 3-4 columns:

  1. Chromosome code. PLINK 1.9 and 2.0 also permit contig names here, but most older programs do not.
  2. Variant ID
  3. Position in centimorgans (optional; safe to use dummy value of '0')
  4. Base-pair coordinate (1-based; limited to 231-2)

All lines must have the same number of columns (so either no lines contain the centimorgans column, or all of them do).

Lines starting with '#' are supposed to be treated as comments, but this was not consistently supported by PLINK 1.9 and 2.0 before Aug 2024.


.mdist (genomic distance proportion matrix)

Produced by "--distance 1-ibs" and --distance-matrix.

Shape and contents are identical to that of .dist files, except that all values are divided by twice the total variant count to convert them from Hamming distances to fractions between 0 and 1.


.mendel, .imendel, .fmendel, .lmendel (Mendel error reports)

Produced by --mendel.

The .mendel file is a text file with a header line, and one line per error with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
KID(required)Kid's IID
KID_SIDmaybesid, sidKid's source-ID
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
CODEcodeNumeric error code
ERRORerrorDescription of error (no longer contains spaces)

Note that '*/*' or '*' in the error description does not (necessarily) refer to a missing genotype call; instead, it means the Mendel error is unrelated to that parent.

The .fmendel file has a header line, and one line per nuclear family with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
PAT(required)Paternal IID (0 if missing)
MAT(required)Maternal IID (0 if missing)
CHLD(required)Number of offspring samples in nuclear family
N(required)Number of Mendel errors in nuclear family

The .imendel file has a header line, and one subsection per trio/duo. Each subsection contains one line per trio/duo member (father first, then mother, then child) with the following columns:

HeaderColumn setContents
TRIO_NUMtrionum1-based trio/duo number
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
NniNumber of errors implicating this sample (only considering trio/duo)
OBS_CTnobsiNumber of variants considered
F_ERRfraciSample's Mendel error rate (only considering trio/duo)

Samples may appear more than once in this file.

Finally, the .lmendel file has a header line, and one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
NnlNumber of Mendel errors
OBS_CTnobslNumber of trios considered
F_ERRfraclVariant's Mendel error rate

.meta (meta-analysis)

Produced by --meta-analysis.

A text file with a header line, and then one line per analyzed variant with the following columns:

CHROMChromosome code. Not present with 'no-map' modifier.
POSBase-pair coordinate. Not present with 'no-map' modifier.
IDVariant identifier
A1Allele 1. Not present with 'no-map' or 'no-allele' modifier.
A2Allele 2. Not present with 'no-map' or 'no-allele' modifier.
NNumber of valid studies for variant
PFixed-effects meta-analysis p-value
P_RRandom-effects meta-analysis p-value
'BETA'/'OR'Fixed-effects BETA/OR estimate
'BETA_R'/'OR_R'Random-effects BETA/OR estimate (DerSimonian and Laird)
Qp-value for Cochran's Q statistic
I2I2 heterogeneity index (0-100 scale)
TAU2Maximum-likelihood between-study variance. Requires 're2' modifier.
P_RE2Han & Eskin (2011) random-effects estimate. Requires 're2' modifier.
WEIGHTED_ZWeighted Z-score, as computed by METAL. Requires 'weighted-z' modifier.
P_WZp-value for weighted Z-score. Requires 'weighted-z' modifier.
F0...Study x (0-based input file indices) effect estimate. Requires 'study' modifier.

Contact us if you want to be able to customize this.


.mibs (identity-by-state matrix)

Produced by "--distance ibs" and --ibs-matrix.

A tab-delimited text file. Possible shapes are the same as for .dist and .mdist files. Each identity-by-state value is just equal to one minus the corresponding .mdist value.


.mgf (BIMBAM/GEMMA Mean Genotype Format)

GEMMA's dosage-supporting file format, originally introduced by BIMBAM. Must be accompanied by a .pos.txt file; can also be accompanied by a headerless .pheno.txt file where rows correspond to samples and columns correspond to phenotypes. Loaded by --mgf, and produced by "--export mgf".

Commas and semicolons are treated as whitespace in these text formats.

The .mgf file has no header, and one line per variant with the following 3+S columns (where S is the number of samples):

  • 1. Variant ID
  • 2. ALT allele
  • 3. REF allele
  • 4-(S+3). Sample dosages on 0..2 scale; 'NA'/'-9'/'?'/'??' treated as missing

The .pos.txt file has no header, and one line per variant with the following 3 columns:

  1. Variant identifier
  2. Base-pair coordinate
  3. Chromosome code

.missing (case/control nonrandom missingness test report)

Produced by --test-missing.

A text file with a header line, and then one line per variant with at least 1 missing and 1 nonmissing call with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
MISSING_CT_AnmissaMissing call count in cases
OBS_CT_AnobsaCase denominator (male-only on chrY)
F_MISS_AfmissaMissing call rate in cases
MISSING_CT_UnmissuMissing call count in controls
OBS_CT_UnobsuControl denominator (male-only on chrY)
F_MISS_UfmissuMissing call rate in controls
PpFisher exact p-value

.missing.hap (adjacent variant-based nonrandom missingness test report)

Produced by --test-mishap.

A text file with a header line, and then one section per autosomal diploid variant with 5+ missing calls. Each section contains one line per considered flanking haplotype, followed by a 'HETERO' line covering flanking heterozygosity (just one flanking call needs to be heterozygous), with the following columns:

IDCentral variant identifier
HAPLOTYPEHaplotype allele(s), or 'HETERO'
F_0Haplotype frequency, central call missing
F_1Haplotype frequency, central call nonmissing
M_H1#(central call missing, this hap.) / #(central call nonmissing, this hap.)
M_H2#(central call missing, other hap.) / #(central call nonmissing, other hap.)
CHISQChi-square statistic
PChi-square p-value
FLANKINGFlanking variant ID(s), '|'-delimited

Contact us if you want to be able to customize this.


.*.{a,m}perm (permutation test report)

Produced by --glm when the 'aperm' or 'mperm=<value>' modifier is used. --perm-format controls the format of this file.

A text file with a header line, and then one line per tested allele with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
A1(required)Counted allele1 in regression
OMITTEDomittedIf linear/logistic/Firth regression, omitted allele
EMP1[_CT](required)# of more-extreme permutation results for this allele (tie=0.5), or empirical pointwise p-value
PERM_CT(required)# of permutations (.aperm only)
EMP2[_CT](required)# of permutations with a more-extreme result for any allele (tie=0.5), or empirical max(T) p-value (.mperm only)

.neighbour (nearest neighbor distance report)

Produced by --neighbour.

A text file with a header line, and one line per sample with the following columns:

FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
DIST_SELFdistselfMean distance to K nearest neighbors
DIST_NNdistnnMean DIST_SELF over those K neighbors
STATstatsqrt(DIST_SELF / DIST_NN), or 'NA' when DIST_NN=0

.pdiff (two-fileset genotype/dosage discordance report)

Produced by --pgen-diff.

A text file with a header line, and then one line per discordance with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
IDidVariant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
'GT1'/'DS1'genoGenotype/dosage of first sample
'GT2'/'DS2'genoGenotype/dosage of second sample

.ped (PLINK 1/MERLIN/Haploview sample-major text genotype table)

Pedigree information + genotype call text file. Must be accompanied by a .map file. Loaded with --pedmap, and produced by "--export ped". This format is simultaneously highly inefficient, even relative to other text formats, and limited in scope (unobserved minor allele codes can't be stored); continued use is strongly discouraged.

Contains no header line, and one line per sample with 2V+6 columns where V is the number of variants. The first six columns are the same as those in a .fam file. The seventh and eighth columns are allele calls for the first variant in the .map file ('0' = no call); the 9th and 10th are allele calls for the second variant; and so on. All variants must be biallelic (or monomorphic, or all-missing).

If all alleles are single-character, PLINK 1.9 and 2.0 will correctly parse the more compact "compound genotype" variant of this format, where each genotype call is represented as a single two-character string. This does not require the use of an additional loading flag. You can produce such a file with "--export compound-genotypes".

It is also possible to load .ped files missing some initial columns.

Lines starting with '#' are supposed to be treated as comments, but this was not supported by PLINK 1.9 and 2.0 before Aug 2024.


.pgen, .pgen.pgi (PLINK 2 binary genotype table)

PLINK 2's preferred way to represent genotype calls. Must be accompanied by .pvar/.bim and .psam/.fam files. Loaded with --pfile/--bpfile, and generated with --make-pgen/--make-bpgen and all import commands.

Most .pgen files have an embedded index, and do not have an accompanying .pgen.pgi file. When the index is not embedded, PLINK 2 expects it to be stored in "<.pgen filename>.pgi".

A draft specification of these formats is available. The first version will be finalized around the beginning of PLINK 2.0 beta testing.


.phase.inp (fastPHASE format)

Produced by "--export fastphase[-1chr]", for use by fastPHASE. With "--export fastphase", one file is generated per chromosome, and the full file extensions are of the form .chr-<chromosome number>.phase.inp. This format cannot be loaded by PLINK.

Each .phase.inp file produced by PLINK starts with two short header lines: number of samples on its own line, followed by V on its own line (where V is the number of variants). The third header line starts with 'P', and is followed by the base-pair coordinates of all variants.

The main body of the file has three lines per sample. The first line in each triplet is:

  1. '#'
  2. 'ID'
  3. Within-family ID

The second and third lines each have a single M-character string, with one character per allele call. Missing calls are coded as '?'.


.psam (PLINK 2 sample information file)

Sample information file accompanying a .pgen binary genotype table. (--make-just-psam can be used to update just this file.)

A text file which usually has at least one header line, where only the last header line starts with '#FID' or '#IID'. This final header line specifies the columns in the .psam file; the following intermediate column headers are recognized:

  1. IID (individual ID; required)
  2. SID (source ID, when there are multiple samples for the same individual)
  3. PAT (individual ID of father, '0' if unknown)
  4. MAT (individual ID of mother, '0' if unknown)
  5. SEX ('1' = male, '2' = female, 'NA'/'0' = unknown)

(FID must either be the first column, or absent. If it's absent, all FID values are now assumed to be '0'.) Any other value is treated as a phenotype/covariate name; see the phenotype/covariate documentation for column encoding details.

If no header line is present, the columns are assumed to be in .fam file order (FID, IID, PAT, MAT, SEX, PHENO1).


.phy (relaxed PHYLIP format)

Multiple sequence alignment text file, produced by "--export phylip[-phased]", and recognized by FastTree, IQ-TREE, and several other phylogenetic tools. This format cannot be loaded by PLINK.

The header line contains two numbers, the number of sequences followed by the number of nucleotide codes per sequence.

Each subsequent line contains two columns. The first column contains the sample ID, and is padded by spaces to a fixed width, such that the longest sample ID is followed by exactly 3 spaces. (This imitates the behavior of vcf2phylip.) The second column contains IUPAC nucleotide codes.


.pphe (phenotype permutations)

Produced by --make-perm-pheno. Valid input for --pheno.

A text file with no header line, and one line per sample with the following P+2 columns (where P is the requested number of permutations):

  • 1. Family ID
  • 2. Within-family ID
  • 3-(P+2). Permuted phenotypes

Missing phenotypes are represented by the --[output-]missing-phenotype or --missing-catname value.


.pvar (PLINK 2 variant information file)

Variant information file accompanying a .pgen binary genotype table. (--make-just-pvar can be used to update just this file.)

A text file which usually has at least one header line, where only the last header line starts with '#CHROM'. This final header line specifies the columns in the .pvar file; the following intermediate column headers are recognized:

  1. POS (base-pair coordinate)
  2. ID (variant ID; required)
  3. REF (reference allele)
  4. ALT (alternate alleles, comma-separated; some commands expect uniqueness)
  5. QUAL (phred-scaled quality score for whether the locus is variable at all)
  6. FILTER ('PASS', '.', or semicolon-separated list of failing filter codes)
  7. INFO (semicolon-separated list of flags and key-value pairs, with types declared in header)
  8. FORMAT (terminates header line parsing)
  9. CM (centimorgan position)

In particular, a VCF file, or a trimmed VCF file with all columns past the 5th (or 6th, etc.) removed, is valid input for anything expecting a .pvar-format file.

The following VCF-style header lines are also recognized:

  1. "##INFO=<ID=PR,Number=0,Type=Flag...": Indicates the INFO/PR flag, which marks 'provisional' reference alleles (i.e. imported from a file which does not consistently track which allele is reference and which are alternates), is present. (This information is also present in .pgen files, and the loader reports an error when the .pvar and .pgen flags don't match.)
  2. "##chrSet=...": Explicitly specifies the chromosome set. E.g. --make-pgen + --dog will cause "##chrSet=<ID=1,autosomePairCt=38,X,Y,XY,M>" to be written to the .pvar header, and as a consequence it isn't necessary to include the --dog flag when loading the new fileset.

When no header line is present, the columns are assumed to be in .bim file order (CHROM, ID, CM, POS, ALT, REF; or if only 5 columns are present, CM is assumed to be omitted).


.raw (additive + dominant component file)

Produced by "--export {A,AD}"; suitable for loading from R. This format cannot be loaded by PLINK.

A text file with a header line, and then one line per sample with V+6 (for "--export A") or 2V+6 (for "--export AD") columns, where V is the number of variants. The header line does not contain a preceding '#'. The first six columns are:

FIDFamily ID
IIDIndividual ID
PATPaternal individual ID
MATMaternal individual ID
SEXSex (1 = male, 2 = female, 0 = unknown)
PHENOTYPEFirst active non-categorical phenotype (missing value if none)

This is followed by one or two columns per variant:

<Variant ID>_<counted allele>Allelic dosage (missing = 'NA', haploid scaled to 0..2)
<Variant ID>_HETDominant component (1 = het). Requires "--export AD".

If 'include-alt' was specified, the header line also names alternate allele codes in parentheses, e.g. 'rs5939319_G(/A)'.


.ref (long-format reference allele file)

Reference allele file which accompanies a .lgen file when it's generated with "--export lgen-ref". Loaded with --lfile + --reference.

A text file with no header line, and one line per variant with the following 2-3 fields:

  1. Variant identifier
  2. REF allele
  3. ALT allele (entire field omitted if value is missing)

.rel[.bin] (relationship matrix)

Produced by --make-rel. Accompanied by a .rel[.bin].id file containing sample IDs.

Contents are identical to that of a .grm/.grm.bin file. Possible shapes are essentially the same as for .king files; the only difference is that .king files have an omitted or constant-0.5 diagonal while .rel files do not.


.rlist (PLINK 1 rare genotype list file)

Produced by "--export rlist". Accompanied by .fam and .map files. This format cannot be loaded by PLINK.

A text file with no header line, and 0-3 lines per variant. Each line starts with the following four fields:

  1. Variant identifier
  2. Genotype class ('HOM' = homozygous minor, 'HET' = heterozygous, 'NIL' = missing call)
  3. Allele 1 ('0' for missing)
  4. Allele 2

This is followed by two additional fields (FID, then IID) for each sample with the specified genotype call at the variant. If there are no such samples, the entire line is omitted from the file. (As a result, any variants with nothing but homozygous major genotypes are not mentioned at all.)


.sample (Oxford sample information file)

Sample information file accompanying a .gen or .bgen genotype dosage file, or a .haps phased reference panel. Loaded with --data/--sample, and produced by --export in several cases.

By default, the .sample space-delimited files emitted by --export have two header lines, and then one line per sample with 4+ columns:

First header lineSecond header lineSubsequent contents
ID_10Family ID
ID_20Individual ID
missing0Missing call frequency
sexDSex code ('1' = male, '2' = female, '0' = unknown)
<Pheno name>, ...'B'/'D'/'P'Binary ('0' = control, '1' = case), discrete (categorical, positive integers), or continuous phenotype; missing values represented by 'NA'

(As of 6 Apr 2021, PLINK 2 accepts 'C' as a synonym for column type 'P' in .sample input files.)

With --export's 'sample-v2' modifier, this is adjusted to:

First header lineSecond header lineSubsequent contents
ID0Sample ID
missing0(unchanged)
fatherDPaternal individual ID
motherDMaternal individual ID
sexDUnknown sex encoded as 'NA' instead of '0'
<Pheno name>, ...'B'/'D'/'P'For type 'D', original category names are saved instead of just integers; otherwise unchanged

Note that older programs are likely to support only the first .sample dialect.

A specification for this format is on the QCTOOL v2 website.


.scount (sample variant-count report)

Produced by --sample-counts.

A text file with a header line, and then one line per discordance with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
SEXsexSex (1 = male, 2 = female, 'NA' = unknown)
HOM_CThomHomozygous genotype count
HOM_REF_CThomrefHom-REF genotype count
HOM_ALT_CThomaltHom-ALT genotype count
HOM_ALT_SNP_CThomaltsnpHom-ALT SNP (single-character REF and ALT) count
HET_CThetHeterozygous genotype count
HET_REF_ALT_CTrefaltHet. REF-ALTx genotype count
HET_2ALT_CThet2altHet. ALTx-ALTy genotype count
HET_SNP_CThetsnpHet. SNP genotype count
DIPLOID_TRANSITION_CTdiptsDiploid SNP transition (A↔G, C↔T) count
TRANSITION_CTtsSNP transition count
DIPLOID_TRANSVERSION_CTdiptvDiploid SNP transversion count
TRANSVERSION_CTtvSNP transversion count
DIPLOID_NONSNP_NONSYMBOLIC_CTdipnonsnpsymbDiploid non-SNP, non-symbolic variant count
NONSNP_NONSYMBOLIC_CTnonsnpsymbNon-SNP, non-symbolic variant count
SYMBOLIC_CTsymbolicSymbolic (starting with '<') variant count
NONSNP_CTnonsnpNon-SNP variant count
DIPLOID_SINGLETON_CTdipsingleNumber of singletons relative to this dataset, considering just diploid calls3
SINGLETON_CTsingleNumber of singletons relative to this dataset
HAP_REF_INCL_FEMALE_Y_CThaprefwfemaleyHaploid REF count, counting chrY for everyone
HAP_REF_CThaprefHaploid REF count, excluding chrY for nonmales
HAP_ALT_INCL_FEMALE_Y_CThapaltwfemaleyHaploid ALT count, counting chrY for everyone
HAP_ALT_CThapaltHaploid ALT count, excluding chrY for nonmales
MISSING_INCL_FEMALE_Y_CTmissingwfemaleyMissing call count, counting chrY for everyone
MISSING_CTmissingMissing call count, excluding chrY for nonmales

The 'hetsnp', 'dipts'/'ts'/'diptv'/'tv', 'dipnonsnpsymb'/'nonsnpsymb', 'symbolic', and 'nonsnp' columns count each ALT allele in a heterozygous ALTx-ALTy genotype separately, since they can be of different subtypes. (I.e. if they are of the same subtype, the corresponding count is incremented by 2.) As a consequence, these columns are unaffected by variant split/join.

3: If the ALT allele in a chrX biallelic variant appears in exactly one female and one male, that counts as a singleton in this column for just the female.


.sdiff (sample-pair discordance report)

Produced by --sample-diff.

A text file with a header line, and then one line per discordance with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
FID1maybefid, fidFID of first sample in current pair
IID1idIID of first sample in current pair
SID1maybesid, sidSID of first sample in current pair
FID2maybefid, fidFID of second sample in current pair
IID2idIID of second sample in current pair
SID2maybesid, sidSID of second sample in current pair
'GT1'/'DS1'genoGenotype/dosage of first sample
'GT2'/'DS2'genoGenotype/dosage of second sample

.sdiff.summary (sample-pair discordance count summary)

Produced by --sample-diff.

A text file with a header line, and then one line per sample pair with the following columns:

FID1maybefid, fidFID of first sample in current pair
IID1(required)IID of first sample in current pair
SID1maybesid, sidSID of first sample in current pair
FID2maybefid, fidFID of second sample in current pair
IID2(required)IID of second sample in current pair
SID2maybesid, sidSID of second sample in current pair
OBS_CTnobsNumber of genotype/dosage pairs considered
IBS_OBS_CTnobsibsNumber of diploid hardcall-pairs
IBS0_CTibs0# of diploid hardcall-pairs with no matching alleles
IBS1_CTibs1# of diploid hardcall-pairs with exactly 1 matching allele
IBS2_CTibs2# of diploid hardcall-pairs with 2 matching alleles
HALFMISS_CThalfmiss# of genotype/dosage pairs with exactly 1 missing call
DIFF_CTdiff# of genotype/dosage discordances

.set ('END'-terminated variant set membership list file)

Produced by --write-set, and loaded with --set.

A text file with a sequence of variant set definitions. Each set definition starts with the set ID, followed by IDs of all variants in the set, followed by 'END'. Spaces, tabs, and newlines are acceptable and equivalent token delimiters; the files emitted by --write-set have a single token per line and a blank line between sets, but you can e.g. describe an entire set per line instead, and --set will still read the file correctly.

For example, the .set file

GENE1
rs123456
rs10912
rs66222
END

GENE2 rs66222 rs929292
rs288222 END

assigns variants rs123456 and rs10912 to set 'GENE1', rs929292 and rs288222 to 'GENE2', and rs66222 to both sets.

When multiple set definitions share the same set ID, that currently results in an error rather than a merge.


.set.table (variant set membership table)

Produced by --set-table.

A tab-delimited text file with a header line, and then one line per variant with the following 3+S columns (where S is the number of sets):

CHROMChromosome code
POSBase-pair coordinate
IDVariant identifier
Set IDs...1 = member, 0 = nonmember

Variants which aren't a member of any set still appear in the table.


.sexcheck (sex imputation report)

Produced by --check-sex/--impute-sex.

A text file with a header line, and one line per sample with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
PEDSEXpedsexSex code in input file (1 = male, 2 = female, NA = unknown)
SNPSEX(required)Imputed sex code (1/2/NA)
STATUSstatus'OK' on nonmissing PEDSEX and SNPSEX match, 'PROBLEM' otherwise
FxfIf chrX used, inbreeding coefficient estimated off chrX
YCOUNTycountIf chrY used, number of valid chrY genotypes
YRATEyrateIf chrY used, chrY valid genotype rate
YOBSyobsIf chrY used, number of chrY variants considered

.smiss (sample-based missing data report)

Produced by --missing.

A text file with a header line, and then one line per variant with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
MISS_PHENO1misspheno1First active phenotype missing (Y/N), Y if none
<Pheno name>, ...missphenosY/N column for each loaded phenotype
MISSING_DOSAGE_CTnmissdosageNumber of missing dosages
MISSING_CTnmissNumber of missing hardcalls, not counting het haploids
MISSING_AND_HETHAP_CTnmisshhNumber of missing hardcalls, counting het haploids
HETHAP_CThethapNumber of heterozygous haploid hardcalls
OBS_CTnobsDenominator (# samples, females excluded on chrY)
F_MISS_DOSAGEfmissdosageMissing dosage rate
F_MISSfmissMissing hardcall rate, not counting het haploids
F_MISS_AND_HETHAPfmisshhMissing hardcall rate, counting het haploids

When dosages are present, MISSING_DOSAGE_CT will typically be slightly lower than MISSING_CT, since hardcalls normally aren't saved for dosages in (0.1, 0.9) or (1.1, 1.9).


.snp (EIGENSOFT variant information file)

Variant information file accompanying an EIGENSOFT .geno binary genotype table. Loaded with --eigfile/--eigsnp, and produced by --export eig[t].

A text file with no header line, and one line per variant with the following three columns:

  1. Variant ID
  2. Numeric chromosome code (90 = MT, 91 = XY)
  3. Position in centimorgans (safe to use dummy value of '0')
  4. Base-pair coordinate (1-based; limited to 231-2)
  5. REF single-character allele code
  6. ALT single-character allele code ('X' = missing)

.sscore (sample scores)

Produced by --score and --score-list.

A text file with a header line, and then one line per sample with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
PHENO1pheno1All-missing phenotype column, if none loaded
<Pheno name>, ...pheno1, phenosPhenotype value(s) (only first if just 'pheno1')
ALLELE_CTnalleleNumber of alleles across scored variants (--score only)
DENOMdenomDenominator used for score average (--score only)
NAMED_ALLELE_DOSAGE_SUMdosagesumSum of named allele dosages (--score only)
<Score name>_AVG, ...scoreavgsScore averages
<Score name>_SUM, ...scoresumsScore sums

.ssf.tsv (association statistics in GWAS-SSF format)

Produced by --gwas-ssf postprocessing --glm output.

A text file with a header line, and then one line per variant with the following columns:

HeaderContents
chromosomeChromosome code (1-25, where X=23, Y=24, MT=25)
base_pair_locationBase-pair coordinate
effect_alleleCounted allele in regression
other_alleleOmitted allele
'beta'/'odds_ratio'Regression coefficient or odds ratio for effect_allele
standard_errorStandard error of beta
effect_allele_frequencyFrequency of effect_allele in regression
[neg_log_10_]p_valueAsymptotic p-value or -log10(p)
variant_id<chrom>_<pos>_<ref>_<alt> variant ID
rsidrsID
ci_upperUpper end of beta/odds_ratio confidence interval
ci_lowerLower end of beta/odds_ratio confidence interval
nNumber of samples in regression
ref_alleleIndicates which allele is REF ('EA', 'OA', or '#NA')

(Since the --gwas-ssf command does not have a cols= modifier, boldface is used to denote mandatory GWAS-SSF columns in this table.)


.strct_in (Structure format)

Produced by "--export structure", for use by Structure. This format cannot be loaded by PLINK.

A text file with two header lines: the first header line lists all V variant IDs, while each entry in the second line is the difference between the current variant's base-pair coordinate and the previous variant's bp coordinate (or -1 when the current variant starts a new chromosome). This is followed by one line per sample with the following 2V+2 columns:

  • 1. Within-family ID
  • 2. Positive integer, unique for each FID
  • 3-(2V+2). Genotype calls, with the A1 allele coded as '1', A2 = '2', and missing = '0'

.svd.pheno (summary phenotypes generated via SVD)

Produced by --pheno-svd.

A text file with a header line, and then one line per sample with the following columns:

HeaderColumn setContents
FIDmaybefid, fidFamily ID
IID(required)Individual ID
SIDmaybesid, sidSource ID
SVDPHENO1, ...(required)New phenotype values
.svd.pheno_wts (singular values and right-singular vectors from phenotype SVD)

Produced by --pheno-svd.

A text file with a header line, and then one line per new phenotype with the following columns:

HeaderColumn setContents
NEW_PHENO_IDidNew phenotype ID
SINGULAR_VALUEsvSingular value from SVD
<Old pheno name>, ...(required)Right-singular vectors from SVD
.tags.list (tagging variant report)

Produced by --show-tags, when used in 'all' mode or with the --list-all flag.

A text file with a header line, and then one line per target variant with the following eight columns:

CHROMChromosome code
POSBase-pair coordinate
IDVariant identifier
NTAGNumber of other variants tagging this
LEFTBase-pair coordinate of earliest tag variant, including this
RIGHTBase-pair coordinate of latest tag variant, including this
KBSPAN(RIGHT - LEFT + 1) / 1000
TAGS'|'-delimited list of IDs of other variants tagging this (or 'NONE')

Contact us if you want to be able to customize this.


.tfam (PLINK 1 sample information file)

Sample information file accompanying a .tped file; identical format to .fam files.


.tped (PLINK 1 variant-major text genotype table)

Variant information + genotype call text file. Must be accompanied by a .tfam file. Loaded with --tfile, and produced by "--export tped".

Contains no header line, and one line per variant with 2N+4 columns where N is the number of samples. The first four columns are the same as those in a .map file. The fifth and sixth columns are allele calls for the first sample in the .tfam file ('0' = no call); the 7th and 8th are allele calls for the second sample; and so on. All variants must be biallelic (or monomorphic, or all-missing).


.traw (variant-major additive component file)

Produced by "--export Av"; suitable for loading from R. Loaded with --import-dosage (note that several modifiers must be specified).

A text file with a header line without a leading '#', and then one line per variant with the following N+6 columns (where N is the number of samples):

CHRChromosome code
SNPVariant identifier
(C)MPosition in centimorgans
POSBase-pair coordinate
COUNTEDCounted allele (now defaults to REF)
ALTOther allele(s), comma-separated
<FID>_<IID>...Allelic dosages (missing = 'NA', haploid scaled to 0..2)

.used_sites.tsv (variant information for relaxed-PHYLIP file)

Produced by "--export phylip[-phased] used-sites". Accompanied by a .phy file.

A text file with a header line, and then one line per variant with the following 3 columns:

CHROMChromosome code
POSBase-pair coordinate
NUM_SAMPLESNumber of samples with nonmissing nucleotides
.var.ranges (equal-size variant ranges)

Produced by --write-var-ranges.

A text file with a header line, and then one line per range with the following two columns:

FIRSTFirst variant ID
LASTLast variant ID

.vcf, .bcf (1000 Genomes Project Variant Call Format)

Variant information + sample ID + genotype call file; text if .vcf, binary if .bcf. Imported with --vcf/--bcf, and produced by "--export {b,v}cf".

Note that, while PLINK 2.0 supports a much larger subset of the VCF standard than PLINK 1.9, it still isn't appropriate for general-purpose VCF handling. Instead, the goal is to provide a very useful complement to bcftools. For example, PLINK 2.0 does not save per-call read depths, so any data management or analysis which requires them to be kept around should be done with bcftools or a similarly general tool; but once you're done with variant calling/imputation and are ready to treat your data as a single matrix of hardcalls or dosages (possibly with missing entries), PLINK 2.0 is much more efficient.

The VCFv4.3 files emitted by "--export vcf" start with the following three header lines:

  1. ##fileformat=VCFv4.3
  2. ##fileDate=<yyyymmdd date>
  3. ##source=PLINKv2.00

This is usually followed by all the VCF header lines (if any) present in the loaded .pvar file, a "##chrSet=" chromosome set description when appropriate, and additional "##contig=", INFO/PR, and FORMAT header lines when necessary to make the file conform to the VCF standard.

Next comes a tab-delimited header line with the following N+9 columns (where N is the number of samples), and one tab-delimited line per variant with the same columns:

#CHROMChromosome code
POSBase-pair coordinate
IDVariant identifier
REFReference allele (missing = 'N')
ALTAll alternate alleles, comma-separated (missing = '.')
QUALPhred-scaled quality score for whether the locus is variable at all
FILTER'PASS', '.', or semicolon-separated list of failing filter codes
INFOSemicolon-separated list of flags and key-value pairs, with types declared in header
FORMAT'GT', 'DS', 'HDS', and/or 'GP' can be emitted by PLINK 2
<Sample ID>, ...Genotype/dosage calls

Allele codes are supposed to either start with '<', only contain characters in the set {A,C,G,T,N,a,c,g,t,n}, be an isolated '*', or represent a breakend. --export issues a warning if an allele code does not satisfy this restriction.

The full VCFv4.3 specification is in the hts-specs GitHub repository; this includes details on the BCF binary encoding.


.vcor (LD-statistic report)

Produced by --r[2]-[un]phased when in its default tabular-output mode.

A text file with a header line, and one line per variant-pair passing all filters. The following columns are present:

HeaderColumn setContents
CHROM_AchromChromosome code for first variant in pair
POS_AposBase-pair coordinate of first variant in pair
ID_AidID of first variant in pair
REF_Aref4Reference allele for first variant in pair
ALT1_Aalt1Alternate allele 1 for first variant in pair
ALT_AaltComma-separated alternate alleles for first variant in pair
PROVISIONAL_REF_A?maybeprovref, provrefReports whether REF_A allele is provisional
MAJ_Amaj4Major allele for first variant in pair
NONMAJ_AnonmajComma-separated nonmajor alleles for first variant in pair
NONMAJ_FREQ_Afreq(1 - <major-allele frequency>) for first variant in pair
CHROM_BchromChromosome code for second variant in pair
POS_BposBase-pair coordinate of second variant in pair
ID_BidID of second variant in pair
REF_Bref4Reference allele for second variant in pair
ALT1_Balt1Alternate allele 1 for second variant in pair
ALT_BaltComma-separated alternate alleles for second variant in pair
PROVISIONAL_REF_B?maybeprovref, provrefReports whether REF_B allele is provisional
MAJ_Bmaj4Major allele for second variant in pair
NONMAJ_BnonmajComma-separated nonmajor alleles for second variant in pair
NONMAJ_FREQ_Bfreq(1 - <major-allele frequency>) for second variant in pair
[UN]PHASED_R[2](required)Variant correlation coefficient
DdLinkage disequilibrium D (phased only)
DPRIMEdprimeLewontin's D' (phased only)
ABS_DPRIMEdprimeabsAbsolute value of Lewontin's D' (phased only)

Sign of [UN]PHASED_R, D, and DPRIME is positive when the major (or, with 'ref-based', REF) alleles are positively correlated.

4: The 'maj' (or 'ref' when the 'ref-based' modifier is specified) column-set is included by default in --r-phased and --r-unphased's tabular output, but excluded by default for --r2-phased and --r2-unphased.


.vcor{1|2}[.bin] (variant-correlation matrix)

Produced by --r[2]-[un]phased when in matrix-output mode; the exact file extension distinguishes phased vs. unphased (which appears in the component before '.vcor1' or '.vcor2'), r vs. r2, and text vs. binary format. Accompanied by a <matrix filename>.vars file containing variant IDs.

Possible shapes are the same as for .king files, except that triangular files include the diagonal.


.vmiss (variant-based missing data report)

Produced by --missing.

A text file with a header line, and then one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
MISSING_DOSAGE_CTnmissdosageNumber of missing dosages
MISSING_CTnmissNumber of missing hardcalls, not counting het haploids
MISSING_AND_HETHAP_CTnmisshhNumber of missing hardcalls, counting het haploids
HETHAP_CThethapNumber of heterozygous haploid hardcalls
OBS_CTnobsDenominator (# variants for males, excludes chrY for females)
F_MISS_DOSAGEfmissdosageMissing dosage rate
F_MISSfmissMissing hardcall rate, not counting het haploids
F_MISS_AND_HETHAPfmisshhMissing hardcall rate, counting het haploids
F_HETHAPfhethapHeterozygous haploid rate.

When dosages are present, MISSING_DOSAGE_CT will typically be slightly lower than MISSING_CT, since hardcalls normally aren't saved for dosages in (0.1, 0.9) or (1.1, 1.9).


.vinfo (INFO values as TSV)

Produced by --info-to-cols.

A text file with a header line, and then one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALTaltAll alternate alleles, comma-separated
<INFO key>, ...(required)INFO values

.vscore (text variant score report)

Produced by --variant-score.

A text file with a header line, and then one line per variant with the following columns:

HeaderColumn setContents
CHROMchromChromosome code
POSposBase-pair coordinate
ID(required)Variant ID
REFrefReference allele
ALT1alt1Alternate allele 1
ALTaltAll alternate alleles, comma-separated
PROVISIONAL_REF?maybeprovref, provrefReports whether REF allele is provisional
ALT_FREQaltfreqALT total-frequency used for mean-imputation
MISSING_CTnmissNumber of missing (and thus mean-imputed) dosages
OBS_CTnobsNumber of (nonmissing) sample observations
<Variant score>, ...(required)Variant scores

.vscore.bin (binary variant scores)

Produced by "--variant-score bin". Accompanied by .vscore.cols and .vscore.vars text files containing column (score) and row (variant ID) labels, respectively.

A matrix of double-precision (8-byte) floating point variant scores.

Tutorial Setup >>