Allow falling back to any strigified Bio::AnnotationI for 'gene_name'
[bioperl-live.git] / Bio / SeqFeature / Similarity.pm
blob47d3488c44f8e2024918b9ee6a8802467f0247ef
2 # BioPerl module for Bio::SeqFeature::Similarity
4 # Please direct questions and support issues to <bioperl-l@bioperl.org>
6 # Cared for by Hilmar Lapp <hlapp@gmx.net>
8 # Copyright Hilmar Lapp
10 # You may distribute this module under the same terms as perl itself
12 # POD documentation - main docs before the code
14 =head1 NAME
16 Bio::SeqFeature::Similarity - A sequence feature based on similarity
18 =head1 SYNOPSIS
20 # obtain a similarity feature somehow
21 print "significance: ", $sim_fea->significance(), "\n";
22 print "bit score: ", $sim_fea->bits(), "\n";
23 print "score: ", $sim_fea->score(), "\n";
24 print "fraction of identical residues: ", $sim_fea->frac_identical(), "\n";
26 =head1 DESCRIPTION
28 This module is basically a sequence features based on similarity, and therefore
29 has support for measures assessing the similarity.
31 Everything else is inherited from L<Bio::SeqFeature::Generic>.
33 =head1 FEEDBACK
35 =head2 Mailing Lists
37 User feedback is an integral part of the evolution of this
38 and other Bioperl modules. Send your comments and suggestions preferably
39 to one of the Bioperl mailing lists.
40 Your participation is much appreciated.
42 bioperl-l@bioperl.org - General discussion
43 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
45 =head2 Support
47 Please direct usage questions or support issues to the mailing list:
49 I<bioperl-l@bioperl.org>
51 rather than to the module maintainer directly. Many experienced and
52 reponsive experts will be able look at the problem and quickly
53 address it. Please include a thorough description of the problem
54 with code and data examples if at all possible.
56 =head2 Reporting Bugs
58 Report bugs to the Bioperl bug tracking system to help us keep track
59 the bugs and their resolution. Bug reports can be submitted via the
60 web:
62 https://redmine.open-bio.org/projects/bioperl/
64 =head1 AUTHOR - Hilmar Lapp
66 Email hlapp@gmx.net or hilmar.lapp@pharma.novartis.com
68 =head1 APPENDIX
70 The rest of the documentation details each of the object
71 methods. Internal methods are usually preceded with a _
73 =cut
76 # Let the code begin...
79 package Bio::SeqFeature::Similarity;
80 use strict;
83 use base qw(Bio::SeqFeature::Generic);
85 sub new {
86 my ( $caller, @args) = @_;
87 my ($self) = $caller->SUPER::new(@args);
89 my ($primary,$evalue, $bits, $frac,$seqlen,$seqdesc) =
90 $self->_rearrange([qw(PRIMARY
91 EXPECT
92 BITS
93 FRAC
94 SEQLENGTH
95 SEQDESC
96 )],@args);
98 defined $evalue && $self->significance($evalue);
99 defined $bits && $self->bits($bits);
100 defined $frac && $self->frac_identical($frac);
101 defined $seqlen && $self->seqlength($seqlen);
102 defined $seqdesc && $self->seqdesc($seqdesc);
103 $primary = 'similarity' unless defined $primary;
104 $self->primary_tag($primary) unless( defined $self->primary_tag() );
105 $self->strand(0) unless( defined $self->strand() );
107 return $self;
110 =head2 significance
112 Title : significance
113 Usage : $evalue = $obj->significance();
114 $obj->significance($evalue);
115 Function:
116 Returns :
117 Args :
120 =cut
122 sub significance {
123 return shift->_tag_value('signif', @_);
126 =head2 bits
128 Title : bits
129 Usage : $bits = $obj->bits();
130 $obj->bits($value);
131 Function:
132 Returns :
133 Args :
136 =cut
138 sub bits {
139 return shift->_tag_value('Bits', @_);
142 =head2 frac_identical
144 Title : frac_identical
145 Usage : $fracid = $obj->frac_identical();
146 $obj->frac_identical($value);
147 Function:
148 Returns :
149 Args :
152 =cut
154 sub frac_identical {
155 return shift->_tag_value('FracId', @_);
158 =head2 seqlength
160 Title : seqlength
161 Usage : $len = $obj->seqlength();
162 $obj->seqlength($len);
163 Function:
164 Returns :
165 Args :
168 =cut
170 sub seqlength {
171 return shift->_tag_value('SeqLength', @_);
174 =head2 seqdesc
176 Title : seqdesc
177 Usage : $desc = $obj->seqdesc();
178 $obj->seqdesc($desc);
179 Function: At present this method is a shorthand for
180 $obj->annotation()->description().
182 Note that this is not stored in the tag system and hence will
183 not be included in the return value of gff_string().
184 Returns :
185 Args :
188 =cut
190 sub seqdesc {
191 my ($self, $value) = @_;
193 if( defined $value ) {
194 my $v = Bio::Annotation::SimpleValue->new();
195 $v->value($value);
196 $self->annotation->add_Annotation('description',$v);
198 my ($v) = $self->annotation()->get_Annotations('description');
199 return defined $v ? $v->value : undef;
203 # Everything else is just inherited from SeqFeature::Generic.