mseedio is a lightweight Go module for reading and writing MiniSEED files, a commonly used format for seismological time series data.
- Read MiniSEED files and arbitrary
io.Readersources - Auto-detects byte order
- Supports encoded sample formats:
ASCIIINT16,INT24,INT32FLOAT32,FLOAT64Steim-1,Steim-2
- Write MiniSEED records with blockette 1000 and 1001 support
- Includes example reader and writer programs
$ go get github.com/bclswl0827/mseediopackage main
import (
"fmt"
"github.com/bclswl0827/mseedio"
)
func main() {
var ms mseedio.MiniSeedData
if err := ms.Read("record.mseed"); err != nil {
panic(err)
}
for _, s := range ms.Series {
fmt.Println(s.DataSection.Decoded)
}
}Use ReadFromReader to decode a MiniSEED stream from any io.Reader.
package main
import (
"fmt"
"github.com/bclswl0827/mseedio"
)
func main() {
var ms mseedio.MiniSeedData
ms.Init(mseedio.INT32, mseedio.MSBFIRST)
data := []int32{0, 1, 2, 3, 4}
err := ms.Append(data, &mseedio.AppendOptions{
SampleRate: 100,
StartTime: time.Now(),
SequenceNumber: "000001",
StationCode: "AAAAA",
LocationCode: "BB",
ChannelCode: "EHZ",
NetworkCode: "CC",
})
if err != nil {
panic(err)
}
out, err := ms.Encode(mseedio.OVERWRITE, mseedio.MSBFIRST)
if err != nil {
panic(err)
}
if err := ms.Write("test.mseed", mseedio.OVERWRITE, out); err != nil {
panic(err)
}
fmt.Println("written test.mseed")
}See the example/reader and example/writer directories for working sample programs.
This project is licensed under the MIT License.