Пример #1
0
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()