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

Diff of /FigWebServices/subsys.cgi

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

revision 1.164, Sat Jul 1 21:15:26 2006 UTC revision 1.165, Mon Jul 17 19:50:08 2006 UTC
# Line 20  Line 20 
20  use FIG;  use FIG;
21  use FIG_Config;  use FIG_Config;
22  use FIGjs;  # mouseover()  use FIGjs;  # mouseover()
23    use GD;
24    use MIME::Base64;
25    
26  my $fig = new FIG;  my $fig = new FIG;
27    
28  use Subsystem;  use Subsystem;
# Line 358  Line 361 
361      {      {
362          &new_ssa($fig,$cgi,$html);          &new_ssa($fig,$cgi,$html);
363      }      }
364    
365  #RAE: undelete these 5 commented out line for the new interface  #RAE: undelete these 5 commented out line for the new interface
366      elsif ($request eq "manage_ss")      elsif ($request eq "manage_ss")
367  #    else  #    else
# Line 378  Line 382 
382      # a new first page written by Rob      # a new first page written by Rob
383      my($fig,$cgi,$html) = @_;      my($fig,$cgi,$html) = @_;
384    
   
385      # we get this information here and set things so that when we create the links later everything is already set.      # we get this information here and set things so that when we create the links later everything is already set.
386      my $sort = $cgi->param('sortby');      my $sort = $cgi->param('sortby');
387      unless ($sort) {$sort="Classification"}      unless ($sort) {$sort="Classification"}
# Line 395  Line 398 
398      $cgi->param('show_minus1', $minus); # whether to show -1 variants      $cgi->param('show_minus1', $minus); # whether to show -1 variants
399      $cgi->param('showgenomecounts', $show_genomes); # whether to show genomes on the first page      $cgi->param('showgenomecounts', $show_genomes); # whether to show genomes on the first page
400    
   
   
   
   
401      my @ssa = map {      my @ssa = map {
402       my $ss=$_;       my $ss=$_;
403       my ($version, $curator, $pedigree, $roles)=$fig->subsystem_info($ss->[0]);       my ($version, $curator, $pedigree, $roles)=$fig->subsystem_info($ss->[0]);
# Line 508  Line 507 
507    
508  }  }
509    
510  sub make_link_to_ma_diagram{  sub make_link_to_painted_diagram{
511      my($fig, $cgi, $html ) = @_;      my($fig, $cgi, $html ) = @_;
512      my $new_html = [];      my $new_html = [];
513      push(@$new_html,"<br><br>");      push(@$new_html,"<br><br>");
514      push(@$new_html,"<a href='$FIG_Config::temp_url/ma_data_painted_on_ss_diagram.html'>ma data painted on diagram</a>");      push(@$new_html,"<a href='$FIG_Config::temp_url/painted_diagram.html'>data painted on diagram</a>");
515      push(@$new_html,"<br>");      push(@$new_html,"<br>");
516      &HTML::show_page($cgi,$new_html);      &HTML::show_page($cgi,$new_html);
517      exit;      exit;
518  }  }
519    
520    sub find_roles_to_color
521    {
522        my ($fig,$cgi,$html)=@_;
523        my ($genome_id,$key,$value);
524    
525        if($cgi->param('att_data_genome_id')){$genome_id = $cgi->param('att_data_genome_id');}
526    
527        if($cgi->param('color_diagram_by_peg_tag')){$key = $cgi->param('color_diagram_by_peg_tag');}
528    
529        if($cgi->param('value_to_color')){$value = $cgi->param('value_to_color');}
530    
531        my @results = $fig->get_attributes(undef,$key,$value);
532    
533        my (@pegs,@roles);
534        foreach my $result (@results){
535            my($p,$a,$v,$l)= @$result;
536            if($p =~/$genome_id/){
537                push(@pegs,$p);
538            }
539        }
540    
541        foreach my $peg (@pegs){
542            my $function = $fig->function_of($peg);
543            my @function_roles = $fig->roles_of_function($function);
544            push(@roles,@function_roles);
545        }
546    
547        return \@roles;
548    }
549    
550    sub color_diagram_role_by_av
551    {
552    
553      my ($fig,$cgi,$ss_name,$ss_obj,$roles)=@_;
554      my $dir = "$FIG_Config::temp_url";
555      my $genome_id = $cgi->param('att_data_genome_id');
556      my $attribute=$cgi->param('color_diagram_by_peg_tag');
557    
558      my $diagram_html_file = $ss_obj->get_diagram_html_file("d01");
559      open(IN2, $diagram_html_file);
560      open(OUT2,">$FIG_Config::temp/painted_diagram.html");
561    
562      my %role_to_abbr;
563      my @r_and_abbr = $ss_obj->roles_with_abbreviations();
564      foreach my $r (@r_and_abbr){
565          $role_to_abbr{@$r[1]} = @$r[0];
566      }
567    
568      my %abbr_to_coords;
569      while ($_ = <IN2>){
570          chomp($_);
571          my @temp = split("<AREA SHAPE",$_);
572          foreach my $t (@temp){
573              if( $t =~/COORDS=\"(\d+,\d+,\d+,\d+)\".*Role=\"(\w+)\"/){
574                    $abbr_to_coords{$2} = $1;
575              }
576          }
577      }
578    
579      my $jpg_file  = "$FIG_Config::data/Subsystems/$ss_name/diagrams/d01/diagram.jpg";
580      my $im = new GD::Image->newFromJpeg($jpg_file);
581      my $highlight_color = $im->colorResolve(255,0,0);
582    
583      #iterate through roles passed in to subroutine for consideration
584      foreach my $role (@$roles){
585          if($role_to_abbr{$role}){
586              my $abbr =$role_to_abbr{$role};
587              if($abbr_to_coords{$abbr}){
588                  my $temp = $abbr_to_coords{$abbr};
589                  my @coords = split(",",$temp);
590                  my $x1 = $coords[0] - 4;
591                  my $y1 = $coords[1] - 4;
592                  my $x2 = $x1 + 94;
593                  my $y2 = $y1 + 48;
594                  $im->rectangle($x1,$y1,$x2,$y2,$highlight_color);
595             }
596         }
597      }
598    
599      my $encoded = MIME::Base64::encode($im->png());
600    
601      print OUT2 qq(<HTML><HEAD><TITLE>color diagram role by av</TITLE></HEAD><BODY>);
602      my $image = "<img style='border: none;' src='data:image/gif;base64,$encoded'>";
603      print OUT2 "$image\n";
604      print OUT2 "</BODY></HTML>";
605    
606    }
607    
608  sub paint_ma_data  sub paint_ma_data
609  {  {
610    
# Line 527  Line 614 
614    my $genome_id = $cgi->param('ma_data_genome_id');    my $genome_id = $cgi->param('ma_data_genome_id');
615    
616    my %peg_to_level;    my %peg_to_level;
617      my $ma_data = 0;
618    
619    if ($cgi->upload('ma_data_file'))    if ($cgi->upload('ma_data_file'))
620    {    {
621       my $fh=$cgi->upload('ma_data_file');       my $fh=$cgi->upload('ma_data_file');
622       @inputs = <$fh> ;       @inputs = <$fh> ;
623    }        $ma_data = 1;
624    
625    foreach my $i (@inputs){    foreach my $i (@inputs){
626        chomp($i);        chomp($i);
627        my @temp = split("\t",$i);        my @temp = split("\t",$i);
628        $peg_to_level{$temp[0]} = $temp[1];        $peg_to_level{$temp[0]} = $temp[1];
629    }    }
630      }
631    
632    my $diagram_html_file = $ss_obj->get_diagram_html_file("d01");    my $diagram_html_file = $ss_obj->get_diagram_html_file("d01");
633    open(IN2, $diagram_html_file);    open(IN2, $diagram_html_file);
634    open(OUT2,">$FIG_Config::temp/ma_data_painted_on_ss_diagram.html");    open(OUT2,">$FIG_Config::temp/painted_diagram.html");
635    
636    my %role_to_coords;    my %role_to_coords;
637    
# Line 559  Line 648 
648    
649    print OUT2 "<HTML><HEAD>    print OUT2 "<HTML><HEAD>
650    <TITLE>microarray data painted on subsystem diagram</TITLE>    <TITLE>microarray data painted on subsystem diagram</TITLE>
651    <META NAME='generator' CONTENT='YokMap 1.0.1'>    </HEAD>";
652    <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=iso-8859-1'>  
653    </HEAD>    print OUT2 "<BODY><MAP NAME='painted_diagram'>";
   <BODY BGCOLOR='#ffffff'><MAP NAME='ma_data_painted_on_ss_diagram'>";  
654    
655    my @roles = keys(%role_to_coords);    my @roles = keys(%role_to_coords);
656    my $color;    my $color;
657    foreach my $role (@roles){    foreach my $role (@roles){
658          my $temp = $role_to_coords{$role};
659          my @coords = split(",",$temp);
660        my @pegs = $ss_obj->get_pegs_from_cell($genome_id,$role);        my @pegs = $ss_obj->get_pegs_from_cell($genome_id,$role);
661        foreach my $peg (@pegs){        foreach my $peg (@pegs){
662            my $temp = $role_to_coords{$role};            my $temp = $role_to_coords{$role};
663            my @coords = split(",",$temp);            my @coords = split(",",$temp);
664            my $top = $coords[0] - 35;            my $top = $coords[0] - 35;
665              #my $top = $coords[0];
666            my $left = $coords[1] + 15;            my $left = $coords[1] + 15;
667              #my $left = $coords[1];
668              if($ma_data){
669            my $tag = $peg_to_level{$peg};            my $tag = $peg_to_level{$peg};
670            if($tag < .10){$color ="#009900" }            if($tag < .10){$color ="#009900" }
671            elsif($tag < .25){$color ="#0CC00" }            elsif($tag < .25){$color ="#0CC00" }
# Line 586  Line 679 
679            else{$color ="#FF0000" }            else{$color ="#FF0000" }
680            print OUT2 "<h5 STYLE='position: absolute; top:$top; left:$left'><font Color='$color'>$tag</font></h5>\n";            print OUT2 "<h5 STYLE='position: absolute; top:$top; left:$left'><font Color='$color'>$tag</font></h5>\n";
681          }          }
682             # else{
683             #     my @rets = $fig->get_attributes($peg,$attribute);
684             #     foreach my $ret (@rets){
685            #         my($p,$t,$value,$l) = @$ret;
686            #          #print STDERR "value:$value\n";
687            #         print OUT2 "<h5 STYLE='position: absolute; top:$top; left:$left'><font Color='$color'>$value</font></h5>\n";
688            #      }
689            #  }
690          }
691    }    }
692    
693    my $jpg_file  = "$FIG_Config::data/Subsystems/$ss_name/diagrams/d01/diagram.jpg";    my $jpg_file  = "$FIG_Config::data/Subsystems/$ss_name/diagrams/d01/diagram.jpg";
694    system "cp $jpg_file $FIG_Config::temp/ma_data_painted_on_ss_diagram.jpg";    system "cp $jpg_file $FIG_Config::temp/painted_diagram.jpg";
695    
696    my $width = $cgi->param('image_file_width');    my $width;
697    my $height = $cgi->param('image_file_height');    my $height;
698    
699    print OUT2 "</MAP><IMG SRC='ma_data_painted_on_ss_diagram.jpg' WIDTH='$width' HEIGHT='$height' USEMAP='#ma_data_painted_on_ss_diagram' BORDER='0'><script language='JavaScript' type='text/javascript' src='wz_tooltip.js'></script></BODY></HTML>";    if($cgi->param('image_file_width')){
700         $width = $cgi->param('image_file_width');
701         $height = $cgi->param('image_file_height');
702      }
703    
704      print OUT2 "</MAP><IMG SRC='painted_diagram.jpg' WIDTH='$width' HEIGHT='$height' USEMAP='#painted_diagram' BORDER='0'></BODY></HTML>";
705  }  }
706    
707  sub manage_subsystems {  sub manage_subsystems {
# Line 1445  Line 1551 
1551      if ($cgi->param('ma_data_diagram_action'))      if ($cgi->param('ma_data_diagram_action'))
1552      {      {
1553          &paint_ma_data($fig,$cgi,$ssa,$subsystem);          &paint_ma_data($fig,$cgi,$ssa,$subsystem);
1554          &make_link_to_ma_diagram($fig,$cgi,$html);          &make_link_to_painted_diagram($fig,$cgi,$html);
1555      }      }
1556    
1557        if ($cgi->param('paint_diagram_role_by_attribute_value'))
1558        {
1559            my $possible_roles_to_color = &find_roles_to_color($fig,$cgi,$html,$subsystem);
1560            &color_diagram_role_by_av($fig,$cgi,$ssa,$subsystem,$possible_roles_to_color);
1561            &make_link_to_painted_diagram($fig,$cgi,$html);
1562        }
1563  }  }
1564    
1565    
# Line 1983  Line 2095 
2095      {      {
2096          my @tbl;          my @tbl;
2097          my @tbl_ma;          my @tbl_ma;
2098            my @tbl_attribute;
2099          push(@tbl, ["Diagram name:", $cgi->textfield(-name => "diagram_new_name",          push(@tbl, ["Diagram name:", $cgi->textfield(-name => "diagram_new_name",
2100                                                       -value => "",                                                       -value => "",
2101                                                       -override => 1,                                                       -override => 1,
# Line 1992  Line 2104 
2104                                                             -size => 50)]);                                                             -size => 50)]);
2105          push(@tbl, ["Diagram html file:", $cgi->filefield(-name => "diagram_html_file",          push(@tbl, ["Diagram html file:", $cgi->filefield(-name => "diagram_html_file",
2106                                                             -size => 50)]);                                                             -size => 50)]);
   
2107          push(@$html, $cgi->h3("Upload a new diagram"));          push(@$html, $cgi->h3("Upload a new diagram"));
2108          push(@$html, &HTML::make_table(undef, \@tbl));          push(@$html, &HTML::make_table(undef, \@tbl));
   
2109          push(@$html, $cgi->submit(-name => 'diagram_action',          push(@$html, $cgi->submit(-name => 'diagram_action',
2110                                    -label => 'Process diagram actions'));                                    -label => 'Process diagram actions'));
   
2111          push(@tbl_ma, ["Genome ID:", $cgi->textfield(-name => "ma_data_genome_id",          push(@tbl_ma, ["Genome ID:", $cgi->textfield(-name => "ma_data_genome_id",
2112                                                       -value => "",                                                       -value => "",
2113                                                       -override => 1,                                                       -override => 1,
# Line 2012  Line 2121 
2121                                                       -value => "",                                                       -value => "",
2122                                                       -override => 1,                                                       -override => 1,
2123                                                       -size => 30)]);                                                       -size => 30)]);
   
2124          push(@tbl_ma, ["Microarray data file:", $cgi->filefield(-name => "ma_data_file",          push(@tbl_ma, ["Microarray data file:", $cgi->filefield(-name => "ma_data_file",
2125                                                             -size => 50)]);                                                             -size => 50)]);
   
2126          push(@$html, $cgi->h3("View microarray data on diagram"));          push(@$html, $cgi->h3("View microarray data on diagram"));
2127          push(@$html, &HTML::make_table(undef, \@tbl_ma));          push(@$html, &HTML::make_table(undef, \@tbl_ma));
2128    
2129          push(@$html, $cgi->submit(-name => 'ma_data_diagram_action',          push(@$html, $cgi->submit(-name => 'ma_data_diagram_action',
2130                                    -label => 'View microarray data on diagram'));                                    -label => 'View microarray data on diagram'));
2131    
2132            my @options=sort {uc($a) cmp uc($b)} $fig->get_peg_keys(); # get all the peg keys
2133            unshift(@options, undef);
2134            my @select_keys;
2135            foreach my $o (@options){
2136               if($o =~/(essential|fitness)/){push(@select_keys,$o)}
2137      }      }
2138      push(@$html, $cgi->hr);  
2139            push(@tbl_attribute, ["Genome ID:", $cgi->textfield(-name => "att_data_genome_id",
2140                                                         -value => "",
2141                                                         -override => 1,
2142                                                         -size => 30)]);
2143            push(@tbl_attribute,["Select attribute", $cgi->popup_menu(-name => 'color_diagram_by_peg_tag', -values=>\@select_keys), $cgi->br]);
2144            my @values = ("essential","nonessential","potential_essential","undetermined");
2145    
2146            push(@tbl_attribute,["Select value", $cgi->popup_menu(-name => 'value_to_color', -values=>\@values), $cgi->br]);
2147    
2148            push(@$html, $cgi->h3("Color Diagram Roles by Essentiality Attribute Value"));
2149    
2150            push(@$html, &HTML::make_table(undef, \@tbl_attribute));
2151    
2152            push(@$html, $cgi->submit(-name => 'paint_diagram_role_by_attribute_value',
2153                                      -label => 'Color Matching Roles'));
2154        }
2155    
2156      return @diagrams > 0;      return @diagrams > 0;
2157  }  }
2158    
# Line 2414  Line 2543 
2543    
2544              if ($have_diagrams)              if ($have_diagrams)
2545              {              {
2546                    #my @roles = ("aspA");
2547                    #my $colorJS = qq(<a href="" onclick="colorAttributeValue(@roles); return false;">Color</a>);
2548                  my $colorJS = qq(<a href="" onclick="colorGenome('$genome'); return false;">Color</a>);                  my $colorJS = qq(<a href="" onclick="colorGenome('$genome'); return false;">Color</a>);
2549                  $row->[0] .= " " . $colorJS;                  $row->[0] .= " " . $colorJS;
2550              }              }

Legend:
Removed from v.1.164  
changed lines
  Added in v.1.165

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3