--- a +++ b/exseek/scripts/generate_snakemake.py @@ -0,0 +1,50 @@ +#! /usr/bin/env python +import argparse, sys, os, errno +import logging +logging.basicConfig(level=logging.INFO, format='[%(asctime)s] [%(levelname)s] %(name)s: %(message)s') + +command_handlers = {} +def command_handler(f): + command_handlers[f.__name__] = f + return f + +@command_handler +def sequential_mapping(args): + from jinja2 import Template, Environment + from ioutils import open_file_or_stdout + + rna_types = [] + if len(args.rna_types) > 0: + rna_types = args.rna_types.split(',') + + logger.info('load template: ' + args.template) + env = Environment(lstrip_blocks=True, trim_blocks=True) + with open(args.template, 'r') as f: + template = env.from_string(f.read()) + with open_file_or_stdout(args.output_file) as f: + f.write(template.render(rna_types=rna_types, aligner=args.aligner, common_snakemake=args.common_snakemake)) + +if __name__ == '__main__': + main_parser = argparse.ArgumentParser(description='Count reads in BAM files') + subparsers = main_parser.add_subparsers(dest='command') + + parser = subparsers.add_parser('sequential_mapping', + help='generate Snakefile for sequential mapping') + parser.add_argument('--rna-types', type=str, required=True, + help='comma-separated list of rna types') + parser.add_argument('--aligner', type=str, default='bowtie2', + help='aligner to use') + parser.add_argument('--template', '-t', type=str, default='templates/sequential_mapping.snakemake', + help='template for snakefile') + parser.add_argument('--common-snakemake', type=str, required=True, + help='path of common.snakemake') + parser.add_argument('--output-file', '-o', type=str, default='-', + help='output file') + + args = main_parser.parse_args() + if args.command is None: + main_parser.print_help() + sys.exit(1) + logger = logging.getLogger('generate_snakemake.' + args.command) + + command_handlers.get(args.command)(args) \ No newline at end of file