Skip to contents

Advanced heatmap visualization for clinical and biomedical data using the tidyheatmaps package. This function creates publication-ready heatmaps from tidy data with support for clinical annotations, multiple scaling methods, and comprehensive customization options. Perfect for visualizing biomarker expression patterns, treatment responses, genomic data, and quality control metrics.

Value

A jamovi analysis object containing the clinical heatmap and supporting information

Details

The Clinical Heatmap module leverages the powerful tidyheatmaps package to create sophisticated visualizations of multivariate clinical data. It supports various data types and use cases:

Supported Data Types:

  • Biomarker Expression: IHC scores, molecular markers, protein levels

  • Genomic Data: Gene expression, mutation status, copy number variations

  • Clinical Metrics: Laboratory values, vital signs, diagnostic scores

  • Quality Control: Batch effects, instrument performance, reproducibility

  • Treatment Response: Longitudinal measurements, dose-response relationships

Key Features:

  • Tidy Data Integration: Works directly with long-format clinical datasets

  • Clinical Annotations: Row and column annotations for patient/biomarker characteristics

  • Flexible Scaling: Row, column, or bidirectional Z-score normalization

  • Hierarchical Clustering: Automatic pattern discovery with customizable clustering

  • Color Palettes: Clinical-friendly color schemes including colorblind-safe options

  • Missing Data Handling: Multiple strategies for incomplete clinical datasets

  • Export Options: Publication-ready outputs with customizable dimensions

Clinical Applications

  • Biomarker Profiling: Visualize multi-marker expression panels across patient cohorts

  • Precision Medicine: Display genomic alterations and therapeutic targets

  • Quality Assurance: Monitor laboratory performance and batch effects

  • Clinical Trials: Show treatment response patterns and dose relationships

  • Diagnostic Patterns: Reveal disease subtypes and molecular classifications

Data Format Requirements

The function expects data in "tidy" (long) format with three essential variables:

  • Row Variable: Defines heatmap rows (e.g., patient IDs, gene names)

  • Column Variable: Defines heatmap columns (e.g., biomarkers, time points)

  • Value Variable: Numeric values to visualize (e.g., expression levels, scores)

Scaling Methods

  • None: Raw values displayed without transformation

  • Row: Z-score normalization within each row (standardizes across columns)

  • Column: Z-score normalization within each column (standardizes across rows)

  • Both: Global Z-score normalization across entire dataset

Missing Data Strategies

  • Exclude: Remove rows/columns with missing values (complete cases only)

  • Mean: Replace missing values with column/row means

  • Median: Replace missing values with column/row medians (robust to outliers)

  • Zero: Replace missing values with zero (appropriate for some clinical scales)

Super classes

jmvcore::Analysis -> ClinicoPath::clinicalheatmapBase -> clinicalheatmapClass

Examples

if (FALSE) { # \dontrun{
# TODO: Add proper examples with working datasets
# Currently commented to prevent installation errors
# Need to use existing datasets from ClinicoPathDescriptives

# # Example 1: Basic biomarker heatmap
# data(histopathology)
#
# # Create sample biomarker data in long format
# biomarker_data <- data.frame(
#   patient_id = rep(paste0("P", 1:50), each = 4),
#   biomarker = rep(c("ER", "PR", "HER2", "Ki67"), 50),
#   expression = rnorm(200, mean = 50, sd = 20)
# )
#
# clinicalheatmap(
#   data = biomarker_data,
#   rowVar = "patient_id",
#   colVar = "biomarker",
#   valueVar = "expression",
#   scaleMethod = "row",
#   colorPalette = "RdBu"
# )
#
# # Example 2: Gene expression with clinical annotations
# gene_data <- expand.grid(
#   sample_id = paste0("S", 1:30),
#   gene = paste0("Gene", 1:20)
# )
# gene_data$expression <- rnorm(nrow(gene_data), mean = 0, sd = 1)
# gene_data$tumor_type <- rep(c("TypeA", "TypeB", "TypeC"), length.out = 30)
#
# clinicalheatmap(
#   data = gene_data,
#   rowVar = "sample_id",
#   colVar = "gene",
#   valueVar = "expression",
#   annotationCols = "tumor_type",
#   scaleMethod = "column",
#   clusterRows = TRUE,
#   clusterCols = TRUE
# )
} # }