[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.2, Fri Dec 11 21:37:02 2009 UTC revision 1.4, Mon Dec 21 20:05:25 2009 UTC
# Line 438  Line 438 
438          return $self->{_compound_class_table};          return $self->{_compound_class_table};
439  }  }
440    
441    =head3 get_essential_genes
442    Definition:
443            [string::peg ID] = FIGMODELmodel->get_essential_genes(string::media condition);
444    Description:
445            Returns an reference to an array of the predicted essential genes during growth in the input media condition
446    =cut
447    sub get_essential_genes {
448            my ($self,$media) = @_;
449    
450            if (!defined($media)) {
451                    $media = "Complete";
452            }
453            if (!defined($self->{_essential_genes}->{$media})) {
454                    $self->{_essential_genes}->{$media} = undef;
455                    if (-e $self->directory()."EssentialGenes-".$self->id().$self->selected_version()."-".$media.".tbl") {
456                            $self->{_essential_genes}->{$media} = $self->figmodel()->database()->load_single_column_file($self->directory()."EssentialGenes-".$self->id().$self->selected_version()."-".$media.".tbl","");
457                    }
458            }
459    
460            return $self->{_essential_genes}->{$media};
461    }
462    
463  =head3 compound_table  =head3 compound_table
464  Definition:  Definition:
465          FIGMODELTable = FIGMODELmodel->compound_table();          FIGMODELTable = FIGMODELmodel->compound_table();
# Line 892  Line 914 
914          #Checking that the table is defined and the output file exists          #Checking that the table is defined and the output file exists
915          if (defined($result) && defined($result->get_row(0)->{"ESSENTIALGENES"})) {          if (defined($result) && defined($result->get_row(0)->{"ESSENTIALGENES"})) {
916                  $self->figmodel()->database()->print_array_to_file($self->directory()."EssentialGenes-".$self->id()."-".$Media.".tbl",[join("\n",@{$result->get_row(0)->{"ESSENTIALGENES"}})]);                  $self->figmodel()->database()->print_array_to_file($self->directory()."EssentialGenes-".$self->id()."-".$Media.".tbl",[join("\n",@{$result->get_row(0)->{"ESSENTIALGENES"}})]);
917            } else {
918                    $self->figmodel()->error_message("FIGMODELmodel:run_default_model_predictions:could not identify essential reactions for model ".$self->id().$self->selected_version().".");
919                    return $self->figmodel()->fail();
920          }          }
921    
922          #Classifying reactions and compounds          #Classifying reactions and compounds
923          my $tbl = $self->classify_model_reactions($Media);          my $tbl = $self->classify_model_reactions($Media);
924            if (!defined($tbl)) {
925                    $self->figmodel()->error_message("FIGMODELmodel:run_default_model_predictions:could not classify reactions for model ".$self->id().$self->selected_version().".");
926                    return $self->figmodel()->fail();
927            }
928          $tbl->save();          $tbl->save();
929    
930          return $self->figmodel()->success();          return $self->figmodel()->success();
# Line 1140  Line 1169 
1169          for (my $i=($SolutionData->size()-1); $i >=0; $i--) {          for (my $i=($SolutionData->size()-1); $i >=0; $i--) {
1170                  if (defined($SolutionData->get_row($i)->{"Notes"}) && $SolutionData->get_row($i)->{"Notes"}->[0] =~ m/^Recursive/) {                  if (defined($SolutionData->get_row($i)->{"Notes"}) && $SolutionData->get_row($i)->{"Notes"}->[0] =~ m/^Recursive/) {
1171                          my $AllSolutions = substr($SolutionData->get_row($i)->{"Notes"}->[0],15);                          my $AllSolutions = substr($SolutionData->get_row($i)->{"Notes"}->[0],15);
                         print "Solution:".$AllSolutions."\n";  
1172                          my @TempThree = split(/\|/,$AllSolutions);                          my @TempThree = split(/\|/,$AllSolutions);
1173                          if (@TempThree > 0 && $TempThree[0] =~ m/.+:(.+)/) {                          if (@TempThree > 0 && $TempThree[0] =~ m/.+:(.+)/) {
1174                                  my @TempFour = split(/,/,$1);                                  my @TempFour = split(/,/,$1);
# Line 1163  Line 1191 
1191                                                  push(@{$ReactionList},$ID);                                                  push(@{$ReactionList},$ID);
1192                                          }                                          }
1193                                  }                                  }
                                 print "Solution:".$TempThree[0]."\n";  
1194                                  $self->figmodel()->IntegrateGrowMatchSolution($self->id(),undef,$ReactionList,$DirectionList,"GAP FILLING",0,1);                                  $self->figmodel()->IntegrateGrowMatchSolution($self->id(),undef,$ReactionList,$DirectionList,"GAP FILLING",0,1);
1195                          }                          }
1196                          last;                          last;
# Line 1226  Line 1253 
1253          return undef;          return undef;
1254  }  }
1255    
1256    =head3 datagapgen
1257    Definition:
1258            $model->datagapgen($NumberOfProcessors,$ProcessorIndex,$Filename);
1259    =cut
1260    
1261    sub datagapgen {
1262            my ($self,$Media,$KOList,$NoKOList,$suffix) = @_;
1263            #Setting default values for inputs
1264            if (!defined($NoKOList)) {
1265                    $NoKOList = "none";
1266            }
1267            if (!defined($KOList)) {
1268                    $KOList = "none";
1269            }
1270            #Getting unique filename
1271            my $Filename = $self->figmodel()->filename();
1272            if (!defined($suffix)) {
1273                    $suffix = "-".$Media."-".$KOList."-S";
1274            }
1275            $KOList =~ s/,/;/g;
1276            $NoKOList =~ s/,/;/g;
1277            #Running the gap generation
1278            system($self->figmodel()->GenerateMFAToolkitCommandLineCall($Filename,$self->id().$self->selected_version(),$Media,["GapGeneration"],{"Reactions that should always be active" => $NoKOList,"Reactions to knockout" => $KOList,"Reactions that are always blocked" => "none"},"Gapgeneration-".$self->id().$self->selected_version()."-".$Filename.".log",undef,undef));
1279            my $ProblemReport = $self->figmodel()->LoadProblemReport($Filename);
1280            if (!defined($ProblemReport)) {
1281                    $self->figmodel()->error_message("FIGMODEL:GapGenerationAlgorithm;No problem report;".$Filename.";".$self->id().$self->selected_version().";".$Media.";".$KOList.";".$NoKOList);
1282                    return undef;
1283            }
1284            #Clearing the output folder and log file
1285            $self->figmodel()->clearing_output($Filename,$self->directory()."Gapgeneration-".$self->id().$self->selected_version()."-".$Filename.".log");
1286            #Scheduling the testing of this gap filling solution
1287            my $Tbl = FIGMODELTable->new(["Experiment","Solution index","Solution cost","Solution reactions"],$self->directory().$self->id().$self->selected_version()."-GG".$suffix.".txt",undef,";","|",undef);
1288            for (my $j=0; $j < $ProblemReport->size(); $j++) {
1289                    if ($ProblemReport->get_row($j)->{"Notes"}->[0] =~ m/^Recursive\sMILP\s([^)]+)/) {
1290                            my @SolutionList = split(/\|/,$1);
1291                            for (my $k=0; $k < @SolutionList; $k++) {
1292                                    if ($SolutionList[$k] =~ m/(\d+):(.+)/) {
1293                                            $Tbl->add_row({"Experiment"=>[$Media],"Solution index"=>[$k],"Solution cost"=>[$1],"Solution reactions"=>[$2]});
1294                                    }
1295                            }
1296                    }
1297            }
1298            return $Tbl;
1299    }
1300    
1301  =head3 TestSolutions  =head3 TestSolutions
1302  Definition:  Definition:
1303          $model->TestSolutions($ModelID,$NumProcessors,$ProcessorIndex,$GapFill);          $model->TestSolutions($ModelID,$NumProcessors,$ProcessorIndex,$GapFill);
# Line 2036  Line 2108 
2108          7.) Dead: these reactions are disconnected from the network.          7.) Dead: these reactions are disconnected from the network.
2109  =cut  =cut
2110  sub classify_model_reactions {  sub classify_model_reactions {
2111          my ($self,$Media) = @_;          my ($self,$Media,$SaveChanges) = @_;
2112    
2113          #Getting unique file for printing model output          #Getting unique file for printing model output
2114          my $UniqueFilename = $self->figmodel()->filename();          my $UniqueFilename = $self->figmodel()->filename();
# Line 2123  Line 2195 
2195                                  $CpdRow->{MEDIA}->[$index] = $Media;                                  $CpdRow->{MEDIA}->[$index] = $Media;
2196                          }                          }
2197                  }                  }
2198                    if (!defined($SaveChanges) || $SaveChanges == 1) {
2199                  $cpdclasstable->save();                  $cpdclasstable->save();
2200          }          }
2201            }
2202          if (defined($ReactionTB)) {          if (defined($ReactionTB)) {
2203                  for (my $i=0; $i < $ReactionTB->size(); $i++) {                  for (my $i=0; $i < $ReactionTB->size(); $i++) {
2204                          my $Row = $ReactionTB->get_row($i);                          my $Row = $ReactionTB->get_row($i);
# Line 2179  Line 2253 
2253                                  $RxnRow->{MEDIA}->[$index] = $Media;                                  $RxnRow->{MEDIA}->[$index] = $Media;
2254                          }                          }
2255                  }                  }
2256                    if (!defined($SaveChanges) || $SaveChanges == 1) {
2257                  $rxnclasstable->save();                  $rxnclasstable->save();
2258          }          }
2259            }
2260          return ($rxnclasstable,$cpdclasstable);          return ($rxnclasstable,$cpdclasstable);
2261  }  }
2262    

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3