import logging
import pandas as pd

from snakemake.utils import min_version


min_version("7.31.1")


LOGGER = logging.getLogger("snakemake.logging")


configfile: "config/config.yaml"


pepfile: "pep/config.yaml"


pepschema: "schemas/pep.schema.yaml"


wildcard_constraints:
    lane=r"[^_]+",


include: "rules/common.smk"


rule all:
    input:
        expand(
            "data/count/{reference_id}/adata_star.h5ad",
            reference_id=samples["reference-id"].unique(),
        ),
        expand(
            "data/count/{reference_id}/adata_featurecounts.h5ad",
            reference_id=samples["reference-id"].unique(),
        ),
        expand(
            "data/count/{reference_id}/nt_count_matrix.markdup.csv",
            reference_id=samples["reference-id"].unique(),
        ),
        expand(
            "data/RSeQC/{reference_id}/geneBodyCoverage.tsv",
            reference_id=samples["reference-id"].unique(),
        ),


if len(config["read"]) == 2:

    include: "rules/preprocessing_pe.smk"


include: "rules/preprocessing_se.smk"
include: "rules/make_reference_genome_index.smk"
include: "rules/align.smk"
include: "rules/quant.smk"
include: "rules/nt_counts.smk"
include: "rules/qc.smk"
include: "rules/rseqc.smk"
include: "rules/aggregate_nt_counts.smk"
include: "rules/aggregate_genebody_coverage.smk"
