免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3252 | 回复: 1
打印 上一主题 下一主题

[文本处理] 根据分值筛选序列 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-12-09 22:37 |只看该作者 |倒序浏览
A文件有6列数据。只考虑前4列:序列ID,起始位置,终止位置,和分值。
scaffold_1      56182   56587   558     -       scaffold_136_130700_138782
scaffold_1      56182   56592   621     -       scaffold_136_130700_138782
scaffold_1      56234   56754   691     -       scaffold_26_37694_44393
scaffold_1      56237   56754   702     -       scaffold_26_37694_44393
scaffold_1      56405   56750   479     +       scaffold_190_311085_324852
scaffold_1      56405   56754   508     +       scaffold_190_311085_324852
scaffold_2      56435   56751   425     +       scaffold_385_49654_63581
scaffold_2      56435   56754   425     -       scaffold_122_71161_78289
scaffold_2      56436   56754   412     +       scaffold_385_49654_63581
scaffold_2      56444   56754   409     -       scaffold_122_71161_78289
scaffold_2      77488   77745   372     +       scaffold_13_441083_455311
scaffold_2      77488   77748   405     +       scaffold_13_441083_455311
scaffold_3      87488   97748   505     +       scaffold_3_441083_455311
scaffold_4      99154   99656   715     +       scaffold_429_32312_46414
scaffold_4      99161   99656   743     +       scaffold_429_32312_46414
scaffold_5      99296   99522   302     +       scaffold_384_42367_55456
scaffold_6      99319   99543   327     -       scaffold_639_14164_28258
scaffold_6      99322   99544   329     -       scaffold_61_167235_177053
scaffold_6      99322   99788   697     -       scaffold_167_387886_401156
目的:将文件中相同序列ID的起始位置和终止位置有重叠的根据分值大的提出。如果有重叠的分值一样大,则将起始位置终止位置间距长的提出。
得到:

scaffold_1      56237   56754   702     -       scaffold_26_37694_44393
scaffold_2      56435   56754   425     -       scaffold_122_71161_78289
scaffold_2      77488   77748   405     +       scaffold_13_441083_455311
scaffold_3      87488   97748   505     +       scaffold_3_441083_455311
scaffold_4      99161   99656   743     +       scaffold_429_32312_46414
scaffold_5      99296   99522   302     +       scaffold_384_42367_55456
scaffold_6      99322   99788   697     -       scaffold_167_387886_401156

论坛徽章:
0
2 [报告]
发表于 2020-02-27 18:17 |只看该作者
你自己的数据有误吧?怎么scaffold_2重复了?不是指考虑前4列吗?

  1. $ awk '{if($4>c[$1]||($4==c[$1] && ($3-$2)>(b[$1]-a[$1]))){a[$1]=$2;b[$1]=$3;c[$1]=$4;d[$1]=$5"    "$6}}END{OFS="    ";for(i in c){print i,a[i],b[i],c[i],d[i]}}' a.txt
  2. scaffold_1    56237    56754    702    -    scaffold_26_37694_44393
  3. scaffold_2    56435    56754    425    -    scaffold_122_71161_78289
  4. scaffold_3    87488    97748    505    +    scaffold_3_441083_455311
  5. scaffold_4    99161    99656    743    +    scaffold_429_32312_46414
  6. scaffold_5    99296    99522    302    +    scaffold_384_42367_55456
  7. scaffold_6    99322    99788    697    -    scaffold_167_387886_401156
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP