
import snakemake.utils
snakemake.utils.min_version("7.8.0")
snake_dir = workflow.basedir
rootdir = ''.join([ sub + '/' for sub in snake_dir.split('/')[:-1] ] )

print('tcoffee benchmark running in ' , rootdir)

if 'folder' in config:
	if type(config['folder']) == str:
		folders = [config['folder']]
	else:
		folders = config['folder']
else:
	folders = glob_wildcards("{folders}/sequences.fst").folders
	config['folder']  = folders

mattypes = ['fident', 'alntmscore', 'lddt']
alntypes = ['0', '1']
exp = ['raw', 'exp']
aligners = [ 'clustalo' , 'muscle' , '3dcoffee']
configfile: rootdir+ "workflow/config/config_vars.yaml"

def get_mem_mb(wildcards, attempt):
	return attempt * 20000

rule tdcoffee_preprocess:
	conda:
		"foldtree"
	input:
		"{folder}/sequences.fst",
	output:
		"{folder}/tcoffee_templates.txt",
	params:
		extra="",
	log:
		"{folder}/logs/3dcoffee_preprocess.log",
	script:
		'../src/preprocess_3dcoffee.py'

rule tdcoffee_shell:
	conda:
		"foldtree"
	input:
		"{folder}/sequences.fst",
		"{folder}/tcoffee_templates.txt",
	output:
		"{folder}/sequences.aln.3dcoffee.fst",
	log:
		"{folder}/logs/3dcoffee.log",
	shell:
		 "t_coffee -seq {wildcards.folder}/sequences.fst -method TMalign_pair -output=fasta_aln -template_file {wildcards.folder}/tcoffee_templates.txt -outfile {output} -n_core=1"

rule induced_pairs:
	conda:
		"foldtree"
	input:
		"{folder}/tcoffee_templates.txt",
		"{folder}/sequences.aln.3dcoffee.fst",
	output:
		"{folder}/alnAA_3dcoffee.fasta",
	log:
		"{folder}/logs/3dcoffee.log",
	shell:
		 "cp {wildcards.folder}/sequences.aln.3dcoffee.fst {output}"
