validate

cli.validate

tvbo validate — sub-tree of validators (schema today; OMEX/SED-ML/BIDS later).

Attributes

Name Description
FIGURE_NAME The one naming rule for a rendered display item: fig-<id>_desc-<descriptor>, the identifier the document prints and a camelCase descriptor, so the record, the script that draws it, the image and the caption all carry the same name.
app

Functions

Name Description
all_ Recursively run validate schema on every YAML file under directory matching pattern.
bids Validate a BIDS dataset directory using the bids_validator package.
omex Shallow OMEX check — confirms the archive is a zip with manifest.xml at the root.
schema Validate path against the shipped JSON Schema; auto-detects the target class.
sedml Shallow SED-ML check — confirms the file has a <sedML> root element.
study Check a study dataset against the one layout record.

all_

cli.validate.all_(
    directory=typer.Argument(..., exists=True, file_okay=False, dir_okay=True, readable=True, help='Directory to walk.'),
    pattern=typer.Option('*.yaml', '--pattern', help="Glob pattern, e.g. '*.yml' or '**/*.yaml'."),
    fail_fast=typer.Option(False, '--fail-fast', help='Stop at first failure.'),
)

Recursively run validate schema on every YAML file under directory matching pattern.

bids

cli.validate.bids(
    path=typer.Argument(..., exists=True, file_okay=False, dir_okay=True, readable=True, help='BIDS dataset root.'),
)

Validate a BIDS dataset directory using the bids_validator package.

omex

cli.validate.omex(
    path=typer.Argument(..., exists=True, readable=True, help='OMEX archive (.omex / .zip).'),
)

Shallow OMEX check — confirms the archive is a zip with manifest.xml at the root.

Full COMBINE-archive validation is scheduled for the post-P3 milestone.

schema

cli.validate.schema(
    path=typer.Argument(..., exists=True, readable=True, help='YAML file.'),
    target_class=typer.Option(None, '--class', help="Target class (auto-detected from the file's `tvbo_class:` envelope when omitted)."),
)

Validate path against the shipped JSON Schema; auto-detects the target class.

Uses the lightweight jsonschema library against the pre-generated tvbo/datamodel/tvbo_datamodel.schema.json (produced from the LinkML schema at build time), so validation needs no runtime linkml. The file is parsed with TVBO’s loader so !include/merge-key extensions and slot aliases resolve exactly as they do when the model is loaded.

sedml

cli.validate.sedml(
    path=typer.Argument(..., exists=True, readable=True, help='SED-ML XML file.'),
)

Shallow SED-ML check — confirms the file has a <sedML> root element.

Full L1V4 validation is scheduled for the post-P3 milestone.

study

cli.validate.study(
    path=typer.Argument(Path(), exists=True, file_okay=False, dir_okay=True, readable=True, help='Study dataset root.'),
    template=typer.Option([], '--template', '-t', help='Layout variant the study was built with.'),
)

Check a study dataset against the one layout record.

Three things, none of which any other check catches: the tree matches the record (:mod:tvbo.utils.study_layout), each spec fragment’s BIDS suffix agrees with the class its envelope declares, and its entity values are legal BIDS. Every rule the record generates must still be present in the ignore files; a study may add its own rules and order them as git requires, but silently dropping one of the record’s is reported.