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

Diff of /FigWebServices/index.cgi

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

revision 1.29, Sun Apr 11 20:22:18 2004 UTC revision 1.30, Fri Apr 23 21:49:03 2004 UTC
# Line 40  Line 40 
40          "To start a new peer-to-peer update, <a href=$new_p2p_url>click here</a><br>\n"          "To start a new peer-to-peer update, <a href=$new_p2p_url>click here</a><br>\n"
41       );       );
42    
43    my($pattern,$seq_pat,$tool,$ids);
 my($pattern,$seq_pat,$tool);  
44  my $user = $cgi->param('user');  my $user = $cgi->param('user');
45  if (! $user) { $user = "" }  if (! $user) { $user = "" }
46    
# Line 108  Line 107 
107  #  Search for Matches (sequence or pattern)  #  Search for Matches (sequence or pattern)
108  #-----------------------------------------------------------------------  #-----------------------------------------------------------------------
109  elsif (($seq_pat = $cgi->param('seq_pat')) &&  elsif (($seq_pat = $cgi->param('seq_pat')) &&
        (@orgs = $cgi->param('korgs')) &&  
110         ($tool = $cgi->param('Tool')) &&         ($tool = $cgi->param('Tool')) &&
111         $cgi->param('Search for Matches'))         $cgi->param('Search for Matches'))
112  {  {
113        @orgs = $cgi->param('korgs');
114        if (@orgs > 0)
115        {
116      @orgs = map { $_ =~ /\((\d+\.\d+)\)/; $1 } @orgs;      @orgs = map { $_ =~ /\((\d+\.\d+)\)/; $1 } @orgs;
117        }
118        else
119        {
120            @orgs = ("");
121        }
122    
123      if ($tool =~ /blast/)      if ($tool =~ /blast/)
124      {      {
125          unshift @$html, "<TITLE>The SEED: BLAST Search Results</TITLE>\n";          unshift @$html, "<TITLE>The SEED: BLAST Search Results</TITLE>\n";
# Line 139  Line 146 
146  {  {
147      &translate_assignments($fig,$cgi,$html,$from_func,$to_func);      &translate_assignments($fig,$cgi,$html,$from_func,$to_func);
148  }  }
149    elsif ($cgi->param('Extract Matched Sequences') && ($ids = $cgi->param('ids')))
150    {
151        my @ids = split(/,/,$ids);
152        my($list_to,$i);
153        if ($list_to = $cgi->param('list_to'))
154        {
155            for ($i=0; ($i < @ids) && ($ids[$i] ne $list_to); $i++) {}
156            if ($i < @ids)
157            {
158                $#ids = $i;
159            }
160        }
161    
162        my($id,$seq,$i,$func);
163        push(@$html,$cgi->pre);
164    
165        foreach $id (@ids)
166        {
167            if ($seq = $fig->get_translation($id))
168            {
169                $func = $fig->function_of($id);
170                push(@$html,">$id $func\n");
171                for ($i=0; ($i < length($seq)); $i += 60)
172                {
173                    if ($i > (length($seq) - 60))
174                    {
175                        push(@$html,substr($seq,$i) . "\n");
176                    }
177                    else
178                    {
179                        push(@$html,substr($seq,$i,60) . "\n");
180                    }
181                }
182            }
183        }
184        push(@$html,$cgi->end_pre);
185    }
186    
187  #-----------------------------------------------------------------------  #-----------------------------------------------------------------------
188  #  Initial search page  #  Initial search page
# Line 217  Line 261 
261                  "    </TR>\n",                  "    </TR>\n",
262                  "    <TR>\n",                  "    <TR>\n",
263                  "        <TD>Search Program: </TD>",                  "        <TD>Search Program: </TD>",
264                  "        <TD>", $cgi->popup_menu(-name => 'Tool', -values => ['blastp','blastx','blastn','tblastn','Protein scan_for_matches','DNA scan_for_matches'], -default => 'blastp'), "</TD>",                  "        <TD>", $cgi->popup_menu(-name => 'Tool', -values => ['blastp','blastx','blastn','tblastn','blastp against complete genomes','Protein scan_for_matches','DNA scan_for_matches'], -default => 'blastp'), "</TD>",
265                  "    </TR>\n",                  "    </TR>\n",
266                  "</TABLE>\n",                  "</TABLE>\n",
267                  $cgi->submit('Search for Matches'),                  $cgi->submit('Search for Matches'),
# Line 615  Line 659 
659          &verify_db($db,"n");                               ### fix to get all contigs          &verify_db($db,"n");                               ### fix to get all contigs
660          @out = `$blastall -i $tmp_seq -d $db -p tblastn`;          @out = `$blastall -i $tmp_seq -d $db -p tblastn`;
661      }      }
662        elsif ($tool eq 'blastp against complete genomes')     ### this tool gets nonstandard treatment: RAO
663        {
664            &blast_complete($fig,$cgi,$html,$tmp_seq,$blastall);
665            unlink($tmp_seq);
666            return;
667        }
668      if (@out < 1)          #  This is really a bigger problem than no hits (GJO)      if (@out < 1)          #  This is really a bigger problem than no hits (GJO)
669      {      {
670          push(@$html,$cgi->h1("Sorry, no hits"));          push(@$html,$cgi->h1("Sorry, no hits"));
# Line 629  Line 678 
678      unlink($tmp_seq);      unlink($tmp_seq);
679  }  }
680    
681    sub blast_complete {
682        my($fig,$cgi,$html,$seq_file,$blastall) = @_;
683        my($genome,@sims);
684    
685        @sims = ();
686        foreach $genome ($fig->genomes("complete"))
687        {
688            my $db = "$FIG_Config::organisms/$genome/Features/peg/fasta";
689            next if (! -s $db);
690    
691            &verify_db($db,"p");
692            my $sim;
693            push(@sims,map { chop;
694                            $sim = [split(/\t/,$_)];
695                            $sim->[10] = ($sim->[10] =~ /^e-/) ? "1.0" . $sim->[10] : $sim->[10];
696                            $sim }
697                      `$blastall -i $seq_file -d $db -m 8 -FF -e 1.0e-5 -p blastp`);
698        }
699        @sims = sort { $a->[10] <=> $b->[10] } @sims;
700        &format_sims($fig,$cgi,$html,\@sims);
701    }
702    
703    sub format_sims {
704        my($fig,$cgi,$html,$sims) = @_;
705        my($col_hdrs,$table,@ids,$ids,$sim,%seen);
706    
707        $col_hdrs = [ "Select up to here",
708                      "Similar sequence",
709                      "E-val",
710                      "Function",
711                      "Organism",
712                      "Aliases"
713                    ];
714    
715        $table = [];
716        @ids = ();
717        if (@$sims > 1000) { $#{$sims} = 999 }
718        foreach $sim (@$sims)
719        {
720            if (! $seen{$sim->[1]})
721            {
722                push(@$table,[$cgi->checkbox(-name => 'list_to', -value => $sim->[1], -override => 1, -checked => 0, -label => ""),
723                              &HTML::fid_link($cgi,$sim->[1]),
724                              $sim->[10],
725                              scalar $fig->function_of($sim->[1]),
726                              $fig->genus_species(&FIG::genome_of($sim->[1])),
727                              scalar $fig->feature_aliases($sim->[1])
728                              ]);
729                push(@ids,$sim->[1]);
730            }
731        }
732        $ids = join(",",@ids);
733        my $target = "window$$";
734        push(@$html, $cgi->start_form( -method => 'post',
735                                        -target => $target,
736                                        -action => 'index.cgi'
737                                      ),
738                     $cgi->hidden(-name => 'ids', -value => $ids),
739                     &HTML::make_table($col_hdrs,$table,"Best Hits"),
740                     $cgi->submit('Extract Matched Sequences'),
741             $cgi->end_form);
742    }
743    
744  sub verify_db {  sub verify_db {
745      my($db,$type) = @_;      my($db,$type) = @_;

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3