Mercurial > repos > xuebing > sharplabtool
comparison tools/human_genome_variation/ctd.pl @ 0:9071e359b9a3
Uploaded
author | xuebing |
---|---|
date | Fri, 09 Mar 2012 19:37:19 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:9071e359b9a3 |
---|---|
1 #!/usr/bin/env perl | |
2 | |
3 use strict; | |
4 use warnings; | |
5 | |
6 use LWP::UserAgent; | |
7 require HTTP::Cookies; | |
8 | |
9 ####################################################### | |
10 # ctd.pl | |
11 # Submit a batch query to CTD and fetch results into galaxy history | |
12 # usage: ctd.pl inFile idCol inputType resultType actionType outFile | |
13 ####################################################### | |
14 | |
15 if (!@ARGV or scalar @ARGV != 6) { | |
16 print "usage: ctd.pl inFile idCol inputType resultType actionType outFile\n"; | |
17 exit; | |
18 } | |
19 | |
20 my $in = shift @ARGV; | |
21 my $col = shift @ARGV; | |
22 if ($col < 1) { | |
23 print "The column number is with a 1 start\n"; | |
24 exit 1; | |
25 } | |
26 my $type = shift @ARGV; | |
27 my $resType = shift @ARGV; | |
28 my $actType = shift @ARGV; | |
29 my $out = shift @ARGV; | |
30 | |
31 my @data; | |
32 open(FH, $in) or die "Couldn't open $in, $!\n"; | |
33 while (<FH>) { | |
34 chomp; | |
35 my @f = split(/\t/); | |
36 if (scalar @f < $col) { | |
37 print "ERROR the requested column is not in the file $col\n"; | |
38 exit 1; | |
39 } | |
40 push(@data, $f[$col-1]); | |
41 } | |
42 close FH or die "Couldn't close $in, $!\n"; | |
43 | |
44 my $url = 'http://ctd.mdibl.org/tools/batchQuery.go'; | |
45 #my $url = 'http://globin.bx.psu.edu/cgi-bin/print-query'; | |
46 my $d = join("\n", @data); | |
47 #list maintains order, where hash doesn't | |
48 #order matters at ctd | |
49 #to use input file (gives error can't find file) | |
50 #my @form = ('inputType', $type, 'inputTerms', '', 'report', $resType, | |
51 #'queryFile', [$in, ''], 'queryFileColumn', $col, 'format', 'tsv', 'action', 'Submit'); | |
52 my @form = ('inputType', $type, 'inputTerms', $d, 'report', $resType, | |
53 'queryFile', '', 'format', 'tsv', 'action', 'Submit'); | |
54 if ($resType eq 'cgixns') { #only add if this type | |
55 push(@form, 'actionTypes', $actType); | |
56 } | |
57 my $ua = LWP::UserAgent->new; | |
58 $ua->cookie_jar(HTTP::Cookies->new( () )); | |
59 $ua->agent('Mozilla/5.0'); | |
60 my $page = $ua->post($url, \@form, 'Content_Type'=>'form-data'); | |
61 if ($page->is_success) { | |
62 open(FH, ">", $out) or die "Couldn't open $out, $!\n"; | |
63 print FH "#"; | |
64 print FH $page->content, "\n"; | |
65 close FH or die "Couldn't close $out, $!\n"; | |
66 }else { | |
67 print "ERROR failed to get page from CTD, ", $page->status_line, "\n"; | |
68 print $page->content, "\n"; | |
69 my $req = $page->request(); | |
70 print "Requested \n"; | |
71 foreach my $k(keys %$req) { | |
72 if ($k eq '_headers') { | |
73 my $t = $req->{$k}; | |
74 foreach my $k2 (keys %$t) { print "$k2 => $t->{$k2}\n"; } | |
75 }else { print "$k => $req->{$k}\n"; } | |
76 } | |
77 exit 1; | |
78 } | |
79 exit; | |
80 |