예제 #1
0
def decompress_poly_debug(hdu):
    "Decompress an HDU containing polynomial compressed data in debug form"

    if hdu.columns.names != ['ISCOMPR', 'CKLEN', 'UNCOMPR',
                             'POLY', 'CHMASK', 'CHEBY']:
        raise ValueError('unknown sequence of columns for polynomial '
                         'compression: %s',
                         str(hdu.columns.names))

    inv_cheby = None
    samples = np.empty(0, dtype='float64')
    is_compressed, chunk_len, uncompr, \
        poly, cheby_mask, cheby = [hdu.data.field(x)
                                   for x in range(6)]

    num_of_chunks = is_compressed.size
    poly_size = np.array([poly[idx].size for idx in range(num_of_chunks)],
                         dtype=np.uint8)
    cheby_size = np.array([cheby[idx].size for idx in range(num_of_chunks)],
                          dtype=np.uint16)
    chunk_array = ppc.build_chunk_array(is_compressed=is_compressed.astype(np.uint8),
                                        chunk_len=chunk_len.astype(np.uint16),
                                        uncompr=np.concatenate(uncompr),
                                        poly_size=poly_size,
                                        poly=np.concatenate(poly),
                                        cheby_size=cheby_size,
                                        cheby_mask=np.concatenate(cheby_mask),
                                        cheby=np.concatenate(cheby))

    return ppc.decompress_polycomp(chunk_array), 'D'
예제 #2
0
def decompress_poly_debug(hdu):
    "Decompress an HDU containing polynomial compressed data in debug form"

    if hdu.columns.names != [
            'ISCOMPR', 'CKLEN', 'UNCOMPR', 'POLY', 'CHMASK', 'CHEBY'
    ]:
        raise ValueError(
            'unknown sequence of columns for polynomial '
            'compression: %s', str(hdu.columns.names))

    inv_cheby = None
    samples = np.empty(0, dtype='float64')
    is_compressed, chunk_len, uncompr, \
        poly, cheby_mask, cheby = [hdu.data.field(x)
                                   for x in range(6)]

    num_of_chunks = is_compressed.size
    poly_size = np.array([poly[idx].size for idx in range(num_of_chunks)],
                         dtype=np.uint8)
    cheby_size = np.array([cheby[idx].size for idx in range(num_of_chunks)],
                          dtype=np.uint16)
    chunk_array = ppc.build_chunk_array(is_compressed=is_compressed.astype(
        np.uint8),
                                        chunk_len=chunk_len.astype(np.uint16),
                                        uncompr=np.concatenate(uncompr),
                                        poly_size=poly_size,
                                        poly=np.concatenate(poly),
                                        cheby_size=cheby_size,
                                        cheby_mask=np.concatenate(cheby_mask),
                                        cheby=np.concatenate(cheby))

    return ppc.decompress_polycomp(chunk_array), 'D'
예제 #3
0
def test_high_level_polycom():
    max_error = 0.1

    values = np.array([1.0, 2.0, 3.0, 4.0, 3.0, 2.0, 1.0, 2.0, 6.0, 7.0, 9.0],
                      dtype='float64')
    params = pypolycomp.Polycomp(4, 2, max_error,
                                 pypolycomp.PCOMP_ALG_USE_CHEBYSHEV)
    chunks = pypolycomp.compress_polycomp(values, params)
    assert len(chunks) == 3

    decompr = pypolycomp.decompress_polycomp(chunks)
    assert np.all(np.abs(decompr - values) < max_error)
예제 #4
0
def test_high_level_polycom():
    max_error = 0.1

    values = np.array([1.0, 2.0, 3.0, 4.0, 3.0, 2.0, 1.0, 2.0, 6.0, 7.0, 9.0],
                      dtype='float64')
    params = pypolycomp.Polycomp(4, 2, max_error,
                                 pypolycomp.PCOMP_ALG_USE_CHEBYSHEV)
    chunks = pypolycomp.compress_polycomp(values, params)
    assert len(chunks) == 3

    decompr = pypolycomp.decompress_polycomp(chunks)
    assert np.all(np.abs(decompr - values) < max_error)