comparison variant_effect_predictor/Bio/EnsEMBL/DBLoader.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1f6dce3d34e0
1 =head1 LICENSE
2
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
4 Genome Research Limited. All rights reserved.
5
6 This software is distributed under a modified Apache license.
7 For license details, please see
8
9 http://www.ensembl.org/info/about/code_licence.html
10
11 =head1 CONTACT
12
13 Please email comments or questions to the public Ensembl
14 developers list at <dev@ensembl.org>.
15
16 Questions may also be sent to the Ensembl help desk at
17 <helpdesk@ensembl.org>.
18
19 =cut
20
21 =head1 NAME
22
23 Bio::EnsEMBL::DBLoader - Run time database loader
24
25 =head1 SYNOPSIS
26
27 $db =
28 Bio::EnsEMBL::DBLoader->new( "Bio::EnsEMBL::DBSQL::DBAdaptor/"
29 . "host=localhost;"
30 . "dbname=homo_sapiens_core_19_34a;"
31 . "user=ensro;" );
32
33 # $db is a database object
34 $db = Bio::EnsEMBL::DBLoader->standard();
35
36 # equivalent to
37 # Bio::EnsEMBL::DBLoader->new( $ENV{'ENSEMBL_DATABASE'} );
38
39 =head1 DESCRIPTION
40
41 This system provides a run-time loading of the database for ensembl,
42 allowing two things
43
44 a) Only "using" the database module which is required for a
45 particular implementation
46
47 b) Providing a simple string method to indicate where the database
48 is, allowing per sites defaults and other things as such
49
50
51 The string is parsed as follows:
52
53 Before the / is the Perl database object to load, after are the
54 parameters to pass to that database. The parameters are series of
55 key=values separated by semi-colons. These are passed as a hash to the
56 new method of the database object
57
58 =head1 METHODS
59
60 =cut
61
62 package Bio::EnsEMBL::DBLoader;
63
64 use strict;
65
66
67 =head2 new
68
69 Arg [1] : string $string
70 An Ensembl database locator string.
71 Example : Bio::EnsEMBL::DBSQL::DBLoader->new("Bio::EnsEMBL::DBSQL::DBAdaptor/host=localhost;dbname=homo_sapiens_core_19_34a;user=ensro;"
72 Description: Connects to an Ensembl database using the module specified in
73 the locator string.
74 Returntype : The module specified in the load string is returned.
75 Exceptions : thrown if the specified module cannot be instantiated or the
76 locator string cannot be parsed
77 Caller : ?
78 Status : Stable
79
80 =cut
81
82 sub new{
83 my ($class,$string) = @_;
84 my ($module,%hash);
85
86 $string =~ /(\S+?)\/([\S+\s*]+)/ || die "Could not parse [$string] as a ensembl database locator. Needs database_module/params";
87 $module = $1;
88 my $param = $2;
89
90 &_load_module($module);
91 my @param = split(/;/,$param);
92 foreach my $keyvalue ( @param ) {
93 $keyvalue =~ /(\S+?)=([\S*\s*]*)/ || do { warn("In loading $keyvalue, could not split into keyvalue for loading $module. Ignoring"); next; };
94
95 my $key = $1;
96 my $value = $2;
97
98 $hash{"-$key"} = $value;
99 }
100
101 my @kv = %hash;
102
103 return "$module"->new(%hash);
104 }
105
106
107 sub _load_module{
108 my ($modulein) = @_;
109 my ($module,$load,$m);
110
111 $module = "_<$modulein.pm";
112 $load = "$modulein.pm";
113 $load =~ s/::/\//g;
114
115 return 1 if $main::{$module};
116 eval {
117 require $load;
118 };
119 if( $@ ) {
120 print STDERR <<END;
121 $load: cannot be found
122 Exception $@
123
124 END
125 ;
126 return;
127 }
128 return 1;
129 }
130
131 1;