type: map mapping:

layout:
    type: str
    required: true
    enum:
        #- base_slides
        - tutorial_slides
        - introduction_slides
        - tutorial_slides_ai4life
    description: |
        The layout to use. Generally you should use `tutorial_slides` and no other value.
title:
    type: str
    required: true
    description: |
        Title of the slides (it will appear on the slides and the topic listing)
    _examples:
        - Introduction to CRISPR screen analysis
        - High Performance Computing for Pairwise Genome Comparison
        - Circos
questions:
    type: seq
    sequence:
        - type: str
          required: true
    description: |
        list of questions that will be addressed in the slides
    _examples:
        - What is ATAC-Seq?
        - What are Galaxy Interactive Environments (GIEs)?
        - How to visualize your genome after automated annotations have been performed?
objectives:
    type: seq
    sequence:
        - type: str
          required: true
    description: |
        list of learning objectives for the tutorial

        A learning objective is a single sentence describing what a learner will be able to do once they have done the tutorial. Generally it is best to follow a 2C or 3C learning objective such as:

        - Compute (Skill)
        - multiple whole genome assemblies (Objective)
        - in such a way to develop big data processing skills (Result)
    _examples:
        - Understand the basic concepts behind phylogenetic trees, as applied to *Mycobacterium tuberculosis*
        - Explore Biodiversity data with taxonomic, temporal and geographical informations
        - Generate a DotPlot emulating the original paper using a different analysis tool
key_points:
    type: seq
    sequence:
        - type: str
          required: true
    description: |
        List of take-home messages. This information will appear at the end
        of the slides. These should really be a key point, something that
        should stick in their mind; what you want them to take home from
        the slides.
    _examples:
        - Pangeo is an inclusive community promoting open, reproducible and scalable science.
        - Balanced batches and replicates allow bioinformatic batch correction
        - Galaxy workflows can download images from the IDR, selecting specific channels, time points, z-stack positions and crop the image in different ways.
edam_ontology:
    type: seq
    sequence:
      - type: str
        pattern: /^topic_[0-9]+$/
        description: |
            An edam ontology id that describes the resource
        _examples:
            - topic_3173
video:
    type: bool
    description: |
        This enables automatic slide-to-video conversion. See the [documentation of that feature](/training-material/topics/contributing/tutorials/slides-with-video/tutorial.html) for more information about this feature.
        If enabled, you must provide good speaker notes for every single slide.
contributors:
    type: seq
    sequence:
        - type: str
          required: true
          enum:
          - CONTRIBUTORS
          - GRANTS
          - ORGANISATIONS
    description: |
        List of tutorial contributors. Please use `contributions` instead as it provides more detailed accounting of tutorial history.
    _examples:
        - hexylena
        - shiltemann
contributions:
    required: true
    description: |
        List of slide contributors. Here we break them down into several broad categories to help contributors identify how they contributed to a specific tutorial.
    _examples: |
        contributions:
            authorship:
                - shiltemann
                - bebatut
            editing:
                - hexylena
                - bebatut
                - natefoo
            testing:
                - bebatut
            infrastructure:
                - natefoo
            translation:
                - shiltemann
            funding:
                - gallantries
    type: map
    mapping:
        authorship:
            description: These entities wrote the bulk of the training material, they may have done the analysis, built the workflow, and wrote the text themselves.
            type: seq
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
        editing:
            type: seq
            description: These entities edited the text, either for spelling and grammar, flow, GTN-fit, or other similar editing categories
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
        testing:
            type: seq
            description: These entities tested the tutorial to ensure it works correctly for students, or reported issues with the tutorial.
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
        ux:
            type: seq
            description: These entities contributed UX or Design improvements to this tutorial or the GTN as a whole
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
        infrastructure:
            type: seq
            description: These entities managed and provided infrastructure to the GTN or for training purposes
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
              - GRANTS
        funding:
            type: seq
            description: These entities provided funding support for the development of this resource
            sequence:
            - type: str
              enum:
              - ORGANISATIONS
              - GRANTS
        translation:
            type: seq
            description: These entities did translation and localisation work on this resource
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
        data:
            type: seq
            description: These entities provided data for this resource
            sequence:
            - type: str
              enum:
              - CONTRIBUTORS
              - ORGANISATIONS
              - GRANTS
hands_on:
    type: str
    enum:
        - external
hands_on_url:
    type: str
subtopic:
    type: str
    description: |
        if the topic has [multiple subtopics defined](/training-material/topics/contributing/tutorials/create-new-topic/tutorial.html#adapt-the-metadata-for-your-topic), you can assign your tutorial to one of those subtopics here. Without this, the tutorial will appear in the "Other tutorials" section on the topic page.
    _examples:
        - single-cell
priority:
    type: int
    description: |
        This field allows ordering resources within the topic list. Learning resources with lower numbered priority come before those with higher numbers.
    _examples: 1
zenodo_link:
    type: str
    description: |
        link on Zenodo to the input data for the tutorial
    _examples:
        - "https://zenodo.org/record/3706539"
logo:
    type: str
    enum:
      - GTN
      - assets/images/gat.png
      - assets/images/gga.png
      - assets/images/ncbi.png
      - /assets/images/elixir-uk.png
      - /assets/images/BioNT_Logo.png
      - topics/ai4life/images/AI4Life-logo_giraffe-nodes.png
      - assets/images/genomics_intro.png
      - shared/images/biocommons-utas.png
      - shared/images/dataplant-logo.png
    required: true
    description: |
        A logo identifier (e.g. GTN) should be used by default, but may be swapped out for special logos from the assets folder.
class:
    type: str
    description: A default CSS class applied to slides
tags:
    type: seq
    sequence:
        - type: str
          required: true
    description: |
        A free form list of tags that are relevant for your tutorial.
    _examples:
        - covid-19
        - git-gat
translations:
    type: seq
    sequence:
        - type: str
    description: |
        If alternative translations of a material are available, then use this key to indicate which languages have been manually translated.
    _examples:
        - en
level:
    type: str
    enum:
        - Introductory
        - Intermediate
        - Advanced
    description: |
        Here give a feeling of what level the material is at.
time_estimation:
    type: str
    pattern: /^(?:([0-9]*)[Hh])*(?:([0-9]*)[Mm])*(?:([0-9.]*)[Ss])*$/
    description: |
        An estimation of the time needed to complete the hands-on. It should look like 10M or 1H30M
redirect_from:
    type: seq
    sequence:
        - type: str
    description: |
        If a tutorial is renamed to a new location, use this field to list prior locations from which this tutorial was accessible.
    _examples:
    - /topics/sequence-analysis/tutorials/de-novo-rad-seq/tutorial
lang:
    type: str
    enum:
        - es
        - en
    description: |
        The document language.
voice:
    type: map
    description: |
        For materials which are automatically converted into videos via the available mechanisms, this field declares which voice should be used. If this field is not declared, a random voice will be chosen from a list of the best available voices from AWS Polly.
    mapping:
        id:
            type: str
            required: true
        lang:
            type: str
            required: true
        neural:
            type: bool
            required: true
        endOfSentencePause:
            type: float
        endOfSlidePause:
            type: float
    _examples: |
        voice:
            id: Lupe
            lang: es-US
            neural: true
follow_up_training:
    type: seq
    description: list of resources that the reader of the material could follow at the end of the tutorial
    _examples:
        - |
            type: internal
            topic_name: statistics
            tutorials:
                - age-prediction-with-ml
        - |
            type: external
            title: The Unix Shell
            link: "http://swcarpentry.github.io/shell-novice/"
        - |
            type: none
            title: "A VM with at least 2 vCPUs and 4 GB RAM, preferably running Ubuntu 18.04 - 20.04."
    sequence:
        - type: map
          required: true
          mapping:
              type:
                  type: str
                  required: true
                  enum:
                      - internal
                      - external
                      - none
                  description: |
                    the type of link
              topic_name:
                  type: str
                  description: |
                    [Internal Only] The name of the topic
              tutorials:
                  type: seq
                  sequence:
                      - type: str
                  description: |
                      [Internal Only] List of required tutorials inside that topic
              title:
                  type: str
                  description: |
                    Title of the external resource
              link:
                  type: str
                  description: |
                    URL of the external resource
requirements:
    type: seq
    description: List of resources that the reader of the material should be familiar with before starting this training. The structure is identical to `follow_up_training`.
    _examples:
        - |
            type: internal
            topic_name: statistics
            tutorials:
                - age-prediction-with-ml
        - |
            type: external
            title: The Unix Shell
            link: "http://swcarpentry.github.io/shell-novice/"
        - |
            type: none
            title: "A VM with at least 2 vCPUs and 4 GB RAM, preferably running Ubuntu 18.04 - 20.04."
    sequence:
        - type: map
          required: true
          mapping:
              type:
                  type: str
                  required: true
                  enum:
                      - internal
                      - external
                      - none
                  description: |
                    the type of link
              topic_name:
                  type: str
                  description: |
                    [Internal Only] The name of the topic
              tutorials:
                  type: seq
                  sequence:
                      - type: str
                  description: |
                      [Internal Only] List of required tutorials inside that topic
              title:
                  type: str
                  description: |
                    Title of the external resource
              link:
                  type: str
                  description: |
                    URL of the external resource
copyright:
    type: str
    description: |
      A copyright attribution string, as required by some licenses.
    _examples:
        - © Copyright 2021-2023 University of Technology Sydney, The University of Manchester UK and RO-Crate contributors
license:
    type: str
    description: |
        An [SPDX](https://spdx.org/) identifier for the alternative license that is used for that particular material. This is **only** relevant for materials which have been imported from an external source and were originally licensed under another license. For new materials we strongly encourage contributors to not use this key as materials are CC-BY, by default.
draft:
    type: bool
    description: |
        `true` to hide your tutorial from the topic page (optional). This is useful if you need a tutorial for a workshop, but have not finished making it up to GTN standards.
og_image:
    type: str
    description: |
        A custom image to show on the link preview in external applications (e.g. when the URL is pasted into Twitter)
    pattern: /^\/.*/
    _examples:
        - /assets/images/gat.png

recordings:
    type: seq
    sequence:
    - type: map
      mapping:
        captioners:
          type: seq
          sequence:
           - type: str
             enum:
             - CONTRIBUTORS
        speakers:
          type: seq
          sequence:
          - type: str
            enum:
            - CONTRIBUTORS
        bot-timestamp:
          type: int
        date:
          type: str
          required: true
          pattern: /[0-9]{4}-[0-9]{2}-[0-9]{2}/
        galaxy_version:
          type: str
          pattern: /[0-9]{2}\.[0-9]{1,2}/
        length:
          type: str
          pattern: /^(?:([0-9]*)[Hh])*(?:([0-9]*)[Mm])*(?:([0-9.]*)[Ss])*$/
        youtube_id:
          type: str
          pattern: /[A-Za-z0-9_-]{9,13}/
        type:
          type: str
        archive-id:
          type: str
        description:
          type: str