Chorus does two jobs, and they can be wrong independently, so each is checked against its own reference library: drawing the concentration curve from a set of PK parameters, and working backwards from measured levels to one patient’s clearance and volume.
This evaluation examines numerical precision, not clinical validity.
| Comparator | Version | Function | Validation role |
|---|---|---|---|
| rxode2 | 3.0.4 | Steps through the compartment equations numerically. | The solver behind nlmixr2 and much of R-based population PK work. |
| mapbayr | 0.10.0 mrgsolve 1.5.2 |
Computes MAP Bayesian individual parameter estimates (η). | Developed specifically for clinical TDM and cross-validated against NONMEM; executes on mrgsolve. |
Concentration–time simulation
The two reach the same curve by different routes: Chorus evaluates an exact formula at each time point, rxode2 steps through the equations numerically. An error in one would have no reason to show up in the other, which is what makes agreement worth anything.
Both were given the same model — Goti et al. (2018), two-compartment — and the same case: a 62-year-old man, 82 kg, on 1250 mg IV every 12 hours.
The curves are indistinguishable, and the numbers agree to eleven decimal places:
| Landmark | Time | Chorus (mg/L) | rxode2 (mg/L) |
|---|---|---|---|
| End of first infusion | 1 h | 16.35875470 | 16.35875470 |
| Trough 1 | 12 h | 7.65056688 | 7.65056688 |
| Trough 2 | 24 h | 13.03705502 | 13.03705502 |
| Concentration at level 2 | 36 h | 16.98362013 | 16.98362013 |
The maximum absolute discrepancy across the entire 48-hour profile is 0.00000000003 mg/L — the limit of what a computer can represent, rather than a disagreement about the kinetics.
Across 330 scenarios
The two were then compared point by point across 330 simulated cases — one-, two- and three-compartment models, over ordinary and deliberately extreme clearance and volume. 255 of them run 48 hours:
| What changes during the course | Scenarios | Worst absolute Δ (mg/L) | Median absolute Δ (mg/L) |
|---|---|---|---|
| Nothing — fixed CL and V | 136 | 0.00000003 | 0.00000000008 |
| Clearance, with a moving creatinine | 60 | 0.0086 | 0.000055 |
| CL, V and Q together | 59 | 0.0054 | 0.00017 |
Against peak concentrations of 30–60 mg/L.
With the parameters held fixed, the two agree as closely as a computer can represent a number at all. Once renal function moves they part company very slightly, because Chorus holds the changing value steady across each grid interval while rxode2 varies it continuously.
The remaining 75 run longer. Across 69 week-long courses with the parameters drifting throughout, the largest gap was 0.0094 mg/L, and it stopped growing rather than building up as the course went on; 6 more run out to 21 days.
Agreement on trough and AUC
| Metric | Max relative discrepancy | Median relative discrepancy |
|---|---|---|
| Trough concentration | 0.012% | <0.001% |
| Course AUC24 | 0.0001% | 0.00001% |
Across 7-day courses at the default grid resolution. For an AUC24 of 500 mg·h/L, the maximum deviation was ~0.0005 mg·h/L.
Bayesian parameter estimation
The second check is the MAP estimation, against mapbayr — a separate implementation on a separate solver.
Both were given the same Goti (2018) model and the same two levels — 8.0 mg/L at the 12-hour trough, 17.5 mg/L at 36 hours — and asked what they implied about the patient. η is how far a parameter has moved from the population value it started at.
| Landmark | Time | Chorus (mg/L) | mapbayr (mg/L) | Absolute difference (mg/L) |
|---|---|---|---|---|
| End of first infusion | 1 h | 16.358755 | 16.358845 | 0.000090 |
| Trough 1 | 12 h | 7.650567 | 7.650601 | 0.000034 |
| Trough 2 | 24 h | 13.037055 | 13.037107 | 0.000052 |
| Level 2 draw | 36 h | 16.983620 | 16.983678 | 0.000058 |
The maximum discrepancy between the fitted posterior curves across the full course is 0.00014 mg/L.
Individual parameter estimates (η)
| Parameter | Chorus η | mapbayr η | Absolute difference |
|---|---|---|---|
| Clearance (CL) | 0.029336 | 0.029335 | 0.0000007 |
| Central volume (V1) | 0.047157 | 0.047151 | 0.0000059 |
| Peripheral volume (V2) | 0.026110 | 0.026101 | 0.0000085 |
Library-wide consistency (all 46 models)
The same case was then run through all 46 models, in both programs:
| Evaluation | Worst Δη | Median Δη |
|---|---|---|
| 46 models, all random effects | 0.0016 | 0.0000048 |