+ -
当前位置:首页 → 问答吧 → 比较匹配

比较匹配

时间:2010-08-12

来源:互联网

大家好:
    我有一个文件:内容是
>ab1
123
234
567
987
>ab2
345
678
123
654
789
  等等,还有另外一个文件,内容是
>bc
123456789
我想要这两个文件去匹配,最后得到一个百分比。  比如说ab1里面有4行,让这4行去和bc的这一行去匹配,匹配上的就$count++; 然后再用总行去减去匹配上的个数 也就是$count,再除以总行得到想要的百分比。
比如ab1里面,总行为4行,匹配的为3个,那么计算方法就是: (5-4) / 5.后面的都是这样,以此类推。
我想了多种方法,不过思路还是陷到子程序里了。写的特别乱,而且还不对,呵呵  希望大家能帮帮。谢谢。
open (FH,'E:\task\805\9mer\1.fasta') || die "$!";
open (OUT,'>E:\task\805\9mer\2.fasta') || die "$!";
my ($title,$line,%seq,$count,$count1,$count2,@array,@array2);
while (<FH>) {
   chomp;
   if (/^>/) {
      $title = $_;
#      print OUT "$title\n";
   }

   else {
      $seq{$title} .= $_;
       @array = &distance($_);
       foreach my $ninemer (@array) {
        # @array2 = split (/\s+/,$ninemer);
         print OUT $array2[2];
       }
      }
   }
#          open (IN,'E:\task\805\9mer\GAG.fasta') || die "$!";
#    my $string = <IN>;
#      if ($string =~ /$ninemer/) {
#         $count2++;
#      }
#
#    }
#    my $count = ($count1 - $count2) / $count1;
#    printf OUT "%5.2f", $count;
#}
#   }
#}

sub distance {
     my ($string) = @_;
     my $num = 0;
     my $len = 9;
     my @array1;
     while(1){
        my $str = substr ($string,$num,$len);
        last if (length($str) < 9);
     #   print OUT "$str\n";
     push @array1,$str;
        $num += 9;
  }
  return "@array1\n";
}

作者: leigh111   发布时间: 2010-08-12

搞生物的啊~~~

作者: shilin320   发布时间: 2010-08-12

回复 shilin320


    对。其实我就想比较序列之间的距离

作者: leigh111   发布时间: 2010-08-12

我的程序就只能写这么点,不知道该怎么写了。没思路了。
use strict;
use warnings;
open (FH,'E:\task\805\9mer\1.txt) || die "$!";
open (OUT,'>E:\task\805\9mer\2.txt) || die "$!";
my ($title,$line,%seq,$count,$count1,$count2,@array,@array2);
my $string;
while ($line = <FH>) {
   chomp $line;
   if ($line =~ /^>/) {
      $title = $_;
#     print OUT "$title\n";
   }
     if ($line =~ /^\w{3}$/) {
        $count1++;
        $string = "123456789";
        $count2++ if ($string =~ /$line/);
    }
}

#    my $count = ($count1 - $count2) / $count1;
#    printf OUT "%5.2f", $count;
#}
#   }
#}

作者: leigh111   发布时间: 2010-08-12

回复 leigh111


    握手,同行~不过我算入门级的。师兄都比较厉害。

作者: shilin320   发布时间: 2010-08-12

热门下载

更多