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": "comm",
   9            "allOf": [
  10                {
  11                    "additionalProperties": false,
  12                    "dependencies": {
  13                        "driver": [
  14                            "args"
  15                        ]
  16                    },
  17                    "description": "Base schema for all subtypes of comm components.",
  18                    "properties": {
  19                        "address": {
  20                            "description": "Communication info. Default to None and address is taken from the environment variable.",
  21                            "type": "string"
  22                        },
  23                        "args": {
  24                            "description": "[DEPRECATED] Arguments that should be provided to the driver.",
  25                            "type": "string"
  26                        },
  27                        "as_array": {
  28                            "default": false,
  29                            "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.",
  30                            "type": "boolean"
  31                        },
  32                        "commtype": {
  33                            "default": "default",
  34                            "description": "Communication mechanism that should be used.",
  35                            "enum": [
  36                                "buffer",
  37                                "default",
  38                                "ipc",
  39                                "mpi",
  40                                "rest",
  41                                "rmq",
  42                                "rmq_async",
  43                                "value",
  44                                "zmq"
  45                            ],
  46                            "type": "string"
  47                        },
  48                        "datatype": {
  49                            "default": {
  50                                "type": "bytes"
  51                            },
  52                            "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>`.",
  53                            "type": "schema"
  54                        },
  55                        "default_file": {
  56                            "$ref": "#/definitions/file",
  57                            "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."
  58                        },
  59                        "default_value": {
  60                            "description": "Value that should be returned in the event that a yaml does not pair the comm with another model comm or a file.",
  61                            "type": "any"
  62                        },
  63                        "dont_copy": {
  64                            "default": false,
  65                            "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.",
  66                            "type": "boolean"
  67                        },
  68                        "driver": {
  69                            "description": "[DEPRECATED] Name of driver class that should be used.",
  70                            "type": "string"
  71                        },
  72                        "field_names": {
  73                            "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.",
  74                            "items": {
  75                                "type": "string"
  76                            },
  77                            "type": "array"
  78                        },
  79                        "field_units": {
  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                        "filter": {
  87                            "$ref": "#/definitions/filter",
  88                            "description": "Filter that will be used to determine when messages should be sent/received. Ignored if not provided."
  89                        },
  90                        "for_service": {
  91                            "default": false,
  92                            "description": "If True, this comm bridges the gap to an integration running as a service, possibly on a remote machine. Defaults to False.",
  93                            "type": "boolean"
  94                        },
  95                        "format_str": {
  96                            "description": "String that should be used to format/parse messages. Default to None.",
  97                            "type": "string"
  98                        },
  99                        "is_default": {
 100                            "default": false,
 101                            "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.",
 102                            "type": "boolean"
 103                        },
 104                        "length_map": {
 105                            "additionalProperties": {
 106                                "type": "string"
 107                            },
 108                            "description": "Map from pointer variable names to the names of variables where their length will be stored. Defaults to {}.",
 109                            "type": "object"
 110                        },
 111                        "name": {
 112                            "description": "Name used for component in log messages.",
 113                            "type": "string"
 114                        },
 115                        "outside_loop": {
 116                            "default": false,
 117                            "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.",
 118                            "type": "boolean"
 119                        },
 120                        "recv_converter": {
 121                            "anyOf": [
 122                                {
 123                                    "$ref": "#/definitions/transform"
 124                                },
 125                                {
 126                                    "type": [
 127                                        "function",
 128                                        "string"
 129                                    ]
 130                                },
 131                                {
 132                                    "items": {
 133                                        "anyOf": [
 134                                            {
 135                                                "$ref": "#/definitions/transform"
 136                                            },
 137                                            {
 138                                                "type": [
 139                                                    "function",
 140                                                    "string"
 141                                                ]
 142                                            }
 143                                        ]
 144                                    },
 145                                    "type": "array"
 146                                }
 147                            ],
 148                            "description": "Converter that should be used on received objects. Defaults to None."
 149                        },
 150                        "send_converter": {
 151                            "anyOf": [
 152                                {
 153                                    "$ref": "#/definitions/transform"
 154                                },
 155                                {
 156                                    "type": [
 157                                        "function",
 158                                        "string"
 159                                    ]
 160                                },
 161                                {
 162                                    "items": {
 163                                        "anyOf": [
 164                                            {
 165                                                "$ref": "#/definitions/transform"
 166                                            },
 167                                            {
 168                                                "type": [
 169                                                    "function",
 170                                                    "string"
 171                                                ]
 172                                            }
 173                                        ]
 174                                    },
 175                                    "type": "array"
 176                                }
 177                            ],
 178                            "description": "Converter that should be used on sent objects. Defaults to None."
 179                        },
 180                        "transform": {
 181                            "anyOf": [
 182                                {
 183                                    "$ref": "#/definitions/transform"
 184                                },
 185                                {
 186                                    "type": [
 187                                        "function",
 188                                        "string"
 189                                    ]
 190                                },
 191                                {
 192                                    "items": {
 193                                        "anyOf": [
 194                                            {
 195                                                "$ref": "#/definitions/transform"
 196                                            },
 197                                            {
 198                                                "type": [
 199                                                    "function",
 200                                                    "string"
 201                                                ]
 202                                            }
 203                                        ]
 204                                    },
 205                                    "type": "array"
 206                                }
 207                            ],
 208                            "description": "One or more transformations that will be applied to messages that are sent/received. Ignored if not provided."
 209                        },
 210                        "vars": {
 211                            "description": "Names of variables to be sent/received by this comm. Defaults to [].",
 212                            "items": {
 213                                "type": "string"
 214                            },
 215                            "type": "array"
 216                        },
 217                        "client_id": {
 218                            "type": "string"
 219                        },
 220                        "cookies": {
 221                            "description": "Cookies to send to the server. Defaults to None and is ignored.",
 222                            "type": "object"
 223                        },
 224                        "host": {
 225                            "default": "http://localhost:{port}",
 226                            "type": "string"
 227                        },
 228                        "params": {
 229                            "description": "Parameters that should be passed via URL. Defaults to None and is ignored.",
 230                            "type": "object"
 231                        },
 232                        "port": {
 233                            "type": "int"
 234                        },
 235                        "count": {
 236                            "default": 1,
 237                            "type": "integer"
 238                        }
 239                    },
 240                    "required": [
 241                        "commtype",
 242                        "datatype",
 243                        "name"
 244                    ],
 245                    "title": "comm_base",
 246                    "type": "object"
 247                },
 248                {
 249                    "anyOf": [
 250                        {
 251                            "additionalProperties": true,
 252                            "description": "Schema for comm component ['buffer'] subtype.",
 253                            "properties": {
 254                                "commtype": {
 255                                    "default": "default",
 256                                    "description": "Communication mechanism that should be used.",
 257                                    "enum": [
 258                                        "buffer"
 259                                    ],
 260                                    "type": "string"
 261                                }
 262                            },
 263                            "title": "yggdrasil.communication.BufferComm.BufferComm",
 264                            "type": "object"
 265                        },
 266                        {
 267                            "additionalProperties": true,
 268                            "description": "Schema for comm component ['default'] subtype.",
 269                            "properties": {
 270                                "commtype": {
 271                                    "default": "default",
 272                                    "description": "Communication mechanism selected based on the current platform.",
 273                                    "enum": [
 274                                        "default"
 275                                    ],
 276                                    "type": "string"
 277                                }
 278                            },
 279                            "title": "yggdrasil.communication.DefaultComm.DefaultComm",
 280                            "type": "object"
 281                        },
 282                        {
 283                            "additionalProperties": true,
 284                            "description": "Schema for comm component ['ipc'] subtype.",
 285                            "properties": {
 286                                "commtype": {
 287                                    "default": "default",
 288                                    "description": "Interprocess communication (IPC) queue.",
 289                                    "enum": [
 290                                        "ipc"
 291                                    ],
 292                                    "type": "string"
 293                                }
 294                            },
 295                            "title": "yggdrasil.communication.IPCComm.IPCComm",
 296                            "type": "object"
 297                        },
 298                        {
 299                            "additionalProperties": true,
 300                            "description": "Schema for comm component ['mpi'] subtype.",
 301                            "properties": {
 302                                "commtype": {
 303                                    "default": "default",
 304                                    "description": "MPI communicator.",
 305                                    "enum": [
 306                                        "mpi"
 307                                    ],
 308                                    "type": "string"
 309                                }
 310                            },
 311                            "title": "yggdrasil.communication.MPIComm.MPIComm",
 312                            "type": "object"
 313                        },
 314                        {
 315                            "additionalProperties": true,
 316                            "description": "Schema for comm component ['rest'] subtype.",
 317                            "properties": {
 318                                "client_id": {
 319                                    "type": "string"
 320                                },
 321                                "commtype": {
 322                                    "default": "default",
 323                                    "description": "RESTful API.",
 324                                    "enum": [
 325                                        "rest"
 326                                    ],
 327                                    "type": "string"
 328                                },
 329                                "cookies": {
 330                                    "description": "Cookies to send to the server. Defaults to None and is ignored.",
 331                                    "type": "object"
 332                                },
 333                                "host": {
 334                                    "default": "http://localhost:{port}",
 335                                    "type": "string"
 336                                },
 337                                "params": {
 338                                    "description": "Parameters that should be passed via URL. Defaults to None and is ignored.",
 339                                    "type": "object"
 340                                },
 341                                "port": {
 342                                    "type": "int"
 343                                }
 344                            },
 345                            "title": "yggdrasil.communication.RESTComm.RESTComm",
 346                            "type": "object"
 347                        },
 348                        {
 349                            "additionalProperties": true,
 350                            "description": "Schema for comm component ['rmq_async'] subtype.",
 351                            "properties": {
 352                                "commtype": {
 353                                    "default": "default",
 354                                    "description": "Asynchronous RabbitMQ connection.",
 355                                    "enum": [
 356                                        "rmq_async"
 357                                    ],
 358                                    "type": "string"
 359                                }
 360                            },
 361                            "title": "yggdrasil.communication.RMQAsyncComm.RMQAsyncComm",
 362                            "type": "object"
 363                        },
 364                        {
 365                            "additionalProperties": true,
 366                            "description": "Schema for comm component ['rmq'] subtype.",
 367                            "properties": {
 368                                "commtype": {
 369                                    "default": "default",
 370                                    "description": "RabbitMQ connection.",
 371                                    "enum": [
 372                                        "rmq"
 373                                    ],
 374                                    "type": "string"
 375                                }
 376                            },
 377                            "title": "yggdrasil.communication.RMQComm.RMQComm",
 378                            "type": "object"
 379                        },
 380                        {
 381                            "additionalProperties": true,
 382                            "description": "Schema for comm component ['value'] subtype.",
 383                            "properties": {
 384                                "commtype": {
 385                                    "default": "default",
 386                                    "description": "Constant value.",
 387                                    "enum": [
 388                                        "value"
 389                                    ],
 390                                    "type": "string"
 391                                },
 392                                "count": {
 393                                    "default": 1,
 394                                    "type": "integer"
 395                                }
 396                            },
 397                            "title": "yggdrasil.communication.ValueComm.ValueComm",
 398                            "type": "object"
 399                        },
 400                        {
 401                            "additionalProperties": true,
 402                            "description": "Schema for comm component ['zmq'] subtype.",
 403                            "properties": {
 404                                "commtype": {
 405                                    "default": "default",
 406                                    "description": "ZeroMQ socket.",
 407                                    "enum": [
 408                                        "zmq"
 409                                    ],
 410                                    "type": "string"
 411                                }
 412                            },
 413                            "title": "yggdrasil.communication.ZMQComm.ZMQComm",
 414                            "type": "object"
 415                        }
 416                    ]
 417                }
 418            ]
 419        },
 420        "connection": {
 421            "description": "Schema for connection components.",
 422            "title": "connection",
 423            "allOf": [
 424                {
 425                    "additionalProperties": false,
 426                    "dependencies": {
 427                        "driver": [
 428                            "args"
 429                        ]
 430                    },
 431                    "description": "Base schema for all subtypes of connection components.",
 432                    "properties": {
 433                        "args": {
 434                            "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 435                            "type": "string"
 436                        },
 437                        "connection_type": {
 438                            "enum": [
 439                                "connection",
 440                                "file_input",
 441                                "file_output",
 442                                "input",
 443                                "output",
 444                                "rpc_request",
 445                                "rpc_response"
 446                            ],
 447                            "type": "string"
 448                        },
 449                        "driver": {
 450                            "description": "[DEPRECATED] Name of driver class that should be used.",
 451                            "type": "string"
 452                        },
 453                        "inputs": {
 454                            "default": [
 455                                {}
 456                            ],
 457                            "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>`.",
 458                            "items": {
 459                                "anyOf": [
 460                                    {
 461                                        "$ref": "#/definitions/comm"
 462                                    },
 463                                    {
 464                                        "$ref": "#/definitions/file"
 465                                    }
 466                                ]
 467                            },
 468                            "minItems": 1,
 469                            "type": "array"
 470                        },
 471                        "onexit": {
 472                            "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.",
 473                            "type": "string"
 474                        },
 475                        "outputs": {
 476                            "default": [
 477                                {}
 478                            ],
 479                            "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>`.",
 480                            "items": {
 481                                "anyOf": [
 482                                    {
 483                                        "$ref": "#/definitions/comm"
 484                                    },
 485                                    {
 486                                        "$ref": "#/definitions/file"
 487                                    }
 488                                ]
 489                            },
 490                            "minItems": 1,
 491                            "type": "array"
 492                        },
 493                        "translator": {
 494                            "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.",
 495                            "items": {
 496                                "oneOf": [
 497                                    {
 498                                        "type": "function"
 499                                    },
 500                                    {
 501                                        "$ref": "#/definitions/transform"
 502                                    }
 503                                ]
 504                            },
 505                            "type": "array"
 506                        }
 507                    },
 508                    "required": [
 509                        "inputs",
 510                        "outputs"
 511                    ],
 512                    "title": "connection_base",
 513                    "type": "object"
 514                },
 515                {
 516                    "anyOf": [
 517                        {
 518                            "additionalProperties": true,
 519                            "description": "Schema for connection component ['connection'] subtype.",
 520                            "properties": {
 521                                "connection_type": {
 522                                    "description": "Connection between one or more comms/files and one or more comms/files.",
 523                                    "enum": [
 524                                        "connection"
 525                                    ],
 526                                    "type": "string"
 527                                }
 528                            },
 529                            "title": "yggdrasil.drivers.ConnectionDriver.ConnectionDriver",
 530                            "type": "object"
 531                        },
 532                        {
 533                            "additionalProperties": true,
 534                            "description": "Schema for connection component ['file_input'] subtype.",
 535                            "properties": {
 536                                "connection_type": {
 537                                    "description": "Connection between a file and a model.",
 538                                    "enum": [
 539                                        "file_input"
 540                                    ],
 541                                    "type": "string"
 542                                }
 543                            },
 544                            "title": "yggdrasil.drivers.FileInputDriver.FileInputDriver",
 545                            "type": "object"
 546                        },
 547                        {
 548                            "additionalProperties": true,
 549                            "description": "Schema for connection component ['file_output'] subtype.",
 550                            "properties": {
 551                                "connection_type": {
 552                                    "description": "Connection between a model and a file.",
 553                                    "enum": [
 554                                        "file_output"
 555                                    ],
 556                                    "type": "string"
 557                                }
 558                            },
 559                            "title": "yggdrasil.drivers.FileOutputDriver.FileOutputDriver",
 560                            "type": "object"
 561                        },
 562                        {
 563                            "additionalProperties": true,
 564                            "description": "Schema for connection component ['input'] subtype.",
 565                            "properties": {
 566                                "connection_type": {
 567                                    "description": "Connection between one or more comms/files and a model.",
 568                                    "enum": [
 569                                        "input"
 570                                    ],
 571                                    "type": "string"
 572                                }
 573                            },
 574                            "title": "yggdrasil.drivers.InputDriver.InputDriver",
 575                            "type": "object"
 576                        },
 577                        {
 578                            "additionalProperties": true,
 579                            "description": "Schema for connection component ['output'] subtype.",
 580                            "properties": {
 581                                "connection_type": {
 582                                    "description": "Connection between a model and one or more comms/files.",
 583                                    "enum": [
 584                                        "output"
 585                                    ],
 586                                    "type": "string"
 587                                }
 588                            },
 589                            "title": "yggdrasil.drivers.OutputDriver.OutputDriver",
 590                            "type": "object"
 591                        },
 592                        {
 593                            "additionalProperties": true,
 594                            "description": "Schema for connection component ['rpc_request'] subtype.",
 595                            "properties": {
 596                                "connection_type": {
 597                                    "description": "Connection between one or more comms/files and one or more comms/files.",
 598                                    "enum": [
 599                                        "rpc_request"
 600                                    ],
 601                                    "type": "string"
 602                                }
 603                            },
 604                            "title": "yggdrasil.drivers.RPCRequestDriver.RPCRequestDriver",
 605                            "type": "object"
 606                        },
 607                        {
 608                            "additionalProperties": true,
 609                            "description": "Schema for connection component ['rpc_response'] subtype.",
 610                            "properties": {
 611                                "connection_type": {
 612                                    "description": "Connection between one or more comms/files and one or more comms/files.",
 613                                    "enum": [
 614                                        "rpc_response"
 615                                    ],
 616                                    "type": "string"
 617                                }
 618                            },
 619                            "title": "yggdrasil.drivers.RPCResponseDriver.RPCResponseDriver",
 620                            "type": "object"
 621                        }
 622                    ]
 623                }
 624            ]
 625        },
 626        "file": {
 627            "description": "Schema for file components.",
 628            "title": "file",
 629            "allOf": [
 630                {
 631                    "additionalProperties": false,
 632                    "dependencies": {
 633                        "driver": [
 634                            "args"
 635                        ]
 636                    },
 637                    "description": "Base schema for all subtypes of file components.",
 638                    "properties": {
 639                        "address": {
 640                            "description": "Communication info. Default to None and address is taken from the environment variable.",
 641                            "type": "string"
 642                        },
 643                        "append": {
 644                            "default": false,
 645                            "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.",
 646                            "type": "boolean"
 647                        },
 648                        "args": {
 649                            "description": "[DEPRECATED] Arguments that should be provided to the driver.",
 650                            "type": "string"
 651                        },
 652                        "as_array": {
 653                            "default": false,
 654                            "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.",
 655                            "type": "boolean"
 656                        },
 657                        "driver": {
 658                            "description": "[DEPRECATED] Name of driver class that should be used.",
 659                            "type": "string"
 660                        },
 661                        "field_names": {
 662                            "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.",
 663                            "items": {
 664                                "type": "string"
 665                            },
 666                            "type": "array"
 667                        },
 668                        "field_units": {
 669                            "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.",
 670                            "items": {
 671                                "type": "string"
 672                            },
 673                            "type": "array"
 674                        },
 675                        "filetype": {
 676                            "default": "binary",
 677                            "description": "The type of file that will be read from or written to.",
 678                            "enum": [
 679                                "ascii",
 680                                "binary",
 681                                "json",
 682                                "map",
 683                                "mat",
 684                                "netcdf",
 685                                "obj",
 686                                "pandas",
 687                                "pickle",
 688                                "ply",
 689                                "table",
 690                                "wofost",
 691                                "yaml"
 692                            ],
 693                            "type": "string"
 694                        },
 695                        "filter": {
 696                            "$ref": "#/definitions/filter",
 697                            "description": "Filter that will be used to determine when messages should be sent/received. Ignored if not provided."
 698                        },
 699                        "for_service": {
 700                            "default": false,
 701                            "description": "If True, this comm bridges the gap to an integration running as a service, possibly on a remote machine. Defaults to False.",
 702                            "type": "boolean"
 703                        },
 704                        "format_str": {
 705                            "description": "String that should be used to format/parse messages. Default to None.",
 706                            "type": "string"
 707                        },
 708                        "in_temp": {
 709                            "default": false,
 710                            "description": "If True, the path will be considered relative to the platform temporary directory. Defaults to False.",
 711                            "type": "boolean"
 712                        },
 713                        "is_series": {
 714                            "default": false,
 715                            "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.",
 716                            "type": "boolean"
 717                        },
 718                        "length_map": {
 719                            "additionalProperties": {
 720                                "type": "string"
 721                            },
 722                            "description": "Map from pointer variable names to the names of variables where their length will be stored. Defaults to {}.",
 723                            "type": "object"
 724                        },
 725                        "name": {
 726                            "description": "Name used for component in log messages.",
 727                            "type": "string"
 728                        },
 729                        "recv_converter": {
 730                            "anyOf": [
 731                                {
 732                                    "$ref": "#/definitions/transform"
 733                                },
 734                                {
 735                                    "type": [
 736                                        "function",
 737                                        "string"
 738                                    ]
 739                                },
 740                                {
 741                                    "items": {
 742                                        "anyOf": [
 743                                            {
 744                                                "$ref": "#/definitions/transform"
 745                                            },
 746                                            {
 747                                                "type": [
 748                                                    "function",
 749                                                    "string"
 750                                                ]
 751                                            }
 752                                        ]
 753                                    },
 754                                    "type": "array"
 755                                }
 756                            ],
 757                            "description": "Converter that should be used on received objects. Defaults to None."
 758                        },
 759                        "send_converter": {
 760                            "anyOf": [
 761                                {
 762                                    "$ref": "#/definitions/transform"
 763                                },
 764                                {
 765                                    "type": [
 766                                        "function",
 767                                        "string"
 768                                    ]
 769                                },
 770                                {
 771                                    "items": {
 772                                        "anyOf": [
 773                                            {
 774                                                "$ref": "#/definitions/transform"
 775                                            },
 776                                            {
 777                                                "type": [
 778                                                    "function",
 779                                                    "string"
 780                                                ]
 781                                            }
 782                                        ]
 783                                    },
 784                                    "type": "array"
 785                                }
 786                            ],
 787                            "description": "Converter that should be used on sent objects. Defaults to None."
 788                        },
 789                        "transform": {
 790                            "anyOf": [
 791                                {
 792                                    "$ref": "#/definitions/transform"
 793                                },
 794                                {
 795                                    "type": [
 796                                        "function",
 797                                        "string"
 798                                    ]
 799                                },
 800                                {
 801                                    "items": {
 802                                        "anyOf": [
 803                                            {
 804                                                "$ref": "#/definitions/transform"
 805                                            },
 806                                            {
 807                                                "type": [
 808                                                    "function",
 809                                                    "string"
 810                                                ]
 811                                            }
 812                                        ]
 813                                    },
 814                                    "type": "array"
 815                                }
 816                            ],
 817                            "description": "One or more transformations that will be applied to messages that are sent/received. Ignored if not provided."
 818                        },
 819                        "vars": {
 820                            "description": "Names of variables to be sent/received by this comm. Defaults to [].",
 821                            "items": {
 822                                "type": "string"
 823                            },
 824                            "type": "array"
 825                        },
 826                        "wait_for_creation": {
 827                            "default": 0.0,
 828                            "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.",
 829                            "type": "float"
 830                        },
 831                        "working_dir": {
 832                            "description": "Working directory. If not provided, the current working directory is used.",
 833                            "type": "string"
 834                        },
 835                        "comment": {
 836                            "default": "# ",
 837                            "description": "One or more characters indicating a comment. Defaults to '# '.",
 838                            "type": "string"
 839                        },
 840                        "datatype": {
 841                            "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
 842                            "type": "schema"
 843                        },
 844                        "newline": {
 845                            "default": "\n",
 846                            "description": "One or more characters indicating a newline. Defaults to '\\n'.",
 847                            "type": "string"
 848                        },
 849                        "delimiter": {
 850                            "default": "\t",
 851                            "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
 852                            "type": "string"
 853                        },
 854                        "use_astropy": {
 855                            "default": false,
 856                            "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
 857                            "type": "boolean"
 858                        },
 859                        "read_meth": {
 860                            "default": "read",
 861                            "description": "Method that should be used to read data from the file. Defaults to 'read'. Ignored if direction is 'send'.",
 862                            "enum": [
 863                                "read",
 864                                "readline"
 865                            ],
 866                            "type": "string"
 867                        },
 868                        "serializer": {
 869                            "default": {
 870                                "seritype": "direct"
 871                            },
 872                            "description": "Class with serialize and deserialize methods that should be used to process sent and received messages. Defaults to None and is constructed using provided 'serializer_kwargs'.",
 873                            "oneOf": [
 874                                {
 875                                    "$ref": "#/definitions/serializer"
 876                                },
 877                                {
 878                                    "class": "yggdrasil.serialize.SerializeBase:SerializeBase",
 879                                    "type": "instance"
 880                                }
 881                            ]
 882                        },
 883                        "indent": {
 884                            "default": "\t",
 885                            "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
 886                            "type": [
 887                                "string",
 888                                "int"
 889                            ]
 890                        },
 891                        "sort_keys": {
 892                            "default": true,
 893                            "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
 894                            "type": "boolean"
 895                        },
 896                        "read_attributes": {
 897                            "default": false,
 898                            "description": "If True, the attributes are read in as well as the variables. Defaults to False.",
 899                            "type": "boolean"
 900                        },
 901                        "variables": {
 902                            "description": "List of variables to read in. If not provided, all variables will be read.",
 903                            "items": {
 904                                "type": "string"
 905                            },
 906                            "type": "array"
 907                        },
 908                        "version": {
 909                            "default": 1,
 910                            "description": "Version of netCDF format that should be used. Defaults to 1. Options are 1 (classic format) and 2 (64-bit offset format).",
 911                            "enum": [
 912                                1,
 913                                2
 914                            ],
 915                            "type": "integer"
 916                        },
 917                        "no_header": {
 918                            "default": false,
 919                            "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
 920                            "type": "boolean"
 921                        },
 922                        "str_as_bytes": {
 923                            "default": false,
 924                            "description": "If True, strings in columns are read as bytes. Defaults to False.",
 925                            "type": "boolean"
 926                        },
 927                        "default_flow_style": {
 928                            "default": false,
 929                            "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>`_.",
 930                            "type": "boolean"
 931                        },
 932                        "encoding": {
 933                            "default": "utf-8",
 934                            "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
 935                            "type": "string"
 936                        }
 937                    },
 938                    "required": [
 939                        "filetype",
 940                        "name",
 941                        "working_dir"
 942                    ],
 943                    "title": "file_base",
 944                    "type": "object"
 945                },
 946                {
 947                    "anyOf": [
 948                        {
 949                            "additionalProperties": true,
 950                            "description": "Schema for file component ['ascii'] subtype.",
 951                            "properties": {
 952                                "comment": {
 953                                    "default": "# ",
 954                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
 955                                    "type": "string"
 956                                },
 957                                "datatype": {
 958                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
 959                                    "type": "schema"
 960                                },
 961                                "filetype": {
 962                                    "default": "binary",
 963                                    "description": "This file is read/written as encoded text one line at a time.",
 964                                    "enum": [
 965                                        "ascii"
 966                                    ],
 967                                    "type": "string"
 968                                },
 969                                "newline": {
 970                                    "default": "\n",
 971                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
 972                                    "type": "string"
 973                                }
 974                            },
 975                            "title": "yggdrasil.communication.AsciiFileComm.AsciiFileComm",
 976                            "type": "object"
 977                        },
 978                        {
 979                            "additionalProperties": true,
 980                            "description": "Schema for file component ['map'] subtype.",
 981                            "properties": {
 982                                "comment": {
 983                                    "default": "# ",
 984                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
 985                                    "type": "string"
 986                                },
 987                                "datatype": {
 988                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
 989                                    "type": "schema"
 990                                },
 991                                "delimiter": {
 992                                    "default": "\t",
 993                                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
 994                                    "type": "string"
 995                                },
 996                                "filetype": {
 997                                    "default": "binary",
 998                                    "description": "The file contains a key/value mapping with one key/value pair per line and separated by some delimiter.",
 999                                    "enum": [
1000                                        "map"
1001                                    ],
1002                                    "type": "string"
1003                                },
1004                                "newline": {
1005                                    "default": "\n",
1006                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1007                                    "type": "string"
1008                                }
1009                            },
1010                            "title": "yggdrasil.communication.AsciiMapComm.AsciiMapComm",
1011                            "type": "object"
1012                        },
1013                        {
1014                            "additionalProperties": true,
1015                            "description": "Schema for file component ['table'] subtype.",
1016                            "properties": {
1017                                "comment": {
1018                                    "default": "# ",
1019                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1020                                    "type": "string"
1021                                },
1022                                "datatype": {
1023                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1024                                    "type": "schema"
1025                                },
1026                                "delimiter": {
1027                                    "default": "\t",
1028                                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
1029                                    "type": "string"
1030                                },
1031                                "filetype": {
1032                                    "default": "binary",
1033                                    "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.",
1034                                    "enum": [
1035                                        "table"
1036                                    ],
1037                                    "type": "string"
1038                                },
1039                                "newline": {
1040                                    "default": "\n",
1041                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1042                                    "type": "string"
1043                                },
1044                                "use_astropy": {
1045                                    "default": false,
1046                                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
1047                                    "type": "boolean"
1048                                }
1049                            },
1050                            "title": "yggdrasil.communication.AsciiTableComm.AsciiTableComm",
1051                            "type": "object"
1052                        },
1053                        {
1054                            "additionalProperties": true,
1055                            "description": "Schema for file component ['binary'] subtype.",
1056                            "properties": {
1057                                "filetype": {
1058                                    "default": "binary",
1059                                    "description": "The entire file is read/written all at once as bytes.",
1060                                    "enum": [
1061                                        "binary"
1062                                    ],
1063                                    "type": "string"
1064                                },
1065                                "read_meth": {
1066                                    "default": "read",
1067                                    "description": "Method that should be used to read data from the file. Defaults to 'read'. Ignored if direction is 'send'.",
1068                                    "enum": [
1069                                        "read",
1070                                        "readline"
1071                                    ],
1072                                    "type": "string"
1073                                },
1074                                "serializer": {
1075                                    "default": {
1076                                        "seritype": "direct"
1077                                    },
1078                                    "description": "Class with serialize and deserialize methods that should be used to process sent and received messages. Defaults to None and is constructed using provided 'serializer_kwargs'.",
1079                                    "oneOf": [
1080                                        {
1081                                            "$ref": "#/definitions/serializer"
1082                                        },
1083                                        {
1084                                            "class": "yggdrasil.serialize.SerializeBase:SerializeBase",
1085                                            "type": "instance"
1086                                        }
1087                                    ]
1088                                }
1089                            },
1090                            "required": [
1091                                "serializer"
1092                            ],
1093                            "title": "yggdrasil.communication.FileComm.FileComm",
1094                            "type": "object"
1095                        },
1096                        {
1097                            "additionalProperties": true,
1098                            "description": "Schema for file component ['json'] subtype.",
1099                            "properties": {
1100                                "comment": {
1101                                    "default": "# ",
1102                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1103                                    "type": "string"
1104                                },
1105                                "datatype": {
1106                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1107                                    "type": "schema"
1108                                },
1109                                "filetype": {
1110                                    "default": "binary",
1111                                    "description": "The file contains a JSON serialized object.",
1112                                    "enum": [
1113                                        "json"
1114                                    ],
1115                                    "type": "string"
1116                                },
1117                                "indent": {
1118                                    "default": "\t",
1119                                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
1120                                    "type": [
1121                                        "string",
1122                                        "int"
1123                                    ]
1124                                },
1125                                "newline": {
1126                                    "default": "\n",
1127                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1128                                    "type": "string"
1129                                },
1130                                "sort_keys": {
1131                                    "default": true,
1132                                    "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
1133                                    "type": "boolean"
1134                                }
1135                            },
1136                            "title": "yggdrasil.communication.JSONFileComm.JSONFileComm",
1137                            "type": "object"
1138                        },
1139                        {
1140                            "additionalProperties": true,
1141                            "description": "Schema for file component ['mat'] subtype.",
1142                            "properties": {
1143                                "comment": {
1144                                    "default": "# ",
1145                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1146                                    "type": "string"
1147                                },
1148                                "datatype": {
1149                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1150                                    "type": "schema"
1151                                },
1152                                "filetype": {
1153                                    "default": "binary",
1154                                    "description": "The file is a Matlab .mat file containing one or more serialized Matlab variables.",
1155                                    "enum": [
1156                                        "mat"
1157                                    ],
1158                                    "type": "string"
1159                                },
1160                                "newline": {
1161                                    "default": "\n",
1162                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1163                                    "type": "string"
1164                                }
1165                            },
1166                            "title": "yggdrasil.communication.MatFileComm.MatFileComm",
1167                            "type": "object"
1168                        },
1169                        {
1170                            "additionalProperties": true,
1171                            "description": "Schema for file component ['netcdf'] subtype.",
1172                            "properties": {
1173                                "comment": {
1174                                    "default": "# ",
1175                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1176                                    "type": "string"
1177                                },
1178                                "datatype": {
1179                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1180                                    "type": "schema"
1181                                },
1182                                "filetype": {
1183                                    "default": "binary",
1184                                    "description": "The file is read/written as netCDF.",
1185                                    "enum": [
1186                                        "netcdf"
1187                                    ],
1188                                    "type": "string"
1189                                },
1190                                "newline": {
1191                                    "default": "\n",
1192                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1193                                    "type": "string"
1194                                },
1195                                "read_attributes": {
1196                                    "default": false,
1197                                    "description": "If True, the attributes are read in as well as the variables. Defaults to False.",
1198                                    "type": "boolean"
1199                                },
1200                                "variables": {
1201                                    "description": "List of variables to read in. If not provided, all variables will be read.",
1202                                    "items": {
1203                                        "type": "string"
1204                                    },
1205                                    "type": "array"
1206                                },
1207                                "version": {
1208                                    "default": 1,
1209                                    "description": "Version of netCDF format that should be used. Defaults to 1. Options are 1 (classic format) and 2 (64-bit offset format).",
1210                                    "enum": [
1211                                        1,
1212                                        2
1213                                    ],
1214                                    "type": "integer"
1215                                }
1216                            },
1217                            "title": "yggdrasil.communication.NetCDFFileComm.NetCDFFileComm",
1218                            "type": "object"
1219                        },
1220                        {
1221                            "additionalProperties": true,
1222                            "description": "Schema for file component ['obj'] subtype.",
1223                            "properties": {
1224                                "comment": {
1225                                    "default": "# ",
1226                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1227                                    "type": "string"
1228                                },
1229                                "datatype": {
1230                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1231                                    "type": "schema"
1232                                },
1233                                "filetype": {
1234                                    "default": "binary",
1235                                    "description": "The file is in the `Obj <http://paulbourke.net/dataformats/obj/>`_ data format for 3D structures.",
1236                                    "enum": [
1237                                        "obj"
1238                                    ],
1239                                    "type": "string"
1240                                },
1241                                "newline": {
1242                                    "default": "\n",
1243                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1244                                    "type": "string"
1245                                }
1246                            },
1247                            "title": "yggdrasil.communication.ObjFileComm.ObjFileComm",
1248                            "type": "object"
1249                        },
1250                        {
1251                            "additionalProperties": true,
1252                            "description": "Schema for file component ['pandas'] subtype.",
1253                            "properties": {
1254                                "comment": {
1255                                    "default": "# ",
1256                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1257                                    "type": "string"
1258                                },
1259                                "datatype": {
1260                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1261                                    "type": "schema"
1262                                },
1263                                "delimiter": {
1264                                    "default": "\t",
1265                                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
1266                                    "type": "string"
1267                                },
1268                                "filetype": {
1269                                    "default": "binary",
1270                                    "description": "The file is a Pandas frame output as a table.",
1271                                    "enum": [
1272                                        "pandas"
1273                                    ],
1274                                    "type": "string"
1275                                },
1276                                "newline": {
1277                                    "default": "\n",
1278                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1279                                    "type": "string"
1280                                },
1281                                "no_header": {
1282                                    "default": false,
1283                                    "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
1284                                    "type": "boolean"
1285                                },
1286                                "str_as_bytes": {
1287                                    "default": false,
1288                                    "description": "If True, strings in columns are read as bytes. Defaults to False.",
1289                                    "type": "boolean"
1290                                },
1291                                "use_astropy": {
1292                                    "default": false,
1293                                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
1294                                    "type": "boolean"
1295                                }
1296                            },
1297                            "title": "yggdrasil.communication.PandasFileComm.PandasFileComm",
1298                            "type": "object"
1299                        },
1300                        {
1301                            "additionalProperties": true,
1302                            "description": "Schema for file component ['pickle'] subtype.",
1303                            "properties": {
1304                                "comment": {
1305                                    "default": "# ",
1306                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1307                                    "type": "string"
1308                                },
1309                                "datatype": {
1310                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1311                                    "type": "schema"
1312                                },
1313                                "filetype": {
1314                                    "default": "binary",
1315                                    "description": "The file contains one or more pickled Python objects.",
1316                                    "enum": [
1317                                        "pickle"
1318                                    ],
1319                                    "type": "string"
1320                                },
1321                                "newline": {
1322                                    "default": "\n",
1323                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1324                                    "type": "string"
1325                                }
1326                            },
1327                            "title": "yggdrasil.communication.PickleFileComm.PickleFileComm",
1328                            "type": "object"
1329                        },
1330                        {
1331                            "additionalProperties": true,
1332                            "description": "Schema for file component ['ply'] subtype.",
1333                            "properties": {
1334                                "comment": {
1335                                    "default": "# ",
1336                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1337                                    "type": "string"
1338                                },
1339                                "datatype": {
1340                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1341                                    "type": "schema"
1342                                },
1343                                "filetype": {
1344                                    "default": "binary",
1345                                    "description": "The file is in the `Ply <http://paulbourke.net/dataformats/ply/>`_ data format for 3D structures.",
1346                                    "enum": [
1347                                        "ply"
1348                                    ],
1349                                    "type": "string"
1350                                },
1351                                "newline": {
1352                                    "default": "\n",
1353                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1354                                    "type": "string"
1355                                }
1356                            },
1357                            "title": "yggdrasil.communication.PlyFileComm.PlyFileComm",
1358                            "type": "object"
1359                        },
1360                        {
1361                            "additionalProperties": true,
1362                            "description": "Schema for file component ['wofost'] subtype.",
1363                            "properties": {
1364                                "comment": {
1365                                    "default": "# ",
1366                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1367                                    "type": "string"
1368                                },
1369                                "datatype": {
1370                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1371                                    "type": "schema"
1372                                },
1373                                "delimiter": {
1374                                    "default": " = ",
1375                                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
1376                                    "type": "string"
1377                                },
1378                                "filetype": {
1379                                    "default": "binary",
1380                                    "description": "The file is a WOFOST parameter file.",
1381                                    "enum": [
1382                                        "wofost"
1383                                    ],
1384                                    "type": "string"
1385                                },
1386                                "newline": {
1387                                    "default": "\n",
1388                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1389                                    "type": "string"
1390                                }
1391                            },
1392                            "title": "yggdrasil.communication.WOFOSTParamFileComm.WOFOSTParamFileComm",
1393                            "type": "object"
1394                        },
1395                        {
1396                            "additionalProperties": true,
1397                            "description": "Schema for file component ['yaml'] subtype.",
1398                            "properties": {
1399                                "comment": {
1400                                    "default": "# ",
1401                                    "description": "One or more characters indicating a comment. Defaults to '# '.",
1402                                    "type": "string"
1403                                },
1404                                "datatype": {
1405                                    "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
1406                                    "type": "schema"
1407                                },
1408                                "default_flow_style": {
1409                                    "default": false,
1410                                    "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>`_.",
1411                                    "type": "boolean"
1412                                },
1413                                "encoding": {
1414                                    "default": "utf-8",
1415                                    "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
1416                                    "type": "string"
1417                                },
1418                                "filetype": {
1419                                    "default": "binary",
1420                                    "description": "The file contains a YAML serialized object.",
1421                                    "enum": [
1422                                        "yaml"
1423                                    ],
1424                                    "type": "string"
1425                                },
1426                                "indent": {
1427                                    "default": "\t",
1428                                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
1429                                    "type": [
1430                                        "string",
1431                                        "int"
1432                                    ]
1433                                },
1434                                "newline": {
1435                                    "default": "\n",
1436                                    "description": "One or more characters indicating a newline. Defaults to '\\n'.",
1437                                    "type": "string"
1438                                }
1439                            },
1440                            "title": "yggdrasil.communication.YAMLFileComm.YAMLFileComm",
1441                            "type": "object"
1442                        }
1443                    ]
1444                }
1445            ]
1446        },
1447        "filter": {
1448            "description": "Schema for filter components.",
1449            "title": "filter",
1450            "allOf": [
1451                {
1452                    "additionalProperties": false,
1453                    "dependencies": {
1454                        "driver": [
1455                            "args"
1456                        ]
1457                    },
1458                    "description": "Base schema for all subtypes of filter components.",
1459                    "properties": {
1460                        "filtertype": {
1461                            "enum": [
1462                                "direct",
1463                                "function",
1464                                "statement"
1465                            ]
1466                        },
1467                        "initial_state": {
1468                            "description": "Dictionary of initial state variables that should be set when the filter is created.",
1469                            "type": "object"
1470                        },
1471                        "function": {
1472                            "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.",
1473                            "type": "function"
1474                        },
1475                        "statement": {
1476                            "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.",
1477                            "type": "string"
1478                        }
1479                    },
1480                    "title": "filter_base",
1481                    "type": "object"
1482                },
1483                {
1484                    "anyOf": [
1485                        {
1486                            "additionalProperties": true,
1487                            "description": "Schema for filter component ['direct'] subtype.",
1488                            "properties": {
1489                                "filtertype": {
1490                                    "enum": [
1491                                        "direct"
1492                                    ]
1493                                }
1494                            },
1495                            "title": "yggdrasil.communication.filters.DirectFilter.DirectFilter",
1496                            "type": "object"
1497                        },
1498                        {
1499                            "additionalProperties": true,
1500                            "description": "Schema for filter component ['function'] subtype.",
1501                            "properties": {
1502                                "filtertype": {
1503                                    "enum": [
1504                                        "function"
1505                                    ]
1506                                },
1507                                "function": {
1508                                    "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.",
1509                                    "type": "function"
1510                                }
1511                            },
1512                            "required": [
1513                                "function"
1514                            ],
1515                            "title": "yggdrasil.communication.filters.FunctionFilter.FunctionFilter",
1516                            "type": "object"
1517                        },
1518                        {
1519                            "additionalProperties": true,
1520                            "description": "Schema for filter component ['statement'] subtype.",
1521                            "properties": {
1522                                "filtertype": {
1523                                    "enum": [
1524                                        "statement"
1525                                    ]
1526                                },
1527                                "statement": {
1528                                    "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.",
1529                                    "type": "string"
1530                                }
1531                            },
1532                            "required": [
1533                                "statement"
1534                            ],
1535                            "title": "yggdrasil.communication.filters.StatementFilter.StatementFilter",
1536                            "type": "object"
1537                        }
1538                    ]
1539                }
1540            ]
1541        },
1542        "model": {
1543            "description": "Schema for model components.",
1544            "title": "model",
1545            "allOf": [
1546                {
1547                    "additionalProperties": false,
1548                    "dependencies": {
1549                        "driver": [
1550                            "args"
1551                        ]
1552                    },
1553                    "description": "Base schema for all subtypes of model components.",
1554                    "properties": {
1555                        "additional_dependencies": {
1556                            "additionalProperties": {
1557                                "items": {
1558                                    "oneOf": [
1559                                        {
1560                                            "type": "string"
1561                                        },
1562                                        {
1563                                            "additionalProperties": false,
1564                                            "properties": {
1565                                                "arguments": {
1566                                                    "type": "string"
1567                                                },
1568                                                "package": {
1569                                                    "type": "string"
1570                                                },
1571                                                "package_manager": {
1572                                                    "type": "string"
1573                                                }
1574                                            },
1575                                            "required": [
1576                                                "package"
1577                                            ],
1578                                            "type": "object"
1579                                        }
1580                                    ]
1581                                },
1582                                "type": "array"
1583                            },
1584                            "description": "A mapping between languages and lists of packages in those languages that are required by the model.",
1585                            "type": "object"
1586                        },
1587                        "allow_threading": {
1588                            "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.",
1589                            "type": "boolean"
1590                        },
1591                        "args": {
1592                            "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).",
1593                            "items": {
1594                                "minLength": 1,
1595                                "type": "string"
1596                            },
1597                            "type": "array"
1598                        },
1599                        "client_of": {
1600                            "default": [],
1601                            "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.",
1602                            "items": {
1603                                "type": "string"
1604                            },
1605                            "type": "array"
1606                        },
1607                        "contact_email": {
1608                            "description": "Email address that should be used to contact the maintainer of the model. This parameter is only used in the model repository.",
1609                            "type": "string"
1610                        },
1611                        "copies": {
1612                            "default": 1,
1613                            "description": "The number of copies of the model that should be created. Defaults to 1.",
1614                            "minimum": 1,
1615                            "type": "integer"
1616                        },
1617                        "dependencies": {
1618                            "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.",
1619                            "items": {
1620                                "oneOf": [
1621                                    {
1622                                        "type": "string"
1623                                    },
1624                                    {
1625                                        "additionalProperties": false,
1626                                        "properties": {
1627                                            "arguments": {
1628                                                "type": "string"
1629                                            },
1630                                            "package": {
1631                                                "type": "string"
1632                                            },
1633                                            "package_manager": {
1634                                                "type": "string"
1635                                            }
1636                                        },
1637                                        "required": [
1638                                            "package"
1639                                        ],
1640                                        "type": "object"
1641                                    }
1642                                ]
1643                            },
1644                            "type": "array"
1645                        },
1646                        "description": {
1647                            "description": "Description of the model. This parameter is only used in the model repository or when providing the model as a service.",
1648                            "type": "string"
1649                        },
1650                        "driver": {
1651                            "description": "[DEPRECATED] Name of driver class that should be used.",
1652                            "type": "string"
1653                        },
1654                        "env": {
1655                            "additional_properties": {
1656                                "type": "string"
1657                            },
1658                            "default": {},
1659                            "description": "Dictionary of environment variables that should be set when the driver starts. Defaults to {}.",
1660                            "type": "object"
1661                        },
1662                        "function": {
1663                            "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.",
1664                            "type": "string"
1665                        },
1666                        "inputs": {
1667                            "default": [],
1668                            "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>`.",
1669                            "items": {
1670                                "$ref": "#/definitions/comm"
1671                            },
1672                            "type": "array"
1673                        },
1674                        "is_server": {
1675                            "anyOf": [
1676                                {
1677                                    "type": "boolean"
1678                                },
1679                                {
1680                                    "additionalProperties": false,
1681                                    "properties": {
1682                                        "input": {
1683                                            "type": "string"
1684                                        },
1685                                        "output": {
1686                                            "type": "string"
1687                                        }
1688                                    },
1689                                    "type": "object"
1690                                }
1691                            ],
1692                            "default": false,
1693                            "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."
1694                        },
1695                        "iter_function_over": {
1696                            "default": [],
1697                            "description": "Variable(s) that should be received or sent as an array, but iterated over. Defaults to an empty array and is ignored.",
1698                            "items": {
1699                                "type": "string"
1700                            },
1701                            "type": "array"
1702                        },
1703                        "language": {
1704                            "default": "executable",
1705                            "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>`.",
1706                            "enum": [
1707                                "R",
1708                                "c",
1709                                "c++",
1710                                "cmake",
1711                                "cpp",
1712                                "cxx",
1713                                "dummy",
1714                                "executable",
1715                                "fortran",
1716                                "lpy",
1717                                "make",
1718                                "matlab",
1719                                "mpi",
1720                                "osr",
1721                                "python",
1722                                "r",
1723                                "sbml",
1724                                "timesync"
1725                            ],
1726                            "type": "string"
1727                        },
1728                        "logging_level": {
1729                            "default": "",
1730                            "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.",
1731                            "type": "string"
1732                        },
1733                        "name": {
1734                            "description": "Name used for component in log messages.",
1735                            "type": "string"
1736                        },
1737                        "outputs": {
1738                            "default": [],
1739                            "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>`.",
1740                            "items": {
1741                                "$ref": "#/definitions/comm"
1742                            },
1743                            "type": "array"
1744                        },
1745                        "outputs_in_inputs": {
1746                            "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.",
1747                            "type": "boolean"
1748                        },
1749                        "overwrite": {
1750                            "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.",
1751                            "type": "boolean"
1752                        },
1753                        "preserve_cache": {
1754                            "default": false,
1755                            "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.",
1756                            "type": "boolean"
1757                        },
1758                        "products": {
1759                            "default": [],
1760                            "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 [].",
1761                            "items": {
1762                                "type": "string"
1763                            },
1764                            "type": "array"
1765                        },
1766                        "repository_commit": {
1767                            "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.",
1768                            "type": "string"
1769                        },
1770                        "repository_url": {
1771                            "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.",
1772                            "type": "string"
1773                        },
1774                        "source_products": {
1775                            "default": [],
1776                            "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 [].",
1777                            "items": {
1778                                "type": "string"
1779                            },
1780                            "type": "array"
1781                        },
1782                        "strace_flags": {
1783                            "default": [
1784                                "-e",
1785                                "trace=memory"
1786                            ],
1787                            "description": "Flags to pass to strace (or dtrace). Defaults to [].",
1788                            "items": {
1789                                "type": "string"
1790                            },
1791                            "type": "array"
1792                        },
1793                        "timesync": {
1794                            "anyOf": [
1795                                {
1796                                    "type": "boolean"
1797                                },
1798                                {
1799                                    "type": "string"
1800                                },
1801                                {
1802                                    "properties": {
1803                                        "inputs": {
1804                                            "anyOf": [
1805                                                {
1806                                                    "type": "string"
1807                                                },
1808                                                {
1809                                                    "items": {
1810                                                        "type": "string"
1811                                                    },
1812                                                    "type": "array"
1813                                                }
1814                                            ]
1815                                        },
1816                                        "name": {
1817                                            "default": "timesync",
1818                                            "type": "string"
1819                                        },
1820                                        "outputs": {
1821                                            "anyOf": [
1822                                                {
1823                                                    "type": "string"
1824                                                },
1825                                                {
1826                                                    "items": {
1827                                                        "type": "string"
1828                                                    },
1829                                                    "type": "array"
1830                                                }
1831                                            ]
1832                                        }
1833                                    },
1834                                    "required": [
1835                                        "name"
1836                                    ],
1837                                    "type": "object"
1838                                },
1839                                {
1840                                    "items": {
1841                                        "anyOf": [
1842                                            {
1843                                                "type": "string"
1844                                            },
1845                                            {
1846                                                "properties": {
1847                                                    "inputs": {
1848                                                        "anyOf": [
1849                                                            {
1850                                                                "type": "string"
1851                                                            },
1852                                                            {
1853                                                                "items": {
1854                                                                    "type": "string"
1855                                                                },
1856                                                                "type": "array"
1857                                                            }
1858                                                        ]
1859                                                    },
1860                                                    "name": {
1861                                                        "default": "timesync",
1862                                                        "type": "string"
1863                                                    },
1864                                                    "outputs": {
1865                                                        "anyOf": [
1866                                                            {
1867                                                                "type": "string"
1868                                                            },
1869                                                            {
1870                                                                "items": {
1871                                                                    "type": "string"
1872                                                                },
1873                                                                "type": "array"
1874                                                            }
1875                                                        ]
1876                                                    }
1877                                                },
1878                                                "required": [
1879                                                    "name"
1880                                                ],
1881                                                "type": "object"
1882                                            }
1883                                        ]
1884                                    },
1885                                    "type": "array"
1886                                }
1887                            ],
1888                            "default": false,
1889                            "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."
1890                        },
1891                        "valgrind_flags": {
1892                            "default": [
1893                                "--leak-check=full",
1894                                "--show-leak-kinds=all"
1895                            ],
1896                            "description": "Flags to pass to valgrind. Defaults to [].",
1897                            "items": {
1898                                "type": "string"
1899                            },
1900                            "type": "array"
1901                        },
1902                        "validation_command": {
1903                            "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.",
1904                            "type": "string"
1905                        },
1906                        "with_strace": {
1907                            "default": false,
1908                            "description": "If True, the command is run with strace (on Linux) or dtrace (on MacOS). Defaults to False.",
1909                            "type": "boolean"
1910                        },
1911                        "with_valgrind": {
1912                            "default": false,
1913                            "description": "If True, the command is run with valgrind. Defaults to False.",
1914                            "type": "boolean"
1915                        },
1916                        "working_dir": {
1917                            "description": "Working directory. If not provided, the current working directory is used.",
1918                            "type": "string"
1919                        },
1920                        "builddir": {
1921                            "description": "Directory where the build should be saved. Defaults to <sourcedir>/build. It can be relative to working_dir or absolute.",
1922                            "type": "string"
1923                        },
1924                        "buildfile": {
1925                            "type": "string"
1926                        },
1927                        "compiler": {
1928                            "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.",
1929                            "type": "string"
1930                        },
1931                        "compiler_flags": {
1932                            "default": [],
1933                            "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.",
1934                            "items": {
1935                                "type": "string"
1936                            },
1937                            "type": "array"
1938                        },
1939                        "configuration": {
1940                            "default": "Release",
1941                            "description": "Build type/configuration that should be built. Defaults to 'Release'.",
1942                            "type": "string"
1943                        },
1944                        "env_compiler": {
1945                            "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.",
1946                            "type": "string"
1947                        },
1948                        "env_compiler_flags": {
1949                            "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.",
1950                            "type": "string"
1951                        },
1952                        "env_linker": {
1953                            "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.",
1954                            "type": "string"
1955                        },
1956                        "env_linker_flags": {
1957                            "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.",
1958                            "type": "string"
1959                        },
1960                        "linker": {
1961                            "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",
1962                            "type": "string"
1963                        },
1964                        "linker_flags": {
1965                            "default": [],
1966                            "description": "Flags that should be passed to the linker during compilation. If nto 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.",
1967                            "items": {
1968                                "type": "string"
1969                            },
1970                            "type": "array"
1971                        },
1972                        "source_files": {
1973                            "default": [],
1974                            "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).",
1975                            "items": {
1976                                "type": "string"
1977                            },
1978                            "type": "array"
1979                        },
1980                        "sourcedir": {
1981                            "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.",
1982                            "type": "string"
1983                        },
1984                        "target": {
1985                            "description": "Make target that should be built to create the model executable. Defaults to None.",
1986                            "type": "string"
1987                        },
1988                        "target_compiler": {
1989                            "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.",
1990                            "type": "string"
1991                        },
1992                        "target_compiler_flags": {
1993                            "description": "Compilation flags that should be passed to the target language compiler. Defaults to [].",
1994                            "items": {
1995                                "type": "string"
1996                            },
1997                            "type": "array"
1998                        },
1999                        "target_language": {
2000                            "description": "Language that the target is written in. Defaults to None and will be set based on the source files provided.",
2001                            "type": "string"
2002                        },
2003                        "target_linker": {
2004                            "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.",
2005                            "type": "string"
2006                        },
2007                        "target_linker_flags": {
2008                            "description": "Linking flags that should be passed to the target language linker. Defaults to [].",
2009                            "items": {
2010                                "type": "string"
2011                            },
2012                            "type": "array"
2013                        },
2014                        "interpreter": {
2015                            "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.",
2016                            "type": "string"
2017                        },
2018                        "interpreter_flags": {
2019                            "default": [],
2020                            "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.",
2021                            "items": {
2022                                "type": "string"
2023                            },
2024                            "type": "array"
2025                        },
2026                        "skip_interpreter": {
2027                            "default": false,
2028                            "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.",
2029                            "type": "boolean"
2030                        },
2031                        "standard": {
2032                            "default": "f2003",
2033                            "description": "Fortran standard that should be used. Defaults to 'f2003'.",
2034                            "enum": [
2035                                "f2003",
2036                                "f2008"
2037                            ],
2038                            "type": "string"
2039                        },
2040                        "makedir": {
2041                            "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.",
2042                            "type": "string"
2043                        },
2044                        "makefile": {
2045                            "default": "Makefile",
2046                            "description": "Path to make file either absolute, relative to makedir (if provided), or relative to working_dir. Defaults to Makefile.",
2047                            "type": "string"
2048                        },
2049                        "use_symunit": {
2050                            "default": false,
2051                            "description": "If True, input/output variables with units will be represented in Matlab using symunit. Defaults to False.",
2052                            "type": "boolean"
2053                        },
2054                        "copy_xml_to_osr": {
2055                            "default": false,
2056                            "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.",
2057                            "type": "boolean"
2058                        },
2059                        "sync_vars_in": {
2060                            "default": [],
2061                            "description": "Variables that should be synchronized from other models. Defaults to [].",
2062                            "items": {
2063                                "type": "string"
2064                            },
2065                            "type": "array"
2066                        },
2067                        "sync_vars_out": {
2068                            "default": [],
2069                            "description": "Variables that should be synchronized to other models. Defaults to [].",
2070                            "items": {
2071                                "type": "string"
2072                            },
2073                            "type": "array"
2074                        },
2075                        "update_interval": {
2076                            "additionalProperties": {
2077                                "type": "float"
2078                            },
2079                            "default": {
2080                                "timesync": 1.0
2081                            },
2082                            "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.",
2083                            "type": "object"
2084                        },
2085                        "integrator": {
2086                            "default": "cvode",
2087                            "description": "Name of integrator that should be used. Valid options include ['cvode', 'gillespie', 'rk4', 'rk45']. Defaults to 'cvode'.",
2088                            "enum": [
2089                                "cvode",
2090                                "gillespie",
2091                                "rk4",
2092                                "rk45"
2093                            ],
2094                            "type": "string"
2095                        },
2096                        "integrator_settings": {
2097                            "default": {},
2098                            "description": "Settings for the integrator. Defaults to empty dict.",
2099                            "type": "object"
2100                        },
2101                        "only_output_final_step": {
2102                            "default": false,
2103                            "description": "If True, only the final timestep is output. Defaults to False.",
2104                            "type": "boolean"
2105                        },
2106                        "reset": {
2107                            "default": false,
2108                            "description": "If True, the simulation will be reset to it's initial values before each call (including the start time). Defaults to False.",
2109                            "type": "boolean"
2110                        },
2111                        "selections": {
2112                            "default": [],
2113                            "description": "Variables to include in the output. Defaults to None and the time/floating selections will be returned.",
2114                            "items": {
2115                                "type": "string"
2116                            },
2117                            "type": "array"
2118                        },
2119                        "skip_start_time": {
2120                            "default": false,
2121                            "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.",
2122                            "type": "boolean"
2123                        },
2124                        "start_time": {
2125                            "default": 0.0,
2126                            "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.",
2127                            "type": "number"
2128                        },
2129                        "steps": {
2130                            "default": 1,
2131                            "description": "Number of steps that should be output. Defaults to None.",
2132                            "type": "integer"
2133                        },
2134                        "additional_variables": {
2135                            "additionalProperties": {
2136                                "items": {
2137                                    "type": "string"
2138                                },
2139                                "type": "array"
2140                            },
2141                            "default": {},
2142                            "type": "object"
2143                        },
2144                        "aggregation": {
2145                            "anyOf": [
2146                                {
2147                                    "type": "function"
2148                                },
2149                                {
2150                                    "type": "string"
2151                                },
2152                                {
2153                                    "additionalProperties": {
2154                                        "anyOf": [
2155                                            {
2156                                                "type": "function"
2157                                            },
2158                                            {
2159                                                "type": "string"
2160                                            }
2161                                        ]
2162                                    },
2163                                    "type": "object"
2164                                }
2165                            ],
2166                            "default": "mean"
2167                        },
2168                        "interpolation": {
2169                            "anyOf": [
2170                                {
2171                                    "type": "string"
2172                                },
2173                                {
2174                                    "additionalProperties": {
2175                                        "oneOf": [
2176                                            {
2177                                                "type": "string"
2178                                            },
2179                                            {
2180                                                "properties": {
2181                                                    "method": {
2182                                                        "type": "string"
2183                                                    }
2184                                                },
2185                                                "required": [
2186                                                    "method"
2187                                                ],
2188                                                "type": "object"
2189                                            }
2190                                        ]
2191                                    },
2192                                    "type": "object"
2193                                },
2194                                {
2195                                    "properties": {
2196                                        "method": {
2197                                            "type": "string"
2198                                        }
2199                                    },
2200                                    "required": [
2201                                        "method"
2202                                    ],
2203                                    "type": "object"
2204                                }
2205                            ],
2206                            "default": "index"
2207                        },
2208                        "synonyms": {
2209                            "additionalProperties": {
2210                                "additionalProperties": {
2211                                    "anyOf": [
2212                                        {
2213                                            "type": "string"
2214                                        },
2215                                        {
2216                                            "properties": {
2217                                                "alt": {
2218                                                    "anyOf": [
2219                                                        {
2220                                                            "type": "string"
2221                                                        },
2222                                                        {
2223                                                            "items": {
2224                                                                "type": "string"
2225                                                            },
2226                                                            "type": "array"
2227                                                        }
2228                                                    ]
2229                                                },
2230                                                "alt2base": {
2231                                                    "type": "function"
2232                                                },
2233                                                "base2alt": {
2234                                                    "type": "function"
2235                                                }
2236                                            },
2237                                            "required": [
2238                                                "alt",
2239                                                "alt2base",
2240                                                "base2alt"
2241                                            ],
2242                                            "type": "object"
2243                                        }
2244                                    ]
2245                                },
2246                                "type": "object"
2247                            },
2248                            "default": {},
2249                            "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:",
2250                            "type": "object"
2251                        }
2252                    },
2253                    "required": [
2254                        "args",
2255                        "language",
2256                        "name",
2257                        "working_dir"
2258                    ],
2259                    "title": "model_base",
2260                    "type": "object"
2261                },
2262                {
2263                    "anyOf": [
2264                        {
2265                            "additionalProperties": true,
2266                            "description": "Schema for model component ['cmake'] subtype.",
2267                            "properties": {
2268                                "builddir": {
2269                                    "description": "Directory where the build should be saved. Defaults to <sourcedir>/build. It can be relative to working_dir or absolute.",
2270                                    "type": "string"
2271                                },
2272                                "buildfile": {
2273                                    "type": "string"
2274                                },
2275                                "compiler": {
2276                                    "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.",
2277                                    "type": "string"
2278                                },
2279                                "compiler_flags": {
2280                                    "default": [],
2281                                    "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.",
2282                                    "items": {
2283                                        "type": "string"
2284                                    },
2285                                    "type": "array"
2286                                },
2287                                "configuration": {
2288                                    "default": "Release",
2289                                    "description": "Build type/configuration that should be built. Defaults to 'Release'.",
2290                                    "type": "string"
2291                                },
2292                                "env_compiler": {
2293                                    "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.",
2294                                    "type": "string"
2295                                },
2296                                "env_compiler_flags": {
2297                                    "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.",
2298                                    "type": "string"
2299                                },
2300                                "env_linker": {
2301                                    "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.",
2302                                    "type": "string"
2303                                },
2304                                "env_linker_flags": {
2305                                    "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.",
2306                                    "type": "string"
2307                                },
2308                                "language": {
2309                                    "default": "executable",
2310                                    "description": "Model is written in C/C++ and has a CMake build system.",
2311                                    "enum": [
2312                                        "cmake"
2313                                    ],
2314                                    "type": "string"
2315                                },
2316                                "linker": {
2317                                    "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",
2318                                    "type": "string"
2319                                },
2320                                "linker_flags": {
2321                                    "default": [],
2322                                    "description": "Flags that should be passed to the linker during compilation. If nto 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.",
2323                                    "items": {
2324                                        "type": "string"
2325                                    },
2326                                    "type": "array"
2327                                },
2328                                "source_files": {
2329                                    "default": [],
2330                                    "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).",
2331                                    "items": {
2332                                        "type": "string"
2333                                    },
2334                                    "type": "array"
2335                                },
2336                                "sourcedir": {
2337                                    "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.",
2338                                    "type": "string"
2339                                },
2340                                "target": {
2341                                    "description": "Make target that should be built to create the model executable. Defaults to None.",
2342                                    "type": "string"
2343                                },
2344                                "target_compiler": {
2345                                    "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.",
2346                                    "type": "string"
2347                                },
2348                                "target_compiler_flags": {
2349                                    "description": "Compilation flags that should be passed to the target language compiler. Defaults to [].",
2350                                    "items": {
2351                                        "type": "string"
2352                                    },
2353                                    "type": "array"
2354                                },
2355                                "target_language": {
2356                                    "description": "Language that the target is written in. Defaults to None and will be set based on the source files provided.",
2357                                    "type": "string"
2358                                },
2359                                "target_linker": {
2360                                    "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.",
2361                                    "type": "string"
2362                                },
2363                                "target_linker_flags": {
2364                                    "description": "Linking flags that should be passed to the target language linker. Defaults to [].",
2365                                    "items": {
2366                                        "type": "string"
2367                                    },
2368                                    "type": "array"
2369                                }
2370                            },
2371                            "title": "yggdrasil.drivers.CMakeModelDriver.CMakeModelDriver",
2372                            "type": "object"
2373                        },
2374                        {
2375                            "additionalProperties": true,
2376                            "description": "Schema for model component ['c'] subtype.",
2377                            "properties": {
2378                                "compiler": {
2379                                    "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.",
2380                                    "type": "string"
2381                                },
2382                                "compiler_flags": {
2383                                    "default": [],
2384                                    "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.",
2385                                    "items": {
2386                                        "type": "string"
2387                                    },
2388                                    "type": "array"
2389                                },
2390                                "language": {
2391                                    "default": "executable",
2392                                    "description": "Model is written in C.",
2393                                    "enum": [
2394                                        "c"
2395                                    ],
2396                                    "type": "string"
2397                                },
2398                                "linker": {
2399                                    "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",
2400                                    "type": "string"
2401                                },
2402                                "linker_flags": {
2403                                    "default": [],
2404                                    "description": "Flags that should be passed to the linker during compilation. If nto 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.",
2405                                    "items": {
2406                                        "type": "string"
2407                                    },
2408                                    "type": "array"
2409                                },
2410                                "source_files": {
2411                                    "default": [],
2412                                    "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).",
2413                                    "items": {
2414                                        "type": "string"
2415                                    },
2416                                    "type": "array"
2417                                }
2418                            },
2419                            "title": "yggdrasil.drivers.CModelDriver.CModelDriver",
2420                            "type": "object"
2421                        },
2422                        {
2423                            "additionalProperties": true,
2424                            "description": "Schema for model component ['c++', 'cpp', 'cxx'] subtype.",
2425                            "properties": {
2426                                "compiler": {
2427                                    "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.",
2428                                    "type": "string"
2429                                },
2430                                "compiler_flags": {
2431                                    "default": [],
2432                                    "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.",
2433                                    "items": {
2434                                        "type": "string"
2435                                    },
2436                                    "type": "array"
2437                                },
2438                                "language": {
2439                                    "default": "executable",
2440                                    "description": "Model is written in C++.",
2441                                    "enum": [
2442                                        "c++",
2443                                        "cpp",
2444                                        "cxx"
2445                                    ],
2446                                    "type": "string"
2447                                },
2448                                "linker": {
2449                                    "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",
2450                                    "type": "string"
2451                                },
2452                                "linker_flags": {
2453                                    "default": [],
2454                                    "description": "Flags that should be passed to the linker during compilation. If nto 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.",
2455                                    "items": {
2456                                        "type": "string"
2457                                    },
2458                                    "type": "array"
2459                                },
2460                                "source_files": {
2461                                    "default": [],
2462                                    "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).",
2463                                    "items": {
2464                                        "type": "string"
2465                                    },
2466                                    "type": "array"
2467                                }
2468                            },
2469                            "title": "yggdrasil.drivers.CPPModelDriver.CPPModelDriver",
2470                            "type": "object"
2471                        },
2472                        {
2473                            "additionalProperties": true,
2474                            "description": "Schema for model component ['dummy'] subtype.",
2475                            "properties": {
2476                                "interpreter": {
2477                                    "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.",
2478                                    "type": "string"
2479                                },
2480                                "interpreter_flags": {
2481                                    "default": [],
2482                                    "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.",
2483                                    "items": {
2484                                        "type": "string"
2485                                    },
2486                                    "type": "array"
2487                                },
2488                                "language": {
2489                                    "default": "executable",
2490                                    "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>`.",
2491                                    "enum": [
2492                                        "dummy"
2493                                    ],
2494                                    "type": "string"
2495                                },
2496                                "skip_interpreter": {
2497                                    "default": false,
2498                                    "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.",
2499                                    "type": "boolean"
2500                                }
2501                            },
2502                            "title": "yggdrasil.drivers.DummyModelDriver.DummyModelDriver",
2503                            "type": "object"
2504                        },
2505                        {
2506                            "additionalProperties": true,
2507                            "description": "Schema for model component ['executable'] subtype.",
2508                            "properties": {
2509                                "language": {
2510                                    "default": "executable",
2511                                    "description": "Model is an executable.",
2512                                    "enum": [
2513                                        "executable"
2514                                    ],
2515                                    "type": "string"
2516                                }
2517                            },
2518                            "title": "yggdrasil.drivers.ExecutableModelDriver.ExecutableModelDriver",
2519                            "type": "object"
2520                        },
2521                        {
2522                            "additionalProperties": true,
2523                            "description": "Schema for model component ['fortran'] subtype.",
2524                            "properties": {
2525                                "compiler": {
2526                                    "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.",
2527                                    "type": "string"
2528                                },
2529                                "compiler_flags": {
2530                                    "default": [],
2531                                    "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.",
2532                                    "items": {
2533                                        "type": "string"
2534                                    },
2535                                    "type": "array"
2536                                },
2537                                "language": {
2538                                    "default": "executable",
2539                                    "description": "Model is written in Fortran.",
2540                                    "enum": [
2541                                        "fortran"
2542                                    ],
2543                                    "type": "string"
2544                                },
2545                                "linker": {
2546                                    "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",
2547                                    "type": "string"
2548                                },
2549                                "linker_flags": {
2550                                    "default": [],
2551                                    "description": "Flags that should be passed to the linker during compilation. If nto 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.",
2552                                    "items": {
2553                                        "type": "string"
2554                                    },
2555                                    "type": "array"
2556                                },
2557                                "source_files": {
2558                                    "default": [],
2559                                    "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).",
2560                                    "items": {
2561                                        "type": "string"
2562                                    },
2563                                    "type": "array"
2564                                },
2565                                "standard": {
2566                                    "default": "f2003",
2567                                    "description": "Fortran standard that should be used. Defaults to 'f2003'.",
2568                                    "enum": [
2569                                        "f2003",
2570                                        "f2008"
2571                                    ],
2572                                    "type": "string"
2573                                }
2574                            },
2575                            "title": "yggdrasil.drivers.FortranModelDriver.FortranModelDriver",
2576                            "type": "object"
2577                        },
2578                        {
2579                            "additionalProperties": true,
2580                            "description": "Schema for model component ['lpy'] subtype.",
2581                            "properties": {
2582                                "interpreter": {
2583                                    "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.",
2584                                    "type": "string"
2585                                },
2586                                "interpreter_flags": {
2587                                    "default": [],
2588                                    "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.",
2589                                    "items": {
2590                                        "type": "string"
2591                                    },
2592                                    "type": "array"
2593                                },
2594                                "language": {
2595                                    "default": "executable",
2596                                    "description": "Model is an LPy system.",
2597                                    "enum": [
2598                                        "lpy"
2599                                    ],
2600                                    "type": "string"
2601                                },
2602                                "skip_interpreter": {
2603                                    "default": false,
2604                                    "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.",
2605                                    "type": "boolean"
2606                                }
2607                            },
2608                            "title": "yggdrasil.drivers.LPyModelDriver.LPyModelDriver",
2609                            "type": "object"
2610                        },
2611                        {
2612                            "additionalProperties": true,
2613                            "description": "Schema for model component ['mpi'] subtype.",
2614                            "properties": {
2615                                "language": {
2616                                    "default": "executable",
2617                                    "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.",
2618                                    "enum": [
2619                                        "mpi"
2620                                    ],
2621                                    "type": "string"
2622                                }
2623                            },
2624                            "title": "yggdrasil.drivers.MPIPartnerModel.MPIPartnerModel",
2625                            "type": "object"
2626                        },
2627                        {
2628                            "additionalProperties": true,
2629                            "description": "Schema for model component ['make'] subtype.",
2630                            "properties": {
2631                                "builddir": {
2632                                    "type": "string"
2633                                },
2634                                "buildfile": {
2635                                    "type": "string"
2636                                },
2637                                "compiler": {
2638                                    "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.",
2639                                    "type": "string"
2640                                },
2641                                "compiler_flags": {
2642                                    "default": [],
2643                                    "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.",
2644                                    "items": {
2645                                        "type": "string"
2646                                    },
2647                                    "type": "array"
2648                                },
2649                                "env_compiler": {
2650                                    "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.",
2651                                    "type": "string"
2652                                },
2653                                "env_compiler_flags": {
2654                                    "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.",
2655                                    "type": "string"
2656                                },
2657                                "env_linker": {
2658                                    "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.",
2659                                    "type": "string"
2660                                },
2661                                "env_linker_flags": {
2662                                    "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.",
2663                                    "type": "string"
2664                                },
2665                                "language": {
2666                                    "default": "executable",
2667                                    "description": "Model is written in C/C++ and has a Makefile for compilation.",
2668                                    "enum": [
2669                                        "make"
2670                                    ],
2671                                    "type": "string"
2672                                },
2673                                "linker": {
2674                                    "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",
2675                                    "type": "string"
2676                                },
2677                                "linker_flags": {
2678                                    "default": [],
2679                                    "description": "Flags that should be passed to the linker during compilation. If nto 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.",
2680                                    "items": {
2681                                        "type": "string"
2682                                    },
2683                                    "type": "array"
2684                                },
2685                                "makedir": {
2686                                    "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.",
2687                                    "type": "string"
2688                                },
2689                                "makefile": {
2690                                    "default": "Makefile",
2691                                    "description": "Path to make file either absolute, relative to makedir (if provided), or relative to working_dir. Defaults to Makefile.",
2692                                    "type": "string"
2693                                },
2694                                "source_files": {
2695                                    "default": [],
2696                                    "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).",
2697                                    "items": {
2698                                        "type": "string"
2699                                    },
2700                                    "type": "array"
2701                                },
2702                                "target": {
2703                                    "description": "Make target that should be built to create the model executable. Defaults to None.",
2704                                    "type": "string"
2705                                },
2706                                "target_compiler": {
2707                                    "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.",
2708                                    "type": "string"
2709                                },
2710                                "target_compiler_flags": {
2711                                    "description": "Compilation flags that should be passed to the target language compiler. Defaults to [].",
2712                                    "items": {
2713                                        "type": "string"
2714                                    },
2715                                    "type": "array"
2716                                },
2717                                "target_language": {
2718                                    "description": "Language that the target is written in. Defaults to None and will be set based on the source files provided.",
2719                                    "type": "string"
2720                                },
2721                                "target_linker": {
2722                                    "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.",
2723                                    "type": "string"
2724                                },
2725                                "target_linker_flags": {
2726                                    "description": "Linking flags that should be passed to the target language linker. Defaults to [].",
2727                                    "items": {
2728                                        "type": "string"
2729                                    },
2730                                    "type": "array"
2731                                }
2732                            },
2733                            "title": "yggdrasil.drivers.MakeModelDriver.MakeModelDriver",
2734                            "type": "object"
2735                        },
2736                        {
2737                            "additionalProperties": true,
2738                            "description": "Schema for model component ['matlab'] subtype.",
2739                            "properties": {
2740                                "interpreter": {
2741                                    "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.",
2742                                    "type": "string"
2743                                },
2744                                "interpreter_flags": {
2745                                    "default": [],
2746                                    "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.",
2747                                    "items": {
2748                                        "type": "string"
2749                                    },
2750                                    "type": "array"
2751                                },
2752                                "language": {
2753                                    "default": "executable",
2754                                    "description": "Model is written in Matlab.",
2755                                    "enum": [
2756                                        "matlab"
2757                                    ],
2758                                    "type": "string"
2759                                },
2760                                "skip_interpreter": {
2761                                    "default": false,
2762                                    "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.",
2763                                    "type": "boolean"
2764                                },
2765                                "use_symunit": {
2766                                    "default": false,
2767                                    "description": "If True, input/output variables with units will be represented in Matlab using symunit. Defaults to False.",
2768                                    "type": "boolean"
2769                                }
2770                            },
2771                            "title": "yggdrasil.drivers.MatlabModelDriver.MatlabModelDriver",
2772                            "type": "object"
2773                        },
2774                        {
2775                            "additionalProperties": true,
2776                            "description": "Schema for model component ['osr'] subtype.",
2777                            "properties": {
2778                                "copy_xml_to_osr": {
2779                                    "default": false,
2780                                    "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.",
2781                                    "type": "boolean"
2782                                },
2783                                "language": {
2784                                    "default": "executable",
2785                                    "description": "Model is an OSR model.",
2786                                    "enum": [
2787                                        "osr"
2788                                    ],
2789                                    "type": "string"
2790                                },
2791                                "sync_vars_in": {
2792                                    "default": [],
2793                                    "description": "Variables that should be synchronized from other models. Defaults to [].",
2794                                    "items": {
2795                                        "type": "string"
2796                                    },
2797                                    "type": "array"
2798                                },
2799                                "sync_vars_out": {
2800                                    "default": [],
2801                                    "description": "Variables that should be synchronized to other models. Defaults to [].",
2802                                    "items": {
2803                                        "type": "string"
2804                                    },
2805                                    "type": "array"
2806                                },
2807                                "update_interval": {
2808                                    "additionalProperties": {
2809                                        "type": "float"
2810                                    },
2811                                    "default": {
2812                                        "timesync": 1.0
2813                                    },
2814                                    "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.",
2815                                    "type": "object"
2816                                }
2817                            },
2818                            "title": "yggdrasil.drivers.OSRModelDriver.OSRModelDriver",
2819                            "type": "object"
2820                        },
2821                        {
2822                            "additionalProperties": true,
2823                            "description": "Schema for model component ['python'] subtype.",
2824                            "properties": {
2825                                "interpreter": {
2826                                    "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.",
2827                                    "type": "string"
2828                                },
2829                                "interpreter_flags": {
2830                                    "default": [],
2831                                    "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.",
2832                                    "items": {
2833                                        "type": "string"
2834                                    },
2835                                    "type": "array"
2836                                },
2837                                "language": {
2838                                    "default": "executable",
2839                                    "description": "Model is written in Python.",
2840                                    "enum": [
2841                                        "python"
2842                                    ],
2843                                    "type": "string"
2844                                },
2845                                "skip_interpreter": {
2846                                    "default": false,
2847                                    "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.",
2848                                    "type": "boolean"
2849                                }
2850                            },
2851                            "title": "yggdrasil.drivers.PythonModelDriver.PythonModelDriver",
2852                            "type": "object"
2853                        },
2854                        {
2855                            "additionalProperties": true,
2856                            "description": "Schema for model component ['R', 'r'] subtype.",
2857                            "properties": {
2858                                "interpreter": {
2859                                    "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.",
2860                                    "type": "string"
2861                                },
2862                                "interpreter_flags": {
2863                                    "default": [],
2864                                    "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.",
2865                                    "items": {
2866                                        "type": "string"
2867                                    },
2868                                    "type": "array"
2869                                },
2870                                "language": {
2871                                    "default": "executable",
2872                                    "description": "Model is written in R.",
2873                                    "enum": [
2874                                        "R",
2875                                        "r"
2876                                    ],
2877                                    "type": "string"
2878                                },
2879                                "skip_interpreter": {
2880                                    "default": false,
2881                                    "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.",
2882                                    "type": "boolean"
2883                                }
2884                            },
2885                            "title": "yggdrasil.drivers.RModelDriver.RModelDriver",
2886                            "type": "object"
2887                        },
2888                        {
2889                            "additionalProperties": true,
2890                            "description": "Schema for model component ['sbml'] subtype.",
2891                            "properties": {
2892                                "integrator": {
2893                                    "default": "cvode",
2894                                    "description": "Name of integrator that should be used. Valid options include ['cvode', 'gillespie', 'rk4', 'rk45']. Defaults to 'cvode'.",
2895                                    "enum": [
2896                                        "cvode",
2897                                        "gillespie",
2898                                        "rk4",
2899                                        "rk45"
2900                                    ],
2901                                    "type": "string"
2902                                },
2903                                "integrator_settings": {
2904                                    "default": {},
2905                                    "description": "Settings for the integrator. Defaults to empty dict.",
2906                                    "type": "object"
2907                                },
2908                                "interpreter": {
2909                                    "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.",
2910                                    "type": "string"
2911                                },
2912                                "interpreter_flags": {
2913                                    "default": [],
2914                                    "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.",
2915                                    "items": {
2916                                        "type": "string"
2917                                    },
2918                                    "type": "array"
2919                                },
2920                                "language": {
2921                                    "default": "executable",
2922                                    "description": "Model is an SBML model.",
2923                                    "enum": [
2924                                        "sbml"
2925                                    ],
2926                                    "type": "string"
2927                                },
2928                                "only_output_final_step": {
2929                                    "default": false,
2930                                    "description": "If True, only the final timestep is output. Defaults to False.",
2931                                    "type": "boolean"
2932                                },
2933                                "reset": {
2934                                    "default": false,
2935                                    "description": "If True, the simulation will be reset to it's initial values before each call (including the start time). Defaults to False.",
2936                                    "type": "boolean"
2937                                },
2938                                "selections": {
2939                                    "default": [],
2940                                    "description": "Variables to include in the output. Defaults to None and the time/floating selections will be returned.",
2941                                    "items": {
2942                                        "type": "string"
2943                                    },
2944                                    "type": "array"
2945                                },
2946                                "skip_interpreter": {
2947                                    "default": false,
2948                                    "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.",
2949                                    "type": "boolean"
2950                                },
2951                                "skip_start_time": {
2952                                    "default": false,
2953                                    "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.",
2954                                    "type": "boolean"
2955                                },
2956                                "start_time": {
2957                                    "default": 0.0,
2958                                    "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.",
2959                                    "type": "number"
2960                                },
2961                                "steps": {
2962                                    "default": 1,
2963                                    "description": "Number of steps that should be output. Defaults to None.",
2964                                    "type": "integer"
2965                                }
2966                            },
2967                            "title": "yggdrasil.drivers.SBMLModelDriver.SBMLModelDriver",
2968                            "type": "object"
2969                        },
2970                        {
2971                            "additionalProperties": true,
2972                            "description": "Schema for model component ['timesync'] subtype.",
2973                            "properties": {
2974                                "additional_variables": {
2975                                    "additionalProperties": {
2976                                        "items": {
2977                                            "type": "string"
2978                                        },
2979                                        "type": "array"
2980                                    },
2981                                    "default": {},
2982                                    "type": "object"
2983                                },
2984                                "aggregation": {
2985                                    "anyOf": [
2986                                        {
2987                                            "type": "function"
2988                                        },
2989                                        {
2990                                            "type": "string"
2991                                        },
2992                                        {
2993                                            "additionalProperties": {
2994                                                "anyOf": [
2995                                                    {
2996                                                        "type": "function"
2997                                                    },
2998                                                    {
2999                                                        "type": "string"
3000                                                    }
3001                                                ]
3002                                            },
3003                                            "type": "object"
3004                                        }
3005                                    ],
3006                                    "default": "mean"
3007                                },
3008                                "interpolation": {
3009                                    "anyOf": [
3010                                        {
3011                                            "type": "string"
3012                                        },
3013                                        {
3014                                            "additionalProperties": {
3015                                                "oneOf": [
3016                                                    {
3017                                                        "type": "string"
3018                                                    },
3019                                                    {
3020                                                        "properties": {
3021                                                            "method": {
3022                                                                "type": "string"
3023                                                            }
3024                                                        },
3025                                                        "required": [
3026                                                            "method"
3027                                                        ],
3028                                                        "type": "object"
3029                                                    }
3030                                                ]
3031                                            },
3032                                            "type": "object"
3033                                        },
3034                                        {
3035                                            "properties": {
3036                                                "method": {
3037                                                    "type": "string"
3038                                                }
3039                                            },
3040                                            "required": [
3041                                                "method"
3042                                            ],
3043                                            "type": "object"
3044                                        }
3045                                    ],
3046                                    "default": "index"
3047                                },
3048                                "interpreter": {
3049                                    "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.",
3050                                    "type": "string"
3051                                },
3052                                "interpreter_flags": {
3053                                    "default": [],
3054                                    "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.",
3055                                    "items": {
3056                                        "type": "string"
3057                                    },
3058                                    "type": "array"
3059                                },
3060                                "language": {
3061                                    "default": "executable",
3062                                    "description": "Model is dedicated to synchronizingtimesteps between other models.",
3063                                    "enum": [
3064                                        "timesync"
3065                                    ],
3066                                    "type": "string"
3067                                },
3068                                "skip_interpreter": {
3069                                    "default": false,
3070                                    "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.",
3071                                    "type": "boolean"
3072                                },
3073                                "synonyms": {
3074                                    "additionalProperties": {
3075                                        "additionalProperties": {
3076                                            "anyOf": [
3077                                                {
3078                                                    "type": "string"
3079                                                },
3080                                                {
3081                                                    "properties": {
3082                                                        "alt": {
3083                                                            "anyOf": [
3084                                                                {
3085                                                                    "type": "string"
3086                                                                },
3087                                                                {
3088                                                                    "items": {
3089                                                                        "type": "string"
3090                                                                    },
3091                                                                    "type": "array"
3092                                                                }
3093                                                            ]
3094                                                        },
3095                                                        "alt2base": {
3096                                                            "type": "function"
3097                                                        },
3098                                                        "base2alt": {
3099                                                            "type": "function"
3100                                                        }
3101                                                    },
3102                                                    "required": [
3103                                                        "alt",
3104                                                        "alt2base",
3105                                                        "base2alt"
3106                                                    ],
3107                                                    "type": "object"
3108                                                }
3109                                            ]
3110                                        },
3111                                        "type": "object"
3112                                    },
3113                                    "default": {},
3114                                    "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:",
3115                                    "type": "object"
3116                                }
3117                            },
3118                            "title": "yggdrasil.drivers.TimeSyncModelDriver.TimeSyncModelDriver",
3119                            "type": "object"
3120                        }
3121                    ]
3122                }
3123            ]
3124        },
3125        "serializer": {
3126            "description": "Schema for serializer components.",
3127            "title": "serializer",
3128            "allOf": [
3129                {
3130                    "additionalProperties": false,
3131                    "dependencies": {
3132                        "driver": [
3133                            "args"
3134                        ]
3135                    },
3136                    "description": "Base schema for all subtypes of serializer components.",
3137                    "properties": {
3138                        "comment": {
3139                            "default": "# ",
3140                            "description": "One or more characters indicating a comment. Defaults to '# '.",
3141                            "type": "string"
3142                        },
3143                        "datatype": {
3144                            "description": "JSON schema defining the type of object that the serializer will be used to serialize/deserialize. Defaults to default_datatype.",
3145                            "type": "schema"
3146                        },
3147                        "newline": {
3148                            "default": "\n",
3149                            "description": "One or more characters indicating a newline. Defaults to '\\n'.",
3150                            "type": "string"
3151                        },
3152                        "seritype": {
3153                            "default": "default",
3154                            "description": "Serializer type.",
3155                            "enum": [
3156                                "default",
3157                                "direct",
3158                                "functional",
3159                                "json",
3160                                "map",
3161                                "mat",
3162                                "obj",
3163                                "pandas",
3164                                "pickle",
3165                                "ply",
3166                                "table",
3167                                "wofost",
3168                                "yaml"
3169                            ],
3170                            "type": "string"
3171                        },
3172                        "delimiter": {
3173                            "default": "\t",
3174                            "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
3175                            "type": "string"
3176                        },
3177                        "as_array": {
3178                            "default": false,
3179                            "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.",
3180                            "type": "boolean"
3181                        },
3182                        "field_names": {
3183                            "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.",
3184                            "items": {
3185                                "type": "string"
3186                            },
3187                            "type": "array"
3188                        },
3189                        "field_units": {
3190                            "description": "The units of fields in the format string. If not provided, all fields are assumed to be dimensionless.",
3191                            "items": {
3192                                "type": "string"
3193                            },
3194                            "type": "array"
3195                        },
3196                        "format_str": {
3197                            "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.",
3198                            "type": "string"
3199                        },
3200                        "use_astropy": {
3201                            "default": false,
3202                            "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
3203                            "type": "boolean"
3204                        },
3205                        "encoded_datatype": {
3206                            "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.",
3207                            "type": "schema"
3208                        },
3209                        "func_deserialize": {
3210                            "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.",
3211                            "type": "function"
3212                        },
3213                        "func_serialize": {
3214                            "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.",
3215                            "type": "function"
3216                        },
3217                        "indent": {
3218                            "default": "\t",
3219                            "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
3220                            "type": [
3221                                "string",
3222                                "int"
3223                            ]
3224                        },
3225                        "sort_keys": {
3226                            "default": true,
3227                            "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
3228                            "type": "boolean"
3229                        },
3230                        "no_header": {
3231                            "default": false,
3232                            "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
3233                            "type": "boolean"
3234                        },
3235                        "str_as_bytes": {
3236                            "default": false,
3237                            "description": "If True, strings in columns are read as bytes. Defaults to False.",
3238                            "type": "boolean"
3239                        },
3240                        "default_flow_style": {
3241                            "default": false,
3242                            "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>`_.",
3243                            "type": "boolean"
3244                        },
3245                        "encoding": {
3246                            "default": "utf-8",
3247                            "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
3248                            "type": "string"
3249                        }
3250                    },
3251                    "title": "serializer_base",
3252                    "type": "object"
3253                },
3254                {
3255                    "anyOf": [
3256                        {
3257                            "additionalProperties": true,
3258                            "description": "Schema for serializer component ['map'] subtype.",
3259                            "properties": {
3260                                "delimiter": {
3261                                    "default": "\t",
3262                                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
3263                                    "type": "string"
3264                                },
3265                                "seritype": {
3266                                    "default": "default",
3267                                    "description": "Serialzation of mapping between key/value pairs with one pair per line and using a character delimiter to separate keys and values.",
3268                                    "enum": [
3269                                        "map"
3270                                    ],
3271                                    "type": "string"
3272                                }
3273                            },
3274                            "title": "yggdrasil.serialize.AsciiMapSerialize.AsciiMapSerialize",
3275                            "type": "object"
3276                        },
3277                        {
3278                            "additionalProperties": true,
3279                            "description": "Schema for serializer component ['table'] subtype.",
3280                            "properties": {
3281                                "as_array": {
3282                                    "default": false,
3283                                    "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.",
3284                                    "type": "boolean"
3285                                },
3286                                "delimiter": {
3287                                    "default": "\t",
3288                                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
3289                                    "type": "string"
3290                                },
3291                                "field_names": {
3292                                    "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.",
3293                                    "items": {
3294                                        "type": "string"
3295                                    },
3296                                    "type": "array"
3297                                },
3298                                "field_units": {
3299                                    "description": "The units of fields in the format string. If not provided, all fields are assumed to be dimensionless.",
3300                                    "items": {
3301                                        "type": "string"
3302                                    },
3303                                    "type": "array"
3304                                },
3305                                "format_str": {
3306                                    "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.",
3307                                    "type": "string"
3308                                },
3309                                "seritype": {
3310                                    "default": "default",
3311                                    "description": "ASCII tab (or otherwise) delimited table.",
3312                                    "enum": [
3313                                        "table"
3314                                    ],
3315                                    "type": "string"
3316                                },
3317                                "use_astropy": {
3318                                    "default": false,
3319                                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
3320                                    "type": "boolean"
3321                                }
3322                            },
3323                            "title": "yggdrasil.serialize.AsciiTableSerialize.AsciiTableSerialize",
3324                            "type": "object"
3325                        },
3326                        {
3327                            "additionalProperties": true,
3328                            "description": "Schema for serializer component ['default'] subtype.",
3329                            "properties": {
3330                                "seritype": {
3331                                    "default": "default",
3332                                    "description": "Default serializer that uses |yggdrasil|'s extended JSON serialization based on a provided type definition (See discussion :ref:`here <serialization_rst>`).",
3333                                    "enum": [
3334                                        "default"
3335                                    ],
3336                                    "type": "string"
3337                                }
3338                            },
3339                            "title": "yggdrasil.serialize.DefaultSerialize.DefaultSerialize",
3340                            "type": "object"
3341                        },
3342                        {
3343                            "additionalProperties": true,
3344                            "description": "Schema for serializer component ['direct'] subtype.",
3345                            "properties": {
3346                                "seritype": {
3347                                    "default": "default",
3348                                    "description": "Direct serialization of bytes.",
3349                                    "enum": [
3350                                        "direct"
3351                                    ],
3352                                    "type": "string"
3353                                }
3354                            },
3355                            "title": "yggdrasil.serialize.DirectSerialize.DirectSerialize",
3356                            "type": "object"
3357                        },
3358                        {
3359                            "additionalProperties": true,
3360                            "description": "Schema for serializer component ['functional'] subtype.",
3361                            "properties": {
3362                                "encoded_datatype": {
3363                                    "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.",
3364                                    "type": "schema"
3365                                },
3366                                "func_deserialize": {
3367                                    "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.",
3368                                    "type": "function"
3369                                },
3370                                "func_serialize": {
3371                                    "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.",
3372                                    "type": "function"
3373                                },
3374                                "seritype": {
3375                                    "default": "default",
3376                                    "description": "Serializer that uses provied function to serialize messages.",
3377                                    "enum": [
3378                                        "functional"
3379                                    ],
3380                                    "type": "string"
3381                                }
3382                            },
3383                            "title": "yggdrasil.serialize.FunctionalSerialize.FunctionalSerialize",
3384                            "type": "object"
3385                        },
3386                        {
3387                            "additionalProperties": true,
3388                            "description": "Schema for serializer component ['json'] subtype.",
3389                            "properties": {
3390                                "indent": {
3391                                    "default": "\t",
3392                                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
3393                                    "type": [
3394                                        "string",
3395                                        "int"
3396                                    ]
3397                                },
3398                                "seritype": {
3399                                    "default": "default",
3400                                    "description": "Serializes Python objects using the JSON standard.",
3401                                    "enum": [
3402                                        "json"
3403                                    ],
3404                                    "type": "string"
3405                                },
3406                                "sort_keys": {
3407                                    "default": true,
3408                                    "description": "If True, the serialization of dictionaries will be in key sorted order. Defaults to True.",
3409                                    "type": "boolean"
3410                                }
3411                            },
3412                            "title": "yggdrasil.serialize.JSONSerialize.JSONSerialize",
3413                            "type": "object"
3414                        },
3415                        {
3416                            "additionalProperties": true,
3417                            "description": "Schema for serializer component ['mat'] subtype.",
3418                            "properties": {
3419                                "seritype": {
3420                                    "default": "default",
3421                                    "description": "Serializes objects using the Matlab .mat format.",
3422                                    "enum": [
3423                                        "mat"
3424                                    ],
3425                                    "type": "string"
3426                                }
3427                            },
3428                            "title": "yggdrasil.serialize.MatSerialize.MatSerialize",
3429                            "type": "object"
3430                        },
3431                        {
3432                            "additionalProperties": true,
3433                            "description": "Schema for serializer component ['obj'] subtype.",
3434                            "properties": {
3435                                "seritype": {
3436                                    "default": "default",
3437                                    "description": "Serialize 3D structures using Obj format.",
3438                                    "enum": [
3439                                        "obj"
3440                                    ],
3441                                    "type": "string"
3442                                }
3443                            },
3444                            "title": "yggdrasil.serialize.ObjSerialize.ObjSerialize",
3445                            "type": "object"
3446                        },
3447                        {
3448                            "additionalProperties": true,
3449                            "description": "Schema for serializer component ['pandas'] subtype.",
3450                            "properties": {
3451                                "delimiter": {
3452                                    "default": "\t",
3453                                    "description": "Character(s) that should be used to separate columns. Defaults to '\\t'.",
3454                                    "type": "string"
3455                                },
3456                                "field_names": {
3457                                    "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.",
3458                                    "items": {
3459                                        "type": "string"
3460                                    },
3461                                    "type": "array"
3462                                },
3463                                "field_units": {
3464                                    "description": "The units of fields in the format string. If not provided, all fields are assumed to be dimensionless.",
3465                                    "items": {
3466                                        "type": "string"
3467                                    },
3468                                    "type": "array"
3469                                },
3470                                "format_str": {
3471                                    "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.",
3472                                    "type": "string"
3473                                },
3474                                "no_header": {
3475                                    "default": false,
3476                                    "description": "If True, headers will not be read or serialized from/to tables. Defaults to False.",
3477                                    "type": "boolean"
3478                                },
3479                                "seritype": {
3480                                    "default": "default",
3481                                    "description": "Serializes tables using the pandas package.",
3482                                    "enum": [
3483                                        "pandas"
3484                                    ],
3485                                    "type": "string"
3486                                },
3487                                "str_as_bytes": {
3488                                    "default": false,
3489                                    "description": "If True, strings in columns are read as bytes. Defaults to False.",
3490                                    "type": "boolean"
3491                                },
3492                                "use_astropy": {
3493                                    "default": false,
3494                                    "description": "If True, the astropy package will be used to serialize/deserialize table. Defaults to False.",
3495                                    "type": "boolean"
3496                                }
3497                            },
3498                            "title": "yggdrasil.serialize.PandasSerialize.PandasSerialize",
3499                            "type": "object"
3500                        },
3501                        {
3502                            "additionalProperties": true,
3503                            "description": "Schema for serializer component ['pickle'] subtype.",
3504                            "properties": {
3505                                "seritype": {
3506                                    "default": "default",
3507                                    "description": "Serialize any Python object using a Python pickle.",
3508                                    "enum": [
3509                                        "pickle"
3510                                    ],
3511                                    "type": "string"
3512                                }
3513                            },
3514                            "title": "yggdrasil.serialize.PickleSerialize.PickleSerialize",
3515                            "type": "object"
3516                        },
3517                        {
3518                            "additionalProperties": true,
3519                            "description": "Schema for serializer component ['ply'] subtype.",
3520                            "properties": {
3521                                "seritype": {
3522                                    "default": "default",
3523                                    "description": "Serialize 3D structures using Ply format.",
3524                                    "enum": [
3525                                        "ply"
3526                                    ],
3527                                    "type": "string"
3528                                }
3529                            },
3530                            "title": "yggdrasil.serialize.PlySerialize.PlySerialize",
3531                            "type": "object"
3532                        },
3533                        {
3534                            "additionalProperties": true,
3535                            "description": "Schema for serializer component ['wofost'] subtype.",
3536                            "properties": {
3537                                "delimiter": {
3538                                    "default": " = ",
3539                                    "description": "Delimiter that should be used to separate name/value pairs in the map. Defaults to \\t.",
3540                                    "type": "string"
3541                                },
3542                                "seritype": {
3543                                    "default": "default",
3544                                    "description": "Serialization of mapping between keys and scalar or array values as used in the WOFOST parameter files.",
3545                                    "enum": [
3546                                        "wofost"
3547                                    ],
3548                                    "type": "string"
3549                                }
3550                            },
3551                            "title": "yggdrasil.serialize.WOFOSTParamSerialize.WOFOSTParamSerialize",
3552                            "type": "object"
3553                        },
3554                        {
3555                            "additionalProperties": true,
3556                            "description": "Schema for serializer component ['yaml'] subtype.",
3557                            "properties": {
3558                                "default_flow_style": {
3559                                    "default": false,
3560                                    "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>`_.",
3561                                    "type": "boolean"
3562                                },
3563                                "encoding": {
3564                                    "default": "utf-8",
3565                                    "description": "Encoding that should be used to serialize the object. Defaults to 'utf-8'.",
3566                                    "type": "string"
3567                                },
3568                                "indent": {
3569                                    "default": "\t",
3570                                    "description": "String or number of spaces that should be used to indent each level within the seiralized structure. Defaults to '\\t'.",
3571                                    "type": [
3572                                        "string",
3573                                        "int"
3574                                    ]
3575                                },
3576                                "seritype": {
3577                                    "default": "default",
3578                                    "description": "Serializes Python objects using the YAML standard.",
3579                                    "enum": [
3580                                        "yaml"
3581                                    ],
3582                                    "type": "string"
3583                                }
3584                            },
3585                            "title": "yggdrasil.serialize.YAMLSerialize.YAMLSerialize",
3586                            "type": "object"
3587                        }
3588                    ]
3589                }
3590            ]
3591        },
3592        "transform": {
3593            "description": "Schema for transform components.",
3594            "title": "transform",
3595            "allOf": [
3596                {
3597                    "additionalProperties": false,
3598                    "dependencies": {
3599                        "driver": [
3600                            "args"
3601                        ]
3602                    },
3603                    "description": "Base schema for all subtypes of transform components.",
3604                    "properties": {
3605                        "initial_state": {
3606                            "description": "Dictionary of initial state variables that should be set when the transform is created.",
3607                            "type": "object"
3608                        },
3609                        "original_datatype": {
3610                            "description": "Datatype associated with expected messages. Defaults to None.",
3611                            "type": "schema"
3612                        },
3613                        "transformtype": {
3614                            "enum": [
3615                                "array",
3616                                "direct",
3617                                "filter",
3618                                "function",
3619                                "iterate",
3620                                "map_fields",
3621                                "pandas",
3622                                "select_fields",
3623                                "statement"
3624                            ]
3625                        },
3626                        "field_names": {
3627                            "items": {
3628                                "type": "string"
3629                            },
3630                            "type": "array"
3631                        },
3632                        "filter": {
3633                            "$ref": "#/definitions/filter"
3634                        },
3635                        "function": {
3636                            "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.",
3637                            "type": "function"
3638                        },
3639                        "map": {
3640                            "additionalProperties": {
3641                                "type": "string"
3642                            },
3643                            "description": "A mapping from original field name to new field names.",
3644                            "type": "object"
3645                        },
3646                        "original_order": {
3647                            "description": "The original order of fields that should be used for selecting from lists/tuples.",
3648                            "items": {
3649                                "type": "string"
3650                            },
3651                            "type": "array"
3652                        },
3653                        "selected": {
3654                            "description": "A list of fields that should be selected.",
3655                            "items": {
3656                                "type": "string"
3657                            },
3658                            "type": "array"
3659                        },
3660                        "single_as_scalar": {
3661                            "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.",
3662                            "type": "boolean"
3663                        },
3664                        "statement": {
3665                            "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.",
3666                            "type": "string"
3667                        }
3668                    },
3669                    "title": "transform_base",
3670                    "type": "object"
3671                },
3672                {
3673                    "anyOf": [
3674                        {
3675                            "additionalProperties": true,
3676                            "description": "Schema for transform component ['array'] subtype.",
3677                            "properties": {
3678                                "field_names": {
3679                                    "items": {
3680                                        "type": "string"
3681                                    },
3682                                    "type": "array"
3683                                },
3684                                "transformtype": {
3685                                    "enum": [
3686                                        "array"
3687                                    ]
3688                                }
3689                            },
3690                            "title": "yggdrasil.communication.transforms.ArrayTransform.ArrayTransform",
3691                            "type": "object"
3692                        },
3693                        {
3694                            "additionalProperties": true,
3695                            "description": "Schema for transform component ['direct'] subtype.",
3696                            "properties": {
3697                                "transformtype": {
3698                                    "enum": [
3699                                        "direct"
3700                                    ]
3701                                }
3702                            },
3703                            "title": "yggdrasil.communication.transforms.DirectTransform.DirectTransform",
3704                            "type": "object"
3705                        },
3706                        {
3707                            "additionalProperties": true,
3708                            "description": "Schema for transform component ['filter'] subtype.",
3709                            "properties": {
3710                                "filter": {
3711                                    "$ref": "#/definitions/filter"
3712                                },
3713                                "transformtype": {
3714                                    "enum": [
3715                                        "filter"
3716                                    ]
3717                                }
3718                            },
3719                            "required": [
3720                                "filter"
3721                            ],
3722                            "title": "yggdrasil.communication.transforms.FilterTransform.FilterTransform",
3723                            "type": "object"
3724                        },
3725                        {
3726                            "additionalProperties": true,
3727                            "description": "Schema for transform component ['function'] subtype.",
3728                            "properties": {
3729                                "function": {
3730                                    "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.",
3731                                    "type": "function"
3732                                },
3733                                "transformtype": {
3734                                    "enum": [
3735                                        "function"
3736                                    ]
3737                                }
3738                            },
3739                            "required": [
3740                                "function"
3741                            ],
3742                            "title": "yggdrasil.communication.transforms.FunctionTransform.FunctionTransform",
3743                            "type": "object"
3744                        },
3745                        {
3746                            "additionalProperties": true,
3747                            "description": "Schema for transform component ['iterate'] subtype.",
3748                            "properties": {
3749                                "transformtype": {
3750                                    "enum": [
3751                                        "iterate"
3752                                    ]
3753                                }
3754                            },
3755                            "title": "yggdrasil.communication.transforms.IterateTransform.IterateTransform",
3756                            "type": "object"
3757                        },
3758                        {
3759                            "additionalProperties": true,
3760                            "description": "Schema for transform component ['map_fields'] subtype.",
3761                            "properties": {
3762                                "map": {
3763                                    "additionalProperties": {
3764                                        "type": "string"
3765                                    },
3766                                    "description": "A mapping from original field name to new field names.",
3767                                    "type": "object"
3768                                },
3769                                "transformtype": {
3770                                    "enum": [
3771                                        "map_fields"
3772                                    ]
3773                                }
3774                            },
3775                            "required": [
3776                                "map"
3777                            ],
3778                            "title": "yggdrasil.communication.transforms.MapFieldsTransform.MapFieldsTransform",
3779                            "type": "object"
3780                        },
3781                        {
3782                            "additionalProperties": true,
3783                            "description": "Schema for transform component ['pandas'] subtype.",
3784                            "properties": {
3785                                "field_names": {
3786                                    "items": {
3787                                        "type": "string"
3788                                    },
3789                                    "type": "array"
3790                                },
3791                                "transformtype": {
3792                                    "enum": [
3793                                        "pandas"
3794                                    ]
3795                                }
3796                            },
3797                            "title": "yggdrasil.communication.transforms.PandasTransform.PandasTransform",
3798                            "type": "object"
3799                        },
3800                        {
3801                            "additionalProperties": true,
3802                            "description": "Schema for transform component ['select_fields'] subtype.",
3803                            "properties": {
3804                                "original_order": {
3805                                    "description": "The original order of fields that should be used for selecting from lists/tuples.",
3806                                    "items": {
3807                                        "type": "string"
3808                                    },
3809                                    "type": "array"
3810                                },
3811                                "selected": {
3812                                    "description": "A list of fields that should be selected.",
3813                                    "items": {
3814                                        "type": "string"
3815                                    },
3816                                    "type": "array"
3817                                },
3818                                "single_as_scalar": {
3819                                    "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.",
3820                                    "type": "boolean"
3821                                },
3822                                "transformtype": {
3823                                    "enum": [
3824                                        "select_fields"
3825                                    ]
3826                                }
3827                            },
3828                            "required": [
3829                                "selected"
3830                            ],
3831                            "title": "yggdrasil.communication.transforms.SelectFieldsTransform.SelectFieldsTransform",
3832                            "type": "object"
3833                        },
3834                        {
3835                            "additionalProperties": true,
3836                            "description": "Schema for transform component ['statement'] subtype.",
3837                            "properties": {
3838                                "statement": {
3839                                    "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.",
3840                                    "type": "string"
3841                                },
3842                                "transformtype": {
3843                                    "enum": [
3844                                        "statement"
3845                                    ]
3846                                }
3847                            },
3848                            "required": [
3849                                "statement"
3850                            ],
3851                            "title": "yggdrasil.communication.transforms.StatementTransform.StatementTransform",
3852                            "type": "object"
3853                        }
3854                    ]
3855                }
3856            ]
3857        }
3858    },
3859    "required": [
3860        "models"
3861    ],
3862    "additionalProperties": false,
3863    "properties": {
3864        "models": {
3865            "type": "array",
3866            "items": {
3867                "$ref": "#/definitions/model"
3868            },
3869            "minItems": 1
3870        },
3871        "connections": {
3872            "type": "array",
3873            "items": {
3874                "$ref": "#/definitions/connection"
3875            }
3876        }
3877    }
3878}

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.