免费注册 查看新帖 |

Chinaunix

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

求个perl程序,生物信息方面的! [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-03-27 00:40 |只看该作者
回复 11# conn2011


    你好,哥们,我用你的程序试了一下,得出来一部分值, 是小数值,能取整吗??还有,file2的不能以第6列的值为关键字,第二列位置定义哈希,因为第六列的值有相等的。
  1. +        BGIBMGA000648-TA         MFBP22_F_C21.seq        nscaf1690        7983491        2927332        2942206
  2. +        BGIBMGA000648-TA         MFBP22_F_M19.seq        nscaf1690        7983491        2927328        2942181
  3. +        BGIBMGA000648-TA         MFBP22_F_O19.seq        nscaf1690        7983491        2927328        2942149
  4. +        BGIBMGA000648-TA         MFBP21_F_E08.seq        nscaf1690        7983491        2927328        2942222
  5. +        BGIBMGA000648-TA         MFBP21_F_F16.seq        nscaf1690        7983491        2927328        2942207
  6. +        BGIBMGA000648-TA         MFBP23_F_M16.seq        nscaf1690        7983491        2927328        2942190
  7. +        BGIBMGA000648-TA         MFBP26_F_G19.seq        nscaf1690        7983491        2927328        2942178
复制代码

论坛徽章:
0
22 [报告]
发表于 2011-03-27 01:01 |只看该作者
再顶下贴!

论坛徽章:
0
23 [报告]
发表于 2011-03-27 09:22 |只看该作者
本帖最后由 aef25u 于 2011-03-27 09:39 编辑

回复 19# aids260

楼主,file2清零是你file2.txt数据格式的问题,不是我代码出问题,
你file2.txt:+后的分隔符是\t,造成所有数据都向右便移了一位,那肯定找不到结果了。改两句代码就行了。
nscaf***以第一个为准的话小调整就行了。你回我第一次回复那看源代码吧。其实这些小问题你自己调试就能改好代码的。
my @oneArr=split("[ \t]+",$strOne);   

my @twoArr=split("[ \t]+",$strTwo);

论坛徽章:
0
24 [报告]
发表于 2011-03-27 09:59 |只看该作者
本帖最后由 aef25u 于 2011-03-27 10:01 编辑

回复 22# yinyuemi

呵呵,再次看到神一样的代码,原来在一行代码中if还可以对两文件同时进行匹配操作!能解释下END在那里的作用吗?
将你的代码排了下版:
  1. perl -lane 'if(/^\+/){$a{$F[1]}+=$F[5];$b{$F[1]}+=1}
  2.            if(/^BGIB/){$c{$F[0]}=$F[2];$d{$F[0]}=$F[1]}
  3.            END{for(keys %a){
  4.                $x=int($a{$_}/$b{$_});
  5.                $y=$c{$_}-$x;
  6.                  if($d{$_}){
  7.                     print "$_, $d{$_}, $x, $y, $b{$_}"
  8.                  }
  9.             }
  10.             } ' file1.fa file2.fa >output.fa  
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
25 [报告]
发表于 2011-03-27 10:46 |只看该作者
回复 24# aef25u


类似awk中的END, 所以文件读完后再执行END{}里的指令
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP