[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.23, Mon Jul 26 05:53:06 2010 UTC revision 1.26, Thu Aug 5 07:52:30 2010 UTC
# Line 285  Line 285 
285                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";
286                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative") {
287                                  $class = "Essential <=";                                  $class = "Essential <=";
288                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$max)." to ".sprintf("%.3g",$min)."]<br>" : $class.="<br>[Flux: ".$max." to ".$min."]<br>";
289                          } elsif ($ClassRow->{CLASS}->[0] eq "Positive variable") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Positive variable") {
290                                  $class = "Active =>";                                  $class = "Active =>";
291                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";
292                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative variable") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Negative variable") {
293                                  $class = "Active <=";                                  $class = "Active <=";
294                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$max)." to ".sprintf("%.3g",$min)."]<br>" : $class.="<br>[Flux: ".$max." to ".$min."]<br>";
295                          } elsif ($ClassRow->{CLASS}->[0] eq "Variable") {                          } elsif ($ClassRow->{CLASS}->[0] eq "Variable") {
296                                  $class = "Active <=>";                                  $class = "Active <=>";
297                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $class.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $class.="<br>[Flux: ".$min." to ".$max."]<br>";
# Line 332  Line 332 
332                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";
333                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative") {
334                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Essential <=";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Essential <=";
335                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$max)." to ".sprintf("%.3g",$min)."]<br>" : $NewClass.="<br>[Flux: ".$max." to ".$min."]<br>";
336                          } elsif ($ClassRow->{CLASS}->[$i] eq "Positive variable") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Positive variable") {
337                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active =>";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active =>";
338                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";
339                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative variable") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Negative variable") {
340                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=";
341                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$max)." to ".sprintf("%.3g",$min)."]<br>" : $NewClass.="<br>[Flux: ".$max." to ".$min."]<br>";
342                          } elsif ($ClassRow->{CLASS}->[$i] eq "Variable") {                          } elsif ($ClassRow->{CLASS}->[$i] eq "Variable") {
343                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=>";                                  $NewClass = $ClassRow->{MEDIA}->[$i].":Active <=>";
344                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";                                  $brief_flux ? $NewClass.="<br>[Flux: ".sprintf("%.3g",$min)." to ".sprintf("%.3g",$max)."]<br>" : $NewClass.="<br>[Flux: ".$min." to ".$max."]<br>";
# Line 1035  Line 1035 
1035    
1036  sub autocompleteMedia {  sub autocompleteMedia {
1037          my ($self,$newMedia) = @_;          my ($self,$newMedia) = @_;
1038            if (defined($newMedia)) {
1039          return $self->{_data}->autoCompleteMedia($newMedia);          return $self->{_data}->autoCompleteMedia($newMedia);
1040  }  }
1041            return $self->{_data}->autoCompleteMedia();
1042    }
1043    
1044  sub biomassReaction {  sub biomassReaction {
1045          my ($self,$newBiomass) = @_;          my ($self,$newBiomass) = @_;
# Line 3764  Line 3767 
3767          #Checking for a biomass override          #Checking for a biomass override
3768          if (defined($self->config("biomass reaction override")->{$OrganismID})) {          if (defined($self->config("biomass reaction override")->{$OrganismID})) {
3769                  my $biomassID = $self->config("biomass reaction override")->{$OrganismID};                  my $biomassID = $self->config("biomass reaction override")->{$OrganismID};
3770                  my $tbl = $self->database()->get_table("BIOMASS",1);                  my $tbl = $self->figmodel()->database()->get_table("BIOMASS",1);
3771                  $biomassrxn = $tbl->get_row_by_key($biomassID,"DATABASE");                  $biomassrxn = $tbl->get_row_by_key($biomassID,"DATABASE");
3772                  print "Overriding biomass template and selecting ".$biomassID." for ".$OrganismID.".\n";                  print "Overriding biomass template and selecting ".$biomassID." for ".$OrganismID.".\n";
3773          } else {#Creating biomass reaction from the template          } else {#Creating biomass reaction from the template
# Line 4417  Line 4420 
4420    
4421  =head3 patch_model  =head3 patch_model
4422  Definition:  Definition:
4423          FIGMODELTable:patch results = FIGMODELmodel->patch_model(FIGMODELTable:patch table);          FIGMODELmodel->patch_model([] -or- {} of patch arguments);
4424  Description:  Description:
4425  =cut  =cut
4426  sub patch_model {  sub patch_model {
4427          my ($self,$tbl) = @_;          my ($self,$arguments) = @_;
4428    
4429          #Instantiating table          #Remove rxn00574
         my $results = FIGMODELTable->new(["Reactions","New genes","Old genes","Genes","Roles","Status"],$self->directory()."PatchResults-".$self->id().$self->selected_version().".tbl",["Reaction"],"\t",";",undef);  
         #Getting genome annotations  
         my $features = $self->figmodel()->database()->get_genome_feature_table($self->genome());  
         #Gettubg reaction table  
         my $reactions = $self->reaction_table();  
         #Checking for patched roles  
         for (my $i=0; $i < $tbl->size(); $i++) {  
                 my $row = $tbl->get_row($i);  
                 my @genes = $features->get_rows_by_key($row->{ROLE}->[0],"ROLES");  
                 if (@genes > 0) {  
                         for (my $j=0; $j < @{$row->{REACTIONS}};$j++) {  
                                 my $resultrxn = $results->get_row_by_key($row->{REACTIONS}->[$j],"Reactions");  
                                 if (!defined($resultrxn)) {  
                                         $resultrxn = $results->add_row({"Reactions"=>[$row->{REACTIONS}->[$j]],"Roles"=>[$row->{ROLE}->[0]]});  
                                 }  
                                 my $rxnrow = $reactions->get_row_by_key($row->{REACTIONS}->[$j],"LOAD");  
                                 if (defined($rxnrow) && !defined($resultrxn->{"Old genes"})) {  
                                         $resultrxn->{"Old genes"} = $rxnrow->{"ASSOCIATED PEG"};  
                                         if ($resultrxn->{"Old genes"}->[0] !~ m/GAP|BOF|UNIVERSAL|SPONTANEOUS/) {  
                                                 push(@{$resultrxn->{"Genes"}},@{$resultrxn->{"Old genes"}});  
                                         }  
                                 }  
                                 delete $resultrxn->{"Current gene set"};  
                                 if (defined($resultrxn->{"Genes"})) {  
                                         push(@{$resultrxn->{"Current gene set"}},@{$resultrxn->{"Genes"}});  
                                 }  
                                 for (my $k=0; $k < @genes; $k++) {  
                                         if ($genes[$k]->{ID}->[0] =~ m/(peg\.\d+)/) {  
                                                 my $gene = $1;  
                                                 my $addgene = 1;  
                                                 if (defined($resultrxn->{"Old genes"})) {  
                                                         for (my $m=0; $m < @{$resultrxn->{"Old genes"}}; $m++) {  
                                                                 if ($resultrxn->{"Old genes"}->[$m] =~ m/$gene/) {  
                                                                         $addgene = 0;  
                                                                 }  
                                                         }  
                                                 }  
                                                 if ($addgene == 1) {  
                                                         push(@{$resultrxn->{"New genes"}},$gene);  
                                                         if ($row->{COMPLEX}->[0] ne "0" && defined($resultrxn->{"Current gene set"})) {  
                                                                 my $added = 0;  
                                                                 for (my $m=0; $m < @{$resultrxn->{"Current gene set"}}; $m++) {  
                                                                         if ($row->{COMPLEX}->[0] eq "1") {  
                                                                                 $resultrxn->{"Current gene set"}->[$m] = $resultrxn->{"Current gene set"}->[$m]."+".$gene;  
                                                                                 $added = 1;  
                                                                         } else {  
                                                                                 my @geneset = split(/\+/,$resultrxn->{"Current gene set"}->[$m]);  
                                                                                 for (my $n=0; $n < @geneset;$n++) {  
                                                                                         if ($self->figmodel()->colocalized_genes($geneset[$n],$gene,$self->genome()) == 1) {  
                                                                                                 $resultrxn->{"Current gene set"}->[$m] = $resultrxn->{"Current gene set"}->[$m]."+".$gene;  
                                                                                                 $added = 1;  
                                                                                                 last;  
                                                                                         }  
                                                                                 }  
                                                                         }  
                                                                 }  
                                                                 if ($added == 0) {  
                                                                         push(@{$resultrxn->{"Current gene set"}},$gene);  
                                                                 }  
                                                         } else {  
                                                                 push(@{$resultrxn->{"Current gene set"}},$gene);  
                                                         }  
                                                 }  
                                         }  
                                 }  
                                 delete $resultrxn->{"Genes"};  
                                 push(@{$resultrxn->{"Genes"}},@{$resultrxn->{"Current gene set"}});  
                         }  
                 }  
         }  
4430    
4431          #Ensuring that the old model is preserved          #Adjust biomass reaction
4432          $self->ArchiveModel();  
4433          #Modifing the reaction list  
4434          for (my $i=0; $i < $results->size();$i++) {  
4435                  my $row = $results->get_row($i);          #Check for growth
4436                  my $rxnrow = $reactions->get_row_by_key($row->{"Reactions"}->[0],"LOAD");  
4437                  if (defined($rxnrow)) {          #Regapfill if necessary
4438                          $rxnrow->{"ASSOCIATED PEG"} = $row->{"Genes"};  
4439                  } else {          #Save model changes in history file
                         $reactions->add_row({LOAD=>[$row->{"Reactions"}->[0]],DIRECTIONALITY=>[$self->figmodel()->reversibility_of_reaction($row->{"Reactions"}->[0])],COMPARTMENT=>["c"],"ASSOCIATED PEG"=>$row->{"Genes"},SUBSYSTEM=>["NONE"],CONFIDENCE=>[2],REFERENCE=>["NONE"],NOTES=>["PATCH"]});  
                 }  
         }  
         $reactions->save();  
         $results->save();  
         $self->update_model_stats();  
         $self->PrintModelLPFile();  
         $self->run_default_model_predictions();  
         #Returning results  
         return $results;  
4440  }  }
4441    
4442  =head3 translate_genes  =head3 translate_genes

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.26

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3