Skip to content

cli

lacuna.cli

Lacuna CLI module.

This module provides the command-line interface for Lacuna, following the BIDS-Apps specification for neuroimaging pipelines.

Usage: lacuna participant [options]

Example: lacuna /data/bids /output participant --functional-connectome /connectomes/gsp1000.h5

build_parser(prog=None)

Build the main CLI parser with subcommands.

Creates a parser that supports: - lacuna fetch: Download connectomes - lacuna run : Run analyses - lacuna collect: Aggregate results - lacuna info: Show available resources

Parameters:

Name Type Description Default
prog str

Program name for help text. Defaults to 'lacuna'.

None

Returns:

Type Description
ArgumentParser

Configured argument parser with subcommands.

Source code in src/lacuna/cli/parser.py
def build_parser(prog: str | None = None) -> ArgumentParser:
    """
    Build the main CLI parser with subcommands.

    Creates a parser that supports:
    - lacuna fetch: Download connectomes
    - lacuna run <analysis>: Run analyses
    - lacuna collect: Aggregate results
    - lacuna info: Show available resources

    Parameters
    ----------
    prog : str, optional
        Program name for help text. Defaults to 'lacuna'.

    Returns
    -------
    ArgumentParser
        Configured argument parser with subcommands.
    """
    from lacuna import __version__

    # Create main parser
    parser = ArgumentParser(
        prog=prog or "lacuna",
        description=f"Lacuna v{__version__}",
        formatter_class=RawDescriptionHelpFormatter,
        epilog=(
            "Commands:\n"
            "  bidsify    Convert a directory of NIfTI masks into BIDS layout\n"
            "  parcellate Reduce a connectome to a parcel-level connectivity matrix\n"
            "  fetch     Download and setup connectomes for analysis\n"
            "  run       Run lesion analyses\n"
            "  collect   Aggregate results across subjects\n"
            "  info      Display available resources (atlases, connectomes)\n"
            "  tutorial  Setup tutorial data for learning Lacuna\n"
            "  check     Validate inputs and check output completeness\n\n"
            "Examples:\n"
            "  lacuna tutorial ./my_tutorial\n"
            "  lacuna bidsify /raw /bids --space MNI152NLin6Asym\n"
            "  lacuna fetch gsp1000 --api-key \\$DATAVERSE_API_KEY\n"
            "  lacuna run rd /bids /output --parcel-atlases schaefer2018parcels100networks7\n"
            "  lacuna run fnm /bids /output --connectome-path /path/to/gsp1000_batches\n"
            "  lacuna collect /output\n"
            "  lacuna info atlases\n"
        ),
    )

    parser.add_argument(
        "--version",
        action="version",
        version=f"lacuna {__version__}",
    )

    # Create subparsers
    subparsers = parser.add_subparsers(
        dest="command",
        title="commands",
        description="Use 'lacuna <command> --help' for more information.",
        metavar="<command>",
    )

    # Add subcommands
    _build_fetch_parser(subparsers)
    _build_run_parser(subparsers)
    _build_collect_parser(subparsers)
    _build_info_parser(subparsers)
    _build_bidsify_parser(subparsers)
    _build_parcellate_parser(subparsers)
    _build_tutorial_parser(subparsers)
    _build_check_parser(subparsers)

    return parser