免费注册 查看新帖 |

Chinaunix

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

循环不执行 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-08-15 10:58 |只看该作者
回复 8# flw
不好意思啊,我正在学,不过有些地方我自己实在想不明白,又找不到人问,才上来发帖的,可能我的问题比较幼稚,让你见笑了


   

论坛徽章:
0
12 [报告]
发表于 2014-08-15 17:27 |只看该作者
hg19.txt
  1. 1        104
  2. 2        225
复制代码
obj.txt
  1. 1        29
  2. 1        78
  3. 1        13
  4. 1        67
  5. 1        49
  6. 1        10
  7. 1        32
  8. 1        71
  9. 1        52
  10. 1        78
  11. 1        14
  12. 1        36
  13. 1        60
  14. 1        95
  15. 1        42
  16. 1        67
  17. 1        20
  18. 1        0
  19. 1        97
  20. 1        10
  21. 2        220
  22. 2        166
  23. 2        54
  24. 2        187
  25. 2        92
  26. 2        115
  27. 2        132
  28. 2        172
  29. 2        16
  30. 2        133
  31. 2        68
  32. 2        125
  33. 2        159
  34. 2        56
  35. 2        192
  36. 2        14
  37. 2        75
  38. 2        89
  39. 2        87
  40. 2        206
复制代码
newout.txt
  1. 1        1        3
  2. 1        2        3
  3. 1        3        1
  4. 1        4        2
  5. 1        5        3
  6. 1        6        1
  7. 1        7        3
  8. 1        8        2
  9. 1        9        0
  10. 1        10        2
  11. 2        1        2
  12. 2        2        0
  13. 2        3        2
  14. 2        4        4
  15. 2        5        1
  16. 2        6        4
  17. 2        7        0
  18. 2        8        3
  19. 2        9        2
  20. 2        10        2
复制代码
code
  1. #!/usr/bin/perl

  2. open my $A, 'hg19.txt';
  3. open my $B, 'obj.txt';
  4. open my $C, '>', 'newout.txt';
  5. my $N = 10;
  6. my %pos;

  7. while (<$B>) {
  8.     my ( $chr, $pos ) = split;
  9.     push @{ $pos{$chr} }, $pos;
  10. }

  11. while (<$A>) {
  12.     my ( $chr, $len ) = split;
  13.     my $step = $len / $N;
  14.     my @steps = map { $step * $_ } 1 .. $N;
  15.     $steps[-1] = $len;
  16.     my @result = (0) x $N;
  17.     my $begin  = 0;

  18.     for my $P ( sort { $a <=> $b } @{ $pos{$chr} } ) {
  19.         for my $i ( $begin .. $#steps ) {
  20.             $P <= $steps[$i] ? do { $result[$i]++; last } : $begin++;
  21.         }
  22.     }

  23.     my $zone = 1;
  24.     print $C "$chr\t", $zone++, "\t$_\n" for @result;
  25. }
复制代码

论坛徽章:
0
13 [报告]
发表于 2014-08-16 14:58 |只看该作者
回复 12# Okelani
非常感谢你~
里边有几个用法我是第一次见到,需要好好琢磨一下。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP