{
  "title": "InputModel",
  "type": "object",
  "properties": {
    "datasets": {
      "title": "Datasets",
      "description": "list of dataset containers to load",
      "type": "array",
      "items": {
        "$ref": "#/definitions/DataContainer"
      }
    },
    "timeseries": {
      "title": "Timeseries",
      "description": "List of timeseries to load",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Timeseries"
      }
    }
  },
  "definitions": {
    "ytField": {
      "title": "ytField",
      "type": "object",
      "properties": {
        "field_type": {
          "title": "Field Type",
          "description": "a field type in the yt dataset",
          "type": "string"
        },
        "field_name": {
          "title": "Field Name",
          "description": "a field in the yt dataset",
          "type": "string"
        },
        "take_log": {
          "title": "Take Log",
          "description": "if true, will apply log10 to the selected data",
          "default": true,
          "type": "boolean"
        }
      }
    },
    "Left_Edge": {
      "title": "Left_Edge",
      "type": "object",
      "properties": {
        "value": {
          "title": "Value",
          "description": "3-element unitful tuple.",
          "default": [
            0.0,
            0.0,
            0.0
          ],
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ]
        },
        "unit": {
          "title": "Unit",
          "description": "the unit length string.",
          "default": "code_length",
          "type": "string"
        }
      }
    },
    "Right_Edge": {
      "title": "Right_Edge",
      "type": "object",
      "properties": {
        "value": {
          "title": "Value",
          "description": "3-element unitful tuple.",
          "default": [
            1.0,
            1.0,
            1.0
          ],
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ]
        },
        "unit": {
          "title": "Unit",
          "description": "the unit length string.",
          "default": "code_length",
          "type": "string"
        }
      }
    },
    "Region": {
      "title": "Region",
      "type": "object",
      "properties": {
        "fields": {
          "title": "Fields",
          "description": "list of fields to load for this selection",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ytField"
          }
        },
        "left_edge": {
          "title": "Left Edge",
          "description": "the left edge (min x, min y, min z)",
          "allOf": [
            {
              "$ref": "#/definitions/Left_Edge"
            }
          ]
        },
        "right_edge": {
          "title": "Right Edge",
          "description": "the right edge (max x, max y, max z)",
          "allOf": [
            {
              "$ref": "#/definitions/Right_Edge"
            }
          ]
        },
        "resolution": {
          "title": "Resolution",
          "description": "the resolution at which to sample between the edges.",
          "default": [
            400,
            400,
            400
          ],
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": [
            {
              "type": "integer"
            },
            {
              "type": "integer"
            },
            {
              "type": "integer"
            }
          ]
        },
        "rescale": {
          "title": "Rescale",
          "description": "rescale the final image between 0,1",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "Length_Tuple": {
      "title": "Length_Tuple",
      "type": "object",
      "properties": {
        "value": {
          "title": "Value",
          "description": "3-element unitful tuple.",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ]
        },
        "unit": {
          "title": "Unit",
          "description": "the unit length string.",
          "default": "code_length",
          "type": "string"
        }
      }
    },
    "Length_Value": {
      "title": "Length_Value",
      "type": "object",
      "properties": {
        "value": {
          "title": "Value",
          "description": "Single unitful value.",
          "type": "number"
        },
        "unit": {
          "title": "Unit",
          "description": "the unit length string.",
          "default": "code_length",
          "type": "string"
        }
      }
    },
    "Slice": {
      "title": "Slice",
      "type": "object",
      "properties": {
        "fields": {
          "title": "Fields",
          "description": "list of fields to load for this selection",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ytField"
          }
        },
        "normal": {
          "title": "Normal",
          "description": "the normal axis of the slice",
          "type": "string"
        },
        "center": {
          "title": "Center",
          "description": "The center point of the slice, default domain center",
          "allOf": [
            {
              "$ref": "#/definitions/Length_Tuple"
            }
          ]
        },
        "slice_width": {
          "title": "Slice Width",
          "description": "The slice width, defaults to full domain",
          "allOf": [
            {
              "$ref": "#/definitions/Length_Value"
            }
          ]
        },
        "slice_height": {
          "title": "Slice Height",
          "description": "The slice width, defaults to full domain",
          "allOf": [
            {
              "$ref": "#/definitions/Length_Value"
            }
          ]
        },
        "resolution": {
          "title": "Resolution",
          "description": "the resolution at which to sample the slice",
          "default": [
            400,
            400
          ],
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": [
            {
              "type": "integer"
            },
            {
              "type": "integer"
            }
          ]
        },
        "periodic": {
          "title": "Periodic",
          "description": "should the slice be periodic? default False.",
          "default": false,
          "type": "boolean"
        },
        "rescale": {
          "title": "Rescale",
          "description": "rescale the final image between 0,1",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "SelectionObject": {
      "title": "SelectionObject",
      "type": "object",
      "properties": {
        "regions": {
          "title": "Regions",
          "description": "a list of regions to load",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Region"
          }
        },
        "slices": {
          "title": "Slices",
          "description": "a list of slices to load",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Slice"
          }
        }
      }
    },
    "DataContainer": {
      "title": "DataContainer",
      "type": "object",
      "properties": {
        "filename": {
          "title": "Filename",
          "description": "the filename for the dataset",
          "type": "string"
        },
        "selections": {
          "title": "Selections",
          "description": "selections to load in this dataset",
          "allOf": [
            {
              "$ref": "#/definitions/SelectionObject"
            }
          ]
        },
        "store_in_cache": {
          "title": "Store In Cache",
          "description": "if enabled, will store references to yt datasets.",
          "default": true,
          "type": "boolean"
        }
      }
    },
    "TimeSeriesFileSelection": {
      "title": "TimeSeriesFileSelection",
      "type": "object",
      "properties": {
        "directory": {
          "title": "Directory",
          "description": "The directory of the timseries",
          "type": "string"
        },
        "file_pattern": {
          "title": "File Pattern",
          "description": "The file pattern to match",
          "type": "string"
        },
        "file_list": {
          "title": "File List",
          "description": "List of files to load.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "file_range": {
          "title": "File Range",
          "description": "Given files matched by file_pattern, this option will select a range. Argument orderis taken as start:stop:step.",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": [
            {
              "type": "integer"
            },
            {
              "type": "integer"
            },
            {
              "type": "integer"
            }
          ]
        }
      }
    },
    "Timeseries": {
      "title": "Timeseries",
      "type": "object",
      "properties": {
        "file_selection": {
          "$ref": "#/definitions/TimeSeriesFileSelection"
        },
        "selections": {
          "title": "Selections",
          "description": "selections to load in this dataset",
          "allOf": [
            {
              "$ref": "#/definitions/SelectionObject"
            }
          ]
        },
        "load_as_stack": {
          "title": "Load As Stack",
          "description": "If True, will stack images along a new dimension.",
          "default": false,
          "type": "boolean"
        }
      },
      "required": [
        "file_selection"
      ]
    }
  }
}
