annotate variant_effect_predictor/Bio/EnsEMBL/Utils/CliHelper.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 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 Bio::EnsEMBL::Utils::CliHelper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head1 VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 $Revision: 1.6 $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 use Bio::EnsEMBL::Utils::CliHelper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $cli = Bio::EnsEMBL::Utils::CliHelper->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 # get the basic options for connecting to a database server
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my $optsd = $cli->get_dba_opts();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 # add the print option
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 push(@$optsd,"print|p");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 # process the command line with the supplied options plus a reference to a help subroutine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 my $opts = $cli->process_args($optsd,\&usage);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 # use the command line options to get an array of database details
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 for my $db_args (@{$cli->get_dba_args_for_opts($opts)}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # use the args to create a DBA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 my $dba = new Bio::EnsEMBL::DBSQL::DBAdaptor(%{$db_args});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 For adding secondary databases, a prefix can be supplied. For instance, to add a second set of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 db params prefixed with dna (-dnahost -dbport etc.) use the prefix argument with get_dba_opts and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 get_dba_args_for_opts:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 # get the basic options for connecting to a database server
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 my $optsd =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 [ @{ $cli_helper->get_dba_opts() }, @{ $cli_helper->get_dba_opts('gc') } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 # process the command line with the supplied options plus a help subroutine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 my $opts = $cli_helper->process_args( $optsd, \&usage );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 # get the dna details
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 my ($dna_dba_details) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 @{ $cli_helper->get_dba_args_for_opts( $opts, 1, 'dna' ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 my $dna_db =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Bio::EnsEMBL::DBSQL::DBAdaptor->new( %{$dna_dba_details} ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 Utilities for a more consistent approach to parsing and handling EnsEMBL script command lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 See subroutines.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 package Bio::EnsEMBL::Utils::CliHelper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use Carp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 use Data::Dumper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use Getopt::Long qw(:config auto_version no_ignore_case);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use Bio::EnsEMBL::DBSQL::DBConnection;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 my $dba_opts =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 [ { args => [ 'host', 'dbhost', 'h' ], type => '=s' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 { args => [ 'port', 'dbport', 'P' ], type => ':i' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 { args => [ 'user', 'dbuser', 'u' ], type => '=s' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 { args => [ 'pass', 'dbpass', 'p' ], type => ':s' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 { args => [ 'dbname', 'D' ], type => ':s' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 { args => [ 'pattern', 'dbpattern' ], type => ':s' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 { args => [ 'driver' ], type => ':s' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 { args => [ 'species_id' ], type => ':i' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 { args => [ 'species' ], type => ':i' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =head2 new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Description : Construct a new instance of a CliHelper object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Returntype : Bio::EnsEMBL::Utils:CliHelper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Status : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 my ( $class, @args ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my $self = bless( {}, ref($class) || $class );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 =head2 get_dba_opts()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Arg [1] : Optional prefix for dbnames e.g. dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Description : Retrieves the standard options for connecting to one or more Ensembl databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Returntype : Arrayref of option definitions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Status : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 sub get_dba_opts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 my ( $self, $prefix ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $prefix ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my @dba_opts = map {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $opt = join '|', map { $prefix . $_ } @{ $_->{args} };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $opt . $_->{type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 } @{$dba_opts};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 return \@dba_opts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 =head2 process_args()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Arg [1] : Arrayref of supported command line options (e.g. from get_dba_opts)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Arg [2] : Ref to subroutine to be invoked when -help or -? is supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Description : Retrieves the standard options for connecting to one or more Ensembl databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Returntype : Hashref of parsed options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Status : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 sub process_args {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 my ( $self, $opts_def, $usage_sub ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my $opts = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 push @{$opts_def}, q/help|?/ => $usage_sub;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 GetOptions( $opts, @{$opts_def} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 || croak 'Could not parse command line arguments';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 return $opts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 =head2 get_dba_args_for_opts()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Arg [1] : Hash of options (e.g. parsed from command line options by process_args())
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Arg [2] : If set to 1, the databases are assumed to have a single species only. Default is 0.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Arg [3] : Optional prefix to use when parsing e.g. dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Description : Uses the parsed command line options to generate an array of DBAdaptor arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 : (e.g. expands dbpattern, finds all species_ids for multispecies databases)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 : These can then be passed directly to Bio::EnsEMBL::DBSQL::DBAdaptor->new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Returntype : Arrayref of DBA argument hash refs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Status : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 sub get_dba_args_for_opts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 my ( $self, $opts, $single_species, $prefix ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 $prefix ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $single_species ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my ( $host, $port, $user, $pass, $dbname, $pattern, $driver ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 map { $prefix . $_ } qw(host port user pass dbname pattern driver);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my @db_args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 if ( defined $opts->{$host} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $dbc =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Bio::EnsEMBL::DBSQL::DBConnection->new( -USER => $opts->{$user},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 -PASS => $opts->{$pass},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 -HOST => $opts->{$host},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 -PORT => $opts->{$port},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 -DRIVER => $opts->{$driver} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 my @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 if ( defined $opts->{$dbname} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 push @dbnames, $opts->{$dbname};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 } elsif ( defined $opts->{$pattern} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 # get a basic DBConnection and use to find out which dbs are involved
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 @dbnames =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 grep { m/$opts->{pattern}/smx }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 @{ $dbc->sql_helper()->execute_simple(q/SHOW DATABASES/) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 print Dumper($opts);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 croak 'dbname or dbpattern arguments required';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 for my $dbname (@dbnames) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 #Decipher group of DBAdaptor by capturing the name_name(_name?)_core_ code. Otherwise we don't know
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my ($group) = $dbname =~ /^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?_([a-z]+)(?:_\d+)?_\d+/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 my $multi = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my $species_ids = [ [ 1, undef ] ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 if ( !$single_species ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $species_ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $dbc->sql_helper()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 ->execute(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 "SELECT species_id,meta_value FROM $dbname.meta WHERE meta_key='species.production_name'"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 if ( scalar( @{$species_ids} ) > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 $multi = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 if ( defined $opts->{species_id} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $species_ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 [ [ $opts->{species_id}, $opts->{species} ] ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 for my $species_id ( @{$species_ids} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my $args = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 -HOST => $opts->{$host},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 -USER => $opts->{$user},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 -PORT => $opts->{$port},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 -PASS => $opts->{$pass},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 -DBNAME => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 -DRIVER => $opts->{$driver},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 -SPECIES_ID => $species_id->[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 -SPECIES => $species_id->[1],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 -MULTISPECIES_DB => $multi };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $args->{-GROUP} = $group if $group;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 push(@db_args, $args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 } ## end if ( defined $opts->{$host...})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 croak '(db)host arguments required';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 return \@db_args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 } ## end sub get_dba_args_for_opts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 =head2 get_dba_args_for_opts()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 Arg [1] : Hash of options (e.g. parsed from command line options by process_args())
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Arg [2] : If set to 1, the databases are assumed to have a single species only. Default is 0.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Arg [3] : Optional prefix to use when parsing e.g. dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Description : Uses the parsed command line options to generate an array DBAdaptors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 : Note this can overload connections on a server
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Returntype : Arrayref of Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Status : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 sub get_dbas_for_opts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 my ( $self, $opts, $single_species, $prefix ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 # get all the DBA details that we want to work with and create DBAs for each in turn
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 my $dbas;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 for my $args (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 @{ $self->get_dba_args_for_opts( $opts, $single_species, $prefix ) } )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 push @{$dbas}, Bio::EnsEMBL::DBSQL::DBAdaptor->new( %{$args} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 return $dbas;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 =head2 load_registry_for_opts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Arg [1] : Hash of options (e.g. parsed from command line options by process_args())
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Arg [2] : Optional prefix to use when parsing e.g. dna or master
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Description : Loads a Registry from the given options hash. If a C<registry>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 option is given then the code will call C<load_all>. Otherwise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 we use the database parameters given to call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 C<load_registry_from_db()>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Returntype : Integer of the number of DBAdaptors loaded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Status : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 sub load_registry_for_opts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 my ($self, $opts, $prefix) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 $prefix ||= q{};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 if($opts->{registry}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my $location = $opts->{registry};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 return Bio::EnsEMBL::Registry->load_all($location);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my ( $host, $port, $user, $pass ) = map { $prefix . $_ } qw(host port user pass);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my %args = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 -HOST => $opts->{$host},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 -PORT => $opts->{$port},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 -USER => $opts->{$user},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 $args{-PASS} = $opts->{$pass};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 return Bio::EnsEMBL::Registry->load_registry_from_db(%args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 1;