SyBiL Version History


# ------------------------------------------------------- #
Version 1.0.1    2012-03-16
# ------------------------------------------------------- #

- removed sybilSBML from Suggests field and removed function
  readModel.


# ------------------------------------------------------- #
Version 1.0.0    2012-03-16
# ------------------------------------------------------- #

- added method dim to class modelorg

- renamed setColsBndsObjCoefs to changeColsBndsObjCoefs

- updated documentation

- needs glpkAPI >= 1.2.1

- needs cplexAPI >= 1.2.0

- switched from SparseM to Matrix (>= 1.0-4), a consequence
  is R (>= 2.12.0)

- completely new implementation of SYBIL_SETTINGS

- reorganization of files: one class -> one file

- use Collate field in DESCRIPTION file

- stack implementation with new functions stinit, stclear,
  stpush, stpop, stunshift, stshift, stseek, stfirst, stlist,
  stlength and stexists

- a few compatibility changes in readTSVmod for output of
  BiGG database (added arguments quoteChar, commentChar and
  oneSubSystem to readTSVmod).

- added argument minimalSet to modelorg2tsv

- added function geneDeletion for n gene deletions

- fixed a bug in doubleGeneDel() when allComb = FALSE

- added geneDeletion to multiDel

- added argument checkId to geneDel

- arguments poCmd and prCmd to optimizer and simpleFBA must
  be lists

- some improvements in sybilLogClass

- optimizer now makes use of class sybilLog

- removed arguments resolve and resolveParm from optimizer

- removed SyBiL parameters LP_ALT_METHOD and SOLVER_ALT_CTRL_PARAM
  from SYBIL_SETTINGS

- renamed SyBiL parameter LP_SOLVER to SOLVER

- renamed SyBiL parameter LP_METHOD to METHOD

- moved methods length and hist from class optsol_fluxdel
  to class optsol

- added slot num_of_prob in class checksol

- fixed a bug in class optObj when setting parameters to lpSolveAPI

- added arguments connect and colconnect to the plot mathod
  of class optsol_fluxVar

- updated package vignette


# ------------------------------------------------------- #
Version 0.5.11    2011-12-12
# ------------------------------------------------------- #

- fixed a bug in readTSVmod() when reading closed networks

- .createReactionString() now adds the compartment id to the
  metabolite id if it is not already there

- if the metabolite id's do not contain the compartment
  abbreviation in square brackets, the compartment names
  are used by modelorg2tsv().


# ------------------------------------------------------- #
Version 0.5.10    2011-12-09
# ------------------------------------------------------- #

- added arguments exclM and exclR to .singletonMetabolite()

- in readTSVmod: upper and lower bounds which are larger
  than abs(def_bnd) are set to abs(def_bnd).


# ------------------------------------------------------- #
Version 0.5.9    2011-08-30
# ------------------------------------------------------- #

- added slots met_de and react_de to modelorg

- added boolean arguments remMet, contrMet, singletonMet and
  deadEndmet to readTSVmod(), the two boolen arguments
  remSingleMet and constrSingleMet are removed, see
  ?readTSVmod for details


# ------------------------------------------------------- #
Version 0.5.8    2011-08-22
# ------------------------------------------------------- #

- fixed a bug in constructor sybilError

- cplexAPI version >= 1.1.7 required

- checkOptSol() is compatible with cplexAPI version 1.1.7
  in combination with IBM ILOG CPLEX version 12.3


# ------------------------------------------------------- #
Version 0.5.7    2011-08-15
# ------------------------------------------------------- #

- slots met_single and react_single of class modelorg are
  initialized with NA, not FALSE.


# ------------------------------------------------------- #
Version 0.5.6    2011-08-15
# ------------------------------------------------------- #

- some minor changes in readTSVmod() according to codetools

- fixed a bug in class logFileFH


# ------------------------------------------------------- #
Version 0.5.5    2011-08-12
# ------------------------------------------------------- #

- added slots met_single and react_single to modelorg

- new arguments for readTSVmod():
  mergeMet, balanceReact, remUnusedMetReact, remSingleMet,
  constrSingleMet and tol. See ?readSBMLmod for details


# ------------------------------------------------------- #
Version 0.5.4    2011-08-08
# ------------------------------------------------------- #

- method logError returns instance of class sybilError

- fixed a bug in .printNamedList()


# ------------------------------------------------------- #
Version 0.5.3    2011-08-05
# ------------------------------------------------------- #

- added class sybilLog

- added logging in readTSVmod(), see ?readTSVmod for details
  and new arguments


# ------------------------------------------------------- #
Version 0.5.2    2011-07-29
# ------------------------------------------------------- #

- added NAMESPACE

- fixed a minor bug in findExchReact()
- fixed a bug in method show for SYBIL_SETTINGS
- fixed a bug in .validModelorg()

- changes in readTSVmod():

  If a metabolite is used more than once as product or
  educt of a particular reaction, it is merged:
  a + (2) a    is converted to     (3) a
  and a warning will be given.

  If a metabolite is used first as educt and then as
  product of a particular reaction, the reaction is
  balanced:
      (2) b + a -> b + c
  is converted to
          b + a ->     c

  The stoichiometric matrix S is scanned for metabolites,
  which are used only once in S. If there are some, a
  warning will be given.

  The stoichiometric matrix S is scanned for reactions,
  which are not used in S. If there are some, a
  warning will be given and the corresponding reactions
  will be removed from the model.

  Some improvements in parsing the reaction string: if
  more than one reaction arrow is found, a warning is given
  and the reaction will be removed from the model.


# ------------------------------------------------------- #
Version 0.5.1    2011-07-12
# ------------------------------------------------------- #

- support for low level interface glpkAPI (1.1.2)
- support for low level interface clpAPI (1.1.1)
- support for low level interface cplexAPI (1.1.1)

- added new slot in class optObj: probType.
  The constructor optObj() has a new argument 'pType',
  with 'lp' as default value (linear programming).


# ------------------------------------------------------- #
Version 0.5.0    2011-05-20
# ------------------------------------------------------- #

- updated documentation


# ------------------------------------------------------- #
Version 0.4.1    2011-05-18
# ------------------------------------------------------- #

- slot subSys in class modelorg is now of class matrix, so
  one reaction can belong to more than one subsystem:

       cytosol    mitochondria    external
  v_1  TRUE       FALSE           FALSE
  v_2  TRUE       TRUE            FALSE
  v_3  FALSE      TRUE            FALSE
  b_1  FALSE      FALSE           TRUE
  b_2  FALSE      FALSE           TRUE

  In the slot subSys, only the column names are named
  according to the subsystem. The rows do not have names,
  the first row corresponds to the first reaction in slot
  react_id, the second row to the second reaction id, and
  so forth.

- added method getRedCost to class optObj.


# ------------------------------------------------------- #
Version 0.4.0    2011-03-01
# ------------------------------------------------------- #

- SBML compatibility is moved to the package sybilSBML,
  making SyBiL independend from rsbml. The new package
  sybilSBML requires an rsbml installation.

- added functions modelorg2tsv() and readTSVmod() in order
  to handle tsv files compatible to the BIGG database.


# ------------------------------------------------------- #
Version 0.3.6    2010-12-16
# ------------------------------------------------------- #

- fixed a bug in optimizer() when pre/post-processing
  ishould be performed, but no optimization was done.


# ------------------------------------------------------- #
Version 0.3.5    2010-12-15
# ------------------------------------------------------- #

- added argument solverParm in fluxVar(). Argument ... is
  passed to simpleFBA() now.

- cleaning of class optObj:
  * new classes inheriting optObj:
    optObj_glpk, optObj_clp, optObj_cplex and
    optObj_lpSolveAPI.

  * Methods setRhsZero and setColsBndsObjCoefs are not
    usable for initial model creation (this is a feature,
    not a bug). Use addRows and addCols here.

- added stack like functions.


# ------------------------------------------------------- #
Version 0.3.4    2010-11-05
# ------------------------------------------------------- #

- added function multiDel(), multicore support for
  oneGeneDel(), doubleGeneDel(), oneFluxDel()
  and doubleFluxDel().

- fixed a bug in fluxVar().


# ------------------------------------------------------- #
Version 0.3.3    2010-09-28
# ------------------------------------------------------- #

- removed file NAMESPACE.


# ------------------------------------------------------- #
Version 0.3.2    2010-09-22
# ------------------------------------------------------- #

- blockedReact() now works also for irreversible models.


# ------------------------------------------------------- #
Version 0.3.1    2010-09-14
# ------------------------------------------------------- #

- some improvements in readSBMLmod().

- needs rsbml >= 2.4.0


# ------------------------------------------------------- #
Version 0.3.0    2010-08-20
# ------------------------------------------------------- #

- first public beta release


# ------------------------------------------------------- #
Version 0.2.8    2010-08-07
# ------------------------------------------------------- #

- some things were renamed:
  class 'postAnalysis' is now class 'ppProc'.
  function 'postProcessing()' is now
  function '.ppProcessing()'.
  slot 'postAna' in class 'optsol_simpleFBA' is now
  slot 'postProc'.
  argument 'ppCmd' in function simpleFBA() is now
  argument 'poCmd'.

- added slot 'preProc' in class 'optsol_simpleFBA()'.

- added argument 'prCmd' in function simpleFBA():
  same function as argument 'poCmd', but the commands are
  executed immideately before solving the lp problem.


# ------------------------------------------------------- #
Version 0.2.7    2010-08-06
# ------------------------------------------------------- #

- added slot 'lethal' to class optsol_doublefluxdel.

- added method 'ind2id()' to class optsol_fluxdel,
  optsol_genedel and optsol_doublegenedel.

- some minor improvements in doubleGeneDel().

- added classes 'sybilError' and 'postAnalysis'.

- added function postProcessing().

- added slot 'postAna' in class 'optsol_simpleFBA'.

- added method 'sensitivityAnalysis' in class 'optObj'.

- added argument 'ppCmd' in simpleFBA():
  The argument 'ppCmd' should be a character vector. If it
  has a length = 1, it will be treated as a function name,
  if it has length > 1, it will be treated as function name
  (ppCmd[1]) plus arguments (ppCmd[-1]).
  Basically, ppCmd is treated as a command, executed on the
  problem object (an instance of class 'optObj'), after the
  problem has been solved.
  The first element of ppCmd will be used as function name,
  all other elements as arguments to that function. The
  command will be joint with ',' and '()':

  ppCmd[1] "(" ppCmd[-1] ")"

  ppCmd[-1] will be joind with ','.

  The string 'LP_PROB' will be used as a place holder for
  the variable name of the problem object. If 'LP_PROB' is
  used in ppCmd, it will be replaced.
  The result of the execution of ppCmd will be stored in an
  object of class 'postAnalysis' in the slot 'postAna' of
  class 'optsol_simpleFBA'.


  Examples:

  perform sensitivity analysis with GLPK:

  simpleFBA(<model>, ppCmd = "sensitivityAnalysis")

  Here, ppCmd has length = 1, "sensitivityAnalysis" will be
  treated as a function name and executed on the problem
  object.


  access reduced costs in conjunction with IBM ILOG CPLEX:

  simpleFBA(<model>, solver = "cplex",
            ppCmd = c("getDjCPLEX",
                      "LP_PROB@oobj$env", "LP_PROB@oobj$lp",
                      "0", "react_num(<model>)-1"))

  In that example, ppCmd has length > 1, the first element
  is the function name, the others are the arguments. For
  IBM ILOG CPLEX, slot 'oobj' of instances of class 'optObj'
  is a list, containing a pointer to the cplex environment
  'env' and a second pointer to the problem object 'lp'.
  The third and fourth argument are 'begin' and 'end' for
  the function getDjCPLEX(). Remember: in cplex, the first
  element has index 0!

  Instances of class 'postAnalysis' have two slots:

  'cmd': a single character string containing the executed
         command and
  'pa':  the result of the post processing. If an error,
         occured, 'pa' contains the error message and is
         of class 'sybilError'.


# ------------------------------------------------------- #
Version 0.2.6    2010-06-30
# ------------------------------------------------------- #

- fixed a bug in optimizer():
  fluxdistribution was not saved when rebuildModel is set to
  TRUE and the used algorithm is 'linearMOMA'.

- option resolve = TRUE in optimizer() is working again.

- setting of parameters to lp solver with SYBIL_SETTINGS is
  working again.

- improved function blockedReact().


# ------------------------------------------------------- #
Version 0.2.5    2010-06-22
# ------------------------------------------------------- #

- fixed a bug in changeObjCoefs()


# ------------------------------------------------------- #
Version 0.2.4    2010-05-19
# ------------------------------------------------------- #

- fixed a bug in onlyChangeGPR()


# ------------------------------------------------------- #
Version 0.2.3    2010-05-17
# ------------------------------------------------------- #

- fixed a bug in changeGPR()


# ------------------------------------------------------- #
Version 0.2.2    2010-05-12
# ------------------------------------------------------- #

- added function changeGPR()


# ------------------------------------------------------- #
Version 0.2.1    2010-04-28
# ------------------------------------------------------- #

- fixed a small bug in readSBMLmod().

- fixed a bug in optimizer() in conjunction with cplex and
  parameter copyModel = TRUE.


# ------------------------------------------------------- #
Version 0.2.0    2010-04-26
# ------------------------------------------------------- #

- fixed a bug in optObj_Class:
  loadProblemDataML() produced an error when solver = "lpSolveAPI"
  and alg = "linearMOMA_COBRA".

- loadProblemDataMTF() in optObj_Class failed with "cplex".

- fixed a bug in mod2irrev(): slot rev2irrev contained wrong entries.


# ------------------------------------------------------- #
Version 0.1.9    2010-02-28
# ------------------------------------------------------- #

- the argument resolve in optimizer() is not working in this version!

- completely rewritten function simpleFBA().
  new (chenged) arguments:
  react: (default: NA) fluxes with changed lower and upper bounds
  lb: (default: NA) new lower bounds for fluxes in react
  ub: (default: NA) new upper bounds for fluxes in react
  minTotalFlux: (default: FALSE) boolean, if set to TRUE,
      after FBA, the sum of all flux rates will be minimized.
  minDist: (default: FALSE) vboolean, if set to TRUE, a minimized
      distance to a wild type flux distribution will be generated.
  wtFluxes: (default: NA) a single flux value (if minTotalFlux is
      set to TRUE) for on optimized objective function, or a flux
      vector (if minDist is set to TRUE) for an optimized flux
      distribution.
      If wtFluxes is NA, FBA will be performed. If minDist or minTotalFlux
      is TRUE and wtFluxes is NA, the needed values will be calculated
      by an FBA.

- added method backupProb() in class optObj:
  glpk/cplex: the functions copyProbGLPK()/cloneProbCPLEX will be used
      here, which return a pointer to the new problem object.
  clp/lpSolveAPI: the functions saveModelCLP()/write.lp() will be used
      here, which write the specified problem to file. That file will
      be deleted after building the new problem out of those.
      That may cause a lot IO.

- new arguments to optimizer() [can be passed to optimizer() with the ...
  argument in oneGeneDel() or doubleGeneDel()]:
  rebuildModel: (default: FALSE) boolean. If set to TRUE, the problem object
      will be recreated for every optimization.
      That will increase the running time significantly!
  copyModel: (default: FALSE) boolean. If set to TRUE, the problem object
      will be taken from a backup copy. That backup copy will be created
      before the very first optimization from the modelorg object.


# ------------------------------------------------------- #
Version 0.1.8    2010-01-17
# ------------------------------------------------------- #

- option "alg" in optimizer() works now for all lp solvers.

- added the used algorithm in the logfile.

- added dependency on SparseM.

- added options "exLethal" and "tol" to doubleGeneDel().


# ------------------------------------------------------- #
Version 0.1.7    2009-12-07
# ------------------------------------------------------- #

- option "alg" in optimizer(): can be "FBA" (default),
  "linearMOMA" or "linearMOMA_COBRA". works only with glpk.


# ------------------------------------------------------- #
Version 0.1.6    2009-12-03
# ------------------------------------------------------- #

- added method "length" for objects of class "optsol_fluxdel"

- added method "[" for objects of class "optsol_fluxdel"

- added option "alg" in optimizer(): can be "FBA" (default)
  or "linearMOMA". functions only with glpk.

- added slot "algorithm" and methods "algorithm" and "algorithm<-"
  for objects of class "optsol_fluxdel" containing the name
  of the used algorithm.

- added slot "TOLERANCE" in "SYBIL_SETTINGS".

- added slot "MAXIMUM" in "SYBIL_SETTINGS".

- added slot "ALGORITHM" in "SYBIL_SETTINGS".

- added slot "OPT_DIRECTION" in "SYBIL_SETTINGS".


# ------------------------------------------------------- #
Version 0.1.5    2009-11-16
# ------------------------------------------------------- #

- fixed a bug in optObj_Class, method changeColsBnds() when
  using ILOG CPLEX as lp solver

- in optObj_Class the methods getColsLowBnds() and getColsUppBnds()
  now use getLowBndsIdsCPLEX() and getUppBndsIdsCPLEX() respectively
  when using ILOG CPLEX as lp solver


# ------------------------------------------------------- #
Version 0.1.4    2009-10-01
# ------------------------------------------------------- #

- fixed a bug in nonZeroElements():
  empty rows and columns are now handled correctly when
  maorder is set to "column" or "row".


# ------------------------------------------------------- #
Version 0.1.3    2009-07-23
# ------------------------------------------------------- #

- added support for low level interface sybilCPLEX (0.0.2)
    - applied to Class optObj

- minor changes applied to uglyHack.R in order to support
  libsbml version 3.4.1


# ------------------------------------------------------- #
Version 0.1.2    2009-07-21
# ------------------------------------------------------- #

- added setting LP_ALT_METHOD, used for resolve in "optimizer"
  and "refineSol".


# ------------------------------------------------------- #
Version 0.1.1    2009-07-14
# ------------------------------------------------------- #

- added class "SYBIL_SETTINGS" which contains default settings,
  currently for the default lp solver and corresponding method.
  The class contains the relevant set/get methods to fit the
  content to ones needs.

- added method "addRowsCols" to class optObj.

- added support for low level interface lpSolveAPI (5.5.0.14)
    http://cran.r-project.org/web/packages/lpSolveAPI/index.html
    http://lpsolve.sourceforge.net/5.5/
    - applied to Class optObj

- added support for low level interface sybilCLP (0.0.1)
    - applied to Class optObj

- option resolve in oneFluxDel(), oneGeneDel(),
  doubleFluxDel() and doubleGeneDel()
    - default: NA
    - if resolve is enabled, value should be a valid method
      depending on the desired solver (e.g. "exact" in case
      of solver = "glpk").

- renamed optObj-method "setColsBnds" to "changeColsBnds".

- renamed optObj-method "setRowsBnds" to "changeRowsBnds".

- renamed optObj-method "setObjCoefs" to "changeObjCoefs".

- argument "resolve" in optimizer() and refineSol():
    - no longer boolean
    - default: NA
    - if non optimal solutions should be resolved:
      set to method resolve should use

- argument "logfile" in optimizer() and refineSol():
    - no longer boolean
    - default: NA
    - if a logfile should printed, logfile will be
      the filename

- argument "scaling" in optimizer() and refineSol():
    - no longer boolean
    - default: NA
    - if the model should be scaled, scaling will be
      the scaling method

- added "solver" and "method" in logfile

- added argument "checkOptSolObj" to function optimizer():
  print a warning, if there are solution statuses != 0
  in an object of class optsol (default = FALSE).

- added slots "chlb" and "chub" to class "optsol":
    - containing lower and upper bounds of changed flux rates.
    - replace method: ch?b <-
    - get method: ch?b


# ------------------------------------------------------- #
Version 0.1.0    2009-07-09    (initial release)
# ------------------------------------------------------- #

- support for low level interface sybilGLPK (0.1.0)
