mcpbeat Sign in

Bio Experimental Design Batch Design Agent Skill

Designs experiments to minimize and account for batch effects using balanced layouts and blocking strategies. Use when planning multi-batch experiments, assigning samples to sequencing lanes, or designing studies where technical variation could confound biological signals.

860 tokens
context cost
SKILL.md, read when the skill is used
3
files
plus reference files
0
copies elsewhere
how many repositories repackaged it
132
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/BioTender-max/awesome-bio-agent-skills --skill bio-experimental-design-batch-design

What comes with it

6 823 bytes besides the instruction
examples/batch_design.R
usage-guide.md

The instruction itself

10 sections, as written by the author

Version Compatibility

Reference examples tested with: limma 3.58+

Before using code patterns, verify installed versions match. If versions differ:

  • R: packageVersion('<pkg>') then ?function_name to verify parameters

If code throws ImportError, AttributeError, or TypeError, introspect the installed

package and adapt the example to match the actual API rather than retrying.

Batch Design and Mitigation

"Design experiment to avoid batch effects" → Plan sample-to-batch assignments that confound biology with technical variation, and apply correction methods post-hoc.

  • R: sva::ComBat(), limma::removeBatchEffect()
  • Python: scanpy.pp.combat() for single-cell data

Core Principle

Batch effects are unavoidable. Good design makes them correctable.

Design Rules

  • Never confound batch with condition - Each batch must contain all conditions
  • Balance samples across batches - Equal numbers per condition per batch
  • Randomize within constraints - Avoid systematic patterns
  • Include controls - Same samples across batches if possible

Balanced Design Example

# BAD: Confounded design
# Batch 1: All treated samples
# Batch 2: All control samples
# -> Cannot separate batch from treatment

# GOOD: Balanced design
# Batch 1: 3 treated, 3 control
# Batch 2: 3 treated, 3 control
# -> Batch effect can be estimated and removed

Sample Assignment

library(designit)

# Create balanced assignment
samples <- data.frame(
  sample_id = paste0('S', 1:24),
  condition = rep(c('ctrl', 'treat'), each = 12),
  sex = rep(c('M', 'F'), 12)
)

# Optimize batch assignment
batch_design <- osat(samples, batch_size = 8,
                     balance_cols = c('condition', 'sex'))

Detecting Batch Effects

Goal: Identify hidden batch effects in expression data by estimating surrogate variables that capture unmodeled technical variation.

Approach: Fit a model matrix for the biological variable, estimate the number of surrogate variables using num.sv, then compute surrogate variables with sva for inclusion in downstream differential analysis.

library(sva)

# From count matrix
mod <- model.matrix(~condition, colData)
mod0 <- model.matrix(~1, colData)

# Estimate number of surrogate variables (hidden batches)
n_sv <- num.sv(counts_normalized, mod)

# Estimate surrogate variables
svobj <- sva(counts_normalized, mod, mod0, n.sv = n_sv)

Correction Methods

| Method | When to Use |

|--------|-------------|

| ComBat | Known batches, moderate effects |

| SVA | Unknown batches, exploratory |

| RUVseq | Using control genes |

| limma::removeBatchEffect | Visualization only |

Documenting Design

Always record:

  • Date of sample processing
  • Reagent lot numbers
  • Operator
  • Equipment/lane assignments
  • Any deviations from protocol
  • experimental-design/power-analysis - Account for batch in power calculations
  • differential-expression/batch-correction - Correcting batch effects in analysis
  • single-cell/batch-integration - scRNA-seq batch correction

Other skills for the same job

different authors, same section of the catalogue
Mobile Design
by ComeOnOliver
×2

Mobile-first design and engineering doctrine for iOS and Android apps. Covers touch interaction, performance, platform conventions, offline behavior, and mobile-specific decision-making. Teaches principles and constraints, not fixed layouts. Use for React Native, Flutter, or native mobile apps.

2.3k tokens scripts
Experimental Design
by K-Dense-AI
×1

Design experiments and studies BEFORE data is collected — choosing a design, randomizing, blocking, and laying out treatment combinations so results are interpretable. Use whenever someone is planning a study, asks how to assign subjects/samples to groups, mentions randomization, blocking, stratification, controls, factorial or fractional-factorial designs, design of experiments (DOE), screening many factors, response-surface optimization, crossover or repeated-measures or split-plot designs, cluster/group randomization, Latin squares, plate layouts, batch/run-order effects, replication vs. pseudoreplication, or sequential/adaptive/group-sequential designs. Trigger even for informal phrasings like "how should I set up this experiment", "how do I avoid confounding", "what's the best way to test these 6 factors", or "assign these mice to conditions". For computing the sample size or power once the design is chosen, use statistical-power; for analyzing data already collected, use statistical-analysis.

3.3k tokens scripts
Architect
by ComeOnOliver
×1

Design systems, plan implementations, review architecture decisions - Use when you need to plan a complex feature, design system architecture, or make high-level technical decisions.

234 tokens
Analyze Feature Requests
by phuryn

Analyze and prioritize a list of feature requests by theme, strategic alignment, impact, effort, and risk. Use when reviewing customer feature requests, triaging a backlog, or making prioritization decisions.

568 tokens
Gke Networking
by google
vendor

>- Plans, configures, and manages core GKE cluster networking. Covers private clusters, VPC-native configurations, DNS, node egress, Dataplane V2, and IP planning. Use when designing GKE networking layouts, configuring private clusters, setting up Dataplane V2, planning GKE IP ranges, or managing VPC- native cluster modes. Don't use for application ingress, load balancing, or service networking (use gke-service-networking instead).

1.5k tokens
Azldev Add Component
by microsoft
vendor

Read this before adding or importing a component; follow the workflow instead of guessing. Explains how to add a new component to an azldev distro, covering inspecting the upstream spec, the inline-versus-dedicated-file decision, and validating with render, diff-sources, and build. Triggers include add component, new package, import package, create comp.toml, new component.

998 tokens
Open Knowledge Pack Plain Notes
by inkeep

How to work in a Plain Notes project (the `plain-notes` starter pack): a flat notes/ folder plus a daily/ journal. The 'I just want to write' layout. Read when the project has these folders, OR when asked to jot a note, capture a quick thought, or write today's journal entry. Carries the linking habit and daily-entry behavior so templates and folder descriptions stay minimal. Complements the platform `open-knowledge` skill; does not replace it.

498 tokens
Open Knowledge Pack Worldbuilding
by inkeep

How to work in a Worldbuilding project (the `worldbuilding` starter pack): a fiction encyclopedia of characters, settings, themes, factions, and lore. Read when the project has these folders, OR when asked to add a character, setting, faction, or piece of lore, or to check the world for internal consistency. Carries the auto-stub and consistency behaviors so that guidance does not live inside template bodies or folder descriptions. Complements the platform `open-knowledge` skill; does not replace it.

758 tokens

How to use it

Copy the folder

Take biotender-max/bio-experimental-design-batch-design from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.