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

Diff of /FigWebServices/diagram.cgi

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

revision 1.5, Tue Mar 6 16:39:39 2007 UTC revision 1.8, Tue Apr 29 08:03:55 2008 UTC
# Line 52  Line 52 
52        font-weight: normal;        font-weight: normal;
53        color: #000;        color: #000;
54        background-color: #FFFFFF;        background-color: #FFFFFF;
55      }~;      }
56        th, td {
57          font-size: 12px;
58        }
59        ~;
60    
61      # print out the page      # print out the page
62      print $cgi->header();      print $cgi->header();
63      print $cgi->start_html(-title => 'The SEED - Subsystem Diagram',      print "<html>\n<head>\n";
64                             -style => { -code => $css }      print "<title>The SEED - Subsystem Diagram</title>\n";
65          );      print "<style type='text/css'> \n <!-- \n $css \n --> \n </style> \n";
66        print "</head> \n <body> \n";
67    
68      print &get_Diagram($fig, $cgi);      print &get_Diagram($fig, $cgi);
69    
# Line 111  Line 116 
116      }      }
117    
118    
119      # get the genomes from the subsystem with positive variant codes      # find out about sort order
120        my $sort_by = $cgi->param('sort_by') || 'name';
121    
122        # get the genomes from the subsystem
123      my @genomes;      my @genomes;
124      my $genome = $cgi->param('genome_id');      my $genome = $cgi->param('genome_id');
125      foreach (sort { $fig->genus_species($a) cmp $fig->genus_species($b) } $subsystem->get_genomes()) {      if ($sort_by eq 'variant_code') {
126            @genomes = sort { ($subsystem->get_variant_code( $subsystem->get_genome_index($a) ) cmp
127                               $subsystem->get_variant_code( $subsystem->get_genome_index($b) )) or
128                               ( $fig->genus_species($a) cmp $fig->genus_species($b) )
129                            } $subsystem->get_genomes()
130        }
131        else {
132            @genomes = sort { $fig->genus_species($a) cmp $fig->genus_species($b) } $subsystem->get_genomes();
133        }
134    
135        # show only genomes with zero or positive variant codes
136        # unless user switched that off
137        unless ($cgi->param('show_negative')) {
138            my @temp;
139            foreach (@genomes) {
140          my $vcode = $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) );          my $vcode = $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) );
141          push @genomes, $_ if ($vcode > 0);              push @temp, $_ if ($vcode >= 0);
142            }
143            @genomes = @temp;
144      }      }
145    
146      my %genome_labels = map { $_ => $fig->genus_species($_)." ( $_ ) [".      my %genome_labels = map { $_ => $fig->genus_species($_)." ( $_ ) [".
147                                    $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) )."]"                                    $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) )."]"
148                              } @genomes;                              } @genomes;
149    
150        @genomes = ('0', @genomes);
151        $genome_labels{'0'} = 'please select a genome to color the diagram with' ;
152    
153    
154      # generate the content      # generate the content
155      my $content = "<h1>Subsystem: $subsystem_pretty</h1>";      my $content = "<h1>Subsystem: $subsystem_pretty</h1>";
156      $content .= '<hr/>';      $content .= '<hr/>';
157    
158      $content .= $cgi->start_form();      $content .= $cgi->start_form( -id => 'diagram_select_genome', -action => 'diagram.cgi' );
159      $content .= $cgi->hidden( -name  => 'subsystem_name',      $content .= $cgi->hidden( -name  => 'subsystem_name',
160                                -value => $subsystem_name );                                -value => $subsystem_name );
161      $content .= $cgi->hidden( -name  => 'diagram',      $content .= $cgi->hidden( -name  => 'diagram',
162                                -value => $diagram_id );                                -value => $diagram_id );
163      $content .= $cgi->hidden( -name  => 'dont_scale', -value => 1 )      $content .= $cgi->hidden( -name  => 'dont_scale', -value => 1 )
164          if ($cgi->param('dont_scale'));          if ($cgi->param('dont_scale'));
165        $content .= $cgi->hidden( -name  => 'show_negative', -value => 1 )
166            if ($cgi->param('show_negative'));
167      $content .= $cgi->hidden( -name  => 'debug', -value => 1 )      $content .= $cgi->hidden( -name  => 'debug', -value => 1 )
168          if ($cgi->param('debug'));          if ($cgi->param('debug'));
169        $content .= '<p>Sort by: '.
170            $cgi->radio_group( -name    => 'sort_by',
171                               -values  => ['name', 'variant_code'],
172                               -default => $sort_by,
173                               -labels  => { 'name' => 'Genome name',
174                                             'variant_code' => 'Variant code, then genome name' },
175                               -onChange => 'document.getElementById("diagram_select_genome").submit();',
176            ).' &nbsp; | &nbsp; ';
177        $content .= ''.$cgi->checkbox( -name  => 'show_negative',
178                                           -value => 1,
179                                           -label => 'Show genomes with negative variant codes',
180                                           -onChange => 'document.getElementById("diagram_select_genome").submit();',
181            ).'</p>';
182      $content .= $cgi->popup_menu( -name    => 'genome_id',      $content .= $cgi->popup_menu( -name    => 'genome_id',
183                                    -values  => \@genomes,                                    -values  => \@genomes,
184                                    -default => $genome,                                    -default => $genome,
# Line 177  Line 219 
219      }      }
220      # END      # END
221    
222    
223        # add notes to roles
224        # to reduce the total number of loos role_or, role_and get their notes
225        # attached in the loops further down
226        foreach my $id (@{$d->item_ids_of_type('role')}) {
227            my $role = $subsystem->get_role_from_abbr($id);
228            if ($role) {
229                $d->add_note('role', $id, $role);
230            }
231        }
232    
233    
234      # build a lookup hash, make one entry for each role_and and role_or item      # build a lookup hash, make one entry for each role_and and role_or item
235      # the index references to the inner hash of the role_and/role_or hash      # the index references to the inner hash of the role_and/role_or hash
236      # to set a value there use $lookup->{role_abbr}->{role_abbr} = 1;      # to set a value there use $lookup->{role_abbr}->{role_abbr} = 1;
237      # declared outside if to be available for debug output      # declared outside if to be available for debug output
238      my $lookup = {};      my $lookup = {};
239    
     if ($genome) {  
   
         my @roles = $subsystem->get_roles_for_genome($genome);  
   
240          # find out about role_and          # find out about role_and
241          my $role_and = {};          my $role_and = {};
242          if (scalar(@{$d->item_ids_of_type('role_and')})) {          if (scalar(@{$d->item_ids_of_type('role_and')})) {
# Line 194  Line 244 
244    
245                  $role_and->{$subset} = {};                  $role_and->{$subset} = {};
246    
247                my $note = '';
248                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {
249                      my $r_abbr = $subsystem->get_abbr_for_role($r);                      my $r_abbr = $subsystem->get_abbr_for_role($r);
250                      unless ($r_abbr) {                      unless ($r_abbr) {
251                          die "Unable to get the abbreviation for role '$r'.";                          die "Unable to get the abbreviation for role '$r'.";
252                      }                      }
253    
254                    $note .= "<li>$r</li>";
255                      $lookup->{$r_abbr} = $role_and->{$subset};                      $lookup->{$r_abbr} = $role_and->{$subset};
256                      $role_and->{$subset}->{$r_abbr} = 0;                      $role_and->{$subset}->{$r_abbr} = 0;
257                  }                  }
258                $d->add_note('role_and', $subset, "<h4>Requires all of:</h4><ul>$note</ul>");
259              }              }
260          }          }
261    
# Line 213  Line 266 
266    
267                  $role_or->{$subset} = {};                  $role_or->{$subset} = {};
268    
269                my $note = '';
270                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {
271                      my $r_abbr = $subsystem->get_abbr_for_role($r);                      my $r_abbr = $subsystem->get_abbr_for_role($r);
272    
# Line 220  Line 274 
274                          die "Unable to get the abbreviation for role '$r'.";                          die "Unable to get the abbreviation for role '$r'.";
275                      }                      }
276    
277                    $note .= "<li>$r</li>";
278                      $lookup->{$r_abbr} = $role_or->{$subset};                      $lookup->{$r_abbr} = $role_or->{$subset};
279                      $role_or->{$subset}->{$r_abbr} = 0;                      $role_or->{$subset}->{$r_abbr} = 0;
280                  }                  }
281                $d->add_note('role_or', $subset, "<h4>Requires any of:</h4><ul>$note</ul>");
282              }              }
283          }          }
284    
285    
286        if ($genome) {
287    
288            my @roles = $subsystem->get_roles_for_genome($genome);
289    
290          # check if genome is present in subsystem          # check if genome is present in subsystem
291          # genomes not present, unfortunately return @roles = ( undef )          # genomes not present, unfortunately return @roles = ( undef )
292          if (scalar(@roles) == 0 or          if (scalar(@roles) == 0 or
# Line 290  Line 350 
350      my $scale = $d->calculate_scale * 100;      my $scale = $d->calculate_scale * 100;
351      unless ($scale == 100) {      unless ($scale == 100) {
352          $content .= '<p><em>This diagram has been scaled to '.sprintf("%.2f", $scale).'%. ';          $content .= '<p><em>This diagram has been scaled to '.sprintf("%.2f", $scale).'%. ';
353          $content .= "(<a href='?subsystem_name=$subsystem_name&diagram_id=$diagram_id&dont_scale=1'>".          $content .= "(<a href='?subsystem_name=$subsystem_name&diagram=$diagram_id&dont_scale=1'>".
354              "view in original size</a>)";              "view in original size</a>)";
355          $content .= '</em></p>';          $content .= '</em></p>';
356      }      }
357      if ($cgi->param('dont_scale')) {      if ($cgi->param('dont_scale')) {
358          $content .= '<p><em>You have switched off scaling this diagram down. ';          $content .= '<p><em>You have switched off scaling this diagram down. ';
359          $content .= "(<a href='?subsystem_name=$subsystem_name&diagram_id=$diagram_id'>".          $content .= "(<a href='?subsystem_name=$subsystem_name&diagram=$diagram_id'>".
360              "Allow scaling</a>)";              "Allow scaling</a>)";
361          $content .= '</em></p>';          $content .= '</em></p>';
362      }      }

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3