def open_possibly_compressed_file(filename, compression_type=None): """ Notionally, cast "filename" to a file-like object. If filename is already file-like, return it. If it's compressed, return a decompressing file-like object. If it's a BAM file, return a file-like object that produces SAM format. Otherwise, just return an open file! """ if hasattr(filename, 'read'): return filename #It's already file-like if compression_type is None: compression_type = get_compression_type(filename) if compression_type == 'none': return open(filename, 'rb') elif compression_type == 'gzip': return gzip.open(filename, 'rb') elif compression_type == 'bzip2': return bz2.BZ2File(filename, 'rb') elif compression_type == 'bam': from nesoni import sam return sam.open_bam(filename) else: raise grace.Error('Unknown compression type: '+compression_type)
def open_possibly_compressed_file(filename, compression_type=None): """ Notionally, cast "filename" to a file-like object. If filename is already file-like, return it. If it's compressed, return a decompressing file-like object. If it's a BAM file, return a file-like object that produces SAM format. Otherwise, just return an open file! """ if hasattr(filename, 'read'): return filename #It's already file-like if compression_type is None: compression_type = get_compression_type(filename) if compression_type == 'none': return open(filename, 'rb') elif compression_type == 'gzip': return gzip.open(filename, 'rb') elif compression_type == 'bzip2': return bz2.BZ2File(filename, 'rb') elif compression_type == 'bam': from nesoni import sam return sam.open_bam(filename) else: raise grace.Error('Unknown compression type: ' + compression_type)
def open_possibly_compressed_file(filename): """ Read a file. It might be compressed. """ #if isinstance(filename, file): # return filename #Whatever #peek, f = peek_and_pipe(open_possibly_remote_file(filename), 4) from nesoni import sam if sam.is_bam(filename): return sam.open_bam(filename) f = open(filename, 'rb') peek = f.read(4) f.close() #f = open(filename,'rb') if peek.startswith('\x1f\x8b'): #command = 'gunzip' return gzip.open(filename, 'rb') elif peek.startswith('BZh'): #command = 'bunzip2' return bz2.BZFile(filename, 'rb') else: #command = None return open(filename, 'rb')
def open_possibly_compressed_file(filename): """ Read a file. It might be compressed. """ #if isinstance(filename, file): # return filename #Whatever #peek, f = peek_and_pipe(open_possibly_remote_file(filename), 4) from nesoni import sam if sam.is_bam(filename): return sam.open_bam(filename) f = open(filename,'rb') peek = f.read(4) f.close() #f = open(filename,'rb') if peek.startswith('\x1f\x8b'): #command = 'gunzip' return gzip.open(filename, 'rb') elif peek.startswith('BZh'): #command = 'bunzip2' return bz2.BZFile(filename, 'rb') else: #command = None return open(filename, 'rb')