#!/usr/bin/env python3

import sys
import argparse
from bio_assembly_refinement import main

parser = argparse.ArgumentParser(
				description = 'Filter, trim, circularise and re-assemble bacterial assemblies',
    			usage = '%(prog)s [options]',
)

parser.add_argument('fasta_file', help='Input fasta file', metavar='Input fasta file')
parser.add_argument('dnaA', help='Fasta file with dnaA sequence', metavar='dnaA/other sequence')
parser.add_argument('bax_files', help='Directory with bax.h5 files', metavar='Directory with bax.h5 files')
parser.add_argument('--min_contig_length', type=int, help='Minimum length of contigs [%(default)s]', default=2000, metavar='INT')
parser.add_argument('--contained_percent_match', type=int, help='Percent match identity when determining if a contig is contained in another [%(default)s]', default=90, metavar='INT')
parser.add_argument('--overlap_offset', type=int, help='Offset from the ends where an overlap can be found [%(default)s]', default=1000, metavar='INT')
parser.add_argument('--overlap_boundary_max', type=int, help='Maximum boundary of the overlap between ends expressed as percentage of contig length [%(default)s]', default=50, metavar='INT')
parser.add_argument('--overlap_min_length', type=int, help='Minimum length of overlap [%(default)s]', default=1000, metavar='INT')
parser.add_argument('--overlap_max_length', type=int, help='Maximum length of overlap [%(default)s]', default=3000, metavar='INT')
parser.add_argument('--min_trim_length', type=float, help='Minimum trimmed length of contig over original length [%(default)s]', default=0.89, metavar='FLOAT')
parser.add_argument('--no_trim', help="Do not trim overlaps", action='store_false', default=True)
parser.add_argument('--trim_rev_overlaps', help="Trim reversed overlaps", action='store_true', default=False)
parser.add_argument('--overlap_percent_identity', type=int, help='Percent match identity when determining if ends of contig overlap [%(default)s]', default=85, metavar='INT')
parser.add_argument('--dnaA_hit_percent_identity', type=int, help='Percent match identity when looking at hits to dnaA [%(default)s]', default=80, metavar='INT')
parser.add_argument('--dnaA_hit_length_minimum', type=int, help='Minimum acceptable hit length to dnaA expressed as percentage of dnaA length [%(default)s]', default=95, metavar='INT')
parser.add_argument('--no_bsub', help="Do not bsub quiver", action='store_true', default=False)
parser.add_argument('--reassembly_dir', help='Directory for reassembler program to put temp files in [%(default)s]', default='improved_assembly')
parser.add_argument('--debug', help="Keep all temp files", action='store_true', default=False)

options = parser.parse_args()

processor = main.Main(  fasta_file = options.fasta_file, 
						dnaA_sequence = options.dnaA,
						bax_files = options.bax_files,
						cutoff_contig_length = options.min_contig_length,
						contained_percent_match = options.contained_percent_match,
						overlap_offset = options.overlap_offset, 
						overlap_boundary_max = options.overlap_boundary_max, 
						overlap_min_length = options.overlap_min_length,
						overlap_max_length = options.overlap_max_length,
						overlap_percent_identity = options.overlap_percent_identity,
						min_trim_length = options.min_trim_length,
						trim = options.no_trim,
						trim_reversed_overlaps = options.trim_rev_overlaps,
						dnaA_hit_percent_identity = options.dnaA_hit_percent_identity,
						dnaA_hit_length_minimum = options.dnaA_hit_length_minimum,
						no_bsub = options.no_bsub,
						reassembly_dir = options.reassembly_dir,			
						debug = options.debug
						)
						
processor.process_assembly()
