Privates (from "my" definitions)
%COG_fcode = ( J=>"Translation, ribosomal structure and biogenesis", K=>"Transcription", L=>"DNA replication, recombination and repair", D=>"Cell division and chromosome partitioning", O=>"Posttranslational modification, protein turnover, chaperones", M=>"Cell envelope biogenesis, outer membrane", N=>"Cell motility and secretion", P=>"Inorganic ion transport and metabolism", T=>"Signal transduction mechanisms", C=>"Energy production and conservation", G=>"Carbohydrate transport and metabolism", E=>"Amino acid transport and metabolism", F=>"Nucleotide transport and metabolism", H=>"Coenzyme metabolism", I=>"Lipid metabolism", Q=>"Secondary metabolites biosynthesis, transport and catabolism", R=>"General function prediction only", S=>"Function unknown", '-'=>"Non COG" )
None available.
sub substance_layout2
{ &opt_default(output=>"show",filename=>"layout2.html", ptt=>"");
my @args = opt_get(@_);
my $gb = shift @args;
my $filename = shift @args;
my $output = opt_val("output");
my $outfile = opt_val("filename");
my $ptt = opt_val("ptt");
set_gpac($gb, -ptt=>$ptt);
my %gene2id;
foreach my $cds ($gb->cds()){
$gene2id{$gb->{$cds}->{gene}} = $cds;
}
mkdir("graph", 0777);
open(FILE, '>graph/' . $outfile);
print FILE qq(
<html>
<head>
<title>GENESYS: Substance Layout</title>
</head>
<body>
<applet code="GraphInteraction.class" width=800 height=600>
);
print FILE '<param name=functionkey value="';
my $printcode = '';
foreach my $code (keys %COG_fcode){
$printcode .= sprintf("%s\#%s,", $code, $COG_fcode{$code});
}
print FILE $printcode . '">' . "\n";
my @contents;
my %RuleHash;
my $word;
my $number=1;
my ($s, $p, $e) = (1,1,1);
my %Interaction;
my %sum;
open(ERI, $filename)|| die("ERROR: file does not exist\n");
while(<ERI>){
my @substrate=();
my @product=();
my @enzyme=();
tr/\n//d;
@contents=split /\t/;
if($contents[0] eq 'REACTOR'){
$s=$p=$e=1;
$RuleHash{$number}{Type}=shift(@contents);
$RuleHash{$number}{Class}=shift(@contents);
($RuleHash{$number}{Paeth},$RuleHash{$number}{ID})=split(/:/,shift(@contents));
$RuleHash{$number}{Name}=shift(@contents);
$RuleHash{$number}{Enzyme}= (split(/-/,$RuleHash{$number}{ID}))[0];
foreach $word (@contents){
if($word=~/Substrate/){
($RuleHash{$number}{"S_path$s"},$RuleHash{$number}{"S_ID$s"})=split(/:/,(split(/ /,$word))[1]);
$sum{$RuleHash{$number}{"S_ID$s"}}++;
push(@substrate,$RuleHash{$number}{"S_ID$s"});
$RuleHash{$number}{"S_Coeff$s"}=(split(/ /,$word))[2];
$s++;
}elsif($word=~/Product/){
($RuleHash{$number}{"P_path$p"},$RuleHash{$number}{"P_ID$p"})=split(/:/,(split(/ /,$word))[1]);
$sum{$RuleHash{$number}{"P_ID$p"}}++;
push(@product,$RuleHash{$number}{"P_ID$p"});
$RuleHash{$number}{"P_Coeff$p"}=(split(/ /,$word))[2];
$p++;
}elsif($word=~/Effector/){
($RuleHash{$number}{"E_path$e"},$RuleHash{$number}{"E_ID$e"})=split(/:/,(split(/ /,$word))[1]);
$RuleHash{$number}{"E_Coeff$e"}=(split(/ /,$word))[2];
$e++;
}elsif($word=~/Catalyst/){
($RuleHash{$number}{C_path},$RuleHash{$number}{C_ID})=split(/:/,(split(/ /,$word))[1]);
}else{
$RuleHash{$number}{Arg_tag}{(split(/ /,$word))[0]}=(split(/ /,$word))[1];
}
}
$Interaction{$number}{substrate} =\@ substrate;
$Interaction{$number}{product} =\@ product;
$Interaction{$number}{enzyme} = $RuleHash{$number}{Enzyme};
$number++;
}
if($contents[0] eq 'Include'){
$RuleHash{$number}{Type}=shift(@contents);
$RuleHash{$number}{Class}=shift(@contents);
}
}
close(ERI);
my $printinter = '';
print FILE qq(<param name=interaction value=");
for(my $num=0; $num<$number-1; $num++){
for(my $sub=0; $sub<=$#{$Interaction{$num}{substrate}}; $sub++){
my $substrate = ${$Interaction{$num}{substrate}}[$sub];
for(my $pro=0; $pro<=$#{$Interaction{$num}{product}}; $pro++){
my $product = ${$Interaction{$num}{product}}[$pro];
$printinter .= "$substrate-$product,";
}
}
}
substr($printinter, -1, 1) = '';
print FILE $printinter . '">' , "\n";
my $printinteraction = '';
my %substance_list;
print FILE qq(<param name=functionlist value=");
for(my $num=0; $num<$number-1; $num++){
for(my $sub=0; $sub<=$#{$Interaction{$num}{substrate}}; $sub++){
my $substrate = ${$Interaction{$num}{substrate}}[$sub];
if ($substance_list{$substrate} < 1){
$printinteraction .= sprintf("%s\#%s,", $substrate, $gb->{$gene2id{$Interaction{$num}{enzyme}}}->{code});
}
$substance_list{$substrate}++;
for(my $pro=0; $pro<=$#{$Interaction{$num}{product}}; $pro++){
my $product = ${$Interaction{$num}{product}}[$pro];
if ($substance_list{$product} < 1){
$printinteraction .= sprintf("%s\#%s,",
$product, $gb->{$gene2id{$Interaction{$num}{enzyme}}}->{code});
}
$substance_list{$product} ++;
}
}
}
substr($printinteraction, -1, 1) = '';
print FILE $printinteraction . '">' , "\n";
print FILE qq(
</applet>
</body>
</html>
);
return 1 unless ($output eq 'show');
chdir("graph");
system("wget http://www.charite.de/bioinformatics/interaction/Funk.class") unless(-M "Funk.class");
system("wget http://www.charite.de/bioinformatics/interaction/GraphInteraction.class") unless(-M "GraphInteraction.class");
system("wget http://www.charite.de/bioinformatics/interaction/GraphPanel.class") unless(-M "GraphPanel.class");
system("wget http://www.charite.de/bioinformatics/interaction/Member.class") unless(-M "Member.class");
system("wget http://www.charite.de/bioinformatics/interaction/Interaction.class") unless(-M "Interaction.class");
system("wget http://www.charite.de/bioinformatics/interaction/Running.class") unless(-M "Running.class");
system("appletviewer out.html &");
chdir("../");
return 1;} |