Claude Cursor Skill

bioinformatics-installer

Install bioinformatics tools for ENCODE data analysis. Covers CLI tools (BWA, STAR, samtools, MACS2), R/Bioconductor packages (DESeq2, Seurat, ChIPseeker), Python packages (Scanpy, deeptools), and Nextflow pipeline infrastructure. Generates conda environments, R install scripts,

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download ammawla-encode-toolkit-skills_bioinformatics-installer-36836c8.zip · 31 KB
Part of ammawla/encode-toolkit — 90 skills

Install

skills CLI npx skills add https://github.com/ammawla/encode-toolkit/tree/main/skills/bioinformatics-installer
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install ammawla-encode-toolkit@llmmart
Git git clone https://github.com/ammawla/encode-toolkit.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole ammawla/encode-toolkit collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Bioinformatics Installer for ENCODE Data Analysis

Install all bioinformatics tools needed for ENCODE data analysis, organized by assay type. This skill provides ready-to-use conda environment definitions, R/Bioconductor install scripts, Python package lists, and Nextflow pipeline infrastructure setup. Every primary tool is version-pinned for reproducibility; a few utility packages (bedops, ucsc-bedgraphtobigwig, pigz, openjdk, r-base) float so the solver can satisfy the pinned tools around them.

When to Use

  • User wants to install bioinformatics tools needed for ENCODE data analysis
  • User asks about "install tools", "conda environment", "setup bioinformatics", or "install HOMER/MACS2/deeptools"
  • User needs pre-configured conda environments for specific assay pipelines (ChIP-seq, ATAC-seq, RNA-seq, etc.)
  • User wants to install R/Bioconductor packages (DESeq2, Seurat, ChIPseeker) or Python packages (Scanpy, pysam)
  • Example queries: "install tools for ChIP-seq analysis", "set up a conda environment for ATAC-seq", "install deeptools and bedtools"

Overview

ENCODE data analysis requires a broad ecosystem of tools spanning command-line aligners, peak callers, signal processors, statistical analysis frameworks in R, Python visualization and single-cell packages, and workflow engines. Setting up these tools correctly — with compatible versions, proper channel priorities, and no dependency conflicts — is a significant barrier for new users and a reproducibility concern for experienced analysts.

This skill solves that by providing:

  • 7 assay-specific conda environments with pinned tool versions matching ENCODE pipeline standards
  • R/Bioconductor install script covering 47 packages across 8 categories
  • Python install script for single-cell, Hi-C, and genomics packages, locked by scripts/constraints.txt
  • Nextflow install script + container checks for pipeline execution on local, HPC, and cloud platforms

The environment files, scripts/requirements.in and scripts/install-r-packages.R are the authoritative package lists; the tables below summarise them.

All environments use the same channel priority (conda-forge > bioconda). Every file is dry-run solved for Linux x86_64 in CI, so the pinned versions exist and install together. Several tools have no macOS arm64 build on bioconda; on Apple Silicon use the pipeline Docker images instead.

For every tool that an environment and the matching pipeline-* Docker image both install, the two pin the same version, and CI fails if they drift. Some tools exist on only one side — for example phantompeakqualtools, salmon, subread and the Hi-C bedtools are conda-only, while juicer_tools, SEACR, Hotspot2 and modwt are image-only because they are not conda packages. Those are noted in the sections below.

Quick Start

Install a complete environment for any assay type with a single command:

# ChIP-seq (histone or TF)
conda env create -f skills/bioinformatics-installer/environments/chipseq-env.yml

# ATAC-seq
conda env create -f skills/bioinformatics-installer/environments/atacseq-env.yml

# RNA-seq
conda env create -f skills/bioinformatics-installer/environments/rnaseq-env.yml

# Hi-C
conda env create -f skills/bioinformatics-installer/environments/hic-env.yml

# Whole-Genome Bisulfite Sequencing (WGBS)
conda env create -f skills/bioinformatics-installer/environments/wgbs-env.yml

# DNase-seq
conda env create -f skills/bioinformatics-installer/environments/dnaseseq-env.yml

# CUT&RUN / CUT&Tag
conda env create -f skills/bioinformatics-installer/environments/cutandrun-env.yml

Using mamba for faster solves (recommended):

mamba env create -f skills/bioinformatics-installer/environments/chipseq-env.yml

Install R and Python packages:

# All R/Bioconductor packages
Rscript skills/bioinformatics-installer/scripts/install-r-packages.R --all

# All Python packages
bash skills/bioinformatics-installer/scripts/install-python-packages.sh --all

# Install the pinned Nextflow release and check for a Docker runtime
bash skills/bioinformatics-installer/scripts/install-nextflow.sh --docker

Per-Assay Environments

ChIP-seq Environment (encode-chipseq)

For histone modification and transcription factor ChIP-seq processing following ENCODE uniform pipeline standards (Landt et al. 2012, ENCODE Consortium 2020).

Tool Version Purpose
BWA-MEM 0.7.18 Read alignment to reference genome (Li & Durbin 2009)
samtools 1.19 BAM manipulation, sorting, indexing, flagstat (Li et al. 2009)
MACS2 2.2.9.1 Peak calling for narrow (TF) and broad (histone) marks (Zhang et al. 2008)
Picard 3.1.1 Duplicate marking and library complexity metrics (Broad Institute)
phantompeakqualtools 1.2.2 Strand cross-correlation (NSC/RSC) quality metrics (Kharchenko et al. 2008)
IDR 2.0.4.2 Irreproducible Discovery Rate for replicate consistency (Li et al. 2011)
deeptools 3.5.5 Signal normalization (bamCoverage), fingerprint, correlation (Ramirez et al. 2016)
bedtools 2.31.0 Interval operations, blacklist filtering (Quinlan & Hall 2010)
FastQC 0.12.1 Raw read quality assessment (Andrews 2010)
Trim Galore 0.6.10 Adapter and quality trimming via Cutadapt (Krueger 2012)
MultiQC 1.21 Aggregate QC report across all pipeline stages (Ewels et al. 2016)
bedGraphToBigWig — Convert bedGraph signal to bigWig for genome browser viewing (Kent et al. 2010)

Memory: BWA index for GRCh38 requires ~5.5 GB RAM. Peak calling with MACS2 typically requires 4-8 GB. phantompeakqualtools loads full BAM into memory.

Environment file: environments/chipseq-env.yml


ATAC-seq Environment (encode-atacseq)

For chromatin accessibility profiling via ATAC-seq following ENCODE standards (Buenrostro et al. 2013, Corces et al. 2017).

Tool Version Purpose
Bowtie2 2.5.4 Alignment (preferred over BWA for ATAC-seq short fragments) (Langmead & Salzberg 2012)
MACS2 2.2.9.1 Peak calling (pipeline-atacseq calls it with -f BAMPE on Tn5-shifted reads) (Zhang et al. 2008)
IDR 2.0.4.2 Irreproducible Discovery Rate for replicate consistency (Li et al. 2011)
samtools 1.19 BAM manipulation, mitochondrial read filtering
Picard 3.1.1 Duplicate marking, insert size metrics
deeptools 3.5.5 alignmentSieve (Tn5 offset), bamCoverage (signal tracks), plotFingerprint
bedtools 2.31.0 Blacklist filtering, interval operations
FastQC 0.12.1 Raw read quality and adapter content assessment
Trim Galore 0.6.10 Adapter trimming (Nextera adapters for ATAC-seq)
MultiQC 1.21 Aggregate QC reporting

Key ATAC-seq parameters: Tn5 transposase introduces a +4/-5 bp offset that must be corrected. Fragment size distribution should show nucleosomal ladder (sub-nucleosomal, mono-, di-, tri-). TSS enrichment score should be >= 5 (GRCh38), >= 6 (hg19), or >= 10 (mm10) for high-quality data (ENCODE data standards).

Environment file: environments/atacseq-env.yml


RNA-seq Environment (encode-rnaseq)

For gene expression quantification following ENCODE RNA-seq standards (Conesa et al. 2016, ENCODE Consortium 2020).

Tool Version Purpose
STAR 2.7.11b Splice-aware alignment with 2-pass mapping (Dobin et al. 2013)
RSEM 1.3.3 Gene/transcript quantification with expectation-maximization (Li & Dewey 2011)
Kallisto 0.50.1 Pseudoalignment-based transcript quantification (Bray et al. 2016)
Salmon 1.10.3 Quasi-mapping transcript quantification with GC bias correction (Patro et al. 2017)
featureCounts (subread) 2.0.6 Gene-level read counting for count-based DE methods (Liao et al. 2014)
samtools 1.19 BAM handling, flagstat, idxstats
FastQC 0.12.1 Read quality assessment
Trim Galore 0.6.10 Adapter and quality trimming
MultiQC 1.21 Aggregate QC report
RSeQC 5.0.3 RNA-seq-specific QC: gene body coverage, read distribution, inner distance (Wang et al. 2012)

Memory: STAR genome generation requires 32+ GB RAM for human genome. STAR alignment requires ~30 GB RAM. Kallisto and Salmon are memory-efficient alternatives (~4 GB).

Environment file: environments/rnaseq-env.yml


Hi-C Environment (encode-hic)

For chromatin conformation capture processing following ENCODE Hi-C standards (Yardimci et al. 2019, Rao et al. 2014).

Tool Version Purpose
BWA-MEM 0.7.18 Chimeric read alignment (each mate aligned independently)
pairtools 1.1.2 Parse, sort, deduplicate, filter contact pairs (Open2C)
cooler 0.9.3 Multi-resolution contact matrix storage and balancing (Abdennur & Mirny 2020)
openjdk >=11 Java runtime for Juicer Tools (the jar itself is installed separately, see below)
samtools 1.19 BAM handling for chimeric alignment parsing
bedtools 2.31.0 Restriction fragment and TAD boundary operations
FastQC 0.12.1 Read quality assessment
Trim Galore 0.6.10 Adapter trimming
MultiQC 1.21 Aggregate QC reporting

Key Hi-C parameters: Cis/trans ratio > 60%, long-range cis contacts (> 20 kb) > 40%. Resolution depends on sequencing depth: ~1 billion valid pairs for 5 kb resolution on human.

Juicer Tools is not in this environment. The YAML installs only the Java runtime it needs. Download juicer_tools.2.20.00.jar from the aidenlab/Juicebox GitHub releases and invoke it with java -jar. The Hi-C pipeline image (pipeline-hic/scripts/Dockerfile) already contains it.

The environment also installs cooltools, hic-straw and pyGenomeTracks from PyPI (unpinned).

Environment file: environments/hic-env.yml


WGBS Environment (encode-wgbs)

For whole-genome bisulfite sequencing (DNA methylation) following ENCODE standards (Foox et al. 2021, Schultz et al. 2015).

Tool Version Purpose
Bismark 0.24.2 Bisulfite-aware alignment and methylation extraction (Krueger & Andrews 2011)
MethylDackel 0.6.1 Fast methylation extraction from bisulfite BAMs (Ryan 2023)
samtools 1.19 BAM manipulation, merge, index
bedtools 2.31.0 Interval operations for DMR analysis
FastQC 0.12.1 Read quality assessment (note: bisulfite libraries have biased base composition)
Trim Galore 0.6.10 Adapter trimming with --rrbs or default mode
MultiQC 1.21 Aggregate QC reporting with Bismark module
htslib 1.19 Provides tabix and bgzip for indexed, block-gzipped methylation BED files
Bowtie2 2.5.4 Backend aligner required by Bismark

Key WGBS parameters: Bisulfite conversion rate ≥ 98% (check unmethylated spike-in lambda DNA). CpG coverage >= 10x for reliable DMR calling. M-bias plots should be checked for end-repair artifacts.

Environment file: environments/wgbs-env.yml


DNase-seq Environment (encode-dnaseseq)

For DNase I hypersensitive site mapping following ENCODE standards (Thurman et al. 2012, ENCODE Consortium 2020).

Tool Version Purpose
BWA-MEM 0.7.18 Read alignment to reference genome
Picard 3.1.1 Duplicate marking and library complexity metrics
BEDOPS unpinned sort-bed and unstarch for the Hotspot2 .starch archives (Neph et al. 2012)
HINT (RGT) 1.0.2 TF footprinting from DNase-seq data (Li et al. 2019); installed from PyPI
F-Seq2 2.0.3 Feature density estimation for peak calling (Boyle et al. 2008, Zhao et al. 2020); installed from PyPI
samtools 1.19 BAM handling and filtering
bedtools 2.31.0 Interval operations, blacklist filtering
FastQC 0.12.1 Read quality assessment
Trim Galore 0.6.10 Adapter trimming
MultiQC 1.21 Aggregate QC reporting
bedGraphToBigWig unpinned Convert bedGraph signal to bigWig

Hotspot2 2.1.2 and its modwt dependency are not in this environment — neither is packaged for conda. Build both from source (pipeline-dnaseseq/scripts/Dockerfile shows the exact steps) or run the pipeline through that image, which is what pipeline-dnaseseq does.

Environment file: environments/dnaseseq-env.yml


CUT&RUN / CUT&Tag Environment (encode-cutandrun)

For antibody-targeted chromatin profiling via CUT&RUN (Skene & Henikoff 2017) and CUT&Tag (Kaya-Okur et al. 2019).

Tool Version Purpose
Bowtie2 2.5.4 Alignment (recommended for shorter CUT&RUN/Tag fragments)
r-base >=4.3 R runtime that the SEACR shell script calls (SEACR itself is installed separately, see below)
MACS2 2.2.9.1 Alternative peak calling with adjusted parameters
samtools 1.19 BAM handling, spike-in alignment filtering
Picard 3.1.1 Duplicate marking (low duplication expected for CUT&RUN/Tag)
deeptools 3.5.5 Signal tracks, heatmaps, spike-in normalization
bedtools 2.31.0 Interval operations, suspect list filtering
FastQC 0.12.1 Read quality assessment
Trim Galore 0.6.10 Adapter trimming
MultiQC 1.21 Aggregate QC reporting

SEACR 1.3 is not in this environment. It is a shell script plus an R script; download the v1.3 tarball from FredHutch/SEACR and put both SEACR_1.3.sh and SEACR_1.3.R on the PATH, alongside the r-base this environment installs. The CUT&RUN pipeline image (pipeline-cutandrun/scripts/Dockerfile) already contains it.

Key CUT&RUN/Tag notes: These assays have inherently lower background than ChIP-seq. Do NOT apply ChIP-seq quality thresholds — use CUT&RUN-specific metrics (Nordin et al. 2023). Apply the CUT&RUN suspect list instead of the standard ENCODE blacklist. Spike-in normalization (E. coli DNA for CUT&RUN, carry-over for CUT&Tag) is strongly recommended for quantitative comparisons.

Environment file: environments/cutandrun-env.yml

R/Bioconductor Packages

Install all R packages needed for ENCODE downstream analysis. The install script at scripts/install-r-packages.R handles BiocManager setup, version locking, and category-based installation.

Core Genomic Infrastructure

These packages provide the foundation for all genomic data manipulation in R:

Package Purpose
GenomicRanges Interval arithmetic on genomic coordinates (Lawrence et al. 2013)
GenomicFeatures Gene model and transcript annotation handling
rtracklayer Import/export BED, bigWig, GFF, narrowPeak, broadPeak
IRanges Integer range operations (underlying GenomicRanges)
GenomeInfoDb Chromosome naming conventions (UCSC vs Ensembl vs NCBI)
BiocGenerics Common S4 generics across Bioconductor
S4Vectors S4 class infrastructure for Bioconductor objects
AnnotationDbi Unified interface to annotation databases
biomaRt Ensembl BioMart query interface for gene annotation (Durinck et al. 2009)

Differential Analysis

Package Purpose
DESeq2 Differential gene expression with shrinkage estimators (Love et al. 2014)
edgeR Differential expression using empirical Bayes (Robinson et al. 2010)
limma Linear models for microarray and RNA-seq data (Ritchie et al. 2015)
DiffBind Differential binding analysis for ChIP-seq/ATAC-seq peaks (Stark & Brown 2011)
ChIPQC ChIP-seq quality control in R (Carroll et al. 2014)
chromVAR Chromatin accessibility variation across single cells (Schep et al. 2017)

Annotation and Pathway Analysis

Package Purpose
ChIPseeker Peak annotation and visualization (Yu et al. 2015)
annotatr Annotate genomic regions with CpG islands, genes, enhancers (Cavalcante & Sartor 2017)
clusterProfiler Gene ontology and KEGG pathway enrichment (Yu et al. 2012)
org.Hs.eg.db Human gene annotation database
org.Mm.eg.db Mouse gene annotation database
TxDb.Hsapiens.UCSC.hg38.knownGene Human transcript models (GRCh38)
TxDb.Mmusculus.UCSC.mm10.knownGene Mouse transcript models (mm10)

Single-Cell Analysis

Package Purpose
Seurat Comprehensive single-cell RNA-seq analysis (Hao et al. 2021)
Signac Single-cell chromatin accessibility (ATAC-seq) analysis (Stuart et al. 2021)
SingleCellExperiment Core Bioconductor container for single-cell data
scater Single-cell QC, normalization, visualization (McCarthy et al. 2017)
scran Single-cell normalization and feature selection (Lun et al. 2016)

Bulk-to-Single-Cell Deconvolution

Package Purpose
BisqueRNA Reference-based and marker-based deconvolution (Jew et al. 2020)
DWLS Dampened Weighted Least Squares deconvolution (Tsoucas et al. 2019)
BayesPrism Bayesian deconvolution with scRNA-seq reference (Chu et al. 2022). GitHub only — the script prints the devtools::install_github() line, it does not install it
InstaPrism Fast approximation of BayesPrism for large datasets (Wang et al. 2024). GitHub only, same as BayesPrism

DNA Methylation Analysis

Package Purpose
DMRcate Differentially methylated region detection (Peters et al. 2021)
bsseq Bisulfite sequencing data handling and smoothing (Hansen et al. 2012)
methylKit Methylation analysis from bisulfite sequencing (Akalin et al. 2012)

Visualization

Package Purpose
ComplexHeatmap Publication-quality heatmaps with annotations (Gu et al. 2016)
EnhancedVolcano Volcano plots for differential expression (Blighe et al. 2018)
Gviz Genome browser-style track visualization (Hahne & Ivanek 2016)
ggplot2 Grammar of graphics for all custom plots (Wickham 2016)

Statistics and Batch Correction

Package Purpose
sva (ComBat) Surrogate variable analysis and batch correction (Leek et al. 2012)
WGCNA Weighted Gene Co-expression Network Analysis (Langfelder & Horvath 2008)
ReactomePA Reactome pathway analysis (Yu & He 2016)

Install script: scripts/install-r-packages.R

# Install all categories
Rscript scripts/install-r-packages.R --all

# Install only specific categories
Rscript scripts/install-r-packages.R --chipseq      # DiffBind, ChIPQC, ChIPseeker
Rscript scripts/install-r-packages.R --rnaseq       # DESeq2, edgeR, limma
Rscript scripts/install-r-packages.R --singlecell   # Seurat, Signac, scater, scran
Rscript scripts/install-r-packages.R --methylation   # DMRcate, bsseq, methylKit
Rscript scripts/install-r-packages.R --deconvolution # BisqueRNA, DWLS (+ GitHub lines for BayesPrism, InstaPrism)
Rscript scripts/install-r-packages.R --visualization # ComplexHeatmap, EnhancedVolcano, Gviz, ggplot2
Rscript scripts/install-r-packages.R --stats         # sva, WGCNA, ReactomePA

The tables above list the main packages per category. scripts/install-r-packages.R holds the complete, authoritative lists (47 packages across 8 categories), including supporting packages such as TFBSTools, motifmatchr, tximport, tximeta, celda, pheatmap, RColorBrewer and viridis.

Python Packages

Install Python packages for single-cell analysis, Hi-C processing, signal visualization, and genomic data manipulation.

Core Single-Cell Stack

Package Purpose
scanpy Single-cell RNA-seq analysis framework (Wolf et al. 2018)
anndata Annotated data matrix for single-cell (Virshup et al. 2021)
scvi-tools Deep generative models for single-cell (Gayoso et al. 2022)
numpy Numerical computing
pandas Data manipulation and tabular operations
scipy Scientific computing (sparse matrices, statistics)
matplotlib Plotting foundation
seaborn Statistical visualization

Genomics and Signal Processing

Package Purpose
deeptools Signal tracks, heatmaps, correlation (also CLI; Ramirez et al. 2016)
pyBigWig Read/write bigWig signal files (Ryan 2023)
pysam Python interface to samtools/htslib (Li et al. 2009)
pybedtools Python interface to bedtools (Dale et al. 2011)

Hi-C Analysis

Package Purpose
cooler Multi-resolution contact matrices (Abdennur & Mirny 2020)
cooltools Analysis toolkit for cooler data: TADs, compartments, insulation
hic-straw Read .hic files from Juicer/Juicebox (Durand et al. 2016)
pyGenomeTracks Genome browser visualization including Hi-C tracks

Single-Cell QC and Integration

Package Purpose
scrublet Doublet detection for scRNA-seq (Wolock et al. 2019)
harmony-pytorch Batch integration via Harmony in PyTorch (Korsunsky et al. 2019)
scanorama Panoramic stitching of scRNA-seq datasets (Hie et al. 2019)
bbknn Batch-balanced KNN graph construction (Polanski et al. 2020)

CellBender (ambient RNA removal, Fleming et al. 2023) is not installed by the script — it is GPU-oriented and is left to a manual pip install cellbender, which the script prints as a note.

Install script: scripts/install-python-packages.sh

# Install all Python packages
bash scripts/install-python-packages.sh --all

# Install only specific categories
bash scripts/install-python-packages.sh --genomics     # numpy, pandas, scipy, matplotlib, seaborn
bash scripts/install-python-packages.sh --singlecell   # scanpy, scvi-tools, harmony-pytorch
bash scripts/install-python-packages.sh --hic          # cooler, cooltools, hic-straw, bioframe
bash scripts/install-python-packages.sh --deeptools    # deeptools, pyBigWig, pysam, pybedtools

Every category except --genomics also installs the core genomics packages first. The complete, authoritative list of direct dependencies is scripts/requirements.in; exact versions for the whole dependency tree are locked in scripts/constraints.txt, which every install is constrained by.

Nextflow and Container Setup

ENCODE pipeline execution requires Nextflow DSL2 and a container runtime (Docker or Singularity).

Nextflow Installation

# Install the pinned Nextflow release (requires Java 17+) and check for Docker.
# Use --singularity for HPC, or --both.
bash scripts/install-nextflow.sh --docker

# Verify
nextflow -version

What the script does:

  • Downloads the pinned, self-contained Nextflow release the pipelines are validated against (the version and its SHA-256 are at the top of scripts/install-nextflow.sh), verifies the checksum, and only then installs it to /usr/local/bin or ~/.local/bin.
  • An existing Nextflow is accepted only if it is exactly that pinned release. Any other version is left untouched; the pinned release is installed next to it and the script tells you to put its directory first on PATH.
  • Docker and Singularity are checked, not installed: the script reports what it finds and prints the install commands for your platform. Run those yourself.

Docker (recommended for local/cloud)

# macOS
brew install --cask docker

# Linux (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# Add current user to docker group (Linux)
sudo usermod -aG docker $USER

Singularity (for HPC clusters)

# Most HPC clusters have Singularity pre-installed
# Check with: module load singularity && singularity version

# If not available, install via conda:
conda install -c conda-forge singularity

Nextflow Configuration Profiles

The pipeline skills (pipeline-chipseq, pipeline-atacseq, etc.) include nextflow.config files with profiles for local, SLURM, GCP, and AWS execution. Select the appropriate profile:

# Local with Docker
nextflow run main.nf -profile local

# HPC with Singularity
nextflow run main.nf -profile slurm

# Google Cloud
nextflow run main.nf -profile gcp

# AWS Batch
nextflow run main.nf -profile aws

Install script: scripts/install-nextflow.sh

Motif Analysis Tools

For transcription factor binding motif discovery and scanning.

Tool Version Type Purpose
HOMER 4.11 CLI De novo and known motif discovery, annotation (Heinz et al. 2010)
MEME Suite 5.5.5 CLI MEME, DREME, STREME de novo discovery; FIMO scanning; AME enrichment (Bailey et al. 2015)
FIMO 5.5.5 CLI (part of MEME Suite) Motif occurrence scanning across sequences
TFBSTools R R/Bioconductor JASPAR motif handling, PFM/PWM conversion, motif scanning in R (Tan & Lenhard 2016)

HOMER Installation

# Download and configure HOMER
mkdir -p ~/software/homer
cd ~/software/homer
wget http://homer.ucsd.edu/homer/configureHomer.pl
perl configureHomer.pl -install homer
perl configureHomer.pl -install hg38   # Human genome
perl configureHomer.pl -install mm10   # Mouse genome

# Add to PATH
export PATH=$PATH:~/software/homer/bin

MEME Suite Installation

# Via conda (recommended)
conda install -c bioconda meme

# Or from source
wget https://meme-suite.org/meme/meme-software/5.5.5/meme-5.5.5.tar.gz
tar xzf meme-5.5.5.tar.gz
cd meme-5.5.5
./configure --prefix=$HOME/software/meme --enable-build-libxml2 --enable-build-libxslt
make && make install

Walkthrough: Setting Up a Complete ENCODE Analysis Environment

Goal: Install all bioinformatics tools needed to process ENCODE data, from raw FASTQ files through peak calling, annotation, and visualization, using Conda environments. Context: ENCODE analysis requires dozens of specialized tools. This skill automates installation with pre-configured Conda environments for each pipeline stage.

Step 1: Determine required tools by experiment type

encode_get_experiment(accession="ENCSR000AKA")

Expected output:

{
  "accession": "ENCSR000AKA",
  "assay_title": "Histone ChIP-seq",
  "target": "H3K27ac"
}

Interpretation: Histone ChIP-seq requires: BWA-MEM (alignment), SAMtools (BAM processing), MACS2 (peak calling), IDR (reproducibility), bedtools (interval operations), deepTools (signal visualization).

Step 2: Install the ChIP-seq Conda environment

# Using the pre-configured environment YAML
conda env create -f skills/bioinformatics-installer/environments/chipseq-env.yml
conda activate encode-chipseq

environments/chipseq-env.yml is the authoritative list of what that environment installs — read it rather than retyping the versions. It covers alignment (BWA), BAM processing (samtools, Picard), peak calling (MACS2), replicate consistency (IDR), cross-correlation metrics (phantompeakqualtools), signal processing (deeptools), interval operations (bedtools), and QC/trimming (FastQC, Trim Galore, MultiQC). See the ChIP-seq table above for the pinned versions.

Step 3: Install additional tools for downstream analysis

For peak annotation and motif analysis:

conda create -n encode-annotation -c conda-forge -c bioconda \
  homer bedtools bioconductor-chipseeker bioconductor-clusterprofiler bioconductor-rgreat
conda activate encode-annotation
# Includes: HOMER, bedtools, R/Bioconductor (ChIPseeker, clusterProfiler, rGREAT for GREAT queries)

Step 4: Verify installation

# Quick verification of key tools
bwa 2>&1 | head -3
samtools --version | head -1
macs2 --version
bedtools --version

Step 5: Download reference data for ENCODE analysis

encode_download_files(file_accessions=["ENCFF001ABC"], download_dir="/data/references")

Reference files needed:

  • GRCh38 genome FASTA
  • ENCODE blacklist v2 (Amemiya et al. 2019)
  • Gene annotation GTF (GENCODE v36)

Integration with downstream skills

  • Installed tools are used by → pipeline-chipseq through pipeline-cutandrun for processing
  • Reference data feeds into → download-encode for FASTQ retrieval
  • Environment setup enables → quality-assessment tool execution
  • Installed annotation tools support → peak-annotation and motif-analysis

Code Examples

1. Find experiments to identify required tools

encode_search_experiments(
  assay_title="ATAC-seq",
  organ="pancreas"
)

Expected output:

{
  "results": [
    {
      "accession": "ENCSR799GHJ",
      "assay_title": "ATAC-seq",
      "biosample_summary": "pancreatic islet tissue male adult (44 years)",
      "organ": "pancreas",
      "status": "released"
    }
  ],
  "total": 8,
  "limit": 25,
  "offset": 0,
  "has_more": false,
  "next_offset": null
}

Install decision: ATAC-seq requires the atacseq-env.yml conda environment (Bowtie2 + MACS2 + deeptools + samtools + bedtools).

2. Get file info to understand format requirements

encode_get_file_info(accession="ENCFF001ABC")

Expected output:

{
  "accession": "ENCFF001ABC",
  "file_format": "fastq",
  "file_type": "fastq",
  "output_type": "reads",
  "file_size_human": "4.4 GB",
  "experiment_assay": "ATAC-seq",
  "biological_replicates": [1],
  "status": "released"
}

Install decision: raw ATAC-seq reads need Bowtie2 (not BWA), Picard for duplicate marking, and samtools for BAM processing — the atacseq-env.yml environment. Whether the FASTQ is one mate of a pair is on the file's page on encodeproject.org (paired_end, paired_with), not in this response.

Pitfalls & Edge Cases

  • Conda solver conflicts: Large conda environments with many packages can take hours to solve. Use mamba instead of conda for faster dependency resolution, or install in smaller focused environments.
  • R/Bioconductor version mismatch: R packages from CRAN and Bioconductor must match the R version. Installing Bioconductor 3.18 packages with R 4.4 will fail silently or produce errors. Use BiocManager::install() to ensure version compatibility.
  • Python 2 vs Python 3: Some legacy bioinformatics tools (MACS 1.x, old HOMER) require Python 2. Never install Python 2 tools in the same environment as Python 3 tools — use separate conda environments.
  • ARM Mac (M1/M2/M3) compatibility: Many bioinformatics tools lack native ARM builds. Use CONDA_SUBDIR=osx-64 or Rosetta 2 emulation for x86_64 packages. Some tools (samtools, BWA) have ARM-native builds.
  • Nextflow requires Java 17+: check java -version before running pipelines. Install Nextflow with scripts/install-nextflow.sh, which pins the release the pipelines are validated against and verifies its checksum; avoid piping a remote installer straight into a shell.
  • Docker vs Singularity on HPC: Most HPC clusters do not allow Docker (requires root). Use Singularity instead. The pipeline skills express this through the execution profile, not a runtime profile: -profile local enables Docker, -profile slurm enables Singularity. There is no docker or singularity profile. With -profile slurm, convert the image once and pass the file: singularity build pipeline-chipseq.sif docker-daemon://encode-toolkit/pipeline-chipseq:1.0.0, then --container /path/to/pipeline-chipseq.sif.

Literature Foundation

# Reference Key Contribution
1 Li & Durbin 2009, Bioinformatics, DOI:10.1093/bioinformatics/btp324 (~30,000 cit) BWA aligner
2 Langmead & Salzberg 2012, Nat Methods, DOI:10.1038/nmeth.1923 (~25,000 cit) Bowtie2 aligner
3 Li et al. 2009, Bioinformatics, DOI:10.1093/bioinformatics/btp352 (~20,000 cit) SAMtools/BAM format
4 Zhang et al. 2008, Genome Biol, DOI:10.1186/gb-2008-9-9-r137 (~7,000 cit) MACS2 peak caller
5 Dobin et al. 2013, Bioinformatics, DOI:10.1093/bioinformatics/bts635 (~15,000 cit) STAR RNA-seq aligner
6 Love et al. 2014, Genome Biol, DOI:10.1186/s13059-014-0550-8 (~30,000 cit) DESeq2
7 Ramirez et al. 2016, Nucleic Acids Res, DOI:10.1093/nar/gkw257 (~3,000 cit) deeptools
8 Wolf et al. 2018, Genome Biol, DOI:10.1186/s13059-017-1382-0 (~5,000 cit) Scanpy
9 Hao et al. 2021, Cell, DOI:10.1016/j.cell.2021.04.048 (~8,000 cit) Seurat v4
10 Quinlan & Hall 2010, Bioinformatics, DOI:10.1093/bioinformatics/btq033 (~10,000 cit) bedtools
11 Ewels et al. 2016, Bioinformatics, DOI:10.1093/bioinformatics/btw354 (~3,000 cit) MultiQC
12 Krueger & Andrews 2011, Bioinformatics, DOI:10.1093/bioinformatics/btr167 (~5,000 cit) Bismark
13 Heinz et al. 2010, Molecular Cell, DOI:10.1016/j.molcel.2010.05.004 (~7,000 cit) HOMER motif analysis
14 Bailey et al. 2015, Nucleic Acids Res, DOI:10.1093/nar/gkv416 (~3,000 cit) MEME Suite
15 Meers et al. 2019, Epigenetics Chromatin, DOI:10.1186/s13072-019-0287-4 (~800 cit) SEACR for CUT&RUN
16 Di Tommaso et al. 2017, Nat Biotechnol, DOI:10.1038/nbt.3820 (~2,500 cit) Nextflow
17 Landt et al. 2012, Genome Res, DOI:10.1101/gr.136184.111 (~4,000 cit) ENCODE ChIP-seq standards
18 ENCODE Consortium 2020, Nature, DOI:10.1038/s41586-020-2493-4 (~1,656 cit) ENCODE Phase 3
19 Amemiya et al. 2019, Sci Rep, DOI:10.1038/s41598-019-45839-z (~1,372 cit) ENCODE Blacklist v2

Integration

This skill produces... Feed into... Purpose
Conda environments pipeline-chipseq through pipeline-cutandrun Provide tool dependencies for all pipeline stages
Installed reference data download-encode Reference genomes and annotations for alignment
Tool version inventory data-provenance Record exact tool versions for reproducibility
QC tool installations quality-assessment Enable FastQC, MultiQC, and ENCODE QC metric tools
Annotation tool setup peak-annotation HOMER, ChIPseeker for peak-to-gene assignment
Motif scanning tools jaspar-motifs MEME Suite for motif scanning against JASPAR
Visualization tools visualization-workflow deepTools, IGV, R/ggplot2 for data visualization
Liftover utilities liftover-coordinates UCSC liftOver binary for assembly conversion

Related Skills

  • pipeline-guide: Parent skill for all pipeline execution; provides overview of available pipelines and tool selection guidance
  • pipeline-chipseq: Uses the ChIP-seq conda environment tools for FASTQ-to-peaks processing
  • pipeline-atacseq: Uses the ATAC-seq conda environment tools for accessibility analysis
  • pipeline-rnaseq: Uses the RNA-seq conda environment for expression quantification
  • pipeline-wgbs: Uses the WGBS conda environment for methylation analysis
  • pipeline-hic: Uses the Hi-C conda environment for contact matrix generation
  • pipeline-dnaseseq: Uses the DNase-seq conda environment for hotspot detection
  • pipeline-cutandrun: Uses the CUT&RUN conda environment for CUT&RUN/CUT&Tag processing
  • quality-assessment: Quality metrics require properly installed tools to compute
  • setup: Initial ENCODE Toolkit server setup (MCP connection, not bioinformatics tools)
  • motif-analysis: Requires HOMER and MEME Suite from this installer
  • visualization-workflow: Uses deeptools, pyGenomeTracks, and R visualization packages from this installer
  • single-cell-encode: Uses Seurat, Signac, Scanpy from this installer
  • publication-trust: Assess scientific integrity of publications before relying on their methods or findings

Presenting Results

  • Present installed tools as a checklist table: tool | version | status (installed/failed/skipped). Group by assay environment. Suggest: "Would you like to verify the installation by running a quick test on sample ENCODE data?"
  • If any installation fails, provide the exact error and a targeted fix. Common fixes: update conda, set channel priority, install system dependencies.

For the request: "$ARGUMENTS"

Files (encode-toolkit)
  • environments
    • atacseq-env.yml 974 B
      # ENCODE ATAC-seq Analysis Environment
      # Covers: chromatin accessibility profiling
      # Standards: Buenrostro et al. 2013, Corces et al. 2017
      # Usage: conda env create -f atacseq-env.yml
      name: encode-atacseq
      channels:
        - conda-forge
        - bioconda
      dependencies:
        # IDR 2.0.4.2 is built for Python 3.10 and older on bioconda
        - python=3.10
        # Alignment
        - bowtie2==2.5.4
        # BAM processing
        - samtools==1.19
        - picard==3.1.1
        # Peak calling
        - macs2==2.2.9.1
        # Replicate consistency
        - idr==2.0.4.2
        # Signal processing (alignmentSieve for Tn5 offset, bamCoverage for tracks)
        - deeptools==3.5.5
        # Interval operations
        - bedtools==2.31.0
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - openjdk=17  # FastQC (and Picard, Juicer tools) run on Java; the image has OpenJDK 17
        - multiqc==1.21
        # Signal format conversion
        - ucsc-bedgraphtobigwig
        # Utilities
        - pigz
      
    • chipseq-env.yml 996 B
      # ENCODE ChIP-seq Analysis Environment
      # Covers: histone modification and transcription factor ChIP-seq
      # Standards: Landt et al. 2012, ENCODE Consortium 2020
      # Usage: conda env create -f chipseq-env.yml
      name: encode-chipseq
      channels:
        - conda-forge
        - bioconda
      dependencies:
        # IDR 2.0.4.2 is built for Python 3.10 and older on bioconda
        - python=3.10
        # Alignment
        - bwa==0.7.18
        # BAM processing
        - samtools==1.19
        - picard==3.1.1
        # Peak calling
        - macs2==2.2.9.1
        # Replicate consistency
        - idr==2.0.4.2
        # Quality metrics
        - phantompeakqualtools==1.2.2
        # Signal processing
        - deeptools==3.5.5
        # Interval operations
        - bedtools==2.31.0
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - openjdk=17  # FastQC (and Picard, Juicer tools) run on Java; the image has OpenJDK 17
        - multiqc==1.21
        # Signal format conversion
        - ucsc-bedgraphtobigwig
        # Utilities
        - pigz
        - gzip
      
    • cutandrun-env.yml 979 B
      # ENCODE CUT&RUN / CUT&Tag Analysis Environment
      # Covers: antibody-targeted chromatin profiling
      # Standards: Skene & Henikoff 2017 (CUT&RUN), Kaya-Okur et al. 2019 (CUT&Tag)
      # Usage: conda env create -f cutandrun-env.yml
      name: encode-cutandrun
      channels:
        - conda-forge
        - bioconda
      dependencies:
        - python=3.10
        # Alignment
        - bowtie2==2.5.4
        # BAM processing
        - samtools==1.19
        - picard==3.1.1
        # Peak calling
        - macs2==2.2.9.1
        # SEACR peak calling (shell script + R)
        - r-base>=4.3
        # Signal processing and spike-in normalization
        - deeptools==3.5.5
        # Interval operations (suspect list filtering)
        - bedtools==2.31.0
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - openjdk=17  # FastQC (and Picard, Juicer tools) run on Java; the image has OpenJDK 17
        - multiqc==1.21
        # Signal format conversion
        - ucsc-bedgraphtobigwig
        # Utilities
        - pigz
        - wget
        - curl
      
    • dnaseseq-env.yml 1.1 KB
      # ENCODE DNase-seq Analysis Environment
      # Covers: DNase I hypersensitive site mapping
      # Standards: Thurman et al. 2012, ENCODE Consortium 2020
      # Usage: conda env create -f dnaseseq-env.yml
      name: encode-dnaseseq
      channels:
        - conda-forge
        - bioconda
      dependencies:
        - python=3.10
        # Alignment
        - bwa==0.7.18
        # BAM processing
        - samtools==1.19
        - picard==3.1.1
        # Hotspot detection: Hotspot2 and its modwt dependency are not packaged for conda.
        # Build them from source (see pipeline-dnaseseq/scripts/Dockerfile) or use that image.
        - bedops
        # Interval operations
        - bedtools==2.31.0
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - openjdk=17  # FastQC (and Picard, Juicer tools) run on Java; the image has OpenJDK 17
        - multiqc==1.21
        # Signal format conversion
        - ucsc-bedgraphtobigwig
        # Utilities
        - pigz
        - pip
        # bioconda only builds RGT for Python 3.7 and does not package F-Seq2, so both come from PyPI
        - pip:
            # Footprinting (HINT is part of RGT)
            - RGT==1.0.2
            # Feature density peak calling
            - fseq2==2.0.3
      
    • hic-env.yml 856 B
      # ENCODE Hi-C Analysis Environment
      # Covers: chromatin conformation capture and 3D genome organization
      # Standards: Yardimci et al. 2019, Rao et al. 2014
      # Usage: conda env create -f hic-env.yml
      name: encode-hic
      channels:
        - conda-forge
        - bioconda
      dependencies:
        - python=3.10
        # Alignment (chimeric read handling)
        - bwa==0.7.18
        # Contact pair processing
        - pairtools==1.1.2
        # Contact matrix storage and balancing
        - cooler==0.9.3
        # BAM processing
        - samtools==1.19
        # Interval operations
        - bedtools==2.31.0
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - multiqc==1.21
        # Java runtime for Juicer
        - openjdk=17
        # Python Hi-C packages
        - pip
        - pip:
          - cooltools
          - hic-straw
          - pyGenomeTracks
        # Utilities
        - pigz
        - pbgzip
      
    • rnaseq-env.yml 808 B
      # ENCODE RNA-seq Analysis Environment
      # Covers: gene expression quantification (total RNA-seq, mRNA-seq)
      # Standards: Conesa et al. 2016, ENCODE Consortium 2020
      # Usage: conda env create -f rnaseq-env.yml
      name: encode-rnaseq
      channels:
        - conda-forge
        - bioconda
      dependencies:
        - python=3.10
        # Splice-aware alignment
        - star==2.7.11b
        # Transcript quantification
        - rsem==1.3.3
        - kallisto==0.50.1
        - salmon==1.10.3
        # Gene-level counting
        - subread==2.0.6
        # BAM processing
        - samtools==1.19
        # RNA-seq QC
        - rseqc==5.0.3
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - openjdk=17  # FastQC (and Picard, Juicer tools) run on Java; the image has OpenJDK 17
        - multiqc==1.21
        # Utilities
        - pigz
      
    • wgbs-env.yml 917 B
      # ENCODE WGBS (Whole-Genome Bisulfite Sequencing) Analysis Environment
      # Covers: DNA methylation profiling
      # Standards: Foox et al. 2021, Schultz et al. 2015
      # Usage: conda env create -f wgbs-env.yml
      name: encode-wgbs
      channels:
        - conda-forge
        - bioconda
      dependencies:
        - python=3.10
        # Bisulfite-aware alignment and methylation extraction
        - bismark==0.24.2
        # Fast methylation extraction
        - methyldackel==0.6.1
        # BAM processing
        - samtools==1.19
        # Interval operations
        - bedtools==2.31.0
        # Indexing and compression for methylation BED files
        - htslib==1.19
        # QC and trimming
        - fastqc==0.12.1
        - trim-galore==0.6.10
        - cutadapt==4.6  # run by Trim Galore; pinned to the version in the image
        - openjdk=17  # FastQC (and Picard, Juicer tools) run on Java; the image has OpenJDK 17
        - multiqc==1.21
        # Bowtie2 (required by Bismark as backend aligner)
        - bowtie2==2.5.4
        # Utilities
        - pigz
      
  • references
    • literature.md 8.8 KB
      # Bioinformatics Installer — Literature References
      
      **Last updated:** 2026-03-07
      **Purpose:** Reference catalog for the bioinformatics-installer skill — papers on reproducible software environments, package management for bioinformatics, and the key tool ecosystem publications that define version requirements.
      
      ---
      
      ## Reproducible Environments
      
      ---
      
      ### Grüning et al. 2018 — Bioconda: sustainable bioinformatics software
      
      - **Citation:** Grüning B, Dale R, Sjödin A, Chapman BA, Rowe J, Tomkins-Tinch CH, Valieris R, Köster J; Bioconda Team. Bioconda: sustainable and comprehensive software distribution for the life sciences. Nature Methods, 15(7):475-476, 2018.
      - **DOI:** [10.1038/s41592-018-0046-7](https://doi.org/10.1038/s41592-018-0046-7)
      - **PMID:** 29967506
      - **Citations:** ~1,200
      - **Key findings:** Introduced the Bioconda channel, a sustainable and community-driven distribution of bioinformatics software for the conda package manager. Provides >7,000 bioinformatics packages with dependency resolution, version pinning, and automated builds for Linux and macOS. Bioconda is the primary package source for all conda environments in this skill (channel priority: conda-forge > bioconda > defaults). The Bioconda model of community-maintained recipes ensures that tools are installable with consistent, tested dependency trees.
      
      ---
      
      ### Merkel 2014 — Docker: lightweight Linux containers
      
      - **Citation:** Merkel D. Docker: lightweight Linux containers for consistent development and deployment. Linux Journal, 239(2), 2014.
      - **Citations:** ~5,000
      - **Key findings:** Docker containers provide OS-level virtualization ensuring that bioinformatics tools run identically regardless of the host system. The ENCODE consortium distributes Docker images for several of its WDL pipelines (encodedcc/*); the Nextflow pipeline skills in this toolkit build their own images instead, and this skill's Nextflow setup guide configures Docker as the default container runtime. Docker is essential for ENCODE pipeline reproducibility because tool behavior can depend on system libraries, compiler versions, and kernel features.
      
      ---
      
      ### Kurtzer et al. 2017 — Singularity: containers for scientific computing
      
      - **Citation:** Kurtzer GM, Sochat V, Bauer MW. Singularity: Scientific containers for mobility of compute. PLoS ONE, 12(5):e0177459, 2017.
      - **DOI:** [10.1371/journal.pone.0177459](https://doi.org/10.1371/journal.pone.0177459)
      - **PMID:** 28494014 | **PMC:** PMC5426675
      - **Citations:** ~2,000
      - **Key findings:** Introduced Singularity (now Apptainer), a container platform designed for HPC environments where Docker's root-level daemon model is not permitted. Singularity can convert Docker images and run them without root privileges, making it the standard container runtime on academic HPC clusters. This skill's install-nextflow.sh script detects the compute environment and configures either Docker (local/cloud) or Singularity (HPC/SLURM) accordingly.
      
      ---
      
      ### Di Tommaso et al. 2017 — Nextflow: scalable reproducible pipelines
      
      - **Citation:** Di Tommaso P, Chatzou M, Floden EW, Barja PP, Palumbo E, Notredame C. Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4):316-319, 2017.
      - **DOI:** [10.1038/nbt.3820](https://doi.org/10.1038/nbt.3820)
      - **PMID:** 28398311
      - **Citations:** ~2,500
      - **Key findings:** Introduced Nextflow, a reactive workflow framework that enables writing complex pipelines with simple DSL syntax and running them across local, HPC, and cloud environments. Nextflow handles job scheduling, retry logic, caching (-resume), and container orchestration. The ENCODE Toolkit's 7 pipeline skills are all implemented as Nextflow DSL2 workflows, and this skill's install-nextflow.sh script installs Nextflow along with the appropriate container runtime.
      
      ---
      
      ### Ewels et al. 2020 — nf-core: community curated bioinformatics pipelines
      
      - **Citation:** Ewels PA, Peltzer A, Fillinger S, Patel H, Alneberg J, Wilm A, Garcia MU, Di Tommaso P, Nahnsen S. The nf-core framework for community-curated bioinformatics pipelines. Nature Biotechnology, 38(3):276-278, 2020.
      - **DOI:** [10.1038/s41587-020-0439-x](https://doi.org/10.1038/s41587-020-0439-x)
      - **PMID:** 32055031
      - **Citations:** ~1,500
      - **Key findings:** Established nf-core as a community framework for curated Nextflow pipelines with standardized design patterns, CI testing, and documentation. nf-core pipelines (nf-core/chipseq, nf-core/atacseq, nf-core/rnaseq, nf-core/methylseq, nf-core/hic) represent an alternative implementation of the same processing steps defined in ENCODE pipelines. This skill provides environments compatible with both ENCODE-native and nf-core pipeline implementations.
      
      ---
      
      ## R/Bioconductor Ecosystem
      
      ---
      
      ### Huber et al. 2015 — Orchestrating high-throughput genomic analysis with Bioconductor
      
      - **Citation:** Huber W, Carey VJ, Gentleman R, Anders S, Brainard M, Davis S, Dudoit S, Ellis B, Gatto L, Girke T, Gottardo R, Hahne F, Hansen KD, Irizarry RA, Lawrence M, Love MI, MacDonald J, Obenchain V, Oleś AK, Pagès H, Reyes A, Shannon P, Smyth GK, Tenenbaum D, Waldron L, Morgan M. Orchestrating high-throughput genomic analysis with Bioconductor. Nature Methods, 12(2):115-121, 2015.
      - **DOI:** [10.1038/nmeth.3252](https://doi.org/10.1038/nmeth.3252)
      - **PMID:** 25633503 | **PMC:** PMC4509590
      - **Citations:** ~3,500
      - **Key findings:** Established Bioconductor as the standard R package ecosystem for genomic data analysis. Bioconductor provides >2,000 packages organized around core data structures (GenomicRanges, SummarizedExperiment, SingleCellExperiment). This skill's install-r-packages.R script installs packages from 8 Bioconductor categories: differential expression (DESeq2, edgeR, limma), single-cell (Seurat, monocle3), ChIP-seq/ATAC-seq (ChIPseeker, DiffBind), genomic ranges (GenomicRanges, rtracklayer), annotation (biomaRt, clusterProfiler), visualization (ComplexHeatmap, EnhancedVolcano), deconvolution (BayesPrism, MuSiC), and methylation (DMRcate, bsseq).
      
      ---
      
      ## Python Scientific Ecosystem
      
      ---
      
      ### Wolf et al. 2018 — Scanpy: large-scale single-cell analysis
      
      - **Citation:** Wolf FA, Angerer P, Theis FJ. SCANPY: large-scale single-cell gene expression data analysis. Genome Biology, 19:15, 2018.
      - **DOI:** [10.1186/s13059-017-1382-0](https://doi.org/10.1186/s13059-017-1382-0)
      - **PMID:** 29409532 | **PMC:** PMC5802054
      - **Citations:** ~4,000
      - **Key findings:** Introduced Scanpy, the dominant Python framework for single-cell analysis. Built on anndata for efficient data representation and providing preprocessing, clustering, trajectory inference, and visualization functions. This skill installs Scanpy and its ecosystem (anndata, scvi-tools, bbknn) via the Python install script for users processing ENCODE single-cell RNA-seq or ATAC-seq data.
      
      ---
      
      ## Key Tool Publications
      
      The following publications establish the tools installed by this skill. See the individual pipeline skill literature.md files for detailed descriptions:
      
      ---
      
      ### Alignment Tools
      - **BWA-MEM** (Li & Durbin 2009): DOI 10.1093/bioinformatics/btp324 — Used in ChIP-seq, DNase-seq, Hi-C pipelines
      - **Bowtie2** (Langmead & Salzberg 2012): DOI 10.1038/nmeth.1923 — Used in ATAC-seq, CUT&RUN pipelines
      - **STAR** (Dobin et al. 2013): DOI 10.1093/bioinformatics/bts635 — Used in RNA-seq pipeline
      - **Bismark** (Krueger & Andrews 2011): DOI 10.1093/bioinformatics/btr167 — Used in WGBS pipeline
      
      ### Peak Callers
      - **MACS2** (Zhang et al. 2008): DOI 10.1186/gb-2008-9-9-r137 — ChIP-seq, ATAC-seq
      - **SEACR** (Meers et al. 2019): DOI 10.1186/s13072-019-0287-4 — CUT&RUN/CUT&Tag
      - **Hotspot2** (John et al. 2011): DOI 10.1038/ng.759 — DNase-seq
      
      ### Quantification
      - **RSEM** (Li & Dewey 2011): DOI 10.1186/1471-2105-12-323 — RNA-seq gene/transcript quantification
      - **Kallisto** (Bray et al. 2016): DOI 10.1038/nbt.3519 — Fast pseudoalignment
      
      ### QC & Utilities
      - **SAMtools** (Li et al. 2009): DOI 10.1093/bioinformatics/btp352 — Universal BAM operations
      - **BEDTools** (Quinlan & Hall 2010): DOI 10.1093/bioinformatics/btq033 — Genomic arithmetic
      - **deepTools** (Ramírez et al. 2016): DOI 10.1093/nar/gkw257 — Signal tracks, heatmaps
      - **MultiQC** (Ewels et al. 2016): DOI 10.1093/bioinformatics/btw354 — QC report aggregation
      - **FastQC** (Andrews 2010): URL https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
      - **Picard** (Broad Institute): URL https://broadinstitute.github.io/picard/
      
      ### Hi-C Specific
      - **pairtools** (Open2C 2024): DOI 10.1371/journal.pcbi.1012164 — Pair-level processing
      - **cooler** (Abdennur & Mirny 2020): DOI 10.1093/bioinformatics/btz540 — Contact matrix storage
      - **Juicer tools** (Durand et al. 2016): DOI 10.1016/j.cels.2016.07.002 — .hic generation + HiCCUPS
      
      ### Methylation Specific
      - **MethylDackel** (Ryan): URL https://github.com/dpryan79/MethylDackel — Methylation extraction
      
  • scripts
    • constraints.txt 23.3 KB
      # This file was autogenerated by uv via the following command:
      #    uv pip compile --universal --python-version 3.10 requirements.in -o constraints.txt
      absl-py==2.5.0
          # via
          #   ml-collections
          #   optax
          #   orbax-checkpoint
          #   tensorboard
      aiofiles==25.1.0 ; python_full_version < '3.11'
          # via orbax-checkpoint
      aiohappyeyeballs==2.7.1
          # via aiohttp
      aiohttp==3.14.3
          # via fsspec
      aiosignal==1.4.0
          # via aiohttp
      alabaster==1.0.0 ; python_full_version < '3.12'
          # via sphinx
      anndata==0.11.4 ; python_full_version < '3.11'
          # via
          #   -r requirements.in
          #   mudata
          #   scanpy
          #   scvi-tools
      anndata==0.12.19 ; python_full_version == '3.11.*'
          # via
          #   -r requirements.in
          #   mudata
          #   scanpy
          #   scvi-tools
      anndata==0.13.4 ; python_full_version >= '3.12'
          # via
          #   -r requirements.in
          #   mudata
          #   scanpy
          #   scvi-tools
      annotated-types==0.8.0
          # via pydantic
      annoy==1.17.3
          # via
          #   bbknn
          #   scanorama
          #   scrublet
      anyio==4.15.1 ; python_full_version >= '3.11'
          # via httpx
      argcomplete==3.7.2
          # via gffutils
      argh==0.31.3
          # via gffutils
      array-api-compat==1.15.0
          # via
          #   anndata
          #   fast-array-utils
      asciitree==0.3.3
          # via cooler
      async-timeout==5.0.1 ; python_full_version < '3.11'
          # via aiohttp
      attrs==26.1.0
          # via aiohttp
      babel==2.18.0 ; python_full_version < '3.12'
          # via sphinx
      bbknn==1.6.0
          # via -r requirements.in
      bioframe==0.8.0
          # via
          #   -r requirements.in
          #   cooltools
      blosc2==4.3.3 ; python_full_version < '3.11'
          # via tables
      blosc2==4.13.1 ; python_full_version >= '3.11'
          # via tables
      certifi==2026.7.22
          # via
          #   httpcore
          #   httpx
          #   requests
          #   scanpy
      charset-normalizer==3.5.1
          # via requests
      click==8.5.0
          # via
          #   cooler
          #   cooltools
          #   loompy
      cloudpickle==3.1.2
          # via joblib
      colorama==0.4.6 ; sys_platform == 'win32'
          # via
          #   pytest
          #   sphinx
          #   tqdm
      contourpy==1.3.2 ; python_full_version < '3.11'
          # via matplotlib
      contourpy==1.3.3 ; python_full_version == '3.11.*'
          # via matplotlib
      contourpy==1.4.0 ; python_full_version >= '3.12'
          # via matplotlib
      cooler==0.10.4
          # via
          #   -r requirements.in
          #   cooltools
          #   hicmatrix
      cooltools==0.7.1
          # via -r requirements.in
      cuda-bindings==13.4.2 ; python_full_version < '3.15' and sys_platform == 'linux'
          # via torch
      cuda-pathfinder==1.8.2 ; python_full_version < '3.15' and sys_platform == 'linux'
          # via cuda-bindings
      cuda-toolkit==13.0.3.0 ; sys_platform == 'linux'
          # via torch
      cycler==0.12.1
          # via matplotlib
      cython==3.3.0
          # via
          #   bbknn
          #   cooltools
          #   scrublet
      cytoolz==1.1.0
          # via cooler
      deeptools==3.5.6 ; python_full_version < '3.12'
          # via -r requirements.in
      deeptools==4.0.0 ; python_full_version >= '3.12'
          # via -r requirements.in
      deeptoolsintervals==0.1.9
          # via deeptools
      dill==0.4.1
          # via multiprocess
      docrep==0.3.2
          # via scvi-tools
      docutils==0.21.2 ; python_full_version < '3.11'
          # via sphinx
      docutils==0.22.4 ; python_full_version == '3.11.*'
          # via sphinx
      donfig==0.8.1.post1 ; python_full_version >= '3.11'
          # via zarr
      etils==1.13.0 ; python_full_version < '3.11'
          # via orbax-checkpoint
      exceptiongroup==1.3.1 ; python_full_version < '3.11'
          # via
          #   anndata
          #   pytest
      fast-array-utils==1.5.1 ; python_full_version >= '3.12'
          # via scanpy
      fbpca==1.0
          # via
          #   geosketch
          #   scanorama
      filelock==4.0.1
          # via torch
      flax==0.10.7 ; python_full_version < '3.11'
          # via scvi-tools
      fonttools==4.65.0
          # via matplotlib
      formulaic==1.2.2
          # via statsmodels
      frozenlist==1.8.0
          # via
          #   aiohttp
          #   aiosignal
      fsspec==2026.9.0
          # via
          #   etils
          #   lightning
          #   pytorch-lightning
          #   torch
      future==1.0.0
          # via pygenometracks
      geosketch==1.3
          # via scanorama
      gffutils==0.14
          # via pygenometracks
      google-crc32c==1.8.0 ; python_full_version >= '3.11'
          # via zarr
      grpcio==1.84.0
          # via tensorboard
      h11==0.16.0 ; python_full_version >= '3.11'
          # via httpcore
      h2==4.4.1 ; python_full_version >= '3.11'
          # via httpx
      h5py==3.16.0
          # via
          #   -r requirements.in
          #   anndata
          #   cooler
          #   loompy
          #   mudata
          #   scanpy
      harmony-pytorch==0.1.8
          # via -r requirements.in
      hic-straw==1.3.1
          # via -r requirements.in
      hicmatrix==17.2
          # via pygenometracks
      hpack==4.2.0 ; python_full_version >= '3.11'
          # via h2
      httpcore==1.0.9 ; python_full_version >= '3.11'
          # via httpx
      httpx==0.28.1 ; python_full_version >= '3.11'
          # via blosc2
      humanize==4.16.0 ; python_full_version < '3.11'
          # via orbax-checkpoint
      hyperframe==6.1.0 ; python_full_version >= '3.11'
          # via h2
      idna==3.20
          # via
          #   anyio
          #   httpx
          #   requests
          #   yarl
      igraph==1.0.0
          # via
          #   leidenalg
          #   louvain
      imageio==2.37.4
          # via scikit-image
      imagesize==2.0.1 ; python_full_version < '3.12'
          # via sphinx
      importlib-resources==7.1.0 ; python_full_version < '3.11'
          # via etils
      iniconfig==2.3.0
          # via pytest
      interface-meta==2.0.1
          # via formulaic
      intervaltree==3.2.1
          # via
          #   hicmatrix
          #   pygenometracks
          #   scanorama
      jax==0.6.2 ; python_full_version < '3.11'
          # via
          #   flax
          #   numpyro
          #   optax
          #   orbax-checkpoint
          #   scvi-tools
      jaxlib==0.6.2 ; python_full_version < '3.11'
          # via
          #   jax
          #   numpyro
          #   optax
          #   scvi-tools
      jinja2==3.1.6
          # via
          #   sphinx
          #   torch
      joblib==1.6.0
          # via
          #   cooltools
          #   pynndescent
          #   scanpy
          #   scikit-learn
          #   scvi-tools
      kiwisolver==1.5.1
          # via matplotlib
      lazy-loader==0.5
          # via scikit-image
      legacy-api-wrap==1.5
          # via
          #   anndata
          #   scanpy
      leidenalg==0.12.0
          # via -r requirements.in
      lightning==2.6.6
          # via scvi-tools
      lightning-utilities==0.15.3
          # via
          #   lightning
          #   pytorch-lightning
          #   torchmetrics
      llvmlite==0.49.0
          # via
          #   numba
          #   pynndescent
      loompy==3.0.8
          # via -r requirements.in
      louvain==0.7.1
          # via -r requirements.in
      markdown==3.10.3
          # via tensorboard
      markdown-it-py==4.2.0
          # via rich
      markupsafe==3.0.3
          # via
          #   jinja2
          #   werkzeug
      matplotlib==3.10.9 ; python_full_version < '3.11'
          # via
          #   -r requirements.in
          #   bioframe
          #   cooltools
          #   deeptools
          #   pygenometracks
          #   scanorama
          #   scanpy
          #   scrublet
          #   seaborn
      matplotlib==3.11.2 ; python_full_version >= '3.11'
          # via
          #   -r requirements.in
          #   bioframe
          #   cooltools
          #   deeptools
          #   pygenometracks
          #   scanorama
          #   scanpy
          #   scrublet
          #   seaborn
      maturin==1.15.0 ; python_full_version >= '3.12'
          # via deeptools
      mdurl==0.1.2
          # via markdown-it-py
      ml-collections==1.1.0
          # via scvi-tools
      ml-dtypes==0.6.0 ; python_full_version < '3.11'
          # via
          #   jax
          #   jaxlib
          #   tensorstore
      mpmath==1.3.0
          # via sympy
      msgpack==1.2.2
          # via
          #   blosc2
          #   flax
          #   orbax-checkpoint
      msgspec==0.21.1 ; python_full_version >= '3.12'
          # via zarr
      mudata==0.3.10 ; python_full_version < '3.12'
          # via scvi-tools
      mudata==0.4.1 ; python_full_version >= '3.12'
          # via scvi-tools
      multidict==6.9.0
          # via
          #   aiohttp
          #   yarl
      multipledispatch==1.0.0 ; python_full_version < '3.11'
          # via numpyro
      multiprocess==0.70.19
          # via
          #   cooler
          #   cooltools
      narwhals==2.26.0
          # via
          #   formulaic
          #   plotly
          #   scikit-learn
      natsort==8.4.0
          # via
          #   anndata
          #   scanpy
      ndindex==1.10.1
          # via blosc2
      nest-asyncio==1.6.0 ; python_full_version < '3.11' and sys_platform == 'win32'
          # via orbax-checkpoint
      networkx==3.4.2 ; python_full_version < '3.11'
          # via
          #   scanpy
          #   scikit-image
          #   torch
      networkx==3.6.1 ; python_full_version >= '3.11'
          # via
          #   scanpy
          #   scikit-image
          #   torch
      numba==0.67.0
          # via
          #   cooltools
          #   fast-array-utils
          #   loompy
          #   pynndescent
          #   scanpy
          #   scrublet
          #   scvi-tools
          #   sparse
          #   umap-learn
      numcodecs==0.16.5 ; python_full_version == '3.11.*'
          # via zarr
      numcodecs==0.17.0 ; python_full_version >= '3.12'
          # via zarr
      numexpr==2.14.1 ; python_full_version < '3.11'
          # via
          #   blosc2
          #   tables
      numexpr==2.14.2 ; python_full_version >= '3.11'
          # via
          #   blosc2
          #   tables
      numpy==2.2.6 ; python_full_version < '3.11'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   bioframe
          #   blosc2
          #   contourpy
          #   cooler
          #   cooltools
          #   deeptools
          #   formulaic
          #   geosketch
          #   h5py
          #   harmony-pytorch
          #   hicmatrix
          #   imageio
          #   jax
          #   jaxlib
          #   loompy
          #   matplotlib
          #   ml-dtypes
          #   mudata
          #   numba
          #   numexpr
          #   numpy-groupies
          #   numpyro
          #   optax
          #   orbax-checkpoint
          #   pandas
          #   patsy
          #   pybedtools
          #   pygenometracks
          #   pyro-ppl
          #   scanorama
          #   scanpy
          #   scikit-image
          #   scikit-learn
          #   scipy
          #   scrublet
          #   scvi-tools
          #   seaborn
          #   sparse
          #   statsmodels
          #   tables
          #   tensorboard
          #   tensorstore
          #   tifffile
          #   torchmetrics
          #   treescope
          #   umap-learn
          #   xarray
      numpy==2.4.6 ; python_full_version == '3.11.*'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   bioframe
          #   blosc2
          #   contourpy
          #   cooler
          #   cooltools
          #   deeptools
          #   formulaic
          #   geosketch
          #   h5py
          #   harmony-pytorch
          #   hicmatrix
          #   imageio
          #   loompy
          #   matplotlib
          #   mudata
          #   numba
          #   numcodecs
          #   numexpr
          #   numpy-groupies
          #   pandas
          #   patsy
          #   pybedtools
          #   pygenometracks
          #   pyro-ppl
          #   scanorama
          #   scanpy
          #   scikit-image
          #   scikit-learn
          #   scikit-misc
          #   scipy
          #   scrublet
          #   scvi-tools
          #   seaborn
          #   sparse
          #   statsmodels
          #   tables
          #   tensorboard
          #   tifffile
          #   torchmetrics
          #   umap-learn
          #   xarray
          #   zarr
      numpy==2.5.3 ; python_full_version >= '3.12'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   bioframe
          #   blosc2
          #   contourpy
          #   cooler
          #   cooltools
          #   deeptools
          #   fast-array-utils
          #   formulaic
          #   geosketch
          #   h5py
          #   harmony-pytorch
          #   hicmatrix
          #   imageio
          #   loompy
          #   matplotlib
          #   mudata
          #   numba
          #   numcodecs
          #   numexpr
          #   numpy-groupies
          #   pandas
          #   patsy
          #   pybedtools
          #   pygenometracks
          #   pyro-ppl
          #   scanorama
          #   scanpy
          #   scikit-image
          #   scikit-learn
          #   scikit-misc
          #   scipy
          #   scrublet
          #   scvi-tools
          #   seaborn
          #   sparse
          #   statsmodels
          #   tables
          #   tensorboard
          #   tifffile
          #   torchmetrics
          #   umap-learn
          #   xarray
          #   zarr
      numpy-groupies==0.11.3
          # via loompy
      numpydoc==1.11.0 ; python_full_version < '3.12'
          # via deeptools
      numpyro==0.19.0 ; python_full_version < '3.11'
          # via scvi-tools
      nvidia-cublas==13.1.1.3 ; sys_platform == 'linux'
          # via
          #   cuda-toolkit
          #   nvidia-cudnn-cu13
          #   nvidia-cusolver
      nvidia-cuda-cupti==13.0.85 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      nvidia-cuda-nvrtc==13.0.88 ; sys_platform == 'linux'
          # via
          #   cuda-toolkit
          #   nvidia-cublas
      nvidia-cuda-runtime==13.0.96 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      nvidia-cudnn-cu13==9.24.0.43 ; sys_platform == 'linux'
          # via torch
      nvidia-cufft==12.0.0.61 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      nvidia-cufile==1.15.1.6 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      nvidia-curand==10.4.0.35 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      nvidia-cusolver==12.0.4.66 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      nvidia-cusparse==12.6.3.3 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via
          #   cuda-toolkit
          #   nvidia-cusolver
      nvidia-cusparselt-cu13==0.8.1 ; sys_platform == 'linux'
          # via torch
      nvidia-nccl-cu13==2.30.7 ; sys_platform == 'linux'
          # via torch
      nvidia-nvjitlink==13.4.92 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via
          #   cuda-toolkit
          #   nvidia-cufft
          #   nvidia-cusolver
          #   nvidia-cusparse
      nvidia-nvshmem-cu13==3.4.5 ; sys_platform == 'linux'
          # via torch
      nvidia-nvtx==13.0.85 ; (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')
          # via cuda-toolkit
      opt-einsum==3.4.0
          # via
          #   jax
          #   pyro-ppl
      optax==0.2.8 ; python_full_version < '3.11'
          # via
          #   flax
          #   scvi-tools
      orbax-checkpoint==0.11.39 ; python_full_version < '3.11'
          # via flax
      packaging==26.3
          # via
          #   anndata
          #   lazy-loader
          #   lightning
          #   lightning-utilities
          #   matplotlib
          #   patsy
          #   plotly
          #   pyfaidx
          #   pytest
          #   pytorch-lightning
          #   scanpy
          #   scikit-image
          #   sphinx
          #   statsmodels
          #   tables
          #   tensorboard
          #   torchmetrics
          #   xarray
          #   zarr
      pandas==2.3.3 ; python_full_version < '3.12'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   bioframe
          #   cooler
          #   cooltools
          #   formulaic
          #   harmony-pytorch
          #   hicmatrix
          #   mudata
          #   pybedtools
          #   scanpy
          #   scrublet
          #   scvi-tools
          #   seaborn
          #   statsmodels
          #   xarray
      pandas==3.0.6 ; python_full_version >= '3.12'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   bioframe
          #   cooler
          #   cooltools
          #   formulaic
          #   harmony-pytorch
          #   hicmatrix
          #   mudata
          #   pybedtools
          #   scanpy
          #   scrublet
          #   scvi-tools
          #   seaborn
          #   statsmodels
          #   xarray
      patsy==1.0.3
          # via
          #   scanpy
          #   statsmodels
      pillow==12.3.0
          # via
          #   imageio
          #   matplotlib
          #   scikit-image
          #   tensorboard
      plotly==7.1.0 ; python_full_version < '3.12'
          # via deeptools
      pluggy==1.6.0
          # via pytest
      propcache==0.5.4
          # via
          #   aiohttp
          #   yarl
      protobuf==7.36.2
          # via
          #   orbax-checkpoint
          #   tensorboard
      psutil==7.2.2
          # via
          #   harmony-pytorch
          #   orbax-checkpoint
      py-cpuinfo==9.0.0
          # via tables
      py2bit==1.0.1
          # via deeptools
      pybedtools==0.12.1
          # via -r requirements.in
      pybigwig==0.3.26
          # via
          #   -r requirements.in
          #   deeptools
          #   pygenometracks
      pybind11==3.1.0
          # via hic-straw
      pydantic==2.13.5
          # via
          #   blosc2
          #   pydantic-settings
      pydantic-core==2.46.5
          # via pydantic
      pydantic-settings==2.15.0 ; python_full_version >= '3.12'
          # via scverse-misc
      pyfaidx==0.9.0.4
          # via
          #   cooler
          #   gffutils
      pygenometracks==3.1.2
          # via -r requirements.in
      pygments==2.21.0
          # via
          #   pytest
          #   rich
          #   sphinx
      pynndescent==0.6.0
          # via
          #   bbknn
          #   scanpy
          #   umap-learn
      pyparsing==3.3.2
          # via matplotlib
      pyro-api==0.1.2
          # via pyro-ppl
      pyro-ppl==1.9.1
          # via scvi-tools
      pysam==0.24.1
          # via
          #   -r requirements.in
          #   deeptools
          #   pybedtools
          #   pygenometracks
      pytest==9.1.1
          # via pygenometracks
      python-dateutil==2.9.0.post0
          # via
          #   matplotlib
          #   pandas
      python-dotenv==1.2.3 ; python_full_version >= '3.12'
          # via
          #   pydantic-settings
          #   scverse-misc
      pytorch-lightning==2.6.6
          # via lightning
      pytz==2026.3.post1 ; python_full_version < '3.12'
          # via pandas
      pyyaml==6.0.3
          # via
          #   bioframe
          #   cooler
          #   donfig
          #   flax
          #   lightning
          #   ml-collections
          #   orbax-checkpoint
          #   pytorch-lightning
      requests==2.34.2
          # via
          #   bioframe
          #   blosc2
          #   sphinx
      rich==15.0.0
          # via
          #   blosc2
          #   flax
          #   scvi-tools
      roman-numerals==4.1.0 ; python_full_version == '3.11.*'
          # via sphinx
      scanorama==1.7.4
          # via -r requirements.in
      scanpy==1.11.5 ; python_full_version < '3.12'
          # via
          #   -r requirements.in
          #   scvi-tools
      scanpy==1.12.4 ; python_full_version >= '3.12'
          # via
          #   -r requirements.in
          #   scvi-tools
      scikit-image==0.25.2 ; python_full_version < '3.11'
          # via
          #   cooltools
          #   scrublet
      scikit-image==0.26.0 ; python_full_version >= '3.11'
          # via
          #   cooltools
          #   scrublet
      scikit-learn==1.7.2 ; python_full_version < '3.11'
          # via
          #   -r requirements.in
          #   bbknn
          #   cooltools
          #   geosketch
          #   harmony-pytorch
          #   pynndescent
          #   scanorama
          #   scanpy
          #   scrublet
          #   scvi-tools
          #   umap-learn
      scikit-learn==1.9.1 ; python_full_version >= '3.11'
          # via
          #   -r requirements.in
          #   bbknn
          #   cooltools
          #   geosketch
          #   harmony-pytorch
          #   pynndescent
          #   scanorama
          #   scanpy
          #   scrublet
          #   scvi-tools
          #   umap-learn
      scikit-misc==0.5.2 ; python_full_version >= '3.11'
          # via scanpy
      scipy==1.15.3 ; python_full_version < '3.11'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   cooler
          #   cooltools
          #   deeptools
          #   formulaic
          #   hicmatrix
          #   jax
          #   jaxlib
          #   loompy
          #   mudata
          #   pynndescent
          #   scanorama
          #   scanpy
          #   scikit-image
          #   scikit-learn
          #   scrublet
          #   scvi-tools
          #   statsmodels
          #   umap-learn
      scipy==1.17.1 ; python_full_version == '3.11.*'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   cooler
          #   cooltools
          #   deeptools
          #   formulaic
          #   hicmatrix
          #   loompy
          #   mudata
          #   pynndescent
          #   scanorama
          #   scanpy
          #   scikit-image
          #   scikit-learn
          #   scrublet
          #   scvi-tools
          #   statsmodels
          #   umap-learn
      scipy==1.18.1 ; python_full_version >= '3.12'
          # via
          #   -r requirements.in
          #   anndata
          #   bbknn
          #   cooler
          #   cooltools
          #   deeptools
          #   fast-array-utils
          #   formulaic
          #   hicmatrix
          #   loompy
          #   mudata
          #   pynndescent
          #   scanorama
          #   scanpy
          #   scikit-image
          #   scikit-learn
          #   scrublet
          #   scvi-tools
          #   statsmodels
          #   umap-learn
      scrublet==0.2.3
          # via -r requirements.in
      scverse-misc==0.0.3 ; python_full_version < '3.12'
          # via
          #   anndata
          #   mudata
      scverse-misc==0.1.6 ; python_full_version >= '3.12'
          # via
          #   anndata
          #   mudata
          #   scanpy
      scvi-tools==1.3.3 ; python_full_version < '3.11'
          # via -r requirements.in
      scvi-tools==1.4.2 ; python_full_version == '3.11.*'
          # via -r requirements.in
      scvi-tools==1.5.1 ; python_full_version >= '3.12'
          # via -r requirements.in
      seaborn==0.13.2
          # via
          #   -r requirements.in
          #   scanpy
      session-info2==0.4.1 ; python_full_version < '3.12'
          # via
          #   mudata
          #   scanpy
          #   scverse-misc
      session-info2==0.4.2 ; python_full_version >= '3.12'
          # via
          #   mudata
          #   scanpy
          #   scverse-misc
      setuptools==84.0.0
          # via
          #   loompy
          #   tensorboard
          #   torch
      simplejson==4.1.2
          # via
          #   cooler
          #   gffutils
          #   orbax-checkpoint
      six==1.17.0
          # via
          #   docrep
          #   python-dateutil
      snowballstemmer==3.1.1 ; python_full_version < '3.12'
          # via sphinx
      sortedcontainers==2.4.0
          # via intervaltree
      sparse==0.17.0 ; python_full_version < '3.11'
          # via scvi-tools
      sparse==0.19.2 ; python_full_version >= '3.11'
          # via scvi-tools
      sphinx==8.1.3 ; python_full_version < '3.11'
          # via numpydoc
      sphinx==9.0.4 ; python_full_version == '3.11.*'
          # via numpydoc
      sphinxcontrib-applehelp==2.0.0 ; python_full_version < '3.12'
          # via sphinx
      sphinxcontrib-devhelp==2.0.0 ; python_full_version < '3.12'
          # via sphinx
      sphinxcontrib-htmlhelp==2.1.0 ; python_full_version < '3.12'
          # via sphinx
      sphinxcontrib-jsmath==1.0.1 ; python_full_version < '3.12'
          # via sphinx
      sphinxcontrib-qthelp==2.0.0 ; python_full_version < '3.12'
          # via sphinx
      sphinxcontrib-serializinghtml==2.0.0 ; python_full_version < '3.12'
          # via sphinx
      statsmodels==0.15.0
          # via
          #   -r requirements.in
          #   scanpy
      sympy==1.14.0
          # via torch
      tables==3.10.1 ; python_full_version < '3.11'
          # via hicmatrix
      tables==3.11.1 ; python_full_version >= '3.11'
          # via hicmatrix
      tensorboard==2.21.0
          # via scvi-tools
      tensorboard-data-server==0.7.2
          # via tensorboard
      tensorstore==0.1.78 ; python_full_version < '3.11'
          # via
          #   flax
          #   orbax-checkpoint
      texttable==1.7.0
          # via igraph
      threadpoolctl==3.7.0
          # via
          #   blosc2
          #   harmony-pytorch
          #   scikit-learn
      tifffile==2025.5.10 ; python_full_version < '3.11'
          # via scikit-image
      tifffile==2026.3.3 ; python_full_version == '3.11.*'
          # via scikit-image
      tifffile==2026.9.15 ; python_full_version >= '3.12'
          # via scikit-image
      tomli==2.4.1 ; python_full_version < '3.11'
          # via
          #   numpydoc
          #   pytest
          #   sphinx
      toolz==1.1.0
          # via cytoolz
      torch==2.14.0
          # via
          #   harmony-pytorch
          #   lightning
          #   pyro-ppl
          #   pytorch-lightning
          #   scvi-tools
          #   torchmetrics
      torchmetrics==1.9.0
          # via
          #   lightning
          #   pytorch-lightning
          #   scvi-tools
      tqdm==4.70.1
          # via
          #   lightning
          #   numpyro
          #   pyro-ppl
          #   pytorch-lightning
          #   scanpy
          #   scvi-tools
          #   umap-learn
      treescope==0.1.10 ; python_full_version < '3.11'
          # via flax
      triton==3.8.0 ; python_full_version < '3.15' and sys_platform == 'linux'
          # via torch
      typing-extensions==4.16.0
          # via
          #   aiohttp
          #   aiosignal
          #   anndata
          #   anyio
          #   etils
          #   exceptiongroup
          #   flax
          #   formulaic
          #   grpcio
          #   lightning
          #   lightning-utilities
          #   multidict
          #   numcodecs
          #   orbax-checkpoint
          #   pydantic
          #   pydantic-core
          #   pytorch-lightning
          #   scanpy
          #   scverse-misc
          #   tables
          #   torch
          #   typing-inspection
          #   zarr
      typing-inspection==0.4.4
          # via
          #   pydantic
          #   pydantic-settings
      tzdata==2026.4 ; python_full_version < '3.12' or sys_platform == 'emscripten' or sys_platform == 'win32'
          # via pandas
      umap-learn==0.5.12
          # via
          #   -r requirements.in
          #   bbknn
          #   scanpy
          #   scrublet
      urllib3==2.8.0
          # via requests
      uvloop==0.22.1 ; python_full_version < '3.11' and sys_platform != 'win32'
          # via orbax-checkpoint
      werkzeug==3.1.8
          # via tensorboard
      wrapt==2.4.1
          # via formulaic
      xarray==2025.6.1 ; python_full_version < '3.11'
          # via scvi-tools
      xarray==2026.7.0 ; python_full_version >= '3.11'
          # via scvi-tools
      yarl==1.25.1
          # via aiohttp
      zarr==3.1.6 ; python_full_version == '3.11.*'
          # via anndata
      zarr==3.4.0 ; python_full_version >= '3.12'
          # via anndata
      zipp==4.1.0 ; python_full_version < '3.11'
          # via etils
      
    • install-nextflow.sh 7 KB
      #!/usr/bin/env bash
      # Install the pinned Nextflow release and check for a container runtime.
      # Docker and Singularity are only checked: when one is missing, the script prints how to get it.
      # Usage: bash install-nextflow.sh [--docker | --singularity | --both]
      #
      # Options:
      #   --docker       Nextflow, then check for Docker (default, for local/cloud)
      #   --singularity  Nextflow, then check for Singularity/Apptainer (for HPC clusters)
      #   --both         Nextflow, then check for both
      
      set -euo pipefail
      
      # Pinned Nextflow release. The ENCODE Toolkit pipelines are validated against this version
      # with `nextflow lint` and `nextflow run -preview`. To move to another release, change the
      # version and replace the checksum with the sha256 published for the
      # `nextflow-<version>-dist` asset on https://github.com/nextflow-io/nextflow/releases
      NEXTFLOW_VERSION="26.04.6"
      NEXTFLOW_SHA256="182a63c74074e2dc7956ffa3c8cd59de952ed2c44394e21faf5e1736b945444c"
      NEXTFLOW_URL="https://github.com/nextflow-io/nextflow/releases/download/v${NEXTFLOW_VERSION}/nextflow-${NEXTFLOW_VERSION}-dist"
      
      sha256_of() {
          if command -v sha256sum &> /dev/null; then
              sha256sum "$1" | awk '{print $1}'
          else
              shasum -a 256 "$1" | awk '{print $1}'
          fi
      }
      
      echo "============================================"
      echo "ENCODE Nextflow Pipeline Infrastructure Setup"
      echo "============================================"
      echo ""
      
      MODE="${1:---docker}"
      
      # --- Install Nextflow ---
      install_nextflow() {
          echo "--- Installing Nextflow ---"
          # Only an existing install of exactly the pinned release is accepted. Otherwise the pinned,
          # checksum-verified release is installed; a launcher it would overwrite is kept as a backup.
          local existing_version=""
          if command -v nextflow &> /dev/null; then
              # A launcher that cannot start (no Java, broken install) counts as "no usable version"
              existing_version="$(nextflow -version 2>&1 | awk '$1 == "version" {print $2; exit}' || true)"
          fi
          if [ "$existing_version" = "$NEXTFLOW_VERSION" ]; then
              echo "Nextflow ${NEXTFLOW_VERSION} already installed: $(command -v nextflow)"
          else
              if [ -n "$existing_version" ]; then
                  echo "Found Nextflow ${existing_version} at $(command -v nextflow); the pipelines are validated against ${NEXTFLOW_VERSION}."
              fi
              # Check Java
              if ! command -v java &> /dev/null; then
                  echo "ERROR: Java 17+ is required for Nextflow."
                  echo "Install Java first:"
                  echo "  macOS:  brew install openjdk@17"
                  echo "  Ubuntu: sudo apt-get install -y openjdk-17-jdk"
                  echo "  conda:  conda install -c conda-forge 'openjdk>=17'"
                  exit 1
              fi
      
              JAVA_VER=$(java -version 2>&1 | head -1 | awk -F '"' '{print $2}' | awk -F '.' '{print $1}')
              if [ "$JAVA_VER" -lt 17 ] 2>/dev/null; then
                  echo "WARNING: Java $JAVA_VER detected. Nextflow ${NEXTFLOW_VERSION} requires Java 17+."
              fi
      
              # Download the pinned, self-contained release and verify it before it is ever executed
              local tmp_file
              tmp_file="$(mktemp)"
              echo "Downloading Nextflow ${NEXTFLOW_VERSION}..."
              curl -fsSL "$NEXTFLOW_URL" -o "$tmp_file"
      
              local actual_sha
              actual_sha="$(sha256_of "$tmp_file")"
              if [ "$actual_sha" != "$NEXTFLOW_SHA256" ]; then
                  echo "ERROR: checksum mismatch for Nextflow ${NEXTFLOW_VERSION}; refusing to install."
                  echo "  expected: $NEXTFLOW_SHA256"
                  echo "  actual:   $actual_sha"
                  rm -f "$tmp_file"
                  exit 1
              fi
              echo "Checksum verified."
      
              # Install into a directory on PATH when possible, otherwise into ~/.local/bin
              local install_dir
              if [ -w /usr/local/bin ]; then
                  install_dir="/usr/local/bin"
              else
                  install_dir="$HOME/.local/bin"
                  mkdir -p "$install_dir"
              fi
              local nextflow_bin="$install_dir/nextflow"
              if [ -e "$nextflow_bin" ]; then
                  mv "$nextflow_bin" "$nextflow_bin.previous"
                  echo "Kept the launcher that was there as $nextflow_bin.previous"
              fi
              mv "$tmp_file" "$nextflow_bin"
              chmod 755 "$nextflow_bin"
              echo "Nextflow installed to $nextflow_bin"
      
              # Put the pinned release ahead of any other Nextflow on PATH
              if [ "$(command -v nextflow || true)" != "$nextflow_bin" ]; then
                  echo "Put it first on your PATH: export PATH=\"$install_dir:\$PATH\""
              fi
      
              # Call the installed file directly: it may not be on PATH yet in this shell
              "$nextflow_bin" -version
          fi
          echo ""
      }
      
      # --- Install Docker ---
      install_docker() {
          echo "--- Checking Docker ---"
          if command -v docker &> /dev/null; then
              echo "Docker already installed: $(docker --version)"
          else
              OS="$(uname -s)"
              case "$OS" in
                  Darwin)
                      echo "macOS detected. Install Docker Desktop:"
                      echo "  brew install --cask docker"
                      echo "  OR download from https://www.docker.com/products/docker-desktop/"
                      ;;
                  Linux)
                      echo "Linux detected. Install Docker Engine:"
                      echo "  curl -fsSL https://get.docker.com | sh"
                      echo "  sudo usermod -aG docker \$USER"
                      echo "  newgrp docker"
                      ;;
                  *)
                      echo "Unsupported OS: $OS"
                      echo "See https://docs.docker.com/get-docker/"
                      ;;
              esac
          fi
          echo ""
      }
      
      # --- Install Singularity ---
      install_singularity() {
          echo "--- Checking Singularity ---"
          if command -v singularity &> /dev/null; then
              echo "Singularity already installed: $(singularity --version)"
          elif command -v apptainer &> /dev/null; then
              echo "Apptainer (Singularity successor) already installed: $(apptainer --version)"
          else
              echo "Singularity/Apptainer not found."
              echo "For HPC clusters, check: module avail singularity"
              echo ""
              echo "Install options:"
              echo "  conda: conda install -c conda-forge singularity"
              echo "  Linux: See https://apptainer.org/docs/admin/main/installation.html"
              echo ""
              echo "NOTE: Singularity requires Linux. On macOS, use Docker or a Linux VM."
          fi
          echo ""
      }
      
      # --- Execute ---
      install_nextflow
      
      case "$MODE" in
          --docker)
              install_docker
              ;;
          --singularity)
              install_singularity
              ;;
          --both)
              install_docker
              install_singularity
              ;;
          *)
              echo "Unknown mode: $MODE"
              echo "Usage: bash install-nextflow.sh [--docker | --singularity | --both]"
              exit 1
              ;;
      esac
      
      echo "============================================"
      echo "Pipeline infrastructure setup complete."
      echo ""
      echo "Test with:"
      echo "  nextflow run hello"
      echo ""
      echo "Run ENCODE pipelines with:"
      echo "  nextflow run main.nf -profile local    # Docker"
      echo "  nextflow run main.nf -profile slurm    # Singularity + SLURM"
      echo "============================================"
      
    • install-python-packages.sh 3.2 KB
      #!/usr/bin/env bash
      # Install Python packages for ENCODE data analysis
      # Usage: bash install-python-packages.sh [--all | --singlecell | --hic | --deeptools | --genomics]
      #
      # Categories:
      #   --all          Install all packages (default if no argument)
      #   --singlecell   scanpy, scvi-tools, harmony-pytorch, scrublet, scanorama, bbknn
      #   --hic          cooler, cooltools, hic-straw, pyGenomeTracks
      #   --deeptools    deeptools, pyBigWig, pysam, pybedtools
      #   --genomics     Core genomics (numpy, pandas, scipy, matplotlib, seaborn)
      #
      # Every install is constrained by constraints.txt, a lock file with exact versions for the
      # full dependency tree (Python 3.10+), so the same command gives the same environment.
      # The direct dependencies live in requirements.in. To refresh the lock:
      #   uv pip compile --universal --python-version 3.10 requirements.in -o constraints.txt
      
      set -euo pipefail
      
      SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
      CONSTRAINTS="$SCRIPT_DIR/constraints.txt"
      
      if [ ! -f "$CONSTRAINTS" ]; then
          echo "ERROR: $CONSTRAINTS not found. It must sit next to this script."
          exit 1
      fi
      
      pip_install() {
          pip3 install --constraint "$CONSTRAINTS" "$@"
      }
      
      echo "============================================"
      echo "ENCODE Bioinformatics Python Package Installer"
      echo "============================================"
      echo ""
      echo "Python: $(python3 --version 2>&1)"
      echo "pip:    $(pip3 --version 2>&1 | head -1)"
      echo ""
      
      CATEGORY="${1:---all}"
      
      install_genomics() {
          echo "--- Installing Core Genomics packages ---"
          pip_install \
              numpy \
              pandas \
              scipy \
              matplotlib \
              seaborn \
              scikit-learn \
              statsmodels \
              h5py \
              loompy
      }
      
      install_singlecell() {
          echo "--- Installing Single-Cell packages ---"
          pip_install \
              scanpy \
              anndata \
              scvi-tools \
              scrublet \
              scanorama \
              bbknn \
              harmony-pytorch \
              leidenalg \
              louvain \
              umap-learn
          echo ""
          echo "NOTE: CellBender requires separate install (GPU recommended):"
          echo "  pip install cellbender"
      }
      
      install_hic() {
          echo "--- Installing Hi-C Analysis packages ---"
          pip_install \
              cooler \
              cooltools \
              hic-straw \
              pyGenomeTracks \
              bioframe
      }
      
      install_deeptools() {
          echo "--- Installing Genomics / Signal Processing packages ---"
          pip_install \
              deeptools \
              pyBigWig \
              pysam \
              pybedtools
      }
      
      case "$CATEGORY" in
          --all)
              install_genomics
              install_singlecell
              install_hic
              install_deeptools
              ;;
          --singlecell)
              install_genomics
              install_singlecell
              ;;
          --hic)
              install_genomics
              install_hic
              ;;
          --deeptools)
              install_genomics
              install_deeptools
              ;;
          --genomics)
              install_genomics
              ;;
          *)
              echo "Unknown category: $CATEGORY"
              echo "Usage: bash install-python-packages.sh [--all | --singlecell | --hic | --deeptools | --genomics]"
              exit 1
              ;;
      esac
      
      echo ""
      echo "============================================"
      echo "Python package installation complete."
      echo "============================================"
      
    • install-r-packages.R 5.2 KB · in bundle
    • requirements.in 512 B · in bundle
  • SKILL.md 35.8 KB
    ---
    name: bioinformatics-installer
    description: "Install bioinformatics tools for ENCODE data analysis. Covers CLI tools (BWA, STAR, samtools, MACS2), R/Bioconductor packages (DESeq2, Seurat, ChIPseeker), Python packages (Scanpy, deeptools), and Nextflow pipeline infrastructure. Generates conda environments, R install scripts, and Python requirements. Use when the user needs to set up a bioinformatics workstation, install tools for a specific assay, create reproducible environments, or troubleshoot dependency issues. Trigger on: install tools, set up environment, conda create, bioinformatics setup, install R packages, install Bioconductor, install pipeline tools."
    ---
    
    # Bioinformatics Installer for ENCODE Data Analysis
    
    Install all bioinformatics tools needed for ENCODE data analysis, organized by assay type.
    This skill provides ready-to-use conda environment definitions, R/Bioconductor install scripts,
    Python package lists, and Nextflow pipeline infrastructure setup. Every primary tool is
    version-pinned for reproducibility; a few utility packages (`bedops`, `ucsc-bedgraphtobigwig`,
    `pigz`, `openjdk`, `r-base`) float so the solver can satisfy the pinned tools around them.
    
    ## When to Use
    
    - User wants to install bioinformatics tools needed for ENCODE data analysis
    - User asks about "install tools", "conda environment", "setup bioinformatics", or "install HOMER/MACS2/deeptools"
    - User needs pre-configured conda environments for specific assay pipelines (ChIP-seq, ATAC-seq, RNA-seq, etc.)
    - User wants to install R/Bioconductor packages (DESeq2, Seurat, ChIPseeker) or Python packages (Scanpy, pysam)
    - Example queries: "install tools for ChIP-seq analysis", "set up a conda environment for ATAC-seq", "install deeptools and bedtools"
    
    ## Overview
    
    ENCODE data analysis requires a broad ecosystem of tools spanning command-line aligners, peak
    callers, signal processors, statistical analysis frameworks in R, Python visualization and
    single-cell packages, and workflow engines. Setting up these tools correctly — with compatible
    versions, proper channel priorities, and no dependency conflicts — is a significant barrier for
    new users and a reproducibility concern for experienced analysts.
    
    This skill solves that by providing:
    - **7 assay-specific conda environments** with pinned tool versions matching ENCODE pipeline standards
    - **R/Bioconductor install script** covering 47 packages across 8 categories
    - **Python install script** for single-cell, Hi-C, and genomics packages, locked by `scripts/constraints.txt`
    - **Nextflow install script + container checks** for pipeline execution on local, HPC, and cloud platforms
    
    The environment files, `scripts/requirements.in` and `scripts/install-r-packages.R` are the
    authoritative package lists; the tables below summarise them.
    
    All environments use the same channel priority (conda-forge > bioconda). Every file is dry-run
    solved for Linux x86_64 in CI, so the pinned versions exist and install together. Several tools
    have no macOS arm64 build on bioconda; on Apple Silicon use the pipeline Docker images instead.
    
    For every tool that an environment and the matching `pipeline-*` Docker image both install, the
    two pin the same version, and CI fails if they drift. Some tools exist on only one side — for
    example `phantompeakqualtools`, `salmon`, `subread` and the Hi-C `bedtools` are conda-only,
    while juicer_tools, SEACR, Hotspot2 and `modwt` are image-only because they are not conda
    packages. Those are noted in the sections below.
    
    ## Quick Start
    
    Install a complete environment for any assay type with a single command:
    
    ```bash
    # ChIP-seq (histone or TF)
    conda env create -f skills/bioinformatics-installer/environments/chipseq-env.yml
    
    # ATAC-seq
    conda env create -f skills/bioinformatics-installer/environments/atacseq-env.yml
    
    # RNA-seq
    conda env create -f skills/bioinformatics-installer/environments/rnaseq-env.yml
    
    # Hi-C
    conda env create -f skills/bioinformatics-installer/environments/hic-env.yml
    
    # Whole-Genome Bisulfite Sequencing (WGBS)
    conda env create -f skills/bioinformatics-installer/environments/wgbs-env.yml
    
    # DNase-seq
    conda env create -f skills/bioinformatics-installer/environments/dnaseseq-env.yml
    
    # CUT&RUN / CUT&Tag
    conda env create -f skills/bioinformatics-installer/environments/cutandrun-env.yml
    ```
    
    Using mamba for faster solves (recommended):
    
    ```bash
    mamba env create -f skills/bioinformatics-installer/environments/chipseq-env.yml
    ```
    
    Install R and Python packages:
    
    ```bash
    # All R/Bioconductor packages
    Rscript skills/bioinformatics-installer/scripts/install-r-packages.R --all
    
    # All Python packages
    bash skills/bioinformatics-installer/scripts/install-python-packages.sh --all
    
    # Install the pinned Nextflow release and check for a Docker runtime
    bash skills/bioinformatics-installer/scripts/install-nextflow.sh --docker
    ```
    
    ## Per-Assay Environments
    
    ### ChIP-seq Environment (`encode-chipseq`)
    
    For histone modification and transcription factor ChIP-seq processing following ENCODE
    uniform pipeline standards (Landt et al. 2012, ENCODE Consortium 2020).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | BWA-MEM | 0.7.18 | Read alignment to reference genome (Li & Durbin 2009) |
    | samtools | 1.19 | BAM manipulation, sorting, indexing, flagstat (Li et al. 2009) |
    | MACS2 | 2.2.9.1 | Peak calling for narrow (TF) and broad (histone) marks (Zhang et al. 2008) |
    | Picard | 3.1.1 | Duplicate marking and library complexity metrics (Broad Institute) |
    | phantompeakqualtools | 1.2.2 | Strand cross-correlation (NSC/RSC) quality metrics (Kharchenko et al. 2008) |
    | IDR | 2.0.4.2 | Irreproducible Discovery Rate for replicate consistency (Li et al. 2011) |
    | deeptools | 3.5.5 | Signal normalization (bamCoverage), fingerprint, correlation (Ramirez et al. 2016) |
    | bedtools | 2.31.0 | Interval operations, blacklist filtering (Quinlan & Hall 2010) |
    | FastQC | 0.12.1 | Raw read quality assessment (Andrews 2010) |
    | Trim Galore | 0.6.10 | Adapter and quality trimming via Cutadapt (Krueger 2012) |
    | MultiQC | 1.21 | Aggregate QC report across all pipeline stages (Ewels et al. 2016) |
    | bedGraphToBigWig | — | Convert bedGraph signal to bigWig for genome browser viewing (Kent et al. 2010) |
    
    **Memory**: BWA index for GRCh38 requires ~5.5 GB RAM. Peak calling with MACS2 typically requires
    4-8 GB. phantompeakqualtools loads full BAM into memory.
    
    **Environment file**: `environments/chipseq-env.yml`
    
    ---
    
    ### ATAC-seq Environment (`encode-atacseq`)
    
    For chromatin accessibility profiling via ATAC-seq following ENCODE standards
    (Buenrostro et al. 2013, Corces et al. 2017).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | Bowtie2 | 2.5.4 | Alignment (preferred over BWA for ATAC-seq short fragments) (Langmead & Salzberg 2012) |
    | MACS2 | 2.2.9.1 | Peak calling (`pipeline-atacseq` calls it with `-f BAMPE` on Tn5-shifted reads) (Zhang et al. 2008) |
    | IDR | 2.0.4.2 | Irreproducible Discovery Rate for replicate consistency (Li et al. 2011) |
    | samtools | 1.19 | BAM manipulation, mitochondrial read filtering |
    | Picard | 3.1.1 | Duplicate marking, insert size metrics |
    | deeptools | 3.5.5 | alignmentSieve (Tn5 offset), bamCoverage (signal tracks), plotFingerprint |
    | bedtools | 2.31.0 | Blacklist filtering, interval operations |
    | FastQC | 0.12.1 | Raw read quality and adapter content assessment |
    | Trim Galore | 0.6.10 | Adapter trimming (Nextera adapters for ATAC-seq) |
    | MultiQC | 1.21 | Aggregate QC reporting |
    
    **Key ATAC-seq parameters**: Tn5 transposase introduces a +4/-5 bp offset that must be corrected.
    Fragment size distribution should show nucleosomal ladder (sub-nucleosomal, mono-, di-, tri-).
    TSS enrichment score should be >= 5 (GRCh38), >= 6 (hg19), or >= 10 (mm10) for high-quality data (ENCODE data standards).
    
    **Environment file**: `environments/atacseq-env.yml`
    
    ---
    
    ### RNA-seq Environment (`encode-rnaseq`)
    
    For gene expression quantification following ENCODE RNA-seq standards
    (Conesa et al. 2016, ENCODE Consortium 2020).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | STAR | 2.7.11b | Splice-aware alignment with 2-pass mapping (Dobin et al. 2013) |
    | RSEM | 1.3.3 | Gene/transcript quantification with expectation-maximization (Li & Dewey 2011) |
    | Kallisto | 0.50.1 | Pseudoalignment-based transcript quantification (Bray et al. 2016) |
    | Salmon | 1.10.3 | Quasi-mapping transcript quantification with GC bias correction (Patro et al. 2017) |
    | featureCounts (subread) | 2.0.6 | Gene-level read counting for count-based DE methods (Liao et al. 2014) |
    | samtools | 1.19 | BAM handling, flagstat, idxstats |
    | FastQC | 0.12.1 | Read quality assessment |
    | Trim Galore | 0.6.10 | Adapter and quality trimming |
    | MultiQC | 1.21 | Aggregate QC report |
    | RSeQC | 5.0.3 | RNA-seq-specific QC: gene body coverage, read distribution, inner distance (Wang et al. 2012) |
    
    **Memory**: STAR genome generation requires 32+ GB RAM for human genome. STAR alignment requires
    ~30 GB RAM. Kallisto and Salmon are memory-efficient alternatives (~4 GB).
    
    **Environment file**: `environments/rnaseq-env.yml`
    
    ---
    
    ### Hi-C Environment (`encode-hic`)
    
    For chromatin conformation capture processing following ENCODE Hi-C standards
    (Yardimci et al. 2019, Rao et al. 2014).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | BWA-MEM | 0.7.18 | Chimeric read alignment (each mate aligned independently) |
    | pairtools | 1.1.2 | Parse, sort, deduplicate, filter contact pairs (Open2C) |
    | cooler | 0.9.3 | Multi-resolution contact matrix storage and balancing (Abdennur & Mirny 2020) |
    | openjdk | >=11 | Java runtime for Juicer Tools (the jar itself is installed separately, see below) |
    | samtools | 1.19 | BAM handling for chimeric alignment parsing |
    | bedtools | 2.31.0 | Restriction fragment and TAD boundary operations |
    | FastQC | 0.12.1 | Read quality assessment |
    | Trim Galore | 0.6.10 | Adapter trimming |
    | MultiQC | 1.21 | Aggregate QC reporting |
    
    **Key Hi-C parameters**: Cis/trans ratio > 60%, long-range cis contacts (> 20 kb) > 40%.
    Resolution depends on sequencing depth: ~1 billion valid pairs for 5 kb resolution on human.
    
    **Juicer Tools is not in this environment.** The YAML installs only the Java runtime it needs.
    Download `juicer_tools.2.20.00.jar` from the `aidenlab/Juicebox` GitHub releases and invoke it
    with `java -jar`. The Hi-C pipeline image (`pipeline-hic/scripts/Dockerfile`) already contains it.
    
    The environment also installs `cooltools`, `hic-straw` and `pyGenomeTracks` from PyPI (unpinned).
    
    **Environment file**: `environments/hic-env.yml`
    
    ---
    
    ### WGBS Environment (`encode-wgbs`)
    
    For whole-genome bisulfite sequencing (DNA methylation) following ENCODE standards
    (Foox et al. 2021, Schultz et al. 2015).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | Bismark | 0.24.2 | Bisulfite-aware alignment and methylation extraction (Krueger & Andrews 2011) |
    | MethylDackel | 0.6.1 | Fast methylation extraction from bisulfite BAMs (Ryan 2023) |
    | samtools | 1.19 | BAM manipulation, merge, index |
    | bedtools | 2.31.0 | Interval operations for DMR analysis |
    | FastQC | 0.12.1 | Read quality assessment (note: bisulfite libraries have biased base composition) |
    | Trim Galore | 0.6.10 | Adapter trimming with --rrbs or default mode |
    | MultiQC | 1.21 | Aggregate QC reporting with Bismark module |
    | htslib | 1.19 | Provides `tabix` and `bgzip` for indexed, block-gzipped methylation BED files |
    | Bowtie2 | 2.5.4 | Backend aligner required by Bismark |
    
    **Key WGBS parameters**: Bisulfite conversion rate ≥ 98% (check unmethylated spike-in lambda DNA).
    CpG coverage >= 10x for reliable DMR calling. M-bias plots should be checked for end-repair artifacts.
    
    **Environment file**: `environments/wgbs-env.yml`
    
    ---
    
    ### DNase-seq Environment (`encode-dnaseseq`)
    
    For DNase I hypersensitive site mapping following ENCODE standards
    (Thurman et al. 2012, ENCODE Consortium 2020).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | BWA-MEM | 0.7.18 | Read alignment to reference genome |
    | Picard | 3.1.1 | Duplicate marking and library complexity metrics |
    | BEDOPS | unpinned | `sort-bed` and `unstarch` for the Hotspot2 `.starch` archives (Neph et al. 2012) |
    | HINT (RGT) | 1.0.2 | TF footprinting from DNase-seq data (Li et al. 2019); installed from PyPI |
    | F-Seq2 | 2.0.3 | Feature density estimation for peak calling (Boyle et al. 2008, Zhao et al. 2020); installed from PyPI |
    | samtools | 1.19 | BAM handling and filtering |
    | bedtools | 2.31.0 | Interval operations, blacklist filtering |
    | FastQC | 0.12.1 | Read quality assessment |
    | Trim Galore | 0.6.10 | Adapter trimming |
    | MultiQC | 1.21 | Aggregate QC reporting |
    | bedGraphToBigWig | unpinned | Convert bedGraph signal to bigWig |
    
    **Hotspot2 2.1.2 and its `modwt` dependency are not in this environment** — neither is packaged
    for conda. Build both from source (`pipeline-dnaseseq/scripts/Dockerfile` shows the exact steps)
    or run the pipeline through that image, which is what `pipeline-dnaseseq` does.
    
    **Environment file**: `environments/dnaseseq-env.yml`
    
    ---
    
    ### CUT&RUN / CUT&Tag Environment (`encode-cutandrun`)
    
    For antibody-targeted chromatin profiling via CUT&RUN (Skene & Henikoff 2017) and
    CUT&Tag (Kaya-Okur et al. 2019).
    
    | Tool | Version | Purpose |
    |------|---------|---------|
    | Bowtie2 | 2.5.4 | Alignment (recommended for shorter CUT&RUN/Tag fragments) |
    | r-base | >=4.3 | R runtime that the SEACR shell script calls (SEACR itself is installed separately, see below) |
    | MACS2 | 2.2.9.1 | Alternative peak calling with adjusted parameters |
    | samtools | 1.19 | BAM handling, spike-in alignment filtering |
    | Picard | 3.1.1 | Duplicate marking (low duplication expected for CUT&RUN/Tag) |
    | deeptools | 3.5.5 | Signal tracks, heatmaps, spike-in normalization |
    | bedtools | 2.31.0 | Interval operations, suspect list filtering |
    | FastQC | 0.12.1 | Read quality assessment |
    | Trim Galore | 0.6.10 | Adapter trimming |
    | MultiQC | 1.21 | Aggregate QC reporting |
    
    **SEACR 1.3 is not in this environment.** It is a shell script plus an R script; download the
    `v1.3` tarball from `FredHutch/SEACR` and put both `SEACR_1.3.sh` and `SEACR_1.3.R` on the PATH,
    alongside the `r-base` this environment installs. The CUT&RUN pipeline image
    (`pipeline-cutandrun/scripts/Dockerfile`) already contains it.
    
    **Key CUT&RUN/Tag notes**: These assays have inherently lower background than ChIP-seq. Do NOT
    apply ChIP-seq quality thresholds — use CUT&RUN-specific metrics (Nordin et al. 2023). Apply
    the CUT&RUN suspect list instead of the standard ENCODE blacklist. Spike-in normalization
    (E. coli DNA for CUT&RUN, carry-over for CUT&Tag) is strongly recommended for quantitative
    comparisons.
    
    **Environment file**: `environments/cutandrun-env.yml`
    
    ## R/Bioconductor Packages
    
    Install all R packages needed for ENCODE downstream analysis. The install script at
    `scripts/install-r-packages.R` handles BiocManager setup, version locking, and
    category-based installation.
    
    ### Core Genomic Infrastructure
    
    These packages provide the foundation for all genomic data manipulation in R:
    
    | Package | Purpose |
    |---------|---------|
    | GenomicRanges | Interval arithmetic on genomic coordinates (Lawrence et al. 2013) |
    | GenomicFeatures | Gene model and transcript annotation handling |
    | rtracklayer | Import/export BED, bigWig, GFF, narrowPeak, broadPeak |
    | IRanges | Integer range operations (underlying GenomicRanges) |
    | GenomeInfoDb | Chromosome naming conventions (UCSC vs Ensembl vs NCBI) |
    | BiocGenerics | Common S4 generics across Bioconductor |
    | S4Vectors | S4 class infrastructure for Bioconductor objects |
    | AnnotationDbi | Unified interface to annotation databases |
    | biomaRt | Ensembl BioMart query interface for gene annotation (Durinck et al. 2009) |
    
    ### Differential Analysis
    
    | Package | Purpose |
    |---------|---------|
    | DESeq2 | Differential gene expression with shrinkage estimators (Love et al. 2014) |
    | edgeR | Differential expression using empirical Bayes (Robinson et al. 2010) |
    | limma | Linear models for microarray and RNA-seq data (Ritchie et al. 2015) |
    | DiffBind | Differential binding analysis for ChIP-seq/ATAC-seq peaks (Stark & Brown 2011) |
    | ChIPQC | ChIP-seq quality control in R (Carroll et al. 2014) |
    | chromVAR | Chromatin accessibility variation across single cells (Schep et al. 2017) |
    
    ### Annotation and Pathway Analysis
    
    | Package | Purpose |
    |---------|---------|
    | ChIPseeker | Peak annotation and visualization (Yu et al. 2015) |
    | annotatr | Annotate genomic regions with CpG islands, genes, enhancers (Cavalcante & Sartor 2017) |
    | clusterProfiler | Gene ontology and KEGG pathway enrichment (Yu et al. 2012) |
    | org.Hs.eg.db | Human gene annotation database |
    | org.Mm.eg.db | Mouse gene annotation database |
    | TxDb.Hsapiens.UCSC.hg38.knownGene | Human transcript models (GRCh38) |
    | TxDb.Mmusculus.UCSC.mm10.knownGene | Mouse transcript models (mm10) |
    
    ### Single-Cell Analysis
    
    | Package | Purpose |
    |---------|---------|
    | Seurat | Comprehensive single-cell RNA-seq analysis (Hao et al. 2021) |
    | Signac | Single-cell chromatin accessibility (ATAC-seq) analysis (Stuart et al. 2021) |
    | SingleCellExperiment | Core Bioconductor container for single-cell data |
    | scater | Single-cell QC, normalization, visualization (McCarthy et al. 2017) |
    | scran | Single-cell normalization and feature selection (Lun et al. 2016) |
    
    ### Bulk-to-Single-Cell Deconvolution
    
    | Package | Purpose |
    |---------|---------|
    | BisqueRNA | Reference-based and marker-based deconvolution (Jew et al. 2020) |
    | DWLS | Dampened Weighted Least Squares deconvolution (Tsoucas et al. 2019) |
    | BayesPrism | Bayesian deconvolution with scRNA-seq reference (Chu et al. 2022). **GitHub only** — the script prints the `devtools::install_github()` line, it does not install it |
    | InstaPrism | Fast approximation of BayesPrism for large datasets (Wang et al. 2024). **GitHub only**, same as BayesPrism |
    
    ### DNA Methylation Analysis
    
    | Package | Purpose |
    |---------|---------|
    | DMRcate | Differentially methylated region detection (Peters et al. 2021) |
    | bsseq | Bisulfite sequencing data handling and smoothing (Hansen et al. 2012) |
    | methylKit | Methylation analysis from bisulfite sequencing (Akalin et al. 2012) |
    
    ### Visualization
    
    | Package | Purpose |
    |---------|---------|
    | ComplexHeatmap | Publication-quality heatmaps with annotations (Gu et al. 2016) |
    | EnhancedVolcano | Volcano plots for differential expression (Blighe et al. 2018) |
    | Gviz | Genome browser-style track visualization (Hahne & Ivanek 2016) |
    | ggplot2 | Grammar of graphics for all custom plots (Wickham 2016) |
    
    ### Statistics and Batch Correction
    
    | Package | Purpose |
    |---------|---------|
    | sva (ComBat) | Surrogate variable analysis and batch correction (Leek et al. 2012) |
    | WGCNA | Weighted Gene Co-expression Network Analysis (Langfelder & Horvath 2008) |
    | ReactomePA | Reactome pathway analysis (Yu & He 2016) |
    
    **Install script**: `scripts/install-r-packages.R`
    
    ```bash
    # Install all categories
    Rscript scripts/install-r-packages.R --all
    
    # Install only specific categories
    Rscript scripts/install-r-packages.R --chipseq      # DiffBind, ChIPQC, ChIPseeker
    Rscript scripts/install-r-packages.R --rnaseq       # DESeq2, edgeR, limma
    Rscript scripts/install-r-packages.R --singlecell   # Seurat, Signac, scater, scran
    Rscript scripts/install-r-packages.R --methylation   # DMRcate, bsseq, methylKit
    Rscript scripts/install-r-packages.R --deconvolution # BisqueRNA, DWLS (+ GitHub lines for BayesPrism, InstaPrism)
    Rscript scripts/install-r-packages.R --visualization # ComplexHeatmap, EnhancedVolcano, Gviz, ggplot2
    Rscript scripts/install-r-packages.R --stats         # sva, WGCNA, ReactomePA
    ```
    
    The tables above list the main packages per category. `scripts/install-r-packages.R` holds the
    complete, authoritative lists (47 packages across 8 categories), including supporting packages
    such as `TFBSTools`, `motifmatchr`, `tximport`, `tximeta`, `celda`, `pheatmap`, `RColorBrewer`
    and `viridis`.
    
    ## Python Packages
    
    Install Python packages for single-cell analysis, Hi-C processing, signal visualization,
    and genomic data manipulation.
    
    ### Core Single-Cell Stack
    
    | Package | Purpose |
    |---------|---------|
    | scanpy | Single-cell RNA-seq analysis framework (Wolf et al. 2018) |
    | anndata | Annotated data matrix for single-cell (Virshup et al. 2021) |
    | scvi-tools | Deep generative models for single-cell (Gayoso et al. 2022) |
    | numpy | Numerical computing |
    | pandas | Data manipulation and tabular operations |
    | scipy | Scientific computing (sparse matrices, statistics) |
    | matplotlib | Plotting foundation |
    | seaborn | Statistical visualization |
    
    ### Genomics and Signal Processing
    
    | Package | Purpose |
    |---------|---------|
    | deeptools | Signal tracks, heatmaps, correlation (also CLI; Ramirez et al. 2016) |
    | pyBigWig | Read/write bigWig signal files (Ryan 2023) |
    | pysam | Python interface to samtools/htslib (Li et al. 2009) |
    | pybedtools | Python interface to bedtools (Dale et al. 2011) |
    
    ### Hi-C Analysis
    
    | Package | Purpose |
    |---------|---------|
    | cooler | Multi-resolution contact matrices (Abdennur & Mirny 2020) |
    | cooltools | Analysis toolkit for cooler data: TADs, compartments, insulation |
    | hic-straw | Read .hic files from Juicer/Juicebox (Durand et al. 2016) |
    | pyGenomeTracks | Genome browser visualization including Hi-C tracks |
    
    ### Single-Cell QC and Integration
    
    | Package | Purpose |
    |---------|---------|
    | scrublet | Doublet detection for scRNA-seq (Wolock et al. 2019) |
    | harmony-pytorch | Batch integration via Harmony in PyTorch (Korsunsky et al. 2019) |
    | scanorama | Panoramic stitching of scRNA-seq datasets (Hie et al. 2019) |
    | bbknn | Batch-balanced KNN graph construction (Polanski et al. 2020) |
    
    CellBender (ambient RNA removal, Fleming et al. 2023) is **not** installed by the script — it is
    GPU-oriented and is left to a manual `pip install cellbender`, which the script prints as a note.
    
    **Install script**: `scripts/install-python-packages.sh`
    
    ```bash
    # Install all Python packages
    bash scripts/install-python-packages.sh --all
    
    # Install only specific categories
    bash scripts/install-python-packages.sh --genomics     # numpy, pandas, scipy, matplotlib, seaborn
    bash scripts/install-python-packages.sh --singlecell   # scanpy, scvi-tools, harmony-pytorch
    bash scripts/install-python-packages.sh --hic          # cooler, cooltools, hic-straw, bioframe
    bash scripts/install-python-packages.sh --deeptools    # deeptools, pyBigWig, pysam, pybedtools
    ```
    
    Every category except `--genomics` also installs the core genomics packages first. The complete,
    authoritative list of direct dependencies is `scripts/requirements.in`; exact versions for the
    whole dependency tree are locked in `scripts/constraints.txt`, which every install is constrained
    by.
    
    ## Nextflow and Container Setup
    
    ENCODE pipeline execution requires Nextflow DSL2 and a container runtime (Docker or Singularity).
    
    ### Nextflow Installation
    
    ```bash
    # Install the pinned Nextflow release (requires Java 17+) and check for Docker.
    # Use --singularity for HPC, or --both.
    bash scripts/install-nextflow.sh --docker
    
    # Verify
    nextflow -version
    ```
    
    What the script does:
    - Downloads the pinned, self-contained Nextflow release the pipelines are validated against
      (the version and its SHA-256 are at the top of `scripts/install-nextflow.sh`), verifies the
      checksum, and only then installs it to `/usr/local/bin` or `~/.local/bin`.
    - An existing Nextflow is accepted only if it is **exactly** that pinned release. Any other
      version is left untouched; the pinned release is installed next to it and the script tells you
      to put its directory first on `PATH`.
    - Docker and Singularity are **checked, not installed**: the script reports what it finds and
      prints the install commands for your platform. Run those yourself.
    
    ### Docker (recommended for local/cloud)
    
    ```bash
    # macOS
    brew install --cask docker
    
    # Linux (Ubuntu/Debian)
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    
    # Add current user to docker group (Linux)
    sudo usermod -aG docker $USER
    ```
    
    ### Singularity (for HPC clusters)
    
    ```bash
    # Most HPC clusters have Singularity pre-installed
    # Check with: module load singularity && singularity version
    
    # If not available, install via conda:
    conda install -c conda-forge singularity
    ```
    
    ### Nextflow Configuration Profiles
    
    The pipeline skills (pipeline-chipseq, pipeline-atacseq, etc.) include `nextflow.config` files
    with profiles for local, SLURM, GCP, and AWS execution. Select the appropriate profile:
    
    ```bash
    # Local with Docker
    nextflow run main.nf -profile local
    
    # HPC with Singularity
    nextflow run main.nf -profile slurm
    
    # Google Cloud
    nextflow run main.nf -profile gcp
    
    # AWS Batch
    nextflow run main.nf -profile aws
    ```
    
    **Install script**: `scripts/install-nextflow.sh`
    
    ## Motif Analysis Tools
    
    For transcription factor binding motif discovery and scanning.
    
    | Tool | Version | Type | Purpose |
    |------|---------|------|---------|
    | HOMER | 4.11 | CLI | De novo and known motif discovery, annotation (Heinz et al. 2010) |
    | MEME Suite | 5.5.5 | CLI | MEME, DREME, STREME de novo discovery; FIMO scanning; AME enrichment (Bailey et al. 2015) |
    | FIMO | 5.5.5 | CLI (part of MEME Suite) | Motif occurrence scanning across sequences |
    | TFBSTools | R | R/Bioconductor | JASPAR motif handling, PFM/PWM conversion, motif scanning in R (Tan & Lenhard 2016) |
    
    ### HOMER Installation
    
    ```bash
    # Download and configure HOMER
    mkdir -p ~/software/homer
    cd ~/software/homer
    wget http://homer.ucsd.edu/homer/configureHomer.pl
    perl configureHomer.pl -install homer
    perl configureHomer.pl -install hg38   # Human genome
    perl configureHomer.pl -install mm10   # Mouse genome
    
    # Add to PATH
    export PATH=$PATH:~/software/homer/bin
    ```
    
    ### MEME Suite Installation
    
    ```bash
    # Via conda (recommended)
    conda install -c bioconda meme
    
    # Or from source
    wget https://meme-suite.org/meme/meme-software/5.5.5/meme-5.5.5.tar.gz
    tar xzf meme-5.5.5.tar.gz
    cd meme-5.5.5
    ./configure --prefix=$HOME/software/meme --enable-build-libxml2 --enable-build-libxslt
    make && make install
    ```
    
    ## Walkthrough: Setting Up a Complete ENCODE Analysis Environment
    
    **Goal**: Install all bioinformatics tools needed to process ENCODE data, from raw FASTQ files through peak calling, annotation, and visualization, using Conda environments.
    **Context**: ENCODE analysis requires dozens of specialized tools. This skill automates installation with pre-configured Conda environments for each pipeline stage.
    
    ### Step 1: Determine required tools by experiment type
    
    ```
    encode_get_experiment(accession="ENCSR000AKA")
    ```
    
    Expected output:
    ```json
    {
      "accession": "ENCSR000AKA",
      "assay_title": "Histone ChIP-seq",
      "target": "H3K27ac"
    }
    ```
    
    **Interpretation**: Histone ChIP-seq requires: BWA-MEM (alignment), SAMtools (BAM processing), MACS2 (peak calling), IDR (reproducibility), bedtools (interval operations), deepTools (signal visualization).
    
    ### Step 2: Install the ChIP-seq Conda environment
    
    ```bash
    # Using the pre-configured environment YAML
    conda env create -f skills/bioinformatics-installer/environments/chipseq-env.yml
    conda activate encode-chipseq
    ```
    
    `environments/chipseq-env.yml` is the authoritative list of what that environment installs —
    read it rather than retyping the versions. It covers alignment (BWA), BAM processing (samtools,
    Picard), peak calling (MACS2), replicate consistency (IDR), cross-correlation metrics
    (phantompeakqualtools), signal processing (deeptools), interval operations (bedtools), and
    QC/trimming (FastQC, Trim Galore, MultiQC). See the ChIP-seq table above for the pinned versions.
    
    ### Step 3: Install additional tools for downstream analysis
    
    For peak annotation and motif analysis:
    ```bash
    conda create -n encode-annotation -c conda-forge -c bioconda \
      homer bedtools bioconductor-chipseeker bioconductor-clusterprofiler bioconductor-rgreat
    conda activate encode-annotation
    # Includes: HOMER, bedtools, R/Bioconductor (ChIPseeker, clusterProfiler, rGREAT for GREAT queries)
    ```
    
    ### Step 4: Verify installation
    
    ```bash
    # Quick verification of key tools
    bwa 2>&1 | head -3
    samtools --version | head -1
    macs2 --version
    bedtools --version
    ```
    
    ### Step 5: Download reference data for ENCODE analysis
    
    ```
    encode_download_files(file_accessions=["ENCFF001ABC"], download_dir="/data/references")
    ```
    
    Reference files needed:
    - GRCh38 genome FASTA
    - ENCODE blacklist v2 (Amemiya et al. 2019)
    - Gene annotation GTF (GENCODE v36)
    
    ### Integration with downstream skills
    - Installed tools are used by → **pipeline-chipseq** through **pipeline-cutandrun** for processing
    - Reference data feeds into → **download-encode** for FASTQ retrieval
    - Environment setup enables → **quality-assessment** tool execution
    - Installed annotation tools support → **peak-annotation** and **motif-analysis**
    
    ## Code Examples
    
    ### 1. Find experiments to identify required tools
    
    ```
    encode_search_experiments(
      assay_title="ATAC-seq",
      organ="pancreas"
    )
    ```
    
    Expected output:
    ```json
    {
      "results": [
        {
          "accession": "ENCSR799GHJ",
          "assay_title": "ATAC-seq",
          "biosample_summary": "pancreatic islet tissue male adult (44 years)",
          "organ": "pancreas",
          "status": "released"
        }
      ],
      "total": 8,
      "limit": 25,
      "offset": 0,
      "has_more": false,
      "next_offset": null
    }
    ```
    
    **Install decision**: ATAC-seq requires the `atacseq-env.yml` conda environment (Bowtie2 + MACS2 + deeptools + samtools + bedtools).
    
    ### 2. Get file info to understand format requirements
    
    ```
    encode_get_file_info(accession="ENCFF001ABC")
    ```
    
    Expected output:
    ```json
    {
      "accession": "ENCFF001ABC",
      "file_format": "fastq",
      "file_type": "fastq",
      "output_type": "reads",
      "file_size_human": "4.4 GB",
      "experiment_assay": "ATAC-seq",
      "biological_replicates": [1],
      "status": "released"
    }
    ```
    
    **Install decision**: raw ATAC-seq reads need Bowtie2 (not BWA), Picard for duplicate marking, and samtools for BAM processing — the `atacseq-env.yml` environment. Whether the FASTQ is one mate of a pair is on the file's page on encodeproject.org (`paired_end`, `paired_with`), not in this response.
    
    ## Pitfalls & Edge Cases
    
    - **Conda solver conflicts**: Large conda environments with many packages can take hours to solve. Use mamba instead of conda for faster dependency resolution, or install in smaller focused environments.
    - **R/Bioconductor version mismatch**: R packages from CRAN and Bioconductor must match the R version. Installing Bioconductor 3.18 packages with R 4.4 will fail silently or produce errors. Use BiocManager::install() to ensure version compatibility.
    - **Python 2 vs Python 3**: Some legacy bioinformatics tools (MACS 1.x, old HOMER) require Python 2. Never install Python 2 tools in the same environment as Python 3 tools — use separate conda environments.
    - **ARM Mac (M1/M2/M3) compatibility**: Many bioinformatics tools lack native ARM builds. Use `CONDA_SUBDIR=osx-64` or Rosetta 2 emulation for x86_64 packages. Some tools (samtools, BWA) have ARM-native builds.
    - **Nextflow requires Java 17+**: check `java -version` before running pipelines. Install Nextflow with `scripts/install-nextflow.sh`, which pins the release the pipelines are validated against and verifies its checksum; avoid piping a remote installer straight into a shell.
    - **Docker vs Singularity on HPC**: Most HPC clusters do not allow Docker (requires root). Use Singularity instead. The pipeline skills express this through the execution profile, not a runtime profile: `-profile local` enables Docker, `-profile slurm` enables Singularity. There is no `docker` or `singularity` profile. With `-profile slurm`, convert the image once and pass the file: `singularity build pipeline-chipseq.sif docker-daemon://encode-toolkit/pipeline-chipseq:1.0.0`, then `--container /path/to/pipeline-chipseq.sif`.
    
    ## Literature Foundation
    
    | # | Reference | Key Contribution |
    |---|-----------|-----------------|
    | 1 | Li & Durbin 2009, Bioinformatics, DOI:10.1093/bioinformatics/btp324 (~30,000 cit) | BWA aligner |
    | 2 | Langmead & Salzberg 2012, Nat Methods, DOI:10.1038/nmeth.1923 (~25,000 cit) | Bowtie2 aligner |
    | 3 | Li et al. 2009, Bioinformatics, DOI:10.1093/bioinformatics/btp352 (~20,000 cit) | SAMtools/BAM format |
    | 4 | Zhang et al. 2008, Genome Biol, DOI:10.1186/gb-2008-9-9-r137 (~7,000 cit) | MACS2 peak caller |
    | 5 | Dobin et al. 2013, Bioinformatics, DOI:10.1093/bioinformatics/bts635 (~15,000 cit) | STAR RNA-seq aligner |
    | 6 | Love et al. 2014, Genome Biol, DOI:10.1186/s13059-014-0550-8 (~30,000 cit) | DESeq2 |
    | 7 | Ramirez et al. 2016, Nucleic Acids Res, DOI:10.1093/nar/gkw257 (~3,000 cit) | deeptools |
    | 8 | Wolf et al. 2018, Genome Biol, DOI:10.1186/s13059-017-1382-0 (~5,000 cit) | Scanpy |
    | 9 | Hao et al. 2021, Cell, DOI:10.1016/j.cell.2021.04.048 (~8,000 cit) | Seurat v4 |
    | 10 | Quinlan & Hall 2010, Bioinformatics, DOI:10.1093/bioinformatics/btq033 (~10,000 cit) | bedtools |
    | 11 | Ewels et al. 2016, Bioinformatics, DOI:10.1093/bioinformatics/btw354 (~3,000 cit) | MultiQC |
    | 12 | Krueger & Andrews 2011, Bioinformatics, DOI:10.1093/bioinformatics/btr167 (~5,000 cit) | Bismark |
    | 13 | Heinz et al. 2010, Molecular Cell, DOI:10.1016/j.molcel.2010.05.004 (~7,000 cit) | HOMER motif analysis |
    | 14 | Bailey et al. 2015, Nucleic Acids Res, DOI:10.1093/nar/gkv416 (~3,000 cit) | MEME Suite |
    | 15 | Meers et al. 2019, Epigenetics Chromatin, DOI:10.1186/s13072-019-0287-4 (~800 cit) | SEACR for CUT&RUN |
    | 16 | Di Tommaso et al. 2017, Nat Biotechnol, DOI:10.1038/nbt.3820 (~2,500 cit) | Nextflow |
    | 17 | Landt et al. 2012, Genome Res, DOI:10.1101/gr.136184.111 (~4,000 cit) | ENCODE ChIP-seq standards |
    | 18 | ENCODE Consortium 2020, Nature, DOI:10.1038/s41586-020-2493-4 (~1,656 cit) | ENCODE Phase 3 |
    | 19 | Amemiya et al. 2019, Sci Rep, DOI:10.1038/s41598-019-45839-z (~1,372 cit) | ENCODE Blacklist v2 |
    
    ## Integration
    
    | This skill produces... | Feed into... | Purpose |
    |---|---|---|
    | Conda environments | **pipeline-chipseq** through **pipeline-cutandrun** | Provide tool dependencies for all pipeline stages |
    | Installed reference data | **download-encode** | Reference genomes and annotations for alignment |
    | Tool version inventory | **data-provenance** | Record exact tool versions for reproducibility |
    | QC tool installations | **quality-assessment** | Enable FastQC, MultiQC, and ENCODE QC metric tools |
    | Annotation tool setup | **peak-annotation** | HOMER, ChIPseeker for peak-to-gene assignment |
    | Motif scanning tools | **jaspar-motifs** | MEME Suite for motif scanning against JASPAR |
    | Visualization tools | **visualization-workflow** | deepTools, IGV, R/ggplot2 for data visualization |
    | Liftover utilities | **liftover-coordinates** | UCSC liftOver binary for assembly conversion |
    
    ## Related Skills
    
    - **pipeline-guide**: Parent skill for all pipeline execution; provides overview of available pipelines and tool selection guidance
    - **pipeline-chipseq**: Uses the ChIP-seq conda environment tools for FASTQ-to-peaks processing
    - **pipeline-atacseq**: Uses the ATAC-seq conda environment tools for accessibility analysis
    - **pipeline-rnaseq**: Uses the RNA-seq conda environment for expression quantification
    - **pipeline-wgbs**: Uses the WGBS conda environment for methylation analysis
    - **pipeline-hic**: Uses the Hi-C conda environment for contact matrix generation
    - **pipeline-dnaseseq**: Uses the DNase-seq conda environment for hotspot detection
    - **pipeline-cutandrun**: Uses the CUT&RUN conda environment for CUT&RUN/CUT&Tag processing
    - **quality-assessment**: Quality metrics require properly installed tools to compute
    - **setup**: Initial ENCODE Toolkit server setup (MCP connection, not bioinformatics tools)
    - **motif-analysis**: Requires HOMER and MEME Suite from this installer
    - **visualization-workflow**: Uses deeptools, pyGenomeTracks, and R visualization packages from this installer
    - **single-cell-encode**: Uses Seurat, Signac, Scanpy from this installer
    - **publication-trust**: Assess scientific integrity of publications before relying on their methods or findings
    
    ## Presenting Results
    
    - Present installed tools as a checklist table: tool | version | status (installed/failed/skipped). Group by assay environment. Suggest: "Would you like to verify the installation by running a quick test on sample ENCODE data?"
    - If any installation fails, provide the exact error and a targeted fix. Common fixes: update conda, set channel priority, install system dependencies.
    
    ## For the request: "$ARGUMENTS"
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related