From ee4286d995c8e9169b92c4531013f7eed3751e39 Mon Sep 17 00:00:00 2001 From: Claus Jonathan Fritzemeier <clausjonathan.fritzemeier@hhu.de> Date: Tue, 24 Oct 2017 15:24:27 +0200 Subject: [PATCH] writeSBML and NA values in attr fields --- DESCRIPTION | 4 +-- R/sybilSBML.R | 72 ++++++++++++++++++++++++++++++++++++++++++++------- inst/NEWS.Rd | 6 +++++ 3 files changed, 70 insertions(+), 12 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a46a8fa..b02d8a5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,7 +2,7 @@ Package: sybilSBML Type: Package Title: SBML Integration in Package 'Sybil' Version: 3.0.2 -Date: 2017-01-12 +Date: 2017-10-24 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", "ctb")), person("Deya", "Alzoubi", role = "ctb"), @@ -16,7 +16,7 @@ License: GPL-3 | file LICENSE LazyLoad: yes Collate: generics.R sbmlPtrClass.R sbmlErrorClass.R sybilSBML.R uglyHack.R readSBMLmod.R zzz.R -Packaged: 2017-01-12 07:11:55 UTC; jonathan +Packaged: 2017-10-24 07:11:55 UTC; jonathan Author: C. Jonathan Fritzemeier [cre, ctb], Gabriel Gelius-Dietrich [aut, ctb], Deya Alzoubi [ctb], diff --git a/R/sybilSBML.R b/R/sybilSBML.R index b3eb40b..88abbc4 100644 --- a/R/sybilSBML.R +++ b/R/sybilSBML.R @@ -421,20 +421,63 @@ writeSBML<- function(morg=NULL,level=2,version=4,fbcLevel=0,filename="export.xml ### Start newSybil attr if(newSybil) { - if(("notes" %in% colnames(mod_attr(morg))) && (printNotes) ) mod_notes<-as.character(mod_attr(morg)[['notes']]) - if(("annotation" %in% colnames(mod_attr(morg))) && (printAnnos) ) mod_annotation<-as.character(mod_attr(morg)[['annotation']]) + if(("notes" %in% colnames(mod_attr(morg))) && (printNotes) ) { + mod_notes<-as.character(mod_attr(morg)[['notes']]) + if(any(is.na(mod_notes))){ + stop("mod_notes mustn't be NA") + } + } + if(("annotation" %in% colnames(mod_attr(morg))) && (printAnnos) ) { + mod_annotation<-as.character(mod_attr(morg)[['annotation']]) + if(any(is.na(mod_annotation))){ + stop("mod_annotation mustn't be NA") + } + } - if(("notes" %in% colnames(comp_attr(morg))) && (printNotes) ) com_notes<-as.character(as.list((comp_attr(morg)[['notes']]))) - if(("annotation" %in% colnames(comp_attr(morg))) && (printAnnos) ) com_annotation<-as.character(as.list((comp_attr(morg)[['annotation']]))) + if(("notes" %in% colnames(comp_attr(morg))) && (printNotes) ){ + com_notes<-as.character(as.list((comp_attr(morg)[['notes']]))) + if(any(is.na(com_notes))){ + stop("com_notes mustn't be NA") + } + } + if(("annotation" %in% colnames(comp_attr(morg))) && (printAnnos) ){ + com_annotation<-as.character(as.list((comp_attr(morg)[['annotation']]))) + if(any(is.na(com_annotation))){ + stop("com_annotation mustn't be NA") + } + } - if("charge" %in% colnames(met_attr(morg))) met_charge<- as.integer(as.list((met_attr(morg)[['charge']]))) - if("chemicalFormula" %in% colnames(met_attr(morg))) met_formula<-as.character(as.list((met_attr(morg)[['chemicalFormula']]))) - if(("annotation" %in% colnames(met_attr(morg))) && (printAnnos)) met_anno<-as.character(as.list((met_attr(morg)[['annotation']]))) - if("boundaryCondition" %in% colnames(met_attr(morg))) met_bnd<-as.logical(as.list((met_attr(morg)[['boundaryCondition']]))) + if("charge" %in% colnames(met_attr(morg))){ + met_charge<- as.integer(as.list((met_attr(morg)[['charge']]))) + if(any(is.na(met_charge))){ + stop("met_charge mustn't be NA") + } + } + if("chemicalFormula" %in% colnames(met_attr(morg))){ + met_formula<-as.character(as.list((met_attr(morg)[['chemicalFormula']]))) + if(any(is.na(met_formula))){ + stop("met_formula mustn't be NA") + } + } + if(("annotation" %in% colnames(met_attr(morg))) && (printAnnos)){ + met_anno<-as.character(as.list((met_attr(morg)[['annotation']]))) + if(any(is.na(mod_notes))){ + stop("met_anno mustn't be NA") + } + } + if("boundaryCondition" %in% colnames(met_attr(morg))){ + met_bnd<-as.logical(as.list((met_attr(morg)[['boundaryCondition']]))) + if(any(is.na(met_bnd))){ + stop("met_bnd mustn't be NA") + } + } if(("notes" %in% colnames(met_attr(morg))) && (printNotes) ) { # delete Formular and charge from notes to do met_notes<-as.character(as.list((met_attr(morg)[['notes']]))) + if(any(is.na(met_notes))){ + stop("met_notes mustn't be NA") + } if (!is.null(met_charge) || !is.null(met_formula)) { for ( i in 1:met_num(morg)) @@ -478,12 +521,21 @@ writeSBML<- function(morg=NULL,level=2,version=4,fbcLevel=0,filename="export.xml } } - if(("annotation" %in% colnames(react_attr(morg))) && (printAnnos)) react_anno<-as.character(as.list((react_attr(morg)[['annotation']]))) + if(("annotation" %in% colnames(react_attr(morg))) && (printAnnos)){ + react_anno<-as.character(as.list((react_attr(morg)[['annotation']]))) + if(any(is.na(react_anno))){ + stop("react_anno mustn't be NA") + } + } # Merge Notes with "our" Notes and make sure gpr Rules from gpr if(("notes" %in% colnames(react_attr(morg))) && (printNotes)) { react_notes<-as.character(as.list((react_attr(morg)[['notes']]))) + if(any(is.na(react_notes))){ + stop("react_notes mustn't be NA") + } + # using # SubSystem EXISTIERT nicht colnames(subSys(ec)) @@ -572,4 +624,4 @@ writeSBML<- function(morg=NULL,level=2,version=4,fbcLevel=0,filename="export.xml } else message(paste("Could not write file ",filename,"\n",sep=""), appendLF = FALSE); return (success) -} \ No newline at end of file +} diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd index 043c961..e90f8c5 100644 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -5,6 +5,12 @@ \encoding{UTF-8} \newcommand{\CRANpkg}{\href{https://cran.r-project.org/package=#1}{\pkg{#1}}} +% ---------------------------------------------------------------------------- % +\section{Changes in version 3.0.2 2017-10-24}{ + \itemize{ + \item Removed bug when trying to write models with NA in, e.g. \code{met_attr}. + } +} % ---------------------------------------------------------------------------- % \section{Changes in version 3.0.1 2016-12-16}{ -- GitLab