Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/AnnotationI.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1f6dce3d34e0 |
---|---|
1 # $Id: AnnotationI.pm,v 1.7 2002/10/22 07:38:24 lapp Exp $ | |
2 | |
3 # | |
4 # BioPerl module for Bio::AnnotationI | |
5 # | |
6 # Cared for by Ewan Birney <birney@ebi.ac.uk> | |
7 # | |
8 # Copyright Ewan Birney | |
9 # | |
10 # You may distribute this module under the same terms as perl itself | |
11 | |
12 # POD documentation - main docs before the code | |
13 | |
14 =head1 NAME | |
15 | |
16 Bio::AnnotationI - Annotation interface | |
17 | |
18 =head1 SYNOPSIS | |
19 | |
20 # generally you get AnnotationI's from AnnotationCollectionI's | |
21 | |
22 foreach $key ( $ac->get_all_annotation_keys() ) { | |
23 @values = $ac->get_Annotations($key); | |
24 foreach $value ( @values ) { | |
25 # value is an Bio::AnnotationI, and defines a "as_text" method | |
26 print "Annotation ",$key," stringified value ",$value->as_text,"\n"; | |
27 # you can also use a generic hash_tree method for getting | |
28 # stuff out say into XML format | |
29 $hash_tree = $value->hash_tree(); | |
30 } | |
31 } | |
32 | |
33 | |
34 =head1 DESCRIPTION | |
35 | |
36 Interface all annotations must support. There are two things that each | |
37 annotation has to support. | |
38 | |
39 $annotation->as_text() | |
40 | |
41 Annotations have to support an "as_text" method. This should be a | |
42 single text string, without newlines representing the annotation, | |
43 mainly for human readability. It is not aimed at being able to | |
44 store/represent the annotation. | |
45 | |
46 The second method allows annotations to at least attempt to represent | |
47 themselves as pure data for storage/display/whatever. The method | |
48 hash_tree | |
49 | |
50 $hash = $annotation->hash_tree(); | |
51 | |
52 should return an anonymous hash with "XML-like" formatting. The | |
53 formatting is as follows. | |
54 | |
55 (1) For each key in the hash, if the value is a reference'd array - | |
56 | |
57 (2) For each element of the array if the value is a object - | |
58 Assumme the object has the method "hash_tree"; | |
59 (3) else if the value is a referene to a hash | |
60 Recurse again from point (1) | |
61 (4) else | |
62 Assumme the value is a scalar, and handle it directly as text | |
63 | |
64 (5) else (if not an array) apply rules 2,3 and 4 to value | |
65 | |
66 The XML path in tags is represented by the keys taken in the | |
67 hashes. When arrays are encountered they are all present in the path | |
68 level of this tag | |
69 | |
70 This is a pretty "natural" representation of an object tree in an XML | |
71 style, without forcing everything to inheriet off some super-generic | |
72 interface for representing things in the hash. | |
73 | |
74 =head1 FEEDBACK | |
75 | |
76 =head2 Mailing Lists | |
77 | |
78 User feedback is an integral part of the evolution of this | |
79 and other Bioperl modules. Send your comments and suggestions preferably | |
80 to one of the Bioperl mailing lists. | |
81 Your participation is much appreciated. | |
82 | |
83 bioperl-l@bio.perl.org | |
84 | |
85 =head2 Reporting Bugs | |
86 | |
87 Report bugs to the Bioperl bug tracking system to help us keep track | |
88 the bugs and their resolution. | |
89 Bug reports can be submitted via email or the web: | |
90 | |
91 bioperl-bugs@bio.perl.org | |
92 http://bugzilla.bioperl.org/ | |
93 | |
94 =head1 AUTHOR - Ewan Birney | |
95 | |
96 Email birney@ebi.ac.uk | |
97 | |
98 Describe contact details here | |
99 | |
100 =head1 APPENDIX | |
101 | |
102 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ | |
103 | |
104 =cut | |
105 | |
106 #' | |
107 # Let the code begin... | |
108 | |
109 | |
110 package Bio::AnnotationI; | |
111 use vars qw(@ISA); | |
112 use strict; | |
113 | |
114 # Object preamble - inherits from Bio::Root::Root | |
115 | |
116 use Bio::Root::RootI; | |
117 | |
118 | |
119 @ISA = qw(Bio::Root::RootI); | |
120 | |
121 | |
122 =head2 as_text | |
123 | |
124 Title : as_text | |
125 Usage : | |
126 Function: single text string, without newlines representing the | |
127 annotation, mainly for human readability. It is not aimed | |
128 at being able to store/represent the annotation. | |
129 Example : | |
130 Returns : a string | |
131 Args : none | |
132 | |
133 | |
134 =cut | |
135 | |
136 sub as_text{ | |
137 shift->throw_not_implemented(); | |
138 } | |
139 | |
140 =head2 hash_tree | |
141 | |
142 Title : hash_tree | |
143 Usage : | |
144 Function: should return an anonymous hash with "XML-like" formatting | |
145 Example : | |
146 Returns : a hash reference | |
147 Args : none | |
148 | |
149 | |
150 =cut | |
151 | |
152 sub hash_tree{ | |
153 shift->throw_not_implemented(); | |
154 } | |
155 | |
156 =head2 tagname | |
157 | |
158 Title : tagname | |
159 Usage : $obj->tagname($newval) | |
160 Function: Get/set the tagname for this annotation value. | |
161 | |
162 Setting this is optional. If set, it obviates the need to | |
163 provide a tag to Bio::AnnotationCollectionI when adding | |
164 this object. When obtaining an AnnotationI object from the | |
165 collection, the collection will set the value to the tag | |
166 under which it was stored unless the object has a tag | |
167 stored already. | |
168 | |
169 Example : | |
170 Returns : value of tagname (a scalar) | |
171 Args : new value (a scalar, optional) | |
172 | |
173 | |
174 =cut | |
175 | |
176 sub tagname{ | |
177 shift->throw_not_implemented(); | |
178 } | |
179 | |
180 1; |