Python class for reading and writing NonLinLoc grid files.
(c) 2015-2018 Claudio Satriano, Natalia Poiata
Clone or download the project from GitHub, uncompress the archive (if needed), and install the codes by running (from within the main directory):
pip install .
pip install -e . to install in developer mode).
Reading a NLL grid
A NLL grid is composed of two files (
To read a NLL grid, do:
>>> from nllgrid import NLLGrid >>> grd = NLLGrid('somegrid.hdr')
or, using the
>>> grd = NLLGrid('somegrid.buf')
or even without any extension:
>>> grd = NLLGrid('somegrid')
A grid description can be obtained by:
The grid data array is accessed by
The grid can be plotted doing:
Use Python introspection (e.g.
dir(grd)) to see all the available
methods and attributes.
Creating a NLL grid
Suppose that you have a 3D data array stored into a NumPy array
First, create an empty NLL grid object:
>>> from nllgrid import NLLGrid >>> grd = NLLGrid()
then, add the data array and information on grid sampling and grid origin, e.g.:
>>> grd.array = mydata >>> grd.dx = 0.5 #km >>> grd.dy = 0.5 #km >>> grd.dz = 0.5 #km >>> grd.x_orig = -10 #km >>> grd.y_orig = -20. #km >>> grd.z_orig = -1. #km
Optionally, add a grid type and/or a geographic transformation:
>>> grd.type = 'VELOCITY' >>> grd.orig_lat = 40.63 >>> grd.orig_lon = 15.80 >>> grd.proj_name = 'LAMBERT' >>> grd.first_std_paral = 38. >>> grd.second_std_paral = 42. >>> grd.proj_ellipsoid = 'WGS-84'
Finally, give a basename and write to disk:
>>> grd.basename = 'mygrid' >>> grd.write_hdr_file() >>> grd.write_buf_file()
This will create the two files
If you want to save your grid in double precision (required for
instance by NLDiffLoc), change
saving the grid (default is
>>> grd.float_type = 'DOUBLE'
Note that if you want to use your grid as input for NonLinLoc
Grid2Time code, the grid type has to be
SLOW_LEN and your grid
array has to be transformed into slowness (in s/km) and multiplied
by the grid step (in km).