#!/usr/bin/env python """ Script that imports locally stored data as a new dataset for the user Usage: import id outputfile """ from __future__ import print_function import sys from shutil import copyfile assert sys.version_info[:2] >= (2, 6) BUFFER = 1048576 uids = sys.argv[1].split(",") out_file1 = sys.argv[2] # remove NONE from uids have_none = True while have_none: try: uids.remove("None") except ValueError: have_none = False # create dictionary keyed by uid of tuples of (displayName,filePath,build) for all files available_files = {} try: filename = sys.argv[-1] for line in open(filename): if not line or line[0:1] == "#": continue fields = line.split("\t") try: info_type = fields.pop(0) if info_type.upper() == "DATA": uid = fields.pop(0) org_num = fields.pop(0) chr_acc = fields.pop(0) feature = fields.pop(0) filetype = fields.pop(0) path = fields.pop(0).replace("\r", "").replace("\n", "") file_type = filetype build = org_num description = uid else: continue except Exception: continue available_files[uid] = (description, path, build, file_type, chr_acc) except Exception: print("It appears that the configuration file for this tool is missing.", file=sys.stderr) # create list of tuples of (displayName,FileName,build) for desired files desired_files = [] for uid in uids: try: desired_files.append(available_files[uid]) except Exception: continue # copy first file to contents of given output file file1_copied = False while not file1_copied: try: first_file = desired_files.pop(0) except IndexError: print("There were no valid files requested.", file=sys.stderr) sys.exit() file1_desc, file1_path, file1_build, file1_type, file1_chr_acc = first_file try: copyfile(file1_path, out_file1) print("#File1\t" + file1_desc + "\t" + file1_chr_acc + "\t" + file1_build + "\t" + file1_type) file1_copied = True except Exception: print("The file specified is missing.", file=sys.stderr) continue # Tell post-process filter where remaining files reside for extra_output in desired_files: file_desc, file_path, file_build, file_type, file_chr_acc = extra_output print("#NewFile\t" + file_desc + "\t" + file_chr_acc + "\t" + file_build + "\t" + file_path + "\t" + file_type)