All in One View

Content from Introduction to IGV


Last updated on 2026-09-03 | Edit this page

Estimated time: 20 minutes

Overview

Questions

  • What is IGV and when would I use it?
  • What kinds of genomic data can I explore with a genome browser?
  • What file formats does IGV work with?

Objectives

  • Explain what a genome browser is and why researchers use one.
  • Describe the main types of genomic data that IGV can display.
  • List common file formats supported by IGV.
  • Confirm that IGV is installed and launches on your machine.

What is a genome browser?


A genome browser is a tool for visually exploring genomic data in the context of a reference genome. Instead of scrolling through millions of lines of a text file, a genome browser lets you scroll and zoom along a chromosome and see how different pieces of data — genes, sequencing reads, variants, signal tracks — line up against one another and against the genome sequence itself.

The Integrative Genomics Viewer (IGV) is a free, open-source desktop application originally developed at the Broad Institute for exactly this purpose. It is one of the most widely used genome browsers in genomics because it:

  • runs locally on your own computer, so you can view your own (potentially unpublished or sensitive) data without uploading it anywhere,
  • loads large files efficiently by reading only the region you are currently looking at,
  • supports dozens of genomics file formats out of the box, and
  • lets you load many different types of data as “tracks” and stack them on top of each other for direct comparison.

Why visualize genomic data?


Looking at raw output files is essential for sanity-checking a pipeline and for building intuition about your data. A genome browser helps you:

  • spot obvious problems early, such as misaligned reads, coverage gaps, or a mislabelled reference genome,
  • distinguish a real biological signal (e.g. a heterozygous SNP, an alternatively spliced exon) from a technical artifact (e.g. strand bias, low base quality, PCR duplicates), and
  • build confidence in a result before spending time on downstream analysis.

What kinds of data can IGV display?


IGV is used across many types of genomics experiments. Four common examples are shown below.

Screenshots of IGV showing epigenomics, NGS alignments, RNA-seq, and variant tracks
Four common IGV use cases: epigenomics signal tracks, NGS read alignments, RNA-seq coverage and junctions, and population variants and genotypes.
  • Epigenomics — signal tracks (e.g. from ChIP-seq) showing where a protein of interest binds the genome, or where a histone modification is present.
  • NGS alignments — individual sequencing reads aligned to the genome, useful for inspecting candidate SNPs, indels, and alignment quality.
  • RNA-seq — read coverage and splice junctions across a gene, useful for studying gene expression and alternative splicing.
  • Variants and genotypes — variant calls (e.g. from a VCF file) alongside per-sample genotypes, useful for comparing variation across many samples or populations.

In this lesson you will work through examples of each of these.

Callout

Where does the data in these tracks come from?

Most of the data types above start life as raw sequencing reads that are aligned to a reference genome and then further processed, for example ChIP-seq peaks are typically summarised into a coverage track (wig/bigWig) after alignment. IGV does not do this processing for you — it visualizes the output of upstream pipelines (alignment, variant calling, quantification). This lesson focuses on visualization, not on how the files were generated.

File formats


IGV supports a large number of standard genomics file formats. You do not need to memorize this list, but recognizing common formats will help you know what IGV can load directly.

List of IGV-supported file formats
A partial list of file formats supported natively by IGV, including BAM, BED, bigWig, FASTA, GFF/GTF, VCF, and more.

The formats you will use in this lesson are:

Format Contains Used in
FASTA (.fasta/.fa + .fai) Reference genome sequence Loading your own genome
BED Simple genomic intervals/features (e.g. genes, SNP calls) IGV Basics, Loading your own genome
BAM (+ .bai index) Aligned sequencing reads Viewing alignments and SNPs, Precomputing coverage
TDF Precomputed coverage/summary data Precomputing coverage
VCF Variant calls and sample genotypes Viewing variants
Challenge

Confirm IGV is installed

Launch IGV on your computer now (see the setup instructions if you have not installed it yet). You should see an empty IGV window with a genome drop-down menu in the upper left, reading something like Human hg19.

If IGV opens and shows a genome selection drop-down, a chromosome ideogram, and an empty track area below it, you are ready for the rest of the lesson. If IGV does not launch, check that you downloaded the correct build for your operating system and ask an instructor for help.

Key Points
  • A genome browser lets you visually explore genomic data in the context of a reference genome, which helps you spot problems and build intuition that raw files alone do not give you.
  • IGV is a free, desktop genome browser that runs locally and supports many genomics file formats, including FASTA, BED, BAM, TDF, and VCF.
  • IGV can display many types of data as tracks, including epigenomic signal, aligned sequencing reads, RNA-seq coverage/junctions, and variant genotypes.

Content from IGV Basics


Last updated on 2026-09-03 | Edit this page

Estimated time: 50 minutes

Overview

Questions

  • How do I load a reference genome and some example data into IGV?
  • How do I move around the genome at different zoom levels?
  • How do I read the sequence and gene tracks?

Objectives

  • Select a reference genome and load track data hosted on the IGV server.
  • Navigate between whole-genome, chromosome, and base-pair resolution views.
  • Jump directly to a genomic locus or gene by name.
  • Interpret the reference sequence track and the gene annotation track.
  • Combine two numeric tracks with a simple arithmetic operation.

This episode uses example data hosted directly on the IGV server, so you will need an internet connection.

Select a reference genome


Click the genome drop-down menu in the upper left corner of IGV and select Human hg19. (If you only see Human hg18 in the menu, that is fine — select that instead.)

Callout

More hosted genomes

The genome menu is short the first time you install IGV, but IGV hosts dozens of genomes beyond human. Select More… from the genome drop-down menu to browse and add other hosted genomes (bacteria, model organisms, other builds, and more) to your menu.

Genomes to add to list dialog with dozens of hosted genomes
The full list of genomes IGV hosts, opened via “More…” in the genome drop-down menu.

Load data from the IGV server


Select File > Load from Server…, open the Tutorials menu (click the triangle/plus next to it — do not check the box next to Tutorials itself, or you will load everything underneath it), and check the box next to UI Basics (Encode).

IGV File > Load from Server dialog with UI Basics dataset selected
Loading the “UI Basics” tutorial dataset from the IGV server.

Four tracks are loaded: ENCODE project ChIP-seq data representing histone modifications. Each track is displayed as a bar chart of signal intensities. This kind of data is a good choice for learning navigation, because the tracks are visually simple, but the navigation basics are the same no matter what type of data you load.


IGV lets you move between four broad zoom levels: the whole genome, a single chromosome, a specific region, and individual bases.

Whole genome view

Select All from the chromosome drop-down menu, or click the Home button, to see all chromosomes at once. At this zoomed-out view, the gene track displays gene density rather than individual genes.

One whole chromosome

Select Chr1 from the chromosome drop-down menu, or click 1 in the genome ruler.

IGV whole genome view and chromosome 1 view
Zooming from the whole genome to chromosome 1: the ruler now shows a cytoband ideogram.

The genome ruler now shows more detail and a cytoband ideogram of the chromosome. The gene track starts showing individual genes, but there are still too many to make out individually.

A smaller region

Click and drag across a region in the ruler to zoom in on it. You can also double-click anywhere in a data track to zoom in centered on that point (Alt-click to zoom back out).

Zooming into a region of chromosome 1
Click-and-drag on the ruler to zoom into a region; double-click a track to zoom to a point of interest.

As you zoom, the ruler measurements and a red box on the cytoband diagram update to show you where you are in the chromosome.

To move around without changing the zoom level:

  • Jump to another region on the same chromosome by clicking anywhere on the cytoband diagram.
  • Scroll across genome coordinates by clicking anywhere in the data panel and dragging left or right.

Jump to a locus or gene by name

Type a locus in genomic coordinates (e.g. chr1:144,874,969-969,268) or a gene name (e.g. NRAS) into the search box in the toolbar and click Go.

Base-pair resolution

Keep zooming in as before, or click one of the rightmost ticks on the “railroad track” zoom widget in the upper right corner, until you can see individual bases.

Typing NRAS into the search box and clicking Go takes you directly to the gene, at a zoom level that shows the full gene body along with the loaded ChIP-seq tracks. From there, continue zooming in (drag across the ruler, double-click a track, or use the + on the zoom widget) until individual bases and their 1-2 letter codes appear in the sequence track at the bottom.

The reference sequence track


Once you are zoomed in far enough, a Sequence track appears showing the reference genome sequence, one base per column.

IGV sequence track with 3-frame translation and gene annotation track
Base-pair resolution view showing the sequence track, and optional 3-frame amino acid translation.
  • By default, the forward strand sequence is shown. Click the arrow next to the sequence track to switch to the reverse strand.
  • Click anywhere on the sequence track to show or hide a 3-frame amino acid translation.

The gene annotation track


IGV displays gene models (like the loaded RefSeq genes track) using the same convention as the UCSC Genome Browser: a horizontal line for introns, thicker blocks for exons, and even thicker blocks at each end for the untranslated regions (5’ UTR and 3’ UTR).

By default, overlapping transcripts for the same gene are drawn on a single line. Right-click on the track name and choose:

  • Expanded to draw each transcript on its own line, or
  • Squished for an even more compact view than the default.
Challenge

Compare gene track display modes

Navigate to a gene with multiple transcripts, such as EGFR. Right-click on the RefSeq genes track name and try Collapsed, Expanded, and Squished. What is the trade-off between these three modes?

Collapsed draws all transcripts on one line (compact, but you cannot tell transcripts apart). Expanded draws one transcript per line (easiest to read individual isoforms, but takes up the most vertical space). Squished also draws one transcript per line but with much thinner rows, letting you fit many transcripts in a small space at the cost of readability.

Combining numeric data tracks


IGV can combine two numeric (signal) tracks with a simple arithmetic operation, which is useful for comparing or normalizing tracks without leaving IGV. Select Tools > Combine Data Tracks.

Tools menu with Combine Data Tracks highlighted
Selecting Tools > Combine Data Tracks with four loaded ChIP-seq signal tracks.

In the dialog, pick Track A and Track B from the loaded numeric tracks (for example, two of the ChIP-seq tracks you loaded earlier), choose an Operation (Add, Subtract, Multiply, or Divide), and name the result.

Combine Data Tracks dialog with Track A, Operation, Track B, and Result Track Name fields
The Combine Data Tracks dialog: pick two tracks, an operation, and a name for the result.

IGV adds a new track computed from the two source tracks at every position.

New combined track showing the sum of two ChIP-seq tracks
A new “Sum” track (Track A + Track B) added below the two source tracks.
Challenge

Combine two of the loaded ChIP-seq tracks

Using the four ENCODE ChIP-seq tracks loaded earlier in this episode, add two of them together with Tools > Combine Data Tracks. How does the combined track’s shape compare to its two source tracks?

The combined (“Sum”) track shows a peak wherever either source track has a peak, with the height reflecting the total signal from both tracks at that position. This kind of combination is useful, for example, to see a combined read-density signal without switching your eyes back and forth between two separate tracks.

Callout

Watch: IGV Data Navigation Basics

If you would rather watch these navigation basics demonstrated than read about them, the IGV team’s official tutorial video covers the same ground:

Key Points
  • Load a reference genome first, then load data tracks with File > Load from Server… or File > Load from File…; use Genomes > More… to add other hosted genomes beyond the default.
  • IGV supports four broad zoom levels: whole genome, chromosome, region, and base-pair resolution; drag on the ruler, double-click a track, or use the search box to move between them.
  • The sequence track shows the reference genome and, optionally, a 3-frame translation; the gene track shows exons, introns, and UTRs, and can be displayed collapsed, expanded, or squished.
  • Tools > Combine Data Tracks lets you add, subtract, multiply, or divide two numeric tracks into a new derived track.

Content from Loading Your Own Genome


Last updated on 2026-09-03 | Edit this page

Estimated time: 20 minutes

Overview

Questions

  • How do I view my own genome, rather than one of IGV’s built-in hosted genomes?
  • What do I lose by loading a genome from a FASTA file instead of one of IGV’s packaged genomes?

Objectives

  • Load a reference genome from a local FASTA file.
  • Add a gene annotation track from a local BED file.
  • Explain why loading a genome from a FASTA file alone does not give you gene names or a cytoband ideogram.

The rest of this lesson uses your own local copy of chromosome 1 rather than data hosted on the IGV server, so from here on you will not need an internet connection. This episode uses files from the igvData folder you downloaded in Setup.

Clear out the previous session


Select File > New Session to clear the tracks and genome loaded in the previous episode.

Load a genome from a FASTA file


Select Genomes > Load Genome from File… (note: this is the Genomes menu, not the File menu), then browse to igvData/genome/ and open chr1.fasta. This file contains chromosome 1 from human genome build hg18.

IGV Genomes > Load Genome from File dialog
Loading a genome from a local FASTA file via the Genomes menu.

Notice that there is now no gene track and no cytoband ideogram in the genome ruler. IGV’s hosted genomes package a reference sequence together with a default gene annotation and cytoband data, but here you loaded only the FASTA sequence — so IGV has nothing else to show yet. You can still zoom in and out and enter numeric coordinates, but you cannot yet jump to a locus by gene name, because IGV does not know where any genes are.

Add a gene annotation track


Select File > Load from File… (note: this time it is the File menu), and open refSeq_chr1.bed from igvData/genome/.

Now you can jump to a locus by typing the name of a gene on chromosome 1 into the search box, for example CAP9.

Challenge

Jump to a gene by name

Before loading refSeq_chr1.bed, try typing a gene name (e.g. CAP9) into the search box and clicking Go. What happens? Now load refSeq_chr1.bed and try again.

Before the BED file is loaded, IGV has no record of where any genes are located, so searching by gene name fails (or is silently ignored) — you can only navigate using numeric coordinates. After loading refSeq_chr1.bed, IGV can match the gene name against the annotation track and jump straight to it.

Callout

Where do gene annotation files come from?

The refSeq_chr1.bed file used here was generated from the UCSC Table Browser, a web tool for retrieving data associated with a genome assembly (gene models, regulatory regions, and more) as a downloadable file. This is a common way to obtain a gene annotation track for a genome that is not already bundled with one.

Note that, unlike the gene track, the cytoband ideogram cannot be loaded separately — it is only available for genomes that package it in already.

Key Points
  • Load a custom genome sequence with Genomes > Load Genome from File…; load additional annotation tracks (genes, features) with File > Load from File….
  • A genome loaded from a bare FASTA file has no gene names or cytoband ideogram until you add that information yourself as separate tracks.

Content from Viewing Alignments and SNPs


Last updated on 2026-09-03 | Edit this page

Estimated time: 45 minutes

Overview

Questions

  • How do I inspect individual sequencing reads that support a candidate variant?
  • How can I tell a real SNP apart from a technical artifact?
  • What does a BAM alignment record actually contain?

Objectives

  • Load aligned sequencing reads from a BAM file alongside a BED file of candidate variant sites.
  • Read mismatched bases, coverage, and allele counts from an alignment track.
  • Sort and color aligned reads to help distinguish real variants from artifacts.
  • Use BLAT to check whether a suspicious signal is a genuine mapping or a multi-mapping artifact.

Background: paired-end sequencing and the BAM format


The alignment file you will load in this episode comes from paired-end Illumina sequencing: each DNA fragment is read from both ends, producing two reads (Read 1 and Read 2) separated by an unsequenced gap. The distance between the two reads’ outer edges is the insert size.

Diagram of single-end and paired-end sequencing reads aligned to a reference sequence
Single-end vs. paired-end reads, and the relationship between read length, inner distance, and insert size.

Aligned reads are stored in SAM/BAM format (Sequence Alignment/Binary Alignment Map — BAM is just a compressed, indexed binary encoding of SAM). Each alignment record includes the read name, its mapping position, a mapping quality score, a CIGAR string describing matches/insertions/ deletions along the alignment, information about its paired mate, and the read’s sequence and per-base quality scores.

Annotated example of SAM format fields
An example SAM file: a header describing the reference, followed by one alignment record per line, with columns for read name, position, mapping quality, CIGAR string, mate info, and sequence.

You do not need to read SAM/BAM records by hand to use IGV — this is what IGV’s alignment track visualizes for you — but recognizing these terms (insert size, mapping quality, CIGAR) will help you make sense of the popups and sort/color options used throughout this episode.

Reference genome


Make sure the reference genome is still set to the one you loaded in the previous episode: select chr1.fasta from the genome drop-down menu if needed.

Load the alignment and candidate SNP data


Select File > Load from File…, navigate to igvData/snps/, and open:

  • snp_calls.bed — a BED file marking two candidate SNP loci, and
  • NA12878.SLX.sample.bam — a small sample alignment file.
Callout

Loading a BAM file’s index

IGV automatically finds a BAM file’s index (.bai) as long as it is named correctly (e.g. NA12878.SLX.sample.bam.bai) and sits in the same folder as the BAM file. Do not load the .bai file directly — only load the .bam file.


Type snp1 into the search box and click Go.

IGV showing the loaded alignment track and search box with snp1
Loading the SNP BED file and BAM alignment track, then navigating to a named candidate SNP locus.

You should see individual aligned reads stacked as grey bars, with a red or blue bar above them summarizing the coverage and any mismatches at each position (the coverage track).

Sort reads by base to spot a real mismatch


First, click and drag to position the mismatched bases between the two vertical center guidelines. Then right-click (Mac: control-click) anywhere in the aligned reads and select Sort alignments by > base.

Mouse over (or click) the colored bar in the coverage track to see the exact allele counts and frequencies at that position.

Sorted alignments and allele count popup
Sorting reads by base and inspecting allele counts in the coverage track.

Observe the distribution of mismatches at this locus, and the lack of other mismatches nearby. This pattern — a consistent mismatch across many reads, at roughly the frequency you would expect for a heterozygous site, with no other noise around it — is a good sign of a real heterozygous SNP.

Challenge

Compare the two candidate SNPs

Go to the locus of the second candidate SNP by typing snp2 into the search box and clicking Go. Compare what you see to snp1 — in particular, look at the color/brightness of the mismatched bases (a fainter color indicates a lower base quality). Right-click the aligned reads and toggle Shade base by quality off and on to compare.

At snp2, many of the mismatched bases are drawn faintly, meaning IGV is shading them by low base call quality. Turning off Shade base by quality makes every mismatch look equally solid, which can be misleading — with shading on, it becomes clear that this locus is dominated by low-quality base calls rather than a strong, consistent signal like at snp1. This is a warning sign that snp2 may not be a real variant.

Sort and color reads by strand


Right-click anywhere in the aligned reads and select Sort alignments by > read strand, then right-click again and select Color alignments by > read strand.

Alignments colored and sorted by read strand
Reads sorted and colored by strand: an even split between the two colors is expected for a non-strand-specific library.

Observe where the mismatches fall relative to strand. If a sequencing library was not strand-specific, you would expect roughly a 50/50 split of reads on each strand, and a real variant should appear consistently on reads from both strands. If a mismatch only ever appears on reads from one strand, that is a red flag for a strand-specific artifact rather than a genuine variant.

Challenge

Decide: real SNP or artifact?

Using strand sorting/coloring, examine snp2 again. Given that this sequencing library was not strand-preserving (so you would expect the mismatch on both strands roughly equally), what do you conclude about snp2?

If the mismatched bases at snp2 are concentrated on reads from only one strand, despite the library not being strand-specific, this locus is likely a false positive rather than a real heterozygous SNP — combined with the low base quality observed earlier, there are now two independent pieces of evidence against it being real.

Using BLAT to check a suspicious signal


Sorting and coloring reads tells you a lot, but sometimes a coverage peak or a cluster of mismatches is suspicious for a different reason: the reads underneath it might not belong there at all. BLAT (Tools > BLAT…) lets you take a read’s sequence (or any feature, or a sequence you type in) and search a BLAT server for alternative places it could align in the genome.

A narrow coverage peak circled for investigation
An unusually narrow coverage spike — worth checking whether it is a unique alignment or a mapping artifact.

Right-click on a read at the locus you want to check and select BLAT read sequence.

Right-click context menu with Blat read sequence highlighted
Right-click a read and select “Blat read sequence” from the alignment track’s context menu.

BLAT returns every place in the genome the sequence aligns well, ranked by score.

BLAT results table showing many alternative alignments with similar scores
BLAT results for one read: many alternative alignments across different chromosomes with similar scores.

If BLAT returns one clearly best-scoring hit at the expected locus, the alignment is trustworthy. If it instead returns many alternative alignments with similar scores scattered across the genome — as in the example above — the read comes from a repetitive sequence that maps almost equally well to many locations, and the signal at your original locus should be treated with suspicion rather than taken as strong evidence for a variant.

Challenge

When would BLAT change your conclusion?

You already found two independent warning signs against snp2 being a real variant (low base quality, strand bias). Suppose BLAT on a snp2 read had instead returned dozens of equally good alternative alignments elsewhere in the genome. Would that change your confidence, and why?

It would add a third, independent line of evidence against snp2: reads that multi-map almost equally well to many locations cannot be confidently placed at any single locus, so any “variant” called from them is likely an artifact of ambiguous mapping rather than a true difference from the reference genome at that specific position.

Callout

Watch: IGV Sequencing Data Basics

Key Points
  • Aligned reads are stored in SAM/BAM format; recognizing terms like insert size, mapping quality, and CIGAR string helps you interpret what IGV shows you.
  • Load a BAM file with File > Load from File…; IGV finds its .bai index automatically as long as it is named correctly and kept alongside the BAM file.
  • Sorting and coloring aligned reads (by base, by base quality shading, or by read strand) helps you distinguish a real variant from a sequencing or alignment artifact.
  • Warning signs of a false-positive variant include low base quality and a mismatch that only appears on reads from one strand when it should not.
  • Tools > BLAT… (or right-click a read and choose BLAT read sequence) checks whether a read aligns uniquely or is a multi-mapping artifact from a repetitive region.

Content from Precomputing Coverage with igvtools


Last updated on 2026-09-03 | Edit this page

Estimated time: 25 minutes

Overview

Questions

  • Why does my coverage track go blank when I zoom out?
  • How do I precompute coverage data so it is visible at any zoom level?

Objectives

  • Explain why coverage disappears when zooming out on a large BAM file.
  • Use igvtools to precompute a coverage summary (TDF) file.
  • Associate a precomputed coverage file with an alignment track.

This episode assumes you already have loaded, from the previous episodes:

  • the reference genome chr1.fasta, and
  • the alignment file igvData/snps/NA12878.SLX.sample.bam.

The problem: no coverage at low zoom levels


Zoom all the way out by clicking the leftmost tick on the “railroad track” zoom widget. Notice that the coverage track for NA12878.SLX.sample.bam now shows no data at all, just a message like “Zoom in to see coverage.”

Zoomed-out view showing no coverage data, and the igvtools Run dialog
No coverage is shown at low zoom levels until it has been precomputed.

By default, IGV computes coverage on the fly from the reads currently visible in a BAM file. At low zoom levels this would mean scanning huge numbers of reads just to draw a rough summary, so IGV instead only computes coverage once you are zoomed in far enough that this is fast. To see accurate coverage at any zoom level, you need to precompute it once, ahead of time, using the igvtools Count function.

Precompute coverage with igvtools


Select Tools > Run igvtools…, then in the dialog:

  1. Select Count from the Command drop-down menu.
  2. Set the Input File to NA12878.SLX.sample.bam in igvData/snps/. The Output File will automatically be set to the same folder and file name, with a .tdf suffix added.
  3. Keep the defaults for all other values, and click Run.

Wait until the Messages area shows “Done”, then click Close.

Associate the TDF file with the coverage track


Right-click (Mac: control-click) anywhere on the coverage track for NA12878.SLX.sample.bam in the IGV window, and select Load pre-computed coverage data…. Browse to igvData/snps/ and select the new NA12878.SLX.sample.bam.tdf file.

Loading precomputed coverage data and the resulting coverage spikes
Associating the newly created TDF file with the coverage track, revealing three spikes of coverage.

You should now see three spikes of coverage across the whole chromosome. This sample BAM file was deliberately stripped down for the workshop and only contains reads in these three regions — the leftmost spike corresponds to the snp1 locus from the previous episode.

Challenge

Zoom back in

Zoom in on the leftmost coverage spike until you reach base-pair resolution. What locus do you land on?

Zooming into the leftmost spike brings you back to the snp1 locus explored in Viewing Alignments and SNPs — the precomputed coverage track and the on-the-fly coverage you saw there are showing the same underlying reads, just computed differently depending on zoom level.

Key Points
  • IGV computes BAM coverage on the fly at high zoom levels, but does not attempt this at low zoom levels for performance reasons.
  • Use Tools > Run igvtools… > Count to precompute a .tdf coverage summary file for a BAM file.
  • Attach a precomputed .tdf file to a coverage track via right-click > Load pre-computed coverage data….

Content from Viewing RNA-seq Data


Last updated on 2026-09-03 | Edit this page

Estimated time: 40 minutes

Overview

Questions

  • How do I see which exons are spliced together in RNA-seq data?
  • How do I compare splicing patterns between two samples or tissues?
  • Why do RNA-seq reads look different from the DNA reads in the previous episode when aligned in IGV?

Objectives

  • Enable the splice junction track for RNA-seq alignment data.
  • Load RNA-seq data hosted on the IGV server for two tissues.
  • Interpret coverage and splice junction tracks to identify alternative splicing.
  • Generate and interpret a Sashimi plot.

Background: why RNA-seq alignments look “split”


RNA-seq sequences mature mRNA, not genomic DNA. By the time a gene’s pre-mRNA becomes mRNA, its introns have already been spliced out, so the short reads generated from it are sampled from a continuous stretch of joined-together exons, with no intron sequence in between.

Diagram of pre-mRNA being spliced into mRNA, with short reads sampled from the spliced transcript
Pre-mRNA is spliced into mRNA by removing introns and joining exons; short sequencing reads are then generated from this exon-only mRNA.

The reference genome, however, still contains the introns. So when an RNA-seq read happens to span two exons, aligning it back to the genome means the aligner has to split that one read into two pieces with a gap between them — the gap corresponds to the intron that was removed from the mRNA. This is exactly the “read spanning a splice junction” you will see represented as a gapped alignment, and later as an arc in the splice junction track.

Diagram extending the splicing illustration with an arrow showing the resulting gapped alignment in IGV
The same splicing diagram, now showing how a read spanning an exon-exon boundary appears as a gapped, split alignment when mapped back onto the genomic sequence in IGV.

(Diagram source: Wikipedia, RNA-Seq § Gene expression.)

This episode uses example RNA-seq data hosted on the IGV server, so you will need an internet connection.

Set preferences to show splice junctions


Select View > Preferences…, then the Alignments tab, and check Splice Junction Track under “On initial load show”.

Load RNA-seq data


Select Human hg19 from the genome drop-down menu. Then select File > Load from Server…, open the Tutorials menu, check the box next to RNA-Seq (Body Map), and click OK.

IGV Preferences dialog and Load from Server dialog for RNA-seq data
Enabling the splice junction track in preferences, then loading the RNA-Seq (Body Map) tutorial dataset.

This loads coverage, alignment, and splice junction tracks for two tissues: heart and liver.

Jump to a gene and explore isoforms


Type SLC25A3 into the search box and click Go.

SLC25A3 coverage, junctions, and squished RefSeq gene track
Navigating to SLC25A3 and viewing separate coverage and junction tracks per tissue; squishing the gene track reveals multiple isoforms.

You should see, for each tissue:

  • a coverage track (how many reads cover each position), and
  • a junctions track (arcs connecting exons that were spliced together in at least one read).

Right-click the RefSeq Genes track and select Squished to reveal multiple isoforms of the gene on separate, compact rows.

Look for evidence of alternative splicing


Zoom in on the first three exons by clicking and dragging in the ruler over that region. Compare which isoforms in the RefSeq track are consistent with the coverage and junction pattern seen in each tissue.

Challenge

Spot the difference between tissues

Looking at the heart and liver coverage/junction tracks side by side around the first few exons, can you find a region where one tissue shows a peak of coverage (an exon being used) that the other tissue does not?

Around the first few exons of SLC25A3, one tissue shows a small “bump” of coverage — indicating a short exon or extra exonic sequence — that is absent, or much lower, in the other tissue. This is a sign of a tissue-specific alternatively spliced exon: the same gene locus produces different transcript isoforms depending on which tissue the RNA was sequenced from.

Zoom back out to view the whole gene again using the back button in the command bar.

Sashimi plots


A Sashimi plot is a specialized view for RNA-seq splicing that combines coverage and junction arcs into a single, cleaner visualization. Right-click over a junction track (or the alignments) and select Sashimi Plot. If prompted to select alignment tracks, verify that both heart and liver are checked, and click OK.

Right-click menu for opening a Sashimi Plot, with a dialog to select the heart and liver alignment tracks
Comparing the alternative splicing pattern between tissues, then opening a Sashimi plot from the right-click menu.
Sashimi plot for heart and liver samples showing junction arcs and coverage peaks
The resulting Sashimi plot: arcs represent reads spanning exon junctions, and peaks represent exon coverage, for two tissues.

In a Sashimi plot:

  • Arcs represent reads spanning an exon-exon junction; the number on the arc is the number of supporting reads.
  • Peaks represent per-base exon coverage.

Filter out low-count splicing events

Real datasets often contain many low-count, spurious-looking junctions. Right-click over one track (e.g. the red/heart track) and select Set Junction Coverage Min. Enter 50 and click OK. Repeat for the other track (e.g. blue/liver).

Compare this filtered view to the original, unfiltered one — filtering makes it much easier to see the dominant, well-supported splicing pattern in each tissue, without being distracted by rare junctions.

Challenge

Confirm alternative splicing of the third exon

Zoom in on the 5’ end of the gene (click “+” on the zoom widget a couple of times, then click-and-drag the tracks to bring the first three exons into view). Compare the junction arcs for heart and liver around the third exon.

One tissue’s junction arcs skip over the third exon entirely (an arc jumps directly from exon 2 to exon 4), while the other tissue’s arcs include a junction into and out of exon 3. This is direct evidence, at the level of individual spliced reads, that exon 3 is alternatively spliced (included in one tissue’s dominant transcript, but skipped in the other’s).

Callout

Watch: IGV RNA-seq Data Basics and Advanced

Key Points
  • RNA-seq reads come from spliced mRNA (introns already removed), so a read spanning two exons aligns back to the intron-containing genome as a gapped, “split” alignment.
  • Enable the splice junction track (via View > Preferences > Alignments) to see, as arcs, which exons are spliced together in RNA-seq data.
  • Compare coverage and junction tracks across samples or tissues to spot alternative splicing.
  • A Sashimi plot combines exon coverage (peaks) and junction reads (arcs) in one view, and read-count filtering helps focus on well-supported junctions.

Content from Viewing Variants and Genotypes


Last updated on 2026-09-03 | Edit this page

Estimated time: 35 minutes

Overview

Questions

  • How does IGV display variants and genotypes from a VCF file?
  • How can I compare variant patterns across groups of samples, such as populations?

Objectives

  • Load a multi-sample VCF file together with its sample metadata.
  • Distinguish the variant sites panel from the per-sample genotypes panel.
  • Interpret the allele and genotype color coding IGV uses.
  • Group and compare genotypes across sample populations.

Why this dataset?


The VCF session you will load contains variant calls on human chromosome 22 for about 850 people sampled from populations around the world — a subset of the 1000 Genomes Project dataset.

Chromosome 22 and a world map marking sampled populations
The example dataset: variant calls on chromosome 22 for roughly 850 people from populations around the world.

Zoomed in on the APOL1 gene, one particular marker, rs9622363, tells a striking evolutionary story.

APOL1 background slide: African-specific variant associated with kidney disease and trypanolytic activity
Background on the APOL1 variant explored later in this episode: it is found almost exclusively on African chromosomes and is strongly associated with kidney disease.

APOL1 encodes a protein that can lyse the parasite that causes African sleeping sickness, and coding variants in the gene — found almost exclusively on chromosomes of African ancestry — strengthen that protective effect. But the same variants come at a cost: Genovese and colleagues showed they are also strongly associated with elevated rates of kidney disease in African Americans (Genovese et al., “Association of Trypanolytic ApoL1 Variants with Kidney Disease in African Americans,” Science, 2010). This is exactly the kind of population-specific signal you will be able to spot for yourself later in this episode by grouping genotypes by population.

Load the session


This exercise uses a pre-built IGV session that loads a population VCF file together with sample attribute information (population and sex for each sample). Select File > Open Session…, navigate to igvData/vcf/, and open vcf_session.xml.

Observe the variant and genotype panels


IGV splits VCF data into two panels:

  • a variant sites panel (one row) showing where variants are located along the genome, and
  • a genotypes panel (one row per sample) showing each sample’s genotype at every variant site.
IGV VCF session with variant sites, genotypes, and sample info panel
A loaded VCF session showing the variant sites panel, per-sample genotypes panel, and sample information color bar.

Hover over a variant site or a genotype cell to see its details in a popup. (If you changed the popup behavior earlier to “on click”, click instead of hovering.)

Both panels use color to summarize a lot of information at a glance:

  • In the variant sites panel, blue marks the reference allele and red marks the alternate allele at each site.

    Variant sites colored blue for reference allele and red for alternate allele
    Zoomed-in variant sites: blue squares are the reference allele, red squares are the alternate allele.
  • In the genotypes panel, cyan marks a homozygous (alternate/alternate) genotype, blue marks heterozygous (reference/alternate), and grey marks homozygous reference.

    Genotypes colored cyan for homozygous, blue for heterozygous, grey for reference
    Zoomed-in genotypes: cyan for homozygous alternate, blue for heterozygous, grey for homozygous reference.

A narrow sample information column to the left of the genotypes uses color to represent each sample’s metadata (e.g. population). Samples sharing the same value are shown in the same color. Try clicking on the sample information column headers to sort samples by an attribute.

Callout

Where does the sample information come from?

Sample metadata is defined in an auxiliary tab-delimited file, separate from the VCF itself: the first row names the metadata columns (e.g. sample, pop, super_pop, gender), and the first column holds sample names that must exactly match the sample names in the VCF. The pre-built session you loaded already references this file, but you can add the same kind of sample-information file to your own VCF tracks.

Tab-delimited sample information file with sample, pop, super_pop, and gender columns
An example sample-information file: one row per sample, with a sample column matching the VCF’s sample names and additional metadata columns.

Highlight variants in a gene of interest


Type APOL1:S342G into the search box and click Go to jump to a specific amino-acid-level variant in the APOL1 gene.

Right-click over the genotypes track and select Display Mode: Squished to make room for more samples on screen at once.

Group samples by population


Right-click over the genotypes track again, select Group By…, and choose the super_pop attribute.

Group By dialog and genotypes grouped by super population
Grouping genotype rows by the “super_pop” sample attribute to compare population groups.

Use the scrollbar to scroll down through all the population groups.

Challenge

Compare variant frequency across populations

At the APOL1:S342G locus, scroll through the population groups you just created. Is this variant equally common in every population group?

No — the variants at this locus are not evenly distributed. They are absent, or nearly absent, in some population groups, and much more prevalent in others, consistent with the African-specific selective history of APOL1 variants described earlier in this episode. This kind of population-stratified pattern is common for variants under different selective pressures (or genetic drift) in different ancestral populations, and grouping genotypes by population makes this kind of pattern immediately visible, without needing to compute allele frequencies separately for each group.

Callout

Coloring genotypes

The genotype track’s right-click menu also offers Color By > Allele Frequency or Allele Fraction, and options to sort by genotype, sample name, depth, or quality — useful alternatives or complements to grouping by a sample attribute.

Callout

Watch: IGV VCF Basics

Key Points
  • A VCF track in IGV has a variant sites panel and a per-sample genotypes panel; a sample information color bar (driven by an auxiliary tab-delimited file) can show sample metadata such as population.
  • Variant sites are colored blue (reference allele) / red (alternate allele); genotypes are colored grey (homozygous reference) / blue (heterozygous) / cyan (homozygous alternate).
  • Search for a variant using gene:protein-change syntax (e.g. APOL1:S342G) as well as by coordinate or gene name.
  • Grouping genotypes by a sample attribute (e.g. population) makes it easy to compare variant patterns across groups of samples.

Content from Viewing Structural Variants


Last updated on 2026-09-03 | Edit this page

Estimated time: 35 minutes

Overview

Questions

  • How can paired-end reads reveal deletions, fusions, and inversions?
  • How do I confirm a candidate structural variant in IGV?

Objectives

  • Explain how paired-end insert size and pair orientation can reveal structural variants without a dedicated SV caller.
  • Recognize the alignment signatures of a deletion and an inter-chromosomal fusion.
  • Use View as pairs to confirm an inversion breakpoint in real sequencing data.

Background: insert size and pair orientation


For paired-end sequencing, each DNA fragment is read from both ends. When a read pair aligns to the reference genome, IGV can measure the inferred insert size — the distance between the outer edges of the two aligned mates — and compare it to the expected insert size for the sequencing library. It can also check whether the pair’s orientation (which strand each mate aligns to) matches what a normal, non-rearranged fragment should look like.

Diagram distinguishing insert size from inferred insert size
A read pair’s insert size (measured on the original fragment) versus its inferred insert size (measured after aligning both mates back to the reference).

Differences between the expected and observed insert size or orientation are exactly the kind of evidence dedicated structural variant callers look for — and you can see the same evidence directly in IGV, without running a caller at all.

Detecting deletions


If the subject genome has a deletion relative to the reference, a read pair that happens to span the deleted region will still align its two mates correctly, but the distance between them on the reference will be larger than expected — because the deleted bases are missing from the subject, but still present in the reference coordinates the mates are placed in.

IGV colors pairs with a larger-than-expected inferred insert size red, making them easy to spot:

Diagram showing read pairs colored red when their inferred insert size exceeds the expected value
Pairs with a larger-than-expected inferred insert size are colored red.

In a real dataset, this shows up as a cluster of red pairs exactly at the deletion’s two breakpoints, together with a visible drop in coverage between them:

IGV split-screen view showing red discordant pairs and a coverage drop at a deletion breakpoint
A real deletion: red discordant pairs and a coverage drop at both breakpoints (NA12878, chr3, split-screen view).

Detecting inter-chromosomal fusions


A fusion joins sequence from two different chromosomes together. Reads sequenced across the fusion junction have one mate on each original chromosome. IGV’s Color alignments by > read strand/mate chromosome option colors each read by the chromosome its mate is on, using a fixed color per chromosome:

Chromosome color legend used for mate-chromosome coloring
Each read is colored by the chromosome its mate aligns to; IGV assigns a fixed color per chromosome.

In a real tumor/normal comparison, reads colored by an unexpected chromosome cluster right at the fusion breakpoint in the tumor sample, with no such evidence in the matched normal sample:

Split-screen view of a chr1/chr6 fusion, tumor sample showing discordant mate-chromosome coloring, normal sample showing none
A real inter-chromosomal fusion: reads near a chr1/chr6 breakpoint colored by their mate’s chromosome, visible only in the tumor sample.

Detecting inversions


An inversion flips the orientation of a segment of the genome between two breakpoints. A read pair with one mate inside the inverted segment and one mate outside it no longer faces its mate in the usual way — instead of the normal “facing inward” orientation, both mates end up aligned to the same strand (both forward, or both reverse). IGV’s pair-orientation coloring highlights these same-strand pairs, so they stand out clearly at each inversion breakpoint:

Diagram showing forward-forward and reverse-reverse discordant pair orientations at the two breakpoints of an inversion
At an inversion’s two breakpoints, discordantly-oriented pairs are colored to stand out from normally-oriented (grey) pairs.

Here is a real inversion, viewed at base-pair-scale resolution across the APP gene: a cluster of discordantly-oriented reads (colored teal or dark blue) and a visible drop in coverage sit right at each breakpoint.

IGV view of an inversion at the APP gene showing discordant read orientation and coverage drops at both breakpoints
A real inversion in the APP gene: discordantly-oriented reads and a coverage drop at both breakpoints.

Hands-on: confirm an inversion yourself


The workshop data includes a second sample sequenced across this same region of chromosome 21. Select File > Open Session…, navigate to igvData/svs/, and open svs_session.xml. This loads the hg38_chr21 genome, the alignment file NA19240.bam, and jumps straight to chr21:26,000,000-26,004,000 — the APP locus.

Callout

Who is NA19240?

NA19240 is a well-characterized human lymphoblastoid cell line (a B-lymphocyte line immortalized with Epstein-Barr virus) from a Yoruba woman from Ibadan, Nigeria. She is the child in one of the trios (alongside her parents, NA19238 and NA19239) sequenced by the International HapMap Project and later the 1000 Genomes Project. Because her genome has been sequenced and validated so extensively — including as a parent-child trio, which lets structural variant calls be cross-checked for Mendelian consistency — NA19240 is widely reused as a reference/benchmarking sample across genomics and sequencing-technology studies, including this one.

Right-click on the alignments and select View as pairs.

Right-click context menu with View as pairs highlighted
Right-click the alignments and select “View as pairs”.

Once paired, look for the same signature you just saw in the demo: a cluster of discordantly-colored, same-strand read pairs, roughly in the middle of the visible region.

IGV view of NA19240.bam at the APP locus after enabling View as pairs, showing a cluster of discordant reads
The resulting view: a cluster of discordantly-oriented reads confirms an inversion breakpoint.
Challenge

What confirms this is an inversion, and not a deletion?

Both a deletion and an inversion can produce a visible drop in coverage at their breakpoints. What additional piece of evidence, visible in this view, tells you this is specifically an inversion rather than a deletion?

The coloring/orientation of the discordant reads. A deletion produces pairs with a larger-than-expected insert size but a normal forward/reverse orientation (colored red in this deck’s convention). An inversion instead produces pairs where both mates end up on the same strand relative to the reference (colored teal or dark blue here) — a orientation change, not just a distance change. Seeing same-strand pairs clustered at the breakpoints, rather than red long-insert pairs, is what points specifically to an inversion.

Callout

This is what SV callers automate

Dedicated structural variant callers (e.g. Delly, Manta, Lumpy) formalize exactly this kind of paired-end evidence — insert size, orientation, and split reads — across a whole genome, and output the results as a VCF you could load and view the same way you did in the previous episode. What you just did by eye for one locus is the same signal those tools search for everywhere.

Key Points
  • IGV can color read pairs by inferred insert size or by orientation, which reveals deletions, insertions, inter-chromosomal fusions, and inversions without running a dedicated SV caller.
  • A deletion shows up as pairs with a larger-than-expected insert size (colored red) and a coverage drop between two breakpoints.
  • A fusion shows up as reads colored by an unexpected mate chromosome, clustered at the fusion junction.
  • An inversion shows up as same-strand (forward-forward or reverse-reverse) discordant pairs at its two breakpoints; right-click View as pairs to see this clearly.

Content from Viewing Long-Read Sequencing Data


Last updated on 2026-09-04 | Edit this page

Estimated time: 30 minutes

Overview

Questions

  • How does IGV handle long reads differently from short Illumina reads?
  • How do I tell real signal from raw sequencing error in noisy long reads?
  • How can long reads and read phasing help interpret structural variants and repeat expansions?
  • Can IGV view a file that lives on a remote server, without downloading it first?

Objectives

  • Explain how long-read sequencing (PacBio, Oxford Nanopore) differs from short-read sequencing in IGV.
  • Use IGV’s alignment preferences to filter raw long-read errors and reveal consensus signal.
  • Interpret mapping quality (MAPQ) when assessing a long-read alignment.
  • Recognize split reads as evidence for structural variants in long-read data.
  • Load remote BAM/CRAM files directly from a public archive and use linked supplementary alignments and strand coloring to confirm an inversion.
  • Use haplotype-tag coloring to visualize phased variants, including assessing whether a structural variant is heterozygous or homozygous.
Callout

This episode is optional

This is a supplementary episode — cover it only if time allows. It does not use the workshop’s igvData files; instead it walks through published examples and one live hands-on exercise using public data streamed directly from a remote server (which needs an internet connection).

Background: what makes long reads different


Illumina (“short-read”) sequencing produces reads a few hundred base pairs long with a very low per-base error rate. Third-generation platforms — PacBio and Oxford Nanopore — instead produce long reads, roughly 10,000 to 100,000 base pairs, at the cost of a much higher raw error rate in each individual read. With enough coverage, those per-read errors average out into a highly accurate consensus, but any single long read, viewed on its own in IGV, looks considerably noisier than a short Illumina read.

Filtering raw errors to see the consensus signal


Because of this, IGV includes alignment display options specifically aimed at long reads: filtering out raw single-read errors so the underlying consensus signal is easier to see, and extended support for split alignments (linking a read’s split parts together, using the SA BAM tag).

Compare the same 10 kb region of chromosome 10, sequenced with both PacBio and Illumina:

PacBio and Illumina alignments at the same locus, PacBio showing many more small mismatches/indels
The same locus sequenced with PacBio (long reads, top) and Illumina (short reads, bottom). The PacBio track is dense with small colored mismatch/indel marks — raw single-read errors — that the Illumina track does not show.

Most of that PacBio noise is small indels — a single insertion or deletion of a few bases in an individual read, not a real biological difference from the reference. Hiding indels below a chosen size (and enabling quick consensus mode, which suppresses a mismatch unless it is shared by enough reads to look real) filters this out:

PacBio alignments with small indels filtered out, closely resembling the Illumina track
The same PacBio track with small indels hidden: the reads now look much closer to the clean Illumina track above it.

The same idea applies to single-base mismatches. With quick consensus mode enabled, only mismatches that recur consistently across reads (a real variant) are still shown; one-off raw sequencing errors are suppressed:

PacBio alignments after enabling quick consensus mode, showing only consistent mismatches
Quick consensus mode applied to single-nucleotide mismatches: only consistent, likely-real mismatches remain visible.

These options live under View > Preferences… > Alignments:

IGV Preferences dialog, Alignments tab, with indel and quick-consensus-mode options highlighted
The Alignments tab of IGV’s Preferences dialog: indel labeling/hiding thresholds and Quick consensus mode.
Challenge

Why filter at all?

If quick consensus mode and indel-hiding can suppress real, rare variants along with sequencing noise, why would you ever want to turn them on?

They trade a small risk of hiding a genuine low-frequency variant for a much larger gain in readability: without filtering, a long-read track can be so dense with single-read noise that a real, well-supported signal is hard to distinguish by eye. Filtering is a first-pass visual aid — for any locus you are seriously evaluating, you would still want to check the unfiltered view and the read-level evidence before ruling a variant real or an artifact.

Real examples: reviewing nanopore BAM files


The examples below are adapted from Oxford Nanopore’s EPI2ME team’s guide, “A guide to reviewing BAM files” — reproduced here with attribution; the screenshots in this section remain © Oxford Nanopore Technologies and are not covered by this lesson’s CC-BY license.

Before loading any BAM file, two things matter regardless of sequencing platform: it must be aligned against the same reference genome you have selected in IGV (mismatched coordinates can misdisplay data or crash IGV), and it should be sorted and indexed first.

Mapping quality (MAPQ)

Every aligned read carries a MAPQ score (0–255) reflecting how confident the aligner is that the read belongs at that exact genomic location — higher is more confident. Clicking a read in IGV shows its MAPQ directly:

IGV read-details popup showing read length, MAPQ score, and CIGAR string for a nanopore read
A single long read’s details: read length ~17.9 kb, MAPQ 11, and a CIGAR string full of insertion/deletion operations — typical of nanopore’s higher per-base error rate.

Clicking the coverage track instead shows the allele counts at that position — here, a heterozygous site with 11 reads (61%) supporting the reference base and 7 reads (39%) supporting an alternate base:

IGV coverage and alignment view showing two heterozygous SNVs with a VCF track above
The variant sites and coverage track for the same locus: two heterozygous SNVs (red-highlighted), each recorded in the accompanying VCF.

A MAPQ in the low single digits (as opposed to 60, a common “fully confident” ceiling) is a warning sign: reads that cannot be confidently placed at a unique location make any variant called from them less trustworthy — the same caution you applied to BLAT results in Viewing Alignments and SNPs.

Split reads as evidence for structural variants

A single long read spanning a structural variant breakpoint does not need a second read to reveal it (unlike the paired-end evidence used in Viewing Structural Variants) — the read itself can be split: part of it aligns on one side of the breakpoint, part on the other. Sorting reads by length and looking for this pattern makes large events easy to spot. Here, a 6 kb deletion in a reference sample (called by the structural variant caller Sniffles2) is directly visible as reads that align partially, then resume on the far side of the deleted region — with a ClinVar annotation track confirming the deletion is a known clinically-relevant variant:

IGV view of a large deletion visible via split long reads, with a ClinVar VCF annotation track
A 6 kb deletion, directly visible as reads whose alignment is interrupted then resumes past the deleted region; a ClinVar track (blue bars) shows this variant is already clinically annotated.

Hands-on: find an inversion in public long-read data


You can try this yourself, on real public data, without downloading anything first. File > Load from URL… lets IGV stream just the bytes it needs directly from a remote server, the same way Load from Server… does for IGV’s own hosted datasets.

This example uses ultra-long Oxford Nanopore reads for HG002, the Ashkenazim trio son reference sample from the Genome in a Bottle (GIAB) Consortium, aligned to hg38 and hosted by NCBI.

  1. Select Human hg38 from the genome drop-down menu.
  2. Select File > Load from URL… and paste:

OUTPUT

https://ftp-trace.ncbi.nlm.nih.gov/giab/ftp/data/AshkenazimTrio/HG002_NA24385_son/Ultralong_OxfordNanopore/combined_2018-05-18/combined_2018-05-18.hg38.sorted.cram

IGV automatically finds the matching .crai index at the same URL — you do not need to load it separately. (The CRAM file itself is over 10 GB, but IGV only ever requests the small portion of it covering the region you are viewing.)

  1. Repeat File > Load from URL… for a second, independently-phased ultra-long nanopore dataset for the same sample, which you will use later in this section:

OUTPUT

https://ftp-trace.ncbi.nlm.nih.gov/giab/ftp/data/AshkenazimTrio/HG002_NA24385_son/UCSC_Ultralong_OxfordNanopore_Promethion/HG002_GRCh38_ONT-UL_UCSC_20200508.phased.bam

This file is much larger (its index alone is 52 MB), so this load step may take a little longer — but as before, IGV still only streams the region you actually view.

  1. Type chr20:10,804,515-10,811,999 into the search box and click Go.

At this zoom level you will see the same dense, indel-heavy raw signal described earlier in this episode — feel free to apply quick consensus mode here too. For now, focus only on the combined_2018-05-18 track (leave the second, ...phased.bam track alone; you will come back to it). To reveal the structural signal underneath the noise:

  1. Right-click the combined_2018-05-18 alignments and select Link supplementary alignments. Long reads spanning a structural variant breakpoint are often aligned as a primary alignment plus one or more separate supplementary alignments; this option draws all the pieces of one read on a single row, connected by a thin line — the direct long-read equivalent of the paired-end linking you used with View as pairs in the previous episode.
  2. Right-click the same track again and select Color alignments by > Read strand.
IGV view of HG002 ultra-long nanopore reads at a chr20 locus: the top track linked and colored by read strand showing a block of reverse-strand reads flanked by forward-strand reads, and a second, unstyled grey track below it
Ultra-long nanopore reads at chr20:10,804,515-10,811,999 (HG002): the top track (combined_2018-05-18), linked and colored by read strand, shows a block of reads switching from pink (forward) to purple (reverse) and back. The second track below it (the phased BAM) is still in its default, unstyled appearance at this point — you will style it in the next step.

Most reads across this region are colored pink (forward strand). A block of reads in the middle of the view, however, switches to purple (reverse strand) before switching back — exactly the same-strand-block-then-switch-back pattern you would expect if a segment of the genome were inverted between two nearby breakpoints, this time visible directly within single linked reads rather than needing separate discordant pairs.

Challenge

Where are the breakpoints?

Using the color switch as a guide, estimate the two breakpoints of this inversion from the view. (For comparison: this call was originally made by the long-read structural variant caller Sniffles2, the same tool used for the deletion example earlier in this episode.)

The breakpoints sit wherever the read coloring switches from pink to purple (the first breakpoint) and back from purple to pink (the second) — at roughly chr20:10,807,800 and chr20:10,808,450 in this data. You do not need Sniffles2 (or any variant caller) to find this — the same visual evidence a caller uses is directly visible once the reads are linked and colored by strand.

Is the inversion on one haplotype, or both?

Now turn to the second track you loaded, HG002_GRCh38_ONT-UL_UCSC_20200508.phased.bam. As the name suggests, its reads have already been assigned to a haplotype by a phasing tool, tagged with the HP BAM attribute — exactly the kind of tag described next.

  1. Right-click that track and select Color alignments by > Tag, then enter HP as the tag name. Optionally also Group alignments by > Tag with the same tag, to separate the two haplotypes into clearly divided blocks rather than an interleaved mix of colors.
Challenge

Heterozygous or homozygous?

Compare the two haplotype groups at the same breakpoints you identified above. Are reads showing evidence of the inversion confined to one haplotype, or do both haplotypes show it? What would each answer imply biologically?

If the discordant, split/strand-switching read pattern only appears in one haplotype group while the other haplotype’s reads look normal all the way through, that is evidence the inversion is heterozygous — present on only one of the two parental chromosomes. If both haplotype groups show the same discordant pattern, that would instead suggest a homozygous inversion, present on both chromosomes. This is exactly the kind of question phasing lets you answer that an unphased view cannot: an unphased track only tells you that some reads are discordant at this locus, not which chromosome copy they came from.

Haplotype phasing, more generally

The HP tag you just used works because long reads are long enough to span multiple nearby variants on the same physical DNA molecule, which lets phasing tools (such as WhatsHap or LongPhase) tag each read with which parental haplotype it belongs to. Coloring and sorting reads by HP groups them into their two haplotypes, making it easy to compare alleles side by side — useful well beyond structural variant zygosity. In this example — a short tandem repeat expansion in the FMR1 gene — one haplotype carries a much larger insertion than the other; grey reads could not be confidently assigned to either haplotype:

IGV view of reads grouped by haplotype tag showing different insertion sizes between the two alleles at an FMR1 repeat expansion
Reads colored and grouped by haplotype (HP) tag: one haplotype (top) carries a small insertion, the other (bottom) a much larger one, at a repeat expansion in FMR1.
Challenge

Why does phasing matter here?

Both alleles in the example above contain an insertion, just of different sizes. Why is knowing which reads belong to which haplotype useful, rather than just looking at the insertion sizes across all reads together?

Without phasing, you would see a mix of insertion sizes at the locus and have to guess whether that reflects two distinct alleles (e.g. one normal, one expanded) or a more continuous, noisy distribution. Grouping reads by haplotype turns that ambiguous mixture into two clean, separately interpretable groups — letting you say, for example, “this individual has one allele of roughly this repeat length and a second allele of roughly that length,” which is exactly the kind of call needed to assess conditions like Fragile X syndrome (associated with FMR1 repeat expansions).

Key Points
  • Long reads (PacBio, Oxford Nanopore) trade a higher per-read error rate for much greater length than short Illumina reads.
  • IGV’s quick consensus mode and indel-hiding thresholds (View > Preferences > Alignments) filter raw long-read noise so consensus signal is easier to see.
  • A read’s MAPQ score (0–255) reflects alignment confidence; low MAPQ is a warning sign for any variant called from that read.
  • File > Load from URL… streams a remote BAM/CRAM directly from a server (finding its index automatically), without downloading the whole file first.
  • Link supplementary alignments connects a single long read’s split pieces on one row; combined with Color alignments by > Read strand (pink = forward, purple = reverse), this reveals an inversion directly within individual reads.
  • A single long read can directly reveal a structural variant by splitting across its breakpoint, without needing paired-end evidence.
  • Coloring and grouping reads by haplotype (HP) tag separates two alleles for direct comparison, useful for phased variants and repeat expansions — and for telling a heterozygous structural variant (one haplotype) apart from a homozygous one (both haplotypes).

Content from Wrap Up


Last updated on 2026-09-03 | Edit this page

Estimated time: 10 minutes

Overview

Questions

  • What have I learned, and where can I go next with IGV?

Objectives

  • Summarize the IGV skills covered in this lesson.
  • Identify further IGV features and resources to explore independently.

What we covered


Across this lesson you have:

  • loaded reference genomes both from IGV’s hosted server and from your own local FASTA file,
  • navigated between whole-genome, chromosome, region, and base-pair resolution views,
  • combined two numeric tracks with a simple arithmetic operation,
  • inspected aligned sequencing reads and used sorting, coloring, and BLAT to distinguish a likely real SNP from a likely artifact,
  • precomputed coverage data with igvtools so it remains visible at every zoom level,
  • explored RNA-seq coverage, splice junctions, and Sashimi plots to identify alternative splicing between tissues, and
  • explored population variant data from a VCF file, including grouping genotypes by sample attributes, and
  • used paired-end insert size and pair orientation to confirm a structural variant (an inversion) by eye, and
  • if you covered the optional episode, filtered raw long-read errors and used mapping quality, split reads, and haplotype tags to interpret PacBio and Nanopore data.

These are the same core skills — load data, navigate, and use track-specific display options to interrogate a signal — that apply to almost any data type IGV can display.

Where to go next


  • Dedicated SV callers. The previous episode showed you the raw evidence by eye at one locus; tools like Delly, Manta, and Lumpy automate the same search genome-wide and output a VCF you can load and view exactly as you did in Viewing Variants and Genotypes.
  • igv.js and IGV-Web. If you want to embed genome browser views in a web page or share a specific view with collaborators without asking them to install anything, look at igv.js and IGV-Web, which share much of the same track and navigation model as the desktop application you used here.
  • Batch scripting. IGV supports batch scripts (Tools > Run Batch Script…) for automating repetitive tasks, such as generating snapshot images across many loci — useful if you find yourself repeating the same manual steps for many regions or samples.
  • The full IGV user guide. https://igv.org/doc/desktop/ documents every track type and display option, well beyond what a single workshop can cover.
  • Video tutorials. The IGV YouTube channel has short, focused videos on specific features (data navigation, sequencing data, VCF files, RNA-seq) if you would rather watch a feature demonstrated than read about it.
Callout

Feedback

If anything in this lesson was unclear, or you found a mistake, please let your instructor know — lessons like this one improve with feedback from the people who work through them.

Key Points
  • The core IGV workflow — load a genome and tracks, navigate to a region of interest, then use track-specific sort/color/display options — applies broadly across data types.
  • IGV has many features beyond this lesson, including a web-embeddable sibling (igv.js) and batch scripting.