diff --git a/DESCRIPTION b/DESCRIPTION index 8d7d6f8e8e3f150abe8cf147ec6eb0766117599c..d1df7728709a8ba11316333a950bbce45d527fd1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: sybil Type: Package Title: Efficient Constrained Based Modelling -Version: 2.0.4 -Date: 2017-07-18 +Version: 2.1.1 +Date: 2018-05-14 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")), @@ -12,7 +12,7 @@ Authors@R: c( person("Abdelmoneim", "Desouki", role = "ctb"), person(c("Martin", "J."), "Lercher", role = "ctb")) Maintainer: C. Jonathan Fritzemeier <clausjonathan.fritzemeier@uni-duesseldorf.de> -Depends: R (>= 2.14.2), Matrix, lattice +Depends: R (>= 3.2.0), Matrix, lattice Imports: methods Suggests: glpkAPI (>= 1.2.8), cplexAPI (>= 1.2.4), clpAPI (>= 1.2.4), lpSolveAPI (>= 5.5.2.0), parallel, grid @@ -21,7 +21,8 @@ URL: Description: This Systems Biology Package (Gelius-Dietrich et. al. (2012) <doi:10.1186/1752-0509-7-125>) 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. The package is easily extendable for additional algorithms. 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-18 09:34:14 UTC; jonathan + mergeReact2Modelorg.R +Packaged: 2018-05-14 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..0478d7af32613189fa777a6470d55c2dc1289cca 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) { # ------------------------------------------------------------------------ # @@ -185,7 +186,7 @@ addReact <- function(model, newRows <- Matrix::Matrix(0, nrow = nNewRows, ncol = react_num(model)) - newS <- Matrix::rBind(newS, newRows) + newS <- rbind(newS, newRows) # new met attrs if(ncol(newMetAttr) > 0){ @@ -219,7 +220,7 @@ addReact <- function(model, newobj_coef <- append(obj_coef(model), obj) # new column in stoichiometric matrix - newS <- cBind(newS, rep(0, nrow(newS))) + newS <- cbind(newS, rep(0, nrow(newS))) # new react Attr # only one new row, /bc we can only add one reaction a time. @@ -235,23 +236,23 @@ addReact <- function(model, newsubSys <- ss } else { - newsubSys <- rBind(ss, rep(FALSE, ncol(subSys(model)))) + newsubSys <- rbind(ss, rep(FALSE, ncol(subSys(model)))) } } else { if (is(subSystem, "logical")) { - newsubSys <- rBind(subSys(model), subSystem) + newsubSys <- rbind(subSys(model), subSystem) } else { nSubsRow <- colnames(subSys(model)) %in% subSystem - newsubSys <- rBind(subSys(model), nSubsRow) + newsubSys <- rbind(subSys(model), nSubsRow) } } # gpr association if (ncol(rxnGeneMat(model)) > 0) { - newrxnGeneMat <- rBind(rxnGeneMat(model), + newrxnGeneMat <- rbind(rxnGeneMat(model), rep(FALSE, ncol(rxnGeneMat(model)))) } else { #if (nrow(rxnGeneMat(model)) > 0) { @@ -293,7 +294,7 @@ addReact <- function(model, } else { for (i in seq(along = gene_rule[["gene"]][new_gene])) { - newrxnGeneMat <- cBind(newrxnGeneMat, + newrxnGeneMat <- cbind(newrxnGeneMat, rep(FALSE, nrow(newrxnGeneMat))) } } @@ -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/doubleReact.R b/R/doubleReact.R index 69b6c5475746d00ae40b9943ebc9d0c977cb4d90..fbf56ab863d7d158ad3e4aa2cf4b2a18b90e920b 100644 --- a/R/doubleReact.R +++ b/R/doubleReact.R @@ -123,7 +123,7 @@ doubleReact <- function(model, checkRev = TRUE, linInd = FALSE) { # Put the columns of S into a new matrix, which contain the same # number of metabolites - Stmp <- cBind(S(model)[, columns[[i]] ]) + Stmp <- cbind(S(model)[, columns[[i]] ]) # translate Stmp into a matrix with the row indices of the # non zero elements 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..0c7cb3aab0676b98ee8695a2d4604f2ddae70613 --- /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 function 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..29ac5e840e90261bfc93e37b90ee5cbf099a7c07 --- /dev/null +++ b/R/reactClass.R @@ -0,0 +1,487 @@ +# 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) + + + 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), " <==> ", " --> ") + + reaction <- paste(react_id(object), + 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/sysBiolAlg_lmomaClass.R b/R/sysBiolAlg_lmomaClass.R index cba013b5e1402d942bf0ecc2028cec16840fb916..7d6944b1f809311edb07d70620344991cc56ab8c 100644 --- a/R/sysBiolAlg_lmomaClass.R +++ b/R/sysBiolAlg_lmomaClass.R @@ -154,7 +154,7 @@ setMethod(f = "initialize", sparse = TRUE) # the final contraint matrix - LHS <- rBind(LHSwt, LHS, crow) + LHS <- rbind(LHSwt, LHS, crow) subalg <- "lmoma_cobra" } 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 8dd55d7d241dc3478fcd7f363f433c54ecdf6422..2608cff2ce707c391637840c237cfe6f084026c5 100644 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -5,15 +5,38 @@ \encoding{UTF-8} \newcommand{\CRANpkg}{\href{https://CRAN.R-project.org/package=#1}{\pkg{#1}}} +% ---------------------------------------------------------------------------- % + +\section{Changes in version 2.1.1 2018-07-17}{ + \itemize{ + \item Package sybilSBML gets rejected on CRAN, but can be downloaded + at \url{http://www.cs.hhu.de/en/research-groups/computational-cell-biology/software.html}. + \item Documentation for \code{react-class} and related methods. + \ + } +} +% ---------------------------------------------------------------------------- % + +\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.4 2017-07-18}{ \itemize{ \item Minor changes for CRAN submission. } } -% ---------------------------------------------------------------------------- % -\section{Changes in version 2.0.3 2017-07-12}{ + +\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. diff --git a/man/addReact.Rd b/man/addReact.Rd index 2470300238be767f106697b71ef271d54d8a27dc..597e0788d64c35b03d416e9527f0121559009a2c 100644 --- a/man/addReact.Rd +++ b/man/addReact.Rd @@ -1,8 +1,12 @@ -\name{addReact} -\alias{addReact} - +\name{addReact,modelorg-method} +\docType{methods} \encoding{utf8} + +\alias{addReact} +\alias{addReact,modelorg-method} +\alias{addReact,modelorg,ANY-method} + \title{ Add/Change Reactions in a Model } @@ -11,9 +15,15 @@ The function \code{addReact} adds one reaction to a metabolic model, or changes one reaction in a metabolic model. } - +\section{Methods}{ + \describe{ + \item{\code{addReact}:}{ + \code{signature(object = "modelorg")}: adds a new reaction to a \code{modelorg} object. + } + } +} \usage{ - addReact(model, +\S4method{addReact}{modelorg}(model, id, met, Scoef, diff --git a/man/mergeReact2Modelorg.Rd b/man/mergeReact2Modelorg.Rd new file mode 100644 index 0000000000000000000000000000000000000000..f451a94ae504fb66306288acbd9ffe717f55e57e --- /dev/null +++ b/man/mergeReact2Modelorg.Rd @@ -0,0 +1,69 @@ +\name{mergeReact2Modelorg} + +\docType{methods} +\encoding{utf8} + +\alias{mergeReact2Modelorg} +\alias{getReaction} +\alias{getReaction,modelorg-method} +\alias{getReaction,modelorg,ANY-method} + +\title{ + Functions to subset and merge modelorg objects. +} +\description{ + The function \code{getReaction} can extract singe \code{react} objects from + a modelorg object. If those \code{react} objects are saved in a list, they + can be passed to the function \code{mergeReact2Modelorg} to combine them to + one new model. +} +\usage{ +mergeReact2Modelorg(reactList = NULL, id = "newModel", name = "") +\S4method{getReaction}{modelorg,ANY}(X, j = NULL, drop = T, tol = SYBIL_SETTINGS("TOLERANCE")) +} +\arguments{ + \item{reactList}{ + list of \code{react} objects +} + \item{id}{ + id for the new \code{modelorg} +} + \item{name}{ + name for the new \code{modelorg} +} +\item{j}{ + defines the reaction numbers or IDs to extract from the model. +} +\item{drop}{ + If FALSE, a list of length 1 is returned. +} +\item{tol}{ + Threshold for coefficients to be unequal zero. +} +\item{X}{ + \code{modelorg} object to extract reactions from. +} +} +\value{ + mergeReact2Modelorg returns a \code{modelorg} object. + + getReaction returns a \code{react} object if \code{length(j) = 1} and \code{drop = TRUE}. Otherwise + a list of \code{react} objects. +} +\author{ + Claus Jonathan Fritzemeier <clausjonathan.fritzemeier@uni-duesseldorf.de> +} + +\seealso{ + \code{\link{modelorg}}, \code{\link{react}} +} +\examples{ + data(Ec_core) + l <- getReaction(Ec_core, j=1:3) + print(l) + m <- mergeReact2Modelorg(l) + print(m) + +} +\keyword{ subset } +\keyword{ merge } diff --git a/man/modelorg-class.Rd b/man/modelorg-class.Rd index dfeb47d779bbd9cd0189f77d9ff4c2d13b05cad5..ad83d5f1a42ccdfe626c48f9eeefdcebd06f715f 100644 --- a/man/modelorg-class.Rd +++ b/man/modelorg-class.Rd @@ -139,6 +139,90 @@ \alias{version<-} \alias{version} +\alias{react-class} +\alias{react} +\alias{comp_attr,react-method} +\alias{comp_attr} +\alias{comp_attr<-,react-method} +\alias{comp_attr<-} +\alias{genes,react-method} +\alias{genes} +\alias{genes<-,react-method} +\alias{genes<-} +\alias{gpr,react-method} +\alias{gpr} +\alias{gpr<-,react-method} +\alias{gpr<-} +\alias{gprRule,react-method} +\alias{gprRule} +\alias{gprRule<-,react-method} +\alias{gprRule<-} +\alias{lowbnd,react-method} +\alias{lowbnd} +\alias{lowbnd<-,react-method} +\alias{lowbnd<-} +\alias{met_attr,react-method} +\alias{met_attr} +\alias{met_attr<-,react-method} +\alias{met_attr<-} +\alias{met_comp,react-method} +\alias{met_comp} +\alias{met_comp<-,react-method} +\alias{met_comp<-} +\alias{met_id,react-method} +\alias{met_id} +\alias{met_id<-,react-method} +\alias{met_id<-} +\alias{met_name,react-method} +\alias{met_name} +\alias{met_name<-,react-method} +\alias{met_name<-} +\alias{mod_attr,react-method} +\alias{mod_attr} +\alias{mod_attr<-,react-method} +\alias{mod_attr<-} +\alias{obj_coef,react-method} +\alias{obj_coef} +\alias{obj_coef<-,react-method} +\alias{obj_coef<-} +\alias{react_attr,react-method} +\alias{react_attr} +\alias{react_attr<-,react-method} +\alias{react_attr<-} +\alias{react_de,react-method} +\alias{react_de} +\alias{react_de<-,react-method} +\alias{react_de<-} +\alias{react_id,react-method} +\alias{react_id} +\alias{react_id<-,react-method} +\alias{react_id<-} +\alias{react_name,react-method} +\alias{react_name} +\alias{react_name<-,react-method} +\alias{react_name<-} +\alias{react_rev,react-method} +\alias{react_rev} +\alias{react_rev<-,react-method} +\alias{react_rev<-} +\alias{react_single,react-method} +\alias{react_single} +\alias{react_single<-,react-method} +\alias{react_single<-} +\alias{s,react-method} +\alias{s} +\alias{s<-,react-method} +\alias{s<-} +\alias{subSys,react-method} +\alias{subSys} +\alias{subSys<-,react-method} +\alias{subSys<-} +\alias{uppbnd,react-method} +\alias{uppbnd} +\alias{uppbnd<-,react-method} +\alias{uppbnd<-} + + \encoding{utf8} \title{Structure of Class "modelorg"} @@ -146,6 +230,10 @@ \description{ Structure of the class \code{"modelorg"}. Objects of that class are returned by functions like \code{\link{readTSVmod}}. + + Structure of the class \code{"react"}. This depicts a subset of a metabolic model + that contains only one reaction. Multiple \code{react} objects can be combined to an + \code{"modelorg"} object. } \section{Objects from the Class}{ diff --git a/man/optsol_blockedReact-class.Rd b/man/optsol_blockedReact-class.Rd index 4f0450be7700183b3a2be87f953bd530aee89247..2a611e2c419d6ed29dccbd9e158a207b21fa2e6e 100644 --- a/man/optsol_blockedReact-class.Rd +++ b/man/optsol_blockedReact-class.Rd @@ -11,7 +11,6 @@ \alias{blocked<-} \alias{react,optsol_blockedReact-method} \alias{react<-,optsol_blockedReact-method} -\alias{react} \alias{react<-} \alias{maxSol,optsol_blockedReact-method} \alias{minSol,optsol_blockedReact-method} diff --git a/man/printReaction-methods.Rd b/man/printReaction-methods.Rd index 715779ac2661ba3eca2a3e1f10a78952a0ceae79..e4e1880af15664da340698ef9bcccd3feea8d61e 100644 --- a/man/printReaction-methods.Rd +++ b/man/printReaction-methods.Rd @@ -7,6 +7,7 @@ \alias{printReaction-methods} \alias{printReaction,modelorg,ANY-method} \alias{printReaction,summaryOptsol,modelorg-method} +\alias{printReaction,react,ANY-method} \title{Print Columns of the Stoichiometric Matrix} @@ -17,6 +18,7 @@ \usage{ \S4method{printReaction}{modelorg,ANY}(object, react, printOut = TRUE, ...) \S4method{printReaction}{summaryOptsol,modelorg}(object, mod, j, ...) +\S4method{printReaction}{react,ANY}(object, printOut = TRUE, ...) } \section{Methods}{ @@ -27,6 +29,9 @@ \item{\code{signature(object = "summaryOptsol", mod = "modelorg")}}{ method to use with objects of class \code{\linkS4class{summaryOptsol}}. } + \item{\code{signature(object = "react", ...)}}{ + method to use with objects of class \code{\linkS4class{react}}. + } } }