免费注册 查看新帖 |

Chinaunix

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

求指导 ~~~半天也没写出来 求大神指导~~ [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-02 22:06 |只看该作者 |倒序浏览
现有文件如下:
>comp0_c0_seq1 len=245 path=[391:0-244]
ATCATTGGAGGCATATTGAAATCTTAGTAGCAGGTATTATTAGAACTTGAGAGAA
>comp0_c0_seq1 len=381 path=[359:0-380]
CGTGGAGAGAAGCCAGCTTGAATTGAATGGTGCAAGACTCGGCTCAA
>comp3_c1_seq1 len=721 path=[717:0-720]
GTGAAGAAACTGTGTTTGGCACCTGTGTCGGCCGCAAAGCACCAATCGTGGAGAGAAGCCACAA
>comp2_c0_seq1 len=468 path=[1:0-467]
ATTAAGAGTTTGGAAGATTAGGTAGCCATTGACAGTTTTACACTGTTTAGAGAAAGACTTATCTTAATTTTGTTTTGGGTTTATTTGGAAATTCAAACTGTATCAAATAAGGGA
>comp1_c1_seq1 len=264 path=[1132:0-263]
GGGTATGAGGATATGGATTTTATTTCATGTATGATTTTAGTCAAATACAAGTATTGTATTAAAAAAAAAAAGTGAGGTG
>comp3_c0_seq1 len=258 path=[481:0-207 110:208-257]
AAGTCAAGAATAAGGTAGAAAAATAGCATACCTGTAATAAGAGTTCCACGGGATGCTGGTGA
>comp2_c0_seq1 len=441 path=[1:0-97 633:98-440]
CACTGATTGATATTTAATATTCCTAAAATTCTTTCATATCTAAGTAGTCTTCCTTCTATTTTTTCTAGGTCTTTCGAAAGGATAACAGAA
>comp3_c0_seq1 len=417 path=[607:0-416]
GTAAGAACTGTCACAAAGCCAAATTCAGGCTATCAGATGGTGCCCAG
>comp1_c1_seq1 len=721 path=[717:0-720]
GTGAAGAAACTGTGTTTGGCACCTGTGTCGGCCGCAAAGCACCAATCGTGGAGAGAAGCCACAA

目的是:按照comp后面紧跟的数字将这些序列文件分组,然后把每一组中的最长的那条序列打印出来,例如按照给出的例子的结果文件是:

>comp0_c0_seq1 len=245 path=[391:0-244]
ATCATTGGAGGCATATTGAAATCTTAGTAGCAGGTATTATTAGAACTTGAGAGAA
>comp3_c0_seq1 len=441 path=[1:0-97 633:98-440]
CACTGATTGATATTTAATATTCCTAAAATTCTTTCATATCTAAGTAGTCTTCCTTCTATTTTTTCTAGGTCTTTCGAAAGGATAACAGAA
>comp2_c0_seq1 len=468 path=[1:0-467]
ATTAAGAGTTTGGAAGATTAGGTAGCCATTGACAGTTTTACACTGTTTAGAGAAAGACTTATCTTAATTTTGTTTTGGGTTTATTTGGAAATTCAAACTGTATCAAATAAGGGA
>comp1_c1_seq1 len=264 path=[1132:0-263]
GGGTATGAGGATATGGATTTTATTTCATGTATGATTTTAGTCAAATACAAGTATTGTATTAAAAAAAAAAAGTGAGGTG

求大神指导~~~~跪谢~~~~{:3_199:}

论坛徽章:
0
2 [报告]
发表于 2012-11-03 14:45 |只看该作者
这个样子还是比较容易看懂
假设文件叫data
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. use Data::Dumper;

  5. $/ = ">";
  6. my %hash;

  7. open IN, "<", "data" or die "Can't open data:$!\n";

  8. <IN>;

  9. while (<IN>) {
  10.         chomp;
  11.         my @tmp = split /\n/;
  12.         my $comp = (split /_/,$tmp[0])[0];
  13.         if (!exists $hash{$comp}) {
  14.                 $hash{$comp}{ID}  = $tmp[0];
  15.                 $hash{$comp}{seq} = $tmp[1];
  16.         } elsif (length $tmp[1] > length ($hash{$comp}{seq})) {
  17.                 $hash{$comp}{ID}  = $tmp[0];
  18.                 $hash{$comp}{seq} = $tmp[1];
  19.         }
  20. }

  21. close IN;

  22. print ">$hash{$_}{ID}\n$hash{$_}{seq}\n" for keys %hash;
复制代码
./data.pl

>comp2_c0_seq1 len=468 path=[1:0-467]
ATTAAGAGTTTGGAAGATTAGGTAGCCATTGACAGTTTTACACTGTTTAGAGAAAGACTTATCTTAATTTTGTTTTGGGTTTATTTGGAAATTCAAACTGTATCAAATAAGGGA
>comp3_c1_seq1 len=721 path=[717:0-720]
GTGAAGAAACTGTGTTTGGCACCTGTGTCGGCCGCAAAGCACCAATCGTGGAGAGAAGCCACAA
>comp0_c0_seq1 len=245 path=[391:0-244]
ATCATTGGAGGCATATTGAAATCTTAGTAGCAGGTATTATTAGAACTTGAGAGAA
>comp1_c1_seq1 len=264 path=[1132:0-263]
GGGTATGAGGATATGGATTTTATTTCATGTATGATTTTAGTCAAATACAAGTATTGTATTAAAAAAAAAAAGTGAGGTG

论坛徽章:
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 [报告]
发表于 2012-11-03 14:53 |只看该作者
如下:
  1. #!/usr/bin/perl

  2. my ( %h, @a );
  3. open my $d, 'data';
  4. while (<$d>) {
  5.     /^.(\w+)/;
  6.     my $n = <$d>;
  7.     my $l = length $n;
  8.     push @a, $1 if !$h{$1};
  9.     $h{$1} = [ $l, $_ . $n ] if !$h{$1} or $h{$1}[0] < $l;
  10. }
  11. print $h{$_}[1] for @a;
复制代码

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2012-11-03 18:20 |只看该作者
谢谢指导 ~~~~
我得先看看学习学习 {:3_193:} 回复 2# FTDlinux


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2012-11-03 18:21 |只看该作者
谢谢啦 ~~~~
学习 学习了~~~{:3_193:} 回复 3# rubyish


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2012-11-03 19:43 |只看该作者
大神 太简略了 膜拜了~~~回复 3# rubyish


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
7 [报告]
发表于 2012-11-03 19:44 |只看该作者
太清晰了 对于我们这种菜鸟 学习起来比较舒服  膜拜 了 回复 2# FTDlinux


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP