diff --git a/README b/README new file mode 100644 index 0000000000000000000000000000000000000000..4eb72cf106cc9c9a0f6a15450a691dc24ed8f6e1 --- /dev/null +++ b/README @@ -0,0 +1,82 @@ +# 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 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.