[Bio] / FigKernelPackages / FFserver.pm Repository:
ViewVC logotype

Annotation of /FigKernelPackages/FFserver.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1
2 :     package FFserver;
3 :    
4 :     use LWP::UserAgent;
5 :     use FIG_Config;
6 :     use Data::Dumper;
7 :    
8 :     use strict;
9 :    
10 :     sub new
11 :     {
12 :     my($class, $server_url) = @_;
13 :    
14 :     $server_url = $FIG_Config::FFserver_url unless $server_url;
15 :     $server_url = "http://bio-macpro-1.mcs.anl.gov/~disz/FIG/figfam_server.cgi" unless $server_url;
16 :    
17 :    
18 :     my $self = {
19 :     server_url => $server_url,
20 :     ua => LWP::UserAgent->new(),
21 :     };
22 :    
23 :     return bless $self, $class;
24 :     }
25 :    
26 :     sub assign_function_to_prot
27 :     {
28 :     my($self, $input) = @_;
29 :    
30 :     my $handle;
31 :     if (ref($input) eq 'ARRAY')
32 :     {
33 :     $handle = ListInputHandle->new($input, sub { $self->assign_function_to_prot_one(@_); });
34 :     }
35 :     elsif (ref($input))
36 :     {
37 :     $handle = FileInputHandle->new($input, sub { $self->assign_function_to_prot_one(@_); });
38 :     }
39 :     else
40 :     {
41 :     $handle = FileInputHandle->new($input, sub { $self->assign_function_to_prot_one(@_); });
42 :     }
43 :     }
44 :    
45 :     sub assign_function_to_prot_one
46 :     {
47 :     my($self, $dat) = @_;
48 :    
49 :     my($id, undef, $seq) = @$dat;
50 :    
51 :     my $form = [function => 'assign_function_to_prot',
52 :     id_seq => "$id,$seq"];
53 :    
54 :     print Dumper($self->{server_url}, $form);
55 :    
56 :     my $res = $self->{ua}->post($self->{server_url}, $form);
57 :     if ($res->is_success)
58 :     {
59 :     my $txt = $res->content;
60 :     return $txt;
61 :     }
62 :     else
63 :     {
64 :     die "error on post " . $res->content;
65 :     }
66 :    
67 :     }
68 :    
69 :     package ListInputHandle;
70 :     use strict;
71 :    
72 :     sub new
73 :     {
74 :     my($class, $list, $handler) = @_;
75 :     my $self = {
76 :     list => $list,
77 :     handler => $handler,
78 :     };
79 :     return bless $self, $class;
80 :     }
81 :    
82 :     sub get_next
83 :     {
84 :     my($self) = @_;
85 :    
86 :     my $l = $self->{list};
87 :    
88 :     if (@$l)
89 :     {
90 :     my $ent = shift @$l;
91 :     my $res = &{$self->{handler}}($ent);
92 :     my($id, $val) = split(/\t/, $res);
93 :     chomp $val;
94 :     return $val;
95 :     }
96 :     else
97 :     {
98 :     return undef;
99 :     }
100 :     }
101 :    
102 :     package FileInputHandle;
103 :     use strict;
104 :     use FileHandle;
105 :     use FIG;
106 :    
107 :     sub new
108 :     {
109 :     my($class, $input, $handler) = @_;
110 :    
111 :     my $fh;
112 :     if (ref($input))
113 :     {
114 :     $fh = $input;
115 :     }
116 :     else
117 :     {
118 :     $fh = new FileHandle("<$input");
119 :     }
120 :    
121 :     my $self = {
122 :     fh => $fh,
123 :     handler => $handler,
124 :     };
125 :     return bless $self, $class;
126 :     }
127 :    
128 :     sub get_next
129 :     {
130 :     my($self) = @_;
131 :    
132 :     my($id, $seqp) = &FIG::read_fasta_record($self->{fh});
133 :    
134 :     if ($id)
135 :     {
136 :     my $ent = [$id, undef, $$seqp];
137 :     my $res = &{$self->{handler}}($ent);
138 :     my($id, $val) = split(/\t/, $res);
139 :     chomp $val;
140 :     return $val;
141 :     }
142 :     else
143 :     {
144 :     close($self->{fh});
145 :     return undef;
146 :     }
147 :     }
148 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3