[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.6, Fri Mar 9 20:11:48 2007 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 with zero or positive variant codes
123      my @genomes;      my @genomes;
124      my $genome = $cgi->param('genome_id');      my $genome = $cgi->param('genome_id');
125        if ($sort_by eq 'variant_code') {
126            foreach (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                my $vcode = $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) );
131                push @genomes, $_ if ($vcode >= 0);
132            }
133        }
134        else {
135      foreach (sort { $fig->genus_species($a) cmp $fig->genus_species($b) } $subsystem->get_genomes()) {      foreach (sort { $fig->genus_species($a) cmp $fig->genus_species($b) } $subsystem->get_genomes()) {
136          my $vcode = $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) );          my $vcode = $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) );
137          push @genomes, $_ if ($vcode > 0);              push @genomes, $_ if ($vcode >= 0);
138            }
139      }      }
140    
141      my %genome_labels = map { $_ => $fig->genus_species($_)." ( $_ ) [".      my %genome_labels = map { $_ => $fig->genus_species($_)." ( $_ ) [".
142                                    $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) )."]"                                    $subsystem->get_variant_code( $subsystem->get_genome_index( $_ ) )."]"
143                              } @genomes;                              } @genomes;
144    
145        @genomes = ('0', @genomes);
146        $genome_labels{'0'} = 'please select a genome to color the diagram with' ;
147    
148    
149      # generate the content      # generate the content
150      my $content = "<h1>Subsystem: $subsystem_pretty</h1>";      my $content = "<h1>Subsystem: $subsystem_pretty</h1>";
151      $content .= '<hr/>';      $content .= '<hr/>';
152    
153      $content .= $cgi->start_form();      $content .= $cgi->start_form( -id => 'diagram_select_genome' );
154      $content .= $cgi->hidden( -name  => 'subsystem_name',      $content .= $cgi->hidden( -name  => 'subsystem_name',
155                                -value => $subsystem_name );                                -value => $subsystem_name );
156      $content .= $cgi->hidden( -name  => 'diagram',      $content .= $cgi->hidden( -name  => 'diagram',
# Line 137  Line 159 
159          if ($cgi->param('dont_scale'));          if ($cgi->param('dont_scale'));
160      $content .= $cgi->hidden( -name  => 'debug', -value => 1 )      $content .= $cgi->hidden( -name  => 'debug', -value => 1 )
161          if ($cgi->param('debug'));          if ($cgi->param('debug'));
162        $content .= '<p>Sort by: '.
163            $cgi->radio_group( -name    => 'sort_by',
164                               -values  => ['name', 'variant_code'],
165                               -default => $sort_by,
166                               -labels  => { 'name' => 'Genome name',
167                                             'variant_code' => 'Variant code, then genome name' },
168                               -onChange => 'document.getElementById("diagram_select_genome").submit();',
169            ).'</p>';
170      $content .= $cgi->popup_menu( -name    => 'genome_id',      $content .= $cgi->popup_menu( -name    => 'genome_id',
171                                    -values  => \@genomes,                                    -values  => \@genomes,
172                                    -default => $genome,                                    -default => $genome,
# Line 177  Line 207 
207      }      }
208      # END      # END
209    
210    
211        # add notes to roles
212        # to reduce the total number of loos role_or, role_and get their notes
213        # attached in the loops further down
214        foreach my $id (@{$d->item_ids_of_type('role')}) {
215            my $role = $subsystem->get_role_from_abbr($id);
216            if ($role) {
217                $d->add_note('role', $id, $role);
218            }
219        }
220    
221    
222      # 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
223      # 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
224      # to set a value there use $lookup->{role_abbr}->{role_abbr} = 1;      # to set a value there use $lookup->{role_abbr}->{role_abbr} = 1;
225      # declared outside if to be available for debug output      # declared outside if to be available for debug output
226      my $lookup = {};      my $lookup = {};
227    
     if ($genome) {  
   
         my @roles = $subsystem->get_roles_for_genome($genome);  
   
228          # find out about role_and          # find out about role_and
229          my $role_and = {};          my $role_and = {};
230          if (scalar(@{$d->item_ids_of_type('role_and')})) {          if (scalar(@{$d->item_ids_of_type('role_and')})) {
# Line 194  Line 232 
232    
233                  $role_and->{$subset} = {};                  $role_and->{$subset} = {};
234    
235                my $note = '';
236                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {
237                      my $r_abbr = $subsystem->get_abbr_for_role($r);                      my $r_abbr = $subsystem->get_abbr_for_role($r);
238                      unless ($r_abbr) {                      unless ($r_abbr) {
239                          die "Unable to get the abbreviation for role '$r'.";                          die "Unable to get the abbreviation for role '$r'.";
240                      }                      }
241    
242                    $note .= "<li>$r</li>";
243                      $lookup->{$r_abbr} = $role_and->{$subset};                      $lookup->{$r_abbr} = $role_and->{$subset};
244                      $role_and->{$subset}->{$r_abbr} = 0;                      $role_and->{$subset}->{$r_abbr} = 0;
245                  }                  }
246                $d->add_note('role_and', $subset, "<h4>Requires all of:</h4><ul>$note</ul>");
247              }              }
248          }          }
249    
# Line 213  Line 254 
254    
255                  $role_or->{$subset} = {};                  $role_or->{$subset} = {};
256    
257                my $note = '';
258                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {                  foreach my $r ($subsystem->get_subsetC_roles($subset)) {
259                      my $r_abbr = $subsystem->get_abbr_for_role($r);                      my $r_abbr = $subsystem->get_abbr_for_role($r);
260    
# Line 220  Line 262 
262                          die "Unable to get the abbreviation for role '$r'.";                          die "Unable to get the abbreviation for role '$r'.";
263                      }                      }
264    
265                    $note .= "<li>$r</li>";
266                      $lookup->{$r_abbr} = $role_or->{$subset};                      $lookup->{$r_abbr} = $role_or->{$subset};
267                      $role_or->{$subset}->{$r_abbr} = 0;                      $role_or->{$subset}->{$r_abbr} = 0;
268                  }                  }
269                $d->add_note('role_or', $subset, "<h4>Requires any of:</h4><ul>$note</ul>");
270              }              }
271          }          }
272    
273    
274        if ($genome) {
275    
276            my @roles = $subsystem->get_roles_for_genome($genome);
277    
278          # check if genome is present in subsystem          # check if genome is present in subsystem
279          # genomes not present, unfortunately return @roles = ( undef )          # genomes not present, unfortunately return @roles = ( undef )
280          if (scalar(@roles) == 0 or          if (scalar(@roles) == 0 or

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3