/plotPOS

python plotter for POS (PBO Station Position Time Series) geodesy data, among other things

Primary LanguagePythonMIT LicenseMIT

plotPOS version 0.1

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.

examples

for help

$ ./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

plots ALL your .pos files in your pos/ directory with 8 cores, and writes offsets

$ ./plotPOS.py pos -plotdir plots -eqfiles itrf14.eq,auck.eq -fix_offsets -write_offsets -days_per_data 7 -numproc 8

features

  • 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)

TODOs

  • 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