grit slop
Extend intervals by a given number of bases.
Usage
grit slop [OPTIONS] -i <INPUT> -g <GENOME>
Options
| Option | Description |
|---|---|
-i, --input <FILE> | Input BED file |
-g, --genome <FILE> | Genome file (chromosome sizes) |
-b, --both <N> | Extend both sides by N bases |
-l, --left <N> | Extend left side by N bases |
-r, --right <N> | Extend right side by N bases |
-s, --strand | Use strand info (left=upstream, right=downstream) |
--pct | Interpret values as fraction of interval size |
Examples
Extend both sides
# Extend each interval by 100bp on both sides
grit slop -i regions.bed -g genome.txt -b 100 > extended.bed
# Extend by 1kb
grit slop -i peaks.bed -g genome.txt -b 1000 > peaks_1kb.bed
Asymmetric extension
# Extend 500bp left, 200bp right
grit slop -i genes.bed -g genome.txt -l 500 -r 200 > extended.bed
Strand-aware extension
# Extend 1kb upstream, 500bp downstream (strand-aware)
grit slop -i genes.bed -g genome.txt -l 1000 -r 500 -s > extended.bed
Percentage-based extension
# Extend by 10% of interval size on each side
grit slop -i regions.bed -g genome.txt -b 0.1 --pct > extended.bed
# Double the interval size (50% each side)
grit slop -i regions.bed -g genome.txt -b 0.5 --pct > doubled.bed
Genome File Format
The genome file specifies chromosome sizes:
chr1 248956422
chr2 242193529
chr3 198295559
chrX 156040895
chrY 57227415
Create from a FASTA index:
cut -f1,2 genome.fa.fai > genome.txt
Output
Input:
chr1 100 200
With -b 50:
chr1 50 250
Note: Coordinates are clamped to chromosome boundaries (0 to chrom_size).
Visual Example
Original: |--------|
With -b 100: |-----|--------|-----|
^100bp ^100bp
With -l 200 -r 50:
|------|--------|--|
^200bp ^50bp
Use Cases
Promoter regions
# Get 2kb upstream of TSS
grit slop -i tss.bed -g genome.txt -l 2000 -r 0 -s > promoters.bed
Peak extension
# Extend ChIP-seq peaks by 250bp
grit slop -i peaks.bed -g genome.txt -b 250 > extended_peaks.bed