我想运行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 """
答案 0 :(得分:6)
您正在寻找基本上填充给定变量的expand() function,返回输出文件列表。你只需要小心逃脱应该“在格式化中存活”的通配符(使用双花括号):
所以在你的情况下
output:
expand("0_fastq/{{runid}}_S0_L001_{readid}_001.fastq.gz", readid=config['readids'])
这将用config ['readids']中给出的值替换readid并保留runid wilcard。
安德烈亚斯