-1

私はPerlの初心者で、DNAヌクレオチドを含むサイズの異なる2つの文字列を比較しています。スクリプトで小さい方の文字列を取得し、それをはるかに大きい文字列に配置して、ミスマッチを許容し、大きい方の文字列と両側の隣接する 5 ヌクレオチドで見つかった配列を提供するようにします。

たとえば、2 つの文字列がある場合:

#1  ATGATCCTG
#2  TCGAGTGGCCATGAACGTGCCAATTG

スクリプトで #1 を取得し、#2 に存在する同じ配列を見つけますが、2 つのミスマッチがあり、両側に 5 つのヌクレオチドがあります。

4

1 に答える 1

1

私は、既存のモジュールを使用し、十分にテストされたものを使用することが、そのようなタスクに進む方法だと思います。perl には多くのバイオ モジュールと使用法があることが知られているため、cpan ですばやく検索すると、Bio::Grepである可能性があります。良い助け

編集

出来ますか?はい、誰かが以前に作成したので可能ですが、単純な正規表現で行うのは簡単な作業ではないと思います

私は生物学の専門家ではないので、理解できる限り簡単な例を作成しようとしました

use strict;
use warnings;
use Data::Dumper;

my $str1 = 'ATGATCCTG';
my $str2 =  'TCGAGTGGCCATGAACGTGCCAATTG';

my @s1 = split '', $str1;

my $miss = 0;
my $pattern = '';
for (@s1){
    my $r = $_;
    if ($str2 =~ /$pattern$r/){
        $pattern .= $r;
    } else {
        $miss++;
        $pattern .= '[ATCG]'
    }
}

##this is the pattern we used
print Dumper $pattern;

##withoud 5 nucleotides on both sides
#$str2 =~ m/($pattern)/g;

#5 nucleotides on both sides match pattern
$str2 =~ m/(\w{0,5}$pattern\w{0,5})/g;

##this is the match
print Dumper $1;

##number of missmatches
print Dumper $miss;

繰り返しますが、これが正確に行う方法であるかどうかはわかりません。また、特に大きなDNA配列を追跡する方法ではありませんが、上記のタスクでは問題ないと思います.

于 2013-08-08T15:59:59.387 に答える