#!/usr/bin/runAmos -C
# `AMOScmp' - The AMOS Comparative Assembler Pipeline

#--------------------------------------- SCRIPT PATHS -------------------------#

BINDIR=/usr/bin
NUCMER=:
DELTAFILTER=:

#--------------------------------------- USER DEFINED VALUES ------------------#

MINCLUSTER  = 16
MINMATCH    = 16
MINLEN	    = 24
MINOVL      = 5
MAXTRIM     = 10
MAJORITY    = 50 
CONSERR	    = 0.06
ALIGNWIGGLE = 2

#------------------------------------------------------------------------------#

TGT     = $(PREFIX).afg
REF     = $(PREFIX).1con
SEQS    = $(PREFIX).seq
CLR     = $(PREFIX).clr
CVG     = $(PREFIX).0cvg
BANK    = $(PREFIX).bnk
ALIGN   = $(PREFIX).delta
ALIGNTMP= $(ALIGN).tmp
LAYOUT  = $(PREFIX).layout
CONFLICT= $(PREFIX).conflict
CONTIG  = $(PREFIX).contig
FASTA   = $(PREFIX).fasta
EXCLUDE = $(PREFIX).exclude.seqs
SCAFF   = $(PREFIX).scaff
SCAFFFASTA = $(PREFIX).scaffold.fasta

#------------------------------------------------------------------------------#

INPUTS   = $(TGT) $(REF)
OUTPUTS  = $(CONTIG) $(FASTA) $(SCAFF) $(SCAFFFASTA)

#----------------------------------------PIPELINE ------------------------------#

## Building AMOS bank
10: $(BINDIR)/bank-transact -c -z -b $(BANK) -m $(TGT)

## Collecting clear range sequences
20: $(BINDIR)/dumpreads $(BANK) > $(SEQS)

## Running nucmer on all reads
30: $(NUCMER) --maxmatch --prefix=$(PREFIX) -l $(MINMATCH) -c $(MINCLUSTER) $(REF) $(SEQS)

## Filter align file
31: $(DELTAFILTER) -l $(MINLEN) $(ALIGN) > $(ALIGNTMP)
32: mv $(ALIGNTMP) $(ALIGN)

## Getting zero coverage regions
33: $(BINDIR)/delta2cvg -M 0 < $(ALIGN) > $(CVG)

## Getting aligned read iid's and clear ranges
34: $(BINDIR)/delta2clr -zero_cvg $(CVG)  < $(ALIGN) > $(CLR)

## Updating bank read clear ranges
35: $(BINDIR)/updateClrRanges -i $(BANK) $(CLR)

## Updating align file clear ranges
36: $(BINDIR)/updateDeltaClr $(ALIGN) $(CLR) > $(ALIGNTMP)
37: mv $(ALIGNTMP) $(ALIGN)

## Running layout
40: $(BINDIR)/casm-layout -r -t $(MAXTRIM) -o $(MINOVL) -m $(MAJORITY) -U $(LAYOUT) -C $(CONFLICT) -b $(BANK) $(ALIGN)

## Running consensus
50: $(BINDIR)/make-consensus -B -e $(CONSERR) -b $(BANK) -w $(ALIGNWIGGLE) -x $(EXCLUDE)

## Outputting contigs 
60: $(BINDIR)/bank2contig $(BANK) > $(CONTIG)

## Outputting contig fasta
70: $(BINDIR)/bank2fasta -e -b $(BANK) > $(FASTA)

## Outputting scaff
80: $(BINDIR)/bank2scaff $(BANK) > $(SCAFF)

## Outputting scaff fasta
90: $(BINDIR)/bank2scaff -g $(BANK) > $(SCAFFFASTA)
