[2] | 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; |
---|