Skip to content

Commit cd5a7f5

Browse files
committed
Persist meta to HDF5
1 parent 7f434d3 commit cd5a7f5

5 files changed

Lines changed: 16 additions & 7 deletions

File tree

‎data_models/data_model_helpers.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ def convert_visibility_to_hdf(vis, f):
129129
f.attrs['phasecentre_frame'] = vis.phasecentre.frame.name
130130
f.attrs['polarisation_frame'] = vis.polarisation_frame.type
131131
f.attrs['source'] = vis.source
132+
f.attrs['meta'] = str(vis.meta)
132133
f['data'] = vis.data
133134
f = convert_configuration_to_hdf(vis.configuration, f)
134135
return f
@@ -147,8 +148,9 @@ def convert_hdf_to_visibility(f):
147148
polarisation_frame = PolarisationFrame(f.attrs['polarisation_frame'])
148149
data = numpy.array(f['data'])
149150
source = str(f.attrs['source'])
151+
meta = ast.literal_eval(f.attrs['meta'])
150152
vis = Visibility(data=data, polarisation_frame=polarisation_frame,
151-
phasecentre=phasecentre, source=source)
153+
phasecentre=phasecentre, source=source, meta=meta)
152154
vis.configuration = convert_configuration_from_hdf(f)
153155
return vis
154156

@@ -170,6 +172,7 @@ def convert_blockvisibility_to_hdf(vis: BlockVisibility, f):
170172
f.attrs['polarisation_frame'] = vis.polarisation_frame.type
171173
f.attrs['frequency'] = vis.frequency
172174
f.attrs['source'] = vis.source
175+
f.attrs['meta'] = str(vis.meta)
173176
f.attrs['channel_bandwidth'] = vis.channel_bandwidth
174177
f['data'] = vis.data
175178
f = convert_configuration_to_hdf(vis.configuration, f)
@@ -191,9 +194,11 @@ def convert_hdf_to_blockvisibility(f):
191194
channel_bandwidth = f.attrs['channel_bandwidth']
192195
data = numpy.array(f['data'])
193196
source = f.attrs['source']
197+
meta = ast.literal_eval(f.attrs['meta'])
194198
vis = BlockVisibility(data=data, polarisation_frame=polarisation_frame,
195199
phasecentre=phasecentre, frequency=frequency,
196-
channel_bandwidth=channel_bandwidth, source=source)
200+
channel_bandwidth=channel_bandwidth, source=source,
201+
meta=meta)
197202
vis.configuration = convert_configuration_from_hdf(f)
198203
return vis
199204

‎data_models/memory_data_models.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ def __init__(self,
767767
time=None, antenna1=None, antenna2=None, vis=None,
768768
weight=None, imaging_weight=None, integration_time=None,
769769
polarisation_frame=PolarisationFrame('stokesI'), cindex=None,
770-
blockvis=None, source='anonymous'):
770+
blockvis=None, source='anonymous', meta=None):
771771
"""Visibility
772772
773773
:param data:
@@ -787,6 +787,7 @@ def __init__(self,
787787
:param cindex:
788788
:param blockvis:
789789
:param source:
790+
:param meta:
790791
"""
791792
if data is None and vis is not None:
792793
if imaging_weight is None:
@@ -831,6 +832,7 @@ def __init__(self,
831832
self.polarisation_frame = polarisation_frame
832833
self.frequency_map = None
833834
self.source = source
835+
self.meta = meta
834836

835837
def __str__(self):
836838
"""Default printer for Visibility
@@ -849,6 +851,7 @@ def __str__(self):
849851
s += "\tPolarisation Frame: %s\n" % self.polarisation_frame.type
850852
s += "\tPhasecentre: %s\n" % self.phasecentre
851853
s += "\tConfiguration: %s\n" % self.configuration.name
854+
s += "\tMetadata: %s\n" % self.meta
852855

853856
return s
854857

‎processing_components/visibility/coalesce.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def coalesce_visibility(vis: BlockVisibility, **kwargs) -> Visibility:
7070
weight=cwts, imaging_weight=cimwt,
7171
configuration=vis.configuration, integration_time=cintegration_time,
7272
polarisation_frame=vis.polarisation_frame, cindex=cindex,
73-
blockvis=vis)
73+
blockvis=vis, meta=vis.meta)
7474

7575
log.debug(
7676
'coalesce_visibility: Created new Visibility for coalesced data_models, coalescence factors (t,f) = (%.3f,%.3f)'
@@ -101,7 +101,7 @@ def convert_blockvisibility_to_visibility(vis: BlockVisibility) -> Visibility:
101101
weight=cwts, imaging_weight=cimaging_wts,
102102
configuration=vis.configuration, integration_time=cintegration_time,
103103
polarisation_frame=vis.polarisation_frame, cindex=cindex,
104-
blockvis=vis)
104+
blockvis=vis, meta=vis.meta)
105105

106106
log.debug('convert_visibility: Original %s, converted %s' % (vis_summary(vis),
107107
vis_summary(converted_vis)))

‎tests/data_models/test_buffer_data_models.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_readwriteblockvisibility(self):
4848
channel_bandwidth=self.channel_bandwidth,
4949
phasecentre=self.phasecentre,
5050
polarisation_frame=PolarisationFrame("linear"),
51-
weight=1.0)
51+
weight=1.0, meta={"ARL":0.0})
5252
self.vis = predict_skycomponent_visibility(self.vis, self.comp)
5353

5454
config = {"buffer": {"directory": self.dir},
@@ -68,6 +68,7 @@ def test_readwriteblockvisibility(self):
6868
assert numpy.abs(newvis.configuration.location.y.value - self.vis.configuration.location.y.value) < 1e-15
6969
assert numpy.abs(newvis.configuration.location.z.value - self.vis.configuration.location.z.value) < 1e-15
7070
assert numpy.max(numpy.abs(newvis.configuration.xyz - self.vis.configuration.xyz)) < 1e-15
71+
assert newvis.meta == self.vis.meta
7172

7273
def test_readwritegaintable(self):
7374
self.vis = create_blockvisibility(self.midcore, self.times, self.frequency,

‎tests/processing_components/test_visibility_coalesce.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def setUp(self):
3535
self.phasecentre = SkyCoord(ra=+0.0 * u.deg, dec=-35.0 * u.deg, frame='icrs', equinox='J2000')
3636
self.blockvis = create_blockvisibility(self.lowcore, self.times, self.frequency, phasecentre=self.phasecentre,
3737
weight=1.0, polarisation_frame=PolarisationFrame('stokesI'),
38-
channel_bandwidth=self.channel_bandwidth)
38+
channel_bandwidth=self.channel_bandwidth, meta={"ARL":0.9})
3939
def test_coalesce_decoalesce_zero(self):
4040
cvis = coalesce_visibility(self.blockvis, time_coal=0.0, frequency_coal=0.0)
4141
assert numpy.min(cvis.frequency) == numpy.min(self.frequency)

0 commit comments

Comments
 (0)