Skip to content

Reimplement handling of sequencing applications (platform/library combinations) - #1112

Merged
pjbriggs merged 17 commits into
develfrom
reimplement-platforms-and-libraries
Dec 9, 2025
Merged

pjbriggs merged 17 commits into
develfrom
reimplement-platforms-and-libraries

Conversation

@pjbriggs

@pjbriggs pjbriggs commented Nov 5, 2025

Copy link
Copy Markdown
Member

Major update of how sequencing applications (combinations of platforms and library types, e.g. 10x Chromium 3' and scRNA-seq) are handled.

Specifically, remove the hard-coded logic used in different places to determine appropriate setup actions, QC protocols etc for a given sequencing application, and instead put all the information into a single place from where those things can be looked up wherever needed.

This aims to generalise things like QC protocol determination and analysis project directory setup, to make them more robust and easier to maintain, since adding new sequencing applications should not require modifying the relevant functions. Instead information about new applications should only need to be added in one place in the code (the new applications module).

The changes include:

  • Creating a new applications module, with information about sequencing applications held in a list of dictionaries plus supporting functions to enable look up of information for specific platform/library combinations (nb this replaces the old applications module, which has been refactored into a new apps module);
  • Updating the QC protocol determination (in the determine_qc_protocol_from_metadata function in the qc/protocols module) to look up QC protocols from the application data (nb this has resulted in some slight changes to which protocols are returned for legacy single cell data);
  • Upating the setup_analysis_dirs command (implemented in the commands\setup_analysis_dirs_cmd module) to look up which template file (e.g. 10x_multi_config.csv.template files) and subdirectory creation actions are required, from the application data.
  • Overhaul of documentation listing Fastq generation and QC protocols, and tables of permissible single cell/spatial platform & library combinations, to generate these automatically from the source code (closes Automate generation of documentation for protocols for Fastq generation and QC #1107).

As part of this PR updated nomenclature for various 10x single cell applications has also been implemented (closes #1041), whilst maintaining backwards compatibility with the existing nomenclature.

The PR also obsoletes the proposed changes in #1062.

Creates new module "bcl2fastq.apps" and moves (and refactors) the Bcl to Fastq conversion command generators from "applications".

Also updates "bcl2fastq.pipeline" to use the relocated versions of the functions.
Renames the 'applications' module to 'apps', and updates imports elsewhere to accommodate the new name.
Adds a new module 'applications', which collects information about sequencing applications (combinations of platform and library types) and associated Fastq generation and QC protocols.

The module also includes functions for looking up the informaton about a specific platform.
…plications' module.

Updates the 'determine_qc_protocol_from_metadata' function to remove hard-coded QC protocol determination, and look-up protocol from the matching application data instead.
Updates the 'setup_analysis_dirs' command to remove hard-coded logic for determining whether to create template files or subdirectories, and instead look up this information from the matching application data.
Adds a new function 'fetch_application_data' which returns subsets of application definitions matching specified tags.
…n protocols.

Updates the description text for some of the Fastq generation protocols for 10x Genomics data, to make automatically generated documentation more concise.
…ata.

Adds a placeholder Fastq generation protocol for 10x single cell multiome data where ATAC and GEX have been pooled in the same run; the placeholder enables the unpooled Fastq generation protocol to be added to automatically generated documentation.
Updates the Sphinx 'conf.py' file and associated RST files to put the subdir for automatically generated tables (e.g. Fastq generation and QC protocols) under the top-level documentation dir.
…ables.

Updates Sphinx 'conf.py' to auto-generate tables of allowed platform/library combinations that are included in the single cell and spatial documentation; also auto-generate the tables of Fastq generation protocols for 10x single cell and spatial.
@pjbriggs
pjbriggs force-pushed the reimplement-platforms-and-libraries branch from 269dc29 to e1d9a0a Compare November 19, 2025 11:55
Drops the (unimplemented) '10x_Visium_GEX_75bp_insert' QC protocol from the application definition for 10x Visium (CytAssist) HD 3' GEX, and specifies '10x_Visium_GEX' instead.

 This should be sufficient if the reads are trimmed to the correct lengths at the Fastq generation stage.
…ocols.

Update the read lengths reported for each protocol in the 'make_fastqs' documentation, to include the I1 and I2 read lengths (if defined).
…s' doc.

Update the title of the 'Reads' column in the table of Fastq generation protocols.
@pjbriggs
pjbriggs merged commit 98010e9 into devel Dec 9, 2025
7 checks passed
@pjbriggs
pjbriggs deleted the reimplement-platforms-and-libraries branch December 9, 2025 09:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

1 participant