{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/benchling/json-schema/NucleotideAlignmentBase.json",
  "title": "NucleotideAlignmentBase",
  "properties": {
    "algorithm": {
      "enum": [
        "mafft",
        "clustalo"
      ],
      "type": "string"
    },
    "clustaloOptions": {
      "description": "Options to pass to the ClustalO algorithm, only applicable for ClustalO.",
      "properties": {
        "maxGuidetreeIterations": {
          "default": -1,
          "description": "Max guide tree iterations within combined iterations. Use -1 for no max (all iterations will include guide tree iterations).",
          "maximum": 5,
          "minimum": -1,
          "type": "integer"
        },
        "maxHmmIterations": {
          "default": -1,
          "description": "Max HMM iterations within combined iterations. Use -1 for no max (all iterations will include HMM iterations).",
          "maximum": 5,
          "minimum": -1,
          "type": "integer"
        },
        "mbedGuideTree": {
          "default": true,
          "description": "Whether mBed-like clustering guide tree should be used (faster to use it).",
          "type": "boolean"
        },
        "mbedIteration": {
          "default": true,
          "description": "Whether mBed-like clustering iteration should be used (faster to use it).",
          "type": "boolean"
        },
        "numCombinedIterations": {
          "default": 0,
          "description": "Number of (combined guide-tree/HMM) iterations.",
          "maximum": 5,
          "minimum": 0,
          "type": "integer"
        }
      },
      "type": "object"
    },
    "files": {
      "items": {
        "oneOf": [
          {
            "properties": {
              "sequenceId": {
                "example": "seq_3cxbVcCf",
                "type": "string"
              }
            },
            "type": "object"
          },
          {
            "$ref": "#/components/schemas/NucleotideAlignmentFile"
          }
        ]
      },
      "type": "array"
    },
    "mafftOptions": {
      "description": "Options to pass to the MAFFT algorithm, only applicable for MAFFT.",
      "properties": {
        "adjustDirection": {
          "default": "fast",
          "description": "Adjust direction:\n * `fast`: Enabled, quickly.\n * `accurate`: Enabled, accurately (slow).\n * `disabled`: Disabled, fastest.\n",
          "enum": [
            "fast",
            "accurate",
            "disabled"
          ],
          "type": "string"
        },
        "gapExtensionPenalty": {
          "default": 0.0,
          "description": "Gap extension penalty.",
          "type": "number"
        },
        "gapOpenPenalty": {
          "default": 1.53,
          "description": "Gap open penalty.",
          "type": "number"
        },
        "maxIterations": {
          "default": 0,
          "description": "Max refinement iterations. Not applicable for auto strategy, as it will be selected automatically.",
          "type": "integer"
        },
        "retree": {
          "default": 2,
          "description": "Tree rebuilding. Only used for 6-mer strategy.",
          "type": "integer"
        },
        "strategy": {
          "default": "auto",
          "description": "MAFFT Strategy:\n * `auto`: Pick a strategy automatically based on the count and size of inputs.\n * `sixmer`: Use 6-mer distance for constructing the guide tree.\n * `localpair`: Compute local pairwise alignments using Smith-Waterman for constructing the guide tree and iterative refinement.\n * `globalpair`: Compute global pairwise alignments using Needleman-Wunsch for constructing the guide tree and iterative refinement.\n",
          "enum": [
            "auto",
            "sixmer",
            "localpair",
            "globalpair"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "name": {
      "example": "my new alignment",
      "maxLength": 255,
      "type": "string"
    }
  },
  "required": [
    "algorithm",
    "files"
  ],
  "type": "object"
}