Steim-2 has been the standard since 1991 and I could not find a single published comparison against a modern entropy coder. So I ran one, and the result was large enough that I think I must be measuring something wrong.
On five IU network stations, on the same exact samples decoded from the same miniSEED files:
| station | Steim-2 | this codec | smaller by |
|---|---|---|---|
| ANMO | 5.82 bits/sample | 4.39 | 24.7% |
| COLA | 7.62 | 5.35 | 29.8% |
| KONO | 7.35 | 4.79 | 34.8% |
| MAJO | 7.88 | 6.10 | 22.6% |
| TUC | 6.57 | 5.16 | 21.5% |
| average | 7.05 | 5.16 | 26.8% |
Method: read the miniSEED with ObsPy, take the decoded samples, measure the Steim-2 payload from the same file, compress those exact samples, and assert a byte-exact round trip before recording any size. If the round trip fails the script raises rather than printing a number.
Reading is about 2.8x slower than Steim-2 via obspy.read() — 46M against 132M samples/sec on the same machine. That is expected: Steim-2 unpacks bit fields and runs a cumulative sum, while this runs entropy decoding and an eight-tap linear prediction per sample.
Source, the comparison script, and the full methodology:
Three questions, and the first one matters most:
-
Is the comparison methodology sound? I am comparing against the Steim-2 payload bytes in the record, excluding headers. If that is the wrong denominator, the numbers are wrong and I would want to know.
-
Has anyone measured Steim-2 against a modern entropy coder before? I could not find a published comparison, which surprised me enough that I suspect I am missing something.
-
Would anyone be willing to run it on data I have not seen? Nobody outside this project has tested it, which is the largest gap in the work. A result that contradicts the above would be more useful to me than agreement.
Licence is AGPL. It is Python with an optional C extension, and it falls back cleanly without a compiler.
If this is already known, or the comparison is unfair in a way that is obvious to someone who works with SEED daily, I would genuinely rather hear it now than keep quoting a number that does not hold.