[Bio] / FigKernelScripts / to_prodom.pl Repository:
ViewVC logotype

Annotation of /FigKernelScripts/to_prodom.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : hwang 1.1 #!/usr/bin/perl -w
2 :     use strict;
3 :     use CGI qw(:standard);
4 :     use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
5 :     use Data::Dumper;
6 :     use LWP;
7 :     use HTTP::Request::Common;
8 :     use FIG;
9 :     use HTML;
10 :    
11 :     my $fig = new FIG;
12 :     my $user_agent = LWP::UserAgent->new;
13 :    
14 :     if (@ARGV < 1) {
15 :     die "A PegID was not provided. usage: to_prodom.pl PegID";
16 :     }
17 :    
18 :     print header;
19 :     my $peg = $ARGV[0];
20 :    
21 :     $peg =~ s/peg\=//g;
22 :     $peg =~ s/\%7C/\|/g;
23 :     my $seq = $fig->get_translation($peg);
24 :     my @aliases=$fig->feature_aliases($peg);
25 :    
26 :     my @sp_ids = grep {/.*sp.*/} @aliases;
27 :     my @tr_ids = grep {/.*tr.*/} @aliases;
28 :     my @uni_ids = grep {/.*uni.*/} @aliases;
29 :    
30 :     # Putting the ids in an array.
31 :     # Allow the program to process each one till there is a ProDom webpage
32 :     # Order of importance is sp, tr, uni
33 :    
34 :     my @all_ids;
35 :    
36 :     &add_to_array (\@uni_ids);
37 :     &add_to_array (\@tr_ids);
38 :     &add_to_array (\@sp_ids);
39 :    
40 :     foreach (@all_ids) {
41 :     &to_prodom_by_id($_);
42 :     }
43 :    
44 :    
45 :     # If made it this far, use sequence to get the Prodom website
46 :     &to_prodom_by_seq;
47 :    
48 :     ###############
49 :     # Subroutines
50 :     ###############
51 :    
52 :    
53 :     sub add_to_array {
54 :     my ($x) = @_;
55 :     for (my $i=0; $i <@$x; $i++){
56 :     push @all_ids, $x->[$i];
57 :     }
58 :     }
59 :    
60 :    
61 :     sub to_prodom_by_id {
62 :    
63 :     my $id = $_;
64 :    
65 :     if ( $id ne "") {
66 :     # Remove all the identifier before |
67 :    
68 :     my $url_id = $id;
69 :     $url_id =~ s/sp\|//g;
70 :     $url_id =~ s/uni\|//g;
71 :     $url_id =~ s/tr\|//g;
72 :    
73 :     my $url = "http://protein.toulouse.inra.fr/prodom/current/cgi-bin/request.pl?question=SPTR&query=$url_id&bool_operator=OR";
74 :    
75 :    
76 :     # Pre-Check to see if there's no entry in ProDom. If there are no entry for the specified id,
77 :     # then it will go to the next id;
78 :    
79 :     my $response = $user_agent->get( $url );
80 :     die "Can't get $url -- ", $response->status_line
81 :     unless $response->is_success;
82 :    
83 :     if(! ($response->content =~ m/Sorry/i) ) {
84 :     my $result = $response->content;
85 :     # Replace relative paths with absolute paths
86 :     $result =~ s/\.\./http:\/\/prodes\.toulouse\.inra\.fr\/prodom\/current\//g;
87 :     print $result;
88 :     exit;
89 :     }
90 :     }
91 :     }
92 :    
93 :     sub to_prodom_by_seq {
94 :    
95 :     my $url = "http://protein.toulouse.inra.fr/prodom/current/cgi-bin/ProDomBlast3.pl";
96 :     my $request = POST( $url,
97 :     Content_Type => 'form-data',
98 :     Content => [ 'matrice' => 'BLOSUM62',
99 :     'program' => 'ncbi-blastp',
100 :     'typebd' => 'multiple alignments',
101 :     'expect' => '.01',
102 :     'filtre' => 'seq',
103 :     'nom_seq' => '',
104 :     'sequence' => $seq,
105 :     ]
106 :     );
107 :    
108 :    
109 :     my $response = $user_agent->request($request);
110 :     my $result = $response->content;
111 :     # Replace relative paths with absolute paths
112 :     $result =~ s/\.\./http:\/\/prodes\.toulouse\.inra\.fr\/prodom\/current\//g;
113 :     print $result;
114 :    
115 :     }
116 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3