from snakemake.utils import validate, min_version
import pandas as pd

min_version("6.0")

import os

config["samples"] = os.path.join(config["configdir"], config["samples"])
sampledir=os.path.dirname(os.path.abspath(config["samples"]))
config["scpred"]["reference"] = os.path.join(
    config["configdir"], config["scpred"]["reference"]
)
validate(config, schema="schemas/config.schema.yaml")

samples = pd.read_table(config["samples"]).set_index("sample", drop=False)
validate(samples, "schemas/samples.schema.yaml")

rule all:
    input:
        expand(
            [
                "result/{sample}.h5ad",
            ],
            sample=samples["sample"].tolist(),
        ),
        "result/qc_report.html",

include: "rules/common.smk"
include: "rules/soupx.smk"

if not config["dropkick"]["skip"]:
    include: "rules/dropkick.smk"
    include: "rules/h5subset.smk"

include: "rules/filterbycount.smk"
include: "rules/doubletfinder.smk"

if not config["scpred"]["skip"]:
    include: "rules/scpred.smk"

include: "rules/h5seurat2h5ad.smk"
include: "rules/qcreport.smk"
