Paper suggests#264
Closed
Siel wants to merge 5 commits into
Closed
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds and updates manuscript materials for describing pharmsol as a Rust PK/PD modeling and simulation library, including expanded discussion of analytical models and DSL/runtime support.
Changes:
- Adds a root-level paper draft and bibliography.
- Updates the JOSS paper summary to mention the DSL and execution runtimes.
- Updates analytical model support wording to include three-compartment models.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 13 comments.
| File | Description |
|---|---|
paper.md |
Adds a full manuscript draft with architecture, implementation, performance, and usage sections. |
paper.bib |
Adds bibliography entries referenced by the root-level manuscript draft. |
joss/paper.md |
Updates the existing JOSS paper text for DSL runtime support and current analytical model coverage. |
Comments suppressed due to low confidence (2)
paper.md:245
- This full example uses the same outdated
ODE::newshape as above and adds a dimensions tuple that the current constructor does not accept. It should construct the five callbacks and set dimensions viawith_nstates,with_ndrugs, andwith_noutso the published example compiles.
let ode = equation::ODE::new(
paper.md:246
- The differential-equation callback is missing the bolus argument required by the current
DiffEqsignature (x, p, t, dx, bolus, rateiv, cov), so this closure will not type-check as the firstODE::newargument.
|x, p, _t, dx, _rateiv, _cov| {
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - compartmental models | ||
| authors: | ||
| - name: Julián D. Otálvaro | ||
| orcid: 0000-0000-0000-0000 |
|
|
||
| Pharmacokinetic and pharmacodynamic modeling and simulation has become a staple in drug development, therapeutic drug monitoring, and prediction of drug-drug interactions. | ||
|
|
||
| Pharmacokinetic and pharmacodynamic simulation faces increasing complexity as drug development workflows incorporate more sophisticated dosing regimens, mechanistic models, and individualized approaches, all with higher throughput than ever before. As such, there is a need for |
| Most established simulation tools rely on legacy codebases written in languages that lack memory safety guarantees. According to security agencies, memory safety issues account for approximately 70% of software vulnerabilities [@cisa2023memorysafe; @nsa2022adopting]. As pharmaceutical simulations increasingly process sensitive patient data and support critical decision-making, these security considerations become essential. | ||
|
|
||
| 3. **Balancing Model Expressivity, Efficiency and Accuracy** | ||
| Current simulation approaches frequently impose unnecessary tradeoffs between model expressivity and computational efficiency. Custom mechanisms in R-based tools like nlmixr [@fidler2019nlmixr] provide flexibility but incur significant performance penalties, while faster tools often constrain model structures to predefined templates [mentre2005prediction]. |
| The ODE component allows specification of arbitrary differential equation systems through a callback-based interface: | ||
|
|
||
| ```rust | ||
| let ode = equation::ODE::new( |
|
|
||
| ```rust | ||
| let ode = equation::ODE::new( | ||
| |x, p, t, dx, _rateiv, cov| { // State derivative function |
| let predictions = ode.estimate_predictions(&subject, ¶ms); | ||
|
|
||
| // Access the results | ||
| for pred in predictions.flat_predictions() { |
|
|
||
| As a library, `pharmsol` provides a foundation for building robust pharmacometric workflows in a memory-safe and efficient language. | ||
|
|
||
| pharmsol serves as a foundation for building robust pharmacometric workflows, offering a significant performance advantage over existing tools while making advanced modeling techniques accessible to researchers across the pharmaceutical development pipeline. |
| The data module implements a hierarchical data structure that allows for flexible and accurate organization of data. The following is the high-level implementation of the data structure: | ||
|
|
||
|
|
||
| `Data` is a collection of `Subject`s. Each subject can have events on different `Occasion`s, separating observations by some arbitrary time. At each occasion, a subject can have one of three events: an `Observation`, providing some measurement, typically the concentration of drug in plasma; an administered `Bolus` dose, or an administered `Infusion` over some time. |
| .repeat(6, 24.0) // Repeat daily for 6 more days | ||
| .observation(1.0, 5.2, 0) // Blood sample at 1 hour | ||
| .covariate("weight", 0.0, 70.0) | ||
| .covariate("weight", 24.0, 72.0) // Linear interpolation between |
| @@ -0,0 +1,191 @@ | |||
| // Add your references here following the BibTeX format | |||
Contributor
|
| Branch | paper-suggests |
| Testbed | mhovd-pgx |
🐰 View full continuous benchmarking report in Bencher
⚠️ WARNING: Truncated view!The full continuous benchmarking report exceeds the maximum length allowed on this platform.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.