def compress(self, output_filename, miso_dirnames): """ Takes a set of MISO input directories and compresses them into 'output_filename'. This involves making SQL databases for all the MISO directories and then additionally compressing the results as a zip file. """ if os.path.isfile(output_filename): print "Error: %s already exists. Please delete to overwrite." \ %(output_filename) output_dir = "%s%s" % (output_filename, miso_db.MISO_DB_EXT) if os.path.isdir(output_dir): print "Error: Intermediate compressed directory %s " \ "exists. Please delete to overwrite." %(output_dir) sys.exit(1) for miso_dirname in miso_dirnames: print "Processing: %s" % (miso_dirname) if not os.path.isdir(miso_dirname): print "Error: %s not a directory." % (miso_dirname) sys.exit(1) if os.path.isfile(output_filename): print "Output file %s already exists, aborting. " \ "Please delete the file if you want " \ "compression to run." sys.exit(1) self.miso_dirs_to_compress = [] print "Copying source directory tree.." shutil.copytree(miso_dirname, output_dir, ignore=self.collect_miso_dirs) for dir_to_compress in self.miso_dirs_to_compress: rel_path = os.path.relpath(dir_to_compress, miso_dirname) comp_path = os.path.join(output_dir, rel_path) # Remove the place holder directory os.rmdir(comp_path) comp_path = "%s%s" % (comp_path, miso_db.MISO_DB_EXT) miso_db.miso_dir_to_db(dir_to_compress, comp_path) # Zip directory using conventional zip print "Zipping compressed directory with standard zip..." t1 = time.time() zipper(output_dir, output_filename) print "Deleting intermediate directory: %s" % (output_dir) shutil.rmtree(output_dir) t2 = time.time() print " - Standard zipping took %.2f minutes." \ %((t2 - t1)/60.) print "To access the SQLite representation of raw MISO output " print "(*.miso) files, simply unzip with the .miso_zip file " print "with standard unzip utility:\n" print " unzip %s" % (output_filename)
def compress(self, output_filename, miso_dirnames): """ Takes a set of MISO input directories and compresses them into 'output_filename'. This involves making SQL databases for all the MISO directories and then additionally compressing the results as a zip file. """ if os.path.isfile(output_filename): print "Error: %s already exists. Please delete to overwrite." \ %(output_filename) output_dir = "%s%s" %(output_filename, miso_db.MISO_DB_EXT) if os.path.isdir(output_dir): print "Error: Intermediate compressed directory %s " \ "exists. Please delete to overwrite." %(output_dir) sys.exit(1) for miso_dirname in miso_dirnames: print "Processing: %s" %(miso_dirname) if not os.path.isdir(miso_dirname): print "Error: %s not a directory." %(miso_dirname) sys.exit(1) if os.path.isfile(output_filename): print "Output file %s already exists, aborting. " \ "Please delete the file if you want " \ "compression to run." sys.exit(1) self.miso_dirs_to_compress = [] print "Copying source directory tree.." shutil.copytree(miso_dirname, output_dir, ignore=self.collect_miso_dirs) for dir_to_compress in self.miso_dirs_to_compress: rel_path = os.path.relpath(dir_to_compress, miso_dirname) comp_path = os.path.join(output_dir, rel_path) # Remove the place holder directory os.rmdir(comp_path) comp_path = "%s%s" %(comp_path, miso_db.MISO_DB_EXT) miso_db.miso_dir_to_db(dir_to_compress, comp_path) # Zip directory using conventional zip print "Zipping compressed directory with standard zip..." t1 = time.time() zipper(output_dir, output_filename) print "Deleting intermediate directory: %s" %(output_dir) shutil.rmtree(output_dir) t2 = time.time() print " - Standard zipping took %.2f minutes." \ %((t2 - t1)/60.) print "To access the SQLite representation of raw MISO output " print "(*.miso) files, simply unzip with the .miso_zip file " print "with standard unzip utility:\n" print " unzip %s" %(output_filename)
def pack_dirs(self, miso_dirnames): """ Takes a set of MISO input containing directories and packs them. 'miso_dirnames' are directory that have MISO output *somewhere* in them -- could be arbitrarily nested within the directory. This traverses the directory structure and converts raw *.miso text containing directory into *.miso_db files that are much more compact and are less of a burden for the filesystem. """ t1 = time.time() for miso_dirname in miso_dirnames: print "Processing: %s" %(miso_dirname) if not os.path.isdir(miso_dirname): print "Error: %s not a directory." %(miso_dirname) sys.exit(1) for dir_to_compress, subdirs, curr_fnames in os.walk(miso_dirname): if miso_db.is_miso_unpacked_dir(dir_to_compress): # It's a *.miso containing directory, so pack it # into a MISO database chrom_basename = os.path.basename(dir_to_compress) if len(chrom_basename) == 0: print "Error: Failed to pack MISO directory %s" \ %(miso_dirname) raise Exception, "Basename for %s is empty!" \ %(dir_to_compress) db_fname = \ os.path.join(os.path.dirname(dir_to_compress), "%s%s" %(chrom_basename, miso_db.MISO_DB_EXT)) # If packed file exists, move on if os.path.isfile(db_fname): continue status = miso_db.miso_dir_to_db(dir_to_compress, db_fname) # If packing was successful, delete the input directory # containing the *.miso file shutil.rmtree(dir_to_compress) t2 = time.time() print "Packing took %.2f minutes" %((t2 - t1)/60.)
def pack_dirs(self, miso_dirnames): """ Takes a set of MISO input containing directories and packs them. 'miso_dirnames' are directory that have MISO output *somewhere* in them -- could be arbitrarily nested within the directory. This traverses the directory structure and converts raw *.miso text containing directory into *.miso_db files that are much more compact and are less of a burden for the filesystem. """ t1 = time.time() for miso_dirname in miso_dirnames: print "Processing: %s" % (miso_dirname) if not os.path.isdir(miso_dirname): print "Error: %s not a directory." % (miso_dirname) sys.exit(1) for dir_to_compress, subdirs, curr_fnames in os.walk(miso_dirname): if miso_db.is_miso_unpacked_dir(dir_to_compress): # It's a *.miso containing directory, so pack it # into a MISO database chrom_basename = os.path.basename(dir_to_compress) if len(chrom_basename) == 0: print "Error: Failed to pack MISO directory %s" \ %(miso_dirname) raise Exception, "Basename for %s is empty!" \ %(dir_to_compress) db_fname = \ os.path.join(os.path.dirname(dir_to_compress), "%s%s" %(chrom_basename, miso_db.MISO_DB_EXT)) # If packed file exists, move on if os.path.isfile(db_fname): continue status = miso_db.miso_dir_to_db(dir_to_compress, db_fname) # If packing was successful, delete the input directory # containing the *.miso file shutil.rmtree(dir_to_compress) t2 = time.time() print "Packing took %.2f minutes" % ((t2 - t1) / 60.)