# This file was auto generated by Styx.
# Do not edit this file directly.

import typing
import pathlib
from styxdefs import *

GIFTI_ALL_LABELS_TO_ROIS_METADATA = Metadata(
    id="c85f9eb68f2374346bb8a16f7c99697fee1153fa.boutiques",
    name="gifti-all-labels-to-rois",
    package="workbench",
    container_image_tag="brainlife/connectome_workbench:1.5.0-freesurfer-update",
)


GiftiAllLabelsToRoisParameters = typing.TypedDict('GiftiAllLabelsToRoisParameters', {
    "@type": typing.NotRequired[typing.Literal["workbench/gifti-all-labels-to-rois"]],
    "label_in": InputPathType,
    "map": str,
    "metric_out": str,
})
GiftiAllLabelsToRoisParametersTagged = typing.TypedDict('GiftiAllLabelsToRoisParametersTagged', {
    "@type": typing.Literal["workbench/gifti-all-labels-to-rois"],
    "label_in": InputPathType,
    "map": str,
    "metric_out": str,
})


class GiftiAllLabelsToRoisOutputs(typing.NamedTuple):
    """
    Output object returned when calling `GiftiAllLabelsToRoisParameters(...)`.
    """
    root: OutputPathType
    """Output root folder. This is the root folder for all outputs."""
    metric_out: OutputPathType
    """the output metric file"""


def gifti_all_labels_to_rois_params(
    label_in: InputPathType,
    map_: str,
    metric_out: str,
) -> GiftiAllLabelsToRoisParametersTagged:
    """
    Build parameters.
    
    Args:
        label_in: the input gifti label file.
        map_: the number or name of the label map to use.
        metric_out: the output metric file.
    Returns:
        Parameter dictionary
    """
    params = {
        "@type": "workbench/gifti-all-labels-to-rois",
        "label_in": label_in,
        "map": map_,
        "metric_out": metric_out,
    }
    return params


def gifti_all_labels_to_rois_cargs(
    params: GiftiAllLabelsToRoisParameters,
    execution: Execution,
) -> list[str]:
    """
    Build command-line arguments from parameters.
    
    Args:
        params: The parameters.
        execution: The execution object for resolving input paths.
    Returns:
        Command-line arguments.
    """
    cargs = []
    cargs.append("wb_command")
    cargs.append("-gifti-all-labels-to-rois")
    cargs.append(execution.input_file(params.get("label_in", None)))
    cargs.append(params.get("map", None))
    cargs.append(params.get("metric_out", None))
    return cargs


def gifti_all_labels_to_rois_outputs(
    params: GiftiAllLabelsToRoisParameters,
    execution: Execution,
) -> GiftiAllLabelsToRoisOutputs:
    """
    Build outputs object containing output file paths and possibly stdout/stderr.
    
    Args:
        params: The parameters.
        execution: The execution object for resolving input paths.
    Returns:
        Outputs object.
    """
    ret = GiftiAllLabelsToRoisOutputs(
        root=execution.output_file("."),
        metric_out=execution.output_file(params.get("metric_out", None)),
    )
    return ret


def gifti_all_labels_to_rois_execute(
    params: GiftiAllLabelsToRoisParameters,
    runner: Runner | None = None,
) -> GiftiAllLabelsToRoisOutputs:
    """
    gifti-all-labels-to-rois
    
    Make rois from all labels in a gifti column.
    
    The output metric file has a column for each label in the specified input
    map, other than the ??? label, each of which contains an ROI of all vertices
    that are set to the corresponding label.
    
    Author: Connectome Workbench Developers
    
    URL: https://github.com/Washington-University/workbench
    
    Args:
        params: The parameters.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `GiftiAllLabelsToRoisOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(GIFTI_ALL_LABELS_TO_ROIS_METADATA)
    params = execution.params(params)
    cargs = gifti_all_labels_to_rois_cargs(params, execution)
    ret = gifti_all_labels_to_rois_outputs(params, execution)
    execution.run(cargs)
    return ret


def gifti_all_labels_to_rois(
    label_in: InputPathType,
    map_: str,
    metric_out: str,
    runner: Runner | None = None,
) -> GiftiAllLabelsToRoisOutputs:
    """
    gifti-all-labels-to-rois
    
    Make rois from all labels in a gifti column.
    
    The output metric file has a column for each label in the specified input
    map, other than the ??? label, each of which contains an ROI of all vertices
    that are set to the corresponding label.
    
    Author: Connectome Workbench Developers
    
    URL: https://github.com/Washington-University/workbench
    
    Args:
        label_in: the input gifti label file.
        map_: the number or name of the label map to use.
        metric_out: the output metric file.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `GiftiAllLabelsToRoisOutputs`).
    """
    params = gifti_all_labels_to_rois_params(
        label_in=label_in,
        map_=map_,
        metric_out=metric_out,
    )
    return gifti_all_labels_to_rois_execute(params, runner)


__all__ = [
    "GIFTI_ALL_LABELS_TO_ROIS_METADATA",
    "GiftiAllLabelsToRoisOutputs",
    "gifti_all_labels_to_rois",
    "gifti_all_labels_to_rois_execute",
    "gifti_all_labels_to_rois_params",
]
