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

import typing
import pathlib
from styxdefs import *
import dataclasses

V__DJUNCT_EDGY_ALIGN_CHECK_METADATA = Metadata(
    id="c032b5b574d793a5fef13dcf90b64d32e86d71c1.boutiques",
    name="@djunct_edgy_align_check",
    package="afni",
    container_image_tag="afni/afni_make_build:AFNI_24.2.06",
)


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


def v__djunct_edgy_align_check(
    ulay: str,
    olay: str,
    prefix: str,
    set_dicom_xyz: list[float] | None = None,
    box_focus_slices: str | None = None,
    montgap: float | None = None,
    montcolor: str | None = None,
    cbar: str | None = None,
    save_ftype: str | None = None,
    umin_fac: float | None = None,
    montx: float | None = None,
    monty: float | None = None,
    use_olay_grid: str | None = None,
    label_mode: str | None = None,
    ulay_range: list[float] | None = None,
    ulay_range_nz: list[float] | None = None,
    ulay_range_am: list[float] | None = None,
    runner: Runner | None = None,
) -> VDjunctEdgyAlignCheckOutputs:
    """
    Helper script for various tasks, heavily modeled on RW Cox's '@snapshot_volreg'
    script.
    
    Author: AFNI Team
    
    URL:
    https://afni.nimh.nih.gov/pub/dist/doc/program_help/@djunct_edgy_align_check.html
    
    Args:
        ulay: ULAY dataset.
        olay: OLAY dataset.
        prefix: Prefix for output files.
        set_dicom_xyz: DICOM coordinates {XX YY ZZ}.
        box_focus_slices: Dataset to focus slices.
        montgap: Gap between slices in montage.
        montcolor: Color for montage.
        cbar: Color bar for overlay.
        save_ftype: File type to save.
        umin_fac: Scaling factor for underlay minimum.
        montx: Number of slices in X-direction for montage.
        monty: Number of slices in Y-direction for montage.
        use_olay_grid: Grid interpolation method for overlay.
        label_mode: Mode for labeling.
        ulay_range: Range for underlay {umin umax}.
        ulay_range_nz: Range for non-zero underlay {umin umax}.
        ulay_range_am: Range for auto-mask underlay {umin umax}.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `VDjunctEdgyAlignCheckOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(V__DJUNCT_EDGY_ALIGN_CHECK_METADATA)
    cargs = []
    cargs.append("@djunct_edgy_align_check")
    cargs.append(ulay)
    cargs.append(olay)
    cargs.append(prefix)
    if set_dicom_xyz is not None:
        cargs.extend(map(str, set_dicom_xyz))
    if box_focus_slices is not None:
        cargs.append(box_focus_slices)
    if montgap is not None:
        cargs.append(str(montgap))
    if montcolor is not None:
        cargs.append(montcolor)
    if cbar is not None:
        cargs.append(cbar)
    if save_ftype is not None:
        cargs.append(save_ftype)
    if umin_fac is not None:
        cargs.append(str(umin_fac))
    if montx is not None:
        cargs.append(str(montx))
    if monty is not None:
        cargs.append(str(monty))
    if use_olay_grid is not None:
        cargs.append(use_olay_grid)
    if label_mode is not None:
        cargs.append(label_mode)
    cargs.append("[help_flag]")
    cargs.append("[ver_flag]")
    cargs.append("[echo_flag]")
    cargs.append("[sharpen_ulay_off_flag]")
    cargs.append("[mask_olay_edges_flag]")
    cargs.append("[no_cor_flag]")
    cargs.append("[no_sag_flag]")
    cargs.append("[no_axi_flag]")
    cargs.append("[no_clean_flag]")
    if ulay_range is not None:
        cargs.extend(map(str, ulay_range))
    if ulay_range_nz is not None:
        cargs.extend(map(str, ulay_range_nz))
    if ulay_range_am is not None:
        cargs.extend(map(str, ulay_range_am))
    ret = VDjunctEdgyAlignCheckOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "VDjunctEdgyAlignCheckOutputs",
    "V__DJUNCT_EDGY_ALIGN_CHECK_METADATA",
    "v__djunct_edgy_align_check",
]
