def submit(command_filename, workingdir, send_mail = False, username = None):
    '''Submit the given command filename to the queue. Adapted from the qb3 example.'''

    # Open streams
    command_filename = command_filename
    outfile = command_filename + ".out"
    file_stdout = open(outfile, 'w')

    # Form command
    command = ['qsub']

    if send_mail and username:
        #username = 'Shane.OConnor@ucsf.edu'
        command.extend(['-m', 'eas', '-M', '%s@chef.compbio.ucsf.edu' % username])
    command.append(command_filename)

    # Submit the job and capture output.
    try:
        subp = subprocess.Popen(command, stdout=file_stdout, stderr=file_stdout, cwd=workingdir)
    except Exception, e:
        colortext.error('Failed running qsub command: %s in cwd %s.' % (command, workingdir))
        raise

    waitfor = 0
    errorcode = subp.wait()
    file_stdout.close()

    file_stdout = open(outfile, 'r')
    output = file_stdout.read().strip()
    file_stdout.close()

    if errorcode != 0:
        colortext.error('Failed running qsub command: %s in cwd %s.' % (command, workingdir))
        raise Exception(output)

    # Match job id
    # This part of the script may be error-prone as it depends on the server message.
    matches = re.match('Your job-array (\d+).(\d+)-(\d+):(\d+)', output)
    if not matches:
        matches = re.match('Your job (\d+) \(".*"\) has been submitted.*', output)

    if matches:
        jobid = int(matches.group(1))
    else:
        jobid = -1

    output = output.replace('"', "'")
    if output.startswith("qsub: ERROR"):
        raise Exception(output)

    os.remove(outfile)
    #os.remove(command_filename)

    return jobid, output
def submit ( command_filename , workingdir , send_mail = False , username = None ) : command_filename = command_filename outfile = command_filename + ".out" file_stdout = open ( outfile , 'w' ) command = [ 'qsub' ] if send_mail and username : command . extend ( [ '-m' , 'eas' , '-M' , '%s@chef.compbio.ucsf.edu' % username ] ) command . append ( command_filename ) try : subp = subprocess . Popen ( command , stdout = file_stdout , stderr = file_stdout , cwd = workingdir ) except Exception , e : colortext . error ( 'Failed running qsub command: %s in cwd %s.' % ( command , workingdir ) ) raise waitfor = 0 errorcode = subp . wait ( ) file_stdout . close ( ) file_stdout = open ( outfile , 'r' ) output = file_stdout . read ( ) . strip ( ) file_stdout . close ( ) if errorcode != 0 : colortext . error ( 'Failed running qsub command: %s in cwd %s.' % ( command , workingdir ) ) raise Exception ( output ) matches = re . match ( 'Your job-array (\d+).(\d+)-(\d+):(\d+)' , output ) if not matches : matches = re . match ( 'Your job (\d+) \(".*"\) has been submitted.*' , output ) if matches : jobid = int ( matches . group ( 1 ) ) else : jobid = - 1 output = output . replace ( '"' , "'" ) if output . startswith ( "qsub: ERROR" ) : raise Exception ( output ) os . remove ( outfile ) return jobid , output
Submit the given command filename to the queue. Adapted from the qb3 example.