我想将多个bam文件拆分为预定数量的较小bam文件。我不知道如何指定输出,因为较小的bam文件的数量是可变的,具体取决于我要拆分的样本。
我已阅读https://bitbucket.org/snakemake/snakemake/issues/865/pre-determined-dynamic-output
我看不到检查点对我的帮助。
SAMPLE_cluster = { "SampleA" : [ "1", "2", "3" ], "SampleB" : [ "1" ], "SampleC" : [ "1", "2" ] }
rule split_bam:
input: "{sample}.bam"
output: expand("split_bam/{{sample}}_{cluster_id}.bam", cluster_id = ?)
shell:
"""
split_bam {input} {output}
"""
rule index_split_bam:
input: "split_bam/{sample}_{cluster_id}.bam"
output: "split_bam/{sample}_{cluster_id}.bam.bai"
shell:
"""
samtools index {input}
"""
for循环对我有效,如上面的链接中所述,但匿名规则使我烦恼。
如何为split_bam规则指定输出?我已经读过Snakemake: unknown output/input files after splitting by chromosome,因为单个样本的染色体数目是固定的,所以这种方法有效。如果有多个样本,并且不同样本的染色体数不同,那将与我的问题相似。