gnssrefl.sd_libs module

gnssrefl.sd_libs.RH_ortho_plot2(station, H0, year, txtdir, fs, time_rh, rh, gap_min_val, th, spline, delta_out, csvfile, gap_flag)

Makes a plot of the final spline fit to the data. Output time interval controlled by the user.

It also now writes out the file with the spline fit

Parameters:
  • station (str) – name of station, 4 ch

  • H0 (float) – datum correction (orthometric height) to convert RH to MSL data, in meters

  • year (int) – year of the time series (ultimately should not be needed)

  • txtdir (str) – location of plot

  • fs (int) – fontsize

  • time_rh (numpy of floats) – time of rh values, in fractional doy I believe

  • rh (numpy of floats) – refl hgt in meters

  • gap_min_val (float) – minimum length gap allowed, in day of year units

  • th (numpy floats) – time values in MJD

  • spline (output of interpolate.BSpline) – used for fitting

  • delta_out (int) – how often spline is printed, in seconds

  • csvfile (bool) – print out csv instead of plain txt

  • gap_flag (bool) – whether to write 999 in file where there are gaps

gnssrefl.sd_libs.find_ortho_height(station, extension)

Find orthometric (sea level) height used in final subdaily spline output and plots. This value should be defined for the GPS L1 phase center of the GNSS antenna as this is what is assumed in the subdaily code.

Parameters:
  • station (str) – 4 ch station name

  • extension (str) – gnssir analysis, extension mode

Returns:

Hortho – orthometric height from gnssir json analysis file as defined as Hortho, in meters. If your preferred value for Hortho is not present, it is calculated from the ellipsoidal height and EGM96.

Return type:

float

gnssrefl.sd_libs.flipit3(tvd, col)

Third version of the flipit code. It takes a time series of RH values, extracts 24 hours of observations from the beginning and end of the series, uses them as fake data to make the spline fit stable. Also fill the temporal gaps with fake data Previous versions assumed you were going to have full days of data at the beginning and end of the series.

This version uses MJD rather than day of year for x-axis

Parameters:
  • tvd (numpy array of floats) – output of LSP runs.

  • col (integer) – column number (in normal speak) of the RH results in python-speak, this will have one subtracted from it

Returns:

  • tnew (numpy array of floats) – time in MJD

  • ynew (numpy array) – RH in meters

gnssrefl.sd_libs.mirror_plot(tnew, ynew, spl_x, spl_y, txtdir, station, beginT, endT)

Makes a plot of the spline fit to the mirrored RH data Plot is saved to txtdir as station_rhdot1.png

Parameters:
  • tnew (numpy of floats) – time in MJD

  • ynew (numpy of floats) – RH in meters

  • spl_x (numpy of floats) – time in days of year

  • spl_y (numpy of floats) – smooth RH, meters

  • txtdir (str) – directory for plot

  • station (str) – name of station for title

  • beginT (float) – first measurement time (MJD) for RH measurement

  • endT (float) – last measurement time (MJD) for RH measurement

gnssrefl.sd_libs.mjd_to_obstimes(mjd)

takes mjd array and converts to datetime for plotting.

Parameters:

mjd (numpy array of floats) – mod julian date

Returns:

dt

Return type:

numpy array of datetime objects

gnssrefl.sd_libs.numsats_plot(station, tval, nval, Gval, Rval, Eval, Cval, txtdir, fs, hires_figs, year)

makes the plot that summarizes the number of satellites in each constellation per epoch

Parameters:
  • station (str) – name of the station

  • tval (numpy array) – datetime objects?

  • nval (numpy array) – number of total satellites at a given epoch

  • Gval (numpy array) – number of galileo satellites at an epoch

  • Rval (numpy array) – number of glonass satellites at an epoch

  • Eval (numpy array) – number of galileo satellites at an epoch

  • Cval (numpy array) – number of beidou satellites at an epoch

  • txtdir (str) – where results are stored

  • fs (int) – fontsize for the plots

  • hires_figs (bool) – try to plot high resolution

  • year (int) – calendar year

gnssrefl.sd_libs.pickup_subdaily_json_defaults(xdir, station, extension)

picks up an existing gnssir analysis json. augments with subdaily parameters if needed. Returns the dictionary.

Parameters:
  • xdir (str) – REFL_CODE code location

  • station (str) – name of station

  • extension (str) – possible extension location

Returns:

lsp – contents of gnssir json

Return type:

dictionary

gnssrefl.sd_libs.print_badpoints(t, outliersize, txtdir, real_residuals)

prints outliers to a file.

Parameters:
  • t (numpy array) – lomb scargle result array of “bad points”. Format given below

  • outliersize (float) – outlier criterion, in meters

  • txtdir (str) – directory where file is written

  • real_residuals (numpy array of floats) – assume this is RH residuals in meters

Return type:

writes to a file called outliers.txt in the Files/station area

gnssrefl.sd_libs.quickTr(year, doy, frachours)

takes timing from lomb scargle code (year, doy) and UTC hour (fractional) and returns a date string

Parameters:
  • year (int) – full year

  • doy (int) – day of year

  • frachours (float) – real-valued UTC hour

Returns:

datestring – date ala YYYY-MM-DD HH:MM:SS

Return type:

str

gnssrefl.sd_libs.rh_plots(otimes, tv, station, txtdir, year, d1, d2, percent99)

overview plots for rh_plot

Parameters:
  • otimes (numpy array of datetime objects) – observation times

  • tv (numpy array) – gnssrefl results written into this variable using loadtxt

  • station (str) – station name, only used for the title

  • txtdir (str) – directory where the plots will be written to

  • year (int) – what year is being analyzed

  • d1 (int) – minimum day of year

  • d2 (int) – maximum day of year

  • percent99 (bool) – whether you want only the 1-99 percentile plotted

gnssrefl.sd_libs.rhdot_plots(th, correction, rhdot_at_th, tvel, yvel, fs, station, txtdir, hires_figs, year)

makes the rhdot correction plots

Parameters:
  • th (numpy array) – time of obs, MJD

  • correction (numpy array) – rhcorrections in meters

  • rhdot_at_th (numpy array of floats) – spline fit for rhdot in meters

  • tvel (numpy array of floats) – time for surface velocity in MJD

  • yvel (numpy array of floats) – surface velocity in m/hr

  • fs (integer) – fontsize

  • station (str) – station name

  • txtdir (str) – file directory for output

  • hires_figs (bool) – whether you want eps instead of png

  • year (int) – calendar year

gnssrefl.sd_libs.stack_two_more(otimes, tv, ii, jj, stats, station, txtdir, sigma, kplt, hires_figs, year)

makes a plot of the reflector heights before and after minimal editing

Parameters:
  • otimes (numpy array of datetime objects) – observation times

  • tv (numpy array) – variable with the gnssrefl LSP results

  • ii (numpy array) – indices of good data

  • jj (numpy array) – indices of bad data

  • station (str) – station name

  • txtdir (str) – directory where plots will be written

  • sigma (float) – what kind of standard deviation is used for outliers (3sigma, 2.5 sigma etc)

  • kplt (bool) – make extra plot for kristine

  • year (int) – calendar year

gnssrefl.sd_libs.subdaily_resids_last_stage(station, year, th, biasCor_rh, spline_at_GPS, fs, strsig, hires_figs, txtdir, ii, jj, th_even, spline_whole_time)

Makes the final residual plot for subdaily (after RHdot and IF correction made). Returns the bad points …

Allows either the original or multiyear option..

Parameters:
  • station (str) – 4 character station name

  • year (int) – calendar year

  • th (numpy array of ??) – time variable of some kind, fractional day of year ?

  • biasCor_rh (numpy array of floats) – refl hgts that have been corrected for RHdot and IF

  • spline_at_GPS (numpy array of floats) – RH derived From the spline fit and calculated at GPS time tags

  • fs (int) – font size

  • strsig (str) – sigma string to go on the legend

  • hires_figs (bool) – whether to save the plots with better resolution

  • txtdir (str) – directory where the plot will be saved

  • ii (numpy array) – indices of the outliers?

  • jj (numpy array) – indices of the values to keep?

  • th_even (numpy array) – evenly spaced time values, day of year

  • spline_whole_time (numpy array of flots) – splinefit for ???

Returns:

badpoints2 – RH residuals

Return type:

numpy array of floats

gnssrefl.sd_libs.testing_nvals(Gval, Rval, Eval, Cval)

writing the number of observations per constellation as a test. not currently used

Parameters Gval: numpy array

GPS RH values

Rvalnumpy array

GLONASS RH values

Evalnumpy array

Galileo RH values

Cvalnumpy

Beidou RH values

writes to a file - kristine.txt returns nothing

gnssrefl.sd_libs.the_last_plot(tv, station, plotname)

simple - reveresed - reflector height plot

Parameters station : str

station name, four characters

tvnumpy array

output of the subdaily code

plotnamestr

where the plot should be stored

gnssrefl.sd_libs.two_stacked_plots(otimes, tv, station, txtdir, year, d1, d2, hires_figs)

This actually makes three stacked plots - not two, LOL It gives an overview for quality control

Parameters:
  • otimes (numpy array of datetime objects) – observations times

  • tv (numpy array) – gnssrefl results written into this variable using loadtxt

  • station (str) – station name, only used for the title

  • txtdir (str) – where the plots will be written to

  • year (int) – what year is being analyzed

  • d1 (int) – minimum day of year

  • d2 (int) – maximum day of year

  • hires_figs (bool) – true for eps instead of png

gnssrefl.sd_libs.write_spline_output(iyear, th, spline, delta_out, station, txtdir, Hortho)

Writing the output of the spline fit to the final RH time series. No output other than this text file for year 2023 and station name ssss:

$REFL_CODE/Files/ssss/ssss_2023_spline_out.txt

I do not think this is used anymore. It has been consolidated with the plot code.

Parameters:
  • iyear (int) – full year

  • th (numpy array) – time values of some kind … maybe fractional day of years?

  • spline (fit, output of interpolate.BSpline) – needs doc

  • delta_out (int) – how often you want the splinefit water level written, in seconds

  • station (str) – station name

  • txtdir (str) – output directory

  • Hortho (float) – orthometric height used to convert RH to something more sea level like meters

gnssrefl.sd_libs.writejsonfile(ntv, station, outfile)

subdaily RH values written out in json format

This does not appear to be used

Parameters:
  • ntv (numpy of floats) – LSP results

  • station (str) – 4 ch station name

  • outfile (str) – filename for output

gnssrefl.sd_libs.writeout_spline_outliers(tvd_bad, txtdir, residual, filename)

Write splinefit outliers to a text file.

Parameters:
  • tvd_bad (numpy array) – output of the lomb scargle calculations

  • txtdir (str) – directory for the output, i.e. $REFL_CODE/FiLes/station

  • residual (numpy array) – RH outliers in units of meters (!)

  • filename (str) – name of file being written