Mercurial > repos > wolma > ng_data_manager_bowtie2_index_builder
view data_manager/bowtie2_index_builder.py @ 0:a7169e7254c1 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_bowtie2_index_builder commit fd18bdf0c66a87e5ffda1dcba60d8ef9bc73d1bf-dirty
author | wolma |
---|---|
date | Mon, 15 Jul 2019 09:13:47 -0400 |
parents | |
children |
line wrap: on
line source
#!/usr/bin/env python # Dan Blankenberg from __future__ import print_function import argparse import os import subprocess import sys import yaml try: from shlex import quote as cmd_quote except ImportError: from pipes import quote as cmd_quote def build_bowtie2_index(fasta_filename, target_directory, index_id): # TODO: allow multiple FASTA input files fasta_base_name = os.path.split( fasta_filename )[-1] sym_linked_fasta_filename = os.path.join( target_directory, fasta_base_name ) os.symlink( fasta_filename, sym_linked_fasta_filename ) args = ['bowtie2-build', sym_linked_fasta_filename, index_id] proc = subprocess.Popen(args=args, shell=False, cwd=target_directory) return_code = proc.wait() if return_code: print("Error building index.", file=sys.stderr) sys.exit(return_code) return [' '.join(cmd_quote(arg) for arg in args)] def main(): parser = argparse.ArgumentParser() parser.add_argument('metadata') parser.add_argument( '-t', '--target-directory', default=None) args = parser.parse_args() params = yaml.safe_load(open(args.metadata)) params['cmds'] = [] if args.target_directory: if not os.path.isdir(args.target_directory): os.mkdir(args.target_directory) else: args.target_directory = os.getcwd() dbkey = params['dbkey'] if dbkey in [ None, '', '?' ]: raise Exception( '"%s" is not a valid dbkey. You must specify a valid dbkey.' % ( dbkey ) ) # build the index params['cmds'] += build_bowtie2_index(params['source'], args.target_directory, params['id']) with open(args.metadata, 'w') as fo: yaml.dump(params, fo, allow_unicode=False, default_flow_style=False) if __name__ == "__main__": main()