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!
• 3,041 views
•
link
2 answers
awk -vX=400 '{OFS="\t";S=$2+X; E=$3-X; if(S<=E) {$2=S;$3=E;print;}}' input.bed
• 0 views
•
link
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
• 0 views
•
link
Log in to answer this question.