[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.25, Mon Jul 26 15:06:50 2010 UTC revision 1.26, Thu Aug 5 07:52:30 2010 UTC
# Line 4420  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.25  
changed lines
  Added in v.1.26

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3