Skip to content

Commit 0168482

Browse files
author
Yi Zhang
committed
update model examples wrt new stan syntax
1 parent 50dc755 commit 0168482

25 files changed

Lines changed: 1611 additions & 497 deletions

File tree

example-models/FK_coupled/FribergKarlsson.stan

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
functions{
2-
vector FK_ODE(real t, vector y, vector y_pk, real[] theta, real[] rdummy, int[] idummy){
2+
vector FK_ODE(real t, vector y, vector y_pk, array[] real theta, array[] real rdummy, array[] int idummy){
33
/* PK variables */
44
real VC = theta[3];
55

@@ -33,16 +33,16 @@ data{
3333
int<lower = 1> nt;
3434
int<lower = 1> nObsPK;
3535
int<lower = 1> nObsPD;
36-
int<lower = 1> iObsPK[nObsPK];
37-
int<lower = 1> iObsPD[nObsPD];
38-
real<lower = 0> amt[nt];
39-
int<lower = 1> cmt[nt];
40-
int<lower = 0> evid[nt];
41-
real<lower = 0> time[nt];
42-
real<lower = 0> ii[nt];
43-
int<lower = 0> addl[nt];
44-
int<lower = 0> ss[nt];
45-
real rate[nt];
36+
array[nObsPK] int<lower = 1> iObsPK;
37+
array[nObsPD] int<lower = 1> iObsPD;
38+
array[nt] real<lower = 0> amt;
39+
array[nt] int<lower = 1> cmt;
40+
array[nt] int<lower = 0> evid;
41+
array[nt] real<lower = 0> time;
42+
array[nt] real<lower = 0> ii;
43+
array[nt] int<lower = 0> addl;
44+
array[nt] int<lower = 0> ss;
45+
array[nt] real rate;
4646
vector<lower = 0>[nObsPK] cObs;
4747
vector<lower = 0>[nObsPD] neutObs;
4848

@@ -97,10 +97,10 @@ transformed parameters{
9797
vector<lower = 0>[nObsPK] cHatObs;
9898
row_vector[nt] neutHat;
9999
vector<lower = 0>[nObsPD] neutHatObs;
100-
real<lower = 0> theta[nTheta];
100+
array[nTheta] real<lower = 0> theta;
101101
matrix[nOde + 3, nt] x;
102-
real biovar[nTheta] = rep_array(1.0, nTheta);
103-
real tlag[nTheta] = rep_array(0.0, nTheta);
102+
array[nTheta] real biovar = rep_array(1.0, nTheta);
103+
array[nTheta] real tlag = rep_array(0.0, nTheta);
104104

105105
theta[1] = CL;
106106
theta[2] = Q;

example-models/FribergKarlsson/FribergKarlsson.stan

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
functions{
2-
vector twoCptNeutModelODE(real t, vector x, real[] parms, real[] rdummy, int[] idummy){
2+
vector twoCptNeutModelODE(real t, vector x, array[] real parms,
3+
array[] real rdummy, array[] int idummy){
34
real k10;
45
real k12;
56
real k21;
@@ -64,24 +65,24 @@ data{
6465
int<lower = 1> nt;
6566
int<lower = 1> nObsPK;
6667
int<lower = 1> nObsPD;
67-
int<lower = 1> iObsPK[nObsPK];
68-
int<lower = 1> iObsPD[nObsPD];
69-
real<lower = 0> amt[nt];
70-
int<lower = 1> cmt[nt];
71-
int<lower = 0> evid[nt];
72-
real<lower = 0> time[nt];
73-
real<lower = 0> ii[nt];
74-
int<lower = 0> addl[nt];
75-
int<lower = 0> ss[nt];
76-
real rate[nt];
68+
array[nObsPK] int<lower = 1> iObsPK;
69+
array[nObsPD] int<lower = 1> iObsPD;
70+
array[nt] real<lower = 0> amt;
71+
array[nt] int<lower = 1> cmt;
72+
array[nt] int<lower = 0> evid;
73+
array[nt] real<lower = 0> time;
74+
array[nt] real<lower = 0> ii;
75+
array[nt] int<lower = 0> addl;
76+
array[nt] int<lower = 0> ss;
77+
array[nt] real rate;
7778
vector<lower = 0>[nObsPK] cObs;
7879
vector<lower = 0>[nObsPD] neutObs;
7980

8081
// data for population model
8182
int<lower = 1> nSubjects;
82-
int<lower = 1> start[nSubjects];
83-
int<lower = 1> end[nSubjects];
84-
real<lower = 0> weight[nSubjects];
83+
array[nSubjects] int<lower = 1> start;
84+
array[nSubjects] int<lower = 1> end;
85+
array[nSubjects] real<lower = 0> weight;
8586

8687
real<lower = 0> circ0HatPrior;
8788
real<lower = 0> circ0HatPriorCV;
@@ -102,7 +103,7 @@ transformed data{
102103
int nTheta;
103104
int nIIV;
104105

105-
int len[nSubjects];
106+
array[nSubjects] int len;
106107

107108
logCObs = log(cObs);
108109
logNeutObs = log(neutObs);
@@ -143,7 +144,7 @@ transformed parameters{
143144
row_vector[nt] neutHat;
144145
vector[nObsPD] neutHatObs;
145146
matrix[8, nt] x;
146-
real<lower = 0> parms[nSubjects, nTheta]; // The [1] indicates the parameters are constant
147+
array[nSubjects, nTheta] real<lower = 0> parms; // The [1] indicates the parameters are constant
147148

148149
// variables for Matt's trick
149150
vector<lower = 0>[nIIV] thetaHat;
@@ -214,7 +215,7 @@ model{
214215

215216
generated quantities {
216217
matrix[8, nt] xPred;
217-
real<lower = 0> parmsPred[nSubjects, nTheta]; // [1] indicates the parameters are constant
218+
array[nSubjects, nTheta] real<lower = 0> parmsPred; // [1] indicates the parameters are constant
218219
row_vector[nt] cHatPred;
219220
row_vector[nt] neutHatPred;
220221
vector<lower = 0>[nObsPK] cHatObsCond;

example-models/chemical_reactions/chem.stan

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
functions{
2-
real[] reaction(real t, real[] x, real[] p, real[] r, int[] i){
3-
real dxdt[3];
2+
vector reaction(real t, vector x, array[] real p, array[] real r,
3+
array[] int i){
4+
vector[3] dxdt;
45
real p1 = p[1];
56
real p2 = p[2];
67
real p3 = p[3];
@@ -13,19 +14,19 @@ functions{
1314

1415
data {
1516
int<lower=1> nsub;
16-
int<lower=1> len[nsub];
17+
array[nsub] int<lower=1> len;
1718
int<lower=1> ntot;
18-
real ts[ntot];
19-
real obs[ntot];
19+
array[ntot] real ts;
20+
array[ntot] real obs;
2021
}
2122

2223
transformed data {
23-
int i1[nsub];
24-
int i2[nsub];
24+
array[nsub] int i1;
25+
array[nsub] int i2;
2526
real t0 = 0.0;
26-
real xr[0];
27-
int xi[0];
28-
real theta[3] = {0.04, 1.0e4, 3.0e7};
27+
array[0] real xr;
28+
array[0] int xi;
29+
array[3] real theta = {0.04, 1.0e4, 3.0e7};
2930
i1[1] = 1;
3031
i2[1] = len[1];
3132
for (i in 2:nsub) {
@@ -37,19 +38,19 @@ transformed data {
3738
parameters {
3839
/* p1=0.04, p2=1e4, and p3=3e7 */
3940
real<lower = 0> y0_mu;
40-
real<lower = 0> y0_1[nsub];
41+
array[nsub] real<lower = 0> y0_1;
4142
real<lower = 0> sigma;
4243
}
4344

4445
transformed parameters {
45-
real y0[3];
46-
real x[ntot, 3];
47-
real x3[ntot];
46+
vector[3] y0;
47+
array[ntot] vector[3] x;
48+
array[ntot] real x3;
4849
for (i in 1:nsub) {
4950
y0[1] = y0_1[i];
5051
y0[2] = 0.0;
5152
y0[3] = 0.0;
52-
x[i1[i]:i2[i], ] = pmx_integrate_ode_bdf(reaction, y0, t0, ts[i1[i]:i2[i]], theta, xr, xi, 1.e-4, 1.e-8, 10000);
53+
x[i1[i]:i2[i], ] = pmx_ode_bdf_ctrl(reaction, y0, t0, ts[i1[i]:i2[i]], 1.e-4, 1.e-8, 10000, theta, xr, xi);
5354
}
5455
x3 = x[ , 3];
5556
}

example-models/chemical_reactions/chem_group.stan

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
functions{
2-
real[] reaction(real t, real[] x, real[] p, real[] r, int[] i){
3-
real dxdt[3];
2+
array[] real reaction(real t, array[] real x, array[] real p, array[] real r,
3+
array[] int i){
4+
array[3] real dxdt;
45
real p1 = p[1];
56
real p2 = p[2];
67
real p3 = p[3];
@@ -13,19 +14,19 @@ functions{
1314

1415
data {
1516
int<lower=1> nsub;
16-
int<lower=1> len[nsub];
17+
array[nsub] int<lower=1> len;
1718
int<lower=1> ntot;
18-
real ts[ntot];
19-
real obs[ntot];
19+
array[ntot] real ts;
20+
array[ntot] real obs;
2021
}
2122

2223
transformed data {
23-
int i1[nsub];
24-
int i2[nsub];
24+
array[nsub] int i1;
25+
array[nsub] int i2;
2526
real t0 = 0.0;
26-
real xr[0];
27-
int xi[0];
28-
real theta[3] = {0.04, 1.0e4, 3.0e7};
27+
array[0] real xr;
28+
array[0] int xi;
29+
array[3] real theta = {0.04, 1.0e4, 3.0e7};
2930
i1[1] = 1;
3031
i2[1] = len[1];
3132
for (i in 2:nsub) {
@@ -37,12 +38,12 @@ transformed data {
3738
parameters {
3839
/* p1=0.04, p2=1e4, and p3=3e7 */
3940
real<lower = 0> y0_mu;
40-
real<lower = 0> y0_1[nsub];
41+
array[nsub] real<lower = 0> y0_1;
4142
real<lower = 0> sigma;
4243
}
4344

4445
transformed parameters {
45-
real y0_pop[nsub, 3];
46+
array[nsub, 3] real y0_pop;
4647
matrix[3, ntot] x;
4748
row_vector[ntot] x3;
4849
for (i in 1:nsub) {

example-models/chemical_reactions_with_stiffness_diff/chem_group.stan

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
functions{
2-
real[] reaction(real t, real[] x, real[] p, real[] r, int[] i){
3-
real dxdt[3];
2+
array[] real reaction(real t, array[] real x, array[] real p, array[] real r,
3+
array[] int i){
4+
array[3] real dxdt;
45
real p1 = p[1];
56
real p2 = p[2];
67
real p3 = p[3];
@@ -15,21 +16,21 @@ data {
1516
int<lower=1> nsub;
1617
int<lower=1> nsub1;
1718
int<lower=1> nsub2;
18-
int<lower=1> len[nsub];
19+
array[nsub] int<lower=1> len;
1920
int<lower=1> ntot;
20-
real ts[ntot];
21-
real obs[ntot];
21+
array[ntot] real ts;
22+
array[ntot] real obs;
2223
}
2324

2425
transformed data {
25-
int i1[nsub];
26-
int i2[nsub];
26+
array[nsub] int i1;
27+
array[nsub] int i2;
2728
real t0 = 0.0;
28-
real xr[0];
29-
int xi[0];
30-
real theta1[3] = {0.04, 1.0e4, 3.0e7};
31-
real theta2[3] = {0.04, 0.1, 0.1};
32-
real theta[nsub, 3];
29+
array[0] real xr;
30+
array[0] int xi;
31+
array[3] real theta1 = {0.04, 1.0e4, 3.0e7};
32+
array[3] real theta2 = {0.04, 0.1, 0.1};
33+
array[nsub, 3] real theta;
3334
i1[1] = 1;
3435
i2[1] = len[1];
3536
for (i in 2:nsub) {
@@ -46,12 +47,12 @@ transformed data {
4647

4748
parameters {
4849
real<lower = 0> y0_mu;
49-
real<lower = 0> y0_1[nsub];
50+
array[nsub] real<lower = 0> y0_1;
5051
real<lower = 0> sigma;
5152
}
5253

5354
transformed parameters {
54-
real y0_pop[nsub, 3];
55+
array[nsub, 3] real y0_pop;
5556
matrix[3, ntot] x;
5657
row_vector[ntot] x3;
5758
for (i in 1:nsub) {

0 commit comments

Comments
 (0)