[Bio] / FortyEight / WebPage / GenomeStatistics.pm Repository:
ViewVC logotype

View of /FortyEight/WebPage/GenomeStatistics.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (download) (as text) (annotate)
Fri Aug 10 19:31:34 2007 UTC (12 years, 11 months ago) by paczian
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.1: +1 -1 lines
changed index.cgi to seddviewer.cgi

package WebPage::GenomeStatistics;

use base qw( WebApp::WebPage );

1;

use FIG;
use FIGV;
use FIG_Config;
use CGI;
use Table;

=pod

=head1 NAME

GenomeStatistics - display statistics about a new genome

=head1 DESCRIPTION

WebPage module to display statistics about a new genome, e.g. comparison to another version
of this organism already in the seed.

=head1 METHODS

=over 4

=item * B<output> ()

Returns the html output of the page.

=cut

sub output {
  my ($self) = @_;

  # initialize objects
  my $app = $self->application();
  my $cgi = new CGI;
  my $job = $cgi->param('job');
  my $basedir = $FIG_Config::fortyeight_jobs . "/" . $job;
  my $genome_id = `cat $basedir/GENOME_ID`;
  my $genome_name = `cat $basedir/GENOME`;
  chomp $genome_id;
  my $organism_directory = $basedir . "/rp/" . $genome_id;
  my $fig = FIGV->new($organism_directory);

  # open statistics file
  my $same = 0;
  my $identical = 0;
  my $different = 0;
  my $table_data;
  my $seed_genome_id = undef;
  my $titles;
  my $infos;
  open(FH, $basedir."/rp/".$genome_id."/comparison") or return "could not open comparison file";
  while (<FH>) {
    my $line = $_;
    chomp $line;
    my @row = split /\t/, $line;

    # determine seed genome id
    unless (defined($seed_genome_id)) {
      my $peg_id_2 = $row[3];
      $peg_id_2 =~ /^fig\|(\d+\.\d+)/;
      $seed_genome_id = $1;
    }

    # create popup menu
    push(@$titles, [ undef, undef, 'Subsystems', undef, undef, 'Subsystems', undef ]);
    my $info1 = join('<br>', split(/~/, $row[2]));
    if ($info1 eq "0") {
      $info1 = "- none -"
    }
    my $info2 = join('<br>', split(/~/, $row[5]));
    if ($info2 eq "0") {
      $info2 = "- none -"
    }
    push(@$infos, [ undef, undef, $info1, undef, undef, $info2, undef ]);

    # create feature links
    $row[0] = "<a href='seedviewer.cgi?action=ShowAnnotation&job=$job&prot=" . $row[0] . "' target='seed_viewer'>" . $row[0] . "</a>";
    $row[3] = "<a href='http://anno-3.nmpdr.org/anno/FIG/protein.cgi?user=master&prot=" . $row[3] . "' target='anno_seed'>" . $row[3] . "</a>";

    # count subsystems
    unless ($row[2] eq '0') {
      $row[2] = scalar(split /~/, $row[2]);
    }
    unless ($row[5] eq '0') {
      $row[5] = scalar(split /~/, $row[5]);
    }

    # push the row into the table data
    push(@$table_data, \@row);

    # count some more
    if ($row[6] eq 'same') {
      $identical++;
    } elsif ($row[6] eq 'samefunc') {
      $same++;
    } elsif ($row[6] eq 'different') {
      $different++;
    }
  }
  close FH;
  my $seed_genome_name = $fig->orgname_of_orgid($seed_genome_id);

  # get feature information
  my $features_rast = $fig->all_features_detailed_fast($genome_id);
  my $features_seed = $fig->all_features_detailed_fast($seed_genome_id);

  # set page title
  $self->title('Genome Statistics');

  # start content
  my $html = "<h2>Genome Statistics for $genome_name</h2>";
  $html .= "<p><b>RAST: $genome_name ($genome_id)</b> has been compared to <b>SEED: $seed_genome_name ($seed_genome_id)</b></p>";
  $html .= "<table>";
  $html .= "<tr><th><b>Total #features in RAST</b></th><td>" . scalar(@$features_rast) . "</td></tr>";
  $html .= "<tr><th><b>Total #features in SEED</b></th><td>" . scalar(@$features_seed) . "</td></tr>";
  $html .= "<tr><th><b>#matched features</b></th><td>" . scalar(@$table_data) . "</td></tr>";
  $html .= "<tr><th><b>#identical features</b></th><td>$identical</td></tr>";
  $html .= "<tr><th><b>#same features</b></th><td>$same</td></tr>";
  $html .= "<tr><th><b>#different features</b></th><td>$different</td></tr>";
  $html .= "</table>";

  $html .= "<br><br>";

  my $table = Table::new( { data => $table_data,
			    columns => ['RAST ID','Function RAST','#SS','SEED ID','Function SEED','#SS','Comp'],
			    show_perpage => 1,
			    perpage => 20,
			    show_topbrowse => 1,
			    show_bottombrowse => 1,
			    sortable => 1,
			    popup_menu => { titles => $titles, infos => $infos },
			    operands => { 'RAST ID' => 1,
					  'Function RAST' => 1,
					  'SEED ID' => 1,
					  'Function SEED' => 1,
					  'Comp' => 1 } } );

  $html .= $table;
  
  # return content
  return $html;
}

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3