免费注册 查看新帖 |

Chinaunix

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

【求助改程序高手帮我改下这个程序】,只需输出结果中加入一些数据 [复制链接]

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
11 [报告]
发表于 2013-04-04 13:35 |只看该作者
本帖最后由 rubyish 于 2013-04-04 10:11 编辑

3Q~
是否适合:

  1. ERROR!!
  2. delete

复制代码

论坛徽章:
0
12 [报告]
发表于 2013-04-04 15:41 |只看该作者
回复 11# rubyish
行啊。谢谢老大啊

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
13 [报告]
发表于 2013-04-05 09:15 |只看该作者
看懂 le
  1. #!/usr/bin/perl
  2. use 5.016;
  3. my @in    = qw/refGene.txt lncipedia_location.txt/;
  4. my @out   = qw/gapped contain overlap  reverse/;
  5. my %index = qw/gap 0 con 1 ove 2  rev 3/;
  6. my ( $r, $l ) = map { open my ($f), $_; $f } @in;
  7. my @fh = map { open my ($f), '>', $_; $f } @out;
  8. my ( %r, %l );
  9. map { @_ = split /\t/, $_, 5; push @{ $r{ $_[1] } }, [ @_[ 2, 3 ], $_ ] } <$r>;
  10. map { @_ = split; push @{ $l{ $_[1] } }, [ @_[ 2, 3 ], $_ ] } <$l>;

  11. while ( my ( $k, $v ) = each %l ) {
  12.     next unless $r{$k};
  13.     my @L = sort { $a->[0] <=> $b->[0] } @$v;
  14.     my @R = sort { $b->[1] <=> $a->[1] } @{ $r{$k} };
  15.     for my $l (@L) {
  16.         my ( $A, $B, $L, %Q ) = @$l;
  17.         for my $r ( @R ) {
  18.             my ( $C, $D, $R ) = @$r;
  19.             next if $B < $C;
  20.             last if $A > $D;
  21.             my $cor =
  22.                 ( $C <= $A and $B <= $D ) ? 'con'
  23.               : ( $A < $C  and $D < $B )  ? 'rev'
  24.               :                             'ove';
  25.             $cor eq 'ove' ? push @{ $Q{$cor} }, $R : $Q{$cor}++;
  26.         }
  27.         my $all = 0;
  28.         $all += ref $_ eq 'ARRAY' ? @$_ : $_ for values %Q;
  29.         $Q{gap}++ if @R > $all;
  30.         for ( keys %Q ) {
  31.             print { $fh[ $index{$_} ] } $L and next if $_ ne 'ove';
  32.             my @p = ( $L, @{ $Q{$_} } );
  33.             s/\r?\n$// for @p;
  34.             say { $fh[ $index{$_} ] } "@p";
  35.         }
  36.     }
  37. }
复制代码
sinian126 该用户已被删除
14 [报告]
发表于 2013-04-05 09:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
15 [报告]
发表于 2013-04-05 09:59 |只看该作者
yanglc2013 发表于 2013-04-04 11:41
回复 11# rubyish
行啊。谢谢老大啊

BU 行啊。
有 ERROR!!
输出有少了!

论坛徽章:
0
16 [报告]
发表于 2013-04-05 17:37 |只看该作者
回复 13# rubyish
老大还有gapped的呢?


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
17 [报告]
发表于 2013-04-06 08:08 |只看该作者
overlay, contain, reverse, gapped
lnc
|| ref
|| ref
...

gapped => BIG FILE
  1. #!/usr/bin/perl
  2. use 5.016;
  3. my @in    = qw/refGene.txt lncipedia_location.txt/;
  4. my @out   = qw/gapped contain overlap  reverse/;
  5. my %index = qw/gap 0 con 1 ove 2  rev 3/;
  6. my ( $r, $l ) = map { open my ($f), $_; $f } @in;
  7. my @fh = map { open my ($f), '>', $_; $f } @out;
  8. my ( %r, %l );
  9. map { @_ = split /\t/, $_, 5; push @{ $r{ $_[1] } }, [ @_[ 2, 3 ], $_ ] } <$r>;
  10. map { @_ = split; push @{ $l{ $_[1] } }, [ @_[ 2, 3 ], $_ ] } <$l>;

  11. while ( my ( $k, $v ) = each %l ) {
  12.     next unless $r{$k};
  13.     my @L = sort { $a->[0] <=> $b->[0] } @$v;
  14.     my @R = sort { $b->[1] <=> $a->[1] } @{ $r{$k} };
  15.     my %RO = map { $_ => $R[$_][2] } 0 .. $#R;
  16.     for my $l (@L) {
  17.         my ( $A, $B, $L, %Q ) = @$l;
  18.         my %R = %RO;
  19.         for my $ri ( 0 .. $#R ) {
  20.             my ( $C, $D, $R ) = @{ $R[$ri] };
  21.             next if $B < $C;
  22.             last if $A > $D;
  23.             my $cor =
  24.                 ( $C <= $A and $B <= $D ) ? 'con'
  25.               : ( $A < $C  and $D < $B )  ? 'rev'
  26.               :                             'ove';
  27.             push @{ $Q{$cor} }, $R;
  28.             delete $R{$ri};
  29.         }
  30.         $Q{gap} = [ values %R ] if %R;
  31.         local $, = "|| ";
  32.         print { $fh[ $index{$_} ] } $L, @{ $Q{$_} } for keys %Q;
  33.     }
  34. }
复制代码
overlay, contain, reverse
lnc
|| ref
|| ref
...
gapped
lnc
  1. #!/usr/bin/perl
  2. use 5.016;
  3. my @in    = qw/refGene.txt lncipedia_location.txt/;
  4. my @out   = qw/gapped contain overlap  reverse/;
  5. my %index = qw/gap 0 con 1 ove 2  rev 3/;
  6. my ( $r, $l ) = map { open my ($f), $_; $f } @in;
  7. my @fh = map { open my ($f), '>', $_; $f } @out;
  8. my ( %r, %l );
  9. map { @_ = split /\t/, $_, 5; push @{ $r{ $_[1] } }, [ @_[ 2, 3 ], $_ ] } <$r>;
  10. map { @_ = split; push @{ $l{ $_[1] } }, [ @_[ 2, 3 ], $_ ] } <$l>;

  11. while ( my ( $k, $v ) = each %l ) {
  12.     next unless $r{$k};
  13.     my @L = sort { $a->[0] <=> $b->[0] } @$v;
  14.     my @R = sort { $b->[1] <=> $a->[1] } @{ $r{$k} };
  15.     for my $l (@L) {
  16.         my ( $A, $B, $L, %Q ) = @$l;
  17.         for my $r ( @R ) {
  18.             my ( $C, $D, $R ) = @$r;
  19.             next if $B < $C;
  20.             last if $A > $D;
  21.             my $cor =
  22.                 ( $C <= $A and $B <= $D ) ? 'con'
  23.               : ( $A < $C  and $D < $B )  ? 'rev'
  24.               :                             'ove';
  25.             push @{ $Q{$cor} }, $R;
  26.         }
  27.         my $all = 0;
  28.         $all += @$_ for values %Q;
  29.         $Q{gap} = [] if @R > $all;
  30.         local $, = "|| ";
  31.         print { $fh[ $index{$_} ] } $L, @{ $Q{$_} } for keys %Q;
  32.     }
  33. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP