返回 Skill 列表
extension
分类: 内容与媒体无需 API Key

bio-data-visualization-genome-tracks

使用pyGenomeTracks、Gviz和IGV创建基因组浏览器风格的可视化,显示多个数据轨道(覆盖度、峰值、基因)。当需要在特定基因座上以多条对齐轨道的形式可视化基因组数据时,请使用此方法。

person作者: jakexiaohubgithub

Version Compatibility

Reference examples tested with: GenomicRanges 1.54+, bedtools 2.31+, deepTools 3.5+

Before using code patterns, verify installed versions match. If versions differ:

  • Python: pip show <package> then help(module.function) to check signatures
  • R: packageVersion('<pkg>') then ?function_name to verify parameters
  • CLI: <tool> --version then <tool> --help to confirm flags

If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.

Genome Track Visualization

"Plot genomic data tracks" → Create stacked track visualizations of coverage, peaks, annotations, and signals across a genomic region.

  • Python: pyGenomeTracks, matplotlib with custom track panels
  • R: Gviz::plotTracks() (Bioconductor)

pyGenomeTracks (Python/CLI)

# Create tracks configuration file
cat > tracks.ini << 'EOF'
[bigwig]
file = coverage.bw
title = Coverage
height = 4
color = #4DBBD5
min_value = 0

[spacer]
height = 0.5

[peaks]
file = peaks.bed
title = Peaks
color = #E64B35
height = 2
labels = false

[spacer]
height = 0.5

[genes]
file = genes.gtf
title = Genes
height = 5
fontsize = 10
style = flybase
color = #3C5488

[x-axis]
EOF

# Generate plot
pyGenomeTracks --tracks tracks.ini --region chr1:1000000-2000000 \
    --outFileName tracks.png --dpi 150

pyGenomeTracks with Multiple Samples

[sample1 coverage]
file = sample1.bw
title = Sample 1
height = 3
color = #4DBBD5
min_value = 0
max_value = auto

[sample2 coverage]
file = sample2.bw
title = Sample 2
height = 3
color = #E64B35
min_value = 0
max_value = auto

[sample1 peaks]
file = sample1_peaks.narrowPeak
title = Sample 1 Peaks
color = #4DBBD5
height = 1
file_type = narrowPeak

[sample2 peaks]
file = sample2_peaks.narrowPeak
title = Sample 2 Peaks
color = #E64B35
height = 1
file_type = narrowPeak

pyGenomeTracks Programmatic

import pygenometracks.tracks as pygtk

tracks = pygtk.PlotTracks('tracks.ini', fig_width=40, dpi=150)
tracks.plot('output.png', 'chr1', 1000000, 2000000)

Gviz (R)

Goal: Create a stacked genome track visualization combining ideogram, coverage, peaks, and gene annotations.

Approach: Construct individual Gviz tracks (ideogram, genome axis, DataTrack from BigWig, AnnotationTrack from BED, GeneRegionTrack from TxDb), then render with plotTracks specifying the genomic region.

library(Gviz)
library(GenomicRanges)

# Genome axis
gtrack <- GenomeAxisTrack()

# Ideogram
itrack <- IdeogramTrack(genome = 'hg38', chromosome = 'chr1')

# Gene model
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene
grtrack <- GeneRegionTrack(txdb, genome = 'hg38', chromosome = 'chr1',
                            name = 'Genes', transcriptAnnotation = 'symbol')

# Data track from BigWig
dtrack <- DataTrack(range = 'coverage.bw', genome = 'hg38', chromosome = 'chr1',
                     name = 'Coverage', type = 'histogram', col.histogram = '#4DBBD5')

# Annotation track from BED
atrack <- AnnotationTrack(range = 'peaks.bed', genome = 'hg38', chromosome = 'chr1',
                           name = 'Peaks', fill = '#E64B35')

# Plot tracks
plotTracks(list(itrack, gtrack, dtrack, atrack, grtrack),
           from = 1000000, to = 2000000, sizes = c(1, 1, 3, 1, 3))

Gviz with Multiple Samples

# Create overlay data track
dtrack1 <- DataTrack(range = 'sample1.bw', name = 'Sample1', col = '#4DBBD5')
dtrack2 <- DataTrack(range = 'sample2.bw', name = 'Sample2', col = '#E64B35')

overlay <- OverlayTrack(trackList = list(dtrack1, dtrack2))

plotTracks(list(gtrack, overlay, grtrack), from = 1000000, to = 2000000,
           type = 'histogram', legend = TRUE)

Gviz Customization

# Highlight regions
ht <- HighlightTrack(trackList = list(dtrack, atrack),
                      start = c(1200000, 1500000),
                      end = c(1300000, 1600000),
                      chromosome = 'chr1')

# Custom display parameters
displayPars(dtrack) <- list(
    background.title = '#3C5488',
    fontcolor.title = 'white',
    col.axis = 'black',
    ylim = c(0, 100)
)

plotTracks(list(gtrack, ht, grtrack), from = 1000000, to = 2000000)

IGV.js (Web)

<!DOCTYPE html>
<html>
<head>
    <script src="https://cdn.jsdelivr.net/npm/igv@3.0.0/dist/igv.min.js"></script>
</head>
<body>
    <div id="igv-div"></div>
    <script>
        var options = {
            genome: "hg38",
            locus: "chr1:1,000,000-2,000,000",
            tracks: [
                {
                    name: "Coverage",
                    url: "coverage.bw",
                    type: "wig",
                    color: "#4DBBD5"
                },
                {
                    name: "Peaks",
                    url: "peaks.bed",
                    type: "annotation",
                    color: "#E64B35"
                }
            ]
        };
        igv.createBrowser(document.getElementById('igv-div'), options);
    </script>
</body>
</html>

Create BigWig from BAM

# Using deepTools
bamCoverage -b sample.bam -o coverage.bw \
    --binSize 10 --normalizeUsing RPKM --effectiveGenomeSize 2913022398

# Using bedtools + wigToBigWig
bedtools genomecov -bg -ibam sample.bam > coverage.bedGraph
sort -k1,1 -k2,2n coverage.bedGraph > coverage.sorted.bedGraph
bedGraphToBigWig coverage.sorted.bedGraph chrom.sizes coverage.bw

Multi-Region Plot

# pyGenomeTracks with BED regions
pyGenomeTracks --tracks tracks.ini --BED regions.bed \
    --outFileName multi_region.pdf --dpi 150
# Gviz with multiple regions
regions <- GRanges(seqnames = 'chr1', ranges = IRanges(start = c(1e6, 2e6), end = c(1.5e6, 2.5e6)))

pdf('multi_region.pdf', width = 10, height = 8)
for (i in seq_along(regions)) {
    plotTracks(track_list, from = start(regions[i]), to = end(regions[i]))
}
dev.off()

Related Skills

  • genome-intervals/bigwig-tracks - BigWig file handling
  • chip-seq/chipseq-visualization - ChIP-specific tracks
  • hi-c-analysis/hic-visualization - Hi-C contact maps