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
Ready-to-paste message
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 pydeseq2Or download just the file:
curl -L https://raw.githubusercontent.com/K-Dense-AI/scientific-agent-skills/main/skills/pydeseq2/SKILL.md -o SKILL.mdTechnical 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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 Waldstat,pvalue, andpadj.deseq2_results_unshrunken.csv: preserved original Wald table.significant_genes.csvandresults_sorted_by_padj.csv: the configuredalpha
…
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.
Popularity
- GitHub stars
- 51k
- Ranking position
- #1946
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
13c-metabolic-flux
Estimates metabolic fluxes using carbon-13 isotope tracing data. It is useful for analyzing cellular metabolism and biochemical pathways.
K-Dense-AI/scientific-agent-skills
adaptyv
Designs protein characterization experiments using the Adaptyv API. It helps estimate costs, submit sequences, and monitor lab results.
K-Dense-AI/scientific-agent-skills
aeon
Performs machine learning tasks on time series data. It is useful for classifying, forecasting, detecting anomalies, and finding patterns in sequential data.
K-Dense-AI/scientific-agent-skills
alphagenome
Looks up precomputed genomic effects for genetic variants. It provides scores and explanations to understand the impact of variants on the genome.
K-Dense-AI/scientific-agent-skills
Similar skills
pytorch-patterns
Helps your agent use PyTorch for machine learning models. It applies best practices for efficient model training and ensures reproducible results.
affaan-m/ECC
evm-token-decimals
Helps your agent avoid errors with decimal numbers across different blockchain networks. It ensures token values are accurate in transactions and calculations.
affaan-m/ECC
knowledge-agent
Creates and queries knowledge bases using AI. It allows asking questions about past work or compiling expertise on a topic.
thedotmack/claude-mem