feat(egv-202): replace samplesheet presets with single/paired/hybrid/assembled defaults#829
Open
diegomayorga-dept wants to merge 1 commit into
Open
feat(egv-202): replace samplesheet presets with single/paired/hybrid/assembled defaults#829diegomayorga-dept wants to merge 1 commit into
diegomayorga-dept wants to merge 1 commit into
Conversation
…assembled defaults
Kevin Loftus (kevin-loftus-dept)
approved these changes
Jul 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title*
Replace samplesheet schema presets with single/paired/hybrid/assembled defaults
Type of Change*
Description
The Data Collection builder lets users pick a samplesheet schema preset — a named set of columns, each mapped to a semantic role (
sample_id,read1, etc.) — that defines the CSV a pipeline run consumes. The presets were developer-named (nf_core_paired_end,nf_core_single_end,long_read,paired_end_with_reference) and the picker rendered labels by naively replacing underscores with spaces (e.g. "nf core paired end").The client (Kelsey) provided the four schemas they actually use, with example CSVs, and the names they should carry. This PR replaces the presets with those four and gives them clean display labels:
sample→sample_id ·fastq→readssample→sample_id ·fastq_1→read1 ·fastq_2→read2sample→sample_id ·fastq→reads ·fastq_1→read1 (optional) ·fastq_2→read2 (optional)sample→sample_id ·fasta→assembly_fastaKey changes:
assembly_fastacolumn role (Zod enum, TS union, and role label map) for theassembledschema — itsfastais the sample's own assembly, not a reference genome, so reusingreference_fastawould be semantically wrong and collide with the reference role used by the paired-with-extras path.SAMPLE_SHEET_SCHEMA_PRESETSand added an explicitSAMPLE_SHEET_SCHEMA_PRESET_LABELSmap so the picker shows proper Title Case instead of underscore-stripped keys.reads←read1fallback inbuildSampleSheetRowFromRoleMapso thesinglepreset'sfastqcolumn populates whether a sample is detected as single-end (setsread1) or long-read (setsreads).EGAddToDataCollectionModal.vue,EGDataCollectionBuilder.vue) to default topairedand to render labels from the new label map.Related: EGV-202.
Testing*
data-collection-sample-sheet.test.ts): 16/16 pass. Added assertions that exactly the four presets exist with the expected columns/roles/labels, and a test verifying thesinglepreset fills itsfastqcolumn from a single-end sample via theread1fallback. Renamed the paired-end build test to use the newpairedpreset.Impact
Paired(identical shape); old single-end / long-read collections now display as Custom, which is expected.Additional Information
Out of scope by design: auto-detecting
hybrid(long + short reads) andassembled(FASTA-only) sample layouts from uploaded S3 files. Those layouts originate in the file-grouping regex engine (sample-regex-grouping.ts), which was explicitly excluded from this change. The two presets are still fully usable as templates — the correct columns appear and rows populate from manually-built samples or CSV import; wiring up auto-detection is deferred to the separate regex/grouping ticket.Checklist*
reads←read1fallback carries an explanatory comment)