# QSM-CI end-to-end pipeline — auto-generated by `qsm-ci interface snakemake --pipeline`.
# Put phase/magnitude/mask/params in the working dir, then:  snakemake -c1 chimap.nii.gz
# The rules chain by filename (totalfield -> localfield -> chimap).

rule field_mapping:
    input:
        phase="phase.nii.gz",
        magnitude="magnitude.nii.gz",
        mask="mask.nii.gz",
        params="params.json",
    output:
        totalfield="totalfield.nii.gz",
    params:
        slug="romeo-fieldmap",
    shell:
        "qsm-ci run {params.slug} --phase {input.phase} --magnitude {input.magnitude} --mask {input.mask} --params {input.params} -o {output.totalfield}"

rule bfr:
    input:
        totalfield="totalfield.nii.gz",
        mask="mask.nii.gz",
        params="params.json",
    output:
        localfield="localfield.nii.gz",
    params:
        slug="vsharp",
    shell:
        "qsm-ci run {params.slug} --totalfield {input.totalfield} --mask {input.mask} --params {input.params} -o {output.localfield}"

rule dipole:
    input:
        localfield="localfield.nii.gz",
        mask="mask.nii.gz",
        params="params.json",
    output:
        chimap="chimap.nii.gz",
    params:
        slug="rts",
    shell:
        "qsm-ci run {params.slug} --localfield {input.localfield} --mask {input.mask} --params {input.params} -o {output.chimap}"
