diff --git a/edosl0util/jpssrdr.py b/edosl0util/jpssrdr.py index 6b78f2287f0385bf237ea3b5b6e649829371e193..8ebe45d7f6a5a9a3ef1ac14d25e324a8e8679bc2 100644 --- a/edosl0util/jpssrdr.py +++ b/edosl0util/jpssrdr.py @@ -15,20 +15,15 @@ from collections import namedtuple import numpy as np from h5py import File as H5File -LOG = logging.getLogger(__name__) - - -class BaseStruct(c.BigEndianStructure): - _pack_ = 1 - _fields_ = [] +from edosl0util.headers import BaseStruct - def __repr__(self): - attrs = ' '.join('%s=%s' % (f[0], getattr(self, f[0])) for f in self._fields_) - return '<{} {}>'.format(self.__class__.__name__, attrs) +LOG = logging.getLogger(__name__) class StaticHeader(BaseStruct): - + """ + Common RDR static header. + """ _fields_ = [ ('satellite', c.c_char * 4), ('sensor', c.c_char * 16), @@ -44,7 +39,9 @@ class StaticHeader(BaseStruct): class Apid(BaseStruct): - + """ + Entry in the ApidList storage area. + """ _fields_ = [ ('name', c.c_char * 16), ('value', c.c_uint32), @@ -55,7 +52,9 @@ class Apid(BaseStruct): class PacketTracker(BaseStruct): - + """ + Entry in the PacketTracker storage area. + """ _fields_ = [ ('obs_time', c.c_int64), ('sequence_number', c.c_int32), @@ -109,10 +108,9 @@ class CommonRdr(namedtuple('CommonRdr', ('buf', 'header', 'apids'))): def _packets_for_apid(buf, header, apid): - - # we cache packet classes by their size - _pkt_impl_cache = {} - + """ + Generate tuples of (PacketTracker, Packet) + """ t_off = header.pkt_tracker_offset + apid.pkt_tracker_start_idx * c.sizeof(PacketTracker) for idx in range(apid.pkts_received): tracker = PacketTracker.from_buffer(buf, t_off) @@ -130,7 +128,7 @@ def _packets_for_apid(buf, header, apid): def _read_apid_list(header, buf): """ - Return a generator that yields `Apid`s + Generate Apid-s """ offset = header.apid_list_offset for idx in range(header.num_apids): @@ -140,8 +138,7 @@ def _read_apid_list(header, buf): def read_common_rdrs(sensor, filepath): """ - Return a generator that yields `CommonRdr` for each dataset provided by - `read_rdr_datasets`. + Generate CommonRdr-s for each dataset(granule) in `filelpath` """ for buf in read_rdr_datasets(sensor, filepath): header = StaticHeader.from_buffer(buf) @@ -151,8 +148,8 @@ def read_common_rdrs(sensor, filepath): def read_rdr_datasets(sensor, filepath): """ - Return a generator that yields bytearrays for each RawApplicationPackets - dataset in numerical order. + Generate byte arrays of granule RawApplicationPackets in granule number + order. """ sensor = sensor.upper() fobj = H5File(filepath) @@ -168,7 +165,7 @@ def read_rdr_datasets(sensor, filepath): def sort_packets_by_obs_time(packets): """ - Sort `Packet`s in-place by the PacketTracker obs_time (IET). + Sort `Packet`s in-place by the PacketTracker obs_time. """ return sorted(packets, key=lambda p: p.tracker.obs_time) @@ -218,13 +215,6 @@ if __name__ == '__main__': parser.add_argument('-v', action='store_true') parser.add_argument('-o', '--output') parser.add_argument('-f', '--skipfill', action='store_true') - """ - def interval(val): - fmt = '%Y-%m-%d %H:%M:%S' - start, end = val.split(',') - return datetime.strptime(start, fmt), datetime.strptime(end, fmt) - parser.add_argument('-t', '--trunc', type=interval) - """ parser.add_argument('sensor', choices=('viirs', 'atms', 'cris')) parser.add_argument('rdr') args = parser.parse_args()