annotate cpt_psm_plotter/lib/CPT/Bio/RBS/Algo/Naive.pm @ 0:54c7a3ea81e2 draft

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