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

import typing
import pathlib
from styxdefs import *
import dataclasses

MRI_EXTRACT_FCD_FEATURES_METADATA = Metadata(
    id="4dc97ce09339ae602c500d2ce62f291dceb53709.boutiques",
    name="mri_extract_fcd_features",
    package="freesurfer",
    container_image_tag="freesurfer/freesurfer:7.4.1",
)


class MriExtractFcdFeaturesOutputs(typing.NamedTuple):
    """
    Output object returned when calling `mri_extract_fcd_features(...)`.
    """
    root: OutputPathType
    """Output root folder. This is the root folder for all outputs."""


def mri_extract_fcd_features(
    subject: str,
    hemi: str,
    output_file: InputPathType,
    subjects_dir: str | None = None,
    runner: Runner | None = None,
) -> MriExtractFcdFeaturesOutputs:
    """
    A tool for extracting focal cortical dysplasia features.
    
    Author: FreeSurfer Developers
    
    URL: https://github.com/freesurfer/freesurfer
    
    Args:
        subject: The subject identifier.
        hemi: The hemisphere (e.g., lh or rh).
        output_file: Output file path.
        subjects_dir: Specify SUBJECTS_DIR on the command line instead of in\
            the environment.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `MriExtractFcdFeaturesOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(MRI_EXTRACT_FCD_FEATURES_METADATA)
    cargs = []
    cargs.append("mri_extract_fcd_features")
    cargs.append(subject)
    cargs.append(hemi)
    cargs.append(execution.input_file(output_file))
    if subjects_dir is not None:
        cargs.extend([
            "sdir",
            subjects_dir
        ])
    ret = MriExtractFcdFeaturesOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "MRI_EXTRACT_FCD_FEATURES_METADATA",
    "MriExtractFcdFeaturesOutputs",
    "mri_extract_fcd_features",
]
