This project attempts to enable JavaSeis IO capability in Python by providing SWIG wrappers for the C++ JSeisIO JavaSeis library.
Just enough of a SWIG interface has been written to allow basic reading of JavaSeis files. This includes opening a file and collecting metadata (extents, axis definitions, header words, etc), and reading single frames, both trace amplitudes and headers. Trace data and headers are returned as NumPy ndarray
data.
The JSeisIO library can be downloaded here. It can be built and installed (on Linux) by:
tar -xvf jseisIO-1.0.0-Source.tar.gz
cd jseisIO-1.0.0-Source
cmake src -DBUILD_SHARED_LIBRARIES=TRUE
make
sudo make install
If you have JSeisIO and NumPy (and SWIG) installed, then it should be as easy as running python setup.py install
. If JSeisIO is installed in a non-path location, then you should set the library_dirs
command in setup.cfg
, and if you don't want to set LD_LIBRARY_PATH
, then you should also set rpath
.
Jupyter notebooks are available in the demo/
directory which demonstrate use of pyjseisio
:
Here is the super quick, condensed version of how to get started reading JavaSeis data:
import numpy as np
import pyjseisio as js
dataset = js.open("../test/synth.js") # open the given JavaSeis file for reading
frame = dataset.readFrame(0) # read trace data from frame 0
For convenience, calls to the wrapped C++ methods are made through the jsdataset
class, which will hopefully hide all the interaction with SWIG/C++ types and let the user deal with purely python data.
Header words are packed into a hdrs
dictionary for easier use:
dataset.hdrs.keys() # returns a list of all header names
dataset.hdrs['OFFSET'] # returns a catalogedHdrEntry object for the header OFFSET
dataset.hdrs['OFFSET'].getDescription() # returns the description string for the header OFFSET
hdrBuf = dataset.readFrameHeader(0) # read the header buffer from frame 0
dataset.hdrs['OFFSET'].getVal(hdrBuf[0]) # returns the value of the OFFSET header for trace 0