亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 10041 | 回復(fù): 17
打印 上一主題 下一主題

急急急!提取最長(zhǎng)序列 [復(fù)制鏈接]

論壇徽章:
2
15-16賽季CBA聯(lián)賽之山西
日期:2016-03-03 17:51:32CU十四周年紀(jì)念徽章
日期:2016-03-21 18:45:39
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-09-28 13:42 |只看該作者 |倒序?yàn)g覽
本帖最后由 賽萌 于 2015-09-28 14:30 編輯

>EM.1.1 EM.1 LK029911.1 +
CTGTCAATCCCGCACATTAAAGCATCTCTCTCCCCTTGCCTATTTTCTCGCCCCTTCCccatcctccttctctctcgctctctcctaGCATAGCTCCAAGCGCGAGGAACA
>EM.1.2 EM.1 LK029911.1 +
TCCTTTTAAGTACTGCAAACATACCTGGCGGCTTAAGCTTGCAGTATAATGTCAAGTGCTTCCCTACCACTTATTGCTTATAATTGTGATCACCCGTCAAATTGGTCGTTCTTGGAATATAGGCTCTTACTTTTAGAGCATGGTTATTTAAACAGGGGGACGAAAATCCCTCTTTGCTCAATGTAAGTCAGCTAGTTGTACTTACGTTTTGAACTCCACGTCCACACTGGAACAGCATTCGCTATGGACTGTGTCACACGACAAGCAGGTATGTTCATTT
>EM.1.3 EM.1 LK029911.1 +
CTGTCAATCCCGCACATTAAAGCATCTCTCTCCCCTTGCCTATTTTCTCGCCCCTTCCccatcctccttctctctcgctc
很多上面的這些個(gè)序列,要求是 EM.1相同的情況下,EM.1.1、EM.1.2、EM.1.3下面對(duì)的序列哪個(gè)長(zhǎng)就把那個(gè)提取出來(lái),像這個(gè)結(jié)果就要是
> EM.1
TCCTTTTAAGTACTGCAAACATACCTGGCGGCTTAAGCTTGCAGTATAATGTCAAGTGCTTCCCTACCACTTATTGCTTATAATTGTGATCACCCGTCAAATTGGTCGTTCTTGGAATATAGGCTCTTACTTTTAGAGCATGGTTATTTAAACAGGGGGACGAAAATCCCTCTTTGCTCAATGTAAGTCAGCTAGTTGTACTTACGTTTTGAACTCCACGTCCACACTGGAACAGCATTCGCTATGGACTGTGTCACACGACAAGCAGGTATGTTCATTT
下面是我寫的程序,寫的有問(wèn)題,我自己看不出,因?yàn)榈贸龅慕Y(jié)果有25個(gè)是重復(fù)的,就是提出來(lái)有25個(gè)是提取了兩次
#!perl
use strict;
use warnings;
use Data::Dumper;

die "usage $0 input output" unless @ARGV==2;
open IN,$ARGV[0];
my $zn;
my $n;
my %seq;
while(<IN>){
        if(s/^>//){               
                my @its=split;
                $n=$its[0];
                $zn=$its[1];
        }else{
                chomp;
                $seq{$zn}{$n}.=$_;               
        }       
}
close IN;
#print Dumper(%seq),"\n";
open OUT,">","$ARGV[1]";
my %seq1;
my %seq2;
my $seq;
foreach my  $zw (keys %seq){
#        my $seq=$seq{$zw};
        my @length;
        foreach my $w (keys %{$seq{$zw}}){
                $seq=$seq{$zw}{$w};
#                $seq="\U$seq";
                my $length=length($seq);
                push @length,$length;
                $seq1{$zw}{$w}{$length}{$seq}=1;
        }
#        print Dumper(%seq1);
        my $longest=$length[-1];
        foreach(@length){
                $longest=$_ if $_ > $longest;
        }
       
    foreach my $w (keys %{$seq1{$zw}}){
            foreach (keys %{$seq1{$zw}{$w}}){
                    if(exists $seq1{$zw}{$w}{$longest}){
                            my $seqs=Dumper(keys %{$seq1{$zw}{$w}{$longest}});
                            my @seqs=keys %{$seq1{$zw}{$w}{$longest}};
#                            print "@seqs\n";
                            print OUT ">$zw\n@seqs\n";
                    }                                      
            }           
    }      
}   

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
2 [報(bào)告]
發(fā)表于 2015-09-28 15:27 |只看該作者
本帖最后由 sunzhiguolu 于 2015-09-28 17:32 編輯

回復(fù) 1# 賽萌
您的代碼好多地方, 我還沒(méi)有接觸到. 所以不能為您指出問(wèn)題, 抱歉.  
在沒(méi)有更好的解決方案前, 可以試下我這個(gè), 等有了更好的方法再更換好了! (笨方法)
  1. #!/usr/bin/perl
  2. use 5.010;
  3. use strict;
  4. use warnings;

  5. #函數(shù) set_or_get_last_id 用來(lái)存放或獲取上一次的 $id 的值
  6. sub set_or_get_last_id{
  7.         state $last_id;
  8.         $last_id = shift if (@_);
  9.         $last_id;
  10. }

  11. #哈希變量 %keys_name, %keys_value 并行存儲(chǔ) ($id, $name) 及 ($id, $max_long_str)
  12. my (%keys_name, %keys_value, $max_long_str);
  13. while(<>){
  14.         my ($name, $id);
  15.         chomp;
  16.         my @a_line = split /\s+/;
  17.         if (m/^>/){
  18.                 ($name, $id) = ($a_line[0], $a_line[1]);
  19.                 if (!(exists $keys_name{$id})){
  20.                         $name =~ s/\.[0-9]+$//;    #加入這句
  21.                         $keys_name{$id} = $name;
  22.                         $keys_value{$id} = "";
  23.                         set_or_get_last_id($id);
  24.                 }
  25.         }else{
  26.                 my $last_id = set_or_get_last_id();
  27.                 $max_long_str = $keys_value{$last_id};
  28.                 my $current_str = $a_line[0];
  29.                 if (length($current_str) > length($max_long_str)){
  30.                         $keys_value{$last_id} = $current_str;
  31.                 }
  32.         }
  33. }

  34. foreach (keys %keys_name){
  35.         print "$keys_name{$_}\n$keys_value{$_}\n";
  36. }
復(fù)制代碼

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
3 [報(bào)告]
發(fā)表于 2015-09-28 15:38 |只看該作者
本帖最后由 sunzhiguolu 于 2015-09-28 17:40 編輯

    另外, 借此機(jī)會(huì)我也向大家請(qǐng)教一個(gè)問(wèn)題. 我希望將 while 循環(huán)封裝成一個(gè)函數(shù), 怎么將兩個(gè)哈希變量返回給調(diào)用方. 像下面的這種方式嗎?
  1. sub abc{
  2.    ...
  3.    (\%keys_name, \%keys_value);
  4. }
復(fù)制代碼
這種方法返回的列表, 隨著方法的結(jié)束數(shù)據(jù)是否會(huì)受到影響? 還是有更好的方法?
還請(qǐng)大家給予幫助及指點(diǎn)... 多謝大家...

論壇徽章:
2
15-16賽季CBA聯(lián)賽之山西
日期:2016-03-03 17:51:32CU十四周年紀(jì)念徽章
日期:2016-03-21 18:45:39
4 [報(bào)告]
發(fā)表于 2015-09-28 15:52 |只看該作者
回復(fù) 2# sunzhiguolu


   艾,你寫的我也看不懂

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
5 [報(bào)告]
發(fā)表于 2015-09-28 15:56 |只看該作者
本帖最后由 sunzhiguolu 于 2015-09-28 16:05 編輯

回復(fù) 4# 賽萌
比方說(shuō)? 具體一點(diǎn)... 另外, 代碼試過(guò)了嗎? (我們是希望探討代碼的內(nèi)容嗎? 還是先測(cè)試下代碼能否得到您的期望的結(jié)果.)
   

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [報(bào)告]
發(fā)表于 2015-09-28 16:01 |只看該作者
本帖最后由 jason680 于 2015-09-28 16:04 編輯

回復(fù) 1# 賽萌

$ perl max_length.pl
> EM.1
TCCTTTTAAGTACTGCAAACATACCTGGCGGCTTAAGCTTGCAGTATAATGTCAAGTGCTTCCCTACCACTTATTGCTTATAATTGTGATCACCCGTCAAATTGGTCGTTCTTGGAATATAGGCTCTTACTTTTAGAGCATGGTTATTTAAACAGGGGGACGAAAATCCCTCTTTGCTCAATGTAAGTCAGCTAGTTGTACTTACGTTTTGAACTCCACGTCCACACTGGAACAGCATTCGCTATGGACTGTGTCACACGACAAGCAGGTATGTTCATTT

$ cat max_length.pl
use strict;
use warnings;

my $sEM  = "";
my $sSeq = "";
my %hSeq;

sub check_length{
  my ($sEM, $sSeq) = @_;

  return if($sEM eq "");

  $hSeq{$sEM} = $sSeq if(! exists $hSeq{$sEM});
  if(length($hSeq{$sEM}) < length($sSeq)){
    $hSeq{$sEM} = $sSeq;
  }
}


while(<DATA>){
  chomp;
  if(m/^[^>]/){
    $sSeq .= $_;
    next;
  }
  check_length($sEM, $sSeq);

  $sEM = (split)[1];
  $sSeq = "";
}

check_length($sEM, $sSeq);

foreach(sort keys %hSeq){
  print "> $_\n$hSeq{$_}\n";
}

__DATA__
>EM.1.1 EM.1 LK029911.1 +
CTGTCAATCCCGCACATTAAAGCATCTCTCTCCCCTTGCCTATTTTCTCGCCCCTTCCccatcctccttctctctcgctctctcctaGCATAGCTCCAAGCGCGAGGAACA
>EM.1.2 EM.1 LK029911.1 +
TCCTTTTAAGTACTGCAAACATACCTGGCGGCTTAAGCTTGCAGTATAATGTCAAGTGCTTCCCTACCACTTATTGCTTATAATTGTGATCACCCGTCAAATTGGTCGTTCTTGGAATATAGGCTCTTACTTTTAGAGCATGGTTATTTAAACAGGGGGACGAAAATCCCTCTTTGCTCAATGTAAGTCAGCTAGTTGTACTTACGTTTTGAACTCCACGTCCACACTGGAACAGCATTCGCTATGGACTGTGTCACACGACAAGCAGGTATGTTCATTT
>EM.1.3 EM.1 LK029911.1 +
CTGTCAATCCCGCACATTAAAGCATCTCTCTCCCCTTGCCTATTTTCTCGCCCCTTCCccatcctccttctctctcgctc

   

論壇徽章:
2
15-16賽季CBA聯(lián)賽之山西
日期:2016-03-03 17:51:32CU十四周年紀(jì)念徽章
日期:2016-03-21 18:45:39
7 [報(bào)告]
發(fā)表于 2015-09-28 16:21 |只看該作者
回復(fù) 5# sunzhiguolu


    恩,試過(guò)了,是正確的,萬(wàn)分感謝,辛苦您了。我今天狀態(tài)不對(duì),沒(méi)有認(rèn)真學(xué)習(xí)的心思,老板今天又死揪著我不放,非常抱歉。

論壇徽章:
2
15-16賽季CBA聯(lián)賽之山西
日期:2016-03-03 17:51:32CU十四周年紀(jì)念徽章
日期:2016-03-21 18:45:39
8 [報(bào)告]
發(fā)表于 2015-09-28 16:22 |只看該作者
回復(fù) 6# jason680


    非常不好意思,您指的問(wèn)題我會(huì)一一改正,謝謝。

論壇徽章:
2
15-16賽季CBA聯(lián)賽之山西
日期:2016-03-03 17:51:32CU十四周年紀(jì)念徽章
日期:2016-03-21 18:45:39
9 [報(bào)告]
發(fā)表于 2015-09-28 17:24 |只看該作者
回復(fù) 2# sunzhiguolu


    有一個(gè)小問(wèn)題,就是最后的得到的每個(gè)序列的表頭,后面都多了.1

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
10 [報(bào)告]
發(fā)表于 2015-09-28 17:32 |只看該作者
回復(fù) 9# 賽萌
再試下...

   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP