# EdosL0Util Tools for mangling EDOS L0 PDS files. ### Features: * API for streaming packets * CLI tools for: - merging multiple PDS files - splitting pds into X minute files - truncating files to specified time range - inspecting PDS info * Dumping JPSS H5 RDRs to L0 PDS files ### Packet streaming To obtain a simple stream of packets, with support for secondary header parsing use the ``PacketStream`` class as an iterator. >>> from edosl0util.stream import PacketStream >>> stream = PacketStream(open('P1570826VIIRSSCIENCEAS15286023813501.PDS')) >>> stream.next() <Packet apid=826 seqid=13072 stamp=2015-10-13 00:22:04.042798> >>> packets = list(stream) >>> first, last, info = stream.info() >>> print("First:{}\nLast:{}".format(first, last)) First:2015-10-13 00:22:04.042798 Last:2015-10-13 02:04:58.107582 >>> print info defaultdict(<function edosl0util.stream.<lambda>>, {800: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 801: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 802: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 803: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 804: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 805: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 806: {'count': 59005, 'last_seqid': 2684, 'num_missing': 0}, 807: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 808: {'count': 59007, 'last_seqid': 2686, 'num_missing': 0}, 809: {'count': 59007, 'last_seqid': 2686, 'num_missing': 0}, 810: {'count': 32351, 'last_seqid': 16043, 'num_missing': 0}, 811: {'count': 59007, 'last_seqid': 2686, 'num_missing': 0}, 812: {'count': 59007, 'last_seqid': 2686, 'num_missing': 0}, 813: {'count': 114543, 'last_seqid': 5214, 'num_missing': 0}, 814: {'count': 59007, 'last_seqid': 2686, 'num_missing': 0}, 815: {'count': 58994, 'last_seqid': 2673, 'num_missing': 0}, 816: {'count': 58990, 'last_seqid': 2669, 'num_missing': 0}, 817: {'count': 114510, 'last_seqid': 5181, 'num_missing': 0}, 818: {'count': 62766, 'last_seqid': 11834, 'num_missing': 0}, 819: {'count': 62766, 'last_seqid': 11834, 'num_missing': 0}, 820: {'count': 62766, 'last_seqid': 11834, 'num_missing': 0}, 821: {'count': 59007, 'last_seqid': 2686, 'num_missing': 0}, 825: {'count': 83280, 'last_seqid': 3768, 'num_missing': 0}, 826: {'count': 3471, 'last_seqid': 158, 'num_missing': 0}}) To handle ``PacketTooShort`` and ``NonSequentialSeqId`` errors you have to iterate manually: >>> from edosl0util.stream import PacketStream >>> stream = PacketStream(open('P1570826VIIRSSCIENCEAS15286023813501.PDS')) >>> while True: ...: try: ...: packet = stream.next() ...: print(packet) ...: except PacketTooShort as err: ...: print("Corrupt packet stream: {:s}".format(packet)) ...: break ...: except NonConsecutiveSeqId as err: ...: print("Missing packet: {:s}".format(err)) ...: except StopIteration: ...: break ### Command Line Tools There are command line tools for merging, splitting, truncating and inspecting L0 PDS files. * edosl0merge * edosl0split * edosl0trunc * edosl0info * rdr2l0 If you have quesions or comments related to this software contac brucef@ssec.wisc.edu.
Bruce Flynn
authored
Replaced the merge code with something less efficient but easier to grok. New stream impl that does not read the data that will be used to create and index used in new merge code.
Name | Last commit | Last update |
---|---|---|
edosl0util | ||
scripts | ||
.gitignore | ||
MANIFEST.in | ||
README | ||
build.sh | ||
setup.py |