-
-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
Is there a syntax to set compression on individual columns of an astropy table? In the following example, using all_array_compression compresses the columns, but using AsdfFile.set_array_compression() does not.
import numpy as np
from astropy.table import Table
import asdf
t = Table(data=dict(col=np.ones(1)))
with asdf.AsdfFile(tree=dict(table=t)) as af:
af.write_to('test.asdf')
with asdf.AsdfFile(tree=dict(table=t)) as af:
af.write_to('test_compressed.asdf',
all_array_compression='zlib',
)
with asdf.AsdfFile(tree=dict(table=t)) as af:
af.set_array_compression(af['table']['col'], 'zlib') # this has no effect
af.write_to('test_compressed_col.asdf')Comparing test.asdf with test_compressed_col.asdf, we see that they have identical checksums (and there's no zlib tag at the beginning of the binary block). So the set_array_compression had no effect.
I've tried variants of this like
set_array_compression(af['table']['col'].base, 'zlib')
set_array_compression(af['table']['col'].data, 'zlib')but I couldn't get it to work.
I did dig around in the source code a bit, and it looked to me like it's trying to compare the ultimate ndarray base to check if two arrays are the same, but maybe a copy is being made somewhere that's thwarting this detection.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels