Source code for bidsmreye.bidsmreye

#!/usr/bin/env python
"""Main script."""

from __future__ import annotations

import json
import sys
from pathlib import Path

from bidsmreye._version import __version__
from bidsmreye.configuration import Config
from bidsmreye.defaults import default_log_level
from bidsmreye.logger import bidsmreye_log

log = bidsmreye_log(name="bidsmreye")


[docs] def bidsmreye( bids_dir: str, output_dir: str, analysis_level: str, action: str, participant_label: list[str] | None = None, space: list[str] | None = None, task: list[str] | None = None, run: list[str] | None = None, debug: bool | None = None, model_weights_file: str | None = None, reset_database: bool | None = None, bids_filter_file: str | None = None, linear_coreg: bool = False, log_level_name: str | None = None, force: bool = False, ) -> None: bids_filter = None if bids_filter_file is not None and Path(bids_filter_file).is_file(): with open(Path(bids_filter_file)) as f: bids_filter = json.load(f) if reset_database is None: reset_database = False cfg = Config( bids_dir, output_dir, subjects=participant_label or None, space=space or None, task=task or None, run=run or None, debug=debug, model_weights_file=model_weights_file, reset_database=reset_database, bids_filter=bids_filter, linear_coreg=linear_coreg, force=force, ) # type: ignore if log_level_name is None: log_level_name = default_log_level() log.setLevel(log_level_name) print(log_level_name) log.warning( f"log level: {log_level_name}", ) log.info(f"Running bidsmreye version {__version__}") if cfg.debug: log.debug("DEBUG MODE") log.debug(f"Configuration:\n{cfg}") log.debug(f"{analysis_level=} {action=}") if action in {"all", "generalize"} and isinstance(cfg.model_weights_file, str): from bidsmreye.download import download model_output_dir = cfg.output_dir / "models" model_output_dir.mkdir(exist_ok=True, parents=True) cfg.model_weights_file = download( cfg.model_weights_file, output_dir=model_output_dir ) dispatch(analysis_level=analysis_level, action=action, cfg=cfg)
[docs] def dispatch(analysis_level: str, action: str, cfg: Config) -> None: if analysis_level == "group": if action == "qc": from bidsmreye.visualize import group_report group_report(cfg=cfg) else: log.error("Unknown group level action") sys.exit(1) elif analysis_level == "participant": if action == "all": from bidsmreye.generalize import generalize from bidsmreye.prepare_data import prepare_data prepare_data(cfg) generalize(cfg) elif action == "prepare": from bidsmreye.prepare_data import prepare_data prepare_data(cfg) elif action == "generalize": from bidsmreye.generalize import generalize generalize(cfg) elif action == "qc": from bidsmreye.quality_control import quality_control_input quality_control_input(cfg) else: log.error("Unknown participant level action") sys.exit(1)