diff --git a/R/addReact.R b/R/addReact.R index 3c6ab34c62bb97fe8ce5f687c91c70cedb176d1c..1705cbaa550f462f8a34d63aca2d36868384d0f7 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 c2cc8ce332a54ac7512acdf484f88e72a5037f8c..3e9ff3c5d53bbd48cc31e0b9cd673ecc884bfa9f 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