Skip to main content
Glama

jean — Molecular Biology & Genomics

differential_expression

Read-only

Differential expression from raw RNA-seq read counts, by one of the three standard count models. DESeq2 (Love, Huber & Anders 2014): median-of-ratios size factors, negative-binomial GLM with empirical-Bayes shrunken dispersions, Wald or likelihood-ratio test, Cook's-distance outlier handling, independent filtering, optional LFC shrinkage. edgeR quasi-likelihood (Chen et al. 2025): filterByExpr, TMM normalization, a negative-binomial GLM with bias-adjusted QL dispersions squeezed toward an abundance trend, QL F-test. limma-voom (Law et al. 2014): filterByExpr, TMM, log-CPM with mean-variance precision weights, weighted linear models, moderated t. Takes a gene-by-sample count table and a sample table with the design's variables. Every gene of every validated fit is bit-identical to DESeq2 1.52.0, edgeR 4.10.6 and limma 3.68.5 running in R. Hands its significant genes, tested genes and ranked list on for gene-set enrichment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoone fitted coefficient to report, by its DESeq2 name (e.g. 'condition_treated_vs_untreated') or its model-matrix column ('conditiontreated'); empty is the last.
testNoWald: one coefficient or contrast. LRT: the full design against `reduced`, testing every removed term at once. Only applies when method is DESeq2.Wald
alphaNothe target FDR: the summary counts genes below this adjusted p, and DESeq2's independent filtering maximizes rejections at it.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
countsYesraw read counts (never normalized values or TPM): genes in rows with the gene ID first, samples in columns, tab- or comma-separated, a header row naming the samples.
designNothe design formula over the sample table's columns, the variable of interest last (e.g. '~ batch + condition').~ condition
methodNothe count model: DESeq2 (negative binomial, Wald or LRT), edgeR-QL (negative binomial with quasi-likelihood F-test) or limma-voom (precision-weighted linear model on log-CPM, moderated t).DESeq2
sfTypeNosize factors: median of ratios over genes with no zero (ratio), or with zeros allowed (poscounts, for sparse data). Only applies when method is DESeq2.ratio
shrinkNoshrink the reported coefficient's log2 fold changes toward zero where the counts cannot support them (DESeq2 lfcShrink), for ranking and plotting by effect size; p-values stay the unshrunken test's. apeglm: adaptive Cauchy prior, posterior mode. ashr: mixture-of-normals prior, posterior mean. normal: DESeq2's original zero-centred Normal prior (Wald only). Only applies when method is DESeq2.none
fitTypeNothe dispersion trend: parametric (asymptDisp + extraPois / mean, DESeq2's default) or the mean of gene-wise estimates. Only applies when method is DESeq2.parametric
reducedNothe reduced design for the likelihood-ratio test. Only applies when method is DESeq2.
samplesYesthe sample table: a header row, then one row per sample with its name (as in the count table's header) first and the design's variables after; the run uses this table's sample order.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
contrastNo'factor, numerator, denominator': the log2 fold change of numerator over denominator. Empty is the design's last coefficient. Under edgeR and voom the denominator must be the factor's reference level.
minCountNofilterByExpr: the count, at the median library size, a gene needs in the smallest group's worth of samples (taken as CPM). Only applies when method is edgeR-QL or limma-voom.
referenceNoreference level per factor, 'variable=level' separated by commas; a factor not named takes its alphabetically first level, as R does.
cooksCutoffNothe Cook's distance cutoff; empty is DESeq2's F(0.99; p, m - p). Only applies when method is DESeq2.
cooksFilterNoset the p-value of genes with a Cook's-distance outlier to NA. Only applies when method is DESeq2.
filterByExprNokeep only genes edgeR's filterByExpr finds expressed (the edgeR and limma workflows' first step); off fits every gene. Only applies when method is edgeR-QL or limma-voom.
lfcThresholdNotest |log2 fold change| against this threshold instead of 0. Only applies when method is DESeq2.
altHypothesisNowhich side of the threshold is the alternative. Only applies when method is DESeq2.greaterAbs
minTotalCountNofilterByExpr: the total count a gene needs across all samples. Only applies when method is edgeR-QL or limma-voom.
pAdjustMethodNomultiple-testing adjustment across genes (R `p.adjust`).BH
independentFilteringNodrop low-mean genes from the adjustment when that gains rejections at `alpha`. Only applies when method is DESeq2.
minReplicatesForReplaceNosamples per group from which outlier counts are replaced and the gene refitted, instead of flagged. Only applies when method is DESeq2.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
genesYesone row per gene: log2FoldChange, stat (DESeq2 Wald or LRT, edgeR F, voom moderated t), pvalue, padj, why padj is NA, the normalized counts per sample; DESeq2 adds baseMean, lfcSE, the gene-wise, fitted and final dispersions, whether it was refitted and with `shrink` the shrunken fold change, its SE and s-value; edgeR and voom add logCPM, the raw, prior and posterior variance (edgeR's QL dispersion) and the total df, and voom the B-statistic
maPlotYeslog2 fold change (shrunken, with `shrink`) against mean normalized count (DESeq2) or average log2 CPM (edgeR, voom), significant genes apart
summaryYesgenes up and down at alpha and tested, with the method's own fit: DESeq2's outliers, low counts, filter threshold, size factors, dispersion trend and shrinkage prior; edgeR's common and average QL dispersion and prior df; voom's span and prior variance; the filterByExpr cutoffs and library sizes
upGenesYessignificant genes with positive log2 fold change, one per line
volcanoYes-log10 p against log2 fold change, significant genes apart
downGenesYessignificant genes with negative log2 fold change, one per line
rankedListYestested genes by their test statistic, decreasing: DESeq2's Wald statistic, voom's moderated t, or edgeR's signed square root of F (a t with the same df): the ranked list for GSEA
testedGenesYesevery gene with an adjusted p-value, one per line: the background (universe) for over-representation analysis
dispersionPlotYesDESeq2: gene-wise, fitted and final dispersions against mean count. edgeR: quarter-root raw, squeezed and trend QL dispersions against average log2 CPM (plotQLDisp). voom: sqrt standard deviation against log2 count size, with the lowess trend that sets the weights
significantGenesYesgenes with padj below alpha, one per line: the gene list for over-representation analysis

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, closed-world behavior, and the description adds substantive computational behavior: the statistical models, outlier handling, independent filtering, optional LFC shrinkage, and version-identical fit guarantees. It still does not discuss runtime, memory, or failure modes, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and fits the complexity of a 25-parameter statistical tool, with no empty filler. It is a dense single paragraph rather than structured bullets, and some algorithm-level detail could be trimmed, so it is effective but not maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, rich annotations, and 100% parameter description coverage, the description supplies the missing high-level context: required inputs, model choices, fidelity guarantee, and downstream handoff. It omits method-selection heuristics and edge-case behavior, but is adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 25 parameters, including enums for method, test, shrink, and altHypothesis. The prose adds conceptual depth about the count models but does not add parameter syntax, format, or constraint information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific scientific operation—differential expression—and constrains it to raw RNA-seq read counts and three named count models. The method-by-method breakdown (DESeq2, edgeR-QL, limma-voom) and the handoff to gene-set enrichment make its scope distinct from generic expression or relative-expression siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when to use it: raw counts plus a sample table with design variables, with three model choices described. It does not explicitly say when not to use it or name an alternative sibling such as relative_expression, so it falls short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources