Example #1
0
 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)
Example #2
0
 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)
Example #3
0
    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.)