Bioinformatics Databases

Lesson 19 of 20 · 11 min

Genome Assemblies and Builds

By the end of this lesson you'll be able to explain why two people can both be "looking at BRCA1 on chromosome 17" and see completely different numbers — and know which coordinate system you're actually standing on before you trust one.

Two rulers for the same chromosome

A genome assembly is a computational reconstruction of a genome: millions of overlapping sequencing reads, stitched together into continuous chromosome-length sequences. Building one is hard and imperfect, so the reference gets revised over time. Each numbered revision is called a build — the two you'll meet constantly for human data are GRCh37 (released 2009, still called hg19 in UCSC tools) and GRCh38 (released 2013, hg38), both maintained by the Genome Reference Consortium (GRC).

Revising the assembly means the ruler itself moves. BRCA1 sits at chr17:41,196,312-41,322,344 on GRCh37 and at chr17:43,044,295-43,170,327 on GRCh38 — a shift of roughly 1.8 million bases, not because the gene moved, but because the surrounding sequence was reassembled and gaps were closed. Both coordinates are correct. They're only meaningless without saying which build they belong to. This is exactly the versioning problem you met in Versioning: accession.version and Why Records Change, scaled up from one record to an entire genome.

GCA_ and GCF_: two accessions, one assembly

Assemblies get accessioned too, and — just like the sequence records you've been reading all course — GenBank and RefSeq each mint their own. A GCA_ accession is the INSDC/GenBank assembly ID; a GCF_ accession is NCBI's RefSeq assembly ID for the same underlying assembly, built by re-annotating the GCA submission with curated gene models. For GRCh38.p14 (patch 14, the current release as of this writing), the pair is GCA_000001405.29 and GCF_000001405.40. The version number after the dot climbs with every patch, the same accumulate-don't-overwrite logic from the versioning lesson — but here it's tracking patches to a 3-billion-base assembly instead of edits to a single record.

The chromosome sequence you actually align reads against also carries its own RefSeq accession: chromosome 17 is NC_000017.11 under GRCh38 and NC_000017.10 under GRCh37. That trailing version digit is your fastest tell for which build a file was aligned to — before you even check the coordinates.

GRCh37 (hg19)GRCh38 (hg38)
Released20092013
Chr17 RefSeqNC_000017.10NC_000017.11
Assembly accessionsGCA_000001405.1 seriesGCA_000001405.29 / GCF_000001405.40
BRCA1 coordinateschr17:41,196,312-41,322,344chr17:43,044,295-43,170,327
StatusLegacy, still widely used in clinical pipelinesCurrent primary reference

Patches: why coordinates shift without a new build

A full build revision is disruptive — every downstream tool, index, and paper has to catch up. So between major builds, the GRC issues patches: small, targeted corrections layered on top of the existing assembly without renumbering the main chromosomes. A FIX patch corrects an error in the reference chromosome itself; a NOVEL patch adds an alternate representation of a genomic region too structurally variable for one sequence to represent well (the MHC region is the classic example). GRCh38.p14 bundles 250 patch scaffolds total. Coordinates on the primary chromosomes stay stable across patches within a build — NC_000017.11 doesn't change version just because a patch shipped — which is precisely why patches are the GRC's preferred way to fix problems without breaking every existing analysis.

Liftover: translating coordinates between builds

Because the two builds' coordinates genuinely disagree, moving a position from one to the other isn't arithmetic — it needs an alignment. Liftover is the process of translating a coordinate (or a whole interval, like a BED file of variant calls) from one build to another using a precomputed chain of aligned blocks between the two assemblies. UCSC's liftOver tool and its "chain files" are the standard; CrossMap and Ensembl's Assembly Converter do the same job with different interfaces.

Try it yourself: paste chr17:43,044,295-43,170,327 (BRCA1's GRCh38 span) into the UCSC Genome Browser's LiftOver tool, target GRCh37, and confirm you land near chr17:41,196,312-41,322,344. Small edge discrepancies are normal — liftover approximates across a rearranged region, it doesn't guarantee base-perfect precision at the boundaries.

Always state the build

A variant call, a BED file, or a set of coordinates is only unambiguous when it's stamped with its build. chr17:43,044,295 on GRCh38 and the same digits on GRCh37 point at entirely different sequence. VCF headers carry a ##reference line for exactly this reason, and any pipeline that skips it is one silent liftover away from misplacing every variant it reports. Treat a build the same way you already treat an accession's version number: never quote one without the other. BRCA1's two very different coordinate sets — 41,196,312-41,322,344 under GRCh37 and 43,044,295-43,170,327 under GRCh38 — are worth keeping close as the reminder.