  argument_groups:
    - name: Input dataset (query) arguments
      arguments:
        - name: "--input"
          type: file
          direction: input
          required: true
          description: "The query data to transfer the labels to. Should be a .h5mu file."
          info:
            label: "Query"
            file_format:
              type: h5mu
              mod:
                rna:
                  description: "Modality in AnnData format containing RNA data."
                  required: true
                  slots:
                    X:
                      type: double
                      name: features
                      required: false
                      description: |
                        The expression data to use for the classifier's inference, if `--input_obsm_features` argument is not provided.
                    obsm:
                      - type: "double"
                        name: "features"
                        example: X_scvi
                        required: false
                        description: |
                          The embedding to use for the classifier's inference. Override using the `--input_obsm_features` argument. If not provided, the `.X` slot will be used instead.
                          Make sure that embedding was obtained in the same way as the reference embedding (e.g. by the same model or preprocessing).
        - name: "--modality"
          type: string
          default: "rna"
          required: false
          description: Which modality to use.
        - name: "--input_obsm_features"
          type: string
          required: false
          description: |
            The `.obsm` key of the embedding to use for the classifier's inference. If not provided, the `.X` slot will be used instead.
            Make sure that embedding was obtained in the same way as the reference embedding (e.g. by the same model or preprocessing).
          example: X_scvi

    - name: Reference dataset arguments
      arguments:
        - name: "--reference"
          type: "file"
          required: false
          description: "The reference data to train classifiers on."
          example: reference.h5mu
          info:
            label: "Reference"
            file_format:
              type: h5mu
              mod:
                rna:
                  description: "Modality in AnnData format containing RNA data."
                  required: true
                  slots:
                    X:
                      type: double
                      name: features
                      required: false
                      description: |
                        The expression data to use for the classifier's training, if `--input_obsm_features` argument is not provided.
                    obsm:
                      - type: "double"
                        name: "features"
                        example: X_scvi
                        description: |
                          The embedding to use for the classifier's training. Override using the `--reference_obsm_features` argument.
                          Make sure that embedding was obtained in the same way as the query embedding (e.g. by the same model or preprocessing).
                        required: true
                    obs:
                      - type: "string"
                        name: "targets"
                        multiple: true
                        example: [ ann_level_1, ann_level_2, ann_level_3, ann_level_4, ann_level_5, ann_finest_level ]
                        description: "The target labels to transfer. Override using the `--reference_obs_targets` argument."
                        required: true
        - name: "--reference_obsm_features"
          type: string
          required: false
          description: |
            The `.obsm` key of the embedding to use for the classifier's training. If not provided, the `.X` slot will be used instead.
            Make sure that embedding was obtained in the same way as the query embedding (e.g. by the same model or preprocessing).
          example: X_scvi
        - name: "--reference_obs_targets"
          type: string
          default: [ ann_level_1, ann_level_2, ann_level_3, ann_level_4, ann_level_5, ann_finest_level ]
          required: false
          multiple: true
          description: The `.obs` key(s) of the target labels to tranfer.

    - name: Outputs
      arguments:
        - name: "--output"
          type: "file"
          direction: output
          required: true
          description: "The query data in .h5mu format with predicted labels transfered from the reference."
          info:
            label: "Output data"
            file_format:
              type: h5mu
              mod:
                rna:
                  description: "Modality in AnnData format containing RNA data."
                  required: true
                  obs:
                    - type: "string"
                      name: "predictions"
                      description: "The predicted labels. Override using the `--output_obs_predictions` argument."
                      required: true
                    - type: "double"
                      name: "probability"
                      description: "The probability of the predicted labels. Override using the `--output_obs_probability` argument."
                      required: false
                  obsm:
                    - type: "double"
                      name: "X_scvi"
                      description: 
                        The embedding used for the classifier's inference. Could have any name,
                        specified by `input_obsm_features` argument."
                      required: false
        - name: "--output_obs_predictions"
          type: string
          example: 
          required: false
          multiple: true
          description: |
            In which `.obs` slots to store the predicted information.
            If provided, must have the same length as `--reference_obs_targets`.
            If empty, will default to the `reference_obs_targets` combined with the `"_pred"` suffix.
        - name: "--output_obs_probability"
          type: string
          example: 
          required: false
          multiple: true
          description: |
            In which `.obs` slots to store the probability of the predictions.
            If provided, must have the same length as `--reference_obs_targets`.
            If empty, will default to the `reference_obs_targets` combined with the `"_probability"` suffix.
      __merge__: [., /src/base/h5_compression_argument.yaml]

