0
|
1 #!/usr/bin/env perl
|
|
2
|
|
3 use strict;
|
|
4 use warnings;
|
|
5
|
|
6 ###################################################
|
|
7 # linkToGProfile.pl
|
|
8 # Generates a link to gprofile for a list of gene IDs.
|
|
9 # g:Profiler a web-based toolset for functional profiling of gene lists from large-scale experiments (2007) NAR 35 W193-W200
|
|
10 ###################################################
|
|
11
|
|
12 if (!@ARGV or scalar @ARGV != 4) {
|
|
13 print "usage: linkToGProfile.pl infile.tab 1basedCol idType outfile\n";
|
|
14 exit 1;
|
|
15 }
|
|
16
|
|
17 my $in = shift @ARGV;
|
|
18 my $col = shift @ARGV;
|
|
19 my $type = shift @ARGV;
|
|
20 my $out = shift @ARGV;
|
|
21
|
|
22 if ($col < 1) {
|
|
23 print "ERROR the column number should be 1 based counting\n";
|
|
24 exit 1;
|
|
25 }
|
|
26 my @gene;
|
|
27 open(FH, $in) or die "Couldn't open $in, $!\n";
|
|
28 while (<FH>) {
|
|
29 chomp;
|
|
30 my @f = split(/\t/);
|
|
31 if (scalar @f < $col) {
|
|
32 print "ERROR there is no column $col in $in\n";
|
|
33 exit 1;
|
|
34 }
|
|
35 if ($f[$col-1]) { push(@gene, $f[$col-1]); }
|
|
36 }
|
|
37 close FH or die "Couldn't close $in, $!\n";
|
|
38
|
|
39 my $link = 'http://biit.cs.ut.ee/gprofiler/index.cgi?organism=hsapiens&query=GENELIST&r_chr=1&r_start=start&r_end=end&analytical=1&domain_size_type=annotated&term=&significant=1&sort_by_structure=1&user_thr=1.00&output=png&prefix=TYPE';
|
|
40 $link =~ s/TYPE/$type/;
|
|
41 my $g = join("+", @gene);
|
|
42 $link =~ s/GENELIST/$g/;
|
|
43 #print output
|
|
44 if (length $link > 2048) {
|
|
45 print "ERROR too many genes to fit in URL, please select a smaller set\n";
|
|
46 exit;
|
|
47 }
|
|
48 open(FH, ">", $out) or die "Couldn't open $out, $!\n";
|
|
49 print FH "<html><head><title>g:Profiler link</title></head><body>\n",
|
|
50 '<A TARGET=_BLANK HREF="', $link, '">click here to send list of identifiers to g:Profiler</A>', "\n",
|
|
51 '</body></html>', "\n";
|
|
52 close FH or die "Couldn't close $out, $!\n";
|
|
53
|
|
54 #also do link that prints text that could be pulled back into Galaxy?
|
|
55 exit;
|