[Bio] / FigKernelPackages / FIGMODELmodel.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/FIGMODELmodel.pm

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

revision 1.10, Mon Apr 12 17:13:26 2010 UTC revision 1.13, Mon May 10 21:45:44 2010 UTC
# Line 277  Line 277 
277                          my $max = $ClassRow->{MAX}->[0];                          my $max = $ClassRow->{MAX}->[0];
278                          if ($ClassRow->{CLASS}->[0] eq "Positive") {                          if ($ClassRow->{CLASS}->[0] eq "Positive") {
279                                  $class = "Essential =>";                                  $class = "Essential =>";
280                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
281                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative") {
282                                  $class = "Essential <=";                                  $class = "Essential <=";
283                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
284                          } elsif ($ClassRow->{CLASS}->[0] eq "Positive variable") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Positive variable") {
285                                  $class = "Active =>";                                  $class = "Active =>";
286                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
287                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative variable") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative variable") {
288                                  $class = "Active <=";                                  $class = "Active <=";
289                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
290                          } elsif ($ClassRow->{CLASS}->[0] eq "Variable") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Variable") {
291                                  $class = "Active <=>";                                  $class = "Active <=>";
292                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
293                          } elsif ($ClassRow->{CLASS}->[0] eq "Blocked") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Blocked") {
294                                  $class = "Inactive";                                  $class = "Inactive";
295                          } elsif ($ClassRow->{CLASS}->[0] eq "Dead") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Dead") {
# Line 324  Line 324 
324                          my $max = $ClassRow->{MAX}->[$i];                          my $max = $ClassRow->{MAX}->[$i];
325                          if ($ClassRow->{CLASS}->[$i] eq "Positive") {                          if ($ClassRow->{CLASS}->[$i] eq "Positive") {
326                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Essential =>";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Essential =>";
327                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
328                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative") {
329                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Essential <=";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Essential <=";
330                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
331                          } elsif ($ClassRow->{CLASS}->[$i] eq "Positive variable") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Positive variable") {
332                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active =>";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active =>";
333                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
334                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative variable") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative variable") {
335                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=";
336                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
337                          } elsif ($ClassRow->{CLASS}->[$i] eq "Variable") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Variable") {
338                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=>";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=>";
339                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]";                                  $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>";
340                          } elsif ($ClassRow->{CLASS}->[$i] eq "Blocked") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Blocked") {
341                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Inactive";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Inactive";
342                          } elsif ($ClassRow->{CLASS}->[$i] eq "Dead") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Dead") {
# Line 526  Line 526 
526                  my $Row = $rxnTable->get_row($i);                  my $Row = $rxnTable->get_row($i);
527                  if (defined($Row) && defined($Row->{"ASSOCIATED PEG"})) {                  if (defined($Row) && defined($Row->{"ASSOCIATED PEG"})) {
528                          foreach my $GeneSet (@{$Row->{"ASSOCIATED PEG"}}) {                          foreach my $GeneSet (@{$Row->{"ASSOCIATED PEG"}}) {
529                                  $GeneSet =~ s/\+/|/g;                                  my $temp = $GeneSet;
530                                  $GeneSet =~ s/\sAND\s/|/gi;                                  $temp =~ s/\+/|/g;
531                                  $GeneSet =~ s/\sOR\s/|/gi;                                  $temp =~ s/\sAND\s/|/gi;
532                                  $GeneSet =~ s/[\(\)\s]//g;                                  $temp =~ s/\sOR\s/|/gi;
533                                  my @GeneList = split(/\|/,$GeneSet);                                  $temp =~ s/[\(\)\s]//g;
534                                    my @GeneList = split(/\|/,$temp);
535                                  foreach my $Gene (@GeneList) {                                  foreach my $Gene (@GeneList) {
536                                  my $FeatureRow = $self->{_feature_data}->get_row_by_key("fig|".$self->genome().".".$Gene,"ID");                                  my $FeatureRow = $self->{_feature_data}->get_row_by_key("fig|".$self->genome().".".$Gene,"ID");
537                                                  if (!defined($FeatureRow)) {                                                  if (!defined($FeatureRow)) {
# Line 1344  Line 1345 
1345                          }                          }
1346                  }                  }
1347                  $MediaTable->save($self->config("Media directory")->[0].$UniqueFilename."TestMedia.txt");                  $MediaTable->save($self->config("Media directory")->[0].$UniqueFilename."TestMedia.txt");
1348                  system($self->figmodel()->GenerateMFAToolkitCommandLineCall($UniqueFilename,$self->id(),$UniqueFilename."TestMedia",["GapFilling"],{"Default max drain flux" => 0},"GapFill".$self->id().".log",undef));                  system($self->figmodel()->GenerateMFAToolkitCommandLineCall($UniqueFilename,$self->id(),$UniqueFilename."TestMedia",["GapFilling"],{"Default max drain flux" => 0,"Reactions to knockout" => $self->config("permanently knocked out reactions")->[0]},"GapFill".$self->id().".log",undef));
1349                  unlink($self->config("Media directory")->[0].$UniqueFilename."TestMedia.txt");                  unlink($self->config("Media directory")->[0].$UniqueFilename."TestMedia.txt");
1350          } else {          } else {
1351                  system($self->figmodel()->GenerateMFAToolkitCommandLineCall($UniqueFilename,$self->id(),undef,["GapFilling"],undef,"GapFill".$self->id().".log",undef));                  system($self->figmodel()->GenerateMFAToolkitCommandLineCall($UniqueFilename,$self->id(),undef,["GapFilling"],{"Reactions to knockout" => $self->config("permanently knocked out reactions")->[0]},"GapFill".$self->id().".log",undef));
1352          }          }
1353    
1354          #Parse the solutions file for the model and get the reaction list from it          #Parse the solutions file for the model and get the reaction list from it
# Line 1940  Line 1941 
1941          }          }
1942    
1943          #Checking if a biomass reaction already exists          #Checking if a biomass reaction already exists
1944          my $BiomassReactionRow = $self->figmodel()->database()->get_row_by_key("BIOMASS TABLE",$self->id(),"MODELS");          my $BiomassReactionRow = $self->BuildSpecificBiomassReaction();
         if (!defined($BiomassReactionRow)) {  
                 $BiomassReactionRow = $self->BuildSpecificBiomassReaction();  
1945                  if (!defined($BiomassReactionRow)) {                  if (!defined($BiomassReactionRow)) {
1946                          $self->set_status(-2,"Preliminary reconstruction failed: could not generate biomass reaction");                          $self->set_status(-2,"Preliminary reconstruction failed: could not generate biomass reaction");
1947                          $self->figmodel()->error_message("FIGMODEL:CreateModelReactionList: Could not generate biomass function for ".$self->id()."!");                          $self->figmodel()->error_message("FIGMODEL:CreateModelReactionList: Could not generate biomass function for ".$self->id()."!");
1948                          return $self->fail();                          return $self->fail();
1949                  }                  }
         }  
1950          my $ReactionList = $BiomassReactionRow->{"ESSENTIAL REACTIONS"};          my $ReactionList = $BiomassReactionRow->{"ESSENTIAL REACTIONS"};
1951          push(@{$ReactionList},$BiomassReactionRow->{DATABASE}->[0]);          push(@{$ReactionList},$BiomassReactionRow->{DATABASE}->[0]);
1952    
# Line 3588  Line 3586 
3586          my $OrganismID = $self->genome();          my $OrganismID = $self->genome();
3587          #Checking for a biomass override          #Checking for a biomass override
3588          if (defined($self->config("biomass reaction override")->{$OrganismID})) {          if (defined($self->config("biomass reaction override")->{$OrganismID})) {
3589                  $biomassrxn = $self->config("biomass reaction override")->{$OrganismID};                  my $biomassID = $self->config("biomass reaction override")->{$OrganismID};
3590                  print "Overriding biomass template and selecting ".$biomassrxn." for ".$OrganismID.".\n";                  my $tbl = $self->database()->get_table("BIOMASS",1);
3591                    $biomassrxn = $tbl->get_row_by_key($biomassID,"DATABASE");
3592                    print "Overriding biomass template and selecting ".$biomassID." for ".$OrganismID.".\n";
3593          } else {#Creating biomass reaction from the template          } else {#Creating biomass reaction from the template
3594                  #Getting the genome stats                  #Getting the genome stats
3595                  my $genomestats = $self->figmodel()->get_genome_stats($self->genome());                  my $genomestats = $self->figmodel()->get_genome_stats($self->genome());
# Line 3880  Line 3880 
3880    
3881                  #Adding the biomass equation to the biomass table                  #Adding the biomass equation to the biomass table
3882                  my $NewRow = $self->figmodel()->add_biomass_reaction($Equation,$self->id(),"Template:".$self->genome());                  my $NewRow = $self->figmodel()->add_biomass_reaction($Equation,$self->id(),"Template:".$self->genome());
3883                  $biomassrxn = $NewRow->{DATABASE}->[0];                  $biomassrxn = $NewRow;
                 print $biomassrxn."\n";  
3884          }          }
3885          print $biomassrxn."\n";          return $biomassrxn;
         my $BiomassRow = $self->figmodel()->add_model_to_biomass_reaction($biomassrxn,$self->id());  
         return $BiomassRow;  
3886  }  }
3887    
3888  =head3 PrintSBMLFile  =head3 PrintSBMLFile
# Line 4447  Line 4444 
4444          return join("<br>",@{$output});          return join("<br>",@{$output});
4445  }  }
4446    
4447    =head3 remove_obsolete_reactions
4448    Definition:
4449            void FIGMODELmodel->remove_obsolete_reactions();
4450    Description:
4451    =cut
4452    sub remove_obsolete_reactions {
4453            my ($self) = @_;
4454    
4455            (my $dummy,my $translation) = $self->figmodel()->put_two_column_array_in_hash($self->figmodel()->database()->load_multiple_column_file($self->figmodel()->config("Translation directory")->[0]."ObsoleteRxnIDs.txt","\t"));
4456            my $rxnTbl = $self->reaction_table();
4457            if (defined($rxnTbl)) {
4458                    for (my $i=0; $i < $rxnTbl->size(); $i++) {
4459                            my $row = $rxnTbl->get_row($i);
4460                            if (defined($translation->{$row->{LOAD}->[0]}) || defined($translation->{$row->{LOAD}->[0]."r"})) {
4461                                    my $direction = $row->{DIRECTION}->[0];
4462                                    my $newRxn;
4463                                    if (defined($translation->{$row->{LOAD}->[0]."r"})) {
4464                                            $newRxn = $translation->{$row->{LOAD}->[0]."r"};
4465                                            if ($direction eq "<=") {
4466                                                    $direction = "=>";
4467                                            } elsif ($direction eq "=>") {
4468                                                    $direction = "<=";
4469                                            }
4470                                    } else {
4471                                            $newRxn = $translation->{$row->{LOAD}->[0]};
4472                                    }
4473                                    #Checking if the new reaction is already in the model
4474                                    my $newRow = $rxnTbl->get_row_by_key($newRxn,"LOAD");
4475                                    if (defined($newRow)) {
4476                                            #Handling direction
4477                                            if ($newRow->{DIRECTION}->[0] ne $direction) {
4478                                                    $newRow->{DIRECTION}->[0] = "<=>";
4479                                            }
4480                                            push(@{$row->{"ASSOCIATED PEG"}},@{$rxnTbl->get_row($i)->{"ASSOCIATED PEG"}});
4481                                    } else {
4482                                            $rxnTbl->get_row($i)->{LOAD}->[0] = $newRxn;
4483                                            $rxnTbl->get_row($i)->{DIRECTION}->[0] = $direction;
4484                                    }
4485                            }
4486                    }
4487                    $rxnTbl->save();
4488            }
4489    }
4490    
4491  1;  1;

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.13

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3