crisprseq icon indicating copy to clipboard operation
crisprseq copied to clipboard

samples instead of conditions in contrast

Open matbonfanti opened this issue 3 months ago • 8 comments

When running a MLE analysis from a precomputed count matrix and a contrast file, the pipeline does not work because in the changes of #252 the condition labels in the contrast file should be mapped to sample names using the samplesheet, but the samplesheet when the count matrix is provided can be omitted.

This can be tested with an input like:

count_table: "https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata/count_table.tsv"
analysis: 'screening'
contrasts: "https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata/rra_contrasts.txt"
outdir: "output"
mle: true

In this PR, the issue is fixed by assuming that in this case the contrast file contains sample labels instead of condition labels, hence omitting the mapping from conditions to samples.

PR checklist

  • [x] This comment contains a description of changes (with reason).
  • [x] If you've fixed a bug or added code that should be tested, add tests!
  • [x] If you've added a new tool - have you followed the pipeline conventions in the contribution docs
  • [x] If necessary, also make a PR on the nf-core/crisprseq branch on the nf-core/test-datasets repository.
  • [x] Make sure your code lints (nf-core pipelines lint).
  • [x] Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
  • [x] Check for unexpected warnings in debug mode (nextflow run . -profile debug,test,docker --outdir <OUTDIR>).
  • [x] Usage Documentation in docs/usage.md is updated.
  • [x] Output Documentation in docs/output.md is updated.
  • [x] CHANGELOG.md is updated.
  • [x] README.md is updated (including new tool citations and authors/contributors).

matbonfanti avatar Oct 09 '25 10:10 matbonfanti

nf-core pipelines lint overall result: Passed :white_check_mark: :warning:

Posted for pipeline commit 9caf462

+| ✅ 278 tests passed       |+
#| ❔   4 tests were ignored |#
!| ❗  21 tests had warnings |!

:heavy_exclamation_mark: Test warnings:

  • readme - README contains the placeholder zenodo.XXXXXXX. This should be replaced with the zenodo doi (after the first release).
  • pipeline_todos - TODO string in base.config: Check the defaults for all processes
  • pipeline_todos - TODO string in methods_description_template.yml: #Update the HTML below to your preferred methods description, e.g. add publication citation for this pipeline
  • pipeline_todos - TODO string in main.nf: Optionally add in-text citation tools to this list.
  • pipeline_todos - TODO string in main.nf: Optionally add bibliographic entries to this list.
  • pipeline_todos - TODO string in main.nf: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled!
  • local_component_structure - find_adapters.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - gpt_prepare_query.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - alignment_summary.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - clonality_classifier.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - drugz.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - hitselection.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - orient_reference.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - preprocessing_summary.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - matricescreation.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - venndiagram.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - extract_umis.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - template_reference.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - cigar_parser.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - clustering_summary.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure
  • local_component_structure - crisprseq_plotter.nf in modules/local should be moved to a TOOL/SUBTOOL/main.nf structure

:grey_question: Tests ignored:

:white_check_mark: Tests passed:

  • files_exist - File found: .gitattributes
  • files_exist - File found: .gitignore
  • files_exist - File found: .nf-core.yml
  • files_exist - File found: .prettierignore
  • files_exist - File found: .prettierrc.yml
  • files_exist - File found: CHANGELOG.md
  • files_exist - File found: CITATIONS.md
  • files_exist - File found: CODE_OF_CONDUCT.md
  • files_exist - File found: LICENSE or LICENSE.md or LICENCE or LICENCE.md
  • files_exist - File found: nextflow_schema.json
  • files_exist - File found: nextflow.config
  • files_exist - File found: README.md
  • files_exist - File found: .github/.dockstore.yml
  • files_exist - File found: .github/CONTRIBUTING.md
  • files_exist - File found: .github/ISSUE_TEMPLATE/bug_report.yml
  • files_exist - File found: .github/ISSUE_TEMPLATE/config.yml
  • files_exist - File found: .github/ISSUE_TEMPLATE/feature_request.yml
  • files_exist - File found: .github/PULL_REQUEST_TEMPLATE.md
  • files_exist - File found: .github/workflows/branch.yml
  • files_exist - File found: .github/workflows/nf-test.yml
  • files_exist - File found: .github/actions/get-shards/action.yml
  • files_exist - File found: .github/actions/nf-test/action.yml
  • files_exist - File found: .github/workflows/linting_comment.yml
  • files_exist - File found: .github/workflows/linting.yml
  • files_exist - File found: assets/email_template.html
  • files_exist - File found: assets/email_template.txt
  • files_exist - File found: assets/sendmail_template.txt
  • files_exist - File found: assets/nf-core-crisprseq_logo_light.png
  • files_exist - File found: conf/modules.config
  • files_exist - File found: docs/images/nf-core-crisprseq_logo_light.png
  • files_exist - File found: docs/images/nf-core-crisprseq_logo_dark.png
  • files_exist - File found: docs/output.md
  • files_exist - File found: docs/README.md
  • files_exist - File found: docs/README.md
  • files_exist - File found: docs/usage.md
  • files_exist - File found: nf-test.config
  • files_exist - File found: main.nf
  • files_exist - File found: assets/multiqc_config.yml
  • files_exist - File found: conf/base.config
  • files_exist - File found: conf/igenomes.config
  • files_exist - File found: conf/igenomes_ignored.config
  • files_exist - File found: .github/workflows/awstest.yml
  • files_exist - File found: .github/workflows/awsfulltest.yml
  • files_exist - File found: modules.json
  • files_exist - File found: ro-crate-metadata.json
  • files_exist - File not found check: .github/ISSUE_TEMPLATE/bug_report.md
  • files_exist - File not found check: .github/ISSUE_TEMPLATE/feature_request.md
  • files_exist - File not found check: .github/workflows/push_dockerhub.yml
  • files_exist - File not found check: .markdownlint.yml
  • files_exist - File not found check: .nf-core.yaml
  • files_exist - File not found check: .yamllint.yml
  • files_exist - File not found check: bin/markdown_to_html.r
  • files_exist - File not found check: conf/aws.config
  • files_exist - File not found check: docs/images/nf-core-crisprseq_logo.png
  • files_exist - File not found check: lib/Checks.groovy
  • files_exist - File not found check: lib/Completion.groovy
  • files_exist - File not found check: lib/NfcoreTemplate.groovy
  • files_exist - File not found check: lib/Utils.groovy
  • files_exist - File not found check: lib/Workflow.groovy
  • files_exist - File not found check: lib/WorkflowMain.groovy
  • files_exist - File not found check: lib/WorkflowCrisprseq.groovy
  • files_exist - File not found check: parameters.settings.json
  • files_exist - File not found check: pipeline_template.yml
  • files_exist - File not found check: Singularity
  • files_exist - File not found check: lib/nfcore_external_java_deps.jar
  • files_exist - File not found check: .travis.yml
  • nextflow_config - Found nf-schema plugin
  • nextflow_config - Config variable found: manifest.name
  • nextflow_config - Config variable found: manifest.nextflowVersion
  • nextflow_config - Config variable found: manifest.description
  • nextflow_config - Config variable found: manifest.version
  • nextflow_config - Config variable found: manifest.homePage
  • nextflow_config - Config variable found: timeline.enabled
  • nextflow_config - Config variable found: trace.enabled
  • nextflow_config - Config variable found: report.enabled
  • nextflow_config - Config variable found: dag.enabled
  • nextflow_config - Config variable found: process.cpus
  • nextflow_config - Config variable found: process.memory
  • nextflow_config - Config variable found: process.time
  • nextflow_config - Config variable found: params.outdir
  • nextflow_config - Config variable found: params.input
  • nextflow_config - Config variable found: validation.help.enabled
  • nextflow_config - Config variable found: manifest.mainScript
  • nextflow_config - Config variable found: timeline.file
  • nextflow_config - Config variable found: trace.file
  • nextflow_config - Config variable found: report.file
  • nextflow_config - Config variable found: dag.file
  • nextflow_config - Config variable found: validation.help.beforeText
  • nextflow_config - Config variable found: validation.help.afterText
  • nextflow_config - Config variable found: validation.help.command
  • nextflow_config - Config variable found: validation.summary.beforeText
  • nextflow_config - Config variable found: validation.summary.afterText
  • nextflow_config - Config variable (correctly) not found: params.nf_required_version
  • nextflow_config - Config variable (correctly) not found: params.container
  • nextflow_config - Config variable (correctly) not found: params.singleEnd
  • nextflow_config - Config variable (correctly) not found: params.igenomesIgnore
  • nextflow_config - Config variable (correctly) not found: params.name
  • nextflow_config - Config variable (correctly) not found: params.enable_conda
  • nextflow_config - Config variable (correctly) not found: params.max_cpus
  • nextflow_config - Config variable (correctly) not found: params.max_memory
  • nextflow_config - Config variable (correctly) not found: params.max_time
  • nextflow_config - Config variable (correctly) not found: params.validationFailUnrecognisedParams
  • nextflow_config - Config variable (correctly) not found: params.validationLenientMode
  • nextflow_config - Config variable (correctly) not found: params.validationSchemaIgnoreParams
  • nextflow_config - Config variable (correctly) not found: params.validationShowHiddenParams
  • nextflow_config - Config timeline.enabled had correct value: true
  • nextflow_config - Config report.enabled had correct value: true
  • nextflow_config - Config trace.enabled had correct value: true
  • nextflow_config - Config dag.enabled had correct value: true
  • nextflow_config - Config manifest.name began with nf-core/
  • nextflow_config - Config variable manifest.homePage began with https://github.com/nf-core/
  • nextflow_config - Config dag.file ended with .html
  • nextflow_config - Config variable manifest.nextflowVersion started with >= or !>=
  • nextflow_config - Config manifest.version ends in dev: 2.4.0dev
  • nextflow_config - Config params.custom_config_version is set to master
  • nextflow_config - Config params.custom_config_base is set to https://raw.githubusercontent.com/nf-core/configs/master
  • nextflow_config - Lines for loading custom profiles found
  • nextflow_config - nextflow.config contains configuration profile test
  • nextflow_config - Config default value correct: params.umi_bin_size= 1
  • nextflow_config - Config default value correct: params.medaka_model= https://github.com/nanoporetech/medaka/raw/master/medaka/data/r941_min_high_g303_model.hdf5
  • nextflow_config - Config default value correct: params.aligner= minimap2
  • nextflow_config - Config default value correct: params.vsearch_minseqlength= 55
  • nextflow_config - Config default value correct: params.vsearch_maxseqlength= 57
  • nextflow_config - Config default value correct: params.vsearch_id= 0.99
  • nextflow_config - Config default value correct: params.min_reads= 30.0
  • nextflow_config - Config default value correct: params.min_targeted_genes= 3.0
  • nextflow_config - Config default value correct: params.bagel_reference_essentials= https://raw.githubusercontent.com/hart-lab/bagel/master/CEGv2.txt
  • nextflow_config - Config default value correct: params.bagel_reference_nonessentials= https://raw.githubusercontent.com/hart-lab/bagel/master/NEGv1.txt
  • nextflow_config - Config default value correct: params.hit_selection_iteration_nb= 1000.0
  • nextflow_config - Config default value correct: params.igenomes_base= s3://ngi-igenomes/igenomes/
  • nextflow_config - Config default value correct: params.custom_config_version= master
  • nextflow_config - Config default value correct: params.custom_config_base= https://raw.githubusercontent.com/nf-core/configs/master
  • nextflow_config - Config default value correct: params.publish_dir_mode= copy
  • nextflow_config - Config default value correct: params.max_multiqc_email_size= 25.MB
  • nextflow_config - Config default value correct: params.validate_params= true
  • nextflow_config - Config default value correct: params.pipelines_testdata_base_path= https://raw.githubusercontent.com/nf-core/test-datasets/
  • nextflow_config - Config default value correct: params.gpt_drugz_gene_amount= 400
  • nextflow_config - Config default value correct: params.gpt_drugz_question= Which of the following genes have historically shown records of enhancing drug activity upon CRISPR knockout? For each positive gene write a paragraph explaining the findings in detail.
  • nextflow_config - Config default value correct: params.gpt_mle_gene_amount= 400
  • nextflow_config - Config default value correct: params.gpt_mle_question= Which of the following genes have historically shown significance in the context of a CRISPR knockout? For each positive gene write a paragraph explaining the findings in detail.
  • nextflow_config - Config default value correct: params.gpt_bagel2_gene_amount= 400
  • nextflow_config - Config default value correct: params.gpt_bagel2_question= Which of the following genes have historically shown significance in the context of a CRISPR knockout? For each positive gene write a paragraph explaining the findings in detail.
  • nextflow_config - Config default value correct: params.gpt_rra_gene_amount= 400
  • nextflow_config - Config default value correct: params.gpt_rra_question= Which of the following genes have historically shown significance in the context of a CRISPR knockout? For each positive gene write a paragraph explaining the findings in detail.
  • nf_test_content - 'tests/main_screening_paired.nf.test' contains outdir parameter
  • nf_test_content - 'tests/main_screening_paired.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_screening_paired.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_targeted.nf.test' contains outdir parameter
  • nf_test_content - 'tests/main_targeted.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_targeted.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_screening.nf.test' contains outdir parameter
  • nf_test_content - 'tests/main_screening.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_screening.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_targeted_umis.nf.test' contains outdir parameter
  • nf_test_content - 'tests/main_targeted_umis.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_targeted_umis.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_screening_count_table.nf.test' contains outdir parameter
  • nf_test_content - 'tests/main_screening_count_table.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/main_screening_count_table.nf.test' snapshots a 'versions.yml' file
  • nf_test_content - 'tests/nextflow.config' contains modules_testdata_base_path
  • nf_test_content - 'tests/nextflow.config' contains pipelines_testdata_base_path
  • nf_test_content - 'nf-test.config' sets a testsDir
  • nf_test_content - 'nf-test.config' sets a workDir
  • nf_test_content - 'nf-test.config' sets a configFile
  • files_unchanged - .gitattributes matches the template
  • files_unchanged - .prettierrc.yml matches the template
  • files_unchanged - CODE_OF_CONDUCT.md matches the template
  • files_unchanged - LICENSE matches the template
  • files_unchanged - .github/.dockstore.yml matches the template
  • files_unchanged - .github/CONTRIBUTING.md matches the template
  • files_unchanged - .github/ISSUE_TEMPLATE/bug_report.yml matches the template
  • files_unchanged - .github/ISSUE_TEMPLATE/config.yml matches the template
  • files_unchanged - .github/ISSUE_TEMPLATE/feature_request.yml matches the template
  • files_unchanged - .github/workflows/branch.yml matches the template
  • files_unchanged - .github/workflows/linting_comment.yml matches the template
  • files_unchanged - .github/workflows/linting.yml matches the template
  • files_unchanged - assets/email_template.html matches the template
  • files_unchanged - assets/email_template.txt matches the template
  • files_unchanged - assets/sendmail_template.txt matches the template
  • files_unchanged - assets/nf-core-crisprseq_logo_light.png matches the template
  • files_unchanged - docs/images/nf-core-crisprseq_logo_light.png matches the template
  • files_unchanged - docs/images/nf-core-crisprseq_logo_dark.png matches the template
  • files_unchanged - docs/README.md matches the template
  • files_unchanged - .gitignore matches the template
  • files_unchanged - .prettierignore matches the template
  • actions_nf_test - '.github/workflows/nf-test.yml' is triggered on expected events
  • actions_nf_test - '.github/workflows/nf-test.yml' checks minimum NF version
  • actions_awstest - '.github/workflows/awstest.yml' is triggered correctly
  • actions_awsfulltest - .github/workflows/awsfulltest.yml is triggered correctly
  • actions_awsfulltest - .github/workflows/awsfulltest.yml does not use -profile test
  • readme - README Nextflow minimum version badge matched config. Badge: 24.10.5, Config: 24.10.5
  • readme - README nf-core template version badge found.
  • pipeline_if_empty_null - No ifEmpty(null) strings found
  • plugin_includes - No wrong validation plugin imports have been found
  • pipeline_name_conventions - Name adheres to nf-core convention
  • template_strings - Did not find any Jinja template strings (0 files)
  • schema_lint - Schema lint passed
  • schema_lint - Schema title + description lint passed
  • schema_lint - Input mimetype lint passed: 'text/csv'
  • schema_params - Schema matched params returned from nextflow config
  • system_exit - No System.exit calls found
  • actions_schema_validation - Workflow validation passed: linting.yml
  • actions_schema_validation - Workflow validation passed: download_pipeline.yml
  • actions_schema_validation - Workflow validation passed: template-version-comment.yml
  • actions_schema_validation - Workflow validation passed: linting_comment.yml
  • actions_schema_validation - Workflow validation passed: release-announcements.yml
  • actions_schema_validation - Workflow validation passed: fix_linting.yml
  • actions_schema_validation - Workflow validation passed: awsfulltest_screening.yml
  • actions_schema_validation - Workflow validation passed: nf-test.yml
  • actions_schema_validation - Workflow validation passed: awsfulltest.yml
  • actions_schema_validation - Workflow validation passed: branch.yml
  • actions_schema_validation - Workflow validation passed: awstest.yml
  • actions_schema_validation - Workflow validation passed: clean-up.yml
  • merge_markers - No merge markers found in pipeline files
  • modules_json - Only installed modules found in modules.json
  • multiqc_config - assets/multiqc_config.yml found and not ignored.
  • multiqc_config - assets/multiqc_config.yml contains report_section_order
  • multiqc_config - assets/multiqc_config.yml contains export_plots
  • multiqc_config - assets/multiqc_config.yml contains report_comment
  • multiqc_config - assets/multiqc_config.yml follows the ordering scheme of the minimally required plugins.
  • multiqc_config - assets/multiqc_config.yml contains a matching 'report_comment'.
  • multiqc_config - assets/multiqc_config.yml contains 'export_plots: true'.
  • modules_structure - modules directory structure is correct 'modules/nf-core/TOOL/SUBTOOL'
  • local_component_structure - local subworkflows directory structure is correct 'subworkflows/local/TOOL/SUBTOOL'
  • base_config - conf/base.config found and not ignored.
  • modules_config - conf/modules.config found and not ignored.
  • modules_config - ORIENT_REFERENCE found in conf/modules.config and Nextflow scripts.
  • modules_config - CAT_FASTQ found in conf/modules.config and Nextflow scripts.
  • modules_config - PEAR found in conf/modules.config and Nextflow scripts.
  • modules_config - BAGEL2_BF found in conf/modules.config and Nextflow scripts.
  • modules_config - BAGEL2_PR found in conf/modules.config and Nextflow scripts.
  • modules_config - BAGEL2_FC found in conf/modules.config and Nextflow scripts.
  • modules_config - DRUGZ found in conf/modules.config and Nextflow scripts.
  • modules_config - BAGEL2_GRAPH found in conf/modules.config and Nextflow scripts.
  • modules_config - FASTQC found in conf/modules.config and Nextflow scripts.
  • modules_config - FIND_ADAPTERS found in conf/modules.config and Nextflow scripts.
  • modules_config - GUIDES_TO_FASTA found in conf/modules.config and Nextflow scripts.
  • modules_config - BOWTIE2_BUILD found in conf/modules.config and Nextflow scripts.
  • modules_config - BOWTIE2_ALIGN found in conf/modules.config and Nextflow scripts.
  • modules_config - MAGECK_COUNT found in conf/modules.config and Nextflow scripts.
  • modules_config - MAGECK_MLE found in conf/modules.config and Nextflow scripts.
  • modules_config - MAGECK_TEST found in conf/modules.config and Nextflow scripts.
  • modules_config - MAGECK_GRAPHRRA found in conf/modules.config and Nextflow scripts.
  • modules_config - MAGECK_FLUTEMLE found in conf/modules.config and Nextflow scripts.
  • modules_config - HITSELECTION found in conf/modules.config and Nextflow scripts.
  • modules_config - HITSELECTION_MLE found in conf/modules.config and Nextflow scripts.
  • modules_config - HITSELECTION_BAGEL2 found in conf/modules.config and Nextflow scripts.
  • modules_config - HITSELECTION_RRA found in conf/modules.config and Nextflow scripts.
  • modules_config - VENNDIAGRAM found in conf/modules.config and Nextflow scripts.
  • modules_config - MAGECK_MLE_DAY0 found in conf/modules.config and Nextflow scripts.
  • modules_config - CRISPRCLEANR_NORMALIZE found in conf/modules.config and Nextflow scripts.
  • modules_config - CUTADAPT found in conf/modules.config and Nextflow scripts.
  • modules_config - CUTADAPT_FIVE_PRIME found in conf/modules.config and Nextflow scripts.
  • modules_config - CUTADAPT_THREE_PRIME found in conf/modules.config and Nextflow scripts.
  • modules_config - SEQTK_SEQ_MASK found in conf/modules.config and Nextflow scripts.
  • modules_config - EXTRACT_UMIS found in conf/modules.config and Nextflow scripts.
  • modules_config - VSEARCH_CLUSTER found in conf/modules.config and Nextflow scripts.
  • modules_config - VSEARCH_SORT found in conf/modules.config and Nextflow scripts.
  • modules_config - PREPROCESSING_SUMMARY found in conf/modules.config and Nextflow scripts.
  • modules_config - MATRICESCREATION found in conf/modules.config and Nextflow scripts.
  • modules_config - MINIMAP2_ALIGN_UMI_1 found in conf/modules.config and Nextflow scripts.
  • modules_config - MINIMAP2_ALIGN_UMI_2 found in conf/modules.config and Nextflow scripts.
  • modules_config - RACON_1 found in conf/modules.config and Nextflow scripts.
  • modules_config - RACON_2 found in conf/modules.config and Nextflow scripts.
  • modules_config - MEDAKA found in conf/modules.config and Nextflow scripts.
  • modules_config - SEQTK_SEQ_FATOFQ found in conf/modules.config and Nextflow scripts.
  • modules_config - CLUSTERING_SUMMARY found in conf/modules.config and Nextflow scripts.
  • modules_config - MINIMAP2_ALIGN_ORIGINAL found in conf/modules.config and Nextflow scripts.
  • modules_config - ALIGNMENT_SUMMARY found in conf/modules.config and Nextflow scripts.
  • modules_config - SAMTOOLS_INDEX found in conf/modules.config and Nextflow scripts.
  • modules_config - TEMPLATE_REFERENCE found in conf/modules.config and Nextflow scripts.
  • modules_config - MINIMAP2_ALIGN_TEMPLATE found in conf/modules.config and Nextflow scripts.
  • modules_config - CIGAR_PARSER found in conf/modules.config and Nextflow scripts.
  • modules_config - CRISPRSEQ_PLOTTER found in conf/modules.config and Nextflow scripts.
  • modules_config - MULTIQC found in conf/modules.config and Nextflow scripts.
  • nfcore_yml - Repository type in .nf-core.yml is valid: pipeline
  • nfcore_yml - nf-core version in .nf-core.yml is set to the latest version: 3.3.2
  • rocrate_readme_sync - RO-Crate descriptions are in sync with README.md.

Run details

  • nf-core/tools version 3.3.2
  • Run at 2025-10-09 11:58:04

github-actions[bot] avatar Oct 09 '25 10:10 github-actions[bot]

I am not following the story here. Could you explain to me what the files would look like when running the pipelines from fastq files or from a count matrix with an example? Thanks!

mirpedrol avatar Oct 10 '25 12:10 mirpedrol

yep, sure...

When you start from fastq files, you have to provide a sample sheet that contains sample labels and condition labels. With the contrast file you specify the condition labels that you want to compare, and the condition labels are then mapped to samples when it is required to specify the model for the differential analysis. An example is the main screening test:

  • the samplesheet https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata/samplesheet_test.csv
  • the contrast file https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata/rra_contrasts.txt

When you start providing directly the count matrix, you do not need to give a sample sheet and so you do not have a place where to provide condition labels. In this case you give:

  • the count matrix https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata/count_table.tsv
  • the contrast file https://raw.githubusercontent.com/nf-core/test-datasets/crisprseq/testdata/rra_contrasts.txt with labels in the contrast file that are interpreted as sample names instead of condition. If I am not mistaken, even before I started contributing to the pipeline, this was the workaround that was in place. And with this PR I re-introduce it (because this was broken by PR #252).

I totally get that having a file which may be structured differently depending on the type of run is not ideal, but I think that other solutions are not ideal, either. I think that one possibility to make everything consistent would be specifying the contrast by sample names in all the cases, but I guess this would be too radical.

Anyway, I would be happy to discuss this further!

matbonfanti avatar Oct 10 '25 13:10 matbonfanti

What do you think if we require to provide a samplesheet too, even if a contrast file is provided? Then, I would make the fastq files not required, so only sample ID and condition will have to be provided, and we can read the mapping of samples form the samplesheet

mirpedrol avatar Oct 13 '25 11:10 mirpedrol

I just want to be sure I’m following your reasoning: is the concern mainly about the pipeline being runnable in non-standard cases without a samplesheet, or about the possible inconsistency where the contrast file might contain either sample or condition labels depending on the context?

Anyway, I’m fine with your proposal. It is actually a good time to make the change, since it would be a breaking one and we already have a major release coming up.

My only concern is that making the FASTQ files non-compulsory would also affect the standard (and more common) use case, where the pipeline does require them. We could add an extra ad hoc check for the presence of FASTQ files, but obviously it is nicer to have this check directly at the level of the samplesheet parsing.

matbonfanti avatar Oct 13 '25 11:10 matbonfanti

I am more concerned about having a contrast file that contains different columns depending on the run. For example, if I run the pipeline once, obtain the counts matrix, and want to re-run it with some different parameters but starting from the count matrix, I can't reuse my contrasts file.

I agree it's better for validation to check for fastq files when parsing the samplesheet, but I think it's the best trade off in this situation. We should anyway try to think of a better way to handle our samplesheet validation, since we are already being very permissive because we have to use the same JSON schema for both subworkflows of the pipeline. We can tackle this later in a different PR.

mirpedrol avatar Oct 13 '25 12:10 mirpedrol

I see your point, and I agree.

In that sense, my preference would be to simplify the pipeline by removing the condition column altogether, so that the contrast file always refers to samples rather than conditions. This might make the contrast IDs slightly less readable, but in many real use cases (like the one that prompted this PR), users typically run multiple contrasts on the same dataset, meaning the condition labels end up being one-to-one with the sample IDs anyway.

That said, I’m aware this change could be quite disruptive compared to previous releases. How do you feel about it?

matbonfanti avatar Oct 13 '25 12:10 matbonfanti

I am not a user of this analysis, so I rely on your experience for this 😄 It sounds good to me to get rid of the "conditions" column, and modify how the contrast file looks like. If you think it will be too disruptive, we could try posting on the slack channel to get people's opinion (hopefully they receive a notification and read it)

mirpedrol avatar Oct 13 '25 12:10 mirpedrol