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: