Independent filtering multiple testing correction
Curated, evidence-grounded skill and software-tool collections for scientific AI agents, generated by the AgenticScienceBuilder
npx -y skills add HolobiomicsLab/asb-skill-collections --skill independent-filtering-multiple-testing-correctionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when analyzing RNA-seq count data from a DESeq2 workflow where you have fitted negative binomial generalized linear models and need to extract final results. Use it specifically when you want to identify genes with adjusted p-value below a predetermined significance threshold (e.g., α=0.
The file declares its own license as CC-BY-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.8 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
independent-filtering-multiple-testing-correction
Summary
Automatically filter low-abundance genes before multiple-testing correction in RNA-seq differential expression analysis to improve statistical power and control false discovery rate. This skill combines independent filtering (removing genes with low mean normalized counts) with FDR-based multiple-testing correction to identify significantly differentially expressed genes.
When to use
Apply this skill when analyzing RNA-seq count data from a DESeq2 workflow where you have fitted negative binomial generalized linear models and need to extract final results. Use it specifically when you want to identify genes with adjusted p-value below a predetermined significance threshold (e.g., α=0.1 for FDR) while maximizing statistical power by removing genes unlikely to show differential expression due to low abundance.
When NOT to use
- Input data has already been pre-filtered by external count threshold—independent filtering will apply an additional, data-driven filter that may not align with your prior cutoff.
- You require gene-level p-values without multiple-testing correction (e.g., for visualization or hypothesis generation only).
- Your experimental design involves a very small number of genes (e.g., targeted panel <100 genes), where independent filtering may remove too many genes and compromise power.
Inputs
- DESeqDataSet object (dds) after DESeq() analysis
- design formula (e.g., ~cell+dex)
- normalized count matrix
- sample metadata (cell type, treatment condition)
Outputs
- results table with log2 fold changes, p-values, and adjusted p-values
- filtered gene list with padj < alpha
- count of significantly differentially expressed genes
How to apply
After running DESeq(dds) to estimate dispersions and fit models, call results(dds) with your chosen alpha threshold (default alpha=0.1 implements FDR control). The results() function automatically performs independent filtering based on the mean of normalized counts for each gene—genes below a data-driven quantile cutoff are excluded before p-value adjustment. This reduces multiple-testing burden, increases sensitivity for the remaining genes, and avoids inflating type I error. Order the results table by adjusted p-value (padj) and extract genes meeting your padj < alpha threshold. The independent filtering step is performed internally by the results function and does not require manual specification of a count threshold.
Related tools
- DESeq2 (Performs negative binomial GLM fitting, independent filtering, and multiple-testing correction via results() function) — https://github.com/thelovelab/DESeq2
- ashr (Provides adaptive shrinkage methods for improved effect size estimation that can follow independent filtering and FDR correction) — https://github.com/stephens999/ashr
- DEvis (Visualizes and aggregates differential expression results including filtered gene sets) — https://github.com/price0416/DEvis
Examples
dds <- DESeq(dds); res <- results(dds, alpha=0.1); res_ordered <- res[order(res$pvalue),]; sig_genes <- res_ordered[res_ordered$padj < 0.1,]; nrow(sig_genes)
Evaluation signals
- Verify that the number of genes returned matches the reported count of genes with padj < alpha (e.g., in task_001, reproducibility of the exact count confirms correct filtering and correction).
- Check that the results table contains columns for baseMean, log2FoldChange, pvalue, padj, and padj values are strictly ≥ pvalue (indicating multiple-testing correction was applied).
- Confirm that independent filtering was active by verifying that very low-abundance genes (e.g., baseMean < 1) are absent from the results table, even if their raw p-value was significant.
- Validate that adjusted p-values are monotonically non-decreasing when results are ordered by p-value (property of independent filtering with Benjamini-Hochberg correction).
- Cross-check reproducibility: re-running results(dds, alpha=0.1) on the same dds object should yield identical gene counts and adjusted p-values.
Limitations
- Independent filtering is automatic and uses a default quantile cutoff determined from the data; no user control over the exact count threshold unless manually pre-filtering before DESeq().
- The filter is designed for data with a wide range of counts; highly uniform or heavily pre-filtered datasets may not benefit from independent filtering.
- Results are sensitive to the alpha threshold chosen; no consensus exists on whether alpha=0.05, 0.1, or other values is appropriate for a given study, and FDR control assumes independence or weak dependence among tests.
Evidence
- [other] the results function automatically performs independent filtering based on the mean of normalized counts for each gene: "the results function automatically performs independent filtering based on the mean of normalized counts for each gene"
- [other] Extract results using results(dds) with default alpha=0.1, which automatically performs independent filtering based on mean normalized counts.: "Extract results using results(dds) with default alpha=0.1, which automatically performs independent filtering based on mean normalized counts."
- [other] by removing rows in which there are very few reads, we reduce the memory size of the
ddsdata object, and we increase the speed: "by removing rows in which there are very few reads, we reduce the memory size of theddsdata object, and we increase the speed" - [other] The package DESeq2 provides methods to test for differential expression by use of negative binomial generalized linear models: "The package DESeq2 provides methods to test for differential expression by use of negative binomial generalized linear models"
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.