annotate variant_effect_predictor/Bio/Species.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Species.pm,v 1.24 2002/12/05 13:46:30 heikki Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by James Gilbert <jgrg@sanger.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Species - Generic species object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 $species = Bio::Species->new(-classification => [@classification]);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18 # Can also pass classification
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 # array to new as below
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 $species->classification(qw( sapiens Homo Hominidae
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 Catarrhini Primates Eutheria
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 Mammalia Vertebrata Chordata
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 Metazoa Eukaryota ));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 $genus = $species->genus();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 $bi = $species->binomial(); # $bi is now "Homo sapiens"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 # For storing common name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 $species->common_name("human");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 # For storing subspecies
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 $species->sub_species("accountant");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 Provides a very simple object for storing phylogenetic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 information. The classification is stored in an array,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 which is a list of nodes in a phylogenetic tree. Access to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 getting and setting species and genus is provided, but not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 to any of the other node types (eg: "phylum", "class",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 "order", "family"). There's plenty of scope for making the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 model more sophisticated, if this is ever needed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 A methods are also provided for storing common
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 names, and subspecies.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 =head1 CONTACT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 James Gilbert email B<jgrg@sanger.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 #' Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 package Bio::Species;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 # Object preamble - inherits from Bio::Root::Object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 @ISA = qw(Bio::Root::Root);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 my($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 $self->{'classification'} = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 $self->{'common_name'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 my ($classification) = $self->_rearrange([qw(CLASSIFICATION)], @args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 if( defined $classification &&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 (ref($classification) eq "ARRAY") ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 $self->classification(@$classification);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 =head2 classification
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 Title : classification
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 Usage : $self->classification(@class_array);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 @classification = $self->classification();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 Function: Fills or returns the classification list in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 the object. The array provided must be in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 the order SPECIES, GENUS ---> KINGDOM.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 Checks are made that species is in lower case,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 and all other elements are in title case.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 Example : $obj->classification(qw( sapiens Homo Hominidae
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 Catarrhini Primates Eutheria Mammalia Vertebrata
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 Chordata Metazoa Eukaryota));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 Returns : Classification array
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 Args : Classification array
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 OR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 A reference to the classification array. In the latter case
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 if there is a second argument and it evaluates to true,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 names will not be validated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 sub classification {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 my ($self,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 if (@args) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 my ($classif,$force);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 if(ref($args[0])) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 $classif = shift(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 $force = shift(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 $classif = \@args;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 # Check the names supplied in the classification string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 # Species should be in lower case
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 if(! $force) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 $self->validate_species_name($classif->[0]);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 # All other names must be in title case
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 foreach (@$classif) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 $self->validate_name( $_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 # Store classification
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 $self->{'classification'} = $classif;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 return @{$self->{'classification'}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 =head2 common_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 Title : common_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 Usage : $self->common_name( $common_name );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 $common_name = $self->common_name();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 Function: Get or set the common name of the species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 Example : $self->common_name('human')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 Returns : The common name in a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 Args : String, which is the common name (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 sub common_name{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 return $self->{'common_name'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 return $self->{'common_name'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 =head2 variant
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 Title : variant
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 Usage : $obj->variant($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 Function: Get/set variant information for this species object (strain,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 isolate, etc).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 Returns : value of variant (a scalar)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 Args : new value (a scalar or undef, optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 sub variant{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 return $self->{'variant'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 return $self->{'variant'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 =head2 organelle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 Title : organelle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 Usage : $self->organelle( $organelle );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 $organelle = $self->organelle();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 Function: Get or set the organelle name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 Example : $self->organelle('Chloroplast')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 Returns : The organelle name in a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 Args : String, which is the organelle name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 sub organelle {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 my($self, $name) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 if ($name) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 $self->{'organelle'} = $name;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 return $self->{'organelle'}
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 =head2 species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 Title : species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 Usage : $self->species( $species );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 $species = $self->species();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 Function: Get or set the scientific species name. The species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 name must be in lower case.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 Example : $self->species( 'sapiens' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 Returns : Scientific species name as string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 Args : Scientific species name as string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 sub species {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 my($self, $species) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 if ($species) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 $self->validate_species_name( $species );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 $self->{'classification'}[0] = $species;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 return $self->{'classification'}[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 =head2 genus
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 Title : genus
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 Usage : $self->genus( $genus );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 $genus = $self->genus();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 Function: Get or set the scientific genus name. The genus
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 must be in title case.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 Example : $self->genus( 'Homo' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 Returns : Scientific genus name as string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 Args : Scientific genus name as string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 sub genus {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 my($self, $genus) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 if ($genus) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 $self->validate_name( $genus );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 $self->{'classification'}[1] = $genus;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 return $self->{'classification'}[1];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 =head2 sub_species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 Title : sub_species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 Usage : $obj->sub_species($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 Returns : value of sub_species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 Args : newvalue (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 sub sub_species {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 my( $self, $sub ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 if ($sub) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 $self->{'_sub_species'} = $sub;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 return $self->{'_sub_species'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 =head2 binomial
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 Title : binomial
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 Usage : $binomial = $self->binomial();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 $binomial = $self->binomial('FULL');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 Function: Returns a string "Genus species", or "Genus species subspecies",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 the first argument is 'FULL' (and the species has a subspecies).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 Args : Optionally the string 'FULL' to get the full name including
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 the subspecies.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 sub binomial {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 my( $self, $full ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 my( $species, $genus ) = $self->classification();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 unless( defined $species) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 $species = 'sp.';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 $self->warn("classification was not set");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 $genus = '' unless( defined $genus);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 my $bi = "$genus $species";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 if (defined($full) && ((uc $full) eq 'FULL')) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 my $ssp = $self->sub_species;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 $bi .= " $ssp" if $ssp;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 return $bi;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 sub validate_species_name {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 my( $self, $string ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 return 1 if $string eq "sp.";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 return 1 if $string =~ /^[a-z][\w\s]+$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 $self->throw("Invalid species name '$string'");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 sub validate_name {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 return 1; # checking is disabled as there is really not much we can
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 # enforce HL 2002/10/03
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 # my( $self, $string ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 # return 1 if $string =~ /^[\w\s\-\,\.]+$/ or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 # $self->throw("Invalid name '$string'");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 =head2 ncbi_taxid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 Title : ncbi_taxid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 Usage : $obj->ncbi_taxid($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 Function: Get/set the NCBI Taxon ID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 Returns : the NCBI Taxon ID as a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 Args : newvalue to set or undef to unset (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 sub ncbi_taxid {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 return $self->{'_ncbi_taxid'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 return $self->{'_ncbi_taxid'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 __END__