from os.path import join, splitext


def replace_ext(filename, ext):
    return splitext(filename)[0] + ext


def append_ext(filename, ext):
    return filename + ext


species_id = config["species_id"]

data_dir = "/projects/project_ludwig_pb_gaps/data/{}".format(species_id)
work_dir = "/projects/project_ludwig_pb_gaps/workdir/{}/lr_gapcloser".format(species_id)
results_dir = "/projects/project_ludwig_pb_gaps/results/{}/lr_gapcloser".format(species_id)

input_assembly = join(data_dir, config.get("ref_fasta", "assembly-test.fasta"))
input_reads = join(data_dir, config["reads_fasta"])
output_dir = join(work_dir, "workdir")
output_assembly = join(output_dir, "iteration-3/gapclosed.fasta")
result_assembly = join(results_dir, "gapclosed.fasta")

max_threads = 32


def log(name):
    return join(work_dir, "logs", name + ".log")


localrules:
    mk_result_assembly


rule ALL:
    input: result_assembly


rule lr_gapcloser:
    input:
        input_assembly,
        input_reads
    output: output_assembly
    threads: max_threads
    log:
        out = log("lr_gapcloser.out"),
        err = log("lr_gapcloser.err")
    shell:
        "rm -r {output_dir}; LR_Gapcloser.sh -t {threads} -i {input_assembly} -l {input_reads} -o {output_dir} > {log[out]} 2> {log[err]}"


rule mk_result_assembly:
    input: output_assembly
    output: result_assembly
    shell:
        "fold {input} > {output}"
