Mercurial > repos > willmclaren > ensembl_vep
comparison variant_effect_predictor/Bio/EnsEMBL/Utils/EasyArgv.pm @ 0:21066c0abaf5 draft
Uploaded
author | willmclaren |
---|---|
date | Fri, 03 Aug 2012 10:04:48 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:21066c0abaf5 |
---|---|
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 =head1 AUTHOR | |
20 | |
21 Juguang Xiao <juguang@tll.org.sg> | |
22 | |
23 =cut | |
24 | |
25 =head1 NAME | |
26 | |
27 Bio::EnsEMBL::Utils::EasyArgv | |
28 | |
29 =head1 SYNOPSIS | |
30 | |
31 use Bio::EnsEMBL::Utils::EasyArgv; | |
32 | |
33 my $db = get_ens_db_from_argv; # this method is exported. | |
34 | |
35 use Getopt::Long; | |
36 | |
37 my $others; | |
38 &GetOptions( 'others=s' => \$others ); | |
39 | |
40 =head1 DESCRIPTION | |
41 | |
42 This is a lazy but easy way to get the db-related arguments. All you | |
43 need to do is to invoke get_ens_db_from_argv before using standard | |
44 Getopt. The below options will be absorbed and removed from @ARGV. | |
45 | |
46 db_file, host, db_host, dbhost, user, db_user, dbuser, pass, db_pass, | |
47 dbpass, dbname, db_name. | |
48 | |
49 Now you can take advantage of Perl's do method to execute a file as perl | |
50 script and get returned the last line of it. For your most accessed db | |
51 setting, you can have a file named, say, ensdb_homo_core_18.perlobj, | |
52 with the content like | |
53 | |
54 use strict; # The ceiling line | |
55 | |
56 use Bio::EnsEMBL::DBSQL::DBAdaptor; | |
57 | |
58 my $db = Bio::EnsEMBL::DBSQL::DBAdaptor->new( | |
59 -host => 'ensembldb.ensembl.org', | |
60 -user => 'anonymous', | |
61 -dbname => 'homo_sapiens_core_18_34' | |
62 ); | |
63 | |
64 $db; # The floor line | |
65 | |
66 In the your command line, you just need to write like | |
67 | |
68 perl my_script.pl -db_file ensdb_homo_core_18.perlobj | |
69 | |
70 rather than the verbose | |
71 | |
72 -host ensembldb.ensembl.org -user anonymous \ | |
73 -dbname homo_sapiens_core_18_34 | |
74 | |
75 =head1 METHODS | |
76 | |
77 =cut | |
78 | |
79 package Bio::EnsEMBL::Utils::EasyArgv; | |
80 | |
81 use strict; | |
82 use vars qw($debug); | |
83 use Exporter (); | |
84 our @ISA= qw(Exporter); | |
85 our @EXPORT = qw(get_ens_db_from_argv | |
86 ); | |
87 use Bio::Root::Root; # For _load_module | |
88 use Getopt::Long; | |
89 | |
90 sub _debug_print; | |
91 | |
92 sub get_ens_db_from_argv { | |
93 my ($db_file, $host, $user, $pass, $dbname, $driver, $db_module); | |
94 $host = 'localhost'; | |
95 $driver ='mysql'; | |
96 $db_module = 'Bio::EnsEMBL::SQL::DBAdaptor'; | |
97 Getopt::Long::config('pass_through'); | |
98 &GetOptions( | |
99 'db_file=s' => \$db_file, | |
100 'driver|dbdriver|db_driver=s' => \$driver, | |
101 'host|dbhost|db_host=s' => \$host, | |
102 'user|dbuser|db_user=s' => \$user, | |
103 'pass|dbpass|db_pass=s' => \$pass, | |
104 'dbname|db_name=s' => \$dbname, | |
105 'db_module=s' => \$db_module | |
106 ); | |
107 | |
108 my $db; | |
109 if(defined $db_file){ | |
110 -e $db_file or die "'$db_file' is defined but does not exist\n"; | |
111 eval { $db = do($db_file) }; | |
112 $@ and die "'$db_file' is not a perlobj file\n"; | |
113 $db->isa('Bio::EnsEMBL::DBSQL::DBAdaptor') | |
114 or die "'$db_file' is not EnsEMBL DBAdaptor\n"; | |
115 _debug_print "I get a db from file\n"; | |
116 | |
117 }elsif(defined $host and defined $user and defined $dbname){ | |
118 Bio::Root::Root::_load_module($db_module); | |
119 $db = $db_module->new( | |
120 -host => $host, | |
121 -user => $user, | |
122 -pass => $pass, | |
123 -dbname => $dbname, | |
124 -driver => $driver | |
125 ); | |
126 }else{ | |
127 die "Cannot get the db, due to the insufficient information\n"; | |
128 } | |
129 return $db; | |
130 } | |
131 | |
132 sub _debug_print { | |
133 print STDERR @_ if $debug; | |
134 } | |
135 | |
136 | |
137 1; |