如何根据片段长度对床文件进行子集化?

How to subset bed files based on the fragment length?

我正在处理床文件,我想对特定大小范围内的行进行子集化。我只对“chromEnd - chromStart”在 140-160 范围内的行感兴趣。

例如,对于下面的床文件,我想对第二行和第五行(10229-10082 = 14765133-64976 = 157)进行子集化:

chr1    10061   10229   A00327:118:HNV2VDMXX:1:1316:4779:23265  12      +
chr1    10082   10229   A00327:118:HNV2VDMXX:1:2488:28519:18662 30      +
chr1    49486   49880   A00327:118:HNV2VDMXX:1:2412:2564:16517  12      +
chr1    54472   54800   A00327:118:HNV2VDMXX:1:1304:1633:32095  30      +
chr1    64976   65133   A00327:118:HNV2VDMXX:1:1488:3739:12038  30      +
chr1    75240   75547   A00327:118:HNV2VDMXX:1:2370:12102:12524 30      +
chr1    106775  107146  A00327:118:HNV2VDMXX:1:1324:32696:22169 31      +

是否有任何可能的方法来对这些行进行子集化?

很多方法,但我真的很喜欢awk:

awk '{ s=- } s >= 140 && s <= 160 { print }' input.bed > output.bed