This thread marked the debut of R package precautionary
. The historical origins documented here remain of interest, despite major (and ongoing, mid-2021) improvements that render some R code shown below obsolete.
By unifying several categories of dose-escalation design under a single simulation framework, @CatchTwentyToo’s neat #escalation package has greatly facilitated the development of package #precautionary. 2/https://t.co/RvJvvrUaO4
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
The git diff (red=removed; green=added) shows admittedly that I split the change across 2 lines of code:
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
• cohorts_of_n() now generates a uniform random variate uᵢ∼𝒰[0,1] for each enrolling patient
• phase1_sim() then refers to uᵢ instead of calling rbinom() 4/ pic.twitter.com/viETXLyEkc
Seen from a purely software-engineering POV, then, these are simple code transformations: we ‘unwrapped’ rbinom() to expose its inner workings, retaining u_i.
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
But this formal refactoring turns out to have conceptual correlates. Retaining u_i makes a world of difference! 6/
What makes uᵢ so dangerous is that it acknowledges a latent toxicity threshold characterizing an individual patient’s susceptibility or tolerance to the drug’s toxicity. This makes rbinom() a kind of Pandora’s Box for the #OneSizeFitsAllogists … 8/https://t.co/QNVqs8bOQB pic.twitter.com/dEhS3V2uFU
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Wait, though … haven’t the #OneSizeFitsAllogists already proven that, if someone destroys your universe but you’re not paying attention, your universe remains unaffected? 10/ https://t.co/zps1G5USoa pic.twitter.com/HJeL4EKcmo
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
THAT is the question package #precautionary seeks to answer. And the answer is decidedly NEGATIVE.
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
With #precautionary I show that, even if I let them take a big, whopping #Mulligan, the #OneSizeFitsAllogists still have to confront devastating questions of TRIAL SAFETY. 12/
But why isn’t that tantamount to surrender? Doesn’t that give away the whole principle of inter-individual #heterogeneity in PKPD, forfeiting all of #DTAT’s power?
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Not if you left a uᵢ lying around … 14/ pic.twitter.com/xO0qP5QrbX
#TherapeuticIndex (TI)
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
In their 2012 @NatRevDrugDisc review, Muller & Milton advance TI as a fluid concept “that can be calculated using various pairs of pharmacological and toxicological end points.” 16/https://t.co/1JIsc6IYm4 pic.twitter.com/CZbHL7jaLi
In their short section on Oncology indications, Muller & Milton address the substantial toxicity of many oncology drugs in terms of a ‘TI < 1’.
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
But to my mind this inappropriately translates TI notions from other clinical applications. 18/ pic.twitter.com/QUHAOgpfVk
The CTCAE toxicity grading system already acknowledges this, I think. The numerator / denominator of an oncology-adapted TI ought to reference doses at which unacceptable / tolerable toxicities occur. 20/https://t.co/Nr5vlzxGOA
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
I’ve let the subscript linger briefly on TIᵢ to invite this consideration: In person-centered care TI is most properly a patient-specific concept. When you advise, “I don’t think this would be a good drug for you”, you’re saying the patient’s TIᵢ is below or too near 1. 22/
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
(The idea of such a ratio is hardly outlandish. In fact, any scheme of dose reductions for toxicity—whether in a trial protocol or on an FDA label—implicitly contains such an intuition.) 24/https://t.co/v25YFA84GY
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
For line-by-line details of R commands, I refer you to the #precautionary package’s Intro vignette https://t.co/bpvGsbw699. But the basic outline is like this:
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
We start from where the #escalation package leaves off … 26/ pic.twitter.com/lPSMhUJSRH
Next, because #escalation works at a high level of abstraction, such that doses are merely labeled ‘1’, ‘2’, ‘3’, …, we have to specify the ACTUAL doses in our trial. (You were going to do this anyway; it’s just that #precautionary cares to know.) 28/ pic.twitter.com/hoVl0yYbm0
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Now, when we invoke the simulate_trials() method, #precautionary takes over—through the ‘magic’ of #rstats S4 classes.
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
In terms of the tabular output, little has changed so far. But behind the scenes, SIMS now contains the u_i variable that #escalation’s simulation lacked. 30/ pic.twitter.com/lMjbemH3i5
But why do I present this as some kind of catastrophe for the #OneSizeFitsAllogists?
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Because fatal toxicities in phase 1 oncology trials utterly discredit 1-size-fits-all #dosefinding and its contempt for #PrecautionaryCoherence. 32/https://t.co/W9tMGnJYqx
Surely @FDAOncology #prospectively reviews phase 1 trial designs under 21 CFR §312.42(b)(1)(i). These reviews could be more effective—and make trials #safer—if they took into view the #TherapeuticIndex considerations implemented in #precautionary. 34/https://t.co/6XOpBLbKOH
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Of course, this is an INITIAL RELEASE: #precautionary v0.1-1.
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Much work remains, to test & extend the package, and to automate certain functionality. I hope to carry out most of this effort in collaborations on investigator-initiated trials. Investigators: email or DM me! 36/
Looking ahead through whatever lingering life dose escalation still has left, I’ll advance the following conjecture:
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020
Suitable defaults can be found to enable semi-automated safety diagnostics for the majority of off-the-shelf dose-escalation designs. 38/
In closing, I thank @CatchTwentyToo for the clear and extensible foundation he provided in package #escalation. I must also say this encounter with the strong example of his R programming work has stimulated meaningful improvements to my own R programming practices. 39/39.
— David C. Norris, MD moved to Mastodon 🦣 (@davidcnorrismd) July 20, 2020