def create_inputs(options, outpath, found_sequences): errors = [] # Create subdirectories job_inputs = [] for (pdb_id, chain, file_name), sequence in sorted(found_sequences.iteritems()): created_new_subdirectory = False subdir_path = os.path.join(outpath, "%s%s" % (pdb_id, chain)) try: if os.path.exists(subdir_path): if options.overwrite: colorprinter.warning("Path %s exists. Removing all files in that path as per the override option." % subdir_path) shutil.rmtree(subdir_path) created_new_subdirectory = True else: errors.append('The directory %s already exists.' % subdir_path) # uncomment this if we want to turn on the _001, _002, etc. directories count = 1 while count < 1000: subdir_path = os.path.join(outpath, "%s%s_%.3i" % (pdb_id, chain, count)) if not os.path.exists(subdir_path): break count += 1 if count == 1000: errors.append("The directory %s contains too many previous results. Please clean up the old results or choose a new output directory." % outpath) sys.exit(ERRCODE_OLDRESULTS) os.makedirs(subdir_path, 0755) # Create a FASTA file for the sequence in the output directory fasta_file = os.path.join(subdir_path, "%s%s.fasta" % (pdb_id, chain)) colorprinter.message("Creating a new FASTA file %s." % fasta_file) assert(not(os.path.exists(fasta_file))) write_file(fasta_file, '\n'.join(sequence) + '\n', 'w') # The file must terminate in a newline for the Perl script to work job_inputs.append(JobInput(fasta_file, pdb_id, chain)) except: if created_new_subdirectory and os.path.exists(subdir_path): shutil.rmtree(subdir_path) errors.append('An error occurred creating the input for %s%s.' % (pdb_id, chain)) job_inputs = [] break return job_inputs, errors
def main(): this_dir = os.path.dirname(os.path.realpath(__file__)) make_fragments_script_path = os.path.join(this_dir, make_fragments_script) errors = [] #check_configuration_paths() if errors: colorprinter.error("There is an error in the configuration files:") for e in errors: print("") flname = e[0] es = e[1] colorprinter.warning(flname) for e in es: colorprinter.error(e) sys.exit(ERRCODE_CONFIG) options = parse_args() if options["outpath"] and options['job_inputs']: job_script = None try: cluster_job = ClusterEngine.FragmentsJob(make_fragments_script_path, options, test_mode = test_mode) job_script = cluster_job.script except JobInitializationException, e: colorprinter.error(str(e)) sys.exit(ERRCODE_ARGUMENTS) submission_script = os.path.join(options["outpath"], 'submission_script.py') write_file(submission_script, job_script, 'w') try: send_mail = options['sendmail'] username = None if send_mail: username = get_username() (jobid, output) = ClusterEngine.submit(submission_script, options["outpath"], send_mail = send_mail, username = username ) except Exception, e: colorprinter.error("An exception occurred during submission to the cluster.") colorprinter.error(str(e)) colorprinter.error(traceback.format_exc()) sys.exit(ERRCODE_CLUSTER)