All skills
davila7 avatar

/deeptools

@2fe0cfa

NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.

Use this Skill: https://skilld.dev/gh/davila7/claude-code-templates/deeptools

This session only. Nothing lands on disk.

referencesworkflows.md

≈2.7k tokens on demand. Your agent reads this file only when SKILL.md points to it.

deepTools Common Workflows

This document provides complete workflow examples for common deepTools analyses.

ChIP-seq Quality Control Workflow

Complete quality control assessment for ChIP-seq experiments.

Step 1: Initial Correlation Assessment

Compare replicates and samples to verify experimental quality:

# Generate coverage matrix across genome
multiBamSummary bins \
    --bamfiles Input1.bam Input2.bam ChIP1.bam ChIP2.bam \
    --labels Input_rep1 Input_rep2 ChIP_rep1 ChIP_rep2 \
    -o readCounts.npz \
    --numberOfProcessors 8

# Create correlation heatmap
plotCorrelation \
    -in readCounts.npz \
    --corMethod pearson \
    --whatToShow heatmap \
    --plotFile correlation_heatmap.png \
    --plotNumbers

# Generate PCA plot
plotPCA \
    -in readCounts.npz \
    -o PCA_plot.png \
    -T "PCA of ChIP-seq samples"

Expected Results:

  • Replicates should cluster together
  • Input samples should be distinct from ChIP samples

Step 2: Coverage and Depth Assessment

# Check sequencing depth and coverage
plotCoverage \
    --bamfiles Input1.bam ChIP1.bam ChIP2.bam \
    --labels Input ChIP_rep1 ChIP_rep2 \
    --plotFile coverage.png \
    --ignoreDuplicates \
    --numberOfProcessors 8

Interpretation: Assess whether sequencing depth is adequate for downstream analysis.


Step 3: Fragment Size Validation (Paired-end)

# Verify expected fragment sizes
bamPEFragmentSize \
    --bamfiles Input1.bam ChIP1.bam ChIP2.bam \
    --histogram fragmentSizes.png \
    --plotTitle "Fragment Size Distribution"

Expected Results: Fragment sizes should match library preparation protocols (typically 200-600bp for ChIP-seq).


Step 4: GC Bias Detection and Correction

# Compute GC bias
computeGCBias \
    --bamfile ChIP1.bam \
    --effectiveGenomeSize 2913022398 \
    --genome genome.2bit \
    --fragmentLength 200 \
    --biasPlot GCbias.png \
    --frequenciesFile freq.txt

# If bias detected, correct it
correctGCBias \
    --bamfile ChIP1.bam \
    --effectiveGenomeSize 2913022398 \
    --genome genome.2bit \
    --GCbiasFrequenciesFile freq.txt \
    --correctedFile ChIP1_GCcorrected.bam

Note: Only correct if significant bias is observed. Do NOT use --ignoreDuplicates with GC-corrected files.


Step 5: ChIP Signal Strength Assessment

# Evaluate ChIP enrichment quality
plotFingerprint \
    --bamfiles Input1.bam ChIP1.bam ChIP2.bam \
    --labels Input ChIP_rep1 ChIP_rep2 \
    --plotFile fingerprint.png \
    --extendReads 200 \
    --ignoreDuplicates \
    --numberOfProcessors 8 \
    --outQualityMetrics fingerprint_metrics.txt

Interpretation:

  • Strong ChIP: Steep rise in cumulative curve
  • Weak enrichment: Curve close to diagonal (input-like)

ChIP-seq Analysis Workflow

Complete workflow from BAM files to publication-quality visualizations.

Step 1: Generate Normalized Coverage Tracks

# Input control
bamCoverage \
    --bam Input.bam \
    --outFileName Input_coverage.bw \
    --normalizeUsing RPGC \
    --effectiveGenomeSize 2913022398 \
    --binSize 10 \
    --extendReads 200 \
    --ignoreDuplicates \
    --numberOfProcessors 8

# ChIP sample
bamCoverage \
    --bam ChIP.bam \
    --outFileName ChIP_coverage.bw \
    --normalizeUsing RPGC \
    --effectiveGenomeSize 2913022398 \
    --binSize 10 \
    --extendReads 200 \
    --ignoreDuplicates \
    --numberOfProcessors 8

Step 2: Create Log2 Ratio Track

# Compare ChIP to Input
bamCompare \
    --bamfile1 ChIP.bam \
    --bamfile2 Input.bam \
    --outFileName ChIP_vs_Input_log2ratio.bw \
    --operation log2 \
    --scaleFactorsMethod readCount \
    --binSize 10 \
    --extendReads 200 \
    --ignoreDuplicates \
    --numberOfProcessors 8

Result: Log2 ratio track showing enrichment (positive values) and depletion (negative values).


Step 3: Compute Matrix Around TSS

# Prepare data for heatmap/profile around transcription start sites
computeMatrix reference-point \
    --referencePoint TSS \
    --scoreFileName ChIP_coverage.bw \
    --regionsFileName genes.bed \
    --beforeRegionStartLength 3000 \
    --afterRegionStartLength 3000 \
    --binSize 10 \
    --sortRegions descend \
    --sortUsing mean \
    --outFileName matrix_TSS.gz \
    --outFileNameMatrix matrix_TSS.tab \
    --numberOfProcessors 8

Step 4: Generate Heatmap

# Create heatmap around TSS
plotHeatmap \
    --matrixFile matrix_TSS.gz \
    --outFileName heatmap_TSS.png \
    --colorMap RdBu \
    --whatToShow 'plot, heatmap and colorbar' \
    --zMin -3 --zMax 3 \
    --yAxisLabel "Genes" \
    --xAxisLabel "Distance from TSS (bp)" \
    --refPointLabel "TSS" \
    --heatmapHeight 15 \
    --kmeans 3

Step 5: Generate Profile Plot

# Create meta-profile around TSS
plotProfile \
    --matrixFile matrix_TSS.gz \
    --outFileName profile_TSS.png \
    --plotType lines \
    --perGroup \
    --colors blue \
    --plotTitle "ChIP-seq signal around TSS" \
    --yAxisLabel "Average signal" \
    --xAxisLabel "Distance from TSS (bp)" \
    --refPointLabel "TSS"

Step 6: Enrichment at Peaks

# Calculate enrichment in peak regions
plotEnrichment \
    --bamfiles Input.bam ChIP.bam \
    --BED peaks.bed \
    --labels Input ChIP \
    --plotFile enrichment.png \
    --outRawCounts enrichment_counts.tab \
    --extendReads 200 \
    --ignoreDuplicates

RNA-seq Coverage Workflow

Generate strand-specific coverage tracks for RNA-seq data.

Forward Strand

bamCoverage \
    --bam rnaseq.bam \
    --outFileName forward_coverage.bw \
    --filterRNAstrand forward \
    --normalizeUsing CPM \
    --binSize 1 \
    --numberOfProcessors 8

Reverse Strand

bamCoverage \
    --bam rnaseq.bam \
    --outFileName reverse_coverage.bw \
    --filterRNAstrand reverse \
    --normalizeUsing CPM \
    --binSize 1 \
    --numberOfProcessors 8

Important: Do NOT use --extendReads for RNA-seq (would extend over splice junctions).


Multi-Sample Comparison Workflow

Compare multiple ChIP-seq samples (e.g., different conditions or time points).

Step 1: Generate Coverage Files

# For each sample
for sample in Control_ChIP Treated_ChIP; do
    bamCoverage \
        --bam ${sample}.bam \
        --outFileName ${sample}.bw \
        --normalizeUsing RPGC \
        --effectiveGenomeSize 2913022398 \
        --binSize 10 \
        --extendReads 200 \
        --ignoreDuplicates \
        --numberOfProcessors 8
done

Step 2: Compute Multi-Sample Matrix

computeMatrix scale-regions \
    --scoreFileName Control_ChIP.bw Treated_ChIP.bw \
    --regionsFileName genes.bed \
    --beforeRegionStartLength 1000 \
    --afterRegionStartLength 1000 \
    --regionBodyLength 3000 \
    --binSize 10 \
    --sortRegions descend \
    --sortUsing mean \
    --outFileName matrix_multi.gz \
    --numberOfProcessors 8

Step 3: Multi-Sample Heatmap

plotHeatmap \
    --matrixFile matrix_multi.gz \
    --outFileName heatmap_comparison.png \
    --colorMap Blues \
    --whatToShow 'plot, heatmap and colorbar' \
    --samplesLabel Control Treated \
    --yAxisLabel "Genes" \
    --heatmapHeight 15 \
    --kmeans 4

Step 4: Multi-Sample Profile

plotProfile \
    --matrixFile matrix_multi.gz \
    --outFileName profile_comparison.png \
    --plotType lines \
    --perGroup \
    --colors blue red \
    --samplesLabel Control Treated \
    --plotTitle "ChIP-seq signal comparison" \
    --startLabel "TSS" \
    --endLabel "TES"

ATAC-seq Workflow

Specialized workflow for ATAC-seq data with Tn5 offset correction.

Step 1: Shift Reads for Tn5 Correction

alignmentSieve \
    --bam atacseq.bam \
    --outFile atacseq_shifted.bam \
    --ATACshift \
    --minFragmentLength 38 \
    --maxFragmentLength 2000 \
    --ignoreDuplicates

Step 2: Generate Coverage Track

bamCoverage \
    --bam atacseq_shifted.bam \
    --outFileName atacseq_coverage.bw \
    --normalizeUsing RPGC \
    --effectiveGenomeSize 2913022398 \
    --binSize 1 \
    --numberOfProcessors 8

Step 3: Fragment Size Analysis

bamPEFragmentSize \
    --bamfiles atacseq.bam \
    --histogram fragmentSizes_atac.png \
    --maxFragmentLength 1000

Expected Pattern: Nucleosome ladder with peaks at ~50bp (nucleosome-free), ~200bp (mono-nucleosome), ~400bp (di-nucleosome).


Peak Region Analysis Workflow

Analyze ChIP-seq signal specifically at peak regions.

Step 1: Matrix at Peaks

computeMatrix reference-point \
    --referencePoint center \
    --scoreFileName ChIP_coverage.bw \
    --regionsFileName peaks.bed \
    --beforeRegionStartLength 2000 \
    --afterRegionStartLength 2000 \
    --binSize 10 \
    --outFileName matrix_peaks.gz \
    --numberOfProcessors 8

Step 2: Heatmap at Peaks

plotHeatmap \
    --matrixFile matrix_peaks.gz \
    --outFileName heatmap_peaks.png \
    --colorMap YlOrRd \
    --refPointLabel "Peak Center" \
    --heatmapHeight 15 \
    --sortUsing max

Troubleshooting Common Issues

Issue: Out of Memory

Solution: Use --region parameter to process chromosomes individually:

bamCoverage --bam input.bam -o chr1.bw --region chr1

Issue: BAM Index Missing

Solution: Index BAM files before running deepTools:

samtools index input.bam

Issue: Slow Processing

Solution: Increase --numberOfProcessors:

# Use 8 cores instead of default
--numberOfProcessors 8

Issue: bigWig Files Too Large

Solution: Increase bin size:

--binSize 50  # or larger (default is 10-50)

Performance Tips

  1. Use multiple processors: Always set --numberOfProcessors to available cores
  2. Process regions: Use --region for testing or memory-limited environments
  3. Adjust bin size: Larger bins = faster processing and smaller files
  4. Pre-filter BAM files: Use alignmentSieve to create filtered BAM files once, then reuse
  5. Use bigWig over bedGraph: bigWig format is compressed and faster to process

Best Practices

  1. Always check QC first: Run correlation, coverage, and fingerprint analysis before proceeding
  2. Document parameters: Save command lines for reproducibility
  3. Use consistent normalization: Apply same normalization method across samples in a comparison
  4. Verify reference genome match: Ensure BAM files and region files use same genome build
  5. Check strand orientation: For RNA-seq, verify correct strand orientation
  6. Test on small regions first: Use --region chr1:1-1000000 for testing parameters
  7. Keep intermediate files: Save matrices for regenerating plots with different settings

Source: SKILL.md on GitHub

2 warnings16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill is a legitimate bioinformatics toolkit for Next-Generation Sequencing (NGS) data analysis using the deepTools suite. It provides comprehensive documentation, a file validation script, and a workflow template generator. No malicious patterns, data exfiltration, or obfuscation techniques were detected.

  • Socket16d

    1 alert: gptAnomaly

  • Snyk16d

    Risk: LOW · No issues

  • Runlayer7mo

    8/8 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 2fe0cfa. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 10 months ago

README badge

README badge for davila7/claude-code-templates/deeptools