Skip to content
Skillpedia
Machine learning51k · #1946

pydeseq2

Lets your agent analyze genetic data to find important differences in experiments. It's useful for researchers studying genes and their variations.

What it does

This tool analyzes large-scale RNA data to find which genes change their activity between different samples. It helps understand biological differences in experiments with living organisms.

When to use it

  • ✓Comparing gene activity between a treatment group and a control group.
  • ✓Identifying genes that change activity due to a specific condition (e.g., disease vs. health).
  • ✓Analyzing data from experiments where multiple organisms or samples were used for more reliable results.

Example of what to ask your AI

“Analyze my RNA-seq data to find genes that changed between the 'treated' group and the 'control' group, using a formula that accounts for 'batch'.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/skills/pydeseq2/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/skills/pydeseq2/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

You provide your gene count data and information about your samples. The tool uses a statistical model to compare gene activity levels between the groups you defined.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add K-Dense-AI/scientific-agent-skills --skill pydeseq2

Or download just the file:

curl -L https://raw.githubusercontent.com/K-Dense-AI/scientific-agent-skills/main/skills/pydeseq2/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

PyDESeq2

Use this skill for bulk RNA-seq negative-binomial GLMs, with explicit biological replicates, covariates, and comparisons. Cells, sequencing lanes, and repeated measurements from the same donor are not independent biological replicates. Donor-level pseudobulk can be appropriate when its aggregation and design match the scientific question; this is not a single-cell per-cell testing workflow.

Current PyDESeq2 0.5.4 provides Wald tests and apeGLM-style coefficient shrinkage. Do not assume every feature or numerical result of current R DESeq2 is implemented identically. See API and tested versions for supported calls, AnnData storage, and source/runtime verification limits.

Analysis contract

  1. Establish the experimental unit, count provenance, sample exclusions, reference levels, and intended comparison before fitting. Use nonnegative integer counts in samples × genes order, with unique sample/gene IDs. TPM, FPKM, log data, VST data, and library-normalized counts are not model inputs. Integer checks alone cannot establish raw-count provenance. Approved estimated-count imports need an explicit upstream conversion and offset/length-correction policy.
  2. Require equal sample sets and reorder metadata to the count index. Resolve unmatched IDs and missing design annotations explicitly; never silently take an intersection. Determine orientation from the file schema, not its shape.
  3. Apply a prespecified gene prefilter after intentional sample exclusions. Total counts >=10 is a small example rule, not a universal biological threshold. Keep enough genes to estimate normalization and dispersion trends jointly.
  4. Build a full-rank formula design with residual degrees of freedom. Explicitly encode categories/reference levels; numeric variables are continuous. Formula term order does not decide the tested effect when a contrast is explicit.
  5. Fit size factors, gene-wise/trend/MAP dispersions, LFCs, and Cook diagnostics. Inspect warnings, convergence and normalization assumptions before interpreting results. Large size factors can reflect real library-depth differences.
  6. Test an explicit contrast with the intended alpha, preserve the full Wald table, and optionally shrink the same single positive coefficient. Export counts/model metadata separately from statistical results.

Quick start

Install in an isolated environment; the repository test runner supplies the scientific dependencies separately from the project environment:

uv venv --python 3.13 .venv-pydeseq2
uv pip install --python .venv-pydeseq2/bin/python 'pydeseq2==0.5.4' 'anndata==0.13.4'

Paths below are illustrative; run from this skill directory with your own files. The bundled driver expects counts CSV as genes × samples by default, and metadata CSV as samples × annotations, each with IDs in its first column:

python scripts/run_deseq2_analysis.py \
  --counts counts.csv --metadata metadata.csv \
  --design '~batch + condition' --contrast condition treated control \
  --min-counts 10 --alpha 0.05 --n-cpus 1 --plots --output results/

Use --no-transpose for a counts file already in samples × genes order. The driver rejects duplicate source CSV headers, unequal sample sets, invalid count values, zero-count samples, missing contrast annotations, and unidentifiable designs. It sets the CLI contrast variable's reference level before fitting; numeric category codes supplied as the contrast variable are deliberately treated as categories. Resolve other design variables' types and missing values in the input metadata.

The driver performs Wald testing and shrinkage by default. --no-shrink exports only unshrunk effect estimates; --shrink-coeff can select only the coefficient that exactly matches the tested contrast. For interactions, continuous effects, or custom design matrices, use the Python patterns rather than guessing a CLI coefficient. The CLI does not expose thresholded tests or alternative normalization methods; use the API for those choices.

Outputs:

  • deseq2_results.csv: current estimates (shrunken if requested) with original Wald stat, pvalue, and padj.
  • deseq2_results_unshrunken.csv: preserved original Wald table.
  • significant_genes.csv and results_sorted_by_padj.csv: the configured alpha

…

FAQ

What are 'biological replicates'?

These are independent samples of the same type of organism or condition, used to ensure findings are not due to chance.

What is 'log2FoldChange'?

It's a measure of how much a gene's activity changed between two conditions. A positive value means it increased, a negative one means it decreased.

What is 'padj' (adjusted p-value)?

It's a value indicating the probability of a result being false, after correcting for the large number of tests performed. A low 'padj' suggests a reliable finding.

Details

Original description by the author

Performs bulk RNA-seq differential expression analysis with PyDESeq2, including count validation, formula designs, explicit contrasts, Wald tests, FDR correction, coefficient-matched LFC shrinkage, and result visualization. Use for PyDESeq2 or Python DESeq2 workflows with biological replicates.

repo: K-Dense-AI/scientific-agent-skills

Popularity

GitHub stars
51k
Ranking position
#1946
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills