# Track Generation

> Track Generation is an Agent Skill for documents published in the majiayu000/claude-skill-registry repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

This skill generates normalized BigWig (.bw) tracks (and/or fold-change tracks) from BAM files for ATAC-seq and ChIP-seq visualization. It handles normalization (RPM or fold-change) and Tn5 offset correction automatically. Use this skill when you have filtered and generated the clean BAM file (e.g. `*.filtered.bam`).

- Skill name: `track-generation`
- Category: [Documents](https://www.openparable.com/skill/documents/1)
- Source: https://github.com/majiayu000/claude-skill-registry/blob/HEAD/skills/data/6-track-generation-bisnake2001-chromskills/SKILL.md
- Repository: majiayu000/claude-skill-registry (498 GitHub stars when collected)

## SKILL.md

## Overview

This skill converts filtered BAM files into normalized signal tracks (BigWig) for genome browser visualization.  
It supports both ATAC-seq and ChIP-seq datasets, automatically detecting genome assembly and chromosome size files.

Main steps include:
- Refer to the **Inputs & Outputs** section to check inputs and build the output architecture. All the output file should located in `${proj_dir}` in Step 0.
- Always use filtered BAM file (`*.filtered.bam`) if available.
- **Normalize all tracks** to 1 million mapped reads (RPM normalization).
- Generate the chrom.size file.  
- **For ATAC-seq**, apply Tn5 offset correction (+4/−5) and generate normalized BigWig (RPM).  
- **For ChIP-seq**, generat RPM-normalized track without applying Tn5 offset correction

---

## Decision Tree

### Step 0: Initialize Project

Call:

- `mcp__project-init-tools__project_init`

with:

- `sample`: all
- `task`: track_generation

The tool will:

- Create `${sample}_track_generation` directory.
- Return the full path of the `${sample}_track_generation` directory, which will be used as `${proj_dir}`.


### Step 1: Generate Chromosome size file

Call:
- `mcp__bw-tools__generate_chrom_sizes`
with:
- `bam_file`: Path for the BAM file for generating bigWig Tracks
- `output_path`: ${proj_dir}/temp/${sample}.chrom.sizes

### Step 2: Calculate Scaling Factor

Call:

- `mcp__bw_tools__calculate_scaling_factor`
with:
`bam_file`: Path for the BAM file for generating bigWig Tracks

This step will store result as variable ${scale_factor}

### Step 3:  Create RPM-normalized BigWig scaled to 1M mapped reads.

- (Option 1) For ATAC-seq data: Apply the standard Tn5 shift (+4/-5bp)

Call:
- `mcp__bw_tools__bam_to_bigwig`
with:
`bam_file`: ${bam_file}
`chrom_sizes`: ${proj_dir}/temp/${sample}.chrom.sizes (from Step 2)
`output_bw`: ${proj_dir}/tracks/${sample_name}.RPM.bw
`scale_factor`: ${scale_factor}
`shift_tn5`: True
`temp_dir`: ${proj_dir}/temp

- (Option 2) For ChIP-seq data: 
**Do Not Apply the standard Tn5 shift by setting `shift_tn5` as False**

---

Source: https://www.openparable.com/skill/documents/track-generation (OpenParable). Cite the canonical URL above.
