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

View of /FigWebServices/show_log.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (download) (annotate)
Sun May 7 04:04:40 2006 UTC (14 years ago) by overbeek
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, myrast_rel40, 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.2: +8 -0 lines
add ability to log arbitrary correspondences

# -*- perl -*-
#
# Copyright (c) 2003-2006 University of Chicago and Fellowship
# for Interpretations of Genomes. All Rights Reserved.
#
# This file is part of the SEED Toolkit.
# 
# The SEED Toolkit is free software. You can redistribute
# it and/or modify it under the terms of the SEED Toolkit
# Public License. 
#
# You should have received a copy of the SEED Toolkit Public License
# along with this program; if not write to the University of Chicago
# at info@ci.uchicago.edu or the Fellowship for Interpretation of
# Genomes at veronika@thefig.info or download a copy from
# http://www.theseed.org/LICENSE.TXT.
#


use FIG;
my $fig = new FIG;

use URI::Escape;  # uri_escape
use HTML;

use CGI;
use Tracer;

my $cgi = new CGI;

use Carp;

if (0) {
    my $VAR1;
    eval(join("",`cat /tmp/log_parms`));
    $cgi = $VAR1;
#   print STDERR &Dumper($cgi);
}

if (0) {
    print $cgi->header;
    my @params = $cgi->param;
    print "<pre>\n";
    foreach $_ (@params) {
		print "$_\t:",join(",",$cgi->param($_)),":\n";
    }

    if (0) {
        if (open(TMP,">/tmp/log_parms")) {
	    	print TMP &Dumper($cgi);
	    	close(TMP);
		}
    }
    exit;
}

my $html = [];



if ($request = $cgi->param('request'))
{
    &process_request($fig,$cgi,$html,$request);
    exit;
}
####  no request, show initial form ####A

push(@$html,$cgi->h1("Genome Log"));
if (open(INDEX,"<$FIG_Config::data/Logs/GenomeLog/index"))
{
    my @tmp;
    my $col_hdrs = ["Genome"];
    while (defined($_ = <INDEX>))
    {
	if ($_ =~ /^(\d+)\t(\S.*\S)/)
	{
	    my($i,$gs) = ($1,$2);
	    my $gsE = $cgi->escape($gs);
	    my $link = $cgi->url(-relative => 1) . "?request=show_log&which=$i&gs=$gsE";
	    my $url  = "<a href=$link>$gs</a>";

	    push(@tmp,[$gs,$url]);
	}
    }
    close(INDEX);
    @tmp = sort { $a->[0] cmp $b->[0] } @tmp;
    $tab = [ map { [$_->[1]] } @tmp];

    push(@$html,&HTML::make_table($col_hdrs,$tab,"Genomes For Which Logs Exist"));
}
else
{
    push(@$html,$cgi->h2("No log exists"));
}

&HTML::show_page($cgi,$html);

sub process_request {
    my($fig,$cgi,$html,$request) = @_;
    my($which,$gs);

    if (($request eq "show_log") && 
	($which = $cgi->param('which')) &&
	($gs = $cgi->unescape($cgi->param('gs'))) &&
	open(LOG,"<$FIG_Config::data/Logs/GenomeLog/Entries/$which/log"))
    {
	$/ = "\n//\n";
	while (defined($log_entry = <LOG>))
	{
	    chomp $log_entry;
	    my($ts,$who,$genome,@msg) = split(/\n/,$log_entry);
	    push(@$tab,[$fig->epoch_to_readable($ts),$who,$genome,&make_readable_extra($fig,$cgi,\@msg)]);
	}
	$/ = "\n";
	push(@$html,&HTML::make_table(["When","Who","Genome","What"],$tab,"Events: $gs"));
    }
    elsif (($request eq "display_map") && ($map = $cgi->param('map')) && (-s $map))
    {
	&show_map($fig,$cgi,$html,$map);
    }
    else
    {
	push(@$html,$cgi->h2("Invalid request"));
    }
    &HTML::show_page($cgi,$html);
}

sub make_readable_extra {
    my($fig,$cgi,$msg) = @_;
    my($hdr,$genomeF,$map);

    if (($msg->[0] =~ /^(Replaced genome \d+\.\d+ with \d+\.\d+)/) && ($hdr = $1) &&
	($msg->[2] =~ /^(\S[^,]+),(\S[^,]+)/) && ($genomeF = $1) && ($map = $2))
    {
	my $mapE = $cgi->escape($map);
	my $link = $cgi->url(-relative => 1) . "?request=display_map&map=$mapE";
	my $url  = "<a href=$link>map</a>";
	return join("<br>",($hdr,$msg->[1],"Tarred Organism=$genomeF",$url));
    }
    elsif (($msg->[0] =~ /^Logged correspondence/) && ($map = $msg->[1]))
    {
	my $mapE = $cgi->escape($map);
	my $link = $cgi->url(-relative => 1) . "?request=display_map&map=$mapE";
	my $url  = "<a href=$link>map</a>";
	return join("<br>",($msg->[0],$url));
    }

    return join("<br>",@$msg);
}

sub show_map {
    my($fig,$cgi,$html,$map) = @_;

    my $tmpD = "untar$$";
    if (-d $tmpD) { system "/bin/rm -r $tmpD" }
    mkdir($tmpD,0777) || die "could not make $tmpD";
    system "cd $tmpD; tar xzf $map";
    opendir(DIR,$tmpD);
    my @expanded = grep { $_ !~ /^\./ } readdir(DIR);
    closedir(DIR);
    if ((@expanded == 1) && (-s "$tmpD/$expanded[0]"))
    {
	my($x,$y);
	my @entries = sort { $a =~ /^fig\|\d+\.\d+\.[^\.]+\.(\d+)/; $x = $1; 
			     $b =~ /^fig\|\d+\.\d+\.[^\.]+\.(\d+)/; $y = $1; 
			     $x <=> $y
			   }
	              `cat $tmpD/$expanded[0]`;

	push(@$html,"<pre>\n",@entries,"</pre>\n");
    }
    system "rm -r $tmpD";
}

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3