GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Merck/forestly: Interactive forest plot for adverse events analysis

BranchesTags
Open more actions menu

Latest commit

 

History

284 Commits
284 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
R
R
 
 
data-raw
data-raw
 
 
data
data
 
 
inst
inst
 
 
man
man
 
 
pkgdown
pkgdown
 
 
tests
tests
 
 
vignettes
vignettes
 
 
.Rbuildignore
.Rbuildignore
 
 
.gitignore
.gitignore
 
 
AGENTS.md
AGENTS.md
 
 
DESCRIPTION
DESCRIPTION
 
 
LICENSE.md
LICENSE.md
 
 
LICENSES_THIRD_PARTY
LICENSES_THIRD_PARTY
 
 
NAMESPACE
NAMESPACE
 
 
NEWS.md
NEWS.md
 
 
README.md
README.md
 
 
_pkgdown.yml
_pkgdown.yml
 
 
codecov.yml
codecov.yml
 
 
forestly.Rproj
forestly.Rproj
 
 

Repository files navigation

forestly

R-CMD-check Codecov test coverage CRAN status CRAN Downloads

Installation

The easiest way to get forestly is to install from CRAN:

install.packages("forestly")

Alternatively, to use a new feature or get a bug fix, you can install the development version of forestly from GitHub:

# install.packages("remotes")
remotes::install_github("Merck/forestly")

Overview

The forestly package creates interactive forest plots for clinical trial analysis & reporting.

  • Safety analysis
    • Specific adverse events analysis
  • Efficacy analysis (future work)
    • Subgroup analysis
forestly_screenrecording2.mp4

We assume ADaM datasets are ready for analysis and leverage metalite data structure to define inputs and outputs.

Workflow

The general workflow is:

  1. Define input metadata from ADaM datasets with metalite.
  2. prepare_ae_forestly() prepares datasets for interactive forest plot.
  3. format_ae_forestly() formats output layout.
  4. ae_forestly() generates an interactive forest plot.

Here is a quick example

library("forestly")

adsl <- forestly_adsl
adae <- forestly_adae
adsl$TRTA <- factor(
  adsl$TRT01A,
  levels = c("Xanomeline Low Dose", "Placebo"),
  labels = c("Low Dose", "Placebo")
)
adae$TRTA <- factor(
  adae$TRTA,
  levels = c("Xanomeline Low Dose", "Placebo"),
  labels = c("Low Dose", "Placebo")
)

analysis_plan <- metalite::plan(
  analysis = "ae_forestly",
  population = "apat",
  observation = "wk12",
  parameter = "any;rel;ser"
)

meta <- metalite::meta_adam(population = adsl, observation = adae) |>
  metalite::define_plan(plan = analysis_plan) |>
  metalite::define_population(
    name = "apat",
    var = c("USUBJID", "SAFFL", "TRTA", "SITEID", "SEX", "RACE", "AGE"),
    group = "TRTA",
    subset = SAFFL == "Y",
    label = "All Participants as Treated"
  ) |>
  metalite::define_observation(
    name = "wk12",
    var = c(
      "USUBJID", "SAFFL", "TRTA", "SITEID", "SEX", "RACE", "AGE",
      "ASTDY", "AEDECOD", "AEBODSYS", "AESER", "AEREL", "AEACN",
      "AEOUT", "ADURN", "ADURU"
    ),
    group = "TRTA",
    subset = SAFFL == "Y",
    label = "Weeks 0 to 12"
  ) |>
  metalite::define_parameter(
    name = "any",
    term1 = "",
    term2 = "",
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "All AEs"
  ) |>
  metalite::define_parameter(
    name = "rel",
    term1 = "Drug-Related",
    term2 = "",
    subset = AEREL %in% c("POSSIBLE", "PROBABLE"),
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "Drug-related AEs"
  ) |>
  metalite::define_parameter(
    name = "ser",
    term1 = "Serious",
    term2 = "",
    subset = AESER == "Y",
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "Serious AEs"
  ) |>
  metalite::define_analysis(
    name = "ae_forestly",
    label = "Interactive forest plot"
  ) |>
  metalite::meta_build()

meta |>
  prepare_ae_forestly(parameter = "any;rel;ser") |>
  format_ae_forestly() |>
  ae_forestly()

Interactive features

The interactive features for safety analysis include:

  • Select different AE criteria.
  • Filter by incidence of AE in one or more groups.
  • Reveal information by hovering the mouse over a data point.
  • Search bars to find subjects with selected adverse events (AEs).
  • Sort value by clicking the column header.
  • Drill-down listing by clicking $\blacktriangleright$.

References

  • Paper: 2023 PHUSE US Connect
  • Talk: 2021 R/Pharma Conference

About

Interactive forest plot for adverse events analysis

merck.github.io/forestly/

Resources

Readme
GPL-3.0 license
Activity
Custom properties

Stars

22 stars

Watchers

4 watching

Forks

6 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.