BEDtools error: file has non positional records, which are only valid for the groupBy tool
1
3
Entering edit mode
3.8 years ago

Hello,

I am trying to use bedtools subtract in the following way:

$bedtools subtract -a A.bed -b B.bed  but I get the following error: ERROR: file A.bed has non positional records, which are only valid for the groupBy tool  When I tried to Google the answer, none of the solutions provided seemed to help. Here is the head of A.bed: $ head A.bed
chr1    1       249250621
chr2    1       243199373
chr3    1       198022430
chr4    1       191154276
chr5    1       180915260
chr6    1       171115067
chr7    1       159138663
chrX    1       155270560
chr8    1       146364022
chr9    1       141213431


The cross checked that the columns are tab delimited and the three important columns are in the right order. Additionally, there are no invisible characters after the final column that might throw off Bedtools.

Any insight into the problem would be greatly appreciated!

Bedtools • 4.5k views
1
Entering edit mode

Are the delimiters the same in both files?

0
Entering edit mode

I just checked, and they are. But I found out that the end characters for A.bed are windows end characters and B.bed are Linux end characters. After I fixed this issue, the program worked.

3
Entering edit mode
3.8 years ago

I found the solution. I made A.bed in Windows and B.bed in Linux, so the two files had conflicting end characters. When I turned the Windows end characters into Linux end characters, Bedtools started working properly again

1
Entering edit mode

Welcome to the world of bioinformatics :-)

1
Entering edit mode

We learn...do not use Windows in Bioinformatics ;-D

0
Entering edit mode

This fixed it for me.

One of my files had trailing carriage return characters (\r or ^M).

The invisible characters can be displayed with

cat -e polluted.bed
chr1    0       248956422^M$chr10 0 133797422^M$
chr11   0       135086622^M$ Stripped them out with cat polluted.bed | tr -d '\r' > clean.bed  To give cat -e clean.bed chr1 0 248956422$
chr10   0       133797422$chr11 0 135086622$


Then bedtools worked properly.