File Coverage

Bio/Tools/Sim4/Exon.pm
Criterion Covered Total %
statement 35 39 89.7
branch 13 22 59.0
condition 2 6 33.3
subroutine 5 5 100.0
pod 3 3 100.0
total 58 75 77.3


line stmt bran cond sub pod time code
1             #
2             # BioPerl module for Bio::Tools::Sim4::Exon
3             #
4             # Please direct questions and support issues to
5             #
6             # Cared for by Ewan Birney
7             # and Hilmar Lapp
8             #
9             # Copyright Ewan Birney, Hilmar Lapp
10             #
11             # You may distribute this module under the same terms as perl itself
12              
13             # POD documentation - main docs before the code
14              
15             =head1 NAME
16              
17             Bio::Tools::Sim4::Exon - A single exon determined by an alignment
18              
19             =head1 SYNOPSIS
20              
21             # See Bio::Tools::Sim4::Results for a description of the context.
22              
23             # an instance of this class is-a Bio::SeqFeature::SimilarityPair
24              
25             # coordinates of the exon (recommended way):
26             print "exon from ", $exon->start(),
27             " to ", $exon->end(), "\n";
28              
29             # the same (feature1() inherited from Bio::SeqFeature::FeaturePair)
30             print "exon from ", $exon->feature1()->start(),
31             " to ", $exon->feature1()->end(), "\n";
32             # also the same (query() inherited from Bio::SeqFeature::SimilarityPair):
33             print "exon from ", $exon->query()->start(),
34             " to ", $exon->query()->end(), "\n";
35              
36             # coordinates on the matching EST (recommended way):
37             print "matches on EST from ", $exon->est_hit()->start(),
38             " to ", $exon->est_hit()->end(), "\n";
39              
40             # the same (feature2() inherited from Bio::SeqFeature::FeaturePair)
41             print "matches on EST from ", $exon->feature2()->start(),
42             " to ", $exon->feature2()->end(), "\n";
43             # also the same (subject() inherited from Bio::SeqFeature::SimilarityPair):
44             print "exon from ", $exon->subject()->start(),
45             " to ", $exon->subject()->end(), "\n";
46              
47             =head1 DESCRIPTION
48              
49             This class inherits from Bio::SeqFeature::SimilarityPair and represents an
50             exon on a genomic sequence determined by similarity, that is, by aligning an
51             EST sequence (using Sim4 in this case). Consequently, the notion of query and
52             subject is always from the perspective of the genomic sequence: query refers
53             to the genomic seq, subject to the aligned EST hit. Because of this,
54             $exon-Estart(), $exon-Eend() etc will always return what you expect.
55              
56             To get the coordinates on the matching EST, refer to the properties of the
57             feature returned by L().
58              
59             =head1 FEEDBACK
60              
61             =head2 Mailing Lists
62              
63             User feedback is an integral part of the evolution of this
64             and other Bioperl modules. Send your comments and suggestions preferably
65             to one of the Bioperl mailing lists.
66             Your participation is much appreciated.
67              
68             bioperl-l@bioperl.org - General discussion
69             http://bioperl.org/wiki/Mailing_lists - About the mailing lists
70              
71             =head2 Support
72              
73             Please direct usage questions or support issues to the mailing list:
74              
75             I
76              
77             rather than to the module maintainer directly. Many experienced and
78             reponsive experts will be able look at the problem and quickly
79             address it. Please include a thorough description of the problem
80             with code and data examples if at all possible.
81              
82             =head2 Reporting Bugs
83              
84             Report bugs to the Bioperl bug tracking system to help us keep track
85             the bugs and their resolution. Bug reports can be submitted via the
86             web:
87              
88             https://github.com/bioperl/bioperl-live/issues
89              
90             =head1 AUTHOR - Ewan Birney, Hilmar Lapp
91              
92             Ewan Birney Ebirney-at-sanger.ac.ukE
93             Hilmar Lapp Ehlapp-at-gmx.netE or Ehilmar.lapp-at-pharma.novartis.comE.
94              
95             =head1 APPENDIX
96              
97             The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
98              
99             =cut
100              
101              
102             # Let the code begin...
103              
104              
105             package Bio::Tools::Sim4::Exon;
106 1     1   5 use strict;
  1         1  
  1         27  
107              
108              
109 1     1   5 use base qw(Bio::SeqFeature::SimilarityPair);
  1         1  
  1         241  
110              
111             sub new {
112 18     18 1 53 my ($class,@args) = @_;
113 18         57 my %param = @args;
114 18         56 my $self = $class->SUPER::new(@args);
115              
116 18         57 my ($prim, $prim_tag, $source, $source_tag) =
117             $self->_rearrange([qw(PRIMARY
118             PRIMARY_TAG
119             SOURCE
120             SOURCE_TAG)],
121             @args);
122              
123 18 50 33     93 $self->primary_tag('exon') unless $prim || $prim_tag;
124 18 50 33     81 $self->source_tag('Sim4') unless $source || $source_tag;
125 18 50       37 $self->strand(0) unless defined($self->strand());
126 18         40 $self->query();
127 18         62 return $self;
128             }
129              
130             =head2 percentage_id
131              
132             Title : percentage_id
133             Usage : $obj->percentage_id($newval)
134             Function: This is a synonym for 100 * $obj->est_hit()->frac_identical().
135             Returns : value of percentage_id
136             Args : newvalue (optional)
137              
138              
139             =cut
140              
141             sub percentage_id {
142 36     36 1 59 my ($self, @args) = @_;
143 36         38 my $frac;
144             my $val;
145 36         38 my $delegated = 0;
146            
147 36 100       49 if(@args) {
148 18         26 $frac = $args[0];
149 18 50       51 $frac /= 100.0 if defined($frac);
150             }
151 36 50       58 if($self->query()->can('frac_identical')) {
152 36 100       56 if(defined($frac)) {
153 18         26 $self->query()->frac_identical($frac);
154             }
155 36         60 $val = 100.0 * $self->query()->frac_identical();
156 36         49 $delegated = 1;
157             }
158 36 50       52 if($self->est_hit()->can('frac_identical')) {
159 36 100       50 if(defined($frac)) {
160 18         25 $self->est_hit()->frac_identical($frac);
161             }
162             # this intentiously overwrites previous $val
163 36         54 $val = 100.0 * $self->est_hit()->frac_identical();
164 36         46 $delegated = 1;
165             }
166 36 50       55 if(! $delegated) {
167 0 0       0 if(@args) {
168 0         0 $val = shift(@args);
169 0         0 $self->{'percentage_id'} = $val;
170             } else {
171 0         0 $val = $self->{'percentage_id'};
172             }
173             }
174 36         84 return $val;
175             }
176              
177             =head2 est_hit
178              
179             Title : est_hit
180             Usage : $est_feature = $obj->est_hit();
181             Function: Returns the EST hit pointing to (i.e., aligned to by Sim4) this
182             exon (i.e., genomic region). At present, merely a synonym for
183             $obj->feature2().
184             Returns : An Bio::SeqFeatureI implementing object.
185             Args :
186              
187              
188             =cut
189              
190             sub est_hit {
191 116     116 1 1576 my $self = shift;
192 116         178 return $self->feature2(@_);
193             }
194              
195             1;