首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过CLI提供NextFlow工作流输入(而不是参数)

通过CLI提供NextFlow工作流输入(而不是参数)
EN

Stack Overflow用户
提问于 2021-04-13 05:54:53
回答 1查看 414关注 0票数 1

我有以下(简化的) nextflow模块。它有一个进程,它在一个fasta文件上运行一个多序列对齐,一个运行这个过程的工作流(最终它也将运行其他进程):

代码语言:javascript
复制
process clustal_omega_msa {
    input:
      path fastas
    output:
      path 'clustal.sto'
    script:
      """
      cat ${fastas} > merged.fa
      clustalo -infile merged.fa --outfmt=stockholm
      """
    container "https://depot.galaxyproject.org/singularity/clustalo:1.2.4--h1b792b2_4"
}

workflow msa {
  take:
    path fastas
  main:
    clustal_omega_msa(fastas)
}

我希望这个工作流既可以作为子工作流导入,也可以直接执行。因此,我没有指定任何参数,只使用输入(因为我认为在调用子工作流时不能指定参数)。

但是,我看不到在命令行上直接运行这个子工作流的方法。

如果运行nextflow run msa.nf -entry msa,将得到以下错误:

代码语言:javascript
复制
No such variable: fastas

 -- Check script 'msa.nf' at line: 1 or see '.nextflow.log' file for more details

这是有道理的-我还没有具体说明这些文件的来源。但我怎么能呢?如果我遵循文档的配置部分并创建具有以下内容的nextflow.config

代码语言:javascript
复制
fastas = "/some/path/to/*.fasta"

我还是会犯这个错误。我也知道有一个-params-file选项,但我相信这只适用于参数,而不是输入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 02:48:25

当将脚本作为模块导入时,隐式工作流定义将被忽略。这意味着您的工作流脚本可以用作库模块或应用程序脚本:

代码语言:javascript
复制
nextflow.enable.dsl=2
params.input_fasta_files = './data/*.fasta'


process clustal_omega_msa {

    input:
    path fastas
    
    output:
    path 'clustal.sto'

    """
    cat ${fastas} > merged.fa
    clustalo -infile merged.fa --outfmt=stockholm
    """
}

workflow msa {
  
    take:
    fasta_files
  
    main:
    clustal_omega_msa(fasta_files)
}

workflow {

    input_fasta_files = Channel.fromPath( params.input_fasta_files ).collect()

    msa( input_fasta_files )
}

注意,如果要将'msa‘子工作流移动到一个单独的文件中,例如,名为'msa.nf',那么您可以使用addParams选项导入它并指定它所需的任何参数。例如:

代码语言:javascript
复制
nextflow.enable.dsl=2

include { msa } from './path/to/msa.nf' addParams(foo: 'bar')

params.input_fasta_files = './data/*.fasta'


workflow {

    input_fasta_files = Channel.fromPath( params.input_fasta_files ).collect()

    msa(input_fasta_files)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67069392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档