抱歉,如果这是一个幼稚的问题,但我仍在努力解决Snakemake的复杂性。
我有一个目录,其中包含多个文件,这些文件要并行应用规则(即,我想向集群提交相同的脚本,为每个提交指定一个不同的输入文件)。
我首先尝试对输入文件使用expand,但这仅导致提交一份作业:
CHROMS = [str(c) for c in range(1, 23)] + ["X"]
rule vep:
input:
expand("data/split/chr{chrom}.vcf",
chrom=CHROMS)
output:
expand("data/vep/split/chr{chrom}.ann.vcf",
chrom=CHROMS)
shell:
"vep "
"{input} "
"{output}"
这里有替代方法吗?
谢谢!
当前,您的工作流确实只包含一次应用“
vep”规则,在此规则中vep
,所有输入和输出都作为参数执行。我不知道vep
它是如何工作的,但是很可能是失败了,或者没有达到您的期望。
您可能应该在不扩展的情况下编写规则的输入和输出,并使用“全部”规则进行驱动,以进行扩展:
CHROMS = [str(c) for c in range(1, 23)] + ["X"]
rule all:
input:
expand("data/vep/split/chr{chrom}.ann.vcf",
chrom=CHROMS)
rule vep:
input:
"data/split/chr{chrom}.vcf"
output:
"data/vep/split/chr{chrom}.ann.vcf"
shell:
"vep "
"{input} "
"{output}"
为了生成“ all”规则的期望输入,snakemake将确定应用“ vep”规则所需的次数和次数(即chrom
通配符的值是多少)。
确保将“所有”规则放在所有其他规则之前。
问题内容: 您对将尝试获取代码并将其自动拆分为线程的项目有何看法(可能是编译时,可能是在运行时)。 看下面的代码: 这种代码可以自动拆分为两个并行运行的线程。您是否认为有可能?从理论上讲,我感觉这是不可能的(这使我想起了停顿的问题),但是我不能证明这种想法是正确的。 您认为这是一个有用的项目吗?有没有类似的东西? 问题答案: 在一般情况下是否可以知道一段代码是否可以并行化并不重要,因为即使您的算法
我想循环两个列表,将组合传递给函数,并获得以下输出: 由于这是Pyspark,我想将其并行化,因为函数的每个迭代都可以独立运行。 注:我的实际函数是pyspark中的一个长而复杂的算法。只是想贴一个简单的例子来概括。 最好的方法是什么?
问题内容: 我想并行化以下代码: 由于每一行都可以独立处理,因此我尝试使用它,但是我不知道如何共享DataFrame。我也不确定这是否是与熊猫并行化的最佳方法。有什么帮助吗? 问题答案: 就像@Khris在他的评论中说的那样,您应该将数据帧分成几个大块,并并行地遍历每个块。您可以将数据帧任意分成随机大小的块,但是根据您计划使用的进程数将数据帧分成大小相等的块更有意义。幸运的是,已经有人想出了如何为
我正在尝试并行处理一个组合优化问题。基本上我是想把每个大小为k (n选k)的组合过一遍,看看这个组合是不是最好的。我写了一个可以工作的顺序版本(下面是java代码): 所以我的代码在递归树的叶子处进行计算,在叶子处,我将有一个唯一的大小k组合,非常简单。现在我将其转换为fork/连接代码,但我没有得到正确的解决方案。这是我在java代码中的fork/连接代码: 我很困惑,因为代码基本相同。唯一的区
问题内容: 通常,不清楚并行流如何精确地将输入拆分为多个块以及以什么顺序连接这些块。是否有任何方法可以可视化任何流源的整个过程,从而更好地了解发生了什么?假设我创建了这样的流: 我想看一些树状结构: 这意味着将整个输入范围划分为和,然后将范围进一步划分。当然,该图应反映Stream API的实际工作,因此,如果我对此类流执行某些实际操作,则拆分应该以相同的方式执行。 问题答案: 我想用一种解决方案
问题内容: 我有一堆JSON数组文件(准确地说是AVRO),每个文件都产生多个样本来训练Keras模型。通过使用@GPhilo和@jsimsa的想法,我能够想到这一点来并行化我的输入管道。无法弄清楚如何设计来划分处理文件的工作。代码内部失败,因为该函数需要一个字符串文件路径而不是一个, 这里正确的设计方法是什么 这是使用和设计输入管道的优化方法吗? 问题答案: 在我看来,发电机不必要地使您的生活变