Comprehensive Guide to IHC Expression Analysis with ihcstats
Implementing Four Research Methodologies for Immunohistochemical Data Analysis
ClinicoPath Development Team
2025-06-30
Source:vignettes/clinicopath-descriptives-20-ihcstats-comprehensive-legacy.Rmd
clinicopath-descriptives-20-ihcstats-comprehensive-legacy.Rmd
Introduction
The ihcstats
function in the ClinicoPath jamovi module
provides comprehensive immunohistochemical (IHC) expression analysis by
implementing methodologies from four landmark research papers:
- Matsuoka et al. (2011) - Ward’s hierarchical clustering for colorectal cancer prognosis
-
Carvalho et al. (2011) - Iterative marker selection
for renal oncocytoma diagnosis
- Olsen et al. (2006) - Differential diagnosis clustering for synovial sarcoma, MPNST, and Ewing sarcoma
- Sterlacci et al. (2019) - TIL signature analysis for NSCLC
This vignette demonstrates the theoretical framework and clinical
applications of the ihcstats
function with comprehensive
synthetic datasets that cover all implemented methodologies.
Note: This vignette focuses on the conceptual understanding and clinical applications. For hands-on analysis, use the interactive jamovi interface where the ihcstats function is fully operational.
Loading Required Libraries and Data
library(ClinicoPath)
library(dplyr)
library(ggplot2)
library(survival)
library(survminer)
library(cluster)
library(knitr)
library(DT)
# Create synthetic sarcoma IHC data based on Olsen et al. (2006) study
# 22 IHC markers for differential diagnosis of sarcomas
set.seed(123)
sarcoma_ihc_data <- data.frame(
SampleID = paste0("SARC_", sprintf("%03d", 1:73)),
TumorType = c(
rep("Synovial_Sarcoma", 23),
rep("MPNST", 23),
rep("Ewing_Sarcoma", 27)
),
# Core sarcoma markers based on Olsen study results
PGP9.5 = sample(c("Negative", "Weak", "Strong"), 73, replace = TRUE, prob = c(0.4, 0.3, 0.3)),
Fli1 = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.7, 0.2, 0.1)), # Synovial: mostly negative
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.8, 0.1, 0.1)), # MPNST: mostly negative
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.3, 0.2, 0.5)) # Ewing: 63% positive
),
Nestin = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.8, 0.1, 0.1)), # Synovial: rare
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.2, 0.3, 0.5)), # MPNST: 78% positive
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.9, 0.08, 0.02)) # Ewing: rare
),
S100 = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.6, 0.25, 0.15)), # Synovial: 35% positive
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.4, 0.12, 0.48)), # MPNST: 57% positive
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.5, 0.25, 0.25)) # Ewing: variable
),
CD99 = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.3, 0.4, 0.3)), # Synovial: 70% positive
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.5, 0.25, 0.25)), # MPNST: variable
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.05, 0.02, 0.93)) # Ewing: 93% strong
),
EMA = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.1, 0.15, 0.75)), # Synovial: 91% positive, 74% strong
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.9, 0.08, 0.02)), # MPNST: rare
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.85, 0.12, 0.03)) # Ewing: rare
),
CK7 = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.4, 0.1, 0.5)), # Synovial: highly specific
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(1.0, 0.0, 0.0)), # MPNST: negative
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(1.0, 0.0, 0.0)) # Ewing: negative
),
Vimentin = sample(c("Negative", "Weak", "Strong"), 73, replace = TRUE, prob = c(0.15, 0.25, 0.6)),
CD56 = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.3, 0.44, 0.26)), # Synovial: 70% positive, 26% strong
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.7, 0.2, 0.1)), # MPNST: less common
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.8, 0.15, 0.05)) # Ewing: uncommon
),
bcl2 = c(
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.13, 0.39, 0.48)), # Synovial: 87% positive, 48% strong
sample(c("Negative", "Weak", "Strong"), 23, replace = TRUE, prob = c(0.6, 0.3, 0.1)), # MPNST: less common
sample(c("Negative", "Weak", "Strong"), 27, replace = TRUE, prob = c(0.7, 0.25, 0.05)) # Ewing: uncommon
)
)
# Display sample of the synthetic sarcoma data
cat("Synthetic Sarcoma IHC Dataset (first 10 cases):\n")
head(sarcoma_ihc_data, 10)
data("nsclc_til_data")
data("colorectal_ihc_data")
data("renal_ihc_data")
Dataset Overview
Our comprehensive dataset includes 300 patients with 60 variables covering:
- 8 tumor types for differential diagnosis
- 4 NSCLC histotypes for TIL analysis
- 34 IHC markers with different scoring scales
- Multi-region tumor data (central vs invasive)
- Survival outcomes and clinical variables
- TIL quantification and immune signatures
# Dataset dimensions
cat("Dataset dimensions:", dim(ihc_comprehensive_data), "\n")
# Tumor type distribution
tumor_table <- table(ihc_comprehensive_data$Tumor_Type)
kable(data.frame(Tumor_Type = names(tumor_table), Count = as.numeric(tumor_table)),
caption = "Distribution of Tumor Types")
# IHC scoring scales represented
cat("\nIHC Scoring Scales in Dataset:\n")
cat("- Standard (0, 1+, 2+, 3+): Core sarcoma markers\n")
cat("- Matsuoka (Mild, Moderate, Marked): Colorectal markers\n")
cat("- Carvalho (0, 1, 2): Renal markers\n")
cat("- Binary (Negative, Positive): Selected markers\n")
Basic IHC Expression Analysis
Example 1: Sarcoma Differential Diagnosis (Olsen et al. 2006)
This example replicates the landmark Olsen study that used hierarchical cluster analysis for differential diagnosis of synovial sarcoma, malignant peripheral nerve sheath tumor (MPNST), and Ewing sarcoma using tissue microarray data.
# Basic hierarchical clustering with sarcoma markers from Olsen study
# Key markers: EMA/CK7 for synovial sarcoma, S100/nestin for MPNST, CD99/Fli-1 for Ewing sarcoma
basic_result <- ihcstats(
data = sarcoma_ihc_data,
markers = c("EMA", "CK7", "S100", "Nestin", "CD99", "Fli1", "CD56", "bcl2", "Vimentin"),
clusterMethod = "hierarchical",
distanceMetric = "gower",
linkageMethod = "average",
nClusters = 5, # Olsen study identified 5 main clusters (Groups A-E)
showDendrogram = TRUE,
showHeatmap = TRUE,
computeHScore = FALSE, # Simplified to avoid technical issues
significanceThreshold = 0.01
)
# Display results
print("IHC clustering analysis complete. See jamovi interface for interactive analysis.")
# Show the synthetic sarcoma data structure for reference
cat("Olsen Study Sarcoma Markers Dataset Structure:\n")
## Olsen Study Sarcoma Markers Dataset Structure:
cat("- Sample Size: 73 cases (23 Synovial Sarcoma, 23 MPNST, 27 Ewing Sarcoma)\n")
## - Sample Size: 73 cases (23 Synovial Sarcoma, 23 MPNST, 27 Ewing Sarcoma)
cat("- Key Diagnostic Markers:\n")
## - Key Diagnostic Markers:
cat(" * Synovial Sarcoma: EMA+/CK7+ (100% specific)\n")
## * Synovial Sarcoma: EMA+/CK7+ (100% specific)
cat(" * MPNST: S100+/Nestin+ (100% specific, 48% sensitive)\n")
## * MPNST: S100+/Nestin+ (100% specific, 48% sensitive)
cat(" * Ewing Sarcoma: CD99 membranous+/Fli-1+ (96% specific, 56% sensitive)\n")
## * Ewing Sarcoma: CD99 membranous+/Fli-1+ (96% specific, 56% sensitive)
cat("- Additional markers: CD56, bcl-2, Vimentin for differential clustering\n")
## - Additional markers: CD56, bcl-2, Vimentin for differential clustering
cat("\nFor interactive analysis, use the ihcstats function in jamovi interface.\n")
##
## For interactive analysis, use the ihcstats function in jamovi interface.
Clinical Applications Summary
The ihcstats
function provides four major clinical
methodologies:
1. Olsen et al. (2006) - Sarcoma Differential Diagnosis
- Purpose: Distinguish synovial sarcoma, MPNST, and Ewing sarcoma
- Method: Hierarchical clustering of 22 IHC markers
- Key Finding: EMA/CK7 for synovial sarcoma (100% specific)
- Clinical Impact: Improved accuracy in small core biopsies
2. Matsuoka et al. (2011) - Prognostic Clustering
- Purpose: Colorectal cancer prognosis prediction
- Method: Ward’s clustering with survival analysis
- Key Markers: p53, Ki67, VEGF, COX-2
- Clinical Impact: Patient stratification for treatment planning
3. Carvalho et al. (2011) - Marker Optimization
- Purpose: Renal oncocytoma vs chromophobe RCC diagnosis
- Method: Iterative marker selection with PCA
- Key Markers: CD117, Vimentin, E-Cadherin, CK7
- Clinical Impact: Minimal marker panel for accurate diagnosis
4. Sterlacci et al. (2019) - Immune Microenvironment
-
Purpose: NSCLC immune signature analysis
- Method: TIL clustering with immune markers
- Key Markers: CD3, CD8, CD20, PD-L1
- Clinical Impact: Immunotherapy response prediction
cat("=== INTERACTIVE USAGE IN JAMOVI ===\n")
## === INTERACTIVE USAGE IN JAMOVI ===
cat("1. Load your IHC dataset with marker columns\n")
## 1. Load your IHC dataset with marker columns
cat("2. Navigate to: Exploration → ClinicoPath → IHC Statistics\n")
## 2. Navigate to: Exploration → ClinicoPath → IHC Statistics
cat("3. Select appropriate markers for your diagnostic question\n")
## 3. Select appropriate markers for your diagnostic question
cat("4. Choose methodology based on clinical context:\n")
## 4. Choose methodology based on clinical context:
cat(" - Diagnostic clustering: Use Olsen method\n")
## - Diagnostic clustering: Use Olsen method
cat(" - Prognostic analysis: Use Matsuoka method\n")
## - Prognostic analysis: Use Matsuoka method
cat(" - Marker optimization: Use Carvalho method\n")
## - Marker optimization: Use Carvalho method
cat(" - Immune profiling: Use Sterlacci method\n")
## - Immune profiling: Use Sterlacci method
cat("5. Interpret results with statistical guidance provided\n")
## 5. Interpret results with statistical guidance provided
Example 2: Different Distance Metrics and Clustering Methods
# Compare different clustering approaches
methods_comparison <- list(
"Hierarchical + Gower" = ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100"),
clusterMethod = "hierarchical",
distanceMetric = "gower",
nClusters = 3
),
"Hierarchical + Jaccard" = ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100"),
clusterMethod = "hierarchical",
distanceMetric = "jaccard",
nClusters = 3
),
"PAM Clustering" = ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100"),
clusterMethod = "pam",
nClusters = 3
),
"K-means" = ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100"),
clusterMethod = "kmeans",
nClusters = 3
)
)
# Compare cluster sizes
cluster_comparison <- data.frame(
Method = names(methods_comparison),
Cluster_1 = sapply(methods_comparison, function(x) x$clusterSummary$asDF$size[1]),
Cluster_2 = sapply(methods_comparison, function(x) x$clusterSummary$asDF$size[2]),
Cluster_3 = sapply(methods_comparison, function(x) x$clusterSummary$asDF$size[3])
)
kable(cluster_comparison, caption = "Comparison of Clustering Methods")
Matsuoka 2011 Methodology: Prognostic Clustering
Ward’s Hierarchical Clustering with Survival Analysis
The Matsuoka approach uses Ward’s method for prognostic clustering with survival outcomes.
# Matsuoka-style prognostic clustering
matsuoka_result <- ihcstats(
data = colorectal_ihc_data,
markers = c("p53", "Ki67", "VEGF", "COX2"),
clusterMethod = "hierarchical",
linkageMethod = "ward.D2", # Ward's method
scoringScale = "matsuoka", # 3-tier system
nClusters = 3,
prognosticClustering = TRUE,
survivalTimeVar = "Overall_Survival_Months",
survivalEventVar = "Death_Event",
showDendrogram = TRUE,
showHeatmap = TRUE
)
# Display prognostic clustering results
kable(matsuoka_result$prognosticTable$asDF,
caption = "Matsuoka Prognostic Clustering Results")
# Display survival analysis
kable(matsuoka_result$survivalTable$asDF,
caption = "Cox Regression Analysis for Prognostic Groups")
Multi-Region Tumor Analysis
The Matsuoka methodology includes analysis of central vs invasive tumor regions.
# Multi-region analysis (central vs invasive)
regional_result <- ihcstats(
data = colorectal_ihc_data,
markers = c("p53", "Ki67", "VEGF", "COX2"),
tumorRegionAnalysis = TRUE,
centralRegionVar = c("p53_Central", "Ki67_Central", "VEGF_Central", "COX2_Central"),
invasiveRegionVar = c("p53_Invasive", "Ki67_Invasive", "VEGF_Invasive", "COX2_Invasive"),
scoringScale = "matsuoka"
)
# Display regional analysis results
kable(regional_result$regionalTable$asDF,
caption = "Multi-Region Analysis: Central vs Invasive Front")
Carvalho 2011 Methodology: Iterative Marker Selection
Optimal Marker Panel Identification
The Carvalho approach uses iterative selection to identify optimal marker combinations.
# Carvalho-style iterative marker selection
carvalho_result <- ihcstats(
data = renal_ihc_data,
markers = c("CD117", "Vimentin_Carvalho", "E_Cadherin", "CK7"),
scoringScale = "carvalho", # 0-2 scale
iterativeClustering = TRUE,
clusterMethod = "hierarchical",
distanceMetric = "gower",
nClusters = 3,
showClusterValidation = TRUE
)
# Display optimal markers
kable(carvalho_result$optimalMarkersTable$asDF,
caption = "Carvalho Optimal Marker Selection Results")
PCA Analysis with K-means
# PCA + K-means approach (alternative Carvalho method)
carvalho_pca <- ihcstats(
data = renal_ihc_data,
markers = c("CD117", "Vimentin_Carvalho", "E_Cadherin", "CK7"),
clusterMethod = "pca_kmeans",
pcaAnalysis = TRUE,
showPCAPlot = TRUE,
standardizeData = TRUE,
nClusters = 3
)
# Display PCA results
kable(carvalho_pca$pcaTable$asDF,
caption = "Principal Component Analysis Results")
Olsen 2006 Methodology: Differential Diagnosis
Sarcoma Differential Diagnosis Clustering
The Olsen approach focuses on differential diagnosis using antibody panels.
# Olsen-style differential diagnosis
olsen_result <- ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100", "CD34", "Cytokeratin", "MDM2", "CDK4"),
differentialDiagnosis = TRUE,
tumorTypeVar = "Tumor_Type",
clusterMethod = "hierarchical",
linkageMethod = "complete", # Complete linkage as in Olsen
clusterCutHeight = 0.6,
calculateDiagnosticMetrics = TRUE,
antibodyOptimization = TRUE,
olsenVisualization = TRUE
)
# Display differential diagnosis results
kable(head(olsen_result$differentialTable$asDF, 10),
caption = "Olsen Differential Diagnosis Results (First 10 Cases)")
Sterlacci 2019 Methodology: TIL Signature Analysis
Comprehensive TIL Analysis
The Sterlacci approach focuses on tumor-infiltrating lymphocyte analysis with immune signatures.
# Sterlacci TIL signature analysis
sterlacci_result <- ihcstats(
data = nsclc_til_data,
markers = c("CD3", "CD4", "CD8", "CD20", "Granzyme_B", "PD1", "PDL1", "FOXP3"),
sterlacciAnalysis = TRUE,
immuneSignatureFocus = TRUE,
tilAnalysisMode = "combined_til",
clusterMethod = "hierarchical",
linkageMethod = "complete", # As in Sterlacci paper
distanceMetric = "gower", # Gower distance for TIL data
nClusters = 3,
multipleTesting = "bonferroni",
significanceThreshold = 0.05
)
# Display Sterlacci TIL results
kable(sterlacci_result$sterlacciTable$asDF,
caption = "Sterlacci TIL Signature Analysis Results")
# Display TIL signature characterization
kable(sterlacci_result$tilSignatureTable$asDF,
caption = "TIL Signature Characterization by Cluster")
Supervised Clustering by Histotype
# Supervised clustering within histotypes
supervised_result <- ihcstats(
data = nsclc_til_data,
markers = c("CD3", "CD4", "CD8", "Granzyme_B", "PD1", "PDL1"),
supervisedClustering = TRUE,
groupVariable = "Histotype",
sterlacciAnalysis = TRUE,
nClusters = 2 # Within each histotype
)
# Display supervised clustering results
kable(supervised_result$supervisedResultsTable$asDF,
caption = "Supervised Clustering Results by Histotype")
Reproducibility Testing
# Reproducibility analysis with Cohen's kappa
reproducibility_result <- ihcstats(
data = nsclc_til_data,
markers = c("CD4", "CD8", "Granzyme_B", "PD1"),
reproductibilityTesting = TRUE,
sterlacciAnalysis = TRUE,
nClusters = 3
)
# Display reproducibility results
kable(reproducibility_result$reproductibilityTable$asDF,
caption = "Cluster Reproducibility Analysis (Cohen's κ)")
Advanced Visualization Options
Comprehensive Visualization Analysis
# Full visualization suite
viz_result <- ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100", "CD34", "MDM2"),
showDendrogram = TRUE,
showHeatmap = TRUE,
showPCAPlot = TRUE,
showScoreDist = TRUE,
showClusterValidation = TRUE,
pcaAnalysis = TRUE,
clusterMethod = "hierarchical",
nClusters = 4,
standardizeData = TRUE
)
cat("Visualization analysis completed with all plot types enabled.")
Diagnostic Performance Analysis
Comprehensive Diagnostic Metrics
# Diagnostic performance with grouping variable
diagnostic_result <- ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100", "CD34"),
showDiagnostics = TRUE,
groupVariable = "Tumor_Type",
calculateDiagnosticMetrics = TRUE
)
# Display diagnostic performance
kable(head(diagnostic_result$diagnosticTable$asDF, 15),
caption = "Diagnostic Performance Analysis")
Multiple Scoring Scales Comparison
Comparing Different IHC Scoring Systems
# Compare different scoring scales
scoring_comparison <- list(
"Binary" = ihcstats(
data = transform(sarcoma_ihc_data,
Vimentin_Binary = ifelse(Vimentin %in% c("2+", "3+"), "Positive", "Negative")),
markers = "Vimentin_Binary",
scoringScale = "binary",
nClusters = 2
),
"Standard" = ihcstats(
data = sarcoma_ihc_data,
markers = "Vimentin",
scoringScale = "standard",
nClusters = 3
),
"Matsuoka" = ihcstats(
data = colorectal_ihc_data,
markers = "p53",
scoringScale = "matsuoka",
nClusters = 3
),
"Carvalho" = ihcstats(
data = renal_ihc_data,
markers = "CD117",
scoringScale = "carvalho",
nClusters = 3
)
)
cat("Scoring scale comparison completed for Binary, Standard, Matsuoka, and Carvalho systems.")
Optimal K Selection Methods
Comparing Cluster Number Selection Approaches
# Compare different optimal K methods
k_methods <- c("elbow", "silhouette", "gap")
k_results <- list()
for (method in k_methods) {
k_results[[method]] <- ihcstats(
data = sarcoma_ihc_data,
markers = c("Vimentin", "SMA", "Desmin", "S100"),
optimalKMethod = method,
showClusterValidation = TRUE,
nClusters = 4 # Will be optimized
)
}
cat("Optimal K selection analysis completed using elbow, silhouette, and gap statistic methods.")
Clinical Integration Examples
Complete Clinical Workflow
# Complete clinical analysis workflow
clinical_result <- ihcstats(
data = ihc_comprehensive_data,
markers = c("Vimentin", "SMA", "CD34", "S100", "CD3", "CD8", "Ki67", "p53"),
# Basic clustering
clusterMethod = "hierarchical",
linkageMethod = "ward.D2",
distanceMetric = "gower",
nClusters = 4,
# Multiple analysis types
prognosticClustering = TRUE,
differentialDiagnosis = TRUE,
sterlacciAnalysis = TRUE,
# Variables for analysis
survivalTimeVar = "Overall_Survival_Months",
survivalEventVar = "Death_Event",
tumorTypeVar = "Tumor_Type",
groupVariable = "Risk_Category",
# Advanced options
iterativeClustering = TRUE,
antibodyOptimization = TRUE,
reproductibilityTesting = TRUE,
# Visualization
showDendrogram = TRUE,
showHeatmap = TRUE,
showPCAPlot = TRUE,
computeHScore = TRUE,
# Statistical options
multipleTesting = "bonferroni",
significanceThreshold = 0.05
)
# Summary of clinical workflow results
cat("Clinical workflow analysis completed with:\n")
cat("- Cluster analysis:", nrow(clinical_result$clusterSummary$asDF), "clusters identified\n")
cat("- H-score analysis:", nrow(clinical_result$hscoreTable$asDF), "markers analyzed\n")
if (nrow(clinical_result$prognosticTable$asDF) > 0) {
cat("- Prognostic analysis: Completed\n")
}
if (nrow(clinical_result$sterlacciTable$asDF) > 0) {
cat("- TIL signature analysis: Completed\n")
}
Summary and Recommendations
Key Features Summary
The ihcstats
function provides comprehensive IHC
analysis with the following key capabilities:
1. Multiple Research Methodologies
- Matsuoka 2011: Ward’s clustering + survival analysis
- Carvalho 2011: Iterative marker selection
-
Olsen 2006: Differential diagnosis clustering
- Sterlacci 2019: TIL signature analysis
2. Flexible Scoring Systems
- Binary (Negative/Positive)
- Standard IHC (0, 1+, 2+, 3+)
- Carvalho scale (0, 1, 2)
- Matsuoka 3-tier (Mild/Moderate/Marked)
- H-score calculation (0-300)
Clinical Applications
Pathology Practice Integration
-
Sarcoma Diagnosis (Olsen methodology)
- Use comprehensive antibody panels
- Optimize marker combinations
- Calculate diagnostic performance
-
Lung Cancer TIL Analysis (Sterlacci methodology)
- Quantify immune infiltration
- Characterize TIL signatures
- Predict immunotherapy response
-
Colorectal Cancer Prognosis (Matsuoka methodology)
- Identify prognostic clusters
- Perform survival analysis
- Analyze tumor heterogeneity
-
Renal Tumor Diagnosis (Carvalho methodology)
- Iterative marker selection
- Optimize diagnostic panels
- Validate marker performance
Best Practices
Analysis Workflow
# 1. Start with basic clustering
result1 <- ihcstats(data, markers, nClusters = 3)
# 2. Add methodology-specific options
result2 <- ihcstats(data, markers, prognosticClustering = TRUE,
survivalTimeVar = "time", survivalEventVar = "event")
# 3. Include visualizations
result3 <- ihcstats(data, markers, showDendrogram = TRUE,
showHeatmap = TRUE, showPCAPlot = TRUE)
References
The ihcstats
function implements methodologies from the
following key research papers:
Primary IHC Clustering Methods
Matsuoka T, Mitomi H, Fukui N, Kanazawa H, Saito T, Hayashi T, Yao T. (2011). Cluster analysis of claudin-1 and -4, E-cadherin, and β-catenin expression in colorectal cancers. Journal of Surgical Oncology, 103(7), 674-686. doi: 10.1002/jso.21854. PMID: 21360533.
Carvalho JC, Wasco MJ, Kunju LP, Thomas DG, Shah RB. (2011). Cluster analysis of immunohistochemical profiles delineates CK7, vimentin, S100A1 and C-kit (CD117) as an optimal panel in the differential diagnosis of renal oncocytoma from its mimics. Histopathology, 58(2), 169-179. doi: 10.1111/j.1365-2559.2011.03753.x. PMID: 21323945.
Olsen SH, Thomas DG, Lucas DR. (2006). Cluster analysis of immunohistochemical profiles in synovial sarcoma, malignant peripheral nerve sheath tumor, and Ewing sarcoma. Modern Pathology, 19(5), 659-668. doi: 10.1038/modpathol.3800569. PMID: 16528378.
Sterlacci W, Fiegl M, Juskevicius D, Tzankov A. (2020). Cluster Analysis According to Immunohistochemistry is a Robust Tool for Non-Small Cell Lung Cancer and Reveals a Distinct, Immune Signature-defined Subgroup. Applied Immunohistochemistry & Molecular Morphology, 28(4), 274-283. doi: 10.1097/PAI.0000000000000751. PMID: 31058655.
Related High-Risk Classification Methods
- Laas E, Ballester M, Cortez A, Graesslin O, Daraï E. (2019). Unsupervised Clustering of Immunohistochemical Markers to Define High-Risk Endometrial Cancer. Pathology & Oncology Research, 25(2), 461-469. doi: 10.1007/s12253-017-0335-y. PMID: 29264761.
Diagnostic Style Analysis
- Usubutun A, Mutter GL, Saglam A, Dolgun A, Ozkan EA, Ince T, Akyol A, Bulbul HD, Calay Z, Eren F, Gumurdulu D, Haberal AN, Ilvan S, Karaveli S, Koyuncuoglu M, Muezzinoglu B, Muftuoglu KH, Ozdemir N, Ozen O, Baykara S, Pestereli E, Ulukus EC, Zekioglu O. (2012). Reproducibility of endometrial intraepithelial neoplasia diagnosis is good, but influenced by the diagnostic style of pathologists. Modern Pathology, 25(6), 877-884. doi: 10.1038/modpathol.2011.220. PMID: 22301705.
For additional support, please refer to the ClinicoPath documentation or contact the development team.