$schema: "http://json-schema.org/draft-06/schema#"

description: snakemake configuration file

type: object
properties:
    steps:
        type: array
        items:
            type: string
            enum:
                - "preprocessing"
                - "assembly"
                - "polishing"
                - "mapping"
                - "annotation"
                - "analysis"
                - "taxonomy"
    steps_annotation:
        steps:
            type: array
            items:
                type: string
                enum:
                    - "rgi"
                    - "plasflow"
                    - "minced"
                    - "casc"
                    - "barrnap"
                    - "kegg"
    steps_analysis:
        steps:
            type: array
            items:
                type: string
                enum:
                    - "quast"
                    - "mash"
                    - "mashmap"
                    - "fastani"
                    - "mummer"
                    - "cdhit"
                    - "diamond"
    steps_taxonomy:
        steps:
            type: array
            items:
                type: string
                enum:
                    - "kraken2"
                    - "kaiju"
    work_dir:
        type: string
    db_dir:
        type: string
    results_dir:
        type: string
    data:
        type: object
        properties:
            metag:
                type: object
                properties:
                    sr: 
                        r1:
                            type: string
                        r2:
                            type: string
                    ont:
                        dirs:
                            type: array
                            items:
                                type: string
                        files:
                            type: array
                            items:
                                type: string
                        fastq:
                            type: string
            metat:
                type: object
                properties:
                    sr:
                        type: object
                        properties:
                            r1:
                                type: string
                            r2:
                                type: string
    guppy:
        type: object
        properties:
            config:
                type: string
            gpu:
                type: object
                properties:
                    path:
                        type: string
                    bin:
                        type: string
                    version:
                        type: string
                    records_per_fastq:
                        type: number
                    chunk_size:
                        type: number
                    chunks_per_runner:
                        type: number
                    num_callers:
                        type: number
                    runners_per_device:
                        type: number
                    gpu_device:
                        type: string
                    threads:
                        type: number
    fastp:
        type: object
        properties:
            threads:
                type: number
            min_length:
                type: number
    fastqc:
        type: object
        properties:
            threads:
                type: number
    assemblers:
        type: object
        properties:
            sr:
                type: array
                items:
                    type: string
            lr:
                type: array
                items:
                    type: string
            hy:
                type: array
                items:
                    type: string
    flye:
        type: object
        properties:
            threads:
                type: number
    metaspades:
        type: object
        properties:
            threads:
                type: number
    megahit:
        type: object
        properties:
            threads:
                type: number
    operams:
        type: object
        properties:
            threads:
                type: number
    medaka:
        type: object
        properties:
            threads:
                type: number
                maximum: 10
            model:
                type: string
    racon:
        type: object
        properties:
            threads:
                type: number
    bwa:
        type: object
        properties:
            threads:
                type: number
            long_reads_index:
                opts:
                    type: string
    samtools:
        type: object
        properties:
            sort:
                type: object
                properties:
                    chunk_size:
                        type: string
    diamond:
        type: object
        properties:
            threads:
                type: number
            db:
                type: string
    casc:
        type: object
        properties:
            threads:
                type: number
    minced:
        type: object
    plasflow:
        type: object
        properties:
            threshold:
                type: number
            minlen:
                type: number
    rgi:
        type: object
        properties:
            threads:
                type: number
            db_url:
                type: string
            alignment_tool:
                type: string
    barrnap:
        type: object
        properties:
            threads:
                type: number
            kingdom:
                type: array
                items:
                    type: string
                    enum:
                        - "bac"
                        - "arc"
                        - "euk"
                        - "mito"
    cdhit:
        type: object
        properties:
            threads:
                type: number
    bbmap:
        type: object
        properties:
            threads:
                type: number
    quast:
        type: object
        properties:
            threads:
                type: number
    kraken2:
        type: object
        properties:
            threads:
                type: number
            db:
                type: object
            class:
                type: object
                properties:
                    sr:
                        type: string
                    lr:
                        type: string
                    contigs:
                        type: string
    kaiju:
        type: object
        properties:
            threads:
                type: number
            db:
                type: object
            ranks:
                type: array
                items:
                    type: string
                    enum:
                        - "phylum"
                        - "class"
                        - "order"
                        - "family"
                        - "genus"
                        - "species"
    mash:
        type: object
        properties:
            threads:
                type: number