Schemas

YAML Validation Schema

yggdrasil uses this schema (shown below) for validating the YAML specification files used to define integration networks. Users should not need to interact with the schema directly. Instead yggdrasil provides a command line utility yggvalidate for using the schema to validate a provided list of YAML specification files defining a run.

   1{
   2    "title": "YAML Schema",
   3    "description": "Schema for yggdrasil YAML input files.",
   4    "type": "object",
   5    "definitions": {
   6        "comm": {
   7            "description": "Schema for comm components.",
   8            "title": "complete-comm-commtype",
   9            "allOf": [
  10                {
  11                    "$ref": "#/definitions/comm-subtype-base"
  12                },
  13                {
  14                    "anyOf": [
  15                        {
  16                            "$ref": "#/definitions/comm-subtype-default"
  17                        },
  18                        {
  19                            "$ref": "#/definitions/comm-subtype-buffer"
  20                        },
  21                        {
  22                            "$ref": "#/definitions/comm-subtype-ipc"
  23                        },
  24                        {
  25                            "$ref": "#/definitions/comm-subtype-mpi"
  26                        },
  27                        {
  28                            "$ref": "#/definitions/comm-subtype-rest"
  29                        },
  30                        {
  31                            "$ref": "#/definitions/comm-subtype-rmq_async"
  32                        },
  33                        {
  34                            "$ref": "#/definitions/comm-subtype-rmq"
  35                        },
  36                        {
  37                            "$ref": "#/definitions/comm-subtype-value"
  38                        },
  39                        {
  40                            "$ref": "#/definitions/comm-subtype-zmq"
  41                        }
  42                    ]
  43                }
  44            ]
  45        },
  46        "comm-subtype-base": {
  47            "additionalProperties": false,
  48            "allowSingular": "name",
  49            "description": "Base schema for all subtypes of comm components.",
  50            "properties": {
  51                "dont_copy": {
  52                    "default": false,
  53                    "description": "If True, the comm will not be duplicated in the even a model is duplicated via the 'copies' parameter. Defaults to False except for in the case that a model is wrapped and the comm is inside the loop or that a model is a RPC input to a model server.",
  54                    "type": "boolean"
  55                },
  56                "datatype": {
  57                    "default": {
  58                        "subtype": "string",
  59                        "type": "scalar"
  60                    },
  61                    "description": "JSON schema (with expanded core types defined by |yggdrasil|) that constrains the type of data that should be sent/received by this object. Defaults to {'type': 'bytes'}. Additional information on specifying datatypes can be found :ref:`here <datatypes_rst>`.",
  62                    "type": "schema"
  63                },
  64                "field_names": {
  65                    "aliases": [
  66                        "column_names"
  67                    ],
  68                    "allowSingular": true,
  69                    "description": "[DEPRECATED] Field names that should be used to label fields in sent/received tables. This keyword is only valid for table-like datatypes. If not provided, field names are created based on the field order.",
  70                    "items": {
  71                        "type": "string"
  72                    },
  73                    "type": "array"
  74                },
  75                "field_units": {
  76                    "aliases": [
  77                        "column_units"
  78                    ],
  79                    "allowSingular": true,
  80                    "description": "[DEPRECATED] Field units that should be used to convert fields in sent/received tables. This keyword is only valid for table-like datatypes. If not provided, all fields are assumed to be unitless.",
  81                    "items": {
  82                        "type": "string"
  83                    },
  84                    "type": "array"
  85                },
  86                "is_default": {
  87                    "default": false,
  88                    "description": "If True, this comm was created to handle all input/output variables to/from a model. Defaults to False. This variable is used internally and should not be set explicitly in the YAML.",
  89                    "type": "boolean"
  90                },
  91                "for_service": {
  92                    "default": false,
  93                    "description": "If True, this comm bridges the gap to an integration running as a service, possibly on a remote machine. Defaults to False.",
  94                    "type": "boolean"
  95                },
  96                "as_array": {
  97                    "default": false,
  98                    "description": "[DEPRECATED] If True and the datatype is table-like, tables are sent/recieved with either columns rather than row by row. Defaults to False.",
  99                    "type": "boolean"
 100                },
 101                "vars": {
 102                    "allowSingular": true,
 103                    "description": "Names of variables to be sent/received by this comm. Defaults to [].",
 104                    "items": {
 105                        "allowSingular": "name",
 106                        "properties": {
 107                            "datatype": {
 108                                "default": {
 109                                    "subtype": "string",
 110                                    "type": "scalar"
 111                                },
 112                                "type": "schema"
 113                            },
 114                            "name": {
 115                                "type": "string"
 116                            }
 117                        },
 118                        "type": "object"
 119                    },
 120                    "type": "array"
 121                },
 122                "length_map": {
 123                    "additionalProperties": {
 124                        "type": "string"
 125                    },
 126                    "description": "Map from pointer variable names to the names of variables where their length will be stored. Defaults to {}.",
 127                    "type": "object"
 128                },
 129                "filter": {
 130                    "$ref": "#/definitions/filter",
 131                    "description": "Filter that will be used to determine when messages should be sent/received. Ignored if not provided."
 132                },
 133                "address": {
 134                    "description": "Communication info. Default to None and address is taken from the environment variable.",
 135                    "type": "string"
 136                },
 137                "outside_loop": {
 138                    "default": false,
 139                    "description": "If True, and the comm is an input/outputs to/from a model being wrapped. The receive/send calls for this comm will be outside the loop for the model. Defaults to False.",
 140                    "type": "boolean"
 141                },
 142                "transform": {
 143                    "aliases": [
 144                        "recv_converter",
 145                        "send_converter",
 146                        "transforms",
 147                        "translator",
 148                        "translators"
 149                    ],
 150                    "allowSingular": true,
 151                    "description": "One or more transformations that will be applied to messages that are sent/received. Ignored if not provided.",
 152                    "items": {
 153                        "anyOf": [
 154                            {
 155                                "$ref": "#/definitions/transform"
 156                            },
 157                            {
 158                                "type": [
 159                                    "function",
 160                                    "string"
 161                                ]
 162                            }
 163                        ]
 164                    },
 165                    "type": "array"
 166                },
 167                "default_file": {
 168                    "$ref": "#/definitions/file",
 169                    "description": "Comm information for a file that input should be drawn from (for input comms) or that output should be sent to (for output comms) in the event that a yaml does not pair the comm with another model comm or a file."
 170                },
 171                "serializer": {
 172                    "$ref": "#/definitions/serializer",
 173                    "description": "Class with serialize and deserialize methods that should be used to process sent and received messages or a dictionary describing a serializer that obeys the serializer schema."
 174                },
 175                "default_value": {
 176                    "description": "Value that should be returned in the event that a yaml does not pair the comm with another model comm or a file.",
 177                    "type": "any"
 178                },
 179                "commtype": {
 180                    "default": "default",
 181                    "description": "Communication mechanism that should be used.",
 182                    "enum": [
 183                        "buffer",
 184                        "default",
 185                        "ipc",
 186                        "mpi",
 187                        "rest",
 188                        "rmq",
 189                        "rmq_async",
 190                        "value",
 191                        "zmq"
 192                    ],
 193                    "type": "string"
 194                },
 195                "name": {
 196                    "description": "Name used for component in log messages.",
 197                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 198                    "type": "string"
 199                },
 200                "format_str": {
 201                    "description": "String that should be used to format/parse messages. Default to None.",
 202                    "type": "string"
 203                },
 204                "working_dir": {
 205                    "description": "Working directory. If not provided, the current working directory is used.",
 206                    "type": "string"
 207                },
 208                "driver": {
 209                    "deprecated": true,
 210                    "description": "[DEPRECATED] Name of driver class that should be used.",
 211                    "enum": [
 212                        "IPCInputDriver",
 213                        "IPCOutputDriver",
 214                        "InputDriver",
 215                        "OutputDriver",
 216                        "RMQAsyncInputDriver",
 217                        "RMQAsyncOutputDriver",
 218                        "RMQInputDriver",
 219                        "RMQOutputDriver",
 220                        "ZMQInputDriver",
 221                        "ZMQOutputDriver"
 222                    ],
 223                    "type": "string"
 224                },
 225                "onexit": {
 226                    "deprecated": true,
 227                    "description": "[DEPRECATED] Method of input/output driver to call when the connection closes",
 228                    "type": "string"
 229                },
 230                "args": {
 231                    "deprecated": true,
 232                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 233                    "type": "string"
 234                },
 235                "client_id": {
 236                    "type": "string"
 237                },
 238                "cookies": {
 239                    "description": "Cookies to send to the server. Defaults to None and is ignored.",
 240                    "type": "object"
 241                },
 242                "host": {
 243                    "default": "http://localhost:{port}",
 244                    "type": "string"
 245                },
 246                "params": {
 247                    "description": "Parameters that should be passed via URL. Defaults to None and is ignored.",
 248                    "type": "object"
 249                },
 250                "port": {
 251                    "type": "int"
 252                },
 253                "count": {
 254                    "default": 1,
 255                    "type": "integer"
 256                }
 257            },
 258            "required": [
 259                "datatype",
 260                "name"
 261            ],
 262            "title": "comm_base",
 263            "type": "object",
 264            "pushProperties": {
 265                "$properties/datatype": true,
 266                "$properties/serializer": true
 267            },
 268            "dependencies": {
 269                "driver": [
 270                    "args"
 271                ]
 272            }
 273        },
 274        "comm-subtype-default": {
 275            "additionalProperties": true,
 276            "allowSingular": "name",
 277            "description": "Schema for comm component ['default'] subtype.",
 278            "properties": {
 279                "commtype": {
 280                    "default": "default",
 281                    "description": "Communication mechanism selected based on the current platform.",
 282                    "enum": [
 283                        "default"
 284                    ],
 285                    "type": "string"
 286                },
 287                "driver": {
 288                    "deprecated": true,
 289                    "description": "[DEPRECATED] Name of driver class that should be used.",
 290                    "enum": [
 291                        "InputDriver",
 292                        "OutputDriver"
 293                    ],
 294                    "type": "string"
 295                },
 296                "args": {
 297                    "deprecated": true,
 298                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 299                    "type": "string"
 300                },
 301                "name": {
 302                    "description": "Name used for component in log messages.",
 303                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 304                    "type": "string"
 305                }
 306            },
 307            "required": [
 308                "commtype"
 309            ],
 310            "title": "yggdrasil.communication.DefaultComm.DefaultComm",
 311            "type": "object"
 312        },
 313        "comm-subtype-buffer": {
 314            "additionalProperties": true,
 315            "allowSingular": "name",
 316            "description": "Schema for comm component ['buffer'] subtype.",
 317            "properties": {
 318                "commtype": {
 319                    "default": "buffer",
 320                    "description": "Communication mechanism that should be used.",
 321                    "enum": [
 322                        "buffer"
 323                    ],
 324                    "type": "string"
 325                },
 326                "driver": {
 327                    "deprecated": true,
 328                    "description": "[DEPRECATED] Name of driver class that should be used.",
 329                    "enum": [
 330                        ""
 331                    ],
 332                    "type": "string"
 333                },
 334                "name": {
 335                    "description": "Name used for component in log messages.",
 336                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 337                    "type": "string"
 338                }
 339            },
 340            "required": [
 341                "commtype"
 342            ],
 343            "title": "yggdrasil.communication.BufferComm.BufferComm",
 344            "type": "object"
 345        },
 346        "comm-subtype-ipc": {
 347            "additionalProperties": true,
 348            "allowSingular": "name",
 349            "description": "Schema for comm component ['ipc'] subtype.",
 350            "properties": {
 351                "commtype": {
 352                    "default": "ipc",
 353                    "description": "Interprocess communication (IPC) queue.",
 354                    "enum": [
 355                        "ipc"
 356                    ],
 357                    "type": "string"
 358                },
 359                "driver": {
 360                    "deprecated": true,
 361                    "description": "[DEPRECATED] Name of driver class that should be used.",
 362                    "enum": [
 363                        "IPCInputDriver",
 364                        "IPCOutputDriver"
 365                    ],
 366                    "type": "string"
 367                },
 368                "args": {
 369                    "deprecated": true,
 370                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 371                    "type": "string"
 372                },
 373                "name": {
 374                    "description": "Name used for component in log messages.",
 375                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 376                    "type": "string"
 377                }
 378            },
 379            "required": [
 380                "commtype"
 381            ],
 382            "title": "yggdrasil.communication.IPCComm.IPCComm",
 383            "type": "object"
 384        },
 385        "comm-subtype-mpi": {
 386            "additionalProperties": true,
 387            "allowSingular": "name",
 388            "description": "Schema for comm component ['mpi'] subtype.",
 389            "properties": {
 390                "commtype": {
 391                    "default": "mpi",
 392                    "description": "MPI communicator.",
 393                    "enum": [
 394                        "mpi"
 395                    ],
 396                    "type": "string"
 397                },
 398                "driver": {
 399                    "deprecated": true,
 400                    "description": "[DEPRECATED] Name of driver class that should be used.",
 401                    "enum": [
 402                        ""
 403                    ],
 404                    "type": "string"
 405                },
 406                "name": {
 407                    "description": "Name used for component in log messages.",
 408                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 409                    "type": "string"
 410                }
 411            },
 412            "required": [
 413                "commtype"
 414            ],
 415            "title": "yggdrasil.communication.MPIComm.MPIComm",
 416            "type": "object"
 417        },
 418        "comm-subtype-rest": {
 419            "additionalProperties": true,
 420            "allowSingular": "name",
 421            "description": "Schema for comm component ['rest'] subtype.",
 422            "properties": {
 423                "commtype": {
 424                    "default": "rest",
 425                    "description": "RESTful API.",
 426                    "enum": [
 427                        "rest"
 428                    ],
 429                    "type": "string"
 430                },
 431                "driver": {
 432                    "deprecated": true,
 433                    "description": "[DEPRECATED] Name of driver class that should be used.",
 434                    "enum": [
 435                        ""
 436                    ],
 437                    "type": "string"
 438                },
 439                "client_id": {
 440                    "type": "string"
 441                },
 442                "cookies": {
 443                    "description": "Cookies to send to the server. Defaults to None and is ignored.",
 444                    "type": "object"
 445                },
 446                "host": {
 447                    "default": "http://localhost:{port}",
 448                    "type": "string"
 449                },
 450                "name": {
 451                    "description": "Name used for component in log messages.",
 452                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 453                    "type": "string"
 454                },
 455                "params": {
 456                    "description": "Parameters that should be passed via URL. Defaults to None and is ignored.",
 457                    "type": "object"
 458                },
 459                "port": {
 460                    "type": "int"
 461                }
 462            },
 463            "required": [
 464                "commtype"
 465            ],
 466            "title": "yggdrasil.communication.RESTComm.RESTComm",
 467            "type": "object"
 468        },
 469        "comm-subtype-rmq_async": {
 470            "additionalProperties": true,
 471            "allowSingular": "name",
 472            "description": "Schema for comm component ['rmq_async'] subtype.",
 473            "properties": {
 474                "commtype": {
 475                    "default": "rmq_async",
 476                    "description": "Asynchronous RabbitMQ connection.",
 477                    "enum": [
 478                        "rmq_async"
 479                    ],
 480                    "type": "string"
 481                },
 482                "driver": {
 483                    "deprecated": true,
 484                    "description": "[DEPRECATED] Name of driver class that should be used.",
 485                    "enum": [
 486                        "RMQAsyncInputDriver",
 487                        "RMQAsyncOutputDriver"
 488                    ],
 489                    "type": "string"
 490                },
 491                "args": {
 492                    "deprecated": true,
 493                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 494                    "type": "string"
 495                },
 496                "name": {
 497                    "description": "Name used for component in log messages.",
 498                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 499                    "type": "string"
 500                }
 501            },
 502            "required": [
 503                "commtype"
 504            ],
 505            "title": "yggdrasil.communication.RMQAsyncComm.RMQAsyncComm",
 506            "type": "object"
 507        },
 508        "comm-subtype-rmq": {
 509            "additionalProperties": true,
 510            "allowSingular": "name",
 511            "description": "Schema for comm component ['rmq'] subtype.",
 512            "properties": {
 513                "commtype": {
 514                    "default": "rmq",
 515                    "description": "RabbitMQ connection.",
 516                    "enum": [
 517                        "rmq"
 518                    ],
 519                    "type": "string"
 520                },
 521                "driver": {
 522                    "deprecated": true,
 523                    "description": "[DEPRECATED] Name of driver class that should be used.",
 524                    "enum": [
 525                        "RMQInputDriver",
 526                        "RMQOutputDriver"
 527                    ],
 528                    "type": "string"
 529                },
 530                "args": {
 531                    "deprecated": true,
 532                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 533                    "type": "string"
 534                },
 535                "name": {
 536                    "description": "Name used for component in log messages.",
 537                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 538                    "type": "string"
 539                }
 540            },
 541            "required": [
 542                "commtype"
 543            ],
 544            "title": "yggdrasil.communication.RMQComm.RMQComm",
 545            "type": "object"
 546        },
 547        "comm-subtype-value": {
 548            "additionalProperties": true,
 549            "allowSingular": "name",
 550            "description": "Schema for comm component ['value'] subtype.",
 551            "properties": {
 552                "commtype": {
 553                    "default": "value",
 554                    "description": "Constant value.",
 555                    "enum": [
 556                        "value"
 557                    ],
 558                    "type": "string"
 559                },
 560                "driver": {
 561                    "deprecated": true,
 562                    "description": "[DEPRECATED] Name of driver class that should be used.",
 563                    "enum": [
 564                        ""
 565                    ],
 566                    "type": "string"
 567                },
 568                "count": {
 569                    "default": 1,
 570                    "type": "integer"
 571                },
 572                "name": {
 573                    "description": "Name used for component in log messages.",
 574                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 575                    "type": "string"
 576                }
 577            },
 578            "required": [
 579                "commtype"
 580            ],
 581            "title": "yggdrasil.communication.ValueComm.ValueComm",
 582            "type": "object"
 583        },
 584        "comm-subtype-zmq": {
 585            "additionalProperties": true,
 586            "allowSingular": "name",
 587            "description": "Schema for comm component ['zmq'] subtype.",
 588            "properties": {
 589                "commtype": {
 590                    "default": "zmq",
 591                    "description": "ZeroMQ socket.",
 592                    "enum": [
 593                        "zmq"
 594                    ],
 595                    "type": "string"
 596                },
 597                "driver": {
 598                    "deprecated": true,
 599                    "description": "[DEPRECATED] Name of driver class that should be used.",
 600                    "enum": [
 601                        "ZMQInputDriver",
 602                        "ZMQOutputDriver"
 603                    ],
 604                    "type": "string"
 605                },
 606                "args": {
 607                    "deprecated": true,
 608                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 609                    "type": "string"
 610                },
 611                "name": {
 612                    "description": "Name used for component in log messages.",
 613                    "pattern": "^([A-Za-z0-9-_]+:)?[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
 614                    "type": "string"
 615                }
 616            },
 617            "required": [
 618                "commtype"
 619            ],
 620            "title": "yggdrasil.communication.ZMQComm.ZMQComm",
 621            "type": "object"
 622        },
 623        "comm_driver": {
 624            "allOf": [
 625                {
 626                    "$ref": "#/definitions/comm"
 627                },
 628                {
 629                    "required": [
 630                        "driver",
 631                        "args"
 632                    ],
 633                    "properties": {
 634                        "driver": {
 635                            "type": "string",
 636                            "deprecated": true,
 637                            "description": "[DEPRECATED] Name of driver class that should be used."
 638                        },
 639                        "args": {
 640                            "type": "string",
 641                            "deprecated": true,
 642                            "description": "[DEPRECATED] Arguments that should be provided to the driver."
 643                        }
 644                    }
 645                }
 646            ]
 647        },
 648        "connection": {
 649            "description": "Schema for connection components.",
 650            "title": "complete-connection-connection_type",
 651            "allOf": [
 652                {
 653                    "$ref": "#/definitions/connection-subtype-base"
 654                },
 655                {
 656                    "anyOf": [
 657                        {
 658                            "$ref": "#/definitions/connection-subtype-connection"
 659                        },
 660                        {
 661                            "$ref": "#/definitions/connection-subtype-file_input"
 662                        },
 663                        {
 664                            "$ref": "#/definitions/connection-subtype-file_output"
 665                        },
 666                        {
 667                            "$ref": "#/definitions/connection-subtype-input"
 668                        },
 669                        {
 670                            "$ref": "#/definitions/connection-subtype-output"
 671                        },
 672                        {
 673                            "$ref": "#/definitions/connection-subtype-rpc_request"
 674                        },
 675                        {
 676                            "$ref": "#/definitions/connection-subtype-rpc_response"
 677                        }
 678                    ]
 679                }
 680            ]
 681        },
 682        "connection-subtype-base": {
 683            "additionalProperties": false,
 684            "description": "Base schema for all subtypes of connection components.",
 685            "properties": {
 686                "input_pattern": {
 687                    "default": "cycle",
 688                    "description": "The communication pattern that should be used to handle incoming messages when there is more than one input communicators present. Defaults to 'cycle'. Options include: 'cycle': Receive from the next available input communicator. 'gather': Receive lists of messages with one element from each communicator where a message is only returned when there is a message from each.",
 689                    "enum": [
 690                        "cycle",
 691                        "gather"
 692                    ],
 693                    "type": "string"
 694                },
 695                "outputs": {
 696                    "aliases": [
 697                        "output",
 698                        "to",
 699                        "output_file",
 700                        "output_files"
 701                    ],
 702                    "allowSingular": true,
 703                    "description": "One or more name(s) of model input channel(s) and/or new channel/file objects that the connection should send messages to. A full description of file entries and the available options can be found :ref:`here<yaml_file_options>`.",
 704                    "items": {
 705                        "anyOf": [
 706                            {
 707                                "$ref": "#/definitions/comm"
 708                            },
 709                            {
 710                                "$ref": "#/definitions/file"
 711                            }
 712                        ]
 713                    },
 714                    "minItems": 1,
 715                    "type": "array"
 716                },
 717                "inputs": {
 718                    "aliases": [
 719                        "input",
 720                        "from",
 721                        "input_file",
 722                        "input_files"
 723                    ],
 724                    "allowSingular": true,
 725                    "description": "One or more name(s) of model output channel(s) and/or new channel/file objects that the connection should receive messages from. A full description of file entries and the available options can be found :ref:`here<yaml_file_options>`.",
 726                    "items": {
 727                        "anyOf": [
 728                            {
 729                                "$ref": "#/definitions/comm"
 730                            },
 731                            {
 732                                "$ref": "#/definitions/file"
 733                            }
 734                        ]
 735                    },
 736                    "minItems": 1,
 737                    "type": "array"
 738                },
 739                "working_dir": {
 740                    "description": "Working directory. If not provided, the current working directory is used.",
 741                    "type": "string"
 742                },
 743                "driver": {
 744                    "deprecated": true,
 745                    "description": "[DEPRECATED] Name of driver class that should be used.",
 746                    "enum": [
 747                        "ConnectionDriver",
 748                        "FileInputDriver",
 749                        "FileOutputDriver",
 750                        "InputDriver",
 751                        "OutputDriver",
 752                        "RPCRequestDriver",
 753                        "RPCResponseDriver"
 754                    ],
 755                    "type": "string"
 756                },
 757                "transform": {
 758                    "aliases": [
 759                        "transforms",
 760                        "translator",
 761                        "translators"
 762                    ],
 763                    "allowSingular": true,
 764                    "description": "Function or string specifying function that should be used to translate messages from the input communicator before passing them to the output communicator. If a string, the format should be \"<package.module>:<function>\" so that <function> can be imported from <package>. Defaults to None and messages are passed directly. This can also be a list of functions/strings that will be called on the messages in the order they are provided.",
 765                    "items": {
 766                        "anyOf": [
 767                            {
 768                                "$ref": "#/definitions/transform"
 769                            },
 770                            {
 771                                "type": [
 772                                    "function",
 773                                    "string"
 774                                ]
 775                            }
 776                        ]
 777                    },
 778                    "type": "array"
 779                },
 780                "connection_type": {
 781                    "description": "Connection between one or more comms/files and one or more comms/files.",
 782                    "enum": [
 783                        "connection",
 784                        "file_input",
 785                        "file_output",
 786                        "input",
 787                        "output",
 788                        "rpc_request",
 789                        "rpc_response"
 790                    ],
 791                    "type": "string"
 792                },
 793                "args": {
 794                    "deprecated": true,
 795                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 796                    "type": "string"
 797                },
 798                "write_meth": {
 799                    "deprecated": true,
 800                    "enum": [
 801                        "all",
 802                        "line",
 803                        "table_array",
 804                        "ascii",
 805                        "binary",
 806                        "json",
 807                        "map",
 808                        "mat",
 809                        "netcdf",
 810                        "obj",
 811                        "pandas",
 812                        "pickle",
 813                        "ply",
 814                        "table",
 815                        "wofost",
 816                        "yaml"
 817                    ],
 818                    "type": "string"
 819                },
 820                "onexit": {
 821                    "description": "Class method that should be called when a model that the connection interacts with exits, but before the connection driver is shut down. Defaults to None.",
 822                    "type": "string"
 823                },
 824                "output_pattern": {
 825                    "default": "broadcast",
 826                    "description": "The communication pattern that should be used to handling outgoing messages when there is more than one output communicator present. Defaults to 'broadcast'. Options include: 'cycle': Rotate through output comms, sending one message to each. 'broadcast': Send the same message to each comm. 'scatter': Send part of message (must be a list) to each comm.",
 827                    "enum": [
 828                        "cycle",
 829                        "broadcast",
 830                        "scatter"
 831                    ],
 832                    "type": "string"
 833                },
 834                "read_meth": {
 835                    "deprecated": true,
 836                    "enum": [
 837                        "all",
 838                        "line",
 839                        "table_array",
 840                        "ascii",
 841                        "binary",
 842                        "json",
 843                        "map",
 844                        "mat",
 845                        "netcdf",
 846                        "obj",
 847                        "pandas",
 848                        "pickle",
 849                        "ply",
 850                        "table",
 851                        "wofost",
 852                        "yaml"
 853                    ],
 854                    "type": "string"
 855                }
 856            },
 857            "title": "connection_base",
 858            "type": "object",
 859            "required": [
 860                "inputs",
 861                "outputs"
 862            ],
 863            "pushProperties": {
 864                "!$properties/inputs/items": [
 865                    "transform",
 866                    "onexit",
 867                    "read_meth",
 868                    "write_meth"
 869                ],
 870                "!$properties/outputs/items/anyOf/1": [
 871                    "transform",
 872                    "onexit",
 873                    "read_meth",
 874                    "write_meth"
 875                ],
 876                "$properties/inputs/items/anyOf/1/allOf/1/anyOf/0/properties/serializer": true,
 877                "$properties/outputs/items/anyOf/1/allOf/1/anyOf/0/properties/serializer": true
 878            },
 879            "dependencies": {
 880                "driver": [
 881                    "args"
 882                ]
 883            }
 884        },
 885        "connection-subtype-connection": {
 886            "additionalProperties": true,
 887            "description": "Schema for connection component ['connection'] subtype.",
 888            "properties": {
 889                "connection_type": {
 890                    "default": "connection",
 891                    "description": "Connection between one or more comms/files and one or more comms/files.",
 892                    "enum": [
 893                        "connection"
 894                    ],
 895                    "type": "string"
 896                },
 897                "driver": {
 898                    "deprecated": true,
 899                    "description": "[DEPRECATED] Name of driver class that should be used.",
 900                    "enum": [
 901                        "ConnectionDriver"
 902                    ],
 903                    "type": "string"
 904                }
 905            },
 906            "title": "yggdrasil.drivers.ConnectionDriver.ConnectionDriver",
 907            "type": "object"
 908        },
 909        "connection-subtype-file_input": {
 910            "additionalProperties": true,
 911            "description": "Schema for connection component ['file_input'] subtype.",
 912            "properties": {
 913                "connection_type": {
 914                    "default": "file_input",
 915                    "description": "Connection between a file and a model.",
 916                    "enum": [
 917                        "file_input"
 918                    ],
 919                    "type": "string"
 920                },
 921                "driver": {
 922                    "deprecated": true,
 923                    "description": "[DEPRECATED] Name of driver class that should be used.",
 924                    "enum": [
 925                        "FileInputDriver"
 926                    ],
 927                    "type": "string"
 928                }
 929            },
 930            "title": "yggdrasil.drivers.FileInputDriver.FileInputDriver",
 931            "type": "object"
 932        },
 933        "connection-subtype-file_output": {
 934            "additionalProperties": true,
 935            "description": "Schema for connection component ['file_output'] subtype.",
 936            "properties": {
 937                "connection_type": {
 938                    "default": "file_output",
 939                    "description": "Connection between a model and a file.",
 940                    "enum": [
 941                        "file_output"
 942                    ],
 943                    "type": "string"
 944                },
 945                "driver": {
 946                    "deprecated": true,
 947                    "description": "[DEPRECATED] Name of driver class that should be used.",
 948                    "enum": [
 949                        "FileOutputDriver"
 950                    ],
 951                    "type": "string"
 952                }
 953            },
 954            "title": "yggdrasil.drivers.FileOutputDriver.FileOutputDriver",
 955            "type": "object"
 956        },
 957        "connection-subtype-input": {
 958            "additionalProperties": true,
 959            "description": "Schema for connection component ['input'] subtype.",
 960            "properties": {
 961                "connection_type": {
 962                    "default": "input",
 963                    "description": "Connection between one or more comms/files and a model.",
 964                    "enum": [
 965                        "input"
 966                    ],
 967                    "type": "string"
 968                },
 969                "driver": {
 970                    "deprecated": true,
 971                    "description": "[DEPRECATED] Name of driver class that should be used.",
 972                    "enum": [
 973                        "InputDriver"
 974                    ],
 975                    "type": "string"
 976                }
 977            },
 978            "title": "yggdrasil.drivers.InputDriver.InputDriver",
 979            "type": "object"
 980        },
 981        "connection-subtype-output": {
 982            "additionalProperties": true,
 983            "description": "Schema for connection component ['output'] subtype.",
 984            "properties": {
 985                "connection_type": {
 986                    "default": "output",
 987                    "description": "Connection between a model and one or more comms/files.",
 988                    "enum": [
 989                        "output"
 990                    ],
 991                    "type": "string"
 992                },
 993                "driver": {
 994                    "deprecated": true,
 995                    "description": "[DEPRECATED] Name of driver class that should be used.",
 996                    "enum": [
 997                        "OutputDriver"
 998                    ],
 999                    "type": "string"
1000                }
1001            },
1002            "title": "yggdrasil.drivers.OutputDriver.OutputDriver",
1003            "type": "object"
1004        },
1005        "connection-subtype-rpc_request": {
1006            "additionalProperties": true,
1007            "description": "Schema for connection component ['rpc_request'] subtype.",
1008            "properties": {
1009                "connection_type": {
1010                    "default": "rpc_request",
1011                    "description": "Connection between one or more comms/files and one or more comms/files.",
1012                    "enum": [
1013                        "rpc_request"
1014                    ],
1015                    "type": "string"
1016                },
1017                "driver": {
1018                    "deprecated": true,
1019                    "description": "[DEPRECATED] Name of driver class that should be used.",
1020                    "enum": [
1021                        "RPCRequestDriver"
1022                    ],
1023                    "type": "string"
1024                }
1025            },
1026            "title": "yggdrasil.drivers.RPCRequestDriver.RPCRequestDriver",
1027            "type": "object"
1028        },
1029        "connection-subtype-rpc_response": {
1030            "additionalProperties": true,
1031            "description": "Schema for connection component ['rpc_response'] subtype.",
1032            "properties": {
1033                "connection_type": {
1034                    "default": "rpc_response",
1035                    "description": "Connection between one or more comms/files and one or more comms/files.",
1036                    "enum": [
1037                        "rpc_response"
1038                    ],
1039                    "type": "string"
1040                },
1041                "driver": {
1042                    "deprecated": true,
1043                    "description": "[DEPRECATED] Name of driver class that should be used.",
1044                    "enum": [
1045                        "RPCResponseDriver"
1046                    ],
1047                    "type": "string"
1048                }
1049            },
1050            "title": "yggdrasil.drivers.RPCResponseDriver.RPCResponseDriver",
1051            "type": "object"
1052        },
1053        "connection_driver": {
1054            "allOf": [
1055                {
1056                    "$ref": "#/definitions/connection"
1057                },
1058                {
1059                    "required": [
1060                        "driver",
1061                        "args"
1062                    ],
1063                    "properties": {
1064                        "driver": {
1065                            "type": "string",
1066                            "deprecated": true,
1067                            "description": "[DEPRECATED] Name of driver class that should be used."
1068                        },
1069                        "args": {
1070                            "type": "string",
1071                            "deprecated": true,
1072                            "description": "[DEPRECATED] Arguments that should be provided to the driver."
1073                        }
1074                    }
1075                }
1076            ]
1077        },
1078        "file": {
1079            "description": "Schema for file components.",
1080            "title": "complete-file-filetype",
1081            "allOf": [
1082                {
1083                    "$ref": "#/definitions/file-subtype-base"
1084                },
1085                {
1086                    "anyOf": [
1087                        {
1088                            "$ref": "#/definitions/file-subtype-binary"
1089                        },
1090                        {
1091                            "$ref": "#/definitions/file-subtype-ascii"
1092                        },
1093                        {
1094                            "$ref": "#/definitions/file-subtype-map"
1095                        },
1096                        {
1097                            "$ref": "#/definitions/file-subtype-table"
1098                        },
1099                        {
1100                            "$ref": "#/definitions/file-subtype-bam"
1101                        },
1102                        {
1103                            "$ref": "#/definitions/file-subtype-bcf"
1104                        },
1105                        {
1106                            "$ref": "#/definitions/file-subtype-bmp"
1107                        },
1108                        {
1109                            "$ref": "#/definitions/file-subtype-cabo"
1110                        },
1111                        {
1112                            "$ref": "#/definitions/file-subtype-cram"
1113                        },
1114                        {
1115                            "$ref": "#/definitions/file-subtype-eps"
1116                        },
1117                        {
1118                            "$ref": "#/definitions/file-subtype-excel"
1119                        },
1120                        {
1121                            "$ref": "#/definitions/file-subtype-fasta"
1122                        },
1123                        {
1124                            "$ref": "#/definitions/file-subtype-fastq"
1125                        },
1126                        {
1127                            "$ref": "#/definitions/file-subtype-gif"
1128                        },
1129                        {
1130                            "$ref": "#/definitions/file-subtype-jpeg"
1131                        },
1132                        {
1133                            "$ref": "#/definitions/file-subtype-json"
1134                        },
1135                        {
1136                            "$ref": "#/definitions/file-subtype-mat"
1137                        },
1138                        {
1139                            "$ref": "#/definitions/file-subtype-netcdf"
1140                        },
1141                        {
1142                            "$ref": "#/definitions/file-subtype-obj"
1143                        },
1144                        {
1145                            "$ref": "#/definitions/file-subtype-png"
1146                        },
1147                        {
1148                            "$ref": "#/definitions/file-subtype-pandas"
1149                        },
1150                        {
1151                            "$ref": "#/definitions/file-subtype-pickle"
1152                        },
1153                        {
1154                            "$ref": "#/definitions/file-subtype-ply"
1155                        },
1156                        {
1157                            "$ref": "#/definitions/file-subtype-sam"
1158                        },
1159                        {
1160                            "$ref": "#/definitions/file-subtype-tiff"
1161                        },
1162                        {
1163                            "$ref": "#/definitions/file-subtype-vcf"
1164                        },
1165                        {
1166                            "$ref": "#/definitions/file-subtype-yaml"
1167                        }
1168                    ]
1169                }
1170            ]
1171        },
1172        "file-subtype-base": {
1173            "additionalProperties": false,
1174            "allowSingular": "name",
1175            "description": "Base schema for all subtypes of file components.",
1176            "properties": {
1177                "field_units": {
1178                    "aliases": [
1179                        "column_units"
1180                    ],
1181                    "allowSingular": true,
1182                    "description": "[DEPRECATED] Field units that should be used to convert fields in sent/received tables. This keyword is only valid for table-like datatypes. If not provided, all fields are assumed to be unitless.",
1183                    "items": {
1184                        "type": "string"
1185                    },
1186                    "type": "array"
1187                },
1188                "wait_for_creation": {
1189                    "default": 0.0,
1190                    "description": "Time (in seconds) that should be waited before opening for the file to be created if it dosn't exist. Defaults to 0 s and file will attempt to be opened immediately.",
1191                    "type": "number"
1192                },
1193                "onexit": {
1194                    "deprecated": true,
1195                    "description": "[DEPRECATED] Method of input/output driver to call when the connection closes",
1196                    "type": "string"
1197                },
1198                "count": {
1199                    "default": 0,
1200                    "description": "When reading a file, read the file this many of times. Defaults to 0.",
1201                    "type": "integer"
1202                },
1203                "for_service": {
1204                    "default": false,
1205                    "description": "If True, this comm bridges the gap to an integration running as a service, possibly on a remote machine. Defaults to False.",
1206                    "type": "boolean"
1207                },
1208                "as_array": {
1209                    "default": false,
1210                    "description": "[DEPRECATED] If True and the datatype is table-like, tables are sent/recieved with either columns rather than row by row. Defaults to False.",
1211                    "type": "boolean"
1212                },
1213                "vars": {
1214                    "allowSingular": true,
1215                    "description": "Names of variables to be sent/received by this comm. Defaults to [].",
1216                    "items": {
1217                        "allowSingular": "name",
1218                        "properties": {
1219                            "datatype": {
1220                                "default": {
1221                                    "subtype": "string",
1222                                    "type": "scalar"
1223                                },
1224                                "type": "schema"
1225                            },
1226                            "name": {
1227                                "type": "string"
1228                            }
1229                        },
1230                        "type": "object"
1231                    },
1232                    "type": "array"
1233                },
1234                "length_map": {
1235                    "additionalProperties": {
1236                        "type": "string"
1237                    },
1238                    "description": "Map from pointer variable names to the names of variables where their length will be stored. Defaults to {}.",
1239                    "type": "object"
1240                },
1241                "in_temp": {
1242                    "default": false,
1243                    "description": "If True, the path will be considered relative to the platform temporary directory. Defaults to False.",
1244                    "type": "boolean"
1245                },
1246                "filter": {
1247                    "$ref": "#/definitions/filter",
1248                    "description": "Filter that will be used to determine when messages should be sent/received. Ignored if not provided."
1249                },
1250                "filetype": {
1251                    "default": "binary",
1252                    "description": "The type of file that will be read from or written to.",
1253                    "enum": [
1254                        "ascii",
1255                        "bam",
1256                        "bcf",
1257                        "binary",
1258                        "bmp",
1259                        "cabo",
1260                        "cram",
1261                        "eps",
1262                        "excel",
1263                        "fasta",
1264                        "fastq",
1265                        "gif",
1266                        "jpeg",
1267                        "json",
1268                        "map",
1269                        "mat",
1270                        "netcdf",
1271                        "obj",
1272                        "pandas",
1273                        "pickle",
1274                        "ply",
1275                        "png",
1276                        "sam",
1277                        "table",
1278                        "tiff",
1279                        "vcf",
1280                        "yaml"
1281                    ],
1282                    "type": "string"
1283                },
1284                "append": {
1285                    "default": false,
1286                    "description": "If True and writing, file is openned in append mode. If True and reading, file is kept open even if the end of the file is reached to allow for another process to write to the file in append mode. Defaults to False.",
1287                    "type": "boolean"
1288                },
1289                "address": {
1290                    "description": "Communication info. Default to None and address is taken from the environment variable.",
1291                    "type": "string"
1292                },
1293                "transform": {
1294                    "aliases": [
1295                        "recv_converter",
1296                        "send_converter",
1297                        "transforms",
1298                        "translator",
1299                        "translators"
1300                    ],
1301                    "allowSingular": true,
1302                    "description": "One or more transformations that will be applied to messages that are sent/received. Ignored if not provided.",
1303                    "items": {
1304                        "anyOf": [
1305                            {
1306                                "$ref": "#/definitions/transform"
1307                            },
1308                            {
1309                                "type": [
1310                                    "function",
1311                                    "string"
1312                                ]
1313                            }
1314                        ]
1315                    },
1316                    "type": "array"
1317                },
1318                "is_series": {
1319                    "default": false,
1320                    "description": "If True, input/output will be done to a series of files. If reading, each file will be processed until the end is reached. If writing, each output will be to a new file in the series. The addressed is assumed to contain a format for the index of the file. Defaults to False.",
1321                    "type": "boolean"
1322                },
1323                "name": {
1324                    "description": "Name used for component in log messages.",
1325                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1326                    "type": "string"
1327                },
1328                "format_str": {
1329                    "description": "String that should be used to format/parse messages. Default to None.",
1330                    "type": "string"
1331                },
1332                "working_dir": {
1333                    "description": "Working directory. If not provided, the current working directory is used.",
1334                    "type": "string"
1335                },
1336                "driver": {
1337                    "deprecated": true,
1338                    "description": "[DEPRECATED] Name of driver class that should be used.",
1339                    "enum": [
1340                        "AsciiFileInputDriver",
1341                        "AsciiFileOutputDriver",
1342                        "AsciiMapInputDriver",
1343                        "AsciiMapOutputDriver",
1344                        "AsciiTableInputDriver",
1345                        "AsciiTableOutputDriver",
1346                        "FileInputDriver",
1347                        "FileOutputDriver",
1348                        "MatInputDriver",
1349                        "MatOutputDriver",
1350                        "ObjFileInputDriver",
1351                        "ObjFileOutputDriver",
1352                        "PandasFileInputDriver",
1353                        "PandasFileOutputDriver",
1354                        "PickleFileInputDriver",
1355                        "PickleFileOutputDriver",
1356                        "PlyFileInputDriver",
1357                        "PlyFileOutputDriver"
1358                    ],
1359                    "type": "string"
1360                },
1361                "field_names": {
1362                    "aliases": [
1363                        "column_names"
1364                    ],
1365                    "allowSingular": true,
1366                    "description": "[DEPRECATED] Field names that should be used to label fields in sent/received tables. This keyword is only valid for table-like datatypes. If not provided, field names are created based on the field order.",
1367                    "items": {
1368                        "type": "string"
1369                    },
1370                    "type": "array"
1371                },
1372                "args": {
1373                    "deprecated": true,
1374                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
1375                    "type": "string"
1376                },
1377                "read_meth": {
1378                    "deprecated": true,
1379                    "description": "Method that should be used to read data from the file. Defaults to 'read'. Ignored if direction is 'send'.",
1380                    "enum": [
1381                        "read",
1382                        "readline"
1383                    ],
1384                    "type": "string"
1385                },
1386                "serializer": {
1387                    "allOf": [
1388                        {
1389                            "default": {}
1390                        },
1391                        {
1392                            "$ref": "#/definitions/serializer"
1393                        }
1394                    ],
1395                    "description": "Class with serialize and deserialize methods that should be used to process sent and received messages or a dictionary describing a serializer that obeys the serializer schema."
1396                },
1397                "comment": {
1398                    "default": "# ",
1399                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1400                    "type": "string"
1401                },
1402                "datatype": {
1403                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1404                    "type": "schema"
1405                },
1406                "newline": {
1407                    "default": "\n",
1408                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1409                    "type": "string"
1410                },
1411                "delimiter": {
1412                    "default": "\t",
1413                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
1414                    "type": "string"
1415                },
1416                "use_astropy": {
1417                    "default": false,
1418                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
1419                    "type": "boolean"
1420                },
1421                "flush_on_write": {
1422                    "default": false,
1423                    "description": "If true, the file will be flushed when written to.",
1424                    "type": "boolean"
1425                },
1426                "header": {
1427                    "description": "Header defining sequence identifiers. A header is required for writing SAM, BAM, and CRAM files.",
1428                    "type": "object"
1429                },
1430                "index": {
1431                    "description": "Path to file containing index if different from the standard naming convention for BAM and CRAM files.",
1432                    "type": "string"
1433                },
1434                "regions": {
1435                    "default": [],
1436                    "description": "Region parameters (reference name, start, and end) defining the regions that should be read. If not provided, all regions will be read.",
1437                    "items": {
1438                        "properties": {
1439                            "end": {
1440                                "type": "integer"
1441                            },
1442                            "name": {
1443                                "type": "string"
1444                            },
1445                            "start": {
1446                                "type": "integer"
1447                            }
1448                        },
1449                        "required": [
1450                            "name"
1451                        ],
1452                        "type": "object"
1453                    },
1454                    "type": "array"
1455                },
1456                "params": {
1457                    "default": {},
1458                    "description": "Parameters that should be based to the PIL.Image save/open command",
1459                    "type": "object"
1460                },
1461                "columns": {
1462                    "description": "Names of columns to read/write.",
1463                    "items": {
1464                        "type": [
1465                            "string",
1466                            "integer"
1467                        ]
1468                    },
1469                    "type": "array"
1470                },
1471                "endcol": {
1472                    "description": "Column to stop read at (non-inclusive).",
1473                    "type": "integer"
1474                },
1475                "endrow": {
1476                    "description": "Row to stop read at (non-inclusive).",
1477                    "type": "integer"
1478                },
1479                "sheet_template": {
1480                    "description": "Format string that can be completed with % operator to generate names for each subsequent sheet when writing.",
1481                    "type": "string"
1482                },
1483                "sheets": {
1484                    "allowSingular": true,
1485                    "default": [],
1486                    "description": "Name(s) of one more more sheets that should be read/written. If not provided during read, all sheets will be read.",
1487                    "items": {
1488                        "type": "string"
1489                    },
1490                    "type": "array"
1491                },
1492                "startcol": {
1493                    "default": 0,
1494                    "description": "Column to start read/write at.",
1495                    "type": "integer"
1496                },
1497                "startrow": {
1498                    "default": 0,
1499                    "description": "Row to start read/write at.",
1500                    "type": "integer"
1501                },
1502                "str_as_bytes": {
1503                    "default": false,
1504                    "description": "If true, strings in columns are read as bytes",
1505                    "type": "boolean"
1506                },
1507                "piecemeal": {
1508                    "default": false,
1509                    "description": "If possible read the the file incrementally in multiple messages. This should be used for large files that cannot be loaded into memory.",
1510                    "type": "boolean"
1511                },
1512                "record_ids": {
1513                    "description": "IDs of records to read/write. Other records will be ignored.",
1514                    "type": "array"
1515                },
1516                "indent": {
1517                    "default": "\t",
1518                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
1519                    "type": [
1520                        "string",
1521                        "int"
1522                    ]
1523                },
1524                "sort_keys": {
1525                    "default": true,
1526                    "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
1527                    "type": "boolean"
1528                },
1529                "read_attributes": {
1530                    "default": false,
1531                    "description": "If True, the attributes are read in as well as the variables. Defaults to False.",
1532                    "type": "boolean"
1533                },
1534                "variables": {
1535                    "description": "List of variables to read in. If not provided, all variables will be read.",
1536                    "items": {
1537                        "type": "string"
1538                    },
1539                    "type": "array"
1540                },
1541                "version": {
1542                    "default": 1,
1543                    "description": "Version of netCDF format that should be used. Defaults to 1. Options are 1 (classic format) and 2 (64-bit offset format).",
1544                    "enum": [
1545                        1,
1546                        2
1547                    ],
1548                    "type": "integer"
1549                },
1550                "prune_duplicates": {
1551                    "default": true,
1552                    "description": "If True, serialized meshes in array format will be pruned of duplicates when being normalized into a Ply object. If False, duplicates will not be pruned. Defaults to True.",
1553                    "type": "boolean"
1554                },
1555                "no_header": {
1556                    "default": false,
1557                    "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
1558                    "type": "boolean"
1559                },
1560                "default_flow_style": {
1561                    "default": false,
1562                    "description": "If True, nested collections will be serialized in the block style. If False, they will always be serialized in the flow style. See `PyYAML Documentation <https://pyyaml.org/wiki/PyYAMLDocumentation>`_.",
1563                    "type": "boolean"
1564                },
1565                "encoding": {
1566                    "default": "utf-8",
1567                    "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
1568                    "type": "string"
1569                }
1570            },
1571            "required": [
1572                "name",
1573                "working_dir"
1574            ],
1575            "title": "file_base",
1576            "type": "object",
1577            "dependencies": {
1578                "driver": [
1579                    "args"
1580                ]
1581            }
1582        },
1583        "file-subtype-binary": {
1584            "additionalProperties": true,
1585            "allowSingular": "name",
1586            "description": "Schema for file component ['binary'] subtype.",
1587            "properties": {
1588                "driver": {
1589                    "deprecated": true,
1590                    "description": "[DEPRECATED] Name of driver class that should be used.",
1591                    "enum": [
1592                        "FileInputDriver",
1593                        "FileOutputDriver"
1594                    ],
1595                    "type": "string"
1596                },
1597                "filetype": {
1598                    "default": "binary",
1599                    "description": "The entire file is read/written all at once as bytes.",
1600                    "enum": [
1601                        "binary"
1602                    ],
1603                    "type": "string"
1604                },
1605                "args": {
1606                    "deprecated": true,
1607                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
1608                    "type": "string"
1609                },
1610                "name": {
1611                    "description": "Name used for component in log messages.",
1612                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1613                    "type": "string"
1614                },
1615                "read_meth": {
1616                    "deprecated": true,
1617                    "description": "Method that should be used to read data from the file. Defaults to 'read'. Ignored if direction is 'send'.",
1618                    "enum": [
1619                        "read",
1620                        "readline"
1621                    ],
1622                    "type": "string"
1623                },
1624                "serializer": {
1625                    "allOf": [
1626                        {
1627                            "default": {}
1628                        },
1629                        {
1630                            "$ref": "#/definitions/serializer"
1631                        }
1632                    ],
1633                    "description": "Class with serialize and deserialize methods that should be used to process sent and received messages or a dictionary describing a serializer that obeys the serializer schema."
1634                }
1635            },
1636            "required": [
1637                "filetype",
1638                "serializer"
1639            ],
1640            "title": "yggdrasil.communication.FileComm.FileComm",
1641            "type": "object",
1642            "pushProperties": {
1643                "$properties/serializer": true
1644            }
1645        },
1646        "file-subtype-ascii": {
1647            "additionalProperties": true,
1648            "allowSingular": "name",
1649            "description": "Schema for file component ['ascii'] subtype.",
1650            "properties": {
1651                "driver": {
1652                    "deprecated": true,
1653                    "description": "[DEPRECATED] Name of driver class that should be used.",
1654                    "enum": [
1655                        "AsciiFileInputDriver",
1656                        "AsciiFileOutputDriver"
1657                    ],
1658                    "type": "string"
1659                },
1660                "filetype": {
1661                    "default": "ascii",
1662                    "description": "This file is read/written as encoded text one line at a time.",
1663                    "enum": [
1664                        "ascii"
1665                    ],
1666                    "type": "string"
1667                },
1668                "args": {
1669                    "deprecated": true,
1670                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
1671                    "type": "string"
1672                },
1673                "comment": {
1674                    "default": "# ",
1675                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1676                    "type": "string"
1677                },
1678                "datatype": {
1679                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1680                    "type": "schema"
1681                },
1682                "name": {
1683                    "description": "Name used for component in log messages.",
1684                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1685                    "type": "string"
1686                },
1687                "newline": {
1688                    "default": "\n",
1689                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1690                    "type": "string"
1691                }
1692            },
1693            "required": [
1694                "filetype"
1695            ],
1696            "title": "yggdrasil.communication.AsciiFileComm.AsciiFileComm",
1697            "type": "object"
1698        },
1699        "file-subtype-map": {
1700            "additionalProperties": true,
1701            "allowSingular": "name",
1702            "description": "Schema for file component ['map'] subtype.",
1703            "properties": {
1704                "driver": {
1705                    "deprecated": true,
1706                    "description": "[DEPRECATED] Name of driver class that should be used.",
1707                    "enum": [
1708                        "AsciiMapInputDriver",
1709                        "AsciiMapOutputDriver"
1710                    ],
1711                    "type": "string"
1712                },
1713                "filetype": {
1714                    "default": "map",
1715                    "description": "The file contains a key/value mapping with one key/value pair per line and separated by some delimiter.",
1716                    "enum": [
1717                        "map"
1718                    ],
1719                    "type": "string"
1720                },
1721                "args": {
1722                    "deprecated": true,
1723                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
1724                    "type": "string"
1725                },
1726                "comment": {
1727                    "default": "# ",
1728                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1729                    "type": "string"
1730                },
1731                "datatype": {
1732                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1733                    "type": "schema"
1734                },
1735                "delimiter": {
1736                    "default": "\t",
1737                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
1738                    "type": "string"
1739                },
1740                "name": {
1741                    "description": "Name used for component in log messages.",
1742                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1743                    "type": "string"
1744                },
1745                "newline": {
1746                    "default": "\n",
1747                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1748                    "type": "string"
1749                }
1750            },
1751            "required": [
1752                "filetype"
1753            ],
1754            "title": "yggdrasil.communication.AsciiMapComm.AsciiMapComm",
1755            "type": "object"
1756        },
1757        "file-subtype-table": {
1758            "additionalProperties": true,
1759            "allowSingular": "name",
1760            "description": "Schema for file component ['table'] subtype.",
1761            "properties": {
1762                "driver": {
1763                    "deprecated": true,
1764                    "description": "[DEPRECATED] Name of driver class that should be used.",
1765                    "enum": [
1766                        "AsciiTableInputDriver",
1767                        "AsciiTableOutputDriver"
1768                    ],
1769                    "type": "string"
1770                },
1771                "filetype": {
1772                    "default": "table",
1773                    "description": "The file is an ASCII table that will be read/written one row at a time. If ``as_array`` is ``True``, the table will be read/written all at once.",
1774                    "enum": [
1775                        "table"
1776                    ],
1777                    "type": "string"
1778                },
1779                "args": {
1780                    "deprecated": true,
1781                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
1782                    "type": "string"
1783                },
1784                "comment": {
1785                    "default": "# ",
1786                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1787                    "type": "string"
1788                },
1789                "datatype": {
1790                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1791                    "type": "schema"
1792                },
1793                "delimiter": {
1794                    "aliases": [
1795                        "column"
1796                    ],
1797                    "default": "\t",
1798                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
1799                    "type": "string"
1800                },
1801                "name": {
1802                    "description": "Name used for component in log messages.",
1803                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1804                    "type": "string"
1805                },
1806                "newline": {
1807                    "default": "\n",
1808                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1809                    "type": "string"
1810                },
1811                "use_astropy": {
1812                    "default": false,
1813                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
1814                    "type": "boolean"
1815                }
1816            },
1817            "required": [
1818                "filetype"
1819            ],
1820            "title": "yggdrasil.communication.AsciiTableComm.AsciiTableComm",
1821            "type": "object"
1822        },
1823        "file-subtype-bam": {
1824            "additionalProperties": true,
1825            "allowSingular": "name",
1826            "description": "Schema for file component ['bam'] subtype.",
1827            "properties": {
1828                "driver": {
1829                    "deprecated": true,
1830                    "description": "[DEPRECATED] Name of driver class that should be used.",
1831                    "enum": [
1832                        ""
1833                    ],
1834                    "type": "string"
1835                },
1836                "filetype": {
1837                    "default": "bam",
1838                    "description": "bam sequence I/O",
1839                    "enum": [
1840                        "bam"
1841                    ],
1842                    "type": "string"
1843                },
1844                "flush_on_write": {
1845                    "default": false,
1846                    "description": "If true, the file will be flushed when written to.",
1847                    "type": "boolean"
1848                },
1849                "header": {
1850                    "description": "Header defining sequence identifiers. A header is required for writing SAM, BAM, and CRAM files.",
1851                    "type": "object"
1852                },
1853                "index": {
1854                    "description": "Path to file containing index if different from the standard naming convention for BAM and CRAM files.",
1855                    "type": "string"
1856                },
1857                "name": {
1858                    "description": "Name used for component in log messages.",
1859                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1860                    "type": "string"
1861                },
1862                "regions": {
1863                    "default": [],
1864                    "description": "Region parameters (reference name, start, and end) defining the regions that should be read. If not provided, all regions will be read.",
1865                    "items": {
1866                        "properties": {
1867                            "end": {
1868                                "type": "integer"
1869                            },
1870                            "name": {
1871                                "type": "string"
1872                            },
1873                            "start": {
1874                                "type": "integer"
1875                            }
1876                        },
1877                        "required": [
1878                            "name"
1879                        ],
1880                        "type": "object"
1881                    },
1882                    "type": "array"
1883                }
1884            },
1885            "required": [
1886                "filetype"
1887            ],
1888            "title": "yggdrasil.communication.SequenceFileBase.BAMFileComm",
1889            "type": "object"
1890        },
1891        "file-subtype-bcf": {
1892            "additionalProperties": true,
1893            "allowSingular": "name",
1894            "description": "Schema for file component ['bcf'] subtype.",
1895            "properties": {
1896                "driver": {
1897                    "deprecated": true,
1898                    "description": "[DEPRECATED] Name of driver class that should be used.",
1899                    "enum": [
1900                        ""
1901                    ],
1902                    "type": "string"
1903                },
1904                "filetype": {
1905                    "default": "bcf",
1906                    "description": "bcf sequence I/O",
1907                    "enum": [
1908                        "bcf"
1909                    ],
1910                    "type": "string"
1911                },
1912                "flush_on_write": {
1913                    "default": false,
1914                    "description": "If true, the file will be flushed when written to.",
1915                    "type": "boolean"
1916                },
1917                "header": {
1918                    "description": "Header defining sequence identifiers. A header is required for writing SAM, BAM, and CRAM files.",
1919                    "type": "object"
1920                },
1921                "index": {
1922                    "description": "Path to file containing index if different from the standard naming convention for BAM and CRAM files.",
1923                    "type": "string"
1924                },
1925                "name": {
1926                    "description": "Name used for component in log messages.",
1927                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1928                    "type": "string"
1929                },
1930                "regions": {
1931                    "default": [],
1932                    "description": "Region parameters (reference name, start, and end) defining the regions that should be read. If not provided, all regions will be read.",
1933                    "items": {
1934                        "properties": {
1935                            "end": {
1936                                "type": "integer"
1937                            },
1938                            "name": {
1939                                "type": "string"
1940                            },
1941                            "start": {
1942                                "type": "integer"
1943                            }
1944                        },
1945                        "required": [
1946                            "name"
1947                        ],
1948                        "type": "object"
1949                    },
1950                    "type": "array"
1951                }
1952            },
1953            "required": [
1954                "filetype"
1955            ],
1956            "title": "yggdrasil.communication.SequenceFileBase.BCFFileComm",
1957            "type": "object"
1958        },
1959        "file-subtype-bmp": {
1960            "additionalProperties": true,
1961            "allowSingular": "name",
1962            "description": "Schema for file component ['bmp'] subtype.",
1963            "properties": {
1964                "driver": {
1965                    "deprecated": true,
1966                    "description": "[DEPRECATED] Name of driver class that should be used.",
1967                    "enum": [
1968                        ""
1969                    ],
1970                    "type": "string"
1971                },
1972                "filetype": {
1973                    "default": "bmp",
1974                    "description": "bmp image I/O",
1975                    "enum": [
1976                        "bmp"
1977                    ],
1978                    "type": "string"
1979                },
1980                "name": {
1981                    "description": "Name used for component in log messages.",
1982                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
1983                    "type": "string"
1984                },
1985                "params": {
1986                    "default": {},
1987                    "description": "Parameters that should be based to the PIL.Image save/open command",
1988                    "type": "object"
1989                }
1990            },
1991            "required": [
1992                "filetype"
1993            ],
1994            "title": "yggdrasil.communication.ImageFileBase.BMPFileComm",
1995            "type": "object"
1996        },
1997        "file-subtype-cabo": {
1998            "additionalProperties": true,
1999            "allowSingular": "name",
2000            "description": "Schema for file component ['cabo'] subtype.",
2001            "properties": {
2002                "driver": {
2003                    "deprecated": true,
2004                    "description": "[DEPRECATED] Name of driver class that should be used.",
2005                    "enum": [
2006                        ""
2007                    ],
2008                    "type": "string"
2009                },
2010                "filetype": {
2011                    "default": "cabo",
2012                    "description": "The file is a CABO parameter file.",
2013                    "enum": [
2014                        "cabo"
2015                    ],
2016                    "type": "string"
2017                },
2018                "comment": {
2019                    "default": "# ",
2020                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2021                    "type": "string"
2022                },
2023                "datatype": {
2024                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2025                    "type": "schema"
2026                },
2027                "delimiter": {
2028                    "default": " = ",
2029                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
2030                    "type": "string"
2031                },
2032                "name": {
2033                    "description": "Name used for component in log messages.",
2034                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2035                    "type": "string"
2036                },
2037                "newline": {
2038                    "default": "\n",
2039                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2040                    "type": "string"
2041                }
2042            },
2043            "required": [
2044                "filetype"
2045            ],
2046            "title": "yggdrasil.communication.CABOFileComm.CABOFileComm",
2047            "type": "object"
2048        },
2049        "file-subtype-cram": {
2050            "additionalProperties": true,
2051            "allowSingular": "name",
2052            "description": "Schema for file component ['cram'] subtype.",
2053            "properties": {
2054                "driver": {
2055                    "deprecated": true,
2056                    "description": "[DEPRECATED] Name of driver class that should be used.",
2057                    "enum": [
2058                        ""
2059                    ],
2060                    "type": "string"
2061                },
2062                "filetype": {
2063                    "default": "cram",
2064                    "description": "cram sequence I/O",
2065                    "enum": [
2066                        "cram"
2067                    ],
2068                    "type": "string"
2069                },
2070                "flush_on_write": {
2071                    "default": false,
2072                    "description": "If true, the file will be flushed when written to.",
2073                    "type": "boolean"
2074                },
2075                "header": {
2076                    "description": "Header defining sequence identifiers. A header is required for writing SAM, BAM, and CRAM files.",
2077                    "type": "object"
2078                },
2079                "index": {
2080                    "description": "Path to file containing index if different from the standard naming convention for BAM and CRAM files.",
2081                    "type": "string"
2082                },
2083                "name": {
2084                    "description": "Name used for component in log messages.",
2085                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2086                    "type": "string"
2087                },
2088                "regions": {
2089                    "default": [],
2090                    "description": "Region parameters (reference name, start, and end) defining the regions that should be read. If not provided, all regions will be read.",
2091                    "items": {
2092                        "properties": {
2093                            "end": {
2094                                "type": "integer"
2095                            },
2096                            "name": {
2097                                "type": "string"
2098                            },
2099                            "start": {
2100                                "type": "integer"
2101                            }
2102                        },
2103                        "required": [
2104                            "name"
2105                        ],
2106                        "type": "object"
2107                    },
2108                    "type": "array"
2109                }
2110            },
2111            "required": [
2112                "filetype"
2113            ],
2114            "title": "yggdrasil.communication.SequenceFileBase.CRAMFileComm",
2115            "type": "object"
2116        },
2117        "file-subtype-eps": {
2118            "additionalProperties": true,
2119            "allowSingular": "name",
2120            "description": "Schema for file component ['eps'] subtype.",
2121            "properties": {
2122                "driver": {
2123                    "deprecated": true,
2124                    "description": "[DEPRECATED] Name of driver class that should be used.",
2125                    "enum": [
2126                        ""
2127                    ],
2128                    "type": "string"
2129                },
2130                "filetype": {
2131                    "default": "eps",
2132                    "description": "eps image I/O",
2133                    "enum": [
2134                        "eps"
2135                    ],
2136                    "type": "string"
2137                },
2138                "name": {
2139                    "description": "Name used for component in log messages.",
2140                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2141                    "type": "string"
2142                },
2143                "params": {
2144                    "default": {},
2145                    "description": "Parameters that should be based to the PIL.Image save/open command",
2146                    "type": "object"
2147                }
2148            },
2149            "required": [
2150                "filetype"
2151            ],
2152            "title": "yggdrasil.communication.ImageFileBase.EPSFileComm",
2153            "type": "object"
2154        },
2155        "file-subtype-excel": {
2156            "additionalProperties": true,
2157            "allowSingular": "name",
2158            "description": "Schema for file component ['excel'] subtype.",
2159            "properties": {
2160                "driver": {
2161                    "deprecated": true,
2162                    "description": "[DEPRECATED] Name of driver class that should be used.",
2163                    "enum": [
2164                        ""
2165                    ],
2166                    "type": "string"
2167                },
2168                "filetype": {
2169                    "default": "excel",
2170                    "description": "The file is read/written as Excel",
2171                    "enum": [
2172                        "excel"
2173                    ],
2174                    "type": "string"
2175                },
2176                "columns": {
2177                    "description": "Names of columns to read/write.",
2178                    "items": {
2179                        "type": [
2180                            "string",
2181                            "integer"
2182                        ]
2183                    },
2184                    "type": "array"
2185                },
2186                "endcol": {
2187                    "description": "Column to stop read at (non-inclusive).",
2188                    "type": "integer"
2189                },
2190                "endrow": {
2191                    "description": "Row to stop read at (non-inclusive).",
2192                    "type": "integer"
2193                },
2194                "name": {
2195                    "description": "Name used for component in log messages.",
2196                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2197                    "type": "string"
2198                },
2199                "sheet_template": {
2200                    "description": "Format string that can be completed with % operator to generate names for each subsequent sheet when writing.",
2201                    "type": "string"
2202                },
2203                "sheets": {
2204                    "allowSingular": true,
2205                    "default": [],
2206                    "description": "Name(s) of one more more sheets that should be read/written. If not provided during read, all sheets will be read.",
2207                    "items": {
2208                        "type": "string"
2209                    },
2210                    "type": "array"
2211                },
2212                "startcol": {
2213                    "default": 0,
2214                    "description": "Column to start read/write at.",
2215                    "type": "integer"
2216                },
2217                "startrow": {
2218                    "default": 0,
2219                    "description": "Row to start read/write at.",
2220                    "type": "integer"
2221                },
2222                "str_as_bytes": {
2223                    "default": false,
2224                    "description": "If true, strings in columns are read as bytes",
2225                    "type": "boolean"
2226                }
2227            },
2228            "required": [
2229                "filetype"
2230            ],
2231            "title": "yggdrasil.communication.ExcelFileComm.ExcelFileComm",
2232            "type": "object"
2233        },
2234        "file-subtype-fasta": {
2235            "additionalProperties": true,
2236            "allowSingular": "name",
2237            "description": "Schema for file component ['fasta'] subtype.",
2238            "properties": {
2239                "driver": {
2240                    "deprecated": true,
2241                    "description": "[DEPRECATED] Name of driver class that should be used.",
2242                    "enum": [
2243                        ""
2244                    ],
2245                    "type": "string"
2246                },
2247                "filetype": {
2248                    "default": "fasta",
2249                    "description": "fasta sequence I/O",
2250                    "enum": [
2251                        "fasta"
2252                    ],
2253                    "type": "string"
2254                },
2255                "name": {
2256                    "description": "Name used for component in log messages.",
2257                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2258                    "type": "string"
2259                },
2260                "piecemeal": {
2261                    "default": false,
2262                    "description": "If possible read the the file incrementally in multiple messages. This should be used for large files that cannot be loaded into memory.",
2263                    "type": "boolean"
2264                },
2265                "record_ids": {
2266                    "description": "IDs of records to read/write. Other records will be ignored.",
2267                    "type": "array"
2268                }
2269            },
2270            "required": [
2271                "filetype"
2272            ],
2273            "title": "yggdrasil.communication.SequenceFileBase.FASTAFileComm",
2274            "type": "object"
2275        },
2276        "file-subtype-fastq": {
2277            "additionalProperties": true,
2278            "allowSingular": "name",
2279            "description": "Schema for file component ['fastq'] subtype.",
2280            "properties": {
2281                "driver": {
2282                    "deprecated": true,
2283                    "description": "[DEPRECATED] Name of driver class that should be used.",
2284                    "enum": [
2285                        ""
2286                    ],
2287                    "type": "string"
2288                },
2289                "filetype": {
2290                    "default": "fastq",
2291                    "description": "fastq sequence I/O",
2292                    "enum": [
2293                        "fastq"
2294                    ],
2295                    "type": "string"
2296                },
2297                "name": {
2298                    "description": "Name used for component in log messages.",
2299                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2300                    "type": "string"
2301                },
2302                "piecemeal": {
2303                    "default": false,
2304                    "description": "If possible read the the file incrementally in multiple messages. This should be used for large files that cannot be loaded into memory.",
2305                    "type": "boolean"
2306                },
2307                "record_ids": {
2308                    "description": "IDs of records to read/write. Other records will be ignored.",
2309                    "type": "array"
2310                }
2311            },
2312            "required": [
2313                "filetype"
2314            ],
2315            "title": "yggdrasil.communication.SequenceFileBase.FASTQFileComm",
2316            "type": "object"
2317        },
2318        "file-subtype-gif": {
2319            "additionalProperties": true,
2320            "allowSingular": "name",
2321            "description": "Schema for file component ['gif'] subtype.",
2322            "properties": {
2323                "driver": {
2324                    "deprecated": true,
2325                    "description": "[DEPRECATED] Name of driver class that should be used.",
2326                    "enum": [
2327                        ""
2328                    ],
2329                    "type": "string"
2330                },
2331                "filetype": {
2332                    "default": "gif",
2333                    "description": "gif image I/O",
2334                    "enum": [
2335                        "gif"
2336                    ],
2337                    "type": "string"
2338                },
2339                "name": {
2340                    "description": "Name used for component in log messages.",
2341                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2342                    "type": "string"
2343                },
2344                "params": {
2345                    "default": {},
2346                    "description": "Parameters that should be based to the PIL.Image save/open command",
2347                    "type": "object"
2348                }
2349            },
2350            "required": [
2351                "filetype"
2352            ],
2353            "title": "yggdrasil.communication.ImageFileBase.GIFFileComm",
2354            "type": "object"
2355        },
2356        "file-subtype-jpeg": {
2357            "additionalProperties": true,
2358            "allowSingular": "name",
2359            "description": "Schema for file component ['jpeg'] subtype.",
2360            "properties": {
2361                "driver": {
2362                    "deprecated": true,
2363                    "description": "[DEPRECATED] Name of driver class that should be used.",
2364                    "enum": [
2365                        ""
2366                    ],
2367                    "type": "string"
2368                },
2369                "filetype": {
2370                    "default": "jpeg",
2371                    "description": "jpeg image I/O",
2372                    "enum": [
2373                        "jpeg"
2374                    ],
2375                    "type": "string"
2376                },
2377                "name": {
2378                    "description": "Name used for component in log messages.",
2379                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2380                    "type": "string"
2381                },
2382                "params": {
2383                    "default": {},
2384                    "description": "Parameters that should be based to the PIL.Image save/open command",
2385                    "type": "object"
2386                }
2387            },
2388            "required": [
2389                "filetype"
2390            ],
2391            "title": "yggdrasil.communication.ImageFileBase.JPEGFileComm",
2392            "type": "object"
2393        },
2394        "file-subtype-json": {
2395            "additionalProperties": true,
2396            "allowSingular": "name",
2397            "description": "Schema for file component ['json'] subtype.",
2398            "properties": {
2399                "driver": {
2400                    "deprecated": true,
2401                    "description": "[DEPRECATED] Name of driver class that should be used.",
2402                    "enum": [
2403                        ""
2404                    ],
2405                    "type": "string"
2406                },
2407                "filetype": {
2408                    "default": "json",
2409                    "description": "The file contains a JSON serialized object.",
2410                    "enum": [
2411                        "json"
2412                    ],
2413                    "type": "string"
2414                },
2415                "comment": {
2416                    "default": "# ",
2417                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2418                    "type": "string"
2419                },
2420                "datatype": {
2421                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2422                    "type": "schema"
2423                },
2424                "indent": {
2425                    "default": "\t",
2426                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
2427                    "type": [
2428                        "string",
2429                        "int"
2430                    ]
2431                },
2432                "name": {
2433                    "description": "Name used for component in log messages.",
2434                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2435                    "type": "string"
2436                },
2437                "newline": {
2438                    "default": "\n",
2439                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2440                    "type": "string"
2441                },
2442                "sort_keys": {
2443                    "default": true,
2444                    "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
2445                    "type": "boolean"
2446                }
2447            },
2448            "required": [
2449                "filetype"
2450            ],
2451            "title": "yggdrasil.communication.JSONFileComm.JSONFileComm",
2452            "type": "object"
2453        },
2454        "file-subtype-mat": {
2455            "additionalProperties": true,
2456            "allowSingular": "name",
2457            "description": "Schema for file component ['mat'] subtype.",
2458            "properties": {
2459                "driver": {
2460                    "deprecated": true,
2461                    "description": "[DEPRECATED] Name of driver class that should be used.",
2462                    "enum": [
2463                        "MatInputDriver",
2464                        "MatOutputDriver"
2465                    ],
2466                    "type": "string"
2467                },
2468                "filetype": {
2469                    "default": "mat",
2470                    "description": "The file is a Matlab .mat file containing one or more serialized Matlab variables.",
2471                    "enum": [
2472                        "mat"
2473                    ],
2474                    "type": "string"
2475                },
2476                "args": {
2477                    "deprecated": true,
2478                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
2479                    "type": "string"
2480                },
2481                "comment": {
2482                    "default": "# ",
2483                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2484                    "type": "string"
2485                },
2486                "datatype": {
2487                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2488                    "type": "schema"
2489                },
2490                "name": {
2491                    "description": "Name used for component in log messages.",
2492                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2493                    "type": "string"
2494                },
2495                "newline": {
2496                    "default": "\n",
2497                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2498                    "type": "string"
2499                }
2500            },
2501            "required": [
2502                "filetype"
2503            ],
2504            "title": "yggdrasil.communication.MatFileComm.MatFileComm",
2505            "type": "object"
2506        },
2507        "file-subtype-netcdf": {
2508            "additionalProperties": true,
2509            "allowSingular": "name",
2510            "description": "Schema for file component ['netcdf'] subtype.",
2511            "properties": {
2512                "driver": {
2513                    "deprecated": true,
2514                    "description": "[DEPRECATED] Name of driver class that should be used.",
2515                    "enum": [
2516                        ""
2517                    ],
2518                    "type": "string"
2519                },
2520                "filetype": {
2521                    "default": "netcdf",
2522                    "description": "The file is read/written as netCDF.",
2523                    "enum": [
2524                        "netcdf"
2525                    ],
2526                    "type": "string"
2527                },
2528                "name": {
2529                    "description": "Name used for component in log messages.",
2530                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2531                    "type": "string"
2532                },
2533                "read_attributes": {
2534                    "default": false,
2535                    "description": "If True, the attributes are read in as well as the variables. Defaults to False.",
2536                    "type": "boolean"
2537                },
2538                "variables": {
2539                    "description": "List of variables to read in. If not provided, all variables will be read.",
2540                    "items": {
2541                        "type": "string"
2542                    },
2543                    "type": "array"
2544                },
2545                "version": {
2546                    "default": 1,
2547                    "description": "Version of netCDF format that should be used. Defaults to 1. Options are 1 (classic format) and 2 (64-bit offset format).",
2548                    "enum": [
2549                        1,
2550                        2
2551                    ],
2552                    "type": "integer"
2553                }
2554            },
2555            "required": [
2556                "filetype"
2557            ],
2558            "title": "yggdrasil.communication.NetCDFFileComm.NetCDFFileComm",
2559            "type": "object"
2560        },
2561        "file-subtype-obj": {
2562            "additionalProperties": true,
2563            "allowSingular": "name",
2564            "description": "Schema for file component ['obj'] subtype.",
2565            "properties": {
2566                "driver": {
2567                    "deprecated": true,
2568                    "description": "[DEPRECATED] Name of driver class that should be used.",
2569                    "enum": [
2570                        "ObjFileInputDriver",
2571                        "ObjFileOutputDriver"
2572                    ],
2573                    "type": "string"
2574                },
2575                "filetype": {
2576                    "default": "obj",
2577                    "description": "The file is in the `Obj <http://paulbourke.net/dataformats/obj/>`_ data format for 3D structures.",
2578                    "enum": [
2579                        "obj"
2580                    ],
2581                    "type": "string"
2582                },
2583                "args": {
2584                    "deprecated": true,
2585                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
2586                    "type": "string"
2587                },
2588                "comment": {
2589                    "default": "# ",
2590                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2591                    "type": "string"
2592                },
2593                "datatype": {
2594                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2595                    "type": "schema"
2596                },
2597                "name": {
2598                    "description": "Name used for component in log messages.",
2599                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2600                    "type": "string"
2601                },
2602                "newline": {
2603                    "default": "\n",
2604                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2605                    "type": "string"
2606                },
2607                "prune_duplicates": {
2608                    "default": true,
2609                    "description": "If True, serialized meshes in array format will be pruned of duplicates when being normalized into a Ply object. If False, duplicates will not be pruned. Defaults to True.",
2610                    "type": "boolean"
2611                }
2612            },
2613            "required": [
2614                "filetype"
2615            ],
2616            "title": "yggdrasil.communication.ObjFileComm.ObjFileComm",
2617            "type": "object"
2618        },
2619        "file-subtype-png": {
2620            "additionalProperties": true,
2621            "allowSingular": "name",
2622            "description": "Schema for file component ['png'] subtype.",
2623            "properties": {
2624                "driver": {
2625                    "deprecated": true,
2626                    "description": "[DEPRECATED] Name of driver class that should be used.",
2627                    "enum": [
2628                        ""
2629                    ],
2630                    "type": "string"
2631                },
2632                "filetype": {
2633                    "default": "png",
2634                    "description": "png image I/O",
2635                    "enum": [
2636                        "png"
2637                    ],
2638                    "type": "string"
2639                },
2640                "name": {
2641                    "description": "Name used for component in log messages.",
2642                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2643                    "type": "string"
2644                },
2645                "params": {
2646                    "default": {},
2647                    "description": "Parameters that should be based to the PIL.Image save/open command",
2648                    "type": "object"
2649                }
2650            },
2651            "required": [
2652                "filetype"
2653            ],
2654            "title": "yggdrasil.communication.ImageFileBase.PNGFileComm",
2655            "type": "object"
2656        },
2657        "file-subtype-pandas": {
2658            "additionalProperties": true,
2659            "allowSingular": "name",
2660            "description": "Schema for file component ['pandas'] subtype.",
2661            "properties": {
2662                "driver": {
2663                    "deprecated": true,
2664                    "description": "[DEPRECATED] Name of driver class that should be used.",
2665                    "enum": [
2666                        "PandasFileInputDriver",
2667                        "PandasFileOutputDriver"
2668                    ],
2669                    "type": "string"
2670                },
2671                "filetype": {
2672                    "default": "pandas",
2673                    "description": "The file is a Pandas frame output as a table.",
2674                    "enum": [
2675                        "pandas"
2676                    ],
2677                    "type": "string"
2678                },
2679                "args": {
2680                    "deprecated": true,
2681                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
2682                    "type": "string"
2683                },
2684                "comment": {
2685                    "default": "# ",
2686                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2687                    "type": "string"
2688                },
2689                "datatype": {
2690                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2691                    "type": "schema"
2692                },
2693                "delimiter": {
2694                    "aliases": [
2695                        "column"
2696                    ],
2697                    "default": "\t",
2698                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
2699                    "type": "string"
2700                },
2701                "name": {
2702                    "description": "Name used for component in log messages.",
2703                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2704                    "type": "string"
2705                },
2706                "newline": {
2707                    "default": "\n",
2708                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2709                    "type": "string"
2710                },
2711                "no_header": {
2712                    "default": false,
2713                    "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
2714                    "type": "boolean"
2715                },
2716                "str_as_bytes": {
2717                    "default": false,
2718                    "description": "If True, strings in columns are read as bytes. Defaults to False.",
2719                    "type": "boolean"
2720                },
2721                "use_astropy": {
2722                    "default": false,
2723                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
2724                    "type": "boolean"
2725                }
2726            },
2727            "required": [
2728                "filetype"
2729            ],
2730            "title": "yggdrasil.communication.PandasFileComm.PandasFileComm",
2731            "type": "object"
2732        },
2733        "file-subtype-pickle": {
2734            "additionalProperties": true,
2735            "allowSingular": "name",
2736            "description": "Schema for file component ['pickle'] subtype.",
2737            "properties": {
2738                "driver": {
2739                    "deprecated": true,
2740                    "description": "[DEPRECATED] Name of driver class that should be used.",
2741                    "enum": [
2742                        "PickleFileInputDriver",
2743                        "PickleFileOutputDriver"
2744                    ],
2745                    "type": "string"
2746                },
2747                "filetype": {
2748                    "default": "pickle",
2749                    "description": "The file contains one or more pickled Python objects.",
2750                    "enum": [
2751                        "pickle"
2752                    ],
2753                    "type": "string"
2754                },
2755                "args": {
2756                    "deprecated": true,
2757                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
2758                    "type": "string"
2759                },
2760                "comment": {
2761                    "default": "# ",
2762                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2763                    "type": "string"
2764                },
2765                "datatype": {
2766                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2767                    "type": "schema"
2768                },
2769                "name": {
2770                    "description": "Name used for component in log messages.",
2771                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2772                    "type": "string"
2773                },
2774                "newline": {
2775                    "default": "\n",
2776                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2777                    "type": "string"
2778                }
2779            },
2780            "required": [
2781                "filetype"
2782            ],
2783            "title": "yggdrasil.communication.PickleFileComm.PickleFileComm",
2784            "type": "object"
2785        },
2786        "file-subtype-ply": {
2787            "additionalProperties": true,
2788            "allowSingular": "name",
2789            "description": "Schema for file component ['ply'] subtype.",
2790            "properties": {
2791                "driver": {
2792                    "deprecated": true,
2793                    "description": "[DEPRECATED] Name of driver class that should be used.",
2794                    "enum": [
2795                        "PlyFileInputDriver",
2796                        "PlyFileOutputDriver"
2797                    ],
2798                    "type": "string"
2799                },
2800                "filetype": {
2801                    "default": "ply",
2802                    "description": "The file is in the `Ply <http://paulbourke.net/dataformats/ply/>`_ data format for 3D structures.",
2803                    "enum": [
2804                        "ply"
2805                    ],
2806                    "type": "string"
2807                },
2808                "args": {
2809                    "deprecated": true,
2810                    "description": "[DEPRECATED] Arguments that should be provided to the driver.",
2811                    "type": "string"
2812                },
2813                "comment": {
2814                    "default": "# ",
2815                    "description": "One or more characters indicating a comment. Defaults to '# '.",
2816                    "type": "string"
2817                },
2818                "datatype": {
2819                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
2820                    "type": "schema"
2821                },
2822                "name": {
2823                    "description": "Name used for component in log messages.",
2824                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2825                    "type": "string"
2826                },
2827                "newline": {
2828                    "default": "\n",
2829                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
2830                    "type": "string"
2831                },
2832                "prune_duplicates": {
2833                    "default": true,
2834                    "description": "If True, serialized meshes in array format will be pruned of duplicates when being normalized into a Ply object. If False, duplicates will not be pruned. Defaults to True.",
2835                    "type": "boolean"
2836                }
2837            },
2838            "required": [
2839                "filetype"
2840            ],
2841            "title": "yggdrasil.communication.PlyFileComm.PlyFileComm",
2842            "type": "object"
2843        },
2844        "file-subtype-sam": {
2845            "additionalProperties": true,
2846            "allowSingular": "name",
2847            "description": "Schema for file component ['sam'] subtype.",
2848            "properties": {
2849                "driver": {
2850                    "deprecated": true,
2851                    "description": "[DEPRECATED] Name of driver class that should be used.",
2852                    "enum": [
2853                        ""
2854                    ],
2855                    "type": "string"
2856                },
2857                "filetype": {
2858                    "default": "sam",
2859                    "description": "sam sequence I/O",
2860                    "enum": [
2861                        "sam"
2862                    ],
2863                    "type": "string"
2864                },
2865                "flush_on_write": {
2866                    "default": false,
2867                    "description": "If true, the file will be flushed when written to.",
2868                    "type": "boolean"
2869                },
2870                "header": {
2871                    "description": "Header defining sequence identifiers. A header is required for writing SAM, BAM, and CRAM files.",
2872                    "type": "object"
2873                },
2874                "index": {
2875                    "description": "Path to file containing index if different from the standard naming convention for BAM and CRAM files.",
2876                    "type": "string"
2877                },
2878                "name": {
2879                    "description": "Name used for component in log messages.",
2880                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2881                    "type": "string"
2882                },
2883                "regions": {
2884                    "default": [],
2885                    "description": "Region parameters (reference name, start, and end) defining the regions that should be read. If not provided, all regions will be read.",
2886                    "items": {
2887                        "properties": {
2888                            "end": {
2889                                "type": "integer"
2890                            },
2891                            "name": {
2892                                "type": "string"
2893                            },
2894                            "start": {
2895                                "type": "integer"
2896                            }
2897                        },
2898                        "required": [
2899                            "name"
2900                        ],
2901                        "type": "object"
2902                    },
2903                    "type": "array"
2904                }
2905            },
2906            "required": [
2907                "filetype"
2908            ],
2909            "title": "yggdrasil.communication.SequenceFileBase.SAMFileComm",
2910            "type": "object"
2911        },
2912        "file-subtype-tiff": {
2913            "additionalProperties": true,
2914            "allowSingular": "name",
2915            "description": "Schema for file component ['tiff'] subtype.",
2916            "properties": {
2917                "driver": {
2918                    "deprecated": true,
2919                    "description": "[DEPRECATED] Name of driver class that should be used.",
2920                    "enum": [
2921                        ""
2922                    ],
2923                    "type": "string"
2924                },
2925                "filetype": {
2926                    "default": "tiff",
2927                    "description": "tiff image I/O",
2928                    "enum": [
2929                        "tiff"
2930                    ],
2931                    "type": "string"
2932                },
2933                "name": {
2934                    "description": "Name used for component in log messages.",
2935                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2936                    "type": "string"
2937                },
2938                "params": {
2939                    "default": {},
2940                    "description": "Parameters that should be based to the PIL.Image save/open command",
2941                    "type": "object"
2942                }
2943            },
2944            "required": [
2945                "filetype"
2946            ],
2947            "title": "yggdrasil.communication.ImageFileBase.TIFFFileComm",
2948            "type": "object"
2949        },
2950        "file-subtype-vcf": {
2951            "additionalProperties": true,
2952            "allowSingular": "name",
2953            "description": "Schema for file component ['vcf'] subtype.",
2954            "properties": {
2955                "driver": {
2956                    "deprecated": true,
2957                    "description": "[DEPRECATED] Name of driver class that should be used.",
2958                    "enum": [
2959                        ""
2960                    ],
2961                    "type": "string"
2962                },
2963                "filetype": {
2964                    "default": "vcf",
2965                    "description": "vcf sequence I/O",
2966                    "enum": [
2967                        "vcf"
2968                    ],
2969                    "type": "string"
2970                },
2971                "flush_on_write": {
2972                    "default": false,
2973                    "description": "If true, the file will be flushed when written to.",
2974                    "type": "boolean"
2975                },
2976                "header": {
2977                    "description": "Header defining sequence identifiers. A header is required for writing SAM, BAM, and CRAM files.",
2978                    "type": "object"
2979                },
2980                "index": {
2981                    "description": "Path to file containing index if different from the standard naming convention for BAM and CRAM files.",
2982                    "type": "string"
2983                },
2984                "name": {
2985                    "description": "Name used for component in log messages.",
2986                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
2987                    "type": "string"
2988                },
2989                "regions": {
2990                    "default": [],
2991                    "description": "Region parameters (reference name, start, and end) defining the regions that should be read. If not provided, all regions will be read.",
2992                    "items": {
2993                        "properties": {
2994                            "end": {
2995                                "type": "integer"
2996                            },
2997                            "name": {
2998                                "type": "string"
2999                            },
3000                            "start": {
3001                                "type": "integer"
3002                            }
3003                        },
3004                        "required": [
3005                            "name"
3006                        ],
3007                        "type": "object"
3008                    },
3009                    "type": "array"
3010                }
3011            },
3012            "required": [
3013                "filetype"
3014            ],
3015            "title": "yggdrasil.communication.SequenceFileBase.VCFFileComm",
3016            "type": "object"
3017        },
3018        "file-subtype-yaml": {
3019            "additionalProperties": true,
3020            "allowSingular": "name",
3021            "description": "Schema for file component ['yaml'] subtype.",
3022            "properties": {
3023                "driver": {
3024                    "deprecated": true,
3025                    "description": "[DEPRECATED] Name of driver class that should be used.",
3026                    "enum": [
3027                        ""
3028                    ],
3029                    "type": "string"
3030                },
3031                "filetype": {
3032                    "default": "yaml",
3033                    "description": "The file contains a YAML serialized object.",
3034                    "enum": [
3035                        "yaml"
3036                    ],
3037                    "type": "string"
3038                },
3039                "comment": {
3040                    "default": "# ",
3041                    "description": "One or more characters indicating a comment. Defaults to '# '.",
3042                    "type": "string"
3043                },
3044                "datatype": {
3045                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
3046                    "type": "schema"
3047                },
3048                "default_flow_style": {
3049                    "default": false,
3050                    "description": "If True, nested collections will be serialized in the block style. If False, they will always be serialized in the flow style. See `PyYAML Documentation <https://pyyaml.org/wiki/PyYAMLDocumentation>`_.",
3051                    "type": "boolean"
3052                },
3053                "encoding": {
3054                    "default": "utf-8",
3055                    "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
3056                    "type": "string"
3057                },
3058                "indent": {
3059                    "default": "\t",
3060                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
3061                    "type": [
3062                        "string",
3063                        "int"
3064                    ]
3065                },
3066                "name": {
3067                    "description": "Name used for component in log messages.",
3068                    "pattern": "^([A-Za-z0-9-_]+:)?\\.?[A-Za-z0-9-_\\\\\\/]+\\.[A-Za-z0-9-_]+(::[A-Za-z0-9-_]+)?$",
3069                    "type": "string"
3070                },
3071                "newline": {
3072                    "default": "\n",
3073                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
3074                    "type": "string"
3075                }
3076            },
3077            "required": [
3078                "filetype"
3079            ],
3080            "title": "yggdrasil.communication.YAMLFileComm.YAMLFileComm",
3081            "type": "object"
3082        },
3083        "file_driver": {
3084            "allOf": [
3085                {
3086                    "$ref": "#/definitions/file"
3087                },
3088                {
3089                    "required": [
3090                        "driver",
3091                        "args",
3092                        "working_dir"
3093                    ],
3094                    "properties": {
3095                        "driver": {
3096                            "type": "string",
3097                            "deprecated": true,
3098                            "description": "[DEPRECATED] Name of driver class that should be used."
3099                        },
3100                        "args": {
3101                            "type": "string",
3102                            "deprecated": true,
3103                            "description": "[DEPRECATED] Arguments that should be provided to the driver."
3104                        },
3105                        "working_dir": {
3106                            "type": "string"
3107                        }
3108                    }
3109                }
3110            ]
3111        },
3112        "filter": {
3113            "description": "Schema for filter components.",
3114            "title": "complete-filter-filtertype",
3115            "allOf": [
3116                {
3117                    "$ref": "#/definitions/filter-subtype-base"
3118                },
3119                {
3120                    "anyOf": [
3121                        {
3122                            "$ref": "#/definitions/filter-subtype-direct"
3123                        },
3124                        {
3125                            "$ref": "#/definitions/filter-subtype-function"
3126                        },
3127                        {
3128                            "$ref": "#/definitions/filter-subtype-statement"
3129                        }
3130                    ]
3131                }
3132            ]
3133        },
3134        "filter-subtype-base": {
3135            "additionalProperties": false,
3136            "description": "Base schema for all subtypes of filter components.",
3137            "properties": {
3138                "filtertype": {
3139                    "description": "Pass every message",
3140                    "enum": [
3141                        "direct",
3142                        "function",
3143                        "statement"
3144                    ],
3145                    "type": "string"
3146                },
3147                "function": {
3148                    "description": "The handle for a callable Python object (e.g. function) that should be used to determine if a message should be filtered or a string of the form \"<function file>:<function name>\" identifying a function where \"<function file>\" is the module or Python file containing the function and \"<function name>\" is the name of the function. The function should take the message as input and return a boolean, True if the message should pass through the filter, False if it should not.",
3149                    "type": "function"
3150                },
3151                "statement": {
3152                    "description": "Python statement in terms of the message as represented by the string \"%x%\" that should evaluate to a boolean, True if the message should pass through the filter, False if it should not. The statement should only use a limited set of builtins and the math library (See yggdrasil.tools.safe_eval). If more complex relationships are required, use the FunctionFilter class.",
3153                    "type": "string"
3154                }
3155            },
3156            "title": "filter_base",
3157            "type": "object"
3158        },
3159        "filter-subtype-direct": {
3160            "additionalProperties": true,
3161            "description": "Schema for filter component ['direct'] subtype.",
3162            "properties": {
3163                "filtertype": {
3164                    "default": "direct",
3165                    "description": "Pass every message",
3166                    "enum": [
3167                        "direct"
3168                    ],
3169                    "type": "string"
3170                }
3171            },
3172            "title": "yggdrasil.communication.filters.DirectFilter.DirectFilter",
3173            "type": "object"
3174        },
3175        "filter-subtype-function": {
3176            "additionalProperties": true,
3177            "description": "Schema for filter component ['function'] subtype.",
3178            "properties": {
3179                "filtertype": {
3180                    "default": "function",
3181                    "description": "Filter messages based on a function",
3182                    "enum": [
3183                        "function"
3184                    ],
3185                    "type": "string"
3186                },
3187                "function": {
3188                    "description": "The handle for a callable Python object (e.g. function) that should be used to determine if a message should be filtered or a string of the form \"<function file>:<function name>\" identifying a function where \"<function file>\" is the module or Python file containing the function and \"<function name>\" is the name of the function. The function should take the message as input and return a boolean, True if the message should pass through the filter, False if it should not.",
3189                    "type": "function"
3190                }
3191            },
3192            "required": [
3193                "function"
3194            ],
3195            "title": "yggdrasil.communication.filters.FunctionFilter.FunctionFilter",
3196            "type": "object"
3197        },
3198        "filter-subtype-statement": {
3199            "additionalProperties": true,
3200            "description": "Schema for filter component ['statement'] subtype.",
3201            "properties": {
3202                "filtertype": {
3203                    "default": "statement",
3204                    "description": "Filter messages based on a statement",
3205                    "enum": [
3206                        "statement"
3207                    ],
3208                    "type": "string"
3209                },
3210                "statement": {
3211                    "description": "Python statement in terms of the message as represented by the string \"%x%\" that should evaluate to a boolean, True if the message should pass through the filter, False if it should not. The statement should only use a limited set of builtins and the math library (See yggdrasil.tools.safe_eval). If more complex relationships are required, use the FunctionFilter class.",
3212                    "type": "string"
3213                }
3214            },
3215            "required": [
3216                "statement"
3217            ],
3218            "title": "yggdrasil.communication.filters.StatementFilter.StatementFilter",
3219            "type": "object"
3220        },
3221        "model": {
3222            "description": "Schema for model components.",
3223            "title": "complete-model-language",
3224            "allOf": [
3225                {
3226                    "$ref": "#/definitions/model-subtype-base"
3227                },
3228                {
3229                    "anyOf": [
3230                        {
3231                            "$ref": "#/definitions/model-subtype-executable"
3232                        },
3233                        {
3234                            "$ref": "#/definitions/model-subtype-cmake"
3235                        },
3236                        {
3237                            "$ref": "#/definitions/model-subtype-c"
3238                        },
3239                        {
3240                            "$ref": "#/definitions/model-subtype-cpp"
3241                        },
3242                        {
3243                            "$ref": "#/definitions/model-subtype-dummy"
3244                        },
3245                        {
3246                            "$ref": "#/definitions/model-subtype-fortran"
3247                        },
3248                        {
3249                            "$ref": "#/definitions/model-subtype-julia"
3250                        },
3251                        {
3252                            "$ref": "#/definitions/model-subtype-lpy"
3253                        },
3254                        {
3255                            "$ref": "#/definitions/model-subtype-mpi"
3256                        },
3257                        {
3258                            "$ref": "#/definitions/model-subtype-make"
3259                        },
3260                        {
3261                            "$ref": "#/definitions/model-subtype-matlab"
3262                        },
3263                        {
3264                            "$ref": "#/definitions/model-subtype-osr"
3265                        },
3266                        {
3267                            "$ref": "#/definitions/model-subtype-pytorch"
3268                        },
3269                        {
3270                            "$ref": "#/definitions/model-subtype-python"
3271                        },
3272                        {
3273                            "$ref": "#/definitions/model-subtype-R"
3274                        },
3275                        {
3276                            "$ref": "#/definitions/model-subtype-sbml"
3277                        },
3278                        {
3279                            "$ref": "#/definitions/model-subtype-timesync"
3280                        }
3281                    ]
3282                }
3283            ]
3284        },
3285        "model-subtype-base": {
3286            "additionalProperties": false,
3287            "description": "Base schema for all subtypes of model components.",
3288            "properties": {
3289                "dependencies": {
3290                    "description": "A list of packages required by the model that are written in the same language as the model. If the package requires dependencies outside the language of the model. use the additional_dependencies parameter to provide them. If you need a version of the package from a specific package manager, a mapping with 'package' and 'package_manager' fields can be provided instead of just the name of the package.",
3291                    "items": {
3292                        "oneOf": [
3293                            {
3294                                "type": "string"
3295                            },
3296                            {
3297                                "additionalProperties": false,
3298                                "properties": {
3299                                    "arguments": {
3300                                        "type": "string"
3301                                    },
3302                                    "package": {
3303                                        "type": "string"
3304                                    },
3305                                    "package_manager": {
3306                                        "type": "string"
3307                                    }
3308                                },
3309                                "required": [
3310                                    "package"
3311                                ],
3312                                "type": "object"
3313                            }
3314                        ]
3315                    },
3316                    "type": "array"
3317                },
3318                "with_debugger": {
3319                    "description": "Debugger tool that should be used to run models. This string should include the tool executable and any flags that should be passed to it.",
3320                    "type": "string"
3321                },
3322                "valgrind_flags": {
3323                    "default": [
3324                        "--leak-check=full",
3325                        "--show-leak-kinds=all"
3326                    ],
3327                    "description": "Flags to pass to valgrind. Defaults to [].",
3328                    "items": {
3329                        "type": "string"
3330                    },
3331                    "type": "array"
3332                },
3333                "args": {
3334                    "allowSingular": true,
3335                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
3336                    "items": {
3337                        "type": [
3338                            "string",
3339                            "number"
3340                        ]
3341                    },
3342                    "type": "array"
3343                },
3344                "preserve_cache": {
3345                    "default": false,
3346                    "description": "If True model products will be kept following the run, otherwise all products will be cleaned up. Defaults to False. This keyword is superceeded by overwrite.",
3347                    "type": "boolean"
3348                },
3349                "additional_dependencies": {
3350                    "additionalProperties": {
3351                        "items": {
3352                            "oneOf": [
3353                                {
3354                                    "type": "string"
3355                                },
3356                                {
3357                                    "additionalProperties": false,
3358                                    "properties": {
3359                                        "arguments": {
3360                                            "type": "string"
3361                                        },
3362                                        "package": {
3363                                            "type": "string"
3364                                        },
3365                                        "package_manager": {
3366                                            "type": "string"
3367                                        }
3368                                    },
3369                                    "required": [
3370                                        "package"
3371                                    ],
3372                                    "type": "object"
3373                                }
3374                            ]
3375                        },
3376                        "type": "array"
3377                    },
3378                    "description": "A mapping between languages and lists of packages in those languages that are required by the model.",
3379                    "type": "object"
3380                },
3381                "products": {
3382                    "default": [],
3383                    "description": "Paths to files created by the model that should be cleaned up when the model exits. Entries can be absolute paths or paths relative to the working directory. Defaults to [].",
3384                    "items": {
3385                        "type": "string"
3386                    },
3387                    "type": "array"
3388                },
3389                "iter_function_over": {
3390                    "default": [],
3391                    "description": "Variable(s) that should be received or sent as an array, but iterated over. Defaults to an empty array and is ignored.",
3392                    "items": {
3393                        "type": "string"
3394                    },
3395                    "type": "array"
3396                },
3397                "with_valgrind": {
3398                    "default": false,
3399                    "description": "If True, the command is run with valgrind. Defaults to False.",
3400                    "type": "boolean"
3401                },
3402                "env": {
3403                    "additional_properties": {
3404                        "type": "string"
3405                    },
3406                    "default": {},
3407                    "description": "Dictionary of environment variables that should be set when the driver starts. Defaults to {}.",
3408                    "type": "object"
3409                },
3410                "copies": {
3411                    "default": 1,
3412                    "description": "The number of copies of the model that should be created. Defaults to 1.",
3413                    "minimum": 1,
3414                    "type": "integer"
3415                },
3416                "with_strace": {
3417                    "default": false,
3418                    "description": "If True, the command is run with strace (on Linux) or dtrace (on MacOS). Defaults to False.",
3419                    "type": "boolean"
3420                },
3421                "logging_level": {
3422                    "default": "",
3423                    "description": "The level of logging messages that should be displayed by the model. Defaults to the logging level as determined by the configuration file and environment variables.",
3424                    "type": "string"
3425                },
3426                "is_server": {
3427                    "anyOf": [
3428                        {
3429                            "type": "boolean"
3430                        },
3431                        {
3432                            "additionalProperties": false,
3433                            "properties": {
3434                                "input": {
3435                                    "type": "string"
3436                                },
3437                                "output": {
3438                                    "type": "string"
3439                                }
3440                            },
3441                            "type": "object"
3442                        }
3443                    ],
3444                    "default": false,
3445                    "description": "If `True`, the model is assumed to be a server for one or more client models and an instance of :class:`yggdrasil.drivers.ServerDriver` is started. The corresponding channel that should be passed to the yggdrasil API will be the name of the model. If is_server is a dictionary, it should contain an 'input' key and an 'output' key. These are required to be the names of existing input and output channels in the model that will be co-opted by the server. (Note: This requires that the co-opted output channel's send method is called once for each time the co-opted input channel's recv method is called. If used with the `function` parameter, `is_server` must be a dictionary. Defaults to False."
3446                },
3447                "repository_commit": {
3448                    "description": "Commit that should be checked out in the model repository specified by repository_url. If not provided, the most recent commit on the default branch will be used.",
3449                    "type": "string"
3450                },
3451                "inputs": {
3452                    "aliases": [
3453                        "input",
3454                        "input_file",
3455                        "input_files"
3456                    ],
3457                    "allowSingular": true,
3458                    "default": [
3459                        {
3460                            "commtype": "default",
3461                            "datatype": {
3462                                "subtype": "string",
3463                                "type": "scalar"
3464                            },
3465                            "is_default": true,
3466                            "name": "input"
3467                        }
3468                    ],
3469                    "description": "Zero or more channels carrying input to the model. A full description of channel entries and the options available for channels can be found :ref:`here<yaml_comm_options>`.",
3470                    "items": {
3471                        "anyOf": [
3472                            {
3473                                "$ref": "#/definitions/comm"
3474                            },
3475                            {
3476                                "$ref": "#/definitions/comm_driver"
3477                            },
3478                            {
3479                                "$ref": "#/definitions/file_driver"
3480                            }
3481                        ]
3482                    },
3483                    "type": "array"
3484                },
3485                "source_products": {
3486                    "default": [],
3487                    "description": "Files created by running the model that are source files. These files will be removed without checking their extension so users should avoid adding files to this list unless they are sure they should be deleted. Defaults to [].",
3488                    "items": {
3489                        "type": "string"
3490                    },
3491                    "type": "array"
3492                },
3493                "overwrite": {
3494                    "description": "If True, any existing model products (compilation products, wrapper scripts, etc.) are removed prior to the run. If False, the products are not removed. Defaults to True. Setting this to False can improve the performance, particularly for models that take a long time to compile, but this should only be done once the model has been fully debugged to ensure that each run is tested on a clean copy of the model. The value of this keyword also determines whether or not products are removed after a run.",
3495                    "type": "boolean"
3496                },
3497                "language": {
3498                    "default": "executable",
3499                    "description": "The programming language that the model is written in. A list of available languages can be found :ref:`here <schema_table_model_subtype_rst>`.",
3500                    "enum": [
3501                        "R",
3502                        "c",
3503                        "c++",
3504                        "cmake",
3505                        "cpp",
3506                        "cxx",
3507                        "dummy",
3508                        "executable",
3509                        "fortran",
3510                        "julia",
3511                        "lpy",
3512                        "make",
3513                        "matlab",
3514                        "mpi",
3515                        "osr",
3516                        "python",
3517                        "pytorch",
3518                        "r",
3519                        "sbml",
3520                        "timesync"
3521                    ],
3522                    "type": "string"
3523                },
3524                "function": {
3525                    "description": "If provided, an integrated model is created by wrapping the function named here. The function must be located within the file specified by the source file listed in the first argument. If not provided, the model must contain it's own calls to the |yggdrasil| interface.",
3526                    "type": "string"
3527                },
3528                "client_of": {
3529                    "allowSingular": true,
3530                    "default": [],
3531                    "description": "The names of one or more models that this model will call as a server. If there are more than one, this should be specified as a sequence collection (list). The corresponding channel(s) that should be passed to the yggdrasil API will be the name of the server model joined with the name of the client model with an underscore `<server_model>_<client_model>`. There will be one channel created for each server the model is a client of. Defaults to empty list. Use of `client_of` with `function` is not currently supported.",
3532                    "items": {
3533                        "type": "string"
3534                    },
3535                    "type": "array"
3536                },
3537                "outputs_in_inputs": {
3538                    "description": "If True, outputs from wrapped model functions are passed by pointer as inputs for modification and the return value will be a flag. If False, outputs are limited to return values. Defaults to the value of the class attribute outputs_in_inputs.",
3539                    "type": "boolean"
3540                },
3541                "name": {
3542                    "description": "Name used for component in log messages.",
3543                    "type": "string"
3544                },
3545                "outputs": {
3546                    "aliases": [
3547                        "output",
3548                        "output_file",
3549                        "output_files"
3550                    ],
3551                    "allowSingular": true,
3552                    "default": [
3553                        {
3554                            "commtype": "default",
3555                            "datatype": {
3556                                "subtype": "string",
3557                                "type": "scalar"
3558                            },
3559                            "is_default": true,
3560                            "name": "output"
3561                        }
3562                    ],
3563                    "description": "Zero or more channels carrying output from the model. A full description of channel entries and the options available for channels can be found :ref:`here<yaml_comm_options>`.",
3564                    "items": {
3565                        "anyOf": [
3566                            {
3567                                "$ref": "#/definitions/comm"
3568                            },
3569                            {
3570                                "$ref": "#/definitions/comm_driver"
3571                            },
3572                            {
3573                                "$ref": "#/definitions/file_driver"
3574                            }
3575                        ]
3576                    },
3577                    "type": "array"
3578                },
3579                "repository_url": {
3580                    "description": "URL for the git repository containing the model source code. If provided, relative paths in the model YAML definition will be considered relative to the repository root directory.",
3581                    "type": "string"
3582                },
3583                "timesync": {
3584                    "allowSingular": true,
3585                    "default": [
3586                        false
3587                    ],
3588                    "description": "If set, the model is assumed to call a send then receive of the state at each timestep for syncronization with other models that are also integrating in time. If a string is provided, it is assumed to be the name of the server that will handle timestep synchronization. If a boolean is provided, the name of the server will be assumed to be 'timestep'. Defaults to False.",
3589                    "items": {
3590                        "anyOf": [
3591                            {
3592                                "type": "string"
3593                            },
3594                            {
3595                                "type": "boolean"
3596                            },
3597                            {
3598                                "properties": {
3599                                    "inputs": {
3600                                        "aliases": [
3601                                            "input"
3602                                        ],
3603                                        "allowSingular": true,
3604                                        "items": {
3605                                            "type": "string"
3606                                        },
3607                                        "type": "array"
3608                                    },
3609                                    "name": {
3610                                        "default": "timesync",
3611                                        "type": "string"
3612                                    },
3613                                    "outputs": {
3614                                        "aliases": [
3615                                            "output"
3616                                        ],
3617                                        "allowSingular": true,
3618                                        "items": {
3619                                            "type": "string"
3620                                        },
3621                                        "type": "array"
3622                                    }
3623                                },
3624                                "required": [
3625                                    "name"
3626                                ],
3627                                "type": "object"
3628                            }
3629                        ]
3630                    },
3631                    "type": "array"
3632                },
3633                "working_dir": {
3634                    "description": "Working directory. If not provided, the current working directory is used.",
3635                    "type": "string"
3636                },
3637                "driver": {
3638                    "deprecated": true,
3639                    "description": "[DEPRECATED] Name of driver class that should be used.",
3640                    "enum": [
3641                        "CMakeModelDriver",
3642                        "CModelDriver",
3643                        "CPPModelDriver",
3644                        "DummyModelDriver",
3645                        "ExecutableModelDriver",
3646                        "FortranModelDriver",
3647                        "GCCModelDriver",
3648                        "JuliaModelDriver",
3649                        "LPyModelDriver",
3650                        "MPIPartnerModel",
3651                        "MakeModelDriver",
3652                        "MatlabModelDriver",
3653                        "OSRModelDriver",
3654                        "PyTorchModelDriver",
3655                        "PythonModelDriver",
3656                        "RModelDriver",
3657                        "SBMLModelDriver",
3658                        "TimeSyncModelDriver"
3659                    ],
3660                    "type": "string"
3661                },
3662                "description": {
3663                    "description": "Description of the model. This parameter is only used in the model repository or when providing the model as a service.",
3664                    "type": "string"
3665                },
3666                "allow_threading": {
3667                    "description": "If True, comm connections will be set up so that the model-side comms can be used by more than one thread. Defaults to False.",
3668                    "type": "boolean"
3669                },
3670                "validation_command": {
3671                    "description": "Path to a validation command that can be used to verify that the model ran as expected. A non-zero return code is taken to indicate failure.",
3672                    "type": "string"
3673                },
3674                "strace_flags": {
3675                    "default": [
3676                        "-e",
3677                        "trace=memory"
3678                    ],
3679                    "description": "Flags to pass to strace (or dtrace). Defaults to [].",
3680                    "items": {
3681                        "type": "string"
3682                    },
3683                    "type": "array"
3684                },
3685                "contact_email": {
3686                    "description": "Email address that should be used to contact the maintainer of the model. This parameter is only used in the model repository.",
3687                    "type": "string"
3688                },
3689                "builddir": {
3690                    "description": "Directory where the build should be saved. Defaults to <sourcedir>/build. It can be relative to working_dir or absolute.",
3691                    "type": "string"
3692                },
3693                "buildfile": {
3694                    "type": "string"
3695                },
3696                "compiler": {
3697                    "description": "Command or path to executable that should be used to compile the model. If not provided, the compiler will be determined based on configuration options for the language (if present) and the registered compilers that are available on the current operating system.",
3698                    "type": "string"
3699                },
3700                "compiler_flags": {
3701                    "default": [],
3702                    "description": "Flags that should be passed to the compiler during compilation. If nto provided, the compiler flags will be determined based on configuration options for the language (if present), the compiler defaults, and the default_compiler_flags class attribute.",
3703                    "items": {
3704                        "type": "string"
3705                    },
3706                    "type": "array"
3707                },
3708                "configuration": {
3709                    "default": "Release",
3710                    "description": "Build type/configuration that should be built. Defaults to 'Release'.",
3711                    "type": "string"
3712                },
3713                "disable_python_c_api": {
3714                    "description": "If True, the Python C API will be disabled. Defaults to False.",
3715                    "type": "boolean"
3716                },
3717                "env_compiler": {
3718                    "description": "Environment variable where the compiler executable should be stored for use within the Makefile. If not provided, this will be determined by the target language driver.",
3719                    "type": "string"
3720                },
3721                "env_compiler_flags": {
3722                    "description": "Environment variable where the compiler flags should be stored (including those required to compile against the |yggdrasil| interface). If not provided, this will be determined by the target language driver.",
3723                    "type": "string"
3724                },
3725                "env_linker": {
3726                    "description": "Environment variable where the linker executable should be stored for use within the Makefile. If not provided, this will be determined by the target language driver.",
3727                    "type": "string"
3728                },
3729                "env_linker_flags": {
3730                    "description": "Environment variable where the linker flags should be stored (including those required to link against the |yggdrasil| interface). If not provided, this will be determined by the target language driver.",
3731                    "type": "string"
3732                },
3733                "linker": {
3734                    "description": "Command or path to executable that should be used to link the model. If not provided, the linker will be determined based on configuration options for the language (if present) and the registered linkers that are available on the current operating system",
3735                    "type": "string"
3736                },
3737                "linker_flags": {
3738                    "default": [],
3739                    "description": "Flags that should be passed to the linker during compilation. If not provided, the linker flags will be determined based on configuration options for the language (if present), the linker defaults, and the default_linker_flags class attribute.",
3740                    "items": {
3741                        "type": "string"
3742                    },
3743                    "type": "array"
3744                },
3745                "source_files": {
3746                    "default": [],
3747                    "description": "Source files that should be compiled into an executable. Defaults to an empty list and the driver will search for a source file based on the model executable (the first model argument).",
3748                    "items": {
3749                        "type": "string"
3750                    },
3751                    "type": "array"
3752                },
3753                "sourcedir": {
3754                    "description": "Source directory to call cmake on. If not provided it is set to working_dir. This should be the directory containing the CMakeLists.txt file. It can be relative to working_dir or absolute.",
3755                    "type": "string"
3756                },
3757                "target": {
3758                    "description": "Make target that should be built to create the model executable. Defaults to None.",
3759                    "type": "string"
3760                },
3761                "target_compiler": {
3762                    "description": "Compilation tool that should be used to compile the target language. Defaults to None and will be set based on the selected language driver.",
3763                    "type": "string"
3764                },
3765                "target_compiler_flags": {
3766                    "description": "Compilation flags that should be passed to the target language compiler. Defaults to [].",
3767                    "items": {
3768                        "type": "string"
3769                    },
3770                    "type": "array"
3771                },
3772                "target_language": {
3773                    "description": "Language that the target is written in. Defaults to None and will be set based on the source files provided.",
3774                    "type": "string"
3775                },
3776                "target_linker": {
3777                    "description": "Compilation tool that should be used to link the target language. Defaults to None and will be set based on the selected language driver.",
3778                    "type": "string"
3779                },
3780                "target_linker_flags": {
3781                    "description": "Linking flags that should be passed to the target language linker. Defaults to [].",
3782                    "items": {
3783                        "type": "string"
3784                    },
3785                    "type": "array"
3786                },
3787                "with_asan": {
3788                    "description": "If True, the model will be compiled and linked with the address sanitizer enabled (if there is one available for the selected compiler).",
3789                    "type": "boolean"
3790                },
3791                "interpreter": {
3792                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
3793                    "type": "string"
3794                },
3795                "interpreter_flags": {
3796                    "default": [],
3797                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
3798                    "items": {
3799                        "type": "string"
3800                    },
3801                    "type": "array"
3802                },
3803                "skip_interpreter": {
3804                    "default": false,
3805                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
3806                    "type": "boolean"
3807                },
3808                "standard": {
3809                    "default": "f2003",
3810                    "description": "Fortran standard that should be used. Defaults to 'f2003'.",
3811                    "enum": [
3812                        "f2003",
3813                        "f2008"
3814                    ],
3815                    "type": "string"
3816                },
3817                "makedir": {
3818                    "description": "Directory where make should be invoked from if it is not the same as the directory containing the makefile. Defaults to directory containing makefile if provided, otherwise working_dir.",
3819                    "type": "string"
3820                },
3821                "makefile": {
3822                    "default": "Makefile",
3823                    "description": "Path to make file either absolute, relative to makedir (if provided), or relative to working_dir. Defaults to Makefile.",
3824                    "type": "string"
3825                },
3826                "use_symunit": {
3827                    "default": false,
3828                    "description": "If True, input/output variables with units will be represented in Matlab using symunit. Defaults to False.",
3829                    "type": "boolean"
3830                },
3831                "copy_xml_to_osr": {
3832                    "default": false,
3833                    "description": "If True, the XML file(s) will be copied to the OSR repository InputFiles direcitory before running. This is necessary if the XML file(s) use any of the files located there since OSR always assumes the included file paths are relative. Defaults to False.",
3834                    "type": "boolean"
3835                },
3836                "sync_vars_in": {
3837                    "default": [],
3838                    "description": "Variables that should be synchronized from other models. Defaults to [].",
3839                    "items": {
3840                        "type": "string"
3841                    },
3842                    "type": "array"
3843                },
3844                "sync_vars_out": {
3845                    "default": [],
3846                    "description": "Variables that should be synchronized to other models. Defaults to [].",
3847                    "items": {
3848                        "type": "string"
3849                    },
3850                    "type": "array"
3851                },
3852                "update_interval": {
3853                    "additionalProperties": {
3854                        "type": "float"
3855                    },
3856                    "default": {
3857                        "timesync": 1.0
3858                    },
3859                    "description": "Max simulation interval at which synchronization should occur (in days). Defaults to 1.0 if not provided. If the XML input file loads additional export modules that output at a shorter rate, the existing table of values will be extrapolated.",
3860                    "type": "object"
3861                },
3862                "input_transform": {
3863                    "description": "Transformation that should be applied to input to get it into the format expected by the model (including transformation to pytorch tensors as necessary). This function should return a tuple of arguments for the model.",
3864                    "type": "function"
3865                },
3866                "output_transform": {
3867                    "description": "Transformation that should be applied to model output to get it into a format that can be serialized by yggdrasil (i.e. not a pytorch Tensor or model sepecific type).",
3868                    "type": "function"
3869                },
3870                "weights": {
3871                    "description": "Path to file where model weights are saved",
3872                    "type": "string"
3873                },
3874                "integrator": {
3875                    "default": "cvode",
3876                    "description": "Name of integrator that should be used. Valid options include ['cvode', 'gillespie', 'rk4', 'rk45']. Defaults to 'cvode'.",
3877                    "enum": [
3878                        "cvode",
3879                        "gillespie",
3880                        "rk4",
3881                        "rk45"
3882                    ],
3883                    "type": "string"
3884                },
3885                "integrator_settings": {
3886                    "default": {},
3887                    "description": "Settings for the integrator. Defaults to empty dict.",
3888                    "type": "object"
3889                },
3890                "only_output_final_step": {
3891                    "default": false,
3892                    "description": "If True, only the final timestep is output. Defaults to False.",
3893                    "type": "boolean"
3894                },
3895                "reset": {
3896                    "default": false,
3897                    "description": "If True, the simulation will be reset to it's initial values before each call (including the start time). Defaults to False.",
3898                    "type": "boolean"
3899                },
3900                "selections": {
3901                    "default": [],
3902                    "description": "Variables to include in the output. Defaults to None and the time/floating selections will be returned.",
3903                    "items": {
3904                        "type": "string"
3905                    },
3906                    "type": "array"
3907                },
3908                "skip_start_time": {
3909                    "default": false,
3910                    "description": "If True, the results for the initial time step will not be output. Defaults to False. This option is ignored if only_output_final_step is True.",
3911                    "type": "boolean"
3912                },
3913                "start_time": {
3914                    "default": 0.0,
3915                    "description": "Time that simulation should be started from. If 'reset' is True, the start time will always be the provided value, otherwise, the start time will be the end of the previous call after the first call. Defaults to 0.0.",
3916                    "type": "number"
3917                },
3918                "steps": {
3919                    "default": 1,
3920                    "description": "Number of steps that should be output. Defaults to None.",
3921                    "type": "integer"
3922                },
3923                "additional_variables": {
3924                    "additionalProperties": {
3925                        "items": {
3926                            "type": "string"
3927                        },
3928                        "type": "array"
3929                    },
3930                    "default": {},
3931                    "type": "object"
3932                },
3933                "aggregation": {
3934                    "anyOf": [
3935                        {
3936                            "type": "function"
3937                        },
3938                        {
3939                            "type": "string"
3940                        },
3941                        {
3942                            "additionalProperties": {
3943                                "anyOf": [
3944                                    {
3945                                        "type": "function"
3946                                    },
3947                                    {
3948                                        "type": "string"
3949                                    }
3950                                ]
3951                            },
3952                            "type": "object"
3953                        }
3954                    ],
3955                    "default": "mean"
3956                },
3957                "interpolation": {
3958                    "anyOf": [
3959                        {
3960                            "type": "string"
3961                        },
3962                        {
3963                            "additionalProperties": {
3964                                "oneOf": [
3965                                    {
3966                                        "type": "string"
3967                                    },
3968                                    {
3969                                        "properties": {
3970                                            "method": {
3971                                                "type": "string"
3972                                            }
3973                                        },
3974                                        "required": [
3975                                            "method"
3976                                        ],
3977                                        "type": "object"
3978                                    }
3979                                ]
3980                            },
3981                            "type": "object"
3982                        },
3983                        {
3984                            "properties": {
3985                                "method": {
3986                                    "type": "string"
3987                                }
3988                            },
3989                            "required": [
3990                                "method"
3991                            ],
3992                            "type": "object"
3993                        }
3994                    ],
3995                    "default": "index"
3996                },
3997                "synonyms": {
3998                    "additionalProperties": {
3999                        "additionalProperties": {
4000                            "anyOf": [
4001                                {
4002                                    "type": "string"
4003                                },
4004                                {
4005                                    "properties": {
4006                                        "alt": {
4007                                            "anyOf": [
4008                                                {
4009                                                    "type": "string"
4010                                                },
4011                                                {
4012                                                    "items": {
4013                                                        "type": "string"
4014                                                    },
4015                                                    "type": "array"
4016                                                }
4017                                            ]
4018                                        },
4019                                        "alt2base": {
4020                                            "type": "function"
4021                                        },
4022                                        "base2alt": {
4023                                            "type": "function"
4024                                        }
4025                                    },
4026                                    "required": [
4027                                        "alt",
4028                                        "alt2base",
4029                                        "base2alt"
4030                                    ],
4031                                    "type": "object"
4032                                }
4033                            ]
4034                        },
4035                        "type": "object"
4036                    },
4037                    "default": {},
4038                    "description": "Mapping from model names to mappings from base variables names to information about one or more alternate variable names used by the named model that should be converted to the base variable. Values for providing information about alternate variables can either be strings (implies equivalence with the base variable in everything but name and units) or mappings with the keys:",
4039                    "type": "object"
4040                }
4041            },
4042            "required": [
4043                "inputs",
4044                "name",
4045                "outputs",
4046                "working_dir"
4047            ],
4048            "title": "model_base",
4049            "type": "object",
4050            "pushProperties": {
4051                "$properties/inputs/items/anyOf/0/allOf/0/properties/default_file": [
4052                    "working_dir"
4053                ],
4054                "$properties/inputs/items/anyOf/2": [
4055                    "working_dir"
4056                ],
4057                "$properties/outputs/items/anyOf/0/allOf/0/properties/default_file": [
4058                    "working_dir"
4059                ],
4060                "$properties/outputs/items/anyOf/2": [
4061                    "working_dir"
4062                ]
4063            },
4064            "dependencies": {
4065                "driver": [
4066                    "args"
4067                ]
4068            }
4069        },
4070        "model-subtype-executable": {
4071            "additionalProperties": true,
4072            "description": "Schema for model component ['executable'] subtype.",
4073            "properties": {
4074                "driver": {
4075                    "deprecated": true,
4076                    "description": "[DEPRECATED] Name of driver class that should be used.",
4077                    "enum": [
4078                        "ExecutableModelDriver"
4079                    ],
4080                    "type": "string"
4081                },
4082                "language": {
4083                    "default": "executable",
4084                    "description": "Model is an executable.",
4085                    "enum": [
4086                        "executable"
4087                    ],
4088                    "type": "string"
4089                },
4090                "args": {
4091                    "allowSingular": true,
4092                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4093                    "items": {
4094                        "type": [
4095                            "string",
4096                            "number"
4097                        ]
4098                    },
4099                    "type": "array"
4100                }
4101            },
4102            "required": [
4103                "args",
4104                "language"
4105            ],
4106            "title": "yggdrasil.drivers.ExecutableModelDriver.ExecutableModelDriver",
4107            "type": "object"
4108        },
4109        "model-subtype-cmake": {
4110            "additionalProperties": true,
4111            "description": "Schema for model component ['cmake'] subtype.",
4112            "properties": {
4113                "driver": {
4114                    "deprecated": true,
4115                    "description": "[DEPRECATED] Name of driver class that should be used.",
4116                    "enum": [
4117                        "CMakeModelDriver"
4118                    ],
4119                    "type": "string"
4120                },
4121                "language": {
4122                    "default": "cmake",
4123                    "description": "Model is written in C/C++ and has a CMake build system.",
4124                    "enum": [
4125                        "cmake"
4126                    ],
4127                    "type": "string"
4128                },
4129                "args": {
4130                    "allowSingular": true,
4131                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4132                    "items": {
4133                        "type": [
4134                            "string",
4135                            "number"
4136                        ]
4137                    },
4138                    "type": "array"
4139                },
4140                "builddir": {
4141                    "description": "Directory where the build should be saved. Defaults to <sourcedir>/build. It can be relative to working_dir or absolute.",
4142                    "type": "string"
4143                },
4144                "buildfile": {
4145                    "type": "string"
4146                },
4147                "compiler": {
4148                    "description": "Command or path to executable that should be used to compile the model. If not provided, the compiler will be determined based on configuration options for the language (if present) and the registered compilers that are available on the current operating system.",
4149                    "type": "string"
4150                },
4151                "compiler_flags": {
4152                    "default": [],
4153                    "description": "Flags that should be passed to the compiler during compilation. If nto provided, the compiler flags will be determined based on configuration options for the language (if present), the compiler defaults, and the default_compiler_flags class attribute.",
4154                    "items": {
4155                        "type": "string"
4156                    },
4157                    "type": "array"
4158                },
4159                "configuration": {
4160                    "default": "Release",
4161                    "description": "Build type/configuration that should be built. Defaults to 'Release'.",
4162                    "type": "string"
4163                },
4164                "disable_python_c_api": {
4165                    "description": "If True, the Python C API will be disabled. Defaults to False.",
4166                    "type": "boolean"
4167                },
4168                "env_compiler": {
4169                    "description": "Environment variable where the compiler executable should be stored for use within the Makefile. If not provided, this will be determined by the target language driver.",
4170                    "type": "string"
4171                },
4172                "env_compiler_flags": {
4173                    "description": "Environment variable where the compiler flags should be stored (including those required to compile against the |yggdrasil| interface). If not provided, this will be determined by the target language driver.",
4174                    "type": "string"
4175                },
4176                "env_linker": {
4177                    "description": "Environment variable where the linker executable should be stored for use within the Makefile. If not provided, this will be determined by the target language driver.",
4178                    "type": "string"
4179                },
4180                "env_linker_flags": {
4181                    "description": "Environment variable where the linker flags should be stored (including those required to link against the |yggdrasil| interface). If not provided, this will be determined by the target language driver.",
4182                    "type": "string"
4183                },
4184                "linker": {
4185                    "description": "Command or path to executable that should be used to link the model. If not provided, the linker will be determined based on configuration options for the language (if present) and the registered linkers that are available on the current operating system",
4186                    "type": "string"
4187                },
4188                "linker_flags": {
4189                    "default": [],
4190                    "description": "Flags that should be passed to the linker during compilation. If not provided, the linker flags will be determined based on configuration options for the language (if present), the linker defaults, and the default_linker_flags class attribute.",
4191                    "items": {
4192                        "type": "string"
4193                    },
4194                    "type": "array"
4195                },
4196                "source_files": {
4197                    "default": [],
4198                    "description": "Source files that should be compiled into an executable. Defaults to an empty list and the driver will search for a source file based on the model executable (the first model argument).",
4199                    "items": {
4200                        "type": "string"
4201                    },
4202                    "type": "array"
4203                },
4204                "sourcedir": {
4205                    "description": "Source directory to call cmake on. If not provided it is set to working_dir. This should be the directory containing the CMakeLists.txt file. It can be relative to working_dir or absolute.",
4206                    "type": "string"
4207                },
4208                "target": {
4209                    "description": "Make target that should be built to create the model executable. Defaults to None.",
4210                    "type": "string"
4211                },
4212                "target_compiler": {
4213                    "description": "Compilation tool that should be used to compile the target language. Defaults to None and will be set based on the selected language driver.",
4214                    "type": "string"
4215                },
4216                "target_compiler_flags": {
4217                    "description": "Compilation flags that should be passed to the target language compiler. Defaults to [].",
4218                    "items": {
4219                        "type": "string"
4220                    },
4221                    "type": "array"
4222                },
4223                "target_language": {
4224                    "description": "Language that the target is written in. Defaults to None and will be set based on the source files provided.",
4225                    "type": "string"
4226                },
4227                "target_linker": {
4228                    "description": "Compilation tool that should be used to link the target language. Defaults to None and will be set based on the selected language driver.",
4229                    "type": "string"
4230                },
4231                "target_linker_flags": {
4232                    "description": "Linking flags that should be passed to the target language linker. Defaults to [].",
4233                    "items": {
4234                        "type": "string"
4235                    },
4236                    "type": "array"
4237                },
4238                "with_asan": {
4239                    "description": "If True, the model will be compiled and linked with the address sanitizer enabled (if there is one available for the selected compiler).",
4240                    "type": "boolean"
4241                }
4242            },
4243            "required": [
4244                "args",
4245                "language"
4246            ],
4247            "title": "yggdrasil.drivers.CMakeModelDriver.CMakeModelDriver",
4248            "type": "object"
4249        },
4250        "model-subtype-c": {
4251            "additionalProperties": true,
4252            "description": "Schema for model component ['c'] subtype.",
4253            "properties": {
4254                "driver": {
4255                    "deprecated": true,
4256                    "description": "[DEPRECATED] Name of driver class that should be used.",
4257                    "enum": [
4258                        "GCCModelDriver",
4259                        "CModelDriver"
4260                    ],
4261                    "type": "string"
4262                },
4263                "language": {
4264                    "default": "c",
4265                    "description": "Model is written in C.",
4266                    "enum": [
4267                        "c"
4268                    ],
4269                    "type": "string"
4270                },
4271                "args": {
4272                    "allowSingular": true,
4273                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4274                    "items": {
4275                        "type": [
4276                            "string",
4277                            "number"
4278                        ]
4279                    },
4280                    "type": "array"
4281                },
4282                "compiler": {
4283                    "description": "Command or path to executable that should be used to compile the model. If not provided, the compiler will be determined based on configuration options for the language (if present) and the registered compilers that are available on the current operating system.",
4284                    "type": "string"
4285                },
4286                "compiler_flags": {
4287                    "default": [],
4288                    "description": "Flags that should be passed to the compiler during compilation. If nto provided, the compiler flags will be determined based on configuration options for the language (if present), the compiler defaults, and the default_compiler_flags class attribute.",
4289                    "items": {
4290                        "type": "string"
4291                    },
4292                    "type": "array"
4293                },
4294                "disable_python_c_api": {
4295                    "description": "If True, the Python C API will be disabled. Defaults to False.",
4296                    "type": "boolean"
4297                },
4298                "linker": {
4299                    "description": "Command or path to executable that should be used to link the model. If not provided, the linker will be determined based on configuration options for the language (if present) and the registered linkers that are available on the current operating system",
4300                    "type": "string"
4301                },
4302                "linker_flags": {
4303                    "default": [],
4304                    "description": "Flags that should be passed to the linker during compilation. If not provided, the linker flags will be determined based on configuration options for the language (if present), the linker defaults, and the default_linker_flags class attribute.",
4305                    "items": {
4306                        "type": "string"
4307                    },
4308                    "type": "array"
4309                },
4310                "source_files": {
4311                    "default": [],
4312                    "description": "Source files that should be compiled into an executable. Defaults to an empty list and the driver will search for a source file based on the model executable (the first model argument).",
4313                    "items": {
4314                        "type": "string"
4315                    },
4316                    "type": "array"
4317                },
4318                "with_asan": {
4319                    "description": "If True, the model will be compiled and linked with the address sanitizer enabled (if there is one available for the selected compiler).",
4320                    "type": "boolean"
4321                }
4322            },
4323            "required": [
4324                "args",
4325                "language"
4326            ],
4327            "title": "yggdrasil.drivers.CModelDriver.CModelDriver",
4328            "type": "object"
4329        },
4330        "model-subtype-cpp": {
4331            "additionalProperties": true,
4332            "description": "Schema for model component ['c++', 'cpp', 'cxx'] subtype.",
4333            "properties": {
4334                "driver": {
4335                    "deprecated": true,
4336                    "description": "[DEPRECATED] Name of driver class that should be used.",
4337                    "enum": [
4338                        "GCCModelDriver",
4339                        "CPPModelDriver"
4340                    ],
4341                    "type": "string"
4342                },
4343                "language": {
4344                    "default": "c++",
4345                    "description": "Model is written in C++.",
4346                    "enum": [
4347                        "c++",
4348                        "cpp",
4349                        "cxx"
4350                    ],
4351                    "type": "string"
4352                },
4353                "args": {
4354                    "allowSingular": true,
4355                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4356                    "items": {
4357                        "type": [
4358                            "string",
4359                            "number"
4360                        ]
4361                    },
4362                    "type": "array"
4363                },
4364                "compiler": {
4365                    "description": "Command or path to executable that should be used to compile the model. If not provided, the compiler will be determined based on configuration options for the language (if present) and the registered compilers that are available on the current operating system.",
4366                    "type": "string"
4367                },
4368                "compiler_flags": {
4369                    "default": [],
4370                    "description": "Flags that should be passed to the compiler during compilation. If nto provided, the compiler flags will be determined based on configuration options for the language (if present), the compiler defaults, and the default_compiler_flags class attribute.",
4371                    "items": {
4372                        "type": "string"
4373                    },
4374                    "type": "array"
4375                },
4376                "disable_python_c_api": {
4377                    "description": "If True, the Python C API will be disabled. Defaults to False.",
4378                    "type": "boolean"
4379                },
4380                "linker": {
4381                    "description": "Command or path to executable that should be used to link the model. If not provided, the linker will be determined based on configuration options for the language (if present) and the registered linkers that are available on the current operating system",
4382                    "type": "string"
4383                },
4384                "linker_flags": {
4385                    "default": [],
4386                    "description": "Flags that should be passed to the linker during compilation. If not provided, the linker flags will be determined based on configuration options for the language (if present), the linker defaults, and the default_linker_flags class attribute.",
4387                    "items": {
4388                        "type": "string"
4389                    },
4390                    "type": "array"
4391                },
4392                "source_files": {
4393                    "default": [],
4394                    "description": "Source files that should be compiled into an executable. Defaults to an empty list and the driver will search for a source file based on the model executable (the first model argument).",
4395                    "items": {
4396                        "type": "string"
4397                    },
4398                    "type": "array"
4399                },
4400                "with_asan": {
4401                    "description": "If True, the model will be compiled and linked with the address sanitizer enabled (if there is one available for the selected compiler).",
4402                    "type": "boolean"
4403                }
4404            },
4405            "required": [
4406                "args",
4407                "language"
4408            ],
4409            "title": "yggdrasil.drivers.CPPModelDriver.CPPModelDriver",
4410            "type": "object"
4411        },
4412        "model-subtype-dummy": {
4413            "additionalProperties": true,
4414            "description": "Schema for model component ['dummy'] subtype.",
4415            "properties": {
4416                "driver": {
4417                    "deprecated": true,
4418                    "description": "[DEPRECATED] Name of driver class that should be used.",
4419                    "enum": [
4420                        "DummyModelDriver"
4421                    ],
4422                    "type": "string"
4423                },
4424                "language": {
4425                    "default": "dummy",
4426                    "description": "The programming language that the model is written in. A list of available languages can be found :ref:`here <schema_table_model_subtype_rst>`.",
4427                    "enum": [
4428                        "dummy"
4429                    ],
4430                    "type": "string"
4431                },
4432                "args": {
4433                    "allowSingular": true,
4434                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4435                    "items": {
4436                        "type": [
4437                            "string",
4438                            "number"
4439                        ]
4440                    },
4441                    "type": "array"
4442                },
4443                "interpreter": {
4444                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
4445                    "type": "string"
4446                },
4447                "interpreter_flags": {
4448                    "default": [],
4449                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
4450                    "items": {
4451                        "type": "string"
4452                    },
4453                    "type": "array"
4454                },
4455                "skip_interpreter": {
4456                    "default": false,
4457                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
4458                    "type": "boolean"
4459                }
4460            },
4461            "required": [
4462                "args",
4463                "language"
4464            ],
4465            "title": "yggdrasil.drivers.DummyModelDriver.DummyModelDriver",
4466            "type": "object"
4467        },
4468        "model-subtype-fortran": {
4469            "additionalProperties": true,
4470            "description": "Schema for model component ['fortran'] subtype.",
4471            "properties": {
4472                "driver": {
4473                    "deprecated": true,
4474                    "description": "[DEPRECATED] Name of driver class that should be used.",
4475                    "enum": [
4476                        "FortranModelDriver"
4477                    ],
4478                    "type": "string"
4479                },
4480                "language": {
4481                    "default": "fortran",
4482                    "description": "Model is written in Fortran.",
4483                    "enum": [
4484                        "fortran"
4485                    ],
4486                    "type": "string"
4487                },
4488                "args": {
4489                    "allowSingular": true,
4490                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4491                    "items": {
4492                        "type": [
4493                            "string",
4494                            "number"
4495                        ]
4496                    },
4497                    "type": "array"
4498                },
4499                "compiler": {
4500                    "description": "Command or path to executable that should be used to compile the model. If not provided, the compiler will be determined based on configuration options for the language (if present) and the registered compilers that are available on the current operating system.",
4501                    "type": "string"
4502                },
4503                "compiler_flags": {
4504                    "default": [],
4505                    "description": "Flags that should be passed to the compiler during compilation. If nto provided, the compiler flags will be determined based on configuration options for the language (if present), the compiler defaults, and the default_compiler_flags class attribute.",
4506                    "items": {
4507                        "type": "string"
4508                    },
4509                    "type": "array"
4510                },
4511                "disable_python_c_api": {
4512                    "description": "If True, the Python C API will be disabled. Defaults to False.",
4513                    "type": "boolean"
4514                },
4515                "linker": {
4516                    "description": "Command or path to executable that should be used to link the model. If not provided, the linker will be determined based on configuration options for the language (if present) and the registered linkers that are available on the current operating system",
4517                    "type": "string"
4518                },
4519                "linker_flags": {
4520                    "default": [],
4521                    "description": "Flags that should be passed to the linker during compilation. If not provided, the linker flags will be determined based on configuration options for the language (if present), the linker defaults, and the default_linker_flags class attribute.",
4522                    "items": {
4523                        "type": "string"
4524                    },
4525                    "type": "array"
4526                },
4527                "source_files": {
4528                    "default": [],
4529                    "description": "Source files that should be compiled into an executable. Defaults to an empty list and the driver will search for a source file based on the model executable (the first model argument).",
4530                    "items": {
4531                        "type": "string"
4532                    },
4533                    "type": "array"
4534                },
4535                "standard": {
4536                    "default": "f2003",
4537                    "description": "Fortran standard that should be used. Defaults to 'f2003'.",
4538                    "enum": [
4539                        "f2003",
4540                        "f2008"
4541                    ],
4542                    "type": "string"
4543                },
4544                "with_asan": {
4545                    "description": "If True, the model will be compiled and linked with the address sanitizer enabled (if there is one available for the selected compiler).",
4546                    "type": "boolean"
4547                }
4548            },
4549            "required": [
4550                "args",
4551                "language"
4552            ],
4553            "title": "yggdrasil.drivers.FortranModelDriver.FortranModelDriver",
4554            "type": "object"
4555        },
4556        "model-subtype-julia": {
4557            "additionalProperties": true,
4558            "description": "Schema for model component ['julia'] subtype.",
4559            "properties": {
4560                "driver": {
4561                    "deprecated": true,
4562                    "description": "[DEPRECATED] Name of driver class that should be used.",
4563                    "enum": [
4564                        "JuliaModelDriver"
4565                    ],
4566                    "type": "string"
4567                },
4568                "language": {
4569                    "default": "julia",
4570                    "description": "Model is written in Julia.",
4571                    "enum": [
4572                        "julia"
4573                    ],
4574                    "type": "string"
4575                },
4576                "args": {
4577                    "allowSingular": true,
4578                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4579                    "items": {
4580                        "type": [
4581                            "string",
4582                            "number"
4583                        ]
4584                    },
4585                    "type": "array"
4586                },
4587                "interpreter": {
4588                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
4589                    "type": "string"
4590                },
4591                "interpreter_flags": {
4592                    "default": [],
4593                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
4594                    "items": {
4595                        "type": "string"
4596                    },
4597                    "type": "array"
4598                },
4599                "skip_interpreter": {
4600                    "default": false,
4601                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
4602                    "type": "boolean"
4603                }
4604            },
4605            "required": [
4606                "args",
4607                "language"
4608            ],
4609            "title": "yggdrasil.drivers.JuliaModelDriver.JuliaModelDriver",
4610            "type": "object"
4611        },
4612        "model-subtype-lpy": {
4613            "additionalProperties": true,
4614            "description": "Schema for model component ['lpy'] subtype.",
4615            "properties": {
4616                "driver": {
4617                    "deprecated": true,
4618                    "description": "[DEPRECATED] Name of driver class that should be used.",
4619                    "enum": [
4620                        "LPyModelDriver"
4621                    ],
4622                    "type": "string"
4623                },
4624                "language": {
4625                    "default": "lpy",
4626                    "description": "Model is an LPy system.",
4627                    "enum": [
4628                        "lpy"
4629                    ],
4630                    "type": "string"
4631                },
4632                "args": {
4633                    "allowSingular": true,
4634                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4635                    "items": {
4636                        "type": [
4637                            "string",
4638                            "number"
4639                        ]
4640                    },
4641                    "type": "array"
4642                },
4643                "interpreter": {
4644                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
4645                    "type": "string"
4646                },
4647                "interpreter_flags": {
4648                    "default": [],
4649                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
4650                    "items": {
4651                        "type": "string"
4652                    },
4653                    "type": "array"
4654                },
4655                "skip_interpreter": {
4656                    "default": false,
4657                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
4658                    "type": "boolean"
4659                }
4660            },
4661            "required": [
4662                "args",
4663                "language"
4664            ],
4665            "title": "yggdrasil.drivers.LPyModelDriver.LPyModelDriver",
4666            "type": "object"
4667        },
4668        "model-subtype-mpi": {
4669            "additionalProperties": true,
4670            "description": "Schema for model component ['mpi'] subtype.",
4671            "properties": {
4672                "driver": {
4673                    "deprecated": true,
4674                    "description": "[DEPRECATED] Name of driver class that should be used.",
4675                    "enum": [
4676                        "MPIPartnerModel"
4677                    ],
4678                    "type": "string"
4679                },
4680                "language": {
4681                    "default": "mpi",
4682                    "description": "Model is being run on another MPI process and this driver is used as as stand-in to monitor it on the root process.",
4683                    "enum": [
4684                        "mpi"
4685                    ],
4686                    "type": "string"
4687                },
4688                "args": {
4689                    "allowSingular": true,
4690                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4691                    "items": {
4692                        "type": [
4693                            "string",
4694                            "number"
4695                        ]
4696                    },
4697                    "type": "array"
4698                }
4699            },
4700            "required": [
4701                "args",
4702                "language"
4703            ],
4704            "title": "yggdrasil.drivers.MPIPartnerModel.MPIPartnerModel",
4705            "type": "object"
4706        },
4707        "model-subtype-make": {
4708            "additionalProperties": true,
4709            "description": "Schema for model component ['make'] subtype.",
4710            "properties": {
4711                "driver": {
4712                    "deprecated": true,
4713                    "description": "[DEPRECATED] Name of driver class that should be used.",
4714                    "enum": [
4715                        "MakeModelDriver"
4716                    ],
4717                    "type": "string"
4718                },
4719                "language": {
4720                    "default": "make",
4721                    "description": "Model is written in C/C++ and has a Makefile for compilation.",
4722                    "enum": [
4723                        "make"
4724                    ],
4725                    "type": "string"
4726                },
4727                "args": {
4728                    "allowSingular": true,
4729                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4730                    "items": {
4731                        "type": [
4732                            "string",
4733                            "number"
4734                        ]
4735                    },
4736                    "type": "array"
4737                },
4738                "builddir": {
4739                    "type": "string"
4740                },
4741                "buildfile": {
4742                    "type": "string"
4743                },
4744                "compiler": {
4745                    "description": "Command or path to executable that should be used to compile the model. If not provided, the compiler will be determined based on configuration options for the language (if present) and the registered compilers that are available on the current operating system.",
4746                    "type": "string"
4747                },
4748                "compiler_flags": {
4749                    "default": [],
4750                    "description": "Flags that should be passed to the compiler during compilation. If nto provided, the compiler flags will be determined based on configuration options for the language (if present), the compiler defaults, and the default_compiler_flags class attribute.",
4751                    "items": {
4752                        "type": "string"
4753                    },
4754                    "type": "array"
4755                },
4756                "disable_python_c_api": {
4757                    "description": "If True, the Python C API will be disabled. Defaults to False.",
4758                    "type": "boolean"
4759                },
4760                "env_compiler": {
4761                    "description": "Environment variable where the compiler executable should be stored for use within the Makefile. If not provided, this will be determined by the target language driver.",
4762                    "type": "string"
4763                },
4764                "env_compiler_flags": {
4765                    "description": "Environment variable where the compiler flags should be stored (including those required to compile against the |yggdrasil| interface). If not provided, this will be determined by the target language driver.",
4766                    "type": "string"
4767                },
4768                "env_linker": {
4769                    "description": "Environment variable where the linker executable should be stored for use within the Makefile. If not provided, this will be determined by the target language driver.",
4770                    "type": "string"
4771                },
4772                "env_linker_flags": {
4773                    "description": "Environment variable where the linker flags should be stored (including those required to link against the |yggdrasil| interface). If not provided, this will be determined by the target language driver.",
4774                    "type": "string"
4775                },
4776                "linker": {
4777                    "description": "Command or path to executable that should be used to link the model. If not provided, the linker will be determined based on configuration options for the language (if present) and the registered linkers that are available on the current operating system",
4778                    "type": "string"
4779                },
4780                "linker_flags": {
4781                    "default": [],
4782                    "description": "Flags that should be passed to the linker during compilation. If not provided, the linker flags will be determined based on configuration options for the language (if present), the linker defaults, and the default_linker_flags class attribute.",
4783                    "items": {
4784                        "type": "string"
4785                    },
4786                    "type": "array"
4787                },
4788                "makedir": {
4789                    "description": "Directory where make should be invoked from if it is not the same as the directory containing the makefile. Defaults to directory containing makefile if provided, otherwise working_dir.",
4790                    "type": "string"
4791                },
4792                "makefile": {
4793                    "default": "Makefile",
4794                    "description": "Path to make file either absolute, relative to makedir (if provided), or relative to working_dir. Defaults to Makefile.",
4795                    "type": "string"
4796                },
4797                "source_files": {
4798                    "default": [],
4799                    "description": "Source files that should be compiled into an executable. Defaults to an empty list and the driver will search for a source file based on the model executable (the first model argument).",
4800                    "items": {
4801                        "type": "string"
4802                    },
4803                    "type": "array"
4804                },
4805                "target": {
4806                    "description": "Make target that should be built to create the model executable. Defaults to None.",
4807                    "type": "string"
4808                },
4809                "target_compiler": {
4810                    "description": "Compilation tool that should be used to compile the target language. Defaults to None and will be set based on the selected language driver.",
4811                    "type": "string"
4812                },
4813                "target_compiler_flags": {
4814                    "description": "Compilation flags that should be passed to the target language compiler. Defaults to [].",
4815                    "items": {
4816                        "type": "string"
4817                    },
4818                    "type": "array"
4819                },
4820                "target_language": {
4821                    "description": "Language that the target is written in. Defaults to None and will be set based on the source files provided.",
4822                    "type": "string"
4823                },
4824                "target_linker": {
4825                    "description": "Compilation tool that should be used to link the target language. Defaults to None and will be set based on the selected language driver.",
4826                    "type": "string"
4827                },
4828                "target_linker_flags": {
4829                    "description": "Linking flags that should be passed to the target language linker. Defaults to [].",
4830                    "items": {
4831                        "type": "string"
4832                    },
4833                    "type": "array"
4834                },
4835                "with_asan": {
4836                    "description": "If True, the model will be compiled and linked with the address sanitizer enabled (if there is one available for the selected compiler).",
4837                    "type": "boolean"
4838                }
4839            },
4840            "required": [
4841                "args",
4842                "language"
4843            ],
4844            "title": "yggdrasil.drivers.MakeModelDriver.MakeModelDriver",
4845            "type": "object"
4846        },
4847        "model-subtype-matlab": {
4848            "additionalProperties": true,
4849            "description": "Schema for model component ['matlab'] subtype.",
4850            "properties": {
4851                "driver": {
4852                    "deprecated": true,
4853                    "description": "[DEPRECATED] Name of driver class that should be used.",
4854                    "enum": [
4855                        "MatlabModelDriver"
4856                    ],
4857                    "type": "string"
4858                },
4859                "language": {
4860                    "default": "matlab",
4861                    "description": "Model is written in Matlab.",
4862                    "enum": [
4863                        "matlab"
4864                    ],
4865                    "type": "string"
4866                },
4867                "args": {
4868                    "allowSingular": true,
4869                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4870                    "items": {
4871                        "type": [
4872                            "string",
4873                            "number"
4874                        ]
4875                    },
4876                    "type": "array"
4877                },
4878                "interpreter": {
4879                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
4880                    "type": "string"
4881                },
4882                "interpreter_flags": {
4883                    "default": [],
4884                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
4885                    "items": {
4886                        "type": "string"
4887                    },
4888                    "type": "array"
4889                },
4890                "skip_interpreter": {
4891                    "default": false,
4892                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
4893                    "type": "boolean"
4894                },
4895                "use_symunit": {
4896                    "default": false,
4897                    "description": "If True, input/output variables with units will be represented in Matlab using symunit. Defaults to False.",
4898                    "type": "boolean"
4899                }
4900            },
4901            "required": [
4902                "args",
4903                "language"
4904            ],
4905            "title": "yggdrasil.drivers.MatlabModelDriver.MatlabModelDriver",
4906            "type": "object"
4907        },
4908        "model-subtype-osr": {
4909            "additionalProperties": true,
4910            "description": "Schema for model component ['osr'] subtype.",
4911            "properties": {
4912                "driver": {
4913                    "deprecated": true,
4914                    "description": "[DEPRECATED] Name of driver class that should be used.",
4915                    "enum": [
4916                        "OSRModelDriver"
4917                    ],
4918                    "type": "string"
4919                },
4920                "language": {
4921                    "default": "osr",
4922                    "description": "Model is an OSR model.",
4923                    "enum": [
4924                        "osr"
4925                    ],
4926                    "type": "string"
4927                },
4928                "args": {
4929                    "allowSingular": true,
4930                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
4931                    "items": {
4932                        "type": [
4933                            "string",
4934                            "number"
4935                        ]
4936                    },
4937                    "type": "array"
4938                },
4939                "copy_xml_to_osr": {
4940                    "default": false,
4941                    "description": "If True, the XML file(s) will be copied to the OSR repository InputFiles direcitory before running. This is necessary if the XML file(s) use any of the files located there since OSR always assumes the included file paths are relative. Defaults to False.",
4942                    "type": "boolean"
4943                },
4944                "disable_python_c_api": {
4945                    "type": "boolean"
4946                },
4947                "sync_vars_in": {
4948                    "default": [],
4949                    "description": "Variables that should be synchronized from other models. Defaults to [].",
4950                    "items": {
4951                        "type": "string"
4952                    },
4953                    "type": "array"
4954                },
4955                "sync_vars_out": {
4956                    "default": [],
4957                    "description": "Variables that should be synchronized to other models. Defaults to [].",
4958                    "items": {
4959                        "type": "string"
4960                    },
4961                    "type": "array"
4962                },
4963                "update_interval": {
4964                    "additionalProperties": {
4965                        "type": "float"
4966                    },
4967                    "default": {
4968                        "timesync": 1.0
4969                    },
4970                    "description": "Max simulation interval at which synchronization should occur (in days). Defaults to 1.0 if not provided. If the XML input file loads additional export modules that output at a shorter rate, the existing table of values will be extrapolated.",
4971                    "type": "object"
4972                },
4973                "with_asan": {
4974                    "type": "boolean"
4975                }
4976            },
4977            "required": [
4978                "args",
4979                "language"
4980            ],
4981            "title": "yggdrasil.drivers.OSRModelDriver.OSRModelDriver",
4982            "type": "object"
4983        },
4984        "model-subtype-pytorch": {
4985            "additionalProperties": true,
4986            "description": "Schema for model component ['pytorch'] subtype.",
4987            "properties": {
4988                "driver": {
4989                    "deprecated": true,
4990                    "description": "[DEPRECATED] Name of driver class that should be used.",
4991                    "enum": [
4992                        "PyTorchModelDriver"
4993                    ],
4994                    "type": "string"
4995                },
4996                "language": {
4997                    "default": "pytorch",
4998                    "description": "Model is a PyTorch model",
4999                    "enum": [
5000                        "pytorch"
5001                    ],
5002                    "type": "string"
5003                },
5004                "args": {
5005                    "allowSingular": true,
5006                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
5007                    "items": {
5008                        "type": [
5009                            "string",
5010                            "number"
5011                        ]
5012                    },
5013                    "type": "array"
5014                },
5015                "input_transform": {
5016                    "description": "Transformation that should be applied to input to get it into the format expected by the model (including transformation to pytorch tensors as necessary). This function should return a tuple of arguments for the model.",
5017                    "type": "function"
5018                },
5019                "interpreter": {
5020                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
5021                    "type": "string"
5022                },
5023                "interpreter_flags": {
5024                    "default": [],
5025                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
5026                    "items": {
5027                        "type": "string"
5028                    },
5029                    "type": "array"
5030                },
5031                "output_transform": {
5032                    "description": "Transformation that should be applied to model output to get it into a format that can be serialized by yggdrasil (i.e. not a pytorch Tensor or model sepecific type).",
5033                    "type": "function"
5034                },
5035                "skip_interpreter": {
5036                    "default": false,
5037                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
5038                    "type": "boolean"
5039                },
5040                "weights": {
5041                    "description": "Path to file where model weights are saved",
5042                    "type": "string"
5043                }
5044            },
5045            "required": [
5046                "args",
5047                "language",
5048                "weights"
5049            ],
5050            "title": "yggdrasil.drivers.PyTorchModelDriver.PyTorchModelDriver",
5051            "type": "object"
5052        },
5053        "model-subtype-python": {
5054            "additionalProperties": true,
5055            "description": "Schema for model component ['python'] subtype.",
5056            "properties": {
5057                "driver": {
5058                    "deprecated": true,
5059                    "description": "[DEPRECATED] Name of driver class that should be used.",
5060                    "enum": [
5061                        "PythonModelDriver"
5062                    ],
5063                    "type": "string"
5064                },
5065                "language": {
5066                    "default": "python",
5067                    "description": "Model is written in Python.",
5068                    "enum": [
5069                        "python"
5070                    ],
5071                    "type": "string"
5072                },
5073                "args": {
5074                    "allowSingular": true,
5075                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
5076                    "items": {
5077                        "type": [
5078                            "string",
5079                            "number"
5080                        ]
5081                    },
5082                    "type": "array"
5083                },
5084                "interpreter": {
5085                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
5086                    "type": "string"
5087                },
5088                "interpreter_flags": {
5089                    "default": [],
5090                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
5091                    "items": {
5092                        "type": "string"
5093                    },
5094                    "type": "array"
5095                },
5096                "skip_interpreter": {
5097                    "default": false,
5098                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
5099                    "type": "boolean"
5100                }
5101            },
5102            "required": [
5103                "args",
5104                "language"
5105            ],
5106            "title": "yggdrasil.drivers.PythonModelDriver.PythonModelDriver",
5107            "type": "object"
5108        },
5109        "model-subtype-R": {
5110            "additionalProperties": true,
5111            "description": "Schema for model component ['R', 'r'] subtype.",
5112            "properties": {
5113                "driver": {
5114                    "deprecated": true,
5115                    "description": "[DEPRECATED] Name of driver class that should be used.",
5116                    "enum": [
5117                        "RModelDriver"
5118                    ],
5119                    "type": "string"
5120                },
5121                "language": {
5122                    "default": "R",
5123                    "description": "Model is written in R.",
5124                    "enum": [
5125                        "R",
5126                        "r"
5127                    ],
5128                    "type": "string"
5129                },
5130                "args": {
5131                    "allowSingular": true,
5132                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
5133                    "items": {
5134                        "type": [
5135                            "string",
5136                            "number"
5137                        ]
5138                    },
5139                    "type": "array"
5140                },
5141                "interpreter": {
5142                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
5143                    "type": "string"
5144                },
5145                "interpreter_flags": {
5146                    "default": [],
5147                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
5148                    "items": {
5149                        "type": "string"
5150                    },
5151                    "type": "array"
5152                },
5153                "skip_interpreter": {
5154                    "default": false,
5155                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
5156                    "type": "boolean"
5157                }
5158            },
5159            "required": [
5160                "args",
5161                "language"
5162            ],
5163            "title": "yggdrasil.drivers.RModelDriver.RModelDriver",
5164            "type": "object"
5165        },
5166        "model-subtype-sbml": {
5167            "additionalProperties": true,
5168            "description": "Schema for model component ['sbml'] subtype.",
5169            "properties": {
5170                "driver": {
5171                    "deprecated": true,
5172                    "description": "[DEPRECATED] Name of driver class that should be used.",
5173                    "enum": [
5174                        "SBMLModelDriver"
5175                    ],
5176                    "type": "string"
5177                },
5178                "language": {
5179                    "default": "sbml",
5180                    "description": "Model is an SBML model.",
5181                    "enum": [
5182                        "sbml"
5183                    ],
5184                    "type": "string"
5185                },
5186                "args": {
5187                    "allowSingular": true,
5188                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
5189                    "items": {
5190                        "type": [
5191                            "string",
5192                            "number"
5193                        ]
5194                    },
5195                    "type": "array"
5196                },
5197                "integrator": {
5198                    "default": "cvode",
5199                    "description": "Name of integrator that should be used. Valid options include ['cvode', 'gillespie', 'rk4', 'rk45']. Defaults to 'cvode'.",
5200                    "enum": [
5201                        "cvode",
5202                        "gillespie",
5203                        "rk4",
5204                        "rk45"
5205                    ],
5206                    "type": "string"
5207                },
5208                "integrator_settings": {
5209                    "default": {},
5210                    "description": "Settings for the integrator. Defaults to empty dict.",
5211                    "type": "object"
5212                },
5213                "interpreter": {
5214                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
5215                    "type": "string"
5216                },
5217                "interpreter_flags": {
5218                    "default": [],
5219                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
5220                    "items": {
5221                        "type": "string"
5222                    },
5223                    "type": "array"
5224                },
5225                "only_output_final_step": {
5226                    "default": false,
5227                    "description": "If True, only the final timestep is output. Defaults to False.",
5228                    "type": "boolean"
5229                },
5230                "reset": {
5231                    "default": false,
5232                    "description": "If True, the simulation will be reset to it's initial values before each call (including the start time). Defaults to False.",
5233                    "type": "boolean"
5234                },
5235                "selections": {
5236                    "default": [],
5237                    "description": "Variables to include in the output. Defaults to None and the time/floating selections will be returned.",
5238                    "items": {
5239                        "type": "string"
5240                    },
5241                    "type": "array"
5242                },
5243                "skip_interpreter": {
5244                    "default": false,
5245                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
5246                    "type": "boolean"
5247                },
5248                "skip_start_time": {
5249                    "default": false,
5250                    "description": "If True, the results for the initial time step will not be output. Defaults to False. This option is ignored if only_output_final_step is True.",
5251                    "type": "boolean"
5252                },
5253                "start_time": {
5254                    "default": 0.0,
5255                    "description": "Time that simulation should be started from. If 'reset' is True, the start time will always be the provided value, otherwise, the start time will be the end of the previous call after the first call. Defaults to 0.0.",
5256                    "type": "number"
5257                },
5258                "steps": {
5259                    "default": 1,
5260                    "description": "Number of steps that should be output. Defaults to None.",
5261                    "type": "integer"
5262                }
5263            },
5264            "required": [
5265                "args",
5266                "language"
5267            ],
5268            "title": "yggdrasil.drivers.SBMLModelDriver.SBMLModelDriver",
5269            "type": "object"
5270        },
5271        "model-subtype-timesync": {
5272            "additionalProperties": true,
5273            "description": "Schema for model component ['timesync'] subtype.",
5274            "properties": {
5275                "driver": {
5276                    "deprecated": true,
5277                    "description": "[DEPRECATED] Name of driver class that should be used.",
5278                    "enum": [
5279                        "TimeSyncModelDriver"
5280                    ],
5281                    "type": "string"
5282                },
5283                "language": {
5284                    "description": "Model is dedicated to synchronizing timesteps between other models.",
5285                    "enum": [
5286                        "timesync"
5287                    ],
5288                    "type": "string"
5289                },
5290                "additional_variables": {
5291                    "additionalProperties": {
5292                        "items": {
5293                            "type": "string"
5294                        },
5295                        "type": "array"
5296                    },
5297                    "default": {},
5298                    "type": "object"
5299                },
5300                "aggregation": {
5301                    "anyOf": [
5302                        {
5303                            "type": "function"
5304                        },
5305                        {
5306                            "type": "string"
5307                        },
5308                        {
5309                            "additionalProperties": {
5310                                "anyOf": [
5311                                    {
5312                                        "type": "function"
5313                                    },
5314                                    {
5315                                        "type": "string"
5316                                    }
5317                                ]
5318                            },
5319                            "type": "object"
5320                        }
5321                    ],
5322                    "default": "mean"
5323                },
5324                "args": {
5325                    "allowSingular": true,
5326                    "default": [],
5327                    "description": "The path to the file containing the model program that will be run by the driver for the model's language and/or a list of arguments that should be passed as input to the model program or language executable (e.g. source code or configuration file for a domain specific language).",
5328                    "items": {
5329                        "type": [
5330                            "string",
5331                            "number"
5332                        ]
5333                    },
5334                    "type": "array"
5335                },
5336                "interpolation": {
5337                    "anyOf": [
5338                        {
5339                            "type": "string"
5340                        },
5341                        {
5342                            "additionalProperties": {
5343                                "oneOf": [
5344                                    {
5345                                        "type": "string"
5346                                    },
5347                                    {
5348                                        "properties": {
5349                                            "method": {
5350                                                "type": "string"
5351                                            }
5352                                        },
5353                                        "required": [
5354                                            "method"
5355                                        ],
5356                                        "type": "object"
5357                                    }
5358                                ]
5359                            },
5360                            "type": "object"
5361                        },
5362                        {
5363                            "properties": {
5364                                "method": {
5365                                    "type": "string"
5366                                }
5367                            },
5368                            "required": [
5369                                "method"
5370                            ],
5371                            "type": "object"
5372                        }
5373                    ],
5374                    "default": "index"
5375                },
5376                "interpreter": {
5377                    "description": "Name or path of interpreter executable that should be used to run the model. If not provided, the interpreter will be determined based on configuration options for the language (if present) and the default_interpreter class attribute.",
5378                    "type": "string"
5379                },
5380                "interpreter_flags": {
5381                    "default": [],
5382                    "description": "Flags that should be passed to the interpreter when running the model. If not provided, the flags are determined based on configuration options for the language (if present) and the default_interpreter_flags class attribute.",
5383                    "items": {
5384                        "type": "string"
5385                    },
5386                    "type": "array"
5387                },
5388                "skip_interpreter": {
5389                    "default": false,
5390                    "description": "If True, no interpreter will be added to the arguments. This should only be used for subclasses that will not be invoking the model via the command line. Defaults to False.",
5391                    "type": "boolean"
5392                },
5393                "synonyms": {
5394                    "additionalProperties": {
5395                        "additionalProperties": {
5396                            "anyOf": [
5397                                {
5398                                    "type": "string"
5399                                },
5400                                {
5401                                    "properties": {
5402                                        "alt": {
5403                                            "anyOf": [
5404                                                {
5405                                                    "type": "string"
5406                                                },
5407                                                {
5408                                                    "items": {
5409                                                        "type": "string"
5410                                                    },
5411                                                    "type": "array"
5412                                                }
5413                                            ]
5414                                        },
5415                                        "alt2base": {
5416                                            "type": "function"
5417                                        },
5418                                        "base2alt": {
5419                                            "type": "function"
5420                                        }
5421                                    },
5422                                    "required": [
5423                                        "alt",
5424                                        "alt2base",
5425                                        "base2alt"
5426                                    ],
5427                                    "type": "object"
5428                                }
5429                            ]
5430                        },
5431                        "type": "object"
5432                    },
5433                    "default": {},
5434                    "description": "Mapping from model names to mappings from base variables names to information about one or more alternate variable names used by the named model that should be converted to the base variable. Values for providing information about alternate variables can either be strings (implies equivalence with the base variable in everything but name and units) or mappings with the keys:",
5435                    "type": "object"
5436                }
5437            },
5438            "required": [
5439                "args",
5440                "language"
5441            ],
5442            "title": "yggdrasil.drivers.TimeSyncModelDriver.TimeSyncModelDriver",
5443            "type": "object"
5444        },
5445        "model_driver": {
5446            "allOf": [
5447                {
5448                    "$ref": "#/definitions/model"
5449                },
5450                {
5451                    "required": [
5452                        "driver",
5453                        "args"
5454                    ],
5455                    "properties": {
5456                        "driver": {
5457                            "type": "string",
5458                            "deprecated": true,
5459                            "description": "[DEPRECATED] Name of driver class that should be used."
5460                        },
5461                        "args": {
5462                            "type": "string",
5463                            "deprecated": true,
5464                            "description": "[DEPRECATED] Arguments that should be provided to the driver."
5465                        }
5466                    }
5467                }
5468            ]
5469        },
5470        "serializer": {
5471            "description": "Schema for serializer components.",
5472            "title": "complete-serializer-seritype",
5473            "allOf": [
5474                {
5475                    "$ref": "#/definitions/serializer-subtype-base"
5476                },
5477                {
5478                    "anyOf": [
5479                        {
5480                            "$ref": "#/definitions/serializer-subtype-default"
5481                        },
5482                        {
5483                            "$ref": "#/definitions/serializer-subtype-map"
5484                        },
5485                        {
5486                            "$ref": "#/definitions/serializer-subtype-table"
5487                        },
5488                        {
5489                            "$ref": "#/definitions/serializer-subtype-cabo"
5490                        },
5491                        {
5492                            "$ref": "#/definitions/serializer-subtype-direct"
5493                        },
5494                        {
5495                            "$ref": "#/definitions/serializer-subtype-functional"
5496                        },
5497                        {
5498                            "$ref": "#/definitions/serializer-subtype-json"
5499                        },
5500                        {
5501                            "$ref": "#/definitions/serializer-subtype-mat"
5502                        },
5503                        {
5504                            "$ref": "#/definitions/serializer-subtype-obj"
5505                        },
5506                        {
5507                            "$ref": "#/definitions/serializer-subtype-pandas"
5508                        },
5509                        {
5510                            "$ref": "#/definitions/serializer-subtype-pickle"
5511                        },
5512                        {
5513                            "$ref": "#/definitions/serializer-subtype-ply"
5514                        },
5515                        {
5516                            "$ref": "#/definitions/serializer-subtype-yaml"
5517                        }
5518                    ]
5519                }
5520            ]
5521        },
5522        "serializer-subtype-base": {
5523            "additionalProperties": false,
5524            "description": "Base schema for all subtypes of serializer components.",
5525            "properties": {
5526                "newline": {
5527                    "default": "\n",
5528                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
5529                    "type": "string"
5530                },
5531                "datatype": {
5532                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
5533                    "type": "schema"
5534                },
5535                "comment": {
5536                    "default": "# ",
5537                    "description": "One or more characters indicating a comment. Defaults to '# '.",
5538                    "type": "string"
5539                },
5540                "seritype": {
5541                    "default": "default",
5542                    "description": "Serializer type.",
5543                    "enum": [
5544                        "cabo",
5545                        "default",
5546                        "direct",
5547                        "functional",
5548                        "json",
5549                        "map",
5550                        "mat",
5551                        "obj",
5552                        "pandas",
5553                        "pickle",
5554                        "ply",
5555                        "table",
5556                        "yaml"
5557                    ],
5558                    "type": "string"
5559                },
5560                "delimiter": {
5561                    "default": "\t",
5562                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
5563                    "type": "string"
5564                },
5565                "as_array": {
5566                    "default": false,
5567                    "description": "If True, each of the arguments being serialized/deserialized will be arrays that are converted to/from bytes in column major ('F') order. Otherwise, each argument should be a scalar. Defaults to False.",
5568                    "type": "boolean"
5569                },
5570                "field_names": {
5571                    "aliases": [
5572                        "column_names"
5573                    ],
5574                    "allowSingular": true,
5575                    "description": "The names of fields in the format string. If not provided, names are set based on the order of the fields in the format string.",
5576                    "items": {
5577                        "type": "string"
5578                    },
5579                    "type": "array"
5580                },
5581                "field_units": {
5582                    "aliases": [
5583                        "column_units"
5584                    ],
5585                    "allowSingular": true,
5586                    "description": "The units of fields in the format string. If not provided, all fields are assumed to be dimensionless.",
5587                    "items": {
5588                        "type": "string"
5589                    },
5590                    "type": "array"
5591                },
5592                "format_str": {
5593                    "description": "If provided, this string will be used to format messages from a list of arguments and parse messages to get a list of arguments in C printf/scanf style. Defaults to None and messages are assumed to already be bytes.",
5594                    "type": "string"
5595                },
5596                "use_astropy": {
5597                    "default": false,
5598                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
5599                    "type": "boolean"
5600                },
5601                "encoded_datatype": {
5602                    "description": "JSON schema describing the type that serialized objects should conform to. Defaults to the class attribute default_encoded_datatype. If either func_serialize or func_deserialize are not provided, this needs to be specified in order to serialize non-bytes objects.",
5603                    "type": "schema"
5604                },
5605                "func_deserialize": {
5606                    "description": "Callable object that takes objects of a type that conforms to encoded_datatype and returns a deserialized Python object. Defaults to None and the default deserialization for encoded_datatype will be used.",
5607                    "type": "function"
5608                },
5609                "func_serialize": {
5610                    "description": "Callable object that takes Python objects as input and returns a representation that conforms to encoded_datatype. Defaults to None and the default serialization for encoded_datatype will be used.",
5611                    "type": "function"
5612                },
5613                "indent": {
5614                    "default": "\t",
5615                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
5616                    "type": [
5617                        "string",
5618                        "int"
5619                    ]
5620                },
5621                "sort_keys": {
5622                    "default": true,
5623                    "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
5624                    "type": "boolean"
5625                },
5626                "prune_duplicates": {
5627                    "default": true,
5628                    "description": "If True, serialized meshes in array format will be pruned of duplicates when being normalized into a Ply object. If False, duplicates will not be pruned. Defaults to True.",
5629                    "type": "boolean"
5630                },
5631                "no_header": {
5632                    "default": false,
5633                    "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
5634                    "type": "boolean"
5635                },
5636                "str_as_bytes": {
5637                    "default": false,
5638                    "description": "If True, strings in columns are read as bytes. Defaults to False.",
5639                    "type": "boolean"
5640                },
5641                "default_flow_style": {
5642                    "default": false,
5643                    "description": "If True, nested collections will be serialized in the block style. If False, they will always be serialized in the flow style. See `PyYAML Documentation <https://pyyaml.org/wiki/PyYAMLDocumentation>`_.",
5644                    "type": "boolean"
5645                },
5646                "encoding": {
5647                    "default": "utf-8",
5648                    "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
5649                    "type": "string"
5650                }
5651            },
5652            "title": "serializer_base",
5653            "type": "object"
5654        },
5655        "serializer-subtype-default": {
5656            "additionalProperties": true,
5657            "description": "Schema for serializer component ['default'] subtype.",
5658            "properties": {
5659                "seritype": {
5660                    "default": "default",
5661                    "description": "Default serializer that uses |yggdrasil|'s extended JSON serialization based on a provided type definition (See discussion :ref:`here <serialization_rst>`).",
5662                    "enum": [
5663                        "default"
5664                    ],
5665                    "type": "string"
5666                }
5667            },
5668            "required": [
5669                "seritype"
5670            ],
5671            "title": "yggdrasil.serialize.DefaultSerialize.DefaultSerialize",
5672            "type": "object"
5673        },
5674        "serializer-subtype-map": {
5675            "additionalProperties": true,
5676            "description": "Schema for serializer component ['map'] subtype.",
5677            "properties": {
5678                "seritype": {
5679                    "default": "map",
5680                    "description": "Serialzation of mapping between key/value pairs with one pair per line and using a character delimiter to separate keys and values.",
5681                    "enum": [
5682                        "map"
5683                    ],
5684                    "type": "string"
5685                },
5686                "delimiter": {
5687                    "default": "\t",
5688                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
5689                    "type": "string"
5690                }
5691            },
5692            "required": [
5693                "seritype"
5694            ],
5695            "title": "yggdrasil.serialize.AsciiMapSerialize.AsciiMapSerialize",
5696            "type": "object"
5697        },
5698        "serializer-subtype-table": {
5699            "additionalProperties": true,
5700            "description": "Schema for serializer component ['table'] subtype.",
5701            "properties": {
5702                "seritype": {
5703                    "default": "table",
5704                    "description": "ASCII tab (or otherwise) delimited table.",
5705                    "enum": [
5706                        "table"
5707                    ],
5708                    "type": "string"
5709                },
5710                "as_array": {
5711                    "default": false,
5712                    "description": "If True, each of the arguments being serialized/deserialized will be arrays that are converted to/from bytes in column major ('F') order. Otherwise, each argument should be a scalar. Defaults to False.",
5713                    "type": "boolean"
5714                },
5715                "delimiter": {
5716                    "aliases": [
5717                        "column"
5718                    ],
5719                    "default": "\t",
5720                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
5721                    "type": "string"
5722                },
5723                "field_names": {
5724                    "aliases": [
5725                        "column_names"
5726                    ],
5727                    "allowSingular": true,
5728                    "description": "The names of fields in the format string. If not provided, names are set based on the order of the fields in the format string.",
5729                    "items": {
5730                        "type": "string"
5731                    },
5732                    "type": "array"
5733                },
5734                "field_units": {
5735                    "aliases": [
5736                        "column_units"
5737                    ],
5738                    "allowSingular": true,
5739                    "description": "The units of fields in the format string. If not provided, all fields are assumed to be dimensionless.",
5740                    "items": {
5741                        "type": "string"
5742                    },
5743                    "type": "array"
5744                },
5745                "format_str": {
5746                    "description": "If provided, this string will be used to format messages from a list of arguments and parse messages to get a list of arguments in C printf/scanf style. Defaults to None and messages are assumed to already be bytes.",
5747                    "type": "string"
5748                },
5749                "use_astropy": {
5750                    "default": false,
5751                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
5752                    "type": "boolean"
5753                }
5754            },
5755            "required": [
5756                "seritype"
5757            ],
5758            "title": "yggdrasil.serialize.AsciiTableSerialize.AsciiTableSerialize",
5759            "type": "object"
5760        },
5761        "serializer-subtype-cabo": {
5762            "additionalProperties": true,
5763            "description": "Schema for serializer component ['cabo'] subtype.",
5764            "properties": {
5765                "seritype": {
5766                    "default": "cabo",
5767                    "description": "Serialization of mapping between keys and scalar or array values as used in the CABO parameter files.",
5768                    "enum": [
5769                        "cabo"
5770                    ],
5771                    "type": "string"
5772                },
5773                "delimiter": {
5774                    "default": " = ",
5775                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
5776                    "type": "string"
5777                }
5778            },
5779            "required": [
5780                "seritype"
5781            ],
5782            "title": "yggdrasil.serialize.CABOSerialize.CABOSerialize",
5783            "type": "object"
5784        },
5785        "serializer-subtype-direct": {
5786            "additionalProperties": true,
5787            "description": "Schema for serializer component ['direct'] subtype.",
5788            "properties": {
5789                "seritype": {
5790                    "default": "direct",
5791                    "description": "Direct serialization of bytes.",
5792                    "enum": [
5793                        "direct"
5794                    ],
5795                    "type": "string"
5796                }
5797            },
5798            "required": [
5799                "seritype"
5800            ],
5801            "title": "yggdrasil.serialize.DirectSerialize.DirectSerialize",
5802            "type": "object"
5803        },
5804        "serializer-subtype-functional": {
5805            "additionalProperties": true,
5806            "description": "Schema for serializer component ['functional'] subtype.",
5807            "properties": {
5808                "seritype": {
5809                    "default": "functional",
5810                    "description": "Serializer that uses provied function to serialize messages.",
5811                    "enum": [
5812                        "functional"
5813                    ],
5814                    "type": "string"
5815                },
5816                "encoded_datatype": {
5817                    "description": "JSON schema describing the type that serialized objects should conform to. Defaults to the class attribute default_encoded_datatype. If either func_serialize or func_deserialize are not provided, this needs to be specified in order to serialize non-bytes objects.",
5818                    "type": "schema"
5819                },
5820                "func_deserialize": {
5821                    "description": "Callable object that takes objects of a type that conforms to encoded_datatype and returns a deserialized Python object. Defaults to None and the default deserialization for encoded_datatype will be used.",
5822                    "type": "function"
5823                },
5824                "func_serialize": {
5825                    "description": "Callable object that takes Python objects as input and returns a representation that conforms to encoded_datatype. Defaults to None and the default serialization for encoded_datatype will be used.",
5826                    "type": "function"
5827                }
5828            },
5829            "required": [
5830                "seritype"
5831            ],
5832            "title": "yggdrasil.serialize.FunctionalSerialize.FunctionalSerialize",
5833            "type": "object"
5834        },
5835        "serializer-subtype-json": {
5836            "additionalProperties": true,
5837            "description": "Schema for serializer component ['json'] subtype.",
5838            "properties": {
5839                "seritype": {
5840                    "default": "json",
5841                    "description": "Serializes Python objects using the JSON standard.",
5842                    "enum": [
5843                        "json"
5844                    ],
5845                    "type": "string"
5846                },
5847                "indent": {
5848                    "default": "\t",
5849                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
5850                    "type": [
5851                        "string",
5852                        "int"
5853                    ]
5854                },
5855                "sort_keys": {
5856                    "default": true,
5857                    "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
5858                    "type": "boolean"
5859                }
5860            },
5861            "required": [
5862                "seritype"
5863            ],
5864            "title": "yggdrasil.serialize.JSONSerialize.JSONSerialize",
5865            "type": "object"
5866        },
5867        "serializer-subtype-mat": {
5868            "additionalProperties": true,
5869            "description": "Schema for serializer component ['mat'] subtype.",
5870            "properties": {
5871                "seritype": {
5872                    "default": "mat",
5873                    "description": "Serializes objects using the Matlab .mat format.",
5874                    "enum": [
5875                        "mat"
5876                    ],
5877                    "type": "string"
5878                }
5879            },
5880            "required": [
5881                "seritype"
5882            ],
5883            "title": "yggdrasil.serialize.MatSerialize.MatSerialize",
5884            "type": "object"
5885        },
5886        "serializer-subtype-obj": {
5887            "additionalProperties": true,
5888            "description": "Schema for serializer component ['obj'] subtype.",
5889            "properties": {
5890                "seritype": {
5891                    "default": "obj",
5892                    "description": "Serialize 3D structures using Obj format.",
5893                    "enum": [
5894                        "obj"
5895                    ],
5896                    "type": "string"
5897                },
5898                "prune_duplicates": {
5899                    "default": true,
5900                    "description": "If True, serialized meshes in array format will be pruned of duplicates when being normalized into a Ply object. If False, duplicates will not be pruned. Defaults to True.",
5901                    "type": "boolean"
5902                }
5903            },
5904            "required": [
5905                "seritype"
5906            ],
5907            "title": "yggdrasil.serialize.ObjSerialize.ObjSerialize",
5908            "type": "object"
5909        },
5910        "serializer-subtype-pandas": {
5911            "additionalProperties": true,
5912            "description": "Schema for serializer component ['pandas'] subtype.",
5913            "properties": {
5914                "seritype": {
5915                    "default": "pandas",
5916                    "description": "Serializes tables using the pandas package.",
5917                    "enum": [
5918                        "pandas"
5919                    ],
5920                    "type": "string"
5921                },
5922                "delimiter": {
5923                    "aliases": [
5924                        "column"
5925                    ],
5926                    "default": "\t",
5927                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
5928                    "type": "string"
5929                },
5930                "field_names": {
5931                    "aliases": [
5932                        "column_names"
5933                    ],
5934                    "allowSingular": true,
5935                    "description": "The names of fields in the format string. If not provided, names are set based on the order of the fields in the format string.",
5936                    "items": {
5937                        "type": "string"
5938                    },
5939                    "type": "array"
5940                },
5941                "field_units": {
5942                    "aliases": [
5943                        "column_units"
5944                    ],
5945                    "allowSingular": true,
5946                    "description": "The units of fields in the format string. If not provided, all fields are assumed to be dimensionless.",
5947                    "items": {
5948                        "type": "string"
5949                    },
5950                    "type": "array"
5951                },
5952                "format_str": {
5953                    "description": "If provided, this string will be used to format messages from a list of arguments and parse messages to get a list of arguments in C printf/scanf style. Defaults to None and messages are assumed to already be bytes.",
5954                    "type": "string"
5955                },
5956                "no_header": {
5957                    "default": false,
5958                    "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
5959                    "type": "boolean"
5960                },
5961                "str_as_bytes": {
5962                    "default": false,
5963                    "description": "If True, strings in columns are read as bytes. Defaults to False.",
5964                    "type": "boolean"
5965                },
5966                "use_astropy": {
5967                    "default": false,
5968                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
5969                    "type": "boolean"
5970                }
5971            },
5972            "required": [
5973                "seritype"
5974            ],
5975            "title": "yggdrasil.serialize.PandasSerialize.PandasSerialize",
5976            "type": "object"
5977        },
5978        "serializer-subtype-pickle": {
5979            "additionalProperties": true,
5980            "description": "Schema for serializer component ['pickle'] subtype.",
5981            "properties": {
5982                "seritype": {
5983                    "default": "pickle",
5984                    "description": "Serialize any Python object using a Python pickle.",
5985                    "enum": [
5986                        "pickle"
5987                    ],
5988                    "type": "string"
5989                }
5990            },
5991            "required": [
5992                "seritype"
5993            ],
5994            "title": "yggdrasil.serialize.PickleSerialize.PickleSerialize",
5995            "type": "object"
5996        },
5997        "serializer-subtype-ply": {
5998            "additionalProperties": true,
5999            "description": "Schema for serializer component ['ply'] subtype.",
6000            "properties": {
6001                "seritype": {
6002                    "default": "ply",
6003                    "description": "Serialize 3D structures using `Ply format <http://paulbourke.net/dataformats/ply/>`_.",
6004                    "enum": [
6005                        "ply"
6006                    ],
6007                    "type": "string"
6008                },
6009                "prune_duplicates": {
6010                    "default": true,
6011                    "description": "If True, serialized meshes in array format will be pruned of duplicates when being normalized into a Ply object. If False, duplicates will not be pruned. Defaults to True.",
6012                    "type": "boolean"
6013                }
6014            },
6015            "required": [
6016                "seritype"
6017            ],
6018            "title": "yggdrasil.serialize.PlySerialize.PlySerialize",
6019            "type": "object"
6020        },
6021        "serializer-subtype-yaml": {
6022            "additionalProperties": true,
6023            "description": "Schema for serializer component ['yaml'] subtype.",
6024            "properties": {
6025                "seritype": {
6026                    "default": "yaml",
6027                    "description": "Serializes Python objects using the YAML standard.",
6028                    "enum": [
6029                        "yaml"
6030                    ],
6031                    "type": "string"
6032                },
6033                "default_flow_style": {
6034                    "default": false,
6035                    "description": "If True, nested collections will be serialized in the block style. If False, they will always be serialized in the flow style. See `PyYAML Documentation <https://pyyaml.org/wiki/PyYAMLDocumentation>`_.",
6036                    "type": "boolean"
6037                },
6038                "encoding": {
6039                    "default": "utf-8",
6040                    "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
6041                    "type": "string"
6042                },
6043                "indent": {
6044                    "default": "\t",
6045                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
6046                    "type": [
6047                        "string",
6048                        "int"
6049                    ]
6050                }
6051            },
6052            "required": [
6053                "seritype"
6054            ],
6055            "title": "yggdrasil.serialize.YAMLSerialize.YAMLSerialize",
6056            "type": "object"
6057        },
6058        "transform": {
6059            "description": "Schema for transform components.",
6060            "title": "complete-transform-transformtype",
6061            "allOf": [
6062                {
6063                    "$ref": "#/definitions/transform-subtype-base"
6064                },
6065                {
6066                    "anyOf": [
6067                        {
6068                            "$ref": "#/definitions/transform-subtype-array"
6069                        },
6070                        {
6071                            "$ref": "#/definitions/transform-subtype-direct"
6072                        },
6073                        {
6074                            "$ref": "#/definitions/transform-subtype-filter"
6075                        },
6076                        {
6077                            "$ref": "#/definitions/transform-subtype-function"
6078                        },
6079                        {
6080                            "$ref": "#/definitions/transform-subtype-iterate"
6081                        },
6082                        {
6083                            "$ref": "#/definitions/transform-subtype-map_fields"
6084                        },
6085                        {
6086                            "$ref": "#/definitions/transform-subtype-map"
6087                        },
6088                        {
6089                            "$ref": "#/definitions/transform-subtype-pandas"
6090                        },
6091                        {
6092                            "$ref": "#/definitions/transform-subtype-select_fields"
6093                        },
6094                        {
6095                            "$ref": "#/definitions/transform-subtype-select_scalar"
6096                        },
6097                        {
6098                            "$ref": "#/definitions/transform-subtype-statement"
6099                        }
6100                    ]
6101                }
6102            ]
6103        },
6104        "transform-subtype-base": {
6105            "additionalProperties": false,
6106            "allowSingular": "transformtype",
6107            "description": "Base schema for all subtypes of transform components.",
6108            "properties": {
6109                "transformtype": {
6110                    "description": "Consolidate values into an array",
6111                    "enum": [
6112                        "array",
6113                        "direct",
6114                        "filter",
6115                        "function",
6116                        "iterate",
6117                        "map",
6118                        "map_fields",
6119                        "pandas",
6120                        "select_fields",
6121                        "select_scalar",
6122                        "statement"
6123                    ],
6124                    "type": "string"
6125                },
6126                "original_datatype": {
6127                    "description": "Datatype associated with expected messages. Defaults to None.",
6128                    "type": "schema"
6129                },
6130                "field_names": {
6131                    "description": "Names of fields in the array.",
6132                    "items": {
6133                        "type": "string"
6134                    },
6135                    "type": "array"
6136                },
6137                "filter": {
6138                    "$ref": "#/definitions/filter",
6139                    "description": "Filter used to exclude some messages based on their contents."
6140                },
6141                "function": {
6142                    "description": "The handle for a callable Python object (e.g. function) that should be used to transform messages or a string of the form \"<function file>:<function name>\" identifying a function where \"<function file>\" is the module or Python file containing the function and \"<function name>\" is the name of the function. The function should take the message as input and return the transformed message.",
6143                    "type": "function"
6144                },
6145                "map": {
6146                    "additionalProperties": {
6147                        "type": "string"
6148                    },
6149                    "description": "A mapping from original field name to new field names.",
6150                    "type": "object"
6151                },
6152                "original_order": {
6153                    "description": "The original order of fields that should be used for selecting from lists/tuples.",
6154                    "items": {
6155                        "type": "string"
6156                    },
6157                    "type": "array"
6158                },
6159                "selected": {
6160                    "description": "A list of fields that should be selected.",
6161                    "items": {
6162                        "type": [
6163                            "string",
6164                            "integer"
6165                        ]
6166                    },
6167                    "type": "array"
6168                },
6169                "single_as_scalar": {
6170                    "description": "If True and only a single field is selected, the transformed messages will be scalars rather than arrays with single elements. Defaults to False.",
6171                    "type": "boolean"
6172                },
6173                "index": {
6174                    "default": 0,
6175                    "description": "Array index or dictionary key to select. Defaults to selecting the first element in an array or the first key alphabetically.",
6176                    "type": [
6177                        "integer",
6178                        "string"
6179                    ]
6180                },
6181                "statement": {
6182                    "description": "Python statement in terms of the message as represented by the string \"%x%\" that should evaluate to the transformed message. The statement should only use a limited set of builtins and the math library (See yggdrasil.tools.safe_eval). If more complex relationships are required, use the FunctionTransform class.",
6183                    "type": "string"
6184                }
6185            },
6186            "title": "transform_base",
6187            "type": "object"
6188        },
6189        "transform-subtype-array": {
6190            "additionalProperties": true,
6191            "allowSingular": "transformtype",
6192            "description": "Schema for transform component ['array'] subtype.",
6193            "properties": {
6194                "transformtype": {
6195                    "default": "array",
6196                    "description": "Consolidate values into an array",
6197                    "enum": [
6198                        "array"
6199                    ],
6200                    "type": "string"
6201                },
6202                "field_names": {
6203                    "description": "Names of fields in the array.",
6204                    "items": {
6205                        "type": "string"
6206                    },
6207                    "type": "array"
6208                }
6209            },
6210            "title": "yggdrasil.communication.transforms.ArrayTransform.ArrayTransform",
6211            "type": "object"
6212        },
6213        "transform-subtype-direct": {
6214            "additionalProperties": true,
6215            "allowSingular": "transformtype",
6216            "description": "Schema for transform component ['direct'] subtype.",
6217            "properties": {
6218                "transformtype": {
6219                    "default": "direct",
6220                    "description": "Pass the message through unchanged",
6221                    "enum": [
6222                        "direct"
6223                    ],
6224                    "type": "string"
6225                }
6226            },
6227            "title": "yggdrasil.communication.transforms.DirectTransform.DirectTransform",
6228            "type": "object"
6229        },
6230        "transform-subtype-filter": {
6231            "additionalProperties": true,
6232            "allowSingular": "transformtype",
6233            "description": "Schema for transform component ['filter'] subtype.",
6234            "properties": {
6235                "transformtype": {
6236                    "default": "filter",
6237                    "description": "Pass only some messages based on a filter",
6238                    "enum": [
6239                        "filter"
6240                    ],
6241                    "type": "string"
6242                },
6243                "filter": {
6244                    "$ref": "#/definitions/filter",
6245                    "description": "Filter used to exclude some messages based on their contents."
6246                }
6247            },
6248            "required": [
6249                "filter"
6250            ],
6251            "title": "yggdrasil.communication.transforms.FilterTransform.FilterTransform",
6252            "type": "object"
6253        },
6254        "transform-subtype-function": {
6255            "additionalProperties": true,
6256            "allowSingular": "transformtype",
6257            "description": "Schema for transform component ['function'] subtype.",
6258            "properties": {
6259                "transformtype": {
6260                    "default": "function",
6261                    "description": "Transform messages using a function.",
6262                    "enum": [
6263                        "function"
6264                    ],
6265                    "type": "string"
6266                },
6267                "function": {
6268                    "description": "The handle for a callable Python object (e.g. function) that should be used to transform messages or a string of the form \"<function file>:<function name>\" identifying a function where \"<function file>\" is the module or Python file containing the function and \"<function name>\" is the name of the function. The function should take the message as input and return the transformed message.",
6269                    "type": "function"
6270                }
6271            },
6272            "required": [
6273                "function"
6274            ],
6275            "title": "yggdrasil.communication.transforms.FunctionTransform.FunctionTransform",
6276            "type": "object"
6277        },
6278        "transform-subtype-iterate": {
6279            "additionalProperties": true,
6280            "allowSingular": "transformtype",
6281            "description": "Schema for transform component ['iterate'] subtype.",
6282            "properties": {
6283                "transformtype": {
6284                    "default": "iterate",
6285                    "description": "Split messages up into their iterable components",
6286                    "enum": [
6287                        "iterate"
6288                    ],
6289                    "type": "string"
6290                }
6291            },
6292            "title": "yggdrasil.communication.transforms.IterateTransform.IterateTransform",
6293            "type": "object"
6294        },
6295        "transform-subtype-map_fields": {
6296            "additionalProperties": true,
6297            "allowSingular": "transformtype",
6298            "description": "Schema for transform component ['map_fields'] subtype.",
6299            "properties": {
6300                "transformtype": {
6301                    "default": "map_fields",
6302                    "description": "Change the names of fields in a message",
6303                    "enum": [
6304                        "map_fields"
6305                    ],
6306                    "type": "string"
6307                },
6308                "map": {
6309                    "additionalProperties": {
6310                        "type": "string"
6311                    },
6312                    "description": "A mapping from original field name to new field names.",
6313                    "type": "object"
6314                }
6315            },
6316            "required": [
6317                "map"
6318            ],
6319            "title": "yggdrasil.communication.transforms.MapFieldsTransform.MapFieldsTransform",
6320            "type": "object"
6321        },
6322        "transform-subtype-map": {
6323            "additionalProperties": true,
6324            "allowSingular": "transformtype",
6325            "description": "Schema for transform component ['map'] subtype.",
6326            "properties": {
6327                "transformtype": {
6328                    "default": "map",
6329                    "description": "Convert an object into a dictionary.",
6330                    "enum": [
6331                        "map"
6332                    ],
6333                    "type": "string"
6334                },
6335                "field_names": {
6336                    "description": "A list of field names that should be used for array object. If not provided, names will be generated according to 'f0', 'f1', 'f2', etc.",
6337                    "items": {
6338                        "type": "string"
6339                    },
6340                    "type": "array"
6341                }
6342            },
6343            "title": "yggdrasil.communication.transforms.MapTransform.MapTransform",
6344            "type": "object"
6345        },
6346        "transform-subtype-pandas": {
6347            "additionalProperties": true,
6348            "allowSingular": "transformtype",
6349            "description": "Schema for transform component ['pandas'] subtype.",
6350            "properties": {
6351                "transformtype": {
6352                    "default": "pandas",
6353                    "description": "Convert messages into Pandas data frames",
6354                    "enum": [
6355                        "pandas"
6356                    ],
6357                    "type": "string"
6358                },
6359                "field_names": {
6360                    "description": "Names of fields in the array.",
6361                    "items": {
6362                        "type": "string"
6363                    },
6364                    "type": "array"
6365                }
6366            },
6367            "title": "yggdrasil.communication.transforms.PandasTransform.PandasTransform",
6368            "type": "object"
6369        },
6370        "transform-subtype-select_fields": {
6371            "additionalProperties": true,
6372            "allowSingular": "transformtype",
6373            "description": "Schema for transform component ['select_fields'] subtype.",
6374            "properties": {
6375                "transformtype": {
6376                    "default": "select_fields",
6377                    "description": "Select a subset of fields from a message",
6378                    "enum": [
6379                        "select_fields"
6380                    ],
6381                    "type": "string"
6382                },
6383                "original_order": {
6384                    "description": "The original order of fields that should be used for selecting from lists/tuples.",
6385                    "items": {
6386                        "type": "string"
6387                    },
6388                    "type": "array"
6389                },
6390                "selected": {
6391                    "description": "A list of fields that should be selected.",
6392                    "items": {
6393                        "type": [
6394                            "string",
6395                            "integer"
6396                        ]
6397                    },
6398                    "type": "array"
6399                },
6400                "single_as_scalar": {
6401                    "description": "If True and only a single field is selected, the transformed messages will be scalars rather than arrays with single elements. Defaults to False.",
6402                    "type": "boolean"
6403                }
6404            },
6405            "required": [
6406                "selected"
6407            ],
6408            "title": "yggdrasil.communication.transforms.SelectFieldsTransform.SelectFieldsTransform",
6409            "type": "object"
6410        },
6411        "transform-subtype-select_scalar": {
6412            "additionalProperties": true,
6413            "allowSingular": "transformtype",
6414            "description": "Schema for transform component ['select_scalar'] subtype.",
6415            "properties": {
6416                "transformtype": {
6417                    "default": "select_scalar",
6418                    "description": "Select a single field from a message",
6419                    "enum": [
6420                        "select_scalar"
6421                    ],
6422                    "type": "string"
6423                },
6424                "index": {
6425                    "default": 0,
6426                    "description": "Array index or dictionary key to select. Defaults to selecting the first element in an array or the first key alphabetically.",
6427                    "type": [
6428                        "integer",
6429                        "string"
6430                    ]
6431                },
6432                "original_order": {
6433                    "description": "The original order of fields that should be used for selecting from lists/tuples.",
6434                    "items": {
6435                        "type": "string"
6436                    },
6437                    "type": "array"
6438                }
6439            },
6440            "title": "yggdrasil.communication.transforms.SelectScalarTransform.SelectScalarTransform",
6441            "type": "object"
6442        },
6443        "transform-subtype-statement": {
6444            "additionalProperties": true,
6445            "allowSingular": "transformtype",
6446            "description": "Schema for transform component ['statement'] subtype.",
6447            "properties": {
6448                "transformtype": {
6449                    "default": "statement",
6450                    "description": "Transform messages according to a statement",
6451                    "enum": [
6452                        "statement"
6453                    ],
6454                    "type": "string"
6455                },
6456                "statement": {
6457                    "description": "Python statement in terms of the message as represented by the string \"%x%\" that should evaluate to the transformed message. The statement should only use a limited set of builtins and the math library (See yggdrasil.tools.safe_eval). If more complex relationships are required, use the FunctionTransform class.",
6458                    "type": "string"
6459                }
6460            },
6461            "required": [
6462                "statement"
6463            ],
6464            "title": "yggdrasil.communication.transforms.StatementTransform.StatementTransform",
6465            "type": "object"
6466        }
6467    },
6468    "required": [
6469        "models",
6470        "connections"
6471    ],
6472    "additionalProperties": false,
6473    "properties": {
6474        "models": {
6475            "type": "array",
6476            "items": {
6477                "anyOf": [
6478                    {
6479                        "$ref": "#/definitions/model"
6480                    },
6481                    {
6482                        "$ref": "#/definitions/model_driver"
6483                    }
6484                ]
6485            },
6486            "minItems": 1,
6487            "aliases": [
6488                "model"
6489            ],
6490            "allowSingular": true
6491        },
6492        "connections": {
6493            "type": "array",
6494            "items": {
6495                "anyOf": [
6496                    {
6497                        "$ref": "#/definitions/connection"
6498                    },
6499                    {
6500                        "$ref": "#/definitions/connection_driver"
6501                    }
6502                ]
6503            },
6504            "aliases": [
6505                "connection"
6506            ],
6507            "default": [],
6508            "allowSingular": true
6509        },
6510        "working_dir": {
6511            "type": "string"
6512        }
6513    },
6514    "pushProperties": {
6515        "$properties/connections/items": [
6516            "working_dir"
6517        ],
6518        "$properties/models/items": [
6519            "working_dir"
6520        ]
6521    }
6522}

Additional Schemas

model_form.json

Pure JSON schema (without yggdrasil metaschema extensions) for validating models submitted to the Yggdrasil Model Repository.

integration_strict.json

Pure JSON schema (without yggdrasil metaschema extensions) for validating integration objects.