changes all issue tracking in preparation for switch to github issues
[bioperl-live.git] / Bio / Tools / Sim4 / Exon.pm
blob4d4c4d0868d864757cb7e08fdb11e1cbfe7150d7
2 # BioPerl module for Bio::Tools::Sim4::Exon
4 # Please direct questions and support issues to <bioperl-l@bioperl.org>
6 # Cared for by Ewan Birney <birney-at-sanger.ac.uk>
7 # and Hilmar Lapp <hlapp-at-gmx.net>
9 # Copyright Ewan Birney, Hilmar Lapp
11 # You may distribute this module under the same terms as perl itself
13 # POD documentation - main docs before the code
15 =head1 NAME
17 Bio::Tools::Sim4::Exon - A single exon determined by an alignment
19 =head1 SYNOPSIS
21 # See Bio::Tools::Sim4::Results for a description of the context.
23 # an instance of this class is-a Bio::SeqFeature::SimilarityPair
25 # coordinates of the exon (recommended way):
26 print "exon from ", $exon->start(),
27 " to ", $exon->end(), "\n";
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";
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";
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";
47 =head1 DESCRIPTION
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-E<gt>start(), $exon-E<gt>end() etc will always return what you expect.
56 To get the coordinates on the matching EST, refer to the properties of the
57 feature returned by L<est_hit>().
59 =head1 FEEDBACK
61 =head2 Mailing Lists
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.
68 bioperl-l@bioperl.org - General discussion
69 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
71 =head2 Support
73 Please direct usage questions or support issues to the mailing list:
75 I<bioperl-l@bioperl.org>
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.
82 =head2 Reporting Bugs
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:
88 https://github.com/bioperl/bioperl-live/issues
90 =head1 AUTHOR - Ewan Birney, Hilmar Lapp
92 Ewan Birney E<lt>birney-at-sanger.ac.ukE<gt>
93 Hilmar Lapp E<lt>hlapp-at-gmx.netE<gt> or E<lt>hilmar.lapp-at-pharma.novartis.comE<gt>.
95 =head1 APPENDIX
97 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
99 =cut
102 # Let the code begin...
105 package Bio::Tools::Sim4::Exon;
106 use strict;
109 use base qw(Bio::SeqFeature::SimilarityPair);
111 sub new {
112 my ($class,@args) = @_;
113 my %param = @args;
114 my $self = $class->SUPER::new(@args);
116 my ($prim, $prim_tag, $source, $source_tag) =
117 $self->_rearrange([qw(PRIMARY
118 PRIMARY_TAG
119 SOURCE
120 SOURCE_TAG)],
121 @args);
123 $self->primary_tag('exon') unless $prim || $prim_tag;
124 $self->source_tag('Sim4') unless $source || $source_tag;
125 $self->strand(0) unless defined($self->strand());
126 $self->query();
127 return $self;
130 =head2 percentage_id
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)
139 =cut
141 sub percentage_id {
142 my ($self, @args) = @_;
143 my $frac;
144 my $val;
145 my $delegated = 0;
147 if(@args) {
148 $frac = $args[0];
149 $frac /= 100.0 if defined($frac);
151 if($self->query()->can('frac_identical')) {
152 if(defined($frac)) {
153 $self->query()->frac_identical($frac);
155 $val = 100.0 * $self->query()->frac_identical();
156 $delegated = 1;
158 if($self->est_hit()->can('frac_identical')) {
159 if(defined($frac)) {
160 $self->est_hit()->frac_identical($frac);
162 # this intentiously overwrites previous $val
163 $val = 100.0 * $self->est_hit()->frac_identical();
164 $delegated = 1;
166 if(! $delegated) {
167 if(@args) {
168 $val = shift(@args);
169 $self->{'percentage_id'} = $val;
170 } else {
171 $val = $self->{'percentage_id'};
174 return $val;
177 =head2 est_hit
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 :
188 =cut
190 sub est_hit {
191 my $self = shift;
192 return $self->feature2(@_);