These Python scripts were developed to process, visualize, and analyze data for UConn's winter storm data campaign. It is part of NASA's Investigation of Microphysics and Precipitation for Atlantic Coast-Threatening Snowstorms (IMPACTS) program, and the data is published on NASA Earthdata.
Takes 1hr, 6hr, and 24hr csv files for all datasets (StageIV, MRMS Radar, MRMS Multi), and csv files from all ASOS sites and graphs bootstrapped error metrics for all datasets by frequency and dataset. (ex: Bootstrapping/ModelsVsStation_Bootstrapped_ByFreq.jpg).
Takes 1hr, 6hr, and 24hr csv files for all datasets, and csv files from all ASOS sites and graphs bootstrapped error metrics for each individual ASOS site. (ex: Bootstrapping/IndividualSites/BDL_vs_Models_Bootstrapped.jpg).
Takes a csv file for a dataset and csv files from all ASOS sites and graphs bootstrapped error metrics for each ASOS site against a single dataset. (ex: Bootstrapped/SitesVsMRMS_Radar_BootstrappedMetrics_1hr).
Takes a csv file for a dataset and csv files for all ASOS sites. Graphs a scatter plot and histogram for each individual ASOS site against the dataset (ex: MRMSGraphs/BDL_vs_MRMS_Radar). Also graphs a scatter plot and histogram of all ASOS sites combined against the dataset (ex: MRMSGraphs/AllSites_vs_MRMS_Multi_1hr). Also saves a csv file containing R^2, bias, RMSE, MAE, MAPE, and MBPE metrics for each individual ASOS site against the dataset.
Takes metrics csv file generated by GraphStationsVsSource.py and coordinates of each site. Graphs error metrics against elevation (ex: MRMSGraphs/Elevation_Error_Metrics/Sites_vs_MRMS_Multi_1hr_ErrorMetrics.jpg). Also graphs error metrics against distance from NEXRAD radar (ex: MRMSGraphs/NEXRAD_Distance_Error_Metrics/Site_vs_MRMS_Multi_1hr_ErrorMetricsFromRadar.jpg). Also graphs error metrics spatially (ex: MRMSGraphs/Spatial_Error_Metrics/Sites_vs_MRMS_Multi_1hr_ErrorMetricsSpatial.jpg).
Takes metrics csv file generated by GraphStationsVsSource.py and RQI csv. Graphs metrics vs RQI (ex: MRMSGraphs/RQI_Error_Metrics/Sites_vs_MRMS_Multi_1hr_RQIErrorMetrics.jpg).
Takes RQI csv. Graphs the RQI of each site spatially (ex: MRMSGraphs/RQI_Error_Metrics/RQI_Spatial.jpg).
Reads all raw ASOS csv files in a directory and a table of ASOS stations (ASOS_Info.csv), and combines those ASOS stations into a single csv file, with hourly entries, filling NaN values with -9999 (ex: Processed_Data/CombinedASOS_FixedRanges.csv).
Reads all raw SBU csv files in a directory and generates a single csv file, with hourly entries, filling NaN values with -9999 (ex: ProcessedData/CombinedSBU_v2.csv).
Reads all raw UCONN Pluvio tsv (tab-separated) files in a directory and generates a single csv file, with hourly entries, filling NaN values with -9999 (ex: ProcessedData/CombinedUCONN_2122_v2.csv)
Takes a list of sites (Site_Info.csv) and a directory of MRMS cfgrib files. Bilinearly interpolates each MRMS cfgrib file for each site coordinate by latitude and longitude. Saves a single csv file (ex: Processed_Data/BF_Processed/MRMS_1hr_Multi.csv).
Takes a list of sites (Site_Info.csv) and a directory of StageIV cfgrib files. Bilinearly interpolates each StageIV cfgrib file for each site coordinate by latitude and longitude. Saves a single csv file (ex: ProcessedData/StageIV_1hr.csv).
Takes a csv file generated by any of the CombineX.py scripts and aggregates it to 6 hour and 24 hour intervals (ex: Processed_Data/aggregated/ASOS_24h.csv).
Takes an interpolated StageIV csv file (generated by InterpolateStage4.py) and a list of site csv files (generated by any of the CombineX.py). Generates a csv file with each outlier for any of the sites (ex: Processed/StageIV1hrOutliers.py). For an entry to be an outlier, either the StageIV or the site must have at least a minimum amount of precipitation (currently 10 mm) at that timestamp, and the difference between the StageIV and the site must be at least a minimum amount (currently 5 mm) at that timestamp.
removeStartEnd() – Takes a csv file (generated by any of the CombineX.py or InterpolateX.py scripts) and removes all entries from before a specified start date or after a specified end date. keepOnlyDateRanges() – Takes a csv file (generated by any of the CombineX.py or InterpolateX.py scripts) and removes all entries that are not in the day/month range specified (irrespective of the year).
Brian Filipiak, Brendan Raykoff. GPM GV All-in-One-2 (AIO2) UConn. NASA Global Hydrometeorology Resource Center Distributed Active Archive Center, 2025, doi:10.5067/GPMGV/UCONN/AIO2/DATA101. Date Accessed: 2026-01-30
Filipiak, Brian and Raykoff, Brendan and Sinchi, Matthew and Cerrai, Diego and Astitha, Marina, A 5-year Evaluation of Radar Quantitative Precipitation Estimates during the Cool Season (November 05, 2025). Available at SSRN: https://ssrn.com/abstract=5744843 or http://dx.doi.org/10.2139/ssrn.5744843