python plotter for POS (PBO Station Position Time Series) geodesy data, among other things
requires: python3, numpy, scipy, matplotlib
the code as of now is geared towards GAMIT/GLOBK data (e.g. the format of the rename/eq files) but with a little tweaking it should be easy enough to use anything. on that note the inspiration behind a lot of the aesthetic design here is based on the plots generated by sh_plot_pos (mike floyd) which is included in the wonderful gamit/globk suite (http://geoweb.mit.edu/gg/).
code needs some tweaking but if you just need some nice looking plots and/or want to calculate coseismic offsets and/or correct for these, and for whatever reason tsview isn't doing it for you, please enjoy.
$ ./plotPOS.py -h
creates AUCK_fixed.png (offsets fixed) in dir "plots", also writes these offsets to an eq file, also shows a PSD figure
$ ./plotPOS.py AUCK.anu.orbit_unkno.pos -plotdir plots -eqfiles auck.eq -fix_offsets -write_offsets -plot_spectral -days_per_data 7
creates AUCK.png in dir "plots", original data with offsets uncorrected. n.b. days_per_data = # days in combined data file
$ ./plotPOS.py AUCK.anu.orbit_unkno.pos -plotdir plots -eqfiles auck.eq -days_per_data 7
$ ./plotPOS.py pos -plotdir plots -eqfiles itrf14.eq,auck.eq -fix_offsets -write_offsets -days_per_data 7 -numproc 8
-
calculates and optionally corrects for coseismic offsets by comparing a series of weighted low pass filters (also optionally writes these out as a gamit/globk "earthquake" .eq file)
-
fully parallel
-
plots these low-pass filters (defaults to 3 months & 1 year), even for non-uniform timeseries
-
optionally plots power density spectra
-
optional interactive mode to zoom in and easily identify DOY dates for ill-fitting data (good for marking bad campaign data)
-
calculate both white and frequency-dependent noise via spectral fitting
-
make some plot settings more sane/easier to customise
-
output offset-corrected POS files (for use in noise calculations with tsfit etc)
-
lots of tiny formatting issues
thanks & bear with me here. comments / tips / bug reports appreciated