gpt4 book ai didi

snakemake:如何处理规则输出的可变数量

转载 作者:行者123 更新时间:2023-12-03 08:13:38 26 4
gpt4 key购买 nike

我想运行 bcl2fastq 以从 bcl 格式生成 fastq 文件。

根据关于测序模式的测序设置和使用了多少索引,它可以生成 read1、read2、index1 或 read1、read2、index1、index2 等。

我想做的是,将读取的输出数量信息放在config.yaml文件中,如下所示:

readids: ['I1','I2','R1','R2']

让规则自动计算出它应该生成多少读取输出(fastq.gz 文件)。

如何编写输出部分来实现呢?

下面是我所拥有的,不知何故每次只能从这个规则输出一个文件。所以它实际上运行了 4 次此规则,每次针对 I1、I2、R1 和 R2,这不是我想要的。如何在第 45 行修复它?在第 45 行中,{readid} 应该是 I1,I2,R1,R2 之一。

 39 rule bcl2fastq:                                                                                                                                                 
40 input:
41 "/data/MiniSeq/test"
42 params:
43 prefix="0_fastq"
44 output:
45 "0_fastq/{runid}_S0_L001_{readid}_001.fastq.gz"
46 log:
47 "0_fastq/bcl2fastq_log.txt"
48 shell:
49 """
50 bcl2fastq -R {input} -o {params.prefix} --create-fastq-for-index-reads --barcode-mismatches 1 --use-bases-mask {config[bcl2mask]} --minimum-trimmed
-read-length 1 --mask-short-adapter-reads 1 --no-bgzf-compression &> {log}
52
53 """

最佳答案

您正在寻找 expand() function它基本上填充给定的变量,返回输出文件列表。您只需要小心转义应该“在格式中幸存下来”的通配符(使用双大括号):

所以在你的情况下

output:
expand("0_fastq/{{runid}}_S0_L001_{readid}_001.fastq.gz", readid=config['readids'])

这将用 config['readids'] 中给定的值替换 readid 并保留 runid 通配符。

安德烈亚斯

关于snakemake:如何处理规则输出的可变数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com