diff --git a/DESCRIPTION b/DESCRIPTION index f62fff49383167024761eb0b76f5f7f0670e788b..9aa324e719a4d579d4d39fdfac9f50ba7afc0791 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: sybil Type: Package Title: Efficient Constrained Based Modelling in R -Version: 2.0.3 -Date: 2017-07-12 +Version: 2.1.0 +Date: 2017-07-21 Authors@R: c( person(c("C.", "Jonathan"), "Fritzemeier", role = c("cre", "ctb"), email = "clausjonathan.fritzemeier@uni-duesseldorf.de"), person("Gabriel", "Gelius-Dietrich", role = c("aut")), @@ -21,7 +21,8 @@ URL: Description: This Systems Biology Library for R implements algorithms for constraint based analyses of metabolic networks (e.g. flux-balance analysis (FBA), minimization of metabolic adjustment (MOMA), regulatory on/off minimization (ROOM), robustness analysis and flux variability analysis). Most of the current LP/MILP solvers are supported via additional packages. LazyLoad: yes License: GPL-3 | file LICENSE -Collate: generics.R validmodelorg.R validoptsol.R validreactId.R +Collate: generics.R validmodelorg.R validoptsol.R validreactId.R validreact.R + reactClass.R validreactId_Exch.R validsysBiolAlg.R addAlgorithm.R addExchReact.R addReact.R addSolver.R blockedReact.R bracket_pairs.R ceilValues.R changeBounds.R changeGPR.R @@ -53,7 +54,8 @@ Collate: generics.R validmodelorg.R validoptsol.R validreactId.R sysBiolAlg_lmomaClass.R sysBiolAlg_momaClass.R sysBiolAlg_mtfClass.R sysBiolAlg_mtfEasyConstraintClass.R sysBiolAlg_roomClass.R sybilLogClass.R upgradeModelorg.R -Packaged: 2017-07-12 12:34:14 UTC; jonathan + mergeReact2Modelorg.R +Packaged: 2017-07-21 12:34:14 UTC; jonathan Author: C. Jonathan Fritzemeier [cre, ctb], Gabriel Gelius-Dietrich [aut], Rajen Piernikarczyk [ctb], diff --git a/NAMESPACE b/NAMESPACE index e782ef4835465a07be574fe5c2c7610ae3cb85da..b750218c1187f48e7e88423bd85e7d3971599a43 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,6 +11,7 @@ importFrom("utils", "compareVersion") exportPattern("^[^\\.]") + exportClass( checksol, fluxDistribution, @@ -30,6 +31,7 @@ optsol_robAna, optsol, pointerToProb, ppProc, +react, reactId, sybilError, sybilLog diff --git a/R/addReact.R b/R/addReact.R index 35e6a252a998e9d3147ebc08b7916fbdc6b9b35d..915a5af624f8fa8a62d32441aa33a8aa1d4c13e6 100644 --- a/R/addReact.R +++ b/R/addReact.R @@ -31,19 +31,20 @@ # The algorithm is (more or less) the same. -addReact <- function(model, - id, - met, - Scoef, - reversible = FALSE, - lb = 0, - ub = SYBIL_SETTINGS("MAXIMUM"), - obj = 0, - subSystem = NA, - gprAssoc = NA, - reactName = NA, - metName = NA, - metComp = NA) { +setMethod("addReact", signature(model = "modelorg"), + function(model, + id, + met, + Scoef, + reversible = FALSE, + lb = 0, + ub = SYBIL_SETTINGS("MAXIMUM"), + obj = 0, + subSystem = NA, + gprAssoc = NA, + reactName = NA, + metName = NA, + metComp = NA) { # ------------------------------------------------------------------------ # @@ -410,5 +411,5 @@ addReact <- function(model, return(mod_out) -} +}) diff --git a/R/checksolClass.R b/R/checksolClass.R index 8659abf9d89d79f9a54084dcd679d4039ae23067..3f8c08ad95f321ec85e9e0f8c2d482bd9ab53ccc 100644 --- a/R/checksolClass.R +++ b/R/checksolClass.R @@ -62,7 +62,7 @@ setMethod("num_of_prob", signature(object = "checksol"), } ) -setReplaceMethod("num_of_prob", signature = (object = "checksol"), +setReplaceMethod("num_of_prob", signature(object = "checksol"), function(object, value) { object@num_of_prob <- value return(object) @@ -77,7 +77,7 @@ setMethod("exit_code", signature(object = "checksol"), } ) -setReplaceMethod("exit_code", signature = (object = "checksol"), +setReplaceMethod("exit_code", signature(object = "checksol"), function(object, value) { object@exit_code <- value return(object) @@ -92,7 +92,7 @@ setMethod("exit_num", signature(object = "checksol"), } ) -setReplaceMethod("exit_num", signature = (object = "checksol"), +setReplaceMethod("exit_num", signature(object = "checksol"), function(object, value) { object@exit_num <- value return(object) @@ -107,7 +107,7 @@ setMethod("exit_meaning", signature(object = "checksol"), } ) -setReplaceMethod("exit_meaning", signature = (object = "checksol"), +setReplaceMethod("exit_meaning", signature(object = "checksol"), function(object, value) { object@exit_meaning <- value return(object) @@ -122,7 +122,7 @@ setMethod("status_code", signature(object = "checksol"), } ) -setReplaceMethod("status_code", signature = (object = "checksol"), +setReplaceMethod("status_code", signature(object = "checksol"), function(object, value) { object@status_code <- value return(object) @@ -137,7 +137,7 @@ setMethod("status_num", signature(object = "checksol"), } ) -setReplaceMethod("status_num", signature = (object = "checksol"), +setReplaceMethod("status_num", signature(object = "checksol"), function(object, value) { object@status_num <- value return(object) @@ -153,7 +153,7 @@ setMethod("status_meaning", signature(object = "checksol"), } ) -setReplaceMethod("status_meaning", signature = (object = "checksol"), +setReplaceMethod("status_meaning", signature(object = "checksol"), function(object, value) { object@status_meaning <- value return(object) diff --git a/R/fluxDistributionClass.R b/R/fluxDistributionClass.R index d716d5da1082b61923ed360f871e5ce618201b05..ef3e4466e7cf69ae2ac56e6b567d760f14d26711 100644 --- a/R/fluxDistributionClass.R +++ b/R/fluxDistributionClass.R @@ -72,7 +72,7 @@ setMethod("fluxes", signature(object = "fluxDistribution"), } ) -setReplaceMethod("fluxes", signature = (object = "fluxDistribution"), +setReplaceMethod("fluxes", signature(object = "fluxDistribution"), function(object, value) { object@fluxes <- value return(object) diff --git a/R/generics.R b/R/generics.R index af64b93398d579728264339f40fbcd40d648d6bd..b294389bfb4364df658d908bb0f6cffb79de20bf 100644 --- a/R/generics.R +++ b/R/generics.R @@ -38,6 +38,10 @@ setGeneric(name = "addColsToProb", def = function(lp, ...) { standardGeneric("addColsToProb") } ) +setGeneric(name = "addReact", + def = function(model, ...) { standardGeneric("addReact") } +) + setGeneric(name = "addRows", def = function(lp, nrows, ...) { standardGeneric("addRows") } ) @@ -351,6 +355,10 @@ setGeneric(name = "getObjVal", def = function(lp) { standardGeneric("getObjVal") } ) +setGeneric(name = "getReaction", + def = function(X, ...) { standardGeneric("getReaction") } +) + setGeneric(name = "getRedCosts", def = function(lp) { standardGeneric("getRedCosts") } ) @@ -389,6 +397,13 @@ setGeneric(name = "gprRules<-", def = function(object, value) { standardGeneric("gprRules<-") } ) +setGeneric(name = "gprRule", + def = function(object) { standardGeneric("gprRule") } +) +setGeneric(name = "gprRule<-", + def = function(object, value) { standardGeneric("gprRule<-") } +) + setGeneric(name = "hasEffect", def = function(object) { standardGeneric("hasEffect") } ) @@ -869,6 +884,13 @@ setGeneric(name = "S<-", def = function(object, value) { standardGeneric("S<-") } ) +setGeneric(name = "s", + def = function(object) { standardGeneric("s") } +) +setGeneric(name = "s<-", + def = function(object, value) { standardGeneric("s<-") } +) + setGeneric(name = "scaleProb", def = function(lp, ...) { standardGeneric("scaleProb") } ) diff --git a/R/mergeReact2Modelorg.R b/R/mergeReact2Modelorg.R new file mode 100644 index 0000000000000000000000000000000000000000..2f4f58644c0da9e9e241016d26b6baaad8734285 --- /dev/null +++ b/R/mergeReact2Modelorg.R @@ -0,0 +1,162 @@ +# mergeReact2Modelorg.R +# FBA and friends with R. +# +# Copyright (C) 2010-2017 Claus Jonathan Fritzemeier, Dpt. for Computational Cell Biology, +# Institute for Informatics, Heinrich-Heine-University, Duesseldorf, Germany. +# All right reserved. +# Email: clausjonathan.fritzemeier@uni-duesseldorf.de +# +# This file is part of sybil. +# +# Sybil is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Sybil is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with sybil. If not, see <http://www.gnu.org/licenses/>. + + +# mergeReact2Modelorg + + +################################################ +# Function: mergeReact2Modelorg +# +# Merge react objects into modelorg object +# +# Takes a list of react class instances and returns a modelorg object by +# merging the reactions into one model. + + +#------------------------------------------------------------------------------# +# definition of the class mergeReact2Modelorg # +#------------------------------------------------------------------------------# + + +mergeReact2Modelorg <- function(reactList = NULL, id="newModel", name=""){ + + stopifnot(!is.null(reactList)) + + morg <- new("modelorg", id=id, name=name) + + reacts <- sapply(reactList, react_id) + if(anyDuplicated(reacts)){ + stop("reaction ids have to be unique.") + } + react_id(morg) <- reacts + react_num(morg) <- length(reacts) + + met_id <- unique(unlist(lapply(reactList, met_id))) + met_id(morg) <- met_id + met_num(morg) <- length(met_id(morg)) + + # collecting metabolite names and verifying identical assignments + met_name <- character(length(met_id)) + names(met_name) <- met_id + for(r in reactList){ + if(!all(met_name[met_id(r)] == "" | met_name[met_id(r)] == met_name(r))){ + stop("different metabolite names for same met_id") + } + met_name[met_id(r)] <- met_name(r) + } + met_name(morg) <- met_name + + # collecting metabolite compartments and verifying identical assignments + met_comp <- character(length(met_id)) + names(met_comp) <- met_id + for(r in reactList){ + stopifnot(all(met_comp[met_id(r)] == "" | met_comp[met_id(r)] == met_comp(r))) + met_comp[met_id(r)] <- met_comp(r) + } + mod_compart(morg) <- unique(met_comp) + met_comp(morg) <- match(met_comp, mod_compart(morg)) + + S <- Matrix(0, nrow=length(met_id), ncol=length(reacts)) + for(j in seq(along=reactList)){ + r <- reactList[[j]] + i <- match(met_id(r), met_id) + S[i, j] <- s(r) + } + S(morg) <- S + + subs <- lapply(reactList, subSys) + subsUnique <- unique(unlist(subs)) + + subSys <- Matrix(F, ncol=length(subsUnique), nrow=length(reacts)) + for(i in seq(along=reactList)){ + ss <- setdiff(subSys(r), "") + if(length(ss)> 0 ){ + j <- match(ss, subsUnique) + subSys[i, j] <- T + } + } + colnames(subSys) <- subsUnique + subSys(morg) <- subSys + + gprRules(morg) <- sapply(reactList, gprRule) + gpr(morg) <- sapply(reactList, gpr) + genes(morg) <- lapply(reactList, genes) + allGenes(morg) <- setdiff(unique(unlist(genes(morg))), "") + + + # built react_attr frame: + if(all(sapply(reactList, function(x) nrow(react_attr(x))==0))){ + react_attr(morg) <- data.frame() + }else{ + reactAttrList <- lapply(reactList, function(x){ + df <- react_attr(x) + df$react_id <- react_id(x) + df + }) + reactAttr <- Reduce(function(x, y) merge(x, y, by=intersect(colnames(x), colnames(y)), suffixes=c("", ""), all=TRUE), reactAttrList) + reactAttr <- reactAttr[match(react_id(morg), reactAttr$react_id), ] + reactAttr <- reactAttr[, setdiff(colnames(reactAttr), "react_id"), drop=F] + react_attr(morg) <- reactAttr + } + + # built met_attr frame: + if(all(sapply(reactList, function(x) nrow(met_attr(x))==0))){ + met_attr(morg) <- data.frame() + }else{ + metAttrList <- lapply(reactList, function(x){ + df <- met_attr(x) + df$met_id <- met_id(x) + df + }) + metAttr <- Reduce(function(x, y) merge(x, y, by=intersect(colnames(x), colnames(y)), suffixes=c("", ""), all=TRUE), metAttrList) + metAttr <- metAttr[match(met_id(morg), metAttr$met_id), ] + metAttr <- metAttr[, setdiff(colnames(metAttr), "met_id"), drop=F] + met_attr(morg) <- metAttr + } + + + # built comp_attr frame: + if(all(sapply(reactList, function(x) nrow(comp_attr(x))==0))){ + comp_attr(morg) <- data.frame() + }else{ + compAttrList <- lapply(reactList, function(x){ + df <- comp_attr(x) + df + }) + compAttr <- Reduce(function(x, y) merge(x, y, by=intersect(colnames(x), colnames(y)), suffixes=c("", ""), all=TRUE), compAttrList) + compAttr <- compAttr[match(mod_compart(morg), compAttr$comp_id), ] + compAttr <- compAttr[, setdiff(colnames(compAttr), "comp_id"), drop=F] + comp_attr(morg) <- compAttr + } + + mod_attr(morg) <- data.frame() + stopifnot(validObject(morg, "modelorg")) + return(morg) +} + + + + + + diff --git a/R/modelorgClass.R b/R/modelorgClass.R index 5cd4063e5cd24ab01b9f406e35558bea526576d4..4f6bcf46cca68dffdae5fd47d81366924196d3b3 100644 --- a/R/modelorgClass.R +++ b/R/modelorgClass.R @@ -105,7 +105,7 @@ modelorg <- function(id, name, subSys = NULL, compartment = NULL) { #------------------------------------------------------------------------------# setMethod(f = "initialize", - signature = "modelorg", + signature("modelorg"), definition = function(.Object, id, name, subSys = NULL, compartment = NULL) { @@ -147,7 +147,7 @@ setMethod("mod_id", signature(object = "modelorg"), } ) -setReplaceMethod("mod_id", signature = (object = "modelorg"), +setReplaceMethod("mod_id", signature(object = "modelorg"), function(object, value) { object@mod_id <- value return(object) @@ -162,7 +162,7 @@ setMethod("mod_key", signature(object = "modelorg"), } ) -setReplaceMethod("mod_key", signature = (object = "modelorg"), +setReplaceMethod("mod_key", signature(object = "modelorg"), function(object, value) { object@mod_key <- value return(object) @@ -177,7 +177,7 @@ setMethod("mod_name", signature(object = "modelorg"), } ) -setReplaceMethod("mod_name", signature = (object = "modelorg"), +setReplaceMethod("mod_name", signature(object = "modelorg"), function(object, value) { object@mod_name <- value return(object) @@ -192,7 +192,7 @@ setMethod("mod_desc", signature(object = "modelorg"), } ) -setReplaceMethod("mod_desc", signature = (object = "modelorg"), +setReplaceMethod("mod_desc", signature(object = "modelorg"), function(object, value) { object@mod_desc <- value return(object) @@ -965,7 +965,68 @@ setMethod("printMetabolite", signature(object = "modelorg"), } ) +#------------------------------------------------------------------------------# +setMethod("getReaction", signature(X = "modelorg"), + function(X, j = NULL, drop=T, tol = SYBIL_SETTINGS("TOLERANCE")) { + # translate reaction id's to indices + cj <- checkReactId(X, react = j) + if (!is(cj, "reactId")) { + stop("check argument j") + } + else { + cn <- react_pos(cj) + } + rl <- lapply(cn, function(r){ + s <- S(X)[,r] + + if(nrow(met_attr(X))>0){ + ma <- met_attr(X)[abs(s) > tol, , drop=F] + }else{ + ma <- data.frame() + } + if(nrow(react_attr(X))>0){ + ra <- react_attr(X)[r, , drop=F] + }else{ + ra <- data.frame() + } + if(nrow(comp_attr(X))>0){ + comp <- unique(met_comp(X)[abs(s) > tol]) + ca <- comp_attr(X)[comp, , drop=F] + ca$comp_id <- mod_compart(X)[comp] + }else{ + ca <- data.frame() + } + + new("react", + id=react_id(X)[r], + name=react_name(X)[r], + rev=react_rev(X)[r], + met_id=met_id(X)[abs(s) > tol], + met_name=met_name(X)[abs(s) > tol], + met_comp=mod_compart(X)[met_comp(X)[abs(s) > tol]], + s=s[abs(s) > tol], + lowbnd=lowbnd(X)[r], + uppbnd=uppbnd(X)[r], + obj_coef=obj_coef(X)[r], + gprRule=gprRules(X)[r], + genes=genes(X)[[r]], + gpr = gpr(X)[r], + subSys = colnames(subSys(X))[subSys(X)[r,]], + met_attr = ma, + react_attr = ra, + comp_attr = ca + ) + }) + + if(length(rl) == 1 && drop){ + return(rl[[1]]) + } + + names(rl) <- react_id(X)[cn] + return(rl) + } +) #------------------------------------------------------------------------------# diff --git a/R/modelorg_irrevClass.R b/R/modelorg_irrevClass.R index 9c1850bf56295974228f01cd2a9dc903b6e69852..673ffe6f3d29e722eeb3b22c278260846bb1d9d7 100644 --- a/R/modelorg_irrevClass.R +++ b/R/modelorg_irrevClass.R @@ -83,7 +83,7 @@ setMethod("irrev", signature(object = "modelorg_irrev"), } ) -setReplaceMethod("irrev", signature = (object = "modelorg_irrev"), +setReplaceMethod("irrev", signature(object = "modelorg_irrev"), function(object, value) { object@irrev <- value return(object) @@ -98,7 +98,7 @@ setMethod("matchrev", signature(object = "modelorg_irrev"), } ) -setReplaceMethod("matchrev", signature = (object = "modelorg_irrev"), +setReplaceMethod("matchrev", signature(object = "modelorg_irrev"), function(object, value) { object@matchrev <- value return(object) @@ -113,7 +113,7 @@ setMethod("rev2irrev", signature(object = "modelorg_irrev"), } ) -setReplaceMethod("rev2irrev", signature = (object = "modelorg_irrev"), +setReplaceMethod("rev2irrev", signature(object = "modelorg_irrev"), function(object, value) { object@rev2irrev <- value return(object) @@ -128,7 +128,7 @@ setMethod("irrev2rev", signature(object = "modelorg_irrev"), } ) -setReplaceMethod("irrev2rev", signature = (object = "modelorg_irrev"), +setReplaceMethod("irrev2rev", signature(object = "modelorg_irrev"), function(object, value) { object@irrev2rev<- value return(object) diff --git a/R/netFluxClass.R b/R/netFluxClass.R index 624bf6cabdd3177cea41ad2e7d3568649856abb6..4f9d281d5e79c27af5311617adb452b8a92c9365 100644 --- a/R/netFluxClass.R +++ b/R/netFluxClass.R @@ -75,7 +75,7 @@ setMethod("react_id", signature(object = "netFlux"), } ) -setReplaceMethod("react_id", signature = (object = "netFlux"), +setReplaceMethod("react_id", signature(object = "netFlux"), function(object, value) { object@react_id <- value return(object) diff --git a/R/optsolClass.R b/R/optsolClass.R index 1311b7127d07ae6b558e00d0badea6d79c4c854c..bf550387a659023f4d1e601dbd5ad772ea0ac59e 100644 --- a/R/optsolClass.R +++ b/R/optsolClass.R @@ -78,7 +78,7 @@ setMethod("mod_id", signature(object = "optsol"), } ) -setReplaceMethod("mod_id", signature = (object = "optsol"), +setReplaceMethod("mod_id", signature(object = "optsol"), function(object, value) { object@mod_id <- value return(object) @@ -93,7 +93,7 @@ setMethod("mod_key", signature(object = "optsol"), } ) -setReplaceMethod("mod_key", signature = (object = "optsol"), +setReplaceMethod("mod_key", signature(object = "optsol"), function(object, value) { object@mod_key <- value return(object) @@ -108,7 +108,7 @@ setMethod("solver", signature(object = "optsol"), } ) -setReplaceMethod("solver", signature = (object = "optsol"), +setReplaceMethod("solver", signature(object = "optsol"), function(object, value) { object@solver <- value return(object) @@ -123,7 +123,7 @@ setMethod("method", signature(object = "optsol"), } ) -setReplaceMethod("method", signature = (object = "optsol"), +setReplaceMethod("method", signature(object = "optsol"), function(object, value) { object@method <- value return(object) @@ -138,7 +138,7 @@ setMethod("algorithm", signature(object = "optsol"), } ) -setReplaceMethod("algorithm", signature = (object = "optsol"), +setReplaceMethod("algorithm", signature(object = "optsol"), function(object, value) { object@algorithm <- value return(object) @@ -153,7 +153,7 @@ setMethod("num_of_prob", signature(object = "optsol"), } ) -setReplaceMethod("num_of_prob", signature = (object = "optsol"), +setReplaceMethod("num_of_prob", signature(object = "optsol"), function(object, value) { object@num_of_prob <- value return(object) @@ -168,7 +168,7 @@ setMethod("lp_num_cols", signature(object = "optsol"), } ) -setReplaceMethod("lp_num_cols", signature = (object = "optsol"), +setReplaceMethod("lp_num_cols", signature(object = "optsol"), function(object, value) { object@lp_num_cols <- value return(object) @@ -183,7 +183,7 @@ setMethod("lp_num_rows", signature(object = "optsol"), } ) -setReplaceMethod("lp_num_rows", signature = (object = "optsol"), +setReplaceMethod("lp_num_rows", signature(object = "optsol"), function(object, value) { object@lp_num_rows <- value return(object) @@ -240,7 +240,7 @@ setMethod("lp_obj", signature(object = "optsol"), } ) -setReplaceMethod("lp_obj", signature = (object = "optsol"), +setReplaceMethod("lp_obj", signature(object = "optsol"), function(object, value) { object@lp_obj <- value return(object) @@ -255,7 +255,7 @@ setMethod("lp_ok", signature(object = "optsol"), } ) -setReplaceMethod("lp_ok", signature = (object = "optsol"), +setReplaceMethod("lp_ok", signature(object = "optsol"), function(object, value) { object@lp_ok <- value return(object) @@ -270,7 +270,7 @@ setMethod("lp_stat", signature(object = "optsol"), } ) -setReplaceMethod("lp_stat", signature = (object = "optsol"), +setReplaceMethod("lp_stat", signature(object = "optsol"), function(object, value) { object@lp_stat <- value return(object) @@ -315,7 +315,7 @@ setMethod("fldind", signature(object = "optsol"), } ) -setReplaceMethod("fldind", signature = (object = "optsol"), +setReplaceMethod("fldind", signature(object = "optsol"), function(object, value) { object@fldind <- value return(object) @@ -330,7 +330,7 @@ setMethod("fluxdist", signature(object = "optsol"), } ) -setReplaceMethod("fluxdist", signature = (object = "optsol"), +setReplaceMethod("fluxdist", signature(object = "optsol"), function(object, value) { object@fluxdist <- value return(object) @@ -345,7 +345,7 @@ setMethod("fluxes", signature(object = "optsol"), } ) -setReplaceMethod("fluxes", signature = (object = "optsol"), +setReplaceMethod("fluxes", signature(object = "optsol"), function(object, value) { fluxes(object@fluxdist) <- value return(object) @@ -360,7 +360,7 @@ setMethod("alg_par", signature(object = "optsol"), } ) -setReplaceMethod("alg_par", signature = (object = "optsol"), +setReplaceMethod("alg_par", signature(object = "optsol"), function(object, value) { object@alg_par <- value return(object) diff --git a/R/optsol_blockedReactClass.R b/R/optsol_blockedReactClass.R index 37e6970abe2d71f21858c7666aea2209683c6046..e50af4a78659450e0b7e96c1769d50e5cb28b374 100644 --- a/R/optsol_blockedReactClass.R +++ b/R/optsol_blockedReactClass.R @@ -50,7 +50,7 @@ setMethod("blocked", signature(object = "optsol_blockedReact"), } ) -setReplaceMethod("blocked", signature = (object = "optsol_blockedReact"), +setReplaceMethod("blocked", signature(object = "optsol_blockedReact"), function(object, value) { object@blocked <- value return(object) @@ -65,7 +65,7 @@ setMethod("react", signature(object = "optsol_blockedReact"), } ) -setReplaceMethod("react", signature = (object = "optsol_blockedReact"), +setReplaceMethod("react", signature(object = "optsol_blockedReact"), function(object, value) { object@react <- value return(object) diff --git a/R/optsol_fluxVarClass.R b/R/optsol_fluxVarClass.R index 5ad34c5814348395e36515d48da4e9473a0cb5c9..cc8399415b03c6e34eb5e7b2e46795ac500bd5b3 100644 --- a/R/optsol_fluxVarClass.R +++ b/R/optsol_fluxVarClass.R @@ -48,7 +48,7 @@ setMethod("react", signature(object = "optsol_fluxVar"), } ) -setReplaceMethod("react", signature = (object = "optsol_fluxVar"), +setReplaceMethod("react", signature(object = "optsol_fluxVar"), function(object, value) { object@react <- value return(object) diff --git a/R/optsol_fluxdelClass.R b/R/optsol_fluxdelClass.R index 1017db274df1fcc453c6dc1bc0fc4f8890dad984..e59efea8aa28661b093ed915fc275c3e2762a5e4 100644 --- a/R/optsol_fluxdelClass.R +++ b/R/optsol_fluxdelClass.R @@ -50,7 +50,7 @@ setMethod("chlb", signature(object = "optsol_fluxdel"), } ) -setReplaceMethod("chlb", signature = (object = "optsol_fluxdel"), +setReplaceMethod("chlb", signature(object = "optsol_fluxdel"), function(object, value) { object@chlb <- value return(object) @@ -65,7 +65,7 @@ setMethod("chub", signature(object = "optsol_fluxdel"), } ) -setReplaceMethod("chub", signature = (object = "optsol_fluxdel"), +setReplaceMethod("chub", signature(object = "optsol_fluxdel"), function(object, value) { object@chub <- value return(object) @@ -80,7 +80,7 @@ setMethod("dels", signature(object = "optsol_fluxdel"), } ) -setReplaceMethod("dels", signature = (object = "optsol_fluxdel"), +setReplaceMethod("dels", signature(object = "optsol_fluxdel"), function(object, value) { object@dels <- value return(object) @@ -111,7 +111,7 @@ setMethod("lethal", signature(object = "optsol_fluxdel"), ) -#setMethod("ind2id", signature = (object = "optsol_fluxdel"), +#setMethod("ind2id", signature(object = "optsol_fluxdel"), # function(object, slotN) { # out <- NULL # switch (slotN, @@ -136,7 +136,7 @@ setMethod("lethal", signature(object = "optsol_fluxdel"), #) -setMethod("deleted", signature = (object = "optsol_fluxdel"), +setMethod("deleted", signature(object = "optsol_fluxdel"), function(object, i) { value <- dels(object)[i, ] return(value) diff --git a/R/optsol_genedelClass.R b/R/optsol_genedelClass.R index d58f040bd1a54a271dce4f0573bcaa30f30db48d..eba63cc64d5737ee216120797f784818c5235f46 100644 --- a/R/optsol_genedelClass.R +++ b/R/optsol_genedelClass.R @@ -49,7 +49,7 @@ setMethod("fluxdels", signature(object = "optsol_genedel"), } ) -setReplaceMethod("fluxdels", signature = (object = "optsol_genedel"), +setReplaceMethod("fluxdels", signature(object = "optsol_genedel"), function(object, value) { object@fluxdels <- value return(object) @@ -64,7 +64,7 @@ setMethod("hasEffect", signature(object = "optsol_genedel"), } ) -setReplaceMethod("hasEffect", signature = (object = "optsol_genedel"), +setReplaceMethod("hasEffect", signature(object = "optsol_genedel"), function(object, value) { object@hasEffect <- value return(object) @@ -76,7 +76,7 @@ setReplaceMethod("hasEffect", signature = (object = "optsol_genedel"), # other methods # #------------------------------------------------------------------------------# -#setMethod("ind2id", signature = (object = "optsol_genedel"), +#setMethod("ind2id", signature(object = "optsol_genedel"), # function(object, slotN) { # out <- NULL # switch (slotN, @@ -107,7 +107,7 @@ setReplaceMethod("hasEffect", signature = (object = "optsol_genedel"), #) -setMethod("deleted", signature = (object = "optsol_genedel"), +setMethod("deleted", signature(object = "optsol_genedel"), function(object, i) { value <- fluxdels(object)[[i]] return(value) diff --git a/R/optsol_optimizeProbClass.R b/R/optsol_optimizeProbClass.R index 3c45d48cab9220c839a5dbae593153fc0ccf9e01..ca7880b28e75f12bf5dc59662c59bd30566fd289 100644 --- a/R/optsol_optimizeProbClass.R +++ b/R/optsol_optimizeProbClass.R @@ -92,7 +92,7 @@ setMethod("preProc", signature(object = "optsol_optimizeProb"), } ) -setReplaceMethod("preProc", signature = (object = "optsol_optimizeProb"), +setReplaceMethod("preProc", signature(object = "optsol_optimizeProb"), function(object, value) { object@preProc <- value return(object) @@ -107,7 +107,7 @@ setMethod("postProc", signature(object = "optsol_optimizeProb"), } ) -setReplaceMethod("postProc", signature = (object = "optsol_optimizeProb"), +setReplaceMethod("postProc", signature(object = "optsol_optimizeProb"), function(object, value) { object@postProc <- value return(object) diff --git a/R/optsol_phppClass.R b/R/optsol_phppClass.R index 9d788ff27d711534eb78f92107d77680613d5a76..e8a6ae4c25eaed6d84a1cfa91b8dab3781b327eb 100644 --- a/R/optsol_phppClass.R +++ b/R/optsol_phppClass.R @@ -50,7 +50,7 @@ setMethod("ctrlfl", signature(object = "optsol_phpp"), } ) -setReplaceMethod("ctrlfl", signature = (object = "optsol_phpp"), +setReplaceMethod("ctrlfl", signature(object = "optsol_phpp"), function(object, value) { object@ctrlflm <- value return(object) diff --git a/R/optsol_robAnaClass.R b/R/optsol_robAnaClass.R index 18ca6899a69ea4d2862ee6ccb6aafa2b28f63674..b1baf8c83c0fd301edbc12b699943cdc79f10634 100644 --- a/R/optsol_robAnaClass.R +++ b/R/optsol_robAnaClass.R @@ -49,7 +49,7 @@ setMethod("ctrlr", signature(object = "optsol_robAna"), } ) -setReplaceMethod("ctrlr", signature = (object = "optsol_robAna"), +setReplaceMethod("ctrlr", signature(object = "optsol_robAna"), function(object, value) { object@ctrlr <- value return(object) @@ -64,7 +64,7 @@ setMethod("ctrlfl", signature(object = "optsol_robAna"), } ) -setReplaceMethod("ctrlfl", signature = (object = "optsol_robAna"), +setReplaceMethod("ctrlfl", signature(object = "optsol_robAna"), function(object, value) { object@ctrlfl <- value return(object) diff --git a/R/ppProcClass.R b/R/ppProcClass.R index a38a12228c8beb0fb9f0be83aefa803c101ceb65..b9282cbeb3b5bd3f7a0824ad5c0547e731a9cdb6 100644 --- a/R/ppProcClass.R +++ b/R/ppProcClass.R @@ -68,7 +68,7 @@ setMethod("cmd", signature(object = "ppProc"), } ) -setReplaceMethod("cmd", signature = (object = "ppProc"), +setReplaceMethod("cmd", signature(object = "ppProc"), function(object, value) { object@cmd <- value return(object) @@ -83,7 +83,7 @@ setMethod("pa", signature(object = "ppProc"), } ) -setReplaceMethod("pa", signature = (object = "ppProc"), +setReplaceMethod("pa", signature(object = "ppProc"), function(object, value) { object@pa <- value return(object) @@ -98,7 +98,7 @@ setMethod("ind", signature(object = "ppProc"), } ) -setReplaceMethod("ind", signature = (object = "ppProc"), +setReplaceMethod("ind", signature(object = "ppProc"), function(object, value) { object@ind <- value return(object) diff --git a/R/reactClass.R b/R/reactClass.R new file mode 100644 index 0000000000000000000000000000000000000000..029bf1a85c45af831ff15eb9384169be999280ad --- /dev/null +++ b/R/reactClass.R @@ -0,0 +1,489 @@ +# reactClass.R +# FBA and friends with R. +# +# Copyright (C) 2010-2017 Claus Jonathan Fritzemeier, Dpt. for Computational Cell Biology, +# Institute for Informatics, Heinrich-Heine-University, Duesseldorf, Germany. +# All right reserved. +# Email: clausjonathan.fritzemeier@uni-duesseldorf.de +# +# This file is part of sybil. +# +# Sybil is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Sybil is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with sybil. If not, see <http://www.gnu.org/licenses/>. + + +# reactClass + + +#------------------------------------------------------------------------------# +# definition of the class react # +#------------------------------------------------------------------------------# + +setClass("react", + representation( + react_rev = "logical", # vector reversibilities + react_id = "character", # reaction id + react_name = "character", # reaction name + react_single = "logical", # reaction using metabolites appearing only once in S + react_de = "logical", # reaction using dead end metabolites + react_attr = "data.frame", # reaction attributes + met_id = "character", # metabolites used in this reaction + met_comp = "character", # compartments of metabolites + met_name = "character", # metabolite names + met_attr = "data.frame", # metabolite attributes + comp_attr = "data.frame", # compartment attributes + s = "numeric", # matrix S + lowbnd = "numeric", # reaction lower bound + uppbnd = "numeric", # reaction upper bound + obj_coef = "numeric", # objective coefficient + gprRule = "character", + genes = "character", + gpr = "character", + subSys = "character" + + ), + validity = .validreact +) + + +#------------------------------------------------------------------------------# +# default constructor # +#------------------------------------------------------------------------------# + +setMethod(f = "initialize", + signature = "react", + definition = function(.Object, + id, + name="", + rev=TRUE, + single=NA, + de=NA, + met_id, + met_name=NULL, + met_comp=NULL, + s, + lowbnd=-1000, + uppbnd=1000, + obj_coef=0, + gprRule="", + genes="", + gpr = "", + subSys = "", + met_attr = data.frame(), + react_attr = data.frame(), + comp_attr = data.frame() + ) { + stopifnot(!missing(id)) + stopifnot(!missing(met_id)) + stopifnot(!missing(s)) + + .Object@react_id <- id + .Object@react_name <- name + .Object@react_rev <- rev + .Object@react_single <- single + .Object@react_de <- de + .Object@met_id <- met_id + .Object@met_comp <- met_comp + .Object@met_name <- met_name + .Object@s <- s + .Object@lowbnd <- lowbnd + .Object@uppbnd <- uppbnd + .Object@obj_coef <- obj_coef + .Object@gprRule <- gprRule + .Object@genes <- genes + .Object@gpr <- gpr + .Object@subSys <- subSys + + .Object@met_attr <- met_attr + .Object@react_attr <- react_attr + .Object@comp_attr <- comp_attr + return(.Object) + } +) + + +#------------------------------------------------------------------------------# +# setters and getters # +#------------------------------------------------------------------------------# + +# metabolite id's +setMethod("met_id", signature(object = "react"), + function(object) { + return(object@met_id) + } +) + +setReplaceMethod("met_id", signature(object = "react"), + function(object, value) { + object@met_id <- value + return(object) + } +) + + +# metabolite names +setMethod("met_name", signature(object = "react"), + function(object) { + return(object@met_name) + } +) + +setReplaceMethod("met_name", signature(object = "react"), + function(object, value) { + object@met_name <- value + return(object) + } +) + + +# metabolites compartments +setMethod("met_comp", signature(object = "react"), + function(object) { + return(object@met_comp) + } +) + +setReplaceMethod("met_comp", signature(object = "react"), + function(object, value) { + object@met_comp <- value + return(object) + } +) + + +# reversibilities +setMethod("react_rev", signature(object = "react"), + function(object) { + return(object@react_rev) + } +) + +setReplaceMethod("react_rev", signature(object = "react"), + function(object, value) { + object@react_rev <- value + return(object) + } +) + + +# reaction id's +setMethod("react_id", signature(object = "react"), + function(object) { + return(object@react_id) + } +) + +setReplaceMethod("react_id", signature(object = "react"), + function(object, value) { + object@react_id <- value + return(object) + } +) + + +# reaction names +setMethod("react_name", signature(object = "react"), + function(object) { + return(object@react_name) + } +) + +setReplaceMethod("react_name", signature(object = "react"), + function(object, value) { + object@react_name <- value + return(object) + } +) + + +# singletons +setMethod("react_single", signature(object = "react"), + function(object) { + return(object@react_single) + } +) + +setReplaceMethod("react_single", signature(object = "react"), + function(object, value) { + object@react_single <- value + return(object) + } +) + + +# dead ends +setMethod("react_de", signature(object = "react"), + function(object) { + return(object@react_de) + } +) + +setReplaceMethod("react_de", signature(object = "react"), + function(object, value) { + object@react_de <- value + return(object) + } +) + + +# stoichiometric matrix +setMethod("s", signature(object = "react"), + function(object) { + return(object@s) + } +) + +setReplaceMethod("s", signature(object = "react"), + function(object, value) { + object@s <- value + return(object) + } +) + +# lower bounds +setMethod("lowbnd", signature(object = "react"), + function(object) { + return(object@lowbnd) + } +) + +setReplaceMethod("lowbnd", signature(object = "react"), + function(object, value) { + object@lowbnd <- value + return(object) + } +) + +# upper bounds +setMethod("uppbnd", signature(object = "react"), + function(object) { + return(object@uppbnd) + } +) + +setReplaceMethod("uppbnd", signature(object = "react"), + function(object, value) { + object@uppbnd <- value + return(object) + } +) + + +# objective coefficient +setMethod("obj_coef", signature(object = "react"), + function(object) { + return(object@obj_coef) + } +) + +setReplaceMethod("obj_coef", signature(object = "react"), + function(object, value) { + object@obj_coef <- value + return(object) + } +) + + +# gprRules +setMethod("gprRule", signature(object = "react"), + function(object) { + return(object@gprRule) + } +) + +setReplaceMethod("gprRule", signature(object = "react"), + function(object, value) { + object@gprRule <- value + return(object) + } +) + + +# genes +setMethod("genes", signature(object = "react"), + function(object) { + return(object@genes) + } +) + +setReplaceMethod("genes", signature(object = "react"), + function(object, value) { + object@genes <- value + return(object) + } +) + + +# gpr associations +setMethod("gpr", signature(object = "react"), + function(object) { + return(object@gpr) + } +) + +setReplaceMethod("gpr", signature(object = "react"), + function(object, value) { + object@gpr <- value + return(object) + } +) + + +# reaction sub systems +setMethod("subSys", signature(object = "react"), + function(object) { + return(object@subSys) + } +) + +setReplaceMethod("subSys", signature(object = "react"), + function(object, value) { + object@subSys <- value + return(object) + } +) + + +# metabolites attributes +setMethod("met_attr", signature(object = "react"), + function(object) { + return(object@met_attr) + } +) + +setReplaceMethod("met_attr", signature(object = "react"), + function(object, value) { + object@met_attr <- value + return(object) + } +) + +# reaction attributes +setMethod("react_attr", signature(object = "react"), + function(object) { + return(object@react_attr) + } +) + +setReplaceMethod("react_attr", signature(object = "react"), + function(object, value) { + object@react_attr <- value + return(object) + } +) + +# compartment attributes +setMethod("comp_attr", signature(object = "react"), + function(object) { + return(object@comp_attr) + } +) + +setReplaceMethod("comp_attr", signature(object = "react"), + function(object, value) { + object@comp_attr <- value + return(object) + } +) + +# model attributes +setMethod("mod_attr", signature(object = "react"), + function(object) { + return(object@mod_attr) + } +) + +setReplaceMethod("mod_attr", signature(object = "react"), + function(object, value) { + object@mod_attr <- value + return(object) + } +) + + + +#------------------------------------------------------------------------------# +# other methods # +#------------------------------------------------------------------------------# + +setMethod("show", signature(object = "react"), + function(object) { + cat("react id: ", react_id(object), "\n") + cat("react name: ", react_name(object), "\n") + cat("stoichiometry:\n") + print(data.frame(met_id=met_id(object), s_coef=s(object))) + cat("lower bound: ", lowbnd(object), "\n") + cat("upper bound: ", uppbnd(object), "\n") + cat("objective function: ", obj_coef(object), "\n") + } +) + + +#------------------------------------------------------------------------------# + +# print reactions +setMethod("printReaction", signature(object = "react"), + function(object, printOut = TRUE, ...) { + + mat <- s(object) + reaction <- character(1) + + for (j in seq(along = cind)) { + + met <- met_id(object) + nzv <- mat + + ed <- nzv < 0 + pd <- nzv > 0 + + if (sum(ed) > 0) { + educt <- paste(paste("(", abs(nzv[ed]), ")", sep = ""), + met[ed], collapse = " + ") + } + else { + educt = "" + } + + if (sum(pd) > 0) { + product <- paste(paste("(", nzv[pd], ")", sep = ""), + met[pd], collapse = " + ") + } + else { + product = "" + } + + arrow <- ifelse(react_rev(object)[cind[j]], " <==> ", " --> ") + + reaction[j] <- paste(react_id(check)[j], + paste(educt, product, sep = arrow), sep = "\t") + } + + if (isTRUE(printOut)) { + cat("abbreviation\tequation", reaction, sep = "\n", ...) + } + + return(invisible(reaction)) + + } +) + + + + + + + + + + + diff --git a/R/reactIdClass.R b/R/reactIdClass.R index ca6b6d5783a80a4b80988c941ffd1ce14d30dbd1..eadcfe4f423000e65743150f3c841d6d92a952ef 100644 --- a/R/reactIdClass.R +++ b/R/reactIdClass.R @@ -77,7 +77,7 @@ setMethod("mod_id", signature(object = "reactId"), } ) -setReplaceMethod("mod_id", signature = (object = "reactId"), +setReplaceMethod("mod_id", signature(object = "reactId"), function(object, value) { object@mod_id <- value return(object) @@ -92,7 +92,7 @@ setMethod("mod_key", signature(object = "reactId"), } ) -setReplaceMethod("mod_key", signature = (object = "reactId"), +setReplaceMethod("mod_key", signature(object = "reactId"), function(object, value) { object@mod_key <- value return(object) @@ -107,7 +107,7 @@ setMethod("react_pos", signature(object = "reactId"), } ) -setReplaceMethod("react_pos", signature = (object = "reactId"), +setReplaceMethod("react_pos", signature(object = "reactId"), function(object, value) { object@react_pos <- value return(object) @@ -122,7 +122,7 @@ setMethod("react_id", signature(object = "reactId"), } ) -setReplaceMethod("react_id", signature = (object = "reactId"), +setReplaceMethod("react_id", signature(object = "reactId"), function(object, value) { object@react_id <- value return(object) diff --git a/R/reactId_ExchClass.R b/R/reactId_ExchClass.R index a09be51c779fa9ecddc50d599593ee6e3d0d2156..cb7669cafed8a54b8c1503b9d4bf6c4af9fc8d51 100644 --- a/R/reactId_ExchClass.R +++ b/R/reactId_ExchClass.R @@ -92,7 +92,7 @@ setMethod("met_pos", signature(object = "reactId_Exch"), } ) -setReplaceMethod("met_pos", signature = (object = "reactId_Exch"), +setReplaceMethod("met_pos", signature(object = "reactId_Exch"), function(object, value) { object@met_pos <- value return(object) @@ -107,7 +107,7 @@ setMethod("met_id", signature(object = "reactId_Exch"), } ) -setReplaceMethod("met_id", signature = (object = "reactId_Exch"), +setReplaceMethod("met_id", signature(object = "reactId_Exch"), function(object, value) { object@met_id <- value return(object) @@ -122,7 +122,7 @@ setMethod("lowbnd", signature(object = "reactId_Exch"), } ) -setReplaceMethod("lowbnd", signature = (object = "reactId_Exch"), +setReplaceMethod("lowbnd", signature(object = "reactId_Exch"), function(object, value) { object@lowbnd <- value return(object) @@ -137,7 +137,7 @@ setMethod("uppbnd", signature(object = "reactId_Exch"), } ) -setReplaceMethod("uppbnd", signature = (object = "reactId_Exch"), +setReplaceMethod("uppbnd", signature(object = "reactId_Exch"), function(object, value) { object@uppbnd <- value return(object) @@ -152,7 +152,7 @@ setMethod("uptake", signature(object = "reactId_Exch"), } ) -setReplaceMethod("uptake", signature = (object = "reactId_Exch"), +setReplaceMethod("uptake", signature(object = "reactId_Exch"), function(object, value) { object@uptake <- value return(object) diff --git a/R/summaryOptsolClass.R b/R/summaryOptsolClass.R index ef779e9a1c0eb936b2ca2a55013ddc699e05ca37..66d61113d03af391fcc3201bb0116c27a33b9ade 100644 --- a/R/summaryOptsolClass.R +++ b/R/summaryOptsolClass.R @@ -108,7 +108,7 @@ setMethod("mod_id", signature(object = "summaryOptsol"), } ) -setReplaceMethod("mod_id", signature = (object = "summaryOptsol"), +setReplaceMethod("mod_id", signature(object = "summaryOptsol"), function(object, value) { object@mod_id <- value return(object) @@ -123,7 +123,7 @@ setMethod("mod_key", signature(object = "summaryOptsol"), } ) -setReplaceMethod("mod_key", signature = (object = "summaryOptsol"), +setReplaceMethod("mod_key", signature(object = "summaryOptsol"), function(object, value) { object@mod_key <- value return(object) @@ -138,7 +138,7 @@ setMethod("mod_obj", signature(object = "summaryOptsol"), } ) -setReplaceMethod("mod_obj", signature = (object = "summaryOptsol"), +setReplaceMethod("mod_obj", signature(object = "summaryOptsol"), function(object, value) { object@mod_obj <- value return(object) diff --git a/R/sysBiolAlgClass.R b/R/sysBiolAlgClass.R index 44a6b565456a4f54fb49138c45262d798c00f55e..882ad7897a3fb07a41cba6e83ee1760ae560770a 100644 --- a/R/sysBiolAlgClass.R +++ b/R/sysBiolAlgClass.R @@ -186,7 +186,7 @@ setMethod("algorithm", signature(object = "sysBiolAlg"), } ) -setReplaceMethod("algorithm", signature = (object = "sysBiolAlg"), +setReplaceMethod("algorithm", signature(object = "sysBiolAlg"), function(object, value) { object@algorithm <- value return(object) @@ -201,7 +201,7 @@ setMethod("nr", signature(object = "sysBiolAlg"), } ) -setReplaceMethod("nr", signature = (object = "sysBiolAlg"), +setReplaceMethod("nr", signature(object = "sysBiolAlg"), function(object, value) { object@nr <- value return(object) @@ -216,7 +216,7 @@ setMethod("nc", signature(object = "sysBiolAlg"), } ) -setReplaceMethod("nc", signature = (object = "sysBiolAlg"), +setReplaceMethod("nc", signature(object = "sysBiolAlg"), function(object, value) { object@nc <- value return(object) @@ -231,7 +231,7 @@ setMethod("fldind", signature(object = "sysBiolAlg"), } ) -setReplaceMethod("fldind", signature = (object = "sysBiolAlg"), +setReplaceMethod("fldind", signature(object = "sysBiolAlg"), function(object, value) { object@fldind <- value return(object) @@ -246,7 +246,7 @@ setMethod("alg_par", signature(object = "sysBiolAlg"), } ) -setReplaceMethod("alg_par", signature = (object = "sysBiolAlg"), +setReplaceMethod("alg_par", signature(object = "sysBiolAlg"), function(object, value) { object@alg_par <- value return(object) diff --git a/R/validreact.R b/R/validreact.R new file mode 100644 index 0000000000000000000000000000000000000000..0036dd2923c5e198c89c3f2053862ee09d1a6752 --- /dev/null +++ b/R/validreact.R @@ -0,0 +1,112 @@ +# validreact.R +# FBA and friends with R. +# +# Copyright (C) 2010-2017 Claus Jonathan Fritzemeier, Dpt. for Computational Cell Biology, +# Institute for Informatics, Heinrich-Heine-University, Duesseldorf, Germany. +# All right reserved. +# Email: clausjonathan.fritzemeier@uni-duesseldorf.de +# +# This file is part of sybil. +# +# Sybil is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Sybil is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with sybil. If not, see <http://www.gnu.org/licenses/>. + + +# validreact + + +################################################ +# Function: .validreact +# +# Validity checking of an object of class react. +# +# Returns TRUE if the model is valid, otherwise +# a character String containing a description of +# the error. + + +.validreact <- function(object) { + # data has to have the same length or to be NULL + if(!is(object, "react")){ + "object is not of react class" + } + + if(length(object@id) != 1){ + return("id has to be length 1") + } + if(length(object@name) != 1){ + return("id has to be length 1") + } + + met_count <- length(object@s) + if(met_comp < 1){ + return("reactions have to have at least one metabolite") + } + if(length(object@met_id) == met_count){ + return("s, met_id, met_name, and met_comp have to have the same length") + } + if(length(object@met_name) == met_count && !is.null(object@met_name)){ + return("s, met_id, met_name, and met_comp have to have the same length") + } + if(length(object@met_comp) == met_count && !is.null(object@met_comp)){ + return("s, met_id, met_name, and met_comp have to have the same length") + } + + if(length(object@id)!=1){ + return("length of id has to be 1") + } + if(length(object@rev)!=1){ + return("length of rev has to be 1") + } + if(length(object@name)!=1){ + return("length of name has to be 1") + } + if(length(object@lowbnd)!=1){ + return("length of lowbnd has to be 1") + } + if(length(object@uppbnd)!=1){ + return("length of uppbnd has to be 1") + } + if(length(object@obj_coef)!=1){ + return("length of obj_coef has to be 1") + } + + if(!is.null(gprRule) && length(object@gprRule)!=1){ + return("if not NULL, the length of gprRule has to be 1") + } + if(!is.null(genes) && length(object@genes)!=1){ + return("if not NULL, the length of genes has to be 1") + } + if(!is.null(gpr) && length(object@gpr)!=1){ + return("if not NULL, the length of gpr has to be 1") + } + if(!is.null(subSys) && length(object@subSys)!=1){ + return("if not NULL, the length of subSys has to be 1") + } + + return(TRUE) +} + + + + + + + + + + + + + + diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd index ad994a13064b08be28cccc42414a6bea5794904b..a841bbcceea70a93215c48610080d7a5e0496487 100644 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -6,7 +6,18 @@ \newcommand{\CRANpkg}{\href{http://CRAN.R-project.org/package=#1}{\pkg{#1}}} -\section{Changes in version 2.0.3 2017-07-12}{ +\section{Changes in version 2.1.0 2017-07-17}{ + \itemize{ + \item \code{addReact} is now a method of the \code{modelorg} class. + \item Preparation for \code{sybilNLO}. + \item New reaction object for easy merging and splitting of models. See \code{reactClass}. + \item Typo in setting methods generated an character vector \code{object}. + \ + } +} +% ---------------------------------------------------------------------------- % + +\section{Changes in version 2.0.3 2017-04-20}{ \itemize{ \item The function \code{genrateWT} caused a problem when setting only \code{solverParm} and no solver. \item \code{rmReact} handles now \code{react_attr} and \code{met_attr} corretly, if there is just one column.