Eric Lindsey
Assistant Professor, University of New Mexico
Projects
Slice: Efficient Bayesian Monte Carlo sampler for inverse problems.
Given a misfit function, forward model, and error statistics, the algorithm efficiently generates a set of samples with a distribution matching the model's posterior probability distribution function (pdf). Slice is related to the Gibbs sampling method, but without the requirement for an analytic form of the pdf along each dimension. Compared to the Metropolis method, the algorithm has a very low inter-sample correlation length and thus is extremely efficient -- the 'burn in' period is typically only a few hundred samples per dimension. Convergence is not a problem except in cases of extreme correlations or widely separated misfit minima.
This is a Fortran-90 implementation of the algorithm described in Neal, R. M. (2003), Slice sampling, Ann. Stat., 31, 705–767. Also includes basic plotting scripts, and a grid sampling routine with the same inputs/outputs that may be faster in very low dimensional cases. More details are available in the readme.
SliceMPI: Parallelization of the above code. Makes use of the statistical independence of each Markov Chain to run efficiently on an arbitrary number of processors.
Remove_restore: Wavenumber-domain combination of GPS and InSAR.
InSAR data provides extremely high resolution velocity measurements, but is subject to significant long-wavelength errors. GPS data provides high accuracy at long wavelengths, but is very low resolution. This method combines the two via a simple interpolation and filtering method, producing one dataset controlled by GPS at long wavelengths, while retaining unaltered InSAR coverage of short-wavelength features.
This is my own implementation of the methods described in Tong, X. et al. (2013), High-resolution interseismic velocity data along the San Andreas Fault from GPS and InSAR, J. Geophys. Res., 118, 1-21. For an example of how to project and interpolate the GPS data, see interp_gps.m. You will also need the components of the satellite look vector, which get_look.sh can provide.
Tutorials
A collection of scripts, notes, and short programs I've written to make some common tasks I do easier. If you find them useful I'd love to hear your comments or suggestions. Of course, no warranty is implied but I will be happy to answer questions.
GPS
See my tutorial pages here. Basic instructions for using:
Sharc
TEQC
GAMIT
GLOBK
Track
GAMIT/GLOBK/Track installation
rinex_all.py: Automate the creation of RINEX files from raw GPS data. You provide metadata including site name, serial numbers, antenna slant heights, etc., and the script converts the raw data to a RINEX file with correct headers. Uses UNAVCO's teqc utility; currently accepts Ashtech Z-12 R-files. Also requires teqc_util.py. Input tables: info.dat(observation metadata), slant.dat (antenna dimensions from ~/gg/tables/hi.dat).
GMTSAR
Utilities
A collection of scripts, notes, and short programs I've written to make some common tasks I do easier. If you find them useful I'd love to hear your comments or suggestions. Of course, no warranty is implied but I will be happy to answer questions.
GPS
rinex_all.py: Automate the creation of RINEX files from raw GPS data. You provide metadata including site name, serial numbers, antenna slant heights, etc., and the script converts the raw data to a RINEX file with correct headers. Uses UNAVCO's teqc utility; currently accepts Ashtech Z-12 R-files. Also requires teqc_util.py. Input tables: info.dat(observation metadata), slant.dat (antenna dimensions from ~/gg/tables/hi.dat).
GMTSAR
stack.sh: Stacking of interferograms produced in GMTSAR. Stacking is done in radar coordinates and the result may be masked via a correlation threshold. Written in bash, not csh -- but you can call it from any command line.
2d-decompose.gmt: If you have two independent datasets from opposing look directions, this script decomposes the information into two alternative directions, assuming the third is zero. For example, fault-parallel and vertical for a strike-slip environment.
gmtsar2roi_int.csh, roi2gmtsar_int.csh: Convert between GMTSAR-style Scene1:Scene2 and ROI_PAC-style yymmdd_ yymmdd interferogram lists.
get_look.sh: Easily get satellite look vector components as grd files, based on the DEM.
GMT
showgrd.gmt: Automates basic plotting of spatial data with the Generic Mapping Toools (GMT). Options include selection and scaling of the color palette, illumination of the image using a topo file, fault map overlays, and direct passing of other GMT arguments. For example, if you have a dataset in "data.grd" and topography in "topo.grd", you could use "showgrd.gmt -G data.grd -T topo.grd -I" to produce an image of the data with shading provided by the topography. You can even output the GMT commands to a file for further customization.
proj.gmt, proj1.gmt, projdat.gmt: Extract, plot and save profiles across a spatial data set using GMT. You input the dataset and specify the rectangular profile via center point, azimuth, and dimensions. Variations allow selection of single or multiple profiles from either .grd or ASCII files. Requires showgrd to plot the profile on top of the image.
Matlab
exportcpt.m, importcpt.m: Read/write GMT-formatted .cpt files from Matlab/Octave. As easy as it sounds.
UNIX Shell
plot.sh: Quickly view data from selected columns using GNUplot. Example: "plot.sh data.dat 2 3 4" to plot cols. 3 and 4 vs col. 2.
date.sh: Simple bash function to convert Julian date to decimal year.
renameall.sh: Rename all files under a given path via the pattern s/str1/str2/
Perl
add_apr.pl: Adds ECEF coordinates to RINEX files matching names found in your GAMIT-produced .apr or l-file.
interp1d.pl: 1-D linear interpolation from the command line. What could be simpler?
ecef2lla.pl, lla2ecef: Convert between the earth-centered, earth-fixed (XYZ) coordinate system and geodetic lon, lat, altitude (WGS84). Reads from stdin, writes to stdout. Optional flag also rotates vectors (eg. uncertainties, assumed uncorrelated) specified in cols. 4-6.