From f04aaf315ba00a59c68eb967d780f2d7dae338be Mon Sep 17 00:00:00 2001
From: Claus Jonathan Fritzemeier <clausjonathan.fritzemeier@hhu.de>
Date: Wed, 17 Dec 2014 15:08:29 +0100
Subject: [PATCH] bug fixed

---
 R/addReact.R | 21 ++++++++++-----------
 R/rmReact.R  | 12 ++++++++++--
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/R/addReact.R b/R/addReact.R
index 3c6ab34..1705cba 100644
--- a/R/addReact.R
+++ b/R/addReact.R
@@ -211,8 +211,14 @@ addReact <- function(model,
             
             # subsystems
             if (any(is.na(subSystem))) {
-                newsubSys <- rBind(subSys(model),
-                                   rep(FALSE, ncol(subSys(model))))
+            	ss <- subSys(model)
+            	if(ncol(ss)==0){ # if no subSys defined, rbind (see else) failed
+            		dim(ss) <- c(nrow(ss)+1, ncol(ss))
+            		newsubSys <- ss
+            	}
+            	else {
+            		newsubSys <- rBind(ss, rep(FALSE, ncol(subSys(model))))
+            	}
             }
             else {
                 if (is(subSystem, "logical")) {
@@ -230,14 +236,12 @@ addReact <- function(model,
                 newrxnGeneMat   <- rBind(rxnGeneMat(model),
                                          rep(FALSE, ncol(rxnGeneMat(model))))
             }
-            else if (nrow(rxnGeneMat(model)) > 0) {
+            else { #if (nrow(rxnGeneMat(model)) > 0) {
                 newrxnGeneMat <- rxnGeneMat(model)
                 dim(newrxnGeneMat) <- c(nrow(newrxnGeneMat)+1,
                                         ncol(newrxnGeneMat))
             }
-            else {
-                newrxnGeneMat <- rxnGeneMat(model)
-            }
+            # do above else always.
 
             if ( (is.na(gprAssoc)) || (gprAssoc == "") ) {
                 if ((length(gprRules(model)) > 0)) {
@@ -274,14 +278,9 @@ addReact <- function(model,
 	    					newrxnGeneMat <- cBind(newrxnGeneMat,
 		    								   rep(FALSE, nrow(newrxnGeneMat)))
 			    		}
-#                        print("arsch")
 					}
                 }
 
-#                print(newrxnGeneMat)
-#                print(nCols)
-#                print(geneInd)
-            
                 # rxnGeneMat
                 newrxnGeneMat[nCols, geneInd] <- TRUE
  
diff --git a/R/rmReact.R b/R/rmReact.R
index c2cc8ce..3e9ff3c 100644
--- a/R/rmReact.R
+++ b/R/rmReact.R
@@ -148,8 +148,16 @@ rmReact <- function(model, react, rm_met = TRUE) {
       subSys(mod_out)       <- subSys(model)[keepReact, , drop = FALSE]
 
       ag                    <- unique(unlist(genes(mod_out)))
-      ncag                  <- nchar(ag)
-      allGenes(mod_out)     <- ag[which(ncag != 0)]
+      # old code tried to assign NULL to allGenes, if no gene was left.
+      if(length(ag)==0){
+      	allGenes(mod_out)   <- character(0)
+      }
+      else {
+      	ncag                <- nchar(ag)
+     	ag					<- ag[which(ncag != 0)]
+      	allGenes(mod_out)   <- ag
+      }
+      
 
       # reaction to gene mapping
       #SrGMbin     <- rxnGeneMat(mod_out) != 0
-- 
GitLab