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; |
