Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CRAN issues #795

Merged
merged 4 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: rxode2
Version: 3.0.0
Version: 3.0.1
Title: Facilities for Simulating from ODE-Based Models
Authors@R: c(
person("Matthew L.","Fidler", role = c("aut", "cre"), email = "matthew.fidler@gmail.com", comment=c(ORCID="0000-0001-8538-6691")),
Expand Down
4 changes: 4 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# rxode2 3.0.1

- explicitly initialize the order vector to stop valgrind warning (requested from CRAN)

# rxode2 3.0.0

## Breaking Changes
Expand Down
6 changes: 3 additions & 3 deletions cran-comments.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
- This works with the new dparser, PreciseSums and lotri to reduce abi linkages
- This rxode2 combines the rxode2parse rxode2random and rxode2et (as
requested by CRAN)
- explicitly initialized C integer vector `ordS` in rxode2 code to
avoid valgrind warning (as requested by CRAN).
- all other warnings come from the `units` package
1 change: 1 addition & 0 deletions man/reexports.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 8 additions & 8 deletions man/rmdhunks/rxode2-create-models.Rmd
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
The ODE-based model specification may be coded inside four places:
The ODE-based model specification may be coded inside four places:

- Inside a `rxode2({})` block statements:

```{r modBracket}
``` r
library(rxode2)
mod <- rxode2({
# simple assignment
Expand All @@ -15,7 +15,7 @@ mod <- rxode2({

- Inside a `rxode2("")` string statement:

```{r modString}
``` r
mod <- rxode2("
# simple assignment
C2 <- centr/V2
Expand All @@ -27,7 +27,7 @@ mod <- rxode2("

- In a file name to be loaded by rxode2:

```{r modFile}
``` r
writeLines("
# simple assignment
C2 <- centr/V2
Expand All @@ -38,10 +38,10 @@ writeLines("
mod <- rxode2(filename='modelFile.rxode2')
unlink("modelFile.rxode2")
```

- In a model function which can be parsed by `rxode2`:

```{r modFun}
``` r
mod <- function() {
model({
# simple assignment
Expand Down Expand Up @@ -94,10 +94,10 @@ For the last type of model (a model function), a call to `rxode2`
creates a parsed `rxode2` ui that can be translated to the `rxode2`
compilation model.

```{r}
``` r
mod$simulationModel

# or
# or
mod$simulationIniModel
```

Expand Down
3 changes: 3 additions & 0 deletions src/genModelVars.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,9 @@ static inline int sortStateVectorsErrHandle(int prop, int pass, int i) {

static inline SEXP sortStateVectors(SEXP ordS) {
int *ord = INTEGER(ordS);
for (int i = 0; i < Rf_length(ordS); i++) {
ord[i] = 0; // explicitly initialize to avoid valgrind warning
}
sbt.o = 0; // we can use sbt.o since all the code has already been output
sbt.s[0] = 0;
for (int i = 0; i < tb.de.n; i++) {
Expand Down
1 change: 1 addition & 0 deletions tests/testthat/test-000-modelVars.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ d/dt(y3) = a3*y1*y2
et <- eventTable()
et$add.sampling(seq(0, 20, by = 0.01))


out <- solve(rigid, et)

expect_equal(rxModelVars(rigid), rxModelVars(rigid$cmpMgr$rxDll()))
Expand Down
202 changes: 100 additions & 102 deletions tests/testthat/test-phi.R
Original file line number Diff line number Diff line change
@@ -1,106 +1,104 @@
rxTest({
rxTest({
test_that("phi/pnorm/qnorm", {
expect_equal(phi(1:3), pnorm(1:3))
expect_equal(phi(as.double(1:3)), pnorm(as.double(1:3)))

o <- rxode2({
o <- phi(a)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3))
)

o <- rxode2({
o <- pnorm(a)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3))
)

o <- rxode2({
o <- pnorm(a, 0.5)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3), 0.5)
)

o <- rxode2({
o <- pnorm(a, 0.5, 2)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3), 0.5, 2)
)

suppressMessages(expect_error(rxode2({
o <- pnorm()
})))

suppressMessages(expect_error(rxode2({
o <- pnorm(a, b, c, d)
})))

o <- rxode2({
o <- qnorm(a)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
suppressWarnings(qnorm(as.double(1:3)))
)

o <- rxode2({
o <- qnorm(a, 0.5)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
suppressWarnings(qnorm(as.double(1:3), 0.5))
)

o <- rxode2({
o <- qnorm(a, 0.5, 2)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
suppressWarnings(qnorm(as.double(1:3), 0.5, 2))
)

suppressMessages(expect_error(rxode2({
o <- qnorm()
})))

suppressMessages(expect_error(rxode2({
o <- qnorm(a, b, c, d)
})))

m <- rxode2({
o <- pnorm(a)
})

skip_if_not_installed("units")
expect_error(rxS(m), NA)

m <- rxode2({
o <- pnorm(a, b)
})

expect_error(rxS(m), NA)

m <- rxode2({
o <- pnorm(a, b, c)
})

expect_error(rxS(m), NA)
test_that("phi/pnorm/qnorm", {
expect_equal(phi(1:3), pnorm(1:3))
expect_equal(phi(as.double(1:3)), pnorm(as.double(1:3)))

o <- rxode2({
o <- phi(a)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3))
)

o <- rxode2({
o <- pnorm(a)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3))
)

o <- rxode2({
o <- pnorm(a, 0.5)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3), 0.5)
)

o <- rxode2({
o <- pnorm(a, 0.5, 2)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
pnorm(as.double(1:3), 0.5, 2)
)

suppressMessages(expect_error(rxode2({
o <- pnorm()
})))

suppressMessages(expect_error(rxode2({
o <- pnorm(a, b, c, d)
})))

o <- rxode2({
o <- qnorm(a)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
suppressWarnings(qnorm(as.double(1:3)))
)

o <- rxode2({
o <- qnorm(a, 0.5)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
suppressWarnings(qnorm(as.double(1:3), 0.5))
)

o <- rxode2({
o <- qnorm(a, 0.5, 2)
})

expect_equal(
rxSolve(o, data.frame(a = 1:3), et(0))$o,
suppressWarnings(qnorm(as.double(1:3), 0.5, 2))
)

suppressMessages(expect_error(rxode2({
o <- qnorm()
})))

suppressMessages(expect_error(rxode2({
o <- qnorm(a, b, c, d)
})))

m <- rxode2({
o <- pnorm(a)
})

skip_if_not_installed("units")
expect_error(rxS(m), NA)

m <- rxode2({
o <- pnorm(a, b)
})

expect_error(rxS(m), NA)

m <- rxode2({
o <- pnorm(a, b, c)
})

expect_error(rxS(m), NA)
})
})
15 changes: 8 additions & 7 deletions vignettes/rxode2-syntax.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ vignette: >
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>")
library(rxode2)
```

## Introduction

This briefly describes the syntax used to define models
This briefly describes the syntax used to define models
that `rxode2` will translate into R-callable compiled code. It also
describes the communication of variables between `R` and the
`rxode2` modeling specification.
Expand All @@ -35,7 +36,7 @@ describes the communication of variables between `R` and the

## Bugs and/or deficiencies

- The modulo operator `%%` is currently unsupported.
- The modulo operator `%%` is currently unsupported.

## Note

Expand All @@ -49,10 +50,10 @@ Below is a commented example to quickly show the capabilities of

## Example

```{r}
``` r
f <- function() {
ini({

})
model({
# An rxode2 model specification (this line is a comment).
Expand Down Expand Up @@ -86,18 +87,18 @@ via the `d/dt(identifier)` operator as part of the model specification,
and which are model parameters via the `params=` argument in `rxode2`
`solve()` method:

```
``` r
m1 <- rxode2(model = ode, modName = "m1")

# model parameters -- a named vector is required
theta <-
theta <-
c(KA=0.29, CL=18.6, V2=40.2, Q=10.5, V3=297, Kin=1, Kout=1, EC50=200)

# state variables and their amounts at time 0 (the use of names is
# encouraged, but not required)
inits <- c(depot=0, centr=0, peri=0, eff=1)

# qd1 is an eventTable specification with a set of dosing and sampling
# qd1 is an eventTable specification with a set of dosing and sampling
# records (code not shown here)

solve(theta, event = qd1, inits = inits)
Expand Down
Loading