Ejemplo n.º 1
0
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) 
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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')