问题标签 [nextflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nextflow - Nextflow - 如何避免使用“加入”或类似运算符在两个或多个通道中输入文件的随机样本 ID?
我已经使用 Nextflow 实现了一些 NGS 数据分析工作流程。我在一些工作流程中使用了“配对结束”通道(fromFilePairs 方法)。在多次工作流程执行后,我遇到了一个我没有预料到的问题:我的样本 ID 有时会混合在一起,导致发生它的流程的输出不准确。我认为这与非确定性输入通道问题有关(https://www.nextflow.io/blog/2019/troubleshooting-nextflow-resume.html)。
假设我将我的工作流程应用于这些配对端文件:sample1_R{1,2}.fastq, sample2_R{1,2}.fastq
对于这种以多个“元组 pair_ID”作为输入的过程,数据 pair_ID(= 我的样本名称)可能会混淆,我的过程最终会使用sample1的随机输入文件 A 和 B以及输入文件sample2 的C而不是相同 pair_ID的所有文件 (A,B,C)(key = only sample1 或 only sample2)。在几次工作流程执行之后,在发生错误时使用 -resume 之后以及在完全成功的工作流程运行之后,我遇到了这个随机混合的输入文件名问题(这会影响输出)。
为了在 3 个通道中的每一个发出的输入文件之间具有相同的密钥 (pair_ID),我使用了join
运算符:
该运算符似乎使一切按预期工作,我在示例 ID 和最终输出中看不到任何混合。在文档(https://www.nextflow.io/docs/latest/operator.html?highlight=join#join)中,join
似乎只适合 2 个通道使用,所以我不确定我是否正确使用它3个频道。
我的方法使用join
合法吗?还是它还有一些缺陷?
有没有更好的方法来纠正我的问题?
如果我不确定此方法是否正确以避免在我的示例 ID 中出现任何混合,我可能会更改为另一个工作流管理系统,例如 Snakemake,但我真的很想解决这个问题并继续使用 Nextflow。
提前谢谢您,如果有不清楚的地方,请不要犹豫!
kubernetes - Running nextflow as a job vs. a pod in kubernetes
I'm new to nextflow. We would like to build our workflow using nextflow and have nextflow deploy the workflow to a large mulit-institution Kubernetes cluster that we use.
In this cluster we don't have admin permission, we have a namespace we work in. Also, pods in our cluster have limited resources, but jobs have unlimited resources.
In looking at the documentation for nextflow + kubernetes and it says that the workflow runs under a Kubernetes pod, which raises red flags for me because of the limitation on pods in our cluster.
Is there a way to execute nextflow workflows as a kubernetes jobs instead of a pod? What are my options in this area?
channel - 检查下一个流通道是否为空
我试图弄清楚如何检查通道是否为空。
例如,我有两个进程。第一个进程仅在设置了参数/标志的组合时运行,如果是,则还检查来自另一个进程的输入文件(通过通道输入)是否不为空,然后它为第二个进程创建一个新的输入文件(以最终替换默认的)。作为一个简化的例子:
当我尝试使用这种方法运行时,它会失败,因为通道_chNewInputForProcessTwo
包含DataflowQueue(queue=[])
因此,实际上并不是空的。
我已经尝试了几件事来查看文档以及 google 组和 gitter 上的线程。试图将其设置为空,但随后它抱怨我试图使用该频道两次。放create().close()
等
有没有一种干净/合理的方法来做到这一点?我可以使用值通道来做到这一点,并让第一个进程输出一些字符串stdout
以供第二个进程拾取和检查,但这对我来说似乎很脏。
任何建议/反馈表示赞赏。先感谢您!
马吕斯
kubernetes - Nextflow 未使用正确的服务帐户将工作流部署到 Kubernetes
我们正在尝试在 k8s 命名空间上使用 nextflow,而不是我们的默认命名空间,我们正在使用的命名空间是nextflownamespace
. 我们已经创建了 PVC 并确保默认服务帐户具有管理员角色绑定。我们收到 nextflow 无法访问 PVC 的错误:
在那个错误中,我们看到它system:serviceaccount:mynamespace:default
错误地指向了我们的默认命名空间,mynamespace
而不是nextflownamespace
我们为 nextflow 使用而创建的。
我们尝试添加debug.yaml = true
到我们的nextflow.config
但找不到它提交给 k8s 以验证错误的 YAML。我们的配置文件如下所示:
我们确实验证了当我们将命名空间更改为另一个任意值时,错误消息使用了新的任意命名空间,但服务帐户名称继续错误地指向用户的默认命名空间。
我们已经尝试profiles.standard.k8s.serviceAccount = "system:serviceaccount:nextflownamespace:default"
了我们能想到的所有变体,但这些尝试没有得到任何改变。
python - Nextflow:python脚本不保存输出
我在 Nextflow 中的 Python 脚本有问题,我的目标是在 python 脚本中编写一个文件,然后将它与 nextflow 一起使用并将文件保存在 publishdir 中(以及在我在其他进程中使用此文件之后)。我在 nextflow 中的流程是这样的(文件是之前定义的):
python的脚本:(我简化了实际过程,但本质是这样的),我需要在nextflow中获取保存在输出文件中的文件。
问题是文件没有保存在发布目录中,而是在 nextflow 的目录工作中,当我运行工作流时,该过程完成且没有错误,但说 DataflowQueue(queue=[])
谢谢!
- - - - - - - 更新 - - - - - - -
我将输入文件更改为 file()。nextflow.config:
主.nf
这改变了 nextflow 的输出,但我的输入文件不在发布目录中(但在目录工作中)。
writefile 之后的这个路径是我的输入文件的路径,我不知道为什么(这个目录没有任何变化)。
channel - 频道检查为空,即使它有内容
我试图让一个进程仅在满足条件组合时启动,但是在检查通道是否具有文件路径时,它总是将其返回为空。可能我做错了什么,在这种情况下,请更正我的代码。我试图遵循这个问题中的一些建议,但没有成功。
考虑以下最小示例:
_chProcessTwo
当且仅当通道中有文件时,我想让进程二运行。如果我运行上面的代码,我会得到:
最后一行实际上是_chProcessTwoView
如果我when
从第二个过程中删除指令,我会得到:
第二个工作.command.log
文件的内容是:The outcome is: I'm empty
我也试过没有 toList()
我究竟做错了什么?先感谢您
更新:一种解决方法是检查_chProcessTwoUse.view() != ""
,但这很脏
根据@Steve 的要求更新 2,我更新了代码以更多地反映我自己的管道中的实际情况:
正如@Steve 提到的,我什至不应该检查通道是否为空,NextFlow 应该更好地知道不启动该过程。但我认为在这个结构中我将不得不这样做。
马吕斯
nextflow - Nexflow:带有文件的结构化输入
我有一个结构数据数组,类似于:
请注意,fastqs 是成对出现的,每个“样本”的对数可能是可变的。
我想process
在 nextflow 中编写一个一次处理一个样本的方法。
为了让 nextflow 执行器正确地编组文件,它们必须以某种方式键入path
(或file
)。这样键入后,执行程序会将文件复制到计算节点进行处理。只需键入文件路径,var
将路径视为字符串,不会复制任何文件。
来自文档path
的输入的一个简单示例:
我应该如何声明process
输入以便将文件正确编组到计算节点?到目前为止,我还没有在文档中找到任何关于如何处理结构化输入的示例。
python - Nextflow - Channel.watchPath() 方法
我正在尝试使用 nextflow 从我的 python 脚本中获得一些并发性,因此我的一些数据流不使用传统的 nextflow 理想。
在我的第一个过程中,我通过调用 python 脚本来创建文件,在我的第二个过程中,我想使用这些创建的文件
我创建了一个新通道来监视创建文件的路径,但似乎什么也没发生。我用 .fromPath 方法进行了测试,我的过程是成功的,所以我不确定出了什么问题?
r - Nextflow:将脚本变量作为字符串输入 R?
我正在尝试学习 Nextflow,并努力让这个简单的脚本在 R 中工作:
这将返回以下错误:
我认为问题在于 $WD 没有被解释为字符串。我怎样才能解决这个问题?
nextflow - 从通道扩展路径
我的数据结构为批量运行的样本。所以我有一个这样的目录层次结构:
我想对给定批次子集的每个样本应用一个过程。一种可行的方法是生成一个列出样本的通道:
现在,我想单独提供批次名称,并让脚本找到相应的样本。像这样的东西:
所以,我对渠道的看法不正确?有没有办法通过通道操作“展平”样本列表?或者是制作更复杂的 Groovy 闭包的正确方法,它将列出每个批处理目录中的文件并将其作为元组或列表返回?