Skip to content

nextflow inspect no longer respects container overrides from config for withName #6164

@awgymer

Description

@awgymer

Bug report

In previous versions of nextflow inspect container overrides set using any withName selectors were respected and reported correctly. Since (at least) 25.04 this is broken and overrides only work from withName that uses only the process name (e.g. not alias, fully qualified name, partial qualified process name etc).

Expected behavior and actual behavior

For the following workflow main.nf please see the working/non-working examples.

process A_A { 

    script:
    """
    echo test
    """
}

process A_B { 

    script:
    """
    echo test
    """
}

workflow PARENT {
    A_A()
    A_B()
}

workflow {
    PARENT()
}

Working in both

Process name only

nextflow.config

process {

    withName: A_A {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
        {
            "name": "A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

Quoted process name only

nextflow.config

process {

    withName: "A_A" {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
        {
            "name": "A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

Partial process name

nextflow.config

process {

    withName: "A_.*" {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

nextflow inspect main.nf
{
    "processes": [
        {
            "name": "PARENT:A_B",
            "container": "docker.io/google/deepvariant:1.8.0"
        },
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
        {
            "name": "A_B",
            "container": "docker.io/google/deepvariant:1.8.0"
        },
        {
            "name": "A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

Working only in 24.10.5

Fully qualified process name

nextflow.config

process {

    withName: "PARENT:A_A" {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
    ]
}

Partial qualified process name

nextflow.config

process {

    withName: ".*RENT:A_A" {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
    ]
}

ALIASING

For the following tests module definitions were moved to module.nf and top-level main.nf is now

include { A_A; A_A as A_B } from './module.nf'

workflow PARENT {
    A_A()
    A_B()
}

workflow {
    PARENT()
}

Alias by base name

nextflow.config

process {

    withName: A_A {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_B",
            "container": "docker.io/google/deepvariant:1.8.0"
        },
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
        {
            "name": "A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

Alias by alias

nextflow.config

process {

    withName: "A_B" {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_B",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
        
    ]
}

Alias by alias and base name

nextflow.config

process {

    withName: "A_B" {
        container = "docker.io/google/deepvariant:1.9.0"
    }


    withName: "A_A" {
        container = "docker.io/google/deepvariant:1.8.0"
    }

}

24.10.5

{
    "processes": [
        {
            "name": "PARENT:A_B",
            "container": "docker.io/google/deepvariant:1.9.0"
        },
        {
            "name": "PARENT:A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

25.04.3

{
    "processes": [
        {
            "name": "A_A",
            "container": "docker.io/google/deepvariant:1.8.0"
        }
    ]
}

I haven't tested overrides by e.g. withLabel but as you can see it appears that since at least 25.04.3 the nextflow inspect command reports only "base modules" and not the fully qualified names/paths as in 24.10.5 and this appears to affect the correctness of the reporting.

Environment

  • Nextflow version: 25.04.3
  • Java version: openjdk version "21.0.7" 2025-04-15 LTS
  • Operating system: macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions