This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Shrink elements of a bedtools file

Is there a way to shrink elements in a bed file? `bedtools {slop,flank}` are all about increasing, but I can't find a function in bedtools that will shrink a region. In particular, I'm interested in taking intron files and strand-specifically removing 400bp from one end.

Thanks!

bedtools

2 answers

 awk -vX=400 '{OFS="\t";S=$2+X; E=$3-X; if(S<=E) {$2=S;$3=E;print;}}' input.bed

This can easily be done per edge and per strand with awk and BEDOPS bedops --range.

To shrink forward-stranded introns from the "left" edge:

$ awk '$6=="+"' introns.bed | bedops --everything --range 400:0 - > left_shrunken_forward_introns.bed

To shrink forward-stranded elements from the "right" edge:

$ awk '$6=="+"' introns.bed | bedops --everything --range 0:-400 - > right_shrunken_forward_introns.bed

To shrink reverse-stranded introns from the "left" edge:

$ awk '$6=="-"' introns.bed | bedops --everything --range 400:0 - > left_shrunken_reverse_introns.bed

And, finally, from the "right" edge:

$ awk '$6=="-"' introns.bed | bedops --everything --range 0:-400 - > right_shrunken_reverse_introns.bed

Log in to answer this question.