From 7d3beb97719952314a71781d6bf4f4e054e249f0 Mon Sep 17 00:00:00 2001 From: Claus Jonathan Fritzemeier <clausjonathan.fritzemeier@hhu.de> Date: Mon, 2 Mar 2015 14:25:15 +0100 Subject: [PATCH] findExchangeReact can now deal with bigger matrices --- R/findExchReact.R | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/R/findExchReact.R b/R/findExchReact.R index 4715a58..6bfe7ff 100644 --- a/R/findExchReact.R +++ b/R/findExchReact.R @@ -45,12 +45,24 @@ findExchReact <- function(model) { } # columns with only one entry - oneEntry <- apply(St, 2, function(x) sum(x != 0) == 1) + if(is(St, "Matrix")){ + oneEntry <- colSums(St != 0)==1 + } + else{ + oneEntry <- apply(St, 2, function(x) sum(x != 0) == 1) + } + if (sum(oneEntry) > 0) { # exchange reactions -- with a -1 or 1 - exchangeReact <- apply(St[ , oneEntry, drop = FALSE], 2, function(x) (sum(x == 1) == 1) | (sum(x == -1) == 1)) - + + if(is(St, "Matrix")){ + exchangeReact <- (colSums(St[ , oneEntry, drop = FALSE] == 1) == 1 | colSums(St[ , oneEntry, drop = FALSE]== -1) == 1) + } + else{ + exchangeReact <- apply(St[ , oneEntry, drop = FALSE], 2, function(x) (sum(x == 1) == 1) | (sum(x == -1) == 1)) + } + # vector with the reaction id's of the exchange reactions ex <- c(1 : dim(St)[2])[oneEntry[exchangeReact]] -- GitLab