【发布时间】:2021-10-09 09:13:14
【问题描述】:
美好的一天。我有一些目录(下面以粗体显示),每个目录都有一些用于不同车道的 .fastq 文件。
CND1/ UD_LOO3_R1.fastq.gz UD_LOO4_R1.fastq.gz
CND2/ XD_L001_R1.fastq.gz XD_L004_R1.fastq.gz
在每个目录中,我想创建一个合并的 fastq 文件,命名为:sample_R1.fastq.gz。例如,CND1/UD_R1.fastq.gz 和 CND2/XD_R1.fastq.gz 等等。为此,我创建了以下 snakemake 工作流程。
from collections import defaultdict
dirs,samp,lane = glob_wildcards("dir}/{sample}_L{lane}_R1.fastq.gz")
dirs, fls = glob_wildcards("{dir}/{files}_R1.fastq.gz")
D = defaultdict(list)
for x,y in zip(dirs,fls):
D[x].append(y+'_R1.fastq.gz')
rule ML:
message:
"Merge all Lanes for Fragment R1"
input:
expand( "{dir}/{files}",zip,dir=D.keys(),files=D.values() )
output:
expand( "{dir}/{s}_R1.fastq.gz",zip,dir=dirs,s=set(samp) )
shell:
"echo {input} && echo {output} "
#"zcat {input} >> {output}"
在上面的代码中,dict D 包含目录作为键,fastq 列表作为值。
{ 'CND2': ['XD_L001_R1.fastq.gz', 'XD_L004_R1.fastq.gz'], 'CND1': ['UD_LOO3_R1.fastq.gz', 'UD_LOO4_R1.fastq.gz'] }
进行试运行,snakemake 抱怨我缺少文件,如下所示 缺少规则 ML 的输入文件:
CND2/['XD_L001_R1.fastq.gz', 'XD_L004_R1.fastq.gz'] CND1/['UD_LOO3_R1.fastq.gz', 'UD_LOO4_R1.fastq.gz']
我想了解同时提供目录和文件列表作为输入的正确方法是什么。非常感谢任何帮助。
谢谢。
【问题讨论】:
标签: bioinformatics snakemake fastq