免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: huang6894
打印 上一主题 下一主题

【问题】连续区间合并 [复制链接]

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
11 [报告]
发表于 2014-08-13 05:34 |只看该作者
回复 8# stanley_tam


    谢谢大神,我需要研究一些时候了,嘻嘻

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
12 [报告]
发表于 2014-08-13 05:35 |只看该作者
回复 9# chenhao392


    生信我算是半道出家,不是特别懂一些工具,暂时还是自己写脚本,一方面也是学习嘛,谢谢前辈,谢谢

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
13 [报告]
发表于 2014-08-13 05:36 |只看该作者
回复 10# yestreenstars


    谢谢星辰大哥,我先研究哈,谢谢,谢谢

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
14 [报告]
发表于 2014-08-13 21:56 |只看该作者
貌似也可以。
  1. #!/usr/bin/perl -w
  2. use 5.016;

  3. my %tmp = (
  4.     c256  => '',
  5.     count => 0,
  6.     range => [ 0, 0 ],
  7.     data  => [ 0, 1, 4, 5 ]
  8. );

  9. while (<DATA>) {
  10.     my @col  = split;
  11.     my $num  = $col[2];
  12.     my $c256 = "@col[1, 4, 5]";
  13.     if ( $c256 eq $tmp{c256} && $num - $tmp{range}[1] == 1 ) {
  14.         $tmp{range}[1] = $num;
  15.         $tmp{count}++;
  16.     }
  17.     else {
  18.         PRINT() if $tmp{count} >= 3;

  19.         %tmp = (
  20.             c256  => $c256,
  21.             count => 1,
  22.             range => [ $num, $num ],
  23.             data  => [ @col[ 0, 1, 4, 5 ] ]
  24.         );
  25.     }
  26. }

  27. PRINT() if $tmp{count} >= 3;

  28. sub PRINT {
  29.     say join "\t", @{ $tmp{data} }[ 0, 1 ], join( '-', @{ $tmp{range} } ),
  30.       @{ $tmp{data} }[ 2, 3 ];
  31. }

  32. __DATA__
  33. 16642     chr1    2336225 18      HOM     del
  34. 16642     chr1    2336226 17      HOM     del
  35. 16642     chr1    2336227 17      HOM     del
  36. 16642     chr1    2336228 18      HOM     del
  37. 16642     chr1    2336236 17      HOM     del
  38. 16642     chr1    2336237 17      HOM     del
  39. 16642     chr1    2336309 24      HOM     del
  40. 16642     chr1    2336320 24      HOM     del
  41. 16642     chr1    2336321 24      HOM     del
  42. 16642     chr1    2336322 24      HET     del
  43. 16642     chr1    2336323 24      HET     del
  44. 16642     chr1    2336324 24      HET     del
  45. 16642     chr1    2336325 24      HOM     del
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
15 [报告]
发表于 2014-08-13 22:10 |只看该作者
回复 14# substr函数


    谢谢你,一开始看到c256以为什么特殊含义呢。。。哈,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP