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

Diff of /FigWebServices/protein.cgi

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

revision 1.67, Mon Jan 24 21:02:41 2005 UTC revision 1.68, Tue Jan 25 03:00:30 2005 UTC
# Line 125  Line 125 
125          else {          else {
126              $html = &show_html_followed_by_initial($fig_or_sprout,$cgi,$html,$prot);              $html = &show_html_followed_by_initial($fig_or_sprout,$cgi,$html,$prot);
127          }          }
128    
129            if ($cgi->param('SPROUT') && (ref($html) eq "ARRAY"))
130            {
131                $_ = {};
132                $_->{kv_pairs} = $html;
133                $html = $_;
134            }
135  #};  #};
136    
137  #if (!$compute_ok) {  #if (!$compute_ok) {
138  #    Trace($@);  #    Trace($@);
139  #}  #}
140    
141  &display_page($fig_or_sprout,$cgi,$html);  &display_page($fig_or_sprout,$cgi,$html);
142  exit;  exit;
143    
# Line 183  Line 191 
191          if ($user =~ /master:(.*)/) {          if ($user =~ /master:(.*)/) {
192                  $userR = $1;                  $userR = $1;
193                  &assign_function($fig_or_sprout,$prot,"master",$function,"");                  &assign_function($fig_or_sprout,$prot,"master",$function,"");
194                  &add_annotation($fig_or_sprout,$prot,$userR,"Set master function to\n$function\n");                  &add_annotation($fig_or_sprout,$cgi,$prot,$userR,"Set master function to\n$function\n");
195          } else {          } else {
196                      &assign_function($fig_or_sprout,$prot,$user,$function,"");                      &assign_function($fig_or_sprout,$prot,$user,$function,"");
197                      &add_annotation($fig_or_sprout,$prot,$user,"Set function to\n$function\n");              &add_annotation($fig_or_sprout,$cgi,$prot,$user,"Set function to\n$function\n");
198                  }                  }
199      }      }
200      $cgi->delete("request");      $cgi->delete("request");
# Line 204  Line 212 
212    
213      unshift @$html, "<TITLE>The SEED: Protein Annotations</TITLE>\n";      unshift @$html, "<TITLE>The SEED: Protein Annotations</TITLE>\n";
214      my $col_hdrs = ["who","when","annotation"];      my $col_hdrs = ["who","when","annotation"];
215      my $tab = [ map { [$_->[2],$_->[1],"<pre>" . $_->[3] . "<\/pre>"] } &feature_annotations($fig_or_sprout,$prot) ];      my $tab = [ map { [$_->[2],$_->[1],"<pre>" . $_->[3] . "<\/pre>"] } &feature_annotations($fig_or_sprout,$cgi,$prot) ];
216      if (@$tab > 0) {      if (@$tab > 0) {
217                  push(@$html,&HTML::make_table($col_hdrs,$tab,"Annotations for $prot"));                  push(@$html,&HTML::make_table($col_hdrs,$tab,"Annotations for $prot"));
218      } else {      } else {
# Line 219  Line 227 
227      unshift @$html, "<TITLE>The SEED: Protein Annotations</TITLE>\n";      unshift @$html, "<TITLE>The SEED: Protein Annotations</TITLE>\n";
228      if (&is_real_feature($fig_or_sprout,$peg)) {      if (&is_real_feature($fig_or_sprout,$peg)) {
229                  my $col_hdrs = ["who","when","PEG","genome","annotation"];                  my $col_hdrs = ["who","when","PEG","genome","annotation"];
230                  my @related  = &related_by_func_sim($fig_or_sprout,$peg,$cgi->param('user'));                  my @related  = &related_by_func_sim($fig_or_sprout,$cgi,$peg,$cgi->param('user'));
231                  push(@related,$peg);                  push(@related,$peg);
232    
233                  my @annotations = &merged_related_annotations($fig_or_sprout,\@related);                  my @annotations = &merged_related_annotations($fig_or_sprout,\@related);
# Line 343  Line 351 
351          Trace("Print context returned: beg=$beg, end=$end, genes = " . join(", ", @{$genes})) if T(3);          Trace("Print context returned: beg=$beg, end=$end, genes = " . join(", ", @{$genes})) if T(3);
352          &print_graphics_context($beg,$end,$genes,$html->{context_graphic});          &print_graphics_context($beg,$end,$genes,$html->{context_graphic});
353    
354          &print_assignments($fig_or_sprout,$cgi,$html->{assgn_for_equiv_prots},$peg);          &print_assignments($fig_or_sprout,$cgi,$html->{assign_for_equiv_prots},$peg);
355          &print_kv_pairs($fig_or_sprout,$cgi,$html->{kv_pairs},$peg);          &print_kv_pairs($fig_or_sprout,$cgi,$html->{kv_pairs},$peg);
356          &print_subsys_connections($fig_or_sprout,$cgi,$html->{subsys_connections},$peg,$user);          &print_subsys_connections($fig_or_sprout,$cgi,$html->{subsys_connections},$peg,$user);
357          &print_links($fig_or_sprout,$cgi,$html->{links},$peg);          &print_links($fig_or_sprout,$cgi,$html->{links},$peg);
# Line 418  Line 426 
426    
427      if (wantarray()) {      if (wantarray()) {
428          my $x;          my $x;
429          my @funcs = &function_ofL($fig_or_sprout,$peg);          my @funcs = &function_ofL($fig_or_sprout,$peg,$user);
430    
431          if ($cgi->param('translate')) {          if ($cgi->param('translate')) {
432              @funcs = map { $x = $_; $x->[1] = &translate_function($fig_or_sprout,$x->[1]); $x } @funcs;              @funcs = map { $x = $_; $x->[1] = &translate_function($fig_or_sprout,$x->[1]); $x } @funcs;
433          }          }
# Line 535  Line 544 
544      my($who,$func,$ec,@ecs,@tmp,$id,$i,$master_func,$user_func,$x);      my($who,$func,$ec,@ecs,@tmp,$id,$i,$master_func,$user_func,$x);
545    
546      my $user = $cgi->param('user');      my $user = $cgi->param('user');
547      my @funcs    = map { [$peg,@$_] } &trans_function_of($cgi,$fig_or_sprout,$peg);      $user = defined($user) ? $user : "";
548    
549      for ($i=0; ($i < @funcs) && ($funcs[$i]->[1] ne "master"); $i++) {}      my @funcs    = map { [$peg,@$_] } &trans_function_of($cgi,$fig_or_sprout,$peg);
550      if ($i < @funcs) {      $user_func   = &trans_function_of($cgi,$fig_or_sprout,$peg);
         $master_func = $funcs[$i]->[2];  
     } else {  
         $master_func = "";  
     }  
551    
     for ($i=0; ($i < @funcs) && ($funcs[$i]->[1] ne $user); $i++) {}  
     if ($i < @funcs) {  
         $user_func = $funcs[$i]->[2];  
     } else {  
         $user_func = $master_func;  
     }  
552      push(@$html,$cgi->h2("Current Assignment: $peg: $user_func"));      push(@$html,$cgi->h2("Current Assignment: $peg: $user_func"));
553      my @maps_to  = grep { $_ ne $peg } map { $_->[0] } &mapped_prot_ids($fig_or_sprout,$peg);  
554      @funcs = ();  
555        my @maps_to  = grep { $_ ne $peg } map { $_->[0] } &mapped_prot_ids($fig_or_sprout,$cgi,$peg);
556    
557      foreach $id (@maps_to) {      foreach $id (@maps_to) {
558          if (($id ne $peg) && (@tmp = &trans_function_of($cgi,$fig_or_sprout,$id)) && (@tmp > 0)) {          my $tmp;
559              push(@funcs, map { $x = $_; [$id,@$_] } @tmp);          if (($id ne $peg) && ($tmp = &trans_function_of($cgi,$fig_or_sprout,$id)))
560            {
561                push(@funcs, [$id,&who($id),$tmp]);
562          }          }
563      }      }
564      @funcs = map { ($_->[1] eq "master") ? [$_->[0],"",$_->[2]] : $_ } @funcs;      @funcs = map { ($_->[1] eq "master") ? [$_->[0],"",$_->[2]] : $_ } @funcs;
565    
566    
567      push(@$html,"<hr>\n");      push(@$html,"<hr>\n");
568    
569      if ((@funcs == 0) && (! $user_func)) {      if ((@funcs == 0) && (! $user_func)) {
570          push(@$html,$cgi->h1("No function has been assigned"));          push(@$html,$cgi->h1("No function has been assigned"));
571      }      }
572    
573      my $tab = [ map { ($id,$who,$func) = @$_; [ &HTML::set_prot_links($cgi,$id),&org_of($fig_or_sprout,$id),$who,($user ? &assign_link($cgi,$func,$user_func) : ""), &set_map_links($fig_or_sprout,&genome_of($peg),$func)] } @funcs ];      my $tab = [ map { ($id,$who,$func) = @$_;
574                          [ &HTML::set_prot_links($cgi,$id),
575                            &org_of($fig_or_sprout,$id),
576                            $who,
577                            ($user ? &assign_link($cgi,$func,$user_func) : ""),
578                            &set_map_links($fig_or_sprout,&genome_of($peg),$func)] } @funcs ];
579      if (@$tab > 0) {      if (@$tab > 0) {
580          my $col_hdrs = ["Id","Organism","Who","ASSIGN","Assignment"];          my $col_hdrs = ["Id","Organism","Who","ASSIGN","Assignment"];
581          my $title    = "Assignments for Essentially Identical Proteins";          my $title    = "Assignments for Essentially Identical Proteins";
# Line 587  Line 597 
597      }      }
598  }  }
599    
600    sub who {
601        my($id) = @_;
602    
603        if ($id =~ /^fig\|/)           { return "FIG" }
604        if ($id =~ /^gi\|/)            { return "" }
605        if ($id =~ /^^[NXYZA]P_/)      { return "RefSeq" }
606        if ($id =~ /^sp\|/)            { return "SwissProt" }
607        if ($id =~ /^uni\|/)           { return "UniProt" }
608        if ($id =~ /^pir\|/)           { return "PIR" }
609        if ($id =~ /^kegg\|/)          { return "KEGG" }
610    }
611    
612  sub print_subsys_connections {  sub print_subsys_connections {
613      my($fig_or_sprout,$cgi,$html,$peg,$user) = @_;      my($fig_or_sprout,$cgi,$html,$peg,$user) = @_;
614    
# Line 662  Line 684 
684    
685      push( @$html, $cgi->hr,      push( @$html, $cgi->hr,
686                    "<a name=Similarities>",                    "<a name=Similarities>",
687                    $cgi->h1('Bidirectional Best Hits (BBHs)'),                    $cgi->h1(''),
688                    "</a>\n"                    "</a>\n"
689          );          );
690    
# Line 756  Line 778 
778    
779      my $ncol = @$col_hdrs;      my $ncol = @$col_hdrs;
780      push( @$html, "<TABLE border cols=$ncol>\n",      push( @$html, "<TABLE border cols=$ncol>\n",
781                    "\t<Caption><h2>Similarities</h2></Caption>\n",                    "\t<Caption><h2>Bidirectional Best Hits</h2></Caption>\n",
782                    "\t<TR>\n\t\t<TH>",                    "\t<TR>\n\t\t<TH>",
783                    join( "</TH>\n\t\t<TH>", @$col_hdrs ),                    join( "</TH>\n\t\t<TH>", @$col_hdrs ),
784                    "</TH>\n\t</TR>\n"                    "</TH>\n\t</TR>\n"
# Line 795  Line 817 
817          $org        = html_enc( $org );          $org        = html_enc( $org );
818    
819          my $aliases = html_enc( join( ", ", &feature_aliasesL($fig_or_sprout,$id2) ) );          my $aliases = html_enc( join( ", ", &feature_aliasesL($fig_or_sprout,$id2) ) );
820    
821          $aliases = &HTML::set_prot_links($cgi,$aliases);          $aliases = &HTML::set_prot_links($cgi,$aliases);
822    
823          #  Okay, everything is calculated, let's "print" the row datum-by-datum:          #  Okay, everything is calculated, let's "print" the row datum-by-datum:
# Line 891  Line 914 
914      push( @$html, $cgi->hr );      push( @$html, $cgi->hr );
915    
916      my $select = $just_fig ? "fig" : "all";      my $select = $just_fig ? "fig" : "all";
917        my @sims = &sims($fig_or_sprout, $peg, $maxN, $maxP, $select, $max_expand );
     #  Move filtering of sims list out of display loop.  Avoids many problems,  
     #  including display of table with no entries.  Anticipate more filters.  
     #  -- GJO  
     #  
     my @sims = grep { $show_env || ( $_->id2 !~ /^fig\|999999/ ) }  
                &sims( $fig_or_sprout, $peg, $maxN, $maxP, $select, $max_expand );  
918    
919      if (@sims) {      if (@sims) {
920          my @from = $cgi->radio_group(-name => 'from',          my @from = $cgi->radio_group(-name => 'from',
# Line 1024  Line 1041 
1041          my $sim;          my $sim;
1042          foreach $sim ( @sims ) {          foreach $sim ( @sims ) {
1043              my $id2  = $sim->id2;              my $id2  = $sim->id2;
1044                if ((! $show_env) && ($id2 =~ /^fig\|99999/)) {
1045                    shift @from;
1046                    next;
1047                }
1048              my $cbox = &translatable($fig_or_sprout,$id2) ?              my $cbox = &translatable($fig_or_sprout,$id2) ?
1049                     qq(<input type=checkbox name=checked value="$id2">) : "";                     qq(<input type=checkbox name=checked value="$id2">) : "";
1050    
# Line 1065  Line 1086 
1086              my $func2   = html_enc( scalar &trans_function_of( $cgi, $fig_or_sprout, $id2, $user ) );              my $func2   = html_enc( scalar &trans_function_of( $cgi, $fig_or_sprout, $id2, $user ) );
1087              ## RAE Added color3. This will color function tables that do not match the original              ## RAE Added color3. This will color function tables that do not match the original
1088              ## annotation. This makes is a lot easier to see what is different (e.g. caps/spaces, etc)              ## annotation. This makes is a lot easier to see what is different (e.g. caps/spaces, etc)
1089              my $color3 = ( $func2 eq $current_func ) ? "#FFFFFF": "#FFDEAD";              my $color3="#FFFFFF";
1090                unless ($func2 eq $current_func) {$color3="#FFDEAD"}
1091    
1092              if ($funcF && $funcF ne $func2) { $func2 = "$funcF<br>$func2" }              if ($funcF && $funcF ne $func2) { $func2 = "$funcF<br>$func2" }
1093    
# Line 1221  Line 1243 
1243          $fc = $in_cluster{$fid1} ? &pin_link($cgi,$fid1) : "";          $fc = $in_cluster{$fid1} ? &pin_link($cgi,$fid1) : "";
1244    
1245          my $aliases = join( ', ', &feature_aliasesL($fig_or_sprout,$fid1) );          my $aliases = join( ', ', &feature_aliasesL($fig_or_sprout,$fid1) );
1246          ($contig1,$beg1,$end1) = &boundaries_of($fig_or_sprout,&feature_locationS($fig_or_sprout,$fid1));;          if ($cgi->param('SPROUT'))
1247          $strand = ($beg1 < $end1) ? "+" : "-";          {
1248                $aliases .= ",$fid1";
1249          my $function = &function_ofS($fig_or_sprout,$fid1);          }
1250          my $uniprot;          my $uniprot;
1251          if ($aliases =~ /(uni[^,]+)/) {          if ($aliases =~ /(uni[^,]+)/) {
1252               # print STDERR "$1\n";               # print STDERR "$1\n";
1253               $uniprot = $1;               $uniprot = $1;
1254          }          }
1255            $aliases = &HTML::set_prot_links($cgi,$aliases),
1256            $aliases =~ s/SPROUT=1/SPROUT=0/g;
1257            $aliases =~ s/[&;]user=[^&;]+[;&]/;/g;
1258    
1259            ($contig1,$beg1,$end1) = &boundaries_of($fig_or_sprout,&feature_locationS($fig_or_sprout,$fid1));;
1260            $strand = ($beg1 < $end1) ? "+" : "-";
1261    
1262            my $function = &function_ofS($fig_or_sprout,$fid1);
1263          my $info  = join ('<br/>', "<b>PEG:</b> ".$fid1, "<b>Contig:</b> ".$contig1, "<b>Begin:</b> ".$beg1,  "<b>End:</b> ".$end1,$function ? "<b>Function:</b> ".$function : '', $uniprot ? "<b>Uniprot ID:</b> ".$uniprot : '');          my $info  = join ('<br/>', "<b>PEG:</b> ".$fid1, "<b>Contig:</b> ".$contig1, "<b>Begin:</b> ".$beg1,  "<b>End:</b> ".$end1,$function ? "<b>Function:</b> ".$function : '', $uniprot ? "<b>Uniprot ID:</b> ".$uniprot : '');
1264    
1265          if     ($fid1 eq $peg)    { $color = "green" }          if     ($fid1 eq $peg)    { $color = "green" }
# Line 1284  Line 1314 
1314          push(@$tab,[&HTML::fid_link($cgi,$fid1,"local"),$beg1,$end1,$sz,$strand,$gap,          push(@$tab,[&HTML::fid_link($cgi,$fid1,"local"),$beg1,$end1,$sz,$strand,$gap,
1315                  $must_have,                  $must_have,
1316                  $fc,$in_neighborhood,                  $fc,$in_neighborhood,
1317                          $comment,&HTML::set_prot_links($cgi,$aliases),$why_related]);                      $comment,
1318                        $aliases,
1319                        $why_related]);
1320      }      }
1321      push(@$html,&HTML::make_table($col_hdrs,$tab,"Context on contig $contig1"));      push(@$html,&HTML::make_table($col_hdrs,$tab,"Context on contig $contig1"));
1322      push(@$html,$cgi->br,$cgi->submit('pin with checked genes'),$cgi->end_form,$cgi->br);      push(@$html,$cgi->br,$cgi->submit('pin with checked genes'),$cgi->end_form,$cgi->br);
# Line 1479  Line 1511 
1511          my @all_pegs = ();          my @all_pegs = ();
1512          my $gg = &build_maps($fig_or_sprout,\@closest_pegs,\@all_pegs,$sz_region);          my $gg = &build_maps($fig_or_sprout,\@closest_pegs,\@all_pegs,$sz_region);
1513          #warn Dumper($gg);          #warn Dumper($gg);
1514          my $color_sets = &cluster_genes(\@all_pegs,$peg);          my $color_sets = &cluster_genes($fig_or_sprout,$cgi,\@all_pegs,$peg);
1515          &set_colors_text_and_links($gg,\@all_pegs,$color_sets);          &set_colors_text_and_links($gg,\@all_pegs,$color_sets);
1516          ################################### add commentary capability          ################################### add commentary capability
1517    
# Line 1617  Line 1649 
1649                  my $info  = join ('<br/>', "<b>PEG:</b> ".$fid, "<b>Contig:</b> ".$contig1, "<b>Begin:</b> ".$beg1,  "<b>End:</b> ".$end1,$function ? "<b>Function:</b> ".$function : '', $uniprot ? "<b>Uniprot ID:</b> ".$uniprot : '');                  my $info  = join ('<br/>', "<b>PEG:</b> ".$fid, "<b>Contig:</b> ".$contig1, "<b>Begin:</b> ".$beg1,  "<b>End:</b> ".$end1,$function ? "<b>Function:</b> ".$function : '', $uniprot ? "<b>Uniprot ID:</b> ".$uniprot : '');
1650    
1651                  my $sprout = $cgi->param('SPROUT') ? 1 : "";                  my $sprout = $cgi->param('SPROUT') ? 1 : "";
1652                  my $fmg = join ('<br/>', "<a href=\&quot;protein.cgi?SPROUT=$sprout&compare_region=1\&prot=$fid\&user=\&quot>show</a>",                  my $fmg;
1653                    if ($sprout)
1654                    {
1655                        $fmg = "<a href=\&quot;protein.cgi?SPROUT=$sprout&compare_region=1\&prot=$fid\&user=\&quot>show</a>";
1656                    }
1657                    else
1658                    {
1659                        $fmg = join ('<br/>', "<a href=\&quot;protein.cgi?SPROUT=$sprout&compare_region=1\&prot=$fid\&user=\&quot>show</a>",
1660                              "<a onClick=\&quot;setValue('bound1', '$fid'); return false;\&quot;>set bound 1</a>",                              "<a onClick=\&quot;setValue('bound1', '$fid'); return false;\&quot;>set bound 1</a>",
1661                              "<a onClick=\&quot;setValue('bound2', '$fid'); return false;\&quot;>set bound 2</a>",                              "<a onClick=\&quot;setValue('bound2', '$fid'); return false;\&quot;>set bound 2</a>",
1662                              "<a onClick=\&quot;setValue('candidates', '$fid'); return false;\&quot;>set candidate</a>");                              "<a onClick=\&quot;setValue('candidates', '$fid'); return false;\&quot;>set candidate</a>");
1663                    }
1664                  push(@$genes,[&min($beg1,$end1),                  push(@$genes,[&min($beg1,$end1),
1665                            &max($beg1,$end1),                            &max($beg1,$end1),
1666                            ($beg1 < $end1) ? "rightArrow" : "leftArrow",                            ($beg1 < $end1) ? "rightArrow" : "leftArrow",
# Line 1682  Line 1721 
1721  }  }
1722    
1723  sub cluster_genes {  sub cluster_genes {
1724      my($all_pegs,$peg) = @_;      my($fig_or_sprout,$cgi,$all_pegs,$peg) = @_;
1725      my(%seen,$i,$j,$k,$x,$cluster,$conn,$pegI,$red_set);      my(%seen,$i,$j,$k,$x,$cluster,$conn,$pegI,$red_set);
1726    
1727      my @color_sets = ();      my @color_sets = ();
1728    
1729      $conn = &get_connections_by_similarity($all_pegs);      $conn = &get_connections_by_similarity($fig_or_sprout,$cgi,$all_pegs);
1730    
1731      for ($i=0; ($i < @$all_pegs); $i++) {      for ($i=0; ($i < @$all_pegs); $i++) {
1732          if ($all_pegs->[$i] eq $peg) { $pegI = $i }          if ($all_pegs->[$i] eq $peg) { $pegI = $i }
1733          if (! $seen{$i}) {          if (! $seen{$i}) {
# Line 1724  Line 1764 
1764  }  }
1765    
1766  sub get_connections_by_similarity {  sub get_connections_by_similarity {
1767      my($all_pegs) = @_;      my($fig_or_sprout,$cgi,$all_pegs) = @_;
1768    
1769        if ($cgi->param('SPROUT'))
1770        {
1771            return &get_connections_by_similarity_SPROUT($fig_or_sprout,$all_pegs);
1772        }
1773        else
1774        {
1775            return &get_connections_by_similarity_SEED($fig_or_sprout,$all_pegs);
1776        }
1777    }
1778    
1779    sub get_connections_by_similarity_SPROUT {
1780        my($fig_or_sprout,$all_pegs) = @_;
1781        my(%in,$i,$j,$peg1,$peg2);
1782    
1783        my $conn = {};
1784    
1785        for ($i=0; $i < @$all_pegs; $i++)
1786        {
1787            $in{$all_pegs->[$i]} = $i;
1788        }
1789    
1790        foreach $peg1 (@$all_pegs)
1791        {
1792            $i = $in{$peg1};
1793            foreach $peg2 (map { $_->[0] } $fig_or_sprout->bbhs($peg1, 1.0e-10, 0))
1794            {
1795                $j = $in{$peg2};
1796                if (defined($i) && defined($j))
1797                {
1798                    push(@{$conn->{$i}},$j);
1799                }
1800            }
1801        }
1802        return $conn;
1803    }
1804    
1805    sub get_connections_by_similarity_SEED {
1806        my($fig_or_sprout,$all_pegs) = @_;
1807      my($i,$j,$tmp,$peg,%pos_of);      my($i,$j,$tmp,$peg,%pos_of);
1808      my($sim,%conn,$x,$y);      my($sim,%conn,$x,$y);
1809    
# Line 1835  Line 1914 
1914                        contig_context                        contig_context
1915                        context_graphic                        context_graphic
1916                        subsys_connections                        subsys_connections
1917                        assgn_for_equiv_prots                        assign_for_equiv_prots
1918                        links                        links
1919                        services                        services
1920                        kv_pairs                        kv_pairs
# Line 1867  Line 1946 
1946                   tools                 => [],                   tools                 => [],
1947                   kv_pairs              => [],                   kv_pairs              => [],
1948                   similarities          => [],                   similarities          => [],
1949                   assgn_for_equiv_prots => [],                   assign_for_equiv_prots => [],
1950                   javascript            => [],                   javascript            => [],
1951                   compare_region        => []                   compare_region        => []
1952                 );                 );
# Line 1965  Line 2044 
2044  }  }
2045    
2046  sub function_ofS {  sub function_ofS {
2047      my($fig_or_sprout,$peg) = @_;      my($fig_or_sprout,$peg,$user) = @_;
2048    
2049      return scalar $fig_or_sprout->function_of($peg);      return scalar $fig_or_sprout->function_of($peg,$user);
2050  }  }
2051    
2052  sub mapped_prot_ids {  sub mapped_prot_ids {
2053      my($fig_or_sprout,$peg) = @_;      my($fig_or_sprout,$cgi,$peg) = @_;
2054    
2055        if ($cgi->param('SPROUT'))
2056        {
2057            return map { [$_,0] } grep { $_ =~ /^(([NXYZA]P_[0-9\.]+)|(gi\|\d+)|(kegg\|\S+)|(uni\|[A-Z0-9]{6})|(sp\|[A-Z0-9]{6}))$/ } &feature_aliasesL($fig_or_sprout,$peg);
2058        }
2059        else
2060        {
2061      return $fig_or_sprout->mapped_prot_ids($peg);      return $fig_or_sprout->mapped_prot_ids($peg);
2062  }  }
2063    }
2064    
2065  sub peg_links {  sub peg_links {
2066      my($fig_or_sprout,$peg) = @_;      my($fig_or_sprout,$peg) = @_;
# Line 1995  Line 2081 
2081  }  }
2082    
2083  sub add_annotation {  sub add_annotation {
2084      my($fig_or_sprout,$prot,$user,$annotation) = @_;      my($fig_or_sprout,$cgi,$prot,$user,$annotation) = @_;
2085    
2086        if ((! $cgi->param('SPROUT')) || ($annotation !~ /Set function/))
2087        {
2088      $fig_or_sprout->add_annotation($prot,$user,$annotation);      $fig_or_sprout->add_annotation($prot,$user,$annotation);
2089  }  }
2090    }
2091    
2092  sub feature_annotations {  sub feature_annotations {
2093      my($fig_or_sprout,$prot) = @_;      my($fig_or_sprout,$cgi,$prot) = @_;
2094        if ($cgi->param('SPROUT'))
2095        {
2096            return map { [$_->{featureID},scalar localtime($_->{timeStamp}),$_->{user},$_->{text}] } $fig_or_sprout->feature_annotations($prot);
2097        }
2098      return $fig_or_sprout->feature_annotations($prot);      return $fig_or_sprout->feature_annotations($prot);
2099  }  }
2100    
2101  sub related_by_func_sim {  sub related_by_func_sim {
2102      my($fig_or_sprout,$peg,$user) = @_;      my($fig_or_sprout,$cgi,$peg,$user) = @_;
2103    
2104        if ($cgi->param('SPROUT'))
2105        {
2106            return map { $_->[0] } sort { $a->[1] <=> $b->[1] } $fig_or_sprout->bbhs($peg, 1.0e-10, 0);
2107        }
2108      return $fig_or_sprout->related_by_func_sim($peg,$user);      return $fig_or_sprout->related_by_func_sim($peg,$user);
2109  }  }
2110    

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.68

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3