gpt4 book ai didi

snakemake - 尝试为工作流 [Snakemake] 创建目录时出现 ChildIOException

转载 作者:行者123 更新时间:2023-12-05 02:11:15 27 4
gpt4 key购买 nike

我正在尝试创建一种简单的方法来在一个规则中创建工作流所需的所有子目录。但是,每当我尝试执行在工作流顶部创建所有必需目录的规则时,我都会收到 ChildIOException ,这对我来说毫无意义:

Building DAG of jobs...
ChildIOException:
File/directory is a child to another output:
/scratch/groups/xxx/xxx/neand_sQTL/filtered_vcf
/scratch/groups/xxx/xxx/neand_sQTL/filtered_vcf/merged_filtered_chr1.vcf.gz

以下是有问题的规则:

rule mkdir_vcf:
output:
directory("gtex_vcf/"),
directory("kg_vcf/"),
directory("merged/"),
directory("filtered_vcf/"),
touch(".mkdir.chkpnt")
shell:
"mkdir -p {output}"

rule vcf_split1_23:
input:
vcf=config["vcf"],
chk=".mkdir.chkpnt"
output:
"gtex_vcf/gtex_chr{i}.vcf"
threads:
23
shell:
"tabix -h {input.vcf} chr{wildcards.i} > {output}"

我尝试使用 directory() 函数来查看这是否有助于解决错误,但没有。不知道在这里还能做什么。我不能在 vcf_split1_23 中包含 mkdir,因为这是一项并行工作,制定一个成功创建目录一次但错误地创建目录 22 次的规则是错误的形式。我肯定希望 mkdir_vcf 在其余规则之前运行。

最佳答案

我看到三个选项;

  • 只需在vcf_split1_23 规则中执行mkdir -p。 (当目录已经存在时这不会失败)。
  • 在任何规则之外用python创建目录;例如os.mkdir("filtered_vcf").
  • 不要指定要作为输出的目录,而是将它们指定为参数:
    rule mkdir_vcf:
output:
touch(".mkdir.chkpnt")
params:
"gtex_vcf/",
"kg_vcf/",
"merged/",
"filtered_vcf/"
shell:
"mkdir -p {output} {params}"

关于snakemake - 尝试为工作流 [Snakemake] 创建目录时出现 ChildIOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828210/

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