Written and maintained by CASRAI Editorial Board
Last updated
You have picked a genome build — say GRCh38 — and now you need to actually download the file. This is where a surprising number of pipelines go wrong: GRCh38, hg38, and b37 name different assemblies, but even once you have settled on GRCh38 specifically, NCBI, Ensembl, and UCSC each distribute several different files for that same assembly — a full assembly, a primary assembly, and an “analysis set,” each including or excluding a different set of extra sequences. Grabbing the wrong one is a genuinely common source of pipeline errors: silent multi-mapping inflation, alignment-rate discrepancies between labs supposedly using “the same reference,” and variant calls that don’t reproduce a published best-practices workflow. This guide covers the build-version question’s less-discussed sibling: given a build, which specific file should you download and align against.
Why “just download the reference genome” isn’t one step
A modern human reference assembly isn’t a single linear sequence of chromosomes. Beyond the 24 primary chromosomes (1–22, X, Y) plus the mitochondrial genome, GRCh38 also includes:
- Unplaced and unlocalized scaffolds — sequence known to belong to the genome but not confidently placed at a specific coordinate.
- Alternate (ALT) contigs — additional haplotype sequences for regions too structurally complex or variable to represent with one path.
- Decoy sequences — sequences added specifically to attract reads that don’t truly belong anywhere else in the assembly.
Whether a given download bundles all of these, some of them, or none of them depends entirely on which specific file you grabbed — “GRCh38 FASTA” is not a unique identifier. This is exactly what an analysis set is for: a curated, standardized answer to “which of these should a standard alignment pipeline actually use.”
What an “analysis set” is
An analysis set is a specific, curated packaging of a reference assembly built for read alignment rather than for genome browsing or annotation. Rather than just concatenating every sequence the Genome Reference Consortium has ever released for a build, an analysis set makes deliberate choices about what to mask, what to include as a mapping decoy, and what to leave out — specifically to avoid the multi-mapping artifacts that a naive “full assembly” download produces. For GRCh38, the commonly used analysis sets are built on the primary assembly plus a defined decoy sequence, and are distributed in both an alt-contig-included and a “no-alt” variant. For most standard short-read alignment and variant-calling pipelines, the no-alt analysis set (sometimes labeled GRCh38_full_analysis_set or similar depending on source) is the recommended default — not the raw full assembly pulled directly from NCBI or Ensembl’s general-purpose downloads, which is built for completeness and annotation, not for aligner behavior.
Alt contigs: alternate haplotypes for genomically complex regions
Certain regions of the genome — the MHC/HLA region on chromosome 6 is the best-known example — are so structurally variable across the human population that a single linear reference sequence can’t adequately represent them. GRCh38’s answer is alternate loci (ALT contigs): extra sequences representing alternate haplotypes for these regions, included alongside (not instead of) the primary assembly’s own representation of the same locus.
This solves a representation problem but creates an alignment problem: an aligner that isn’t told these ALT contigs are alternates of a locus already represented on the primary assembly will treat them as independent targets, and reads from that region can map equally well to both the primary sequence and the ALT contig — spurious multi-mapping and, if joint-called naively, degraded variant calls in exactly the complex regions ALT contigs exist to help with. Handling this correctly requires an alt-aware alignment workflow (BWA-MEM’s ALT-handling plus a postprocessing step is the standard approach) that knows to treat ALT-contig hits as supplementary alignments to the primary locus rather than competing independent mappings. If your pipeline and downstream tools aren’t set up for alt-aware alignment, the safer default is the no-alt analysis set — you lose the extra haplotype representation, but you avoid the multi-mapping artifacts of including ALT contigs without the tooling to interpret them correctly.
Decoy sequences: giving misfit reads somewhere to go
A decoy sequence is close to the opposite idea: rather than adding biologically real alternate sequence, decoys add sequence that isn’t part of the reportable human assembly at all, purely to give an aligner somewhere to “absorb” reads that would otherwise misalign. Real sequencing libraries routinely contain reads that don’t truly belong anywhere in the primary assembly — sample contamination, viral sequence (Epstein–Barr virus turns up often enough in human sequencing that some analysis sets include an explicit EBV decoy contig), and genuinely unplaced human sequence not represented elsewhere in the assembly. Without a decoy, an aligner still has to put those reads somewhere, and it will often force them onto the closest-matching real chromosomal location — introducing false-positive variant calls and coverage artifacts in the true reference. A decoy contig gives those reads a home that isn’t a real reportable locus, measurably improving mapping accuracy and variant-calling precision everywhere else in the genome. The best-known GRCh38 decoy set (commonly referred to by its accession-style label, hs38d1) is a standard component of the analysis-set bundles built for exactly this purpose.
Practical guidance: use the standard bundle, don’t build your own
Given all of the above, the practical recommendation for most research pipelines is straightforward: use the standard analysis-set reference your pipeline’s own documentation recommends, rather than assembling a reference yourself from raw NCBI or Ensembl downloads. A few reasons this matters beyond convenience:
- Reproducibility with established best-practices workflows. Widely used variant-calling workflows — GATK’s best-practices pipelines being the most prominent example — are validated and documented against a specific reference file, decoy set, and (for GRCh38) alt-handling behavior. Substituting your own hand-assembled equivalent, even if it’s biologically similar, means you’re no longer running the workflow that was actually validated, and results can diverge from published benchmarks or from collaborators nominally using “the same reference.”
- Contig naming consistency. As covered in this site’s GRCh38 vs hg38 vs b37 comparison, GRCh38-style files typically use bare contig names (
1,X,MT) while UCSC-style hg38 files usechr-prefixed names (chr1,chrX,chrM) — a mismatch that silently breaks tools matching by contig name even when coordinates are identical. A standard analysis-set bundle keeps naming consistent with the rest of that ecosystem’s tools and resource files (known-sites VCFs, annotation databases); a self-assembled reference is an easy place to introduce a naming mismatch that only surfaces as a cryptic downstream error. - Alt-handling has to match your aligner. Whether you use an alt-included or no-alt analysis set has to match whether your alignment and downstream tools actually implement alt-aware processing — mixing an alt-included reference with a non-alt-aware pipeline reintroduces the multi-mapping problem analysis sets exist to prevent.
In short: identify which build you need (see this site’s hg19 vs hg38 and GRCh38 vs hg38 vs b37 comparisons for that decision), then download the specific analysis-set FASTA your pipeline’s documentation names — not a general-purpose “full assembly” or “primary assembly” download that happens to share the same build name — and keep the same file across every sample and every collaborator on a given project.
Frequently asked questions
Is the “primary assembly” the same thing as the “analysis set”?
No. A primary assembly file typically contains the chromosomes plus unplaced/unlocalized scaffolds, but not the ALT contigs and not a decoy sequence. An analysis set is a further-curated variant built specifically for alignment, adding a decoy (and, in the alt-included variant, the ALT contigs) on top of that primary sequence. Which one your pipeline expects should be stated in its documentation — don’t assume they’re interchangeable.
Do I need alt contigs for RNA-seq or exome sequencing?
Most standard RNA-seq and exome pipelines default to the no-alt analysis set, since alt-aware handling adds complexity that mainly pays off for whole-genome variant calling in the specific complex regions (like HLA) that ALT contigs represent. Check the documentation for the specific pipeline or best-practices workflow you’re following rather than assuming either way.
What happens if I skip the decoy sequence entirely?
Reads that would have mapped to the decoy don’t disappear — they get forced onto the closest-matching real location in the primary assembly instead, which can introduce false-positive variants and coverage artifacts in otherwise-clean regions. Decoys don’t add information about the biological genome; they only give contaminating or unplaced reads somewhere harmless to go.
Where should I get the reference file from?
Use the exact reference bundle named in the documentation of the specific pipeline or best-practices workflow you’re following (for example, GATK’s resource bundle) rather than downloading a same-build FASTA from a different source and assuming equivalence — the naming, masking, and decoy/alt content can all differ even between files describing the same assembly.
See also: hg19 vs hg38, GRCh38 vs hg38 vs b37, gVCF vs VCF, DeepVariant vs GATK HaplotypeCaller, SAM vs BAM vs CRAM, and the Ensembl dictionary entry.







