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

Diff of /FigKernelPackages/FFserver.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6, Tue May 12 20:17:55 2009 UTC revision 1.13, Thu Jun 4 21:23:01 2009 UTC
# Line 18  Line 18 
18          server_url => $server_url,          server_url => $server_url,
19          ua => LWP::UserAgent->new(),          ua => LWP::UserAgent->new(),
20      };      };
21        $self->{ua}->timeout(10 * 60);
22    
23      return bless $self, $class;      return bless $self, $class;
24  }  }
# Line 34  Line 35 
35      return $self->run_query('families_containing_peg', @ids);      return $self->run_query('families_containing_peg', @ids);
36  }  }
37    
38    sub function_of
39    {
40        my($self, @ids) = @_;
41        return $self->run_query('function_of', @ids);
42    }
43    
44    sub org_of
45    {
46        my($self, @ids) = @_;
47        return $self->run_query('org_of', @ids);
48    }
49    
50    sub seq_of
51    {
52        my($self, @ids) = @_;
53        return $self->run_query('seq_of', @ids);
54    }
55    
56    sub aliases_of
57    {
58        my($self, @ids) = @_;
59        return $self->run_query('aliases_of', @ids);
60    }
61    
62    sub families_implementing_role
63    {
64        my($self,@roles) = @_;
65        return $self->run_query('families_implementing_role', @roles);
66    }
67    
68    sub families_with_function
69    {
70        my($self,@functions) = @_;
71        return $self->run_query('families_with_function', @functions);
72    }
73    
74    sub families_in_genome
75    {
76        my($self,@genomes) = @_;
77        return $self->run_query('families_in_genome', @genomes);
78    }
79    
80    sub get_subsystem_based_figfams
81    {
82        my ($self) = @_;
83        return $self->run_query('get_subsystem_based_figfams');
84    }
85    
86  sub should_be_member  sub should_be_member
87  {  {
88      my($self, @id_seq_pairs) = @_;      my($self, @id_seq_pairs) = @_;
# Line 63  Line 112 
112    
113      if ($res->is_success)      if ($res->is_success)
114      {      {
115          return Load($res->content);          my $content = $res->content;
116    #       print "Got $content\n";
117            my $ret;
118            eval {
119                $ret = Load($content);
120            };
121            if ($@)
122            {
123                die "Query returned unparsable content ($@): " . $content;
124            }
125            return $ret;
126      }      }
127      else      else
128      {      {
129          die "error on post " . $res->content;          die "error on post " . $res->status_line . " " . $res->content;
130      }      }
131  }  }
132    
133  sub assign_function_to_prot  sub assign_function_to_prot
134  {  {
135      my($self, $input) = @_;      my($self, $input, $blast, $min_hits) = @_;
136    
137      my $wq;      my $wq;
138    
139        my $params = [blast => $blast, min_hits => $min_hits];
140    
141      if (ref($input) eq 'ARRAY')      if (ref($input) eq 'ARRAY')
142      {      {
143          $wq = SequenceListWorkQueue->new($input);          $wq = SequenceListWorkQueue->new($input);
# Line 86  Line 147 
147          $wq = FastaWorkQueue->new($input);          $wq = FastaWorkQueue->new($input);
148      }      }
149    
150      return ResultHandler->new($wq, $self->{server_url}, 'assign_function_to_prot', \&id_seq_pair_bundler, \&tab_delimited_output_parser);      my $req_bytes = $blast ? 1000 : 16000;
151    
152        return ResultHandler->new($wq, $self->{server_url}, 'assign_function_to_prot', \&id_seq_pair_bundler,
153                                  #\&tab_delimited_output_parser,
154                                  \&YAML::Load,
155                                  $params, $req_bytes);
156  }  }
157    
158  sub assign_functions_to_dna  sub assign_functions_to_dna
159  {  {
160      my($self, $input, $min_hits, $max_gap) = @_;      my($self, $input, $min_hits, $max_gap, $blast) = @_;
161    
162        $min_hits = 3 unless defined($min_hits);
163        $max_gap = 600 unless defined($max_gap);
164        $blast = 0 unless defined($blast);
165    
166      my $wq;      my $wq;
167    
# Line 104  Line 174 
174          $wq = FastaWorkQueue->new($input);          $wq = FastaWorkQueue->new($input);
175      }      }
176    
177      return ResultHandler->new($wq, $self->{server_url}, 'assign_functions_to_DNA', \&id_seq_pair_bundler, \&tab_delimited_output_parser, [min_hits => $min_hits, max_gap => $max_gap]);      my $req_bytes = $blast ? 1000 : 500000;
178        my $params = [min_hits => $min_hits, max_gap => $max_gap, blast => $blast];
179        return ResultHandler->new($wq, $self->{server_url}, 'assign_functions_to_DNA',
180                                  \&id_seq_pair_bundler,
181                                  \&tab_delimited_output_parser, $params, $req_bytes);
182  }  }
183    
184  sub id_seq_pair_bundler  sub id_seq_pair_bundler
# Line 138  Line 212 
212    
213  sub new  sub new
214  {  {
215      my($class, $work_queue, $server_url, $function, $input_bundler, $output_parser, $form_vars) = @_;      my($class, $work_queue, $server_url, $function, $input_bundler, $output_parser, $form_vars, $req_bytes) = @_;
216    
217      my $self = {      my $self = {
218          work_queue => $work_queue,          work_queue => $work_queue,
# Line 149  Line 223 
223          ua => LWP::UserAgent->new(),          ua => LWP::UserAgent->new(),
224          cur_result => undef,          cur_result => undef,
225          form_vars => $form_vars ? $form_vars : [],          form_vars => $form_vars ? $form_vars : [],
226            req_bytes => ($req_bytes ? $req_bytes : 16000),
227      };      };
228      return bless $self, $class;      return bless $self, $class;
229  }  }
# Line 157  Line 232 
232  {  {
233      my($self) = @_;      my($self) = @_;
234    
235      if ($self->{cur_result})      my $res =  $self->get_next_from_result();
236        # print "gnfr returns: " , Dumper($res);
237    
238        if ($res)
239      {      {
240          return $self->get_next_from_result();          return $res;
241      }      }
242      else      else
243      {      {
244          my @inp = $self->{work_queue}->get_next_n_bytes(16000);  
245          if (@inp)          while (my @inp = $self->{work_queue}->get_next_n_bytes($self->{req_bytes}))
246          {          {
247              my $form = [@{$self->{form_vars}}];              my $form = [@{$self->{form_vars}}];
248              push(@$form, function => $self->{function},              push(@$form, function => $self->{function},
249                           map { &{$self->{input_bundler}}($_) } @inp);                           map { &{$self->{input_bundler}}($_) } @inp);
250              print "Invoke " .Dumper($form);              # print "Invoke " .Dumper($form);
251    
252              my $res = $self->{ua}->post($self->{server_url}, $form);              my $res = $self->{ua}->post($self->{server_url}, $form);
253              if ($res->is_success)              if ($res->is_success)
254              {              {
255                  $self->{cur_result} = $res->content;                  eval {
256                  #print "res: $self->{cur_result}\n";                      $self->{cur_result} = [YAML::Load($res->content)];
257                  return $self->get_next_from_result();                  };
258                    if ($@)
259                    {
260                        die "Query returned unparsable content ($@): " . $res->content;
261              }              }
262              else                  # print "res: " . Dumper($self->{cur_result});
263                    my $oneres =  $self->get_next_from_result();
264                    if ($oneres)
265              {              {
266                  die "error " . $res->status_line . " on post " . $res->content;                      return $oneres;
267              }              }
268          }          }
269          else          else
270          {          {
271              return;                  die "error " . $res->status_line . " on post " . $res->content;
272                }
273          }          }
274            return;
275      }      }
276  }  }
277    
278  sub get_next_from_result  sub get_next_from_result
279  {  {
280      my($self) = @_;      my($self) = @_;
281      if ($self->{cur_result} =~ s/^([^\n]*)\n//)      my $l = $self->{cur_result};
282        if ($l and @$l)
283        {
284            return shift(@$l);
285        }
286        else
287      {      {
288          return &{$self->{output_parser}}($1);          delete $self->{cur_result};
289            return undef;
290      }      }
291  }  }
292    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.13

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3