install
source · Clone the upstream repo
git clone https://github.com/mdbabumiamssm/LLMs-Universal-Life-Science-and-Clinical-Skills-
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/mdbabumiamssm/LLMs-Universal-Life-Science-and-Clinical-Skills- "$T" && mkdir -p ~/.claude/skills && cp -r "$T/Skills/Epigenomics/chip-seq/chipseq-visualization" ~/.claude/skills/mdbabumiamssm-llms-universal-life-science-and-clinical-skills-chipseq-visualizat && rm -rf "$T"
manifest:
Skills/Epigenomics/chip-seq/chipseq-visualization/SKILL.mdsource content
<!--
# COPYRIGHT NOTICE
# This file is part of the "Universal Biomedical Skills" project.
# Copyright (c) 2026 MD BABU MIA, PhD <md.babu.mia@mssm.edu>
# All Rights Reserved.
#
# This code is proprietary and confidential.
# Unauthorized copying of this file, via any medium is strictly prohibited.
#
# Provenance: Authenticated by MD BABU MIA
-->
name: bio-chipseq-visualization description: Visualize ChIP-seq data using deepTools, Gviz, and ChIPseeker. Create heatmaps, profile plots, and genome browser tracks. Visualize signal around peaks, TSS, or custom regions. Use when visualizing ChIP-seq signal and peaks. tool_type: mixed primary_tool: deepTools measurable_outcome: Execute skill workflow successfully with valid output within 15 minutes. allowed-tools:
- read_file
- run_shell_command
ChIP-seq Visualization
deepTools - Compute Matrix
# Compute signal matrix around TSS computeMatrix reference-point \ --referencePoint TSS \ -b 3000 -a 3000 \ # 3kb upstream and downstream -R genes.bed \ # Reference regions -S sample.bw \ # Signal file (bigWig) -o matrix.gz \ --outFileSortedRegions sorted_genes.bed
deepTools - Scale-Regions
# Signal across gene bodies computeMatrix scale-regions \ -R genes.bed \ -S sample1.bw sample2.bw \ -b 3000 -a 3000 \ # Flanking regions -m 5000 \ # Scaled body length -o matrix_scaled.gz
deepTools - Heatmap
# Generate heatmap from matrix plotHeatmap \ -m matrix.gz \ -o heatmap.png \ --colorMap RdBu \ --whatToShow 'heatmap and colorbar' \ --zMin -3 --zMax 3 # With profile on top plotHeatmap \ -m matrix.gz \ -o heatmap_with_profile.png \ --plotTitle 'H3K4me3 Signal' \ --heatmapHeight 15 \ --refPointLabel TSS
deepTools - Profile Plot
# Average profile plot plotProfile \ -m matrix.gz \ -o profile.png \ --plotTitle 'Average Signal Profile' \ --perGroup # Multiple samples comparison plotProfile \ -m matrix_multi.gz \ -o profile_compare.png \ --colors red blue green \ --plotTitle 'Sample Comparison'
Create BigWig from BAM
# Normalized bigWig (CPM) bamCoverage \ -b sample.bam \ -o sample.bw \ --normalizeUsing CPM \ --binSize 10 \ --numberOfProcessors 8 # With input subtraction bamCompare \ -b1 chip.bam \ -b2 input.bam \ -o chip_vs_input.bw \ --operation log2ratio \ --binSize 50
ChIPseeker Profile Heatmap (R)
library(ChIPseeker) library(TxDb.Hsapiens.UCSC.hg38.knownGene) txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene # Load peaks peaks <- readPeakFile('sample_peaks.narrowPeak') # Get promoter regions promoter <- getPromoters(TxDb = txdb, upstream = 3000, downstream = 3000) # Compute tag matrix tagMatrix <- getTagMatrix(peaks, windows = promoter) # Heatmap tagHeatmap(tagMatrix, xlim = c(-3000, 3000), color = 'red') # Profile plot plotAvgProf(tagMatrix, xlim = c(-3000, 3000), xlab = 'Distance from TSS (bp)', ylab = 'Peak Count Frequency') # With confidence interval plotAvgProf2(tagMatrix, xlim = c(-3000, 3000), conf = 0.95)
Gviz - Genome Browser Tracks (R)
library(Gviz) library(GenomicRanges) # Define region chr <- 'chr1' start <- 1000000 end <- 1100000 # Ideogram track itrack <- IdeogramTrack(genome = 'hg38', chromosome = chr) # Genome axis gtrack <- GenomeAxisTrack() # Data track from bigWig dtrack <- DataTrack( range = 'sample.bw', genome = 'hg38', type = 'histogram', name = 'ChIP Signal', col.histogram = 'darkblue', fill.histogram = 'darkblue' ) # Gene track library(TxDb.Hsapiens.UCSC.hg38.knownGene) txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene grtrack <- GeneRegionTrack(txdb, genome = 'hg38', chromosome = chr, name = 'Genes') # Plot plotTracks(list(itrack, gtrack, dtrack, grtrack), from = start, to = end, chromosome = chr)
Multiple Samples in Gviz
# Create data tracks for each sample dtrack1 <- DataTrack(range = 'control.bw', genome = 'hg38', name = 'Control', type = 'histogram', col.histogram = 'blue', fill.histogram = 'blue') dtrack2 <- DataTrack(range = 'treatment.bw', genome = 'hg38', name = 'Treatment', type = 'histogram', col.histogram = 'red', fill.histogram = 'red') plotTracks(list(itrack, gtrack, dtrack1, dtrack2, grtrack), from = start, to = end, chromosome = chr)
EnrichedHeatmap (R)
library(EnrichedHeatmap) library(rtracklayer) # Load signal and regions signal <- import('sample.bw') tss <- promoters(txdb, upstream = 0, downstream = 1) # Normalize to matrix mat <- normalizeToMatrix(signal, tss, extend = 3000, mean_mode = 'w0', w = 50) # Heatmap EnrichedHeatmap(mat, name = 'Signal', col = c('white', 'red'))
IGV Batch Screenshot
# Create IGV batch script cat > igv_batch.txt << 'EOF' new genome hg38 load sample.bw load peaks.bed goto chr1:1000000-1100000 snapshot region1.png goto chr2:50000000-51000000 snapshot region2.png exit EOF # Run IGV in batch mode igv.sh -b igv_batch.txt
Key Tools Comparison
| Tool | Type | Best For |
|---|---|---|
| deepTools | CLI | Large-scale heatmaps, profiles |
| ChIPseeker | R | Peak-centric visualization |
| Gviz | R | Publication-quality browser |
| EnrichedHeatmap | R | Customizable heatmaps |
| IGV | GUI | Interactive exploration |
deepTools Key Commands
| Command | Purpose |
|---|---|
| bamCoverage | BAM to bigWig |
| bamCompare | Compare two BAMs |
| computeMatrix | Signal matrix |
| plotHeatmap | Heatmap visualization |
| plotProfile | Profile plot |
| multiBigwigSummary | Compare multiple bigWigs |
| plotCorrelation | Sample correlation |
Related Skills
- peak-calling - Generate peaks for visualization
- peak-annotation - Annotation pie charts
- alignment-files - Prepare BAM files