annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/CoordSystem.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 # EnsEMBL module for Bio::EnsEMBL::Funcgen::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 Copyright (c) 1999-2011 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 developers list at <ensembl-dev@ebi.ac.uk>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 Bio::EnsEMBL::Funcgen::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 my $db = Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new(...);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 my $csa = $db->get_CoordSystemAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 # Get default chromosome coord system for the 39_36a DB:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 my $cs = $csa->fetch_by_name_schema_build_version('chromosome', '39_36a');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 my $str = join ':', $cs->name(),$cs->version(),$cs->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 print "$str\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 This has been adapted from the core CoordSystem object to accomodate the multi-assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 aspects of the eFG schema, namely hadnling the schema_build of the referenced core DB.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 This is a simple object which contains a few coordinate system attributes:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 name, internal identifier, version and schema_build. A coordinate system is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 uniquely defined by its name and version and which DB it came from i.e. schema_build.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 A version of a coordinate system applies to all sequences within a coordinate system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 This should not be confused with individual sequence versions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 Take for example the Human assembly. The version 'NCBI33' applies to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 to all chromosomes in the NCBI33 assembly (that is the entire 'chromosome'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 coordinate system). The 'clone' coordinate system in the same database would
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 have no version however. Although the clone sequences have their own sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 versions, there is no version which applies to the entire set of clones.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Coordinate system objects are immutable. Their name and version, and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 attributes may not be altered after they are created.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 package Bio::EnsEMBL::Funcgen::CoordSystem;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use Bio::EnsEMBL::Storable;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use Bio::EnsEMBL::Utils::Exception qw(throw);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 @ISA = qw(Bio::EnsEMBL::Storable);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 my %warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Arg [..] : List of named arguments:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 -NAME - The name of the coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 -VERSION - (optional) The version of the coordinate system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Note that if the version passed in is undefined,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 it will be set to the empty string in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 resulting CoordSystem object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 -RANK - The rank of the coordinate system. The highest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 level coordinate system should have rank 1, the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 second highest rank 2 and so on. An example of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 a high level coordinate system is 'chromosome' an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 example of a lower level coordinate system is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 'clone'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 -SCHEMA_BUILD - The schema and data build version of the DB of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 origin.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 -TOP_LEVEL - (optional) Sets whether this is a top-level coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 system. Default = 0. This should only be set to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 true if you are creating an artificial toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 coordsystem by the name of 'toplevel'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 -SEQUENCE_LEVEL - (optional) Sets whether this is a sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 level coordinate system. Default = 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 -DEFAULT - (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Whether this is the default version of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 coordinate systems of this name. Default = 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 -DBID - (optional) The internal identifier of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 -ADAPTOR - (optional) The adaptor which provides database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 interaction for this object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 Example : $cs = Bio::EnsEMBL::CoordSystem->new(-NAME => 'chromosome',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 -VERSION => 'NCBI33',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 -RANK => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 -DBID => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 -SCHEMA_BUILD => '39_36a',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 -ADAPTOR => adaptor,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 -DEFAULT => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 -SEQUENCE_LEVEL => 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Description: Creates a new CoordSystem object representing a coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Returntype : Bio::EnsEMBL::Funcgen::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 #Can we just hadnle schema_build here and call super->new for the rest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #We will also have to handle the top/default levels issues with multiple DBs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 #my ($name, $version, $sbuild, $top_level, $sequence_level, $default, $rank) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 # rearrange(['NAME','VERSION', 'SCHEMA_BUILD','TOP_LEVEL', 'SEQUENCE_LEVEL',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 # 'DEFAULT', 'RANK'], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 my ($name, $version) = rearrange(['NAME','VERSION'], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 throw('A name argument is required') if(! $name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $version = '' if(!defined($version));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 #$top_level = ($top_level) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 #$sequence_level = ($sequence_level) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 #$default = ($default) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 #$rank ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 #if($top_level) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 # if($rank) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 # throw('RANK argument must be 0 if TOP_LEVEL is 1');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 # if($name) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 # if($name ne 'toplevel') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 # throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 # } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 # $name = 'toplevel';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 # if($sequence_level) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 # throw("SEQUENCE_LEVEL argument must be 0 if TOP_LEVEL is 1");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 # $default = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 # } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 # if(!$rank) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 # throw("RANK argument must be non-zero if not toplevel CoordSystem");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 # if($name eq 'toplevel') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 # throw("Cannot name coord system 'toplevel' unless TOP_LEVEL is 1");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 # if($rank !~ /^\d+$/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 # throw('The RANK argument must be a positive integer');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $self->{'core_cache'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $self->{'version'} = $version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 $self->{'name'} = $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 #$self->{'schema_build'} = $sbuild;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 #$self->{'top_level'} = $top_level;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 #$self->{'sequence_level'} = $sequence_level;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 #$self->{'default'} = $default;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 #$self->{'rank'} = $rank;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 =head2 add_core_coord_system_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Arg [1] : mandatory hash:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 -RANK => $rank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 -SEQUENCE_LEVEL => $seq_lvl,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 -DEFAULT => $default,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 -SCHEMA_BUILD => $sbuild,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 -CORE_COORD_SYSTEM_ID => $ccs_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 -IS_STORED => $stored_status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Example : $cs->add_core_coord_system_info(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 -RANK => $rank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 -SEQUENCE_LEVEL => $seq_lvl,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 -DEFAULT => $default,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 -SCHEMA_BUILD => $sbuild,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 -CORE_COORD_SYSTEM_ID => $ccs_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 -IS_STORED => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Description: Setter for core coord system information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Exceptions : throws if:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 rank not 0 when toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 name not 'TOPLEVEL" when toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 sequence level and top level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 no schema_build defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 no rank
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 rank 0 when not toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 name 'TOPLEVEL' when not toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Caller : Bio::EnsEMBL::Funcgen::DBSQL::CoordSystemAdaptor and ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Status : at risk - replace with add_core_CoordSystem? implement top level?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 #this does not check name and version!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 sub add_core_coord_system_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my ($sbuild, $top_level, $sequence_level, $default, $rank, $stored, $ccs_id) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 rearrange(['SCHEMA_BUILD','TOP_LEVEL', 'SEQUENCE_LEVEL',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 'DEFAULT', 'RANK', 'IS_STORED', 'CORE_COORD_SYSTEM_ID'], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 throw('Must provide a schema_build') if ! $sbuild;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 throw('Must provide a core_coord_system_id') if ! $ccs_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 #$top_level = ($top_level) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $sequence_level = ($sequence_level) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $default = ($default) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 $stored ||=0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $rank ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 if($top_level) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 if($rank) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 throw('RANK argument must be 0 if TOP_LEVEL is 1');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 if($self->name()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 if($self->name() ne 'toplevel') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 throw('toplevel not yet implemented');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 #$name = 'toplevel';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 if($sequence_level) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 throw("SEQUENCE_LEVEL argument must be 0 if TOP_LEVEL is 1");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 $default = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 if(!$rank) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 throw("RANK argument must be non-zero if not toplevel CoordSystem");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 if($self->name() eq 'toplevel') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 throw("Cannot name coord system 'toplevel' unless TOP_LEVEL is 1");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 if($rank !~ /^\d+$/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 throw('The RANK argument must be a positive integer');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 #We can add unstored coord systems here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 #But will these ever have valid entries in the seq_region cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 #Initialising this cache key turning off the warning in equals about
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 #Using the nearest coord_system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $self->{'core_cache'}{$sbuild} = {(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 RANK => $rank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 SEQUENCE_LEVEL => $sequence_level,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 DEFAULT => $default,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 CORE_COORD_SYSTEM_ID => $ccs_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 IS_STORED => $stored,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 )};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 #remove all but schema_buil and equals?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 #depends on how we handle levels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 =head2 name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Arg [1] : (optional) string $name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 Example : print $coord_system->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Description: Getter for the name of this coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 sub name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 return $self->{'name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =head2 get_latest_schema_build
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Example : my $db_schema_build = $coord_system->get_latest_schema_build();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Description: Getter for the most recent schema_build of this coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 sub get_latest_schema_build {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 return (sort (keys %{$self->{'core_cache'}}))[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 =head2 contains_schema_build
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Example : if ($coord_system->contains_schema_build('43_36e')){..do some coord system things ..};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Description: Returns true is the CoordSystem maps to the corresponding core CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Returntype : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Exceptions : throws if schema_build not defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 sub contains_schema_build {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 my ($self, $schema_build) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 throw('Must pass a schema_build') if ! $schema_build;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 return (exists $self->{'core_cache'}{$schema_build}) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 =head2 version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 Example : print $coord->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 Description: Getter/Setter for the version of this coordinate system. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 will return an empty string if no version is defined for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 coordinate system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 sub version {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 return $self->{'version'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 =head2 equals
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 Arg [1] : Bio::EnsEMBL::Funcgen::CoordSystem $cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 The coord system to compare to for equality.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 Example : if($coord_sys->equals($other_coord_sys)) { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Description: Compares 2 coordinate systems and returns true if they are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 equivalent. The definition of equivalent is sharing the same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 name and version.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 sub equals {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 my $cs = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 if(!$cs || !ref($cs) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 (! $cs->isa('Bio::EnsEMBL::Funcgen::CoordSystem') &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 ! $cs->isa('Bio::EnsEMBL::CoordSystem'))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 throw('Argument must be a Bio::EnsEMBL::Funcgen::CoordSystem');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 #need to add check on schema_build here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 #all schema_builds should have been added by BaseFeatureAdaptor during import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 #fails if we are using two different versions with the same cs's
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 if(($self->version() eq $cs->version()) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 ($self->name() eq $cs->name())){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 #we need to make sure these are default CS, otherwise we can get into trouble with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 #re-used or mismatched seq_region_ids between DB wih different default assemblies
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 if (! $self->contains_schema_build($self->adaptor->db->_get_schema_build($cs->adaptor()))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 #Only warn first time this is seen
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 my $warning_key = $self->adaptor->db->_get_schema_build($cs->adaptor()).':'.$self->name().':'.$self->version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 if(! exists $warnings{$warning_key}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 warn 'You are using a schema_build('.$self->adaptor->db->_get_schema_build($cs->adaptor()).') which has no CoordSystem stored for '.$cs->version.". Defaulting to closest name version match.\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $warnings{$warning_key} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 =head2 is_top_level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Example : if($coord_sys->is_top_level()) { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 Description: Returns true if this is the toplevel pseudo coordinate system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 The toplevel coordinate system is not a real coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 which is stored in the database, but it is a placeholder that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 can be used to request transformations or retrievals to/from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 the highest defined coordinate system in a given region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 Returntype : 0 or 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 Status : at risk - not implemented yet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 sub is_top_level {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 throw('Not yet implmented, need to test against the core cache using dnadb/schema_build');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 return $self->{'top_level'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 #These attribute methods are largely redundant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 #is_default is used by Feature Adaptors to restrict features to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 #current default assembly for non slice based methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 #Especially redundant now we have implemented this in fetch_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 =head2 is_sequence_level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 Arg [1] : Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 Example : if($coord_sys->is_sequence_level($dnadb)) { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Description: Returns true if this is a sequence level coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 for a given dnadb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Returntype : 0 or 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 sub is_sequence_level {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my ($self, $dnadb) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 return $self->get_coord_system_attribute('sequence_level', $dnadb);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 =head2 is_default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 Arg [1] : Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 Example : if($coord_sys->is_default($dnadb)) { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Description: Returns true if this coordinate system is the default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 version of the coordinate system of this name for a given dnadb.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 Returntype : 0 or 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 Caller : general - Used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 sub is_default {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my ($self, $dnadb) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 return $self->get_coord_system_attribute('default', $dnadb);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 sub get_coord_system_attribute{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 my($self, $attr_name, $dnadb) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 if(! ($dnadb && ref($dnadb) && $dnadb->isa('Bio::EnsEMBL::DBSQL::DBAdaptor'))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 throw("You must pass a dnadb to access the CoordSystem attribute:\t $attr_name");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 my $schema_build = $self->adaptor->db->_get_schema_build($dnadb);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 if(! $self->contains_schema_build($schema_build)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 throw("CoordSystem does not contain the schema_build:\t$schema_build");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 return $self->{'core_cache'}{$schema_build}{uc($attr_name)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 =head2 rank
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 Arg [1] : Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 Example : if($cs1->rank($dnadb) < $cs2->rank($dnadb)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 print $cs1->name(), " is a higher level coord system than",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $cs2->name(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 Description: Returns the rank of this coordinate system for a given dnadb.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 A lower number is a higher coordinate system. The highest level coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 system has a rank of 1 (e.g. 'chromosome'). The toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 pseudo coordinate system has a rank of 0.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 Status : at risk - not yet implemented
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 sub rank {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 my ($self, $dnadb) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 return $self->get_coord_system_attribute('rank', $dnadb);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 1;