nlmixr2 / rxode2parse

1 stars 1 forks source link

TAD calculation inconsistent #87

Closed mattfidler closed 5 months ago

mattfidler commented 5 months ago

I get a question on the tad (time after the dose) calculation provided by nlmixr2 output. I will be appreciated if you have any idea on it

I find that when I try to set part of observations' MDV to 1 (keep EVID=0) in the PopPK dataset, the tad (time after the last dose) calculated by nlmixr2 become confused. (This wont happen when I use LinCMT(), only happen when it is ODE)

I use theo_md as example, most of the following code are same with the nlmixr2 website's. The only difference is I try to set row 6-8 observation MDV as 1

I select part of columns from nlmxir2 output after running. and it can be seen that the tad is totally changed, and it seems that those observation lines (MDV=1,EVID=0) were considered as a dosing line/event line as well. After line 6-8, all of the tad and dosenum were wrong actually.

image

The interesting thing is that when I use vpcSim(fit,n = no.sim) to see the simulation results, the tad become normal again.

Have you met this issue before?

library(nlmixr2)
## The basic model consists of an ini block that has initial estimates
one.compartment <- function() {
  ini({
    tka <- log(1.57); label("Ka")
    tcl <- log(2.72); label("Cl")
    tv <- log(31.5); label("V")
    eta.ka ~ 0.6
    eta.cl ~ 0.3
    eta.v ~ 0.1
    add.sd <- 0.7
  })
  # and a model block with the error specification and model specification
  model({
    ka <- exp(tka + eta.ka)
    cl <- exp(tcl + eta.cl)
    v <- exp(tv + eta.v)
    d/dt(depot) <- -ka * depot
    d/dt(center) <- ka * depot - cl / v * center
    cp <- center / v
    cp ~ add(add.sd)
  })
}

dat<-theo_md
dat[dat$EVID==101,]$EVID<-1
dat$MDV<-dat$EVID
dat[6:8,]$MDV=1 # example, set line 6-8 observation MDV as 1

## The fit is performed by the function nlmixr/nlmixr2 specifying the model, data and estimate
fit <- nlmixr2(one.compartment,dat,  est="saem", saemControl(print=1))
fit.select<-fit[,c(1,2,3,4,19)]
fit.select

run1_vpc <- vpcSim(fit,n = no.sim)
mattfidler commented 5 months ago

Here is the reprex; the underlying model without etas solves correctly:

library(nlmixr2est)
#> Loading required package: nlmixr2data
#> detected new version of nlmixr2est, cleaning rxode2 cache

## The basic model consists of an ini block that has initial estimates
one.compartment <- function() {
  ini({
    tka <- log(1.57); label("Ka")
    tcl <- log(2.72); label("Cl")
    tv <- log(31.5); label("V")
    eta.ka ~ 0.6
    eta.cl ~ 0.3
    eta.v ~ 0.1
    add.sd <- 0.7
  })
  # and a model block with the error specification and model specification
  model({
    ka <- exp(tka + eta.ka)
    cl <- exp(tcl + eta.cl)
    v <- exp(tv + eta.v)
    d/dt(depot) <- -ka * depot
    d/dt(center) <- ka * depot - cl / v * center
    cp <- center / v
    cp ~ add(add.sd)
  })
}

dat<-theo_md
dat[dat$EVID==101,]$EVID<-1
dat$MDV<-dat$EVID
dat[6:8,]$MDV=1 # example, set line 6-8 observation MDV as 1

## The fit is performed by the function nlmixr/nlmixr2 specifying the model, data and estimate
fit0 <- nlmixr2(one.compartment,dat,  est="saem", saemControl(print=0))
#> → loading into symengine environment...
#> → pruning branches (`if`/`else`) of saem model...
#> ✔ done
#> → finding duplicate expressions in saem model...
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> → optimizing duplicate expressions in saem model...
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> ✔ done
#> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’
#> rxode2 2.1.2 using 8 threads (see ?getRxThreads)
#>   no cache: create with `rxCreateCache()`
#> Calculating covariance matrix
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> → loading into symengine environment...
#> → pruning branches (`if`/`else`) of saem model...
#> ✔ done
#> → finding duplicate expressions in saem predOnly model 0...
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> → finding duplicate expressions in saem predOnly model 1...
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> → optimizing duplicate expressions in saem predOnly model 1...
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> → finding duplicate expressions in saem predOnly model 2...
#> [====|====|====|====|====|====|====|====|====|====] 0:00:00
#> ✔ done
#> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’
#> → Calculating residuals/tables
#> ✔ done
#> → compress origData in nlmixr2 object, save 17312
#> → compress phiM in nlmixr2 object, save 63528
#> → compress parHistData in nlmixr2 object, save 14304
#> → compress saem0 in nlmixr2 object, save 29160

fit0[1:10,c("ID", "EVID", "TIME", "tad")]  |> as.data.frame()
#>    ID EVID  TIME  tad
#> 1   1    0  0.00 0.00
#> 2   1    0  0.25 0.25
#> 3   1    0  0.57 0.57
#> 4   1    0  1.12 1.12
#> 5   1    2  2.02 0.00
#> 6   1    2  3.82 0.00
#> 7   1    2  5.10 0.00
#> 8   1    0  7.03 1.93
#> 9   1    0  9.05 3.95
#> 10  1    0 12.12 7.02

# Using the underlying rxode2 model with no eta gives the right results:

library(rxode2)

mod <- rxode2({
  param(THETA[1], THETA[2], THETA[3], THETA[4], ETA[1], ETA[2],
        ETA[3])
  cmt(depot)
  cmt(center)
  rx_pred_ = NA
  rx_r_ = NA
  tka = THETA[1] + ETA[1]
  tcl = THETA[2] + ETA[2]
  tv = THETA[3] + ETA[3]
  add.sd = THETA[4]
  rx_yj_ ~ 2
  rx_lambda_ ~ 1
  rx_hi_ ~ 1
  rx_low_ ~ 0
  rx_expr_0 ~ exp(tka)
  d/dt(depot) = -rx_expr_0 * depot
  d/dt(center) = rx_expr_0 * depot - exp(tcl - tv) * center
  rx_pred_ = exp(-tv) * center
  rx_r_ = Rx_pow_di(add.sd, 2)
  ka = exp(tka)
  cl = exp(tcl)
  v = exp(tv)
  cp = exp(-tv) * center
  tad = tad()
  dosenum = dosenum()
  tka = THETA[1]
  tcl = THETA[2]
  tv = THETA[3]
  add.sd = THETA[4]
  eta.ka = ETA[1]
  eta.cl = ETA[2]
  eta.v = ETA[3]
  cmt(cp)
  dvid(3)
})

par <- c("THETA[1]" = 0.271646397929738, "THETA[2]" = 1.04837208911781, "THETA[3]" = 3.41786691697643, "THETA[4]" = 1.02739485488012, "ETA[1]" = 0, "ETA[2]" = 0, "ETA[3]" = 0)

dat <- nlmixr2data::theo_md
dat[dat$EVID==101,]$EVID<-1
dat$MDV<-dat$EVID
dat[6:8,]$MDV=1 # example, set line 6-8 observation MDV as 1

df <- rxSolve(mod, par, dat)

df[1:10,c("id", "evid", "time", "tad")]
#>    id evid  time   tad
#> 1   1    0  0.00  0.00
#> 2   1    0  0.25  0.25
#> 3   1    0  0.57  0.57
#> 4   1    0  1.12  1.12
#> 5   1    2  2.02  2.02
#> 6   1    2  3.82  3.82
#> 7   1    2  5.10  5.10
#> 8   1    0  7.03  7.03
#> 9   1    0  9.05  9.05
#> 10  1    0 12.12 12.12

Created on 2024-02-05 with reprex v2.1.0

mattfidler commented 5 months ago

Even when you add the etas the rxode2 solve seems OK.

mattfidler commented 5 months ago
library(rxode2)
#> rxode2 2.1.2 using 8 threads (see ?getRxThreads)
#>   no cache: create with `rxCreateCache()`
lst <- "un]\"BAAA@QRtHACAAAAAAA@QhDAABdk1kuexR.9BZ`OJh:tI{pd.>eQzdt9noLy`2(%Uh8w?F\"O?<|>D0UX0.*&?TRmumusLuWg6oADt~`gUgDr8\"qprP%]B<[|Y!o[p@L%x;OB#iA([IvqF<kn){wXwGnYMa=qli.Ct6WDB+PguQ!W$0:8>]#?%#}Y|khf2|k<Z7>_:b8b%w?Zs43ad{S>?:^?|>3jan3bh1wG_ShVoNWY%q(?G9Q%Hu*j[xp@P2wW~6=<Oo>c1>H0ff3X4n|hW$9LxJqO<3|~i>]z+6~m^RS,&c~z+$P,};^~qk>`]7m&PxKX5khX_Ur2r\"|J[EmFbUxI`8^T_q#|#/6,oGw4^l&tWN98_rw5<jct;e1Ya2d{h$4,?hp7hedj5l|uv_`_]O1jYl?as7t=}M*qpwXn{eseV=eY^xjHHOLu.?[J0,<~EeIMxNv\"~}][;T%p~xM:JXKv=hn+RJzg[U}Z_+^8g?=\"%/?%jh]^n_x_gT%MmBou(*+p,,l@{s(r%LGcQ,wU}~o(gY384x5N}X}ZoQ|T%r5rT41YWC!jc.8AR/22}M];Y{[A\"?h`T,f;3Z1Nf9BY4)$[B|=kuA%!Jb$lY7TbltkMLUR6l9a=Z_KQi\"*Sol*SoNNde[zy.MH.wzWx(CuBW;W!W4eP*wn@2jtl4Am4Y^B|Q(Fguh\"]2|D4AacN&We7l5ICDuMyGzw9txUbJpI)A~>`QMAmnM7kH?DnaR2KV{OI)kFqM@QuBRj#n&Z`tUMR9=b4Y1nuW>W+A9(j*T\"3Ivp^H>i=hSKlAa,4IUHuOJVkEEMFhu264@Jo;p_rIM?{3{><IRFLj$rNBAu3+|LbiwJX*},rD&RSKDXr\"X75L4\"[hmB^uZLd|Mc(BJy2G6YJF(XceI.YcXN{[MceG{L$}8knn?OeLqCDDKKyI08ry+([7c0YR[)/h1[i:$wfz#P[t3L#r9ZOaZc6rqi^5#TkuvV>GA5}QBzXYB5}0ZF1GGz$yCI&Dj7EyuG3.:F4k[v?j+e\">@jPv~J[wnLL7K+/hw^EH<xmNuzl@bqRZ.^RbFj=4n9C3D78Lem}8>o_fTOC,P<<WSZArk@F;E$Tc_4wJJ!q:Et)qYYQ1`W6t~zX!&KPigTCf,jJAUmn4vl:4`I*f|4p_KOFa{P+CM{Y4TR3G7_Vq$iVwleo?ILq:T|sMF\"94Hi<#x^tMB%S?S=EN5!z!%^RbJHLLg?9vre*Rn4i+$C}W%EE7GN(Al$_<W@EN#V0U|xngKy;I#Tr/tMYi#}#bX7R#tkt4;!4pvXkgVJ8o},C@?h@yW0[5FNR<bvl,sXzwTO!4!uTj3unYkqvZfZXz8Mcg)@X5QP^TVtCgOQXMiUl>a~e?diVj^0!9)%mwnw_W>Md{,~!|=}4W)ls~4<H_(KS|jO)&OLp?bMaMaMY>n8A99U38UaO(ec!izig;VPUPgr[.Dda0U6y7y7bQO1`nxI_5FaNX!rS(s5mxrJo`!/!rmSV2L.ILHodxti`F4x<k8YYRBTBTBTE+KKro48Uf{nU.?hoqOnNQ|$?#~;q0)d]0B1ttvJFmqocS<0>POJ_fy!>PJ4KB@USt,aMw1(0H9?,$zK+H<kI^:afnZwpLCF+cIvN!#6hfjnqtna+CBtnD)*4=RlZ5r$.jxbE564*1r`KI?RVNA:/[(HN?0yijt*/Ap:[{+`<0;c/FOt+O#OqjS?c[.0}^>o[{9uO%?GAM2j=,:TMwA_.a=vh2jHC6y)E#CVk6~*Y7KOiJ)qCF,jN?MwSo<6L3cM&bq}@Z7y}5^H<(wlR?$Tk,$47b)q?e(vv3kp`6Y~ot:6vc^&g*<@}F^=HI9ivM|h/T)qgzR:g}zTHq,&,nhob>%eEKj~p!&FN$f:aY=MK9doNW~U|s@G[+]5fb*NLB/efP^s}%h*[M)+Cxl`i.TVzRS`_K;pMrU5{Mr~yai@83>C}]sRoz8$)`nB}lj5W;|MQb~rX{I8L1/+\"3}kM&b_?~GIfon@as:k])#)WSL_of_G>3mT1mHc3`P53;QfaORn}Jq}JvB?X.*ME/@nEDR3}Q3qrVW~2g<O#=aTSPuMg9^~o*n}$&^_2sav\"NU&Wzf$jr3}UlS4}=J|`;f3169{F5.*trGnB/c]e?V^KWd_9QU;PkQ9nq1,aTB6M_.pmM]Z#p?CNn]fjo&;2r[<Ib&3TYO5#&1S0>m^D~VUS=Kg^6G{V*`=>Ya%o1Tw8:i8]pNoT}?Ht{|82*]rt;>sfJRk:~t}:D{<h>@]L~S;{<AN?+?=@7@[,mu;:ErVUl36Mer}?~u<F#>qC5jT@g4:xOS.aRvoj}F)(!VFgve!*^N9vh9,xni;eW)LtEH=q^RSq])VE1F7!xV^NhVS@j}1Jkg9q$Se#kCrvhp,A)~pRuh?H9f_J.%?Hsgp!SePS`Nq]^o8Wdd@X=fi{cPsadY%:tf!rE0lh>Hub!79^$R^L5>.piN;=39wT1@4w`_@dzZS]6~a|w{{1#?vS.Pv\"!A3$l)>><F.~D=4#_HdKJM2u_#eH[D/U$r6f^wrAR[)gV^#{#cxRPxy:~A8b0(Ds27Uea4S{=llsk?(eHLTc/)6^<`#=9,B=m}TuPebk[7~>@]0@)f3d_`]{bfKy.Ys>om^97g$zo$,GlGQ?fTV5a#:w~Uz#I1&pcDbt]MnL(UL^7{t`56:`r&PSJFHzm/lub&{V8d>\"#{#x9R.p%Og~u{<Mvv>!=1;&3>%#040Xh`}2#$hB(qkGrfV;Z:Zov*,b(M(kQ@<4vE#sx[O&ln$qkMu8#%(NlX1A{Mav$q<>qdr$L;dQNWzDSk1@:\"7s^xy!q.9sP5<A/OkN05eL9>r|7qH$f`#g,fi_SW([/>|*lqn}HxP(Gzmbxj*=+).b$V%p%5}*fYv>_/^PsCl_J,=uY:eOH[4`{MHQd\"9:7oH/<okKNMRHsdk@rHkx6@`Tr0:Y.~:!0jl.5~r`/_#{dYi|^~7qWo>55HPc^9x\"*=ZIaz@AaKsFlFfo2`tQD4:WG=:!ItUS6?1Ud+d00om5xP%(dk6?8z@Kb]cJI>NZ8y@JP:uL|2}QSW^v6^yc{1)}+F*!JUxA<ev3Dcj%/VgRP?ZRMCiE%>5lO;O{HzSzSJ,e|1D&Ytcm7]D|c_a#jIaC}4PMy$LiYL(1yu0[1WaOs3+9}Px$/Vs5&zR+f4+u]Y3v0,1ore[G,\"eyyHJcQ\"h`/gz\"`YfX3SY{NwwsPsei?|0rsxdOv4GoGFGLF<>/apBbLi!pXl$zlfJu\"lj^P$=d/Kf%AE,^VM)SW&!!Svj}3s7IL:_4z^F.mqZUcf`w;b4+B=YQth##x<!L<FcD3T7t4AUKpBD{AFtGGF%~$[DbX\"ZjN5<B*E]=2H;YWFNI:PLI`nqb&sy+n2d#DCw$GxFOD_KoAx#nLRtV![Qgk0pAw)LD1u,YrR^hFvD/7}3{t9^xlTPeo\"CQDE;EN=L{Ku7qVdZ`Wk)=V@|@D^4WR&6Jt_YuuQkhS+CPtlZ2B!x44UXndxWU@|d$)UvHH6eT/+rs:4E#zPi:&RfpzPP=(1K&_PDpLgzHUuM9!wpRFP)dxIwh@CK*X9($TqCoccY,5+m<Ei?F^gk;UK)C<tJx5VK{F\"F5L|Bu\"mc3k0E4R~RWCwLpu^v[7h3a4lB&FgAdExA.hyy8Zp0`KmDhF:>SqLCoAz(v(8v#k*UwMH$i7#2slgM>,9KxG.t@O}4!K)M}H!wYzq4~L}y|Z&FdYMI|$]uheo0xbOUe%PfLaSo0@OM2dKCA3}iCTqMVjuY7R6)*TtRy*mqnfp`3R<4j:0bPGgJiD&qPmgS`74D78z(fDGT))pna2[waadxN3fdkNpje*W!o0YMgSJ)Z.11vBHGqDhwexw4R.!dHj`A<1B.{+%fI<LbN<aj~RAJ;d7,9K;wRjr5$mrzpI/dq1Yt~ID2_,el7i7?aRx\"P24+3Dnd,HAfsY}ccEn/;jTV<OgM#<mlqCp#*8RMeI67Fk%2LwfW8O3Xl:%R)Lsiyt~In/)!mxfVBPTd;I0SH?2S/O1XnOLv$kZ3^?3KBG#z9Y$kt!3ODA4w1Y{QKutb@10u$*cSt!T]FT3n8)^*5X/Orj@J)1)HLMHdaTVE@d/nw,{IuvN%!|eQxtDEU5}(<9u)wGn;~YK%kbbz(S\"bopn,wZ7;i[WN@bFC9h#<_3M)2pr_;=?!m8tG!,Ee~b:7q`{1?:t3H8RXO!P816Sc>&M80EU~/PQ;Uvnb>on]}Dq3*eg:L9U\"5X`nx#dlz5#Gq3,Ny}5j&y9syxhxcLU*/GM}7b;mk>)PzEqv#h&STk(+l}n,\"{M{aR/9%b_g]}16V^*P;)qp!vv$q]ikxr=!).*fmkH9=?j(k#!6_b@RGFzm<|vkgzK|7t{RR|pHFF9>}DUzGJmm.:]Lvd/8%{u6i$Jp<7K~b>+`BJ`h8cY3T0qu~J9iCM|hTj@Pe\"gI2uqi.y#/lVU\"!3ZEL*#GVXtB\"L_XiGlZiG1w>M!Rdtea06KYBk0%_,YE)(vVB6ptRAvC~A]%.Xc?vC&FmF*m^zrW+9x4,YRYk+6\",$95Vj=k|eN)[LEww_Q:6Y`XR0NC,4r$.8!ZFrBf}Za6,ksN:%4<*{!y\"d[1l.F&TYLyi~FtCZtJ2,_(/#0Hh,/,1f9?spA1CrV:z+NtC]aAlaS]d<+=<9H{?w[ho/\"u~Vl6Rmi$%d}VfmCdJiiGkXbP>8[T4CBN,sl\"[36\"E`.<i8/1c0#hf|ss_6kS}Rpk4N^TsB;UNUI>)[mJVXy/}1#gCo[wbSl>$7\".?/qh!lc`GUYqjTJeM<KlfJJ0wHhfdsd}HoKM?j,g{{=vp9jIf=0;vOkm,uph~pYI#yhV8S=Uo?hYOy5`H19)$DD])}nJ~n}C^:}D5^dM]]Uee$dX6wNg9L?e`SNx}Mgy&2n3cqoMOpWBD=r.#V~0];{FUe#4.=M~1zhMk_j~CG?i[M=xiGIGS_[RCy0h+gEVqsGN@71^Qd_zQmo>@4I0NKb2z/L)pE;WH~fwu[AM%9_Gc5AbP?f${zRts>kMguf:BCd:WwQ[fRyC!q%aBz#LiJLgy%3fGx+J*2=?=[6?=R$FIl#?_*=b^plI[sLkZsO8>KRGM_,tzqE\"N#8%9zpJV~=`R3{gxGG%mWSJ?J}a|c`0&=kB_w7z7rZE(BRolN{Ge[{I,>OIoR5Cc;O1$<i+e>5LxBC0~]pC>A{az5=PSOk]*]@8JkUR$5*~YxAERlr4,2P<l5ukCIpq/nawMGvtO4Otgze)~2(sg7hL!z3W~Q.e]1GZZ=d*6pb\"KO6SJ`4M%knBUSs2Jd>vikX+rb]/5)S/5f(TqO!<~iWR\"N5&^roR$?\";Qjp:~wOfpy[z=!\"%_T3lSZU4di]H0U*E=#HhhAt>hYjaU#NNL&+{0.PXIX=Z=M|L[X;SZO]y(]}$)en@979fPg6JXhs8U$e4@!a[(>~4))u>SkQDgub=w+IyBGamb_F8TvM]3!+RDay$}TPcqeX|tL+E+C~EF!6Rzc3/Ur/RpV*HoYE\"C#VaA8\"zd^#zle{d{(}_8p871D9I@0bhv0`Y=amkE5pDh_{D|}0T`bxgJSd=xmSN@p*9@L!fqNo>x_50g@5[id3YC2\"H<&AR<*$On_1?UE.0a(|bOwk+#~6g(W14EZi,/IfaEGlm$Q_vBBXwaX{Pp1VUO;/`7/eE>[*9a~f<|igs*8hL31w5#@lxPNDwSTh1|XZ?ltd~.FdHWFs1A#W(B(A@PwmD0_wf`Q$8ds;r94~q`1`bI,Vm3La3PH.|(Q>cHdo]l|n<b9Psa*nXA30`[5=g%&j$a_o&fvGzdE43j3t86EIk8$swX$E3fcmOTuc9f1tGCBc4)Df6t~/^t0vdf>{OAjz_j4`HRH5:W57W9.]@_=D>:rAJA(zrctx]fmHh&vBJ(%<5Tq?KcCpp^k)dM|IS6C)e;vz(raaEm4ozg.$fBOheIicUpa+nBu~8>3Qdc[oWN[hsTC7B^Tu@P#JZq4c`glGT1_[G5/>)sIuOwz(BK>Kj_QcDb;_{L.EnVz`sZD?/[`]#Jz3gX{$Fn((K4%TtoQr+u0nIg],YQYE"

lst <- qs::qdeserialize(qs::base91_decode(lst))

lst[[1]] <- rxode2(lst[[1]])

tmp <- do.call(rxSolve, lst)

tmp[, c("id", "evid", "time", "tad")]
#>     id evid   time   tad
#> 1    1    0   0.00  0.00
#> 2    1    0   0.25  0.25
#> 3    1    0   0.57  0.57
#> 4    1    0   1.12  1.12
#> 5    1    2   2.02  0.00
#> 6    1    2   3.82  0.00
#> 7    1    2   5.10  0.00
#> 8    1    0   7.03  1.93
#> 9    1    0   9.05  3.95
#> 10   1    0  12.12  7.02
#> 11   1    0  24.37  0.37
#> 12   1    0 144.00  0.00
#> 13   1    0 144.25  0.25
#> 14   1    0 144.57  0.57
#> 15   1    0 145.12  1.12
#> 16   1    0 146.02  2.02
#> 17   1    0 147.82  3.82
#> 18   1    0 149.10  5.10
#> 19   1    0 151.03  7.03
#> 20   1    0 153.05  9.05
#> 21   1    0 156.12 12.12
#> 22   1    0 168.37 24.37
#> 23   2    0   0.00  0.00
#> 24   2    0   0.27  0.27
#> 25   2    0   0.52  0.52
#> 26   2    0   1.00  1.00
#> 27   2    0   1.92  1.92
#> 28   2    0   3.50  3.50
#> 29   2    0   5.02  5.02
#> 30   2    0   7.03  7.03
#> 31   2    0   9.00  9.00
#> 32   2    0  12.00 12.00
#> 33   2    0  24.30  0.30
#> 34   2    0 144.00  0.00
#> 35   2    0 144.27  0.27
#> 36   2    0 144.52  0.52
#> 37   2    0 145.00  1.00
#> 38   2    0 145.92  1.92
#> 39   2    0 147.50  3.50
#> 40   2    0 149.02  5.02
#> 41   2    0 151.03  7.03
#> 42   2    0 153.00  9.00
#> 43   2    0 156.00 12.00
#> 44   2    0 168.30 24.30
#> 45   3    0   0.00  0.00
#> 46   3    0   0.27  0.27
#> 47   3    0   0.58  0.58
#> 48   3    0   1.02  1.02
#> 49   3    0   2.02  2.02
#> 50   3    0   3.62  3.62
#> 51   3    0   5.08  5.08
#> 52   3    0   7.07  7.07
#> 53   3    0   9.00  9.00
#> 54   3    0  12.15 12.15
#> 55   3    0  24.17  0.17
#> 56   3    0 144.00  0.00
#> 57   3    0 144.27  0.27
#> 58   3    0 144.58  0.58
#> 59   3    0 145.02  1.02
#> 60   3    0 146.02  2.02
#> 61   3    0 147.62  3.62
#> 62   3    0 149.08  5.08
#> 63   3    0 151.07  7.07
#> 64   3    0 153.00  9.00
#> 65   3    0 156.15 12.15
#> 66   3    0 168.17 24.17
#> 67   4    0   0.00  0.00
#> 68   4    0   0.35  0.35
#> 69   4    0   0.60  0.60
#> 70   4    0   1.07  1.07
#> 71   4    0   2.13  2.13
#> 72   4    0   3.50  3.50
#> 73   4    0   5.02  5.02
#> 74   4    0   7.02  7.02
#> 75   4    0   9.02  9.02
#> 76   4    0  11.98 11.98
#> 77   4    0  24.65  0.65
#> 78   4    0 144.00  0.00
#> 79   4    0 144.35  0.35
#> 80   4    0 144.60  0.60
#> 81   4    0 145.07  1.07
#> 82   4    0 146.13  2.13
#> 83   4    0 147.50  3.50
#> 84   4    0 149.02  5.02
#> 85   4    0 151.02  7.02
#> 86   4    0 153.02  9.02
#> 87   4    0 155.98 11.98
#> 88   4    0 168.65 24.65
#> 89   5    0   0.00  0.00
#> 90   5    0   0.30  0.30
#> 91   5    0   0.52  0.52
#> 92   5    0   1.00  1.00
#> 93   5    0   2.02  2.02
#> 94   5    0   3.50  3.50
#> 95   5    0   5.02  5.02
#> 96   5    0   7.02  7.02
#> 97   5    0   9.10  9.10
#> 98   5    0  12.00 12.00
#> 99   5    0  24.35  0.35
#> 100  5    0 144.00  0.00
#> 101  5    0 144.30  0.30
#> 102  5    0 144.52  0.52
#> 103  5    0 145.00  1.00
#> 104  5    0 146.02  2.02
#> 105  5    0 147.50  3.50
#> 106  5    0 149.02  5.02
#> 107  5    0 151.02  7.02
#> 108  5    0 153.10  9.10
#> 109  5    0 156.00 12.00
#> 110  5    0 168.35 24.35
#> 111  6    0   0.00  0.00
#> 112  6    0   0.27  0.27
#> 113  6    0   0.58  0.58
#> 114  6    0   1.15  1.15
#> 115  6    0   2.03  2.03
#> 116  6    0   3.57  3.57
#> 117  6    0   5.00  5.00
#> 118  6    0   7.00  7.00
#> 119  6    0   9.22  9.22
#> 120  6    0  12.10 12.10
#> 121  6    0  23.85 23.85
#> 122  6    0 144.00  0.00
#> 123  6    0 144.27  0.27
#> 124  6    0 144.58  0.58
#> 125  6    0 145.15  1.15
#> 126  6    0 146.03  2.03
#> 127  6    0 147.57  3.57
#> 128  6    0 149.00  5.00
#> 129  6    0 151.00  7.00
#> 130  6    0 153.22  9.22
#> 131  6    0 156.10 12.10
#> 132  6    0 167.85 23.85
#> 133  7    0   0.00  0.00
#> 134  7    0   0.25  0.25
#> 135  7    0   0.50  0.50
#> 136  7    0   1.02  1.02
#> 137  7    0   2.02  2.02
#> 138  7    0   3.48  3.48
#> 139  7    0   5.00  5.00
#> 140  7    0   6.98  6.98
#> 141  7    0   9.00  9.00
#> 142  7    0  12.05 12.05
#> 143  7    0  24.22  0.22
#> 144  7    0 144.00  0.00
#> 145  7    0 144.25  0.25
#> 146  7    0 144.50  0.50
#> 147  7    0 145.02  1.02
#> 148  7    0 146.02  2.02
#> 149  7    0 147.48  3.48
#> 150  7    0 149.00  5.00
#> 151  7    0 150.98  6.98
#> 152  7    0 153.00  9.00
#> 153  7    0 156.05 12.05
#> 154  7    0 168.22 24.22
#> 155  8    0   0.00  0.00
#> 156  8    0   0.25  0.25
#> 157  8    0   0.52  0.52
#> 158  8    0   0.98  0.98
#> 159  8    0   2.02  2.02
#> 160  8    0   3.53  3.53
#> 161  8    0   5.05  5.05
#> 162  8    0   7.15  7.15
#> 163  8    0   9.07  9.07
#> 164  8    0  12.10 12.10
#> 165  8    0  24.12  0.12
#> 166  8    0 144.00  0.00
#> 167  8    0 144.25  0.25
#> 168  8    0 144.52  0.52
#> 169  8    0 144.98  0.98
#> 170  8    0 146.02  2.02
#> 171  8    0 147.53  3.53
#> 172  8    0 149.05  5.05
#> 173  8    0 151.15  7.15
#> 174  8    0 153.07  9.07
#> 175  8    0 156.10 12.10
#> 176  8    0 168.12 24.12
#> 177  9    0   0.00  0.00
#> 178  9    0   0.30  0.30
#> 179  9    0   0.63  0.63
#> 180  9    0   1.05  1.05
#> 181  9    0   2.02  2.02
#> 182  9    0   3.53  3.53
#> 183  9    0   5.02  5.02
#> 184  9    0   7.17  7.17
#> 185  9    0   8.80  8.80
#> 186  9    0  11.60 11.60
#> 187  9    0  24.43  0.43
#> 188  9    0 144.00  0.00
#> 189  9    0 144.30  0.30
#> 190  9    0 144.63  0.63
#> 191  9    0 145.05  1.05
#> 192  9    0 146.02  2.02
#> 193  9    0 147.53  3.53
#> 194  9    0 149.02  5.02
#> 195  9    0 151.17  7.17
#> 196  9    0 152.80  8.80
#> 197  9    0 155.60 11.60
#> 198  9    0 168.43 24.43
#> 199 10    0   0.00  0.00
#> 200 10    0   0.37  0.37
#> 201 10    0   0.77  0.77
#> 202 10    0   1.02  1.02
#> 203 10    0   2.05  2.05
#> 204 10    0   3.55  3.55
#> 205 10    0   5.05  5.05
#> 206 10    0   7.08  7.08
#> 207 10    0   9.38  9.38
#> 208 10    0  12.10 12.10
#> 209 10    0  23.70 23.70
#> 210 10    0 144.00  0.00
#> 211 10    0 144.37  0.37
#> 212 10    0 144.77  0.77
#> 213 10    0 145.02  1.02
#> 214 10    0 146.05  2.05
#> 215 10    0 147.55  3.55
#> 216 10    0 149.05  5.05
#> 217 10    0 151.08  7.08
#> 218 10    0 153.38  9.38
#> 219 10    0 156.10 12.10
#> 220 10    0 167.70 23.70
#> 221 11    0   0.00  0.00
#> 222 11    0   0.25  0.25
#> 223 11    0   0.50  0.50
#> 224 11    0   0.98  0.98
#> 225 11    0   1.98  1.98
#> 226 11    0   3.60  3.60
#> 227 11    0   5.02  5.02
#> 228 11    0   7.03  7.03
#> 229 11    0   9.03  9.03
#> 230 11    0  12.12 12.12
#> 231 11    0  24.08  0.08
#> 232 11    0 144.00  0.00
#> 233 11    0 144.25  0.25
#> 234 11    0 144.50  0.50
#> 235 11    0 144.98  0.98
#> 236 11    0 145.98  1.98
#> 237 11    0 147.60  3.60
#> 238 11    0 149.02  5.02
#> 239 11    0 151.03  7.03
#> 240 11    0 153.03  9.03
#> 241 11    0 156.12 12.12
#> 242 11    0 168.08 24.08
#> 243 12    0   0.00  0.00
#> 244 12    0   0.25  0.25
#> 245 12    0   0.50  0.50
#> 246 12    0   1.00  1.00
#> 247 12    0   2.00  2.00
#> 248 12    0   3.52  3.52
#> 249 12    0   5.07  5.07
#> 250 12    0   7.07  7.07
#> 251 12    0   9.03  9.03
#> 252 12    0  12.05 12.05
#> 253 12    0  24.15  0.15
#> 254 12    0 144.00  0.00
#> 255 12    0 144.25  0.25
#> 256 12    0 144.50  0.50
#> 257 12    0 145.00  1.00
#> 258 12    0 146.00  2.00
#> 259 12    0 147.52  3.52
#> 260 12    0 149.07  5.07
#> 261 12    0 151.07  7.07
#> 262 12    0 153.03  9.03
#> 263 12    0 156.05 12.05
#> 264 12    0 168.15 24.15

Created on 2024-02-06 with reprex v2.1.0