GRUffset is a deep learning framework designed to detect offset events in 3-component GNSS time series data. It leverages a GRU-based architecture combined with an attention mechanism to accurately localize offsets.
In addition to the core model, the repository includes:
-
Tools for preprocessing and analyzing GNSS data, including offsets removal after detection;
-
Functions for generating realistic synthetic training data;
-
A simplified module containing wrap-ups of training and testing procedures;
-
Fine-tuning workflows using real data from IGS core stations;
-
Web-scraping scripts to fetch GNSS data directly from the Nevada Geodetic Laboratory;
GRUffset provides a complete pipeline from raw data to offset detection.
This repository is organized as follows:
- 📂 Model: model architecture and trained parameters;
- 📂 asset: folder containing logo;
- 📂 data: folder containing folders to store the datasets (instructions on how to download are provided) and data regarding best stations;
- 📂 notebooks: set of jupyter notebooks to train and test the model on synthetic and real data;
- 📂 scripts: set of python scripts used to web-scrape the data, sort and save them into json format;
- 📂 utils: set of python scripts containing utility functions used in the notebooks, including wrap-ups of training and testing procedures;
The following notebooks are provided:
- 📙
synthetic_data_modeling.ipynb: notebook consisting of functions to generate multicomponent synthetic GNSS time series along with the corresponding offsets; - 📙
synthetic_data_training.ipynb: notebook training and testing the model on synthetic data; - 📙
real_data_patchfinetuning.ipynb: notebook patching IGS core stations and fine-tuning the model on real data; - 📙
real_data_good_tests.ipynb: notebook testing the fine-tuned model on three clean data examples and removing the detected offsets from the time series; - 📙
real_data_random_tests.ipynb: notebook testing the fine-tuned model on random examples and removing the detected offsets from the time series;
To ensure reproducibility of the results, we suggest using the environment.yml file when creating an environment.
Simply run:
./install_env.sh
It will take some time, if at the end you see the word Done! on your terminal you are ready to go.
Remember to always activate the environment by typing:
conda activate gruffset
Disclaimer: All experiments have been carried on a Intel(R) Xeon(R) W-2245 CPU @ 3.90GHz equipped with a single NVIDIA Quadro RTX 4000 GPU. Different environment configurations may be required for different combinations of workstation and GPU.
Contact: For any feature requests or bug reports, please submit an issue in this GitHub repository with details or a minimal working example to replicate the bug. Suggestions for improvements are also welcome.
