gnssrefl.gnssir_v2 module
- gnssrefl.gnssir_v2.apply_refraction_corr(lsp, ele, p, T)
- Parameters:
lsp (dictionary) – info from make_json_input such as station lat and lon
ele (numpy array of floats) – elevation angles (deg)
p (float) – pressure
T (float) – temperature (C)
- Returns:
ele – elevation angle (deg)
- Return type:
numpy array of floats
- gnssrefl.gnssir_v2.check_azim_compliance(initA, azlist)
Check to see if your arc is in one of the requested regions
- Parameters:
initA (float) – azimuth of selected arc (deg)
azlist (list of floats) – list of acceptable azimuth regions
- Returns:
keeparc – whether the arc is in a selected azimuth range
- Return type:
bool
- gnssrefl.gnssir_v2.find_mgnss_satlist(f, year, doy)
find satellite list for a given frequency and date
- Parameters:
f (integer) – frequency
snrExist (numpy array, bool) – tells you if a signal is (potentially) legal
year (int) – full year
doy (int) – day of year
- Returns:
satlist – satellites to use
- Return type:
numpy list of integers
- gnssrefl.gnssir_v2.gnssir_guts_v2(station, year, doy, snr_type, extension, lsp)
Computes lomb scargle periodograms for a given station, year, day of year etc.
Arcs are determined differently than in the first version of the code, which was quadrant based. This identifies arcs and applies azimuth constraints after the fact.
2023-aug-02 trying to fix the issue with azimuth print out being different than azimuth at lowest elevation angle
if screenstats is True, it prints to a log file now, directory $REFL_CODE/logs/ssss
- Parameters:
station (str) – 4 character station name
year (int) – full year
doy (int) – day of year
snr_type (int) – snr file type
extension (str) – optional subdirectory to save results
lsp (dictionary) –
- e1float
min elev angle, deg
- e2float
max elev angle, deg
- freqs: list of int
frequencies to use
- minHfloat
min reflector height, m
- maxHfloat
max reflector height, m
- NReglist of floats
noise region for RH peak2noise , meters
- azval2list of floats
new pairs of azimuth regions, i.e. [0 180 270 360]
- delTmaxfloat
max allowed arc length in minutes
- pele: list of floats
min and max elev angle in DC removal
- PkNoisefloat
peak to noise value for QC
- edifffloat
elev angle difference for arc length, QC
- reqAmplist of floats
list of required periodogram amplitude for QC for each frequency
- ellist: list of floats
added 23jun16, allow multiple elevation angle regions
- apriori_rhfloat
a priori reflector height, used in NITE, meters
- gnssrefl.gnssir_v2.local_update_plot(x, y, px, pz, ax1, ax2, failure)
updates optional result plot for SNR data and Lomb Scargle periodograms
- Parameters:
x (numpy array) – elevation angle (deg)
y (numpy array) – SNR (volt/volt)
px (numpy array) – reflector height (m)
pz (numpy array) – spectral amplitude (volt/volt)
ax1 (matplotlib figure control) – top plot
ax2 (matplotlib figure control) – bottom plot
failure (boolean) – whether periodogram fails QC
- gnssrefl.gnssir_v2.make_parallel_proc_lists(year, doy1, doy2, nproc)
make lists of dates for parallel processing to spawn multiple jobs
- Parameters:
year (int) – year of processing
doy1 (int) – start day of year
2 (doy) – end day of year
- Returns:
datelist (dict) – list of dates formatted as year doy1 doy2
numproc (int) – number of datelists, thus number of processes to be used
- gnssrefl.gnssir_v2.make_parallel_proc_lists_mjd(year, doy, year_end, doy_end, nproc)
make lists of dates for parallel processing to spawn multiple jobs
- Parameters:
year (int) – year processing begins
doy (int) – start day of year
year_end (int) – year end of processing
doy_end (int) – end day of year
nproc (int) – requested number of processes to spawn
- Returns:
datelist (dict) – list of MJD
numproc (int) – number of datelists, thus number of processes to be used
- gnssrefl.gnssir_v2.new_rise_set(elv, azm, dates, e1, e2, ediff, sat, screenstats)
This provides a list of rising and setting arcs for a given satellite in a SNR file based on using changes in elevation angle
I think this is used in quickLook but not gnssir
- Parameters:
elv (numpy array of floats) – elevation angles from SNR file
azm (numpy array of floats) – azimuth angles from SNR file
dates (numpy array of floats) – seconds of the day from SNR file
e1 (float) – min eval
e2 (float) – max eval
ediff (float) – el angle difference QC
sat (int) – satellite number
- Returns:
tv – beginning and ending indices of the arc satellite number, arc number
- Return type:
numpy array
- gnssrefl.gnssir_v2.new_rise_set_again(elv, azm, dates, e1, e2, ediff, sat, screenstats, logid)
This provides a list of rising and setting arcs for a given satellite in a SNR file based on using changes in elevation angle
- Parameters:
elv (numpy array of floats) – elevation angles from SNR file
azm (numpy array of floats) – azimuth angles from SNR file
dates (numpy array of floats) – seconds of the day from SNR file
e1 (float) – min elevation angle (deg)
e2 (float) – max elevation angle (deg)
ediff (float) – el angle difference required, deg, QC
sat (int) – satellite number
screenstats (bool) – whether you want info printed to the screen
logid (fileid) – where the screen stat info is stored as a file
- Returns:
tv – beginning and ending indices of the arc satellite number, arc number, elev min, elev max
- Return type:
numpy array
- gnssrefl.gnssir_v2.onesat_freq_check(satlist, f)
for a given satellite name - tries to determine if you have a compatible frequency
- Parameters:
satlist (list) – integer
f (integer) – frequency
- Returns:
satlist – integer
- Return type:
list
- gnssrefl.gnssir_v2.open_gnssir_logfile(station, year, doy, extension)
opens a logfile when asking for screen output
- Parameters:
station (str) – 4 ch station name
year (int) – full year
doy (int) – day of year
extension (str) – analysis extension name (for storage of results) if not set you should send empty string
- Returns:
fileid – I don’t know the proper name of this - but what comes out when you open a file so you can keep writing to it
- Return type:
?
- gnssrefl.gnssir_v2.plot2screen(station, f, ax1, ax2, pltname)
Add axis information and Send the plot to the screen. https://www.semicolonworld.com/question/57658/matplotlib-adding-an-axes-using-the-same-arguments-as-a-previous-axes
- Parameters:
station (string) – 4 character station ID
- gnssrefl.gnssir_v2.read_json_file(station, extension, **kwargs)
picks up json instructions for calculation of lomb scargle periodogram
- Parameters:
station (str) – 4 character station name
extension (str) – experimental subdirectory - default is ‘’
- Returns:
lsp
- Return type:
dictionary
- gnssrefl.gnssir_v2.read_snr(obsfile)
Simple function to load the contents of a SNR file into a numpy array
- Parameters:
obsfile (str) – name of the snrfile
- Returns:
allGood (int) – 1, file was successfully loaded, 0 if not. apparently this variable was defined when I did not know about booleans….
f (numpy array) – contents of the SNR file
r (int) – number of rows in SNR file
c (int) – number of columns in SNR file
- gnssrefl.gnssir_v2.rewrite_azel(azval2)
Trying to allow regions that cross zero degrees azimuth
- Parameters:
azval2 (list of floats) – input azimuth regions
- Returns:
azelout – azimuth regions without negative numbers …
- Return type:
list of floats
- gnssrefl.gnssir_v2.set_refraction_params(station, dmjd, lsp)
set values used in refraction correction
- Parameters:
station (str) – 4 character station name
dmjd (float) – modified julian date
lsp (dictionary with information about the station) –
- latfloat
latitude, deg
- lonfloat
longitude, deg
- htfloat
height, ellipsoidal
- Returns:
p (float) – pressure, hPa
T (float) – temperature, Celsius
irefr (int) – refraction model number I believe, which is also sent, so not needed
e (float) – water vapor pressure, hPa
Tm (float) – temperature in Kelvin
la (float) – lapse rate
- gnssrefl.gnssir_v2.window_new(snrD, f, satNu, ncols, pele, pfitV, e1, e2, azlist, screenstats)
retrieves SNR arcs for a given satellite. returns elevation angle and detrended linear SNR
2023-aug02 updated to improve azimuth calculation reported
- Parameters:
snrD (numpy array (multiD)) – contents of the snr file, i.e. 0 column is satellite numbers, 1 column elevation angle …
f (int) – frequency you want
satNu (int) – requested satellite number
ncols (int) – how many columns does the SNR file have
pele (list of floats) – elevation angles for polynomial fit
pfitV (float) – polynomial order
e1 (float) – requested min elev angle (deg)
e2 (float) – requested max elev angle (deg)
azlist (list of floats (deg)) – non-continguous azimuth regions, corrected for negative regions
screenstats (bool) – whether you want debugging information
- Returns:
x (numpy array of floats) – elevation angle, degrees
y (numpy array of floats) – linear SNR with DC removed
Nvv (int) – number of points in x/y array
cf (float) – scale factor for requested frequency (used in LSP)
meanTime (float) – UTC hour of the day (GPS time)
avgAzim (float) – average azimuth of the arc (deg) ### this will not be entirely consistent with other metric
outFact1 (float) – kept for backwards compatibility. set to zero
outFact2 (float) – edot factor used in RH dot correction
delT (float) – arc length in minutes