annotate variant_effect_predictor/Bio/SeqFeature/AnnotationAdaptor.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: AnnotationAdaptor.pm,v 1.4 2002/11/11 18:16:31 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SeqFeature::AnnotationAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Hilmar Lapp <hlapp at gmx.net>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # (c) Hilmar Lapp, hlapp at gmx.net, 2002.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # You may distribute this module under the same terms as perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 # Refer to the Perl Artistic License (see the license accompanying this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 # software package, or see http://www.perl.com/language/misc/Artistic.html)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 # for the terms under which you may use, modify, and redistribute this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::SeqFeature::AnnotationAdaptor - integrates SeqFeatureIs annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 use Bio::SeqFeature::Generic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 use Bio::SeqFeature::AnnotationAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 # obtain a SeqFeatureI implementing object somehow
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my $feat = Bio::SeqFeature::Generic->new(-start => 10, -end => 20);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 # add tag/value annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $feat->add_tag_value("mytag", "value of tag mytag");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 $feat->add_tag_value("mytag", "another value of tag mytag");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 # Bio::SeqFeature::Generic also provides annotation(), which returns a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 # Bio::AnnotationCollectionI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $feat->annotation->add_Annotation("dbxref", $dblink);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # to integrate tag/value annotation with AnnotationCollectionI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 # annotation, use this adaptor, which also implements
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 # Bio::AnnotationCollectionI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 my $anncoll = Bio::SeqFeature::AnnotationAdaptor(-feature => $feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 # this will now return tag/value pairs as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 # Bio::Annotation::SimpleValue objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 my @anns = $anncoll->get_Annotations("mytag");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 # other added before annotation is available too
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 my @dblinks = $anncoll->get_Annotations("dbxref");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 # also supports transparent adding of tag/value pairs in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 # Bio::AnnotationI flavor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 my $tagval = Bio::Annotation::SimpleValue->new(-value => "some value",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 -tagname => "some tag");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 $anncoll->add_Annotation($tagval);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 # this is now also available from the feature's tag/value system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 my @vals = $feat->each_tag_value("some tag");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 L<Bio::SeqFeatureI> defines light-weight annotation of features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 through tag/value pairs. Conversely, L<Bio::AnnotationCollectionI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 together with L<Bio::AnnotationI> defines an annotation bag, which is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 better typed, but more heavy-weight because it contains every single
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 piece of annotation as objects. The frequently used base
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 implementation of Bio::SeqFeatureI, Bio::SeqFeature::Generic, defines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 an additional slot for AnnotationCollectionI-compliant annotation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 This adaptor provides a L<Bio::AnnotationCollectionI> compliant,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 unified, and integrated view on the annotation of L<Bio::SeqFeatureI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 objects, including tag/value pairs, and annotation through the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 annotation() method, if the object supports it. Code using this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 adaptor does not need to worry about the different ways of possibly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 annotating a SeqFeatureI object, but can instead assume that it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 strictly follows the AnnotationCollectionI scheme. The price to pay is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 that retrieving and adding annotation will always use objects instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 of light-weight tag/value pairs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 In other words, this adaptor allows us to keep the best of both
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 worlds. If you create tens of thousands of feature objects, and your
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 only annotation is tag/value pairs, you are best off using the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 features' native tag/value system. If you create a smaller number of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 features, but with rich and typed annotation mixed with tag/value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 pairs, this adaptor may be for you. Since its implementation is by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 double-composition, you only need to create one instance of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 adaptor. In order to transparently annotate a feature object, set the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 feature using the feature() method. Every annotation you add will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 added to the feature object, and hence will not be lost when you set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 feature() to the next object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 =head1 AUTHOR - Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Email hlapp at gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 package Bio::SeqFeature::AnnotationAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 # Object preamble - inherits from Bio::Root::Root
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 use Bio::AnnotatableI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 use Bio::AnnotationCollectionI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 use Bio::Annotation::SimpleValue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 @ISA = qw(Bio::Root::Root Bio::AnnotationCollectionI Bio::AnnotatableI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Usage : my $obj = new Bio::SeqFeature::AnnotationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Function: Builds a new Bio::SeqFeature::AnnotationAdaptor object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Returns : an instance of Bio::SeqFeature::AnnotationAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Args : Named parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 -feature the Bio::SeqFeatureI implementing object to adapt
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 (mandatory to be passed here, or set via feature()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 before calling other methods)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 -annotation the Bio::AnnotationCollectionI implementing object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 for storing richer annotation (this will default to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 the $feature->annotation() if it supports it)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 -tagvalue_factory the object factory to use for creating tag/value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 pair representing objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my ($feat,$anncoll,$fact) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 $self->_rearrange([qw(FEATURE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 ANNOTATION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 TAGVALUE_FACTORY)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $self->feature($feat) if $feat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $self->annotation($anncoll) if $feat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 $self->tagvalue_object_factory($fact) if $fact;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =head2 feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Title : feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Usage : $obj->feature($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Function: Get/set the feature that this object adapts to an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 AnnotationCollectionI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Returns : value of feature (a Bio::SeqFeatureI compliant object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Args : new value (a Bio::SeqFeatureI compliant object, optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 sub feature{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $self->{'feature'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 return $self->{'feature'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 =head2 annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Title : annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Usage : $obj->annotation($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Function: Get/set the AnnotationCollectionI implementing object used by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 this adaptor to store additional annotation that cannot be stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 by the SeqFeatureI itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 If requested before having been set, the value will default to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 annotation object of the feature if it has one.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Returns : value of annotation (a Bio::AnnotationCollectionI compliant object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 Args : new value (a Bio::AnnotationCollectionI compliant object, optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 sub annotation{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $self->{'annotation'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 if((! exists($self->{'annotation'})) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $self->feature()->can('annotation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 return $self->feature()->annotation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 return $self->{'annotation'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 =head1 AnnotationCollectionI implementing methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 =head2 get_all_annotation_keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Title : get_all_annotation_keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Usage : $ac->get_all_annotation_keys()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Function: gives back a list of annotation keys, which are simple text strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Returns : list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 sub get_all_annotation_keys{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my @keys = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 # get the tags from the feature object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 push(@keys, $self->feature()->all_tags());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 # ask the annotation implementation in addition, while avoiding duplicates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 if($self->annotation()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 push(@keys,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 grep { ! $self->feature->has_tag($_); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $self->annotation()->get_all_annotation_keys());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 # done
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 return @keys;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 =head2 get_Annotations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Title : get_Annotations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Usage : my @annotations = $collection->get_Annotations('key')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Function: Retrieves all the Bio::AnnotationI objects for a specific key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Returns : list of Bio::AnnotationI - empty if no objects stored for a key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Args : string which is key for annotations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 sub get_Annotations{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my ($self, $key) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my @anns = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 # if the feature has tag/value pair for this key as the tag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 if($self->feature()->has_tag($key)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 my $fact = $self->tagvalue_object_factory();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 # add each tag/value pair as a SimpleValue object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 foreach my $val ($self->feature()->each_tag_value($key)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 my $ann;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 if($fact) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $ann = $fact->create_object(-value => $val, -tagname => $key);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $ann = Bio::Annotation::SimpleValue->new(-value => $val,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 -tagname => $key);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 push(@anns, $ann);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 # add what is in the annotation implementation if any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 if($self->annotation()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 push(@anns, $self->annotation->get_Annotations($key));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 # done
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 return @anns;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 =head2 get_num_of_annotations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Title : get_num_of_annotations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Usage : my $count = $collection->get_num_of_annotations()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Function: Returns the count of all annotations stored in this collection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 sub get_num_of_annotations{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 # first, count the number of tags on the feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 my $num_anns = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 foreach ($self->feature()->all_tags()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $num_anns += $self->feature()->each_tag_value($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 # add from the annotation implementation if any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 if($self->annotation()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $num_anns += $self->annotation()->get_num_of_annotations();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 # done
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 return $num_anns;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 =head1 Implementation specific functions - to allow adding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 =head2 add_Annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Title : add_Annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Usage : $self->add_Annotation('reference',$object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $self->add_Annotation($object,'Bio::MyInterface::DiseaseI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $self->add_Annotation($object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $self->add_Annotation('disease',$object,'Bio::MyInterface::DiseaseI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Function: Adds an annotation for a specific key.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 If the key is omitted, the object to be added must provide a value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 via its tagname().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 If the archetype is provided, this and future objects added under
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 that tag have to comply with the archetype and will be rejected
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 otherwise.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 This implementation will add all Bio::Annotation::SimpleValue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 objects to the adapted features as tag/value pairs. Caveat: this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 may potentially result in information loss if a derived object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 is supplied.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Args : annotation key ('disease', 'dblink', ...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 object to store (must be Bio::AnnotationI compliant)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 [optional] object archetype to map future storage of object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 of these types to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 sub add_Annotation{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 my ($self,$key,$object,$archetype) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 # if there's no key we use the tagname() as key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 if(ref($key) && $key->isa("Bio::AnnotationI") &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 (! ($object && ref($object)))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 $archetype = $object if $object;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 $object = $key;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $key = $object->tagname();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 $key = $key->name() if $key && ref($key); # OntologyTermI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 $self->throw("Annotation object must have a tagname if key omitted")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 unless $key;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 if( !defined $object ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 $self->throw("Must have at least key and object in add_Annotation");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 if( ! (ref($object) && $object->isa("Bio::AnnotationI")) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 $self->throw("object must be a Bio::AnnotationI compliant object, otherwise we wont add it!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 # ready to add -- if it's a SimpleValue, we add to the feature's tags,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 # otherwise we'll add to the annotation collection implementation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 if($object->isa("Bio::Annotation::SimpleValue") &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $self->feature()->can('add_tag_value')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 return $self->feature()->add_tag_value($key, $object->value());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 my $anncoll = $self->annotation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 if(! $anncoll) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $anncoll = Bio::Annotation::Collection->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 $self->annotation($anncoll);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 if($anncoll->can('add_Annotation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 return $anncoll->add_Annotation($key,$object,$archetype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $self->throw("Annotation implementation does not allow adding!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 =head1 Additional methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 =head2 tagvalue_object_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Title : tagvalue_object_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Usage : $obj->tagval_object_factory($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Function: Get/set the object factory to use for creating objects that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 represent tag/value pairs (e.g.,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Bio::Annotation::SimpleValue).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 The object to be created is expected to follow
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Bio::Annotation::SimpleValue in terms of supported
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 arguments at creation time, and the methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 Returns : A Bio::Factory::ObjectFactoryI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 Args : new value (a Bio::Factory::ObjectFactoryI compliant object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 sub tagvalue_object_factory{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $self->{'tagval_object_factory'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 return $self->{'tagval_object_factory'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 1;