[Bio] / FigWebServices / RTMg.cgi Repository:
ViewVC logotype

Diff of /FigWebServices/RTMg.cgi

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

revision 1.4, Sun Jan 16 18:34:19 2011 UTC revision 1.5, Fri Sep 23 14:55:15 2011 UTC
# Line 69  Line 69 
69    
70  my $html=[''];  my $html=[''];
71  my $error=[''];  my $error=[''];
72    my $jobID = $$;
73  my $dest = $FIG_Config::temp;  my $dest = $FIG_Config::temp. "/rtmg/$jobID";
74    unless (-d $dest) {mkdir $dest, 0755}
75    
76  my $js = <<EOF;  my $js = <<EOF;
77  <script type="text/javascript">  <script type="text/javascript">
# Line 140  Line 141 
141    
142  #die Dumper($cgi);  #die Dumper($cgi);
143    
144  if ($cgi->param('submit') eq "Upload") {  if ($cgi->param('submit') eq "RTMg Lite") {
145          my $file_id = $jobfn;          my ($filename, $jsondata) = &process_data();
         my $filename=$cgi->param('uploadfile');  
         no strict;  
         my $of=$file_id;  
         $of =~ s/\s+//g;  
         $of =~ s/[^\w\.]*//g;  
         if ($filename =~ /\.gz$/) {  
                 $of .= ".gz";  
         }  
146    
147          open(OUT, ">$dest/$of") || die "Can't open $dest/$of for writing";          print $cgi->header('text/html'), start_html(-title=>'Real Time Metagenomics', -style=>'./Html/css/RTMg.css'),
148          my $bytesread; my $buffer;                html(
149          while ($bytesread=read($filename,$buffer,1024)) {print OUT $buffer}                                script({-type=>'text/javascript', -src=>'./Html/css/RTMgLite.js'}, ""),
150          close OUT;                                script({-type=>'text/javascript', -src=>'./Html/css/sorttable.js'}, ""),
151                                  script({-type=>'text/javascript', -src=>'./Html/css/json2.js'}, ""),
152    
153          strict;                                div({id=>"header"}, " &nbsp; "),
154                                  div({id=>"header"},
155                                          a({class=>"help", href=>"./Html/RTMg.html"}, "Help! What is this?"), "\n",
156                                     ),
157                                  div({id=>"title"}, ("Annotating $filename in real time")),
158    
         my $reliability = $cgi->param('reliability');  
         my $kmer = $cgi->param('kmer');  
         my $maxGap = $cgi->param('maxGap');  
159    
160          my $fa = raelib->read_fasta("$dest/$of");  
161  # we could let the user set this to increase or decrease the delay  # the FileData div contains JSON formatted data
162          my $chunks = $cgi->param('chunks') || 5000;  # but is hidden from the user
163          my $count=0;                                div({id=>"wsCalls"}, ""), "\n",p,
164          my @keys=keys %$fa;                                hidden(-id=>"FileData", -value=>$jsondata),
165          if (!scalar(@keys) || (scalar(@keys) == 1 && $keys[0] !~ /\S/)) {                                popup_menu(-name=>'setDisplay', -values=>[0, 1, 2, 3, 4, 5],
166                  &notfasta($filename);                                  -labels=>{0=>"Function", 1=>"One level of subsystems", 2=>"Two levels of subsystems",
167          }                                  3=>"Three levels of subsystems", 4=>"Top two levels of subsystems", 5=>"Top level of subsystems"},
168          while (@keys) {                                  -onChange=>"getTable(this.value)",
169                  $count++;                                  -default=>3), p,
170                  my @parts=splice(@keys, 0, $chunks);  # I took out , 4=>"OTU"
171                  open(OUT, ">$dest/$of.$count") || die "can't write to dest/$of.$count";                                iframe({name=>"TableIFrame", width=>"100%"}, "&nbsp;"), "\n",
172                  map { print OUT ">$_\n", $fa->{$_}, "\n" } @parts;                                div({id=>"percent"}, ""), "\n",
173                  close OUT;                                div({id=>"primary"}, ""), "\n",
174                                  div({id=>"secondary"}, ""), "\n",
175                                  div({id=>"saveBox"}, ""), "\n",
176                                  div({id=>"saveHits"}, ""), "\n",
177                                  div({id=>"saveJson"}, ""), "\n",
178                                  div({id=>"errors"}, ""), "\n",
179                                  div({id=>"caughtErrors"}, ""), "\n",
180    
181                                  script({-type=>'text/javascript'}, "init();"),
182                                  # this updates the kmers to use version 45, soon need to take it out
183                                  script({-type=>'text/javascript'}, "set_kmerDataset('Release45');"),
184                                  $js,
185                      ), end_html();
186            exit(0);
187          }          }
         unlink("$dest/$of");  
188    
         # the json data to be sent out  
         my $jsondata = '{"filename" : "'.$of.'", "nseqs" : "'.$count. '", "reliability" : "' . $reliability . '", "kmer" : "' . $kmer . '", "maxGap" : "' . $maxGap . '"}';  
189    
190    
191    
192    
193    
194    
195    if ($cgi->param('submit') eq "Upload") {
196            my ($filename, $jsondata) = &process_data();
197    
198          print $cgi->header('text/html'), start_html(-title=>'Real Time Metagenomics', -style=>'./Html/css/RTMg.css'),          print $cgi->header('text/html'), start_html(-title=>'Real Time Metagenomics', -style=>'./Html/css/RTMg.css'),
199                html(                html(
200                                script({-type=>'text/javascript', -src=>'./Html/css/RTMg.js'}, ""),                                script({-type=>'text/javascript', -src=>'./Html/css/RTMg.js'}, ""),
# Line 239  Line 251 
251                        div({-id=>"cacheImg"}, "<img src='$base/Html/ajax-loader.gif' alt='spinning icon'></img>"),                        div({-id=>"cacheImg"}, "<img src='$base/Html/ajax-loader.gif' alt='spinning icon'></img>"),
252                        "Please choose a fasta file.  You can probably upload a compressed file. Who knows!",p,                        "Please choose a fasta file.  You can probably upload a compressed file. Who knows!",p,
253                        filefield(-name=>"uploadfile") , p, "\n",                        filefield(-name=>"uploadfile") , p, "\n",
254                          submit(-name=>'submit', -value=>'RTMg Lite',  -onClick=>"uploadingNow(); return true;"),
255                        submit(-name=>'submit', -value=>'Upload',  -onClick=>"uploadingNow(); return true;"), reset, p,"\n",                        submit(-name=>'submit', -value=>'Upload',  -onClick=>"uploadingNow(); return true;"), reset, p,"\n",
256                        div({id=>"showadvancedSettings"}, a({href=>"#", onClick=>"showAdvancedSettings(); return true;"}, h3("Show advanced settings"))),                        div({id=>"showadvancedSettings"}, a({href=>"#", onClick=>"showAdvancedSettings(); return true;"}, h3("Show advanced settings"))),
257                        div({id=>"advancedSettings"}, a({href=>"#", onClick=>"showAdvancedSettings(); return true;"},                        div({id=>"advancedSettings"}, a({href=>"#", onClick=>"showAdvancedSettings(); return true;"},
258                          h3("Hide advanced settings")), p,                          h3("Hide advanced settings")), p,
259                          "File chunks to process : ",                          "File chunks to process : ",
260                          popup_menu(-name=>'chunks', -values=>[500, 1000, 5000], -labels=>{500=>'Lots', 1000=>'Average', 5000=>'Fewer'}, -default=>5000),                          popup_menu(-name=>'chunks', -values=>[100, 500, 1000, 5000], -labels=>{100 => 'Extreme', 500=>'Lots', 1000=>'Average', 5000=>'Fewer'}, -default=>5000),
261                          p,                          p,
262                          "Stringency: ",                          "Stringency: ",
263                          popup_menu(-name=>'reliability',  -values=>[1, 2, 3, 4], -labels=>{1=>'Least stringent', 2=>'Regular', 3=>'Stringent', 4=>'Very stringent'}, -default=>2),                          popup_menu(-name=>'reliability',  -values=>[1, 2, 3, 4], -labels=>{1=>'Least stringent', 2=>'Regular', 3=>'Stringent', 4=>'Very stringent'}, -default=>2),
# Line 296  Line 309 
309  }  }
310    
311    
312    sub process_data {
313            my $file_id = $jobfn;
314            my $filename=$cgi->param('uploadfile');
315            no strict;
316            my $of=$file_id;
317            $of =~ s/\s+//g;
318            $of =~ s/[^\w\.]*//g;
319            if ($filename =~ /\.gz$/) {
320                    $of .= ".gz";
321            }
322            if ($filename =~ /\.zip$/) {
323                    $of .= ".zip";
324            }
325    
326            open(OUT, ">$dest/$of") || die "Can't open $dest/$of for writing";
327            my $bytesread; my $buffer;
328            while ($bytesread=read($filename,$buffer,1024)) {print OUT $buffer}
329            close OUT;
330    
331            strict;
332    
333            my $reliability = $cgi->param('reliability');
334            my $kmer = $cgi->param('kmer');
335            my $maxGap = $cgi->param('maxGap');
336    
337            my $fa = raelib->read_fasta("$dest/$of");
338    # we could let the user set this to increase or decrease the delay
339            my $chunks = $cgi->param('chunks') || 100;
340            my $count=0;
341            my @keys=keys %$fa;
342            if (!scalar(@keys) || (scalar(@keys) == 1 && $keys[0] !~ /\S/)) {
343                    &notfasta($filename);
344            }
345            while (@keys) {
346                    $count++;
347                    my @parts=splice(@keys, 0, $chunks);
348                    open(OUT, ">$dest/$of.$count") || die "can't write to dest/$of.$count";
349                    map { print OUT ">$_\n", $fa->{$_}, "\n" } @parts;
350                    close OUT;
351            }
352            #unlink("$dest/$of");
353    
354            # the json data to be sent out
355            my $jsondata = '{"filename" : "'.$of.'", "nseqs" : "'.$count. '", "reliability" : "' . $reliability . '", "kmer" : "' . $kmer . '", "maxGap" : "' . $maxGap . '", "jobID" : "' . $jobID . '"}';
356            return ($filename, $jsondata);
357    }
358    
359    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3