annotate cpt_psm_comparison_table/lib/CPT/Bio/RBS/Algo/Naive.pm @ 0:b8b8b52904a5 draft

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