首页  >  问答  >  正文

python - 去除重复行并保留得分最高的行

第一列(scaffold这一列)相同,则根据第AS列(AS:i:xx)数字 xx的大小,保留数字最大的行。如果数字大小相同则都保留。

举例,
输入文件

scaffold_010679_1AL.2    16    chr1A    429400034    119    3272M    *    GACACAAGAGACTCTTTG    *    AS:i:3268    XS:i:2147    XF:i:0    XE:i:29    NM:i:1
scaffold_010679_1AL.2    16    chr1A    429400034    119    3272M    *    GACACAAGAGACTCTTTG    *    AS:i:3268    XS:i:2147    XF:i:0    XE:i:29    NM:i:1 
scaffold_010679_1AL.2    16    chr1A    429400034    119    3272M    *    GACACAAGAGACTCTTTG    *    AS:i:1268    XS:i:2147    XF:i:0    XE:i:29    NM:i:1
scaffold_010679_1AL.3    16    chr1A    429397743    19    599S1730M1I279M    *    0    0    TGCCGAGGTTTTTGA    *    AS:i:1998    XS:i:1877    XF:i:3    XE:i:20    NM:i:2    XN:i:1
scaffold_010679_1AL.3    16    chr1A    429397743    19    599S1730M1I279M    *    0    0    TGCCGAGGTTTTTGA    *    AS:i:1098    XS:i:1877    XF:i:3    XE:i:20    NM:i:2    XN:i:1

结果文件

scaffold_010679_1AL.2    16    chr1A    429400034    119    3272M    *    GACACAAGAGACTCTTTG    *    AS:i:3268    XS:i:2147    XF:i:0    XE:i:29    NM:i:1
scaffold_010679_1AL.2    16    chr1A    429400034    119    3272M    *    GACACAAGAGACTCTTTG    *    AS:i:3268    XS:i:2147    XF:i:0    XE:i:29    NM:i:1 
scaffold_010679_1AL.3    16    chr1A    429397743    19    599S1730M1I279M    *    0    0    TGCCGAGGTTTTTGA    *    AS:i:1998    XS:i:1877    XF:i:3    XE:i:20    NM:i:2    XN:i:1
迷茫迷茫2741 天前711

全部回复(3)我来回复

  • 迷茫

    迷茫2017-04-18 10:36:19

    雷雷

    回复
    0
  • ringa_lee

    ringa_lee2017-04-18 10:36:19

    雷雷

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:36:19

    grep "`sort -r -t "*" -k 3 b.txt | head -1 |awk -F "*" '{split(,a," ");print a[1]}'
    `" b.txt

    思路文件按星号*分列分3列,按照第三列降序排序,取出第一行,取出AS:i:最大数,grep搜索之,得到结果。

    是我没仔细看提问,失误了~~结果不对

    回复
    0
  • 取消回复