import smbl
import rnftools


##

#reference_basic_1   = smbl.fasta.HUMAN_HG38
reference_basic_1   = smbl.fasta.EXAMPLE_2
reference_contam_1  = smbl.fasta.EXAMPLE_1

reference_basic_2   = smbl.fasta.EXAMPLE_1
reference_contam_2  = smbl.fasta.EXAMPLE_2

##

reads_1 = "reads_1.fq"
reads_2 = "reads_2.fq"

##

bwa_aln_1 = "bwa_mem_1.bam"
bwa_aln_2 = "bwa_mem_2.bam"
bwa_aln_3 = "bwa_mem_3.bam"
bwa_aln_4 = "bwa_mem_4.bam"
bt_aln = "bt.bam"

##


#
# READS
#

# sample 1

rnftools.mishmash.sample(reads_1[:-3],ends=1)

rnftools.mishmash.DwgSim(
	fa=reference_basic_1,
	read_length_1=100,
	read_length_2=0,
	number_of_reads=10000
)


rnftools.mishmash.DwgSim(
	fa=reference_contam_1,
	read_length_1=100,
	read_length_2=0,
	number_of_reads=2000
)


# sample 2

rnftools.mishmash.sample(reads_2[:-3],ends=1)

rnftools.mishmash.DwgSim(
	fa=reference_basic_2,
	read_length_1=100,
	read_length_2=0,
	number_of_reads=10000
)


rnftools.mishmash.DwgSim(
	fa=reference_contam_2,
	read_length_1=100,
	read_length_2=0,
	number_of_reads=2000
)


#
# ALIGNMENT
#

alignments = [
		smbl.prog.BwaMem(
			fasta=reference_basic_1,
			fastq_1=reads_1,
			bam="BWA-MEM (1).bam",
		),

		smbl.prog.BwaMem(
			fasta=reference_basic_2,
			fastq_1=reads_2,
			bam="BWA-MEM (2).bam",
		),

		smbl.prog.BwaSw(
			fasta=reference_basic_1,
			fastq_1=reads_1,
			bam="BWA-SW (1).bam",
		),

		smbl.prog.BwaSw(
			fasta=reference_basic_2,
			fastq_1=reads_2,
			bam="BWA-SW (2).bam",
		),

		smbl.prog.Bowtie2(
			fasta=reference_basic_1,
			fastq_1=reads_1,
			bam="Bowtie2 (1).bam",
		),

		smbl.prog.Bowtie2(
			fasta=reference_basic_2,
			fastq_1=reads_2,
			bam="Bowtie2 (2).bam",
		),

		smbl.prog.Storm(
			fasta=reference_basic_1,
			fastq_1=reads_1,
			bam="SToRM (1).bam",
		),

		smbl.prog.Storm(
			fasta=reference_basic_2,
			fastq_1=reads_2,
			bam="SToRM (2).bam",
		),

		smbl.prog.RazerS3(
			fasta=reference_basic_1,
			fastq_1=reads_1,
			bam="RazerS3 (1).bam",
		),

		smbl.prog.RazerS3(
			fasta=reference_basic_2,
			fastq_1=reads_2,
			bam="RazerS3 (2).bam",
		),

		smbl.prog.Yara(
			fasta=reference_basic_1,
			fastq_1=reads_1,
			bam="Yara (1).bam",
		),

		smbl.prog.Yara(
			fasta=reference_basic_2,
			fastq_1=reads_2,
			bam="Yara (2).bam",
		),
	]

#
# RULES
#

# required final files

rule basic:
	input:
		[aln.bam_fn() for aln in alignments]
		#rnftools.input(),
		#bwa1.bam_fn(),
		#bwa2.bam_fn(),
		#bwa3.bam_fn(),
		#bwa4.bam_fn(),
		#bt.bam_fn(),

include: rnftools.include()
