# ---- begin snakebids boilerplate ----------------------------------------------

from snakebids import bids, generate_inputs, get_wildcard_constraints


configfile: workflow.source_path("../config/snakebids.yml")


# Get input wildcards
inputs = generate_inputs(
    bids_dir=config["bids_dir"],
    pybids_inputs=config["pybids_inputs"],
    pybids_database_dir=config.get("pybids_db_dir"),
    pybids_reset_database=config.get("pybids_db_reset"),
    derivatives=config.get("derivatives", None),
    participant_label=config.get("participant_label", None),
    exclude_participant_label=config.get("exclude_participant_label", None),
)


# this adds constraints to the bids naming
wildcard_constraints:
    **get_wildcard_constraints(config["pybids_inputs"]),


# ---- end snakebids boilerplate ------------------------------------------------


rule gen_fcsv:
    input:
        t1w=inputs["T1w"].path,
        model=config["model"],
    output:
        fcsv=bids(
            root=str(Path(config["output_dir"]) / "afids-cnn"),
            suffix="afids.fcsv",
            **inputs["T1w"].wildcards
        ),
    log:
        bids(
            root="logs",
            suffix="landmark.log",
            **inputs["T1w"].wildcards
        ),
    shell:
        'auto_afids_cnn_apply {input.t1w} {input.model} {output.fcsv}'


rule all:
    input:
        models=inputs["T1w"].expand(
            rules.gen_fcsv.output.fcsv,
        ),
    default_target: True
