
# rpact 3.4.0

## New features

* The new function `getPerformanceScore()` calculates the conditional performance score, its sub-scores and components according to Herrmann et al. (2020) for a given simulation result from a two-stage design
* `allocationRatioPlanned` for simulating multi-arm and enrichment designs can be a vector of length kMax, the number of stages 
* `getObjectRCode()` (short: `rcmd()`): with the new arguments `pipeOperator` and `output` many new output variants can be specified, e.g., the native R pipe operator or the magrittr pipe operator can be used
* Generic function `knitr::knit_print` for all result objects implemented and automatic code chunk option `results = 'asis'` activated

## Improvements, issues, and changes

* Improved speed of numerical computation of group sequential designs and test characteristics
* Multivariate t distribution restricted to `df <= 500` because of erroneous results in `mnormt` package otherwise. For `df > 500`, multivariate normal distribution is used 
* Performance of cumulative distribution function and survival function plot improved
* Test coverage extended and improved
* Descriptions for all class fields added
* Renamed field `omega` to `chi` in class `TrialDesignPlanSurvival`
* Several minor improvements


# rpact 3.3.4

* Rcpp sugar function `sapply` removed from C++ code to stop deprecated warnings on r-devel-linux-x86_64-fedora-clang 
* Minor improvements

# rpact 3.3.3

* `allocationRatioPlanned` for simulating means and rates for a two treatment groups design can be a vector of length kMax, the number of stages 
* `calcSubjectsFunction` can be used in C++ version for simulating means and rates
* `calcEventsFunction` added in getSimulationSurvival()
* `getPerformanceScore()` added: calculates the performance score for simulation means results (1 and 2 groups; 2 stages)
* Performance of simulation rates improved for 1 and 2 groups (by translating from R to C++)
* Performance of simulation means improved for 1 and 2 groups
* Two-sided O'Brien and Fleming beta-spending function corrected
* Issue in plot type 5 for sample size means and rates fixed
* Added dependency on R >= 3.6.0
* Minor improvements

# rpact 3.3.2

* Design objects can be piped into `getDataset()` to enable pipe syntax for analysis, e.g., 
`getDesignGroupSequential() |> getDataset(dataMeans) |> getAnalysisResults()`
* Performance of simulation means improved for 1 and 2 groups (by translating from R to C++)
* Total test time was cut in half by improving simulation performance and enabling parallel testing
* `SystemRequirements: C++11` added to DESCRIPTION to enable C++ 11 compilation on R 3.x
* Minor improvements

# rpact 3.3.1

* Help pages improved
* Parameter `betaAdjustment` can also be used in `getDesignInverseNormal()`
* `subsets` removed from result of `getWideFormat()` for non-enrichment datasets
* Summary of enrichment survival simulation results improved
* Parameter `populations` in `getSimulationEnrichmentMeans()`, `getSimulationEnrichmentRates()`, and `getSimulationEnrichmentSurvival()` has been removed since it is always derived from `effectList`
* Bug fixed in `getSimulationEnrichmentRates()` for calculated non-integer number of subjects 
* Futility probabilities and futility bounds corrected for two-sided beta-spending function approach
* `getRawData()`: the resulting `data.frame` now contains the correct `stopStage` and `lastObservationTime` (formerly `observationTime`)
* `deltaWT` is provided with three decimal points for typeOfDesign = "WToptimum"
* Generic `as.data.frame` functions improved
* testthat version changed to edition 3
* The rpact source code has been published on GitHub and the bug report link has been changed to https://github.com/rpact-com/rpact/issues
* Minor improvements

# rpact 3.3.0

## New features

* Two-sided beta-spending approach with binding and non-binding futility bounds
* Delayed response utility added in design specification

## Improvements, issues, and changes

* `getSimulationMultiArmSurvival()`: single stage treatment arm specific event numbers account for selection procedure
* User defined selection function can be used in `getSimulationEnrichmentRates()` and  `getSimulationEnrichmentSurvival()`
* Design summary extended by information of `getDesignCharacteristics()`
* `getSimulationSurvival()`: the result object now contains the new parameter `overallEventsPerStage`, which contains the values previously given in `eventsPerStage` (it was "cumulative" by mistake); `eventsPerStage` contains now the non-cumulative values as expected
* Minor improvements

# rpact 3.2.3

* Performance of group sequential and Fisher's combination test designs improved
* 'register' storage class specifier removed from C++ sources
* Minor improvements

# rpact 3.2.2

* Performance of group sequential and Fisher's combination test designs improved (by translating from R to C++)
* Numerical issue in analysis time calculation for survival design in specific cases resolved
* The internally used minimum quantile function value was changed from `stats::qnorm(1e-323)` to `stats::qnorm(1e-100)`
* Unit tests extended
* Minor improvements

# rpact 3.2.1

* C++ warning "using integer absolute value function 'abs' when argument is of floating point type" under r-devel-linux-x86_64-debian-clang removed
* getDataset: support of emmeans result objects as input improved 
* `getAnalysisResults()`: issue with zero values in the argument 'userAlphaSpending' fixed
* Minor improvements

# rpact 3.2.0

## New features

* Simulation tools for enrichment design testing means, rates, and hazard ratios: function `getSimulationEnrichmentMeans()`, `getSimulationEnrichmentRates()`, `getSimulationEnrichmentSurvival()` available for simulation of enrichment designs; 
note that this is a novel implementation, hence experimental
* `getDesignGroupSequential()` / `getDesignInverseNormal()`: new typeOfDesign = "noEarlyEfficacy" added

## Improvements, issues, and changes

* `getSimulationSurvival()`: bug fixed for accruallIntensity = 0 at some accrual intervals
* For observed conditional power, standardized theta not truncated to 0 any more in `getSimulationMultiArmMeans()`, `getSimulationMultiArmRates()`, and `getSimulationMultiArmSurvival()`
* Conditional power calculation for analysis rates takes into account differently the null value of condErrorRate
* Function `testPackage()`: a problem with downloading full set of unit tests under Debian/Linux has been fixed
* Generic function `kable()` improved: optional knitr::kable arguments enabled, e.g., format
* In print and summary output, "overall" renamed to "cumulative" if means, stDevs, or rate are calculated over stages rather than stage-wise 
* getDataset: support of emmeans result objects as input improved 
* Numerical accuracy of `qnorm()` calculations improved 
* Analysis enrichment results now support the generic function `as.data.frame()`
* Naming of the stage results parameters in the print output improved
* New example data added: "rawDataTwoArmNormal"
* Issue in summary fixed: earlyStop and rejectPerStage were no longer displayed
* Minor improvements

# rpact 3.1.1

* Performance of two-sided Pampallona & Tsiatis design improved
* 12 example datasets added
* Sample sizes in plots now have the same format as in print output; format can be changed using setOutputFormat()
* getDataset supports emmeans result objects as input
* Print output of simulation results improved
* Added dependency on R >= 3.5.0 because serialized objects in serialize/load version 3 cannot be read in older versions of R
* Plot label interface for configuration via the rpact Shiny app implemented
* Minor improvements

# rpact 3.1.0

## New features

* Analysis tools for enrichment design testing means, rates, and hazard ratios: function `getAnalysisResults()` generalized for enrichment designs; function `getDataset()` generalized for entering stratified data; manual extended for enrichment designs
* Automatic boundary recalculations during the trial for analysis with alpha spending approach, 
  including under- and over-running: 
  setup via the optional parameters 'maxInformation' and 'informationEpsilon' in function `getAnalysisResults()`
* The new function `getObjectRCode()` (short: `rcmd()`) returns the original R command which 
  produced any rpact result object, including all dependencies
* `getWideFormat()` and `getLongFormat()` return a dataset object in wide format (unstacked) or long format (narrow, stacked)
* Generic function `kable()` returns the output of an rpact result object formatted in Markdown.
* Generic function `t()` returns the transpose of an rpact result object

## Improvements, issues, and changes

* New argument 'plotSettings' added to all plot functions
* Summary for design, simulation, and analysis unified and extended
* Issue in `getDesignFisher()` fixed: `getDesignFisher(method = "noInteraction", kMax = 3)` and `getDesignFisher(method = "noInteraction")` produced different results
* 'normalApproximation' default value changed to TRUE for multi-arm analysis of rates
* Repeated p-values: in search algorithm, upper bound of significance level corrected when considering binding futility bounds
* `testPackage()`: the default call is now running only a small subset of all available unit tests; with the new 
  argument 'connection' the owners of the rpact validation documentation 
  can enter a 'token' and a 'secret' to get full access to all unit tests
* Scaling of grid plots improved
* Minor improvements

# rpact 3.0.4

* Beta-spending function approach with binding futility bounds
* Pampallona & Tsiatis design with binding and non-binding futility bounds
* Argument 'accrualIntensityType' added to `getSampleSizeSurvival()`, `getSimulationSurvival()`, `getNumberOfSubjects()`, and `getEventProbabilities()`
* Specification of Weibull survival times possible through definition of hazard rates or medians in simulation tool
* Minor improvements

# rpact 3.0.3

* New utility functions `getParameterCaption()` and `getParameterName()` implemented
* Design parameters added to simulation print output
* Generic function `as.matrix()` improved for several result objects
* Issue in `getAvailablePlotTypes()` for sample size and power results fixed
* Issue for `getDesignFisher(kMax = 1)` in `getSimulationMultiArm...()` fixed 
* `getSimulationMultiArmSurvival()`: correlation of log-rank statistics revised and improved 
* `getSimulationMultiArmMeans()`: name of the first effectMeasure option "effectDifference" changed to "effectEstimate" 
* `getSimulation[MultiArm][Means/Rates/Survival]()`: argument 'showStatistics' now works correctly and is consistently FALSE by default for multi-arm and non-multi-arm
* `getSimulation[MultiArm]Survival()`: generic function `summary()` improved
* `getAnalysisResults()`: generic function `summary()` improved
* `getAccrualTime()`: improved and new argument 'accrualIntensityType' added
* Header text added to design summaries
* `getSampleSizeSurvival()`: field 'studyDurationH1' in result object was replaced by 'studyDuration', i.e., 'studyDurationH1' is deprecated and will be removed in future versions
* Minor changes in the inline help and manual
* Minor improvements

# rpact 3.0.2

* `getSimulationMultiArmSurvival()`: plannedEvents redefined as overall events over treatment arms
* `getStageResults()`: element overallPooledStDevs added; print output improved
* Unit tests improved: test coverage and references to the functional specification optimized
* plot type 13 of `getSampleSizeSurvival()` with user defined lambdas with different lengths: issue fixed
* Minor improvements

# rpact 3.0.1

* Vignette "rpact: Getting Started" included into the package
* New summary output option "rpact.summary.width" added
* Generic function `summary()` improved for several result objects
* Result output of function `testPackage()` improved
* `getSimulationMultiArm[Means/Rates/Survival]()`: stage index corrected for user defined calcSubjectsFunction or calcEventsFunction
* `getSimulationMultiArmRates()`: adjustment for identical simulated rates to account for ties
* `getSimulationMultiArmSurvival()`: corrected correlation of test statistics
* Output formatting improved
* Minor improvements

# rpact 3.0.0

## New features

* Simulation tools for multi-arm design testing means, rates, and hazard ratios
* Analysis tools for multi-arm design testing means, rates, and hazard ratios
* `getSimulationRates()`: exact versions for testing a rate (one-sample case) and equality of rates (two-sample case)
* getDataset: multi-arm datasets for means, rates, and survival data
* Analysis of fixed designs
* Summary for analysis and simulation result objects newly implemented
* Summary for most rpact result objects substantially improved and enhanced
* `getEventProbabilities()`: plot of result object
* `getNumberOfSubjects()`: plot of result object
* Visual comparison of two designs: `plot(design1, design2)`
* Functions setOutputFormat and getOutputFormat implemented: definition of user defined output formats
* `getSimulationMeans()`: thetaH1 and stDevH1 can be specified for assessment of sample size recalculation (replaces thetaStandardized)
* `getSimulationSurvival()`: separate p-values added to the aggregated simulation data for Fisher designs
* `getSimulationMeans()`, `getSimulationRates()`: Cumulated number of subjects integrated in getData object
* `getSimulation[MultiArm][Means/Rates/Survival]()`: new logical argument 'showStatistics' added
* Example datasets (csv files) added to the package
* plot type "all": plot all available plots of an object in one step using `plot(x, type = "all")`
* plot type improved: 'type' now can be a vector, e.g., `plot(x, type = c(1, 3))`
* `plot(x, grid = 1)`: new plot argument 'grid' enables the plotting of 2 or more plots in one graphic

## Improvements, issues, and changes

* `getAnalysisResults()`: list output implemented analogous to the output of all other rpact objects
* `getAnalysisResults()`: the following stage result arguments were removed from result object because they were redundant: effectSizes, testStatistics, and pValues. Please use the '.stageResults' object to access them, e.g., results\$.stageResults\$effectSizes
* `getAnalysisResults()`: the following design arguments were removed from result object because they were redundant: stages, informationRates, criticalValues, futilityBounds, alphaSpent, and stageLevels. Please use the '.design' object to access them, e.g., results\$.design\$informationRates
* Optional argument 'stage' removed from functions getConditionalPower, getConditionalRejectionProbabilities, getFinalPValue, getRepeatedPValues, and getTestActions
* Function testPackage improved, e.g., results will be displayed now on screen
* Help system renewed and approved, e.g., help for corresponding generic functions (e.g., plot) linked where applicable
* Function getPiecewiseSurvivalTime improved: pi1 and pi2 will not be calculated any longer for lambda- or median-based definitions; eventTime only required for pi-based definitions
* `plot(x, showSource = TRUE)` improved for all rpact result objects x
* Performance of plotting analysis results of Fisher designs improved
* `getSimulationRates()`: issue for futility stopping for Fisher's combination test fixed
* `getSimulationSurvival()`: issue for expected number of events fixed
* `getSimulationSurvival()`: if eventsNotAchieved > 0, rejection/futility rate and analysis time is estimated for valid simulation runs
* `getSimulationSurvival()`: output improved for lambda1/median1/hazardRatio with length > 1
* `getSampleSizeSurvival()`: calculation of the maximum number of subjects given the provided argument 'followUpTime' improved
* `getPiecewiseSurvivalTime()`: delayed response via list-based piecewiseSurvivalTime definition enabled
* `getAccrualTime()` / `getSimulationSurvival()`: issue with the calculation of absolute accrual intensity by given relative accrual intensity fixed
* `getRawData()`: issue for multiple pi1 solved 
* Implementation of the generic function 'names' improved
* Test coverage improved: lots of new unit tests added
* License information in the DESCRIPTION file corrected: changed from GPL-3 to LGPL-3
* Minor improvements

# rpact 2.0.6

* Boundaries on effect scale for testing means now accounts for the unknown variance case
* `getAnalysisSurvival()`: calculation of stage wise results not more in getStageResults
* `getStageResults()`: the calculation of 'effectSizes' for survival data and thetaH0 != 1 was corrected 
* `getDataset()` of survival data: issue with the internal storage of log ranks fixed
* Sample size plot: issue for kMax = 1 fixed
* `getSampleSizeSurvival()` with piecewise survival time: issue with calculation of 'maxNumberOfSubjects' for given 'followUpTime' fixed 
* Internal Shiny app interface improved
* Minor improvements

# rpact 2.0.5

* Assumed median survival time: get[SampleSize/Power/Simulation]Survival now support direct input of arguments 'median1' and 'median2'
* Output of generic function `summary()` improved
* Plot type 5 of getPower[...] and getSimulation[...] objects improved
* Output of `getSampleSizeSurvival()` with given maxNumberOfSubjects improved
* Output of `get[SampleSize/Power]Survival()` for Kappa != 1 improved
* Assert function for minNumberOfSubjectsPerStage corrected for undefined conditionalPower
* Two-sided boundaries on effect scale in survival design improved
* Error in `summary()` for `getDesign[...]()` fixed
* Other minor improvements

# rpact 2.0.4

* Incorrect output of function `summary()` fixed for `getSampleSize[...]()` and `getPower[...]()`
* as.data.frame: default value of argument 'niceColumnNamesEnabled' changed from TRUE to FALSE

# rpact 2.0.3

## New features

* Plot function for Fisher design implemented
* Generic function `summary()` implemented for `getDesign[...]()`, `getSampleSize[...]()`, `getPower[...]()`, and `getSimulation[...]()` results: a simple boundary summary will be displayed

## Improvements, issues, and changes

* Generic function as.data.frame improved for `getDesign[...]()`, `getSampleSize[...]()`, `getPower[...]()`, and `getSimulation[...]()` results
* Output of `getStageResults()` improved
* Improvements for Shiny app compatibility and better Shiny app performance
* Repeated p-values are no longer calculated for typeOfDesign = "WToptimum"
* Piecewise survival time improved for numeric definition: median and pi will not be calculated and displayed any longer
* Plot: legend title and tick mark positioning improved; optional arguments xlim and ylim implemented
* Sample size/power: usage of argument 'twoSidedPower' optimized
* Performance of function rpwexp/getPiecewiseExponentialRandomNumbers improved (special thanks to Marcel Wolbers for his example code)
* For group sequential designs a warning will be displayed if information rates from design not according to data information
* Format for output of standard deviation optimized

# rpact 2.0.2

* Minor corrections in the inline help
* Labeling of lower and upper critical values (effect scale) reverted
* Simulation for Fisher's combination test corrected
* Parameter minNumberOfAdditionalEventsPerStage renamed to minNumberOfEventsPerStage
* Parameter maxNumberOfAdditionalEventsPerStage renamed to maxNumberOfEventsPerStage
* Parameter minNumberOfAdditionalSubjectsPerStage renamed to minNumberOfSubjectsPerStage
* Parameter maxNumberOfAdditionalSubjectsPerStage renamed to maxNumberOfSubjectsPerStage
* Output of function `getAccrualTime()` improved
* Validation of arguments maxNumberOfIterations, allocation1, and allocation2 added: check for positive integer
* Function `getSampleSizeSurvival()` improved: numeric search for accrualTime if followUpTime is given
* Default value improved for analysis tools: if no effect was specified for conditional power calculation, the observed effect is selected
* Fixed: function getDataset produced an error if only one log-rank value and one event was defined
* Number of subjects per treatment arm are provided in output of simulation survival if allocation ratio != 1
* Function getSimulationSurvival improved: first value of minNumberOfEventsPerStage and maxNumberOfEventsPerStage must be NA or equal to first value of plannedSubjects

# rpact 2.0.1

* Function base::isFALSE replaced to guarantee R 3.4.x compatibility
* C++ compiler warning on r-devel-linux-x86_64-debian-clang system removed 
* C++ compiler error on r-patched-solaris-x86 system fixed

# rpact 2.0.0

## New features

* Power calculation at given or adapted sample size for means, rates and survival data
* Sample size and power calculation for survival trials with piecewise accrual time and intensity
* Sample size and power calculation for survival trials with exponential survival time, piecewise exponential survival time and survival times that follow a Weibull distribution
* Simulation tool for survival trials; our simulator is very fast because it was implemented with C++. Adaptive event number recalculations based on conditional power can be assessed
* Simulation tool for designs with continuous and binary endpoints. Adaptive sample size recalculations based on conditional power can be assessed
* Comprehensive and unified tool for performing sample size calculation for fixed sample size design
* Enhanced plot functionalities

## Improvements, issues, and changes

* Fisher design, analysis of means or rates, conditional rejection probabilities (CRP): calculation issue fixed for stage > 2
* Call of getSampleSize[Means/Rates/Survival] without design argument implemented
* For all `set.seed()` calls 'kind' and 'normal.kind' were specified as follows: kind = "Mersenne-Twister", normal.kind = "Inversion"
* Minor code optimizations, e.g. 'return()' replaced by 'return(invisible())' if reasonable
* Bug in `readDatasets()` fixed: variable names 'group' and 'groups' are now accepted
* "Overall reject per stage" and "Overall futility per stage" renamed to "Overall reject" and "Overall futility", respectively (also variable names)
* Labels "events.." and "..patients.." consistently changed to "# events.." and "# patients...", respectively
* Output format for 'allocationRatioPlanned' specified
* Method 'show' of class 'ParameterSet' expanded: R Markdown output features implemented
* `getSampleSizeSurvival()`: argument 'maxNumberOfPatients' was renamed in 'maxNumberOfSubjects'
* Result output, inline help and documentation: the word 'patient' was replaced by 'subject'
* Variables 'numberOfSubjectsGroup1' and 'numberOfSubjectsGroup2' were renamed to 'numberOfSubjects1' and 'numberOfSubjects1'
* Final p-values for two-sided test (group sequential, inverse normal, and Fisher combination test) available
* Upper and lower boundaries on effect scale for testing rates in two samples

# rpact 1.0.0

* First release of rpact
