Also another thing I noticed was that using `nf-co...
# tools
t
Also another thing I noticed was that using
nf-core lint --fix
to update the
meta.yml
would create an updated topic block for the versions, where some attributes were of type
eval
, which also threw an error when linting. I had to swap those to
string
in my PR to get linting to chill (I just followed what the last merged module on main had done). Though I think this might have been brought up before.
m
in the same PR?
t
yes
m
it should be type eval...
ah, the blogpost is outdated there...
please refer to the official migration documentation: https://nf-co.re/docs/tutorials/migrate_to_topics/update_modules
t
Thanks Matthias. I’ll have another look. I’m pretty sure than when I added them as
eval
the linter was unhappy with me, but I don’t think I ever committed those changes to remote. I’ll try again and get back to you
m
be sure to have the latest dev version of tools for modules linting
t
i.e. the dev branch, not the latest release?
m
exactly
salute 1
t
ok, tried again. the issue was the pre-commit, which does not like the committing of evals. Here’s the updated meta.yml:
Copy code
name: "multivcfanalyzer"
description: SNP table generator from GATK UnifiedGenotyper with functionality
  geared for aDNA
keywords:
  - vcf
  - ancient DNA
  - aDNA
  - SNP
  - GATK UnifiedGenotyper
  - SNP table
tools:
  - "multivcfanalyzer":
      description: "MultiVCFAnalyzer is a VCF file post-processing tool tailored for
        aDNA. License on Github repository."
      homepage: "<https://github.com/alexherbig/MultiVCFAnalyzer>"
      documentation: "<https://github.com/alexherbig/MultiVCFAnalyzer>"
      tool_dev_url: "<https://github.com/alexherbig/MultiVCFAnalyzer>"
      doi: "10.1038/nature13591"
      licence:
        - "GPL >=3"
      identifier: ""
input:
  - - meta:
        type: map
        description: |
          Groovy Map containing sample information
          e.g. `[ id:'sample1', single_end:false ]`
    - vcfs:
        type: file
        description: One or a list of uncompressed VCF file
        pattern: "*.vcf"
        ontologies: []
  - - meta2:
        type: map
        description: |
          Groovy Map containing sample information
          e.g. `[ id:'sample1', single_end:false ]`
    - fasta:
        type: file
        description: Reference genome VCF was generated against
        pattern: "*.{fasta,fna,fa}"
        ontologies: []
  - - meta3:
        type: map
        description: |
          Groovy Map containing sample information
          e.g. `[ id:'sample1', single_end:false ]`
    - snpeff_results:
        type: file
        description: Results from snpEff in txt format (Optional)
        pattern: "*.txt"
        ontologies: []
  - - meta4:
        type: map
        description: |
          Groovy Map containing sample information
          e.g. `[ id:'sample1', single_end:false ]`
    - gff:
        type: file
        description: GFF file corresponding to reference genome fasta (Optional)
        pattern: "*.gff"
        ontologies: []
  - allele_freqs:
      type: boolean
      description: |
        Whether to include the percentage of reads a given allele is
        present in in the SNP table.
  - genotype_quality:
      type: integer
      description: |
        Minimum GATK genotyping threshold threshold of which a SNP call
        falling under is 'discarded'
  - coverage:
      type: integer
      description: |
        Minimum number of a reads that a position must be covered by to be
        reported
  - homozygous_freq:
      type: integer
      description: Fraction of reads a base must have to be called 'homozygous'
  - heterozygous_freq:
      type: integer
      description: |
        Fraction of which whereby if a call falls above this value, and lower
        than the homozygous threshold, a base will be called 'heterozygous'.
  - - meta5:
        type: map
        description: |
          Groovy Map containing sample information
          e.g. `[ id:'sample1', single_end:false ]`
    - gff_exclude:
        type: file
        description: |
          file listing positions that will be 'filtered' (i.e. ignored)
          (Optional)
        pattern: "*.vcf"
        ontologies: []
output:
  full_alignment:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - fullAlignment.fasta.gz:
          type: file
          description: Fasta a fasta file of all positions contained in the VCF
            files i.e. including ref calls
          pattern: ".fasta.gz"
          ontologies:
            - edam: <http://edamontology.org/format_3615>
            - edam: <http://edamontology.org/format_3989>
  info_txt:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - info.txt:
          type: file
          description: Information about the run
          pattern: ".txt"
          ontologies: []
  snp_alignment:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - snpAlignment.fasta.gz:
          type: file
          description: A fasta file of just SNP positions with samples only
          pattern: ".fasta.gz"
          ontologies:
            - edam: <http://edamontology.org/format_3615>
            - edam: <http://edamontology.org/format_3989>
  snp_genome_alignment:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - snpAlignmentIncludingRefGenome.fasta.gz:
          type: file
          description: A fasta file of just SNP positions with reference genome
          pattern: ".fasta.gz"
          ontologies:
            - edam: <http://edamontology.org/format_3615>
            - edam: <http://edamontology.org/format_3989>
  snpstatistics:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - snpStatistics.tsv:
          type: file
          description: Some basic statistics about the SNP calls of each sample
          pattern: ".tsv"
          ontologies:
            - edam: <http://edamontology.org/format_3475>
  snptable:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - snpTable.tsv:
          type: file
          description: Basic SNP table of combined positions taken from each VCF
            file
          pattern: ".tsv"
          ontologies:
            - edam: <http://edamontology.org/format_3475>
  snptable_snpeff:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - snpTableForSnpEff.tsv:
          type: file
          description: Input file for SnpEff
          pattern: ".tsv"
          ontologies:
            - edam: <http://edamontology.org/format_3475>
  snptable_uncertainty:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - snpTableWithUncertaintyCalls.tsv:
          type: file
          description: Same as above, but with lower case characters indicating
            uncertain calls
          pattern: ".tsv"
          ontologies:
            - edam: <http://edamontology.org/format_3475>
  structure_genotypes:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - structureGenotypes.tsv:
          type: file
          description: Input file for STRUCTURE
          pattern: ".tsv"
          ontologies:
            - edam: <http://edamontology.org/format_3475>
  structure_genotypes_nomissing:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - structureGenotypes_noMissingData-Columns.tsv:
          type: file
          description: Alternate input file for STRUCTURE
          pattern: ".tsv"
          ontologies:
            - edam: <http://edamontology.org/format_3475>
  json:
    - - meta:
          type: map
          description: Groovy Map containing sample information
      - MultiVCFAnalyzer.json:
          type: file
          description: Summary statistics in MultiQC JSON format
          pattern: ".json"
          ontologies:
            - edam: <http://edamontology.org/format_3464>
  versions_multivcfanalyzer:
    - - ${task.process}:
          type: string
          description: The name of the process
      - multivcfanalyzer:
          type: string
          description: The name of the tool
      - multivcfanalyzer -h | head -n 1 | cut -f 3 -d " ":
          type: eval
          description: The expression to obtain the version of the tool
  versions_tabix:
    - - ${task.process}:
          type: string
          description: The name of the process
      - tabix:
          type: string
          description: The name of the tool
      - tabix -h 2>&1 | grep Version | cut -f 2 -d " ":
          type: eval
          description: The expression to obtain the version of the tool
topics:
  versions:
    - - ${task.process}:
          type: string
          description: The name of the process
      - multivcfanalyzer:
          type: string
          description: The name of the tool
      - multivcfanalyzer -h | head -n 1 | cut -f 3 -d " ":
          type: eval
          description: The expression to obtain the version of the tool
    - - ${task.process}:
          type: string
          description: The name of the process
      - tabix:
          type: string
          description: The name of the tool
      - tabix -h 2>&1 | grep Version | cut -f 2 -d " ":
          type: eval
          description: The expression to obtain the version of the tool
authors:
  - "@jfy133"
maintainers:
  - "@jfy133"
  - "@TCLamnidis"
And here’s the errors:
Copy code
Match meta.ymls in one of the subdirectories of modules/nf-core............................Failed
- hook id: check-jsonschema
- exit code: 1

Schema validation errors were encountered.
  modules/nf-core/multivcfanalyzer/meta.yml::$.output.versions_multivcfanalyzer[0]: [{'${task.process}': {'type': 'string', 'description': 'The name of the process'}}, {'multivcfanalyzer': {'type': 'string', 'description': 'The name of the tool'}}, {'multivcfanalyzer -h | head -n 1 | cut -f 3 -d " "': {'type': 'eval', 'description': 'The expression to obtain the version of the tool'}}] is not valid under any of the given schemas
  Underlying errors caused this.

  Best Match:
    $.output.versions_multivcfanalyzer[0]: [{'${task.process}': {'type': 'string', 'description': 'The name of the process'}}, {'multivcfanalyzer': {'type': 'string', 'description': 'The name of the tool'}}, {'multivcfanalyzer -h | head -n 1 | cut -f 3 -d " "': {'type': 'eval', 'description': 'The expression to obtain the version of the tool'}}] is not of type 'object'
  Best Deep Match:
    $.output.versions_multivcfanalyzer[0][2]['multivcfanalyzer -h | head -n 1 | cut -f 3 -d " "'].type: 'eval' is not one of ['map', 'file', 'directory', 'string', 'integer', 'float', 'boolean', 'list']
  modules/nf-core/multivcfanalyzer/meta.yml::$.output.versions_tabix[0]: [{'${task.process}': {'type': 'string', 'description': 'The name of the process'}}, {'tabix': {'type': 'string', 'description': 'The name of the tool'}}, {'tabix -h 2>&1 | grep Version | cut -f 2 -d " "': {'type': 'eval', 'description': 'The expression to obtain the version of the tool'}}] is not valid under any of the given schemas
  Underlying errors caused this.

  Best Match:
    $.output.versions_tabix[0]: [{'${task.process}': {'type': 'string', 'description': 'The name of the process'}}, {'tabix': {'type': 'string', 'description': 'The name of the tool'}}, {'tabix -h 2>&1 | grep Version | cut -f 2 -d " "': {'type': 'eval', 'description': 'The expression to obtain the version of the tool'}}] is not of type 'object'
  Best Deep Match:
    $.output.versions_tabix[0][2]['tabix -h 2>&1 | grep Version | cut -f 2 -d " "'].type: 'eval' is not one of ['map', 'file', 'directory', 'string', 'integer', 'float', 'boolean', 'list']
m
could it be that your branch is very outdated with respect to
master
and therefor has the old schema file
t
yes…. homer disappear
thank you so much for the help Matthias! 🙏
m
you are welcome!