diff --git a/code/_parsers.py b/code/_parsers.py index 8342c9e..44683d3 100644 --- a/code/_parsers.py +++ b/code/_parsers.py @@ -3,7 +3,7 @@ from argparse import ArgumentParser, HelpFormatter from _version import __version__ -from defaults import supported_batches +from defaults import CAT_VERSION, MCR_VERSION, supported_batches def _base_parser( @@ -17,7 +17,11 @@ def _base_parser( "--version", action="version", help="Show program's version number and exit.", - version=__version__, + version=f""" + BIDS app: {__version__}; + CAT12: {CAT_VERSION}; + MATLAB MCR: {MCR_VERSION} +""", ) parser.add_argument( "bids_dir", diff --git a/code/data/methods/template.jinja b/code/data/methods/template.jinja new file mode 100644 index 0000000..bdf1441 --- /dev/null +++ b/code/data/methods/template.jinja @@ -0,0 +1,8 @@ +These results were generated with the BIDS app for Computational Anatomy Toolbox +(BIDS app: {{version}}; CAT12: {{cat_version}}; MATLAB MCR: {{mcr_version}}) + +The following steps were followed. + +1. ... + +2. ... diff --git a/code/defaults.py b/code/defaults.py index f4c7bf2..9e58f1e 100644 --- a/code/defaults.py +++ b/code/defaults.py @@ -2,6 +2,11 @@ from __future__ import annotations +import os + +MCR_VERSION = os.getenv("MCR_VERSION") +CAT_VERSION = " ".join(os.getenv("CAT_VERSION")[1:10].split("_")) + def log_levels() -> list[str]: """Return a list of log levels.""" @@ -16,9 +21,7 @@ def supported_batches() -> list[str]: "segment_long", "segment_enigma", "resample", - "tfce", "get_IQR", - "smooth", "get_TIV", "get_quality", "get_ROI_values", @@ -31,13 +34,13 @@ def supported_batches() -> list[str]: # cat_standalone_segment_long.m # cat_standalone_resample.m -# cat_standalone_tfce.m # cat_standalone_get_IQR.m -# cat_standalone_smooth.m # cat_standalone_get_TIV.m # cat_standalone_get_quality.m # cat_standalone_get_ROI_values.m # WON'T DO +# cat_standalone_smooth.m +# cat_standalone_tfce.m # cat_standalone_dicom2nii.m # cat_standalone_deface.m diff --git a/code/main.py b/code/main.py index cf305d7..04b34ce 100644 --- a/code/main.py +++ b/code/main.py @@ -19,6 +19,7 @@ ) from cat_logging import cat12_log from defaults import log_levels +from methods import generate_method_section from rich import print from rich_argparse import RichHelpFormatter from utils import progress_bar @@ -118,6 +119,8 @@ def main(): logger.info(f"{segment_type=} - using batch {batch}.") + generate_method_section(output_dir=output_dir, batch=batch) + text = "processing subjects" with progress_bar(text=text) as progress: diff --git a/code/methods.py b/code/methods.py new file mode 100644 index 0000000..51f3bdf --- /dev/null +++ b/code/methods.py @@ -0,0 +1,38 @@ +"""Module responsible for generating method section.""" + +from pathlib import Path + +from _version import __version__ +from defaults import CAT_VERSION, MCR_VERSION +from jinja2 import Environment, FileSystemLoader, select_autoescape + + +def generate_method_section( + output_dir: Path, + version: str = __version__, + cat_version: str = CAT_VERSION, + mcr_version: str = MCR_VERSION, + batch: str = None, +) -> None: + """Add a method section to the output dataset.""" + env = Environment( + loader=FileSystemLoader(Path(__file__).parent), + autoescape=select_autoescape(), + lstrip_blocks=True, + trim_blocks=True, + ) + + template = env.get_template("data/methods/template.jinja") + + output_file = output_dir / "logs" / "CITATION.md" + output_file.parent.mkdir(parents=True, exist_ok=True) + + data = { + "version": version, + "cat_version": cat_version, + "mcr_version": mcr_version, + "batch": batch, + } + + with open(output_file, "w") as f: + print(template.render(data=data), file=f) diff --git a/code/requirements.txt b/code/requirements.txt index 32941cd..e7f42b7 100644 --- a/code/requirements.txt +++ b/code/requirements.txt @@ -1,3 +1,4 @@ rich_argparse pybids nibabel +jinja2 diff --git a/makefile b/makefile index e5928e0..dabd18f 100644 --- a/makefile +++ b/makefile @@ -7,6 +7,9 @@ tests/data/MoAEpilot: build: docker build . --tag cat12 +version: + docker run --rm -it cat12 . . participant --version + view: docker run --rm -it cat12 . . participant view tfce --verbose 3