免费注册 查看新帖 |

Chinaunix

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

小程序救助,希望大神能帮忙指点,小弟跪谢~~~~ [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-23 03:05 |只看该作者 |倒序浏览
求大神指导~~~跪谢!!!!

现有文件格式如下

>seq1        12
CAGCTAGCTACGTCG
>seq2        22
CACGATGCTACGTAGCAGCT
>seq3        2
CAGCTACGTAGCGAAG
>seq4        4
CAGCTAGCGAGCTACG
>seq5        6
CACGATCGAGCGTAGCTAGC

现在想得到不同长度的序列 他们ID行的后面的数字的和;
好比如下结果:

length=15 number=12
length=20 number=28
length=16 number=6

长度是15的序列,number就是原文件里的12
长度是20的序列,number就是原文件里的22+6=28
长度是16的序列,number就是原文件里的2+4=6


求大神指点,万分感谢~~~~~

论坛徽章:
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
2 [报告]
发表于 2014-10-23 10:50 |只看该作者
回复 1# albertkingking
  1. my %h;
  2. $/=">";

  3. <DATA>;
  4. while(<DATA>){
  5.         chomp;
  6.         my ($name,@seq) = (split /\n/);
  7.         my $key = join("",@seq);
  8.         my $value = (split /\s+/,$name)[-1];
  9.         $h{length($key)} += $value;
  10. }
  11. $/="\n";
  12. foreach my $k (sort keys %h){
  13.         print "length=".$k."\tnumber=".$h{$k}.$/;
  14. }
  15. __DATA__
  16. >seq1        12
  17. CAGCTAGCTACGTCG
  18. >seq2        22
  19. CACGATGCTACGTAGCAGCT
  20. >seq3        2
  21. CAGCTACGTAGCGAAG
  22. >seq4        4
  23. CAGCTAGCGAGCTACG
  24. >seq5        6
  25. CACGATCGAGCGTAGCTAGC
复制代码

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2014-10-23 23:48 |只看该作者
好厉害 我咋就想不出来呢 谢谢~~~~~回复 2# huang6894


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2014-10-24 12:17 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my($num, %hash);
  5. while(<DATA>){
  6.         chomp;
  7.         if($. % 2){
  8.                 $num = (split)[1];
  9.         }else{
  10.                 $hash{length $_} += $num;
  11.         }
  12. }
  13. printf "length=%d number=%d\n", $_, $hash{$_} for keys %hash;

  14. __DATA__
  15. >seq1        12
  16. CAGCTAGCTACGTCG
  17. >seq2        22
  18. CACGATGCTACGTAGCAGCT
  19. >seq3        2
  20. CAGCTACGTAGCGAAG
  21. >seq4        4
  22. CAGCTAGCGAGCTACG
  23. >seq5        6
  24. CACGATCGAGCGTAGCTAGC
复制代码

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
5 [报告]
发表于 2014-10-24 21:10 |只看该作者
我也写了一个
#!/usr/bin/perl -w
$/=">";<DATA>;$/="\n";
my %hash;
while (<DATA>){
my ($a,$number) = split /\s+/;
$/=">";
my $seq = <DATA>;
  $/="\n";
$seq =~ s/>$//;
$seq =~ s/\n//g;
my $length = length($seq);
push @{$hash{$length}},$number;
}
foreach my $k (sort keys %hash){
my $sum = 0;
    $sum += $_ for @{$hash{$k}};
print "length=$k\tnumber=$sum\n";
}

__DATA__
>seq1        12
CAGCTAGCTACGTCG
>seq2        22
CACGATGCTACGTAGCAGCT
>seq3        2
CAGCTACGTAGCGAAG
>seq4        4
CAGCTAGCGAGCTACG
>seq5        6
CACGATCGAGCGTAGCTAGC回复 1# albertkingking


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2014-10-28 03:39 |只看该作者
醉了  太牛叉了  谢谢~~~~回复 4# yestreenstars


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
7 [报告]
发表于 2014-10-28 03:39 |只看该作者
都好牛~~~~ 学习了~~~~回复 5# 清泉一边


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP