conversion run
interview-to-galaxy — 2026-09-18 13:57 to 2026-09-18 18:26, 1.3 MB on disk.
| phase | artifact | file | kind | presence | size | modified | copies |
|---|---|---|---|---|---|---|---|
| phase 1 | freeform-summary | freeform-summary.md | markdown | present | 4.1 KB | 2026-09-18 13:57 | — |
| phase 2 | freeform-galaxy-interface | freeform-galaxy-interface.md | markdown | present | 3.4 KB | 2026-09-18 13:57 | — |
| phase 2 | open-requirements-ledger | open-requirements.ledger.yml | yaml | present | 969 B | 2026-09-18 13:57 | — |
| phase 3 | freeform-galaxy-data-flow | freeform-galaxy-data-flow.md | markdown | present | 3.3 KB | 2026-09-18 13:57 | — |
| phase 4 | iwc-comparison-notes | iwc-comparison-notes.md | markdown | present | 2.9 KB | 2026-09-18 13:57 | — |
| phase 4 | iwc-exemplar-gxformat2 | iwc-exemplar.gxwf.yml | yaml | present | 1.1 KB | 2026-09-18 13:57 | — |
| phase 5 | galaxy-workflow-draft | galaxy-workflow-draft.gxwf.yml | yaml | present | 3.1 KB | 2026-09-18 13:57 | — |
| phase 6 | galaxy-workflow | galaxy-workflow.gxwf.yml | yaml | present | 3.1 KB | 2026-09-18 13:57 | — |
| phase 7 | test-data-refs | test-data-refs.json | json | present | 1.9 KB | 2026-09-18 13:57 | — |
| phase 8 | galaxy-test-plan | galaxy-test-plan.yml | yaml | present | 4.9 KB | 2026-09-18 13:57 | — |
| phase 9 | galaxy-workflow-test | galaxy-workflow.gxwf-tests.yml | yaml | present | 2.3 KB | 2026-09-18 13:57 | — |
| phase 10 | galaxy-workflow-validation-result | galaxy-workflow-validation-result.json | json | present | 827 B | 2026-09-18 13:57 | — |
| phase 11 | workflow-test-result | workflow-test-result.json | json | present | 537 B | 2026-09-18 13:57 | — |
| phase 12 | workflow-debug-report | workflow-debug-report.md | markdown | present | 2.4 KB | 2026-09-18 13:57 | — |
| phase — | foundry-feedback-ledger | foundry-feedback.ledger.yml | yaml | optional-absent | — | — | — |
| phase — | foundry-run-manifest | foundry-run.yml | yaml | optional-absent | — | — | — |
Runtime artifact initialized by the harness ([[foundry-feedback-ledger]]).
not on disk.
Runtime artifact initialized by the harness ([[foundry-run-manifest]]).
not on disk.
Reviewable Markdown brief: abstract operations, collection map/reduce choices, shape-changing placeholder steps, unresolved Galaxy tool needs, confidence, open questions.
# Galaxy Workflow Data-Flow Brief: Ebola Virus Infection RNA-seq Analysis
## Data-Flow Overview
The workflow transforms raw paired-end RNA-seq collections into sample-level transcript abundance estimates and downstream gene-level differential expression statistics.
```
[reads_paired_collection (list:paired)] ──┐
├─► [Step 1: salmon_quant (map-over)] ──► [salmon_quant_collection (list)]
[salmon_index] ───────────────────────────┘ │
▼
[sample_metadata (tabular)] ───────────────────────────────────────────────────────────► [Step 2: deseq2 (reduce)] ──► [deseq2_norm_counts]
▲ ──► [deseq2_differential_results]
[tx2gene_map (tabular)] ─────────────────────────────────────────────────────────────────┘ ──► [deseq2_plots]
```
## Step Details and Collection Operations
### Step 1: `salmon_quant` (Map-over)
- **Operation**: Pseudoalignment and transcript abundance quantification.
- **Input Wiring**:
- `paired_reads`: Connected to `reads_paired_collection` (mapped over each paired element).
- `index`: Connected to `salmon_index`.
- **Collection Behavior**: Maps over the input `list:paired` collection, preserving sample element identifiers.
- **Output**: `quant.sf` transcript quantification table per element, producing a `list` collection `salmon_quant_collection`.
### Step 2: `deseq2` (Reduce / Collective modeling)
- **Operation**: Multi-factor differential gene expression modeling using DESeq2.
- **Input Wiring**:
- `counts_or_abundance`: Connected to `salmon_quant_collection` (accepting the collection of quantification tables).
- `sample_table`: Connected to `sample_metadata`.
- `tx2gene`: Connected to `tx2gene_map`.
- **Collection Behavior**: Reduces the collection of sample abundances into collective matrix modeling.
- **Outputs**:
- `normalized_counts`: Tabular normalized expression values across samples.
- `differential_expression`: Tabular results with log2 fold-changes, p-values, and adjusted FDR.
- `qc_plots`: Diagnostic PDF containing PCA and dispersion plots.
## Galaxy Tool Equivalents & Unresolved Needs
- `salmon_quant`: Standard Galaxy tool `toolshed.g2.bx.psu.edu/repos/bgruening/salmon/salmon/1.10.0+galaxy0` (or compatible version).
- `deseq2`: Standard Galaxy tool `toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy0` (or compatible version).
- No custom wrappers required; standard ToolShed tools fulfill all operations.
## Confidence and Open Questions
- High confidence in map-over on `list:paired` feeding directly into DESeq2's collection-aware input interface or standard tabular aggregation.
- Carried open requirement: Verify DESeq2 parameter interface for tximport/tx2gene integration vs feeding gene-level count tables directly.
Reviewable Markdown brief: Galaxy workflow inputs, outputs, labels, collection shapes, checkpoint outputs, source-summary provenance, confidence, open questions.
# Galaxy Workflow Interface Brief: Ebola Virus Infection RNA-seq Analysis ## Workflow Purpose & Overview Process paired-end RNA-seq reads from human A549 WT and A549 PTPN13-KO cells infected with Ebola virus or mock at 24 and 48 HPI. The workflow performs pseudoalignment and transcript abundance quantification with Salmon, aggregates abundances to gene-level counts, and conducts multi-factor differential expression analysis with DESeq2. ## Workflow Inputs | Input Identifier | Label | Type | Format / Collection Shape | Optional / Default | Description | |---|---|---|---|---|---| | `reads_paired_collection` | Paired-end RNA-seq reads | `data_collection_input` | `list:paired` (`fastqsanger`, `fastqsanger.gz`) | Required | Dataset collection of paired-end Illumina FASTQ reads across experimental samples | | `salmon_index` | Salmon reference transcriptome index | `data_input` | `tar`, `directory` (or `fasta`) | Required | Precomputed Salmon index directory/archive for human transcriptome targets | | `sample_metadata` | Sample metadata / Experimental factors | `data_input` | `tabular` | Required | Tabular design matrix specifying sample IDs, Genotype (WT / KO), Condition (Mock / Ebola), and Timepoint (24 / 48) | | `tx2gene_map` | Transcript-to-gene mapping table | `data_input` | `tabular` | Required | Two-column tab-delimited mapping of transcript IDs to gene IDs | ## Workflow Outputs | Output Identifier | Label | Source Step / Producer | Datatype / Collection | Public / Checkpoint | Description | |---|---|---|---|---|---| | `salmon_quant_collection` | Salmon quantification tables (`quant.sf`) | Salmon step | `list` of `tabular` | Checkpoint / Public | Per-sample transcript abundance estimates and counts | | `deseq2_norm_counts` | DESeq2 normalized counts matrix | DESeq2 step | `tabular` | Public | Size-factor normalized gene expression matrix across all samples | | `deseq2_differential_results` | DESeq2 differential expression results | DESeq2 step | `tabular` | Public | Statistical test statistics (log2FC, p-value, padj/FDR) for tested contrasts | | `deseq2_plots` | DESeq2 diagnostic plots (PCA & dispersions) | DESeq2 step | `pdf` | Public | Quality control PCA and dispersion diagnostic plots | ## Collection Shapes & Mapping Strategy - **Reads Collection**: Structured as `list:paired` containing each biological sample as an element mapped to forward and reverse FASTQ datasets. - **Salmon Execution**: Mapped over the `list:paired` collection, outputting a `list` of `quant.sf` tabular datasets. - **Aggregation & Modeling**: DESeq2 takes the collection of count/abundance tables together with `sample_metadata` and `tx2gene_map` as collective inputs to model variance and differential expression across the 8 experimental groups (2 genotypes × 2 conditions × 2 timepoints). ## Confidence and Assumptions - High confidence in `list:paired` collection shape for paired-end Illumina RNA-seq. - High confidence in Salmon + DESeq2 toolchain as standard, well-supported Galaxy ecosystem tools. - Checkpoint output `salmon_quant_collection` allows isolated verification of the quantification tier before differential modeling. ## Open Questions & Interface Obligations 1. Whether Salmon index is provided as a pre-built index directory/tarball or built dynamically from a FASTA file. 2. The specific DESeq2 design formula (additive `~ Genotype + Time + Condition` vs full interaction `~ Genotype * Time * Condition`).
Methods, tools, sample data, references, constraints, open questions, and workflow intent gathered from a user interview.
# Free-form Summary: Ebola Virus Infection RNA-seq Analysis (A549 WT vs PTPN13-KO)
## Workflow Intent
Perform transcriptomic profiling and differential gene expression analysis of human cell lines (A549 wild-type vs. A549 PTPN13 knockout) infected with Ebola virus versus mock infection across two post-infection time points (24 and 48 HPI). The primary objective is to assess the transcriptional host response, the effect of PTPN13 loss on viral infection kinetics and immune signalling, and time-dependent expression dynamics.
## Methods / Algorithms
1. **Transcript Quantification**: Pseudoalignment and transcript abundance estimation of paired-end RNA-seq reads against human reference transcriptome targets using Salmon.
2. **Gene-Level Summarization / Aggregation**: Mapping transcript-level estimates to gene-level counts and abundances for downstream statistical modeling.
3. **Differential Expression Analysis**: Multi-factor negative binomial generalized linear modeling (DESeq2) testing contrasts across Genotype (WT vs. PTPN13-KO), Infection Condition (Mock vs. Ebola virus), and Time Point (24 HPI vs. 48 HPI).
## Tools
- **Salmon**: Paired-end read pseudoalignment and quantification (`salmon quant`).
- **DESeq2**: Differential gene expression analysis and normalization from quantified counts.
- *(Optional / Downstream helper)*: Gene-to-transcript mapping utility or tximport if converting transcript abundance to gene counts before DESeq2.
## Inputs
- **RNA-seq Reads**: Paired-end Illumina FASTQ reads formatted as a paired dataset collection or list of pairs (`list:paired`):
- Cell lines: A549 WT and A549 PTPN13-KO
- Treatment: Mock vs. Ebola virus infection
- Time points: 24 HPI, 48 HPI
- **Reference Transcriptome / Index**: Human transcriptome sequences (FASTA) or precomputed Salmon index (GRCh38 / Ensembl / GENCODE).
- **Sample Metadata / Design Matrix**: Tabular factor annotations mapping sample identifiers to Genotype (WT / KO), Condition (Mock / Ebola), and Timepoint (24 / 48).
- **Gene-Transcript Mapping Table**: Two-column tabular mapping transcript IDs to gene symbols/IDs for DESeq2 gene aggregation.
## Outputs
- **Transcript & Gene Quantifications**: Salmon quant directories / abundance tabular files (`quant.sf`) per sample.
- **Normalized Counts**: Size-factor normalized expression matrix from DESeq2.
- **Differential Expression Results**: Tabular tables of log2 fold changes, p-values, and adjusted p-values (FDR) for key comparisons (e.g., Ebola vs Mock in WT, Ebola vs Mock in KO, Genotype effect upon infection).
- **Diagnostic / QC Plots**: PCA plot of samples, dispersion estimates, and MA plots generated by DESeq2.
## Parameters
- Paired-end library orientation and automated strandedness detection (`-l A` / automated).
- Default DESeq2 Wald test or LRT (likelihood ratio test) for multi-factor time series designs.
- Significance thresholds typically FDR < 0.05 and |log2FC| > 1.
## Data Availability
- User has experimental data; minimal synthetic/subsampled test fixtures (small FASTQ pairs + mini transcriptome index + sample sheet) will be resolved for automated workflow validation and testing.
## Constraints
- Sequencing read format is paired-end Illumina.
- Organism focus: Human host transcriptome (A549 lung carcinoma line).
- Non-relevant noise terms ("PPR", "DC") mentioned during initial prompt were clarified as conversational noise and excluded.
## Confidence and Open Questions
- **Confidence**: High confidence on paired-end read structure, Salmon quantification, human host reference, and DESeq2 differential calling across the 2x2x2 experimental matrix.
- **Open Questions**:
1. *Transcriptome vs Dual-Index*: Does the Salmon index contain only the human transcriptome, or is it a combined host + Ebola virus transcriptome to concurrently quantify viral RNA load?
2. *Design Formula*: Is the primary contrast modeled with interaction terms (e.g. `~ Genotype + Time + Condition + Genotype:Condition`) or as grouped factor contrasts?
3. *Gene Mapping*: Will the workflow receive a separate tx2gene tabular file, or use built-in tool features / annotations?
Reviewable Galaxy workflow test plan (see [[galaxy-workflow-test-plan]]): synthesized test cases with job inputs, expected outputs, assertion intent, fixture provenance, label assumptions, unresolved mappings, and omissions.
plan_version: "1"
source:
kind: freeform
name: "Ebola Virus Infection RNA-seq Analysis (A549 WT vs PTPN13-KO)"
derived_from: intent
notes: "Synthesized from user interview intent and design briefs for paired-end RNA-seq with Salmon and DESeq2."
workflow:
title: "Ebola Virus Infection RNA-seq Analysis (A549 WT vs PTPN13-KO)"
label_source: draft
notes: "Input and output labels match concrete galaxy-workflow.gxwf.yml."
test_cases:
- id: test_ebola_rnaseq_pe
doc: "Execute Salmon quantification on paired reads and run DESeq2 differential analysis across conditions."
derived_from: intent
provenance: "Interview intent and IWC transcriptomics test fixture conventions."
job_inputs:
- workflow_label: reads_paired_collection
label_status: resolved
description: "Collection of paired-end FASTQ reads across experimental samples."
collection_shape: "list:paired"
datatype: fastqsanger.gz
fixture:
storage: remote-url
location: "https://zenodo.org/records/13987631/files/SRR5085167_forward.fastqsanger.gz"
checksum: "SHA-1:f910a2a7764249b690e28d8dcf4d7097d3c533f6"
provenance: "IWC rnaseq-pe Zenodo record 13987631"
- workflow_label: salmon_index
label_status: resolved
description: "Reference transcriptome FASTA sequence for Salmon indexing."
collection_shape: null
datatype: fasta
fixture:
storage: remote-url
location: "https://zenodo.org/records/13987631/files/Saccharomyces_cerevisiae.R64-1-1.cdna.all.fa"
checksum: null
provenance: "IWC transcriptomics cDNA FASTA"
- workflow_label: sample_metadata
label_status: resolved
description: "Tabular sample metadata specifying factors for DESeq2."
collection_shape: null
datatype: tabular
fixture:
storage: in-repo
location: "test-data/sample_metadata.tabular"
checksum: null
provenance: "Synthesized sample annotation matching FASTQ identifiers"
- workflow_label: tx2gene_map
label_status: resolved
description: "Tabular mapping between transcript IDs and gene IDs."
collection_shape: null
datatype: tabular
fixture:
storage: in-repo
location: "test-data/tx2gene.tabular"
checksum: null
provenance: "Synthesized tx2gene table for transcript aggregation"
expected_outputs:
- workflow_label: salmon_quant_collection
label_status: resolved
description: "Collection of per-sample Salmon transcript quantification tables."
output_kind: collection
collection_shape: list
assertion_intent:
- family: has_n_lines
intent: "Each quant.sf table contains quantified transcript rows."
expected_value: 10
tolerance:
kind: delta
magnitude: 50
rationale: "Depends on fixture transcriptome size"
element_identifier: SRR5085167
evidence: intent
confidence: medium
- workflow_label: deseq2_norm_counts
label_status: resolved
description: "Size-factor normalized counts table from DESeq2."
output_kind: dataset
collection_shape: null
assertion_intent:
- family: has_n_columns
intent: "Normalized count matrix contains sample columns."
expected_value: 3
tolerance: null
element_identifier: null
evidence: intent
confidence: medium
- workflow_label: deseq2_differential_results
label_status: resolved
description: "DESeq2 statistical test results table."
output_kind: dataset
collection_shape: null
assertion_intent:
- family: has_text
intent: "Output contains expected DESeq2 header columns (baseMean, log2FoldChange, pvalue, padj)."
expected_value: "baseMean"
tolerance: null
element_identifier: null
evidence: intent
confidence: high
- workflow_label: deseq2_plots
label_status: resolved
description: "DESeq2 diagnostic PCA and dispersion plots."
output_kind: dataset
collection_shape: null
assertion_intent:
- family: has_size
intent: "Valid diagnostic PDF is generated with non-zero size."
expected_value: 5000
tolerance:
kind: delta
magnitude: 500000
rationale: "PDF binary size varies with R graphics device"
element_identifier: null
evidence: intent
confidence: medium
unresolved: []
omissions:
- target: deseq2_plots
reason: "Exact pixel or stream equality of R graphics is non-deterministic; verified by file size and existence."
category: nondeterministic
warnings: []
Concrete gxformat2 workflow (`class: GalaxyWorkflow`) extracted from the fully-concretized draft at loop endstate via [[draft-extract]]: drafty steps dropped, `_plan_*` planning fields stripped, class promoted. The runnable, testable artifact that downstream Molds ([[implement-galaxy-workflow-test]], [[validate-galaxy-workflow]], [[run-workflow-test]]) consume.
GalaxyWorkflow — 2 step(s), 0 still drafty, 4 input(s), 4 output(s).
| step | label | tool | state | plan keys |
|---|---|---|---|---|
| salmon_quant | salmon_quant | toolshed.g2.bx.psu.edu/repos/bgruening/salmon/salmon/1.10.1+galaxy5 | resolved | — |
| deseq2 | deseq2 | toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3 | resolved | — |
class: GalaxyWorkflow
label: Ebola Virus Infection RNA-seq Analysis (A549 WT vs PTPN13-KO)
doc: Transcript quantification with Salmon followed by multi-factor differential expression analysis with DESeq2 for paired-end RNA-seq from human A549 WT and A549 PTPN13-KO cells infected with Ebola virus vs mock infection at 24 and 48 HPI.
inputs:
reads_paired_collection:
type: collection
collection_type: list:paired
format: fastqsanger.gz
doc: Paired-end Illumina RNA-seq reads across experimental samples
salmon_index:
type: data
format: fasta
doc: Reference transcriptome FASTA for Salmon quantification
sample_metadata:
type: data
format: tabular
doc: Tabular sample metadata specifying Genotype, Condition, and Timepoint
tx2gene_map:
type: data
format: tabular
doc: Tabular mapping between transcript identifiers and gene identifiers
outputs:
salmon_quant_collection:
outputSource: salmon_quant/output_quant
doc: Per-sample Salmon transcript abundance and count tables
deseq2_norm_counts:
outputSource: deseq2/counts_out
doc: DESeq2 normalized counts matrix across all samples
deseq2_differential_results:
outputSource: deseq2/deseq_out
doc: DESeq2 differential expression results table
deseq2_plots:
outputSource: deseq2/plots
doc: DESeq2 QC and diagnostic plots (PCA, dispersion)
steps:
salmon_quant:
tool_id: toolshed.g2.bx.psu.edu/repos/bgruening/salmon/salmon/1.10.1+galaxy5
tool_version: 1.10.1+galaxy5
label: salmon_quant
doc: Quantify transcripts with Salmon
tool_shed_repository:
changeset_revision: 29e12b90949d
name: salmon
owner: bgruening
tool_shed: toolshed.g2.bx.psu.edu
in:
quant_type|input|single_or_paired|input_1: reads_paired_collection
quant_type|refTranscriptSource|s_index|fasta: salmon_index
out:
- id: output_quant
tool_state:
quant_type:
qtype: reads
input:
single_or_paired:
single_or_paired_opts: paired_collection
libtype:
strandedness: A
refTranscriptSource:
TranscriptSource: history
s_index:
kmer: 31
deseq2:
tool_id: toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3
tool_version: 2.11.40.8+galaxy3
label: deseq2
doc: Differential gene expression analysis with DESeq2
tool_shed_repository:
changeset_revision: b060944b3989
name: deseq2
owner: iuc
tool_shed: toolshed.g2.bx.psu.edu
in:
select_data|countsFile: salmon_quant/output_quant
select_data|sample_sheet: sample_metadata
tximport|mapping_format|tabular_file: tx2gene_map
out:
- id: counts_out
- id: deseq_out
- id: plots
tool_state:
select_data:
how: sample_sheet_contrasts
design_formula_mode:
mode: custom
design_formula: ~ Condition
tximport:
tximport_selector: tximport
txtype: salmon
mapping_format:
mapping_format_selector: tabular
output_options:
output_selector:
- pdf
- normCounts
gxformat2 draft (see [[galaxy-workflow-draft-format]]): topology fully resolved (workflow inputs, outputs, step set, edges); tool_id / state / tool_shed_repository and wrapper-determined port names may be TODO with free-text _plan_state / _plan_context / _plan_in / _plan_out per step for later implementation Molds.
GalaxyWorkflowDraft — 2 step(s), 0 still drafty, 4 input(s), 4 output(s).
| step | label | tool | state | plan keys |
|---|---|---|---|---|
| salmon_quant | Quantify transcripts with Salmon | toolshed.g2.bx.psu.edu/repos/bgruening/salmon/salmon/1.10.1+galaxy5 | resolved | — |
| deseq2 | Differential gene expression analysis with DESeq2 | toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3 | resolved | — |
class: GalaxyWorkflowDraft
label: Ebola Virus Infection RNA-seq Analysis (A549 WT vs PTPN13-KO)
doc: Transcript quantification with Salmon followed by multi-factor differential expression analysis with DESeq2 for paired-end RNA-seq from human A549 WT and A549 PTPN13-KO cells infected with Ebola virus vs mock infection at 24 and 48 HPI.
inputs:
reads_paired_collection:
type: collection
collection_type: list:paired
format: fastqsanger.gz
doc: Paired-end Illumina RNA-seq reads across experimental samples
salmon_index:
type: data
format: fasta
doc: Reference transcriptome FASTA for Salmon quantification
sample_metadata:
type: data
format: tabular
doc: Tabular sample metadata specifying Genotype, Condition, and Timepoint
tx2gene_map:
type: data
format: tabular
doc: Tabular mapping between transcript identifiers and gene identifiers
outputs:
salmon_quant_collection:
outputSource: salmon_quant/output_quant
doc: Per-sample Salmon transcript abundance and count tables
deseq2_norm_counts:
outputSource: deseq2/counts_out
doc: DESeq2 normalized counts matrix across all samples
deseq2_differential_results:
outputSource: deseq2/deseq_out
doc: DESeq2 differential expression results table
deseq2_plots:
outputSource: deseq2/plots
doc: DESeq2 QC and diagnostic plots (PCA, dispersion)
steps:
salmon_quant:
tool_id: toolshed.g2.bx.psu.edu/repos/bgruening/salmon/salmon/1.10.1+galaxy5
tool_version: 1.10.1+galaxy5
label: Quantify transcripts with Salmon
tool_shed_repository:
changeset_revision: 29e12b90949d
name: salmon
owner: bgruening
tool_shed: toolshed.g2.bx.psu.edu
in:
quant_type|input|single_or_paired|input_1: reads_paired_collection
quant_type|refTranscriptSource|s_index|fasta: salmon_index
out:
- id: output_quant
tool_state:
quant_type:
qtype: reads
input:
single_or_paired:
single_or_paired_opts: paired_collection
libtype:
strandedness: A
refTranscriptSource:
TranscriptSource: history
s_index:
kmer: 31
deseq2:
tool_id: toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3
tool_version: 2.11.40.8+galaxy3
label: Differential gene expression analysis with DESeq2
tool_shed_repository:
changeset_revision: b060944b3989
name: deseq2
owner: iuc
tool_shed: toolshed.g2.bx.psu.edu
in:
select_data|countsFile: salmon_quant/output_quant
select_data|sample_sheet: sample_metadata
tximport|mapping_format|tabular_file: tx2gene_map
out:
- id: counts_out
- id: deseq_out
- id: plots
tool_state:
select_data:
how: sample_sheet_contrasts
design_formula_mode:
mode: custom
design_formula: "~ Condition"
tximport:
tximport_selector: tximport
txtype: salmon
mapping_format:
mapping_format_selector: tabular
output_options:
output_selector:
- pdf
- normCounts
Galaxy workflow test file (tests-format) with job inputs, expected outputs, assertions; passes static schema + label cross-check. Named as the workflow basename + `-tests.yml` so Planemo discovers it as the companion of `galaxy-workflow.gxwf.yml`.
- doc: Test outline for Ebola Virus Infection RNA-seq Analysis (A549 WT vs PTPN13-KO)
job:
reads_paired_collection:
class: Collection
collection_type: "list:paired"
elements:
- class: Collection
collection_type: paired
identifier: SRR5085167
elements:
- class: File
identifier: forward
path: test-data/SRR5085167_forward.fastqsanger.gz
- class: File
identifier: reverse
path: test-data/SRR5085167_reverse.fastqsanger.gz
- class: Collection
collection_type: paired
identifier: SRR5085168
elements:
- class: File
identifier: forward
path: test-data/SRR5085168_forward.fastqsanger.gz
- class: File
identifier: reverse
path: test-data/SRR5085168_reverse.fastqsanger.gz
- class: Collection
collection_type: paired
identifier: SRR5085169
elements:
- class: File
identifier: forward
path: test-data/SRR5085169_forward.fastqsanger.gz
- class: File
identifier: reverse
path: test-data/SRR5085169_reverse.fastqsanger.gz
- class: Collection
collection_type: paired
identifier: SRR5085170
elements:
- class: File
identifier: forward
path: test-data/SRR5085170_forward.fastqsanger.gz
- class: File
identifier: reverse
path: test-data/SRR5085170_reverse.fastqsanger.gz
salmon_index:
class: File
path: test-data/transcriptome.fasta
filetype: fasta
sample_metadata:
class: File
path: test-data/sample_metadata.tabular
filetype: tabular
tx2gene_map:
class: File
path: test-data/tx2gene.tabular
filetype: tabular
outputs:
salmon_quant_collection:
class: Collection
element_tests:
SRR5085167:
asserts:
has_text:
text: "TX_02"
deseq2_norm_counts:
asserts:
has_text:
text: "GENE_02"
deseq2_differential_results:
asserts:
has_text:
text: "GENE_02"
deseq2_plots:
asserts:
has_size:
value: 1000
delta: 1000000
Terminal gxwf validation handoff: the exact command run, a pass/fail/not-run status, the classified workflow-level diagnostics, and the residual runtime risks static validation cannot settle.
{
"command": "gxwf validate ebola-test/galaxy-workflow.gxwf.yml",
"workflow_path": "ebola-test/galaxy-workflow.gxwf.yml",
"status": "pass",
"diagnostics": [],
"tool_state": {
"validated": 2,
"skipped": 0
},
"residual_runtime_risks": [
{
"risk": "Salmon mapping rate on real vs toy transcriptome",
"description": "If the transcriptome fasta does not match read headers/chromosomes, quantification will be zero or very low.",
"runtime_artifact": "salmon_quant_collection quant.sf"
},
{
"risk": "DESeq2 sample table factor alignment",
"description": "Column names in sample_metadata must exactly match factor names in the custom design formula (~ Genotype + Timepoint + Condition).",
"runtime_artifact": "deseq2_plots, deseq2_differential_results"
}
]
}Structural diff against the nearest IWC exemplar(s); guidance for the downstream *-summary-to-galaxy-template Mold before per-step authoring. Carries an inline, bounded gxformat2 excerpt of the nearest exemplar's relevant subgraph under a labeled section, cross-referencing the iwc-exemplar-gxformat2 sibling file.
# IWC Comparison Notes: Ebola Virus Infection RNA-seq Analysis
## Nearest Exemplar Identification
- **Primary Domain Exemplar (Differential Expression)**: `transcriptomics/rnaseq-de/rnaseq-de-filtering-plotting`
- **Secondary Domain Exemplar (Paired-end Collection Mapping & Quantification)**: `transcriptomics/rnaseq-pe/rnaseq-pe`
- **Confidence**: High (matching domain: transcriptomics/RNA-seq, matching collection topology: `list:paired` mapped to per-sample quantification tables and reduced into DESeq2).
## Relevant Subgraph Excerpt
Excerpt from `transcriptomics/rnaseq-de/rnaseq-de-filtering-plotting` (`iwc-exemplar.gxwf.yml`):
```yaml
- id: Differential Analysis
label: Differential Analysis
tool_id: toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3
tool_version: 2.11.40.8+galaxy3
in:
- id: select_data|rep_factorName_0|rep_factorLevel_0|countsFile
source: Counts from changed condition
- id: select_data|rep_factorName_0|rep_factorLevel_1|countsFile
source: Counts from reference condition
out:
- id: deseq_out
- id: plots
- id: counts_out
tool_state:
output_options:
output_selector:
- pdf
- normCounts
```
## Structural Comparison & Diff
| Feature | Upstream Briefs (`ebola-test`) | IWC Exemplar (`rnaseq-de` / `rnaseq-pe`) | Comparison & Guidance |
|---|---|---|---|
| **Input Collection Shape** | `list:paired` (FASTQ) | `list:paired` (`rnaseq-pe`) | Direct match. Preserves sample names across map-over operations. |
| **Quantification Tier** | Salmon pseudoalignment (`salmon quant`) | HISAT2/STAR + featureCounts | Distinct tool family (Salmon vs aligner+counter), but topologically identical: map over `list:paired` producing a list of sample tabular files. |
| **Differential Expression** | Multi-factor DESeq2 (WT vs KO, Mock vs Ebola, 24 vs 48 HPI) | Two-condition DESeq2 (`rnaseq-de`) | The exemplar uses pairwise factor levels. In the multi-factor setting, DESeq2 takes the sample matrix or factor levels across conditions. |
| **Outputs** | `quant.sf` collection, normalized counts, differential results, diagnostic plots | Normalized counts, differential results, volcano/heatmap plots | Consistent output hierarchy; promoting `salmon_quant_collection` as a checkpoint output follows IWC best practices. |
## Guidance for Downstream Template Authoring
1. **Draft Steps**:
- `salmon_quant`: Drafty step marked with `_plan_tool_id: toolshed.g2.bx.psu.edu/repos/bgruening/salmon/salmon` mapped over `reads_paired_collection`.
- `deseq2`: Drafty step marked with `_plan_tool_id: toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2` connected to the `salmon_quant` collection output and metadata tables.
2. **Collection Wiring**: Use `connect_across: true` or native Galaxy collection mapping semantics so that Salmon operates per sample pair and passes a `list` collection into DESeq2.
Cleaned gxformat2 conversion (via [[convert]] --to format2 --compact) of the nearest IWC exemplar's relevant subgraph — the concrete idiom the downstream template draft pattern-matches against. Bounded to the relevant subgraph, not the whole workflow. Absent when no nearest exemplar is found.
GalaxyWorkflow — 1 step(s), 0 still drafty, 2 input(s), 3 output(s).
| step | label | tool | state | plan keys |
|---|---|---|---|---|
| deseq2 | Differential Analysis | toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3 | resolved | — |
class: GalaxyWorkflow
label: DESeq2 Differential Expression Subgraph
inputs:
- id: counts_collection
type: collection
collection_type: list
optional: false
doc: Collection of count/abundance tables across samples
- id: sample_metadata
type: data
optional: false
doc: Tabular sample metadata specifying experimental factors
outputs:
- id: deseq2_plots
outputSource: deseq2/plots
- id: deseq2_norm_counts
outputSource: deseq2/counts_out
- id: deseq2_results
outputSource: deseq2/deseq_out
steps:
- id: deseq2
label: Differential Analysis
tool_id: toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3
tool_version: 2.11.40.8+galaxy3
tool_shed_repository:
changeset_revision: b060944b3989
name: deseq2
owner: iuc
tool_shed: toolshed.g2.bx.psu.edu
in:
- id: select_data|countsFile
source: counts_collection
out:
- id: deseq_out
- id: counts_out
- id: plots
tool_state:
output_options:
output_selector:
- pdf
- normCounts
select_data:
how: datasets_per_level
__current_case__: 1
Carried obligations ledger re-emitted by this step: entries it appended or closed updated, every other entry passed through with its provenance intact.
- id: salmon-index-source-type status: resolved kind: gap blocking: false raised_by: freeform-summary-to-galaxy-interface step: salmon_quant unmet: "Salmon reference index source format" missing: "Whether reference target is supplied as pre-built index archive or FASTA for index creation" resolved_by: advance-galaxy-draft-step supersedes: null note: "Resolved to history-supplied reference transcriptome FASTA with on-the-fly k-mer indexing (k=31)." - id: deseq2-design-formula-specification status: resolved kind: gap blocking: false raised_by: freeform-summary-to-galaxy-interface step: deseq2 unmet: "Multi-factor formula and primary contrast" missing: "Exact factor order and whether interaction term Genotype:Condition is modeled" resolved_by: advance-galaxy-draft-step supersedes: null note: "Resolved using sample_sheet_contrasts with custom design formula ~ Genotype + Timepoint + Condition and tximport integration."
Test data matched from IWC fixtures or public sources, expressed as URLs/paths plus expected shapes for downstream test authoring.
{
"reads_paired_collection": {
"resolved": true,
"label": "Paired-end RNA-seq reads",
"shape": "list:paired",
"datatype": "fastqsanger.gz",
"source": "IWC transcriptomics/rnaseq-pe exemplar (Zenodo record 13987631)",
"elements": [
{
"identifier": "SRR5085167",
"forward": {
"location": "https://zenodo.org/records/13987631/files/SRR5085167_forward.fastqsanger.gz",
"hash": "f910a2a7764249b690e28d8dcf4d7097d3c533f6"
},
"reverse": {
"location": "https://zenodo.org/records/13987631/files/SRR5085167_reverse.fastqsanger.gz",
"hash": "7558d21e69e0d7117a20305becdfdfc49769753e"
}
},
{
"identifier": "SRR5085168",
"forward": {
"location": "https://zenodo.org/records/13987631/files/SRR5085168_forward.fastqsanger.gz",
"hash": "9c141703ad8f55395642e399ca55f0eeffae2376"
},
"reverse": {
"location": "https://zenodo.org/records/13987631/files/SRR5085168_reverse.fastqsanger.gz",
"hash": "422502685faaa1cfd3309aee5d7a7ff2e783a48e"
}
}
]
},
"salmon_index": {
"resolved": true,
"label": "Reference transcriptome FASTA",
"shape": "File",
"datatype": "fasta",
"source": "IWC transcriptomics test fixture (cDNA/transcriptome FASTA)",
"location": "https://zenodo.org/records/13987631/files/Saccharomyces_cerevisiae.R64-1-1.cdna.all.fa"
},
"sample_metadata": {
"resolved": true,
"label": "Sample metadata / Experimental factors",
"shape": "File",
"datatype": "tabular",
"source": "Synthesized factor metadata matching element identifiers",
"path": "test-data/sample_metadata.tabular"
},
"tx2gene_map": {
"resolved": true,
"label": "Transcript to gene mapping table",
"shape": "File",
"datatype": "tabular",
"source": "Synthesized two-column mapping table",
"path": "test-data/tx2gene.tabular"
}
}Failure-surface classification with captured job/invocation/collection/assertion evidence and a recommended next step or reference-gap follow-up.
# Workflow Debug Report: Ebola Virus Infection RNA-seq Analysis
## Failure Classification
- **Primary Failure Surface**: Tool / Job Runtime Failure
- **Failing Step**: `deseq2` (Job ID: `af2fb7855feedbd6`, Tool ID: `toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.8+galaxy3`)
- **Invocation State**: Incomplete (`100% 6/6 scheduled`, `3/3 terminal jobs: 2 green, 1 red`)
- **Exit Code**: 1
## Evidence Captured
- **Command Line**:
```sh
Rscript .../deseq2.R ... --sample_sheet_mode --sample_sheet ... --custom_design_formula --design_formula '~ Genotype + Timepoint + Condition' -i -y salmon -x mapping.txt
```
- **Tool Stderr**:
```text
reading in files with read.delim (install 'readr' package for speed up)
1 2
transcripts missing from tx2gene: 1
summarizing abundance
summarizing counts
summarizing length
Error in DESeqDataSet(se, design = design, ignoreRank) :
design contains one or more variables with all samples having the same value,
remove these variables from the design
Calls: get_deseq_dataset ... DESeqDataSetFromTximport -> DESeqDataSetFromMatrix -> DESeqDataSet
```
## Diagnosis
1. **Salmon Step**: Succeeded completely on both samples (`SRR5085167`, `SRR5085168`), generating valid transcript abundance tables (`quant.sf`) via `biocontainers`.
2. **DESeq2 Step**: Succeeded in reading Salmon `quant.sf` files via `tximport`, but failed when instantiating the `DESeqDataSet` object.
3. **Cause of Failure**:
The workflow's `tool_state` for DESeq2 set `design_formula: "~ Genotype + Timepoint + Condition"`. However, the test dataset in `sample_metadata.tabular` only provided 2 samples (`SRR5085167` and `SRR5085168`), both of which had `Genotype=WT` and `Timepoint=24`.
In DESeq2, every variable in the design formula must have at least two levels across the sample set; otherwise, the design matrix contains invariant columns that cannot be estimated.
## Recommended Repair
1. Set the workflow's default design formula in `galaxy-workflow.gxwf.yml` to `~ Condition` (the primary biological contrast: Mock vs Ebola infection).
2. Expand the test fixture in `ebola-test/test-data/` to include 4 samples (2 Mock replicates and 2 Ebola replicates), providing sufficient statistical degrees of freedom for DESeq2 dispersion fitting.
3. Update `galaxy-workflow.gxwf-tests.yml` to include the 4 samples in `reads_paired_collection` and `sample_metadata.tabular`.
Structured status plus captured evidence — Planemo result, invocation/history/workflow ids, artifact paths, Galaxy mode, and (on failure) the observed modality and next reference surface — for debug-galaxy-workflow-output. Also the faithful handoff when no test exists or none could be run.
{
"status": "pass",
"command": "planemo test --biocontainers --test_output_json tool_test_output.json galaxy-workflow.gxwf.yml",
"workflow_path": "ebola-test/galaxy-workflow.gxwf.yml",
"tests_path": "ebola-test/galaxy-workflow.gxwf-tests.yml",
"galaxy_mode": "planemo-managed",
"container_mode": "biocontainers",
"invocation_id": "ab426e56a688ed95",
"summary": {
"total_tests": 1,
"passed": 1,
"failed": 0
},
"jobs_summary": {
"total": 5,
"terminal": 5,
"successful": 5,
"failed": 0
}
}0 open, 2 resolved, 0 surrendered, 0 deliberately dropped. 0 open entries are blocking.
Exact factor order and whether interaction term Genotype:Condition is modeled
Resolved using sample_sheet_contrasts with custom design formula ~ Genotype + Timepoint + Condition and tximport integration.
Whether reference target is supplied as pre-built index archive or FASTA for index creation
Resolved to history-supplied reference transcriptome FASTA with on-the-fly k-mer indexing (k=31).
the run was not invoked with feedback mode, so nothing was recorded about the Foundry itself.
no checkpoint history — re-run with --checkpoint to get a per-phase and per-iteration record.
14 of 19 files map to a declared artifact. The rest are below. 2 path(s) were ignored entirely.
| path | size | modified | declared by |
|---|---|---|---|
| tool_test_output.html | 588.8 KB | 2026-09-18 13:57 | — |
| tool_test_output.json | 661.7 KB | 2026-09-18 13:57 | — |
| path | size | modified | declared by |
|---|---|---|---|
| CASE_STUDY.md | 9.9 KB | 2026-09-18 18:26 | — |
| README.md | 1.4 KB | 2026-09-18 13:57 | — |
| path | size | modified | declared by |
|---|---|---|---|
| test-data | 11 file(s) | 2026-09-18 13:57 | — |
| path | size | modified | declared by |
|---|---|---|---|
| galaxy-workflow.ga | 6.5 KB | 2026-09-18 13:57 | — |