Permalink
Please sign in to comment.
98
bowtie-build
| @@ -0,0 +1,98 @@ | ||
| +#!/usr/bin/env python | ||
| + | ||
| +""" | ||
| + Copyright 2014, Ben Langmead <langmea@cs.jhu.edu> | ||
| + | ||
| + This file is part of Bowtie. | ||
| + | ||
| + Bowtie is free software: you can redistribute it and/or modify | ||
| + it under the terms of the GNU General Public License as published by | ||
| + the Free Software Foundation, either version 3 of the License, or | ||
| + (at your option) any later version. | ||
| + | ||
| + Bowtie is distributed in the hope that it will be useful, | ||
| + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| + GNU General Public License for more details. | ||
| + | ||
| + You should have received a copy of the GNU General Public License | ||
| + along with Bowtie. If not, see <http://www.gnu.org/licenses/>. | ||
| +""" | ||
| + | ||
| + | ||
| +import os | ||
| +import sys | ||
| +import inspect | ||
| +import logging | ||
| + | ||
| + | ||
| +def build_args(): | ||
| + """ | ||
| + Parse the wrapper arguments. Returns the options,<programm arguments> tuple. | ||
| + """ | ||
| + | ||
| + parsed_args = {} | ||
| + to_remove = [] | ||
| + argv = sys.argv[:] | ||
| + for i, arg in enumerate(argv): | ||
| + if arg == '--large-index': | ||
| + parsed_args[arg] = "" | ||
| + to_remove.append(i) | ||
| + elif arg == '--debug': | ||
| + parsed_args[arg] = "" | ||
| + to_remove.append(i) | ||
| + elif arg == '--verbose': | ||
| + parsed_args[arg] = "" | ||
| + to_remove.append(i) | ||
| + | ||
| + for i in reversed(to_remove): | ||
| + del argv[i] | ||
| + | ||
| + return parsed_args, argv | ||
| + | ||
| + | ||
| +def main(): | ||
| + logging.basicConfig(level=logging.ERROR, | ||
| + format='%(levelname)s: %(message)s' | ||
| + ) | ||
| + delta = 200 | ||
| + small_index_max_size= 4 * 1024**3 - delta | ||
| + build_bin_name = "bowtie-build" | ||
| + build_bin_s = "bowtie-build-s" | ||
| + build_bin_l = "bowtie-build-l" | ||
| + curr_script = os.path.realpath(inspect.getsourcefile(main)) | ||
| + ex_path = os.path.dirname(curr_script) | ||
| + build_bin_spec = os.path.join(ex_path,build_bin_s) | ||
| + | ||
| + options, argv = build_args() | ||
| + | ||
| + if '--verbose' in options: | ||
| + logging.getLogger().setLevel(logging.INFO) | ||
| + | ||
| + if '--debug' in options: | ||
| + build_bin_spec += '-debug' | ||
| + build_bin_l += '-debug' | ||
| + | ||
| + if '--large-index' in options: | ||
| + build_bin_spec = os.path.join(ex_path,build_bin_l) | ||
| + elif len(argv) >= 2: | ||
| + ref_fnames = argv[-2] | ||
| + tot_size = 0 | ||
| + for fn in ref_fnames.split(','): | ||
| + if os.path.exists(fn): | ||
| + statinfo = os.stat(fn) | ||
| + tot_size += statinfo.st_size | ||
| + if tot_size > small_index_max_size: | ||
| + build_bin_spec = os.path.join(ex_path,build_bin_l) | ||
| + | ||
| + argv[0] = build_bin_name | ||
| + argv.insert(1, 'basic-0') | ||
| + argv.insert(1, '--wrapper') | ||
| + logging.info('Command: %s %s' % (build_bin_spec, ' '.join(argv[1:]))) | ||
| + os.execv(build_bin_spec, argv) | ||
| + | ||
| +if __name__ == "__main__": | ||
| + main() | ||
| + | ||
| + | ||
| + |
| @@ -0,0 +1,75 @@ | ||
| +#!/usr/bin/env python | ||
| + | ||
| +""" | ||
| + Copyright 2014, Ben Langmead <langmea@cs.jhu.edu> | ||
| + | ||
| + This file is part of Bowtie. | ||
| + | ||
| + Bowtie is free software: you can redistribute it and/or modify | ||
| + it under the terms of the GNU General Public License as published by | ||
| + the Free Software Foundation, either version 3 of the License, or | ||
| + (at your option) any later version. | ||
| + | ||
| + Bowtie is distributed in the hope that it will be useful, | ||
| + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| + GNU General Public License for more details. | ||
| + | ||
| + You should have received a copy of the GNU General Public License | ||
| + along with Bowtie. If not, see <http://www.gnu.org/licenses/>. | ||
| +""" | ||
| + | ||
| + | ||
| +import os | ||
| +import imp | ||
| +import inspect | ||
| +import logging | ||
| + | ||
| + | ||
| + | ||
| +def main(): | ||
| + logging.basicConfig(level=logging.ERROR, | ||
| + format='%(levelname)s: %(message)s' | ||
| + ) | ||
| + inspect_bin_name = "bowtie-inspect" | ||
| + inspect_bin_s = "bowtie-inspect-s" | ||
| + inspect_bin_l = "bowtie-inspect-l" | ||
| + idx_ext_l = '.1.ebwtl'; | ||
| + idx_ext_s = '.1.ebwt'; | ||
| + curr_script = os.path.realpath(inspect.getsourcefile(main)) | ||
| + ex_path = os.path.dirname(curr_script) | ||
| + inspect_bin_spec = os.path.join(ex_path,inspect_bin_s) | ||
| + bld = imp.load_source('bowtie-build',os.path.join(ex_path,'bowtie-build')) | ||
| + options,arguments = bld.build_args() | ||
| + | ||
| + if '--verbose' in options: | ||
| + logging.getLogger().setLevel(logging.INFO) | ||
| + | ||
| + if '--debug' in options: | ||
| + inspect_bin_spec += '-debug' | ||
| + inspect_bin_l += '-debug' | ||
| + | ||
| + if '--large-index' in options: | ||
| + inspect_bin_spec = os.path.join(ex_path,inspect_bin_l) | ||
| + elif len(arguments) >= 1: | ||
| + idx_basename = arguments[-1] | ||
| + large_idx_exists = os.path.exists(idx_basename + idx_ext_l) | ||
| + small_idx_exists = os.path.exists(idx_basename + idx_ext_s) | ||
| + if large_idx_exists and not small_idx_exists: | ||
| + logging.info("No small index but a large one is present. Inspecting the large index.") | ||
| + inspect_bin_spec = os.path.join(ex_path,inspect_bin_l) | ||
| + | ||
| + arguments[0] = inspect_bin_name | ||
| + arguments.insert(1, 'basic-0') | ||
| + arguments.insert(1, '--wrapper') | ||
| + logging.info('Command: %s %s' % (inspect_bin_spec,' '.join(arguments[1:]))) | ||
| + os.execv(inspect_bin_spec, arguments) | ||
| + | ||
| + | ||
| +if __name__ == "__main__": | ||
| + main() | ||
| + | ||
| + | ||
| + | ||
| + | ||
| + |
0 comments on commit
21b8567