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