# do onstart/onexit things
sample_schemas = ['sample', 'assembly', 'technical_replicates', 'biological_replicates', 'strandedness']
config_schemas = ['general', 'download', 'alignment_general', 'peakcalling', 'deseq2', 'trackhub']
include: "../../rules/configuration.smk"


# load all the relevant rules
include: f"{config['rule_dir']}/alignment.smk"
include: f"{config['rule_dir']}/bam_cleaning.smk"
include: f"{config['rule_dir']}/bigfiles.smk"
include: f"{config['rule_dir']}/deseq2.smk"
include: f"{config['rule_dir']}/get_genome.smk"
include: f"{config['rule_dir']}/get_fastq.smk"
include: f"{config['rule_dir']}/merge_replicates.smk"
include: f"{config['rule_dir']}/peak_counts.smk"
include: f"{config['rule_dir']}/peak_calling.smk"
include: f"{config['rule_dir']}/qc.smk"
include: f"{config['rule_dir']}/trackhub.smk"
include: f"{config['rule_dir']}/trimming.smk"


# set the quality_control functions
quality_control = [get_trimming_qc, get_alignment_qc, get_peak_calling_qc]


rule seq2science:
    """
    call peaks for each sample (or condition if applies)
    """
    input:
        expand(
            (["{trackhub_dir}"]                     if config['create_trackhub'] else []) +
            (["{qc_dir}/multiqc_{assemblies}.html"] if config["create_qc_report"] else []),
            assemblies=all_assemblies, **config) +
         count_table_output() + get_contrasts()
