def main(): parser = argparse.ArgumentParser( description='Determine PacBio read support for gaps in scaffolds', usage=usage()) # Main arguments parser.add_argument('scaffolds', action='store', help='The input scaffolds in Fasta format') parser.add_argument('subreads', action='store', help='The PacBio subreads in BAM format') parser.add_argument('-t', '--threads', dest='threads', type=int, \ help='Number of threads to use for multi-threaded processes, default=1', default=1) # Arguments for Setup setup_args = parser.add_argument_group('Setup') setup_args.add_argument('-n', '--min_gap', dest='min_gap', type=int, default=200, \ help='Minimum number of consecutive Ns to be considered a gap, default=200') setup_args.add_argument('-x', '--max_gap', dest='max_gap', type=int, default=1000000, \ help='Maximum number of consecutive Ns to be considered a gap, default=Inf') setup_args.add_argument('-f', '--flank_size', dest='flank_size', type=int, default=1000, \ help='Number of extracted bases flanking gaps and scaffold ends, default=1000') # Arguments for Support support_args = parser.add_argument_group('Support') support_args.add_argument('-b', '--blasr', dest='blasr', type=str, \ help='Parameters to pass to BLASR', default='') support_args.add_argument('-d', '--min_reads', dest='min_reads', type=int, \ help='The minimum number of reads required to support a gap', default=5) support_args.add_argument('-w', '--wiggle', dest='wiggle', type=int, \ help='The percent deviation allowed from predicted gap size', default=0.5) # Arguments for Assembly assembly_args = parser.add_argument_group('Assembly') assembly_args.add_argument('-m', '--minimap', dest='minimap', \ help='Parameters to pass to Minimap', default='-Sw5 -L100 -m0') assembly_args.add_argument('-a', '--miniasm', dest='miniasm', \ help='Parameters to pass to Miniasm', default='') assembly_args.add_argument('-r', '--racon', dest='racon', \ help='Parameters to pass to Racon', default='') # Parse the arguments args = parser.parse_args() # Initialize classes setup = Setup() support = Support() assembly = Assembly() placement = Placement() # Check for save point try: save = open('jelly2.save', 'r').read() print "Found save point:", save except IOError: write_save('setup') # Run Setup if check_save('setup'): setup.run(args) write_save('mapping') # Run Support if check_save('mapping'): support.mapping(args) write_save('sorting') if check_save('sorting'): support.sorting(args) write_save('indexing') if check_save('indexing'): support.indexing(args) write_save('support') if check_save('support'): support.find_support(args) write_save('assembly') # Run Assembly if check_save('assembly'): assembly.assemble_gaps(args) write_save('placement') # Run Placement if check_save('placement'): placement.load_data(args) placement.fill_gaps()