Permalink
Browse files

revive bowtie-build and bowtie-inspect scripts

  • Loading branch information...
1 parent 2d4c08a commit 21b8567fa80d2727879fc32e70e98bc94cbae6fe @ch4rr0 ch4rr0 committed Nov 4, 2016
Showing with 173 additions and 0 deletions.
  1. +98 −0 bowtie-build
  2. +75 −0 bowtie-inspect
View
@@ -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()
+
+
+
View
@@ -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

Please sign in to comment.