gnssrefl.spline_functions module
- gnssrefl.spline_functions.arc_plots(lspfigs, snrfigs, reflh, pgram, sat, datet, elvlims, elvt, snrdt, azdesc, xsignal)
moved these individual plots out of the way
lspfigs : bool
snrfigs : bool
- reflhnumpy array
reflector heights (m)
- pgramnumpy array
periodogram ?
sat : numpy array
datet : datetime
- elvlimslist of floats
min and max elev angle (deg)
- xsignalstr
i think this is L1, L2 etc
- gnssrefl.spline_functions.datetime2gps(dt)
- Parameters:
dt (datetime) –
- Returns:
gpstime
- Return type:
float
- gnssrefl.spline_functions.define_inputfile(station, year, doy, snr_ending)
- Parameters:
station (str) – 4 ch name of station
year (integer) –
doy (int) – day of year
snr_ending (int) – file ending, e.g. 66, 99
- Returns:
snrfile (str) – name of snrfile
snrdir (str) – name of output directory
cyyyy (str) – four character year
cdoy (str) – three character day of year
- gnssrefl.spline_functions.freq_out(x, ofac, hifac)
inputs: x ofac: oversamping factor hifac outputs: two sets of frequencies arrays
- gnssrefl.spline_functions.get_ofac_hifac(elevAngles, cf, maxH, desiredPrec)
computes two factors - ofac and hifac - that are inputs to the Lomb-Scargle Periodogram code. We follow the terminology and discussion from Press et al. (1992) in their LSP algorithm description.
- Parameters:
elevAngles (numpy array) – satellite elevation angles in degrees
cf (float) – L-band wavelength/2 in meters
maxH (float) – maximum LSP grid frequency in meters
desiredPrec (float) – the LSP frequency grid spacing in meters
- Returns:
ofac (float) – oversampling factor
hifac (float) – high-frequency factor
- gnssrefl.spline_functions.glonasswlen(prn, signal)
Given PRN, returns glonass wavelength
- Parameters:
prn (integer) – satellite number
signal (string) – L1 or L2 for glonass
- Returns:
wavelength – wavelength for the given signal
- Return type:
float
- gnssrefl.spline_functions.gps2datenum(gt)
needs documentation
- Parameters:
gt (float) – gps time
- Returns:
dn
- Return type:
datetime?
- gnssrefl.spline_functions.gps2datetime(gt)
needs documentation
- gnssrefl.spline_functions.invsnr_header(xdir, outfile_type, station, outfile_name)
Makes header for output of invsnr analysis
- Parameters:
xdir (str) – directory for the output file
outfile_type (str) – csv or txt
station (str) – 4 character name
outfile_name (str) – name of output - if empty string, it uses default
- Returns:
fileID (file) – used for writing to file
usetxt (bool) – boolean for the code calling this function to use if you write out special files, they go in the working directory
- gnssrefl.spline_functions.kristine_dictionary(alld, sat, xsignal)
22feb09 added beidou
- gnssrefl.spline_functions.l2c_l5_list(year, doy)
for given year and day of year, returns a satellite list of L2C and L5 transmitting satellites
to update this numpy array, the data are stored in a simple triple of PRN number, launch year, and launch date. author: kristine larson date: march 27, 2021 june 24, 2021: updated for SVN78
this should point to gps.py
- gnssrefl.spline_functions.loadsnrfile(snrfile, thedir)
loads the snr file , but does not pick out the signal. using two functions will make it easier to use more than one frequency
do time modification here now. column 4 is time since GPS began, in seconds
- Parameters:
snrfile (str) – name of the SNR file
thedir (str) – location of the SNR file
- Returns:
snrdata – floats. Time (python col 3) is converted to fake gps time
- Return type:
numpy array
- gnssrefl.spline_functions.make_wavelength_column(nr, snrdata, signal)
NEEDS DOCUMENTATION
- Parameters:
nr (integer) – number of rows in snrdata
snrdata (numpy array) – snrfile array
signal (string) – frequency ‘L1’,’L2, etc
- Returns:
onecolumn – snr data for the requested signal
- Return type:
one-d numpy array
- gnssrefl.spline_functions.plot_tracks(rh_arr, rh_dn)
send the array of LSP results (rh_arr) with time variable for plotting (rh_dn) kl feb09 adding beidou
- Parameters:
rh_arr (numpy array) – data used by inverse code. Need to add desc
rh_dn (numpy array) – data used by inverse code. Need to add desc
- gnssrefl.spline_functions.readklsnrtxt(snrfile, thedir, signal)
parses the contents of a snrfile. The file itself is read in a separate function now; if SNR data are zero for a given signal, the row is eliminated
As of Oct 28, 2023, gzip after reading SNR file
- Parameters:
snrfile (str) – variable with the file contents
thedir (str) – directory where it is located
signal (str) – ‘L1’, ‘L2’ etc.
- Returns:
snrdata – 0 : satellite, usual (100 added for glonass, 200 added for galileo) 1 : elev angle, deg 2 : azimuth angle, deg 3 : time in seconds since GPS began 4 : SNR data in db-Hz 5 : new column with wavelength in it, in meters.
- Return type:
numpy array of floats . Columns defined as:
- gnssrefl.spline_functions.residuals_cubspl_js(inparam, knots, satconsts, signal, snrdt_arr, final_list, Nfreq)
function needed for snr-fitting inverse analysis js must stand for joakim strandberg ???
this has to be modified for multi-frequency fspecdict and Nfreq 22feb09 added beidou
- Parameters:
inparam –
knots –
satconsts –
signal –
snrdt_arr –
final_list –
Nfreq –
- gnssrefl.spline_functions.residuals_cubspl_spectral(kval, knots, rh_arr)
function needed for inverse analysis
- Parameters:
kval –
knots (numpy array) –
rh_arr (numpy array) – reflector heights in meters
- gnssrefl.spline_functions.satfreq2waveL(satc, xsignal, fsatnos)
given satellite constellation (‘G’, ‘E’ …) xsignal (‘L1’,’L2’ …) satnos (satellite numbers) 2022feb09 added Beidou.
- gnssrefl.spline_functions.save_lsp_results(datet, maxind, reflh_sub, sat, elvt, azit, pgram_sub, snrdt, pktn, isignal)
just cleaning up - move the temp_arr definition to a function each column is defined below.
- Parameters:
datet (float) – seconds in GPSish time
reflh_sub (numpy of floats?) – windowed rh estimates
sat (int) – satellite number
elvt (numpy array of floats) – elevation angles(deg)
azit (numpy array of floats) – azimuth angles (deg)
snrdt (numpy array of floats) – detrended SNR data (DC component removed)
pktn (float) – peak 2 noise via Dave Purnell’s definition
isignal (int) – frequency, 1,2, or 5
- Returns:
tmp_arr
- Return type:
numpy array (12 columns)
- gnssrefl.spline_functions.set_refraction_model(station, dmjd, lsp, imodel)
imodel is 1 for simple refraction model eventually will add other refraction models
Looks like this was copied from other code and should be consolidated …
- Parameters:
station (str) – 4 ch station name
dmjd (float) – modified julian date
lsp (dictionary) – station information including latitude and longitude
imodel (integer) – set to 1 (time varying off) or 0 (time varying on)
- Returns:
p (float) – pressure (units?)
T (float) – temperature in deg C
irefr (int) – number value written to output files to keep track of refraction model
e (float) – water vapor pressure, hPa
Tm (float) – temperature in kelvin
lapse_rate (float) – see source code for details
- gnssrefl.spline_functions.signal2list(signal)
turns signal input (e.g. L1+L2) to a list 22feb09 tried to add more frequencies …
- Returns:
signal_list
- Return type:
str
- gnssrefl.spline_functions.simpleLSP(rhlims, lcar, precision, elvt, sinelvt, snrdt, sat, xsignal, screenstats, fout, pktnlim)
- Parameters:
input –
rhmax) (rhlims from dave's code (rhmin and) –
lcar (is gnss wavelength in m) –
periodogram (precision of the) –
meters (in) –
degrees (elvt - elevation angles in) –
sinelvt –
angle (sine elevation) –
data (snrdt - detrended snr) –
- gnssrefl.spline_functions.smarterWay(a)
just want to know how many true values there are in the a dictionary and then write them to a list, as in [‘G1’,’G2’] sure to be a better way - but this works for now
- gnssrefl.spline_functions.snr2arcs(station, snrdata, azilims, elvlims, rhlims, precision, year, doy, signal='L1', normalize=False, snrfigs=False, lspfigs=False, polydeg=2, gaptlim=300, pktnlim=4, savefile=False, screenstats=False, l2c_only=False, satconsts=['G', 'R', 'E'], **kwargs)
reads an array of snr data (output from readklsnrtxt) and organises into: reflector height estimates, stats and detrended snr data for inverse analysis
- Parameters:
station (str) – 4 ch station name
snrdata (numpy array) – contents of SNR datafile
azilims (list of floats) – azimuth angle limits (e.g., [90, 270])
elvlims (list of floats) – elevation angle limits (e.g., [5, 30])
rhlims (list of floats) – upper and lower reflector height limits (in metres) for quality control
signal (str) – default ‘L1’ (C/A), can also use L2…if want to use L5 or whatever else you need to make some edits
normalize (bool) – if you want to normalize the arcs so that they have the same amplitude
snrfigs (bool) – if you want to produce some figures of SNR arcs
lspfigs (bool) – if you want to produce some figures of Lomb-Scargle Periodograms
polydeg (float) – degree of polynomial for DC
gaptlim (float) – if there is a gap in time bigger than [gaptlim] seconds in a particular arc then it will be ignored
pktnlim (float) – peak to noise ratio qc condition = the peak of the LSP / mean of LSP within the range [rhlims]
savefile (bool) – if you want to save the output to a pickle file then use this parameter as the name (string)
kwargs (see below) –
tempres (int) – if want to use different temporal resolution to input data (in seconds)
satconsts (default use all given, otherwise specify from ['G', 'R', 'E'] (gps / glonass / galileo)) –
- Returns:
rh_arr (numpy array) – reflector height estimates and stats
snrdt_arr (numpy array) – detrended SNR data for inverse analysis
- gnssrefl.spline_functions.snr2spline(station, year, doy, azilims, elvlims, rhlims, precision, kdt, snrfit=True, signal='L1', savefile=False, doplot=True, rough_in=0.1, **kwargs)
function analyzes a SNR file and outputs a fitted spline
note that the file must be 24 hours long or it will not work
- Parameters:
station (str) – 4 ch station name
year (int) – full year
doy (int) – day of year
azilims (list of floats) – azimuth angle limits (e.g., [90, 270])
elvlims (list of floats) – elevation angle limits (e.g., [5, 30])
rhlims (list of floats) – upper and lower reflector height limits (in metres) for quality control e.g., [5, 10] is 5 and 10 m
precision (float) – precision of the periodogram (m)
kdt (float) – spline knot spacing in seconds
day (knots are spaced evenly except for at the start and end of the) –
spline (The idea is that you would ignore the first and last knots and then you could have a continuous) –
hours) (if kdt = 2 * 60 * 60 (2) –
0h (then knots at) –
1h –
3h –
21h (...) –
23h –
24h –
spline –
days (with knots every 2 hours over multiple) –
snrfit (True or False if you want to do inverse modelling of the SNR data) –
signal ('L1', 'L2', currently under development) –
savefile (set True if you want to save the output to a file) –
doplot (set True if you want to produce a plot with the output from the analysis) –
rough_in ('roughness' parameter in the inverse modelling of SNR data (see Strandberg et al., 2016)) –
kwargs (see below) –
tempres (if want to use different temporal resolution to input data (in seconds)) –
satconsts (default use all given, otherwise specify from ['G', 'R', 'E'] (gps / glonass / galileo)) –
- Returns:
invout (dictionary) – outputs from inverse analysis
This documentation was provided by the original author, David Purnell