Snakefile "ymp/rules/scnic.rules"

Env(name="scnic", base="bioconda", packages="scnic")

rule scnic_within_minsamp:
    """"""
    message:
         "Building cooccurence modules using SCNIC"
    input:
        biom_table = "{dir}/otu_table.biom"
    wildcard_constraints:
        min_samples = "(s[0-9]+|)",
        min_r = "(r[0-9][0-9])?"
    output:
        modules = "{dir}.SCNIC{min_samples}{min_r}/modules.txt"
    threads:
        8
    conda:
        "scnic"
    params:
        min_samples = lambda wc: wc.min_samples[1:] if wc.min_samples else 0,
        min_r = lambda wc: wc.min_r[1:] if wc.min_r else 35,
        method="sparcc"
    shell: """
    SCNIC_analysis.py within \
    -i {input.biom_table} \
    -o $(dirname {output.modules}) \
    -s {params.min_samples} \
    --min_r 0.{params.min_r} \
    -m {params.method}
    touch {output.modules}
    """


rule scnic_within_sparcc_filter:
    """"""
    message:
         "Building cooccurence modules from {input.biom_table} using SCNIC"
    input:
        biom_table = "{dir}/otu_table.biom"
    wildcard_constraints:
        min_r = "(r[0-9][0-9])?"
    output:
        modules = "{dir}.SCNICsf{min_r}/modules.txt",
        collapsed = "{dir}.SCNICsf{min_r}/collapsed.biom"
    threads:
        8
    conda:
        "scnic"
    params:
        min_r = lambda wc: wc.min_r[1:] if wc.min_r else 35,
        method="sparcc"
    shell: """
    SCNIC_analysis.py within \
    -i {input.biom_table} \
    -o $(dirname {output.modules}) \
    --sparcc_filter \
    --min_r 0.{params.min_r} \
    -m {params.method} \
    --procs {threads}
    touch {output.modules}
    """