将配对的末端读取与以fastq为输入的bwa mem snakemake对齐

问题描述

我有两个带有fastq文件的列表,列表中的每个元素都彼此对应(列表1中的第一个fastq对应于列表2中的第一个fastq,依此类推)。

到目前为止,我的Snakefile看起来像这样:

fastq1_list = [
    "/user/cfDNA_test_pipeline/patients/snakemake_test/test_fastq/test_004_T1T2_1.fastq.gz","/user/cfDNA_test_pipeline/patients/snakemake_test/test_fastq/test2_005T1T2_2_1.fastq.gz"
    ]


fastq2_list = [
    "/user/cfDNA_test_pipeline/patients/snakemake_test/test_fastq/test_004_T1T2_2.fastq.gz","/user/cfDNA_test_pipeline/patients/snakemake_test/test_fastq/test2_005T1T2_2_2.fastq.gz"
    ]

patient_list = [
    "patient004","patient005"
]

timepoint_list = [
    "T1T2","T1T2"
]

rule all:
    input:
         
        sorted_bam = expand(path+"/{patient}/{time}/plasma.sorted.bam",zip,patient=patient_list,time=timepoint_list),rule align_plasma:
    input:
         fastq1 =fastq1_list,fastq2 = fastq2_list,reference = reference

    output:
          sorted_bam = path+"/{patient}/{time}/plasma.sorted.bam"

    threads: 8

    shell:
         '''
         bwa mem -t {threads} -T 0 {input.reference} {input.fastq1} {input.fastq2}  | samtools sort -@ {threads} -O BAM {output.sorted_bam} 
             
         '''

我希望执行该文件时,snakemake会迭代fastq_list1fastq_list2并将相应的fastq文件对齐。这意味着执行与此命令相似的命令。

bwa mem -t 8 -T 0 ref-genome.fa user/cfDNA_test_pipeline/patients/snakemake_test/test_fastq/test_004_T1T2_1.fastq.gz /user/cfDNA_test_pipeline/patients/snakemake_test/test_fastq/test2_004T1T2_2_1.fastq.gz  | samtools sort -@ 8 -O BAM user/cfDNA_test_pipeline/patients/snakemake_test/patient004/T1T2/plasma.sorted.bam

然后转到列表中的下一个元素,并为Patient005生成bam文件

Snakemake分别用列表中的所有元素替换{input.fastq1}{input.fastq2}

如果任何人都可以指出我如何实现我真正想要的(逐个遍历fastq1_list和fastq2_list并对齐每个文件),我将非常感激!

干杯!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)