Skip to content
Snippets Groups Projects
Bruce Flynn's avatar
Bruce Flynn authored
6caa44a5
History
Name Last commit Last update
edosl0util
scripts
.gitignore
MANIFEST.in
README
setup.py
# 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.