#---- 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),
    use_bids_inputs=True,
    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 ------------------------------------------------

include: "rules/process_all_datasets.smk"
include: "rules/train_machine_learning_model.smk"
include: "rules/analyze_all_datasets.smk"

rule all:
    input:
        final=expand(rules.apply_model.output.maps,zip,**inputs['dwi'].input_zip_lists)
    default_target: True
