import pandas as pd
import numpy as np
import json
import os
wkdir = os.getcwd()

include: "rules/metadata.smk"
configfile: "config/config.yaml"

dataset = config["dataset"]
panel = config["panel"]
cohort_cols = ','.join(config['cohort-columns'])

metadata_path = config['metadata'] if not config['from-bcl'] else config['illumina-dir'] + "/SampleSheet.csv"
metadata = load_metadata(metadata_path, write=True, from_sample_sheet=config['from-bcl'])

fastq_auto = False if all(col in metadata.columns for col in ['fq1', 'fq2']) else True
plate_info = np.isin(["plate", "well_letter", "well_number"], metadata.columns).all()
samples = metadata["sample_id"]
call_types = ["targets", "amplicons"]

include: "rules/common.smk"
welcome(version="v0.5")
include: "rules/utilities.smk"
include: "rules/bcl-convert.smk"
include: "rules/qc.smk"
include: "rules/alignment-variantcalling.smk"
include: "rules/qc-notebooks.smk"
include: "rules/analysis.smk"
include: "rules/jupyter-book.smk"

if panel == "ag-vampir":
    include: "rules/ag-vampir.smk"

color_mappings = create_color_mapping(metadata, columns=config['cohort-columns'])
os.makedirs("results/config", exist_ok=True)
with open(f"results/config/metadata_colours.json", 'w') as f:
    json.dump(color_mappings, f, indent=2)


rule all:
    input:
        AmpSeekerOutputs,

