【问题标题】:Nextflow dynamic includes and outputNextflow 动态包含和输出
【发布时间】:2022-01-09 00:58:36
【问题描述】:

我正在尝试使用动态包含,但管理输出文件时遇到问题:

/* 
 * enables modules 
 */
nextflow.enable.dsl = 2

include { requestData } from './modules/get_xapi_data'
include { uniqueActors } from './modules/unique_actors'
include { compileJson } from './modules/unique_actors'

if (params.user_algo) {
    include { userAlgo } from params.user_algo
}

workflow {
    dataChannel = Channel.from("xapi_data.json")
    requestData(dataChannel)
    uniqueActors(requestData.out.channel_data)

    if (params.user_algo) {
        user_algo = userAlgo(requestData.out.channel_data)
    } else {
        user_algo = null
    }

    output_json = [user_algo, uniqueActors.out]
    // Filter output
    Channel.fromList(output_json)
        .filter{ it != null }            <--- problem here
        .map{ file(it) }
        .set{jsonFiles}

    compileJson(jsonFiles)
}

问题是userAlgo可以动态加载。而且我不知道我该如何照顾它。使用此解决方案,我收到了 Unknown method invocation getFileSystem on ChannelOut type 错误。

【问题讨论】:

    标签: nextflow


    【解决方案1】:

    问题在于fromList 需要一个值列表,而不是通道列表。如果您使用empty 频道而不是检查空值,您可以使用:

    if( params.user_algo ) {
        user_algo = userAlgo(requestData.out.channel_data)
    } else {
        user_algo = Channel.empty()
    }
    
    user_algo
        | concat( uniqueActors.out )
        | map { file(it) }
        | compileJson
    

    【讨论】:

    • 好主意,为了使用 fromList ``` uniqueActors() uniqueChannel = uniqueActors.out if (params.user_algo) { userAlgo() userChannel = userAlgo.out,我或多或少做了同样的事情.userJson } else { userChannel = Channel.empty() } allJson = uniqueChannel.mix(userChannel) compileJson(allJson.toList()) ```
    猜你喜欢
    • 2021-12-03
    • 2010-10-05
    • 1970-01-01
    • 2011-03-29
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    相关资源
    最近更新 更多