Mercurial > repos > cathywise > truststore_import
diff TrustStoreGalaxyImport.py @ 30:c659bd6342ae
Fix deps.
author | Catherine Wise <catherine.wise@csiro.au> |
---|---|
date | Thu, 23 Jan 2014 10:36:03 +1100 |
parents | 20dc961b7949 |
children | 6e2dba73eebd |
line wrap: on
line diff
--- a/TrustStoreGalaxyImport.py Thu Jan 23 10:21:58 2014 +1100 +++ b/TrustStoreGalaxyImport.py Thu Jan 23 10:36:03 2014 +1100 @@ -14,6 +14,40 @@ for child in elem.children: printNice(child, f, depth+1) +def ungzip(download, outputFile): + is_gzipped, is_valid = check_gzip(download) + + if is_gzipped and not is_valid: + print "File is compressed (gzip) but not valid." + sys.exit(4) + elif is_gzipped and is_valid: + # We need to uncompress the temp_name file, but BAM files must remain compressed in the BGZF format + CHUNK_SIZE = 2**20 # 1Mb + fd, uncompressed = tempfile.mkstemp(prefix='data_id_upload_gunzip_', dir=os.path.dirname(outputFile), text=False ) + gzipped_file = gzip.GzipFile(download, 'rb') + while 1: + try: + chunk = gzipped_file.read(CHUNK_SIZE) + except IOError: + os.close(fd) + os.remove(uncompressed) + print 'Problem decompressing gzipped data', dataset, json_file + sys.exit(4) + if not chunk: + break + os.write(fd, chunk) + os.close(fd) + gzipped_file.close() + + shutil.copy(uncompressed, outputFile) + try: + os.remove(uncompressed) + os.remove(download) + except OSError: + pass + else: + shutil.copy(download, outputFile) + if __name__ == '__main__': kms_url = sys.argv[1] @@ -29,6 +63,9 @@ if len(sys.argv) > 10: filename = sys.argv[9] outputFile = sys.argv[10] + outputFileId = sys.argv[11] + outputFileType = sys.argv[12] + otherFilesDir = sys.argv[13] else: outputFile = sys.argv[9] @@ -55,44 +92,23 @@ else: location = root if filename and filename != "": - downloadMe = ts_utils.ts_utils.recurseToChildNamed(location, filename) - if downloadMe: - download = ts.getFile(store, downloadMe) - is_gzipped, is_valid = check_gzip(download) - - if is_gzipped and not is_valid: - print "File is compressed (gzip) but not valid." + outputFileList = [outputFile] + inputFileList = None + if "," in filename: # we have multiple files guys. + inputFileList = filename.split(",") + for inputFile in inputFileList: + outName = "%s_%s_%s_%s_%s" % ('primary', outputFileId, inputFile.replace(".","-"), 'visible', outputFileType) + outputFileList.append(os.path.join(otherFilesDir, outName)) + else: + inputFileList = [filename] + for inFile, outFile in zip(inputFileList, outputFileList): + downloadMe = ts_utils.ts_utils.recurseToChildNamed(location, inFile) + if downloadMe: + download = ts.getFile(store, downloadMe) + ungzip(download, outFile) + else: + print "File %s not found" % inFile sys.exit(4) - elif is_gzipped and is_valid: - # We need to uncompress the temp_name file, but BAM files must remain compressed in the BGZF format - CHUNK_SIZE = 2**20 # 1Mb - fd, uncompressed = tempfile.mkstemp(prefix='data_id_upload_gunzip_', dir=os.path.dirname(outputFile), text=False ) - gzipped_file = gzip.GzipFile(download, 'rb') - while 1: - try: - chunk = gzipped_file.read(CHUNK_SIZE) - except IOError: - os.close(fd) - os.remove(uncompressed) - print 'Problem decompressing gzipped data', dataset, json_file - sys.exit(4) - if not chunk: - break - os.write(fd, chunk) - os.close(fd) - gzipped_file.close() - - shutil.copy(uncompressed, outputFile) - try: - os.remove(uncompressed) - os.remove(download) - except OSError: - pass - else: - shutil.copy(download, outputFile) - else: - print "File not found" - sys.exit(4) else: with open(outputFile, 'w+') as f: try: