X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=scripts%2Fsrf;fp=scripts%2Fsrf;h=0000000000000000000000000000000000000000;hb=aa63dd36b1de178acea25d43d3aaef8716763d3d;hp=bcf835dbfa29c1d3707d0e9e602d5c5882093ce4;hpb=5eba67d1e483b3b9abbb68ec3efdb1ef0e95bf46;p=htsworkflow.git diff --git a/scripts/srf b/scripts/srf deleted file mode 100755 index bcf835d..0000000 --- a/scripts/srf +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/python - -import logging -import optparse -import os -import sys - -from htsworkflow.pipelines import runfolder -from htsworkflow.pipelines.srf import make_srf_commands, make_qseq_commands, \ - run_commands, pathname_to_run_name -from htsworkflow.pipelines.srf import ILLUMINA2SRF10, ILLUMINA2SRF11, SOLEXA2SRF - -def make_parser(): - usage = '%prog: [options] runfolder -l 1,2,3 [runfolder -l 5,6 ...]' - - parser = optparse.OptionParser(usage) - parser.add_option('--dry-run', action='store_true', - help='print what would be done', - default=False) - - parser.add_option('-d', '--dest-dir', dest='dest_dir', - help='location to write srf files to', - default='.') - parser.add_option('-s', '--site', - help='site name', - default='Individual') - parser.add_option('-l', '--lanes', dest='lanes', action="append", - default=[], - help='comma seperated list of lanes to add to srf' - ) - parser.add_option('-j', '--jobs', default=1, type='int', - help='how many jobs to run simultaneously') - parser.add_option('-r', '--runfolder-version', default=ILLUMINA2SRF11, type='int', - help='Which class of srf file should we attempt to create\n' - '0 = Solexa pipeline 0.2.6 - 0.3\n' - '1 = illumina pipeline 1.0\n' - '2 = illumina pipeline 1.1rc1 and later \n') - - parser.add_option('-v', '--verbose', dest='verbose', - default=False, action='store_true', - help='report more about internals (INFO)') - parser.add_option('--debug', dest='debug', - default=False, action='store_true', - help='report even more about internals (DEBUG)') - - return parser - -def parse_lane_arg(lane_arg): - """ - Convert comma sperated list of lane ids to a list of integers - """ - lanes = [] - for lane in lane_arg.split(','): - try: - lane = int(lane) - if lane < 1 or lane > 8: - parser.error('Lanes must be in range [1..8]') - lanes.append(lane) - except ValueError: - parser.error('Lane selections must be integers') - return lanes - -def main(cmdline=None): - parser = make_parser() - opts, args = parser.parse_args(cmdline) - - if opts.debug: - logging.basicConfig(level=logging.DEBUG) - elif opts.verbose: - logging.basicConfig(level=logging.INFO) - else: - logging.basicConfig(level=logging.WARNING) - - if len(args) == 0: - parser.error('need runfolder arguments') - - # parse lane arguemnts - lanes_list = [] - if len(opts.lanes) == 0: - lanes_list = [[1,2,3,4,5,6,7,8]] * len(args) - elif len(opts.lanes) == len(args): - for lane_arg in opts.lanes: - lanes_list.append(parse_lane_arg(lane_arg)) - else: - parser.error( - "Number of lane arguments must match number of runfolders" - ) - - make_commands = make_qseq_commands - # build list of commands - cmds = {} - for runfolder_path, lanes in zip(args, lanes_list): - # normalize paths, either relative to home dirs or current dir - runfolder_path = os.path.abspath(runfolder_path) - run_name = pathname_to_run_name(runfolder_path) - # so any bustard directories? - runs = runfolder.get_runs(runfolder_path) - # give up if there are anything other than 1 run - if len(runs) > 1: - print 'ERROR: Too many run directories in %s' %(runfolder_path,) - return 1 - elif len(runs) == 1: - bustard_dir = runs[0].bustard.pathname - cmds[bustard_dir] = make_commands(run_name, - bustard_dir, - lanes, - opts.site, - opts.dest_dir, - opts.runfolder_version) - else: - print "ERROR: Couldn't find a bustard directory in", runfolder_path - return 1 - - if not opts.dry_run: - for cwd, cmd_list in cmds.items(): - run_commands(cwd, cmd_list, opts.jobs) - else: - for cwd, cmd_list in cmds.items(): - print cwd - print cmd_list - print 'jobs: ', opts.jobs - - return 0 - -if __name__ == "__main__": - sys.exit(main(sys.argv[1:]))