I think I might have found a bug in nf-core tools....
# tools
t
I think I might have found a bug in nf-core tools. I am trying to lint a module ([PR is here](https://github.com/nf-core/modules/pull/9360) ). Running
nf-core modules lint trident/fetch
returns the following error:
Copy code
╭─ [✗] 1 Module Test Failed ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                ╷                                        ╷                                                                                                                                                │
│ Module name    │ File path                              │ Test message                                                                                                                                   │
│╶───────────────┼────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╴│
│ trident/fetch  │ modules/nf-core/trident/fetch/meta.yml │ correct_meta_outputs: Module meta.yml does not match main.nf. Outputs should contain: {'poseidon_yml': ['output_archive//POSEIDON.yml'],       │
│                │                                        │ 'geno': ['output_archive//.{bed'], 'snp': ['output_archive//.{bim'], 'ind': ['output_archive//.{fam'], 'janno': ['output_archive//.janno'],    │
│                │                                        │ 'ssf': ['output_archive//.ssf'], 'bib': ['output_archive//.bib'], 'changelog': ['output_archive//CHANGELOG.md'], 'readme':                     │
│                │                                        │ ['output_archive/*/README.md'], 'versions': ['versions.yml']} Run nf-core modules lint --fix to update the meta.yml file.                      │
│                ╵                                        ╵                                                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
If I run with the
--fix
option, the “fixed” meta.yml looks like this:
Copy code
[...]
input:
  - - archive_dir:
        type: directory
        description: |
          The path to the directories containing any previously downloaded Poseidon archive files.
          If this is provided, trident fetch will check these directories, and only download missing packages from the Poseidon-Framework server.
    - fetch_s:
        type: string
        description: The fetchString provided to trident fetch (`--fetchString`),
          if any.
    - fetch_fn:
        type: file
        description: A file containing a list of fetchStrings provided to trident
          fetch (`--fetchFile`), if any.
        pattern: "*.txt"

        ontologies: []
output:
  poseidon_yml:
    - output_archive/*/POSEIDON.yml:
        type: file
        description: The POSEIDON.yml file of any newly downloaded package(s).
        pattern: "output_archive/*/POSEIDON.yml"
        ontologies:
          - edam: <http://edamontology.org/format_3750> # YAML
  geno:
    - output_archive/*/*.{bed: {}
  snp:
    - output_archive/*/*.{bim: {}
  ind:
    - output_archive/*/*.{fam: {}
  janno:
    - output_archive/*/*.janno:
        type: file
        description: The .janno annotation files of any newly downloaded
          package(s).
        pattern: "output_archive/*/*.janno"
        ontologies: []
  ssf:
    - output_archive/*/*.ssf:
        type: file
        description: The .ssf files of any newly downloaded package(s).
        pattern: "output_archive/*/*.ssf"
        ontologies: []
  bib:
    - output_archive/*/*.bib:
        type: file
        description: The .bib bibliography files of any newly downloaded
          package(s).
        pattern: "output_archive/*/*.bib"
        ontologies: []
  changelog:
    - output_archive/*/CHANGELOG.md:
        type: file
        description: The CHANGELOG.md files of any newly downloaded package(s).
        pattern: "output_archive/*/CHANGELOG.md"
        ontologies: []
  readme:
    - output_archive/*/README.md:
        type: file
        description: The README.md files of any newly downloaded package(s).
        pattern: "output_archive/*/README.md"
        ontologies: []
  versions:
    - versions.yml:
        type: file
        description: File containing software versions
        pattern: "versions.yml"
        ontologies:
          - edam: "<http://edamontology.org/format_3750>" # YAML
[...]
The mangled blocks for
geno
,
snp
and
ind
outputs are then causing more linting failures:
Copy code
╭─ [✗] 1 Module Test Failed ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                ╷                                        ╷                                                                                                                                                │
│ Module name    │ File path                              │ Test message                                                                                                                                   │
│╶───────────────┼────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╴│
│ trident/fetch  │ modules/nf-core/trident/fetch/meta.yml │ meta_yml_valid: The meta.yml of the module trident/fetch is not valid: {'output_archive//.{bim': {}} is not valid under any of the given       │
│                │                                        │ schemas. Check the entry for output.                                                                                                           │
│                ╵                                        ╵                                                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
(sorry for the huge block 🙈 )
Here’s the output block of the module:
Copy code
output:
    // All outputs are optional as fetch will check if the package already exists in the provided archive directories, and skip download if so.
    path "output_archive/*/POSEIDON.yml", emit: poseidon_yml, optional: true
    path "output_archive/*/*.{bed,geno,vcf,bed.gz,geno.gz,vcf.gz}", emit: geno, optional: true
    path "output_archive/*/*.{bim,snp,bim.gz,snp.gz}", emit: snp, optional: true
    path "output_archive/*/*.{fam,ind,fam.gz,ind.gz}", emit: ind, optional: true
    path "output_archive/*/*.janno", emit: janno, optional: true
    path "output_archive/*/*.ssf", emit: ssf, optional: true
    path "output_archive/*/*.bib", emit: bib, optional: true
    path "output_archive/*/CHANGELOG.md", emit: changelog, optional: true
    path "output_archive/*/README.md", emit: readme, optional: true
    path "versions.yml", emit: versions
It looks like the
*.{bed,geno,vcf,bed.gz,geno.gz,vcf.gz}
suffix block is not recognised correctly by the tools, and turned into the mangled output block in the meta?
This is nf-core tools 3.4.1
m
that’s a weird one. can you make in issue please?
👍 1