annotate variant_effect_predictor/Bio/EnsEMBL/CoordSystem.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Bio::EnsEMBL::CoordSystem
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 my $db = Bio::EnsEMBL::DBSQL::DBAdaptor->new(...);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 my $csa = $db->get_CoordSystemAdaptor();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 # Get all coord systems in the database:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 foreach my $cs ( @{ $csa->fetch_all() } ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 my $str = join ':', $cs->name(), $cs->version(), $cs->dbID();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 print "$str\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 This is a simple object which contains a few coordinate system attributes:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 name, internal identifier, version. A coordinate system is uniquely defined
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 by its name and version. A version of a coordinate system applies to all
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 sequences within a coordinate system. This should not be confused with
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 individual sequence versions.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 Take for example the Human assembly. The version 'NCBI33' applies to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 to all chromosomes in the NCBI33 assembly (that is the entire 'chromosome'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 coordinate system). The 'clone' coordinate system in the same database would
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 have no version however. Although the clone sequences have their own sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 versions, there is no version which applies to the entire set of clones.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 Coordinate system objects are immutable. Their name and version, and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 attributes may not be altered after they are created.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 =head1 METHODS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 package Bio::EnsEMBL::CoordSystem;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 use Bio::EnsEMBL::Storable;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 use Bio::EnsEMBL::Utils::Exception qw(throw);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 @ISA = qw(Bio::EnsEMBL::Storable);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 Arg [..] : List of named arguments:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 -NAME - The name of the coordinate system
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 -VERSION - (optional) The version of the coordinate system.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 Note that if the version passed in is undefined,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 it will be set to the empty string in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 resulting CoordSystem object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 -RANK - The rank of the coordinate system. The highest
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 level coordinate system should have rank 1, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 second highest rank 2 and so on. An example of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 a high level coordinate system is 'chromosome' an
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 example of a lower level coordinate system is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 'clone'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 -TOP_LEVEL - (optional) Sets whether this is a top-level coord
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 system. Default = 0. This should only be set to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 true if you are creating an artificial toplevel
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 coordsystem by the name of 'toplevel'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 -SEQUENCE_LEVEL - (optional) Sets whether this is a sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 level coordinate system. Default = 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 -DEFAULT - (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 Whether this is the default version of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 coordinate systems of this name. Default = 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 -DBID - (optional) The internal identifier of this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 coordinate system
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 -ADAPTOR - (optional) The adaptor which provides database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 interaction for this object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 Example : $cs = Bio::EnsEMBL::CoordSystem->new(-NAME => 'chromosome',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 -VERSION => 'NCBI33',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 -RANK => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 -DBID => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 -ADAPTOR => adaptor,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 -DEFAULT => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 -SEQUENCE_LEVEL => 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 Description: Creates a new CoordSystem object representing a coordinate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 system.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 Returntype : Bio::EnsEMBL::CoordSystem
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 my $caller = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 my $class = ref($caller) || $caller;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 my $self = $class->SUPER::new(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 my ( $name, $version, $top_level, $sequence_level, $default, $rank ) =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 rearrange( [ 'NAME', 'VERSION',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 'TOP_LEVEL', 'SEQUENCE_LEVEL',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 'DEFAULT', 'RANK' ],
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 @_ );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 $version = '' if ( !defined($version) );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 $top_level = ($top_level) ? 1 : 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 $sequence_level = ($sequence_level) ? 1 : 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 $default = ($default) ? 1 : 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 $rank ||= 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 if ( $top_level == 1 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 if ( $rank != 0 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 throw('RANK argument must be 0 if TOP_LEVEL is 1');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 if ( defined($name) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 if ( $name ne 'toplevel' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 $name = 'toplevel';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 if ( $sequence_level == 1 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 throw("SEQUENCE_LEVEL argument must be 0 if TOP_LEVEL is 1");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 $default = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 if ( $rank == 0 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 throw("RANK argument must be non-zero unless TOP_LEVEL is 1");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 if ( !defined($name) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 throw('The NAME argument is required');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 } elsif ( $name eq 'toplevel' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 throw( "Cannot name coord system 'toplevel' "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 . "unless TOP_LEVEL is 1" );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 if ( $rank !~ /^\d+$/ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 throw('The RANK argument must be a positive integer');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 $self->{'version'} = $version;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 $self->{'name'} = $name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 $self->{'top_level'} = $top_level;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 $self->{'sequence_level'} = $sequence_level;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 $self->{'default'} = $default;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 $self->{'rank'} = $rank;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 } ## end sub new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 =head2 name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Arg [1] : (optional) string $name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Example : print $coord_system->name();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 Description: Getter for the name of this coordinate system
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 sub name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 return $self->{'name'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 =head2 version
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 Example : print $coord->version();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 Description: Getter for the version of this coordinate system. This
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 will return an empty string if no version is defined for this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 coordinate system.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 sub version {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 return $self->{'version'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 =head2 species
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 Example : print $coord->species();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 Description: Shortcut method to get the species this CoordSystem refers to.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 sub species {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 return $self->adaptor->db->species;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 =head2 equals
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Arg [1] : Bio::EnsEMBL::CoordSystem $cs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 The coord system to compare to for equality.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 Example : if($coord_sys->equals($other_coord_sys)) { ... }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Description: Compares 2 coordinate systems and returns true if they are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 equivalent. The definition of equivalent is sharing the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 name and version.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 sub equals {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 my $cs = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 if(!$cs || !ref($cs) || !$cs->isa('Bio::EnsEMBL::CoordSystem')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 if ($cs->isa('Bio::EnsEMBL::ExternalData::DAS::CoordSystem')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 return $cs->equals($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 throw('Argument must be a CoordSystem');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 if($self->{'version'} eq $cs->version() && $self->{'name'} eq $cs->name()) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 =head2 is_top_level
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 Example : if($coord_sys->is_top_level()) { ... }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 Description: Returns true if this is the toplevel pseudo coordinate system.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 The toplevel coordinate system is not a real coordinate system
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 which is stored in the database, but it is a placeholder that
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 can be used to request transformations or retrievals to/from
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 the highest defined coordinate system in a given region.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 Returntype : 1 or 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 sub is_top_level {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 return $self->{'top_level'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 =head2 is_sequence_level
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 Example : if($coord_sys->is_sequence_level()) { ... }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 Description: Returns true if this is a sequence level coordinate system
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 Returntype : 1 or 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 sub is_sequence_level {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 return $self->{'sequence_level'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 =head2 is_default
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 Example : if($coord_sys->is_default()) { ... }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 Description: Returns true if this coordinate system is the default
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 version of the coordinate system of this name.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 Returntype : 1 or 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 sub is_default {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 return $self->{'default'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 =head2 rank
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 Example : if($cs1->rank() < $cs2->rank()) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 print $cs1->name(), " is a higher level coord system than",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 $cs2->name(), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 Description: Returns the rank of this coordinate system. A lower number
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 is a higher coordinate system. The highest level coordinate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 system has a rank of 1 (e.g. 'chromosome'). The toplevel
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 pseudo coordinate system has a rank of 0.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 sub rank {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 return $self->{'rank'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 1;