---
title: Epigenomics quickstart
description: >-
  Step-by-step workflows for ATAC-seq peak calling, ChIP-seq analysis,
  differential accessibility, and methylation profiling.
tags:
  - epigenomics
  - quickstart
---

You want to find the active regulatory regions around your genes — or how they change between conditions — from sequencing data; this walks you through four common workflows: calling ATAC-seq peaks, comparing chromatin accessibility, calling ChIP-seq peaks, and profiling DNA methylation, each starting from an aligned BAM file.

## Epigenomics quickstart

This guide covers four common workflows: calling ATAC-seq peaks, comparing chromatin accessibility between conditions, calling ChIP-seq peaks, and profiling DNA methylation.

## Workflow 1: Call ATAC-seq peaks

### Step 1: Upload your BAM file

Upload your aligned, sorted, and deduplicated ATAC-seq BAM file through the file upload interface or reference an existing file.

### Step 2: Run peak calling

Ask Ivy in chat (or submit the job directly with `POST /api/v1/jobs`; see the [API reference](/docs/api)):

```
Call ATAC-seq peaks from my BAM file
```

Or spell the options out in your prompt:

| Option | Value |
|-----------|-------|
| BAM file URI | Your uploaded ATAC-seq BAM |
| Genome | `hg38` |
| Peak caller | `macs2` (default) |
| Broad peaks | `false` (narrow) |

### Step 3: Review peak results

| Field | Example Value |
|-------|---------------|
| Peaks called (`num_peaks`) | 45,230 |
| FRiP score | 0.32 |
| Median peak width | 350 bp |

The tool returns peak counts, quality metrics, and the top peaks by signal (`top_peaks`) with genomic coordinates and q-values — it doesn't return gene annotation directly; chain into a genomics tool for nearest-gene lookups.

## Workflow 2: Differential accessibility analysis

### Step 1: Call peaks for each replicate

Run `atacseq_peaks` on each sample first (Workflow 1). You need at least two peak files per condition (biological replicates):

| Condition | Peak files |
|-----------|-------|
| Treatment | peaks from `treatment_rep1.bam`, `treatment_rep2.bam` |
| Control | peaks from `control_rep1.bam`, `control_rep2.bam` |

### Step 2: Run differential analysis

```
Find regions with differential chromatin accessibility between treatment and control ATAC-seq samples
```

Or configure:

| Parameter | Value |
|-----------|-------|
| Peak files | the four per-sample peak files from Step 1 |
| Metadata file URI | CSV with `sample`, `condition` columns |
| Contrast | `"treatment_vs_control"` |
| Method | `diffbind` (default) |

### Step 3: Review differential results

| Region | Log2 FC | P-value | Adjusted P-value | Direction |
|--------|---------|---------|-------------------|-----------|
| chr1:1000000-1001000 | 2.3 | 1.2e-8 | 3.5e-6 | gained |
| chr17:7670000-7671000 | -1.8 | 4.5e-6 | 8.2e-4 | lost |
| chr12:25200000-25201000 | 1.5 | 2.1e-5 | 2.8e-3 | gained |

The result doesn't include gene annotation — chain into a genomics tool to map regions to nearest genes.

## Workflow 3: Call ChIP-seq peaks

### Step 1: Prepare your files

You need a ChIP BAM file and optionally an input control BAM:

| File | Description |
|------|-------------|
| ChIP BAM | Immunoprecipitated sample |
| Input BAM | Input control (recommended) |

### Step 2: Run peak calling

```
Call H3K27ac ChIP-seq peaks with input control normalization
```

Or configure:

| Parameter | Value |
|-----------|-------|
| Treatment BAM URI | Your ChIP-seq BAM file |
| Control BAM URI | Your input control BAM |
| Histone mark | `H3K27ac` |
| Peak caller | `macs3` (default) |
| Genome | `hg38` |

### Step 3: Review peaks

| Field | Example Value |
|-------|---------------|
| Peaks called (`num_peaks`) | 28,500 |
| FRiP score | 0.34 |
| Median peak width | 500 bp |

### Step 4: Use SICER2 for diffuse marks (optional)

For histone marks like H3K27me3, H3K36me3, or H3K9me3, set `peak_caller: "sicer2"` — it's better suited to wide, diffuse domains of enrichment than the default MACS3.

## Workflow 4: Profile DNA methylation

### Step 1: Submit bisulfite-seq data

```
Call methylation levels from my bisulfite sequencing BAM file
```

Or configure:

| Parameter | Value |
|-----------|-------|
| BAM file URI | Your bisulfite-seq BAM |
| Genome | `hg38` |
| Method | `bismark` (default) |
| Min coverage | `5` |

### Step 2: Review methylation summary

| Field | Example Value |
|-------|---------------|
| Total CpGs analyzed | 24,800,000 |
| Mean coverage | 12.4x |
| Global methylation | 0.62 |

The result is a genome-wide and per-chromosome summary — it doesn't include a per-site methylation table.

### Step 3: Detect DMRs (optional)

Run `methylation_call` on each replicate first, then:

```
Find differentially methylated regions between tumor and normal samples
```

This runs `methylation_dmr` on the per-sample methylation files plus a metadata CSV and a contrast string (e.g. `"tumor_vs_normal"`) to identify regions where methylation levels differ significantly between conditions.

## Next steps

- See [inputs](/docs/epigenomics/inputs) for all parameters, genome options, and peak calling modes
- See [outputs](/docs/epigenomics/outputs) for result field descriptions and quality metrics
- Use [Genomics](/docs/genomics) for gene annotation of peaks
- Use [CRISPR](/docs/crispr) for guide design at accessible chromatin regions

## Read next
