study
cli.study
tvbo study — scaffold and inspect a study dataset.
Two subcommands, both reading the one layout record (schema/study_layout.yaml, see :mod:tvbo.utils.study_layout):
tvbo study init <Name>creates a BIDS study dataset: the directories, the two ignore files derived from the record,dataset_description.jsonfor the study and its derivative, and a seed for every file the record gives a template.-t <variant>adds the entries that variant declares, and swaps in any seed it names in place of the general one, so a replication gets a report about reproducing a paper and every other study does not.tvbo study layoutprints the tree or either ignore file, and--syncrewrites the layout region of a document in place so no document retypes the tree.
Attributes
| Name | Description |
|---|---|
| SLIM_ROLES | What --slim writes, at the study root only: the one specification a run is given, the rules that keep the run’s products out of version control, and the file that makes the directory identifiable as a study. |
| TEMPLATE_DIR | Seeds for the files the record gives a template. |
| app |
Functions
| Name | Description |
|---|---|
| init | Scaffold a BIDS study dataset from the layout record. |
| show_layout | Print part of the layout record, or splice the tree into a document. |
init
cli.study.init(
name=typer.Argument(..., help="Study name; also the dataset name and the entry recipe's stem."),
parent=typer.Option(Path(), '--in', '-C', help='Directory to create the study in.'),
template=typer.Option([], '--template', '-t', help='Study kind to include, one the layout record declares. Repeatable; omit for the general study.'),
force=typer.Option(False, '--force', help='Overwrite files that already exist.'),
slim=typer.Option(False, '--slim/--full', help='`--slim` writes the entry recipe, a `.gitignore` and `dataset_description.json`, and stops. The result is a runnable study, NOT a complete BIDS dataset: `tvbo validate study` will report the documentation a study of record needs and a demonstration does not. For a docs page, a notebook, or anything driven from the Python API. `--full` (default) scaffolds the whole BIDS study dataset.'),
)Scaffold a BIDS study dataset from the layout record.
Every directory, both ignore files and every dataset_description.json are derived from the record, so a study’s shape is never typed out a second time. An empty directory gets a .gitkeep only when it is tracked; an untracked one is left for the run to create.
--template selects a study kind the record declares. A kind both adds entries of its own and may supersede the seed of one every study has, since the same file needs different starting text once the kind is known: with no template the study reports its own results, -t replication adds the scorecard and the copyright-safe figure split a reproduction needs, and -t collection gives a study that nests other studies the document and the results manifest in place of a single report. A name the record does not declare is rejected rather than quietly selecting nothing.
--slim writes only what a human authors (:data:SLIM_ROLES), for a study that demonstrates something rather than being archived.
show_layout
cli.study.show_layout(
what=typer.Argument('tree', help='tree | gitignore | bidsignore'),
study=typer.Option('<Study>', '--study', '-s', help='Study name to interpolate into the layout.'),
template=typer.Option([], '--template', '-t', help='Layout variant to include. Repeatable.'),
sync=typer.Option([], '--sync', help="Rewrite each file's marker-delimited layout region in place instead of printing."),
)Print part of the layout record, or splice the tree into a document.
--sync is how documentation stops restating the layout: a file carrying the layout markers gets the current tree written into them, so a tree in prose can no longer fall behind the record.