Skip to content

Commit

Permalink
mostly documentation updates for short course
Browse files Browse the repository at this point in the history
  • Loading branch information
kristinemlarson committed Mar 8, 2024
1 parent 611db65 commit 18f2be2
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 13 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
env
list_denmark.py
llh.csv
llh.txt
make_unr_database.py
Expand Down
3 changes: 2 additions & 1 deletion docs/pages/README_install.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Installation

You can access this package via Jupyter notebooks, Docker containers, or traditional
github/pypi package installation.
github/pypi package installation. We only support Windows users via dockers. I believe
you can also use a linux emulator and follow instructions for linux.

## Jupyter Notebooks

Expand Down
10 changes: 10 additions & 0 deletions docs/pages/community.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

Changes to this file will only be allowed thru a pull request on github.


## Software

Larson K.M., gnssrefl: an open source python software package for environmental GNSS interferometric reflectometry applications, GPS Solutions, in review.

## Soil Moisture

- [Larson, K.M., E.E. Small, E. Gutmann, A. Bilich, J. Braun, V. Zavorotny, Use of GPS receivers as a soil moisture network for water cycle studies, Geophys. Res. Lett., 35, L24405, doi:10.1029/2008GL036013, 2008](https://www.kristinelarson.net/wp-content/uploads/2015/10/larson_soil_grl2008.pdf)
Expand Down Expand Up @@ -56,8 +61,13 @@ Sea Level Measurements, IEEE Journal of Selected Topics in Applied Earth Observa

- [Altuntas, C. and N. Tunalioglu, A systematic approach for identifying optimal azimuth and elevation angle masks in GNSS-IR: validation through a sea level experiment, GPS Solutions, Vol 27(4), 198, doi:10.1007/s10291-023-01535-0, 2023](https://link.springer.com/article/10.1007/s10291-023-01535-0)

- [Larson, K.M. and S.D.P. Williams, Water level measurements using reflected GNSS signals](https://ihr.iho.int/articles/water-level-measurements-using-reflected-gnss-signals/)


## Lakes and Rivers

- [Purnell, D., Gomez N., Minarik, W., Langston, G., Real-Time Water Levels using GNSS-IR: a potential tool for flood monitoring](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2023GL105039)

- [Holden, L. and K.M. Larson, Ten Years of Lake Taupo Surface Height Estimates Using the GNSS Interferometric Reflectometry, Journal of Geodesy. Vol 95(74),10.1007/s00190-021-01523-7, 2021](https://www.kristinelarson.net/wp-content/uploads/2021/05/Holden-May2021.pdf)

- [Fagundes, M.A.R., Mendonça-Tinti, I., Iescheck, A.L., Akos, D.M., & Geremia-Nievinski, F. An open-source low-cost sensor for SNR-based GNSS reflectometry: Design and long-term validation towards sea-level altimetry. GPS Solutions, 25(2), 73, 2021](https://link.springer.com/article/10.1007/s10291-021-01087-1)
Expand Down
7 changes: 4 additions & 3 deletions docs/pages/sc_index2024.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,10 @@ Before the Class Begins

`Some comments from the last short course <https://gnssrefl.readthedocs.io/en/latest/pages/sc_precourse2024.html>`_

Videos
======
`Some older videos <https://www.youtube.com/@funwithgps/videos>`_ about GNSS-IR are available on youtube.
Lecture Material
================

`Links to videos and lecture files <https://gnssrefl.readthedocs.io/en/latest/pages/sc_media2024.html>`_

Sponsor
=======
Expand Down
18 changes: 18 additions & 0 deletions docs/pages/sc_media2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Slides and Videos

Return to [2024 GNSS-IR Short Course](https://gnssrefl.readthedocs.io/en/latest/pages/sc_index2024.html).

## Day 1
- [GNSS-IR Theory](https://morefunwithgps.com/public_html/sc2024/slides-gnssir-theory-2024.pdf), Felipe Nievinski
- [How to run the gnssrefl Code](https://morefunwithgps.com/public_html/sc2024/Day1-runningCode.pdf), Kristine Larson
- [Video](https://www.youtube.com/watch?v=tkjch4QRRs8)

## Day 2
- Theory for Water Levels, Simon Williams
- [Examples using gnssrefl](https://morefunwithgps.com/public_html/sc2024/Day2-Examples.pdf), Kristine Larson
- [invsnr technique](https://morefunwithgps.com/public_html/sc2024/Day2-invsnr_slides.pdf), Kristine Larson
- [IAG working group](https://morefunwithgps.com/public_html/sc2024/Day2-WG.pdf), Makan Karegar
- [Last Remarks](https://morefunwithgps.com/public_html/sc2024/Day2-May2024-good-bye.pdf), Kristine Larson
- [Video](https://www.youtube.com/watch?v=0Mn9z38l0fE)


2 changes: 1 addition & 1 deletion gnssrefl/sd_libs.py
Original file line number Diff line number Diff line change
Expand Up @@ -894,7 +894,7 @@ def subdaily_resids_last_stage(station, year, th, biasCor_rh, spline_at_GPS, fs,
# these are now plotted in datetime via mjd translation
fig=plt.figure(figsize=(10,5))
plt.plot(th_obs, biasCor_rh, 'b.', label='RH ' + strsig)
plt.plot(th_even_obs, spline_whole_time, 'c-',label='spline')
plt.plot(th_even_obs, spline_whole_time, '-',color='orange',label='spline')
plt.plot(th_obs[ii], biasCor_rh[ii], 'rx', label='outliers')

plt.legend(loc="best",fontsize=fs)
Expand Down
23 changes: 17 additions & 6 deletions gnssrefl/subdaily.py
Original file line number Diff line number Diff line change
Expand Up @@ -734,13 +734,16 @@ def rhdot_correction2(station,fname,fname_new,pltit,outlierV,outlierV2,**kwargs)
default is true
gap_min_val : float, optional
gap allowed in last spline, in hours
year : int
hopefully this will go away ...
knots2 : int, optional
a secondary knot value if you want the final output
to use a different one than the one used for outliers and
RH dot
"""
# output will go to REFL_CODE/Files unless txtdir provided
xdir = os.environ['REFL_CODE']

gap_min_val = kwargs.get('gap_min_val',6.0)
gap_min_val = gap_min_val/24 # change to DOY units

Expand Down Expand Up @@ -794,11 +797,17 @@ def rhdot_correction2(station,fname,fname_new,pltit,outlierV,outlierV2,**kwargs)
knots_per_day= kwargs.get('knots',8)


knots2 = kwargs.get('knots2',knots_per_day)
if knots2 is None:
knots2_per_day = knots_per_day
else:
knots2_per_day = knots2

print('knots2 ', knots2_per_day)

knots_test = kwargs.get('knots_test',0)
if (knots_test== 0):
knots_test = knots_per_day
#else:
# print('using knots_test')

print('\n>>>>>>>>>>>>>>>>>>>> Entering second section of subdaily code <<<<<<<<<<<<<<<<<<<<<<<<')
print('\nComputes rhdot correction and interfrequency bias correction for subdaily')
Expand Down Expand Up @@ -1074,8 +1083,9 @@ def rhdot_correction2(station,fname,fname_new,pltit,outlierV,outlierV2,**kwargs)
tnew, ynew = flipit(tvd_new,column)

Ndays = tnew.max()-tnew.min()
knots_per_day = knots_test
#print('trying knots_test')
print('trying knots2')
knots_per_day = knots2_per_day

numKnots = int(knots_per_day*(Ndays))
#

Expand All @@ -1084,6 +1094,7 @@ def rhdot_correction2(station,fname,fname_new,pltit,outlierV,outlierV2,**kwargs)
t2 = tnew.max()-firstKnot_in_minutes/60/24
knots =np.linspace(t1,t2,num=numKnots)


t, c, k = interpolate.splrep(tnew, ynew, s=0, k=3,t=knots,task=-1)
# compute spline - use for times th
spline = interpolate.BSpline(t, c, k, extrapolate=False)
Expand Down
5 changes: 3 additions & 2 deletions gnssrefl/subdaily_cl.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def parse_arguments():
parser.add_argument("-fs", default=None, type=int, help="fontsize for figures. default is 10")
parser.add_argument("-alt_sigma", default=None, type=str, help="boolean test for alternate Nievinski sigma definition. default is False")
parser.add_argument("-gap_min_val", default=None, type=float, help="min gap allowed in splinefit output file. default is 6 hours")
parser.add_argument("-knots2", default=None, type=int, help="Secondary knots value for final fit. default is to use original knots value.")

args = parser.parse_args().__dict__

Expand All @@ -64,7 +65,7 @@ def subdaily(station: str, year: int, txtfile_part1: str = '', txtfile_part2: st
azim1: int=0, azim2: int = 360, peak2noise: float = 0, kplt: bool = False,
subdir: str = None, delta_out : int = 1800, if_corr: bool = True, knots_test: int = 0,
hires_figs : bool=False, apply_rhdot : bool=True, fs: int = 10, alt_sigma: bool= False, gap_min_val: float=6.0,
year_end: int=None):
year_end: int=None, knots2 : int=None):
"""
Subdaily combines gnssir solutions and applies relevant corrections needed to measure water levels (tides).
As of January 2024, it will allow multiple years. You can also specify which day of year to start with, i.e.
Expand Down Expand Up @@ -316,7 +317,7 @@ def subdaily(station: str, year: int, txtfile_part1: str = '', txtfile_part2: st
tv, corr = t.rhdot_correction2(station, input2spline, output4spline, plt, spline_outlier1, spline_outlier2,
knots=knots,txtdir=txtdir,testing=testing,delta_out=delta_out,
if_corr=if_corr,knots_test=knots_test,hires_figs=hires_figs,
apply_rhdot=apply_rhdot,fs=fs,gap_min_val=gap_min_val,year=year,extension=extension)
apply_rhdot=apply_rhdot,fs=fs,gap_min_val=gap_min_val,year=year,extension=extension,knots2=knots2)
if plt:
mplt.show()

Expand Down

0 comments on commit 18f2be2

Please sign in to comment.