Skip to content
Snippets Groups Projects
Select Git revision
  • ce28f8a505215adaab8d072b9508ab18ed1c542c
  • master default protected
  • dev
  • sybilNLO
  • gprBug
  • maximumtotalflux
  • easyConstraint
  • switchbug
  • thuong
  • momafix
  • rmReactBug
11 results

changeBounds.R

  • user avatar
    Claus Jonathan Fritzemeier authored
    ce28f8a5
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    changeBounds.R 2.22 KiB
    #  changeBounds.R
    #  FBA and friends with R.
    #
    #  Copyright (C) 2010-2014 Gabriel Gelius-Dietrich, Dpt. for Bioinformatics,
    #  Institute for Informatics, Heinrich-Heine-University, Duesseldorf, Germany.
    #  All right reserved.
    #  Email: geliudie@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/>.
    
    
    ################################################
    # Function: changeBounds
    #
    #
    #
    #
    
    changeBounds <- function(model, react, lb = NULL, ub = NULL) {
    
        if (!is(model, "modelorg")) {
            stop("needs an object of class modelorg!")
        }
      
        checkedIds <- checkReactId(model, react)
        if (!is(checkedIds, "reactId")) {
            stop("argument react is wrong")
        }
    
        if ( (is.null(lb)) && (is.null(ub)) ) {
            lowbnd(model)[react_pos(checkedIds)] <- rep(0, length(checkedIds))
            uppbnd(model)[react_pos(checkedIds)] <- rep(0, length(checkedIds))
        }
        else {
            # set upper bound
            if (!is.null(ub)) {
                stopifnot(is(ub, "numeric"))
                if (length(ub) == 1) {
                    ubnd <- rep(ub, length(checkedIds))
                }
                else {
                    stopifnot(length(ub) == length(checkedIds))
                    ubnd <- ub
                }
                uppbnd(model)[react_pos(checkedIds)] <- ubnd
            }
    
            if (!is.null(lb)) {
                stopifnot(is(lb, "numeric"))
                if (length(lb) == 1) {
                    lbnd <- rep(lb, length(checkedIds))
                }
                else {
                    stopifnot(length(lb) == length(checkedIds))
                    lbnd <- lb
                }
                lowbnd(model)[react_pos(checkedIds)] <- lbnd
            }
        }
    
        return(model)
    
    }