#!/usr/bin/env python3 """ Copyright 2014, Ben Langmead 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 . """ import os import imp import inspect from importlib.machinery import SourceFileLoader 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 = SourceFileLoader('bowtie-build',os.path.join(ex_path,'bowtie-build')).load_module() options,arguments = bld.build_args() if '--verbose' in options: arguments.append('--verbose') 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()