13 tool steps across 10 unique tools, including tools inside nested subworkflows. A plus sign denotes parallel branches.
Workflow
Decoupler pseudo-bulk→Sanitize matrix + Sanitize factors + Remove start, end, width→Sanitize first factor for leading digits→Text reformatting→edgeR→Get contrast labels + Select gene symbols, logFC, PValue and FDR→Replace Text→Split contrasts→Contrast as parameters→Volcano Plot
Complete query
The full task shown to the agent, excluding execution-condition instructions.
Aggregate the provided annotated single-cell RNA-seq data into pseudobulk profiles, then test those profiles for differential expression between the two disease groups. Use the raw counts in the AnnData layer `counts`. Sum counts by `individual` and `cell_type`, and retain only individual-cell-type combinations containing at least 10 cells. Filter the retained pseudobulk samples to expressed genes as follows. Let N be the number of retained samples and M the median of their total counts, and let S = ceil(10 + 0.7 x (N - 10)). Compute each gene's counts per million within each sample using that sample's own total count. Retain a gene only when its counts per million is at least 10 / M x 1,000,000 in at least S samples, and its summed count across all retained samples is at least 1,000. Apply this rule once to all retained samples together, without reference to the disease groups. Write `final_answer/pseudobulk_counts.tsv` as a tab-separated raw-count matrix with one row per retained gene. The first column must be named `gene` and contain the `gene_symbol` values. Include exactly one column for each retained individual-cell-type combination and no other pseudobulk columns. Name these columns `<individual>_<cell_type>`, replacing every space and hyphen with an underscore. Each matrix entry must be the summed nonnegative integer raw count. Row and column order do not matter. Then test every gene in that filtered matrix for differential expression between the disease groups, using a standard count-based negative-binomial differential-expression method and a model that accounts for both disease and cell type. Use the normal-minus-COVID-19 contrast, so a positive log2 fold change means higher expression in normal. Report unshrunken log2 fold changes. Write `final_answer/differential_expression.tsv` with exactly four tab-separated columns named `gene`, `log2_fold_change`, `p_value` and `fdr`. Use the same gene identifiers as `final_answer/pseudobulk_counts.tsv`. Include one row for every gene in that matrix and no other rows, and do not remove rows by significance. Every log2 fold change must be finite, and every p-value and adjusted p-value must lie between 0 and 1. Report finite numeric `p_value` and `fdr` values for every gene. Do not omit a gene or report a missing value because your method flags it as an outlier. Report the adjusted p-value as a Benjamini-Hochberg adjustment of your own p-values across those genes. Write `final_answer/method.json` as a JSON object with a single key `method` whose value is the common name of the differential-expression method you used.
acc evaluator
acc compares the final output files with the reference outputs.
Metric
pseudobulk_de_composite
Definition
Two artifacts scored separately and combined as their geometric mean. The pseudobulk matrix keeps the scorer it has always had, because it is exactly reproducible and nothing about it changed. The differential-expression table is scored continuously against the calibrated reference for the declared method. Both components are always reported.
Formula
Final scoreS = √(S_matrix × S_DE)
The pseudobulk matrix and differential-expression table contribute equally.
Matrix scoreS_matrix = √(F1_rows × F1_counts)
Rows are genes; candidate and reference pseudosample columns must match exactly.
Raw counts are compared as an abundance-weighted multiset over gene g and pseudosample s.
DE scoreS_DE = (G × D × M × R × E)^(1/5), or 0 if any component ≤ 0
G is gene coverage; D direction; M Lin's CCC magnitude; R fold-change rank; E evidence rank, as defined for the continuous DE evaluator.
ConsistencyGenes_matrix = Genes_DE
The two submitted artifacts must describe the same candidate gene set.
Step-score requirements
A step passes when the trace directly shows that it ran. Parameter correctness and output quality are measured separately by acc.
Step 1Load raw counts from the counts layer together with individual, cell_type, and gene_symbol.
The counts layer, not normalized expression, supplied the gene-by-cell values.
individual, cell_type, disease metadata, and gene_symbol were correctly aligned to cells/features.
Step 2Sum cells into pseudobulk samples by individual and cell type.
Raw counts were summed, not averaged, for every individual-cell_type group.
No cells were assigned across individuals or cell types during aggregation.
Step 3Keep only individual-cell-type groups containing at least 10 cells.
Cell counts were computed per individual-cell_type group.
Only groups with at least 10 cells entered the pseudobulk matrix and DE model.
Step 4Apply the stated tool-neutral expressed-gene filtering rule and produce the filtered pseudobulk raw-count matrix.
The required CPM threshold and median-library-size-derived sample count S were calculated as specified, including ceiling behavior.
Genes were retained only when CPM was at least 1 in at least S retained pseudobulk samples.
The final pseudobulk matrix contains raw integer counts with required group and gene labels and passes artifact checks.
Step 5Perform differential-expression analysis between disease groups using a count-based negative-binomial method and a model accounting for disease and cell type, then produce the complete per-gene DE table and method declaration.
A successful count-based negative-binomial DE model used disease and cell_type terms on the filtered pseudobulk counts.
The requested disease contrast, unshrunken effect estimates, raw p-values, and BH-adjusted p-values cover the full tested universe.
The DE table and method declaration identify the actual model and pass final-answer checks.
Model results and score explanations
The 16 results below acc 1.000 each include a score explanation and quantitative evidence. A score below 1.000 is not automatically an error. Each replicate shows its recorded workflow, acc, step score, and Hugging Face trace. Galaxy histories can be imported by link but are not published in Galaxy's public history listing.
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999424.
Generic negative-binomial modelThe task accepts a standard count-based negative-binomial method. This result used a generic model rather than edgeR or DESeq2; its pseudobulk matrix is exact, but its fitted statistics agree less closely with the calibrated methods.Evidence. All 1,429 genes were present. The model called 0 significant genes versus 49 in the edgeR comparison; the differential-expression component scored 0.897779.
DESeq2 normalization choiceThe pseudobulk matrix is exact and the complete differential-expression table is valid. This PyDESeq2 analysis used the poscounts size-factor option, which changes normalization and fitted statistics relative to the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 72 significant genes versus 68; magnitude concordance was 0.962048, rank similarity 0.955534, and p-value evidence 0.876477.
edgeR fitting variationThe pseudobulk matrix and complete gene set are correct. The recorded Galaxy edgeR analysis produced different fitted statistics from the calibrated edgeR output.Evidence. All 1,429 genes and their effect directions matched. It called 73 significant genes versus 49; magnitude concordance was 0.962383, rank similarity 0.971237, and p-value evidence 0.846298.
Load raw counts and cell metadata from AnnData→Aggregate cells into individual-by-cell-type pseudobulk samples→Remove pseudobulk groups with fewer than 10 cells→Apply the expressed-gene filter→Run count-based differential expression with edgeR→Write the pseudobulk matrix and per-gene DE table
All 6 recorded steps
Load raw counts and cell metadata from AnnData
Aggregate cells into individual-by-cell-type pseudobulk samples
Remove pseudobulk groups with fewer than 10 cells
Apply the expressed-gene filter
Run count-based differential expression with edgeR
Write the pseudobulk matrix and per-gene DE table
Score explanation
edgeR fitting variationThe pseudobulk matrix and complete gene set are correct. This edgeR analysis produced slightly different fitted statistics from the calibrated Galaxy edgeR output.Evidence. All 1,429 genes and their effect directions matched. It called 76 significant genes versus 49; the differential-expression component scored 0.995519.
Load raw counts and cell metadata from AnnData→Aggregate cells into individual-by-cell-type pseudobulk samples→Apply the expressed-gene filter→Run count-based differential expression with DESeq2→Write the pseudobulk matrix and per-gene DE table
All 5 recorded steps
Load raw counts and cell metadata from AnnData
Aggregate cells into individual-by-cell-type pseudobulk samples
Apply the expressed-gene filter
Run count-based differential expression with DESeq2
Write the pseudobulk matrix and per-gene DE table
Score explanation
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999424.
Load raw counts and cell metadata from AnnData→Aggregate cells into individual-by-cell-type pseudobulk samples→Remove pseudobulk groups with fewer than 10 cells→Apply the expressed-gene filter→Run count-based differential expression with DESeq2→Write the pseudobulk matrix and per-gene DE table
All 6 recorded steps
Load raw counts and cell metadata from AnnData
Aggregate cells into individual-by-cell-type pseudobulk samples
Remove pseudobulk groups with fewer than 10 cells
Apply the expressed-gene filter
Run count-based differential expression with DESeq2
Write the pseudobulk matrix and per-gene DE table
Score explanation
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999420.
edgeR fitting variationThe pseudobulk matrix and complete gene set are correct. This edgeR analysis produced slightly different fitted statistics from the calibrated Galaxy edgeR output.Evidence. All 1,429 genes and their effect directions matched. It called 73 significant genes versus 49; the differential-expression component scored 0.995550.
Floating-point precisionThe pseudobulk matrix and DESeq2 statistics match the calibrated DESeq2 reference; the tiny difference from 1.000 comes only from numeric serialization.Evidence. All 1,429 genes and all 68 significant calls matched; the differential-expression component scored 0.999999999178.
Load raw counts and cell metadata from AnnData→Aggregate cells into individual-by-cell-type pseudobulk samples→Apply the expressed-gene filter→Run count-based differential expression with DESeq2→Write the pseudobulk matrix and per-gene DE table
All 5 recorded steps
Load raw counts and cell metadata from AnnData
Aggregate cells into individual-by-cell-type pseudobulk samples
Apply the expressed-gene filter
Run count-based differential expression with DESeq2
Write the pseudobulk matrix and per-gene DE table
Score explanation
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999420.
Load raw counts and cell metadata from AnnData→Aggregate cells into individual-by-cell-type pseudobulk samples→Apply the expressed-gene filter→Run count-based differential expression with DESeq2→Write the pseudobulk matrix and per-gene DE table
All 5 recorded steps
Load raw counts and cell metadata from AnnData
Aggregate cells into individual-by-cell-type pseudobulk samples
Apply the expressed-gene filter
Run count-based differential expression with DESeq2
Write the pseudobulk matrix and per-gene DE table
Score explanation
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999417.
Load raw counts and cell metadata from AnnData→Aggregate cells into individual-by-cell-type pseudobulk samples→Apply the expressed-gene filter→Run count-based differential expression with edgeR→Run count-based differential expression with DESeq2→Write the pseudobulk matrix and per-gene DE table
All 6 recorded steps
Load raw counts and cell metadata from AnnData
Aggregate cells into individual-by-cell-type pseudobulk samples
Apply the expressed-gene filter
Run count-based differential expression with edgeR
Run count-based differential expression with DESeq2
Data retrieval→Anndata Inspect ×4→Decoupler pseudobulk→Data retrieval→edgeR
All 8 recorded steps
Data retrieval
Anndata Inspect
Anndata Inspect
Anndata Inspect
Anndata Inspect
Decoupler pseudobulk
Data retrieval
edgeR
Score explanation
Floating-point precisionThe pseudobulk matrix and edgeR statistics match the benchmark target; the tiny difference from 1.000 comes only from numeric serialization.Evidence. All 1,429 genes and all 49 significant calls matched; the differential-expression component scored 0.999999999172.
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999421.
PyDESeq2 implementation variationThe pseudobulk matrix is exact and the complete differential-expression table is valid. This result used PyDESeq2; its fitted values differ only slightly from the calibrated Galaxy/R DESeq2 output.Evidence. All 1,429 genes and their effect directions matched. It called 62 significant genes versus 68; the differential-expression component scored 0.999423.
Invalid multiple-testing correctionThe submitted fdr values were not the Benjamini-Hochberg adjustment of the submitted p-values, which the task explicitly required.Evidence. The largest difference from the correct Benjamini-Hochberg values was 0.00342, above the allowed tolerance of 0.000001.
Anndata Inspect→Anndata Export→Show Beginning1 ×3→Select columns→Show Beginning1→Anndata Ops→3 more steps
All 16 recorded steps
Anndata Inspect
Anndata Export
Show Beginning1
Show Beginning1
Show Beginning1
Select columns
Show Beginning1
Anndata Ops
Anndata Inspect
Data retrieval
Data retrieval
Data retrieval
Data retrieval
Data retrieval
Data retrieval
edgeR
Score explanation
Floating-point precisionThe pseudobulk matrix and edgeR statistics match the benchmark target; the tiny difference from 1.000 comes only from numeric serialization.Evidence. All 1,429 genes and all 49 significant calls matched; the differential-expression component scored 0.999999999172.