[Bio] / DeJonghStuff / load_kegg.pl Repository:
ViewVC logotype

Diff of /DeJonghStuff/load_kegg.pl

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

revision 1.3, Wed Nov 16 16:43:20 2005 UTC revision 1.4, Thu Jan 12 19:53:18 2006 UTC
# Line 1  Line 1 
1    #
2    # Copyright (c) 2003-2006 University of Chicago and Fellowship
3    # for Interpretations of Genomes. All Rights Reserved.
4    #
5    # This file is part of the SEED Toolkit.
6    #
7    # The SEED Toolkit is free software. You can redistribute
8    # it and/or modify it under the terms of the SEED Toolkit
9    # Public License.
10    #
11    # You should have received a copy of the SEED Toolkit Public License
12    # along with this program; if not write to the University of Chicago
13    # at info@ci.uchicago.edu or the Fellowship for Interpretation of
14    # Genomes at veronika@thefig.info or download a copy from
15    # http://www.theseed.org/LICENSE.TXT.
16    #
17    
18    
19  # -*- perl -*-  # -*- perl -*-
20    
# Line 19  Line 36 
36  my $usage = "usage: load_kegg";  my $usage = "usage: load_kegg";
37    
38  use Tracer;  use Tracer;
39  #TSetup('2 *', 'WARN');  TSetup('1 *', 'WARN');
40  &load_ec_and_map_data;  &load_ec_and_map_data;
41  &load_compounds;  &load_compounds;
42  &load_reactions;  &load_reactions;
# Line 134  Line 151 
151    
152  sub load_reactions {  sub load_reactions {
153    
154      my($react,$sub,$prod,@sub,@prod,$subs,$prods,$dir);      my($react,$path,$sub,$prod,@sub,@prod,$subs,$prods,$dir);
155      my($cid,$n,$main,%reaction,$x);      my($cid,$n,$main,%reaction,$x);
156    
157          Trace("Loading reactions.") if T(2);          Trace("Loading reactions.") if T(2);
158      Open(\*REACTION, "<$FIG_Config::data/KEGG/reaction.lst");      Open(\*REACTION, "<$FIG_Config::data/KEGG/reaction.lst");
159      Open(\*RMAIN, "<$FIG_Config::data/KEGG/reaction_main.lst");      Open(\*RMAPFORMULA, "<$FIG_Config::data/KEGG/reaction_mapformula.lst");
160      Open(\*R2C, ">$FIG_Config::temp/reaction_to_compound.table");      Open(\*R2C, ">$FIG_Config::temp/reaction_to_compound.table");
161      Open(\*REV, ">$FIG_Config::temp/rev.table");      Open(\*REV, ">$FIG_Config::temp/rev.table");
162    
# Line 165  Line 182 
182      close(REACTION);      close(REACTION);
183    
184          Trace("Reading main reaction file.") if T(2);          Trace("Reading main reaction file.") if T(2);
185      while (defined($_ = <RMAIN>))  
186        my %reversibility;
187    
188        while (defined($_ = <RMAPFORMULA>))
189      {      {
190                  if ($_ =~ /^(R\d+):\s+(\S.*\S)\s(\<?=\>?)\s(\S.*\S)/)                  if ($_ =~ /^(R\d+):\s+(\d+):\s+(\S.*\S)\s(\<?=\>?)\s(\S.*\S)/)
191                  {                  {
192                          $react = $1;                          $react = $1;
193                          $sub   = $2;                          $path  = $2;
194                          $dir   = $3;                          $sub   = $3;
195                          $prod  = $4;                          $dir   = $4;
196                            $prod  = $5;
197    
198                          if (exists($reaction{$react}))                          if (exists($reaction{$react}))
199                          {                          {
200                              $subs  = $reaction{$react}->[0];                              $subs  = $reaction{$react}->[0];
201                              $prods = $reaction{$react}->[1];                              $prods = $reaction{$react}->[1];
202                              &mark_main($sub,$subs);                              my $rc = &mark_main($sub,$subs);
203                              &mark_main($prod,$prods);  
204                              if (($dir eq "<=") || ($dir eq "=>"))                              if ($rc == 0)
205                                {
206                                    $rc = &mark_main($sub,$prods) && &mark_main($prod,$subs);
207                                }
208                                else
209                                {
210                                    $rc = &mark_main($prod,$prods);
211                                }
212    
213                                if ($rc == 0)
214                              {                              {
215                                  print REV "$react\t0\n";                                  print "Can't handle $_\n";
216                              }                              }
217    
218                              if ($dir eq "<=")                              # entry for the reaction in the context of the pathway
219                                $reversibility{$react.".rn".$path} = $dir;
220    
221                                # since there can be multiple entries per reaction, with different
222                                # reversibility info (in the context of different pathways),
223                                # reversible trumps non-reversible for the general reaction entry
224                                if (($dir eq "<=") || ($dir eq "=>"))
225                                {
226                                    if (! defined($reversibility{$react}))
227                                    {
228                                        $reversibility{$react} = $dir;
229                                    }
230                                    elsif ($reversibility{$react} ne "<=>" && $reversibility{$react} ne $dir)
231                                    {
232                                        $reversibility{$react} = "<=>";
233                                    }
234                                }
235                                else
236                              {                              {
237                                  $reaction{$react}->[0] = $prods;                                  $reversibility{$react} = "<=>";
                                 $reaction{$react}->[1] = $subs;  
238                              }                              }
239                          }                          }
240                  }                  }
241      }      }
242      close(RMAIN);      close(RMAPFORMULA);
243    
244        foreach $react (keys %reversibility)
245        {
246            print REV "$react\t$reversibility{$react}\n";
247        }
248    
249      close(REV);      close(REV);
250    
251          Trace("Connecting reactions to compounds.") if T(2);          Trace("Connecting reactions to compounds.") if T(2);
# Line 222  Line 274 
274      unlink("$FIG_Config::temp/reaction_to_compound.table");      unlink("$FIG_Config::temp/reaction_to_compound.table");
275    
276          $fig->reload_table('all', "reversible",          $fig->reload_table('all', "reversible",
277                                             "rid varchar(8) UNIQUE NOT NULL, reversible char(1), primary key(rid)",                                             "rid varchar(16) UNIQUE NOT NULL, reversible char(3), primary key(rid)",
278                                             { }, "$FIG_Config::temp/rev.table");                                             { }, "$FIG_Config::temp/rev.table");
279      unlink("$FIG_Config::temp/rev.table");      unlink("$FIG_Config::temp/rev.table");
280          Trace("Reactions processed.") if T(2);          Trace("Reactions processed.") if T(2);
# Line 237  Line 289 
289                  for ($i=0; ($i < @$set) && ($set->[$i]->[0] ne $cid); $i++) {}                  for ($i=0; ($i < @$set) && ($set->[$i]->[0] ne $cid); $i++) {}
290                  if ($i == @$set)                  if ($i == @$set)
291                  {                  {
292                          Confess("Cannot handle $cid in $_\n" . Dumper($set));                      # compound id was not found in the reaction
293                        return 0;
294                  }                  }
295                  else                  else
296                  {                  {
297                          $set->[$i]->[2] = 1;                          $set->[$i]->[2] = 1;
298                  }                  }
299      }      }
300    
301        return 1;
302  }  }
303    
304  sub load_catalyzes {  sub load_catalyzes {
# Line 261  Line 316 
316                  {                  {
317                          $rid = $1;                          $rid = $1;
318                          $ecs = $2;                          $ecs = $2;
319                          print "$ecs\n";  
320                          foreach $ec (split(/\s+/,$ecs))                          foreach $ec (split(/\s+/,$ecs))
321                          {                          {
322                              print REAC2ENZ "$rid\t$ec\n";                              print REAC2ENZ "$rid\t$ec\n";

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3