免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-03 16:14 |只看该作者 |倒序浏览
本帖最后由 yanglc2013 于 2013-04-03 18:15 编辑

因为他输出的格式是(只有lnc中的数据):
lnc-C1orf227-1:2        chr1        213028819        213031452        -

但我想在同行加上对应的refGene中的数据(附件中,下面的程序也是基于附件中的两个文件的比较。)
lnc-C1orf227-1:2        chr1        213028819        213031452        -      NM_014053        chr1        213031596        213072705        +        2210  (overlap关系)

原帖地址:http://bbs.chinaunix.net/thread-4073924-1-1.html(一下程序已经解决原帖的问题,现在想输出结果把refGene中对应的数据输出)
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use Data::Dumper;
  4. my($ref,$lnc,$contain,$overlap,$gapped,$reverse);
  5. open($ref,$ARGV[0]) or die $!;
  6. open($lnc,$ARGV[1]) or die $!;
  7. open($contain,'>','contain.txt') or die $!;
  8. open($overlap,'>','overlap.txt') or die $!;
  9. open($gapped ,'>','gapped.txt')  or die $!;
  10. open($reverse,'>','reverse.txt') or die $!;

  11. my %hRefDB;
  12. while (<$ref>){
  13.    my ($chr, $beg, $end) = (split)[1,2,3]; #Tab拆分,并取第二,第三,第四个元素。
  14.       push @{ $hRefDB{$chr}}, [$beg,$end]; #存入哈希数组。
  15. }

  16. while (<$lnc>) {
  17.    my ($chr,$beg,$end) = (split)[1,2,3];    #Tab拆分,并取第二,第三,第四个元素。
  18.    if (!exists $hRefDB{$chr}) {            
  19.        print "not exists in refDB\n";
  20.        next;
  21.    }
  22.    my $lnc = [$beg,$end];
  23.    my ($is_contain,$is_overlap,$is_reverse) = (0,0,0);
  24.    foreach my $ref (@{$hRefDB{$chr}}){       #遍历哈希数组的每个元素。
  25.        last if $is_contain and $is_overlap and $is_reverse;
  26.        unless ($is_contain){                 #除非$is_contain的值为0,否则,将is_contain($lnc,$ref)的返回值赋值给 $is_contain。
  27.             $is_contain = is_contain($lnc,$ref)
  28.             and next;
  29.        }
  30.        unless ($is_reverse){
  31.             $is_reverse = is_reverse($lnc,$ref)
  32.             and next;
  33.        }
  34.        unless ($is_overlap){
  35.             $is_overlap = is_overlap($lnc,$ref)
  36.             and next;
  37.        }
  38.    }
  39.    my $is_gapped = $is_contain || $is_reverse || $is_overlap ? 0:1;
  40.    print $contain $_ if $is_contain;
  41.    print $overlap $_ if $is_overlap;
  42.    print $gapped  $_ if $is_gapped;
  43.    print $reverse $_ if $is_reverse;
  44. }
  45. sub is_ln {
  46.     my($num,$ref) = @_;
  47.     return $num >= $ref->[0] && $num <=$ref->[1] ? 1:0;
  48. }
  49. sub is_contain {
  50.     my ($lnc,$ref) = @_;
  51.     return (is_ln($lnc->[0],$ref) && is_ln($lnc->[1],$ref)) ? 1:0;
  52. }
  53. sub is_reverse {
  54.     my ($lnc,$ref) = @_;
  55.     return is_contain($ref,$lnc);
  56. }
  57. sub is_overlap {
  58.     my ($lnc,$ref) = @_;
  59.     return (is_ln($lnc->[0],$ref) && ! is_ln($lnc->[1],$ref)) ||
  60.            (is_ln($lnc->[1],$ref) && ! is_ln($lnc->[0],$ref)) ? 1:0;
  61. }
  62. sub is_gapped {
  63.     my ($lnc,$ref) = @_;
  64.     return (! is_ln($lnc->[0],$ref) && ! is_ln($lnc->[1],$ref)) ? 1:0;
  65. }

复制代码

kk.rar

921.59 KB, 下载次数: 0

论坛徽章:
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
2 [报告]
发表于 2013-04-03 22:47 |只看该作者
lnc-HES5-1:2        chr3        14 100        -                 #gapped & overlap       

NR_026818        chr3        110 150        -        585
NR_033908        chr2        10 90        -        590
NR_027055        chr1        8 20        -        591
NM_016505        chr3        50 128        +        827
NM_001097613        chr2        11 13        -        1697

无交集输出文件 gapped
overlap nali 又有 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
3 [报告]
发表于 2013-04-03 22:59 |只看该作者
没有 contain 或 overlay 或 reverse
则输出 gapped

是 ma ?{:3_188:}

论坛徽章:
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
4 [报告]
发表于 2013-04-03 23:19 |只看该作者
本帖最后由 rubyish 于 2013-04-04 10:12 编辑

是否适合:

  1. ERROR!!
  2. delete
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-04-04 09:29 |只看该作者
回复 4# rubyish [/b
嘿嘿,试试看啊。这里好多高手啊。


   

论坛徽章:
0
6
发表于 2013-04-04 09:32
回复 3# rubyish

是啊,老大

   

论坛徽章:
0
7 [报告]
发表于 2013-04-04 09:34 |只看该作者
回复 2# rubyish


    同一个染色体有overlap和有gappe 都要分别输出。

论坛徽章:
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
8 [报告]
发表于 2013-04-04 12:15 |只看该作者
老大,没看懂你这个啊。
有overlap和有gappe 都要分别输出?

有overlap = 有交集
if 无交集输出 gapped
有overlap = 没有 gappe

有overlap和有gappe 都要分别输出?
怎么写,楼主帮助下,谢谢!!

论坛徽章:
0
9 [报告]
发表于 2013-04-04 13:01 |只看该作者
回复 8# rubyish

因为在refGene中有比较多重复的染色体。比如有两个chr1,那么lnc中的每个chr1就必须和refGene中的两个chr1都比较。出现的情况就可能是gapped,或者和另一个出现overlap。


   

论坛徽章:
0
10 [报告]
发表于 2013-04-04 13:04 |只看该作者
回复 8# rubyish

就是lnc中的其中一个染色体,比如chr1,但是ref中却存在很多chr1,他们的区间都不一样。


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP