OpenClaw-Medical-Skills bio-experimental-design-multiple-testing

<!--

install
source · Clone the upstream repo
git clone https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bio-experimental-design-multiple-testing" ~/.claude/skills/freedomintelligence-openclaw-medical-skills-bio-experimental-design-multiple-tes && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/bio-experimental-design-multiple-testing" ~/.openclaw/skills/freedomintelligence-openclaw-medical-skills-bio-experimental-design-multiple-tes && rm -rf "$T"
manifest: skills/bio-experimental-design-multiple-testing/SKILL.md
source content
<!-- # COPYRIGHT NOTICE # This file is part of the "Universal Biomedical Skills" project. # Copyright (c) 2026 MD BABU MIA, PhD <md.babu.mia@mssm.edu> # All Rights Reserved. # # This code is proprietary and confidential. # Unauthorized copying of this file, via any medium is strictly prohibited. # # Provenance: Authenticated by MD BABU MIA -->

name: bio-experimental-design-multiple-testing description: Applies multiple testing correction methods including FDR, Bonferroni, and q-value for genomics data. Use when filtering differential expression results, setting significance thresholds, or choosing between correction methods for different study designs. tool_type: r primary_tool: qvalue measurable_outcome: Execute skill workflow successfully with valid output within 15 minutes. allowed-tools:

  • read_file
  • run_shell_command

Multiple Testing Correction

The Problem

Testing 20,000 genes at p < 0.05 yields ~1,000 false positives by chance. Correction is essential.

Common Methods

Bonferroni (Most Conservative)

# Strict family-wise error rate control
p_adj <- p.adjust(pvalues, method = 'bonferroni')
# Threshold: alpha / n_tests
# Use for: small gene sets, confirmatory studies

Benjamini-Hochberg FDR (Standard)

# Controls false discovery rate
p_adj <- p.adjust(pvalues, method = 'BH')
# Most common for genomics
# FDR 0.05 = expect 5% of significant results to be false

q-value (Recommended for Large-Scale)

library(qvalue)
qobj <- qvalue(pvalues)
qvalues <- qobj$qvalues
pi0 <- qobj$pi0  # Estimated proportion of true nulls

# q-value directly estimates FDR for each gene
# More powerful than BH when many true positives exist

Method Selection Guide

ScenarioRecommended MethodThreshold
Genome-wide DEBH or q-valueFDR < 0.05
Candidate genesBonferronip < 0.05/n
ExploratoryBHFDR < 0.10
Validation studyBonferronip < 0.05/n
GWASBonferronip < 5e-8

Python Equivalent

from statsmodels.stats.multitest import multipletests

# Benjamini-Hochberg
rejected, pvals_corrected, _, _ = multipletests(pvalues, method='fdr_bh')

# Bonferroni
rejected, pvals_corrected, _, _ = multipletests(pvalues, method='bonferroni')

Interpreting Results

  • FDR 0.05: Among genes called significant, ~5% are false positives
  • FDR 0.01: More stringent, fewer false positives but more false negatives
  • padj vs qvalue: Both estimate FDR; q-value is slightly more powerful

Related Skills

  • differential-expression/de-results - Applying corrections to DE output
  • population-genetics/association-testing - GWAS significance thresholds
  • pathway-analysis/go-enrichment - Correcting enrichment p-values
<!-- AUTHOR_SIGNATURE: 9a7f3c2e-MD-BABU-MIA-2026-MSSM-SECURE -->