From 5f668a70b925afe123089f4e80f5e445b272d266 Mon Sep 17 00:00:00 2001 From: Bruce Flynn <brucef@ssec.wisc.edu> Date: Tue, 10 Nov 2015 22:23:06 +0000 Subject: [PATCH] Handle empty rdr datasets --- edosl0util/jpssrdr.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/edosl0util/jpssrdr.py b/edosl0util/jpssrdr.py index 62e9714..d27866b 100644 --- a/edosl0util/jpssrdr.py +++ b/edosl0util/jpssrdr.py @@ -152,7 +152,7 @@ def _generate_packet_datasets(group): dsnames = group.keys() for name in _sorted_packet_dataset_names(dsnames): ds = group[name] - yield np.array(ds) + yield name, np.array(ds) def _find_science_group(fobj): @@ -164,7 +164,10 @@ def _find_science_group(fobj): def _rdrs_for_packet_dataset(group): if group: - for buf in _generate_packet_datasets(group): + for name, buf in _generate_packet_datasets(group): + if buf.shape[0] < c.sizeof(StaticHeader): + LOG.warn('Not enough bytes for %s static header', name) + continue header = StaticHeader.from_buffer(buf) apids = _read_apid_list(header, buf) yield CommonRdr(buf, header, list(apids)) @@ -222,21 +225,21 @@ def write_rdr_datasets(filepath, science=True, ancillary=True, skipfill=False): rdrs = rdr_datasets(filepath) if science: - dest = open('{}.science.pkts'.format(rdrname), 'wb') - for idx, rdr in enumerate(rdrs['science']): - LOG.debug( - 'writing science gran %d %s-%s-%s', - idx, rdr.header.satellite, rdr.header.sensor, rdr.header.type_id) - _write_packets(rdr.packets(), dest, skipfill) + with open('{}.science.pkts'.format(rdrname), 'wb') as dest: + for idx, rdr in enumerate(rdrs['science']): + LOG.debug( + 'writing science gran %d %s-%s-%s', + idx, rdr.header.satellite, rdr.header.sensor, rdr.header.type_id) + _write_packets(rdr.packets(), dest, skipfill) if ancillary: for idx, rdr in enumerate(rdrs['ancillary']): packets = {a.value: rdr.packets_for_apid(a.value) for a in rdr.apids} for apid, packets in packets.items(): - dest = open('{}.anc{}.pkts'.format(rdrname, apid), 'wb') LOG.debug( 'writing ancillary gran %d %s-%s-%s %d', idx, rdr.header.satellite, rdr.header.sensor, rdr.header.type_id, apid.value) - _write_packets(packets, dest) + with open('{}.anc{}.pkts'.format(rdrname, apid), 'wb') as dest: + _write_packets(packets, dest) -- GitLab