0
|
1 package CPT::Bio::RBS::Algo::Naive;
|
|
2 use Moose;
|
|
3 with 'CPT::Bio::RBS::Algo';
|
|
4 use CPT::Bio::RBS_Object;
|
|
5
|
|
6 my @SDs = (
|
|
7 'aggaggt',
|
|
8 'ggaggt',
|
|
9 'aggagg',
|
|
10 'aggag',
|
|
11 'gaggt',
|
|
12 'ggagg',
|
|
13 'aggt',
|
|
14 'gggt',
|
|
15 'gagg',
|
|
16 'gggg',
|
|
17 'agga',
|
|
18 'ggag',
|
|
19 'gga',
|
|
20 'gag',
|
|
21 'agg',
|
|
22 'ggt',
|
|
23 );
|
|
24
|
|
25 sub predict {
|
|
26 my ( $self, %params ) = @_;
|
|
27 my $upstream = $params{sequence};
|
|
28 my $only_best = $params{return_best};
|
|
29
|
|
30 my $length = length($upstream);
|
|
31
|
|
32 my @results = ();
|
|
33 foreach my $rbs ( @SDs ){
|
|
34 while ($upstream =~ /$rbs/g) {
|
|
35 # Position of regex match
|
|
36 my $loc = $-[0];
|
|
37 # Seq before RBS
|
|
38 my $before = substr($upstream,0, $loc);
|
|
39 # Seq after RBS
|
|
40 my $after = substr($upstream, $loc + length($rbs));
|
|
41 my $rbs_o = CPT::Bio::RBS_Object->new(
|
|
42 upstream => sprintf('%s %s %s', $before , uc($rbs) , $after),
|
|
43 score => $self->score_match($rbs, length($after)),
|
|
44 rbs_seq => uc($rbs),
|
|
45 separation => length($after),
|
|
46 );
|
|
47 push( @results, $rbs_o );
|
|
48 }
|
|
49 }
|
|
50 @results = sort { $b->score() <=> $a->score() } @results;
|
|
51 if (@results) {
|
|
52 if($only_best){
|
|
53 return ($results[0]);
|
|
54 }else{
|
|
55 return @results;
|
|
56 }
|
|
57 }
|
|
58 else {
|
|
59 return (
|
|
60 CPT::Bio::RBS_Object->new(
|
|
61 upstream =>$upstream,
|
|
62 score => '-1',
|
|
63 rbs_seq => 'None',
|
|
64 separation => -1,
|
|
65 )
|
|
66 );
|
|
67 }
|
|
68 }
|
|
69
|
|
70 sub score_match {
|
|
71 my ($self, $match, $dist) = @_;
|
|
72 return length($match);
|
|
73 }
|
|
74
|
|
75 1;
|
|
76
|
|
77 __END__
|
|
78
|
|
79 =pod
|
|
80
|
|
81 =encoding UTF-8
|
|
82
|
|
83 =head1 NAME
|
|
84
|
|
85 CPT::Bio::RBS::Algo::Naive
|
|
86
|
|
87 =head1 VERSION
|
|
88
|
|
89 version 1.99.4
|
|
90
|
|
91 =head1 AUTHOR
|
|
92
|
|
93 Eric Rasche <rasche.eric@yandex.ru>
|
|
94
|
|
95 =head1 COPYRIGHT AND LICENSE
|
|
96
|
|
97 This software is Copyright (c) 2014 by Eric Rasche.
|
|
98
|
|
99 This is free software, licensed under:
|
|
100
|
|
101 The GNU General Public License, Version 3, June 2007
|
|
102
|
|
103 =cut
|