maint: remove Travis stuff which has been replaced with Github actions (#325)
[bioperl-live.git] / lib / Bio / Tools / Sim4 / Exon.pm
blob50fa2a9dcf02d926074af3746ccc9078adbd1e3b
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;
107 use strict;
110 use base qw(Bio::SeqFeature::SimilarityPair);
112 sub new {
113 my ($class,@args) = @_;
114 my %param = @args;
115 my $self = $class->SUPER::new(@args);
117 my ($prim, $prim_tag, $source, $source_tag) =
118 $self->_rearrange([qw(PRIMARY
119 PRIMARY_TAG
120 SOURCE
121 SOURCE_TAG)],
122 @args);
124 $self->primary_tag('exon') unless $prim || $prim_tag;
125 $self->source_tag('Sim4') unless $source || $source_tag;
126 $self->strand(0) unless defined($self->strand());
127 $self->query();
128 return $self;
131 =head2 percentage_id
133 Title : percentage_id
134 Usage : $obj->percentage_id($newval)
135 Function: This is a synonym for 100 * $obj->est_hit()->frac_identical().
136 Returns : value of percentage_id
137 Args : newvalue (optional)
140 =cut
142 sub percentage_id {
143 my ($self, @args) = @_;
144 my $frac;
145 my $val;
146 my $delegated = 0;
148 if(@args) {
149 $frac = $args[0];
150 $frac /= 100.0 if defined($frac);
152 if($self->query()->can('frac_identical')) {
153 if(defined($frac)) {
154 $self->query()->frac_identical($frac);
156 $val = 100.0 * $self->query()->frac_identical();
157 $delegated = 1;
159 if($self->est_hit()->can('frac_identical')) {
160 if(defined($frac)) {
161 $self->est_hit()->frac_identical($frac);
163 # this intentiously overwrites previous $val
164 $val = 100.0 * $self->est_hit()->frac_identical();
165 $delegated = 1;
167 if(! $delegated) {
168 if(@args) {
169 $val = shift(@args);
170 $self->{'percentage_id'} = $val;
171 } else {
172 $val = $self->{'percentage_id'};
175 return $val;
178 =head2 est_hit
180 Title : est_hit
181 Usage : $est_feature = $obj->est_hit();
182 Function: Returns the EST hit pointing to (i.e., aligned to by Sim4) this
183 exon (i.e., genomic region). At present, merely a synonym for
184 $obj->feature2().
185 Returns : An Bio::SeqFeatureI implementing object.
186 Args :
189 =cut
191 sub est_hit {
192 my $self = shift;
193 return $self->feature2(@_);