annotate variant_effect_predictor/INSTALL.pl @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 #!/usr/bin/perl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 use Getopt::Long;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 use LWP::Simple qw($ua getstore get);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 use File::Listing qw(parse_dir);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 $| = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 our $VERSION = 2.6;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10 # CONFIGURE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 ###########
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 my ($DEST_DIR, $ENS_CVS_ROOT, $API_VERSION, $BIOPERL_URL, $CACHE_URL, $help);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 GetOptions(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16 'DESTDIR|d=s' => \$DEST_DIR,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 'VERSION|v=i' => \$API_VERSION,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18 'BIOPERL|b=s' => \$BIOPERL_URL,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 'CACHEURL|u=s' => \$CACHE_URL,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 'CACHEDIR|c=s' => \$CACHE_DIR,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 'HELP|h' => \$help
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 if(defined($help)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 usage();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 exit(0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 my $default_dir_used;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 # check if $DEST_DIR is default
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 if(defined($DEST_DIR)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 print "Using non-default installation directory $DEST_DIR - you will probably need to add $DEST_DIR to your PERL5LIB\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 $default_dir_used = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 $DEST_DIR ||= '.';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 $default_dir_used = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 my $lib_dir = $DEST_DIR;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 $DEST_DIR .= '/Bio';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 $ENS_CVS_ROOT ||= 'http://cvs.sanger.ac.uk/cgi-bin/viewvc.cgi/';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 $BIOPERL_URL ||= 'http://bioperl.org/DIST/old_releases/bioperl-1.2.3.tar.gz';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 $API_VERSION ||= 68;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 $CACHE_URL ||= "ftp://ftp.ensembl.org/pub/release-$API_VERSION/variation/VEP";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 $CACHE_DIR ||= $ENV{HOME}.'/.vep';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 our $prev_progress = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 print "\nHello! This installer is configured to install v$API_VERSION of the Ensembl API for use by the VEP.\nIt will not affect any existing installations of the Ensembl API that you may have.\n\nIt will also download and install cache files from Ensembl's FTP server.\n\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 # CHECK EXISTING
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 ################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 print "Checking for installed versions of the Ensembl API...";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 # test if the user has the API installed
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 my $has_api = {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 'ensembl' => 0,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 'ensembl-variation' => 0,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 'ensembl-functgenomics' => 0,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 eval q{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 use Bio::EnsEMBL::Registry;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 my $installed_version;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 unless($@) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 $has_api->{ensembl} = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 $installed_version = Bio::EnsEMBL::Registry->software_version;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 eval q{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 use Bio::EnsEMBL::Variation::Utils::VEP;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 $has_api->{'ensembl-variation'} = 1 unless $@;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 eval q{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 use Bio::EnsEMBL::Funcgen::RegulatoryFeature;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 $has_api->{'ensembl-functgenomics'} = 1 unless $@;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 print "done\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 my $total = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 $total += $_ for values %$has_api;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 my $message;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 if($total == 3) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 if(defined($installed_version)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 if($installed_version == $API_VERSION) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 $message = "It looks like you already have v$API_VERSION of the API installed.\nYou shouldn't need to install the API";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 elsif($installed_version > $API_VERSION) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 $message = "It looks like this installer is for an older distribution of the API than you already have";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 $message = "It looks like you have an older version (v$installed_version) of the API installed.\nThis installer will install a limited set of the API v$API_VERSION for use by the VEP only";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 $message = "It looks like you have an unidentified version of the API installed.\nThis installer will install a limited set of the API v$API_VERSION for use by the VEP only"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 elsif($total > 0) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 $message = "It looks like you already have the following API modules installed:\n\n".(join "\n", grep {$has_api->{$_}} keys %$has_api)."\n\nThe VEP requires the ensembl, ensembl-variation and optionally ensembl-functgenomics modules";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 if(defined($message)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 print "$message\n\nAre you sure you want to continue installing the API (y/n)? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 my $ok = <>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 if($ok !~ /^y/i) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 print " - skipping API installation\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 goto CACHE;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 # SETUP
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 #######
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 print "\nSetting up directories\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 # check if install dir exists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 if(-e $DEST_DIR) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 print "Destination directory $DEST_DIR already exists.\nDo you want to overwrite it (if updating VEP this is probably OK) (y/n)? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 my $ok = <>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 if($ok !~ /^y/i) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 print "Exiting\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 exit(0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 unless($default_dir_used) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 print "WARNING: You are using a non-default install directory.\nPressing \"y\" again will remove $DEST_DIR and its contents!!!\nAre you really, really sure (y/n)? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 $ok = <>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 if($ok !~ /^y/i) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 print "Exiting\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 exit(0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 # try to delete the existing dir
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 `rm -rf $DEST_DIR`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 mkdir($DEST_DIR) or die "ERROR: Could not make directory $DEST_DIR\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 mkdir($DEST_DIR.'/tmp') or die "ERROR: Could not make directory $DEST_DIR/tmp\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 # set up a user agent's proxy
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 $ua->env_proxy;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 # enable progress
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 eval q{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 $ua->show_progress(1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 # API
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 #####
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 print "\nDownloading required files\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 # set up the URLs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 my $ensembl_url_tail = '.tar.gz?root=ensembl&view=tar&only_with_tag=branch-ensembl-';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 foreach my $module(qw(ensembl ensembl-variation ensembl-functgenomics)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 my $url = $ENS_CVS_ROOT.$module.$ensembl_url_tail.$API_VERSION;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 print " - fetching $module\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 my $target_file = $DEST_DIR.'/tmp/'.$module.'.tar.gz';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 unless(getstore($url, $target_file) == 200) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 die "ERROR: Failed to fetch $module from $url - perhaps you have a proxy/firewall? Set the http_proxy ENV variable if you do\nError code: $response\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 print " - unpacking $target_file\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 unpack_tar("$DEST_DIR/tmp/$module.tar.gz", "$DEST_DIR/tmp/");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 print " - moving files\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 if($module eq 'ensembl') {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 `mv -f $DEST_DIR/tmp/$module/modules/Bio/EnsEMBL $DEST_DIR/`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 elsif($module eq 'ensembl-variation') {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 `mv -f $DEST_DIR/tmp/$module/modules/Bio/EnsEMBL/Variation $DEST_DIR/EnsEMBL/`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 elsif($module eq 'ensembl-functgenomics') {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 `mv -f $DEST_DIR/tmp/$module/modules/Bio/EnsEMBL/Funcgen $DEST_DIR/EnsEMBL/`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 `rm -rf $DEST_DIR/tmp/$module`;# or die "ERROR: Failed to remove directory $DEST_DIR/$module\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 # BIOPERL
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 #########
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 # now get BioPerl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 print " - fetching BioPerl\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 $bioperl_file = (split /\//, $BIOPERL_URL)[-1];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 my $target_file = $DEST_DIR.'/tmp/'.$bioperl_file;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 unless(getstore($BIOPERL_URL, $target_file) == 200) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 die "ERROR: Failed to fetch BioPerl from $BIOPERL_URL - perhaps you have a proxy/firewall?\nError code: $response\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 print " - unpacking $target_file\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 unpack_tar("$DEST_DIR/tmp/$bioperl_file", "$DEST_DIR/tmp/");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 print " - moving files\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 $bioperl_file =~ /(bioperl.+?)\.tar\.gz/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 my $bioperl_dir = $1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 `mv -f $DEST_DIR/tmp/$bioperl_dir/Bio/* $DEST_DIR/`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 `rm -rf $DEST_DIR/tmp/$bioperl_dir`;# or die "ERROR: Failed to remove directory $DEST_DIR/$bioperl_dir\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 `rm -rf $DEST_DIR/tmp`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 # TEST
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 ######
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 print "\nTesting VEP script\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 my $test_vep = `perl variant_effect_predictor.pl --help 2>&1`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 $test_vep =~ /ENSEMBL VARIANT EFFECT PREDICTOR/ or die "ERROR: Testing VEP script failed with the following error\n$test_vep\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 print " - OK!\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 # CACHE FILES
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 #############
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 CACHE:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 print "\nThe VEP can either connect to remote or local databases, or use local cache files.\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 print "Cache files will be stored in $CACHE_DIR\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 print "Do you want to install any cache files (y/n)? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 my $ok = <>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 if($ok !~ /^y/i) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 print "Exiting\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 exit(0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 # check cache dir exists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 if(!(-e $CACHE_DIR)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 print "Cache directory $CACHE_DIR does not exists - do you want to create it (y/n)? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 my $ok = <>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 if($ok !~ /^y/i) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 print "Exiting\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 exit(0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 mkdir($CACHE_DIR) or die "ERROR: Could not create directory $CACHE_DIR\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 mkdir($CACHE_DIR.'/tmp') unless -e $CACHE_DIR.'/tmp';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 # get list of species
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 print "\nDownloading list of available cache files\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 my $num = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 my $species_list;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 my @files;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 push @files, map {$_->[0]} grep {$_->[0] =~ /tar.gz/} @{parse_dir(get($CACHE_URL))};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 # if we don't have a species list, we'll have to guess
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 if(!scalar(@files)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 print "Could not get current species list - using predefined list instead\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 @files = (
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 "bos_taurus_vep_$API_VERSION.tar.gz",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 "danio_rerio_vep_$API_VERSION.tar.gz",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 "homo_sapiens_vep_$API_VERSION.tar.gz",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 "homo_sapiens_vep_$API_VERSION\_sift_polyphen.tar.gz",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 "mus_musculus_vep_$API_VERSION.tar.gz",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 "rattus_norvegicus_vep_$API_VERSION.tar.gz",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 foreach my $file(@files) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 $species_list .= $num++." : ".$file."\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 print "The following species/files are available; which do you want (can specify multiple separated by spaces): \n$species_list\n? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 foreach my $file(split /\s+/, <>) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 my $file_path = $files[$file - 1];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 my ($species, $file_name);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 if($file_path =~ /\//) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 ($species, $file_name) = (split /\//, $file_path);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 $file_name = $file_path;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 $file_name =~ m/^(\w+?\_\w+?)\_vep/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 $species = $1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 # check if user already has this species and version
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 if(-e "$CACHE_DIR/$species/$API_VERSION") {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 print "\nWARNING: It looks like you already have the cache for $species (v$API_VERSION) installed.\nIf you continue the existing cache will be overwritten.\nAre you sure you want to continue (y/n)? ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 my $ok = <>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 if($ok !~ /^y/i) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 print " - skipping $species\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 next;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 `rm -rf $CACHE_DIR/$species/$API_VERSION`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 my $target_file = "$CACHE_DIR/tmp/$file_name";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 print " - downloading $CACHE_URL/$file_path\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 unless(getstore("$CACHE_URL/$file_path", $target_file) == 200) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 die "ERROR: Failed to fetch cache file $file_name from $CACHE_URL/$file_path - perhaps you have a proxy/firewall? Set the http_proxy ENV variable if you do\nError code: $response\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 print " - unpacking $file_name\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 unpack_tar($target_file, $CACHE_DIR.'/tmp/');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 # does species dir exist?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 if(!-e "$CACHE_DIR/$species") {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 mkdir("$CACHE_DIR/$species") or die "ERROR: Could not create directory $CACHE_DIR/$species\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 # move files
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 `mv -f $CACHE_DIR/tmp/$species/$API_VERSION $CACHE_DIR/$species/`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 # cleanup
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 `rm -rf $CACHE_DIR/tmp`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 print "\nSuccess\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 # SUBS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377 ######
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 # unpack a tarball with progress
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 sub unpack_tar {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 my ($file, $dir) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 my $count = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 open COUNT, "tar -tzvf $file 2>&1 |";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 $count++ while(<COUNT>);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 close COUNT;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 my $i = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 open EXTRACT, "tar -C $dir -xzvf $file 2>&1 |";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 progress($i++, $count) while(<EXTRACT>);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392 close EXTRACT;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 progress(1,1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 $prev_progress = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 print "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 `rm -rf $file`;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 # update or initiate progress bar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 sub progress {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 my ($i, $total) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 my $width = 60;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 my $percent = int(($i/$total) * 100);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 my $numblobs = (($i/$total) * $width) - 2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 return unless $numblobs != $prev_progress;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 $prev_progress = $numblobs;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 printf("\r% -${width}s% 1s% 10s", '['.('=' x $numblobs).($numblobs == $width - 2 ? '=' : '>'), ']', "[ " . $percent . "% ]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 sub usage {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416 my $usage =<<END;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 #---------------#
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418 # VEP INSTALLER #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 #---------------#
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 version $VERSION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423 By Will McLaren (wm2\@ebi.ac.uk)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 http://www.ensembl.org/info/docs/variation/vep/vep_script.html#installer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427 Usage:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 perl INSTALL.pl [arguments]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430 Options
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 =======
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 -h | --help Display this message and quit
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 -d | --DESTDIR Set destination directory for API install (default = './')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435 -v | --VERSION Set API version to install (default = 66)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 -c | --CACHEDIR Set destination directory for cache files (default = '$HOME/.vep/')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 END
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 print $usage;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 }