Skip to content

Instantly share code, notes, and snippets.

@whosaysni
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save whosaysni/12f73cd0485ac0faf540 to your computer and use it in GitHub Desktop.
Save whosaysni/12f73cd0485ac0faf540 to your computer and use it in GitHub Desktop.
Mimic legacy blast's blastall to execute BLAST+ commands: Legacy blastall のふりをして BLAST+ コマンドを実行する
#!/usr/bin/env python
# coding: utf-8
"""Mimic legacy blast's blastall to execute BLAST+ commands
"""
import argparse, os, sys
def main():
sys.stderr.write('>>>>> %s\n' %(' '.join(sys.argv)))
parser = argparse.ArgumentParser()
parser.add_argument('-p', dest='program', required=True)
simple_options_map = [
('d', 'db'),
('i', 'query'),
('e', 'evalue'),
('m', 'outfmt'),
('o', 'out'),
('G', 'gapopen'),
('E', 'gapextend'),
('q', 'penalty'),
('r', 'reward'),
('v', 'num_descriptions'),
('b', 'num_alignments'),
('f', 'threshold'),
('Q', 'query_genetic_code'),
('D', 'db_gen_code'),
('a', 'num_threads'),
('M', 'matrix'),
('W', 'word_size'),
('z', 'dbsize'),
('Y', 'searchsp'),
('S', 'strand'),
('l', 'gilist'),
('y', 'xdrop_ungap'),
('Z', 'xdrop_gap_final'),
('X', 'xdrop_gap'),
('L', 'query_loc'),
('A', 'window_size'),
('t', 'max_intron_length'),
('C', 'comp_based_stats'),
('s', 'use_sw_tback'),
]
flag_options_map = [
('I', 'show_gis'),
('J', 'parse_deflines'),
('T', 'html'),
('U', 'lcase_masking'),
('V', 'legacy'),
]
special_options_map = [
('F', 'dust_seg'),
('g', 'ungapped'),
('n', 'megablast'),
]
undefined_options = ['O', 'K', 'P', 'R', 'w', 'B']
for opt, dest in simple_options_map:
parser.add_argument('-'+opt, dest=dest)
for opt, dest in flag_options_map:
parser.add_argument('-'+opt, dest=dest, nargs='?', const=True, default=False)
#special options
parser.add_argument('-F', dest='dust_seg')
parser.add_argument('-g', dest='gapped')
parser.add_argument('-n', dest='megablast')
args = parser.parse_args()
# selection of program
program = args.program
cmdline_args = [program]
# simple argument conversion
for opt, dest in simple_options_map:
arg = getattr(args, dest, None)
if not (arg==None):
if False: # arg.split()>1:
arg.strip('"').strip("'") # unquote
arg = '"%s"' %arg # requote
cmdline_args.extend(['-'+dest, arg])
# flag conversion
for opt, dest in flag_options_map:
arg = getattr(args, dest, None)
if arg==True:
cmdline_args.append('-'+dest)
# special conversion
dust_seg = getattr(args, 'dust_seg')
if not dust_seg==None:
sw = '-seg'
if program=='blastn':
sw = '-dust'
val = 'no'
if dust_seg=='F':
val = 'yes'
cmdline_args.extend([sw, val])
gapped = getattr(args, 'gapped', None)
if not gapped==None:
if gapped=='T':
cmdline_args.extend(['-ungapped', 'no'])
else:
cmdline_args.extend(['-ungapped', 'yes'])
megablast = getattr(args, 'megablast', None)
if not megablast==None:
if megablast=='T':
cmdline_args.extend(['-task', 'megablast'])
sys.stderr.write('>>>>> %s\n' %(' '.join(cmdline_args)))
os.execvp(program, cmdline_args)
if __name__=='__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment