Deep Dive into our Products

Where Statistical Innovation Meets Open Source Excellence

Daniel Sabanés Bové

RPACT

April 13, 2026

Outline

  • The R Package rpact
  • The R Package crmPack
  • RPACT Cloud
  • Outlook to Future Developments

The R Package rpact

Why rpact?

What are the advantages of using rpact instead of other software like SAS, nQuery, or East?

  • Open source: free to download, inspect, use, modify (License: LGPL-3)
  • Tailored support: we are a small company and can provide personalized support to our users
  • Continuous development: we are constantly developing and improving rpact based on user feedback and the latest methodological research
  • Cost-effective: service level agreement (SLA) with a flat rate per company, no per-user fees, and no hidden costs for updates or support
  • Fully validated: service level agreement (SLA) brings full validation documentation and installation qualification tests for company servers and client computers
  • Comprehensive documentation: detailed manuals, vignettes, and examples to help users get started and make the most of rpact
  • Active community: users can ask questions, share experiences, and contribute to the development of rpact through our GitHub repository and RPACT User Group

A few rpact user testimonials

  • rpact is by far the easiest to use.” (Professor Daniel Lakens, Human-Technology Interaction Group, Eindhoven University of Technology, The Netherlands)
  • “One of the best software and team in the field of adaptive design!” (Senior Director of Statistics)
  • rpact is just amazing.” (Biostatistician)
  • “We are impressed by the high quality of the package and the excellent support by RPACT.” (Biostatistics director of a pharmaceutical company)
  • “[We] exclusively use rpact, complemented with a huge internal webportal of supporting code, documentation, internal case studies, repository of health authority questions, etc. for all clinical trial design purposes” (see paper)
  • “Excellent package! Many thanks.” (Biostatistician)
  • “We regularly use rpact for the design of group-sequential and adaptive trials at our company. The package is continuously evolving and includes state-of-the-art methods such as estimation of unbiased treatment effects or MAMS. The vignettes and the Shiny app allow for quick and easy integration in day-to-day work of trial statisticians. We are impressed by the high quality of the package and the excellent support by RPACT.” (Biostatistics director of a pharmaceutical company)
  • “[…] it is an incredibly accessible and useful tool for sequential analyses. […] I think your rpact package and shiny app might be a bit of a game-changer on this front, as it makes the required calculations a lot easier to perform.” (Professor Daniel Lakens, Human-Technology Interaction Group, Eindhoven University of Technology, The Netherlands)

Package Validation Concept ✔️

Why is rpact a reliable R package?

  • Formal validation inspired by “GAMP 5” principles
  • As few dependencies as possible:
    • Imports: Rcpp
    • Suggests: testthat, ggplot2, R6
  • High test coverage:
  • testPackage(): installation qualification on a client computer or company server

We assume that base/core R is validated/reliable (see R-FDA.pdf)

Trial Designs 🔬

  • Fixed sample designs:
    • continuous, binary, count, survival outcomes
  • Group sequential designs:
    • efficacy interim analyses, futility stopping, alpha-spending functions
  • Adaptive designs:
    • Inverse normal and Fisher’s combination test, conditional error rate principle
    • Provides adjusted confidence intervals and bias corrected estimates
    • Multi-arm multi-stage (MAMS) and enrichment designs, sample size reassessment

Easy to understand R commands:

getDesignGroupSequential()
getDesignInverseNormal()
getDesignFisher()
getDesignConditionalDunnett()

Sample Size and Power Calculation 💻

Sample size and power can be calulcated for testing:

  • means (continuous endpoint)
  • proportions (binary endpoint)
  • hazards (survival endpoint)
    • Note: flexible recruitment and survival time options
  • rates (count endpoint)

Easy to understand R commands:

getSampleSize[Means / Rates / Survival / Counts]()
getPower[Means / Rates / Survival / Counts]()

Example: Sample Size Calculation 🧮

library(rpact)

# Define the design.
getDesignGroupSequential(
    typeOfDesign = "asOF",
    futilityBounds = c(0, 0)
) |>
    # Perform sample size calculation.
    getSampleSizeMeans(
        alternative = 2,
        stDev = 5
    ) |>
    # Obtain summary.
    summary()

Sample size calculation for a continuous endpoint

Sequential analysis with a maximum of 3 looks (group sequential design), one-sided overall significance level 2.5%, power 80%. The results were calculated for a two-sample t-test, H0: mu(1) - mu(2) = 0, H1: effect = 2, standard deviation = 5.

Stage 1 2 3
Planned information rate 33.3% 66.7% 100%
Cumulative alpha spent 0.0001 0.0060 0.0250
Stage levels (one-sided) 0.0001 0.0060 0.0231
Efficacy boundary (z-value scale) 3.710 2.511 1.993
Futility boundary (z-value scale) 0 0
Efficacy boundary (t) 4.690 2.152 1.384
Futility boundary (t) 0 0
Cumulative power 0.0204 0.4371 0.8000
Number of subjects 69.9 139.9 209.8
Expected number of subjects under H1 170.9
Overall exit probability (under H0) 0.5001 0.1309
Overall exit probability (under H1) 0.0684 0.4202
Exit probability for efficacy (under H0) 0.0001 0.0059
Exit probability for efficacy (under H1) 0.0204 0.4167
Exit probability for futility (under H0) 0.5000 0.1250
Exit probability for futility (under H1) 0.0480 0.0035

Legend:

  • (t): treatment effect scale

Adaptive Analysis 📈

  • Calculate adjusted point estimates and confidence intervals
  • Some highlights:
    • Automatic boundary recalculations during the trial for analysis with alpha spending approach, including under- and over-running
    • Adaptive analysis tools for multi-arm trials
    • Adaptive analysis tools for enrichment designs

Easy to understand R commands:

getStageResults()
getRepeatedConfidenceIntervals()
getAnalysisResults()

Simulation Tool 🧪

Obtain operating characteristics of different designs:

  • Assessment of adaptive sample size recalculation strategies
  • Assessment of treatment selection strategies in multi-arm trials
  • Assessment of population selection strategies in enrichment designs

Easy to understand R commands:

getSimulation[MultiArm / Enrichment][Means / Rates / Survival / Counts]()

Example:

getSimulationMeans()
getSimulationMultiArmMeans()
getSimulationEnrichmentMeans()

User Concept – R generics

In general, everything runs with the R standard functions which are always present in R: so-called R generics.

  • Visualize:
    • print()
    • summary()
    • plot()
  • Continue work:
    • as.data.frame()
    • length()
    • names()

User Concept – Most parameters have a default value

Example: getDesignInverseNormal() produces the output:

User Concept – Most parameters have a default value

Example: getDesignInverseNormal(kMax = 2) produces the output:

User Concept – Support of pipe operators

library(rpact)
getDesignGroupSequential() |>
    getDataset(dataMeans) |>
    getAnalysisResults()

Analysis results (means of one group, group sequential design)

Design parameters

  • Information rates: 0.333, 0.667, 1.000
  • Critical values: 3.471, 2.454, 2.004
  • Futility bounds (non-binding): -Inf, -Inf
  • Cumulative alpha spending: 0.0002592, 0.0071601, 0.0250000
  • Local one-sided significance levels: 0.0002592, 0.0070554, 0.0225331
  • Significance level: 0.0250
  • Test: one-sided

Default parameters

  • Normal approximation: FALSE
  • Direction upper: TRUE
  • Theta H0: 0

Stage results

  • Cumulative effect sizes: 45.00, 48.60, 47.25
  • Cumulative (pooled) standard deviations: 130.0, 134.8, 128.7
  • Stage-wise test statistics: 1.548, 1.995, 2.054
  • Stage-wise p-values: 0.06905, 0.02774, 0.02455
  • Overall test statistics: 1.548, 2.550, 3.285
  • Overall p-values: 0.0690533, 0.0069750, 0.0007617

Analysis results

  • Assumed standard deviation: 128.7
  • Actions: continue, reject and stop, reject
  • Conditional rejection probability: 0.08839, 0.50232, NA
  • Conditional power: NA, NA, NA
  • Repeated confidence intervals (lower): -76.25044, 0.08653, 17.95726
  • Repeated confidence intervals (upper): 166.25, 97.11, 76.54
  • Repeated p-values: 0.2531791, 0.0247936, 0.0007821
  • Final stage: 2
  • Final p-value: NA, 0.00708, NA
  • Final CIs (lower): NA, 9.421, NA
  • Final CIs (upper): NA, 84.18, NA
  • Median unbiased estimate: NA, 46.82, NA

Getting started with rpact

Various learning concepts available:

RPACT Connect

  • All important information and resources about RPACT on one dashboard page
  • Customer-specific resources, e.g.,
    • training slides,
    • annual meeting slides, and
    • the rpact validation documentation
  • Use RPACT Connect to jump to RPACT Cloud and unlock advanced features
  • Sign up: Please use your corporate email address so RPACT Connect can recognize and load your organization specific resources automatically
  • RPACT Connect: connect.rpact.com

The R Package rpact - Online Resources

Further information, installation, and usage:

New Edition of the Reference Book

  • Group Sequential and Confirmatory Adaptive Designs in Clinical Trials by Gernot Wassmer and Werner Brannath
  • Second Edition (Springer, 2025)
  • Now featuring numerous rpact R code examples demonstrating the methods implemented in the package
  • For more information, visit: link.springer.com/book/10.1007/978-3-031-89669-9

The R Package crmPack

Why crmPack?

What are the advantages of using crmPack instead of other software e.g. Addplan, FACTS, East?

  • Open source: free to download, inspect, use, modify (License: GPL-2+)
  • Higher flexibility compared to other software, thanks to its modular design
  • Easy extensibility and adoption of new designs
  • Cost-effective: service level agreement (SLA) with a flat rate per company, no per-user fees, and no hidden costs for updates or support
  • Continuous development: we are constantly developing and improving crmPack based on user feedback and the latest methodological research
  • Comprehensive documentation: detailed manuals, vignettes, and examples to help users get started and make the most of crmPack
  • Active community: users can ask questions, share experiences, and contribute to the development of crmPack through our GitHub repository and RPACT User Group
  • Well-tested (>90% test coverage) and full validation will come in 2026

A few crmPack user testimonials

  • “We have already used and continuously use crmPack successfully for clinical trials in the regulatory context, and we appreciate the flexibility that you can adapt it to your needs.” (Merck KgaA)
  • “Implementation of a dose escalation study can be achieved with crmPack without requiring in-depth knowledge of R programming. Comprehensive supporting documentation, available vignettes and well structured code base enables easy implementation of new design features.” (Bayer)
  • “We started to use CRM dose escalation designs in early development oncology and non-oncology more than 10 years ago. At the beginning crmPack was not yet available and especially the simulation part was a little cumbersome. In the meantime, crmPack is our standard package used for CRM dose-escalation methods. Based on crmPack we also developed templates for the protocol sections and appendix, which includes simulations for different assumed dose-toxicity relationships. With the help of crmPack a model based dose escalation design is no longer a burden also for new-comers and colleagues who have not worked in early development before.” (Roche)
  • “Running a CRM trial rather than a 3+3 saved us a year in development time and almost USD 1M as well as providing greater insight to the relationship between dose and toxicity” (CRO)

Overview 📦

  • Specialized R package for dose escalation trials
  • Initial CRAN release in 2016, publication by Sabanés Bové et al. (2019)
  • Produces visual and numeric outputs for easy interpretation
  • Facilitates simulations to assess the performance under various scenarios

3+3 designs are outdated

Table taken from “Moving Beyond 3+3: The Future of Clinical Trial Design”

Usage of model-based dose escalation designs

  • Rogatko et al. (2007) reported that 98.4% of phase I cancer trials use a 3+3 design or a variant, but that only 35% of participants is such trials were treated at “optimal” doses, compared to 55% in model-based trials
  • Le Tourneau et al. (2009) reported 3.3% (6 of 181) of trials used CRM during 2007–2008
  • van Brummelen et al. (2016) reported that only 6.4% (11 of 172 oncology Phase I trials) used model-based approaches from 2012 to 2014
  • Nonami et al. (2025) reported that from 394 clinical trials submitted to PMDA between 2013 and 2022, 195 (49.5%) used rule-based designs, 114 (28.9%) used model-based designs and 85 (21.6%) used model-assisted designs.

crmPack to the rescue!

With crmPack we aimed to make it easy for everyone to use model-based designs in their dose escalation studies. And indeed, we were successful!

The package provides:

  • A flexible framework to define dose escalation designs
  • Calculation of operating characteristics via simulations
  • Visualization and tabulation of results
  • A user-friendly interface to backfill cohorts
  • A growing collection of advanced design options (e.g. dual endpoint designs, time-to-event designs, etc.)

Model-based dose escalation design

Generic flow chart for model-based dose escalation design

Package structure: parallel to flow

crmPack package structure parallels the flow chart

Framework in crmPack

crmPack package framework

Example: Dose Escalation Design 💊

# install.packages(crmPack)
library(crmPack)

empty_data <- Data(doseGrid = c(1, 3, seq(from = 5, to = 100, by = 5)))

# Initialize the CRM model.
my_model <- LogisticLogNormal(
    mean = c(-4, 0.5),
    cov = matrix(c(8, -2, -2, 2), nrow = 2),
    ref_dose = 50
)

# Get prior samples and plot.
mcmc_opts <- McmcOptions()
prior_samples <- mcmc(empty_data, my_model, mcmc_opts)
plot(prior_samples, my_model, empty_data)
# Choose the rule for selecting the next dose.
my_next_best <- NextBestNCRM(
    target = c(0.2, 0.35),
    overdose = c(0.35, 1),
    max_overdose_prob = 0.25
)

# Choose the rule for the cohort-size.
my_size <- CohortSizeConst(3)

# Choose the rule for stopping.
my_stopping1 <- StoppingMinCohorts(nCohorts = 3)
my_stopping2 <- StoppingTargetProb(
    target = c(0.2, 0.35),
    prob = 0.5
)
my_stopping3 <- StoppingMinPatients(nPatients = 20)
my_stopping <- (my_stopping1 & my_stopping2) | my_stopping3

# Choose the rule for dose increments.
my_increments <- IncrementsRelative(
    intervals = c(0, 20),
    increments = c(1, 0.5)
)

# Initialize the design.
design <- Design(
    model = my_model,
    nextBest = my_next_best,
    stopping = my_stopping,
    increments = my_increments,
    cohort_size = my_size,
    data = empty_data,
    startingDose = 3
)

# Examine possible outcomes.
examine(design)
   dose DLTs nextDose  stop increment
1     3    0        5 FALSE        67
2     3    1        1 FALSE       -67
3     3    2       NA FALSE        NA
4     3    3       NA FALSE        NA
5     5    0       10 FALSE       100
6     5    1       10 FALSE       100
7     5    2        1 FALSE       -80
8     5    3       NA FALSE        NA
9    10    0       20 FALSE       100
10   10    1       20 FALSE       100
11   10    2       10 FALSE         0
12   10    3        5 FALSE       -50
13   20    0       30 FALSE        50
14   20    1       30 FALSE        50
15   20    2       20 FALSE         0
16   20    3       10 FALSE       -50
17   30    0       45 FALSE        50
18   30    1       45 FALSE        50
19   30    2       30 FALSE         0
20   30    3       20 FALSE       -33
21   45    0       65 FALSE        44
22   45    1       65 FALSE        44
23   45    2       45 FALSE         0
24   45    3       35 FALSE       -22
25   65    0       85  TRUE        31
26   65    1       65  TRUE         0
27   65    2       55  TRUE       -15
28   65    3       50  TRUE       -23
# Simulate under different scenarios.
myTruth <- probFunction(my_model, alpha0 = 7, alpha1 = 8)
my_sims <- simulate(design, truth = myTruth, nsim = 10)
summary(my_sims, truth = myTruth)
Summary of 10 simulations

Target toxicity interval was 20, 35 %
Target dose interval corresponding to this was 17.5, 19.3 
Intervals are corresponding to 10 and 90 % quantiles

Number of patients overall : mean 21 (21, 21) 
Number of patients treated above target tox interval : mean 10 (9, 12) 
Proportions of DLTs in the trials : mean 24 % (19 %, 29 %) 
Mean toxicity risks for the patients on active : mean 27 % (21 %, 34 %) 
Doses selected as MTD : mean 17 (15, 20.5) 
True toxicity at doses selected : mean 21 % (7 %, 46 %) 
Proportion of trials selecting target MTD: 0 %
Dose most often selected as MTD: 15 
Observed toxicity rate at dose most often selected: 8 %
Fitted toxicity rate at dose most often selected : mean 21 % (16 %, 23 %) 
Stop reason triggered:
 ≥ 3 cohorts dosed :  100 %
 P(0.2 ≤ prob(DLE | NBD) ≤ 0.35) ≥ 0.5 :  10 %
 ≥ 20 patients dosed :  100 %

Learning more

Lots of documentation is available on the crmPack website: crmPack.org

It includes:

  • 13 vignettes with detailed examples of how to use the package
    • In particular, the paper vignette is a great starting point
    • Many topic focused vignettes, e.g. backfilling cohorts are explained in a dedicated backfilling vignette
  • Link to the online reference explaining all the functions and classes in the package
  • Link to the GitHub repository for bug reports and feature requests
  • Contact information for questions and suggestions

RPACT Cloud

Why RPACT Cloud?

What are the advantages of using RPACT Cloud instead of directly using the R package rpact or other software e.g. Addplan or East?

  • User-friendly graphical user interface: Users do not need to write R code, but can point and click to design their trial
  • Web-based: No local installation required, accessible from any device with internet access
  • Free demo available: At rpact.cloud, users can try out RPACT Cloud for free
  • Company installation: Companies can install RPACT Cloud on their own servers, ensuring data security and compliance with internal policies
  • Cost-effective: Installation license with a flat rate per company, no per-user fees, and no hidden costs for updates or support
  • Continuous development: We are constantly developing and improving RPACT Cloud based on user feedback and the latest methodological research
  • Fully validated: License includes installation qualification tests for the GUI (Shiny test suite), adding on top of the rpact package validation

RPACT Cloud – Basics

RPACT Cloud – Explore Parameter Levels

RPACT Cloud – Settings

RPACT Cloud – Quick Start Menu

RPACT Cloud – Design Tabs

RPACT Cloud – Getting Help

RPACT Cloud – Copy And Paste

RPACT Cloud – Output Options

RPACT Cloud – Reporting

RPACT Cloud – Export

RPACT Cloud – Plotting

RPACT Cloud – Output Table

RPACT Cloud – Design Comparison

Outlook to Future Developments

Future of rpact

In the near future you will see in rpact:

  • Patient level survival data simulations for multi-arm and enrichment designs
  • Optimum conditional error functions according to Brannath et al. (2024) (package optconerrf published on CRAN Sep 09, 2025)
  • Least square means interface for continuous endpoints
  • Go/No-go decision criteria operating characteristics for Phase 2 trials (frequentist and Bayesian)

Future of crmPack

In the near future you will see in crmPack:

  • Two drug dose escalation designs, including parallel monotherapy and combination arms
  • Full support for ordinal toxicity endpoints, including simulations and visualizations
  • Validation documentation and installation qualification tests for service level agreement (SLA) customers

Future of RPACT Cloud

TODO: Can Friedrich give me some items for this?

“RPACT Code” (working title)

In 2026 we are developing “RPACT Code” (working title), a next-generation AI system that helps statisticians design clinical trials using natural language, while ensuring that all results are computed deterministically and reproducibly in R.

Unlike typical AI coding tools, this system will:

  • use real statistical computation (to get correct, instead of hallucinated, results)
  • access our proprietary retrieval-augmented generation (RAG) system over the full set of documentation, source code, tests and validation documentation of our R packages rpact and crmPack
  • combine LLMs, RAG, and structured execution for maximum reliability and efficiency
  • be designed from the start for enterprise and regulated environments

Summary

Summary

  • rpact is our validated R package for group sequential and adaptive designs, with a focus on confirmatory clinical trials
  • crmPack is our R package for model-based dose escalation designs
  • RPACT Cloud is our web-based graphical user interface for rpact, with a focus on ease of use and accessibility
  • We are continuously developing and improving our software based on user feedback and the latest methodological research
  • This year we are developing “RPACT Code” (working title), a next-generation agentic AI system that helps statisticians design clinical trials using natural language, while ensuring that all results are computed deterministically and reproducibly in R

References

Brannath, W., M. Dreher, J. Verth, and M. Scharpenberg. 2024. “Optimal Monotone Conditional Error Functions.” arXiv Preprint arXiv:2402.00814.
Le Tourneau, C, JJ Lee, and LL Siu. 2009. “Dose Escalation Methods in Phase i Cancer Clinical Trials.” J Natl Cancer Inst, 708–20.
Nonami, Atsushi, Kensuke Matsuda, Kouta Funakoshi, Ryosuke Kato, Hideaki Takahashi, and Yoko Edahiro. 2025. “Impact of Dose-Escalation Design on the Safety and Development of Anticancer Drugs in Clinical Trials.” Clinical and Translational Science 18 (10): e70367. https://doi.org/https://doi.org/10.1111/cts.70367.
Rogatko, A, D Shoeneck, W Jonas, M Tighiouart, FR Khuri, and A Porter. 2007. “Translation of Innovative Designs into Phase 1 Trials.” J Clin Onc 25 (31): 4982–86.
Sabanés Bové, Daniel, Wai Yin Yeung, Giuseppe Palermo, and Thomas Jaki. 2019. “Model-Based Dose Escalation Designs in R with crmPack.” Journal of Statistical Software 89 (10): 1–22. https://doi.org/10.18637/jss.v089.i10.
van Brummelen, EM, AD Huitema, E van Werkhoven, JH Beijnen, and JH Schellens. 2016. “The Performance of Model-Based Versus Rule-Based Phase i Clinical Trials in Oncology: A Quantitative Comparison of the Performance of Model-Based Versus Rule-Based Phase i Trials with Molecularly Targeted Anticancer Drugs over the Last 2 Years.” J Pharmacokinet Pharmacodyn 43 (3): 235–42.
Wassmer, Gernot, and Friedrich Pahlke. 2025. rpact: Confirmatory Adaptive Clinical Trial Design and Analysis. https://CRAN.R-project.org/package=rpact.