You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Snakemake与CellRanger Count批量处理多样本?报错求助

单细胞RNA-seq批量处理:Snakemake+CellRanger报错解决

问题背景

目录结构:

merged/
├─ SC111111-TTATTCGAGG-AGCAGGACAG_merged_R1.fastq.gz
├─ SC111111-TTATTCGAGG-AGCAGGACAG_merged_R2.fastq.gz
├─ SC222222-TGCGCGGTTT-TTTATCCTTG_merged_R1.fastq.gz
└─ SC222222-TGCGCGGTTT-TTTATCCTTG_merged_R2.fastq.gz

原规则代码:

rule cellranger_count:
    input: rules.merge_fastqs.output
    output:
        maxtrix_h5 = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix.h5',
        metrics = '{sampleID}_TenXAnalysis/outs/metrics_summary.csv',
        barcodes = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix/barcodes.tsv.gz',
        features = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix/features.tsv.gz',
        matrix = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix/matrix.mtx.gz'
    threads: 16
    params:
        ref = 'PATH/yard/apps/refdata-gex-GRCh38-2020-A',
        #sample_id = '{sampleID}_merged'
    shell: """
    module load cellranger/6.1.2

    rm -rf {wildcards.sampleID}_TenXAnalysis

    cellranger count --id={wildcards.sampleID}_TenXAnalysis \
        --fastqs={input} \
        --sample={wildcards.sampleID} \
        --transcriptome={params.ref} \
        --localcores={threads} \
        --localmem=128
    """

报错信息:

error: Found argument 'merged/SC111111-TTATTCGAGG-AGCAGGACAG_merged_R2.fastq.gz' which wasn't expected, or isn't valid in this context

If you tried to supply `merged/SC111111-TTATTCGAGG-AGCAGGACAG_merged_R2.fastq.gz` as a PATTERN use `-- merged/SC111111-TTATTCGAGG-AGCAGGACAG_merged_R2.fastq.gz

报错原因

CellRanger的--fastqs参数要求传入存放fastq文件的目录路径,而非单个fastq文件的列表。原规则中{input}会展开为当前样本的所有fastq文件路径(两个文件),导致CellRanger将第二个文件识别为无效的未知参数,从而抛出错误。

解决方案

修改规则,让--fastqs指向merged目录,并确保输入依赖对应样本的所有fastq文件,保证规则触发的正确性:

rule cellranger_count:
    input:
        # 动态匹配当前样本的R1/R2 fastq文件,确保文件存在才执行规则
        lambda wildcards: expand("merged/{sampleID}_*_merged_R{read}.fastq.gz", 
                                 sampleID=wildcards.sampleID, read=[1,2])
    output:
        matrix_h5 = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix.h5',
        metrics = '{sampleID}_TenXAnalysis/outs/metrics_summary.csv',
        barcodes = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix/barcodes.tsv.gz',
        features = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix/features.tsv.gz',
        matrix = '{sampleID}_TenXAnalysis/outs/raw_feature_bc_matrix/matrix.mtx.gz'
    threads: 16
    params:
        ref = 'PATH/yard/apps/refdata-gex-GRCh38-2020-A',
        fastq_dir = 'merged'  # 直接指定fastq文件所在目录
    shell: """
    module load cellranger/6.1.2

    rm -rf {wildcards.sampleID}_TenXAnalysis

    cellranger count --id={wildcards.sampleID}_TenXAnalysis \
        --fastqs={params.fastq_dir} \
        --sample={wildcards.sampleID} \
        --transcriptome={params.ref} \
        --localcores={threads} \
        --localmem=128
    """

关键修改说明

  1. 输入依赖调整:使用lambda函数+expand动态匹配当前样本的R1/R2文件,保证规则仅在对应样本的fastq文件存在时触发,避免依赖缺失。
  2. --fastqs参数修正:改为传入merged目录路径,CellRanger会自动在该目录下查找文件名包含--sample指定的样本ID的fastq文件(你的文件名格式刚好包含样本ID,匹配逻辑成立)。
  3. 参数可读性优化:将目录路径定义在params中,提升代码可维护性。

内容的提问来源于stack exchange,提问作者Genetics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:00:17